n8n 2.30.3 → 2.31.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/agent-library-bundle.js +9 -0
- package/dist/blob-storage/azure-byte-store.ee.d.ts +1 -1
- package/dist/blob-storage/azure-byte-store.ee.js +3 -18
- package/dist/blob-storage/azure-byte-store.ee.js.map +1 -1
- package/dist/blob-storage/json-store.js +3 -0
- package/dist/blob-storage/json-store.js.map +1 -1
- package/dist/blob-storage/s3-byte-store.ee.d.ts +1 -1
- package/dist/blob-storage/s3-byte-store.ee.js +2 -17
- package/dist/blob-storage/s3-byte-store.ee.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/commands/base-command.d.ts +2 -2
- package/dist/commands/base-command.js +5 -5
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/start.js +2 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/constants/workflow-reviews.d.ts +4 -0
- package/dist/constants/workflow-reviews.js +14 -0
- package/dist/constants/workflow-reviews.js.map +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/controllers/e2e.controller.js +1 -0
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/security-settings.controller.d.ts +15 -10
- package/dist/controllers/security-settings.controller.js +41 -65
- package/dist/controllers/security-settings.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +2 -2
- package/dist/credentials/credential-connection-status-provider.interface.d.ts +2 -1
- package/dist/credentials/credential-connection-status-proxy.d.ts +2 -1
- package/dist/credentials/credential-connection-status-proxy.js +7 -2
- package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
- package/dist/credentials/credentials.controller.js +5 -5
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +1 -0
- package/dist/credentials/credentials.service.ee.d.ts +3 -1
- package/dist/credentials/credentials.service.ee.js +10 -2
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +14 -0
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/eventbus/event-message-classes/index.d.ts +2 -2
- package/dist/eventbus/event-message-classes/index.js +4 -2
- package/dist/eventbus/event-message-classes/index.js.map +1 -1
- package/dist/events/maps/relay.event-map.d.ts +19 -2
- package/dist/events/relays/log-streaming.event-relay.d.ts +2 -0
- package/dist/events/relays/log-streaming.event-relay.js +30 -2
- package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.d.ts +3 -0
- package/dist/events/relays/telemetry.event-relay.js +88 -10
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js +21 -4
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
- package/dist/executions/execution-data/db-store.d.ts +8 -15
- package/dist/executions/execution-data/db-store.js +12 -25
- package/dist/executions/execution-data/db-store.js.map +1 -1
- package/dist/executions/execution-data/execution-data-json-store.d.ts +7 -0
- package/dist/executions/execution-data/execution-data-json-store.js +45 -0
- package/dist/executions/execution-data/execution-data-json-store.js.map +1 -0
- package/dist/executions/execution-data/types.d.ts +3 -14
- package/dist/executions/execution-data/types.js.map +1 -1
- package/dist/executions/execution-persistence.d.ts +7 -14
- package/dist/executions/execution-persistence.js +40 -88
- package/dist/executions/execution-persistence.js.map +1 -1
- package/dist/executions/execution.service.d.ts +3 -4
- package/dist/executions/execution.service.js +4 -13
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/executions/executions.controller.js +1 -10
- package/dist/executions/executions.controller.js.map +1 -1
- package/dist/interfaces.d.ts +4 -1
- package/dist/load-nodes-and-credentials.js +1 -1
- package/dist/load-nodes-and-credentials.js.map +1 -1
- package/dist/metrics/prometheus/prometheus.service.d.ts +2 -1
- package/dist/metrics/prometheus/prometheus.service.js +5 -2
- package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
- package/dist/metrics/prometheus/scheduler-metrics.service.d.ts +35 -0
- package/dist/metrics/prometheus/scheduler-metrics.service.js +187 -0
- package/dist/metrics/prometheus/scheduler-metrics.service.js.map +1 -0
- package/dist/modules/agents/adapters/agents-credential-provider.d.ts +1 -0
- package/dist/modules/agents/adapters/agents-credential-provider.js +13 -3
- package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
- package/dist/modules/agents/agent-config.service.js +11 -1
- package/dist/modules/agents/agent-config.service.js.map +1 -1
- package/dist/modules/agents/agent-knowledge.controller.js +1 -1
- package/dist/modules/agents/agent-knowledge.controller.js.map +1 -1
- package/dist/modules/agents/agent-upload.middleware.d.ts +2 -0
- package/dist/modules/agents/agent-upload.middleware.js +11 -0
- package/dist/modules/agents/agent-upload.middleware.js.map +1 -1
- package/dist/modules/agents/agent-validation.service.js +19 -2
- package/dist/modules/agents/agent-validation.service.js.map +1 -1
- package/dist/modules/agents/agent-vector-stores.controller.d.ts +11 -0
- package/dist/modules/agents/agent-vector-stores.controller.js +41 -0
- package/dist/modules/agents/agent-vector-stores.controller.js.map +1 -0
- package/dist/modules/agents/agent-vector-stores.service.d.ts +9 -0
- package/dist/modules/agents/agent-vector-stores.service.js +195 -0
- package/dist/modules/agents/agent-vector-stores.service.js.map +1 -0
- package/dist/modules/agents/agents-config.controller.d.ts +112 -69
- package/dist/modules/agents/agents.controller.d.ts +5 -1
- package/dist/modules/agents/agents.controller.js +11 -0
- package/dist/modules/agents/agents.controller.js.map +1 -1
- package/dist/modules/agents/agents.module.js +1 -0
- package/dist/modules/agents/agents.module.js.map +1 -1
- package/dist/modules/agents/agents.service.d.ts +7 -2
- package/dist/modules/agents/agents.service.js +65 -2
- package/dist/modules/agents/agents.service.js.map +1 -1
- package/dist/modules/agents/attachable-workflows.service.d.ts +12 -0
- package/dist/modules/agents/attachable-workflows.service.js +58 -0
- package/dist/modules/agents/attachable-workflows.service.js.map +1 -0
- package/dist/modules/agents/builder/agents-builder-model-recommendations.js +3 -2
- package/dist/modules/agents/builder/agents-builder-model-recommendations.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-prompts.d.ts +4 -4
- package/dist/modules/agents/builder/agents-builder-prompts.js +40 -27
- package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +3 -5
- package/dist/modules/agents/builder/agents-builder-tools.service.js +48 -194
- package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder.service.d.ts +10 -3
- package/dist/modules/agents/builder/agents-builder.service.js +22 -12
- package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
- package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
- package/dist/modules/agents/builder/errors.d.ts +3 -2
- package/dist/modules/agents/builder/errors.js +3 -2
- package/dist/modules/agents/builder/errors.js.map +1 -1
- package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +99 -2
- package/dist/modules/agents/builder/get-resource-locator-options.tool.js +103 -101
- package/dist/modules/agents/builder/get-resource-locator-options.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js +48 -32
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-questions.tool.d.ts +2 -0
- package/dist/modules/agents/builder/interactive/ask-questions.tool.js +108 -0
- package/dist/modules/agents/builder/interactive/ask-questions.tool.js.map +1 -0
- package/dist/modules/agents/builder/interactive/configure-channel.tool.d.ts +7 -0
- package/dist/modules/agents/builder/interactive/configure-channel.tool.js +52 -0
- package/dist/modules/agents/builder/interactive/configure-channel.tool.js.map +1 -0
- package/dist/modules/agents/builder/interactive/index.d.ts +2 -2
- package/dist/modules/agents/builder/interactive/index.js +5 -5
- package/dist/modules/agents/builder/interactive/index.js.map +1 -1
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +2 -2
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
- package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +1 -1
- package/dist/modules/agents/builder/prompts/config-rules.prompt.js +2 -2
- package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +10 -10
- 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 +1 -1
- package/dist/modules/agents/builder/search-mcp-servers.tool.js +1 -63
- package/dist/modules/agents/builder/search-mcp-servers.tool.js.map +1 -1
- package/dist/modules/agents/builder/skills/index.d.ts +1 -1
- package/dist/modules/agents/builder/skills/index.js +5 -1
- package/dist/modules/agents/builder/skills/index.js.map +1 -1
- package/dist/modules/agents/builder/skills/integrations.skill.js +15 -6
- package/dist/modules/agents/builder/skills/integrations.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/mcp.skill.js +2 -2
- package/dist/modules/agents/builder/skills/mcp.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/resource-locators.skill.js +2 -2
- package/dist/modules/agents/builder/skills/resource-locators.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/sub-agents.skill.js +7 -5
- package/dist/modules/agents/builder/skills/sub-agents.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-skills.skill.js +5 -4
- package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-tasks.skill.js +5 -5
- package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +14 -0
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +96 -0
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -0
- package/dist/modules/agents/integrations/integration-action-executor.d.ts +72 -72
- package/dist/modules/agents/integrations/integration-tool-definitions.d.ts +574 -574
- package/dist/modules/agents/json-config/embedding-credential.d.ts +4 -0
- package/dist/modules/agents/json-config/embedding-credential.js +25 -0
- package/dist/modules/agents/json-config/embedding-credential.js.map +1 -0
- package/dist/modules/agents/json-config/from-json-config.d.ts +2 -6
- package/dist/modules/agents/json-config/from-json-config.js +16 -16
- package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
- package/dist/modules/agents/json-config/model-config.js +2 -2
- package/dist/modules/agents/json-config/model-config.js.map +1 -1
- package/dist/modules/agents/json-config/vector-store-factory.d.ts +5 -0
- package/dist/modules/agents/json-config/vector-store-factory.js +138 -0
- package/dist/modules/agents/json-config/vector-store-factory.js.map +1 -0
- package/dist/modules/breaking-changes/rules/index.d.ts +8 -0
- package/dist/modules/breaking-changes/rules/index.js +8 -0
- package/dist/modules/breaking-changes/rules/index.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.d.ts +6 -0
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js +59 -0
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js +57 -0
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.d.ts +10 -0
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js +53 -0
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js +56 -0
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js +57 -0
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.d.ts +6 -0
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js +50 -0
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js +57 -0
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.d.ts +6 -0
- package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js +47 -0
- package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js.map +1 -0
- package/dist/modules/chat-hub/chat-hub.module.d.ts +1 -1
- package/dist/modules/chat-hub/chat-hub.settings.controller.d.ts +3 -3
- package/dist/modules/data-table/data-table-ddl.service.d.ts +2 -0
- package/dist/modules/data-table/data-table-ddl.service.js +16 -0
- package/dist/modules/data-table/data-table-ddl.service.js.map +1 -1
- package/dist/modules/data-table/data-table.service.d.ts +6 -3
- package/dist/modules/data-table/data-table.service.js +19 -0
- package/dist/modules/data-table/data-table.service.js.map +1 -1
- package/dist/modules/data-table/utils/sql-utils.d.ts +1 -0
- package/dist/modules/data-table/utils/sql-utils.js +4 -0
- package/dist/modules/data-table/utils/sql-utils.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.d.ts +0 -2
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js +0 -13
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +5 -3
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +19 -7
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
- package/dist/modules/favorites/dto/add-favorite.dto.d.ts +2 -2
- package/dist/modules/favorites/favorites.event-relay.js +2 -3
- package/dist/modules/favorites/favorites.event-relay.js.map +1 -1
- package/dist/modules/favorites/favorites.service.d.ts +4 -1
- package/dist/modules/favorites/favorites.service.js +28 -3
- package/dist/modules/favorites/favorites.service.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 +26 -3
- package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/mock-handler.js +1 -1
- package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -1
- package/dist/modules/instance-ai/eval/mock-quirks.js +7 -0
- package/dist/modules/instance-ai/eval/mock-quirks.js.map +1 -1
- package/dist/modules/instance-ai/eval/pin-data-generator.js +17 -17
- package/dist/modules/instance-ai/eval/pin-data-generator.js.map +1 -1
- package/dist/modules/instance-ai/event-bus/in-process-event-bus.d.ts +17 -6
- package/dist/modules/instance-ai/event-bus/in-process-event-bus.js +153 -30
- package/dist/modules/instance-ai/event-bus/in-process-event-bus.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +7 -2
- package/dist/modules/instance-ai/instance-ai-memory.service.js +12 -1
- package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-settings.service.js +0 -7
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +89 -3
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +272 -42
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.controller.js +9 -2
- package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +0 -1
- package/dist/modules/instance-ai/instance-ai.service.js +45 -107
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/workflow-templates.service.d.ts +17 -0
- package/dist/modules/instance-ai/workflow-templates.service.js +63 -0
- package/dist/modules/instance-ai/workflow-templates.service.js.map +1 -0
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.d.ts +1 -0
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js +2 -0
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js.map +1 -1
- package/dist/modules/mcp/dto/update-workflows-availability.dto.d.ts +2 -0
- package/dist/modules/mcp/dto/update-workflows-availability.dto.js +1 -0
- package/dist/modules/mcp/dto/update-workflows-availability.dto.js.map +1 -1
- package/dist/modules/mcp/mcp-protected-resource.d.ts +4 -1
- package/dist/modules/mcp/mcp-protected-resource.js +13 -3
- package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
- package/dist/modules/mcp/mcp.config.d.ts +1 -0
- package/dist/modules/mcp/mcp.config.js +20 -0
- package/dist/modules/mcp/mcp.config.js.map +1 -1
- package/dist/modules/mcp/mcp.module.d.ts +1 -0
- package/dist/modules/mcp/mcp.module.js +3 -1
- package/dist/modules/mcp/mcp.module.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.service.d.ts +1 -1
- package/dist/modules/mcp/mcp.settings.service.js +33 -18
- package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
- package/dist/modules/mcp/tools/search-workflows.tool.js +4 -2
- package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +2 -0
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +10 -5
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js +4 -0
- package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/skills-used.d.ts +1 -0
- package/dist/modules/mcp/tools/workflow-builder/skills-used.js +5 -1
- package/dist/modules/mcp/tools/workflow-builder/skills-used.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +10 -5
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/version-metadata.d.ts +27 -0
- package/dist/modules/mcp/tools/workflow-builder/version-metadata.js +109 -0
- package/dist/modules/mcp/tools/workflow-builder/version-metadata.js.map +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-search.d.ts +18 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-search.js +64 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-search.js.map +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +2 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js +4 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
- package/dist/modules/n8n-packages/engine/import-blocked.error.js +2 -1
- package/dist/modules/n8n-packages/engine/import-blocked.error.js.map +1 -1
- package/dist/modules/n8n-packages/engine/import-orchestrator.d.ts +30 -0
- package/dist/modules/n8n-packages/engine/import-orchestrator.js +86 -0
- package/dist/modules/n8n-packages/engine/import-orchestrator.js.map +1 -0
- package/dist/modules/n8n-packages/engine/import-result.d.ts +14 -0
- package/dist/modules/n8n-packages/engine/import-result.js +43 -0
- package/dist/modules/n8n-packages/engine/import-result.js.map +1 -0
- package/dist/modules/n8n-packages/engine/n8n-package-parser.d.ts +7 -0
- package/dist/modules/n8n-packages/engine/n8n-package-parser.js +72 -13
- package/dist/modules/n8n-packages/engine/n8n-package-parser.js.map +1 -1
- package/dist/modules/n8n-packages/engine/package-layout.d.ts +11 -0
- package/dist/modules/n8n-packages/engine/package-layout.js +21 -0
- package/dist/modules/n8n-packages/engine/package-layout.js.map +1 -0
- package/dist/modules/n8n-packages/engine/project-package-importer.d.ts +11 -0
- package/dist/modules/n8n-packages/engine/project-package-importer.js +44 -0
- package/dist/modules/n8n-packages/engine/project-package-importer.js.map +1 -0
- package/dist/modules/n8n-packages/engine/workflow-package-importer.d.ts +24 -0
- package/dist/modules/n8n-packages/engine/workflow-package-importer.js +168 -0
- package/dist/modules/n8n-packages/engine/workflow-package-importer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.d.ts +3 -1
- package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js +8 -2
- package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/credential-matcher.d.ts +6 -6
- package/dist/modules/n8n-packages/entities/credential/credential-matcher.js +34 -4
- package/dist/modules/n8n-packages/entities/credential/credential-matcher.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.d.ts +3 -0
- package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js +27 -0
- package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.js +18 -2
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.d.ts +3 -7
- package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js +8 -23
- package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.d.ts +8 -0
- package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js +31 -0
- package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.d.ts +8 -0
- package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js +31 -0
- package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.d.ts +6 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js +38 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.d.ts +26 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js +97 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.d.ts +5 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js +31 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.types.d.ts +4 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.types.js +3 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.d.ts +5 -0
- package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js +11 -0
- package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder-import.types.d.ts +20 -0
- package/dist/modules/n8n-packages/entities/folder/folder-import.types.js +3 -0
- package/dist/modules/n8n-packages/entities/folder/folder-import.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder-importer.d.ts +10 -0
- package/dist/modules/n8n-packages/entities/folder/folder-importer.js +140 -0
- package/dist/modules/n8n-packages/entities/folder/folder-importer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.d.ts +5 -2
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.js +48 -44
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/folder/folder.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/package-export.errors.d.ts +8 -0
- package/dist/modules/n8n-packages/entities/package-export.errors.js +27 -0
- package/dist/modules/n8n-packages/entities/package-export.errors.js.map +1 -0
- package/dist/modules/n8n-packages/entities/project/project-import.types.d.ts +15 -0
- package/dist/modules/n8n-packages/entities/project/project-import.types.js +3 -0
- package/dist/modules/n8n-packages/entities/project/project-import.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/project/project-importer.d.ts +13 -0
- package/dist/modules/n8n-packages/entities/project/project-importer.js +97 -0
- package/dist/modules/n8n-packages/entities/project/project-importer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/project/project.exporter.d.ts +22 -4
- package/dist/modules/n8n-packages/entities/project/project.exporter.js +71 -26
- package/dist/modules/n8n-packages/entities/project/project.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/requirements.types.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/requirements.types.js +1 -0
- package/dist/modules/n8n-packages/entities/requirements.types.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +4 -3
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +11 -17
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.service.d.ts +12 -3
- package/dist/modules/n8n-packages/n8n-packages.service.js +51 -11
- package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.types.d.ts +47 -22
- package/dist/modules/n8n-packages/n8n-packages.types.js +5 -1
- package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
- package/dist/modules/n8n-packages/package-failure-classifier.d.ts +2 -0
- package/dist/modules/n8n-packages/package-failure-classifier.js +29 -0
- package/dist/modules/n8n-packages/package-failure-classifier.js.map +1 -0
- package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +62 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +55 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.js +26 -15
- package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -1
- package/dist/modules/n8n-packages/spec/serialized/data-table.schema.d.ts +49 -0
- package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js +20 -0
- package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js.map +1 -0
- package/dist/modules/redaction/executions/execution-redaction.service.js +1 -1
- package/dist/modules/redaction/executions/execution-redaction.service.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-git.service.ee.d.ts +0 -1
- package/dist/modules/source-control.ee/source-control-git.service.ee.js +0 -22
- package/dist/modules/source-control.ee/source-control-git.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +3 -1
- package/dist/modules/source-control.ee/source-control-helper.ee.js +13 -0
- package/dist/modules/source-control.ee/source-control-helper.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +10 -2
- package/dist/modules/source-control.ee/source-control-import.service.ee.js +94 -59
- package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +0 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.js +30 -30
- 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 +6 -6
- package/dist/modules/source-control.ee/source-control.service.ee.d.ts +3 -3
- package/dist/modules/source-control.ee/source-control.service.ee.js +8 -1
- package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
- package/dist/public-api/types.d.ts +5 -1
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js +9 -0
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +87 -38
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/security-policy/security-policy.handler.d.ts +8 -0
- package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js +39 -0
- package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js.map +1 -0
- package/dist/public-api/v1/openapi.yml +243 -12
- package/dist/scaling/job-processor.js +44 -6
- package/dist/scaling/job-processor.js.map +1 -1
- package/dist/scaling/pubsub/pubsub.event-map.d.ts +4 -1
- package/dist/scheduling/durable-job-provisioner.d.ts +16 -0
- package/dist/scheduling/durable-job-provisioner.js +135 -0
- package/dist/scheduling/durable-job-provisioner.js.map +1 -0
- package/dist/scheduling/durable-scheduler.d.ts +16 -0
- package/dist/scheduling/durable-scheduler.js +117 -0
- package/dist/scheduling/durable-scheduler.js.map +1 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.d.ts +23 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js +149 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js.map +1 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.d.ts +10 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js +33 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js.map +1 -0
- package/dist/scheduling/scheduler-tracer.d.ts +3 -0
- package/dist/scheduling/scheduler-tracer.js +11 -0
- package/dist/scheduling/scheduler-tracer.js.map +1 -0
- package/dist/server.js +6 -1
- package/dist/server.js.map +1 -1
- package/dist/services/folder-finder.service.d.ts +2 -0
- package/dist/services/folder-finder.service.js +16 -0
- package/dist/services/folder-finder.service.js.map +1 -1
- package/dist/services/folder.service.d.ts +3 -2
- package/dist/services/folder.service.js +11 -1
- package/dist/services/folder.service.js.map +1 -1
- package/dist/services/frontend.service.d.ts +3 -1
- package/dist/services/frontend.service.js +14 -2
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/project.service.ee.d.ts +7 -1
- package/dist/services/project.service.ee.js +21 -4
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/protected-resource.registry.d.ts +1 -0
- package/dist/services/protected-resource.registry.js +11 -7
- package/dist/services/protected-resource.registry.js.map +1 -1
- package/dist/services/security-settings.service.d.ts +31 -1
- package/dist/services/security-settings.service.js +75 -2
- package/dist/services/security-settings.service.js.map +1 -1
- package/dist/services/workflow-review-policy.service.d.ts +11 -0
- package/dist/services/workflow-review-policy.service.js +52 -0
- package/dist/services/workflow-review-policy.service.js.map +1 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.js +6 -3
- package/dist/telemetry/index.js.map +1 -1
- package/dist/webhooks/live-webhooks.js +2 -2
- package/dist/webhooks/live-webhooks.js.map +1 -1
- package/dist/webhooks/test-webhooks.js +4 -1
- package/dist/webhooks/test-webhooks.js.map +1 -1
- package/dist/webhooks/waiting-webhooks.js +2 -2
- package/dist/webhooks/waiting-webhooks.js.map +1 -1
- package/dist/workflow-execute-additional-data.js +5 -4
- package/dist/workflow-execute-additional-data.js.map +1 -1
- package/dist/workflow-helpers.js +26 -0
- package/dist/workflow-helpers.js.map +1 -1
- package/dist/workflows/triggers/webhook-trigger-registrar.js +22 -15
- package/dist/workflows/triggers/webhook-trigger-registrar.js.map +1 -1
- package/dist/workflows/triggers/workflow-trigger-activator.js +1 -7
- package/dist/workflows/triggers/workflow-trigger-activator.js.map +1 -1
- package/dist/workflows/workflow-creation.service.d.ts +2 -0
- package/dist/workflows/workflow-creation.service.js +4 -2
- package/dist/workflows/workflow-creation.service.js.map +1 -1
- package/dist/workflows/workflow-execution.service.js +8 -5
- package/dist/workflows/workflow-execution.service.js.map +1 -1
- package/dist/workflows/workflow-finder.service.d.ts +5 -2
- package/dist/workflows/workflow-finder.service.js +25 -2
- package/dist/workflows/workflow-finder.service.js.map +1 -1
- package/dist/workflows/workflow-history/workflow-history.service.d.ts +4 -1
- package/dist/workflows/workflow-history/workflow-history.service.js +3 -1
- package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
- package/dist/workflows/workflow-validation.service.js +3 -3
- package/dist/workflows/workflow-validation.service.js.map +1 -1
- package/dist/workflows/workflow.request.d.ts +7 -22
- package/dist/workflows/workflow.service.d.ts +2 -0
- package/dist/workflows/workflow.service.js +4 -2
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflows.controller.d.ts +1 -1
- package/dist/workflows/workflows.controller.js +8 -3
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/package.json +45 -40
- package/templates/form-trigger-completion.handlebars +6 -6
- package/dist/executions/execution-data/azure-store.ee.d.ts +0 -15
- package/dist/executions/execution-data/azure-store.ee.js +0 -117
- package/dist/executions/execution-data/azure-store.ee.js.map +0 -1
- package/dist/executions/execution-data/fs-store.d.ts +0 -16
- package/dist/executions/execution-data/fs-store.js +0 -118
- package/dist/executions/execution-data/fs-store.js.map +0 -1
- package/dist/executions/execution-data/s3-store.ee.d.ts +0 -15
- package/dist/executions/execution-data/s3-store.ee.js +0 -116
- package/dist/executions/execution-data/s3-store.ee.js.map +0 -1
- package/dist/modules/agents/builder/from-ai-node-parameters.d.ts +0 -7
- package/dist/modules/agents/builder/from-ai-node-parameters.js +0 -43
- package/dist/modules/agents/builder/from-ai-node-parameters.js.map +0 -1
- package/dist/modules/agents/builder/interactive/ask-llm.tool.d.ts +0 -2
- package/dist/modules/agents/builder/interactive/ask-llm.tool.js +0 -25
- package/dist/modules/agents/builder/interactive/ask-llm.tool.js.map +0 -1
- package/dist/modules/agents/builder/interactive/ask-question.tool.d.ts +0 -2
- package/dist/modules/agents/builder/interactive/ask-question.tool.js +0 -27
- package/dist/modules/agents/builder/interactive/ask-question.tool.js.map +0 -1
- package/dist/modules/agents/json-config/model-id.d.ts +0 -1
- package/dist/modules/agents/json-config/model-id.js +0 -8
- package/dist/modules/agents/json-config/model-id.js.map +0 -1
- package/dist/modules/agents/json-config/native-web-search-provider-tools.d.ts +0 -7
- package/dist/modules/agents/json-config/native-web-search-provider-tools.js +0 -55
- package/dist/modules/agents/json-config/native-web-search-provider-tools.js.map +0 -1
- package/dist/modules/n8n-packages/engine/import-pipeline.d.ts +0 -28
- package/dist/modules/n8n-packages/engine/import-pipeline.js +0 -204
- package/dist/modules/n8n-packages/engine/import-pipeline.js.map +0 -1
|
@@ -46,6 +46,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
46
46
|
};
|
|
47
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
48
|
exports.InstanceAiAdapterService = void 0;
|
|
49
|
+
exports.buildEvaluationConfigDto = buildEvaluationConfigDto;
|
|
50
|
+
exports.evaluationConfigToSummary = evaluationConfigToSummary;
|
|
49
51
|
exports.resolveDataTableByIdOrName = resolveDataTableByIdOrName;
|
|
50
52
|
exports.truncateResultData = truncateResultData;
|
|
51
53
|
exports.extractExecutionResult = extractExecutionResult;
|
|
@@ -58,10 +60,13 @@ const promises_1 = require("node:fs/promises");
|
|
|
58
60
|
const node_path_1 = __importDefault(require("node:path"));
|
|
59
61
|
const ai_utilities_1 = require("@n8n/ai-utilities");
|
|
60
62
|
const instance_ai_1 = require("@n8n/instance-ai");
|
|
63
|
+
const api_types_1 = require("@n8n/api-types");
|
|
61
64
|
const config_1 = require("@n8n/config");
|
|
62
65
|
const constants_1 = require("@n8n/constants");
|
|
66
|
+
const nanoid_1 = require("nanoid");
|
|
63
67
|
const extract_resolved_node_parameters_1 = require("./extract-resolved-node-parameters");
|
|
64
68
|
const instance_ai_settings_service_1 = require("./instance-ai-settings.service");
|
|
69
|
+
const workflow_templates_service_1 = require("./workflow-templates.service");
|
|
65
70
|
const instance_ai_run_pin_data_1 = require("./instance-ai-run-pin-data");
|
|
66
71
|
const node_definition_resolver_1 = require("./node-definition-resolver");
|
|
67
72
|
const web_research_1 = require("./web-research");
|
|
@@ -73,13 +78,17 @@ const permissions_1 = require("@n8n/permissions");
|
|
|
73
78
|
const typeorm_1 = require("@n8n/typeorm");
|
|
74
79
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
75
80
|
const active_executions_1 = require("../../active-executions");
|
|
81
|
+
const conflict_error_1 = require("../../errors/response-errors/conflict.error");
|
|
76
82
|
const credentials_finder_service_1 = require("../../credentials/credentials-finder.service");
|
|
77
83
|
const credentials_service_1 = require("../../credentials/credentials.service");
|
|
84
|
+
const evaluation_config_service_1 = require("../../evaluation.ee/evaluation-config.service");
|
|
78
85
|
const event_service_1 = require("../../events/event.service");
|
|
79
86
|
const execution_persistence_1 = require("../../executions/execution-persistence");
|
|
80
87
|
const license_1 = require("../../license");
|
|
81
88
|
const load_nodes_and_credentials_1 = require("../../load-nodes-and-credentials");
|
|
82
89
|
const node_types_1 = require("../../node-types");
|
|
90
|
+
const agents_credential_provider_1 = require("../../modules/agents/adapters/agents-credential-provider");
|
|
91
|
+
const instance_ai_builder_delegate_adapter_1 = require("../../modules/agents/instance-ai-builder-delegate.adapter");
|
|
83
92
|
const node_catalog_1 = require("../../node-catalog");
|
|
84
93
|
const data_table_repository_1 = require("../../modules/data-table/data-table.repository");
|
|
85
94
|
const data_table_service_1 = require("../../modules/data-table/data-table.service");
|
|
@@ -126,7 +135,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
126
135
|
});
|
|
127
136
|
return await promise;
|
|
128
137
|
}
|
|
129
|
-
constructor(logger, globalConfig, workflowService, workflowFinderService, workflowRepository, sharedWorkflowRepository, projectRepository, executionRepository, credentialsService, credentialsFinderService, activeExecutions, workflowRunner, loadNodesAndCredentials, nodeTypes, instanceSettings, dataTableService, dataTableRepository, nodeResourceExplorerService, folderService, projectService, tagService, sourceControlPreferencesService, settingsService, workflowHistoryService, enterpriseWorkflowService, license, executionPersistence, eventService, roleService, telemetry, aiBuilderTemporaryWorkflowRepository, ssrfProtectionService, outboundHttp, aiGatewayService, nodeCatalogService) {
|
|
138
|
+
constructor(logger, globalConfig, workflowService, workflowFinderService, workflowRepository, sharedWorkflowRepository, projectRepository, executionRepository, credentialsService, credentialsFinderService, activeExecutions, workflowRunner, loadNodesAndCredentials, nodeTypes, instanceSettings, dataTableService, dataTableRepository, nodeResourceExplorerService, folderService, projectService, tagService, sourceControlPreferencesService, settingsService, workflowHistoryService, enterpriseWorkflowService, license, executionPersistence, eventService, roleService, telemetry, aiBuilderTemporaryWorkflowRepository, ssrfProtectionService, outboundHttp, aiGatewayService, workflowTemplatesService, nodeCatalogService, evaluationConfigService) {
|
|
130
139
|
this.globalConfig = globalConfig;
|
|
131
140
|
this.workflowService = workflowService;
|
|
132
141
|
this.workflowFinderService = workflowFinderService;
|
|
@@ -160,7 +169,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
160
169
|
this.ssrfProtectionService = ssrfProtectionService;
|
|
161
170
|
this.outboundHttp = outboundHttp;
|
|
162
171
|
this.aiGatewayService = aiGatewayService;
|
|
172
|
+
this.workflowTemplatesService = workflowTemplatesService;
|
|
163
173
|
this.nodeCatalogService = nodeCatalogService;
|
|
174
|
+
this.evaluationConfigService = evaluationConfigService;
|
|
164
175
|
this.nodesCache = null;
|
|
165
176
|
this.NODES_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
166
177
|
this.webResearchCache = new web_research_1.LRUCache({
|
|
@@ -178,7 +189,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
178
189
|
});
|
|
179
190
|
}
|
|
180
191
|
createContext(user, options) {
|
|
181
|
-
const { searchProxyConfig, pushRef, threadId, projectId, credentialIdAllowlist } = options ?? {};
|
|
192
|
+
const { searchProxyConfig, pushRef, threadId, projectId, credentialIdAllowlist, agentId } = options ?? {};
|
|
193
|
+
void this.trackGatewayAvailability();
|
|
194
|
+
const builderDelegateAdapter = this.getBuilderDelegateAdapter();
|
|
182
195
|
return {
|
|
183
196
|
userId: user.id,
|
|
184
197
|
projectId,
|
|
@@ -187,15 +200,66 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
187
200
|
credentialService: this.createCredentialAdapter(user, projectId, credentialIdAllowlist),
|
|
188
201
|
nodeService: this.createNodeAdapter(user),
|
|
189
202
|
dataTableService: this.createDataTableAdapter(user, projectId),
|
|
203
|
+
...(this.evaluationConfigService
|
|
204
|
+
? {
|
|
205
|
+
evaluationConfigService: this.createEvaluationConfigAdapter(this.evaluationConfigService, user),
|
|
206
|
+
}
|
|
207
|
+
: {}),
|
|
190
208
|
webResearchService: this.createWebResearchAdapter(user, searchProxyConfig),
|
|
191
209
|
workspaceService: this.createWorkspaceAdapter(user),
|
|
192
210
|
templatesService: this.getTemplatesService(),
|
|
211
|
+
workflowTemplateService: this.createWorkflowTemplateAdapter(),
|
|
193
212
|
licenseHints: this.buildLicenseHints(),
|
|
194
213
|
logger: this.logger,
|
|
195
214
|
nodeTypesProvider: this.nodeTypes,
|
|
196
215
|
allowSendingParameterValues: this.allowSendingParameterValues,
|
|
216
|
+
...(builderDelegateAdapter && agentId && projectId
|
|
217
|
+
? { agentBuilderTarget: { agentId, projectId } }
|
|
218
|
+
: {}),
|
|
219
|
+
...(builderDelegateAdapter && projectId
|
|
220
|
+
? {
|
|
221
|
+
builderDelegate: builderDelegateAdapter.createDelegate(user, projectId, new agents_credential_provider_1.AgentsCredentialProvider(this.credentialsService, projectId, user)),
|
|
222
|
+
}
|
|
223
|
+
: {}),
|
|
197
224
|
};
|
|
198
225
|
}
|
|
226
|
+
getBuilderDelegateAdapter() {
|
|
227
|
+
if (!di_1.Container.get(backend_common_1.ModuleRegistry).isActive('agents'))
|
|
228
|
+
return null;
|
|
229
|
+
try {
|
|
230
|
+
return di_1.Container.get(instance_ai_builder_delegate_adapter_1.InstanceAiBuilderDelegateAdapterService);
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async getGatewayConfigOrNull() {
|
|
237
|
+
if (!this.license.isLicensed(constants_1.LICENSE_FEATURES.AI_GATEWAY))
|
|
238
|
+
return null;
|
|
239
|
+
try {
|
|
240
|
+
return await this.aiGatewayService.getGatewayConfig();
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
buildAiGatewayNodeMeta(config, nodeName) {
|
|
247
|
+
if (!config)
|
|
248
|
+
return undefined;
|
|
249
|
+
if (!config.nodes.includes(nodeName))
|
|
250
|
+
return undefined;
|
|
251
|
+
const meta = { supported: true };
|
|
252
|
+
const operations = config.supportedActions?.[nodeName];
|
|
253
|
+
if (operations && Object.keys(operations).length > 0)
|
|
254
|
+
meta.operations = operations;
|
|
255
|
+
const minVersion = config.minNodeTypeVersion?.[nodeName];
|
|
256
|
+
if (minVersion !== undefined)
|
|
257
|
+
meta.minVersion = minVersion;
|
|
258
|
+
const hiddenProperties = config.hiddenNodeProperties?.[nodeName];
|
|
259
|
+
if (hiddenProperties && hiddenProperties.length > 0)
|
|
260
|
+
meta.hiddenProperties = hiddenProperties;
|
|
261
|
+
return meta;
|
|
262
|
+
}
|
|
199
263
|
getTemplatesService() {
|
|
200
264
|
if (!this.templatesService) {
|
|
201
265
|
this.templatesService = new instance_ai_1.BuilderTemplatesService({
|
|
@@ -206,6 +270,14 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
206
270
|
}
|
|
207
271
|
return this.templatesService;
|
|
208
272
|
}
|
|
273
|
+
createWorkflowTemplateAdapter() {
|
|
274
|
+
const workflowTemplatesService = this.workflowTemplatesService;
|
|
275
|
+
return {
|
|
276
|
+
async getTemplate(templateId) {
|
|
277
|
+
return await workflowTemplatesService.getTemplate(templateId);
|
|
278
|
+
},
|
|
279
|
+
};
|
|
280
|
+
}
|
|
209
281
|
buildLicenseHints() {
|
|
210
282
|
const hints = [];
|
|
211
283
|
if (!this.license.isLicensed('feat:namedVersions')) {
|
|
@@ -216,6 +288,15 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
216
288
|
}
|
|
217
289
|
return hints;
|
|
218
290
|
}
|
|
291
|
+
async trackGatewayAvailability() {
|
|
292
|
+
const config = await this.getGatewayConfigOrNull();
|
|
293
|
+
if (!config)
|
|
294
|
+
return;
|
|
295
|
+
this.telemetry.track('instance_ai_gateway_available', {
|
|
296
|
+
nodeCount: config.nodes.length,
|
|
297
|
+
credentialTypeCount: config.credentialTypes.length,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
219
300
|
assertInstanceNotReadOnly(resourceType) {
|
|
220
301
|
if (this.sourceControlPreferencesService.getPreferences().branchReadOnly) {
|
|
221
302
|
throw new Error(`Cannot modify ${resourceType} on a protected instance. This instance is in read-only mode.`);
|
|
@@ -286,7 +367,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
286
367
|
if (!workflow) {
|
|
287
368
|
throw new Error(`Workflow ${workflowId} not found or not accessible`);
|
|
288
369
|
}
|
|
289
|
-
return
|
|
370
|
+
return await toWorkflowDetailWithChecksum(workflow, { redactParameters });
|
|
290
371
|
},
|
|
291
372
|
async archive(workflowId) {
|
|
292
373
|
assertNotReadOnly();
|
|
@@ -480,9 +561,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
480
561
|
workflow_id: updated.id,
|
|
481
562
|
});
|
|
482
563
|
}
|
|
483
|
-
return
|
|
564
|
+
return await toWorkflowDetailWithChecksum(updated, { redactParameters });
|
|
484
565
|
},
|
|
485
|
-
async updateFromWorkflowJSON(workflowId, json,
|
|
566
|
+
async updateFromWorkflowJSON(workflowId, json, options) {
|
|
486
567
|
assertNotReadOnly();
|
|
487
568
|
const settings = (json.settings ?? {});
|
|
488
569
|
if (settings.redactionPolicy !== undefined) {
|
|
@@ -516,9 +597,13 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
516
597
|
}
|
|
517
598
|
updated = await workflowService.update(user, updateData, workflowId, {
|
|
518
599
|
source: 'n8n-ai',
|
|
600
|
+
...(options?.expectedChecksum ? { expectedChecksum: options.expectedChecksum } : {}),
|
|
519
601
|
});
|
|
520
602
|
}
|
|
521
603
|
catch (error) {
|
|
604
|
+
if (error instanceof conflict_error_1.ConflictError) {
|
|
605
|
+
throw new instance_ai_1.WorkflowSaveConflictError(workflowId);
|
|
606
|
+
}
|
|
522
607
|
logger.warn('AI-builder workflow save failed', {
|
|
523
608
|
threadId,
|
|
524
609
|
workflowId,
|
|
@@ -532,7 +617,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
532
617
|
workflow_id: workflowId,
|
|
533
618
|
});
|
|
534
619
|
}
|
|
535
|
-
return
|
|
620
|
+
return await toWorkflowDetailWithChecksum(updated, { redactParameters });
|
|
536
621
|
},
|
|
537
622
|
async listVersions(workflowId, options) {
|
|
538
623
|
const take = options?.limit ?? 20;
|
|
@@ -601,7 +686,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
601
686
|
};
|
|
602
687
|
}
|
|
603
688
|
createExecutionAdapter(user, pushRef, threadId) {
|
|
604
|
-
const { workflowFinderService, workflowRunner, activeExecutions, executionRepository, nodeTypes, allowSendingParameterValues,
|
|
689
|
+
const { workflowFinderService, workflowRunner, activeExecutions, executionRepository, nodeTypes, allowSendingParameterValues, roleService, telemetry, logger, globalConfig, } = this;
|
|
605
690
|
const assertNotReadOnly = () => this.assertInstanceNotReadOnly('executions');
|
|
606
691
|
const DEFAULT_TIMEOUT_MS = 5 * constants_1.Time.minutes.toMilliseconds;
|
|
607
692
|
const MAX_TIMEOUT_MS = 10 * constants_1.Time.minutes.toMilliseconds;
|
|
@@ -621,18 +706,13 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
621
706
|
return {
|
|
622
707
|
async list(options) {
|
|
623
708
|
const scope = 'workflow:read';
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
sharingOptions = {
|
|
632
|
-
workflowRoles: ['workflow:owner'],
|
|
633
|
-
projectRoles: [permissions_1.PROJECT_OWNER_ROLE_SLUG],
|
|
634
|
-
};
|
|
635
|
-
}
|
|
709
|
+
const projectRoles = await roleService.rolesWithScope('project', [scope]);
|
|
710
|
+
const workflowRoles = await roleService.rolesWithScope('workflow', [scope]);
|
|
711
|
+
const sharingOptions = {
|
|
712
|
+
scopes: [scope],
|
|
713
|
+
projectRoles,
|
|
714
|
+
workflowRoles,
|
|
715
|
+
};
|
|
636
716
|
const query = {
|
|
637
717
|
kind: 'range',
|
|
638
718
|
range: { limit: options?.limit ?? 20, lastId: undefined, firstId: undefined },
|
|
@@ -868,7 +948,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
868
948
|
};
|
|
869
949
|
}
|
|
870
950
|
createCredentialAdapter(user, boundProjectId, credentialIdAllowlist) {
|
|
871
|
-
const { credentialsService, credentialsFinderService, loadNodesAndCredentials
|
|
951
|
+
const { credentialsService, credentialsFinderService, loadNodesAndCredentials } = this;
|
|
952
|
+
const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
|
|
872
953
|
const adapter = {
|
|
873
954
|
async list(options) {
|
|
874
955
|
if (boundProjectId) {
|
|
@@ -1113,13 +1194,12 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1113
1194
|
}
|
|
1114
1195
|
},
|
|
1115
1196
|
async isAiGatewayCredentialType(credType) {
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
}
|
|
1197
|
+
const config = await getGatewayConfig();
|
|
1198
|
+
return config?.credentialTypes.includes(credType) ?? false;
|
|
1199
|
+
},
|
|
1200
|
+
async listAiGatewayCredentialTypes() {
|
|
1201
|
+
const config = await getGatewayConfig();
|
|
1202
|
+
return config?.credentialTypes ?? [];
|
|
1123
1203
|
},
|
|
1124
1204
|
};
|
|
1125
1205
|
if (!credentialIdAllowlist)
|
|
@@ -1130,6 +1210,46 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1130
1210
|
list: async (options) => allowed.size === 0 ? [] : (await adapter.list(options)).filter((c) => allowed.has(c.id)),
|
|
1131
1211
|
};
|
|
1132
1212
|
}
|
|
1213
|
+
createEvaluationConfigAdapter(evaluationConfigService, user) {
|
|
1214
|
+
const { workflowFinderService } = this;
|
|
1215
|
+
const assertNotReadOnly = () => this.assertInstanceNotReadOnly('evaluations');
|
|
1216
|
+
const findWorkflow = async (workflowId, scope) => {
|
|
1217
|
+
const workflow = await workflowFinderService.findWorkflowForUser(workflowId, user, [scope]);
|
|
1218
|
+
if (!workflow) {
|
|
1219
|
+
throw new Error(`Workflow ${workflowId} not found or not accessible`);
|
|
1220
|
+
}
|
|
1221
|
+
return workflow;
|
|
1222
|
+
};
|
|
1223
|
+
return {
|
|
1224
|
+
async list(workflowId) {
|
|
1225
|
+
await findWorkflow(workflowId, 'workflow:read');
|
|
1226
|
+
const configs = await evaluationConfigService.list(workflowId);
|
|
1227
|
+
return configs.map(evaluationConfigToSummary);
|
|
1228
|
+
},
|
|
1229
|
+
async get(workflowId, configId) {
|
|
1230
|
+
await findWorkflow(workflowId, 'workflow:read');
|
|
1231
|
+
const config = await evaluationConfigService.get(workflowId, configId);
|
|
1232
|
+
return config ? evaluationConfigToSummary(config) : null;
|
|
1233
|
+
},
|
|
1234
|
+
async create(workflowId, input) {
|
|
1235
|
+
assertNotReadOnly();
|
|
1236
|
+
const workflow = await findWorkflow(workflowId, 'workflow:update');
|
|
1237
|
+
const config = await evaluationConfigService.create(workflowId, workflow, user, buildEvaluationConfigDto(input));
|
|
1238
|
+
return evaluationConfigToSummary(config);
|
|
1239
|
+
},
|
|
1240
|
+
async update(workflowId, configId, input) {
|
|
1241
|
+
assertNotReadOnly();
|
|
1242
|
+
const workflow = await findWorkflow(workflowId, 'workflow:update');
|
|
1243
|
+
const config = await evaluationConfigService.update(workflowId, configId, workflow, user, buildEvaluationConfigDto(input));
|
|
1244
|
+
return evaluationConfigToSummary(config);
|
|
1245
|
+
},
|
|
1246
|
+
async delete(workflowId, configId) {
|
|
1247
|
+
assertNotReadOnly();
|
|
1248
|
+
await findWorkflow(workflowId, 'workflow:update');
|
|
1249
|
+
await evaluationConfigService.delete(workflowId, configId);
|
|
1250
|
+
},
|
|
1251
|
+
};
|
|
1252
|
+
}
|
|
1133
1253
|
createDataTableAdapter(user, boundProjectId) {
|
|
1134
1254
|
const { dataTableService, dataTableRepository } = this;
|
|
1135
1255
|
const assertNotReadOnly = () => this.assertInstanceNotReadOnly('data tables');
|
|
@@ -1391,6 +1511,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1391
1511
|
}
|
|
1392
1512
|
createNodeAdapter(user) {
|
|
1393
1513
|
const getNodes = async () => await this.getNodesFromCache();
|
|
1514
|
+
const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
|
|
1515
|
+
const buildMeta = (config, nodeName) => this.buildAiGatewayNodeMeta(config, nodeName);
|
|
1394
1516
|
const findNodeByVersion = (nodes, nodeType, version) => {
|
|
1395
1517
|
if (version !== undefined) {
|
|
1396
1518
|
const exact = nodes.find((n) => {
|
|
@@ -1407,24 +1529,34 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1407
1529
|
};
|
|
1408
1530
|
return {
|
|
1409
1531
|
async listAvailable(options) {
|
|
1410
|
-
const nodes = await
|
|
1532
|
+
const [nodes, gatewayConfig] = await Promise.all([
|
|
1533
|
+
getNodes(),
|
|
1534
|
+
options?.n8nConnectOnly ? getGatewayConfig() : Promise.resolve(null),
|
|
1535
|
+
]);
|
|
1411
1536
|
let filtered = nodes;
|
|
1412
1537
|
if (options?.query) {
|
|
1413
1538
|
const q = options.query.toLowerCase();
|
|
1414
|
-
filtered =
|
|
1539
|
+
filtered = filtered.filter((n) => n.displayName.toLowerCase().includes(q) ||
|
|
1415
1540
|
n.name.toLowerCase().includes(q) ||
|
|
1416
1541
|
n.description?.toLowerCase().includes(q));
|
|
1417
1542
|
}
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1543
|
+
const summaries = filtered.map((n) => {
|
|
1544
|
+
const summary = {
|
|
1545
|
+
name: n.name,
|
|
1546
|
+
displayName: n.displayName,
|
|
1547
|
+
description: n.description ?? '',
|
|
1548
|
+
group: n.group ?? [],
|
|
1549
|
+
version: Array.isArray(n.version) ? n.version[n.version.length - 1] : n.version,
|
|
1550
|
+
};
|
|
1551
|
+
const meta = buildMeta(gatewayConfig, n.name);
|
|
1552
|
+
if (meta)
|
|
1553
|
+
summary.aiGateway = meta;
|
|
1554
|
+
return summary;
|
|
1555
|
+
});
|
|
1556
|
+
return options?.n8nConnectOnly ? summaries.filter((s) => s.aiGateway) : summaries;
|
|
1425
1557
|
},
|
|
1426
1558
|
async listSearchable() {
|
|
1427
|
-
const nodes = await getNodes();
|
|
1559
|
+
const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
|
|
1428
1560
|
const toStringArray = (value) => {
|
|
1429
1561
|
if (typeof value === 'string')
|
|
1430
1562
|
return value;
|
|
@@ -1439,6 +1571,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1439
1571
|
inputs: toStringArray(n.inputs),
|
|
1440
1572
|
outputs: toStringArray(n.outputs),
|
|
1441
1573
|
};
|
|
1574
|
+
const meta = buildMeta(gatewayConfig, n.name);
|
|
1575
|
+
if (meta)
|
|
1576
|
+
result.aiGateway = meta;
|
|
1442
1577
|
if (n.codex?.alias) {
|
|
1443
1578
|
result.codex = { alias: n.codex.alias };
|
|
1444
1579
|
}
|
|
@@ -1476,7 +1611,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1476
1611
|
});
|
|
1477
1612
|
},
|
|
1478
1613
|
async getDescription(nodeType, version) {
|
|
1479
|
-
const nodes = await getNodes();
|
|
1614
|
+
const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
|
|
1480
1615
|
let desc = version !== undefined
|
|
1481
1616
|
? nodes.find((n) => {
|
|
1482
1617
|
if (n.name !== nodeType)
|
|
@@ -1492,6 +1627,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1492
1627
|
if (!desc) {
|
|
1493
1628
|
throw new Error(`Node type ${nodeType} not found`);
|
|
1494
1629
|
}
|
|
1630
|
+
const meta = buildMeta(gatewayConfig, desc.name);
|
|
1495
1631
|
return {
|
|
1496
1632
|
name: desc.name,
|
|
1497
1633
|
displayName: desc.displayName,
|
|
@@ -1526,6 +1662,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1526
1662
|
...(desc.webhooks ? { webhooks: desc.webhooks } : {}),
|
|
1527
1663
|
...(desc.polling ? { polling: desc.polling } : {}),
|
|
1528
1664
|
...(desc.triggerPanel !== undefined ? { triggerPanel: desc.triggerPanel } : {}),
|
|
1665
|
+
...(meta ? { aiGateway: meta } : {}),
|
|
1529
1666
|
};
|
|
1530
1667
|
},
|
|
1531
1668
|
getNodeTypeDefinition: async (nodeType, options) => {
|
|
@@ -1850,10 +1987,60 @@ exports.InstanceAiAdapterService = InstanceAiAdapterService = __decorate([
|
|
|
1850
1987
|
backend_network_1.SsrfProtectionService,
|
|
1851
1988
|
backend_network_1.OutboundHttp,
|
|
1852
1989
|
ai_gateway_service_1.AiGatewayService,
|
|
1853
|
-
|
|
1990
|
+
workflow_templates_service_1.WorkflowTemplatesService,
|
|
1991
|
+
node_catalog_1.NodeCatalogService,
|
|
1992
|
+
evaluation_config_service_1.EvaluationConfigService])
|
|
1854
1993
|
], InstanceAiAdapterService);
|
|
1855
1994
|
const MAX_RESULT_CHARS = 20_000;
|
|
1856
1995
|
const MAX_NODE_OUTPUT_CHARS = 1_000;
|
|
1996
|
+
function buildEvaluationConfigDto(input) {
|
|
1997
|
+
return api_types_1.upsertEvaluationConfigSchema.parse({
|
|
1998
|
+
name: input.name,
|
|
1999
|
+
startNodeName: input.startNodeName,
|
|
2000
|
+
endNodeName: input.endNodeName,
|
|
2001
|
+
datasetSource: 'data_table',
|
|
2002
|
+
datasetRef: { dataTableId: input.dataTableId },
|
|
2003
|
+
metrics: input.metrics.map((metric) => ({
|
|
2004
|
+
id: (0, nanoid_1.nanoid)(),
|
|
2005
|
+
name: metric.name,
|
|
2006
|
+
type: 'llm_judge',
|
|
2007
|
+
config: {
|
|
2008
|
+
preset: metric.preset,
|
|
2009
|
+
...(metric.prompt ? { prompt: metric.prompt } : {}),
|
|
2010
|
+
provider: metric.provider,
|
|
2011
|
+
credentialId: metric.credentialId,
|
|
2012
|
+
model: metric.model,
|
|
2013
|
+
outputType: metric.outputType,
|
|
2014
|
+
inputs: {
|
|
2015
|
+
actualAnswer: metric.actualAnswer,
|
|
2016
|
+
...(metric.userQuery ? { userQuery: metric.userQuery } : {}),
|
|
2017
|
+
...(metric.expectedAnswer ? { expectedAnswer: metric.expectedAnswer } : {}),
|
|
2018
|
+
},
|
|
2019
|
+
},
|
|
2020
|
+
})),
|
|
2021
|
+
});
|
|
2022
|
+
}
|
|
2023
|
+
function evaluationConfigToSummary(config) {
|
|
2024
|
+
const dataTableId = config.datasetSource === 'data_table' && 'dataTableId' in config.datasetRef
|
|
2025
|
+
? config.datasetRef.dataTableId
|
|
2026
|
+
: undefined;
|
|
2027
|
+
return {
|
|
2028
|
+
id: config.id,
|
|
2029
|
+
workflowId: config.workflowId,
|
|
2030
|
+
name: config.name,
|
|
2031
|
+
status: config.status,
|
|
2032
|
+
invalidReason: config.invalidReason,
|
|
2033
|
+
startNodeName: config.startNodeName,
|
|
2034
|
+
endNodeName: config.endNodeName,
|
|
2035
|
+
metrics: config.metrics.map((metric) => ({
|
|
2036
|
+
id: metric.id,
|
|
2037
|
+
name: metric.name,
|
|
2038
|
+
type: metric.type,
|
|
2039
|
+
})),
|
|
2040
|
+
datasetSource: config.datasetSource,
|
|
2041
|
+
...(dataTableId !== undefined ? { dataTableId } : {}),
|
|
2042
|
+
};
|
|
2043
|
+
}
|
|
1857
2044
|
async function resolveDataTableByIdOrName(repository, logger, idOrName, options) {
|
|
1858
2045
|
const byId = await repository.findOneBy({ id: idOrName });
|
|
1859
2046
|
if (byId) {
|
|
@@ -1915,6 +2102,42 @@ function wrapResultDataEntries(data) {
|
|
|
1915
2102
|
}
|
|
1916
2103
|
return wrapped;
|
|
1917
2104
|
}
|
|
2105
|
+
const MAX_NODE_ERRORS = 10;
|
|
2106
|
+
function isFailedNodeRun(nodeRun) {
|
|
2107
|
+
return (nodeRun.executionStatus === 'error' ||
|
|
2108
|
+
nodeRun.error !== undefined ||
|
|
2109
|
+
nodeRun.redactedError !== undefined);
|
|
2110
|
+
}
|
|
2111
|
+
function nodeContinuesOnError(node) {
|
|
2112
|
+
return (node?.continueOnFail === true ||
|
|
2113
|
+
node?.onError === 'continueRegularOutput' ||
|
|
2114
|
+
node?.onError === 'continueErrorOutput');
|
|
2115
|
+
}
|
|
2116
|
+
function extractNodeErrors(runData, includeUpstreamDetails, workflowNodes = []) {
|
|
2117
|
+
if (!runData)
|
|
2118
|
+
return [];
|
|
2119
|
+
const nodesByName = new Map(workflowNodes.map((node) => [node.name, node]));
|
|
2120
|
+
const nodeErrors = [];
|
|
2121
|
+
for (const [nodeName, nodeRuns] of Object.entries(runData)) {
|
|
2122
|
+
if (nodeErrors.length >= MAX_NODE_ERRORS)
|
|
2123
|
+
break;
|
|
2124
|
+
if (nodeContinuesOnError(nodesByName.get(nodeName)))
|
|
2125
|
+
continue;
|
|
2126
|
+
const failedRun = nodeRuns.find(isFailedNodeRun);
|
|
2127
|
+
if (!failedRun)
|
|
2128
|
+
continue;
|
|
2129
|
+
const message = failedRun.error
|
|
2130
|
+
? formatExecutionError(failedRun.error, includeUpstreamDetails)
|
|
2131
|
+
: failedRun.redactedError
|
|
2132
|
+
? `${failedRun.redactedError.type} error${failedRun.redactedError.httpCode ? ` (${failedRun.redactedError.httpCode})` : ''}`
|
|
2133
|
+
: undefined;
|
|
2134
|
+
nodeErrors.push({
|
|
2135
|
+
nodeName,
|
|
2136
|
+
...(message ? { message } : {}),
|
|
2137
|
+
});
|
|
2138
|
+
}
|
|
2139
|
+
return nodeErrors;
|
|
2140
|
+
}
|
|
1918
2141
|
async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
1919
2142
|
const execution = await di_1.Container.get(execution_persistence_1.ExecutionPersistence).findSingleExecution(executionId, {
|
|
1920
2143
|
includeData: true,
|
|
@@ -1931,9 +2154,9 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
|
1931
2154
|
? 'waiting'
|
|
1932
2155
|
: 'success';
|
|
1933
2156
|
const resultData = {};
|
|
1934
|
-
const
|
|
2157
|
+
const runData = execution.data?.resultData?.runData;
|
|
2158
|
+
const executedNodeNames = Object.keys(runData ?? {});
|
|
1935
2159
|
if (includeOutputData) {
|
|
1936
|
-
const runData = execution.data?.resultData?.runData;
|
|
1937
2160
|
if (runData) {
|
|
1938
2161
|
for (const [nodeName, nodeRuns] of Object.entries(runData)) {
|
|
1939
2162
|
const lastRun = nodeRuns[nodeRuns.length - 1];
|
|
@@ -1951,6 +2174,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
|
1951
2174
|
}
|
|
1952
2175
|
const error = execution.data?.resultData?.error;
|
|
1953
2176
|
const errorMessage = error ? formatExecutionError(error, includeOutputData) : undefined;
|
|
2177
|
+
const nodeErrors = extractNodeErrors(runData, includeOutputData, execution.workflowData?.nodes);
|
|
1954
2178
|
return {
|
|
1955
2179
|
executionId,
|
|
1956
2180
|
status,
|
|
@@ -1958,6 +2182,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
|
1958
2182
|
? wrapResultDataEntries(truncateResultData(resultData))
|
|
1959
2183
|
: undefined,
|
|
1960
2184
|
executedNodeNames: executedNodeNames.length > 0 ? executedNodeNames : undefined,
|
|
2185
|
+
nodeErrors: nodeErrors.length > 0 ? nodeErrors : undefined,
|
|
1961
2186
|
lastNodeExecuted: execution.data?.resultData?.lastNodeExecuted,
|
|
1962
2187
|
error: errorMessage,
|
|
1963
2188
|
startedAt: execution.startedAt?.toISOString(),
|
|
@@ -2110,7 +2335,7 @@ async function extractExecutionDebugInfo(executionId, includeOutputData = true,
|
|
|
2110
2335
|
nodeTrace.push({
|
|
2111
2336
|
name: nodeName,
|
|
2112
2337
|
type: nodeType,
|
|
2113
|
-
status: lastRun
|
|
2338
|
+
status: isFailedNodeRun(lastRun) ? 'error' : 'success',
|
|
2114
2339
|
startedAt: lastRun.startTime !== undefined ? new Date(lastRun.startTime).toISOString() : undefined,
|
|
2115
2340
|
finishedAt: lastRun.startTime !== undefined && lastRun.executionTime !== undefined
|
|
2116
2341
|
? new Date(lastRun.startTime + lastRun.executionTime).toISOString()
|
|
@@ -2244,4 +2469,9 @@ function toWorkflowDetail(workflow, options) {
|
|
|
2244
2469
|
settings: workflow.settings,
|
|
2245
2470
|
};
|
|
2246
2471
|
}
|
|
2472
|
+
async function toWorkflowDetailWithChecksum(workflow, options) {
|
|
2473
|
+
const detail = toWorkflowDetail(workflow, options);
|
|
2474
|
+
detail.checksum = await (0, n8n_workflow_1.calculateWorkflowChecksum)(workflow);
|
|
2475
|
+
return detail;
|
|
2476
|
+
}
|
|
2247
2477
|
//# sourceMappingURL=instance-ai.adapter.service.js.map
|