UNPKG

n8n

Version:

n8n Workflow Automation Tool

120 lines • 7.36 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.InstanceAiModule = void 0; const backend_common_1 = require("@n8n/backend-common"); const decorators_1 = require("@n8n/decorators"); const di_1 = require("@n8n/di"); const YELLOW = '\x1b[33m'; const CLEAR = '\x1b[0m'; const WARNING_MESSAGE = "[Instance AI] 'instance-ai' module is experimental, undocumented and subject to change. " + 'Before its official release any features may become inaccessible at any point, ' + 'and using the module could compromise the stability of your system. Use at your own risk!'; let InstanceAiModule = class InstanceAiModule { async init() { const logger = di_1.Container.get(backend_common_1.Logger).scoped('instance-ai'); logger.warn(`${YELLOW}${WARNING_MESSAGE}${CLEAR}`); const { InstanceCredentialBroker } = await import('../../credentials/instance-credential-broker.js'); const { InstanceAiSettingsService, INSTANCE_AI_MODEL_CREDENTIAL_POLICY, INSTANCE_AI_DAYTONA_CREDENTIAL_POLICY, INSTANCE_AI_N8N_SANDBOX_CREDENTIAL_POLICY, INSTANCE_AI_SEARCH_CREDENTIAL_POLICY, } = await import('./instance-ai-settings.service.js'); const settingsService = di_1.Container.get(InstanceAiSettingsService); const credentialBroker = di_1.Container.get(InstanceCredentialBroker); credentialBroker.registerUse(INSTANCE_AI_MODEL_CREDENTIAL_POLICY); credentialBroker.registerUse(INSTANCE_AI_DAYTONA_CREDENTIAL_POLICY); credentialBroker.registerUse(INSTANCE_AI_N8N_SANDBOX_CREDENTIAL_POLICY); credentialBroker.registerUse(INSTANCE_AI_SEARCH_CREDENTIAL_POLICY); await settingsService.loadFromDb(); await import('./instance-ai.controller.js'); await import('./mcp/instance-ai-mcp-connection.controller.js'); const { InstanceAiEventRelay } = await import('./instance-ai-event-relay.service.js'); di_1.Container.get(InstanceAiEventRelay); const { GlobalConfig } = await import('@n8n/config'); if (di_1.Container.get(GlobalConfig).instanceAi.durableLog) { const { InterruptedRunSweeper } = await import('./event-bus/interrupted-run-sweeper.js'); const { InstanceAiService } = await import('./instance-ai.service.js'); const sweeper = di_1.Container.get(InterruptedRunSweeper); sweeper.setResumeHost(di_1.Container.get(InstanceAiService)); void sweeper.sweep().catch((error) => { logger.error('Interrupted-run sweep failed on startup', { error }); }); } if (process.env.E2E_TESTS === 'true' && process.env.NODE_ENV !== 'production') { await import('./instance-ai-test.controller.js'); } } async settings() { const { GlobalConfig } = await import('@n8n/config'); const { InstanceAiService } = await import('./instance-ai.service.js'); const { InstanceAiSettingsService } = await import('./instance-ai-settings.service.js'); const globalConfig = di_1.Container.get(GlobalConfig); const service = di_1.Container.get(InstanceAiService); const settingsService = di_1.Container.get(InstanceAiSettingsService); const enabled = settingsService.isAgentEnabled(); const localGatewayDisabled = settingsService.isLocalGatewayDisabled(); const browserUseEnabled = settingsService.isBrowserUseEnabled(); const sandboxStatus = settingsService.getSandboxStatus(); return { enabled, localGatewayDisabled, browserUseEnabled, proxyEnabled: service.isProxyEnabled(), cloudManaged: globalConfig.deployment.type === 'cloud', sandboxEnabled: sandboxStatus.enabled, workflowBuilderAvailable: enabled && sandboxStatus.workflowBuilderAvailable, sandboxUnavailableReason: sandboxStatus.unavailableReason, runDebugEnabled: globalConfig.instanceAi.runDebugEnabled, }; } async entities() { const { InstanceAiThread } = await import('./entities/instance-ai-thread.entity.js'); const { InstanceAiMessage } = await import('./entities/instance-ai-message.entity.js'); const { InstanceAiResource } = await import('./entities/instance-ai-resource.entity.js'); const { InstanceAiRunSnapshot } = await import('./entities/instance-ai-run-snapshot.entity.js'); const { InstanceAiIterationLog } = await import('./entities/instance-ai-iteration-log.entity.js'); const { InstanceAiCheckpoint } = await import('./entities/instance-ai-checkpoint.entity.js'); const { InstanceAiPendingConfirmation } = await import('./entities/instance-ai-pending-confirmation.entity.js'); const { InstanceAiObservation } = await import('./entities/instance-ai-observation.entity.js'); const { InstanceAiObservationCursor } = await import('./entities/instance-ai-observation-cursor.entity.js'); const { InstanceAiObservationLock } = await import('./entities/instance-ai-observation-lock.entity.js'); const { InstanceAiMcpRegistryConnection } = await import('./entities/instance-ai-mcp-registry-connection.entity.js'); const { InstanceAiThreadGrant } = await import('./entities/instance-ai-thread-grant.entity.js'); const { InstanceAiEventLogEntry } = await import('./entities/instance-ai-event-log-entry.entity.js'); return [ InstanceAiThread, InstanceAiMessage, InstanceAiResource, InstanceAiRunSnapshot, InstanceAiIterationLog, InstanceAiCheckpoint, InstanceAiPendingConfirmation, InstanceAiObservation, InstanceAiObservationCursor, InstanceAiObservationLock, InstanceAiMcpRegistryConnection, InstanceAiThreadGrant, InstanceAiEventLogEntry, ]; } async shutdown() { const { InstanceAiService } = await import('./instance-ai.service.js'); await di_1.Container.get(InstanceAiService).shutdown(); } }; exports.InstanceAiModule = InstanceAiModule; __decorate([ (0, decorators_1.OnShutdown)(), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], InstanceAiModule.prototype, "shutdown", null); exports.InstanceAiModule = InstanceAiModule = __decorate([ (0, decorators_1.BackendModule)({ name: 'instance-ai', instanceTypes: ['main'] }) ], InstanceAiModule); //# sourceMappingURL=instance-ai.module.js.map