n8n 2.40.4 → 2.41.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/build.tsbuildinfo +1 -1
- package/dist/commands/import/credentials.js +12 -3
- package/dist/commands/import/credentials.js.map +1 -1
- package/dist/commands/import/workflow.js +4 -4
- package/dist/commands/import/workflow.js.map +1 -1
- package/dist/commands/start.js +5 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/controllers/ai-preference.controller.js +1 -1
- package/dist/controllers/ai-preference.controller.js.map +1 -1
- package/dist/controllers/ai.controller.d.ts +1 -0
- package/dist/controllers/dev.controller.d.ts +8 -0
- package/dist/controllers/dev.controller.js +35 -0
- package/dist/controllers/dev.controller.js.map +1 -0
- package/dist/controllers/me.controller.d.ts +2 -4
- package/dist/controllers/me.controller.js +9 -24
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/role.controller.js +1 -0
- package/dist/controllers/role.controller.js.map +1 -1
- package/dist/crash-journal.js +1 -1
- package/dist/crash-journal.js.map +1 -1
- package/dist/credentials/credential-dependency.service.d.ts +2 -2
- package/dist/credentials/credential-dependency.service.js +5 -4
- package/dist/credentials/credential-dependency.service.js.map +1 -1
- package/dist/credentials/credentials-finder.service.d.ts +1 -0
- package/dist/credentials/credentials.controller.d.ts +4 -0
- package/dist/credentials/credentials.controller.js +5 -0
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +16 -3
- package/dist/credentials/credentials.service.ee.d.ts +2 -0
- package/dist/credentials/credentials.service.js +112 -30
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/credentials/validation.d.ts +1 -0
- package/dist/credentials/validation.js +11 -0
- package/dist/credentials/validation.js.map +1 -1
- package/dist/credentials-helper.d.ts +3 -2
- package/dist/credentials-helper.js +39 -19
- package/dist/credentials-helper.js.map +1 -1
- package/dist/credentials-overwrites.js +2 -0
- package/dist/credentials-overwrites.js.map +1 -1
- package/dist/errors/response-errors/incompatible-nodes-api-version.error.d.ts +11 -0
- package/dist/errors/response-errors/incompatible-nodes-api-version.error.js +13 -0
- package/dist/errors/response-errors/incompatible-nodes-api-version.error.js.map +1 -0
- package/dist/errors/unsupported-end-user-credential-trigger.error.d.ts +4 -0
- package/dist/errors/unsupported-end-user-credential-trigger.error.js +13 -0
- package/dist/errors/unsupported-end-user-credential-trigger.error.js.map +1 -0
- package/dist/eventbus/event-message-classes/abstract-event-message.d.ts +1 -1
- package/dist/eventbus/event-message-classes/abstract-event-message.js +8 -0
- package/dist/eventbus/event-message-classes/abstract-event-message.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-ai-node.d.ts +0 -2
- package/dist/eventbus/event-message-classes/event-message-ai-node.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-ai-node.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-audit.d.ts +1 -2
- package/dist/eventbus/event-message-classes/event-message-audit.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-audit.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-execution.d.ts +0 -2
- package/dist/eventbus/event-message-classes/event-message-execution.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-execution.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-generic.d.ts +0 -2
- package/dist/eventbus/event-message-classes/event-message-generic.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-generic.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-mcp.d.ts +0 -2
- package/dist/eventbus/event-message-classes/event-message-mcp.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-mcp.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-node.d.ts +0 -2
- package/dist/eventbus/event-message-classes/event-message-node.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-node.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-queue.d.ts +0 -2
- package/dist/eventbus/event-message-classes/event-message-queue.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-queue.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-runner.d.ts +0 -2
- package/dist/eventbus/event-message-classes/event-message-runner.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-runner.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-workflow.d.ts +1 -2
- package/dist/eventbus/event-message-classes/event-message-workflow.js +0 -8
- package/dist/eventbus/event-message-classes/event-message-workflow.js.map +1 -1
- package/dist/events/event.service.d.ts +3 -2
- package/dist/events/event.service.js.map +1 -1
- package/dist/events/maps/mcp-post-save-metrics.event-map.d.ts +7 -0
- package/dist/events/maps/mcp-post-save-metrics.event-map.js +3 -0
- package/dist/events/maps/mcp-post-save-metrics.event-map.js.map +1 -0
- package/dist/events/maps/relay.event-map.d.ts +3 -0
- package/dist/events/maps/system-task-metrics.event-map.d.ts +45 -0
- package/dist/events/maps/system-task-metrics.event-map.js +3 -0
- package/dist/events/maps/system-task-metrics.event-map.js.map +1 -0
- package/dist/events/relays/activity.event-relay.d.ts +9 -3
- package/dist/events/relays/activity.event-relay.js +33 -4
- package/dist/events/relays/activity.event-relay.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.js +34 -14
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js +10 -6
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
- package/dist/execution-lifecycle/shared/shared-hook-functions.d.ts +1 -1
- package/dist/execution-lifecycle/shared/shared-hook-functions.js +2 -1
- package/dist/execution-lifecycle/shared/shared-hook-functions.js.map +1 -1
- package/dist/executions/engine-v2-execution-reader.service.d.ts +26 -0
- package/dist/executions/engine-v2-execution-reader.service.js +58 -13
- package/dist/executions/engine-v2-execution-reader.service.js.map +1 -1
- package/dist/executions/engine-v2-mapping.d.ts +5 -0
- package/dist/executions/engine-v2-mapping.js +30 -0
- package/dist/executions/engine-v2-mapping.js.map +1 -0
- package/dist/executions/execution-cursor.d.ts +51 -0
- package/dist/executions/execution-cursor.js +39 -0
- package/dist/executions/execution-cursor.js.map +1 -0
- package/dist/executions/execution-id.js +2 -2
- package/dist/executions/execution-id.js.map +1 -1
- package/dist/executions/execution-list-v1.service.d.ts +27 -0
- package/dist/executions/execution-list-v1.service.js +98 -0
- package/dist/executions/execution-list-v1.service.js.map +1 -0
- package/dist/executions/execution-list-v2.service.d.ts +25 -0
- package/dist/executions/execution-list-v2.service.js +168 -0
- package/dist/executions/execution-list-v2.service.js.map +1 -0
- package/dist/executions/execution-list.service.d.ts +19 -0
- package/dist/executions/execution-list.service.js +67 -0
- package/dist/executions/execution-list.service.js.map +1 -0
- package/dist/executions/execution-recovery.service.d.ts +1 -2
- package/dist/executions/execution-recovery.service.js +1 -2
- package/dist/executions/execution-recovery.service.js.map +1 -1
- package/dist/executions/execution.service.d.ts +1 -34
- package/dist/executions/execution.service.js +4 -73
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/executions/execution.types.d.ts +4 -2
- package/dist/executions/executions.controller.d.ts +4 -1
- package/dist/executions/executions.controller.js +12 -23
- package/dist/executions/executions.controller.js.map +1 -1
- package/dist/executions/merge-execution-pages.d.ts +10 -0
- package/dist/executions/merge-execution-pages.js +30 -0
- package/dist/executions/merge-execution-pages.js.map +1 -0
- package/dist/executions/parse-range-query.middleware.d.ts +2 -3
- package/dist/executions/parse-range-query.middleware.js +27 -21
- package/dist/executions/parse-range-query.middleware.js.map +1 -1
- package/dist/external-hooks.d.ts +6 -2
- package/dist/load-nodes-and-credentials.d.ts +3 -0
- package/dist/load-nodes-and-credentials.js +37 -15
- package/dist/load-nodes-and-credentials.js.map +1 -1
- package/dist/metrics/prometheus/constant.d.ts +1 -0
- package/dist/metrics/prometheus/constant.js +4 -1
- package/dist/metrics/prometheus/constant.js.map +1 -1
- package/dist/metrics/prometheus/mcp-post-save-metrics.service.d.ts +10 -0
- package/dist/metrics/prometheus/mcp-post-save-metrics.service.js +44 -0
- package/dist/metrics/prometheus/mcp-post-save-metrics.service.js.map +1 -0
- package/dist/metrics/prometheus/prometheus.service.d.ts +3 -1
- package/dist/metrics/prometheus/prometheus.service.js +6 -2
- package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
- package/dist/metrics/prometheus/system-task-metrics.service.d.ts +12 -0
- package/dist/metrics/prometheus/system-task-metrics.service.js +157 -0
- package/dist/metrics/prometheus/system-task-metrics.service.js.map +1 -0
- package/dist/middlewares/list-query/dtos/credentials.select.dto.js +1 -0
- package/dist/middlewares/list-query/dtos/credentials.select.dto.js.map +1 -1
- package/dist/modules/agents/adapters/agents-credential-provider.d.ts +2 -1
- package/dist/modules/agents/adapters/agents-credential-provider.js +3 -1
- package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
- package/dist/modules/agents/agent-chat.controller.js +32 -37
- 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-conversation-state.service.d.ts +12 -0
- package/dist/modules/agents/agent-conversation-state.service.js +34 -0
- package/dist/modules/agents/agent-conversation-state.service.js.map +1 -0
- package/dist/modules/agents/agent-custom-tools.service.js +2 -2
- package/dist/modules/agents/agent-custom-tools.service.js.map +1 -1
- package/dist/modules/agents/agent-execution-orchestrator.service.d.ts +13 -6
- package/dist/modules/agents/agent-execution-orchestrator.service.js +284 -417
- package/dist/modules/agents/agent-execution-orchestrator.service.js.map +1 -1
- package/dist/modules/agents/agent-execution-recording.error.d.ts +21 -0
- package/dist/modules/agents/agent-execution-recording.error.js +17 -0
- package/dist/modules/agents/agent-execution-recording.error.js.map +1 -0
- package/dist/modules/agents/agent-execution.service.d.ts +1 -1
- package/dist/modules/agents/agent-execution.service.js +51 -20
- package/dist/modules/agents/agent-execution.service.js.map +1 -1
- package/dist/modules/agents/agent-integration-management.service.d.ts +5 -3
- package/dist/modules/agents/agent-integration-management.service.js +9 -6
- package/dist/modules/agents/agent-integration-management.service.js.map +1 -1
- package/dist/modules/agents/agent-integrations.controller.d.ts +1 -3
- package/dist/modules/agents/agent-integrations.controller.js +4 -6
- package/dist/modules/agents/agent-integrations.controller.js.map +1 -1
- package/dist/modules/agents/agent-message-mapper.d.ts +1 -1
- package/dist/modules/agents/agent-message-mapper.js +3 -0
- package/dist/modules/agents/agent-message-mapper.js.map +1 -1
- package/dist/modules/agents/agent-modification-telemetry.service.d.ts +2 -2
- package/dist/modules/agents/agent-modification-telemetry.service.js.map +1 -1
- package/dist/modules/agents/agent-publish.service.js +5 -5
- package/dist/modules/agents/agent-publish.service.js.map +1 -1
- package/dist/modules/agents/agent-runnable-state.service.js +1 -1
- package/dist/modules/agents/agent-runnable-state.service.js.map +1 -1
- package/dist/modules/agents/agent-runtime-cache.service.js +1 -1
- package/dist/modules/agents/agent-runtime-cache.service.js.map +1 -1
- package/dist/modules/agents/agent-runtime-reconstruction.service.js +1 -1
- package/dist/modules/agents/agent-runtime-reconstruction.service.js.map +1 -1
- package/dist/modules/agents/agent-skills.service.js +3 -3
- package/dist/modules/agents/agent-skills.service.js.map +1 -1
- package/dist/modules/agents/agent-sse-stream.d.ts +4 -1
- package/dist/modules/agents/agent-sse-stream.js +46 -33
- package/dist/modules/agents/agent-sse-stream.js.map +1 -1
- package/dist/modules/agents/agent-task.service.js +3 -3
- package/dist/modules/agents/agent-task.service.js.map +1 -1
- package/dist/modules/agents/agent-test-run.service.d.ts +24 -41
- package/dist/modules/agents/agent-test-run.service.js +83 -59
- package/dist/modules/agents/agent-test-run.service.js.map +1 -1
- package/dist/modules/agents/agent-turn-execution.service.d.ts +49 -0
- package/dist/modules/agents/agent-turn-execution.service.js +212 -0
- package/dist/modules/agents/agent-turn-execution.service.js.map +1 -0
- package/dist/modules/agents/agent-workflow-execution.service.d.ts +6 -3
- package/dist/modules/agents/agent-workflow-execution.service.js +77 -105
- package/dist/modules/agents/agent-workflow-execution.service.js.map +1 -1
- package/dist/modules/agents/agent-workflow-tool-resume.service.d.ts +0 -1
- package/dist/modules/agents/agent-workflow-tool-resume.service.js +46 -20
- package/dist/modules/agents/agent-workflow-tool-resume.service.js.map +1 -1
- package/dist/modules/agents/agents-config.controller.js +1 -1
- package/dist/modules/agents/agents-config.controller.js.map +1 -1
- package/dist/modules/agents/background/agent-wake.service.d.ts +3 -5
- package/dist/modules/agents/background/agent-wake.service.js +6 -10
- package/dist/modules/agents/background/agent-wake.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-prompts.d.ts +1 -1
- package/dist/modules/agents/builder/agents-builder-prompts.js +21 -0
- package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
- package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +2 -2
- package/dist/modules/agents/builder/skills/external-services.skill.js +4 -1
- package/dist/modules/agents/builder/skills/external-services.skill.js.map +1 -1
- package/dist/modules/agents/entities/agent-checkpoint.entity.d.ts +1 -0
- package/dist/modules/agents/entities/agent-checkpoint.entity.js +10 -1
- package/dist/modules/agents/entities/agent-checkpoint.entity.js.map +1 -1
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +1 -1
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +3 -3
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-bridge.d.ts +11 -24
- package/dist/modules/agents/integrations/agent-chat-bridge.js +58 -28
- package/dist/modules/agents/integrations/agent-chat-bridge.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-hitl-resume-handler.d.ts +5 -12
- package/dist/modules/agents/integrations/agent-chat-hitl-resume-handler.js +8 -3
- package/dist/modules/agents/integrations/agent-chat-hitl-resume-handler.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-integration.d.ts +2 -1
- package/dist/modules/agents/integrations/agent-chat-integration.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-message-context.d.ts +4 -4
- package/dist/modules/agents/integrations/agent-chat-message-context.js +4 -37
- package/dist/modules/agents/integrations/agent-chat-message-context.js.map +1 -1
- package/dist/modules/agents/integrations/integration-message-context.d.ts +7 -0
- package/dist/modules/agents/integrations/integration-message-context.js +115 -0
- package/dist/modules/agents/integrations/integration-message-context.js.map +1 -0
- package/dist/modules/agents/integrations/integration-message-context.service.d.ts +8 -3
- package/dist/modules/agents/integrations/integration-message-context.service.js +36 -58
- package/dist/modules/agents/integrations/integration-message-context.service.js.map +1 -1
- package/dist/modules/agents/integrations/integration-tool-definitions.js +1 -1
- package/dist/modules/agents/integrations/integration-tool-definitions.js.map +1 -1
- package/dist/modules/agents/integrations/integration-tool-execution.d.ts +0 -1
- package/dist/modules/agents/integrations/integration-tool-execution.js +19 -42
- package/dist/modules/agents/integrations/integration-tool-execution.js.map +1 -1
- package/dist/modules/agents/integrations/integration-tool-factory.d.ts +0 -1
- package/dist/modules/agents/integrations/integration-tool-factory.js +1 -3
- package/dist/modules/agents/integrations/integration-tool-factory.js.map +1 -1
- package/dist/modules/agents/integrations/integration-tool-types.d.ts +13 -0
- package/dist/modules/agents/integrations/n8n-checkpoint-storage.js +4 -2
- package/dist/modules/agents/integrations/n8n-checkpoint-storage.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/telegram-bridge-behavior.d.ts +2 -0
- package/dist/modules/agents/integrations/platforms/telegram-bridge-behavior.js +40 -0
- package/dist/modules/agents/integrations/platforms/telegram-bridge-behavior.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/telegram-integration.d.ts +1 -0
- package/dist/modules/agents/integrations/platforms/telegram-integration.js +4 -0
- package/dist/modules/agents/integrations/platforms/telegram-integration.js.map +1 -1
- package/dist/modules/agents/repositories/agent-checkpoint.repository.d.ts +1 -1
- package/dist/modules/agents/repositories/agent-checkpoint.repository.js +2 -2
- package/dist/modules/agents/repositories/agent-checkpoint.repository.js.map +1 -1
- package/dist/modules/agents/repositories/agent-execution.repository.d.ts +2 -1
- package/dist/modules/agents/repositories/agent-execution.repository.js +7 -4
- package/dist/modules/agents/repositories/agent-execution.repository.js.map +1 -1
- package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js +3 -0
- package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js.map +1 -1
- package/dist/modules/agents/sub-agents/sub-agent-runner.d.ts +3 -4
- package/dist/modules/agents/sub-agents/sub-agent-runner.js +95 -151
- package/dist/modules/agents/sub-agents/sub-agent-runner.js.map +1 -1
- package/dist/modules/agents/tools/workflow-tool-factory.js +1 -1
- package/dist/modules/agents/tools/workflow-tool-factory.js.map +1 -1
- package/dist/modules/agents/utils/agent-credential-provider.d.ts +1 -1
- package/dist/modules/agents/utils/agent-credential-provider.js +2 -2
- package/dist/modules/agents/utils/agent-credential-provider.js.map +1 -1
- package/dist/modules/agents/utils/execution-to-message-mapper.d.ts +1 -1
- package/dist/modules/agents/utils/execution-to-message-mapper.js +3 -0
- package/dist/modules/agents/utils/execution-to-message-mapper.js.map +1 -1
- package/dist/modules/agents/utils/mcp-attribution.js +3 -1
- package/dist/modules/agents/utils/mcp-attribution.js.map +1 -1
- package/dist/modules/breaking-changes/breaking-changes.migration-registry.service.d.ts +2 -2
- package/dist/modules/breaking-changes/breaking-changes.migration-registry.service.js.map +1 -1
- package/dist/modules/breaking-changes/breaking-changes.migration.service.d.ts +4 -11
- package/dist/modules/breaking-changes/breaking-changes.migration.service.js +52 -28
- package/dist/modules/breaking-changes/breaking-changes.migration.service.js.map +1 -1
- package/dist/modules/breaking-changes/detection-report.d.ts +5 -0
- package/dist/modules/breaking-changes/detection-report.js +18 -0
- package/dist/modules/breaking-changes/detection-report.js.map +1 -0
- package/dist/modules/breaking-changes/migrations/execute-workflow-each-to-loop.migration.d.ts +2 -0
- package/dist/modules/breaking-changes/migrations/execute-workflow-each-to-loop.migration.js +159 -0
- package/dist/modules/breaking-changes/migrations/execute-workflow-each-to-loop.migration.js.map +1 -0
- package/dist/modules/breaking-changes/migrations/index.d.ts +2 -2
- package/dist/modules/breaking-changes/migrations/index.js +2 -1
- package/dist/modules/breaking-changes/migrations/index.js.map +1 -1
- package/dist/modules/breaking-changes/migrations/node-migration.d.ts +30 -1
- package/dist/modules/breaking-changes/migrations/node-migration.js +12 -0
- package/dist/modules/breaking-changes/migrations/node-migration.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v2/oauth-callback-auth.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v2/oauth-callback-auth.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v2/pyodide-removed.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v2/pyodide-removed.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/agent-node-version.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v3/agent-node-version.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/agent-removed-modes.rule.js +7 -13
- package/dist/modules/breaking-changes/rules/v3/agent-removed-modes.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/ai-transform-deprecated.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v3/ai-transform-deprecated.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/always-output-data-multi-output.rule.js +6 -13
- package/dist/modules/breaking-changes/rules/v3/always-output-data-multi-output.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/caller-policy-default-any.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/caller-policy-default-any.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/chat-hub-deprecated.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/chat-hub-deprecated.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/chat-trigger-embedded-json.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v3/chat-trigger-embedded-json.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/execute-workflow-each-mode.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v3/execute-workflow-each-mode.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/execute-workflow-source-modes.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v3/execute-workflow-source-modes.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/external-secrets-project-roles-default.rule.js +3 -2
- package/dist/modules/breaking-changes/rules/v3/external-secrets-project-roles-default.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/gmail-trigger-version.rule.js +6 -12
- package/dist/modules/breaking-changes/rules/v3/gmail-trigger-version.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/pre-execute-error-creates-execution.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/pre-execute-error-creates-execution.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/ssrf-default-blocked-ranges.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/ssrf-default-blocked-ranges.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js +2 -1
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub-workflow.service.d.ts +1 -0
- package/dist/modules/chat-hub/chat-hub-workflow.service.js +7 -2
- package/dist/modules/chat-hub/chat-hub-workflow.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.attachment.service.js +3 -1
- package/dist/modules/chat-hub/chat-hub.attachment.service.js.map +1 -1
- package/dist/modules/community-packages/community-node-types-utils.d.ts +2 -2
- package/dist/modules/community-packages/community-node-types-utils.js +4 -2
- package/dist/modules/community-packages/community-node-types-utils.js.map +1 -1
- package/dist/modules/community-packages/community-node-types.service.d.ts +1 -0
- package/dist/modules/community-packages/community-node-types.service.js +12 -6
- package/dist/modules/community-packages/community-node-types.service.js.map +1 -1
- package/dist/modules/community-packages/community-packages.config.d.ts +1 -0
- package/dist/modules/community-packages/community-packages.config.js +2 -0
- package/dist/modules/community-packages/community-packages.config.js.map +1 -1
- package/dist/modules/community-packages/community-packages.lifecycle.service.d.ts +2 -1
- package/dist/modules/community-packages/community-packages.lifecycle.service.js +23 -18
- package/dist/modules/community-packages/community-packages.lifecycle.service.js.map +1 -1
- package/dist/modules/community-packages/community-packages.service.d.ts +1 -0
- package/dist/modules/community-packages/community-packages.service.js +33 -2
- package/dist/modules/community-packages/community-packages.service.js.map +1 -1
- package/dist/modules/engine-v2/engine-data-plane-client.d.ts +2 -1
- package/dist/modules/engine-v2/engine-data-plane-client.js +14 -0
- package/dist/modules/engine-v2/engine-data-plane-client.js.map +1 -1
- package/dist/modules/engine-v2/engine-v2.module.d.ts +1 -0
- package/dist/modules/engine-v2/engine-v2.module.js +11 -2
- package/dist/modules/engine-v2/engine-v2.module.js.map +1 -1
- package/dist/modules/engine-v2/engine-v2.runtime.d.ts +11 -2
- package/dist/modules/engine-v2/engine-v2.runtime.js +29 -11
- package/dist/modules/engine-v2/engine-v2.runtime.js.map +1 -1
- package/dist/modules/external-secrets.ee/constants.d.ts +0 -1
- package/dist/modules/external-secrets.ee/constants.js +1 -2
- package/dist/modules/external-secrets.ee/constants.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets-provider-connection-manager.ee.d.ts +1 -2
- package/dist/modules/external-secrets.ee/external-secrets-provider-connection-manager.ee.js +28 -29
- package/dist/modules/external-secrets.ee/external-secrets-provider-connection-manager.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets.config.d.ts +2 -0
- package/dist/modules/external-secrets.ee/external-secrets.config.js +12 -0
- package/dist/modules/external-secrets.ee/external-secrets.config.js.map +1 -1
- package/dist/modules/external-secrets.ee/provider-lifecycle.service.js +1 -1
- package/dist/modules/external-secrets.ee/provider-lifecycle.service.js.map +1 -1
- package/dist/modules/external-secrets.ee/providers/infisical.js +6 -2
- package/dist/modules/external-secrets.ee/providers/infisical.js.map +1 -1
- package/dist/modules/external-secrets.ee/providers/vault.d.ts +1 -0
- package/dist/modules/external-secrets.ee/providers/vault.js +43 -13
- package/dist/modules/external-secrets.ee/providers/vault.js.map +1 -1
- package/dist/modules/external-secrets.ee/retry-manager.service.js +9 -1
- package/dist/modules/external-secrets.ee/retry-manager.service.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-cache.service.d.ts +5 -2
- package/dist/modules/external-secrets.ee/secrets-cache.service.js +23 -20
- package/dist/modules/external-secrets.ee/secrets-cache.service.js.map +1 -1
- package/dist/modules/external-secrets.ee/types.d.ts +1 -0
- package/dist/modules/external-secrets.ee/types.js +7 -1
- package/dist/modules/external-secrets.ee/types.js.map +1 -1
- package/dist/modules/external-secrets.ee/with-timeout.d.ts +4 -0
- package/dist/modules/external-secrets.ee/with-timeout.js +21 -0
- package/dist/modules/external-secrets.ee/with-timeout.js.map +1 -0
- package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +3 -2
- package/dist/modules/insights/database/repositories/insights-by-period.repository.js +4 -3
- package/dist/modules/insights/database/repositories/insights-by-period.repository.js.map +1 -1
- package/dist/modules/insights/insights-collection.service.js +10 -2
- package/dist/modules/insights/insights-collection.service.js.map +1 -1
- package/dist/modules/insights/insights.module.d.ts +1 -1
- package/dist/modules/instance-ai/computer-use-availability.d.ts +14 -0
- package/dist/modules/instance-ai/computer-use-availability.js +42 -0
- package/dist/modules/instance-ai/computer-use-availability.js.map +1 -0
- package/dist/modules/instance-ai/eval/agent-execution.service.js +1 -1
- package/dist/modules/instance-ai/eval/agent-execution.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.d.ts +4 -2
- package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js +17 -3
- package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js.map +1 -1
- package/dist/modules/instance-ai/eval/execution.service.js +14 -4
- package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/thread-restore.service.d.ts +9 -3
- package/dist/modules/instance-ai/eval/thread-restore.service.js +75 -7
- package/dist/modules/instance-ai/eval/thread-restore.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/workflow-analysis.d.ts +3 -1
- package/dist/modules/instance-ai/eval/workflow-analysis.js +16 -2
- package/dist/modules/instance-ai/eval/workflow-analysis.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-conversation-history.service.js +1 -1
- package/dist/modules/instance-ai/instance-ai-conversation-history.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-execution-wait.d.ts +14 -0
- package/dist/modules/instance-ai/instance-ai-execution-wait.js +66 -0
- package/dist/modules/instance-ai/instance-ai-execution-wait.js.map +1 -0
- package/dist/modules/instance-ai/instance-ai-settings.service.js +1 -4
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-step-run.d.ts +32 -0
- package/dist/modules/instance-ai/instance-ai-step-run.js +135 -0
- package/dist/modules/instance-ai/instance-ai-step-run.js.map +1 -0
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +9 -2
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +305 -92
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.controller.d.ts +1 -0
- package/dist/modules/instance-ai/instance-ai.controller.js +17 -4
- package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +4 -4
- package/dist/modules/instance-ai/instance-ai.service.js +85 -121
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-context.service.d.ts +39 -10
- package/dist/modules/instance-ai/instance-context.service.js +283 -69
- package/dist/modules/instance-ai/instance-context.service.js.map +1 -1
- package/dist/modules/instance-ai/internal-messages.d.ts +11 -2
- package/dist/modules/instance-ai/internal-messages.js +183 -16
- package/dist/modules/instance-ai/internal-messages.js.map +1 -1
- package/dist/modules/instance-ai/message-parser.js.map +1 -1
- package/dist/modules/instance-registry/instance-registry.module.d.ts +2 -2
- package/dist/modules/instance-registry/instance-registry.module.js +5 -1
- package/dist/modules/instance-registry/instance-registry.module.js.map +1 -1
- package/dist/modules/instance-registry/stale-member-cleanup.task.d.ts +1 -1
- package/dist/modules/instance-registry/stale-member-cleanup.task.js +1 -1
- package/dist/modules/instance-registry/stale-member-cleanup.task.js.map +1 -1
- package/dist/modules/instance-registry/storage/redis-instance-storage.js +2 -10
- package/dist/modules/instance-registry/storage/redis-instance-storage.js.map +1 -1
- package/dist/modules/mcp/mcp-post-save-metrics.service.d.ts +10 -0
- package/dist/modules/mcp/mcp-post-save-metrics.service.js +40 -0
- package/dist/modules/mcp/mcp-post-save-metrics.service.js.map +1 -0
- package/dist/modules/mcp/mcp-protected-resource.d.ts +5 -2
- package/dist/modules/mcp/mcp-protected-resource.js +25 -4
- package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
- package/dist/modules/mcp/mcp-scopes.d.ts +3 -0
- package/dist/modules/mcp/mcp-scopes.js +21 -1
- package/dist/modules/mcp/mcp-scopes.js.map +1 -1
- package/dist/modules/mcp/mcp-tool-availability.d.ts +7 -0
- package/dist/modules/mcp/mcp-tool-availability.js +11 -0
- package/dist/modules/mcp/mcp-tool-availability.js.map +1 -1
- package/dist/modules/mcp/mcp.config.d.ts +1 -0
- package/dist/modules/mcp/mcp.config.js +5 -0
- package/dist/modules/mcp/mcp.config.js.map +1 -1
- package/dist/modules/mcp/mcp.constants.d.ts +6 -0
- package/dist/modules/mcp/mcp.constants.js +7 -1
- package/dist/modules/mcp/mcp.constants.js.map +1 -1
- package/dist/modules/mcp/mcp.controller.js +3 -6
- package/dist/modules/mcp/mcp.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +11 -7
- package/dist/modules/mcp/mcp.service.js +116 -43
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/mcp.types.d.ts +0 -1
- package/dist/modules/mcp/tools/get-instance-context.tool.d.ts +29 -0
- package/dist/modules/mcp/tools/get-instance-context.tool.js +109 -0
- package/dist/modules/mcp/tools/get-instance-context.tool.js.map +1 -0
- package/dist/modules/mcp/tools/get-node-usage.tool.d.ts +13 -0
- package/dist/modules/mcp/tools/get-node-usage.tool.js +117 -0
- package/dist/modules/mcp/tools/get-node-usage.tool.js.map +1 -0
- package/dist/modules/mcp/tools/get-user-preferences.tool.d.ts +10 -0
- package/dist/modules/mcp/tools/get-user-preferences.tool.js +108 -0
- package/dist/modules/mcp/tools/get-user-preferences.tool.js.map +1 -0
- package/dist/modules/mcp/tools/instance-activity.tool.d.ts +27 -0
- package/dist/modules/mcp/tools/instance-activity.tool.js +205 -0
- package/dist/modules/mcp/tools/instance-activity.tool.js.map +1 -0
- package/dist/modules/mcp/tools/list-credentials.tool.d.ts +63 -13
- package/dist/modules/mcp/tools/list-credentials.tool.js +8 -1
- package/dist/modules/mcp/tools/list-credentials.tool.js.map +1 -1
- package/dist/modules/mcp/tools/search-executions.tool.d.ts +3 -3
- package/dist/modules/mcp/tools/search-executions.tool.js +22 -14
- package/dist/modules/mcp/tools/search-executions.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +8 -4
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +128 -70
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/error-code.utils.d.ts +1 -0
- package/dist/modules/mcp/tools/workflow-builder/error-code.utils.js +22 -0
- package/dist/modules/mcp/tools/workflow-builder/error-code.utils.js.map +1 -0
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.d.ts +1 -3
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.js +5 -6
- 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-node-types.tool.d.ts +1 -1
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.js +2 -2
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.d.ts +2 -5
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.js +10 -16
- package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/install-community-node.tool.d.ts +12 -0
- package/dist/modules/mcp/tools/workflow-builder/install-community-node.tool.js +140 -0
- package/dist/modules/mcp/tools/workflow-builder/install-community-node.tool.js.map +1 -0
- package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.d.ts +2 -2
- package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.js +17 -9
- 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 +1 -3
- package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.js +2 -6
- package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.d.ts +1 -1
- package/dist/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.js +9 -8
- package/dist/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/uninstalled-node-warnings.d.ts +13 -0
- package/dist/modules/mcp/tools/workflow-builder/uninstalled-node-warnings.js +23 -0
- package/dist/modules/mcp/tools/workflow-builder/uninstalled-node-warnings.js.map +1 -0
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.d.ts +18 -14
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +200 -87
- 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 +1 -4
- package/dist/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.js +3 -5
- 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 +1 -3
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js +2 -2
- package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js.map +1 -1
- package/dist/modules/mcp-registry/node-description-transform.js +3 -0
- package/dist/modules/mcp-registry/node-description-transform.js.map +1 -1
- package/dist/modules/mcp-registry/registry/mcp-registry-api.client.js +1 -1
- package/dist/modules/mcp-registry/registry/mcp-registry-api.client.js.map +1 -1
- package/dist/modules/mcp-registry/registry/mcp-registry-capabilities.d.ts +6 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-capabilities.js +34 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-capabilities.js.map +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-server.entity.d.ts +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-server.entity.js.map +1 -1
- package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +4 -1
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js +20 -9
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
- package/dist/modules/mcp-registry/registry/mcp-registry.types.d.ts +3 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.types.js +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.types.js.map +1 -1
- package/dist/modules/n8n-packages/engine/n8n-package-parser.js +1 -1
- package/dist/modules/n8n-packages/engine/n8n-package-parser.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/credential.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/variable/variable-requirements.extractor.d.ts +8 -2
- package/dist/modules/n8n-packages/entities/variable/variable-requirements.extractor.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-published-state.d.ts +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-published-state.js +2 -2
- package/dist/modules/n8n-packages/entities/workflow/workflow-published-state.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.d.ts +1 -2
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js +4 -2
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/io/directory/package-directory-inventory-reader.d.ts +43 -0
- package/dist/modules/n8n-packages/io/directory/package-directory-inventory-reader.js +177 -0
- package/dist/modules/n8n-packages/io/directory/package-directory-inventory-reader.js.map +1 -0
- package/dist/modules/n8n-packages/spec/serialized/workflow-metadata.schema.d.ts +3 -0
- package/dist/modules/n8n-packages/spec/serialized/workflow-metadata.schema.js +1 -0
- package/dist/modules/n8n-packages/spec/serialized/workflow-metadata.schema.js.map +1 -1
- package/dist/modules/n8n-packages/spec/serialized/workflow.schema.d.ts +0 -3
- package/dist/modules/n8n-packages/spec/serialized/workflow.schema.js +0 -1
- package/dist/modules/n8n-packages/spec/serialized/workflow.schema.js.map +1 -1
- package/dist/modules/oauth-jwe/oauth-jwe-key.service.d.ts +1 -0
- package/dist/modules/oauth-jwe/oauth-jwe-key.service.js +10 -3
- package/dist/modules/oauth-jwe/oauth-jwe-key.service.js.map +1 -1
- package/dist/modules/oauth-server/oauth-clients.controller.js +1 -1
- package/dist/modules/oauth-server/oauth-clients.controller.js.map +1 -1
- package/dist/modules/oauth-server/oauth-consent.service.d.ts +1 -0
- package/dist/modules/oauth-server/oauth-consent.service.js +21 -10
- package/dist/modules/oauth-server/oauth-consent.service.js.map +1 -1
- package/dist/modules/oauth-server/oauth-server.service.d.ts +1 -1
- package/dist/modules/oauth-server/oauth-server.service.js +2 -2
- package/dist/modules/oauth-server/oauth-server.service.js.map +1 -1
- package/dist/modules/oauth-server/oauth-token.service.d.ts +3 -1
- package/dist/modules/oauth-server/oauth-token.service.js +10 -2
- package/dist/modules/oauth-server/oauth-token.service.js.map +1 -1
- package/dist/modules/policy-infrastructure/policy-decision-audit.d.ts +1 -1
- package/dist/modules/policy-infrastructure/policy-decision-audit.js +8 -1
- package/dist/modules/policy-infrastructure/policy-decision-audit.js.map +1 -1
- package/dist/modules/policy-infrastructure/policy-decision.service.js +1 -0
- package/dist/modules/policy-infrastructure/policy-decision.service.js.map +1 -1
- package/dist/modules/promotions.ee/base-branch-files.d.ts +2 -2
- package/dist/modules/promotions.ee/base-branch-files.js +2 -3
- package/dist/modules/promotions.ee/base-branch-files.js.map +1 -1
- package/dist/modules/promotions.ee/constants.d.ts +1 -0
- package/dist/modules/promotions.ee/constants.js +2 -1
- package/dist/modules/promotions.ee/constants.js.map +1 -1
- package/dist/modules/promotions.ee/database/repositories/promotion-provider.repository.js +1 -14
- package/dist/modules/promotions.ee/database/repositories/promotion-provider.repository.js.map +1 -1
- package/dist/modules/promotions.ee/promotion-binding-preflight.service.d.ts +22 -0
- package/dist/modules/promotions.ee/promotion-binding-preflight.service.js +264 -0
- package/dist/modules/promotions.ee/promotion-binding-preflight.service.js.map +1 -0
- package/dist/modules/promotions.ee/promotion-change.service.d.ts +8 -3
- package/dist/modules/promotions.ee/promotion-change.service.js +133 -24
- package/dist/modules/promotions.ee/promotion-change.service.js.map +1 -1
- package/dist/modules/promotions.ee/promotion-changes.controller.d.ts +2 -2
- package/dist/modules/promotions.ee/promotion-changes.controller.js +10 -12
- package/dist/modules/promotions.ee/promotion-changes.controller.js.map +1 -1
- package/dist/modules/promotions.ee/promotion-connections.service.d.ts +48 -2
- package/dist/modules/promotions.ee/promotion-connections.service.js +66 -14
- package/dist/modules/promotions.ee/promotion-connections.service.js.map +1 -1
- package/dist/modules/promotions.ee/promotions-git.service.d.ts +8 -1
- package/dist/modules/promotions.ee/promotions-git.service.js +27 -9
- package/dist/modules/promotions.ee/promotions-git.service.js.map +1 -1
- package/dist/modules/promotions.ee/promotions-git.utils.d.ts +8 -2
- package/dist/modules/promotions.ee/promotions-git.utils.js +10 -0
- package/dist/modules/promotions.ee/promotions-git.utils.js.map +1 -1
- package/dist/modules/promotions.ee/promotions.service.d.ts +9 -5
- package/dist/modules/promotions.ee/promotions.service.js +78 -21
- package/dist/modules/promotions.ee/promotions.service.js.map +1 -1
- package/dist/modules/promotions.ee/promotions.types.d.ts +6 -0
- package/dist/modules/promotions.ee/promotions.types.js.map +1 -1
- package/dist/modules/token-exchange/database/repositories/token-exchange-jti.repository.js +1 -0
- package/dist/modules/token-exchange/database/repositories/token-exchange-jti.repository.js.map +1 -1
- package/dist/modules/token-exchange/services/jti-cleanup.task.d.ts +1 -1
- package/dist/modules/token-exchange/services/jti-cleanup.task.js +1 -1
- package/dist/modules/token-exchange/services/jti-cleanup.task.js.map +1 -1
- package/dist/modules/type-availability-policies/constants.d.ts +1 -0
- package/dist/modules/type-availability-policies/constants.js +2 -1
- package/dist/modules/type-availability-policies/constants.js.map +1 -1
- package/dist/modules/type-availability-policies/database/entities/type-availability-policy.entity.js +2 -1
- package/dist/modules/type-availability-policies/database/entities/type-availability-policy.entity.js.map +1 -1
- package/dist/modules/type-availability-policies/database/repositories/type-availability-policy-scope.repository.d.ts +2 -1
- package/dist/modules/type-availability-policies/database/repositories/type-availability-policy-scope.repository.js +12 -0
- package/dist/modules/type-availability-policies/database/repositories/type-availability-policy-scope.repository.js.map +1 -1
- package/dist/modules/type-availability-policies/database/repositories/type-availability-policy.repository.d.ts +5 -1
- package/dist/modules/type-availability-policies/database/repositories/type-availability-policy.repository.js +11 -2
- package/dist/modules/type-availability-policies/database/repositories/type-availability-policy.repository.js.map +1 -1
- package/dist/modules/type-availability-policies/node-type-policy.check.d.ts +17 -0
- package/dist/modules/type-availability-policies/node-type-policy.check.js +87 -0
- package/dist/modules/type-availability-policies/node-type-policy.check.js.map +1 -0
- package/dist/modules/type-availability-policies/package-resolver.d.ts +4 -0
- package/dist/modules/type-availability-policies/package-resolver.js +26 -0
- package/dist/modules/type-availability-policies/package-resolver.js.map +1 -0
- package/dist/modules/type-availability-policies/policy-evaluator.d.ts +6 -4
- package/dist/modules/type-availability-policies/policy-evaluator.js +16 -13
- package/dist/modules/type-availability-policies/policy-evaluator.js.map +1 -1
- package/dist/modules/type-availability-policies/policy-rule.types.d.ts +4 -0
- package/dist/modules/type-availability-policies/policy-shadow-lint.d.ts +2 -1
- package/dist/modules/type-availability-policies/policy-shadow-lint.js +7 -5
- package/dist/modules/type-availability-policies/policy-shadow-lint.js.map +1 -1
- package/dist/modules/type-availability-policies/type-availability-policies.module.d.ts +1 -1
- package/dist/modules/type-availability-policies/type-availability-policies.module.js +1 -0
- package/dist/modules/type-availability-policies/type-availability-policies.module.js.map +1 -1
- package/dist/modules/type-availability-policies/type-availability-policy-instance.controller.js +3 -3
- package/dist/modules/type-availability-policies/type-availability-policy-instance.controller.js.map +1 -1
- package/dist/modules/type-availability-policies/type-availability-policy.service.d.ts +33 -4
- package/dist/modules/type-availability-policies/type-availability-policy.service.js +189 -28
- package/dist/modules/type-availability-policies/type-availability-policy.service.js.map +1 -1
- package/dist/modules/workflow-index/workflow-index.service.js +5 -2
- package/dist/modules/workflow-index/workflow-index.service.js.map +1 -1
- package/dist/node-catalog/index.d.ts +1 -1
- package/dist/node-catalog/index.js.map +1 -1
- package/dist/node-catalog/node-catalog.service.d.ts +28 -4
- package/dist/node-catalog/node-catalog.service.js +202 -7
- package/dist/node-catalog/node-catalog.service.js.map +1 -1
- package/dist/node-catalog/registry-lookup.d.ts +12 -0
- package/dist/node-catalog/registry-lookup.js +68 -0
- package/dist/node-catalog/registry-lookup.js.map +1 -0
- package/dist/node-execution/execute-node.service.d.ts +72 -0
- package/dist/node-execution/execute-node.service.js +297 -0
- package/dist/node-execution/execute-node.service.js.map +1 -0
- package/dist/node-execution/index.d.ts +2 -0
- package/dist/node-execution/index.js +5 -1
- package/dist/node-execution/index.js.map +1 -1
- package/dist/oauth/dcr-managed-fields.d.ts +1 -1
- package/dist/oauth/dcr-managed-fields.js +4 -2
- package/dist/oauth/dcr-managed-fields.js.map +1 -1
- package/dist/policy/policy-enforcement-backend.d.ts +2 -1
- package/dist/policy/policy-enforcement.service.d.ts +3 -1
- package/dist/policy/policy-enforcement.service.js +9 -0
- package/dist/policy/policy-enforcement.service.js.map +1 -1
- package/dist/posthog/index.d.ts +1 -0
- package/dist/posthog/index.js +35 -14
- package/dist/posthog/index.js.map +1 -1
- package/dist/public-api/constants.d.ts +1 -0
- package/dist/public-api/constants.js +5 -0
- package/dist/public-api/constants.js.map +1 -0
- package/dist/public-api/public-api-controller.registry.d.ts +1 -0
- package/dist/public-api/public-api-controller.registry.js +15 -0
- package/dist/public-api/public-api-controller.registry.js.map +1 -1
- package/dist/public-api/types.d.ts +2 -27
- package/dist/public-api/v1/controllers/credentials.public.controller.d.ts +3 -1
- package/dist/public-api/v1/controllers/credentials.public.controller.js +52 -1
- package/dist/public-api/v1/controllers/credentials.public.controller.js.map +1 -1
- package/dist/public-api/v1/controllers/executions.public.controller.js +3 -3
- package/dist/public-api/v1/controllers/executions.public.controller.js.map +1 -1
- package/dist/public-api/v1/controllers/folders.public.controller.d.ts +10 -0
- package/dist/public-api/v1/controllers/folders.public.controller.js +121 -0
- package/dist/public-api/v1/controllers/folders.public.controller.js.map +1 -0
- package/dist/public-api/v1/controllers/index.d.ts +2 -0
- package/dist/public-api/v1/controllers/index.js +2 -0
- package/dist/public-api/v1/controllers/index.js.map +1 -1
- package/dist/public-api/v1/controllers/insights.public.controller.d.ts +9 -0
- package/dist/public-api/v1/controllers/insights.public.controller.js +69 -0
- package/dist/public-api/v1/controllers/insights.public.controller.js.map +1 -0
- package/dist/public-api/v1/controllers/node-type-policies.public.controller.d.ts +11 -5
- package/dist/public-api/v1/controllers/node-type-policies.public.controller.js +152 -4
- package/dist/public-api/v1/controllers/node-type-policies.public.controller.js.map +1 -1
- package/dist/public-api/v1/controllers/promotions.public.controller.d.ts +5 -2
- package/dist/public-api/v1/controllers/promotions.public.controller.js +60 -4
- package/dist/public-api/v1/controllers/promotions.public.controller.js.map +1 -1
- package/dist/public-api/v1/controllers/roles.public.controller.js +1 -0
- package/dist/public-api/v1/controllers/roles.public.controller.js.map +1 -1
- package/dist/public-api/v1/controllers/tags.public.controller.d.ts +3 -1
- package/dist/public-api/v1/controllers/tags.public.controller.js +61 -0
- package/dist/public-api/v1/controllers/tags.public.controller.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.utils.d.ts +3 -3
- package/dist/public-api/v1/handlers/credentials/credentials.utils.js +1 -6
- package/dist/public-api/v1/handlers/credentials/credentials.utils.js.map +1 -1
- package/dist/public-api/v1/handlers/folders/folders.handler.d.ts +0 -7
- package/dist/public-api/v1/handlers/folders/folders.handler.js +0 -29
- package/dist/public-api/v1/handlers/folders/folders.handler.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +4051 -2008
- package/dist/public-api/v1/shared/middlewares/global.middleware.d.ts +1 -1
- package/dist/public-api/v1/shared/middlewares/global.middleware.js +4 -3
- package/dist/public-api/v1/shared/middlewares/global.middleware.js.map +1 -1
- package/dist/requests.d.ts +1 -0
- package/dist/scheduling/durable-job-provisioner.d.ts +10 -1
- package/dist/scheduling/durable-job-provisioner.js +26 -9
- 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 -3
- package/dist/scheduling/durable-scheduler.js.map +1 -1
- package/dist/scheduling/scheduled-job-owner-registry.d.ts +2 -1
- package/dist/scheduling/scheduled-job-owner-registry.js +2 -1
- package/dist/scheduling/scheduled-job-owner-registry.js.map +1 -1
- package/dist/scheduling/system-tasks/emit-system-task-metric.d.ts +3 -0
- package/dist/scheduling/system-tasks/emit-system-task-metric.js +11 -0
- package/dist/scheduling/system-tasks/emit-system-task-metric.js.map +1 -0
- package/dist/scheduling/system-tasks/system-task-handler.d.ts +5 -1
- package/dist/scheduling/system-tasks/system-task-handler.js +9 -8
- package/dist/scheduling/system-tasks/system-task-handler.js.map +1 -1
- package/dist/scheduling/system-tasks/system-task-job-registrar.d.ts +28 -0
- package/dist/scheduling/system-tasks/system-task-job-registrar.js +130 -0
- package/dist/scheduling/system-tasks/system-task-job-registrar.js.map +1 -0
- package/dist/scheduling/system-tasks/system-task-run-observer.d.ts +13 -0
- package/dist/scheduling/system-tasks/system-task-run-observer.js +54 -0
- package/dist/scheduling/system-tasks/system-task-run-observer.js.map +1 -0
- package/dist/scheduling/system-tasks/system-task-runner.d.ts +13 -3
- package/dist/scheduling/system-tasks/system-task-runner.js +85 -15
- package/dist/scheduling/system-tasks/system-task-runner.js.map +1 -1
- package/dist/scheduling/system-tasks/system-task-scheduled-job-owner.d.ts +13 -0
- package/dist/scheduling/system-tasks/system-task-scheduled-job-owner.js +51 -0
- package/dist/scheduling/system-tasks/system-task-scheduled-job-owner.js.map +1 -0
- package/dist/scheduling/system-tasks/system-task-timer.d.ts +3 -1
- package/dist/scheduling/system-tasks/system-task-timer.js +33 -9
- package/dist/scheduling/system-tasks/system-task-timer.js.map +1 -1
- package/dist/scheduling/system-tasks/system-task-version-stamp.d.ts +5 -0
- package/dist/scheduling/system-tasks/system-task-version-stamp.js +14 -0
- package/dist/scheduling/system-tasks/system-task-version-stamp.js.map +1 -0
- package/dist/server.d.ts +0 -1
- package/dist/server.js +4 -2
- package/dist/server.js.map +1 -1
- package/dist/services/ai-gateway.service.d.ts +2 -1
- package/dist/services/ai-gateway.service.js +7 -4
- package/dist/services/ai-gateway.service.js.map +1 -1
- package/dist/services/ai-preference.service.d.ts +29 -5
- package/dist/services/ai-preference.service.js +119 -20
- package/dist/services/ai-preference.service.js.map +1 -1
- package/dist/services/credentials-tester.service.js +12 -0
- package/dist/services/credentials-tester.service.js.map +1 -1
- package/dist/services/engine-data-plane-proxy.service.d.ts +3 -1
- package/dist/services/engine-data-plane-proxy.service.js +5 -0
- package/dist/services/engine-data-plane-proxy.service.js.map +1 -1
- package/dist/services/free-ai-credits.service.d.ts +1 -0
- package/dist/services/frontend.service.js +2 -1
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/protected-resource.registry.d.ts +2 -1
- package/dist/services/protected-resource.registry.js.map +1 -1
- package/dist/services/role.service.js +5 -4
- package/dist/services/role.service.js.map +1 -1
- package/dist/utils/strapi-utils.d.ts +1 -0
- package/dist/utils/strapi-utils.js.map +1 -1
- package/dist/wait-tracker.d.ts +5 -0
- package/dist/wait-tracker.js +130 -20
- package/dist/wait-tracker.js.map +1 -1
- package/dist/webhooks/live-webhooks.js +2 -2
- package/dist/webhooks/live-webhooks.js.map +1 -1
- package/dist/webhooks/test-webhook-registrations.service.d.ts +3 -1
- package/dist/webhooks/test-webhook-registrations.service.js +24 -11
- package/dist/webhooks/test-webhook-registrations.service.js.map +1 -1
- package/dist/webhooks/test-webhooks.d.ts +1 -0
- package/dist/webhooks/test-webhooks.js +9 -4
- package/dist/webhooks/test-webhooks.js.map +1 -1
- package/dist/webhooks/webhook-helpers.d.ts +1 -1
- package/dist/webhooks/webhook-helpers.js +113 -92
- package/dist/webhooks/webhook-helpers.js.map +1 -1
- package/dist/workflow-helpers.d.ts +1 -1
- package/dist/workflow-helpers.js +10 -3
- package/dist/workflow-helpers.js.map +1 -1
- package/dist/workflow-runner.js +104 -7
- package/dist/workflow-runner.js.map +1 -1
- package/dist/workflows/workflow.service.d.ts +1 -1
- package/package.json +42 -36
- package/dist/controllers/instance-ai-examples.controller.d.ts +0 -31
- package/dist/controllers/instance-ai-examples.controller.js +0 -104
- package/dist/controllers/instance-ai-examples.controller.js.map +0 -1
- package/dist/instance-ai-examples.data.json +0 -277957
- package/dist/public-api/v1/handlers/credentials/credentials.handler.d.ts +0 -8
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js +0 -45
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +0 -1
- package/dist/public-api/v1/handlers/insights/insights.handler.d.ts +0 -7
- package/dist/public-api/v1/handlers/insights/insights.handler.js +0 -62
- package/dist/public-api/v1/handlers/insights/insights.handler.js.map +0 -1
- package/dist/public-api/v1/handlers/tags/tags.handler.d.ts +0 -8
- package/dist/public-api/v1/handlers/tags/tags.handler.js +0 -46
- package/dist/public-api/v1/handlers/tags/tags.handler.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Logger } from '@n8n/backend-common';
|
|
1
2
|
import type { GlobalConfig } from '@n8n/config';
|
|
2
3
|
import { type User, type SharedWorkflowRepository } from '@n8n/db';
|
|
3
4
|
import { z } from 'zod';
|
|
@@ -5,6 +6,7 @@ import type { CollaborationService } from '../../../../collaboration/collaborati
|
|
|
5
6
|
import type { CredentialsService } from '../../../../credentials/credentials.service';
|
|
6
7
|
import type { SubworkflowPolicyChecker } from '../../../../executions/pre-execution-checks/subworkflow-policy-checker';
|
|
7
8
|
import type { DataTableUserOperations } from '../../../../modules/data-table/data-table-proxy.service';
|
|
9
|
+
import type { McpPostSaveMetricsService } from '../../../../modules/mcp/mcp-post-save-metrics.service';
|
|
8
10
|
import type { NodeTypes } from '../../../../node-types';
|
|
9
11
|
import type { AiGatewayService } from '../../../../services/ai-gateway.service';
|
|
10
12
|
import type { TagService } from '../../../../services/tag.service';
|
|
@@ -13,12 +15,13 @@ import type { Telemetry } from '../../../../telemetry';
|
|
|
13
15
|
import type { WorkflowFinderService } from '../../../../workflows/workflow-finder.service';
|
|
14
16
|
import type { WorkflowPublishedDataService } from '../../../../workflows/workflow-published-data.service';
|
|
15
17
|
import type { WorkflowService } from '../../../../workflows/workflow.service';
|
|
18
|
+
import { type FindUninstalledNodeTypes } from './uninstalled-node-warnings';
|
|
16
19
|
import type { ToolDefinition } from '../../mcp.types';
|
|
17
|
-
declare const
|
|
20
|
+
declare const inputSchema: {
|
|
18
21
|
workflowId: z.ZodString;
|
|
19
22
|
skillsUsed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
20
23
|
operations: z.ZodArray<z.ZodObject<{
|
|
21
|
-
type: z.ZodEnum<["updateNodeParameters", "setNodeParameter", "addNode", "removeNode", "renameNode", "addConnection", "removeConnection", "setNodeCredential", "setNodePosition", "setNodeDisabled", "setNodeSettings", "setWorkflowMetadata", "setWorkflowSettings", "addTags", "removeTags", "setNodeGroups"
|
|
24
|
+
type: z.ZodEnum<["updateNodeParameters", "setNodeParameter", "addNode", "removeNode", "renameNode", "addConnection", "removeConnection", "setNodeCredential", "setNodePosition", "setNodeDisabled", "setNodeSettings", "setWorkflowMetadata", "setWorkflowSettings", "addTags", "removeTags", "setNodeGroups", "addNodeGroup", "removeNodeGroup", "updateNodeGroup"]>;
|
|
22
25
|
nodeName: z.ZodOptional<z.ZodString>;
|
|
23
26
|
node: z.ZodOptional<z.ZodObject<{
|
|
24
27
|
name: z.ZodString;
|
|
@@ -156,9 +159,9 @@ declare const buildInputSchema: (canvasGroupsEnabled: boolean) => {
|
|
|
156
159
|
nodeNames: string[];
|
|
157
160
|
description?: string | undefined;
|
|
158
161
|
}>, "many">>;
|
|
159
|
-
groupName
|
|
160
|
-
nodeNames
|
|
161
|
-
id
|
|
162
|
+
groupName: z.ZodOptional<z.ZodString>;
|
|
163
|
+
nodeNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
164
|
+
id: z.ZodOptional<z.ZodString>;
|
|
162
165
|
}, "strict", z.ZodTypeAny, {
|
|
163
166
|
type: "addConnection" | "addNode" | "addNodeGroup" | "addTags" | "removeConnection" | "removeNode" | "removeNodeGroup" | "removeTags" | "renameNode" | "setNodeCredential" | "setNodeDisabled" | "setNodeGroups" | "setNodeParameter" | "setNodePosition" | "setNodeSettings" | "setWorkflowMetadata" | "setWorkflowSettings" | "updateNodeGroup" | "updateNodeParameters";
|
|
164
167
|
nodeName?: string | undefined;
|
|
@@ -220,9 +223,9 @@ declare const buildInputSchema: (canvasGroupsEnabled: boolean) => {
|
|
|
220
223
|
nodeNames: string[];
|
|
221
224
|
description?: string | undefined;
|
|
222
225
|
}[] | undefined;
|
|
223
|
-
groupName?:
|
|
224
|
-
nodeNames?:
|
|
225
|
-
id?:
|
|
226
|
+
groupName?: string | undefined;
|
|
227
|
+
nodeNames?: string[] | undefined;
|
|
228
|
+
id?: string | undefined;
|
|
226
229
|
}, {
|
|
227
230
|
type: "addConnection" | "addNode" | "addNodeGroup" | "addTags" | "removeConnection" | "removeNode" | "removeNodeGroup" | "removeTags" | "renameNode" | "setNodeCredential" | "setNodeDisabled" | "setNodeGroups" | "setNodeParameter" | "setNodePosition" | "setNodeSettings" | "setWorkflowMetadata" | "setWorkflowSettings" | "updateNodeGroup" | "updateNodeParameters";
|
|
228
231
|
nodeName?: string | undefined;
|
|
@@ -284,14 +287,15 @@ declare const buildInputSchema: (canvasGroupsEnabled: boolean) => {
|
|
|
284
287
|
nodeNames: string[];
|
|
285
288
|
description?: string | undefined;
|
|
286
289
|
}[] | undefined;
|
|
287
|
-
groupName?:
|
|
288
|
-
nodeNames?:
|
|
289
|
-
id?:
|
|
290
|
+
groupName?: string | undefined;
|
|
291
|
+
nodeNames?: string[] | undefined;
|
|
292
|
+
id?: string | undefined;
|
|
290
293
|
}>, "many">;
|
|
291
294
|
versionName: z.ZodOptional<z.ZodString>;
|
|
292
295
|
versionDescription: z.ZodOptional<z.ZodString>;
|
|
293
296
|
};
|
|
294
|
-
export declare const createUpdateWorkflowTool: (user: User, workflowFinderService: WorkflowFinderService, workflowService: WorkflowService, urlService: UrlService, telemetry: Telemetry, nodeTypes: NodeTypes, credentialsService: CredentialsService, sharedWorkflowRepository: SharedWorkflowRepository, collaborationService: CollaborationService, dataTableOps: DataTableUserOperations, tagService: TagService, globalConfig: GlobalConfig, subworkflowPolicyChecker: SubworkflowPolicyChecker, workflowPublishedDataService: WorkflowPublishedDataService, aiGatewayService: AiGatewayService, options
|
|
295
|
-
|
|
296
|
-
|
|
297
|
+
export declare const createUpdateWorkflowTool: (user: User, workflowFinderService: WorkflowFinderService, workflowService: WorkflowService, urlService: UrlService, telemetry: Telemetry, nodeTypes: NodeTypes, credentialsService: CredentialsService, sharedWorkflowRepository: SharedWorkflowRepository, collaborationService: CollaborationService, dataTableOps: DataTableUserOperations, tagService: TagService, globalConfig: GlobalConfig, subworkflowPolicyChecker: SubworkflowPolicyChecker, workflowPublishedDataService: WorkflowPublishedDataService, aiGatewayService: AiGatewayService, options: {
|
|
298
|
+
findUninstalledNodeTypes?: FindUninstalledNodeTypes;
|
|
299
|
+
installToolAvailable?: boolean;
|
|
300
|
+
} | undefined, logger: Logger, postSaveMetrics: McpPostSaveMetricsService) => ToolDefinition<typeof inputSchema>;
|
|
297
301
|
export {};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.createUpdateWorkflowTool = void 0;
|
|
4
7
|
const db_1 = require("@n8n/db");
|
|
5
8
|
const permissions_1 = require("@n8n/permissions");
|
|
9
|
+
const isEqual_1 = __importDefault(require("lodash/isEqual"));
|
|
6
10
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
11
|
const zod_1 = require("zod");
|
|
8
12
|
const subworkflow_policy_denial_error_1 = require("../../../../errors/subworkflow-policy-denial.error");
|
|
@@ -12,14 +16,17 @@ const constants_1 = require("./constants");
|
|
|
12
16
|
const credential_validation_1 = require("./credential-validation");
|
|
13
17
|
const credentials_auto_assign_1 = require("./credentials-auto-assign");
|
|
14
18
|
const data_table_validation_1 = require("./data-table-validation");
|
|
19
|
+
const error_code_utils_1 = require("./error-code.utils");
|
|
15
20
|
const skills_used_1 = require("./skills-used");
|
|
16
21
|
const top_level_items_warning_1 = require("./top-level-items-warning");
|
|
22
|
+
const uninstalled_node_warnings_1 = require("./uninstalled-node-warnings");
|
|
17
23
|
const version_metadata_1 = require("./version-metadata");
|
|
18
24
|
const workflow_operations_1 = require("./workflow-operations");
|
|
19
25
|
const mcp_constants_1 = require("../../mcp.constants");
|
|
20
26
|
const workflow_validation_utils_1 = require("../workflow-validation.utils");
|
|
21
27
|
const MAX_OPERATIONS_PER_CALL = 100;
|
|
22
|
-
const
|
|
28
|
+
const normalize = (value) => JSON.parse(JSON.stringify(value ?? null));
|
|
29
|
+
const operationTypes = [
|
|
23
30
|
'updateNodeParameters',
|
|
24
31
|
'setNodeParameter',
|
|
25
32
|
'addNode',
|
|
@@ -36,16 +43,28 @@ const baseOperationTypes = [
|
|
|
36
43
|
'addTags',
|
|
37
44
|
'removeTags',
|
|
38
45
|
'setNodeGroups',
|
|
39
|
-
];
|
|
40
|
-
const gatedGroupOperationTypes = [
|
|
41
46
|
'addNodeGroup',
|
|
42
47
|
'removeNodeGroup',
|
|
43
48
|
'updateNodeGroup',
|
|
44
49
|
];
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
const operationTypeSchema = zod_1.z.enum(operationTypes);
|
|
51
|
+
const GRAPH_OPERATION_TYPES = new Set([
|
|
52
|
+
'addNode',
|
|
53
|
+
'removeNode',
|
|
54
|
+
'renameNode',
|
|
55
|
+
'updateNodeParameters',
|
|
56
|
+
'setNodeParameter',
|
|
57
|
+
'addConnection',
|
|
58
|
+
'removeConnection',
|
|
59
|
+
'setNodeCredential',
|
|
60
|
+
'setNodePosition',
|
|
61
|
+
'setNodeDisabled',
|
|
62
|
+
'setNodeGroups',
|
|
63
|
+
'addNodeGroup',
|
|
64
|
+
'removeNodeGroup',
|
|
65
|
+
'updateNodeGroup',
|
|
66
|
+
'setNodeSettings',
|
|
67
|
+
]);
|
|
49
68
|
const positionInputSchema = () => zod_1.z.array(zod_1.z.number()).length(2).describe('Canvas [x, y].');
|
|
50
69
|
const credentialsInputSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.object({ id: zod_1.z.string().optional(), name: zod_1.z.string() }));
|
|
51
70
|
const nodeInputSchema = zod_1.z.object({
|
|
@@ -76,23 +95,17 @@ const combinedSettingsInputSchema = zod_1.z
|
|
|
76
95
|
...workflow_operations_1.workflowSettingsObjectSchema.shape,
|
|
77
96
|
})
|
|
78
97
|
.describe('Settings to write. For setNodeSettings use the node-level keys (onError, retryOnFail, maxTries, waitBetweenTries, alwaysOutputData, executeOnce). For setWorkflowSettings use the workflow-level keys (errorWorkflow, timezone, executionOrder, saveExecutionProgress, saveManualExecutions, saveDataErrorExecution, saveDataSuccessExecution, executionTimeout, timeSavedPerExecution, callerPolicy, callerIds). Provide only the keys for the operation you are running.');
|
|
79
|
-
const
|
|
98
|
+
const operationInputSchema = zod_1.z
|
|
80
99
|
.object({
|
|
81
|
-
type:
|
|
100
|
+
type: operationTypeSchema.describe('Operation type.'),
|
|
82
101
|
nodeName: zod_1.z.string().optional().describe('For node-targeted ops.'),
|
|
83
102
|
node: nodeInputSchema.optional().describe('For addNode.'),
|
|
84
|
-
parameters: zod_1.z
|
|
85
|
-
.record(zod_1.z.string(), zod_1.z.unknown())
|
|
86
|
-
.optional()
|
|
87
|
-
.describe('For updateNodeParameters.'),
|
|
103
|
+
parameters: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().describe('For updateNodeParameters.'),
|
|
88
104
|
replace: zod_1.z.boolean().optional().describe('For updateNodeParameters; default false.'),
|
|
89
105
|
path: zod_1.z.string().min(2).optional().describe('For setNodeParameter; JSON Pointer path.'),
|
|
90
106
|
value: zod_1.z.unknown().optional().describe('For setNodeParameter.'),
|
|
91
107
|
oldName: zod_1.z.string().optional().describe('For renameNode.'),
|
|
92
|
-
newName: zod_1.z
|
|
93
|
-
.string()
|
|
94
|
-
.optional()
|
|
95
|
-
.describe(canvasGroupsEnabled ? 'For renameNode or updateNodeGroup.' : 'For renameNode.'),
|
|
108
|
+
newName: zod_1.z.string().optional().describe('For renameNode or updateNodeGroup.'),
|
|
96
109
|
source: zod_1.z.string().optional().describe('For connection ops.'),
|
|
97
110
|
target: zod_1.z.string().optional().describe('For connection ops.'),
|
|
98
111
|
sourceIndex: zod_1.z
|
|
@@ -120,16 +133,12 @@ const buildOperationInputSchema = (canvasGroupsEnabled) => zod_1.z
|
|
|
120
133
|
.string()
|
|
121
134
|
.max(128)
|
|
122
135
|
.optional()
|
|
123
|
-
.describe(
|
|
124
|
-
? 'For setWorkflowMetadata (workflow name) or addNodeGroup (group name).'
|
|
125
|
-
: 'Only used for setWorkflowMetadata.'),
|
|
136
|
+
.describe('For setWorkflowMetadata (workflow name) or addNodeGroup (group name).'),
|
|
126
137
|
description: zod_1.z
|
|
127
138
|
.string()
|
|
128
139
|
.max(255)
|
|
129
140
|
.optional()
|
|
130
|
-
.describe(
|
|
131
|
-
? 'For setWorkflowMetadata, addNodeGroup, or updateNodeGroup.'
|
|
132
|
-
: 'Only used for setWorkflowMetadata.'),
|
|
141
|
+
.describe('For setWorkflowMetadata, addNodeGroup, or updateNodeGroup.'),
|
|
133
142
|
names: zod_1.z.array(zod_1.z.string()).optional().describe('For addTags / removeTags.'),
|
|
134
143
|
nodeGroups: zod_1.z
|
|
135
144
|
.array(zod_1.z.object({
|
|
@@ -140,16 +149,12 @@ const buildOperationInputSchema = (canvasGroupsEnabled) => zod_1.z
|
|
|
140
149
|
}))
|
|
141
150
|
.optional()
|
|
142
151
|
.describe('For setNodeGroups. Replaces all node groups; pass [] to clear. Group members are node names, not ids.'),
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
.describe('For addNodeGroup / updateNodeGroup; group member node names.'),
|
|
150
|
-
id: zod_1.z.string().optional().describe('For addNodeGroup; group id, generated if omitted.'),
|
|
151
|
-
}
|
|
152
|
-
: {}),
|
|
152
|
+
groupName: zod_1.z.string().optional().describe('For removeNodeGroup / updateNodeGroup.'),
|
|
153
|
+
nodeNames: zod_1.z
|
|
154
|
+
.array(zod_1.z.string())
|
|
155
|
+
.optional()
|
|
156
|
+
.describe('For addNodeGroup / updateNodeGroup; group member node names.'),
|
|
157
|
+
id: zod_1.z.string().optional().describe('For addNodeGroup; group id, generated if omitted.'),
|
|
153
158
|
})
|
|
154
159
|
.strict()
|
|
155
160
|
.describe('Workflow update operation. Provide fields matching type.');
|
|
@@ -171,25 +176,18 @@ function parseStrictOperations(operations) {
|
|
|
171
176
|
throw new Error(`Invalid operations: ${details}`);
|
|
172
177
|
}
|
|
173
178
|
const NON_FATAL_OPERATION_TYPES_LIST = [...workflow_operations_1.NON_FATAL_OPERATION_TYPES].join(', ');
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
return canvasGroupsEnabled
|
|
177
|
-
? `${base} Node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}) are the one exception to "atomically": an invalid one is skipped and reported in skippedOperations instead of aborting the whole update. Separately, if other edits in the batch make an existing group invalid, that group is removed and reported in removedGroups.`
|
|
178
|
-
: base;
|
|
179
|
-
};
|
|
180
|
-
const buildInputSchema = (canvasGroupsEnabled) => ({
|
|
179
|
+
const TOOL_DESCRIPTION = `Atomically update an existing workflow with operation objects. Edits nodes/connections and also workflow-level settings via setWorkflowSettings — including the error workflow that runs automatically on failure to send alerts (e.g. when a user asks to "add error handling" or "notify me if this breaks"). Pass skillsUsed if n8n skills were used. Node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}) are the one exception to "atomically": an invalid one is skipped and reported in skippedOperations instead of aborting the whole update. Separately, if other edits in the batch make an existing group invalid, that group is removed and reported in removedGroups.`;
|
|
180
|
+
const inputSchema = {
|
|
181
181
|
workflowId: zod_1.z.string().describe('The ID of the workflow to update.'),
|
|
182
182
|
skillsUsed: zod_1.z.array(zod_1.z.string()).optional().describe(skills_used_1.SKILLS_USED_PARAM_DESCRIPTION),
|
|
183
183
|
operations: zod_1.z
|
|
184
|
-
.array(
|
|
184
|
+
.array(operationInputSchema)
|
|
185
185
|
.min(1)
|
|
186
186
|
.max(MAX_OPERATIONS_PER_CALL)
|
|
187
|
-
.describe(
|
|
188
|
-
? `Ordered operations to apply atomically (max ${MAX_OPERATIONS_PER_CALL}). If any op fails, nothing is saved — except node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}): an invalid one is skipped and reported in skippedOperations, while the rest of the batch still saves. An existing group that these ops leave invalid is removed and reported in removedGroups.`
|
|
189
|
-
: `Ordered operations to apply atomically (max ${MAX_OPERATIONS_PER_CALL}). If any op fails, nothing is saved.`),
|
|
187
|
+
.describe(`Ordered operations to apply atomically (max ${MAX_OPERATIONS_PER_CALL}). If any op fails, nothing is saved — except node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}): an invalid one is skipped and reported in skippedOperations, while the rest of the batch still saves. An existing group that these ops leave invalid is removed and reported in removedGroups.`),
|
|
190
188
|
versionName: version_metadata_1.versionNameInputSchema.describe('Short summary of what this update changes, shown in the workflow\'s version history (e.g. "Added Slack notification after HTTP request"). Always provide it.'),
|
|
191
189
|
versionDescription: version_metadata_1.versionDescriptionInputSchema.describe('Longer description of what changed and why, shown in the version history alongside the version name.'),
|
|
192
|
-
}
|
|
190
|
+
};
|
|
193
191
|
const outputSchema = {
|
|
194
192
|
workflowId: zod_1.z.string().optional(),
|
|
195
193
|
name: zod_1.z.string().optional(),
|
|
@@ -220,7 +218,6 @@ const outputSchema = {
|
|
|
220
218
|
}))
|
|
221
219
|
.optional()
|
|
222
220
|
.describe('Graph and JSON validation warnings on the resulting workflow. Warnings marked preExisting (also tagged [pre-existing] in the message) were already present before this update; only self-correct the rest on the next call.'),
|
|
223
|
-
note: zod_1.z.string().optional(),
|
|
224
221
|
skippedOperations: zod_1.z
|
|
225
222
|
.array(zod_1.z.object({
|
|
226
223
|
opIndex: zod_1.z.number(),
|
|
@@ -244,6 +241,8 @@ const outputSchema = {
|
|
|
244
241
|
.string()
|
|
245
242
|
.optional()
|
|
246
243
|
.describe('Error message explaining why the update failed. Present only on failure.'),
|
|
244
|
+
errorCode: zod_1.z.string().optional().describe('Machine-readable error code.'),
|
|
245
|
+
note: zod_1.z.string().optional(),
|
|
247
246
|
};
|
|
248
247
|
async function assertErrorWorkflowIsUsable({ errorWorkflowId, parentWorkflowId, user, workflowFinderService, workflowPublishedDataService, useWorkflowPublicationService, nodeTypes, subworkflowPolicyChecker, errorTriggerType, }) {
|
|
249
248
|
if (!errorWorkflowId || errorWorkflowId === 'DEFAULT') {
|
|
@@ -366,6 +365,12 @@ function dedupeNamesPreservingCase(names) {
|
|
|
366
365
|
}
|
|
367
366
|
return result;
|
|
368
367
|
}
|
|
368
|
+
function haveSameTagNames(actualTags, expectedTagNames) {
|
|
369
|
+
if (!actualTags || !expectedTagNames) {
|
|
370
|
+
return false;
|
|
371
|
+
}
|
|
372
|
+
return (0, isEqual_1.default)(actualTags.map((tag) => tag.name).sort(), dedupeNamesPreservingCase(expectedTagNames).sort());
|
|
373
|
+
}
|
|
369
374
|
function collectTouchedNodes(operations) {
|
|
370
375
|
const touched = new Map();
|
|
371
376
|
const recordTouch = (name, opIndex) => {
|
|
@@ -413,24 +418,19 @@ const countOperationsWithNoEffect = (skippedOperations, groupOperations) => {
|
|
|
413
418
|
};
|
|
414
419
|
const isTagOperation = (op) => op.type === 'addTags' || op.type === 'removeTags';
|
|
415
420
|
const isSettingsOperation = (op) => op.type === 'setWorkflowSettings';
|
|
416
|
-
function assertOperationsSupported(strictOperations, {
|
|
417
|
-
if (!canvasGroupsEnabled && strictOperations.some((op) => GATED_GROUP_OP_TYPES.has(op.type))) {
|
|
418
|
-
throw new Error('Node group operations (addNodeGroup, removeNodeGroup, updateNodeGroup) are not available on this instance.');
|
|
419
|
-
}
|
|
421
|
+
function assertOperationsSupported(strictOperations, { tagsDisabled }) {
|
|
420
422
|
if (tagsDisabled && strictOperations.some(isTagOperation)) {
|
|
421
423
|
throw new Error('Tag operations are not supported on this instance because tags are disabled.');
|
|
422
424
|
}
|
|
423
425
|
}
|
|
424
|
-
function resolveNodeGroupViolations(result,
|
|
426
|
+
function resolveNodeGroupViolations(result, nodeTypes) {
|
|
425
427
|
const skippedOperations = [...result.skippedOperations];
|
|
426
428
|
const removedGroups = [];
|
|
427
429
|
const getNodeType = (0, workflow_helpers_1.makeGetNodeTypeForGrouping)(nodeTypes);
|
|
428
|
-
const violations =
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
]
|
|
433
|
-
: [];
|
|
430
|
+
const violations = [
|
|
431
|
+
...(0, workflow_helpers_1.dropInvalidWorkflowGroups)(result.workflow, getNodeType, (violation) => result.groupOperations[violation.groupId] !== undefined),
|
|
432
|
+
...(0, workflow_helpers_1.dropInvalidWorkflowGroups)(result.workflow, getNodeType),
|
|
433
|
+
];
|
|
434
434
|
for (const violation of violations) {
|
|
435
435
|
const requestedBy = result.groupOperations[violation.groupId];
|
|
436
436
|
if (requestedBy) {
|
|
@@ -533,8 +533,7 @@ async function resolveTagIds(tagNames, user, tagService) {
|
|
|
533
533
|
}
|
|
534
534
|
return resolvedTags.map((t) => t.id);
|
|
535
535
|
}
|
|
536
|
-
const createUpdateWorkflowTool = (user, workflowFinderService, workflowService, urlService, telemetry, nodeTypes, credentialsService, sharedWorkflowRepository, collaborationService, dataTableOps, tagService, globalConfig, subworkflowPolicyChecker, workflowPublishedDataService, aiGatewayService, options = {}) => {
|
|
537
|
-
const canvasGroupsEnabled = options.canvasGroupsEnabled === true;
|
|
536
|
+
const createUpdateWorkflowTool = (user, workflowFinderService, workflowService, urlService, telemetry, nodeTypes, credentialsService, sharedWorkflowRepository, collaborationService, dataTableOps, tagService, globalConfig, subworkflowPolicyChecker, workflowPublishedDataService, aiGatewayService, options = {}, logger, postSaveMetrics) => {
|
|
538
537
|
const settingsGuardDependencies = {
|
|
539
538
|
user,
|
|
540
539
|
nodeTypes,
|
|
@@ -546,8 +545,8 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
|
|
|
546
545
|
return {
|
|
547
546
|
name: constants_1.MCP_UPDATE_WORKFLOW_TOOL.toolName,
|
|
548
547
|
config: {
|
|
549
|
-
description:
|
|
550
|
-
inputSchema
|
|
548
|
+
description: TOOL_DESCRIPTION,
|
|
549
|
+
inputSchema,
|
|
551
550
|
outputSchema,
|
|
552
551
|
annotations: {
|
|
553
552
|
title: constants_1.MCP_UPDATE_WORKFLOW_TOOL.displayTitle,
|
|
@@ -566,27 +565,34 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
|
|
|
566
565
|
versionName,
|
|
567
566
|
versionDescription,
|
|
568
567
|
});
|
|
568
|
+
let updateAttempted = false;
|
|
569
|
+
let hasGraphOps = false;
|
|
570
|
+
let hasTagOperations = false;
|
|
571
|
+
let expectedWorkflow = null;
|
|
572
|
+
let expectedSettings;
|
|
573
|
+
let expectedTagNames;
|
|
574
|
+
let existingWorkflow = null;
|
|
569
575
|
try {
|
|
570
576
|
const strictOperations = parseStrictOperations(operations);
|
|
571
|
-
|
|
577
|
+
hasTagOperations = strictOperations.some(isTagOperation);
|
|
572
578
|
const hasNonTagOperations = strictOperations.some((op) => !isTagOperation(op));
|
|
573
579
|
const hasSettingsOperations = strictOperations.some(isSettingsOperation);
|
|
580
|
+
hasGraphOps = strictOperations.some((op) => GRAPH_OPERATION_TYPES.has(op.type));
|
|
574
581
|
assertOperationsSupported(strictOperations, {
|
|
575
|
-
canvasGroupsEnabled,
|
|
576
582
|
tagsDisabled: globalConfig.tags.disabled,
|
|
577
583
|
});
|
|
578
|
-
|
|
584
|
+
existingWorkflow = await (0, workflow_validation_utils_1.getMcpWorkflow)(workflowId, user, ['workflow:update'], workflowFinderService, { includeTags: hasTagOperations });
|
|
579
585
|
await collaborationService.ensureWorkflowEditable(existingWorkflow.id);
|
|
580
|
-
const result = (0, workflow_operations_1.applyOperations)((0, workflow_operations_1.toWorkflowSlice)(existingWorkflow, { includeTags: hasTagOperations }), strictOperations
|
|
586
|
+
const result = (0, workflow_operations_1.applyOperations)((0, workflow_operations_1.toWorkflowSlice)(existingWorkflow, { includeTags: hasTagOperations }), strictOperations);
|
|
581
587
|
if (!result.success) {
|
|
582
588
|
throw new Error(result.error);
|
|
583
589
|
}
|
|
584
|
-
const { skippedOperations, removedGroups, nodeGroupsNeedPersisting } = resolveNodeGroupViolations(result,
|
|
590
|
+
const { skippedOperations, removedGroups, nodeGroupsNeedPersisting } = resolveNodeGroupViolations(result, nodeTypes);
|
|
585
591
|
const credentialCheck = await (0, credential_validation_1.validateCredentialReferences)(strictOperations, existingWorkflow, user, credentialsService, nodeTypes, { workflowId: existingWorkflow.id });
|
|
586
592
|
if (!credentialCheck.ok) {
|
|
587
593
|
throw new Error(credentialCheck.error);
|
|
588
594
|
}
|
|
589
|
-
const invalidToolSourceResponse = (0, connection_structure_check_1.buildInvalidAiToolSourceErrorResponse)({ nodes: result.workflow.nodes, connections: result.workflow.connections }, nodeTypes, (errorMessage) => ({ error: errorMessage }), telemetryPayload, telemetry);
|
|
595
|
+
const invalidToolSourceResponse = (0, connection_structure_check_1.buildInvalidAiToolSourceErrorResponse)({ nodes: result.workflow.nodes, connections: result.workflow.connections }, nodeTypes, (errorMessage) => ({ error: errorMessage, errorCode: 'INVALID_AI_TOOL_SOURCE' }), telemetryPayload, telemetry);
|
|
590
596
|
if (invalidToolSourceResponse) {
|
|
591
597
|
return invalidToolSourceResponse;
|
|
592
598
|
}
|
|
@@ -618,8 +624,22 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
|
|
|
618
624
|
projectId: workflowProjectId,
|
|
619
625
|
}, { user, nodeTypes, credentialsService, aiGatewayService });
|
|
620
626
|
const validationWarnings = await collectValidationWarnings(workflowUpdateData, existingWorkflow, nodeTypes);
|
|
627
|
+
validationWarnings.push(...(await (0, uninstalled_node_warnings_1.buildUninstalledNodeWarnings)(workflowUpdateData.nodes.filter((node) => result.addedNodeNames.includes(node.name)), options.findUninstalledNodeTypes, options.installToolAvailable)));
|
|
621
628
|
const tagIds = await resolveTagIds(result.tagNames, user, tagService);
|
|
622
629
|
const versionMetadata = (0, version_metadata_1.resolveVersionMetadata)({ versionName, versionDescription }, (0, version_metadata_1.buildUpdateVersionMetadata)({ nodes: existingWorkflow.nodes, connections: existingWorkflow.connections }, { nodes: workflowUpdateData.nodes, connections: workflowUpdateData.connections }));
|
|
630
|
+
expectedWorkflow = {
|
|
631
|
+
nodes: workflowUpdateData.nodes,
|
|
632
|
+
connections: workflowUpdateData.connections,
|
|
633
|
+
...(workflowUpdateData.nodeGroups !== undefined
|
|
634
|
+
? { nodeGroups: workflowUpdateData.nodeGroups }
|
|
635
|
+
: {}),
|
|
636
|
+
};
|
|
637
|
+
expectedSettings =
|
|
638
|
+
hasSettingsOperations && workflowUpdateData.settings
|
|
639
|
+
? (0, workflow_helpers_1.removeDefaultValues)({ ...(existingWorkflow.settings ?? {}), ...workflowUpdateData.settings }, globalConfig.executions.timeout)
|
|
640
|
+
: undefined;
|
|
641
|
+
expectedTagNames = result.tagNames;
|
|
642
|
+
updateAttempted = true;
|
|
623
643
|
const updatedWorkflow = await workflowService.update(user, workflowUpdateData, workflowId, {
|
|
624
644
|
aiBuilderAssisted: hasNonTagOperations,
|
|
625
645
|
source: 'n8n-mcp',
|
|
@@ -627,25 +647,10 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
|
|
|
627
647
|
versionDescription: versionMetadata.description,
|
|
628
648
|
...(tagIds !== undefined ? { tagIds } : {}),
|
|
629
649
|
});
|
|
630
|
-
if (autoAssignOutcomes.length > 0) {
|
|
631
|
-
const nodeTypesByName = new Map(updatedWorkflow.nodes.map((n) => [n.name, n.type]));
|
|
632
|
-
(0, credentials_auto_assign_1.trackAutoassignOutcomes)(telemetry, user.id, 'update_workflow', autoAssignOutcomes, nodeTypesByName, workflowId);
|
|
633
|
-
}
|
|
634
|
-
void collaborationService.broadcastWorkflowUpdate(workflowId, user.id).catch(() => { });
|
|
635
650
|
const baseUrl = urlService.getInstanceBaseUrl();
|
|
636
651
|
const workflowUrl = `${baseUrl}/workflow/${updatedWorkflow.id}`;
|
|
637
|
-
telemetryPayload.results = {
|
|
638
|
-
success: true,
|
|
639
|
-
data: {
|
|
640
|
-
workflowId: updatedWorkflow.id,
|
|
641
|
-
nodeCount: updatedWorkflow.nodes.length,
|
|
642
|
-
},
|
|
643
|
-
};
|
|
644
|
-
telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
|
|
645
652
|
const notAppliedCount = countOperationsWithNoEffect(skippedOperations, result.groupOperations);
|
|
646
|
-
const ceilingWarning =
|
|
647
|
-
? (0, top_level_items_warning_1.topLevelItemsWarning)(updatedWorkflow)
|
|
648
|
-
: undefined;
|
|
653
|
+
const ceilingWarning = (0, top_level_items_warning_1.topLevelItemsWarning)(updatedWorkflow);
|
|
649
654
|
if (ceilingWarning) {
|
|
650
655
|
const preExistingUngroupedNodeNames = new Set((0, top_level_items_warning_1.summarizeUngroupedNodeNames)(existingWorkflow));
|
|
651
656
|
const hasNewlyAddedUngroupedNodeNames = (0, top_level_items_warning_1.summarizeUngroupedNodeNames)(updatedWorkflow).some((name) => !preExistingUngroupedNodeNames.has(name));
|
|
@@ -676,6 +681,28 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
|
|
|
676
681
|
? (updatedWorkflow.settings ?? {})
|
|
677
682
|
: undefined,
|
|
678
683
|
};
|
|
684
|
+
try {
|
|
685
|
+
if (autoAssignOutcomes.length > 0) {
|
|
686
|
+
const nodeTypesByName = new Map(updatedWorkflow.nodes.map((n) => [n.name, n.type]));
|
|
687
|
+
(0, credentials_auto_assign_1.trackAutoassignOutcomes)(telemetry, user.id, 'update_workflow', autoAssignOutcomes, nodeTypesByName, workflowId);
|
|
688
|
+
}
|
|
689
|
+
void collaborationService.broadcastWorkflowUpdate(workflowId, user.id).catch(() => { });
|
|
690
|
+
telemetryPayload.results = {
|
|
691
|
+
success: true,
|
|
692
|
+
data: {
|
|
693
|
+
workflowId: updatedWorkflow.id,
|
|
694
|
+
nodeCount: updatedWorkflow.nodes.length,
|
|
695
|
+
},
|
|
696
|
+
};
|
|
697
|
+
telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
|
|
698
|
+
}
|
|
699
|
+
catch (sideEffectError) {
|
|
700
|
+
logger.error('Post-save side effect failed for update_workflow', {
|
|
701
|
+
workflowId: updatedWorkflow.id,
|
|
702
|
+
error: sideEffectError,
|
|
703
|
+
});
|
|
704
|
+
postSaveMetrics.incrementPostSaveFailure('update', sideEffectError);
|
|
705
|
+
}
|
|
679
706
|
return {
|
|
680
707
|
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
681
708
|
structuredContent: output,
|
|
@@ -683,12 +710,98 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
|
|
|
683
710
|
}
|
|
684
711
|
catch (error) {
|
|
685
712
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
686
|
-
|
|
687
|
-
|
|
713
|
+
const errorCode = (0, error_code_utils_1.getErrorCode)(error);
|
|
714
|
+
if (updateAttempted && existingWorkflow) {
|
|
715
|
+
let persisted = null;
|
|
716
|
+
try {
|
|
717
|
+
persisted = await workflowFinderService.findWorkflowForUser(workflowId, user, ['workflow:read'], { includeTags: hasTagOperations });
|
|
718
|
+
}
|
|
719
|
+
catch (lookupError) {
|
|
720
|
+
logger.warn('Post-update verification lookup failed', {
|
|
721
|
+
workflowId,
|
|
722
|
+
error: lookupError,
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
const matchesExpected = persisted &&
|
|
726
|
+
expectedWorkflow &&
|
|
727
|
+
(0, isEqual_1.default)(normalize(persisted.nodes), normalize(expectedWorkflow.nodes)) &&
|
|
728
|
+
(0, isEqual_1.default)(normalize(persisted.connections), normalize(expectedWorkflow.connections)) &&
|
|
729
|
+
(expectedWorkflow.nodeGroups === undefined ||
|
|
730
|
+
(0, isEqual_1.default)(normalize(persisted.nodeGroups), normalize(expectedWorkflow.nodeGroups)));
|
|
731
|
+
const contentChanged = !(0, isEqual_1.default)(normalize(existingWorkflow.nodes), normalize(expectedWorkflow?.nodes)) ||
|
|
732
|
+
!(0, isEqual_1.default)(normalize(existingWorkflow.connections), normalize(expectedWorkflow?.connections)) ||
|
|
733
|
+
(expectedWorkflow?.nodeGroups !== undefined &&
|
|
734
|
+
!(0, isEqual_1.default)(normalize(existingWorkflow.nodeGroups), normalize(expectedWorkflow.nodeGroups)));
|
|
735
|
+
const existingUpdatedAt = existingWorkflow.updatedAt
|
|
736
|
+
? new Date(existingWorkflow.updatedAt).getTime()
|
|
737
|
+
: undefined;
|
|
738
|
+
const persistedUpdatedAt = persisted?.updatedAt
|
|
739
|
+
? new Date(persisted.updatedAt).getTime()
|
|
740
|
+
: undefined;
|
|
741
|
+
const hasNewerTimestamp = existingUpdatedAt !== undefined &&
|
|
742
|
+
persistedUpdatedAt !== undefined &&
|
|
743
|
+
persistedUpdatedAt > existingUpdatedAt;
|
|
744
|
+
const hasPersistedExpectedSettings = expectedSettings !== undefined &&
|
|
745
|
+
persisted &&
|
|
746
|
+
(0, isEqual_1.default)(normalize(persisted.settings), normalize(expectedSettings)) &&
|
|
747
|
+
!(0, isEqual_1.default)(normalize(existingWorkflow.settings), normalize(expectedSettings));
|
|
748
|
+
const wasTouched = Boolean(hasNewerTimestamp || hasPersistedExpectedSettings);
|
|
749
|
+
const tagsMatchExpected = !hasTagOperations || haveSameTagNames(persisted?.tags, expectedTagNames);
|
|
750
|
+
const recovered = tagsMatchExpected &&
|
|
751
|
+
(hasGraphOps
|
|
752
|
+
? Boolean(matchesExpected) && (contentChanged || hasNewerTimestamp)
|
|
753
|
+
: wasTouched);
|
|
754
|
+
if (persisted && recovered) {
|
|
755
|
+
const baseUrl = urlService.getInstanceBaseUrl();
|
|
756
|
+
const workflowUrl = `${baseUrl}/workflow/${persisted.id}`;
|
|
757
|
+
try {
|
|
758
|
+
telemetryPayload.results = {
|
|
759
|
+
success: true,
|
|
760
|
+
data: {
|
|
761
|
+
workflowId: persisted.id,
|
|
762
|
+
nodeCount: persisted.nodes.length,
|
|
763
|
+
postSaveError: errorMessage,
|
|
764
|
+
},
|
|
765
|
+
};
|
|
766
|
+
telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
|
|
767
|
+
}
|
|
768
|
+
catch (telemetryError) {
|
|
769
|
+
logger.error('Post-save telemetry failed for update_workflow (recovery path)', {
|
|
770
|
+
workflowId: persisted.id,
|
|
771
|
+
error: telemetryError,
|
|
772
|
+
});
|
|
773
|
+
postSaveMetrics.incrementPostSaveFailure('update', telemetryError);
|
|
774
|
+
}
|
|
775
|
+
const output = {
|
|
776
|
+
workflowId: persisted.id,
|
|
777
|
+
name: persisted.name,
|
|
778
|
+
nodeCount: persisted.nodes.length,
|
|
779
|
+
url: workflowUrl,
|
|
780
|
+
note: `Workflow was updated successfully, but a post-save operation failed: ${errorMessage}`,
|
|
781
|
+
};
|
|
782
|
+
postSaveMetrics.incrementPostSaveFailure('update', error);
|
|
783
|
+
return {
|
|
784
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
785
|
+
structuredContent: output,
|
|
786
|
+
};
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
try {
|
|
790
|
+
telemetryPayload.results = {
|
|
791
|
+
success: false,
|
|
792
|
+
error: errorMessage,
|
|
793
|
+
};
|
|
794
|
+
telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
|
|
795
|
+
}
|
|
796
|
+
catch (telemetryError) {
|
|
797
|
+
logger.error('Telemetry failed for update_workflow (error path)', {
|
|
798
|
+
error: telemetryError,
|
|
799
|
+
});
|
|
800
|
+
}
|
|
801
|
+
const output = {
|
|
688
802
|
error: errorMessage,
|
|
803
|
+
errorCode,
|
|
689
804
|
};
|
|
690
|
-
telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
|
|
691
|
-
const output = { error: errorMessage };
|
|
692
805
|
return {
|
|
693
806
|
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
694
807
|
structuredContent: output,
|