n8n 2.23.2 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/active-workflow-manager.d.ts +8 -4
- package/dist/active-workflow-manager.js +26 -9
- package/dist/active-workflow-manager.js.map +1 -1
- package/dist/auth/auth.service.d.ts +1 -1
- package/dist/auth/auth.service.js +2 -1
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/controllers/ai.controller.js +1 -1
- package/dist/controllers/ai.controller.js.map +1 -1
- package/dist/controllers/api-keys.controller.d.ts +20 -15
- package/dist/controllers/api-keys.controller.js +7 -4
- package/dist/controllers/api-keys.controller.js.map +1 -1
- package/dist/controllers/oauth/oauth1-credential.controller.d.ts +4 -2
- package/dist/controllers/oauth/oauth1-credential.controller.js +15 -5
- package/dist/controllers/oauth/oauth1-credential.controller.js.map +1 -1
- package/dist/controllers/oauth/oauth2-credential.controller.d.ts +4 -2
- package/dist/controllers/oauth/oauth2-credential.controller.js +15 -6
- package/dist/controllers/oauth/oauth2-credential.controller.js.map +1 -1
- package/dist/controllers/project.controller.d.ts +8 -0
- package/dist/controllers/project.controller.js +2 -1
- package/dist/controllers/project.controller.js.map +1 -1
- package/dist/controllers/security-settings.controller.js +18 -1
- package/dist/controllers/security-settings.controller.js.map +1 -1
- package/dist/controllers/telemetry.controller.js +4 -1
- package/dist/controllers/telemetry.controller.js.map +1 -1
- package/dist/credentials/credential-connection-status-provider.interface.d.ts +3 -0
- package/dist/credentials/credential-connection-status-proxy.d.ts +3 -0
- package/dist/credentials/credential-connection-status-proxy.js +10 -0
- package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
- package/dist/credentials/credentials.controller.d.ts +6 -0
- package/dist/credentials/credentials.controller.js +39 -2
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +29 -13
- package/dist/credentials/credentials.service.ee.d.ts +2 -0
- package/dist/credentials/credentials.service.ee.js +3 -0
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +27 -6
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/credentials-helper.d.ts +1 -0
- package/dist/credentials-helper.js +14 -4
- package/dist/credentials-helper.js.map +1 -1
- package/dist/errors/credential-missing-id.error.d.ts +4 -0
- package/dist/errors/credential-missing-id.error.js +14 -0
- package/dist/errors/credential-missing-id.error.js.map +1 -0
- package/dist/eventbus/event-message-classes/index.d.ts +2 -2
- package/dist/eventbus/event-message-classes/index.js +3 -0
- package/dist/eventbus/event-message-classes/index.js.map +1 -1
- package/dist/events/maps/relay.event-map.d.ts +54 -2
- package/dist/events/relays/log-streaming.event-relay.d.ts +3 -0
- package/dist/events/relays/log-streaming.event-relay.js +39 -1
- package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.d.ts +6 -0
- package/dist/events/relays/telemetry.event-relay.js +74 -3
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js +6 -5
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
- package/dist/executions/execution-persistence.js +4 -0
- package/dist/executions/execution-persistence.js.map +1 -1
- package/dist/expression-observability/expression-observability.provider.d.ts +3 -1
- package/dist/expression-observability/expression-observability.provider.js +48 -46
- package/dist/expression-observability/expression-observability.provider.js.map +1 -1
- package/dist/interfaces.d.ts +3 -1
- package/dist/modules/agents/agent-execution.service.d.ts +4 -2
- package/dist/modules/agents/agent-execution.service.js +3 -3
- package/dist/modules/agents/agent-execution.service.js.map +1 -1
- package/dist/modules/agents/agent-knowledge-command.service.d.ts +40 -0
- package/dist/modules/agents/agent-knowledge-command.service.js +221 -0
- package/dist/modules/agents/agent-knowledge-command.service.js.map +1 -0
- package/dist/modules/agents/agent-knowledge.service.d.ts +42 -0
- package/dist/modules/agents/agent-knowledge.service.js +300 -0
- package/dist/modules/agents/agent-knowledge.service.js.map +1 -0
- package/dist/modules/agents/agent-task.service.d.ts +52 -0
- package/dist/modules/agents/agent-task.service.js +487 -0
- package/dist/modules/agents/agent-task.service.js.map +1 -0
- package/dist/modules/agents/agent-upload.middleware.d.ts +7 -0
- package/dist/modules/agents/agent-upload.middleware.js +62 -0
- package/dist/modules/agents/agent-upload.middleware.js.map +1 -0
- package/dist/modules/agents/agents-tools.service.d.ts +1 -1
- package/dist/modules/agents/agents-tools.service.js +12 -3
- package/dist/modules/agents/agents-tools.service.js.map +1 -1
- package/dist/modules/agents/agents.controller.d.ts +138 -45
- package/dist/modules/agents/agents.controller.js +176 -48
- package/dist/modules/agents/agents.controller.js.map +1 -1
- package/dist/modules/agents/agents.module.d.ts +2 -2
- package/dist/modules/agents/agents.module.js +13 -5
- package/dist/modules/agents/agents.module.js.map +1 -1
- package/dist/modules/agents/agents.service.d.ts +43 -7
- package/dist/modules/agents/agents.service.js +341 -57
- package/dist/modules/agents/agents.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-prompts.d.ts +6 -5
- package/dist/modules/agents/builder/agents-builder-prompts.js +92 -18
- package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +11 -1
- package/dist/modules/agents/builder/agents-builder-tools.service.js +164 -26
- package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder.service.d.ts +3 -1
- package/dist/modules/agents/builder/agents-builder.service.js +8 -3
- package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
- package/dist/modules/agents/builder/builder-tool-names.d.ts +3 -0
- package/dist/modules/agents/builder/builder-tool-names.js +3 -0
- package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-credential.tool.d.ts +1 -0
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js +25 -4
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-question.tool.js +6 -5
- package/dist/modules/agents/builder/interactive/ask-question.tool.js.map +1 -1
- package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +20 -5
- package/dist/modules/agents/builder/prompts/config-mutation.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/config-rules.prompt.js +23 -4
- package/dist/modules/agents/builder/prompts/config-rules.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +18 -1
- package/dist/modules/agents/builder/prompts/llm-selection.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/memory.prompt.d.ts +1 -1
- package/dist/modules/agents/builder/prompts/memory.prompt.js +5 -3
- package/dist/modules/agents/builder/prompts/memory.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/tools.prompt.d.ts +1 -1
- package/dist/modules/agents/builder/prompts/tools.prompt.js +11 -2
- package/dist/modules/agents/builder/prompts/tools.prompt.js.map +1 -1
- package/dist/modules/agents/builder/search-mcp-servers.tool.d.ts +6 -0
- package/dist/modules/agents/builder/search-mcp-servers.tool.js +85 -0
- package/dist/modules/agents/builder/search-mcp-servers.tool.js.map +1 -0
- package/dist/modules/agents/builder/skill-body-template.d.ts +4 -0
- package/dist/modules/agents/builder/skill-body-template.js +31 -0
- package/dist/modules/agents/builder/skill-body-template.js.map +1 -0
- package/dist/modules/agents/builder/skills/index.js +6 -1
- package/dist/modules/agents/builder/skills/index.js.map +1 -1
- package/dist/modules/agents/builder/skills/integrations.skill.js +39 -18
- package/dist/modules/agents/builder/skills/integrations.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/mcp.skill.d.ts +2 -0
- package/dist/modules/agents/builder/skills/mcp.skill.js +110 -0
- package/dist/modules/agents/builder/skills/mcp.skill.js.map +1 -0
- package/dist/modules/agents/builder/skills/research.skill.js +8 -5
- package/dist/modules/agents/builder/skills/research.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-skills.skill.js +41 -13
- package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-tasks.skill.d.ts +2 -0
- package/dist/modules/agents/builder/skills/target-tasks.skill.js +82 -0
- package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -0
- package/dist/modules/agents/builder/task-objective-template.d.ts +3 -0
- package/dist/modules/agents/builder/task-objective-template.js +27 -0
- package/dist/modules/agents/builder/task-objective-template.js.map +1 -0
- package/dist/modules/agents/builder/verify-mcp-server.tool.d.ts +8 -0
- package/dist/modules/agents/builder/verify-mcp-server.tool.js +79 -0
- package/dist/modules/agents/builder/verify-mcp-server.tool.js.map +1 -0
- package/dist/modules/agents/entities/agent-execution-thread.entity.d.ts +4 -0
- package/dist/modules/agents/entities/agent-execution-thread.entity.js +26 -0
- package/dist/modules/agents/entities/agent-execution-thread.entity.js.map +1 -1
- package/dist/modules/agents/entities/agent-file.entity.d.ts +11 -0
- package/dist/modules/agents/entities/agent-file.entity.js +48 -0
- package/dist/modules/agents/entities/agent-file.entity.js.map +1 -0
- package/dist/modules/agents/entities/agent-task-run-lock.entity.d.ts +10 -0
- package/dist/modules/agents/entities/agent-task-run-lock.entity.js +54 -0
- package/dist/modules/agents/entities/agent-task-run-lock.entity.js.map +1 -0
- package/dist/modules/agents/entities/agent-task-snapshot.entity.d.ts +12 -0
- package/dist/modules/agents/entities/agent-task-snapshot.entity.js +70 -0
- package/dist/modules/agents/entities/agent-task-snapshot.entity.js.map +1 -0
- package/dist/modules/agents/entities/agent-task.entity.d.ts +11 -0
- package/dist/modules/agents/entities/agent-task.entity.js +64 -0
- package/dist/modules/agents/entities/agent-task.entity.js.map +1 -0
- package/dist/modules/agents/execution-recorder.d.ts +1 -0
- package/dist/modules/agents/execution-recorder.js +9 -5
- package/dist/modules/agents/execution-recorder.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-bridge.d.ts +16 -4
- package/dist/modules/agents/integrations/agent-chat-bridge.js +372 -116
- package/dist/modules/agents/integrations/agent-chat-bridge.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-integration.d.ts +27 -2
- package/dist/modules/agents/integrations/agent-chat-integration.js +5 -0
- package/dist/modules/agents/integrations/agent-chat-integration.js.map +1 -1
- package/dist/modules/agents/integrations/chat-integration.service.d.ts +15 -6
- package/dist/modules/agents/integrations/chat-integration.service.js +9 -10
- package/dist/modules/agents/integrations/chat-integration.service.js.map +1 -1
- package/dist/modules/agents/integrations/component-mapper.d.ts +14 -0
- package/dist/modules/agents/integrations/component-mapper.js +9 -1
- package/dist/modules/agents/integrations/component-mapper.js.map +1 -1
- package/dist/modules/agents/integrations/integration-action-executor.d.ts +22 -0
- package/dist/modules/agents/integrations/integration-action-executor.js +171 -0
- package/dist/modules/agents/integrations/integration-action-executor.js.map +1 -0
- package/dist/modules/agents/integrations/integration-context-query-executor.d.ts +18 -0
- package/dist/modules/agents/integrations/integration-context-query-executor.js +58 -0
- package/dist/modules/agents/integrations/integration-context-query-executor.js.map +1 -0
- package/dist/modules/agents/integrations/integration-error-codes.d.ts +13 -0
- package/dist/modules/agents/integrations/integration-error-codes.js +16 -0
- package/dist/modules/agents/integrations/integration-error-codes.js.map +1 -0
- package/dist/modules/agents/integrations/integration-helpers.d.ts +21 -0
- package/dist/modules/agents/integrations/integration-helpers.js +72 -0
- package/dist/modules/agents/integrations/integration-helpers.js.map +1 -0
- package/dist/modules/agents/integrations/integration-message-context.service.d.ts +13 -0
- package/dist/modules/agents/integrations/integration-message-context.service.js +129 -0
- package/dist/modules/agents/integrations/integration-message-context.service.js.map +1 -0
- package/dist/modules/agents/integrations/integration-tools.d.ts +205 -0
- package/dist/modules/agents/integrations/integration-tools.js +955 -0
- package/dist/modules/agents/integrations/integration-tools.js.map +1 -0
- package/dist/modules/agents/integrations/integrations-sync.d.ts +1 -1
- package/dist/modules/agents/integrations/integrations-sync.js +1 -29
- package/dist/modules/agents/integrations/integrations-sync.js.map +1 -1
- package/dist/modules/agents/integrations/n8n-memory.d.ts +2 -0
- package/dist/modules/agents/integrations/n8n-memory.js +18 -11
- package/dist/modules/agents/integrations/n8n-memory.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/linear-integration.d.ts +13 -2
- package/dist/modules/agents/integrations/platforms/linear-integration.js +70 -15
- package/dist/modules/agents/integrations/platforms/linear-integration.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/linear-operations.d.ts +18 -0
- package/dist/modules/agents/integrations/platforms/linear-operations.js +679 -0
- package/dist/modules/agents/integrations/platforms/linear-operations.js.map +1 -0
- package/dist/modules/agents/integrations/platforms/slack-integration.d.ts +11 -1
- package/dist/modules/agents/integrations/platforms/slack-integration.js +53 -1
- package/dist/modules/agents/integrations/platforms/slack-integration.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/slack-operations.d.ts +17 -0
- package/dist/modules/agents/integrations/platforms/slack-operations.js +288 -0
- package/dist/modules/agents/integrations/platforms/slack-operations.js.map +1 -0
- package/dist/modules/agents/integrations/platforms/telegram-integration.d.ts +9 -2
- package/dist/modules/agents/integrations/platforms/telegram-integration.js +17 -0
- package/dist/modules/agents/integrations/platforms/telegram-integration.js.map +1 -1
- package/dist/modules/agents/integrations/slack-app-setup.service.js +7 -1
- package/dist/modules/agents/integrations/slack-app-setup.service.js.map +1 -1
- package/dist/modules/agents/json-config/from-json-config.d.ts +4 -2
- package/dist/modules/agents/json-config/from-json-config.js +88 -11
- package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
- package/dist/modules/agents/json-config/mcp-client-factory.d.ts +16 -0
- package/dist/modules/agents/json-config/mcp-client-factory.js +155 -0
- package/dist/modules/agents/json-config/mcp-client-factory.js.map +1 -0
- package/dist/modules/agents/json-config/native-web-search-provider-tools.d.ts +8 -0
- package/dist/modules/agents/json-config/native-web-search-provider-tools.js +59 -0
- package/dist/modules/agents/json-config/native-web-search-provider-tools.js.map +1 -0
- package/dist/modules/agents/json-config/schema-text-serializer.js +12 -2
- package/dist/modules/agents/json-config/schema-text-serializer.js.map +1 -1
- package/dist/modules/agents/repositories/agent-execution-thread.repository.d.ts +1 -1
- package/dist/modules/agents/repositories/agent-execution-thread.repository.js +5 -3
- package/dist/modules/agents/repositories/agent-execution-thread.repository.js.map +1 -1
- package/dist/modules/agents/repositories/agent-file.repository.d.ts +7 -0
- package/dist/modules/agents/repositories/agent-file.repository.js +35 -0
- package/dist/modules/agents/repositories/agent-file.repository.js.map +1 -0
- package/dist/modules/agents/repositories/agent-history.repository.d.ts +2 -0
- package/dist/modules/agents/repositories/agent-history.repository.js +18 -0
- package/dist/modules/agents/repositories/agent-history.repository.js.map +1 -1
- package/dist/modules/agents/repositories/agent-task-run-lock.repository.d.ts +12 -0
- package/dist/modules/agents/repositories/agent-task-run-lock.repository.js +72 -0
- package/dist/modules/agents/repositories/agent-task-run-lock.repository.js.map +1 -0
- package/dist/modules/agents/repositories/agent-task-snapshot.repository.d.ts +11 -0
- package/dist/modules/agents/repositories/agent-task-snapshot.repository.js +45 -0
- package/dist/modules/agents/repositories/agent-task-snapshot.repository.js.map +1 -0
- package/dist/modules/agents/repositories/agent-task.repository.d.ts +7 -0
- package/dist/modules/agents/repositories/agent-task.repository.js +32 -0
- package/dist/modules/agents/repositories/agent-task.repository.js.map +1 -0
- package/dist/modules/agents/repositories/agent.repository.js +1 -2
- package/dist/modules/agents/repositories/agent.repository.js.map +1 -1
- package/dist/modules/agents/tools/knowledge/csv-helpers.d.ts +73 -0
- package/dist/modules/agents/tools/knowledge/csv-helpers.js +341 -0
- package/dist/modules/agents/tools/knowledge/csv-helpers.js.map +1 -0
- package/dist/modules/agents/tools/knowledge/csv.operation.d.ts +61 -0
- package/dist/modules/agents/tools/knowledge/csv.operation.js +207 -0
- package/dist/modules/agents/tools/knowledge/csv.operation.js.map +1 -0
- package/dist/modules/agents/tools/knowledge/file-references.d.ts +16 -0
- package/dist/modules/agents/tools/knowledge/file-references.js +35 -0
- package/dist/modules/agents/tools/knowledge/file-references.js.map +1 -0
- package/dist/modules/agents/tools/knowledge/read.operation.d.ts +8 -0
- package/dist/modules/agents/tools/knowledge/read.operation.js +38 -0
- package/dist/modules/agents/tools/knowledge/read.operation.js.map +1 -0
- package/dist/modules/agents/tools/knowledge/schemas.d.ts +1505 -0
- package/dist/modules/agents/tools/knowledge/schemas.js +441 -0
- package/dist/modules/agents/tools/knowledge/schemas.js.map +1 -0
- package/dist/modules/agents/tools/knowledge/search.operation.d.ts +9 -0
- package/dist/modules/agents/tools/knowledge/search.operation.js +332 -0
- package/dist/modules/agents/tools/knowledge/search.operation.js.map +1 -0
- package/dist/modules/agents/tools/knowledge/tool.d.ts +8 -0
- package/dist/modules/agents/tools/knowledge/tool.js +121 -0
- package/dist/modules/agents/tools/knowledge/tool.js.map +1 -0
- package/dist/modules/agents/utils/agent-memory-scope.d.ts +1 -1
- package/dist/modules/agents/utils/agent-memory-scope.js +4 -4
- package/dist/modules/agents/utils/agent-memory-scope.js.map +1 -1
- package/dist/modules/agents/utils/agent-resource-id.d.ts +1 -1
- package/dist/modules/chat-hub/chat-hub.module.d.ts +2 -2
- package/dist/modules/chat-hub/chat-hub.settings.controller.d.ts +4 -4
- package/dist/modules/chat-hub/chat-hub.types.d.ts +5 -5
- package/dist/modules/chat-hub/dto/chat-models-request.dto.d.ts +1 -1
- package/dist/modules/dynamic-credentials.ee/constants.d.ts +1 -1
- package/dist/modules/dynamic-credentials.ee/constants.js +2 -1
- package/dist/modules/dynamic-credentials.ee/constants.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.d.ts +9 -2
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js +45 -14
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +4 -0
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +16 -0
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +6 -2
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.d.ts +1 -0
- package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js +21 -2
- package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js.map +1 -1
- package/dist/modules/instance-ai/eval/execution.service.d.ts +4 -1
- package/dist/modules/instance-ai/eval/execution.service.js +118 -24
- package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/llm-wire-server.d.ts +8 -3
- package/dist/modules/instance-ai/eval/llm-wire-server.js +147 -50
- package/dist/modules/instance-ai/eval/llm-wire-server.js.map +1 -1
- package/dist/modules/instance-ai/eval/mock-handler.js +45 -8
- package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -1
- package/dist/modules/instance-ai/eval/mock-quirks.d.ts +4 -2
- package/dist/modules/instance-ai/eval/mock-quirks.js +83 -4
- package/dist/modules/instance-ai/eval/mock-quirks.js.map +1 -1
- package/dist/modules/instance-ai/eval/openai-envelope.d.ts +8 -0
- package/dist/modules/instance-ai/eval/openai-envelope.js +121 -8
- package/dist/modules/instance-ai/eval/openai-envelope.js.map +1 -1
- package/dist/modules/instance-ai/eval/openai-responses-envelope.d.ts +11 -0
- package/dist/modules/instance-ai/eval/openai-responses-envelope.js +238 -0
- package/dist/modules/instance-ai/eval/openai-responses-envelope.js.map +1 -0
- package/dist/modules/instance-ai/eval/request-binary-redactor.d.ts +1 -0
- package/dist/modules/instance-ai/eval/request-binary-redactor.js +74 -0
- package/dist/modules/instance-ai/eval/request-binary-redactor.js.map +1 -0
- package/dist/modules/instance-ai/eval/workflow-analysis.d.ts +19 -1
- package/dist/modules/instance-ai/eval/workflow-analysis.js +159 -76
- package/dist/modules/instance-ai/eval/workflow-analysis.js.map +1 -1
- package/dist/modules/instance-ai/extract-resolved-node-parameters.d.ts +7 -0
- package/dist/modules/instance-ai/extract-resolved-node-parameters.js +221 -0
- package/dist/modules/instance-ai/extract-resolved-node-parameters.js.map +1 -0
- package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +7 -1
- package/dist/modules/instance-ai/instance-ai-memory.service.js +80 -3
- package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-settings.service.js +1 -16
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +67 -7
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.module.d.ts +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +24 -1
- package/dist/modules/instance-ai/instance-ai.service.js +400 -26
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/liveness/instance-ai-liveness.service.d.ts +1 -0
- package/dist/modules/instance-ai/liveness/instance-ai-liveness.service.js +1 -0
- package/dist/modules/instance-ai/liveness/instance-ai-liveness.service.js.map +1 -1
- package/dist/modules/instance-ai/message-parser.d.ts +2 -0
- package/dist/modules/instance-ai/message-parser.js +165 -36
- package/dist/modules/instance-ai/message-parser.js.map +1 -1
- package/dist/modules/instance-ai/repositories/instance-ai-checkpoint.repository.d.ts +2 -0
- package/dist/modules/instance-ai/repositories/instance-ai-checkpoint.repository.js +13 -0
- package/dist/modules/instance-ai/repositories/instance-ai-checkpoint.repository.js.map +1 -1
- package/dist/modules/instance-ai/repositories/instance-ai-pending-confirmation.repository.d.ts +12 -0
- package/dist/modules/instance-ai/repositories/instance-ai-pending-confirmation.repository.js +80 -0
- package/dist/modules/instance-ai/repositories/instance-ai-pending-confirmation.repository.js.map +1 -0
- package/dist/modules/instance-ai/storage/db-snapshot-storage.d.ts +1 -0
- package/dist/modules/instance-ai/storage/db-snapshot-storage.js +23 -0
- package/dist/modules/instance-ai/storage/db-snapshot-storage.js.map +1 -1
- package/dist/modules/instance-ai/storage/typeorm-agent-checkpoint-store.d.ts +10 -4
- package/dist/modules/instance-ai/storage/typeorm-agent-checkpoint-store.js +49 -37
- package/dist/modules/instance-ai/storage/typeorm-agent-checkpoint-store.js.map +1 -1
- package/dist/modules/instance-ai/web-research/index.d.ts +0 -2
- package/dist/modules/instance-ai/web-research/index.js +1 -5
- package/dist/modules/instance-ai/web-research/index.js.map +1 -1
- package/dist/modules/ldap.ee/helpers.ee.js +6 -2
- package/dist/modules/ldap.ee/helpers.ee.js.map +1 -1
- package/dist/modules/mcp/mcp.controller.js +13 -6
- package/dist/modules/mcp/mcp.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +10 -2
- package/dist/modules/mcp/mcp.service.js +36 -6
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.controller.d.ts +2 -0
- package/dist/modules/mcp/mcp.settings.service.d.ts +2 -0
- package/dist/modules/mcp/mcp.settings.service.js +6 -5
- package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
- package/dist/modules/mcp/mcp.types.d.ts +6 -0
- package/dist/modules/mcp/mcp.types.js +9 -0
- package/dist/modules/mcp/mcp.types.js.map +1 -1
- package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +6 -6
- package/dist/modules/mcp/tools/search-workflows.tool.d.ts +2 -1
- package/dist/modules/mcp/tools/search-workflows.tool.js +12 -4
- package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.js +1 -1
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.d.ts +67 -6
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.d.ts +67 -6
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js +51 -0
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js.map +1 -1
- package/dist/modules/mcp-registry/registry/mcp-registry.types.js.map +1 -1
- package/dist/modules/mcp-registry/synthesize-type-def.d.ts +2 -0
- package/dist/modules/mcp-registry/synthesize-type-def.js +35 -0
- package/dist/modules/mcp-registry/synthesize-type-def.js.map +1 -0
- package/dist/modules/n8n-packages/engine/import-pipeline.d.ts +24 -0
- package/dist/modules/n8n-packages/engine/import-pipeline.js +206 -0
- package/dist/modules/n8n-packages/engine/import-pipeline.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential-requirements.extractor.d.ts +6 -0
- package/dist/modules/n8n-packages/entities/credential/credential-requirements.extractor.js +33 -0
- package/dist/modules/n8n-packages/entities/credential/credential-requirements.extractor.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.d.ts +23 -0
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.js +68 -0
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential.serializer.d.ts +5 -0
- package/dist/modules/n8n-packages/entities/credential/credential.serializer.js +25 -0
- package/dist/modules/n8n-packages/entities/credential/credential.serializer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential.types.d.ts +6 -0
- package/dist/modules/n8n-packages/entities/credential/credential.types.js +3 -0
- package/dist/modules/n8n-packages/entities/credential/credential.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/requirements-extractor.d.ts +4 -0
- package/dist/modules/n8n-packages/entities/requirements-extractor.js +3 -0
- package/dist/modules/n8n-packages/entities/requirements-extractor.js.map +1 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +12 -3
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +11 -20
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.d.ts +3 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js +10 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/io/package-reader.d.ts +6 -0
- package/dist/modules/n8n-packages/io/package-reader.js +3 -0
- package/dist/modules/n8n-packages/io/package-reader.js.map +1 -0
- package/dist/modules/n8n-packages/io/slug.utils.d.ts +1 -1
- package/dist/modules/n8n-packages/io/slug.utils.js +3 -3
- package/dist/modules/n8n-packages/io/slug.utils.js.map +1 -1
- package/dist/modules/n8n-packages/io/tar/tar-package-reader.d.ts +13 -0
- package/dist/modules/n8n-packages/io/tar/tar-package-reader.js +84 -0
- package/dist/modules/n8n-packages/io/tar/tar-package-reader.js.map +1 -0
- package/dist/modules/n8n-packages/io/unique-filename-allocator.d.ts +7 -0
- package/dist/modules/n8n-packages/io/unique-filename-allocator.js +27 -0
- package/dist/modules/n8n-packages/io/unique-filename-allocator.js.map +1 -0
- package/dist/modules/n8n-packages/n8n-packages.service.d.ts +7 -2
- package/dist/modules/n8n-packages/n8n-packages.service.js +21 -3
- package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.types.d.ts +22 -0
- package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +121 -4
- package/dist/modules/n8n-packages/spec/manifest.schema.js +22 -3
- package/dist/modules/n8n-packages/spec/manifest.schema.js.map +1 -1
- package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +51 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.js +14 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -0
- package/dist/modules/n8n-packages/spec/serialized/credential.schema.d.ts +15 -0
- package/dist/modules/n8n-packages/spec/serialized/credential.schema.js +12 -0
- package/dist/modules/n8n-packages/spec/serialized/credential.schema.js.map +1 -0
- package/dist/modules/n8n-packages/spec/serialized/workflow.schema.d.ts +4 -4
- package/dist/modules/n8n-packages/utils/import-package-upload.d.ts +13 -0
- package/dist/modules/n8n-packages/utils/import-package-upload.js +59 -0
- package/dist/modules/n8n-packages/utils/import-package-upload.js.map +1 -0
- package/dist/modules/otel/execution-level-tracer.js +15 -6
- package/dist/modules/otel/execution-level-tracer.js.map +1 -1
- package/dist/modules/otel/execution-level-tracer.types.d.ts +3 -0
- package/dist/modules/otel/execution-level-tracer.types.js.map +1 -1
- package/dist/modules/otel/otel-lifecycle-handler.d.ts +4 -2
- package/dist/modules/otel/otel-lifecycle-handler.js +69 -4
- package/dist/modules/otel/otel-lifecycle-handler.js.map +1 -1
- package/dist/modules/otel/otel.config.d.ts +1 -0
- package/dist/modules/otel/otel.config.js +5 -0
- package/dist/modules/otel/otel.config.js.map +1 -1
- package/dist/modules/otel/otel.constants.d.ts +2 -0
- package/dist/modules/otel/otel.constants.js +2 -0
- package/dist/modules/otel/otel.constants.js.map +1 -1
- package/dist/modules/redaction/instance-redaction-enforcement.service.d.ts +4 -0
- package/dist/modules/redaction/instance-redaction-enforcement.service.js +8 -0
- package/dist/modules/redaction/instance-redaction-enforcement.service.js.map +1 -1
- package/dist/modules/redaction/redaction-context-hook.d.ts +9 -0
- package/dist/modules/redaction/redaction-context-hook.js +57 -0
- package/dist/modules/redaction/redaction-context-hook.js.map +1 -0
- package/dist/modules/redaction/redaction.module.js +1 -0
- package/dist/modules/redaction/redaction.module.js.map +1 -1
- package/dist/modules/source-control.ee/constants.d.ts +1 -0
- package/dist/modules/source-control.ee/constants.js +2 -1
- package/dist/modules/source-control.ee/constants.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.js +5 -0
- package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +4 -2
- package/dist/modules/source-control.ee/source-control.controller.ee.js +32 -5
- package/dist/modules/source-control.ee/source-control.controller.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control.service.ee.js +2 -0
- package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
- package/dist/modules/workflow-builder/workflow-builder-session.repository.js +2 -1
- package/dist/modules/workflow-builder/workflow-builder-session.repository.js.map +1 -1
- package/dist/node-catalog/node-catalog.service.d.ts +2 -0
- package/dist/node-catalog/node-catalog.service.js +38 -2
- package/dist/node-catalog/node-catalog.service.js.map +1 -1
- package/dist/oauth/oauth-browser-binding.service.d.ts +18 -0
- package/dist/oauth/oauth-browser-binding.service.js +68 -0
- package/dist/oauth/oauth-browser-binding.service.js.map +1 -0
- package/dist/oauth/oauth.service.d.ts +10 -4
- package/dist/oauth/oauth.service.js +87 -4
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/oauth/types.d.ts +1 -0
- package/dist/oauth/types.js.map +1 -1
- package/dist/public-api/index.js +5 -1
- package/dist/public-api/index.js.map +1 -1
- package/dist/public-api/types.d.ts +6 -0
- package/dist/public-api/v1/handlers/credentials/credentials.service.js +1 -0
- package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.d.ts +5 -0
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +22 -0
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +207 -59
- package/dist/requests.d.ts +4 -0
- package/dist/scaling/constants.d.ts +2 -2
- package/dist/scaling/pubsub/pubsub.event-map.d.ts +5 -2
- package/dist/scaling/pubsub/pubsub.types.d.ts +2 -1
- package/dist/services/ai-workflow-builder.service.d.ts +6 -3
- package/dist/services/ai-workflow-builder.service.js +13 -5
- package/dist/services/ai-workflow-builder.service.js.map +1 -1
- package/dist/services/api-key-auth.strategy.d.ts +4 -1
- package/dist/services/api-key-auth.strategy.js +18 -2
- package/dist/services/api-key-auth.strategy.js.map +1 -1
- package/dist/services/ownership.service.d.ts +1 -0
- package/dist/services/ownership.service.js +7 -0
- package/dist/services/ownership.service.js.map +1 -1
- package/dist/services/project.service.ee.d.ts +6 -2
- package/dist/services/project.service.ee.js +30 -8
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/public-api-key.service.d.ts +21 -14
- package/dist/services/public-api-key.service.js +14 -9
- package/dist/services/public-api-key.service.js.map +1 -1
- package/dist/telemetry/index.d.ts +6 -9
- package/dist/telemetry/index.js +23 -9
- package/dist/telemetry/index.js.map +1 -1
- package/dist/webhooks/constants.js +5 -1
- package/dist/webhooks/constants.js.map +1 -1
- package/dist/webhooks/live-webhooks.d.ts +8 -1
- package/dist/webhooks/live-webhooks.js +37 -22
- package/dist/webhooks/live-webhooks.js.map +1 -1
- package/dist/webhooks/waiting-forms.js +8 -1
- package/dist/webhooks/waiting-forms.js.map +1 -1
- package/dist/webhooks/webhook-helpers.d.ts +1 -1
- package/dist/webhooks/webhook-helpers.js +20 -10
- package/dist/webhooks/webhook-helpers.js.map +1 -1
- package/dist/webhooks/webhook-request-handler.js +1 -1
- package/dist/webhooks/webhook-request-handler.js.map +1 -1
- package/dist/workflow-helpers.d.ts +6 -1
- package/dist/workflow-helpers.js +9 -1
- package/dist/workflow-helpers.js.map +1 -1
- package/dist/workflows/workflow-creation.service.d.ts +4 -1
- package/dist/workflows/workflow-creation.service.js +12 -3
- package/dist/workflows/workflow-creation.service.js.map +1 -1
- package/dist/workflows/workflow-finder.service.d.ts +1 -0
- package/dist/workflows/workflow-published-data.service.d.ts +11 -0
- package/dist/workflows/workflow-published-data.service.js +39 -0
- package/dist/workflows/workflow-published-data.service.js.map +1 -0
- package/dist/workflows/workflow-validation.service.d.ts +5 -1
- package/dist/workflows/workflow-validation.service.js +55 -2
- package/dist/workflows/workflow-validation.service.js.map +1 -1
- package/dist/workflows/workflow.service.js +4 -0
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflows.controller.d.ts +8 -0
- package/package.json +40 -32
- package/templates/form-trigger-completion.handlebars +12 -1
- package/dist/modules/agents/integrations/agent-schedule.service.d.ts +0 -30
- package/dist/modules/agents/integrations/agent-schedule.service.js +0 -331
- package/dist/modules/agents/integrations/agent-schedule.service.js.map +0 -1
- package/dist/modules/instance-ai/web-research/brave-search.d.ts +0 -10
- package/dist/modules/instance-ai/web-research/brave-search.js +0 -44
- package/dist/modules/instance-ai/web-research/brave-search.js.map +0 -1
- package/dist/modules/instance-ai/web-research/searxng-search.d.ts +0 -6
- package/dist/modules/instance-ai/web-research/searxng-search.js +0 -39
- package/dist/modules/instance-ai/web-research/searxng-search.js.map +0 -1
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AgentTaskService = void 0;
|
|
13
|
+
const backend_common_1 = require("@n8n/backend-common");
|
|
14
|
+
const config_1 = require("@n8n/config");
|
|
15
|
+
const db_1 = require("@n8n/db");
|
|
16
|
+
const decorators_1 = require("@n8n/decorators");
|
|
17
|
+
const di_1 = require("@n8n/di");
|
|
18
|
+
const typeorm_1 = require("@n8n/typeorm");
|
|
19
|
+
const cron_1 = require("cron");
|
|
20
|
+
const crypto_1 = require("crypto");
|
|
21
|
+
const luxon_1 = require("luxon");
|
|
22
|
+
const n8n_core_1 = require("n8n-core");
|
|
23
|
+
const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
|
|
24
|
+
const not_found_error_1 = require("../../errors/response-errors/not-found.error");
|
|
25
|
+
const publisher_service_1 = require("../../scaling/pubsub/publisher.service");
|
|
26
|
+
const agents_service_1 = require("./agents.service");
|
|
27
|
+
const cron_validation_1 = require("./integrations/cron-validation");
|
|
28
|
+
const agent_repository_1 = require("./repositories/agent.repository");
|
|
29
|
+
const agent_task_run_lock_repository_1 = require("./repositories/agent-task-run-lock.repository");
|
|
30
|
+
const agent_task_snapshot_repository_1 = require("./repositories/agent-task-snapshot.repository");
|
|
31
|
+
const agent_task_repository_1 = require("./repositories/agent-task.repository");
|
|
32
|
+
const agent_draft_utils_1 = require("./utils/agent-draft.utils");
|
|
33
|
+
const agent_memory_scope_1 = require("./utils/agent-memory-scope");
|
|
34
|
+
const agent_resource_id_1 = require("./utils/agent-resource-id");
|
|
35
|
+
const TASK_RUN_LOCK_TTL_MS = 5 * 60 * 1000;
|
|
36
|
+
const TASK_RUN_LOCK_RENEW_MS = 60 * 1000;
|
|
37
|
+
let AgentTaskService = class AgentTaskService {
|
|
38
|
+
constructor(logger, globalConfig, taskRepository, taskSnapshotRepository, taskRunLockRepository, agentRepository, projectRelationRepository, agentsService, instanceSettings, publisher) {
|
|
39
|
+
this.logger = logger;
|
|
40
|
+
this.globalConfig = globalConfig;
|
|
41
|
+
this.taskRepository = taskRepository;
|
|
42
|
+
this.taskSnapshotRepository = taskSnapshotRepository;
|
|
43
|
+
this.taskRunLockRepository = taskRunLockRepository;
|
|
44
|
+
this.agentRepository = agentRepository;
|
|
45
|
+
this.projectRelationRepository = projectRelationRepository;
|
|
46
|
+
this.agentsService = agentsService;
|
|
47
|
+
this.instanceSettings = instanceSettings;
|
|
48
|
+
this.publisher = publisher;
|
|
49
|
+
this.jobs = new Map();
|
|
50
|
+
}
|
|
51
|
+
async list(agentId) {
|
|
52
|
+
const tasks = await this.taskRepository.findByAgentId(agentId);
|
|
53
|
+
return tasks.map((task) => this.toDto(task));
|
|
54
|
+
}
|
|
55
|
+
async create(agentId, dto) {
|
|
56
|
+
this.assertValidCron(dto.cronExpression);
|
|
57
|
+
const agent = await this.agentRepository.findOne({ where: { id: agentId } });
|
|
58
|
+
if (!agent)
|
|
59
|
+
throw new not_found_error_1.NotFoundError(`Agent "${agentId}" not found`);
|
|
60
|
+
if (!agent.schema)
|
|
61
|
+
throw new bad_request_error_1.BadRequestError('Agent has no config yet');
|
|
62
|
+
const taskId = (0, agent_resource_id_1.generateAgentResourceId)('task', (agent.schema.tasks ?? []).map((ref) => ref.id));
|
|
63
|
+
const task = this.taskRepository.create({
|
|
64
|
+
id: taskId,
|
|
65
|
+
agentId,
|
|
66
|
+
name: dto.name,
|
|
67
|
+
objective: dto.objective,
|
|
68
|
+
cronExpression: dto.cronExpression,
|
|
69
|
+
});
|
|
70
|
+
this.attachTaskRef(agent, taskId, dto.enabled ?? true);
|
|
71
|
+
(0, agent_draft_utils_1.markAgentDraftDirty)(agent);
|
|
72
|
+
await this.agentRepository.manager.transaction(async (em) => {
|
|
73
|
+
await em.save(task);
|
|
74
|
+
await em.save(agent);
|
|
75
|
+
});
|
|
76
|
+
this.logger.debug('[AgentTaskService] Created task', { agentId, taskId });
|
|
77
|
+
return this.toDto(task);
|
|
78
|
+
}
|
|
79
|
+
async update(agentId, taskId, dto) {
|
|
80
|
+
const task = await this.getOrThrow(agentId, taskId);
|
|
81
|
+
let changed = false;
|
|
82
|
+
if (dto.cronExpression !== undefined) {
|
|
83
|
+
this.assertValidCron(dto.cronExpression);
|
|
84
|
+
if (dto.cronExpression !== task.cronExpression) {
|
|
85
|
+
task.cronExpression = dto.cronExpression;
|
|
86
|
+
changed = true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (dto.name !== undefined && dto.name !== task.name) {
|
|
90
|
+
task.name = dto.name;
|
|
91
|
+
changed = true;
|
|
92
|
+
}
|
|
93
|
+
if (dto.objective !== undefined && dto.objective !== task.objective) {
|
|
94
|
+
task.objective = dto.objective;
|
|
95
|
+
changed = true;
|
|
96
|
+
}
|
|
97
|
+
if (!changed)
|
|
98
|
+
return this.toDto(task);
|
|
99
|
+
const agent = await this.agentRepository.findOne({ where: { id: agentId } });
|
|
100
|
+
const saved = await this.agentRepository.manager.transaction(async (em) => {
|
|
101
|
+
const savedTask = await em.save(task);
|
|
102
|
+
if (agent) {
|
|
103
|
+
(0, agent_draft_utils_1.markAgentDraftDirty)(agent);
|
|
104
|
+
await em.save(agent);
|
|
105
|
+
}
|
|
106
|
+
return savedTask;
|
|
107
|
+
});
|
|
108
|
+
return this.toDto(saved);
|
|
109
|
+
}
|
|
110
|
+
async delete(agentId, taskId) {
|
|
111
|
+
const task = await this.getOrThrow(agentId, taskId);
|
|
112
|
+
const agent = await this.agentRepository.findOne({ where: { id: agentId } });
|
|
113
|
+
if (agent?.schema?.tasks) {
|
|
114
|
+
agent.schema.tasks = agent.schema.tasks.filter((ref) => ref.id !== taskId);
|
|
115
|
+
(0, agent_draft_utils_1.markAgentDraftDirty)(agent);
|
|
116
|
+
}
|
|
117
|
+
await this.agentRepository.manager.transaction(async (em) => {
|
|
118
|
+
await em.remove(task);
|
|
119
|
+
if (agent)
|
|
120
|
+
await em.save(agent);
|
|
121
|
+
});
|
|
122
|
+
this.logger.debug('[AgentTaskService] Deleted task', { agentId, taskId });
|
|
123
|
+
}
|
|
124
|
+
attachTaskRef(agent, taskId, enabled) {
|
|
125
|
+
if (!agent.schema)
|
|
126
|
+
throw new bad_request_error_1.BadRequestError('Agent has no config yet');
|
|
127
|
+
agent.schema.tasks = [
|
|
128
|
+
...(agent.schema.tasks ?? []).filter((ref) => ref.id !== taskId),
|
|
129
|
+
{ type: 'task', id: taskId, enabled },
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
async requestReconcile(agentId) {
|
|
133
|
+
await this.registerEnabledForAgent(agentId);
|
|
134
|
+
this.broadcastTasksChanged(agentId);
|
|
135
|
+
}
|
|
136
|
+
async registerEnabledForAgent(agentId) {
|
|
137
|
+
const agent = await this.agentRepository.findOne({
|
|
138
|
+
where: { id: agentId },
|
|
139
|
+
relations: { activeVersion: true },
|
|
140
|
+
});
|
|
141
|
+
if (!agent?.activeVersionId) {
|
|
142
|
+
this.deregisterAgentTasks(agentId);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
await this.reconcileAgent(agent);
|
|
146
|
+
}
|
|
147
|
+
async handleTasksChanged(payload) {
|
|
148
|
+
await this.registerEnabledForAgent(payload.agentId);
|
|
149
|
+
}
|
|
150
|
+
broadcastTasksChanged(agentId) {
|
|
151
|
+
if (!this.globalConfig.multiMainSetup.enabled)
|
|
152
|
+
return;
|
|
153
|
+
void this.publisher
|
|
154
|
+
.publishCommand({ command: 'agent-tasks-changed', payload: { agentId } })
|
|
155
|
+
.catch((error) => this.logger.warn('[AgentTaskService] Failed to publish agent-tasks-changed', {
|
|
156
|
+
agentId,
|
|
157
|
+
error: error instanceof Error ? error.message : String(error),
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
deregisterAgentTasks(agentId) {
|
|
161
|
+
const taskIds = [...this.jobs.entries()]
|
|
162
|
+
.filter(([, entry]) => entry.agentId === agentId)
|
|
163
|
+
.map(([taskId]) => taskId);
|
|
164
|
+
for (const taskId of taskIds)
|
|
165
|
+
this.deregister(taskId);
|
|
166
|
+
}
|
|
167
|
+
async reconnectAll() {
|
|
168
|
+
const agents = await this.agentRepository.find({
|
|
169
|
+
where: { activeVersionId: (0, typeorm_1.Not)((0, typeorm_1.IsNull)()) },
|
|
170
|
+
relations: { activeVersion: true },
|
|
171
|
+
});
|
|
172
|
+
this.logger.debug('[AgentTaskService] Reconnecting published agents', { count: agents.length });
|
|
173
|
+
for (const agent of agents) {
|
|
174
|
+
try {
|
|
175
|
+
await this.reconcileAgent(agent);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
this.logger.error('[AgentTaskService] Failed to reconnect agent tasks', {
|
|
179
|
+
agentId: agent.id,
|
|
180
|
+
error: error instanceof Error ? error.message : String(error),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
stopAll() {
|
|
186
|
+
for (const taskId of [...this.jobs.keys()]) {
|
|
187
|
+
this.deregister(taskId);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async reconcileAgent(agent) {
|
|
191
|
+
if (!this.instanceSettings.isLeader)
|
|
192
|
+
return;
|
|
193
|
+
if (!agent.activeVersionId) {
|
|
194
|
+
this.deregisterAgentTasks(agent.id);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const snapshots = await this.taskSnapshotRepository.findEnabledByVersionId(agent.activeVersionId);
|
|
198
|
+
const enabledIds = new Set(snapshots.map((snapshot) => snapshot.taskId));
|
|
199
|
+
for (const [taskId, entry] of this.jobs.entries()) {
|
|
200
|
+
if (entry.agentId === agent.id && !enabledIds.has(taskId))
|
|
201
|
+
this.deregister(taskId);
|
|
202
|
+
}
|
|
203
|
+
if (enabledIds.size === 0)
|
|
204
|
+
return;
|
|
205
|
+
for (const snapshot of snapshots) {
|
|
206
|
+
this.registerOrRefresh(snapshot.taskId, agent.id, snapshot.cronExpression);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
registerOrRefresh(taskId, agentId, cronExpression) {
|
|
210
|
+
if (!(0, cron_validation_1.isValidCronExpression)(cronExpression)) {
|
|
211
|
+
this.logger.warn('[AgentTaskService] Skipping task with invalid cron', { taskId });
|
|
212
|
+
this.deregister(taskId);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
this.deregister(taskId);
|
|
216
|
+
const timezone = this.globalConfig.generic.timezone;
|
|
217
|
+
const job = new cron_1.CronJob(cronExpression, () => {
|
|
218
|
+
void this.runScheduledTask(taskId);
|
|
219
|
+
}, null, true, timezone);
|
|
220
|
+
this.jobs.set(taskId, { agentId, job });
|
|
221
|
+
this.logger.info('[AgentTaskService] Registered task', {
|
|
222
|
+
taskId,
|
|
223
|
+
agentId,
|
|
224
|
+
cronExpression,
|
|
225
|
+
timezone,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
deregister(taskId) {
|
|
229
|
+
const existing = this.jobs.get(taskId);
|
|
230
|
+
if (!existing)
|
|
231
|
+
return;
|
|
232
|
+
void existing.job.stop();
|
|
233
|
+
this.jobs.delete(taskId);
|
|
234
|
+
this.logger.info('[AgentTaskService] Deregistered task', { taskId });
|
|
235
|
+
}
|
|
236
|
+
async runScheduledTask(taskId) {
|
|
237
|
+
const agentId = this.jobs.get(taskId)?.agentId;
|
|
238
|
+
if (!agentId) {
|
|
239
|
+
await this.runTask(taskId);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const holderId = (0, crypto_1.randomUUID)();
|
|
243
|
+
let lock = null;
|
|
244
|
+
let renewInterval;
|
|
245
|
+
try {
|
|
246
|
+
lock = await this.taskRunLockRepository.acquire(agentId, taskId, {
|
|
247
|
+
holderId,
|
|
248
|
+
ttlMs: TASK_RUN_LOCK_TTL_MS,
|
|
249
|
+
});
|
|
250
|
+
if (!lock) {
|
|
251
|
+
this.logger.info('[AgentTaskService] Skipping task because previous run is still active', {
|
|
252
|
+
taskId,
|
|
253
|
+
agentId,
|
|
254
|
+
});
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
renewInterval = this.startTaskRunLockRenewal(lock);
|
|
258
|
+
await this.runTask(taskId);
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
this.logger.error('[AgentTaskService] Scheduled task lock failed', {
|
|
262
|
+
taskId,
|
|
263
|
+
agentId,
|
|
264
|
+
error: error instanceof Error ? error.message : String(error),
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
finally {
|
|
268
|
+
if (renewInterval)
|
|
269
|
+
clearInterval(renewInterval);
|
|
270
|
+
if (lock) {
|
|
271
|
+
await this.taskRunLockRepository.release(lock).catch((error) => {
|
|
272
|
+
this.logger.warn('[AgentTaskService] Failed to release task run lock', {
|
|
273
|
+
taskId,
|
|
274
|
+
agentId,
|
|
275
|
+
error: error instanceof Error ? error.message : String(error),
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
startTaskRunLockRenewal(lock) {
|
|
282
|
+
return setInterval(() => {
|
|
283
|
+
void this.taskRunLockRepository
|
|
284
|
+
.renew(lock, TASK_RUN_LOCK_TTL_MS)
|
|
285
|
+
.then((renewed) => {
|
|
286
|
+
if (!renewed) {
|
|
287
|
+
this.logger.warn('[AgentTaskService] Failed to renew task run lock', {
|
|
288
|
+
taskId: lock.taskId,
|
|
289
|
+
agentId: lock.agentId,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
})
|
|
293
|
+
.catch((error) => {
|
|
294
|
+
this.logger.warn('[AgentTaskService] Failed to renew task run lock', {
|
|
295
|
+
taskId: lock.taskId,
|
|
296
|
+
agentId: lock.agentId,
|
|
297
|
+
error: error instanceof Error ? error.message : String(error),
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
}, TASK_RUN_LOCK_RENEW_MS);
|
|
301
|
+
}
|
|
302
|
+
async runTask(taskId) {
|
|
303
|
+
const agentId = this.jobs.get(taskId)?.agentId;
|
|
304
|
+
let projectId;
|
|
305
|
+
try {
|
|
306
|
+
if (!agentId) {
|
|
307
|
+
this.deregister(taskId);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const agent = await this.agentRepository.findOne({
|
|
311
|
+
where: { id: agentId },
|
|
312
|
+
relations: { activeVersion: true },
|
|
313
|
+
});
|
|
314
|
+
if (!agent) {
|
|
315
|
+
this.deregister(taskId);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
projectId = agent.projectId;
|
|
319
|
+
if (!agent.activeVersionId) {
|
|
320
|
+
this.logger.warn('[AgentTaskService] Task fired for unpublished agent', {
|
|
321
|
+
taskId,
|
|
322
|
+
agentId,
|
|
323
|
+
});
|
|
324
|
+
this.deregister(taskId);
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const snapshot = await this.taskSnapshotRepository.findByVersionAndTaskId(agent.activeVersionId, taskId);
|
|
328
|
+
if (!snapshot?.enabled) {
|
|
329
|
+
this.logger.warn('[AgentTaskService] Task fired but has no enabled published snapshot', {
|
|
330
|
+
taskId,
|
|
331
|
+
agentId,
|
|
332
|
+
});
|
|
333
|
+
this.deregister(taskId);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
const executionUserId = await this.resolveExecutionUserId(agent);
|
|
337
|
+
if (!executionUserId) {
|
|
338
|
+
this.logger.warn('[AgentTaskService] No project member available for task run', {
|
|
339
|
+
taskId,
|
|
340
|
+
agentId,
|
|
341
|
+
projectId,
|
|
342
|
+
});
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
const { message, threadId } = this.buildTaskRunMessage(taskId, snapshot.objective);
|
|
346
|
+
this.logger.info('[AgentTaskService] Task fired', {
|
|
347
|
+
taskId,
|
|
348
|
+
agentId,
|
|
349
|
+
projectId,
|
|
350
|
+
cronExpression: snapshot.cronExpression,
|
|
351
|
+
});
|
|
352
|
+
await this.consumeTaskRun('Task run', { taskId, agentId, projectId }, this.agentsService.executeForTaskPublished({
|
|
353
|
+
agentId: agent.id,
|
|
354
|
+
projectId: agent.projectId,
|
|
355
|
+
message,
|
|
356
|
+
memory: { threadId, resourceId: (0, agent_memory_scope_1.taskRunMemoryResourceId)(taskId) },
|
|
357
|
+
taskId,
|
|
358
|
+
taskVersionId: agent.activeVersionId,
|
|
359
|
+
}));
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
this.logger.error('[AgentTaskService] Task run failed', {
|
|
363
|
+
taskId,
|
|
364
|
+
agentId,
|
|
365
|
+
projectId,
|
|
366
|
+
error: error instanceof Error ? error.message : String(error),
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
buildTaskRunMessage(taskId, objective) {
|
|
371
|
+
const timezone = this.globalConfig.generic.timezone;
|
|
372
|
+
const timestamp = luxon_1.DateTime.now().setZone(timezone).toISO() ?? new Date().toISOString();
|
|
373
|
+
const message = `${objective}\n\nCurrent date and time: ${timestamp} (timezone: ${timezone})`;
|
|
374
|
+
const threadId = `task-${taskId}-${(0, crypto_1.randomUUID)()}`;
|
|
375
|
+
return { message, threadId };
|
|
376
|
+
}
|
|
377
|
+
async consumeTaskRun(kind, context, stream) {
|
|
378
|
+
const startedAt = Date.now();
|
|
379
|
+
try {
|
|
380
|
+
let chunkCount = 0;
|
|
381
|
+
for await (const _chunk of stream) {
|
|
382
|
+
chunkCount += 1;
|
|
383
|
+
}
|
|
384
|
+
this.logger.info(`[AgentTaskService] ${kind} completed`, {
|
|
385
|
+
...context,
|
|
386
|
+
chunkCount,
|
|
387
|
+
durationMs: Date.now() - startedAt,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
catch (error) {
|
|
391
|
+
this.logger.error(`[AgentTaskService] ${kind} failed`, {
|
|
392
|
+
...context,
|
|
393
|
+
error: error instanceof Error ? error.message : String(error),
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
async runNow(agentId, taskId, userId) {
|
|
398
|
+
const task = await this.getOrThrow(agentId, taskId);
|
|
399
|
+
const agent = await this.agentRepository.findOne({ where: { id: agentId } });
|
|
400
|
+
if (!agent) {
|
|
401
|
+
throw new not_found_error_1.NotFoundError(`Agent "${agentId}" not found`);
|
|
402
|
+
}
|
|
403
|
+
void this.executeNow(task, agent.projectId, userId);
|
|
404
|
+
}
|
|
405
|
+
async executeNow(task, projectId, userId) {
|
|
406
|
+
const { message, threadId } = this.buildTaskRunMessage(task.id, task.objective);
|
|
407
|
+
this.logger.info('[AgentTaskService] Manual task run started', {
|
|
408
|
+
taskId: task.id,
|
|
409
|
+
agentId: task.agentId,
|
|
410
|
+
projectId,
|
|
411
|
+
});
|
|
412
|
+
await this.consumeTaskRun('Manual task run', { taskId: task.id, agentId: task.agentId, projectId }, this.agentsService.executeForTaskNow({
|
|
413
|
+
agentId: task.agentId,
|
|
414
|
+
projectId,
|
|
415
|
+
userId,
|
|
416
|
+
message,
|
|
417
|
+
memory: { threadId, resourceId: (0, agent_memory_scope_1.taskRunMemoryResourceId)(task.id) },
|
|
418
|
+
taskId: task.id,
|
|
419
|
+
}));
|
|
420
|
+
}
|
|
421
|
+
async resolveExecutionUserId(agent) {
|
|
422
|
+
const userIds = await this.projectRelationRepository.findUserIdsByProjectId(agent.projectId);
|
|
423
|
+
if (userIds.length === 0)
|
|
424
|
+
return undefined;
|
|
425
|
+
const publishedById = agent.activeVersion?.publishedById;
|
|
426
|
+
if (publishedById && userIds.includes(publishedById)) {
|
|
427
|
+
return publishedById;
|
|
428
|
+
}
|
|
429
|
+
return undefined;
|
|
430
|
+
}
|
|
431
|
+
async getOrThrow(agentId, taskId) {
|
|
432
|
+
const task = await this.taskRepository.findByIdAndAgentId(taskId, agentId);
|
|
433
|
+
if (!task) {
|
|
434
|
+
throw new not_found_error_1.NotFoundError(`Task "${taskId}" not found`);
|
|
435
|
+
}
|
|
436
|
+
return task;
|
|
437
|
+
}
|
|
438
|
+
assertValidCron(cronExpression) {
|
|
439
|
+
if (!(0, cron_validation_1.isValidCronExpression)(cronExpression)) {
|
|
440
|
+
throw new bad_request_error_1.BadRequestError('Invalid cron expression');
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
toDto(task) {
|
|
444
|
+
return {
|
|
445
|
+
id: task.id,
|
|
446
|
+
name: task.name,
|
|
447
|
+
objective: task.objective,
|
|
448
|
+
cronExpression: task.cronExpression,
|
|
449
|
+
createdAt: task.createdAt.toISOString(),
|
|
450
|
+
updatedAt: task.updatedAt.toISOString(),
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
exports.AgentTaskService = AgentTaskService;
|
|
455
|
+
__decorate([
|
|
456
|
+
(0, decorators_1.OnPubSubEvent)('agent-tasks-changed', { instanceType: 'main' }),
|
|
457
|
+
__metadata("design:type", Function),
|
|
458
|
+
__metadata("design:paramtypes", [Object]),
|
|
459
|
+
__metadata("design:returntype", Promise)
|
|
460
|
+
], AgentTaskService.prototype, "handleTasksChanged", null);
|
|
461
|
+
__decorate([
|
|
462
|
+
(0, decorators_1.OnLeaderTakeover)(),
|
|
463
|
+
__metadata("design:type", Function),
|
|
464
|
+
__metadata("design:paramtypes", []),
|
|
465
|
+
__metadata("design:returntype", Promise)
|
|
466
|
+
], AgentTaskService.prototype, "reconnectAll", null);
|
|
467
|
+
__decorate([
|
|
468
|
+
(0, decorators_1.OnLeaderStepdown)(),
|
|
469
|
+
(0, decorators_1.OnShutdown)(),
|
|
470
|
+
__metadata("design:type", Function),
|
|
471
|
+
__metadata("design:paramtypes", []),
|
|
472
|
+
__metadata("design:returntype", void 0)
|
|
473
|
+
], AgentTaskService.prototype, "stopAll", null);
|
|
474
|
+
exports.AgentTaskService = AgentTaskService = __decorate([
|
|
475
|
+
(0, di_1.Service)(),
|
|
476
|
+
__metadata("design:paramtypes", [backend_common_1.Logger,
|
|
477
|
+
config_1.GlobalConfig,
|
|
478
|
+
agent_task_repository_1.AgentTaskRepository,
|
|
479
|
+
agent_task_snapshot_repository_1.AgentTaskSnapshotRepository,
|
|
480
|
+
agent_task_run_lock_repository_1.AgentTaskRunLockRepository,
|
|
481
|
+
agent_repository_1.AgentRepository,
|
|
482
|
+
db_1.ProjectRelationRepository,
|
|
483
|
+
agents_service_1.AgentsService,
|
|
484
|
+
n8n_core_1.InstanceSettings,
|
|
485
|
+
publisher_service_1.Publisher])
|
|
486
|
+
], AgentTaskService);
|
|
487
|
+
//# sourceMappingURL=agent-task.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-task.service.js","sourceRoot":"","sources":["../../../src/modules/agents/agent-task.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RequestHandler } from 'express';
|
|
2
|
+
export declare function isAllowedAgentFile(file: Pick<Express.Multer.File, 'originalname'>): boolean;
|
|
3
|
+
export declare function cleanupUploadedTempFiles(files: Express.Multer.File[]): Promise<void>;
|
|
4
|
+
export declare class AgentUploadMiddleware {
|
|
5
|
+
private readonly upload;
|
|
6
|
+
array(fieldName: string): RequestHandler;
|
|
7
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AgentUploadMiddleware = void 0;
|
|
13
|
+
exports.isAllowedAgentFile = isAllowedAgentFile;
|
|
14
|
+
exports.cleanupUploadedTempFiles = cleanupUploadedTempFiles;
|
|
15
|
+
const api_types_1 = require("@n8n/api-types");
|
|
16
|
+
const di_1 = require("@n8n/di");
|
|
17
|
+
const multer_1 = __importDefault(require("multer"));
|
|
18
|
+
const promises_1 = require("node:fs/promises");
|
|
19
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
20
|
+
const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
|
|
21
|
+
const allowedAgentFileExtensions = new Set(api_types_1.ALLOWED_AGENT_FILE_EXTENSIONS);
|
|
22
|
+
function isAllowedAgentFile(file) {
|
|
23
|
+
const extension = node_path_1.default.extname(file.originalname).toLowerCase();
|
|
24
|
+
return allowedAgentFileExtensions.has(extension);
|
|
25
|
+
}
|
|
26
|
+
async function cleanupUploadedTempFiles(files) {
|
|
27
|
+
await Promise.all(files.map(async (file) => {
|
|
28
|
+
if (!file.path)
|
|
29
|
+
return;
|
|
30
|
+
await (0, promises_1.unlink)(file.path).catch(() => { });
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
let AgentUploadMiddleware = class AgentUploadMiddleware {
|
|
34
|
+
constructor() {
|
|
35
|
+
this.upload = (0, multer_1.default)({
|
|
36
|
+
storage: multer_1.default.diskStorage({}),
|
|
37
|
+
limits: { fileSize: api_types_1.MAX_AGENT_FILE_SIZE_BYTES },
|
|
38
|
+
fileFilter: (_req, file, done) => {
|
|
39
|
+
if (!isAllowedAgentFile(file)) {
|
|
40
|
+
done(new bad_request_error_1.BadRequestError('Only CSV, PDF, Markdown, and TXT files are allowed'));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
done(null, true);
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
array(fieldName) {
|
|
48
|
+
return (req, res, next) => {
|
|
49
|
+
void this.upload.array(fieldName, api_types_1.MAX_AGENT_FILES_PER_UPLOAD)(req, res, (error) => {
|
|
50
|
+
if (error) {
|
|
51
|
+
req.fileUploadError = error;
|
|
52
|
+
}
|
|
53
|
+
next();
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.AgentUploadMiddleware = AgentUploadMiddleware;
|
|
59
|
+
exports.AgentUploadMiddleware = AgentUploadMiddleware = __decorate([
|
|
60
|
+
(0, di_1.Service)()
|
|
61
|
+
], AgentUploadMiddleware);
|
|
62
|
+
//# sourceMappingURL=agent-upload.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-upload.middleware.js","sourceRoot":"","sources":["../../../src/modules/agents/agent-upload.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;AAeA,gDAIC;AAQD,4DAOC;AAlCD,8CAIwB;AACxB,gCAAkC;AAElC,oDAA4B;AAC5B,+CAA0C;AAC1C,0DAA6B;AAE7B,kFAA6E;AAE7E,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAS,yCAA6B,CAAC,CAAC;AAElF,SAAgB,kBAAkB,CAAC,IAA+C;IACjF,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhE,OAAO,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAQM,KAAK,UAAU,wBAAwB,CAAC,KAA4B;IAC1E,MAAM,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,MAAM,IAAA,iBAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QACW,WAAM,GAAkB,IAAA,gBAAM,EAAC;YAC/C,OAAO,EAAE,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,EAAE,QAAQ,EAAE,qCAAyB,EAAE;YAC/C,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,IAAI,mCAAe,CAAC,oDAAoD,CAAC,CAAC,CAAC;oBAChF,OAAO;gBACR,CAAC;gBAED,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClB,CAAC;SACD,CAAC,CAAC;IAYJ,CAAC;IAVA,KAAK,CAAC,SAAiB;QACtB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,sCAA0B,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjF,IAAI,KAAK,EAAE,CAAC;oBACV,GAAgD,CAAC,eAAe,GAAG,KAAc,CAAC;gBACpF,CAAC;gBACD,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;IACH,CAAC;CACD,CAAA;AAxBY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,YAAO,GAAE;GACG,qBAAqB,CAwBjC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BuiltTool, CredentialProvider } from '@n8n/agents';
|
|
2
2
|
import { Logger } from '@n8n/backend-common';
|
|
3
|
-
import { EphemeralNodeExecutor } from '../../node-execution';
|
|
4
3
|
import { NodeCatalogService } from '../../node-catalog';
|
|
4
|
+
import { EphemeralNodeExecutor } from '../../node-execution';
|
|
5
5
|
export declare const isExecutableNodeType: (nodeId: string) => boolean;
|
|
6
6
|
export declare const isAgentToolNodeType: (nodeId: string) => boolean;
|
|
7
7
|
export declare class AgentsToolsService {
|
|
@@ -16,13 +16,22 @@ const di_1 = require("@n8n/di");
|
|
|
16
16
|
const workflow_sdk_1 = require("@n8n/workflow-sdk");
|
|
17
17
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
18
18
|
const zod_1 = require("zod");
|
|
19
|
-
const
|
|
19
|
+
const node_description_transform_1 = require("../mcp-registry/node-description-transform");
|
|
20
20
|
const node_catalog_1 = require("../../node-catalog");
|
|
21
|
+
const node_execution_1 = require("../../node-execution");
|
|
21
22
|
const isExecutableNodeType = (nodeId) => !(0, n8n_workflow_1.isTriggerNodeType)(nodeId);
|
|
22
23
|
exports.isExecutableNodeType = isExecutableNodeType;
|
|
23
|
-
const isAgentToolNodeType = (nodeId) =>
|
|
24
|
-
|
|
24
|
+
const isAgentToolNodeType = (nodeId) => {
|
|
25
|
+
if (!(0, exports.isExecutableNodeType)(nodeId)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
const isAllowedTool = (0, n8n_workflow_1.isToolType)(nodeId, { includeHitl: false }) && !isMcpToolNodeType(nodeId);
|
|
29
|
+
const isAllowedProviderNode = (0, node_execution_1.isAgentProviderNode)(nodeId);
|
|
30
|
+
return isAllowedTool || isAllowedProviderNode;
|
|
31
|
+
};
|
|
25
32
|
exports.isAgentToolNodeType = isAgentToolNodeType;
|
|
33
|
+
const MCP_CLIENT_TOOL_NODE_TYPE = '@n8n/n8n-nodes-langchain.mcpClientTool';
|
|
34
|
+
const isMcpToolNodeType = (nodeId) => nodeId === MCP_CLIENT_TOOL_NODE_TYPE || nodeId.startsWith(node_description_transform_1.MCP_REGISTRY_PACKAGE_NAME);
|
|
26
35
|
const searchNodesInputSchema = zod_1.z.object({
|
|
27
36
|
queries: zod_1.z.array(zod_1.z.string()).min(1).describe('Search queries (e.g., ["gmail", "slack", "http"])'),
|
|
28
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-tools.service.js","sourceRoot":"","sources":["../../../src/modules/agents/agents-tools.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAAwC;AACxC,wDAA6C;AAC7C,gCAAkC;AAClC,oDAAuD;AACvD,+CAA6D;AAE7D,6BAAwB;AAExB,
|
|
1
|
+
{"version":3,"file":"agents-tools.service.js","sourceRoot":"","sources":["../../../src/modules/agents/agents-tools.service.ts"],"names":[],"mappings":"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"}
|