n8n
Version:
n8n Workflow Automation Tool
120 lines • 7.36 kB
JavaScript
;
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