n8n
Version:
n8n Workflow Automation Tool
187 lines • 10.9 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.AgentsModule = void 0;
const backend_common_1 = require("@n8n/backend-common");
const config_1 = require("@n8n/config");
const decorators_1 = require("@n8n/decorators");
const di_1 = require("@n8n/di");
const n8n_core_1 = require("n8n-core");
let AgentsModule = class AgentsModule {
async init() {
await import('./agents-catalog.controller.js');
await import('./agent-threads.controller.js');
await import('./agents.controller.js');
await import('./agents-config.controller.js');
await import('./agents-skills.controller.js');
await import('./agent-knowledge.controller.js');
await import('./agent-publish.controller.js');
await import('./agent-chat.controller.js');
await import('./agent-integrations.controller.js');
await import('./agent-slack-integrations.controller.js');
await import('./agent-vector-stores.controller.js');
await import('./agent-tasks.controller.js');
await import('./agent-sandbox.controller.js');
await import('./agents-list.controller.js');
await import('./agent-mcp-access.controller.js');
await import('./builder/agents-builder-settings.controller.js');
const { AgentsService } = await import('./agents.service.js');
di_1.Container.get(AgentsService);
const { AgentCredentialIndexListener } = await import('./agent-credential-index.listener.js');
di_1.Container.get(AgentCredentialIndexListener).init();
const { AgentsBuilderSettingsService } = await import('./builder/agents-builder-settings.service.js');
di_1.Container.get(AgentsBuilderSettingsService);
const { AgentExecutionService } = await import('./agent-execution.service.js');
di_1.Container.get(AgentExecutionService);
const { AgentExecutionLogStore } = await import('./execution-log/agent-execution-log-store.js');
const { AgentKnowledgeFileStore } = await import('./agent-knowledge-file-store.js');
const { ExecutionDataJsonStore } = await import('../../executions/execution-data/execution-data-json-store.js');
const { registerAgentBlobByteStores } = await import('./register-blob-byte-stores.js');
await registerAgentBlobByteStores({
executionDataJsonStore: di_1.Container.get(ExecutionDataJsonStore),
agentExecutionLogStore: di_1.Container.get(AgentExecutionLogStore),
agentKnowledgeFileStore: di_1.Container.get(AgentKnowledgeFileStore),
});
const { AgentRuntimeCacheService } = await import('./agent-runtime-cache.service.js');
di_1.Container.get(AgentRuntimeCacheService);
const { AgentHistoryRepository } = await import('./repositories/agent-history.repository.js');
di_1.Container.get(AgentHistoryRepository);
const { AgentSecureRuntime } = await import('./runtime/agent-secure-runtime.js');
di_1.Container.get(AgentSecureRuntime);
const { ChatIntegrationRegistry } = await import('./integrations/agent-chat-integration.js');
const { SlackIntegration } = await import('./integrations/platforms/slack/slack-integration.js');
const { TelegramIntegration } = await import('./integrations/platforms/telegram-integration.js');
const { LinearIntegration } = await import('./integrations/platforms/linear-integration.js');
const { DiscordIntegration } = await import('./integrations/platforms/discord-integration.js');
const { N8nChatIntegration } = await import('./integrations/platforms/n8n-chat-integration.js');
const registry = di_1.Container.get(ChatIntegrationRegistry);
registry.register(di_1.Container.get(SlackIntegration));
registry.register(di_1.Container.get(TelegramIntegration));
registry.register(di_1.Container.get(LinearIntegration));
registry.register(di_1.Container.get(DiscordIntegration));
registry.register(di_1.Container.get(N8nChatIntegration));
const { ChatIntegrationService } = await import('./integrations/chat-integration.service.js');
const { AgentTaskService } = await import('./agent-task.service.js');
const chatService = di_1.Container.get(ChatIntegrationService);
const taskService = di_1.Container.get(AgentTaskService);
const logger = di_1.Container.get(backend_common_1.Logger);
const instanceSettings = di_1.Container.get(n8n_core_1.InstanceSettings);
if (instanceSettings.instanceType === 'main') {
const { AgentInterruptedExecutionSweeper } = await import('./agent-interrupted-execution-sweeper.js');
const sweep = () => {
void di_1.Container.get(AgentInterruptedExecutionSweeper)
.sweep()
.catch((error) => {
logger.error('[Agents] Interrupted execution sweep failed', { error });
});
};
sweep();
this.interruptedExecutionSweepTimer = setInterval(sweep, AgentInterruptedExecutionSweeper.LIVENESS_GRACE_MS);
this.interruptedExecutionSweepTimer.unref();
}
void chatService.reconnectAll().catch((error) => {
logger.error('[Agents] Failed to reconnect integrations on startup', {
error: error instanceof Error ? error.message : String(error),
});
});
if (instanceSettings.isLeader) {
void taskService.reconnectAll().catch((error) => {
logger.error('[Agents] Failed to reconnect tasks on startup', {
error: error instanceof Error ? error.message : String(error),
});
});
}
else {
logger.debug('[Agents] Skipping task reconnect on startup — not leader');
}
}
async shutdown() {
if (this.interruptedExecutionSweepTimer) {
clearInterval(this.interruptedExecutionSweepTimer);
}
}
async settings() {
const config = di_1.Container.get(config_1.AgentsConfig);
const { isAgentKnowledgeBaseEnabled } = await import('./agent-knowledge-gate.js');
const { AiService } = await import('../../services/ai.service.js');
const aiService = di_1.Container.get(AiService);
const proxyEnabled = aiService.isProxyEnabled();
return {
enabled: true,
modules: [...config.modules],
knowledgeBaseEnabled: isAgentKnowledgeBaseEnabled(config, proxyEnabled),
proxyEnabled,
};
}
async entities() {
const { Agent } = await import('./entities/agent.entity.js');
const { AgentFile } = await import('./entities/agent-file.entity.js');
const { AgentChatAttachment } = await import('./entities/agent-chat-attachment.entity.js');
const { AgentChatSubscription } = await import('./entities/agent-chat-subscription.entity.js');
const { AgentCheckpoint } = await import('./entities/agent-checkpoint.entity.js');
const { AgentResourceEntity } = await import('./entities/agent-resource.entity.js');
const { AgentThreadEntity } = await import('./entities/agent-thread.entity.js');
const { AgentMessageEntity } = await import('./entities/agent-message.entity.js');
const { AgentExecutionThread } = await import('./entities/agent-execution-thread.entity.js');
const { AgentExecution } = await import('./entities/agent-execution.entity.js');
const { AgentHistory } = await import('./entities/agent-history.entity.js');
const { AgentCredentialDependency } = await import('./entities/agent-credential-dependency.entity.js');
const { AgentTask } = await import('./entities/agent-task.entity.js');
const { AgentTaskRunLock } = await import('./entities/agent-task-run-lock.entity.js');
const { AgentTaskSnapshot } = await import('./entities/agent-task-snapshot.entity.js');
const { AgentObservationEntity } = await import('./entities/agent-observation.entity.js');
const { AgentObservationCursorEntity } = await import('./entities/agent-observation-cursor.entity.js');
const { AgentObservationLockEntity } = await import('./entities/agent-observation-lock.entity.js');
const { AgentMemoryEntryEntity } = await import('./entities/agent-memory-entry.entity.js');
const { AgentMemoryEntryLockEntity } = await import('./entities/agent-memory-entry-lock.entity.js');
const { AgentMemoryEntrySourceEntity } = await import('./entities/agent-memory-entry-source.entity.js');
const { AgentMemoryEntryCursorEntity } = await import('./entities/agent-memory-entry-cursor.entity.js');
return [
Agent,
AgentFile,
AgentChatAttachment,
AgentChatSubscription,
AgentCheckpoint,
AgentResourceEntity,
AgentThreadEntity,
AgentMessageEntity,
AgentExecutionThread,
AgentExecution,
AgentHistory,
AgentCredentialDependency,
AgentTask,
AgentTaskRunLock,
AgentTaskSnapshot,
AgentObservationEntity,
AgentObservationCursorEntity,
AgentObservationLockEntity,
AgentMemoryEntryEntity,
AgentMemoryEntryLockEntity,
AgentMemoryEntrySourceEntity,
AgentMemoryEntryCursorEntity,
];
}
async context() {
const { AgentsService } = await import('./agents.service.js');
return { agentsService: di_1.Container.get(AgentsService) };
}
};
exports.AgentsModule = AgentsModule;
__decorate([
(0, decorators_1.OnShutdown)(),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", Promise)
], AgentsModule.prototype, "shutdown", null);
exports.AgentsModule = AgentsModule = __decorate([
(0, decorators_1.BackendModule)({ name: 'agents' })
], AgentsModule);
//# sourceMappingURL=agents.module.js.map