n8n 2.35.4 → 2.36.2
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/start.js +4 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/config/index.js +0 -1
- package/dist/config/index.js.map +1 -1
- package/dist/constants/oauth2-triggers.d.ts +0 -1
- package/dist/constants/oauth2-triggers.js +0 -4
- package/dist/constants/oauth2-triggers.js.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/controllers/ai.controller.d.ts +2 -5
- package/dist/controllers/ai.controller.js.map +1 -1
- package/dist/controllers/api-keys.controller.d.ts +1 -1
- package/dist/controllers/api-keys.controller.js +10 -10
- package/dist/controllers/api-keys.controller.js.map +1 -1
- package/dist/controllers/dynamic-node-parameters.controller.d.ts +6 -1
- package/dist/controllers/dynamic-node-parameters.controller.js +21 -2
- package/dist/controllers/dynamic-node-parameters.controller.js.map +1 -1
- package/dist/controllers/e2e.controller.d.ts +21 -2
- package/dist/controllers/e2e.controller.js +40 -2
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/role.controller.js +3 -5
- package/dist/controllers/role.controller.js.map +1 -1
- package/dist/credentials/credential-connection-status-provider.interface.d.ts +4 -1
- package/dist/credentials/credential-connection-status-proxy.d.ts +2 -2
- package/dist/credentials/credential-connection-status-proxy.js +3 -3
- package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
- package/dist/credentials/credentials-finder.service.d.ts +2 -1
- package/dist/credentials/credentials-finder.service.js +2 -1
- package/dist/credentials/credentials-finder.service.js.map +1 -1
- package/dist/credentials/credentials.controller.d.ts +8 -6
- package/dist/credentials/credentials.controller.js +3 -12
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +38 -30
- package/dist/credentials/credentials.service.ee.d.ts +6 -4
- package/dist/credentials/credentials.service.ee.js +2 -1
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +93 -45
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/credentials-overwrites.d.ts +1 -0
- package/dist/credentials-overwrites.js +17 -0
- package/dist/credentials-overwrites.js.map +1 -1
- package/dist/deprecation/deprecation.service.js +5 -0
- package/dist/deprecation/deprecation.service.js.map +1 -1
- package/dist/errors/http-error-classifier.d.ts +4 -1
- package/dist/errors/http-error-classifier.js +4 -1
- package/dist/errors/http-error-classifier.js.map +1 -1
- package/dist/evaluation.ee/evaluation-dataset.service.d.ts +3 -3
- package/dist/evaluation.ee/evaluation-dataset.service.js +5 -6
- package/dist/evaluation.ee/evaluation-dataset.service.js.map +1 -1
- package/dist/events/event.service.d.ts +2 -1
- package/dist/events/event.service.js.map +1 -1
- package/dist/events/maps/poll-trigger-metrics.event-map.d.ts +9 -0
- package/dist/events/maps/poll-trigger-metrics.event-map.js +3 -0
- package/dist/events/maps/poll-trigger-metrics.event-map.js.map +1 -0
- package/dist/executions/enqueued-execution-recovery.service.js +7 -1
- package/dist/executions/enqueued-execution-recovery.service.js.map +1 -1
- package/dist/executions/execution-persistence.d.ts +7 -2
- package/dist/executions/execution-persistence.js +27 -6
- package/dist/executions/execution-persistence.js.map +1 -1
- package/dist/executions/execution.service.d.ts +4 -1
- package/dist/executions/execution.service.js +2 -2
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/load-nodes-and-credentials.d.ts +1 -0
- package/dist/load-nodes-and-credentials.js +31 -16
- package/dist/load-nodes-and-credentials.js.map +1 -1
- package/dist/metrics/prometheus/poll-trigger-metrics.service.d.ts +13 -0
- package/dist/metrics/prometheus/poll-trigger-metrics.service.js +81 -0
- package/dist/metrics/prometheus/poll-trigger-metrics.service.js.map +1 -0
- package/dist/metrics/prometheus/prometheus.service.d.ts +2 -1
- package/dist/metrics/prometheus/prometheus.service.js +4 -2
- package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
- package/dist/metrics/prometheus/scheduler-metrics.service.d.ts +2 -0
- package/dist/metrics/prometheus/scheduler-metrics.service.js +10 -0
- package/dist/metrics/prometheus/scheduler-metrics.service.js.map +1 -1
- package/dist/modules/agent-evals/agent-eval-case-generation.service.d.ts +3 -3
- package/dist/modules/agent-evals/agent-eval-case-generation.service.js +5 -5
- package/dist/modules/agent-evals/agent-eval-case-generation.service.js.map +1 -1
- package/dist/modules/agent-evals/agent-eval-rating.service.js +5 -6
- package/dist/modules/agent-evals/agent-eval-rating.service.js.map +1 -1
- package/dist/modules/agents/adapters/agents-credential-provider.d.ts +1 -0
- package/dist/modules/agents/adapters/agents-credential-provider.js +11 -2
- package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
- package/dist/modules/agents/agent-config.service.js +9 -0
- package/dist/modules/agents/agent-config.service.js.map +1 -1
- package/dist/modules/agents/agent-default-model-resolver.service.d.ts +19 -0
- package/dist/modules/agents/agent-default-model-resolver.service.js +106 -0
- package/dist/modules/agents/agent-default-model-resolver.service.js.map +1 -0
- package/dist/modules/agents/agent-execution-orchestrator.service.d.ts +7 -1
- package/dist/modules/agents/agent-execution-orchestrator.service.js +200 -108
- package/dist/modules/agents/agent-execution-orchestrator.service.js.map +1 -1
- package/dist/modules/agents/agent-integration-management.service.d.ts +24 -6
- package/dist/modules/agents/agent-integration-management.service.js +175 -34
- package/dist/modules/agents/agent-integration-management.service.js.map +1 -1
- package/dist/modules/agents/agent-integration-persistence.service.d.ts +21 -6
- package/dist/modules/agents/agent-integration-persistence.service.js +61 -50
- package/dist/modules/agents/agent-integration-persistence.service.js.map +1 -1
- package/dist/modules/agents/agent-integrations.controller.d.ts +3 -5
- package/dist/modules/agents/agent-integrations.controller.js +11 -6
- package/dist/modules/agents/agent-integrations.controller.js.map +1 -1
- package/dist/modules/agents/agent-knowledge-commands.d.ts +3 -3
- package/dist/modules/agents/agent-knowledge-commands.js +16 -22
- package/dist/modules/agents/agent-knowledge-commands.js.map +1 -1
- package/dist/modules/agents/{agent-knowledge-sandbox.service.d.ts → agent-knowledge-mirror.service.d.ts} +6 -22
- package/dist/modules/agents/agent-knowledge-mirror.service.js +442 -0
- package/dist/modules/agents/agent-knowledge-mirror.service.js.map +1 -0
- package/dist/modules/agents/agent-knowledge-storage.d.ts +7 -3
- package/dist/modules/agents/agent-knowledge-storage.js +11 -4
- package/dist/modules/agents/agent-knowledge-storage.js.map +1 -1
- package/dist/modules/agents/agent-knowledge.controller.d.ts +3 -5
- package/dist/modules/agents/agent-knowledge.controller.js +5 -8
- package/dist/modules/agents/agent-knowledge.controller.js.map +1 -1
- package/dist/modules/agents/agent-knowledge.service.d.ts +8 -6
- package/dist/modules/agents/agent-knowledge.service.js +20 -14
- package/dist/modules/agents/agent-knowledge.service.js.map +1 -1
- package/dist/modules/agents/agent-model-catalog.service.d.ts +4 -1
- package/dist/modules/agents/agent-model-catalog.service.js +24 -13
- package/dist/modules/agents/agent-model-catalog.service.js.map +1 -1
- package/dist/modules/agents/agent-runtime-cache.service.d.ts +9 -1
- package/dist/modules/agents/agent-runtime-cache.service.js +50 -17
- package/dist/modules/agents/agent-runtime-cache.service.js.map +1 -1
- package/dist/modules/agents/agent-runtime-reconstruction.service.d.ts +11 -6
- package/dist/modules/agents/agent-runtime-reconstruction.service.js +35 -18
- package/dist/modules/agents/agent-runtime-reconstruction.service.js.map +1 -1
- package/dist/modules/agents/agent-sandbox-principal.d.ts +34 -0
- package/dist/modules/agents/agent-sandbox-principal.js +64 -0
- package/dist/modules/agents/agent-sandbox-principal.js.map +1 -0
- package/dist/modules/agents/agent-sandbox-runtime.service.d.ts +42 -0
- package/dist/modules/agents/agent-sandbox-runtime.service.js +290 -0
- package/dist/modules/agents/agent-sandbox-runtime.service.js.map +1 -0
- package/dist/modules/agents/agent-sandbox.controller.d.ts +3 -6
- package/dist/modules/agents/agent-sandbox.controller.js +6 -14
- package/dist/modules/agents/agent-sandbox.controller.js.map +1 -1
- package/dist/modules/agents/agent-session-langsmith-export.service.d.ts +27 -0
- package/dist/modules/agents/agent-session-langsmith-export.service.js +390 -0
- package/dist/modules/agents/agent-session-langsmith-export.service.js.map +1 -0
- package/dist/modules/agents/agent-skills.service.js +4 -0
- package/dist/modules/agents/agent-skills.service.js.map +1 -1
- package/dist/modules/agents/agent-slack-integrations.controller.d.ts +22 -2
- package/dist/modules/agents/agent-slack-integrations.controller.js +108 -9
- package/dist/modules/agents/agent-slack-integrations.controller.js.map +1 -1
- package/dist/modules/agents/agent-sse-stream.js +10 -3
- package/dist/modules/agents/agent-sse-stream.js.map +1 -1
- package/dist/modules/agents/agent-threads.controller.d.ts +8 -1
- package/dist/modules/agents/agent-threads.controller.js +20 -2
- package/dist/modules/agents/agent-threads.controller.js.map +1 -1
- package/dist/modules/agents/agent-validation.service.js +9 -0
- package/dist/modules/agents/agent-validation.service.js.map +1 -1
- package/dist/modules/agents/agent-workflow-execution.service.d.ts +8 -2
- package/dist/modules/agents/agent-workflow-execution.service.js +43 -7
- package/dist/modules/agents/agent-workflow-execution.service.js.map +1 -1
- package/dist/modules/agents/agent-workspace.service.d.ts +16 -0
- package/dist/modules/agents/agent-workspace.service.js +65 -0
- package/dist/modules/agents/agent-workspace.service.js.map +1 -0
- package/dist/modules/agents/agents.controller.d.ts +3 -1
- package/dist/modules/agents/agents.controller.js +6 -2
- package/dist/modules/agents/agents.controller.js.map +1 -1
- package/dist/modules/agents/agents.module.d.ts +1 -1
- package/dist/modules/agents/agents.module.js +6 -2
- package/dist/modules/agents/agents.module.js.map +1 -1
- package/dist/modules/agents/agents.service.d.ts +5 -1
- package/dist/modules/agents/agents.service.js +3 -2
- package/dist/modules/agents/agents.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-prompts.d.ts +3 -3
- package/dist/modules/agents/builder/agents-builder-prompts.js +23 -11
- package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-settings.service.d.ts +3 -1
- package/dist/modules/agents/builder/agents-builder-settings.service.js +38 -29
- package/dist/modules/agents/builder/agents-builder-settings.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-tools.service.js +209 -2
- package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder.service.js +5 -2
- package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
- package/dist/modules/agents/builder/builder-model-live-lookup.service.js +1 -1
- package/dist/modules/agents/builder/builder-model-live-lookup.service.js.map +1 -1
- package/dist/modules/agents/builder/builder-tool-names.d.ts +5 -0
- package/dist/modules/agents/builder/builder-tool-names.js +5 -0
- package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
- package/dist/modules/agents/builder/format-preview-context.js +3 -0
- package/dist/modules/agents/builder/format-preview-context.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-credential.tool.d.ts +1 -0
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js +5 -2
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/finish-setup.tool.js +1 -0
- package/dist/modules/agents/builder/interactive/finish-setup.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +7 -3
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
- package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +1 -1
- package/dist/modules/agents/builder/prompts/tools.prompt.d.ts +1 -1
- package/dist/modules/agents/builder/prompts/tools.prompt.js +11 -7
- package/dist/modules/agents/builder/prompts/tools.prompt.js.map +1 -1
- package/dist/modules/agents/builder/resolve-integration.tool.js +1 -1
- package/dist/modules/agents/builder/resolve-integration.tool.js.map +1 -1
- package/dist/modules/agents/builder/skills/external-services.skill.js +13 -94
- package/dist/modules/agents/builder/skills/external-services.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/index.js +2 -0
- package/dist/modules/agents/builder/skills/index.js.map +1 -1
- package/dist/modules/agents/builder/skills/node-tools.skill.d.ts +2 -0
- package/dist/modules/agents/builder/skills/node-tools.skill.js +132 -0
- package/dist/modules/agents/builder/skills/node-tools.skill.js.map +1 -0
- package/dist/modules/agents/builder/skills/target-skills.skill.js +62 -21
- package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-tasks.skill.js +34 -17
- package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
- package/dist/modules/agents/builder/task-objective-template.d.ts +2 -2
- package/dist/modules/agents/builder/task-objective-template.js +11 -9
- package/dist/modules/agents/builder/task-objective-template.js.map +1 -1
- package/dist/modules/agents/execution-recorder.d.ts +25 -0
- package/dist/modules/agents/execution-recorder.js +47 -0
- package/dist/modules/agents/execution-recorder.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-bridge.d.ts +3 -1
- package/dist/modules/agents/integrations/agent-chat-bridge.js +10 -2
- package/dist/modules/agents/integrations/agent-chat-bridge.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-integration.d.ts +10 -1
- package/dist/modules/agents/integrations/agent-chat-integration.js.map +1 -1
- package/dist/modules/agents/integrations/agent-chat-suspension-cards.d.ts +0 -1
- package/dist/modules/agents/integrations/agent-chat-suspension-cards.js +0 -24
- package/dist/modules/agents/integrations/agent-chat-suspension-cards.js.map +1 -1
- package/dist/modules/agents/integrations/chat-integration.service.d.ts +0 -1
- package/dist/modules/agents/integrations/chat-integration.service.js +1 -4
- package/dist/modules/agents/integrations/chat-integration.service.js.map +1 -1
- package/dist/modules/agents/integrations/integration-tool-descriptions.js +1 -0
- package/dist/modules/agents/integrations/integration-tool-descriptions.js.map +1 -1
- package/dist/modules/agents/integrations/n8n-checkpoint-storage.d.ts +3 -0
- package/dist/modules/agents/integrations/n8n-checkpoint-storage.js +26 -1
- package/dist/modules/agents/integrations/n8n-checkpoint-storage.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/slack/assets/n8n-bot-icon.png +0 -0
- package/dist/modules/agents/integrations/platforms/slack/slack-integration.d.ts +5 -4
- package/dist/modules/agents/integrations/platforms/slack/slack-integration.js +5 -3
- package/dist/modules/agents/integrations/platforms/slack/slack-integration.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/slack/slack-managed-setup.service.d.ts +78 -0
- package/dist/modules/agents/integrations/platforms/slack/slack-managed-setup.service.js +620 -0
- package/dist/modules/agents/integrations/platforms/slack/slack-managed-setup.service.js.map +1 -0
- package/dist/modules/agents/integrations/platforms/slack/slack-manual-setup.service.d.ts +6 -6
- package/dist/modules/agents/integrations/platforms/slack/slack-manual-setup.service.js +31 -24
- package/dist/modules/agents/integrations/platforms/slack/slack-manual-setup.service.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/slack/slack-methods.service.d.ts +19 -10
- package/dist/modules/agents/integrations/platforms/slack/slack-methods.service.js +85 -54
- package/dist/modules/agents/integrations/platforms/slack/slack-methods.service.js.map +1 -1
- package/dist/modules/agents/integrations/platforms/slack/slack-setup.types.d.ts +16 -0
- package/dist/modules/agents/integrations/platforms/slack/slack-setup.types.js +36 -0
- package/dist/modules/agents/integrations/platforms/slack/slack-setup.types.js.map +1 -0
- package/dist/modules/agents/json-config/from-json-config.d.ts +2 -2
- package/dist/modules/agents/json-config/from-json-config.js +5 -0
- package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
- package/dist/modules/agents/json-config/mcp-client-factory.js +17 -12
- package/dist/modules/agents/json-config/mcp-client-factory.js.map +1 -1
- package/dist/modules/agents/llm-provider-defaults.js +8 -8
- package/dist/modules/agents/llm-provider-defaults.js.map +1 -1
- package/dist/modules/agents/register-favorite-resolver.d.ts +1 -0
- package/dist/modules/agents/register-favorite-resolver.js +18 -0
- package/dist/modules/agents/register-favorite-resolver.js.map +1 -0
- package/dist/modules/agents/repositories/agent-checkpoint.repository.d.ts +1 -0
- package/dist/modules/agents/repositories/agent-checkpoint.repository.js +7 -0
- package/dist/modules/agents/repositories/agent-checkpoint.repository.js.map +1 -1
- package/dist/modules/agents/repositories/agent-credential-dependency.repository.js +1 -1
- package/dist/modules/agents/repositories/agent-credential-dependency.repository.js.map +1 -1
- package/dist/modules/agents/repositories/agent-execution-thread.repository.d.ts +1 -0
- package/dist/modules/agents/repositories/agent-execution-thread.repository.js +6 -0
- package/dist/modules/agents/repositories/agent-execution-thread.repository.js.map +1 -1
- package/dist/modules/agents/repositories/agent.repository.d.ts +4 -1
- package/dist/modules/agents/repositories/agent.repository.js +14 -0
- package/dist/modules/agents/repositories/agent.repository.js.map +1 -1
- package/dist/modules/agents/runtime/agent-secure-runtime.d.ts +2 -0
- package/dist/modules/agents/runtime/agent-secure-runtime.js +72 -30
- package/dist/modules/agents/runtime/agent-secure-runtime.js.map +1 -1
- package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js +5 -0
- package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js.map +1 -1
- package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.d.ts +1 -0
- package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.js +33 -0
- package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.js.map +1 -1
- package/dist/modules/agents/tools/input-data-tool.js +2 -1
- package/dist/modules/agents/tools/input-data-tool.js.map +1 -1
- package/dist/modules/agents/tools/knowledge/search-knowledge.tool.d.ts +3 -3
- package/dist/modules/agents/tools/knowledge/search-knowledge.tool.js +4 -4
- package/dist/modules/agents/tools/knowledge/search-knowledge.tool.js.map +1 -1
- package/dist/modules/agents/tools/workflow-tool-factory.js +11 -70
- package/dist/modules/agents/tools/workflow-tool-factory.js.map +1 -1
- package/dist/modules/agents/tools/workflow-tool-workflow-loader.service.d.ts +2 -6
- package/dist/modules/agents/tools/workflow-tool-workflow-loader.service.js +6 -25
- package/dist/modules/agents/tools/workflow-tool-workflow-loader.service.js.map +1 -1
- package/dist/modules/agents/utils/execution-to-message-mapper.js +9 -0
- package/dist/modules/agents/utils/execution-to-message-mapper.js.map +1 -1
- package/dist/modules/agents/utils/model-snapshot-alias.d.ts +2 -0
- package/dist/modules/agents/utils/model-snapshot-alias.js +9 -0
- package/dist/modules/agents/utils/model-snapshot-alias.js.map +1 -0
- package/dist/modules/agents/utils/node-tool-validation.d.ts +6 -0
- package/dist/modules/agents/utils/node-tool-validation.js +28 -0
- package/dist/modules/agents/utils/node-tool-validation.js.map +1 -1
- package/dist/modules/data-table/data-table-proxy.service.d.ts +3 -3
- package/dist/modules/data-table/data-table-proxy.service.js +5 -6
- package/dist/modules/data-table/data-table-proxy.service.js.map +1 -1
- package/dist/modules/data-table/data-table.controller.d.ts +3 -3
- package/dist/modules/data-table/data-table.controller.js +5 -6
- package/dist/modules/data-table/data-table.controller.js.map +1 -1
- package/dist/modules/data-table/data-table.module.js +2 -0
- package/dist/modules/data-table/data-table.module.js.map +1 -1
- package/dist/modules/data-table/data-table.repository.d.ts +1 -1
- package/dist/modules/data-table/data-table.repository.js +10 -6
- package/dist/modules/data-table/data-table.repository.js.map +1 -1
- package/dist/modules/data-table/middleware/branch-write-access-middleware.js +2 -3
- package/dist/modules/data-table/middleware/branch-write-access-middleware.js.map +1 -1
- package/dist/modules/data-table/register-favorite-resolver.d.ts +1 -0
- package/dist/modules/data-table/register-favorite-resolver.js +18 -0
- package/dist/modules/data-table/register-favorite-resolver.js.map +1 -0
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/n8n-identifier.d.ts +52 -0
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/n8n-identifier.js +25 -7
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/n8n-identifier.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js +1 -1
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/errors/n8n-identity-not-supported.error.d.ts +4 -0
- package/dist/modules/dynamic-credentials.ee/errors/n8n-identity-not-supported.error.js +12 -0
- package/dist/modules/dynamic-credentials.ee/errors/n8n-identity-not-supported.error.js.map +1 -0
- package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.d.ts +8 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js +49 -2
- package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +8 -3
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +29 -6
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js +3 -0
- package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.d.ts +3 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js +9 -12
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +11 -0
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
- package/dist/modules/favorites/favorite-resource-resolver.registry.d.ts +17 -0
- package/dist/modules/favorites/favorite-resource-resolver.registry.js +26 -0
- package/dist/modules/favorites/favorite-resource-resolver.registry.js.map +1 -0
- package/dist/modules/favorites/favorites.service.d.ts +4 -7
- package/dist/modules/favorites/favorites.service.js +18 -34
- package/dist/modules/favorites/favorites.service.js.map +1 -1
- package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +0 -1
- package/dist/modules/insights/database/repositories/insights-by-period.repository.js +1 -5
- package/dist/modules/insights/database/repositories/insights-by-period.repository.js.map +1 -1
- package/dist/modules/instance-ai/canvas-node-context-flag-gate.d.ts +7 -0
- package/dist/modules/instance-ai/canvas-node-context-flag-gate.js +35 -0
- package/dist/modules/instance-ai/canvas-node-context-flag-gate.js.map +1 -0
- package/dist/modules/instance-ai/drop-rejected-attachments.d.ts +18 -0
- package/dist/modules/instance-ai/drop-rejected-attachments.js +49 -0
- package/dist/modules/instance-ai/drop-rejected-attachments.js.map +1 -0
- package/dist/modules/instance-ai/eval/agent-execution.service.js +2 -1
- package/dist/modules/instance-ai/eval/agent-execution.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-error-reporter.service.d.ts +1 -0
- package/dist/modules/instance-ai/instance-ai-error-reporter.service.js +9 -0
- package/dist/modules/instance-ai/instance-ai-error-reporter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-model.service.d.ts +3 -3
- package/dist/modules/instance-ai/instance-ai-model.service.js +15 -21
- package/dist/modules/instance-ai/instance-ai-model.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-settings.service.d.ts +9 -4
- package/dist/modules/instance-ai/instance-ai-settings.service.js +119 -98
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-terminal-outcome.service.d.ts +4 -0
- package/dist/modules/instance-ai/instance-ai-terminal-outcome.service.js +11 -0
- package/dist/modules/instance-ai/instance-ai-terminal-outcome.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +16 -14
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +143 -79
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.controller.js +9 -0
- package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.module.js +3 -3
- package/dist/modules/instance-ai/instance-ai.module.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +19 -6
- package/dist/modules/instance-ai/instance-ai.service.js +288 -27
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/internal-messages.js +1 -1
- package/dist/modules/instance-ai/internal-messages.js.map +1 -1
- package/dist/modules/instance-ai/repositories/instance-ai-thread-grant.repository.d.ts +1 -0
- package/dist/modules/instance-ai/repositories/instance-ai-thread-grant.repository.js +3 -0
- package/dist/modules/instance-ai/repositories/instance-ai-thread-grant.repository.js.map +1 -1
- package/dist/modules/instance-ai/stream-transport-error.d.ts +1 -0
- package/dist/modules/instance-ai/stream-transport-error.js +9 -0
- package/dist/modules/instance-ai/stream-transport-error.js.map +1 -0
- package/dist/modules/instance-ai/workflow-verification-task-projector.js +4 -1
- package/dist/modules/instance-ai/workflow-verification-task-projector.js.map +1 -1
- package/dist/modules/mcp/dto/update-mcp-settings.dto.d.ts +32 -2
- package/dist/modules/mcp/dto/update-mcp-settings.dto.js +17 -3
- package/dist/modules/mcp/dto/update-mcp-settings.dto.js.map +1 -1
- package/dist/modules/mcp/mcp-protected-resource.d.ts +3 -2
- package/dist/modules/mcp/mcp-protected-resource.js +6 -3
- package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
- package/dist/modules/mcp/mcp-scopes.d.ts +1 -0
- package/dist/modules/mcp/mcp-scopes.js +12 -2
- package/dist/modules/mcp/mcp-scopes.js.map +1 -1
- package/dist/modules/mcp/mcp.controller.js +1 -1
- package/dist/modules/mcp/mcp.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.module.d.ts +1 -0
- package/dist/modules/mcp/mcp.module.js +4 -2
- package/dist/modules/mcp/mcp.module.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +6 -3
- package/dist/modules/mcp/mcp.service.js +24 -5
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.controller.d.ts +2 -0
- package/dist/modules/mcp/mcp.settings.controller.js +24 -10
- package/dist/modules/mcp/mcp.settings.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.service.d.ts +4 -3
- package/dist/modules/mcp/mcp.settings.service.js +20 -2
- package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
- package/dist/modules/mcp/mcp.types.d.ts +4 -3
- package/dist/modules/mcp/mcp.utils.d.ts +4 -1
- package/dist/modules/mcp/mcp.utils.js +14 -4
- package/dist/modules/mcp/mcp.utils.js.map +1 -1
- package/dist/modules/mcp/tools/agents/agent-tools.service.js +10 -1
- package/dist/modules/mcp/tools/agents/agent-tools.service.js.map +1 -1
- package/dist/modules/mcp/tools/create-folder.tool.d.ts +13 -0
- package/dist/modules/mcp/tools/create-folder.tool.js +68 -0
- package/dist/modules/mcp/tools/create-folder.tool.js.map +1 -0
- package/dist/modules/mcp/tools/data-table/add-data-table-rows.tool.js +1 -1
- package/dist/modules/mcp/tools/data-table/add-data-table-rows.tool.js.map +1 -1
- package/dist/modules/mcp/tools/data-table/get-data-table-rows.tool.d.ts +44 -0
- package/dist/modules/mcp/tools/data-table/get-data-table-rows.tool.js +134 -0
- package/dist/modules/mcp/tools/data-table/get-data-table-rows.tool.js.map +1 -0
- package/dist/modules/mcp/tools/data-table/index.d.ts +1 -0
- package/dist/modules/mcp/tools/data-table/index.js +3 -1
- package/dist/modules/mcp/tools/data-table/index.js.map +1 -1
- package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +11 -21
- package/dist/modules/mcp/tools/execute-workflow.tool.js +113 -76
- package/dist/modules/mcp/tools/execute-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/folder-error.utils.d.ts +13 -0
- package/dist/modules/mcp/tools/folder-error.utils.js +25 -0
- package/dist/modules/mcp/tools/folder-error.utils.js.map +1 -0
- package/dist/modules/mcp/tools/get-workflow-details.tool.js +1 -1
- package/dist/modules/mcp/tools/get-workflow-details.tool.js.map +1 -1
- package/dist/modules/mcp/tools/get-workflow-versions-diff.tool.d.ts +81 -0
- package/dist/modules/mcp/tools/get-workflow-versions-diff.tool.js +218 -0
- package/dist/modules/mcp/tools/get-workflow-versions-diff.tool.js.map +1 -0
- package/dist/modules/mcp/tools/move-workflows-to-folder.tool.d.ts +13 -0
- package/dist/modules/mcp/tools/move-workflows-to-folder.tool.js +122 -0
- package/dist/modules/mcp/tools/move-workflows-to-folder.tool.js.map +1 -0
- package/dist/modules/mcp/tools/schemas.d.ts +7 -0
- package/dist/modules/mcp/tools/schemas.js +15 -1
- package/dist/modules/mcp/tools/schemas.js.map +1 -1
- package/dist/modules/mcp/tools/search-folders.tool.d.ts +3 -2
- package/dist/modules/mcp/tools/search-folders.tool.js +14 -8
- package/dist/modules/mcp/tools/search-folders.tool.js.map +1 -1
- package/dist/modules/mcp/tools/test-workflow.tool.js +10 -18
- package/dist/modules/mcp/tools/test-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/update-folder.tool.d.ts +14 -0
- package/dist/modules/mcp/tools/update-folder.tool.js +74 -0
- package/dist/modules/mcp/tools/update-folder.tool.js.map +1 -0
- package/dist/modules/mcp/tools/webhook-utils.js +6 -4
- package/dist/modules/mcp/tools/webhook-utils.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +18 -5
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.d.ts +4 -4
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +467 -397
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-inputs.d.ts +111 -0
- package/dist/modules/mcp/tools/workflow-inputs.js +81 -0
- package/dist/modules/mcp/tools/workflow-inputs.js.map +1 -0
- package/dist/modules/mcp/tools/workflow-validation.utils.d.ts +2 -0
- package/dist/modules/mcp/tools/workflow-validation.utils.js +7 -6
- package/dist/modules/mcp/tools/workflow-validation.utils.js.map +1 -1
- package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js +4 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/credential.serializer.js +4 -2
- package/dist/modules/n8n-packages/entities/credential/credential.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js +13 -9
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.js +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/folder/folder.serializer.js +4 -2
- package/dist/modules/n8n-packages/entities/folder/folder.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/package-serialization.types.d.ts +17 -0
- package/dist/modules/n8n-packages/entities/package-serialization.types.js +7 -0
- package/dist/modules/n8n-packages/entities/package-serialization.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/project/project.exporter.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/project/project.exporter.js +2 -0
- package/dist/modules/n8n-packages/entities/project/project.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/project/project.serializer.js +4 -2
- package/dist/modules/n8n-packages/entities/project/project.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/tag/tag.exporter.js +3 -1
- package/dist/modules/n8n-packages/entities/tag/tag.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/variable/variable.serializer.js +6 -3
- package/dist/modules/n8n-packages/entities/variable/variable.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.js +21 -4
- package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-dependency-resolver.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow-dependency-resolver.js +4 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-dependency-resolver.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow-version-policy.d.ts +4 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow-version-policy.js +48 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow-version-policy.js.map +1 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +7 -2
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js +5 -3
- package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.service.js +6 -0
- package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.types.d.ts +8 -0
- package/dist/modules/n8n-packages/n8n-packages.types.js +7 -1
- package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
- package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.d.ts +2 -2
- package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.js +3 -3
- package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.js.map +1 -1
- package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.d.ts +2 -2
- package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.js +3 -3
- package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.js.map +1 -1
- package/dist/modules/oauth-server/oauth-consent.controller.js +2 -0
- package/dist/modules/oauth-server/oauth-consent.controller.js.map +1 -1
- package/dist/modules/oauth-server/oauth-consent.service.d.ts +8 -1
- package/dist/modules/oauth-server/oauth-consent.service.js +33 -0
- package/dist/modules/oauth-server/oauth-consent.service.js.map +1 -1
- package/dist/modules/oauth-server/oauth-server.service.d.ts +6 -1
- package/dist/modules/oauth-server/oauth-server.service.js +36 -4
- package/dist/modules/oauth-server/oauth-server.service.js.map +1 -1
- package/dist/modules/oauth-server/oauth-token.service.d.ts +6 -2
- package/dist/modules/oauth-server/oauth-token.service.js +19 -7
- package/dist/modules/oauth-server/oauth-token.service.js.map +1 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-resource.resolver.d.ts +7 -3
- package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-resource.resolver.js +8 -7
- package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-resource.resolver.js.map +1 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-test-resource.resolver.d.ts +6 -3
- package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-test-resource.resolver.js +8 -7
- package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-test-resource.resolver.js.map +1 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/utils.d.ts +2 -0
- package/dist/modules/oauth-server/protected-resource-resolvers/utils.js +5 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/utils.js.map +1 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-test-trigger-resource.resolver.d.ts +4 -3
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-test-trigger-resource.resolver.js +7 -7
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-test-trigger-resource.resolver.js.map +1 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-trigger-resource.resolver.d.ts +5 -3
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-trigger-resource.resolver.js +7 -7
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-trigger-resource.resolver.js.map +1 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-test-trigger-resource.resolver.js +7 -11
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-test-trigger-resource.resolver.js.map +1 -1
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-trigger-resource.resolver.js +7 -11
- package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-trigger-resource.resolver.js.map +1 -1
- package/dist/modules/oauth-server/resource-gate.d.ts +6 -0
- package/dist/modules/oauth-server/resource-gate.js +17 -0
- package/dist/modules/oauth-server/resource-gate.js.map +1 -0
- package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js +1 -9
- package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js.map +1 -1
- package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.d.ts +5 -2
- package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js +14 -4
- package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-preferences.service.ee.d.ts +3 -1
- package/dist/modules/source-control.ee/source-control-preferences.service.ee.js +5 -2
- package/dist/modules/source-control.ee/source-control-preferences.service.ee.js.map +1 -1
- package/dist/modules/workflow-reviews.ee/workflow-review-access.service.d.ts +27 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-access.service.js +108 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-access.service.js.map +1 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-activity.service.d.ts +23 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-activity.service.js +99 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-activity.service.js.map +1 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-auto-close.service.d.ts +4 -2
- package/dist/modules/workflow-reviews.ee/workflow-review-auto-close.service.js +30 -11
- package/dist/modules/workflow-reviews.ee/workflow-review-auto-close.service.js.map +1 -1
- package/dist/modules/workflow-reviews.ee/workflow-review-eligibility.service.d.ts +18 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-eligibility.service.js +77 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-eligibility.service.js.map +1 -0
- package/dist/modules/workflow-reviews.ee/workflow-review-inbox.service.d.ts +8 -11
- package/dist/modules/workflow-reviews.ee/workflow-review-inbox.service.js +52 -71
- package/dist/modules/workflow-reviews.ee/workflow-review-inbox.service.js.map +1 -1
- package/dist/modules/workflow-reviews.ee/workflow-review-request.service.d.ts +6 -4
- package/dist/modules/workflow-reviews.ee/workflow-review-request.service.js +157 -40
- package/dist/modules/workflow-reviews.ee/workflow-review-request.service.js.map +1 -1
- package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.d.ts +6 -2
- package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.js +30 -2
- package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.js.map +1 -1
- package/dist/modules/workflow-reviews.ee/workflow-review.mapper.d.ts +4 -2
- package/dist/modules/workflow-reviews.ee/workflow-review.mapper.js +69 -0
- package/dist/modules/workflow-reviews.ee/workflow-review.mapper.js.map +1 -1
- package/dist/oauth/account-identifier.d.ts +2 -0
- package/dist/oauth/account-identifier.js +38 -0
- package/dist/oauth/account-identifier.js.map +1 -0
- package/dist/oauth/oauth.service.d.ts +0 -1
- package/dist/oauth/oauth.service.js +7 -39
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/posthog/index.js +3 -0
- package/dist/posthog/index.js.map +1 -1
- package/dist/public-api/index.d.ts +1 -1
- package/dist/public-api/index.js +8 -4
- package/dist/public-api/index.js.map +1 -1
- package/dist/public-api/types.d.ts +0 -16
- package/dist/public-api/v1/controllers/index.d.ts +1 -0
- package/dist/public-api/v1/controllers/index.js +1 -0
- package/dist/public-api/v1/controllers/index.js.map +1 -1
- package/dist/public-api/v1/controllers/role-mapping-rules.public.controller.d.ts +11 -0
- package/dist/public-api/v1/controllers/role-mapping-rules.public.controller.js +61 -0
- package/dist/public-api/v1/controllers/role-mapping-rules.public.controller.js.map +1 -0
- package/dist/public-api/v1/controllers/roles.public.controller.d.ts +4 -1
- package/dist/public-api/v1/controllers/roles.public.controller.js +95 -10
- package/dist/public-api/v1/controllers/roles.public.controller.js.map +1 -1
- package/dist/public-api/v1/controllers/workflows.public.controller.d.ts +11 -2
- package/dist/public-api/v1/controllers/workflows.public.controller.js +159 -3
- package/dist/public-api/v1/controllers/workflows.public.controller.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js +111 -43
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.middleware.js +13 -6
- package/dist/public-api/v1/handlers/credentials/credentials.middleware.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.utils.d.ts +12 -0
- package/dist/public-api/v1/handlers/credentials/credentials.utils.js +182 -0
- package/dist/public-api/v1/handlers/credentials/credentials.utils.js.map +1 -0
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.d.ts +1 -0
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +1 -0
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/workflows/workflows.handler.d.ts +0 -3
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js +0 -76
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +678 -126
- package/dist/public-api/v1/public-api-error-response.d.ts +2 -1
- package/dist/public-api/v1/public-api-error-response.js +2 -2
- package/dist/public-api/v1/public-api-error-response.js.map +1 -1
- package/dist/scaling/constants.js +1 -0
- package/dist/scaling/constants.js.map +1 -1
- package/dist/scaling/job-processor.js +15 -11
- package/dist/scaling/job-processor.js.map +1 -1
- package/dist/scaling/scaling.types.d.ts +2 -1
- package/dist/scheduling/durable-job-provisioner.d.ts +3 -2
- package/dist/scheduling/durable-job-provisioner.js +42 -8
- package/dist/scheduling/durable-job-provisioner.js.map +1 -1
- package/dist/scheduling/durable-scheduler.js +5 -1
- package/dist/scheduling/durable-scheduler.js.map +1 -1
- package/dist/scheduling/owner-key.d.ts +14 -0
- package/dist/scheduling/owner-key.js +17 -0
- package/dist/scheduling/owner-key.js.map +1 -0
- package/dist/scheduling/poll-trigger-node/poll-job-provider.d.ts +3 -1
- package/dist/scheduling/poll-trigger-node/poll-job-provider.js +7 -3
- package/dist/scheduling/poll-trigger-node/poll-job-provider.js.map +1 -1
- package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.d.ts +5 -2
- package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.js +60 -33
- package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.js.map +1 -1
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-job-registrar.js +35 -6
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-job-registrar.js.map +1 -1
- package/dist/security-audit/risk-reporters/instance-risk-reporter.js +1 -1
- package/dist/security-audit/risk-reporters/instance-risk-reporter.js.map +1 -1
- package/dist/server.js +8 -9
- package/dist/server.js.map +1 -1
- package/dist/services/ai-gateway.service.d.ts +3 -7
- package/dist/services/ai-gateway.service.js +31 -8
- package/dist/services/ai-gateway.service.js.map +1 -1
- package/dist/services/api-key-auth.strategy.js +3 -0
- package/dist/services/api-key-auth.strategy.js.map +1 -1
- package/dist/services/dynamic-node-parameters.service.d.ts +4 -2
- package/dist/services/dynamic-node-parameters.service.js +17 -3
- package/dist/services/dynamic-node-parameters.service.js.map +1 -1
- package/dist/services/folder.service.d.ts +1 -1
- package/dist/services/folder.service.js.map +1 -1
- package/dist/services/frontend.service.js +2 -1
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/instance-write-access.service.d.ts +5 -0
- package/dist/services/instance-write-access.service.js +26 -0
- package/dist/services/instance-write-access.service.js.map +1 -0
- package/dist/services/oauth-token-verifier-proxy.service.d.ts +4 -2
- package/dist/services/oauth-token-verifier-proxy.service.js +2 -2
- package/dist/services/oauth-token-verifier-proxy.service.js.map +1 -1
- package/dist/services/ownership-transfer/ownership-transfer.manifest.json +1 -1
- package/dist/services/project.service.ee.js +12 -5
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/protected-resource.registry.d.ts +4 -0
- package/dist/services/protected-resource.registry.js.map +1 -1
- package/dist/services/pruning/workflow-history-compaction.service.js +9 -6
- package/dist/services/pruning/workflow-history-compaction.service.js.map +1 -1
- package/dist/services/role.service.d.ts +13 -3
- package/dist/services/role.service.js +13 -5
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/sandbox-settings.service.d.ts +29 -0
- package/dist/services/sandbox-settings.service.js +144 -0
- package/dist/services/sandbox-settings.service.js.map +1 -0
- package/dist/services/session-cookie-auth.strategy.d.ts +11 -0
- package/dist/services/session-cookie-auth.strategy.js +61 -0
- package/dist/services/session-cookie-auth.strategy.js.map +1 -0
- package/dist/utils/ai-proxy-language-model.d.ts +13 -0
- package/dist/utils/ai-proxy-language-model.js +48 -0
- package/dist/utils/ai-proxy-language-model.js.map +1 -0
- package/dist/utils/ttl-map.d.ts +3 -1
- package/dist/utils/ttl-map.js +13 -17
- package/dist/utils/ttl-map.js.map +1 -1
- package/dist/webhooks/webhook-helpers.js +12 -2
- package/dist/webhooks/webhook-helpers.js.map +1 -1
- package/dist/workflow-execute-additional-data.js +17 -1
- package/dist/workflow-execute-additional-data.js.map +1 -1
- package/dist/workflow-runner.d.ts +4 -1
- package/dist/workflow-runner.js +6 -1
- package/dist/workflow-runner.js.map +1 -1
- package/dist/workflows/publication/trigger-diff.js +10 -1
- package/dist/workflows/publication/trigger-diff.js.map +1 -1
- package/dist/workflows/publication/workflow-publication-outbox-consumer.d.ts +3 -4
- package/dist/workflows/publication/workflow-publication-outbox-consumer.js +46 -50
- package/dist/workflows/publication/workflow-publication-outbox-consumer.js.map +1 -1
- package/dist/workflows/publication/workflow-publication-outbox-worker-pool.d.ts +16 -0
- package/dist/workflows/publication/workflow-publication-outbox-worker-pool.js +50 -0
- package/dist/workflows/publication/workflow-publication-outbox-worker-pool.js.map +1 -0
- package/dist/workflows/triggers/durable-poller-gate.service.d.ts +19 -0
- package/dist/workflows/triggers/durable-poller-gate.service.js +78 -0
- package/dist/workflows/triggers/durable-poller-gate.service.js.map +1 -0
- package/dist/workflows/triggers/enabled-trigger-nodes.d.ts +6 -0
- package/dist/workflows/triggers/enabled-trigger-nodes.js +18 -0
- package/dist/workflows/triggers/enabled-trigger-nodes.js.map +1 -0
- package/dist/workflows/triggers/poll-cursor.service.d.ts +39 -0
- package/dist/workflows/triggers/poll-cursor.service.js +100 -0
- package/dist/workflows/triggers/poll-cursor.service.js.map +1 -0
- package/dist/workflows/triggers/trigger-execution-context.factory.d.ts +6 -4
- package/dist/workflows/triggers/trigger-execution-context.factory.js +56 -7
- package/dist/workflows/triggers/trigger-execution-context.factory.js.map +1 -1
- package/dist/workflows/triggers/workflow-trigger-activator.d.ts +3 -5
- package/dist/workflows/triggers/workflow-trigger-activator.js +2 -11
- package/dist/workflows/triggers/workflow-trigger-activator.js.map +1 -1
- package/dist/workflows/workflow-creation.service.d.ts +4 -1
- package/dist/workflows/workflow-creation.service.js +20 -2
- package/dist/workflows/workflow-creation.service.js.map +1 -1
- package/dist/workflows/workflow-entity-mapper.js.map +1 -1
- package/dist/workflows/workflow-execution.service.d.ts +9 -4
- package/dist/workflows/workflow-execution.service.js +93 -2
- package/dist/workflows/workflow-execution.service.js.map +1 -1
- package/dist/workflows/workflow-finder.service.d.ts +1 -0
- package/dist/workflows/workflow-finder.service.js +5 -1
- package/dist/workflows/workflow-finder.service.js.map +1 -1
- package/dist/workflows/workflow-validation.service.d.ts +1 -0
- package/dist/workflows/workflow-validation.service.js +32 -11
- package/dist/workflows/workflow-validation.service.js.map +1 -1
- package/dist/workflows/workflow.service.d.ts +1 -0
- package/dist/workflows/workflow.service.js +18 -4
- package/dist/workflows/workflow.service.js.map +1 -1
- package/package.json +42 -41
- package/templates/form-shell.handlebars +155 -86
- package/templates/form-trigger.handlebars +97 -2
- package/dist/modules/agents/agent-knowledge-gate.d.ts +0 -2
- package/dist/modules/agents/agent-knowledge-gate.js +0 -7
- package/dist/modules/agents/agent-knowledge-gate.js.map +0 -1
- package/dist/modules/agents/agent-knowledge-sandbox.service.js +0 -693
- package/dist/modules/agents/agent-knowledge-sandbox.service.js.map +0 -1
- package/dist/modules/workflow-reviews.ee/workflow-review-decision-eligibility.service.d.ts +0 -15
- package/dist/modules/workflow-reviews.ee/workflow-review-decision-eligibility.service.js +0 -52
- package/dist/modules/workflow-reviews.ee/workflow-review-decision-eligibility.service.js.map +0 -1
- package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +0 -36
- package/dist/public-api/v1/handlers/credentials/credentials.service.js +0 -330
- package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +0 -1
|
@@ -10,6 +10,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.InstanceAiService = exports.QuotaExhaustedStreamError = exports.QUOTA_EXHAUSTED_USER_MESSAGE = void 0;
|
|
13
|
+
exports.buildContextResourcesBlock = buildContextResourcesBlock;
|
|
14
|
+
exports.isAttachmentRejectedByProviderError = isAttachmentRejectedByProviderError;
|
|
13
15
|
exports.getUserFacingErrorMessage = getUserFacingErrorMessage;
|
|
14
16
|
exports.isMaskedStreamFailure = isMaskedStreamFailure;
|
|
15
17
|
const agents_1 = require("@n8n/agents");
|
|
@@ -32,9 +34,9 @@ const forbidden_error_1 = require("../../errors/response-errors/forbidden.error"
|
|
|
32
34
|
const event_service_1 = require("../../events/event.service");
|
|
33
35
|
const instance_ai_builder_delegate_adapter_1 = require("../../modules/agents/instance-ai-builder-delegate.adapter");
|
|
34
36
|
const check_access_1 = require("../../permissions.ee/check-access");
|
|
35
|
-
const source_control_preferences_service_ee_1 = require("../../modules/source-control.ee/source-control-preferences.service.ee");
|
|
36
37
|
const publisher_service_1 = require("../../scaling/pubsub/publisher.service");
|
|
37
38
|
const ai_service_1 = require("../../services/ai.service");
|
|
39
|
+
const instance_write_access_service_1 = require("../../services/instance-write-access.service");
|
|
38
40
|
const proxy_token_manager_1 = require("../../services/proxy-token-manager");
|
|
39
41
|
const url_service_1 = require("../../services/url.service");
|
|
40
42
|
const telemetry_2 = require("../../telemetry");
|
|
@@ -42,6 +44,8 @@ const utils_1 = require("../../utils");
|
|
|
42
44
|
const agent_preview_handoff_1 = require("./agent-preview-handoff");
|
|
43
45
|
const composite_local_mcp_server_1 = require("./browser/composite-local-mcp-server");
|
|
44
46
|
const instance_ai_browser_session_service_1 = require("./browser/instance-ai-browser-session.service");
|
|
47
|
+
const canvas_node_context_flag_gate_1 = require("./canvas-node-context-flag-gate");
|
|
48
|
+
const drop_rejected_attachments_1 = require("./drop-rejected-attachments");
|
|
45
49
|
const thread_credential_allowlist_service_1 = require("./eval/thread-credential-allowlist.service");
|
|
46
50
|
const durable_event_log_1 = require("./event-bus/durable-event-log");
|
|
47
51
|
const in_process_event_bus_1 = require("./event-bus/in-process-event-bus");
|
|
@@ -70,6 +74,7 @@ const db_iteration_log_storage_1 = require("./storage/db-iteration-log-storage")
|
|
|
70
74
|
const db_snapshot_storage_1 = require("./storage/db-snapshot-storage");
|
|
71
75
|
const typeorm_agent_checkpoint_store_1 = require("./storage/typeorm-agent-checkpoint-store");
|
|
72
76
|
const typeorm_agent_memory_1 = require("./storage/typeorm-agent-memory");
|
|
77
|
+
const stream_transport_error_1 = require("./stream-transport-error");
|
|
73
78
|
const suspended_run_restorer_service_1 = require("./suspended-run-restorer.service");
|
|
74
79
|
const suspended_thread_persistence_service_1 = require("./suspended-thread-persistence.service");
|
|
75
80
|
const tracing_1 = require("./tracing");
|
|
@@ -92,10 +97,33 @@ function buildSuspensionTraceOutputs(runId, suspension) {
|
|
|
92
97
|
...(message ? { message } : {}),
|
|
93
98
|
};
|
|
94
99
|
}
|
|
100
|
+
function buildNodesAttachmentLine(attachment) {
|
|
101
|
+
const setLines = attachment.sets.map((set) => {
|
|
102
|
+
const names = set.nodes.map((node) => node.name ?? node.id);
|
|
103
|
+
const label = names.length === 1
|
|
104
|
+
? `Node "${names[0]}"`
|
|
105
|
+
: `A chain of connected nodes: ${names.join(' → ')}`;
|
|
106
|
+
const input = set.inputNode ? `, preceded by "${set.inputNode.name ?? set.inputNode.id}"` : '';
|
|
107
|
+
const output = set.outputNode
|
|
108
|
+
? `, followed by "${set.outputNode.name ?? set.outputNode.id}"`
|
|
109
|
+
: '';
|
|
110
|
+
const group = set.canvasGroupName
|
|
111
|
+
? `, part of canvas group "${set.canvasGroupName}"`
|
|
112
|
+
: set.canvasGroupId
|
|
113
|
+
? `, part of canvas group \`${set.canvasGroupId}\``
|
|
114
|
+
: '';
|
|
115
|
+
return ` - ${label}${input}${output}${group}.`;
|
|
116
|
+
});
|
|
117
|
+
return `- Selected nodes in workflow \`${attachment.workflowId}\`:\n${setLines.join('\n')}`;
|
|
118
|
+
}
|
|
95
119
|
function buildContextResourcesBlock(contextAttachments) {
|
|
96
|
-
if (contextAttachments.length === 0)
|
|
120
|
+
if (contextAttachments.length === 0) {
|
|
97
121
|
return '';
|
|
122
|
+
}
|
|
98
123
|
const lines = contextAttachments.map((attachment) => {
|
|
124
|
+
if (attachment.type === 'nodes') {
|
|
125
|
+
return buildNodesAttachmentLine(attachment);
|
|
126
|
+
}
|
|
99
127
|
const name = attachment.name ? ` "${attachment.name}"` : '';
|
|
100
128
|
if (attachment.type === 'agent') {
|
|
101
129
|
if (attachment.pending) {
|
|
@@ -124,6 +152,9 @@ function buildContextResourcesBlock(contextAttachments) {
|
|
|
124
152
|
.join('\n');
|
|
125
153
|
return `${internal_messages_1.EDITOR_CONTEXT_OPEN_TAG}\n${JSON.stringify(contextAttachments)}\n\n${prose}\n${internal_messages_1.EDITOR_CONTEXT_CLOSE_TAG}`;
|
|
126
154
|
}
|
|
155
|
+
function isNamedResourceAttachment(attachment) {
|
|
156
|
+
return attachment.type !== 'nodes' && Boolean(attachment.name);
|
|
157
|
+
}
|
|
127
158
|
function buildHandoffContextBlock(context) {
|
|
128
159
|
if (!context || context.source !== 'credential-modal')
|
|
129
160
|
return '';
|
|
@@ -181,16 +212,41 @@ function isSandboxEndpointNotAllowedError(error) {
|
|
|
181
212
|
function isStaleResumeError(error) {
|
|
182
213
|
return error instanceof Error && error.name === 'StaleResumeError';
|
|
183
214
|
}
|
|
215
|
+
const ATTACHMENT_SUBJECT_PATTERN = /image|attachment/;
|
|
216
|
+
const ATTACHMENT_REFUSAL_PATTERN = /exceed|too large|maximum|max allowed|could not process/;
|
|
217
|
+
function collectErrorText(value, depth = 0) {
|
|
218
|
+
if (depth > 4 || value === null || value === undefined)
|
|
219
|
+
return [];
|
|
220
|
+
if (typeof value === 'string')
|
|
221
|
+
return [value];
|
|
222
|
+
if (Array.isArray(value))
|
|
223
|
+
return value.flatMap((item) => collectErrorText(item, depth + 1));
|
|
224
|
+
if (value instanceof Error) {
|
|
225
|
+
return [value.message, ...collectErrorText(Reflect.get(value, 'cause'), depth + 1)];
|
|
226
|
+
}
|
|
227
|
+
if (typeof value === 'object') {
|
|
228
|
+
const record = value;
|
|
229
|
+
return ['message', 'error', 'responseBody', 'data', 'cause', 'errors'].flatMap((key) => collectErrorText(record[key], depth + 1));
|
|
230
|
+
}
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
function isAttachmentRejectedByProviderError(error) {
|
|
234
|
+
const haystack = [getErrorMessage(error), ...collectErrorText(error)].join(' ').toLowerCase();
|
|
235
|
+
return ATTACHMENT_SUBJECT_PATTERN.test(haystack) && ATTACHMENT_REFUSAL_PATTERN.test(haystack);
|
|
236
|
+
}
|
|
184
237
|
exports.QUOTA_EXHAUSTED_USER_MESSAGE = "You've run out of AI credits. Upgrade your plan to continue using the AI assistant.";
|
|
185
238
|
const OPERATIONAL_ERROR_USER_MESSAGE = 'I hit an operational error before I could finish that response. Please try again.';
|
|
186
239
|
const GENERIC_ERROR_USER_MESSAGE = 'Something went wrong before I could finish that response. Please try again.';
|
|
187
240
|
function getUserFacingErrorCode(error) {
|
|
188
241
|
return (0, instance_ai_1.isQuotaExhaustedError)(error) ? 'quota_exhausted' : undefined;
|
|
189
242
|
}
|
|
190
|
-
function getUserFacingErrorMessage(error, fallback = GENERIC_ERROR_USER_MESSAGE) {
|
|
243
|
+
function getUserFacingErrorMessage(error, fallback = GENERIC_ERROR_USER_MESSAGE, opts = {}) {
|
|
191
244
|
if ((0, instance_ai_1.isQuotaExhaustedError)(error)) {
|
|
192
245
|
return exports.QUOTA_EXHAUSTED_USER_MESSAGE;
|
|
193
246
|
}
|
|
247
|
+
if ((0, stream_transport_error_1.isStreamTransportError)(error)) {
|
|
248
|
+
return 'The connection to the AI provider dropped before I could finish that response. Please try again.';
|
|
249
|
+
}
|
|
194
250
|
if (error instanceof n8n_workflow_1.UserError) {
|
|
195
251
|
return error.message;
|
|
196
252
|
}
|
|
@@ -200,6 +256,16 @@ function getUserFacingErrorMessage(error, fallback = GENERIC_ERROR_USER_MESSAGE)
|
|
|
200
256
|
if (isSandboxEndpointNotAllowedError(error)) {
|
|
201
257
|
return "I couldn't finish preparing the workspace sandbox. Please try again in a moment.";
|
|
202
258
|
}
|
|
259
|
+
if (opts.attachmentRemoved !== undefined || isAttachmentRejectedByProviderError(error)) {
|
|
260
|
+
const sizeAdvice = isAttachmentRejectedByProviderError(error)
|
|
261
|
+
? ` Keep it under ${(0, api_types_1.formatAttachmentSizeLimit)()}, and for images no more than 8000x8000 pixels.`
|
|
262
|
+
: '';
|
|
263
|
+
return opts.attachmentRemoved === false
|
|
264
|
+
? 'I could not read one of the attached files, and I could not remove it from this ' +
|
|
265
|
+
`conversation either. Start a new chat and attach it again.${sizeAdvice}`
|
|
266
|
+
: 'I could not read one of the attached files, so I left it out. Attach it again — ' +
|
|
267
|
+
`ideally a smaller version.${sizeAdvice}`;
|
|
268
|
+
}
|
|
203
269
|
if (error instanceof n8n_workflow_1.OperationalError) {
|
|
204
270
|
return OPERATIONAL_ERROR_USER_MESSAGE;
|
|
205
271
|
}
|
|
@@ -212,6 +278,18 @@ function isMaskedStreamFailure(error) {
|
|
|
212
278
|
return true;
|
|
213
279
|
return error.name === 'TypeError' && error.message === 'terminated';
|
|
214
280
|
}
|
|
281
|
+
const GENERATION_STAGE_ERROR_CODES = new Set([
|
|
282
|
+
'missing_captured_fields',
|
|
283
|
+
'unresolved_field',
|
|
284
|
+
'gateway_context_missing',
|
|
285
|
+
]);
|
|
286
|
+
function failureStageForErrorCode(errorCode) {
|
|
287
|
+
if (errorCode && GENERATION_STAGE_ERROR_CODES.has(errorCode))
|
|
288
|
+
return 'generation';
|
|
289
|
+
if (errorCode === 'credential_create_failed')
|
|
290
|
+
return 'persistence';
|
|
291
|
+
return 'unknown';
|
|
292
|
+
}
|
|
215
293
|
class QuotaExhaustedStreamError extends n8n_workflow_1.UserError {
|
|
216
294
|
constructor(maskedError) {
|
|
217
295
|
super(`AI credits exhausted (${maskedError.name}: ${maskedError.message})`, {
|
|
@@ -266,15 +344,21 @@ function toConfirmationData(request) {
|
|
|
266
344
|
case 'credentialSelection':
|
|
267
345
|
return { approved: true, credentials: request.credentials };
|
|
268
346
|
case 'credentialAutoSetup':
|
|
269
|
-
return {
|
|
347
|
+
return {
|
|
348
|
+
approved: true,
|
|
349
|
+
autoSetup: { credentialType: request.credentialType, attemptId: request.attemptId },
|
|
350
|
+
};
|
|
270
351
|
case 'resourceDecision':
|
|
271
352
|
return { approved: true, resourceDecision: request.resourceDecision };
|
|
353
|
+
case 'mcpConnect':
|
|
354
|
+
return { approved: request.approved, connectedSlugs: request.connectedSlugs };
|
|
272
355
|
case 'setupWorkflowApply':
|
|
273
356
|
return {
|
|
274
357
|
approved: true,
|
|
275
358
|
action: 'apply',
|
|
276
359
|
nodeCredentials: request.nodeCredentials,
|
|
277
360
|
nodeParameters: request.nodeParameters,
|
|
361
|
+
skippedNodes: request.skippedNodes,
|
|
278
362
|
};
|
|
279
363
|
case 'setupWorkflowTestTrigger':
|
|
280
364
|
return {
|
|
@@ -293,7 +377,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
293
377
|
}
|
|
294
378
|
return this._mcpClientManager;
|
|
295
379
|
}
|
|
296
|
-
constructor(logger, globalConfig, instanceSettings, adapterService, eventBus, eventLog, interruptedRunSweeper, settingsService, gatewayService, browserSessionService, memoryService, agentMemory, checkpointStore, aiService, threadGrantRepo, pendingConfirmationRepo, urlService, dbSnapshotStorage, dbIterationLogStorage,
|
|
380
|
+
constructor(logger, globalConfig, instanceSettings, adapterService, eventBus, eventLog, interruptedRunSweeper, settingsService, gatewayService, browserSessionService, memoryService, agentMemory, checkpointStore, aiService, threadGrantRepo, pendingConfirmationRepo, urlService, dbSnapshotStorage, dbIterationLogStorage, instanceWriteAccess, telemetry, mcpRegistryService, userRepository, temporaryWorkflowService, errorReporter, ssrfProtectionConfig, ssrfProtectionService, eventService, evalCredentialAllowlists, runProbe, modelService, creditService, publisher, instanceAiErrorReporter, canvasNodeContextFlagGate) {
|
|
297
381
|
this.instanceSettings = instanceSettings;
|
|
298
382
|
this.adapterService = adapterService;
|
|
299
383
|
this.eventBus = eventBus;
|
|
@@ -311,7 +395,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
311
395
|
this.urlService = urlService;
|
|
312
396
|
this.dbSnapshotStorage = dbSnapshotStorage;
|
|
313
397
|
this.dbIterationLogStorage = dbIterationLogStorage;
|
|
314
|
-
this.
|
|
398
|
+
this.instanceWriteAccess = instanceWriteAccess;
|
|
315
399
|
this.telemetry = telemetry;
|
|
316
400
|
this.mcpRegistryService = mcpRegistryService;
|
|
317
401
|
this.userRepository = userRepository;
|
|
@@ -323,11 +407,13 @@ let InstanceAiService = class InstanceAiService {
|
|
|
323
407
|
this.creditService = creditService;
|
|
324
408
|
this.publisher = publisher;
|
|
325
409
|
this.instanceAiErrorReporter = instanceAiErrorReporter;
|
|
410
|
+
this.canvasNodeContextFlagGate = canvasNodeContextFlagGate;
|
|
326
411
|
this.runState = new instance_ai_1.RunStateRegistry();
|
|
327
412
|
this.backgroundTasks = new instance_ai_1.BackgroundTaskManager(MAX_CONCURRENT_BACKGROUND_TASKS_PER_THREAD);
|
|
328
413
|
this.memoryTaskRegistry = new instance_ai_1.MemoryTaskRegistry();
|
|
329
414
|
this.domainAccessTrackersByThread = new Map();
|
|
330
415
|
this.threadPushRef = new Map();
|
|
416
|
+
this.pendingBrowserCredentialSetups = new Map();
|
|
331
417
|
this.planRequestsByThread = new Map();
|
|
332
418
|
this.schedulerLocks = new Map();
|
|
333
419
|
this.failedInternalFollowUpStreaks = new Map();
|
|
@@ -404,6 +490,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
404
490
|
dbSnapshotStorage: this.dbSnapshotStorage,
|
|
405
491
|
agentMemory: this.agentMemory,
|
|
406
492
|
telemetry: this.telemetry,
|
|
493
|
+
errorReporter: this.instanceAiErrorReporter,
|
|
407
494
|
logger: this.logger,
|
|
408
495
|
runState: this.runState,
|
|
409
496
|
suspendedThreads: this.suspendedThreads,
|
|
@@ -494,6 +581,18 @@ let InstanceAiService = class InstanceAiService {
|
|
|
494
581
|
});
|
|
495
582
|
}
|
|
496
583
|
}
|
|
584
|
+
async revokeThreadSessionGrant(threadId, userId, key) {
|
|
585
|
+
try {
|
|
586
|
+
await this.threadGrantRepo.revoke(threadId, userId, key);
|
|
587
|
+
}
|
|
588
|
+
catch (error) {
|
|
589
|
+
this.logger.warn('Failed to revoke Instance AI session grant', {
|
|
590
|
+
threadId,
|
|
591
|
+
key,
|
|
592
|
+
error: getErrorMessage(error),
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
}
|
|
497
596
|
isProxyEnabled() {
|
|
498
597
|
return this.modelService.isProxyEnabled();
|
|
499
598
|
}
|
|
@@ -502,6 +601,15 @@ let InstanceAiService = class InstanceAiService {
|
|
|
502
601
|
const credits = await this.modelService.getCredits(user);
|
|
503
602
|
return (0, instance_ai_credit_display_1.maskCreditsForDisplay)(credits, this.settingsService.isActivationCapped());
|
|
504
603
|
}
|
|
604
|
+
async dropTurnAttachments(args) {
|
|
605
|
+
const outcome = await (0, drop_rejected_attachments_1.dropRejectedAttachmentsFromHistory)(this.agentMemory, { threadId: args.threadId, resourceId: args.resourceId }, this.logger);
|
|
606
|
+
if (outcome === 'no-attachments')
|
|
607
|
+
return undefined;
|
|
608
|
+
return outcome === 'removed';
|
|
609
|
+
}
|
|
610
|
+
shouldDropTurnAttachments(args) {
|
|
611
|
+
return args.turnHadAttachments && args.producedNoOutput;
|
|
612
|
+
}
|
|
505
613
|
async reclassifyMaskedStreamFailure(error, user, context) {
|
|
506
614
|
if (!isMaskedStreamFailure(error))
|
|
507
615
|
return error;
|
|
@@ -563,7 +671,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
563
671
|
}
|
|
564
672
|
subscribeToAgentErrors(agent, threadId, runId) {
|
|
565
673
|
agent.on("error", (event) => {
|
|
566
|
-
if (event.type !== "error"
|
|
674
|
+
if (event.type !== "error")
|
|
675
|
+
return;
|
|
676
|
+
if (!event.source)
|
|
567
677
|
return;
|
|
568
678
|
const severity = (0, instance_ai_error_reporter_service_1.getAgentErrorSeverity)(event.source);
|
|
569
679
|
this.instanceAiErrorReporter.report(event.error, {
|
|
@@ -1331,9 +1441,10 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1331
1441
|
const userGateway = this.gatewayService.findGateway(user.id);
|
|
1332
1442
|
await this.creditService.ensureQuotaLockApplied(user);
|
|
1333
1443
|
const { searchProxyConfig, tracingProxyConfig, tokenManager, proxyBaseUrl } = proxyRunConfig ?? (await this.createProxyRunConfig(user));
|
|
1444
|
+
const proxyContext = { runId, threadId };
|
|
1334
1445
|
const modelId = proxyBaseUrl && tokenManager
|
|
1335
|
-
? await this.modelService.resolveProxyModel(user, proxyBaseUrl, tokenManager)
|
|
1336
|
-
: await this.modelService.resolveAgentModelConfig(user);
|
|
1446
|
+
? await this.modelService.resolveProxyModel(user, proxyBaseUrl, tokenManager, proxyContext)
|
|
1447
|
+
: await this.modelService.resolveAgentModelConfig(user, proxyContext);
|
|
1337
1448
|
const configEvalsEnabled = await this.adapterService.isConfigEvalsEnabled(user);
|
|
1338
1449
|
const mcpConnectionsEnabled = await this.adapterService.isMcpConnectionsEnabled(user);
|
|
1339
1450
|
const context = this.adapterService.createContext(user, {
|
|
@@ -1357,11 +1468,12 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1357
1468
|
context.localMcpServer = localMcpServer;
|
|
1358
1469
|
}
|
|
1359
1470
|
context.permissions = this.settingsService.getPermissions();
|
|
1360
|
-
if (this.
|
|
1471
|
+
if (this.instanceWriteAccess.isReadOnly()) {
|
|
1361
1472
|
context.permissions = (0, api_types_1.applyBranchReadOnlyOverrides)(context.permissions);
|
|
1362
1473
|
context.branchReadOnly = true;
|
|
1363
1474
|
}
|
|
1364
1475
|
context.runId = runId;
|
|
1476
|
+
context.browserCredentialSetup = this.createBrowserCredentialSetupTracker(runId, user.id);
|
|
1365
1477
|
const sessionGrants = await this.loadThreadSessionGrants(threadId, user.id);
|
|
1366
1478
|
context.sessionApprovedToolKeys = sessionGrants;
|
|
1367
1479
|
const grantSessionToolApproval = async (key) => {
|
|
@@ -1369,6 +1481,10 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1369
1481
|
sessionGrants.add(key);
|
|
1370
1482
|
};
|
|
1371
1483
|
context.grantSessionToolApproval = grantSessionToolApproval;
|
|
1484
|
+
context.revokeSessionToolApproval = async (key) => {
|
|
1485
|
+
await this.revokeThreadSessionGrant(threadId, user.id, key);
|
|
1486
|
+
sessionGrants.delete(key);
|
|
1487
|
+
};
|
|
1372
1488
|
const domainTracker = (0, instance_ai_1.createDomainAccessTracker)({
|
|
1373
1489
|
grantedKeys: sessionGrants,
|
|
1374
1490
|
persistGrant: grantSessionToolApproval,
|
|
@@ -1451,7 +1567,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1451
1567
|
if (!workspace)
|
|
1452
1568
|
return undefined;
|
|
1453
1569
|
const root = await (0, instance_ai_1.getWorkspaceRoot)(workspace);
|
|
1454
|
-
return (0,
|
|
1570
|
+
return (0, agents_1.createScopedWorkspace)(workspace, root);
|
|
1455
1571
|
};
|
|
1456
1572
|
runtimeWorkspace = (0, instance_ai_1.createLazyRuntimeWorkspace)({
|
|
1457
1573
|
sandboxInstructions: '',
|
|
@@ -2079,14 +2195,21 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2079
2195
|
});
|
|
2080
2196
|
}
|
|
2081
2197
|
}
|
|
2082
|
-
async
|
|
2083
|
-
const
|
|
2084
|
-
const workflowAttachments =
|
|
2085
|
-
const agentAttachments =
|
|
2086
|
-
const
|
|
2198
|
+
async resolveContextAttachments(attachments, user) {
|
|
2199
|
+
const attachmentsOrEmpty = attachments ?? [];
|
|
2200
|
+
const workflowAttachments = attachmentsOrEmpty.filter((attachment) => attachment.type === 'workflow');
|
|
2201
|
+
const agentAttachments = attachmentsOrEmpty.filter((attachment) => attachment.type === 'agent');
|
|
2202
|
+
const nodeAttachments = attachmentsOrEmpty.filter((attachment) => attachment.type === 'nodes');
|
|
2203
|
+
const canvasNodeContextEnabled = nodeAttachments.length > 0 && (await this.canvasNodeContextFlagGate.isEnabled(user));
|
|
2204
|
+
return [
|
|
2087
2205
|
...workflowAttachments,
|
|
2088
2206
|
...agentAttachments,
|
|
2207
|
+
...(canvasNodeContextEnabled ? nodeAttachments : []),
|
|
2089
2208
|
];
|
|
2209
|
+
}
|
|
2210
|
+
async executeRun(user, threadId, runId, message, abortController, attachments, handoffContext, messageGroupId, timeZone, isReplanFollowUp = false, checkpoint, resumeReason, plannedBuild) {
|
|
2211
|
+
const fileAttachments = (attachments ?? []).filter((attachment) => attachment.type === 'file');
|
|
2212
|
+
const contextAttachments = await this.resolveContextAttachments(attachments, user);
|
|
2090
2213
|
const signal = abortController.signal;
|
|
2091
2214
|
let tracing;
|
|
2092
2215
|
let messageTraceFinalization;
|
|
@@ -2094,6 +2217,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2094
2217
|
let activeSnapshotStorage;
|
|
2095
2218
|
let messageId = '';
|
|
2096
2219
|
let streamReached = false;
|
|
2220
|
+
let turnHadFileAttachments = false;
|
|
2097
2221
|
const turnStartedAt = new Date();
|
|
2098
2222
|
let errorReporterExecutionToken;
|
|
2099
2223
|
try {
|
|
@@ -2108,6 +2232,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2108
2232
|
}
|
|
2109
2233
|
if (contextAttachments.length) {
|
|
2110
2234
|
traceInput.resourceAttachments = contextAttachments.map((attachment) => {
|
|
2235
|
+
if (attachment.type === 'nodes') {
|
|
2236
|
+
return { type: attachment.type, id: attachment.workflowId };
|
|
2237
|
+
}
|
|
2111
2238
|
const resource = {
|
|
2112
2239
|
type: attachment.type,
|
|
2113
2240
|
id: attachment.id,
|
|
@@ -2283,8 +2410,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2283
2410
|
}
|
|
2284
2411
|
const thread = await memory.getThread(threadId);
|
|
2285
2412
|
if (thread && !thread.title) {
|
|
2286
|
-
const handoffTitle = contextAttachments.find(
|
|
2287
|
-
agentPreviewTitleFallback;
|
|
2413
|
+
const handoffTitle = contextAttachments.find(isNamedResourceAttachment)?.name ?? agentPreviewTitleFallback;
|
|
2288
2414
|
await (0, instance_ai_1.patchThread)(memory, {
|
|
2289
2415
|
threadId,
|
|
2290
2416
|
update: ({ metadata }) => handoffTitle
|
|
@@ -2310,6 +2436,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2310
2436
|
if (fileAttachments.length > 0) {
|
|
2311
2437
|
const classifiedAttachments = (0, instance_ai_1.classifyAttachments)(fileAttachments);
|
|
2312
2438
|
nonStructuredAttachments = fileAttachments.filter((attachment) => !(0, instance_ai_1.isParseableAttachment)(attachment));
|
|
2439
|
+
turnHadFileAttachments = nonStructuredAttachments.length > 0;
|
|
2313
2440
|
hasParseableAttachment = classifiedAttachments.some((attachment) => attachment.parseable);
|
|
2314
2441
|
attachmentManifest = (0, instance_ai_1.buildAttachmentManifest)(classifiedAttachments);
|
|
2315
2442
|
}
|
|
@@ -2533,6 +2660,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2533
2660
|
if (result.status === 'errored') {
|
|
2534
2661
|
this.instanceAiErrorReporter.report(terminalError ?? new Error('Instance AI stream errored'), {
|
|
2535
2662
|
component: 'instance-ai-stream',
|
|
2663
|
+
providerStream: true,
|
|
2536
2664
|
threadId,
|
|
2537
2665
|
runId,
|
|
2538
2666
|
tracing,
|
|
@@ -2542,7 +2670,15 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2542
2670
|
messageId,
|
|
2543
2671
|
});
|
|
2544
2672
|
}
|
|
2545
|
-
const
|
|
2673
|
+
const attachmentRemoved = this.shouldDropTurnAttachments({
|
|
2674
|
+
turnHadAttachments: turnHadFileAttachments,
|
|
2675
|
+
producedNoOutput: result.status === 'errored' && outputText.length === 0,
|
|
2676
|
+
})
|
|
2677
|
+
? await this.dropTurnAttachments({ threadId, resourceId: user.id })
|
|
2678
|
+
: undefined;
|
|
2679
|
+
const userFacingErrorMessage = result.status === 'errored'
|
|
2680
|
+
? getUserFacingErrorMessage(terminalError, undefined, { attachmentRemoved })
|
|
2681
|
+
: undefined;
|
|
2546
2682
|
const userFacingErrorCode = result.status === 'errored' ? getUserFacingErrorCode(terminalError) : undefined;
|
|
2547
2683
|
if (runControl.shouldEmitTerminalOutcome(result.stopReason)) {
|
|
2548
2684
|
await this.terminalOutcome.evaluateTerminalResponse(threadId, runId, result.status, {
|
|
@@ -2640,8 +2776,16 @@ let InstanceAiService = class InstanceAiService {
|
|
|
2640
2776
|
threadId,
|
|
2641
2777
|
runId,
|
|
2642
2778
|
});
|
|
2779
|
+
const attachmentRemoved = this.shouldDropTurnAttachments({
|
|
2780
|
+
turnHadAttachments: turnHadFileAttachments,
|
|
2781
|
+
producedNoOutput: true,
|
|
2782
|
+
})
|
|
2783
|
+
? await this.dropTurnAttachments({ threadId, resourceId: user.id })
|
|
2784
|
+
: undefined;
|
|
2643
2785
|
const errorMessage = getErrorMessage(terminalError);
|
|
2644
|
-
const userFacingErrorMessage = getUserFacingErrorMessage(terminalError
|
|
2786
|
+
const userFacingErrorMessage = getUserFacingErrorMessage(terminalError, undefined, {
|
|
2787
|
+
attachmentRemoved,
|
|
2788
|
+
});
|
|
2645
2789
|
const userFacingErrorCode = getUserFacingErrorCode(terminalError);
|
|
2646
2790
|
const errCtx = {
|
|
2647
2791
|
threadId,
|
|
@@ -3052,7 +3196,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3052
3196
|
throw new forbidden_error_1.ForbiddenError('You do not have permission to load or edit agent previews in this project.');
|
|
3053
3197
|
}
|
|
3054
3198
|
}
|
|
3055
|
-
async
|
|
3199
|
+
async rebuildAgentForResume(user, threadId, runId, abortController, tracing, runHandoff, messageGroupId) {
|
|
3056
3200
|
try {
|
|
3057
3201
|
const rebuilt = await this.buildFreshInstanceAgent(user, threadId, runId, abortController.signal, tracing, messageGroupId, this.threadPushRef.get(threadId));
|
|
3058
3202
|
(0, instance_ai_1.createOrchestratorRunControl)(rebuilt.orchestrationContext, runHandoff ?? {});
|
|
@@ -3063,7 +3207,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3063
3207
|
};
|
|
3064
3208
|
}
|
|
3065
3209
|
catch (error) {
|
|
3066
|
-
this.logger.warn('Failed to rebuild agent for
|
|
3210
|
+
this.logger.warn('Failed to rebuild agent for resume', {
|
|
3067
3211
|
threadId,
|
|
3068
3212
|
runId,
|
|
3069
3213
|
error: getErrorMessage(error),
|
|
@@ -3116,11 +3260,14 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3116
3260
|
...(data.domainAccessAction ? { domainAccessAction: data.domainAccessAction } : {}),
|
|
3117
3261
|
...(data.action ? { action: data.action } : {}),
|
|
3118
3262
|
...(data.nodeParameters ? { nodeParameters: data.nodeParameters } : {}),
|
|
3263
|
+
...(data.skippedNodes ? { skippedNodes: data.skippedNodes } : {}),
|
|
3119
3264
|
...(data.testTriggerNode ? { testTriggerNode: data.testTriggerNode } : {}),
|
|
3120
3265
|
...(data.answers ? { answers: data.answers } : {}),
|
|
3121
3266
|
...(data.resourceDecision ? { resourceDecision: data.resourceDecision } : {}),
|
|
3122
3267
|
...(data.scope ? { scope: data.scope } : {}),
|
|
3123
3268
|
...(data.autoSetup ? { autoSetup: data.autoSetup } : {}),
|
|
3269
|
+
...(data.denied ? { denied: true } : {}),
|
|
3270
|
+
...(data.connectedSlugs ? { connectedSlugs: data.connectedSlugs } : {}),
|
|
3124
3271
|
};
|
|
3125
3272
|
const resumeTracing = await this.tracing.createOrchestratorResumeTraceContext({
|
|
3126
3273
|
baseTracing: tracing,
|
|
@@ -3159,8 +3306,8 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3159
3306
|
let resumeAgent = agent;
|
|
3160
3307
|
let resumeModelId = modelId;
|
|
3161
3308
|
let resumeOrchestrationContext = orchestrationContext;
|
|
3162
|
-
if (data.autoSetup) {
|
|
3163
|
-
const rebuilt = await this.
|
|
3309
|
+
if (data.autoSetup || data.connectedSlugs?.length) {
|
|
3310
|
+
const rebuilt = await this.rebuildAgentForResume(activeUser, threadId, runId, abortController, effectiveTracing, runHandoff, messageGroupId);
|
|
3164
3311
|
if (!rebuilt) {
|
|
3165
3312
|
const rebuildFailure = 'Agent rebuild failed';
|
|
3166
3313
|
await this.tracing.finalizeDetachedTraceRun(`resume-rebuild:${runId}`, unregisteredResumeTracing, {
|
|
@@ -3217,6 +3364,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3217
3364
|
let resumeClaimed = false;
|
|
3218
3365
|
let resumeTraceRegistered = false;
|
|
3219
3366
|
let errorReporterExecutionToken;
|
|
3367
|
+
let resumedRunProducedOutput = false;
|
|
3220
3368
|
const onResumeClaimed = async () => {
|
|
3221
3369
|
if (resumeClaimed)
|
|
3222
3370
|
return;
|
|
@@ -3389,6 +3537,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3389
3537
|
return;
|
|
3390
3538
|
}
|
|
3391
3539
|
const outputText = await (result.text ?? Promise.resolve(''));
|
|
3540
|
+
resumedRunProducedOutput = outputText.length > 0;
|
|
3392
3541
|
const messageGroupId = this.tracing.getMessageGroupId(opts.runId);
|
|
3393
3542
|
const terminalError = result.status === 'errored'
|
|
3394
3543
|
? await this.reclassifyMaskedStreamFailure(result.error, opts.user, {
|
|
@@ -3399,6 +3548,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3399
3548
|
if (result.status === 'errored') {
|
|
3400
3549
|
this.instanceAiErrorReporter.report(terminalError ?? new Error('Instance AI resumed stream errored'), {
|
|
3401
3550
|
component: 'instance-ai-stream',
|
|
3551
|
+
providerStream: true,
|
|
3402
3552
|
threadId: opts.threadId,
|
|
3403
3553
|
runId: opts.runId,
|
|
3404
3554
|
tracing: opts.tracing,
|
|
@@ -3407,7 +3557,18 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3407
3557
|
messageGroupId,
|
|
3408
3558
|
});
|
|
3409
3559
|
}
|
|
3410
|
-
const
|
|
3560
|
+
const attachmentRemoved = this.shouldDropTurnAttachments({
|
|
3561
|
+
turnHadAttachments: true,
|
|
3562
|
+
producedNoOutput: result.status === 'errored' && outputText.length === 0,
|
|
3563
|
+
})
|
|
3564
|
+
? await this.dropTurnAttachments({
|
|
3565
|
+
threadId: opts.threadId,
|
|
3566
|
+
resourceId: opts.user.id,
|
|
3567
|
+
})
|
|
3568
|
+
: undefined;
|
|
3569
|
+
const userFacingErrorMessage = result.status === 'errored'
|
|
3570
|
+
? getUserFacingErrorMessage(terminalError, undefined, { attachmentRemoved })
|
|
3571
|
+
: undefined;
|
|
3411
3572
|
const userFacingErrorCode = result.status === 'errored' ? getUserFacingErrorCode(terminalError) : undefined;
|
|
3412
3573
|
if (runControl.shouldEmitTerminalOutcome(result.stopReason)) {
|
|
3413
3574
|
await this.terminalOutcome.evaluateTerminalResponse(opts.threadId, opts.runId, result.status, {
|
|
@@ -3505,8 +3666,19 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3505
3666
|
threadId: opts.threadId,
|
|
3506
3667
|
runId: opts.runId,
|
|
3507
3668
|
});
|
|
3669
|
+
const attachmentRemoved = this.shouldDropTurnAttachments({
|
|
3670
|
+
turnHadAttachments: true,
|
|
3671
|
+
producedNoOutput: !resumedRunProducedOutput,
|
|
3672
|
+
})
|
|
3673
|
+
? await this.dropTurnAttachments({
|
|
3674
|
+
threadId: opts.threadId,
|
|
3675
|
+
resourceId: opts.user.id,
|
|
3676
|
+
})
|
|
3677
|
+
: undefined;
|
|
3508
3678
|
const errorMessage = getErrorMessage(terminalError);
|
|
3509
|
-
const userFacingErrorMessage = getUserFacingErrorMessage(terminalError
|
|
3679
|
+
const userFacingErrorMessage = getUserFacingErrorMessage(terminalError, undefined, {
|
|
3680
|
+
attachmentRemoved,
|
|
3681
|
+
});
|
|
3510
3682
|
const userFacingErrorCode = getUserFacingErrorCode(terminalError);
|
|
3511
3683
|
const messageGroupId = this.tracing.getMessageGroupId(opts.runId);
|
|
3512
3684
|
const errCtx = {
|
|
@@ -3897,6 +4069,8 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3897
4069
|
const inputThreadId = (0, nanoid_1.nanoid)();
|
|
3898
4070
|
payload.inputThreadId = inputThreadId;
|
|
3899
4071
|
const inputType = payload.inputType;
|
|
4072
|
+
const mcpConnectServers = api_types_1.mcpConnectRequestSchema.safeParse(payload.mcpConnectRequest).data
|
|
4073
|
+
?.servers;
|
|
3900
4074
|
let type;
|
|
3901
4075
|
if (inputType) {
|
|
3902
4076
|
type = inputType;
|
|
@@ -3907,6 +4081,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3907
4081
|
else if (Array.isArray(payload.credentialRequests) && payload.credentialRequests.length > 0) {
|
|
3908
4082
|
type = 'credential-setup';
|
|
3909
4083
|
}
|
|
4084
|
+
else if (mcpConnectServers) {
|
|
4085
|
+
type = 'mcp-connect';
|
|
4086
|
+
}
|
|
3910
4087
|
else {
|
|
3911
4088
|
type = 'approval';
|
|
3912
4089
|
}
|
|
@@ -3920,6 +4097,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
3920
4097
|
else if (Array.isArray(payload.credentialRequests)) {
|
|
3921
4098
|
numSteps = payload.credentialRequests.length;
|
|
3922
4099
|
}
|
|
4100
|
+
else if (mcpConnectServers) {
|
|
4101
|
+
numSteps = mcpConnectServers.length;
|
|
4102
|
+
}
|
|
3923
4103
|
if (inputType === 'plan-review') {
|
|
3924
4104
|
const planCount = (this.planRequestsByThread.get(threadId) ?? 0) + 1;
|
|
3925
4105
|
this.planRequestsByThread.set(threadId, planCount);
|
|
@@ -4004,6 +4184,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
4004
4184
|
status: effectiveStatus,
|
|
4005
4185
|
...(userId ? { user_id: userId } : {}),
|
|
4006
4186
|
});
|
|
4187
|
+
this.emitBrowserCredentialSetupOutcomes(threadId, runId, status, reason);
|
|
4007
4188
|
if (status === 'errored') {
|
|
4008
4189
|
this.telemetry.track('Builder generation errored', {
|
|
4009
4190
|
thread_id: threadId,
|
|
@@ -4014,6 +4195,86 @@ let InstanceAiService = class InstanceAiService {
|
|
|
4014
4195
|
});
|
|
4015
4196
|
}
|
|
4016
4197
|
}
|
|
4198
|
+
createBrowserCredentialSetupTracker(runId, userId) {
|
|
4199
|
+
const getOrCreateAttempts = () => {
|
|
4200
|
+
let pending = this.pendingBrowserCredentialSetups.get(runId);
|
|
4201
|
+
if (!pending) {
|
|
4202
|
+
pending = { userId, attempts: [] };
|
|
4203
|
+
this.pendingBrowserCredentialSetups.set(runId, pending);
|
|
4204
|
+
}
|
|
4205
|
+
return pending.attempts;
|
|
4206
|
+
};
|
|
4207
|
+
const resolveOpenAttempt = (credentialType) => {
|
|
4208
|
+
const attempts = getOrCreateAttempts();
|
|
4209
|
+
let attempt = attempts.findLast((a) => a.credentialType === credentialType && !a.created);
|
|
4210
|
+
if (!attempt) {
|
|
4211
|
+
attempt = {
|
|
4212
|
+
credentialType,
|
|
4213
|
+
setupMethod: 'conversation',
|
|
4214
|
+
startedAt: Date.now(),
|
|
4215
|
+
created: false,
|
|
4216
|
+
};
|
|
4217
|
+
attempts.push(attempt);
|
|
4218
|
+
}
|
|
4219
|
+
return attempt;
|
|
4220
|
+
};
|
|
4221
|
+
return {
|
|
4222
|
+
markPending: (credentialType, attemptId) => {
|
|
4223
|
+
const attempts = getOrCreateAttempts();
|
|
4224
|
+
if (attemptId && attempts.some((attempt) => attempt.attemptId === attemptId)) {
|
|
4225
|
+
return;
|
|
4226
|
+
}
|
|
4227
|
+
attempts.push({
|
|
4228
|
+
credentialType,
|
|
4229
|
+
setupMethod: 'setup_card',
|
|
4230
|
+
attemptId,
|
|
4231
|
+
startedAt: Date.now(),
|
|
4232
|
+
created: false,
|
|
4233
|
+
});
|
|
4234
|
+
},
|
|
4235
|
+
markCreated: (credentialType) => {
|
|
4236
|
+
const attempt = resolveOpenAttempt(credentialType);
|
|
4237
|
+
attempt.created = true;
|
|
4238
|
+
attempt.errorCode = undefined;
|
|
4239
|
+
},
|
|
4240
|
+
markCreateFailed: (credentialType, errorCode) => {
|
|
4241
|
+
resolveOpenAttempt(credentialType).errorCode = errorCode;
|
|
4242
|
+
},
|
|
4243
|
+
};
|
|
4244
|
+
}
|
|
4245
|
+
emitBrowserCredentialSetupOutcomes(threadId, runId, runStatus, runFinishReason) {
|
|
4246
|
+
const browserSetup = this.pendingBrowserCredentialSetups.get(runId);
|
|
4247
|
+
if (!browserSetup)
|
|
4248
|
+
return;
|
|
4249
|
+
this.pendingBrowserCredentialSetups.delete(runId);
|
|
4250
|
+
const terminalErrorCode = runStatus === 'completed'
|
|
4251
|
+
? 'not_attempted'
|
|
4252
|
+
: runStatus === 'errored'
|
|
4253
|
+
? 'run_errored'
|
|
4254
|
+
: runFinishReason === liveness_1.INSTANCE_AI_RUN_TIMEOUT_REASON
|
|
4255
|
+
? 'run_timed_out'
|
|
4256
|
+
: 'run_cancelled';
|
|
4257
|
+
for (const attempt of browserSetup.attempts) {
|
|
4258
|
+
this.telemetry.track('Instance AI Browser Use credential setup completed', {
|
|
4259
|
+
user_id: browserSetup.userId,
|
|
4260
|
+
credential_type: attempt.credentialType,
|
|
4261
|
+
status: attempt.created ? 'success' : 'failure',
|
|
4262
|
+
...(attempt.created
|
|
4263
|
+
? {}
|
|
4264
|
+
: {
|
|
4265
|
+
failure_stage: failureStageForErrorCode(attempt.errorCode),
|
|
4266
|
+
error_code: attempt.errorCode ?? terminalErrorCode,
|
|
4267
|
+
}),
|
|
4268
|
+
is_valid: null,
|
|
4269
|
+
is_new: true,
|
|
4270
|
+
setup_method: attempt.setupMethod,
|
|
4271
|
+
thread_id: threadId,
|
|
4272
|
+
run_id: runId,
|
|
4273
|
+
...(attempt.attemptId ? { credential_setup_attempt_id: attempt.attemptId } : {}),
|
|
4274
|
+
duration_ms: Date.now() - attempt.startedAt,
|
|
4275
|
+
});
|
|
4276
|
+
}
|
|
4277
|
+
}
|
|
4017
4278
|
async finalizeRun(threadId, runId, status, snapshotStorage, options) {
|
|
4018
4279
|
this.publishRunFinish(threadId, runId, status, options?.errorReason, options?.archivedWorkflowIds, options?.userId, options?.errorInfo);
|
|
4019
4280
|
this.emitRunMetrics(threadId, status, options);
|
|
@@ -4242,6 +4503,6 @@ __decorate([
|
|
|
4242
4503
|
], InstanceAiService.prototype, "stopCheckpointPruning", null);
|
|
4243
4504
|
exports.InstanceAiService = InstanceAiService = __decorate([
|
|
4244
4505
|
(0, di_1.Service)(),
|
|
4245
|
-
__metadata("design:paramtypes", [backend_common_1.Logger, config_1.GlobalConfig, n8n_core_1.InstanceSettings, instance_ai_adapter_service_1.InstanceAiAdapterService, in_process_event_bus_1.InProcessEventBus, durable_event_log_1.DurableEventLog, interrupted_run_sweeper_1.InterruptedRunSweeper, instance_ai_settings_service_1.InstanceAiSettingsService, instance_ai_gateway_service_1.InstanceAiGatewayService, instance_ai_browser_session_service_1.InstanceAiBrowserSessionService, instance_ai_memory_service_1.InstanceAiMemoryService, typeorm_agent_memory_1.TypeORMAgentMemory, typeorm_agent_checkpoint_store_1.TypeORMAgentCheckpointStore, ai_service_1.AiService, instance_ai_thread_grant_repository_1.InstanceAiThreadGrantRepository, instance_ai_pending_confirmation_repository_1.InstanceAiPendingConfirmationRepository, url_service_1.UrlService, db_snapshot_storage_1.DbSnapshotStorage, db_iteration_log_storage_1.DbIterationLogStorage,
|
|
4506
|
+
__metadata("design:paramtypes", [backend_common_1.Logger, config_1.GlobalConfig, n8n_core_1.InstanceSettings, instance_ai_adapter_service_1.InstanceAiAdapterService, in_process_event_bus_1.InProcessEventBus, durable_event_log_1.DurableEventLog, interrupted_run_sweeper_1.InterruptedRunSweeper, instance_ai_settings_service_1.InstanceAiSettingsService, instance_ai_gateway_service_1.InstanceAiGatewayService, instance_ai_browser_session_service_1.InstanceAiBrowserSessionService, instance_ai_memory_service_1.InstanceAiMemoryService, typeorm_agent_memory_1.TypeORMAgentMemory, typeorm_agent_checkpoint_store_1.TypeORMAgentCheckpointStore, ai_service_1.AiService, instance_ai_thread_grant_repository_1.InstanceAiThreadGrantRepository, instance_ai_pending_confirmation_repository_1.InstanceAiPendingConfirmationRepository, url_service_1.UrlService, db_snapshot_storage_1.DbSnapshotStorage, db_iteration_log_storage_1.DbIterationLogStorage, instance_write_access_service_1.InstanceWriteAccessService, telemetry_2.Telemetry, mcp_1.InstanceAiMcpRegistryService, db_1.UserRepository, instance_ai_temporary_workflow_service_1.InstanceAiTemporaryWorkflowService, n8n_core_1.ErrorReporter, config_1.SsrfProtectionConfig, backend_network_1.SsrfProtectionService, event_service_1.EventService, thread_credential_allowlist_service_1.EvalThreadCredentialAllowlistService, instance_ai_run_probe_1.InstanceAiRunProbe, instance_ai_model_service_1.InstanceAiModelService, instance_ai_credit_service_1.InstanceAiCreditService, publisher_service_1.Publisher, instance_ai_error_reporter_service_1.InstanceAiErrorReporterService, canvas_node_context_flag_gate_1.CanvasNodeContextFlagGate])
|
|
4246
4507
|
], InstanceAiService);
|
|
4247
4508
|
//# sourceMappingURL=instance-ai.service.js.map
|