n8n 2.30.4 → 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/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 +264 -29
- 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/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.js +2 -2
- package/dist/telemetry/index.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 +43 -38
- 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
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { InstanceAiContext, ExecutionResult, ExecutionDebugInfo, NodeOutputResult, ServiceProxyConfig } from '@n8n/instance-ai';
|
|
1
|
+
import type { InstanceAiContext, ExecutionResult, ExecutionDebugInfo, NodeOutputResult, ServiceProxyConfig, EvaluationConfigSummary, UpsertEvaluationConfigInput } from '@n8n/instance-ai';
|
|
2
2
|
import { GlobalConfig } from '@n8n/config';
|
|
3
|
-
import type { User } from '@n8n/db';
|
|
3
|
+
import type { User, EvaluationConfig } from '@n8n/db';
|
|
4
4
|
import { InstanceAiSettingsService } from './instance-ai-settings.service';
|
|
5
|
+
import { WorkflowTemplatesService } from './workflow-templates.service';
|
|
5
6
|
import { AiBuilderTemporaryWorkflowRepository, ExecutionRepository, ProjectRepository, SharedWorkflowRepository, WorkflowRepository } from '@n8n/db';
|
|
6
7
|
import { Logger } from '@n8n/backend-common';
|
|
7
8
|
import { OutboundHttp, SsrfProtectionService } from '@n8n/backend-network';
|
|
@@ -9,6 +10,7 @@ import { type ExecutionError } from 'n8n-workflow';
|
|
|
9
10
|
import { ActiveExecutions } from '../../active-executions';
|
|
10
11
|
import { CredentialsFinderService } from '../../credentials/credentials-finder.service';
|
|
11
12
|
import { CredentialsService } from '../../credentials/credentials.service';
|
|
13
|
+
import { EvaluationConfigService } from '../../evaluation.ee/evaluation-config.service';
|
|
12
14
|
import { EventService } from '../../events/event.service';
|
|
13
15
|
import { ExecutionPersistence } from '../../executions/execution-persistence';
|
|
14
16
|
import { License } from '../../license';
|
|
@@ -65,28 +67,37 @@ export declare class InstanceAiAdapterService {
|
|
|
65
67
|
private readonly ssrfProtectionService;
|
|
66
68
|
private readonly outboundHttp;
|
|
67
69
|
private readonly aiGatewayService;
|
|
70
|
+
private readonly workflowTemplatesService;
|
|
68
71
|
private readonly nodeCatalogService?;
|
|
72
|
+
private readonly evaluationConfigService?;
|
|
69
73
|
private readonly logger;
|
|
70
74
|
private readonly allowSendingParameterValues;
|
|
71
75
|
private nodesCache;
|
|
72
76
|
private readonly NODES_CACHE_TTL_MS;
|
|
73
77
|
private templatesService;
|
|
74
78
|
private getNodesFromCache;
|
|
75
|
-
constructor(logger: Logger, globalConfig: GlobalConfig, workflowService: WorkflowService, workflowFinderService: WorkflowFinderService, workflowRepository: WorkflowRepository, sharedWorkflowRepository: SharedWorkflowRepository, projectRepository: ProjectRepository, executionRepository: ExecutionRepository, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, activeExecutions: ActiveExecutions, workflowRunner: WorkflowRunner, loadNodesAndCredentials: LoadNodesAndCredentials, nodeTypes: NodeTypes, instanceSettings: InstanceSettings, dataTableService: DataTableService, dataTableRepository: DataTableRepository, nodeResourceExplorerService: NodeResourceExplorerService, folderService: FolderService, projectService: ProjectService, tagService: TagService, sourceControlPreferencesService: SourceControlPreferencesService, settingsService: InstanceAiSettingsService, workflowHistoryService: WorkflowHistoryService, enterpriseWorkflowService: EnterpriseWorkflowService, license: License, executionPersistence: ExecutionPersistence, eventService: EventService, roleService: RoleService, telemetry: Telemetry, aiBuilderTemporaryWorkflowRepository: AiBuilderTemporaryWorkflowRepository, ssrfProtectionService: SsrfProtectionService, outboundHttp: OutboundHttp, aiGatewayService: AiGatewayService, nodeCatalogService?: NodeCatalogService | undefined);
|
|
79
|
+
constructor(logger: Logger, globalConfig: GlobalConfig, workflowService: WorkflowService, workflowFinderService: WorkflowFinderService, workflowRepository: WorkflowRepository, sharedWorkflowRepository: SharedWorkflowRepository, projectRepository: ProjectRepository, executionRepository: ExecutionRepository, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, activeExecutions: ActiveExecutions, workflowRunner: WorkflowRunner, loadNodesAndCredentials: LoadNodesAndCredentials, nodeTypes: NodeTypes, instanceSettings: InstanceSettings, dataTableService: DataTableService, dataTableRepository: DataTableRepository, nodeResourceExplorerService: NodeResourceExplorerService, folderService: FolderService, projectService: ProjectService, tagService: TagService, sourceControlPreferencesService: SourceControlPreferencesService, settingsService: InstanceAiSettingsService, workflowHistoryService: WorkflowHistoryService, enterpriseWorkflowService: EnterpriseWorkflowService, license: License, executionPersistence: ExecutionPersistence, eventService: EventService, roleService: RoleService, telemetry: Telemetry, aiBuilderTemporaryWorkflowRepository: AiBuilderTemporaryWorkflowRepository, ssrfProtectionService: SsrfProtectionService, outboundHttp: OutboundHttp, aiGatewayService: AiGatewayService, workflowTemplatesService: WorkflowTemplatesService, nodeCatalogService?: NodeCatalogService | undefined, evaluationConfigService?: EvaluationConfigService | undefined);
|
|
76
80
|
createContext(user: User, options?: {
|
|
77
81
|
searchProxyConfig?: ServiceProxyConfig;
|
|
78
82
|
pushRef?: string;
|
|
79
83
|
threadId?: string;
|
|
80
84
|
projectId?: string;
|
|
81
85
|
credentialIdAllowlist?: string[];
|
|
86
|
+
agentId?: string;
|
|
82
87
|
}): InstanceAiContext;
|
|
88
|
+
private getBuilderDelegateAdapter;
|
|
89
|
+
private getGatewayConfigOrNull;
|
|
90
|
+
private buildAiGatewayNodeMeta;
|
|
83
91
|
private getTemplatesService;
|
|
92
|
+
private createWorkflowTemplateAdapter;
|
|
84
93
|
private buildLicenseHints;
|
|
94
|
+
private trackGatewayAvailability;
|
|
85
95
|
private assertInstanceNotReadOnly;
|
|
86
96
|
private createProjectScopeHelpers;
|
|
87
97
|
private createWorkflowAdapter;
|
|
88
98
|
private createExecutionAdapter;
|
|
89
99
|
private createCredentialAdapter;
|
|
100
|
+
private createEvaluationConfigAdapter;
|
|
90
101
|
private createDataTableAdapter;
|
|
91
102
|
private readonly webResearchCache;
|
|
92
103
|
private readonly searchCache;
|
|
@@ -124,6 +135,81 @@ export type ResolveDataTableResult = {
|
|
|
124
135
|
kind: 'ambiguous';
|
|
125
136
|
candidates: DataTableRecord[];
|
|
126
137
|
};
|
|
138
|
+
export declare function buildEvaluationConfigDto(input: UpsertEvaluationConfigInput): {
|
|
139
|
+
name: string;
|
|
140
|
+
startNodeName: string;
|
|
141
|
+
endNodeName: string;
|
|
142
|
+
metrics: ({
|
|
143
|
+
type: "expression";
|
|
144
|
+
id: string;
|
|
145
|
+
name: string;
|
|
146
|
+
config: {
|
|
147
|
+
expression: string;
|
|
148
|
+
outputType: "boolean" | "numeric";
|
|
149
|
+
};
|
|
150
|
+
} | {
|
|
151
|
+
type: "llm_judge";
|
|
152
|
+
id: string;
|
|
153
|
+
name: string;
|
|
154
|
+
config: {
|
|
155
|
+
provider: string;
|
|
156
|
+
credentialId: string;
|
|
157
|
+
model: string;
|
|
158
|
+
outputType: "boolean" | "numeric";
|
|
159
|
+
preset: "correctness" | "helpfulness";
|
|
160
|
+
inputs: {
|
|
161
|
+
actualAnswer: string;
|
|
162
|
+
userQuery?: string | undefined;
|
|
163
|
+
expectedAnswer?: string | undefined;
|
|
164
|
+
};
|
|
165
|
+
prompt?: string | undefined;
|
|
166
|
+
};
|
|
167
|
+
} | {
|
|
168
|
+
type: "string_similarity";
|
|
169
|
+
id: string;
|
|
170
|
+
name: string;
|
|
171
|
+
config: {
|
|
172
|
+
inputs: {
|
|
173
|
+
actualAnswer: string;
|
|
174
|
+
expectedAnswer: string;
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
} | {
|
|
178
|
+
type: "categorization";
|
|
179
|
+
id: string;
|
|
180
|
+
name: string;
|
|
181
|
+
config: {
|
|
182
|
+
inputs: {
|
|
183
|
+
actualAnswer: string;
|
|
184
|
+
expectedAnswer: string;
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
} | {
|
|
188
|
+
type: "tools_used";
|
|
189
|
+
id: string;
|
|
190
|
+
name: string;
|
|
191
|
+
config: {
|
|
192
|
+
inputs: {
|
|
193
|
+
expectedTools: string;
|
|
194
|
+
intermediateSteps: string;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
})[];
|
|
198
|
+
} & ({
|
|
199
|
+
datasetSource: "data_table";
|
|
200
|
+
datasetRef: {
|
|
201
|
+
dataTableId: string;
|
|
202
|
+
};
|
|
203
|
+
} | {
|
|
204
|
+
datasetSource: "google_sheets";
|
|
205
|
+
datasetRef: {
|
|
206
|
+
credentialId: string;
|
|
207
|
+
spreadsheetId: string;
|
|
208
|
+
sheetName: string;
|
|
209
|
+
headerRow?: number | undefined;
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
export declare function evaluationConfigToSummary(config: EvaluationConfig): EvaluationConfigSummary;
|
|
127
213
|
export declare function resolveDataTableByIdOrName(repository: DataTableIdOrNameRepository, logger: DataTableResolverLogger, idOrName: string, options?: {
|
|
128
214
|
projectIdFilter?: string;
|
|
129
215
|
accessFilter?: (id: string) => Promise<boolean>;
|
|
@@ -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;
|
|
@@ -863,7 +948,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
863
948
|
};
|
|
864
949
|
}
|
|
865
950
|
createCredentialAdapter(user, boundProjectId, credentialIdAllowlist) {
|
|
866
|
-
const { credentialsService, credentialsFinderService, loadNodesAndCredentials
|
|
951
|
+
const { credentialsService, credentialsFinderService, loadNodesAndCredentials } = this;
|
|
952
|
+
const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
|
|
867
953
|
const adapter = {
|
|
868
954
|
async list(options) {
|
|
869
955
|
if (boundProjectId) {
|
|
@@ -1108,13 +1194,12 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1108
1194
|
}
|
|
1109
1195
|
},
|
|
1110
1196
|
async isAiGatewayCredentialType(credType) {
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
}
|
|
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 ?? [];
|
|
1118
1203
|
},
|
|
1119
1204
|
};
|
|
1120
1205
|
if (!credentialIdAllowlist)
|
|
@@ -1125,6 +1210,46 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1125
1210
|
list: async (options) => allowed.size === 0 ? [] : (await adapter.list(options)).filter((c) => allowed.has(c.id)),
|
|
1126
1211
|
};
|
|
1127
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
|
+
}
|
|
1128
1253
|
createDataTableAdapter(user, boundProjectId) {
|
|
1129
1254
|
const { dataTableService, dataTableRepository } = this;
|
|
1130
1255
|
const assertNotReadOnly = () => this.assertInstanceNotReadOnly('data tables');
|
|
@@ -1386,6 +1511,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1386
1511
|
}
|
|
1387
1512
|
createNodeAdapter(user) {
|
|
1388
1513
|
const getNodes = async () => await this.getNodesFromCache();
|
|
1514
|
+
const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
|
|
1515
|
+
const buildMeta = (config, nodeName) => this.buildAiGatewayNodeMeta(config, nodeName);
|
|
1389
1516
|
const findNodeByVersion = (nodes, nodeType, version) => {
|
|
1390
1517
|
if (version !== undefined) {
|
|
1391
1518
|
const exact = nodes.find((n) => {
|
|
@@ -1402,24 +1529,34 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1402
1529
|
};
|
|
1403
1530
|
return {
|
|
1404
1531
|
async listAvailable(options) {
|
|
1405
|
-
const nodes = await
|
|
1532
|
+
const [nodes, gatewayConfig] = await Promise.all([
|
|
1533
|
+
getNodes(),
|
|
1534
|
+
options?.n8nConnectOnly ? getGatewayConfig() : Promise.resolve(null),
|
|
1535
|
+
]);
|
|
1406
1536
|
let filtered = nodes;
|
|
1407
1537
|
if (options?.query) {
|
|
1408
1538
|
const q = options.query.toLowerCase();
|
|
1409
|
-
filtered =
|
|
1539
|
+
filtered = filtered.filter((n) => n.displayName.toLowerCase().includes(q) ||
|
|
1410
1540
|
n.name.toLowerCase().includes(q) ||
|
|
1411
1541
|
n.description?.toLowerCase().includes(q));
|
|
1412
1542
|
}
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
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;
|
|
1420
1557
|
},
|
|
1421
1558
|
async listSearchable() {
|
|
1422
|
-
const nodes = await getNodes();
|
|
1559
|
+
const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
|
|
1423
1560
|
const toStringArray = (value) => {
|
|
1424
1561
|
if (typeof value === 'string')
|
|
1425
1562
|
return value;
|
|
@@ -1434,6 +1571,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1434
1571
|
inputs: toStringArray(n.inputs),
|
|
1435
1572
|
outputs: toStringArray(n.outputs),
|
|
1436
1573
|
};
|
|
1574
|
+
const meta = buildMeta(gatewayConfig, n.name);
|
|
1575
|
+
if (meta)
|
|
1576
|
+
result.aiGateway = meta;
|
|
1437
1577
|
if (n.codex?.alias) {
|
|
1438
1578
|
result.codex = { alias: n.codex.alias };
|
|
1439
1579
|
}
|
|
@@ -1471,7 +1611,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1471
1611
|
});
|
|
1472
1612
|
},
|
|
1473
1613
|
async getDescription(nodeType, version) {
|
|
1474
|
-
const nodes = await getNodes();
|
|
1614
|
+
const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
|
|
1475
1615
|
let desc = version !== undefined
|
|
1476
1616
|
? nodes.find((n) => {
|
|
1477
1617
|
if (n.name !== nodeType)
|
|
@@ -1487,6 +1627,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1487
1627
|
if (!desc) {
|
|
1488
1628
|
throw new Error(`Node type ${nodeType} not found`);
|
|
1489
1629
|
}
|
|
1630
|
+
const meta = buildMeta(gatewayConfig, desc.name);
|
|
1490
1631
|
return {
|
|
1491
1632
|
name: desc.name,
|
|
1492
1633
|
displayName: desc.displayName,
|
|
@@ -1521,6 +1662,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
|
|
|
1521
1662
|
...(desc.webhooks ? { webhooks: desc.webhooks } : {}),
|
|
1522
1663
|
...(desc.polling ? { polling: desc.polling } : {}),
|
|
1523
1664
|
...(desc.triggerPanel !== undefined ? { triggerPanel: desc.triggerPanel } : {}),
|
|
1665
|
+
...(meta ? { aiGateway: meta } : {}),
|
|
1524
1666
|
};
|
|
1525
1667
|
},
|
|
1526
1668
|
getNodeTypeDefinition: async (nodeType, options) => {
|
|
@@ -1845,10 +1987,60 @@ exports.InstanceAiAdapterService = InstanceAiAdapterService = __decorate([
|
|
|
1845
1987
|
backend_network_1.SsrfProtectionService,
|
|
1846
1988
|
backend_network_1.OutboundHttp,
|
|
1847
1989
|
ai_gateway_service_1.AiGatewayService,
|
|
1848
|
-
|
|
1990
|
+
workflow_templates_service_1.WorkflowTemplatesService,
|
|
1991
|
+
node_catalog_1.NodeCatalogService,
|
|
1992
|
+
evaluation_config_service_1.EvaluationConfigService])
|
|
1849
1993
|
], InstanceAiAdapterService);
|
|
1850
1994
|
const MAX_RESULT_CHARS = 20_000;
|
|
1851
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
|
+
}
|
|
1852
2044
|
async function resolveDataTableByIdOrName(repository, logger, idOrName, options) {
|
|
1853
2045
|
const byId = await repository.findOneBy({ id: idOrName });
|
|
1854
2046
|
if (byId) {
|
|
@@ -1910,6 +2102,42 @@ function wrapResultDataEntries(data) {
|
|
|
1910
2102
|
}
|
|
1911
2103
|
return wrapped;
|
|
1912
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
|
+
}
|
|
1913
2141
|
async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
1914
2142
|
const execution = await di_1.Container.get(execution_persistence_1.ExecutionPersistence).findSingleExecution(executionId, {
|
|
1915
2143
|
includeData: true,
|
|
@@ -1926,9 +2154,9 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
|
1926
2154
|
? 'waiting'
|
|
1927
2155
|
: 'success';
|
|
1928
2156
|
const resultData = {};
|
|
1929
|
-
const
|
|
2157
|
+
const runData = execution.data?.resultData?.runData;
|
|
2158
|
+
const executedNodeNames = Object.keys(runData ?? {});
|
|
1930
2159
|
if (includeOutputData) {
|
|
1931
|
-
const runData = execution.data?.resultData?.runData;
|
|
1932
2160
|
if (runData) {
|
|
1933
2161
|
for (const [nodeName, nodeRuns] of Object.entries(runData)) {
|
|
1934
2162
|
const lastRun = nodeRuns[nodeRuns.length - 1];
|
|
@@ -1946,6 +2174,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
|
1946
2174
|
}
|
|
1947
2175
|
const error = execution.data?.resultData?.error;
|
|
1948
2176
|
const errorMessage = error ? formatExecutionError(error, includeOutputData) : undefined;
|
|
2177
|
+
const nodeErrors = extractNodeErrors(runData, includeOutputData, execution.workflowData?.nodes);
|
|
1949
2178
|
return {
|
|
1950
2179
|
executionId,
|
|
1951
2180
|
status,
|
|
@@ -1953,6 +2182,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
|
|
|
1953
2182
|
? wrapResultDataEntries(truncateResultData(resultData))
|
|
1954
2183
|
: undefined,
|
|
1955
2184
|
executedNodeNames: executedNodeNames.length > 0 ? executedNodeNames : undefined,
|
|
2185
|
+
nodeErrors: nodeErrors.length > 0 ? nodeErrors : undefined,
|
|
1956
2186
|
lastNodeExecuted: execution.data?.resultData?.lastNodeExecuted,
|
|
1957
2187
|
error: errorMessage,
|
|
1958
2188
|
startedAt: execution.startedAt?.toISOString(),
|
|
@@ -2105,7 +2335,7 @@ async function extractExecutionDebugInfo(executionId, includeOutputData = true,
|
|
|
2105
2335
|
nodeTrace.push({
|
|
2106
2336
|
name: nodeName,
|
|
2107
2337
|
type: nodeType,
|
|
2108
|
-
status: lastRun
|
|
2338
|
+
status: isFailedNodeRun(lastRun) ? 'error' : 'success',
|
|
2109
2339
|
startedAt: lastRun.startTime !== undefined ? new Date(lastRun.startTime).toISOString() : undefined,
|
|
2110
2340
|
finishedAt: lastRun.startTime !== undefined && lastRun.executionTime !== undefined
|
|
2111
2341
|
? new Date(lastRun.startTime + lastRun.executionTime).toISOString()
|
|
@@ -2239,4 +2469,9 @@ function toWorkflowDetail(workflow, options) {
|
|
|
2239
2469
|
settings: workflow.settings,
|
|
2240
2470
|
};
|
|
2241
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
|
+
}
|
|
2242
2477
|
//# sourceMappingURL=instance-ai.adapter.service.js.map
|