n8n 2.32.4 → 2.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/active-workflow-manager.d.ts +4 -1
- package/dist/active-workflow-manager.js +18 -16
- package/dist/active-workflow-manager.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/collaboration/collaboration.service.d.ts +1 -0
- package/dist/collaboration/collaboration.service.js +12 -1
- package/dist/collaboration/collaboration.service.js.map +1 -1
- package/dist/commands/base-command.d.ts +3 -2
- package/dist/commands/base-command.js +31 -23
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/db/revert.js.map +1 -1
- package/dist/commands/import/credentials.d.ts +1 -1
- package/dist/commands/import/credentials.js +91 -25
- package/dist/commands/import/credentials.js.map +1 -1
- package/dist/commands/ldap/reset.js.map +1 -1
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.js +3 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/user-management/reset.js +1 -5
- package/dist/commands/user-management/reset.js.map +1 -1
- package/dist/commands/webhook.d.ts +1 -0
- package/dist/commands/webhook.js +1 -1
- package/dist/commands/webhook.js.map +1 -1
- package/dist/commands/worker.d.ts +1 -0
- package/dist/commands/worker.js +1 -1
- package/dist/commands/worker.js.map +1 -1
- package/dist/constants.js +19 -0
- package/dist/constants.js.map +1 -1
- package/dist/controllers/ai.controller.d.ts +4 -5
- package/dist/controllers/ai.controller.js +5 -22
- package/dist/controllers/ai.controller.js.map +1 -1
- package/dist/controllers/e2e.controller.d.ts +15 -2
- package/dist/controllers/e2e.controller.js +25 -2
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/oauth/oauth2-credential.controller.js +5 -1
- package/dist/controllers/oauth/oauth2-credential.controller.js.map +1 -1
- package/dist/controllers/project.controller.js.map +1 -1
- package/dist/controllers/role.controller.d.ts +2 -2
- package/dist/controllers/role.controller.js +4 -3
- package/dist/controllers/role.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +5 -0
- package/dist/controllers/users.controller.js +1 -0
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
- package/dist/credentials/credential-dependency.service.js.map +1 -1
- package/dist/credentials/credentials-finder.service.d.ts +7 -2
- package/dist/credentials/credentials-finder.service.js +33 -8
- package/dist/credentials/credentials-finder.service.js.map +1 -1
- package/dist/credentials/credentials.controller.d.ts +6 -0
- package/dist/credentials/credentials.controller.js +44 -5
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +38 -5
- package/dist/credentials/credentials.service.ee.d.ts +4 -2
- package/dist/credentials/credentials.service.ee.js +8 -7
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +227 -21
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/credentials/instance-credential-broker.d.ts +24 -0
- package/dist/credentials/instance-credential-broker.js +80 -0
- package/dist/credentials/instance-credential-broker.js.map +1 -0
- package/dist/credentials/instance-credential-use.registry.d.ts +14 -0
- package/dist/credentials/instance-credential-use.registry.js +43 -0
- package/dist/credentials/instance-credential-use.registry.js.map +1 -0
- package/dist/credentials-helper.js +4 -0
- package/dist/credentials-helper.js.map +1 -1
- package/dist/credentials-overwrites.js +2 -1
- package/dist/credentials-overwrites.js.map +1 -1
- package/dist/errors/response-errors/workflow-deactivation-bad-request.error.d.ts +9 -0
- package/dist/errors/response-errors/workflow-deactivation-bad-request.error.js +13 -0
- package/dist/errors/response-errors/workflow-deactivation-bad-request.error.js.map +1 -0
- package/dist/evaluation.ee/evaluation-collection.service.d.ts +12 -2
- package/dist/evaluation.ee/evaluation-collection.service.js +132 -20
- package/dist/evaluation.ee/evaluation-collection.service.js.map +1 -1
- package/dist/evaluation.ee/evaluation-collections.controller.ee.d.ts +12 -0
- package/dist/evaluation.ee/evaluation-collections.controller.ee.js +12 -0
- package/dist/evaluation.ee/evaluation-collections.controller.ee.js.map +1 -1
- package/dist/evaluation.ee/insights/eval-insights.service.d.ts +11 -4
- package/dist/evaluation.ee/insights/eval-insights.service.js +136 -30
- package/dist/evaluation.ee/insights/eval-insights.service.js.map +1 -1
- package/dist/evaluation.ee/insights/insights-context-builder.d.ts +59 -0
- package/dist/evaluation.ee/insights/insights-context-builder.js +179 -0
- package/dist/evaluation.ee/insights/insights-context-builder.js.map +1 -0
- package/dist/evaluation.ee/insights/insights-model-resolver.d.ts +16 -0
- package/dist/evaluation.ee/insights/insights-model-resolver.js +65 -0
- package/dist/evaluation.ee/insights/insights-model-resolver.js.map +1 -0
- package/dist/evaluation.ee/metric-scales.d.ts +4 -0
- package/dist/evaluation.ee/metric-scales.js +13 -0
- package/dist/evaluation.ee/metric-scales.js.map +1 -0
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.d.ts +5 -0
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js +40 -4
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js.map +1 -1
- package/dist/evaluation.ee/test-runner/workflow-compiler.service.d.ts +6 -1
- package/dist/evaluation.ee/test-runner/workflow-compiler.service.js +53 -4
- package/dist/evaluation.ee/test-runner/workflow-compiler.service.js.map +1 -1
- package/dist/evaluation.ee/test-runs.controller.ee.d.ts +4 -2
- package/dist/evaluation.ee/test-runs.controller.ee.js +26 -6
- package/dist/evaluation.ee/test-runs.controller.ee.js.map +1 -1
- package/dist/eventbus/message-event-bus/message-event-bus.js.map +1 -1
- package/dist/events/maps/workflow-publication-metrics.event-map.d.ts +2 -0
- package/dist/events/relays/telemetry.event-relay.js +5 -0
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/executions/execution-data/execution-data-json-store.d.ts +6 -4
- package/dist/executions/execution-data/execution-data-json-store.js +17 -5
- package/dist/executions/execution-data/execution-data-json-store.js.map +1 -1
- package/dist/executions/pre-execution-checks/credentials-permission-checker.d.ts +1 -0
- package/dist/executions/pre-execution-checks/credentials-permission-checker.js +17 -5
- package/dist/executions/pre-execution-checks/credentials-permission-checker.js.map +1 -1
- package/dist/external-hooks.d.ts +18 -9
- package/dist/external-hooks.js +13 -0
- package/dist/external-hooks.js.map +1 -1
- package/dist/license.d.ts +2 -0
- package/dist/license.js +13 -1
- package/dist/license.js.map +1 -1
- package/dist/metrics/prometheus/workflow-info-metrics.service.d.ts +4 -1
- package/dist/metrics/prometheus/workflow-info-metrics.service.js +27 -8
- package/dist/metrics/prometheus/workflow-info-metrics.service.js.map +1 -1
- package/dist/metrics/prometheus/workflow-publication-metrics.service.js +11 -1
- package/dist/metrics/prometheus/workflow-publication-metrics.service.js.map +1 -1
- package/dist/modules/agents/agent-chat.controller.js +10 -2
- package/dist/modules/agents/agent-chat.controller.js.map +1 -1
- package/dist/modules/agents/agent-config.service.js +1 -1
- package/dist/modules/agents/agent-config.service.js.map +1 -1
- package/dist/modules/agents/agent-execution-orchestrator.service.d.ts +7 -1
- package/dist/modules/agents/agent-execution-orchestrator.service.js +84 -43
- package/dist/modules/agents/agent-execution-orchestrator.service.js.map +1 -1
- package/dist/modules/agents/agent-execution.service.d.ts +12 -1
- package/dist/modules/agents/agent-execution.service.js +82 -7
- package/dist/modules/agents/agent-execution.service.js.map +1 -1
- package/dist/modules/agents/agent-integration-persistence.service.js +2 -2
- package/dist/modules/agents/agent-integration-persistence.service.js.map +1 -1
- package/dist/modules/agents/agent-integrations.controller.js +4 -2
- package/dist/modules/agents/agent-integrations.controller.js.map +1 -1
- package/dist/modules/agents/agent-knowledge-sandbox.service.js +5 -3
- package/dist/modules/agents/agent-knowledge-sandbox.service.js.map +1 -1
- package/dist/modules/agents/agent-knowledge.service.d.ts +0 -1
- package/dist/modules/agents/agent-knowledge.service.js +2 -9
- package/dist/modules/agents/agent-knowledge.service.js.map +1 -1
- package/dist/modules/agents/agent-model-catalog.service.js +1 -1
- package/dist/modules/agents/agent-model-catalog.service.js.map +1 -1
- package/dist/modules/agents/agent-publish.controller.js +2 -2
- package/dist/modules/agents/agent-publish.controller.js.map +1 -1
- package/dist/modules/agents/agent-publish.service.d.ts +7 -3
- package/dist/modules/agents/agent-publish.service.js +31 -8
- package/dist/modules/agents/agent-publish.service.js.map +1 -1
- package/dist/modules/agents/agent-run-tracing.service.d.ts +30 -0
- package/dist/modules/agents/agent-run-tracing.service.js +63 -0
- package/dist/modules/agents/agent-run-tracing.service.js.map +1 -0
- package/dist/modules/agents/agent-runtime-instrumentation.d.ts +26 -0
- package/dist/{blob-storage/types.js → modules/agents/agent-runtime-instrumentation.js} +1 -1
- package/dist/modules/agents/agent-runtime-instrumentation.js.map +1 -0
- package/dist/modules/agents/agent-runtime-reconstruction.service.d.ts +3 -1
- package/dist/modules/agents/agent-runtime-reconstruction.service.js +31 -8
- package/dist/modules/agents/agent-runtime-reconstruction.service.js.map +1 -1
- package/dist/modules/agents/agent-sse-stream.js +31 -6
- package/dist/modules/agents/agent-sse-stream.js.map +1 -1
- package/dist/modules/agents/agent-validation.service.d.ts +2 -1
- package/dist/modules/agents/agent-validation.service.js +21 -6
- package/dist/modules/agents/agent-validation.service.js.map +1 -1
- package/dist/modules/agents/agent-workflow-execution.service.d.ts +5 -3
- package/dist/modules/agents/agent-workflow-execution.service.js +31 -9
- package/dist/modules/agents/agent-workflow-execution.service.js.map +1 -1
- package/dist/modules/agents/agents-tools.service.js +12 -0
- package/dist/modules/agents/agents-tools.service.js.map +1 -1
- package/dist/modules/agents/agents.module.js +13 -0
- package/dist/modules/agents/agents.module.js.map +1 -1
- package/dist/modules/agents/agents.service.d.ts +3 -1
- package/dist/modules/agents/agents.service.js +5 -2
- package/dist/modules/agents/agents.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-model-recommendations.js +6 -4
- package/dist/modules/agents/builder/agents-builder-model-recommendations.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-prompts.d.ts +5 -4
- package/dist/modules/agents/builder/agents-builder-prompts.js +109 -34
- package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +16 -2
- package/dist/modules/agents/builder/agents-builder-tools.service.js +201 -39
- package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder.service.js +7 -2
- package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
- package/dist/modules/agents/builder/builder-config-telemetry.d.ts +12 -0
- package/dist/modules/agents/builder/builder-config-telemetry.js +67 -0
- package/dist/modules/agents/builder/builder-config-telemetry.js.map +1 -0
- package/dist/modules/agents/builder/builder-tool-names.d.ts +2 -0
- package/dist/modules/agents/builder/builder-tool-names.js +2 -0
- package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-credential.tool.d.ts +3 -0
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js +35 -7
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-questions.tool.d.ts +4 -1
- package/dist/modules/agents/builder/interactive/ask-questions.tool.js +13 -1
- package/dist/modules/agents/builder/interactive/ask-questions.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/configure-channel.tool.d.ts +2 -0
- package/dist/modules/agents/builder/interactive/configure-channel.tool.js +7 -1
- package/dist/modules/agents/builder/interactive/configure-channel.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/finish-setup.tool.d.ts +17 -0
- package/dist/modules/agents/builder/interactive/finish-setup.tool.js +316 -0
- package/dist/modules/agents/builder/interactive/finish-setup.tool.js.map +1 -0
- package/dist/modules/agents/builder/interactive/index.d.ts +1 -0
- package/dist/modules/agents/builder/interactive/index.js +3 -1
- package/dist/modules/agents/builder/interactive/index.js.map +1 -1
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.d.ts +8 -0
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +87 -6
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
- package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +6 -5
- package/dist/modules/agents/builder/prompts/config-mutation.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/config-rules.prompt.js +6 -5
- package/dist/modules/agents/builder/prompts/config-rules.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/initial-build.prompt.d.ts +2 -0
- package/dist/modules/agents/builder/prompts/initial-build.prompt.js +56 -0
- package/dist/modules/agents/builder/prompts/initial-build.prompt.js.map +1 -0
- package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +6 -3
- 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 +2 -2
- package/dist/modules/agents/builder/prompts/memory.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/planner-todos.prompt.d.ts +2 -0
- package/dist/modules/agents/builder/prompts/planner-todos.prompt.js +22 -0
- package/dist/modules/agents/builder/prompts/planner-todos.prompt.js.map +1 -0
- package/dist/modules/agents/builder/prompts/tools.prompt.d.ts +1 -1
- package/dist/modules/agents/builder/prompts/tools.prompt.js +12 -12
- package/dist/modules/agents/builder/resolve-integration.tool.js +1 -1
- package/dist/modules/agents/builder/resolve-integration.tool.js.map +1 -1
- package/dist/modules/agents/builder/skills/external-services.skill.d.ts +2 -0
- package/dist/modules/agents/builder/skills/external-services.skill.js +361 -0
- package/dist/modules/agents/builder/skills/external-services.skill.js.map +1 -0
- package/dist/modules/agents/builder/skills/index.js +2 -6
- package/dist/modules/agents/builder/skills/index.js.map +1 -1
- package/dist/modules/agents/builder/skills/memory.skill.js +2 -1
- package/dist/modules/agents/builder/skills/memory.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/resource-locators.skill.js +17 -3
- package/dist/modules/agents/builder/skills/resource-locators.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-skills.skill.js +12 -9
- package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-tasks.skill.js +14 -10
- package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
- package/dist/modules/agents/builder/verify-mcp-server.tool.d.ts +4 -0
- package/dist/modules/agents/builder/verify-mcp-server.tool.js +33 -7
- package/dist/modules/agents/builder/verify-mcp-server.tool.js.map +1 -1
- package/dist/modules/agents/entities/agent-execution.entity.d.ts +2 -1
- package/dist/modules/agents/entities/agent-execution.entity.js +4 -0
- package/dist/modules/agents/entities/agent-execution.entity.js.map +1 -1
- package/dist/modules/agents/execution-log/agent-execution-log-store.d.ts +17 -0
- package/dist/modules/agents/execution-log/agent-execution-log-store.js +58 -0
- package/dist/modules/agents/execution-log/agent-execution-log-store.js.map +1 -0
- package/dist/modules/agents/execution-log/agent-execution-log-write.error.d.ts +5 -0
- package/dist/modules/agents/execution-log/agent-execution-log-write.error.js +11 -0
- package/dist/modules/agents/execution-log/agent-execution-log-write.error.js.map +1 -0
- package/dist/modules/agents/execution-log/corrupted-agent-execution-log.error.d.ts +5 -0
- package/dist/modules/agents/execution-log/corrupted-agent-execution-log.error.js +11 -0
- package/dist/modules/agents/execution-log/corrupted-agent-execution-log.error.js.map +1 -0
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +1 -1
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +4 -2
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-bridge.js +8 -4
- package/dist/modules/agents/integrations/agent-chat-bridge.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-stream-consumer.d.ts +4 -2
- package/dist/modules/agents/integrations/agent-chat-stream-consumer.js +62 -6
- package/dist/modules/agents/integrations/agent-chat-stream-consumer.js.map +1 -1
- package/dist/modules/agents/integrations/integration-tool-factory.d.ts +7 -7
- package/dist/modules/agents/integrations/integration-tool-factory.js +13 -10
- package/dist/modules/agents/integrations/integration-tool-factory.js.map +1 -1
- package/dist/modules/agents/integrations/integration-tool-schema.d.ts +7 -7
- package/dist/modules/agents/integrations/integration-tool-schema.js +7 -7
- package/dist/modules/agents/integrations/integration-tool-schema.js.map +1 -1
- package/dist/modules/agents/integrations/slack-app-setup.service.js +2 -1
- package/dist/modules/agents/integrations/slack-app-setup.service.js.map +1 -1
- package/dist/modules/agents/json-config/from-json-config.d.ts +21 -0
- package/dist/modules/agents/json-config/from-json-config.js +16 -4
- package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
- package/dist/modules/agents/json-config/mcp-client-factory.d.ts +5 -0
- package/dist/modules/agents/json-config/mcp-client-factory.js +7 -1
- package/dist/modules/agents/json-config/mcp-client-factory.js.map +1 -1
- package/dist/modules/agents/json-config/sanitize-unknown-agent-credentials.js +14 -1
- package/dist/modules/agents/json-config/sanitize-unknown-agent-credentials.js.map +1 -1
- package/dist/modules/agents/{builder/interactive/llm-provider-defaults.d.ts → llm-provider-defaults.d.ts} +1 -0
- package/dist/modules/agents/{builder/interactive/llm-provider-defaults.js → llm-provider-defaults.js} +14 -1
- package/dist/modules/agents/llm-provider-defaults.js.map +1 -0
- package/dist/modules/agents/repositories/agent-execution.repository.d.ts +4 -0
- package/dist/modules/agents/repositories/agent-execution.repository.js +31 -0
- package/dist/modules/agents/repositories/agent-execution.repository.js.map +1 -1
- package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js +1 -0
- package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js.map +1 -1
- package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.d.ts +4 -1
- package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.js +7 -1
- package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.js.map +1 -1
- package/dist/modules/agents/tools/node-tool-factory.d.ts +2 -0
- package/dist/modules/agents/tools/node-tool-factory.js +8 -0
- package/dist/modules/agents/tools/node-tool-factory.js.map +1 -1
- package/dist/modules/agents/tools/workflow-tool-factory.d.ts +3 -1
- package/dist/modules/agents/tools/workflow-tool-factory.js +9 -3
- package/dist/modules/agents/tools/workflow-tool-factory.js.map +1 -1
- package/dist/modules/agents/utils/execution-to-message-mapper.js +4 -2
- package/dist/modules/agents/utils/execution-to-message-mapper.js.map +1 -1
- package/dist/modules/agents/utils/node-tool-validation.js +6 -0
- package/dist/modules/agents/utils/node-tool-validation.js.map +1 -1
- package/dist/modules/breaking-changes/rules/index.d.ts +3 -0
- package/dist/modules/breaking-changes/rules/index.js +3 -0
- package/dist/modules/breaking-changes/rules/index.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/chat-trigger-embedded-json.rule.d.ts +10 -0
- package/dist/modules/breaking-changes/rules/v3/chat-trigger-embedded-json.rule.js +58 -0
- package/dist/modules/breaking-changes/rules/v3/chat-trigger-embedded-json.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/removed-nodes-with-replacements.rule.d.ts +239 -0
- package/dist/modules/breaking-changes/rules/v3/removed-nodes-with-replacements.rule.js +445 -0
- package/dist/modules/breaking-changes/rules/v3/removed-nodes-with-replacements.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/removed-nodes.rule.d.ts +11 -0
- package/dist/modules/breaking-changes/rules/v3/removed-nodes.rule.js +61 -0
- package/dist/modules/breaking-changes/rules/v3/removed-nodes.rule.js.map +1 -0
- package/dist/modules/community-packages/installed-nodes.entity.js +1 -1
- package/dist/modules/community-packages/installed-nodes.entity.js.map +1 -1
- package/dist/modules/data-table/data-table-proxy.service.js +13 -0
- package/dist/modules/data-table/data-table-proxy.service.js.map +1 -1
- package/dist/modules/data-table/data-table.controller.js +1 -1
- package/dist/modules/data-table/data-table.controller.js.map +1 -1
- package/dist/modules/data-table/data-table.service.d.ts +1 -1
- package/dist/modules/data-table/data-table.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/database/repositories/dynamic-credential-user-entry.repository.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/agent-execution.service.d.ts +26 -0
- package/dist/modules/instance-ai/eval/agent-execution.service.js +508 -0
- package/dist/modules/instance-ai/eval/agent-execution.service.js.map +1 -0
- package/dist/modules/instance-ai/eval/agent-model-turn-recorder.d.ts +9 -0
- package/dist/modules/instance-ai/eval/agent-model-turn-recorder.js +110 -0
- package/dist/modules/instance-ai/eval/agent-model-turn-recorder.js.map +1 -0
- package/dist/modules/instance-ai/eval/agent-scenario-seed.d.ts +14 -0
- package/dist/modules/instance-ai/eval/agent-scenario-seed.js +98 -0
- package/dist/modules/instance-ai/eval/agent-scenario-seed.js.map +1 -0
- package/dist/modules/instance-ai/eval/execution.service.js +3 -3
- package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/mcp-mock-fetch.d.ts +28 -0
- package/dist/modules/instance-ai/eval/mcp-mock-fetch.js +265 -0
- package/dist/modules/instance-ai/eval/mcp-mock-fetch.js.map +1 -0
- package/dist/modules/instance-ai/eval/mock-utils.d.ts +4 -0
- package/dist/modules/instance-ai/eval/mock-utils.js +41 -0
- package/dist/modules/instance-ai/eval/mock-utils.js.map +1 -0
- package/dist/modules/instance-ai/eval/request-sanitizer.d.ts +1 -0
- package/dist/modules/instance-ai/eval/request-sanitizer.js +26 -0
- package/dist/modules/instance-ai/eval/request-sanitizer.js.map +1 -1
- package/dist/modules/instance-ai/eval/web-search-mock.d.ts +26 -0
- package/dist/modules/instance-ai/eval/web-search-mock.js +122 -0
- package/dist/modules/instance-ai/eval/web-search-mock.js.map +1 -0
- package/dist/modules/instance-ai/event-bus/interrupted-run-sweeper.d.ts +8 -0
- package/dist/modules/instance-ai/event-bus/interrupted-run-sweeper.js +85 -11
- package/dist/modules/instance-ai/event-bus/interrupted-run-sweeper.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-error-reporter.service.js +13 -0
- package/dist/modules/instance-ai/instance-ai-error-reporter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +3 -3
- package/dist/modules/instance-ai/instance-ai-memory.service.js +5 -11
- package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-settings.service.d.ts +42 -14
- package/dist/modules/instance-ai/instance-ai-settings.service.js +650 -174
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-test.controller.js +4 -1
- package/dist/modules/instance-ai/instance-ai-test.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +2 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +26 -2
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.controller.d.ts +14 -6
- package/dist/modules/instance-ai/instance-ai.controller.js +84 -29
- package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.module.js +9 -2
- package/dist/modules/instance-ai/instance-ai.module.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +10 -1
- package/dist/modules/instance-ai/instance-ai.service.js +146 -45
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/mcp/instance-ai-mcp-registry.service.js +1 -1
- package/dist/modules/instance-ai/mcp/instance-ai-mcp-registry.service.js.map +1 -1
- package/dist/modules/instance-ai/repositories/instance-ai-event-log.repository.d.ts +1 -1
- package/dist/modules/instance-ai/repositories/instance-ai-event-log.repository.js +6 -5
- package/dist/modules/instance-ai/repositories/instance-ai-event-log.repository.js.map +1 -1
- package/dist/modules/instance-ai/sandbox/instance-ai-sandbox.service.d.ts +6 -2
- package/dist/modules/instance-ai/sandbox/instance-ai-sandbox.service.js +55 -14
- package/dist/modules/instance-ai/sandbox/instance-ai-sandbox.service.js.map +1 -1
- package/dist/modules/mcp/mcp-protected-resource.d.ts +1 -0
- package/dist/modules/mcp/mcp-protected-resource.js +4 -0
- package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
- package/dist/modules/mcp/mcp-server-middleware.service.js +2 -1
- package/dist/modules/mcp/mcp-server-middleware.service.js.map +1 -1
- package/dist/modules/mcp/mcp.controller.d.ts +3 -1
- package/dist/modules/mcp/mcp.controller.js +15 -11
- package/dist/modules/mcp/mcp.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +7 -2
- package/dist/modules/mcp/mcp.service.js +63 -43
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/mcp.types.d.ts +1 -0
- package/dist/modules/mcp/tools/execution-utils.d.ts +3 -1
- package/dist/modules/mcp/tools/execution-utils.js +6 -4
- package/dist/modules/mcp/tools/execution-utils.js.map +1 -1
- package/dist/modules/mcp/tools/get-workflow-details.tool.d.ts +3 -2
- package/dist/modules/mcp/tools/get-workflow-details.tool.js +6 -6
- package/dist/modules/mcp/tools/get-workflow-details.tool.js.map +1 -1
- package/dist/modules/mcp/tools/get-workflow-version.tool.d.ts +3 -2
- package/dist/modules/mcp/tools/get-workflow-version.tool.js +1 -1
- package/dist/modules/mcp/tools/get-workflow-version.tool.js.map +1 -1
- package/dist/modules/mcp/tools/schemas.d.ts +34 -32
- package/dist/modules/mcp/tools/schemas.js +14 -2
- package/dist/modules/mcp/tools/schemas.js.map +1 -1
- package/dist/modules/mcp/tools/test-workflow.tool.d.ts +4 -1
- package/dist/modules/mcp/tools/test-workflow.tool.js +13 -5
- package/dist/modules/mcp/tools/test-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/webhook-utils.d.ts +3 -3
- package/dist/modules/mcp/tools/webhook-utils.js +17 -6
- package/dist/modules/mcp/tools/webhook-utils.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +4 -1
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +5 -1
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.d.ts +3 -1
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.js +16 -3
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.d.ts +5 -2
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.js +17 -10
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.d.ts +6 -1
- package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.js +8 -2
- package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.d.ts +4 -2
- package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.js +8 -1
- package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.d.ts +280 -2
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +54 -17
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.d.ts +4 -1
- package/dist/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.js +58 -1
- package/dist/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.d.ts +51 -5
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js +414 -233
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js.map +1 -1
- package/dist/modules/mcp-registry/mcp-registry-test.controller.js +2 -2
- package/dist/modules/mcp-registry/mcp-registry-test.controller.js.map +1 -1
- package/dist/modules/mcp-registry/mcp-registry.module.js +1 -1
- package/dist/modules/mcp-registry/mcp-registry.module.js.map +1 -1
- package/dist/modules/n8n-packages/engine/import-orchestrator.d.ts +11 -1
- package/dist/modules/n8n-packages/engine/import-orchestrator.js +36 -7
- package/dist/modules/n8n-packages/engine/import-orchestrator.js.map +1 -1
- package/dist/modules/n8n-packages/engine/import-result.d.ts +3 -2
- package/dist/modules/n8n-packages/engine/import-result.js +2 -1
- package/dist/modules/n8n-packages/engine/import-result.js.map +1 -1
- package/dist/modules/n8n-packages/engine/import-telemetry.d.ts +2 -0
- package/dist/modules/n8n-packages/engine/import-telemetry.js +11 -0
- package/dist/modules/n8n-packages/engine/import-telemetry.js.map +1 -1
- package/dist/modules/n8n-packages/engine/project-package-importer.js +11 -0
- package/dist/modules/n8n-packages/engine/project-package-importer.js.map +1 -1
- package/dist/modules/n8n-packages/engine/workflow-package-importer.js +10 -1
- package/dist/modules/n8n-packages/engine/workflow-package-importer.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/variable/variable-importer.d.ts +9 -0
- package/dist/modules/n8n-packages/entities/variable/variable-importer.js +55 -0
- package/dist/modules/n8n-packages/entities/variable/variable-importer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/variable/variable-missing-mode.d.ts +3 -0
- package/dist/modules/n8n-packages/entities/variable/variable-missing-mode.js +12 -0
- package/dist/modules/n8n-packages/entities/variable/variable-missing-mode.js.map +1 -0
- package/dist/modules/n8n-packages/entities/variable/variable.types.d.ts +14 -0
- package/dist/modules/n8n-packages/entities/variable/variable.types.js +7 -0
- package/dist/modules/n8n-packages/entities/variable/variable.types.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.d.ts +37 -0
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.js +165 -0
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.js.map +1 -0
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow.exporter.d.ts +39 -0
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow.exporter.js +198 -0
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow.exporter.js.map +1 -0
- package/dist/modules/n8n-packages/entities/workflow/missing-node-type-mode.d.ts +7 -0
- package/dist/modules/n8n-packages/entities/workflow/missing-node-type-mode.js +30 -0
- package/dist/modules/n8n-packages/entities/workflow/missing-node-type-mode.js.map +1 -0
- package/dist/modules/n8n-packages/entities/workflow/node-type-usage.d.ts +11 -0
- package/dist/modules/n8n-packages/entities/workflow/node-type-usage.js +27 -0
- package/dist/modules/n8n-packages/entities/workflow/node-type-usage.js.map +1 -0
- package/dist/modules/n8n-packages/entities/workflow/static-sub-workflow-id.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/workflow/static-sub-workflow-id.js +23 -0
- package/dist/modules/n8n-packages/entities/workflow/static-sub-workflow-id.js.map +1 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow-import.types.d.ts +2 -2
- package/dist/modules/n8n-packages/entities/workflow/workflow-importer.js +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-importer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-publisher.d.ts +2 -2
- package/dist/modules/n8n-packages/entities/workflow/workflow-publisher.js +5 -4
- package/dist/modules/n8n-packages/entities/workflow/workflow-publisher.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-publishing-policy.types.d.ts +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-requirements.extractor.js +2 -2
- package/dist/modules/n8n-packages/entities/workflow/workflow-requirements.extractor.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +3 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/io/unique-filename-allocator.d.ts +1 -0
- package/dist/modules/n8n-packages/io/unique-filename-allocator.js +9 -0
- package/dist/modules/n8n-packages/io/unique-filename-allocator.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.service.d.ts +8 -4
- package/dist/modules/n8n-packages/n8n-packages.service.js +81 -36
- package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.types.d.ts +40 -3
- package/dist/modules/n8n-packages/n8n-packages.types.js +9 -1
- package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
- package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +51 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +45 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.js +10 -1
- package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -1
- package/dist/modules/n8n-packages/spec/serialized/workflow.schema.js +1 -1
- package/dist/modules/n8n-packages/spec/serialized/workflow.schema.js.map +1 -1
- package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.d.ts +10 -2
- package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.js +5 -1
- package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.js.map +1 -1
- package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.d.ts +14 -2
- package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.js +16 -1
- package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.js.map +1 -1
- package/dist/modules/oauth-server/oauth-token.service.d.ts +3 -2
- package/dist/modules/oauth-server/oauth-token.service.js +13 -33
- package/dist/modules/oauth-server/oauth-token.service.js.map +1 -1
- package/dist/modules/oauth-server/oauth.controller.d.ts +3 -0
- package/dist/modules/oauth-server/oauth.controller.js +45 -1
- package/dist/modules/oauth-server/oauth.controller.js.map +1 -1
- package/dist/modules/oauth-server/oauth.helpers.d.ts +1 -0
- package/dist/modules/oauth-server/oauth.helpers.js +7 -0
- package/dist/modules/oauth-server/oauth.helpers.js.map +1 -1
- package/dist/modules/otel/otel-settings.controller.d.ts +2 -2
- package/dist/modules/otel/otel-settings.controller.js +1 -1
- package/dist/modules/otel/otel-settings.controller.js.map +1 -1
- package/dist/modules/redaction/redaction-context-hook.js +4 -2
- package/dist/modules/redaction/redaction-context-hook.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-export.service.ee.js +3 -3
- package/dist/modules/source-control.ee/source-control-export.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +1 -0
- package/dist/modules/source-control.ee/source-control-import.service.ee.js +51 -22
- package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-scoped.service.js +1 -1
- package/dist/modules/source-control.ee/source-control-scoped.service.js.map +1 -1
- package/dist/modules/source-control.ee/types/exportable-credential.d.ts +2 -0
- package/dist/modules/workflow-index/workflow-dependency-query.service.js +1 -1
- package/dist/modules/workflow-index/workflow-dependency-query.service.js.map +1 -1
- package/dist/modules/workflow-reviews.ee/workflow-review-request.service.d.ts +44 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-request.service.js +373 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-request.service.js.map +1 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.d.ts +14 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.js +97 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.js.map +1 -0
- package/dist/modules/workflow-reviews.ee/workflow-reviews.module.d.ts +4 -0
- package/dist/modules/workflow-reviews.ee/workflow-reviews.module.js +24 -0
- package/dist/modules/workflow-reviews.ee/workflow-reviews.module.js.map +1 -0
- package/dist/node-execution/ephemeral-node-executor.d.ts +5 -1
- package/dist/node-execution/ephemeral-node-executor.js +7 -4
- package/dist/node-execution/ephemeral-node-executor.js.map +1 -1
- package/dist/node-execution/index.d.ts +1 -0
- package/dist/node-execution/index.js +4 -1
- package/dist/node-execution/index.js.map +1 -1
- package/dist/node-execution/node-tool-operation-support.d.ts +2 -0
- package/dist/node-execution/node-tool-operation-support.js +12 -0
- package/dist/node-execution/node-tool-operation-support.js.map +1 -0
- package/dist/node-types.d.ts +5 -1
- package/dist/node-types.js +53 -20
- package/dist/node-types.js.map +1 -1
- package/dist/oauth/oauth.service.d.ts +5 -1
- package/dist/oauth/oauth.service.js +57 -28
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/permissions.ee/check-access.js +18 -0
- package/dist/permissions.ee/check-access.js.map +1 -1
- package/dist/posthog/index.js +6 -0
- package/dist/posthog/index.js.map +1 -1
- package/dist/public-api/index.d.ts +1 -1
- package/dist/public-api/index.js +40 -11
- package/dist/public-api/index.js.map +1 -1
- package/dist/public-api/types.d.ts +7 -1
- package/dist/public-api/v1/controllers/index.d.ts +2 -0
- package/dist/public-api/v1/controllers/index.js +5 -0
- package/dist/public-api/v1/controllers/index.js.map +1 -0
- package/dist/public-api/v1/controllers/workflows.public.controller.d.ts +9 -0
- package/dist/public-api/v1/controllers/workflows.public.controller.js +81 -0
- package/dist/public-api/v1/controllers/workflows.public.controller.js.map +1 -0
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js +1 -0
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +1 -0
- package/dist/public-api/v1/handlers/credentials/credentials.service.js +9 -2
- package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
- package/dist/public-api/v1/handlers/discover/discover.service.d.ts +1 -0
- package/dist/public-api/v1/handlers/discover/discover.service.js +39 -34
- package/dist/public-api/v1/handlers/discover/discover.service.js.map +1 -1
- package/dist/public-api/v1/handlers/executions/executions.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +8 -3
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/otel/otel.handler.d.ts +9 -0
- package/dist/public-api/v1/handlers/otel/otel.handler.js +57 -0
- package/dist/public-api/v1/handlers/otel/otel.handler.js.map +1 -0
- package/dist/public-api/v1/handlers/otel/otel.mapper.d.ts +3 -0
- package/dist/public-api/v1/handlers/otel/otel.mapper.js +18 -0
- package/dist/public-api/v1/handlers/otel/otel.mapper.js.map +1 -0
- package/dist/public-api/v1/handlers/tags/tags.handler.d.ts +0 -1
- package/dist/public-api/v1/handlers/tags/tags.handler.js +0 -8
- package/dist/public-api/v1/handlers/tags/tags.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/users/users.service.ee.js.map +1 -1
- package/dist/public-api/v1/handlers/workflows/workflows.handler.d.ts +2 -0
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js +47 -34
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/workflows/workflows.service.js +6 -0
- package/dist/public-api/v1/handlers/workflows/workflows.service.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +491 -19
- package/dist/public-api/v1/shared/middlewares/global.middleware.d.ts +4 -0
- package/dist/public-api/v1/shared/middlewares/global.middleware.js +9 -1
- package/dist/public-api/v1/shared/middlewares/global.middleware.js.map +1 -1
- package/dist/public-api/v1/shared/public-api-scope-lookup.d.ts +5 -0
- package/dist/public-api/v1/shared/public-api-scope-lookup.js +60 -0
- package/dist/public-api/v1/shared/public-api-scope-lookup.js.map +1 -0
- package/dist/scaling/constants.d.ts +2 -2
- package/dist/scaling/pubsub/pubsub.event-map.d.ts +1 -0
- package/dist/scaling/pubsub/pubsub.types.d.ts +2 -1
- package/dist/scheduling/durable-job-provisioner.d.ts +1 -0
- package/dist/scheduling/durable-job-provisioner.js +2 -0
- package/dist/scheduling/durable-job-provisioner.js.map +1 -1
- package/dist/scheduling/durable-scheduler.d.ts +2 -1
- package/dist/scheduling/durable-scheduler.js +4 -2
- package/dist/scheduling/durable-scheduler.js.map +1 -1
- package/dist/scheduling/poll-trigger-node/poll-job-provider.d.ts +11 -0
- package/dist/scheduling/poll-trigger-node/poll-job-provider.js +41 -0
- package/dist/scheduling/poll-trigger-node/poll-job-provider.js.map +1 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-job-registrar.d.ts +19 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-job-registrar.js +111 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-job-registrar.js.map +1 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.d.ts +16 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.js +100 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.js.map +1 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-task.d.ts +6 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-task.js +8 -0
- package/dist/scheduling/poll-trigger-node/poll-trigger-task.js.map +1 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-job-registrar.d.ts +1 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-job-registrar.js +7 -1
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-job-registrar.js.map +1 -1
- package/dist/security-audit/risk-reporters/credentials-risk-reporter.d.ts +4 -6
- package/dist/security-audit/risk-reporters/credentials-risk-reporter.js +17 -23
- package/dist/security-audit/risk-reporters/credentials-risk-reporter.js.map +1 -1
- package/dist/security-audit/security-audit.repository.js.map +1 -1
- package/dist/services/export.service.js.map +1 -1
- package/dist/services/folder-finder.service.d.ts +1 -0
- package/dist/services/folder-finder.service.js +30 -0
- package/dist/services/folder-finder.service.js.map +1 -1
- package/dist/services/folder.service.js.map +1 -1
- package/dist/services/free-ai-credits.service.d.ts +32 -0
- package/dist/services/free-ai-credits.service.js +55 -0
- package/dist/services/free-ai-credits.service.js.map +1 -0
- package/dist/services/frontend.service.js +2 -0
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/hooks.service.js.map +1 -1
- package/dist/services/import.service.js +3 -1
- package/dist/services/import.service.js.map +1 -1
- package/dist/services/ownership-transfer/ownership-transfer-handler.registry.js.map +1 -1
- package/dist/services/ownership-transfer/ownership-transfer.manifest.json +5 -0
- package/dist/services/project.service.ee.d.ts +1 -0
- package/dist/services/project.service.ee.js +6 -1
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/public-api-key.service.js.map +1 -1
- package/dist/services/role.service.d.ts +2 -1
- package/dist/services/role.service.js +21 -3
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/tag.service.js.map +1 -1
- package/dist/telemetry/index.d.ts +3 -2
- package/dist/telemetry/index.js +7 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +4 -0
- package/dist/utils.js.map +1 -1
- package/dist/webhooks/live-webhooks.js +1 -1
- package/dist/webhooks/live-webhooks.js.map +1 -1
- package/dist/webhooks/waiting-forms.js +2 -7
- package/dist/webhooks/waiting-forms.js.map +1 -1
- package/dist/webhooks/waiting-webhooks.d.ts +7 -2
- package/dist/webhooks/waiting-webhooks.js +32 -2
- package/dist/webhooks/waiting-webhooks.js.map +1 -1
- package/dist/workflow-helpers.js +8 -62
- package/dist/workflow-helpers.js.map +1 -1
- package/dist/workflows/publication/workflow-publication-reconciler.service.d.ts +10 -3
- package/dist/workflows/publication/workflow-publication-reconciler.service.js +49 -13
- package/dist/workflows/publication/workflow-publication-reconciler.service.js.map +1 -1
- package/dist/workflows/triggers/non-webhook-trigger-registrar.d.ts +3 -1
- package/dist/workflows/triggers/non-webhook-trigger-registrar.js +5 -2
- package/dist/workflows/triggers/non-webhook-trigger-registrar.js.map +1 -1
- package/dist/workflows/triggers/trigger-execution-context.factory.d.ts +13 -4
- package/dist/workflows/triggers/trigger-execution-context.factory.js +62 -4
- package/dist/workflows/triggers/trigger-execution-context.factory.js.map +1 -1
- package/dist/workflows/workflow-creation.service.js +8 -2
- package/dist/workflows/workflow-creation.service.js.map +1 -1
- package/dist/workflows/workflow-finder.service.js +1 -0
- package/dist/workflows/workflow-finder.service.js.map +1 -1
- package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
- package/dist/workflows/workflow-sharing.service.js.map +1 -1
- package/dist/workflows/workflow-validation.service.js +1 -1
- package/dist/workflows/workflow-validation.service.js.map +1 -1
- package/dist/workflows/workflow.service.d.ts +5 -2
- package/dist/workflows/workflow.service.ee.js +1 -0
- package/dist/workflows/workflow.service.ee.js.map +1 -1
- package/dist/workflows/workflow.service.js +54 -12
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/package.json +35 -34
- package/dist/blob-storage/azure-byte-store.ee.d.ts +0 -10
- package/dist/blob-storage/azure-byte-store.ee.js +0 -42
- package/dist/blob-storage/azure-byte-store.ee.js.map +0 -1
- package/dist/blob-storage/fs-byte-store.d.ts +0 -14
- package/dist/blob-storage/fs-byte-store.js +0 -96
- package/dist/blob-storage/fs-byte-store.js.map +0 -1
- package/dist/blob-storage/json-store.d.ts +0 -18
- package/dist/blob-storage/json-store.js +0 -128
- package/dist/blob-storage/json-store.js.map +0 -1
- package/dist/blob-storage/s3-byte-store.ee.d.ts +0 -10
- package/dist/blob-storage/s3-byte-store.ee.js +0 -37
- package/dist/blob-storage/s3-byte-store.ee.js.map +0 -1
- package/dist/blob-storage/skipped-entry-deletion.error.d.ts +0 -5
- package/dist/blob-storage/skipped-entry-deletion.error.js +0 -13
- package/dist/blob-storage/skipped-entry-deletion.error.js.map +0 -1
- package/dist/blob-storage/types.d.ts +0 -23
- package/dist/blob-storage/types.js.map +0 -1
- package/dist/modules/agents/builder/interactive/llm-provider-defaults.js.map +0 -1
- package/dist/modules/agents/builder/skills/integrations.skill.d.ts +0 -2
- package/dist/modules/agents/builder/skills/integrations.skill.js +0 -128
- package/dist/modules/agents/builder/skills/integrations.skill.js.map +0 -1
- package/dist/modules/agents/builder/skills/mcp.skill.d.ts +0 -2
- package/dist/modules/agents/builder/skills/mcp.skill.js +0 -172
- package/dist/modules/agents/builder/skills/mcp.skill.js.map +0 -1
- package/dist/modules/agents/builder/skills/node-tools.skill.d.ts +0 -2
- package/dist/modules/agents/builder/skills/node-tools.skill.js +0 -90
- package/dist/modules/agents/builder/skills/node-tools.skill.js.map +0 -1
|
@@ -232,9 +232,9 @@ exports.partialUpdateOperationSchema = zod_1.z.discriminatedUnion('type', [
|
|
|
232
232
|
.array(zod_1.z.object({
|
|
233
233
|
id: zod_1.z.string().trim().min(1).optional().describe('Group id. Generated if omitted.'),
|
|
234
234
|
name: zod_1.z.string().trim().min(1).describe('Unique group name.'),
|
|
235
|
-
|
|
235
|
+
nodeNames: zod_1.z
|
|
236
236
|
.array(zod_1.z.string().trim().min(1))
|
|
237
|
-
.describe('
|
|
237
|
+
.describe('Names of the nodes that belong to this group.'),
|
|
238
238
|
description: zod_1.z
|
|
239
239
|
.string()
|
|
240
240
|
.trim()
|
|
@@ -242,7 +242,46 @@ exports.partialUpdateOperationSchema = zod_1.z.discriminatedUnion('type', [
|
|
|
242
242
|
.optional()
|
|
243
243
|
.describe(`Optional description shown when the group is collapsed. Max ${n8n_workflow_1.GROUP_DESCRIPTION_MAX_LENGTH} characters.`),
|
|
244
244
|
}))
|
|
245
|
-
.describe('Replaces the workflow node groups entirely. Pass [] to remove all groups. Each
|
|
245
|
+
.describe('Replaces the workflow node groups entirely. Pass [] to remove all groups. Each nodeName must reference an existing node, and every group must form a valid, connected, trigger-free section of the graph (validated on save).'),
|
|
246
|
+
}),
|
|
247
|
+
zod_1.z.object({
|
|
248
|
+
type: zod_1.z.literal('addNodeGroup'),
|
|
249
|
+
name: zod_1.z.string().trim().min(1).describe('Name for the new group. Must be unique.'),
|
|
250
|
+
nodeNames: zod_1.z
|
|
251
|
+
.array(zod_1.z.string().trim().min(1))
|
|
252
|
+
.min(1)
|
|
253
|
+
.describe('Names of the nodes that belong to this group. The nodes must form a valid, connected, trigger-free section of the graph (validated on save).'),
|
|
254
|
+
description: zod_1.z
|
|
255
|
+
.string()
|
|
256
|
+
.trim()
|
|
257
|
+
.max(n8n_workflow_1.GROUP_DESCRIPTION_MAX_LENGTH)
|
|
258
|
+
.optional()
|
|
259
|
+
.describe(`Optional description shown when the group is collapsed. Max ${n8n_workflow_1.GROUP_DESCRIPTION_MAX_LENGTH} characters.`),
|
|
260
|
+
id: zod_1.z.string().trim().min(1).optional().describe('Group id. Generated if omitted.'),
|
|
261
|
+
}),
|
|
262
|
+
zod_1.z.object({
|
|
263
|
+
type: zod_1.z.literal('removeNodeGroup'),
|
|
264
|
+
groupName: zod_1.z
|
|
265
|
+
.string()
|
|
266
|
+
.trim()
|
|
267
|
+
.min(1)
|
|
268
|
+
.describe('Name of the group to remove. The grouped nodes themselves are kept.'),
|
|
269
|
+
}),
|
|
270
|
+
zod_1.z.object({
|
|
271
|
+
type: zod_1.z.literal('updateNodeGroup'),
|
|
272
|
+
groupName: zod_1.z.string().trim().min(1).describe('Name of the existing group to update.'),
|
|
273
|
+
newName: zod_1.z.string().trim().min(1).optional().describe('New unique group name.'),
|
|
274
|
+
nodeNames: zod_1.z
|
|
275
|
+
.array(zod_1.z.string().trim().min(1))
|
|
276
|
+
.min(1)
|
|
277
|
+
.optional()
|
|
278
|
+
.describe('Replaces the group membership entirely with these node names.'),
|
|
279
|
+
description: zod_1.z
|
|
280
|
+
.string()
|
|
281
|
+
.trim()
|
|
282
|
+
.max(n8n_workflow_1.GROUP_DESCRIPTION_MAX_LENGTH)
|
|
283
|
+
.optional()
|
|
284
|
+
.describe(`New description shown when the group is collapsed (max ${n8n_workflow_1.GROUP_DESCRIPTION_MAX_LENGTH} characters). Pass "" to clear it. Omit to leave unchanged.`),
|
|
246
285
|
}),
|
|
247
286
|
]);
|
|
248
287
|
const cloneWorkflow = (workflow) => ({
|
|
@@ -376,7 +415,7 @@ const pruneConnectionShape = (connections, source, connectionType) => {
|
|
|
376
415
|
if (!byType)
|
|
377
416
|
return;
|
|
378
417
|
const outputs = byType[connectionType];
|
|
379
|
-
if (outputs
|
|
418
|
+
if (outputs?.every((o) => !o || o.length === 0)) {
|
|
380
419
|
delete byType[connectionType];
|
|
381
420
|
}
|
|
382
421
|
if (Object.keys(byType).length === 0) {
|
|
@@ -388,244 +427,386 @@ const fail = (opIndex, message) => ({
|
|
|
388
427
|
error: `Operation ${opIndex} failed: ${message}`,
|
|
389
428
|
opIndex,
|
|
390
429
|
});
|
|
430
|
+
const resolveGroupNodeIds = (nodeByName, nodeNames, groupName) => {
|
|
431
|
+
const nodeIds = new Set();
|
|
432
|
+
for (const nodeName of nodeNames) {
|
|
433
|
+
const node = nodeByName.get(nodeName);
|
|
434
|
+
if (!node) {
|
|
435
|
+
return { error: `node '${nodeName}' in group '${groupName}' not found` };
|
|
436
|
+
}
|
|
437
|
+
nodeIds.add(node.id);
|
|
438
|
+
}
|
|
439
|
+
return { nodeIds: [...nodeIds] };
|
|
440
|
+
};
|
|
441
|
+
const handleUpdateNodeParameters = (op, ctx) => {
|
|
442
|
+
const node = ctx.nodeByName.get(op.nodeName);
|
|
443
|
+
if (!node) {
|
|
444
|
+
return `node '${op.nodeName}' not found`;
|
|
445
|
+
}
|
|
446
|
+
const sanitized = sanitizeUnsafeKeys(op.parameters);
|
|
447
|
+
const merged = op.replace
|
|
448
|
+
? sanitized
|
|
449
|
+
: deepMerge((node.parameters ?? {}), sanitized);
|
|
450
|
+
node.parameters = merged;
|
|
451
|
+
return null;
|
|
452
|
+
};
|
|
453
|
+
const handleSetNodeParameter = (op, ctx) => {
|
|
454
|
+
const node = ctx.nodeByName.get(op.nodeName);
|
|
455
|
+
if (!node) {
|
|
456
|
+
return `node '${op.nodeName}' not found`;
|
|
457
|
+
}
|
|
458
|
+
const segments = parseJsonPointer(op.path);
|
|
459
|
+
if (!segments) {
|
|
460
|
+
return `path '${op.path}' is invalid or contains unsafe segments`;
|
|
461
|
+
}
|
|
462
|
+
const params = (node.parameters ?? {});
|
|
463
|
+
const setError = setAtPointer(params, segments, op.value);
|
|
464
|
+
if (setError) {
|
|
465
|
+
return setError;
|
|
466
|
+
}
|
|
467
|
+
node.parameters = params;
|
|
468
|
+
return null;
|
|
469
|
+
};
|
|
470
|
+
const handleAddNode = (op, ctx) => {
|
|
471
|
+
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.node.name)) {
|
|
472
|
+
return `node name '${op.node.name}' is not allowed`;
|
|
473
|
+
}
|
|
474
|
+
if (ctx.nodeByName.has(op.node.name)) {
|
|
475
|
+
return `a node named '${op.node.name}' already exists`;
|
|
476
|
+
}
|
|
477
|
+
const node = {
|
|
478
|
+
id: op.node.id ?? (0, uuid_1.v4)(),
|
|
479
|
+
name: op.node.name,
|
|
480
|
+
type: op.node.type,
|
|
481
|
+
typeVersion: op.node.typeVersion,
|
|
482
|
+
position: op.node.position ?? [0, 0],
|
|
483
|
+
parameters: (sanitizeUnsafeKeys(op.node.parameters ?? {}) ?? {}),
|
|
484
|
+
};
|
|
485
|
+
if (op.node.credentials) {
|
|
486
|
+
const credentialEntries = [];
|
|
487
|
+
for (const [key, cred] of Object.entries(op.node.credentials)) {
|
|
488
|
+
if (!(0, n8n_workflow_1.isSafeObjectProperty)(key)) {
|
|
489
|
+
return `credential key '${key}' is not allowed`;
|
|
490
|
+
}
|
|
491
|
+
credentialEntries.push([key, { id: cred.id ?? null, name: cred.name }]);
|
|
492
|
+
}
|
|
493
|
+
node.credentials = Object.fromEntries(credentialEntries);
|
|
494
|
+
}
|
|
495
|
+
if (op.node.disabled !== undefined) {
|
|
496
|
+
node.disabled = op.node.disabled;
|
|
497
|
+
}
|
|
498
|
+
if (op.node.notes !== undefined) {
|
|
499
|
+
node.notes = op.node.notes;
|
|
500
|
+
}
|
|
501
|
+
ctx.workflow.nodes.push(node);
|
|
502
|
+
ctx.nodeByName.set(node.name, node);
|
|
503
|
+
ctx.addedNodeNames.add(node.name);
|
|
504
|
+
return null;
|
|
505
|
+
};
|
|
506
|
+
const handleRemoveNode = (op, ctx) => {
|
|
507
|
+
const node = ctx.nodeByName.get(op.nodeName);
|
|
508
|
+
if (!node) {
|
|
509
|
+
return `node '${op.nodeName}' not found`;
|
|
510
|
+
}
|
|
511
|
+
ctx.workflow.nodes.splice(ctx.workflow.nodes.indexOf(node), 1);
|
|
512
|
+
ctx.nodeByName.delete(op.nodeName);
|
|
513
|
+
removeConnectionsFor(ctx.workflow.connections, op.nodeName);
|
|
514
|
+
ctx.addedNodeNames.delete(op.nodeName);
|
|
515
|
+
if (ctx.workflow.nodeGroups?.length) {
|
|
516
|
+
const prunedGroups = [];
|
|
517
|
+
for (const group of ctx.workflow.nodeGroups) {
|
|
518
|
+
if (!group.nodeIds.includes(node.id)) {
|
|
519
|
+
prunedGroups.push(group);
|
|
520
|
+
continue;
|
|
521
|
+
}
|
|
522
|
+
ctx.nodeGroupsChanged = true;
|
|
523
|
+
const remaining = group.nodeIds.filter((id) => id !== node.id);
|
|
524
|
+
if (remaining.length > 0)
|
|
525
|
+
prunedGroups.push({ ...group, nodeIds: remaining });
|
|
526
|
+
}
|
|
527
|
+
ctx.workflow.nodeGroups = prunedGroups;
|
|
528
|
+
}
|
|
529
|
+
return null;
|
|
530
|
+
};
|
|
531
|
+
const handleRenameNode = (op, ctx) => {
|
|
532
|
+
if (op.oldName === op.newName) {
|
|
533
|
+
return null;
|
|
534
|
+
}
|
|
535
|
+
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.newName)) {
|
|
536
|
+
return `node name '${op.newName}' is not allowed`;
|
|
537
|
+
}
|
|
538
|
+
const node = ctx.nodeByName.get(op.oldName);
|
|
539
|
+
if (!node) {
|
|
540
|
+
return `node '${op.oldName}' not found`;
|
|
541
|
+
}
|
|
542
|
+
if (ctx.nodeByName.has(op.newName)) {
|
|
543
|
+
return `a node named '${op.newName}' already exists`;
|
|
544
|
+
}
|
|
545
|
+
node.name = op.newName;
|
|
546
|
+
ctx.nodeByName.delete(op.oldName);
|
|
547
|
+
ctx.nodeByName.set(op.newName, node);
|
|
548
|
+
renameInConnections(ctx.workflow.connections, op.oldName, op.newName);
|
|
549
|
+
if (ctx.addedNodeNames.delete(op.oldName)) {
|
|
550
|
+
ctx.addedNodeNames.add(op.newName);
|
|
551
|
+
}
|
|
552
|
+
return null;
|
|
553
|
+
};
|
|
554
|
+
const handleAddConnection = (op, ctx) => {
|
|
555
|
+
if (!ctx.nodeByName.has(op.source)) {
|
|
556
|
+
return `source node '${op.source}' not found`;
|
|
557
|
+
}
|
|
558
|
+
if (!ctx.nodeByName.has(op.target)) {
|
|
559
|
+
return `target node '${op.target}' not found`;
|
|
560
|
+
}
|
|
561
|
+
const connectionType = (op.connectionType ?? n8n_workflow_1.NodeConnectionTypes.Main);
|
|
562
|
+
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.source) || !(0, n8n_workflow_1.isSafeObjectProperty)(connectionType)) {
|
|
563
|
+
return 'connection name is not allowed';
|
|
564
|
+
}
|
|
565
|
+
const sourceIndex = op.sourceIndex ?? 0;
|
|
566
|
+
const targetIndex = op.targetIndex ?? 0;
|
|
567
|
+
const slot = ensureOutputSlot(ctx.workflow.connections, op.source, connectionType, sourceIndex);
|
|
568
|
+
const exists = slot.some((c) => c.node === op.target && c.type === connectionType && c.index === targetIndex);
|
|
569
|
+
if (!exists)
|
|
570
|
+
slot.push({ node: op.target, type: connectionType, index: targetIndex });
|
|
571
|
+
return null;
|
|
572
|
+
};
|
|
573
|
+
const handleRemoveConnection = (op, ctx) => {
|
|
574
|
+
const connectionType = (op.connectionType ?? n8n_workflow_1.NodeConnectionTypes.Main);
|
|
575
|
+
const sourceIndex = op.sourceIndex ?? 0;
|
|
576
|
+
const targetIndex = op.targetIndex ?? 0;
|
|
577
|
+
const byType = ctx.workflow.connections[op.source];
|
|
578
|
+
const outputs = byType?.[connectionType];
|
|
579
|
+
const slot = outputs?.[sourceIndex];
|
|
580
|
+
if (!slot) {
|
|
581
|
+
return `no '${connectionType}' connection from '${op.source}'`;
|
|
582
|
+
}
|
|
583
|
+
const filtered = slot.filter((c) => !(c.node === op.target && c.type === connectionType && c.index === targetIndex));
|
|
584
|
+
if (filtered.length === slot.length) {
|
|
585
|
+
return `connection from '${op.source}'[${sourceIndex}] to '${op.target}'[${targetIndex}] does not exist`;
|
|
586
|
+
}
|
|
587
|
+
outputs[sourceIndex] = filtered;
|
|
588
|
+
pruneConnectionShape(ctx.workflow.connections, op.source, connectionType);
|
|
589
|
+
return null;
|
|
590
|
+
};
|
|
591
|
+
const handleSetNodeCredential = (op, ctx) => {
|
|
592
|
+
const node = ctx.nodeByName.get(op.nodeName);
|
|
593
|
+
if (!node) {
|
|
594
|
+
return `node '${op.nodeName}' not found`;
|
|
595
|
+
}
|
|
596
|
+
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.credentialKey)) {
|
|
597
|
+
return `credential key '${op.credentialKey}' is not allowed`;
|
|
598
|
+
}
|
|
599
|
+
node.credentials = {
|
|
600
|
+
...(node.credentials ?? {}),
|
|
601
|
+
[op.credentialKey]: { id: op.credentialId, name: op.credentialName },
|
|
602
|
+
};
|
|
603
|
+
return null;
|
|
604
|
+
};
|
|
605
|
+
const handleSetNodePosition = (op, ctx) => {
|
|
606
|
+
const node = ctx.nodeByName.get(op.nodeName);
|
|
607
|
+
if (!node) {
|
|
608
|
+
return `node '${op.nodeName}' not found`;
|
|
609
|
+
}
|
|
610
|
+
node.position = op.position;
|
|
611
|
+
return null;
|
|
612
|
+
};
|
|
613
|
+
const handleSetNodeDisabled = (op, ctx) => {
|
|
614
|
+
const node = ctx.nodeByName.get(op.nodeName);
|
|
615
|
+
if (!node) {
|
|
616
|
+
return `node '${op.nodeName}' not found`;
|
|
617
|
+
}
|
|
618
|
+
node.disabled = op.disabled;
|
|
619
|
+
return null;
|
|
620
|
+
};
|
|
621
|
+
const handleSetNodeSettings = (op, ctx) => {
|
|
622
|
+
const node = ctx.nodeByName.get(op.nodeName);
|
|
623
|
+
if (!node) {
|
|
624
|
+
return `node '${op.nodeName}' not found`;
|
|
625
|
+
}
|
|
626
|
+
const s = op.settings;
|
|
627
|
+
if (s.onError !== undefined) {
|
|
628
|
+
node.onError = s.onError;
|
|
629
|
+
}
|
|
630
|
+
if (s.retryOnFail !== undefined) {
|
|
631
|
+
node.retryOnFail = s.retryOnFail;
|
|
632
|
+
}
|
|
633
|
+
if (s.maxTries !== undefined) {
|
|
634
|
+
node.maxTries = s.maxTries;
|
|
635
|
+
}
|
|
636
|
+
if (s.waitBetweenTries !== undefined) {
|
|
637
|
+
node.waitBetweenTries = s.waitBetweenTries;
|
|
638
|
+
}
|
|
639
|
+
if (s.alwaysOutputData !== undefined) {
|
|
640
|
+
node.alwaysOutputData = s.alwaysOutputData;
|
|
641
|
+
}
|
|
642
|
+
if (s.executeOnce !== undefined) {
|
|
643
|
+
node.executeOnce = s.executeOnce;
|
|
644
|
+
}
|
|
645
|
+
return null;
|
|
646
|
+
};
|
|
647
|
+
const handleSetWorkflowMetadata = (op, ctx) => {
|
|
648
|
+
if (op.name !== undefined) {
|
|
649
|
+
ctx.workflow.name = op.name;
|
|
650
|
+
}
|
|
651
|
+
if (op.description !== undefined) {
|
|
652
|
+
ctx.workflow.description = op.description;
|
|
653
|
+
}
|
|
654
|
+
return null;
|
|
655
|
+
};
|
|
656
|
+
const handleSetWorkflowSettings = (op, ctx) => {
|
|
657
|
+
ctx.workflow.settings = { ...(ctx.workflow.settings ?? {}), ...op.settings };
|
|
658
|
+
return null;
|
|
659
|
+
};
|
|
660
|
+
const handleSetNodeGroups = (op, ctx) => {
|
|
661
|
+
const nodeGroups = [];
|
|
662
|
+
for (const group of op.nodeGroups) {
|
|
663
|
+
const resolved = resolveGroupNodeIds(ctx.nodeByName, group.nodeNames, group.name);
|
|
664
|
+
if ('error' in resolved) {
|
|
665
|
+
return resolved.error;
|
|
666
|
+
}
|
|
667
|
+
const description = group.description?.trim();
|
|
668
|
+
nodeGroups.push({
|
|
669
|
+
id: group.id ?? (0, uuid_1.v4)(),
|
|
670
|
+
name: group.name,
|
|
671
|
+
nodeIds: resolved.nodeIds,
|
|
672
|
+
...(description ? { description } : {}),
|
|
673
|
+
});
|
|
674
|
+
}
|
|
675
|
+
ctx.workflow.nodeGroups = nodeGroups;
|
|
676
|
+
ctx.nodeGroupsChanged = true;
|
|
677
|
+
return null;
|
|
678
|
+
};
|
|
679
|
+
const handleAddNodeGroup = (op, ctx) => {
|
|
680
|
+
const groups = ctx.workflow.nodeGroups ?? [];
|
|
681
|
+
if (groups.some((g) => g.name === op.name)) {
|
|
682
|
+
return `a node group named '${op.name}' already exists`;
|
|
683
|
+
}
|
|
684
|
+
if (op.id !== undefined && groups.some((g) => g.id === op.id)) {
|
|
685
|
+
return `a node group with id '${op.id}' already exists`;
|
|
686
|
+
}
|
|
687
|
+
const resolved = resolveGroupNodeIds(ctx.nodeByName, op.nodeNames, op.name);
|
|
688
|
+
if ('error' in resolved) {
|
|
689
|
+
return resolved.error;
|
|
690
|
+
}
|
|
691
|
+
const description = op.description?.trim();
|
|
692
|
+
groups.push({
|
|
693
|
+
id: op.id ?? (0, uuid_1.v4)(),
|
|
694
|
+
name: op.name,
|
|
695
|
+
nodeIds: resolved.nodeIds,
|
|
696
|
+
...(description ? { description } : {}),
|
|
697
|
+
});
|
|
698
|
+
ctx.workflow.nodeGroups = groups;
|
|
699
|
+
ctx.nodeGroupsChanged = true;
|
|
700
|
+
return null;
|
|
701
|
+
};
|
|
702
|
+
const handleRemoveNodeGroup = (op, ctx) => {
|
|
703
|
+
const groups = ctx.workflow.nodeGroups ?? [];
|
|
704
|
+
const index = groups.findIndex((g) => g.name === op.groupName);
|
|
705
|
+
if (index === -1) {
|
|
706
|
+
return `node group '${op.groupName}' not found`;
|
|
707
|
+
}
|
|
708
|
+
groups.splice(index, 1);
|
|
709
|
+
ctx.workflow.nodeGroups = groups;
|
|
710
|
+
ctx.nodeGroupsChanged = true;
|
|
711
|
+
return null;
|
|
712
|
+
};
|
|
713
|
+
const handleUpdateNodeGroup = (op, ctx) => {
|
|
714
|
+
if (op.newName === undefined && op.nodeNames === undefined && op.description === undefined) {
|
|
715
|
+
return 'updateNodeGroup must specify at least one of newName, nodeNames, or description';
|
|
716
|
+
}
|
|
717
|
+
const groups = ctx.workflow.nodeGroups ?? [];
|
|
718
|
+
const group = groups.find((g) => g.name === op.groupName);
|
|
719
|
+
if (!group) {
|
|
720
|
+
return `node group '${op.groupName}' not found`;
|
|
721
|
+
}
|
|
722
|
+
if (op.nodeNames !== undefined) {
|
|
723
|
+
const resolved = resolveGroupNodeIds(ctx.nodeByName, op.nodeNames, op.groupName);
|
|
724
|
+
if ('error' in resolved) {
|
|
725
|
+
return resolved.error;
|
|
726
|
+
}
|
|
727
|
+
group.nodeIds = resolved.nodeIds;
|
|
728
|
+
}
|
|
729
|
+
if (op.newName !== undefined && op.newName !== group.name) {
|
|
730
|
+
if (groups.some((g) => g !== group && g.name === op.newName)) {
|
|
731
|
+
return `a node group named '${op.newName}' already exists`;
|
|
732
|
+
}
|
|
733
|
+
group.name = op.newName;
|
|
734
|
+
}
|
|
735
|
+
if (op.description !== undefined) {
|
|
736
|
+
const description = op.description.trim();
|
|
737
|
+
if (description) {
|
|
738
|
+
group.description = description;
|
|
739
|
+
}
|
|
740
|
+
else {
|
|
741
|
+
delete group.description;
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
ctx.nodeGroupsChanged = true;
|
|
745
|
+
return null;
|
|
746
|
+
};
|
|
747
|
+
const handleTagOp = (op, ctx) => {
|
|
748
|
+
if (ctx.workflow.tagNames === undefined) {
|
|
749
|
+
return 'tag operations require existing tags to be loaded';
|
|
750
|
+
}
|
|
751
|
+
ctx.tagSet ??= new Set(ctx.workflow.tagNames);
|
|
752
|
+
if (op.type === 'addTags') {
|
|
753
|
+
for (const name of op.names) {
|
|
754
|
+
ctx.tagSet.add(name);
|
|
755
|
+
}
|
|
756
|
+
return null;
|
|
757
|
+
}
|
|
758
|
+
for (const name of op.names) {
|
|
759
|
+
ctx.tagSet.delete(name);
|
|
760
|
+
}
|
|
761
|
+
return null;
|
|
762
|
+
};
|
|
763
|
+
const OPERATION_HANDLERS = {
|
|
764
|
+
updateNodeParameters: handleUpdateNodeParameters,
|
|
765
|
+
setNodeParameter: handleSetNodeParameter,
|
|
766
|
+
addNode: handleAddNode,
|
|
767
|
+
removeNode: handleRemoveNode,
|
|
768
|
+
renameNode: handleRenameNode,
|
|
769
|
+
addConnection: handleAddConnection,
|
|
770
|
+
removeConnection: handleRemoveConnection,
|
|
771
|
+
setNodeCredential: handleSetNodeCredential,
|
|
772
|
+
setNodePosition: handleSetNodePosition,
|
|
773
|
+
setNodeDisabled: handleSetNodeDisabled,
|
|
774
|
+
setNodeSettings: handleSetNodeSettings,
|
|
775
|
+
setWorkflowMetadata: handleSetWorkflowMetadata,
|
|
776
|
+
setWorkflowSettings: handleSetWorkflowSettings,
|
|
777
|
+
setNodeGroups: handleSetNodeGroups,
|
|
778
|
+
addNodeGroup: handleAddNodeGroup,
|
|
779
|
+
removeNodeGroup: handleRemoveNodeGroup,
|
|
780
|
+
updateNodeGroup: handleUpdateNodeGroup,
|
|
781
|
+
addTags: (op, ctx) => handleTagOp(op, ctx),
|
|
782
|
+
removeTags: (op, ctx) => handleTagOp(op, ctx),
|
|
783
|
+
};
|
|
391
784
|
function applyOperations(input, operations) {
|
|
392
785
|
const workflow = cloneWorkflow(input);
|
|
393
|
-
const
|
|
394
|
-
|
|
395
|
-
|
|
786
|
+
const ctx = {
|
|
787
|
+
workflow,
|
|
788
|
+
nodeByName: new Map(workflow.nodes.map((n) => [n.name, n])),
|
|
789
|
+
addedNodeNames: new Set(),
|
|
790
|
+
tagSet: null,
|
|
791
|
+
nodeGroupsChanged: false,
|
|
792
|
+
};
|
|
396
793
|
for (let i = 0; i < operations.length; i++) {
|
|
397
794
|
const op = operations[i];
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
return fail(i, `node '${op.nodeName}' not found`);
|
|
403
|
-
const sanitized = sanitizeUnsafeKeys(op.parameters);
|
|
404
|
-
const merged = op.replace
|
|
405
|
-
? sanitized
|
|
406
|
-
: deepMerge((node.parameters ?? {}), sanitized);
|
|
407
|
-
node.parameters = merged;
|
|
408
|
-
break;
|
|
409
|
-
}
|
|
410
|
-
case 'setNodeParameter': {
|
|
411
|
-
const node = nodeByName.get(op.nodeName);
|
|
412
|
-
if (!node)
|
|
413
|
-
return fail(i, `node '${op.nodeName}' not found`);
|
|
414
|
-
const segments = parseJsonPointer(op.path);
|
|
415
|
-
if (!segments) {
|
|
416
|
-
return fail(i, `path '${op.path}' is invalid or contains unsafe segments`);
|
|
417
|
-
}
|
|
418
|
-
const params = (node.parameters ?? {});
|
|
419
|
-
const setError = setAtPointer(params, segments, op.value);
|
|
420
|
-
if (setError)
|
|
421
|
-
return fail(i, setError);
|
|
422
|
-
node.parameters = params;
|
|
423
|
-
break;
|
|
424
|
-
}
|
|
425
|
-
case 'addNode': {
|
|
426
|
-
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.node.name)) {
|
|
427
|
-
return fail(i, `node name '${op.node.name}' is not allowed`);
|
|
428
|
-
}
|
|
429
|
-
if (nodeByName.has(op.node.name)) {
|
|
430
|
-
return fail(i, `a node named '${op.node.name}' already exists`);
|
|
431
|
-
}
|
|
432
|
-
const node = {
|
|
433
|
-
id: op.node.id ?? (0, uuid_1.v4)(),
|
|
434
|
-
name: op.node.name,
|
|
435
|
-
type: op.node.type,
|
|
436
|
-
typeVersion: op.node.typeVersion,
|
|
437
|
-
position: op.node.position ?? [0, 0],
|
|
438
|
-
parameters: (sanitizeUnsafeKeys(op.node.parameters ?? {}) ?? {}),
|
|
439
|
-
};
|
|
440
|
-
if (op.node.credentials) {
|
|
441
|
-
const credentialEntries = [];
|
|
442
|
-
for (const [key, cred] of Object.entries(op.node.credentials)) {
|
|
443
|
-
if (!(0, n8n_workflow_1.isSafeObjectProperty)(key)) {
|
|
444
|
-
return fail(i, `credential key '${key}' is not allowed`);
|
|
445
|
-
}
|
|
446
|
-
credentialEntries.push([key, { id: cred.id ?? null, name: cred.name }]);
|
|
447
|
-
}
|
|
448
|
-
node.credentials = Object.fromEntries(credentialEntries);
|
|
449
|
-
}
|
|
450
|
-
if (op.node.disabled !== undefined)
|
|
451
|
-
node.disabled = op.node.disabled;
|
|
452
|
-
if (op.node.notes !== undefined)
|
|
453
|
-
node.notes = op.node.notes;
|
|
454
|
-
workflow.nodes.push(node);
|
|
455
|
-
nodeByName.set(node.name, node);
|
|
456
|
-
addedNodeNames.add(node.name);
|
|
457
|
-
break;
|
|
458
|
-
}
|
|
459
|
-
case 'removeNode': {
|
|
460
|
-
const node = nodeByName.get(op.nodeName);
|
|
461
|
-
if (!node)
|
|
462
|
-
return fail(i, `node '${op.nodeName}' not found`);
|
|
463
|
-
workflow.nodes.splice(workflow.nodes.indexOf(node), 1);
|
|
464
|
-
nodeByName.delete(op.nodeName);
|
|
465
|
-
removeConnectionsFor(workflow.connections, op.nodeName);
|
|
466
|
-
addedNodeNames.delete(op.nodeName);
|
|
467
|
-
break;
|
|
468
|
-
}
|
|
469
|
-
case 'renameNode': {
|
|
470
|
-
if (op.oldName === op.newName)
|
|
471
|
-
break;
|
|
472
|
-
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.newName)) {
|
|
473
|
-
return fail(i, `node name '${op.newName}' is not allowed`);
|
|
474
|
-
}
|
|
475
|
-
const node = nodeByName.get(op.oldName);
|
|
476
|
-
if (!node)
|
|
477
|
-
return fail(i, `node '${op.oldName}' not found`);
|
|
478
|
-
if (nodeByName.has(op.newName)) {
|
|
479
|
-
return fail(i, `a node named '${op.newName}' already exists`);
|
|
480
|
-
}
|
|
481
|
-
node.name = op.newName;
|
|
482
|
-
nodeByName.delete(op.oldName);
|
|
483
|
-
nodeByName.set(op.newName, node);
|
|
484
|
-
renameInConnections(workflow.connections, op.oldName, op.newName);
|
|
485
|
-
if (addedNodeNames.delete(op.oldName))
|
|
486
|
-
addedNodeNames.add(op.newName);
|
|
487
|
-
break;
|
|
488
|
-
}
|
|
489
|
-
case 'addConnection': {
|
|
490
|
-
if (!nodeByName.has(op.source)) {
|
|
491
|
-
return fail(i, `source node '${op.source}' not found`);
|
|
492
|
-
}
|
|
493
|
-
if (!nodeByName.has(op.target)) {
|
|
494
|
-
return fail(i, `target node '${op.target}' not found`);
|
|
495
|
-
}
|
|
496
|
-
const connectionType = (op.connectionType ??
|
|
497
|
-
n8n_workflow_1.NodeConnectionTypes.Main);
|
|
498
|
-
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.source) || !(0, n8n_workflow_1.isSafeObjectProperty)(connectionType)) {
|
|
499
|
-
return fail(i, 'connection name is not allowed');
|
|
500
|
-
}
|
|
501
|
-
const sourceIndex = op.sourceIndex ?? 0;
|
|
502
|
-
const targetIndex = op.targetIndex ?? 0;
|
|
503
|
-
const slot = ensureOutputSlot(workflow.connections, op.source, connectionType, sourceIndex);
|
|
504
|
-
const exists = slot.some((c) => c.node === op.target && c.type === connectionType && c.index === targetIndex);
|
|
505
|
-
if (!exists) {
|
|
506
|
-
slot.push({ node: op.target, type: connectionType, index: targetIndex });
|
|
507
|
-
}
|
|
508
|
-
break;
|
|
509
|
-
}
|
|
510
|
-
case 'removeConnection': {
|
|
511
|
-
const connectionType = (op.connectionType ??
|
|
512
|
-
n8n_workflow_1.NodeConnectionTypes.Main);
|
|
513
|
-
const sourceIndex = op.sourceIndex ?? 0;
|
|
514
|
-
const targetIndex = op.targetIndex ?? 0;
|
|
515
|
-
const byType = workflow.connections[op.source];
|
|
516
|
-
const outputs = byType?.[connectionType];
|
|
517
|
-
const slot = outputs?.[sourceIndex];
|
|
518
|
-
if (!slot) {
|
|
519
|
-
return fail(i, `no '${connectionType}' connection from '${op.source}'`);
|
|
520
|
-
}
|
|
521
|
-
const filtered = slot.filter((c) => !(c.node === op.target && c.type === connectionType && c.index === targetIndex));
|
|
522
|
-
if (filtered.length === slot.length) {
|
|
523
|
-
return fail(i, `connection from '${op.source}'[${sourceIndex}] to '${op.target}'[${targetIndex}] does not exist`);
|
|
524
|
-
}
|
|
525
|
-
outputs[sourceIndex] = filtered;
|
|
526
|
-
pruneConnectionShape(workflow.connections, op.source, connectionType);
|
|
527
|
-
break;
|
|
528
|
-
}
|
|
529
|
-
case 'setNodeCredential': {
|
|
530
|
-
const node = nodeByName.get(op.nodeName);
|
|
531
|
-
if (!node)
|
|
532
|
-
return fail(i, `node '${op.nodeName}' not found`);
|
|
533
|
-
if (!(0, n8n_workflow_1.isSafeObjectProperty)(op.credentialKey)) {
|
|
534
|
-
return fail(i, `credential key '${op.credentialKey}' is not allowed`);
|
|
535
|
-
}
|
|
536
|
-
node.credentials = {
|
|
537
|
-
...(node.credentials ?? {}),
|
|
538
|
-
[op.credentialKey]: { id: op.credentialId, name: op.credentialName },
|
|
539
|
-
};
|
|
540
|
-
break;
|
|
541
|
-
}
|
|
542
|
-
case 'setNodePosition': {
|
|
543
|
-
const node = nodeByName.get(op.nodeName);
|
|
544
|
-
if (!node)
|
|
545
|
-
return fail(i, `node '${op.nodeName}' not found`);
|
|
546
|
-
node.position = op.position;
|
|
547
|
-
break;
|
|
548
|
-
}
|
|
549
|
-
case 'setNodeDisabled': {
|
|
550
|
-
const node = nodeByName.get(op.nodeName);
|
|
551
|
-
if (!node)
|
|
552
|
-
return fail(i, `node '${op.nodeName}' not found`);
|
|
553
|
-
node.disabled = op.disabled;
|
|
554
|
-
break;
|
|
555
|
-
}
|
|
556
|
-
case 'setNodeSettings': {
|
|
557
|
-
const node = nodeByName.get(op.nodeName);
|
|
558
|
-
if (!node)
|
|
559
|
-
return fail(i, `node '${op.nodeName}' not found`);
|
|
560
|
-
const s = op.settings;
|
|
561
|
-
if (s.onError !== undefined)
|
|
562
|
-
node.onError = s.onError;
|
|
563
|
-
if (s.retryOnFail !== undefined)
|
|
564
|
-
node.retryOnFail = s.retryOnFail;
|
|
565
|
-
if (s.maxTries !== undefined)
|
|
566
|
-
node.maxTries = s.maxTries;
|
|
567
|
-
if (s.waitBetweenTries !== undefined)
|
|
568
|
-
node.waitBetweenTries = s.waitBetweenTries;
|
|
569
|
-
if (s.alwaysOutputData !== undefined)
|
|
570
|
-
node.alwaysOutputData = s.alwaysOutputData;
|
|
571
|
-
if (s.executeOnce !== undefined)
|
|
572
|
-
node.executeOnce = s.executeOnce;
|
|
573
|
-
break;
|
|
574
|
-
}
|
|
575
|
-
case 'setWorkflowMetadata': {
|
|
576
|
-
if (op.name !== undefined)
|
|
577
|
-
workflow.name = op.name;
|
|
578
|
-
if (op.description !== undefined)
|
|
579
|
-
workflow.description = op.description;
|
|
580
|
-
break;
|
|
581
|
-
}
|
|
582
|
-
case 'setWorkflowSettings': {
|
|
583
|
-
workflow.settings = { ...(workflow.settings ?? {}), ...op.settings };
|
|
584
|
-
break;
|
|
585
|
-
}
|
|
586
|
-
case 'setNodeGroups': {
|
|
587
|
-
workflow.nodeGroups = op.nodeGroups.map((group) => {
|
|
588
|
-
const description = group.description?.trim();
|
|
589
|
-
return {
|
|
590
|
-
id: group.id ?? (0, uuid_1.v4)(),
|
|
591
|
-
name: group.name,
|
|
592
|
-
nodeIds: [...group.nodeIds],
|
|
593
|
-
...(description ? { description } : {}),
|
|
594
|
-
};
|
|
595
|
-
});
|
|
596
|
-
break;
|
|
597
|
-
}
|
|
598
|
-
case 'addTags':
|
|
599
|
-
case 'removeTags': {
|
|
600
|
-
if (workflow.tagNames === undefined) {
|
|
601
|
-
return fail(i, 'tag operations require existing tags to be loaded');
|
|
602
|
-
}
|
|
603
|
-
if (tagSet === null)
|
|
604
|
-
tagSet = new Set(workflow.tagNames);
|
|
605
|
-
if (op.type === 'addTags') {
|
|
606
|
-
for (const name of op.names)
|
|
607
|
-
tagSet.add(name);
|
|
608
|
-
}
|
|
609
|
-
else {
|
|
610
|
-
for (const name of op.names)
|
|
611
|
-
tagSet.delete(name);
|
|
612
|
-
}
|
|
613
|
-
break;
|
|
614
|
-
}
|
|
615
|
-
default: {
|
|
616
|
-
op;
|
|
617
|
-
return fail(i, 'unknown operation type');
|
|
618
|
-
}
|
|
795
|
+
const handler = OPERATION_HANDLERS[op.type];
|
|
796
|
+
const error = handler(op, ctx);
|
|
797
|
+
if (error) {
|
|
798
|
+
return fail(i, error);
|
|
619
799
|
}
|
|
620
800
|
}
|
|
621
|
-
if (tagSet !== null) {
|
|
622
|
-
workflow.tagNames = [...tagSet];
|
|
801
|
+
if (ctx.tagSet !== null) {
|
|
802
|
+
ctx.workflow.tagNames = [...ctx.tagSet];
|
|
623
803
|
}
|
|
624
804
|
return {
|
|
625
805
|
success: true,
|
|
626
|
-
workflow,
|
|
627
|
-
addedNodeNames: [...addedNodeNames],
|
|
628
|
-
tagNames: tagSet !== null ? [...tagSet] : undefined,
|
|
806
|
+
workflow: ctx.workflow,
|
|
807
|
+
addedNodeNames: [...ctx.addedNodeNames],
|
|
808
|
+
tagNames: ctx.tagSet !== null ? [...ctx.tagSet] : undefined,
|
|
809
|
+
nodeGroupsChanged: ctx.nodeGroupsChanged,
|
|
629
810
|
};
|
|
630
811
|
}
|
|
631
812
|
function toWorkflowSlice(workflow, options = {}) {
|