diff --git a/.agents/skills/create-instance-ai-eval/SKILL.md b/.agents/skills/create-instance-ai-eval/SKILL.md index 8ec34d532c1..d989044a203 100644 --- a/.agents/skills/create-instance-ai-eval/SKILL.md +++ b/.agents/skills/create-instance-ai-eval/SKILL.md @@ -521,9 +521,11 @@ dotenvx run -f .env.eval -- pnpm eval:langtracer-push --suite workflow-building for MCP + REST) — put them in `.env.eval` and run under `dotenvx`. - **Options:** `--set-kind regression|capability_gap` (default `regression`, must match the suite's kind), `--contains-user-data` (default is `synthetic`). -- **Limitation:** `executionScenarios` are written on **create** only — the update - path patches case-level fields but not scenario rows (so scenario-only edits to - an existing case aren't re-synced; remove+re-push or edit in the lang-tracer UI). +- **Scenarios sync on update too:** `PATCH /cases/:id` reconciles + `executionScenarios` by name (update in place, insert new, delete missing — + lang-tracer #48), so scenario edits re-push like any other field. A lang-tracer + deployment predating that change silently ignores the key; if a pushed scenario + edit doesn't land, update the scenario in the lang-tracer UI. - **Seeded cases can't be pushed:** the case-write API rejects every seeding mode (`seedThread` / `seedFile` / `priorConversation`), so the push lists them under `skipped:` and they never reach the suite. A `seedThread` case shouldn't be diff --git a/.github/test-metrics/e2e-impact-map.json b/.github/test-metrics/e2e-impact-map.json index 244db28e171..12a2ea53aa3 100644 --- a/.github/test-metrics/e2e-impact-map.json +++ b/.github/test-metrics/e2e-impact-map.json @@ -1 +1 @@ -{"specs":["tests/e2e/api/discovery.spec.ts","tests/e2e/building-blocks/user-service.spec.ts","tests/e2e/journeys/admin-views-executions-list.spec.ts","tests/e2e/projects/project-settings.spec.ts","tests/e2e/sharing/access-control.spec.ts","tests/e2e/sharing/credential-visibility.spec.ts","tests/e2e/sharing/workflow-sharing.spec.ts","tests/e2e/settings/users/users.spec.ts","tests/e2e/ai/ai-2505-pdf-embed.spec.ts","tests/e2e/ai/assistant-basic.spec.ts","tests/e2e/ai/assistant-code-help.spec.ts","tests/e2e/ai/assistant-credential-help.spec.ts","tests/e2e/ai/assistant-support-chat.spec.ts","tests/e2e/ai/builder-setup-wizard.spec.ts","tests/e2e/ai/chat-session.spec.ts","tests/e2e/ai/langchain-agents.spec.ts","tests/e2e/ai/langchain-chains.spec.ts","tests/e2e/ai/langchain-vectorstores.spec.ts","tests/e2e/ai/workflow-builder.spec.ts","tests/e2e/api/wait-form-resume.spec.ts","tests/e2e/api/waiting-endpoint-security.spec.ts","tests/e2e/app-config/demo-reimport.spec.ts","tests/e2e/app-config/demo.spec.ts","tests/e2e/app-config/security-notifications.spec.ts","tests/e2e/app-config/versions.spec.ts","tests/e2e/auth/admin-smoke.spec.ts","tests/e2e/auth/authenticated.spec.ts","tests/e2e/auth/oidc.spec.ts","tests/e2e/auth/signin.spec.ts","tests/e2e/building-blocks/canvas-actions.spec.ts","tests/e2e/building-blocks/credential-mismatch.spec.ts","tests/e2e/building-blocks/credentials.spec.ts","tests/e2e/building-blocks/node-details-configuration.spec.ts","tests/e2e/building-blocks/workflow-entry-points.spec.ts","tests/e2e/capabilities/proxy-server.spec.ts","tests/e2e/capabilities/task-runner.spec.ts","tests/e2e/chat-hub/chat-hub-attachment.spec.ts","tests/e2e/chat-hub/chat-hub-basic.spec.ts","tests/e2e/chat-hub/chat-hub-chat-user.spec.ts","tests/e2e/chat-hub/chat-hub-personal-agent.spec.ts","tests/e2e/chat-hub/chat-hub-settings.spec.ts","tests/e2e/chat-hub/chat-hub-tools.spec.ts","tests/e2e/chat-hub/chat-hub-workflow-agent.spec.ts","tests/e2e/cloud/cloud.spec.ts","tests/e2e/credentials/crud.spec.ts","tests/e2e/credentials/global.spec.ts","tests/e2e/credentials/oauth.spec.ts","tests/e2e/data-tables/details.spec.ts","tests/e2e/data-tables/tables.spec.ts","tests/e2e/mcp-registry/mcp-registry.spec.ts","tests/e2e/node-creator/actions.spec.ts","tests/e2e/node-creator/navigation.spec.ts","tests/e2e/node-creator/special-nodes.spec.ts","tests/e2e/node-creator/vector-stores.spec.ts","tests/e2e/node-creator/workflows.spec.ts","tests/e2e/nodes/community-nodes.spec.ts","tests/e2e/nodes/email-send-node.spec.ts","tests/e2e/nodes/form-trigger-node.spec.ts","tests/e2e/nodes/http-request-node.spec.ts","tests/e2e/nodes/if-node.spec.ts","tests/e2e/nodes/kafka-nodes.spec.ts","tests/e2e/nodes/pdf-node.spec.ts","tests/e2e/nodes/schedule-trigger-node.spec.ts","tests/e2e/nodes/send-and-wait.spec.ts","tests/e2e/nodes/webhook.spec.ts","tests/e2e/projects/folders-advanced.spec.ts","tests/e2e/projects/folders-basic.spec.ts","tests/e2e/projects/folders-operations.spec.ts","tests/e2e/projects/projects-move-resources.spec.ts","tests/e2e/projects/projects.spec.ts","tests/e2e/regression/ADO-1338-ndv-missing-input-panel.spec.ts","tests/e2e/regression/ADO-2230-ndv-reset-data-pagination.spec.ts","tests/e2e/regression/ADO-2372-prevent-clipping-params.spec.ts","tests/e2e/regression/ADO-2929-can-load-old-switch-node-workflows.spec.ts","tests/e2e/regression/ADO-4462-template-setup-experiment.spec.ts","tests/e2e/regression/AI-1401-sub-nodes-input-panel.spec.ts","tests/e2e/regression/AI-716-correctly-set-up-agent-model-shows-error.spec.ts","tests/e2e/regression/AI-812-partial-execs-broken-when-using-chat-trigger.spec.ts","tests/e2e/regression/CAT-726-canvas-node-connectors-not-rendered-when-nodes-inserted.spec.ts","tests/e2e/regression/PAY-4367-node-shifting-cyclic.spec.ts","tests/e2e/regression/SUG-121-fields-reset-after-closing-ndv.spec.ts","tests/e2e/regression/SUG-38-inline-expression-preview.spec.ts","tests/e2e/sentry/sentry-baseline.spec.ts","tests/e2e/settings/community-nodes/community-nodes.spec.ts","tests/e2e/settings/environments/source-control.spec.ts","tests/e2e/settings/environments/variables.spec.ts","tests/e2e/settings/external-secrets/secret-providers-connections-ui.spec.ts","tests/e2e/settings/log-streaming/log-streaming-ui-e2e.spec.ts","tests/e2e/settings/log-streaming/log-streaming.spec.ts","tests/e2e/settings/personal/personal.spec.ts","tests/e2e/settings/personal/two-factor-authentication.spec.ts","tests/e2e/settings/workers/workers.spec.ts","tests/e2e/sharing/credential-sharing.spec.ts","tests/e2e/workflows/checklist/production-checklist.spec.ts","tests/e2e/workflows/demo-diff.spec.ts","tests/e2e/workflows/demo-executable-chat-trigger.spec.ts","tests/e2e/workflows/editor/canvas/actions.spec.ts","tests/e2e/workflows/editor/canvas/canvas-nodes.spec.ts","tests/e2e/workflows/editor/canvas/canvas-zoom.spec.ts","tests/e2e/workflows/editor/canvas/focus-panel.spec.ts","tests/e2e/workflows/editor/canvas/node-groups.spec.ts","tests/e2e/workflows/editor/canvas/stickies.spec.ts","tests/e2e/workflows/editor/canvas/undo-redo.spec.ts","tests/e2e/workflows/editor/code/code-node.spec.ts","tests/e2e/workflows/editor/code/editors.spec.ts","tests/e2e/workflows/editor/editor-after-route-changes.spec.ts","tests/e2e/workflows/editor/execution/debug.spec.ts","tests/e2e/workflows/editor/execution/execution.spec.ts","tests/e2e/workflows/editor/execution/executions-list-infinite-scroll.spec.ts","tests/e2e/workflows/editor/execution/inject-previous.spec.ts","tests/e2e/workflows/editor/execution/logs.spec.ts","tests/e2e/workflows/editor/execution/partial.spec.ts","tests/e2e/workflows/editor/expressions/inline.spec.ts","tests/e2e/workflows/editor/expressions/mapping.spec.ts","tests/e2e/workflows/editor/expressions/modal.spec.ts","tests/e2e/workflows/editor/expressions/transformation.spec.ts","tests/e2e/workflows/editor/ndv/io-filter.spec.ts","tests/e2e/workflows/editor/ndv/ndv-core.spec.ts","tests/e2e/workflows/editor/ndv/ndv-data-display.spec.ts","tests/e2e/workflows/editor/ndv/ndv-floating-nodes.spec.ts","tests/e2e/workflows/editor/ndv/ndv-parameters.spec.ts","tests/e2e/workflows/editor/ndv/paired-item.spec.ts","tests/e2e/workflows/editor/ndv/pinning.spec.ts","tests/e2e/workflows/editor/ndv/resource-locator.spec.ts","tests/e2e/workflows/editor/ndv/resource-mapper.spec.ts","tests/e2e/workflows/editor/ndv/schema-preview.spec.ts","tests/e2e/workflows/editor/routing.spec.ts","tests/e2e/workflows/editor/subworkflows/debugging.spec.ts","tests/e2e/workflows/editor/subworkflows/extraction.spec.ts","tests/e2e/workflows/editor/subworkflows/workflow-selector.spec.ts","tests/e2e/workflows/editor/tags.spec.ts","tests/e2e/workflows/editor/viewer-permissions.spec.ts","tests/e2e/workflows/editor/workflow-actions/archive.spec.ts","tests/e2e/workflows/editor/workflow-actions/publish.spec.ts","tests/e2e/workflows/executions/filter.spec.ts","tests/e2e/workflows/executions/list.spec.ts","tests/e2e/workflows/list/import.spec.ts","tests/e2e/workflows/list/workflows.spec.ts","tests/e2e/workflows/templates/credentials-setup.spec.ts","tests/e2e/workflows/templates/templates.spec.ts","tests/e2e/api/binary-data-xss.spec.ts","tests/e2e/api/form-endpoint-isolation.spec.ts","tests/e2e/api/webhook-external.spec.ts","tests/e2e/api/workflow-publication-service.spec.ts","tests/e2e/auth/password-reset.spec.ts","tests/e2e/auth/token-exchange.spec.ts","tests/e2e/dynamic-credentials/execution-status.spec.ts","tests/e2e/settings/external-secrets/aws-secrets-manager.spec.ts","tests/e2e/settings/log-streaming/log-streaming-observability.spec.ts","tests/e2e/credentials/api-operations.spec.ts","tests/e2e/dynamic-credentials/resolver-deletion.spec.ts","tests/e2e/ai/rag-callout.spec.ts","tests/e2e/nodes/n8n-trigger.spec.ts","tests/e2e/api/webhook-isolation.spec.ts","tests/e2e/dynamic-credentials/external-user-trigger.spec.ts","tests/e2e/workflows/editor/subworkflows/wait.spec.ts","tests/e2e/mcp/mcp-oauth.spec.ts","tests/e2e/mcp/mcp-service.spec.ts","tests/e2e/app-config/env-feature-flags.spec.ts","tests/e2e/nodes/mcp-trigger.spec.ts","tests/e2e/workflows/editor/subworkflows/subworkflow-version-resolution.spec.ts","tests/e2e/settings/external-secrets/secret-providers-connections.spec.ts","tests/e2e/nodes/code-node-api.spec.ts"],"files":{"packages/@n8n/api-types/src/dto/api-keys/create-api-key-request.dto.ts":{"5":[0,1,2,3,4,5,6]},"packages/@n8n/api-types/src/dto/api-keys/update-api-key-request.dto.ts":{"7":[0,1,2,3,4,5,6]},"packages/@n8n/api-types/src/dto/invitation/invite-users-request.dto.ts":{"12":[0,1,2,3,7,4,5,6]},"packages/@n8n/api-types/src/schemas/password.schema.ts":{"13":"b://////////////////////8PAAAA","18":[0,1,2,3,7,4,5,6],"21":[0,1,2,3,7,4,5,6]},"packages/@n8n/api-types/src/schemas/scopes.schema.ts":{"14":[0,1,2,3,4,5,6]},"packages/@n8n/api-types/src/zod-class.ts":{"32":"b:g9smCX9cApAwBBQEAFAAAYD0HwAA","39":"b:g9smCX9cApAwBBQEAFAAAYD0HwAA","44":"b:g9smCX9cApAwBBQEAFAAAYD0HwAA","48":"b:g9smCX9cApAwBBQEAFAAAYD0HwAA","52":"b:g9smCX9cApAwBBQEAFAAAYD0HwAA"},"packages/@n8n/db/src/entities/types-db.ts":{"311":"b:A9sGCX94ApEwBBQEAFAAAYD0PAAA","323":"b:A9sGCX94ApEwBBQEAFAAAYD0PAAA","461":"b:A9sGCX94ApEwBBQEAFAAAYD0PAAA"},"packages/@n8n/db/src/repositories/role.repository.ts":{"9":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","13":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","18":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","36":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","52":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","63":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","72":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","80":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","106":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","109":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","112":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","126":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","129":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","158":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","165":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","172":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","179":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","212":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA","216":"b:/9sWK398ApFwBNQEAFAAAYgUUgAA"},"packages/@n8n/db/src/repositories/user.repository.ts":{"11":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","15":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","27":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","51":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","55":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","59":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","63":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","70":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","74":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","85":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","92":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","103":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","110":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","114":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","158":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","179":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","192":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","200":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","205":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","264":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","290":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","309":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","331":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA","342":"b:/9sWqX98UpHwBHQEClCAEYgUoQEA"},"packages/@n8n/db/src/subscribers/user-subscriber.ts":{"12":"b:H4AQAAAAApAAIAAmAEAAgYDgEA8A","15":"b:H4AQAAAAApAAIAAmAEAAgYDgEA8A","19":"b:H4AQAAAAApAAIAAmAEAAgYDgEA8A","24":"b:H4AQAAAAApAAIAAmAEAAgYDgEA8A"},"packages/@n8n/decorators/src/redactable.ts":{"14":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","21":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","46":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","47":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","53":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","54":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/@n8n/permissions/src/index.ts":{"20":"b:A9smi394ApGwBFQECFAAAYj0PwAA","21":"b:A9smi394ApGwBFQECFAAAYj0PwAA","24":"b:A9smi394ApGwBFQECFAAAYj0PwAA","26":"b:A9smi394ApGwBFQECFAAAYj0PwAA"},"packages/@n8n/permissions/src/public-api-permissions.ee.ts":{"183":[0,1,2,3,7,4,5,6],"190":[0,1,2,3,7,4,5,6],"197":[0,1,2,3,7,4,5,6],"200":[0,1,2,3,7,4,5,6]},"packages/@n8n/permissions/src/types.ee.ts":{"78":[0,1,2,3,4,5,6],"132":[0,1,2,3,4,5,6]},"packages/@n8n/permissions/src/utilities/combine-scopes.ee.ts":{"16":"b:+///////////////////////PgAA","18":"b:+///////////////////////PgAA","23":"b:A9smiX94ApGwBFQECFAAAYj0PgAA","26":"b:A9smiX94ApGwBFQECFAAAYj0PgAA"},"packages/@n8n/permissions/src/utilities/get-global-scopes.ee.ts":{"8":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","9":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/@n8n/permissions/src/utilities/get-role-scopes.ee.ts":{"5":"b:+///////////////////////PgAA","16":"b:+///////////////////////PgAA","19":"b:A9smiX94ApGwBFQECFAAAYj0PgAA","30":"b:A9smiX94ApGwBFQECFAAAYj0PgAA","36":"b:A9smiX94ApGwBFQECFAAAYj0PgAA","38":"b:A9smiX94ApGwBFQECFAAAYj0PgAA"},"packages/@n8n/permissions/src/utilities/has-global-scope.ee.ts":{"10":"b:A9smCX94ApEwBBQEAFAAAYD0HgAA"},"packages/@n8n/permissions/src/utilities/has-scope.ee.ts":{"11":"b:+///////////////////////PgYA","20":"b:+/+///////////8/////////PgYA","21":"b:+///////////////////////PgYA"},"packages/cli/src/auth/auth-handler.registry.ts":{"7":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","20":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","30":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","82":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","94":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","112":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/auth/auth.service.ts":{"64":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","101":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","106":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","164":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","173":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","181":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","185":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","189":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","193":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","209":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","234":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","255":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","262":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","288":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","298":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","314":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","331":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","362":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","392":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","397":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","407":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","441":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","449":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","454":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA","464":"b:A9smCX94ArXwDBQEAlQCEYD0HwAA"},"packages/cli/src/auth/handlers/email.auth-handler.ts":{"16":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","23":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","35":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/controller.registry.ts":{"35":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","44":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","50":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","62":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","88":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","114":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","119":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","142":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","222":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","223":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","232":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA","233":"b:J/uGif94ApEwBHQFAFAAAYD0PDAA"},"packages/cli/src/controllers/api-keys.controller.ts":{"26":[0,1,2,3,4,5,6],"36":[0,1,2,3,4,5,6],"43":[0,1,2,3,4,5,6],"67":[0,1,2,3,4,5,6],"80":[0,1,2,3,4,5,6],"95":[0,1,2,3,4,5,6],"112":[0,1,2,3,4,5,6]},"packages/cli/src/controllers/auth.controller.ts":{"40":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","67":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","109":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","115":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","131":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","164":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","192":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","205":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","250":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","259":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA","278":"b:A9s2K394ApFwBNQEAFAAAYj0HwAA"},"packages/cli/src/controllers/e2e.controller.ts":{"182":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","195":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","198":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","209":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","213":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","224":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","230":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","236":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","242":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","248":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","253":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","292":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","311":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","345":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","380":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","393":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","397":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","398":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","401":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","412":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","419":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","430":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","440":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","452":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","532":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","538":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","539":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","547":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","558":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","563":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","572":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","593":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","600":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA","668":"b:A9s2K394ApEwBNQMAFAAAYj0H0IA"},"packages/cli/src/controllers/invitation.controller.ts":{"25":[0,1,2,3,7,4,5,6],"44":[0,1,2,3,7,4,5,6],"76":[0,1,2,3,7,4,5,6],"95":[0,1,2,3,7,4,5,6],"120":[0,1,2,3,7,4,5,6],"164":[0,1,2,3,7,4,5,6]},"packages/cli/src/eventbus/event-message-classes/abstract-event-message.ts":{"10":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","12":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","16":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","28":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","48":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","59":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","72":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","101":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","108":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","113":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","124":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","135":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","139":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/eventbus/event-message-classes/event-message-confirm.ts":{"19":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","25":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","36":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/eventbus/message-event-bus-writer/message-event-bus-log-writer.ts":{"67":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","72":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","82":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","110":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","116":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","122":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","126":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","132":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","142":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","153":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","162":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","169":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","175":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","184":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","205":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","213":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","241":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","291":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","326":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","333":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","341":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","345":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","353":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","366":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","369":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","380":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","406":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","410":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","414":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","418":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","422":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","433":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/events/relays/event-relay.ts":{"8":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","10":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","18":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/events/relays/log-streaming.event-relay.ts":{"15":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","19":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","34":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","42":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","44":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","45":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","46":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","47":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","48":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","49":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","50":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","51":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","52":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","53":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","54":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","55":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","56":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","57":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","58":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","59":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","60":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","61":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","62":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","63":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","64":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","65":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","66":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","67":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","68":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","69":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","70":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","71":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","72":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","73":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","74":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","75":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","76":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","77":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","78":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","79":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","80":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","81":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","83":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","84":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","86":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","88":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","90":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","91":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","93":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","94":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","95":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","96":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","97":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","98":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","99":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","100":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","101":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","102":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","103":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","104":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","105":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","106":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","107":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","108":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","109":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","110":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","111":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","112":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","113":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","114":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","115":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","116":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","117":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","118":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","119":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","120":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","121":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","122":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","123":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","124":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","125":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","126":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","127":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","128":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","129":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","130":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","131":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","132":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","133":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","134":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","135":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","136":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","143":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","155":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","163":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","171":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","179":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","192":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","210":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","223":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","244":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","280":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","344":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","363":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","380":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","392":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","412":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","437":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","445":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","453":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","461":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","469":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","477":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","489":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","497":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","504":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","519":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","527":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","535":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","549":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","557":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","569":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","581":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","589":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","597":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","608":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","616":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","623":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","637":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","645":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","653":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","664":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","673":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","682":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","691":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","700":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","709":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","718":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","732":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","743":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","751":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","762":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","769":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","778":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","796":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","811":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","821":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","839":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","854":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","881":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","890":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","897":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","904":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","911":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","918":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","925":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","932":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","939":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","946":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","953":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","960":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","967":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","974":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","985":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","992":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1003":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1010":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1017":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1029":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1069":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1084":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1091":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1098":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1105":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1112":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1119":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1126":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1137":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1155":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1170":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1184":"b://8+yX9/ErfwXHQWjlwCFbr2P68B","1197":"b://8+yX9/ErfwXHQWjlwCFbr2P68B"},"packages/cli/src/license.ts":{"43":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","53":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","72":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","73":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","75":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","76":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","78":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","79":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","81":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","82":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","84":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","85":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","86":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","110":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","112":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","131":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","146":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","151":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","156":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","158":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","163":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","180":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","182":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","190":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","203":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","213":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","222":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","231":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","241":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","254":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","258":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","262":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","267":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","272":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","277":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","282":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","287":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","292":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","297":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","302":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","307":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","312":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","317":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","322":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","327":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","332":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","337":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","342":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","347":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","352":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","357":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","362":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","367":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","372":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","377":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","381":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","385":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","389":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","399":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","409":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","412":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","416":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","423":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","428":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","433":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","438":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","443":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","451":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","455":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","459":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","467":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","475":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","490":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","505":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","514":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","519":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","524":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","528":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","534":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA","537":"b:A9s2KX94EpGwBBQECFAAAYj0HwAA"},"packages/cli/src/permissions.ee/check-access.ts":{"27":"b:f9sGCX94ApEwBBSEAFAAAYj0PAAA","65":"b:f9sGCX94ApEwBBSEAFAAAYj0PAAA","85":"b:f9sGCX94ApEwBBSEAFAAAYj0PAAA","120":"b:f9sGCX94ApEwBBSEAFAAAYj0PAAA","130":"b:f9sGCX94ApEwBBSEAFAAAYj0PAAA"},"packages/cli/src/posthog/index.ts":{"28":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","33":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","39":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","45":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","51":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","65":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","91":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","103":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","117":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","145":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","165":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/public-api/index.ts":{"23":[0,145,1,2,3,4,5,6],"30":[0,145,1,2,3,4,5,6],"35":[0,145,1,2,3,4,5,6],"46":[0,145,1,2,3,4,5,6],"65":[0,145,1,2,3,4,5,6],"73":[0,145,1,2,3,4,5,6],"75":[0,145,1,2,3,4,5,6],"76":[0,145,1,2,3,4,5,6],"85":[0,145,1,2,3,4,5,6],"89":[0,145,1,2,3,4,5,6],"116":[0,145,1,2,3,4,5,6],"120":[0,145,1,2,3,4,5,6],"124":[0,145,1,2,3,4,5,6],"135":[0,145,1,2,3,4,5,6],"157":[0,145,1,2,3,4,5,6],"174":[0,145,1,2,3,4,5,6],"179":[0,145,1,2,3,4,5,6],"196":[0,145,1,2,3,4,5,6],"210":[0,145,1,2,3,4,5,6],"214":[0,145,1,2,3,4,5,6],"216":[0,145,1,2,3,4,5,6],"229":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/audit/audit.handler.ts":{"15":[0,145,1,2,3,4,5,6],"16":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.handler.ts":{"60":[0,145,1,2,3,4,5,6],"73":[0,145,1,2,3,4,5,6],"98":[0,145,1,2,3,4,5,6],"112":[0,145,1,2,3,4,5,6],"133":[0,145,1,2,3,4,5,6],"143":[0,145,1,2,3,4,5,6],"180":[0,145,1,2,3,4,5,6],"195":[0,145,1,2,3,4,5,6],"219":[0,145,1,2,3,4,5,6],"230":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.mapper.ts":{"8":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.middleware.ts":{"21":[0,145,1,2,3,4,5,6],"28":[0,145,1,2,3,4,5,6],"36":[0,145,1,2,3,4,5,6],"41":[0,145,1,2,3,4,5,6],"55":[0,145,1,2,3,4,5,6],"70":[0,145,1,2,3,4,5,6],"89":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.service.ts":{"30":[0,145,1,2,3,4,5,6],"34":[0,145,1,2,3,4,5,6],"55":[0,145,1,2,3,4,5,6],"60":[0,145,1,2,3,4,5,6],"61":[0,145,1,2,3,4,5,6],"70":[0,145,1,2,3,4,5,6],"77":[0,145,1,2,3,4,5,6],"81":[0,145,1,2,3,4,5,6],"98":[0,145,1,2,3,4,5,6],"137":[0,145,1,2,3,4,5,6],"178":[0,145,1,2,3,4,5,6],"243":[0,145,1,2,3,4,5,6],"256":[0,145,1,2,3,4,5,6],"271":[0,145,1,2,3,4,5,6],"277":[0,145,1,2,3,4,5,6],"292":[0,145,1,2,3,4,5,6],"307":[0,145,1,2,3,4,5,6],"308":[0,145,1,2,3,4,5,6],"311":[0,145,1,2,3,4,5,6],"325":[0,145,1,2,3,4,5,6],"336":[0,145,1,2,3,4,5,6],"462":[0,145,1,2,3,4,5,6],"470":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.columns.handler.ts":{"14":[0,145,1,2,3,4,5,6],"36":[0,145,1,2,3,4,5,6],"46":[0,145,1,2,3,4,5,6],"70":[0,145,1,2,3,4,5,6],"81":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.handler.ts":{"29":[0,145,1,2,3,4,5,6],"50":[0,145,1,2,3,4,5,6],"72":[0,145,1,2,3,4,5,6],"109":[0,145,1,2,3,4,5,6],"127":[0,145,1,2,3,4,5,6],"152":[0,145,1,2,3,4,5,6],"180":[0,145,1,2,3,4,5,6],"215":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.rows.handler.ts":{"25":[0,145,1,2,3,4,5,6],"40":[0,145,1,2,3,4,5,6],"63":[0,145,1,2,3,4,5,6],"106":[0,145,1,2,3,4,5,6],"135":[0,145,1,2,3,4,5,6],"166":[0,145,1,2,3,4,5,6],"197":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.service.ts":{"9":[0,145,1,2,3,4,5,6],"32":[0,145,1,2,3,4,5,6],"33":[0,145,1,2,3,4,5,6],"41":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/discover/discover.handler.ts":{"18":[0,145,1,2,3,4,5,6],"30":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/discover/discover.service.ts":{"51":[0,145,1,2,3,4,5,6],"55":[0,145,1,2,3,4,5,6],"63":[0,145,1,2,3,4,5,6],"76":[0,145,1,2,3,4,5,6],"88":[0,145,1,2,3,4,5,6],"95":[0,145,1,2,3,4,5,6],"156":[0,145,1,2,3,4,5,6],"164":[0,145,1,2,3,4,5,6],"206":[0,145,1,2,3,4,5,6],"211":[0,145,1,2,3,4,5,6],"215":[0,145,1,2,3,4,5,6],"223":[0,145,1,2,3,4,5,6],"247":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/executions/executions.handler.ts":{"30":[0,145,1,2,3,4,5,6],"41":[0,145,1,2,3,4,5,6],"61":[0,145,1,2,3,4,5,6],"105":[0,145,1,2,3,4,5,6],"151":[0,145,1,2,3,4,5,6],"172":[0,145,1,2,3,4,5,6],"232":[0,145,1,2,3,4,5,6],"260":[0,145,1,2,3,4,5,6],"283":[0,145,1,2,3,4,5,6],"285":[0,145,1,2,3,4,5,6],"314":[0,145,1,2,3,4,5,6],"336":[0,145,1,2,3,4,5,6],"338":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/executions/executions.service.ts":{"9":[0,145,1,2,3,4,5,6],"10":[0,145,1,2,3,4,5,6],"18":[0,145,1,2,3,4,5,6],"27":[0,145,1,2,3,4,5,6],"32":[0,145,1,2,3,4,5,6],"48":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/folders/folders.handler.ts":{"23":[0,145,1,2,3,4,5,6],"46":[0,145,1,2,3,4,5,6],"66":[0,145,1,2,3,4,5,6],"85":[0,145,1,2,3,4,5,6],"105":[0,145,1,2,3,4,5,6],"123":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/insights/insights.handler.ts":{"15":[0,145,1,2,3,4,5,6],"29":[0,145,1,2,3,4,5,6],"49":[0,145,1,2,3,4,5,6],"52":[0,145,1,2,3,4,5,6],"57":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/projects/projects.handler.ts":{"49":[0,145,1,2,3,4,5,6],"63":[0,145,1,2,3,4,5,6],"82":[0,145,1,2,3,4,5,6],"102":[0,145,1,2,3,4,5,6],"124":[0,145,1,2,3,4,5,6],"153":[0,145,1,2,3,4,5,6],"171":[0,145,1,2,3,4,5,6],"188":[0,145,1,2,3,4,5,6],"204":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/source-control/source-control.handler.ts":{"23":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/tags/tags.handler.ts":{"31":[0,145,1,2,3,4,5,6],"46":[0,145,1,2,3,4,5,6],"68":[0,145,1,2,3,4,5,6],"85":[0,145,1,2,3,4,5,6],"107":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/users/users.handler.ee.ts":{"39":[0,145,1,2,3,4,5,6],"61":[0,145,1,2,3,4,5,6],"94":[0,145,1,2,3,4,5,6],"110":[0,145,1,2,3,4,5,6],"119":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/users/users.service.ee.ts":{"9":[0,145,1,2,3,4,5,6],"21":[0,145,1,2,3,4,5,6],"30":[0,145,1,2,3,4,5,6],"45":[0,145,1,2,3,4,5,6],"51":[0,145,1,2,3,4,5,6],"66":[0,145,1,2,3,4,5,6],"73":[0,145,1,2,3,4,5,6],"78":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/variables/variables.handler.ts":{"29":[0,145,1,2,3,4,5,6],"42":[0,145,1,2,3,4,5,6],"55":[0,145,1,2,3,4,5,6],"65":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/workflows/workflows.handler.ts":{"29":[0,145,1,2,3,4,5,6],"58":[0,145,1,2,3,4,5,6],"66":[0,145,1,2,3,4,5,6],"83":[0,145,1,2,3,4,5,6],"99":[0,145,1,2,3,4,5,6],"135":[0,145,1,2,3,4,5,6],"162":[0,145,1,2,3,4,5,6],"228":[0,145,1,2,3,4,5,6],"276":[0,145,1,2,3,4,5,6],"299":[0,145,1,2,3,4,5,6],"327":[0,145,1,2,3,4,5,6],"348":[0,145,1,2,3,4,5,6],"365":[0,145,1,2,3,4,5,6],"392":[0,145,1,2,3,4,5,6],"394":[0,145,1,2,3,4,5,6],"431":[0,145,1,2,3,4,5,6],"447":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/handlers/workflows/workflows.service.ts":{"18":[0,145,1,2,3,4,5,6],"22":[0,145,1,2,3,4,5,6],"41":[0,145,1,2,3,4,5,6],"57":[0,145,1,2,3,4,5,6],"63":[0,145,1,2,3,4,5,6],"84":[0,145,1,2,3,4,5,6],"88":[0,145,1,2,3,4,5,6],"89":[0,145,1,2,3,4,5,6],"92":[0,145,1,2,3,4,5,6],"103":[0,145,1,2,3,4,5,6],"105":[0,145,1,2,3,4,5,6],"112":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/shared/middlewares/global.middleware.ts":{"21":[0,145,1,2,3,4,5,6],"26":[0,145,1,2,3,4,5,6],"57":[0,145,1,2,3,4,5,6],"60":[0,145,1,2,3,4,5,6],"63":[0,145,1,2,3,4,5,6],"97":[0,145,1,2,3,4,5,6],"99":[0,145,1,2,3,4,5,6],"105":[0,145,1,2,3,4,5,6],"106":[0,145,1,2,3,4,5,6],"128":[0,145,1,2,3,4,5,6],"131":[0,145,1,2,3,4,5,6],"138":[0,145,1,2,3,4,5,6],"153":[0,145,1,2,3,4,5,6],"154":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/shared/services/pagination.service.ts":{"10":[0,145,1,2,3,4,5,6],"14":[0,145,1,2,3,4,5,6],"26":[0,145,1,2,3,4,5,6],"38":[0,145,1,2,3,4,5,6],"47":[0,145,1,2,3,4,5,6]},"packages/cli/src/public-api/v1/shared/services/utils.service.ts":{"9":[0,145,1,2,3,4,5,6]},"packages/cli/src/services/api-key-auth.strategy.ts":{"17":[0,1,2,157,3,4,5,6],"23":[0,1,2,157,3,4,5,6],"66":[0,1,2,157,3,4,5,6],"72":[0,1,2,157,3,4,5,6],"79":[0,1,2,157,3,4,5,6],"84":[0,1,2,157,3,4,5,6]},"packages/cli/src/services/auth-strategy.registry.ts":{"24":[0,145,1,2,157,3,4,5,6],"27":[0,145,1,2,157,3,4,5,6],"31":[0,145,1,2,157,3,4,5,6],"49":[0,145,1,2,157,3,4,5,6]},"packages/cli/src/services/jwt.service.ts":{"12":"b:f9smCX94ApEwBBQEAFAAAYD0HzAA","33":"b:f9smCX94ApEwBBQEAFAAAYD0HzAA","60":"b:f9smCX94ApEwBBQEAFAAAYD0HzAA","64":"b:f9smCX94ApEwBBQEAFAAAYD0HzAA","68":"b:f9smCX94ApEwBBQEAFAAAYD0HzAA"},"packages/cli/src/services/last-active-at.service.ts":{"11":"b:A9smCX94ApEwBBQEAFAAAYD0HgAA","16":"b:A9smCX94ApEwBBQEAFAAAYD0HgAA","18":"b:A9smCX94ApEwBBQEAFAAAYD0HgAA","25":"b:A9smCX94ApEwBBQEAFAAAYD0HgAA"},"packages/cli/src/services/password.utility.ts":{"8":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA","12":"b:A9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/services/public-api-key.service.ts":{"33":[0,1,2,3,7,4,5,6],"37":[0,1,2,3,7,4,5,6],"42":[0,1,2,3,7,4,5,6],"60":[0,1,2,3,7,4,5,6],"75":[0,1,2,3,7,4,5,6],"109":[0,1,2,3,7,4,5,6],"117":[0,1,2,3,7,4,5,6],"145":[0,1,2,3,7,4,5,6],"173":[0,1,2,3,7,4,5,6],"188":[0,1,2,3,7,4,5,6],"189":[0,1,2,3,7,4,5,6],"195":[0,1,2,3,7,4,5,6],"200":[0,1,2,3,7,4,5,6],"208":[0,1,2,3,7,4,5,6],"232":[0,1,2,3,7,4,5,6],"241":[0,1,2,3,7,4,5,6],"250":[0,1,2,3,7,4,5,6],"255":[0,1,2,3,7,4,5,6],"257":[0,1,2,3,7,4,5,6],"260":[0,1,2,3,7,4,5,6],"270":[0,1,2,3,7,4,5,6],"279":[0,1,2,3,7,4,5,6],"280":[0,1,2,3,7,4,5,6],"285":[0,1,2,3,7,4,5,6],"287":[0,1,2,3,7,4,5,6]},"packages/cli/src/services/role.service.ts":{"45":"b://ue/398ApHyBNQFCFIAAZj0diEA","53":"b://ue/398ApHyBNQFCFIAAZj0diEA","56":"b://ue/398ApHyBNQFCFIAAZj0diEA","63":"b://ue/398ApHyBNQFCFIAAZj0diEA","67":"b://ue/398ApHyBNQFCFIAAZj0diEA","75":"b://ue/398ApHyBNQFCFIAAZj0diEA","82":"b://ue/398ApHyBNQFCFIAAZj0diEA","100":"b://ue/398ApHyBNQFCFIAAZj0diEA","113":"b://ue/398ApHyBNQFCFIAAZj0diEA","126":"b://ue/398ApHyBNQFCFIAAZj0diEA","149":"b://ue/398ApHyBNQFCFIAAZj0diEA","160":"b://ue/398ApHyBNQFCFIAAZj0diEA","167":"b://ue/398ApHyBNQFCFIAAZj0diEA","198":"b://ue/398ApHyBNQFCFIAAZj0diEA","226":"b://ue/398ApHyBNQFCFIAAZj0diEA","235":"b://ue/398ApHyBNQFCFIAAZj0diEA","262":"b://ue/398ApHyBNQFCFIAAZj0diEA","310":"b://ue/398ApHyBNQFCFIAAZj0diEA","320":"b://ue/398ApHyBNQFCFIAAZj0diEA","324":"b://ue/398ApHyBNQFCFIAAZj0diEA","334":"b://ue/398ApHyBNQFCFIAAZj0diEA","343":"b://ue/398ApHyBNQFCFIAAZj0diEA","355":"b://ue/398ApHyBNQFCFIAAZj0diEA","379":"b://ue/398ApHyBNQFCFIAAZj0diEA","390":"b://ue/398ApHyBNQFCFIAAZj0diEA","391":"b://ue/398ApHyBNQFCFIAAZj0diEA","401":"b://ue/398ApHyBNQFCFIAAZj0diEA","403":"b://ue/398ApHyBNQFCFIAAZj0diEA","408":"b://ue/398ApHyBNQFCFIAAZj0diEA","414":"b://ue/398ApHyBNQFCFIAAZj0diEA","418":"b://ue/398ApHyBNQFCFIAAZj0diEA","428":"b://ue/398ApHyBNQFCFIAAZj0diEA"},"packages/cli/src/services/user.service.ts":{"43":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","58":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","68":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","72":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","84":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","96":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","107":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","113":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","118":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","161":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","164":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","165":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","170":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","178":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","188":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","260":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","261":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","265":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","267":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","269":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","281":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","287":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","289":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","309":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","317":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","320":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","324":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","327":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","417":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B","443":"b:/9s2K398ApFwJPQmAFCAgYj0Hw8B"},"packages/cli/src/sso.ee/sso-helpers.ts":{"14":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","28":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","47":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","51":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","58":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","62":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","66":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","70":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","74":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","78":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","82":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","90":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","94":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA","98":"b:/9smCX9YApAwBBQEAFAAAYD0HwAA"},"packages/cli/src/user-management/email/user-management-mailer.ts":{"42":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","59":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","70":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","81":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","107":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","128":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","138":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","155":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","169":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","183":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","187":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","192":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","208":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","212":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","217":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","233":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","237":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","242":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","251":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","256":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","257":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","270":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","275":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","280":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA","296":"b:/wAAAAAEAAAgAAAQAAAAAAgAAQAA"},"packages/community-packages.handler.ts":{"32":[0,145,1,2,3,4,5,6],"47":[0,145,1,2,3,4,5,6],"56":[0,145,1,2,3,4,5,6],"74":[0,145,1,2,3,4,5,6]},"packages/community-packages.mapper.ts":{"4":[0,145,1,2,3,4,5,6],"8":[0,145,1,2,3,4,5,6],"12":[0,145,1,2,3,4,5,6],"17":[0,145,1,2,3,4,5,6],"22":[0,145,1,2,3,4,5,6],"36":[0,145,1,2,3,4,5,6]},"packages/engine/import-blocked.error.ts":{"6":[0,145,1,2,3,4,5,6],"13":[0,145,1,2,3,4,5,6]},"packages/engine/import-pipeline.ts":{"43":[0,145,1,2,3,4,5,6],"54":[0,145,1,2,3,4,5,6],"102":[0,145,1,2,3,4,5,6],"106":[0,145,1,2,3,4,5,6],"116":[0,145,1,2,3,4,5,6],"121":[0,145,1,2,3,4,5,6],"128":[0,145,1,2,3,4,5,6],"138":[0,145,1,2,3,4,5,6],"146":[0,145,1,2,3,4,5,6],"159":[0,145,1,2,3,4,5,6],"173":[0,145,1,2,3,4,5,6],"191":[0,145,1,2,3,4,5,6]},"packages/engine/n8n-package-parser.ts":{"24":[0,145,1,2,3,4,5,6],"26":[0,145,1,2,3,4,5,6],"37":[0,145,1,2,3,4,5,6],"47":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential-importer.ts":{"13":[0,145,1,2,3,4,5,6],"20":[0,145,1,2,3,4,5,6],"34":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential-matcher-factory.ts":{"13":[0,145,1,2,3,4,5,6],"21":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential-matcher.ts":{"20":[0,145,1,2,3,4,5,6],"26":[0,145,1,2,3,4,5,6],"35":[0,145,1,2,3,4,5,6],"36":[0,145,1,2,3,4,5,6],"47":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential-missing-mode.ts":{"13":[0,145,1,2,3,4,5,6],"17":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential-requirements.extractor.ts":{"11":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential.exporter.ts":{"32":[0,145,1,2,3,4,5,6],"37":[0,145,1,2,3,4,5,6],"74":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential.serializer.ts":{"11":[0,145,1,2,3,4,5,6]},"packages/entities/credential/credential.types.ts":{"38":[0,145,1,2,3,4,5,6]},"packages/entities/credential/id-based-credential-matcher.ts":{"15":[0,145,1,2,3,4,5,6],"24":[0,145,1,2,3,4,5,6],"29":[0,145,1,2,3,4,5,6],"36":[0,145,1,2,3,4,5,6],"38":[0,145,1,2,3,4,5,6],"42":[0,145,1,2,3,4,5,6],"58":[0,145,1,2,3,4,5,6]},"packages/entities/workflow/workflow-conflict-policy.ts":{"16":[0,145,1,2,3,4,5,6],"17":[0,145,1,2,3,4,5,6],"18":[0,145,1,2,3,4,5,6],"22":[0,145,1,2,3,4,5,6]},"packages/entities/workflow/workflow-import-match.service.ts":{"9":[0,145,1,2,3,4,5,6],"11":[0,145,1,2,3,4,5,6]},"packages/entities/workflow/workflow-importer.ts":{"32":[0,145,1,2,3,4,5,6],"38":[0,145,1,2,3,4,5,6],"46":[0,145,1,2,3,4,5,6],"70":[0,145,1,2,3,4,5,6],"88":[0,145,1,2,3,4,5,6],"130":[0,145,1,2,3,4,5,6]},"packages/entities/workflow/workflow.exporter.ts":{"31":[0,145,1,2,3,4,5,6],"37":[0,145,1,2,3,4,5,6],"70":[0,145,1,2,3,4,5,6],"74":[0,145,1,2,3,4,5,6],"75":[0,145,1,2,3,4,5,6]},"packages/entities/workflow/workflow.serializer.ts":{"18":[0,145,1,2,3,4,5,6],"41":[0,145,1,2,3,4,5,6]},"packages/io/slug.utils.ts":{"6":[0,145,1,2,3,4,5,6]},"packages/io/tar/tar-package-reader.ts":{"23":[0,145,1,2,3,4,5,6],"28":[0,145,1,2,3,4,5,6],"41":[0,145,1,2,3,4,5,6],"50":[0,145,1,2,3,4,5,6],"55":[0,145,1,2,3,4,5,6],"61":[0,145,1,2,3,4,5,6],"92":[0,145,1,2,3,4,5,6],"99":[0,145,1,2,3,4,5,6],"106":[0,145,1,2,3,4,5,6],"118":[0,145,1,2,3,4,5,6],"143":[0,145,1,2,3,4,5,6],"160":[0,145,1,2,3,4,5,6],"176":[0,145,1,2,3,4,5,6],"182":[0,145,1,2,3,4,5,6],"187":[0,145,1,2,3,4,5,6]},"packages/io/tar/tar-package-writer.ts":{"13":[0,145,1,2,3,4,5,6],"17":[0,145,1,2,3,4,5,6],"31":[0,145,1,2,3,4,5,6],"46":[0,145,1,2,3,4,5,6],"51":[0,145,1,2,3,4,5,6],"63":[0,145,1,2,3,4,5,6],"67":[0,145,1,2,3,4,5,6]},"packages/io/unique-filename-allocator.ts":{"6":[0,145,1,2,3,4,5,6],"11":[0,145,1,2,3,4,5,6]},"packages/n8n-packages.config.ts":{"6":[0,145,1,2,3,4,5,6]},"packages/n8n-packages.handler.ts":{"32":[0,145,1,2,3,4,5,6],"39":[0,145,1,2,3,4,5,6],"50":[0,145,1,2,3,4,5,6],"52":[0,145,1,2,3,4,5,6],"53":[0,145,1,2,3,4,5,6],"64":[0,145,1,2,3,4,5,6],"73":[0,145,1,2,3,4,5,6]},"packages/n8n-packages.service.ts":{"21":[0,145,1,2,3,4,5,6],"28":[0,145,1,2,3,4,5,6],"61":[0,145,1,2,3,4,5,6]},"packages/n8n-packages.types.ts":{"78":[0,145,1,2,3,4,5,6],"90":[0,145,1,2,3,4,5,6]},"packages/spec/manifest.schema.ts":{"22":[0,145,1,2,3,4,5,6]},"packages/spec/requirements.schema.ts":{"14":[0,145,1,2,3,4,5,6]},"packages/utils/import-package-upload.ts":{"23":[0,145,1,2,3,4,5,6],"36":[0,145,1,2,3,4,5,6],"44":[0,145,1,2,3,4,5,6],"48":[0,145,1,2,3,4,5,6],"51":[0,145,1,2,3,4,5,6]},"packages/@n8n/api-types/src/schemas/boolean-from-string.ts":{"3":"b:AtsWK394ApEwBNQEAFAAAYgEIAAA"},"packages/@n8n/backend-common/src/license-state.ts":{"9":"b:7vuW//98E5P2BPQECFIACZj0dqAA","15":"b:7vuW//98E5P2BPQECFIACZj0dqAA","18":"b:7vuW//98E5P2BPQECFIACZj0dqAA","22":"b:7vuW//98E5P2BPQECFIACZj0dqAA","33":"b:7vuW//98E5P2BPQECFIACZj0dqAA","47":"b:7vuW//98E5P2BPQECFIACZj0dqAA","57":"b:7vuW//98E5P2BPQECFIACZj0dqAA","61":"b:7vuW//98E5P2BPQECFIACZj0dqAA","65":"b:7vuW//98E5P2BPQECFIACZj0dqAA","69":"b:7vuW//98E5P2BPQECFIACZj0dqAA","73":"b:7vuW//98E5P2BPQECFIACZj0dqAA","77":"b:7vuW//98E5P2BPQECFIACZj0dqAA","81":"b:7vuW//98E5P2BPQECFIACZj0dqAA","85":"b:7vuW//98E5P2BPQECFIACZj0dqAA","89":"b:7vuW//98E5P2BPQECFIACZj0dqAA","93":"b:7vuW//98E5P2BPQECFIACZj0dqAA","97":"b:7vuW//98E5P2BPQECFIACZj0dqAA","101":"b:7vuW//98E5P2BPQECFIACZj0dqAA","105":"b:7vuW//98E5P2BPQECFIACZj0dqAA","109":"b:7vuW//98E5P2BPQECFIACZj0dqAA","113":"b:7vuW//98E5P2BPQECFIACZj0dqAA","117":"b:7vuW//98E5P2BPQECFIACZj0dqAA","121":"b:7vuW//98E5P2BPQECFIACZj0dqAA","125":"b:7vuW//98E5P2BPQECFIACZj0dqAA","129":"b:7vuW//98E5P2BPQECFIACZj0dqAA","133":"b:7vuW//98E5P2BPQECFIACZj0dqAA","137":"b:7vuW//98E5P2BPQECFIACZj0dqAA","141":"b:7vuW//98E5P2BPQECFIACZj0dqAA","145":"b:7vuW//98E5P2BPQECFIACZj0dqAA","149":"b:7vuW//98E5P2BPQECFIACZj0dqAA","153":"b:7vuW//98E5P2BPQECFIACZj0dqAA","157":"b:7vuW//98E5P2BPQECFIACZj0dqAA","161":"b:7vuW//98E5P2BPQECFIACZj0dqAA","165":"b:7vuW//98E5P2BPQECFIACZj0dqAA","169":"b:7vuW//98E5P2BPQECFIACZj0dqAA","173":"b:7vuW//98E5P2BPQECFIACZj0dqAA","177":"b:7vuW//98E5P2BPQECFIACZj0dqAA","181":"b:7vuW//98E5P2BPQECFIACZj0dqAA","185":"b:7vuW//98E5P2BPQECFIACZj0dqAA","189":"b:7vuW//98E5P2BPQECFIACZj0dqAA","193":"b:7vuW//98E5P2BPQECFIACZj0dqAA","197":"b:7vuW//98E5P2BPQECFIACZj0dqAA","205":"b:7vuW//98E5P2BPQECFIACZj0dqAA","209":"b:7vuW//98E5P2BPQECFIACZj0dqAA","213":"b:7vuW//98E5P2BPQECFIACZj0dqAA","217":"b:7vuW//98E5P2BPQECFIACZj0dqAA","221":"b:7vuW//98E5P2BPQECFIACZj0dqAA","225":"b:7vuW//98E5P2BPQECFIACZj0dqAA","229":"b:7vuW//98E5P2BPQECFIACZj0dqAA","233":"b:7vuW//98E5P2BPQECFIACZj0dqAA","237":"b:7vuW//98E5P2BPQECFIACZj0dqAA","241":"b:7vuW//98E5P2BPQECFIACZj0dqAA","246":"b:7vuW//98E5P2BPQECFIACZj0dqAA","259":"b:7vuW//98E5P2BPQECFIACZj0dqAA"},"packages/@n8n/db/src/repositories/project.repository.ts":{"9":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","13":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","25":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","36":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","46":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","70":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","85":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","102":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","112":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","124":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","140":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","149":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","165":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","178":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","192":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","202":"b:6tuWK399MpX4BNQECFAAAYj2NgAA","209":"b:6tuWK399MpX4BNQECFAAAYj2NgAA"},"packages/@n8n/permissions/src/roles/all-roles.ts":{"58":"b:+v////////////////////8PAAAA","62":"b:+v////////////////////8PAAAA","83":"b:AtsWK394ApFwBNQEAFAAAYAEAAAA"},"packages/cli/src/controllers/module-settings.controller.ts":{"7":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","13":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA"},"packages/cli/src/controllers/project.controller.ts":{"44":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","53":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","74":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","85":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","102":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","123":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","136":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","144":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","160":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","198":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","211":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","222":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","232":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","241":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","251":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","259":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","278":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","300":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","322":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","341":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","355":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","366":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA","374":"b:/vuWq/99ApF4BNQUAFAAAYgGIAAA"},"packages/cli/src/controllers/role.controller.ts":{"31":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","37":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","44":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","45":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","46":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","47":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","53":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","65":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","75":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","87":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","105":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","121":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA"},"packages/cli/src/controllers/tags.controller.ts":{"20":"b:AtsWK794ApFwBNUEAFAAQYwHAAAA","24":"b:AtsWK794ApFwBNUEAFAAQYwHAAAA","30":"b:AtsWK794ApFwBNUEAFAAQYwHAAAA","43":"b:AtsWK794ApFwBNUEAFAAQYwHAAAA","56":"b:AtsWK794ApFwBNUEAFAAQYwHAAAA"},"packages/cli/src/modules/data-table/data-table-aggregate.controller.ts":{"10":"b:AtsWK794A5FwBNQEAFAAAYgGAAAA","17":"b:AtsWK794A5FwBNQEAFAAAYgGAAAA","27":"b:AtsWK794A5FwBNQEAFAAAYgGAAAA"},"packages/cli/src/modules/data-table/data-table-size-validator.service.ts":{"16":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","21":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","33":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","56":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","73":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","86":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","91":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA"},"packages/cli/src/modules/data-table/data-table.repository.ts":{"24":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","40":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","41":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","43":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","48":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","54":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","55":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","65":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","94":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","95":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","102":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","109":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","144":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","145":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","158":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","159":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","173":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","179":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","184":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","195":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","199":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","204":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","219":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","227":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","237":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","242":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","265":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","273":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","284":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","295":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","299":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","302":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","306":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","334":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","372":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA"},"packages/cli/src/modules/data-table/data-table.service.ts":{"51":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","65":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","66":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","68":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","81":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","118":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","145":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","154":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","158":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","173":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","183":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","194":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","204":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","218":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","229":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","241":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","245":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","252":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","270":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","276":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","296":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","305":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","346":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","356":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","403":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","447":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","457":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","511":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","520":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","550":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","559":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","566":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","567":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","569":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","587":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","630":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","645":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","658":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","669":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","675":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","685":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","721":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","723":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","727":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","729":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","745":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","759":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","784":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","789":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","791":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","796":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","821":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","849":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA","858":"b:EtsWK7/4A5FwBNQEAFAAAYgEAAAA"},"packages/cli/src/modules/data-table/utils/sql-utils.ts":{"25":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","26":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","44":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","72":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","79":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","83":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","87":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","102":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","111":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","128":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","137":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","140":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","144":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","148":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","161":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","165":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","175":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","183":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","196":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","203":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","221":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","242":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","247":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","251":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","280":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","313":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","331":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","354":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","371":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","377":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA","382":"b:AtsWK7/4A5FwBNQEAFAAAYgEAAAA"},"packages/cli/src/modules/favorites/database/repositories/user-favorite.repository.ts":{"9":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","13":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","20":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","24":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA"},"packages/cli/src/modules/favorites/favorites.controller.ts":{"10":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","16":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","19":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","24":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA","29":"b:AtsWK394ApFwBNQEAFAAAYgEAAAA"},"packages/cli/src/modules/favorites/favorites.service.ts":{"25":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","26":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","28":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","34":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","45":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","54":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","66":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","75":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","91":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","113":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","114":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","122":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","127":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","132":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","145":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","164":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","187":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","205":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","231":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","243":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA","247":"b:AtsWK/94A5F4BNQEAFAAAZgGAAAA"},"packages/cli/src/server.ts":{"85":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","97":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","99":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","101":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","102":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","121":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","123":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","127":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","132":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","136":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","140":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","144":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","145":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","153":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","159":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","161":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","195":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","209":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","220":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","240":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","270":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","324":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","328":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","343":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","358":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","432":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","434":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","447":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","454":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","476":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","485":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","494":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","495":"b:Avs2q394RpnwxdQ0APEEhYgEggAA","501":"b:Avs2q394RpnwxdQ0APEEhYgEggAA"},"packages/cli/src/services/frontend.service.ts":{"114":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","133":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","137":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","138":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","145":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","157":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","164":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","411":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","425":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","598":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","640":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","644":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","660":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","668":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","673":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","683":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","696":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","697":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA","727":"b:AtsWP394ApFwBNQEAFAAAYgEAAAA"},"packages/cli/src/services/project.service.ee.ts":{"39":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","47":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","53":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","57":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","69":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","80":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","81":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","86":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","87":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","92":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","93":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","98":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","99":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","104":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","105":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","106":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","110":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","111":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","116":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","117":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","122":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","123":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","124":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","128":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","174":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","191":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","244":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","263":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","272":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","281":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","285":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","288":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","290":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","305":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","313":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","327":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","337":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","341":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","365":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","368":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","373":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","378":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","379":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","393":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","397":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","404":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","416":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","420":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","423":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","424":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","429":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","433":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","439":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","449":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","461":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","470":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","478":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","483":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","497":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","514":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","518":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","536":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","540":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","552":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","562":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","567":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","576":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","578":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","582":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","592":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","598":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","610":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","616":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","624":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","630":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","634":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","641":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","651":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","682":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","704":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","713":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","726":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","734":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","741":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","751":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA","762":"b:/vu2q/99ApH4BPQUCFAAAYj2NgAA"},"packages/cli/src/services/tag.service.ts":{"14":"b:AtsWq794EpNwBNUECFCAQczHEAAA","19":"b:AtsWq794EpNwBNUECFCAQczHEAAA","25":"b:AtsWq794EpNwBNUECFCAQczHEAAA","39":"b:AtsWq794EpNwBNUECFCAQczHEAAA","49":"b:AtsWq794EpNwBNUECFCAQczHEAAA","54":"b:AtsWq794EpNwBNUECFCAQczHEAAA","69":"b:AtsWq794EpNwBNUECFCAQczHEAAA","78":"b:AtsWq794EpNwBNUECFCAQczHEAAA","79":"b:AtsWq794EpNwBNUECFCAQczHEAAA","84":"b:AtsWq794EpNwBNUECFCAQczHEAAA"},"packages/@n8n/api-types/src/agent-builder-tool-node-types.ts":{"4":"b:+v////////////////////8PAAAA"},"packages/@n8n/api-types/src/agents/agent-integration.schema.ts":{"3":"b:+v////////////////////8PAAAA","16":"b:+v////////////////////8PAAAA","22":"b:+v////////////////////8PAAAA","35":"b:+v////////////////////8PAAAA"},"packages/@n8n/api-types/src/dto/data-table/list-data-table-query.dto.ts":{"32":"b:+v////////////////////8PAAAA","36":[47,48]},"packages/@n8n/api-types/src/dto/pagination/pagination.dto.ts":{"10":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","11":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","14":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","18":"b:+v////////////////////8PAAAA","22":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","23":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","27":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","35":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","47":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","48":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","51":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","55":"b:+v////////////////////8PAAAA","59":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","60":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","63":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA","66":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA"},"packages/@n8n/chat-hub/src/constants.ts":{"50":"b:+v////////////////////8PAAAA"},"packages/@n8n/chat/src/composables/useChat.ts":{"6":"b:+v////////////////////8PAAAA"},"packages/@n8n/chat/src/utils/event-bus.ts":{"11":"b:+v////////////////////8PAAAA","22":[14,15,16,17,77,95,110],"36":[14,15,16,17,77,95,110],"40":[14,15,16,17,77,95,110]},"packages/@n8n/codemirror-lang-sql/src/sql.ts":{"19":"b:+v////////////////////8PAAAA","26":[104],"61":"b:+v////////////////////8PAAAA","76":[104],"80":[104],"140":"b:+v////////////////////8PAAAA","157":"b:+v////////////////////8PAAAA","195":[104]},"packages/@n8n/codemirror-lang-sql/src/tokens.ts":{"33":"b:+v////////////////////8PAAAA","80":[104],"88":[104],"113":[104],"122":[104],"141":[104],"164":[104],"171":"b:+v////////////////////8PAAAA","221":"b:+v////////////////////8PAAAA","240":"b:+v////////////////////8PAAAA","241":[104]},"packages/@n8n/composables/src/useDeviceSupport.ts":{"3":"b:+v////////////////////8PAAAA","26":"b:AMACAAAAAAAAIAEAfkAABAEAAAAA","28":"b:KLYAoASQRCBM0mOQd2H9RfkPAAAA"},"packages/@n8n/composables/src/useDocumentTitle.ts":{"28":"b:+v////////////////////8PAAAA","37":"b:+v///f////////v///////8PAAAA","42":[132],"47":"b:cP9/4A84/v/n/wPg//////8PAAAA"},"packages/@n8n/design-system/src/components/AskAssistantChat/AskAssistantChat.vue":{"25":"b:+v///f////////v///////8PAAAA","62":[9],"77":"b:+v///f////////v///////8PAAAA","78":[9,10,11,12,13,18],"86":"b:+v///f////////v///////8PAAAA","87":[9,10,11,12,13,18],"99":"b:+v///f////////v///////8PAAAA","133":"b:+v///f////////v///////8PAAAA","272":"b:+v///f////////v///////8PAAAA","275":"b:+v///f////////v///////8PAAAA","287":[9,10,11,12,13,18],"303":"b:cP9/4A8w/v/h/4Mh//////sPAAAA","307":"b:+v///f////////v///////8PAAAA","311":"b:+v///f////////v///////8PAAAA","315":"b:+v///f////////v///////8PAAAA","321":[9,10,11,12,13,18],"327":"b:+v///f////////v///////8PAAAA","332":"b:+v///f////////v///////8PAAAA","345":[13],"360":"b:cP9/4A8w/v/h/4Mh//////sPAAAA","364":[18],"378":[9],"382":[9,12,13,18],"391":[13,18],"395":[13,18],"399":[9,10,12,13,18],"403":"b:+v///f////////v///////8PAAAA","405":"b:+v///f////////v///////8PAAAA","422":"b:+v///f////////v///////8PAAAA","439":[9,10,11,12],"443":[9,10,11,12,13,18],"456":[9,10,11,12,13,18],"464":[9,10,11,12,13,18],"469":"b:+v///f////////v///////8PAAAA","500":[9,10,11,12,13,18],"507":[9,10,11,12,13,18],"534":[10],"535":[10],"538":[13],"554":[9,10,12],"562":[9],"563":[9,10,12],"597":"b:+v///f////////v///////8PAAAA","602":[13,18],"614":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/components/AskAssistantIcon/AssistantIcon.vue":{"4":"b:+v///f////////v///////8PAAAA","22":"b:+v///f////////v///////8PAAAA","30":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/components/AskAssistantText/AssistantText.vue":{"9":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/components/ConditionalRouterLink/CondtionalRouterLink.vue":{"16":"b:+P+f/Q/8/////3M0//////8PAAAA","27":"b:+P+f/Q/8/////3M0/////n8PAAAA","32":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/@n8n/design-system/src/components/N8nActionBox/ActionBox.vue":{"33":"b:KAiAgAD9AQA+AOgZAAAAAAgCAAAA","46":"b:IAgAgAD5AQA+AOgZAAAAAAAAAAAA","51":"b:KAiAgAD9AQAwAGgZAAAAAAgCAAAA","59":"b:IAgAgAD4AQA+AOgZAAAAAAAAAAAA","67":[31,46,48,85,86,87,88]},"packages/@n8n/design-system/src/components/N8nActionToggle/ActionToggle.vue":{"31":"b:uL6b/S33187/+fs1z+///zsOAAAA","52":"b:uL6b/S33187/+fs1z+///zsOAAAA","53":"b:uL6b/S33187/+fs1z+///zsOAAAA","62":"b:gAAAAAABAQA+AEgBAAAAEAACAAAA","63":"b:gAAAAAABAQA+AEgBAAAAEAACAAAA","92":"b:uL6b/S33187/+fs1z+///zsOAAAA","99":"b:gAAAAAABAQA+AEgBAAAAEAACAAAA","117":"b:uL6b/S33187/+fs1z+///zsOAAAA","130":[66],"132":[66],"139":"b:gAAAAAABAQA+AEgBAAAAEAACAAAA"},"packages/@n8n/design-system/src/components/N8nBadge/Badge.vue":{"23":"b:eICAgAD1AwA0AGAwAAKAQFgKAAAA","25":"b:eICAgAD1AwA0AGAwAAKAQFgKAAAA"},"packages/@n8n/design-system/src/components/N8nButton/Button.vue":{"9":"b:+v///f////////v///////8PAAAA","25":"b:+v///f////////v///////8PAAAA","31":"b:+v///f////////v///////8PAAAA","37":"b:+v///f////////v///////8PAAAA","43":"b:+v///f////////v///////8PAAAA","48":"b:+v///f////////v///////8PAAAA","53":"b:+v///f////////v///////8PAAAA","55":"b:+v///f////////v///////8PAAAA","81":"b:+P+f8f//v///+/u3//////8PAAAA","84":"b:+v///f////////v///////8PAAAA","103":"b:+v///f////////v//////n8PAAAA","105":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/components/N8nCallout/Callout.vue":{"9":"b:IIhBgCB7VoAgUXAwAQ3/PzIGAAAA","33":"b:IIhBgCB7VoAgUXAwAQ3/PzIGAAAA","42":"b:AIBBACAaEoAgUXAgAQ3fJzICAAAA","46":"b:AIBBACAaEoAgUXAgAQ3fJzICAAAA","55":"b:IIhBgCB7VoAgUXAwAQ3/PzIGAAAA","64":"b:IIhBgCB7VoAgUXAwAQ3/PzIGAAAA"},"packages/@n8n/design-system/src/components/N8nChatInput/ChatInput.vue":{"41":"b:+v///f////////v///////8PAAAA","77":"b:+v///f////////v///////8PAAAA","82":"b:+v///f////////v///////8PAAAA","96":"b:+v///f////////v///////8PAAAA","97":"b:+v///f////////v///////8PAAAA","107":"b:+v///f////////v///////8PAAAA","111":"b:+v///f////////v///////8PAAAA","120":"b:+v///f////////v///////8PAAAA","122":"b:+v///f////////v///////8PAAAA","131":"b:+v///f////////v///////8PAAAA","133":"b:ADYEAPAGAAAAAAAAAAAAAAAAAAAA","144":"b:+v///f////////v///////8PAAAA","153":"b:ADYEAPAGAAAAAAAAAAAAAAAAAAAA","160":"b:ADYEAPAGAAAAAAAAAAAAAAAAAAAA","164":[9,12,13,18],"170":[9,12,13,18,36,37,38,39,41,42],"177":[18],"184":[9,12,13,18],"229":"b:AD4EAPAGAAAAAAAAAAAAAAAAAAAA","234":"b:ADYEAPAGAAAAAAAAAAAAAAAAAAAA","239":[13],"244":[13],"249":"b:+v///f////////v///////8PAAAA","253":"b:+v///f////////v///////8PAAAA","255":"b:+v///f////////v///////8PAAAA","265":"b:+v///f////////v///////8PAAAA","269":"b:+v///f////////v//////n8PAAAA","290":[9,10,12,13,36,37,38,39,41,42],"304":[9,10,12,13,36,37,38,39,41,42],"314":[41],"326":[9,12,13,18,36,37,38,39,41,42]},"packages/@n8n/design-system/src/components/N8nCommandBar/CommandBar.vue":{"34":"b:+v+f//////////8///////8PAAAA","42":[137],"43":[137],"46":[137],"50":[137],"57":[137],"62":[137],"85":[137],"90":[137],"103":[137],"110":[137],"115":[137],"122":[137],"126":[137],"127":[137],"155":[137],"163":[137],"189":[137],"202":"b:KLYEoASQTCD80uMUd2H/Xf0PAAAA","252":"b:+P+f4f//////+/s3//////8PAAAA","260":[137],"265":"b:+v+f//////////8///////8PAAAA","270":[69,90,110,134,135],"274":"b:+v+f//////////8///////8PAAAA","279":"b:+v+f//////////8//////n8PAAAA","280":"b:+v+f//////////8//////n8PAAAA","293":[137],"313":[137],"325":[137],"327":[137],"340":[137]},"packages/@n8n/design-system/src/components/N8nDatatable/Datatable.vue":{"23":[85],"37":[85],"45":[85],"76":[85],"80":[85],"89":[85],"99":[85],"133":[85],"134":[85],"135":[85]},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenu.typeguards.ts":{"6":"b:+P+f/f////////u1//////8PAAAA","8":"b:+P+f/f////////u1//////8PAAAA"},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenu.vue":{"27":"b:+P+f/f////////u1//////8PAAAA","55":[37,38,39,65,66,67],"93":"b:+P+f/f////////u1//////8PAAAA","101":"b:+P+f/f////////u1//////8PAAAA","110":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","121":[37,38,39],"147":[37,38,39,65,66,67],"176":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","190":"b:+N6b+e2zV+p/+1s1z+//f/sPAAAA","197":"b:0J4ZYO2xE2p/y0shx8//dzkDAAAA","204":"b:0J4ZQO2xAyp/y0shx8//dzgDAAAA","218":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","225":"b:+P+f/f////////u1//////8PAAAA","226":"b:+P+f/f////////u1//////8PAAAA","239":"b:+P+f/f////////u1//////8PAAAA","240":"b:8L6doP///+5/08Mw59/vff4PAAAA","246":"b:uNqb+amzV8o/+Vs1z+//f/sOAAAA","255":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","285":"b:+P+f/f////////u1//////8PAAAA","289":"b:+P+f/f////////u1/////n8PAAAA","290":"b:+P+f/f////////u1//////8PAAAA","319":"b:+P+f/f////////u1//////8PAAAA","334":"b:0B4AAOWRASB/gksBQEBgVBADAAAA","375":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","377":"b:0B4AAOWRASB/gksBQEBgVBADAAAA","384":[37,38,39,65,66,67],"387":"b:0BYAAOSAACBCggMAQEBgRRABAAAA","390":"b:0BYAAOSAACBOggMAQEBgRRABAAAA","393":"b:0BYAAOSBASB+gksBQEBgVRADAAAA"},"packages/@n8n/design-system/src/components/N8nDropdownMenu/composables/useMenuKeyboardNavigation.ts":{"23":"b:+P+f/f////////u1//////8PAAAA","110":"b:+P+f/f////////u1//////8PAAAA"},"packages/@n8n/design-system/src/components/N8nFormInput/FormInput.vue":{"56":"b:KgCAFAAEAQAgAHAGAAAAAAkCAAAA","82":"b:KgCAFAAEAQAgAHAGAAAAAAkCAAAA","122":"b:KACAEAAAAQAgADAGAAAAAAkCAAAA","128":"b:KACAEAAAAQAgADAGAAAAAAgCAAAA","133":"b:KACAFAAAAQAgADAGAAAAAAkCAAAA","137":[90],"143":"b:KgCAFAAEAQAgAHAGAAAAAAkCAAAA","161":"b:KgCAFAAEAQAgAHAGAAAAAAkCAAAA","167":"b:KgCAFAAEAQAgAHAGAAAAAAkCAAAA","173":[28,1,3,69,84,85,89,90],"176":"b:KgCAFAAEAQAgAHAGAAAAAAkCAAAA","214":"b:KgCAFAAEAQAgAHAGAAAAAAkCAAAA","215":[3,90],"232":[84],"234":[84]},"packages/@n8n/design-system/src/components/N8nFormInput/validators.ts":{"7":"b:KgCAFAAEAQAgAHAGAAAAAAgCAAAA","36":[85],"67":[28,1,69,89,90],"97":[84,85],"109":"b:+v////////////////////8PAAAA","139":"b:KgCAFAAEAQAgAHAGAAAAAAgCAAAA"},"packages/@n8n/design-system/src/components/N8nHeading/Heading.vue":{"27":"b:+v////////////////////8PAAAA","34":"b:+v////////////////////8PAAAA","50":"b:+v////////////////////8PAAAA","52":"b:+v////////////////////8PAAAA","56":"b:+v///////////////////n8PAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/Icon.vue":{"21":"b:+v////////////////////8PAAAA","28":"b:+v////////////////////8PAAAA","38":"b:+v////////////////////8PAAAA","50":"b:+v////////////////////8PAAAA","77":"b:+v////////////////////8PAAAA","93":"b:+v////////////////////8PAAAA","95":"b:+v////////////////////8PAAAA","97":"b:cP974A8y/v/h+0Pg3/////sLAAAA","104":"b:+v////////////////////8PAAAA","110":"b:+v////////////////////8PAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/spinner.svg":{"9":"b:+v////////////////////8PAAAA"},"packages/@n8n/design-system/src/components/N8nIconButton/IconButton.vue":{"6":"b:+v///f////////v///////8PAAAA","7":"b:+v///f////////v//////n8PAAAA"},"packages/@n8n/design-system/src/components/N8nInfoTip/InfoTip.vue":{"14":"b:uI6L3STxgc6/EPIVgO9/3xkOAAAA","57":"b:uI6L3STxgc6/EPIVgO9/3xkOAAAA","63":"b:uI6L3STxgc6/EPIVgO9/3xkOAAAA"},"packages/@n8n/design-system/src/components/N8nInput/Input.vue":{"11":"b:uv7b/a33187/+fs37+///38PAAAA","40":"b:uv7b/a33187/+fs37+///3sPAAAA","49":"b:uv7b/a33187/+fs37+///38PAAAA","59":"b:uv7b/a33187/+fs37+///38PAAAA","78":"b:uv7b/a33187/+fs37+///38PAAAA","81":"b:uv7b/a33187/+fs37+///38PAAAA","83":"b:uv7b/a33187/+fs37+///38PAAAA","97":"b:uv7b/a33187/+fs37+///38PAAAA","111":"b:qJCZkKXwAQ4lEPgXgARyGQ4PAAAA","118":"b:qJCZkKXwAY4jEPg3yARyGT8HAAAA","124":"b:qJCZlKXwAY4nEPg3yARyGT8PAAAA","130":"b:CBAAAACQAAAEAKAEQAAyAQQCAAAA","135":"b:gAAYAAUAAAYkAAAAQAACGQICAAAA","146":"b:uv7b/a33187/+fs37+///38PAAAA","150":"b:uv7b/a33187/+fs37+///38PAAAA","156":"b:uNqb+am3V8q/+Xk1z+//fz8PAAAA","157":"b:uv7b/a33187/+fs37+///38PAAAA","162":"b:uv7b/a33187/+fs37+///38PAAAA","163":"b:qpLZ8KXxhY6nMfoXjOzyHw8PAAAA","172":"b:uv7b/a33187/+fs37+///38PAAAA","182":"b:qJCZlKXwAQ4nEOAVSARyGQsHAAAA","183":[117,123],"184":"b:KACAAACAAYAgAAAgAABQADkCAAAA","187":"b:uv7b/a33187/+fs37+///38PAAAA"},"packages/@n8n/design-system/src/components/N8nInputLabel/InputLabel.vue":{"31":"b:ur7b9K33187h+fs3z+3//zsGAAAA","33":"b:ur7b9K33187h+fs3z+3//zsGAAAA","65":"b:sr5b9K3z187h+es3z+3//zsGAAAA","69":"b:AogBAKDRAYAAEGAmAAAACDAGAAAA"},"packages/@n8n/design-system/src/components/N8nLink/Link.vue":{"31":"b:+v/f/S/5//////s///////8PAAAA","32":"b:+v/f/S/5//////s//////n8PAAAA","34":"b:+v/f/S/5//////s//////n8PAAAA"},"packages/@n8n/design-system/src/components/N8nLoading/Loading.vue":{"38":"b:+IqZ/Qnx/04/0Hg0xz/vfboOAAAA","47":"b:+IqZ/Qnx/04/0Hg0xz/vfboOAAAA","49":[40,47,48,138],"60":"b:+IqZ/Qnx/04/0Hg0xz/vfboOAAAA"},"packages/@n8n/design-system/src/components/N8nMenuItem/MenuItem.vue":{"15":"b:+v+f/f////////s///////8PAAAA","29":"b:+v+f/f////////s///////8PAAAA","45":"b:IAAAAYChAQAwAEAUQAIAQAgAAAAA","52":"b:+v+f/f////////s///////8PAAAA","64":"b:+v+f/f////////s///////8PAAAA","73":"b:+v+f/f////////s///////8PAAAA","89":"b:+v+f/f////////s///////8PAAAA","92":"b:+v+f/f////////s///////8PAAAA","99":"b:+v+f/f////////s///////8PAAAA","117":"b:+v+f/f////////s//////n8PAAAA","126":[24,69,102],"135":"b:oogBifB/gQAwENgfQAAACQgEAAAA"},"packages/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.vue":{"42":"b:+P+f/Q/8/////3M0//////8PAAAA","56":"b:+P+f/Q/8/////3M0//////8PAAAA","58":"b:+P+f/Q/8/////3M0//////8PAAAA","59":"b:+P+f/Q/8/////3M0//////8PAAAA","60":"b:+P+f/Q/8/////3M0//////8PAAAA","84":"b:eP+f4Q/8////+2M0//////8PAAAA","89":[23,48,3,69,5,126,131,137],"94":[23,48,3,69,5,131,137],"103":"b:+P+f/Q/8/////3M0//////8PAAAA","113":[23,48,3,69,5,126,131,137],"117":"b:+P+f/Q/8/////3M0//////8PAAAA","126":"b:+P+f/Q/8/////3M0//////8PAAAA","128":"b:+P+f/Q/8/////3M0//////8PAAAA","130":"b:+P+f/Q/8/////3M0/////n8PAAAA","141":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","143":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","161":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","163":"b:eCCAgALUeSR+yEMQ5aJPbksKAAAA","166":"b:eCCAgALUeSR+yEMQ5aJPbksKAAAA","170":[69,126,137],"171":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","172":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","184":[69],"208":"b:+P+f/Q/8/////3M0//////8PAAAA","212":"b:+P+f/Q/8/////3M0/////n8PAAAA"},"packages/@n8n/design-system/src/components/N8nOption/Option.vue":{"12":"b:+r7b/W33187/+fM3z+///38OAAAA","13":"b:+r7b/W33187/+fM3z+///n8OAAAA","16":"b:+r7b/W33187/+fM3z+///n8OAAAA"},"packages/@n8n/design-system/src/components/N8nPopover/Popover.vue":{"84":"b:+P+f/f/+/////3M0//////8PAAAA","105":"b:AAAAAQCAAAAgAEAkaAEvH1ICAAAA","111":"b:AAAAAACAAAAgAEAkSAEvGRICAAAA","125":"b:AAAAAACAAAAgAEAgSAEPHVICAAAA","133":"b:+P+f/f/+/////3M0//////8PAAAA","134":"b:AAAAAACAAAAgAEAgKAEvHxIAAAAA","143":"b:+P+f/f/+/////3M0//////8PAAAA","146":"b:AAAAAQCAAAAgAEAkSAEPHVICAAAA","147":"b:+P+f/f/+/////3M0//////8PAAAA","148":"b:+P+f/f/+/////3M0//////8PAAAA","151":"b:+P+f/f/+/////3M0//////8PAAAA","167":"b:AAAAAQCAAAAgAEAkaAEvHlICAAAA","174":"b:AAAAAQCAAAAgAAAkSAAAAFACAAAA"},"packages/@n8n/design-system/src/components/N8nPromptInputSuggestions/N8nPromptInputSuggestions.vue":{"10":"b:+v///f////////v///////8PAAAA","20":[18],"23":"b:+v///f////////v///////8PAAAA","41":"b:+v///f////////v///////8PAAAA","46":[18]},"packages/@n8n/design-system/src/components/N8nResizeWrapper/ResizeWrapper.vue":{"6":"b:+v///f////////v///////8PAAAA","72":"b:+v///f////////v///////8PAAAA","91":"b:+v///f////////v///////8PAAAA","141":"b:MJobYIgwVkol+QEkx///d/kOAAAA","167":"b:MJobYIgwVkol+QEkx///d/kOAAAA","195":"b:+v///f////////v///////8PAAAA","201":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/components/N8nRoute/Route.vue":{"13":"b:+v/f/f////////s///////8PAAAA","15":"b:+v/f/f////////s///////8PAAAA","28":"b:+v/f/f////////s///////8PAAAA","29":"b:+v/f/f////////s///////8PAAAA","38":"b:+v+f/f////////s///////8PAAAA"},"packages/@n8n/design-system/src/components/N8nScrollArea/N8nScrollArea.vue":{"50":"b:+P+f/f/+/////3M0//////8PAAAA","68":"b:+P+f/f/+/////3M0//////8PAAAA","82":"b:+P+f/Q/8/////3M0//////8PAAAA","104":[13,18],"144":"b:+P+f/Q/8/////3M0//////8PAAAA","163":"b:+P+f/f/+/////3M0//////8PAAAA","172":"b:+P+f/f/+/////3M0/////n8PAAAA","174":"b:+P+f/f/+/////3M0//////8PAAAA","181":[36,37]},"packages/@n8n/design-system/src/components/N8nSelect/Select.vue":{"11":"b:+r7b/W33187/+fM3z+///38OAAAA","63":"b:+r7b/W33187/+fM3z+///38OAAAA","64":"b:+r7b/W33187/+fM3z+///38OAAAA","72":"b:+r7b/W33187/+fM3z+///38OAAAA","85":"b:+r7b/W33187/+fM3z+///38OAAAA","89":[11,31,44,45,46,69,86,92,5],"93":[15,16],"97":"b:AAAIAAEykAIBAAAAgAAAAQQAAAAA","113":"b:+r7b/W33187/+fM3z+///38OAAAA","134":"b:+r7b/W33187/+fM3z+///38OAAAA","136":"b:6AiBgAB1AQA4GGAQAEByA0gCAAAA","142":"b:MKABwEAzAAIhEAAAAEAACQAEAAAA","145":"b:MKABwEAzAAIhEAAAAEAACQAEAAAA"},"packages/@n8n/design-system/src/components/N8nSendStopButton/N8nSendStopButton.vue":{"5":"b:+v///f////////v///////8PAAAA","30":[9,12,13,36,37,38,39,41,42],"34":[18],"36":"b:+v///f////////v///////8PAAAA","62":"b:+v///f////////v//////n8PAAAA"},"packages/@n8n/design-system/src/components/N8nSpinner/Spinner.vue":{"20":"b:+v////////////////////8PAAAA"},"packages/@n8n/design-system/src/components/N8nTabs/Tabs.vue":{"25":"b:uJ7b/Q32187/+XM0z+///zsKAAAA","30":"b:uJ7b/Q32187/+XM0z+///zsKAAAA","40":"b:uJ7b/Q32187/+XM0z+///zsKAAAA","53":"b:OJqbeQiyV0o1+REkz+//dzkCAAAA","63":[69,117,121],"73":"b:uJ7b/Q32187/+XM0z+///zsKAAAA","92":"b:uJ7b/Q32187/+XM0z+///jsKAAAA","101":"b:uJ7b/Q32187/+XM0z+///zsKAAAA","125":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","142":[69,117,121]},"packages/@n8n/design-system/src/components/N8nText/Text.vue":{"18":"b:+v/f/f////////v///////8PAAAA","26":"b:+v/f/f////////v///////8PAAAA","46":"b:+v/f/f////////v///////8PAAAA","48":"b:+v/f/f////////v///////8PAAAA","52":"b:+v/f/f////////v//////n8PAAAA"},"packages/@n8n/design-system/src/components/N8nTooltip/Tooltip.vue":{"21":"b:+v///f////////v///////8PAAAA","37":"b:+v///f////////v///////8PAAAA","45":"b:+v///f////////v///////8PAAAA","46":"b:+v///f////////v///////8PAAAA","48":"b:+v///f////////v///////8PAAAA","57":"b:+v///f////////v///////8PAAAA","62":"b:+v///f////////v///////8PAAAA","63":"b:+v///f////////v///////8PAAAA","73":"b:+v///f////////v///////8PAAAA","75":"b:cNsb4S++//9x+Quk/////+sDAAAA","77":"b:+v///f////////v///////8PAAAA","88":"b:+v///f////////v//////n8PAAAA","98":"b:+v///f////////v///////8PAAAA","101":"b:+v///f////////v///////8PAAAA","109":"b:AMATAAIAAAIBIAAAgEgABAAAAAAA"},"packages/@n8n/design-system/src/components/TableBase/TableBase.vue":{"4":[85]},"packages/@n8n/design-system/src/composables/useAutosizeTextarea.ts":{"41":"b:+v///f////////v///////8PAAAA","57":"b:+v///f////////v///////8PAAAA","70":"b:+v///f////////v///////8PAAAA","116":"b:+v///f////////v///////8PAAAA","127":"b:+v///f////////v///////8PAAAA","136":"b:+v///f////////v///////8PAAAA","144":"b:+P//+a+3//////s1//////8PAAAA","154":"b:+v///f////////v///////8PAAAA","160":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/composables/useCharacterLimit.ts":{"15":"b:+v///f////////v///////8PAAAA","19":"b:+v///f////////v///////8PAAAA","23":[9,10,12,13,18],"25":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/composables/useI18n.ts":{"4":"b:+v///f////////v///////8PAAAA","6":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/composables/useTooltipAppendTo.ts":{"7":"b:cP8f4A84/v/n/wOg//////8PAAAA","11":"b:+v///f////////v///////8PAAAA","14":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/directives/n8n-html.ts":{"19":"b:MP7f4C37187x/esxz+3//ysOAAAA","31":"b:MP7f4C37187x/esxz+3//ysOAAAA"},"packages/@n8n/design-system/src/directives/n8n-truncate.ts":{"19":"b:KACAgADwAQA0AGAQAAIAQBgKAAAA"},"packages/@n8n/design-system/src/locale/format.ts":{"8":"b:+v////////////////////8PAAAA","12":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/locale/index.ts":{"16":"b:+v///f////////v///////8PAAAA","36":"b:+v////////////////////8PAAAA","38":"b:+v////////////////////8PAAAA"},"packages/@n8n/design-system/src/plugin.ts":{"8":"b:+v////////////////////8PAAAA"},"packages/@n8n/design-system/src/utils/cn.ts":{"4":"b:+v///f////////v///////8PAAAA"},"packages/@n8n/design-system/src/utils/typeguards.ts":{"1":"b:+r7b/W33187/+fM3z+///38OAAAA"},"packages/@n8n/design-system/src/utils/uid.ts":{"6":"b:+v////////////////////8PAAAA"},"packages/@n8n/design-system/src/v2/components/Select/Select.vue":{"45":"b:+v///f////////v///////8PAAAA","63":"b:+uP//f////////v///////8PAAAA","69":"b:+v///f////////v///////8PAAAA","84":"b:+v///f////////v///////8PAAAA","91":"b:+v///f////////v///////8PAAAA","99":"b:+v///f////////v///////8PAAAA","106":[42,3],"108":"b:+uP//f////////v///////8PAAAA","110":"b:+uP//f////////v///////8PAAAA","126":"b:+v///f////////v///////8PAAAA","137":"b:+v///f////////v//////n8PAAAA","144":"b:+v///f////////v///////8PAAAA","147":"b:+v///f////////v///////8PAAAA","158":"b:+uP//f////////v///////8PAAAA","166":"b:+uP//f////////v///////8PAAAA","167":"b:+uP//f////////v//////n8PAAAA","169":[42,3],"181":"b:+uP//f////////v///////8PAAAA","182":"b:+uP//f////////v///////8PAAAA","185":"b:+uP//f////////v///////8PAAAA","188":"b:+uP//f////////v///////8PAAAA"},"packages/@n8n/design-system/src/v2/components/Select/SelectItem.vue":{"10":"b:+uP//f////////v///////8PAAAA","13":"b:+uP//f////////v///////8PAAAA","17":"b:+uP//f////////v///////8PAAAA","21":"b:+uP//f////////v///////8PAAAA","25":"b:+uP//f////////v///////8PAAAA","32":[42],"33":"b:+uP//f////////v///////8PAAAA","35":"b:+uP//f////////v///////8PAAAA","39":"b:+uP//f////////v///////8PAAAA","46":"b:+uP//f////////v///////8PAAAA"},"packages/@n8n/design-system/src/v2/utils/index.ts":{"6":"b:+uP//f////////v///////8PAAAA","12":"b:+uP//f////////v///////8PAAAA"},"packages/@n8n/i18n/src/index.ts":{"36":"b:+v////////////////////8PAAAA","48":"b:cP9b4A8y/v/h+YOhz/3//+sCAAAA","63":"b:+v////////////////////8PAAAA","93":"b:+v////////////////////8PAAAA","101":"b:cP9b4C9z/v/h+cOxz/3//+sGAAAA","105":"b:AMADAAAAAAAAIACABFwAAMAAAAAA","138":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","145":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","153":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","170":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","180":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","190":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","203":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","216":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","229":"b:MP9b4C9z1v/h+cOxz/3//+sGAAAA","238":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","250":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","262":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","277":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","295":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","317":"b:MJ5b4A0y1s7h+QMgz+3//ysCAAAA","340":[113,117,118,121],"373":[20,57],"380":"b:ANcbAA4gAP/BaAKAh/xilsAAAAAA","389":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","407":"b:+v////////////////////8PAAAA"},"packages/@n8n/permissions/src/scope-information.ts":{"4":"b:+v////////////////////8PAAAA","5":"b:+v////////////////////8PAAAA","6":"b:+v////////////////////8PAAAA","14":"b:+v////////////////////8PAAAA","15":"b:+v////////////////////8PAAAA","16":"b:+v////////////////////8PAAAA"},"packages/@n8n/permissions/src/utilities/get-resource-permissions.ee.ts":{"14":"b:+v+f//////////+///////8PAAAA","15":"b:+v+f//////////+///////8PAAAA","18":"b:+v+f//////////8///////8PAAAA"},"packages/@n8n/stores/src/metaTagConfig.ts":{"1":"b:+v////////////////////8PAAAA","8":"b:+v////////////////////8PAAAA","34":"b:+v////////////////////8PAAAA"},"packages/@n8n/stores/src/useAgentRequestStore.ts":{"18":"b:+v////////////////////8PAAAA","64":[8,17,75,77,96,107,111,112,114],"78":"b:AAcDAAQAAESBKAAAgchvFgAAAAAA"},"packages/@n8n/stores/src/useRootStore.ts":{"38":"b:+v////////////////////8PAAAA","69":"b:+v////////////////////8PAAAA","71":"b:AABQIAEQBAIBAAAAAIggDAACAAAA","73":"b:AABQIAEQBAIBAAAAAIggDAACAAAA","75":[110],"79":"b:AABQIAEQBAIBAAAAAIggDAACAAAA","81":"b:AMBTIAEQBAIBIACAAMggDAACAAAA","89":"b:AABQIAEQBAIBAAAAAIggDAACAAAA","91":"b:AABQIAEQBAIBAAAAAIggDAACAAAA","93":"b:+v////////////////////8PAAAA","95":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","97":"b:+v////////////////////8PAAAA","99":[9,10,15,16,106,110,117],"103":"b:+v+f/f////////s///////8PAAAA","105":"b:+v///f////////v///////8PAAAA","107":[11,44,46,123,138],"111":"b:+v////////////////////8PAAAA","113":[93],"115":[93],"117":[93],"119":"b:+v////////////////////8PAAAA","130":"b:+v////////////////////8PAAAA","135":"b:+v////////////////////8PAAAA","140":"b:+v////////////////////8PAAAA","144":"b:+v////////////////////8PAAAA","148":"b:+v////////////////////8PAAAA","152":"b:+v////////////////////8PAAAA","156":"b:+v////////////////////8PAAAA","160":"b:+v////////////////////8PAAAA","164":"b:+v////////////////////8PAAAA","168":"b:+v////////////////////8PAAAA","172":"b:+v////////////////////8PAAAA","177":"b:+v////////////////////8PAAAA","181":"b:+v////////////////////8PAAAA","185":"b:+v////////////////////8PAAAA","189":"b:+v////////////////////8PAAAA","193":"b:+v////////////////////8PAAAA","201":"b:+v////////////////////8PAAAA","205":"b:+v////////////////////8PAAAA","209":"b:+v////////////////////8PAAAA","213":[110,134,135]},"packages/@n8n/tournament/src/index.ts":{"16":"b:+v/////////////////////vECQA","17":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA","25":"b:+v/////////////////////vECQA","29":"b:MP9T4HcwVp7h/0KgX+///6vnECQA","33":"b:MP9T4HcwVp7h/0KgX+///6vnECQA"},"packages/@n8n/utils/src/event-bus.ts":{"43":"b:+v////////////////////8PAAAA","50":"b:+v////////////////////8PAAAA","60":[90,137],"61":[90,137],"68":"b:+P//8G/7/////+u1//////8PAAAA","75":"b:8P9/8G95/v///+v3//////8PAAAA","78":"b:8P9/8A95/v///8v3//////8PAAAA"},"packages/@n8n/utils/src/sort/sortByProperty.ts":{"1":"b:+P+f/Q/8/////3M0//////8PAAAA","6":"b:eCAAgACQKQR+yAMQpaILb8sKAAAA"},"packages/@n8n/utils/src/string/truncate.ts":{"1":"b:KACAgPD2AQA0CGAQAEJyQhgKAAAA","11":"b:ACAAAPAGAIAAAAAAQIgABAAAAAAA"},"packages/frontend/editor-ui/src/Interface.ts":{"391":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/App.vue":{"32":"b:+v////////////////////8PAAAA","52":"b:+v////////////////////8PAAAA","61":"b:AI4LAAEwAAIhQAAAhgX/HwIAAAAA","63":"b:+v////////////////////8PAAAA","69":"b:+v////////////////////8PAAAA","75":"b:+v///f////////v///////8PAAAA","76":"b:+v///f////////v///////8PAAAA","83":"b:+v////////////////////8PAAAA","95":"b:+v///f////////v///////8PAAAA","102":"b:+v////////////////////8PAAAA","107":"b:+v////////////////////8PAAAA","115":"b:+v////////////////////8PAAAA","118":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/api/favorites.ts":{"16":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/components/BottomMenu.vue":{"23":"b:+P+f/f/+/////3M0//////8PAAAA","33":[24,102],"36":[24,102],"78":[24,69,90,102],"82":[69,90],"84":"b:+P+f/f/+/////3M0//////8PAAAA","104":[24,102],"106":[24,102],"118":[24,102],"129":"b:+P+f/Q/8/////3M0//////8PAAAA","134":[24,102],"146":[69,90],"148":[69,90],"168":"b:+P+f/f/+/////3M0//////8PAAAA","173":[69,90]},"packages/frontend/editor-ui/src/app/components/DynamicModalLoader.vue":{"9":"b:+v////////////////////8PAAAA","17":"b:+v+f/f////////s///////8PAAAA","23":"b:+v////////////////////8PAAAA","29":"b:+v+f/f////////s///////8PAAAA","44":"b:+v////////////////////8PAAAA","46":"b:+v+f/f////////s///////8PAAAA","54":"b:+v////////////////////8PAAAA","58":"b:+v+f/f////////s//////n8PAAAA","60":[38,39,40,41,47,48]},"packages/frontend/editor-ui/src/app/components/KeyboardShortcutTooltip.vue":{"21":"b:+P///f/+/////3P0//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/MainSidebar.vue":{"32":"b:+P+f/Q/8/////3M0//////8PAAAA","79":"b:+P+f/Q/8/////3M0//////8PAAAA","82":"b:+P8f/A/8/////3M0//////8PAAAA","87":"b:+P+f/Q/8/////3M0//////8PAAAA","89":"b:+P+f/Q/8/////3M0//////8PAAAA","212":"b:+P+f/Q/8/////3M0//////8PAAAA","213":"b:+P+f/Q/8/////3M0//////8PAAAA","216":"b:+P+f/Q/8/////3M0//////8PAAAA","228":[24,43,48,68,69,90,131],"229":[24,43,48,68,69,90,131],"234":"b:+P+f/Q/8/////3M0//////8PAAAA","238":"b:+P+f/Q/8/////3M0//////8PAAAA","243":"b:+P+f/Q/8/////3M0//////8PAAAA","254":"b:MAAAAAAAAAAkAAAEAAIAQBgOAAAA","263":[102],"270":[137],"273":[137],"285":[24,69,90,102],"328":[69,90],"336":"b:+P+f/Q/8/////3M0//////8PAAAA","369":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/MainSidebarHeader.vue":{"37":"b:eP+f4Q/8////+2M0//////8PAAAA","41":[24,43,48,68,69,90,131],"45":[137],"69":"b:AAAACfAOAQAwAAAEAAAAAAgAAAAA","114":"b:+P+f/Q/8/////3M0//////8PAAAA","123":"b:+P+f/Q/8/////3M0//////8PAAAA","132":"b:+P+f/Q/8/////3M0//////8PAAAA","137":[84],"144":[27,45,69,7,131],"168":"b:+P+f/f/+/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/MainSidebarSourceControl.vue":{"27":[84],"37":[84],"41":"b:+P+f/Q/8/////3M0//////8PAAAA","47":[84],"53":[84],"62":[84],"84":"b:+P+f/Q/8/////3M0//////8PAAAA","111":[84],"144":[84],"170":[84]},"packages/frontend/editor-ui/src/app/components/Modal.vue":{"59":"b:8IoBgODzgYA6FOg1QAAACTUHAAAA","81":"b:8IoBgODzgYA4FOg1QAAACTUHAAAA","90":"b:4IoBgODzAYA4EGg1QAAACTUHAAAA","97":[31,44,47,86,92,5],"102":"b:4IoBgODzAYA4FOg1QAAACTUHAAAA","109":[31,44,47,86,92,5,102],"113":"b:4IgBgGBzAIAqEGg1QAAACTUHAAAA","125":"b:IAAAgGAzAAAgAGARAAAACBAFAAAA","129":"b:8IoBgODzgYA6FOg1QAAACTUHAAAA","162":"b:8IoBgODzgYA6FOg1QAAACTUHAAAA","164":"b:IIoBgODzgYAwFMAxAAAACTAGAAAA","178":[68,69,102]},"packages/frontend/editor-ui/src/app/components/ModalDrawer.vue":{"7":"b:+v////////////////////8PAAAA","40":"b:KBYAoASQACBMgmOQd0D0RRkPAAAA","61":"b:+v////////////////////8PAAAA","75":"b:+v////////////////////8PAAAA","89":"b:+v////////////////////8PAAAA","91":[23]},"packages/frontend/editor-ui/src/app/components/ModalRoot.vue":{"20":"b:+v////////////////////8PAAAA","21":"b:+v///////////////////n8PAAAA"},"packages/frontend/editor-ui/src/app/components/Modals.vue":{"144":"b:+v////////////////////8PAAAA","146":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","166":[102],"174":[11,31,44,45,46,69,86,92,5],"178":[65],"184":[102,136],"192":[130],"200":"b:+v////////////////////8PAAAA","204":"b:+v////////////////////8PAAAA","210":[93],"228":[7],"234":[63,93,132,133,137],"238":[90],"242":[90],"246":[4,6,137],"252":[83],"260":[83],"271":[87,88],"325":[86],"331":[86],"357":[137],"386":[74,138],"395":[68],"404":[9],"416":[67],"422":[67,68,69],"446":[128],"470":[85],"488":[63,93,132,133,137]},"packages/frontend/editor-ui/src/app/components/NpsSurvey.vue":{"14":"b:+v////////////////////8PAAAA","40":"b:+v////////////////////8PAAAA","117":"b:+v////////////////////8PAAAA","127":"b:+v////////////////////8PAAAA","144":"b:+v////////////////////8PAAAA","146":"b:+v///////////////////n8PAAAA"},"packages/frontend/editor-ui/src/app/components/UpdatesPanel.vue":{"11":"b:+v////////////////////8PAAAA","15":"b:+v///////////////////n8PAAAA","24":"b:+v////////////////////8PAAAA","29":[23],"61":[23],"70":[23]},"packages/frontend/editor-ui/src/app/components/app/AppBanners.vue":{"7":"b:+v////////////////////8PAAAA","9":"b:+v////////////////////8PAAAA","10":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/components/app/AppChatPanel.vue":{"8":"b:+v///f////////v///////8PAAAA","16":"b:+v///f////////v///////8PAAAA","18":"b:+v///f////////v///////8PAAAA","26":"b:+v///f////////v///////8PAAAA","41":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/app/components/app/AppCommandBar.vue":{"11":"b:+v////////////////////8PAAAA","24":"b:+v+f//////////8///////8PAAAA","26":"b:+v////////////////////8PAAAA","28":"b:+v+f//////////8///////8PAAAA","34":[137],"37":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/components/app/AppLayout.vue":{"5":"b:+v////////////////////8PAAAA","6":"b:uAiA3QL0AQA+AHAUAAIAQBgOAAAA","9":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA","12":"b:cP8f4A84/v/n/wMg//////8PAAAA","14":[26,28,69,90],"15":[21,22,94,95,110,134,135],"16":[36,37,38,39,41,42],"30":"b:+v///f////////v///////8PAAAA","35":"b:+v///f////////v///////8PAAAA","37":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/components/app/AppModals.vue":{"7":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/components/forms/ResourceFiltersDropdown.vue":{"51":[137],"63":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","66":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","89":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","91":[137],"115":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","119":[137],"126":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","130":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","142":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","148":[137],"164":[137],"182":[137]},"packages/frontend/editor-ui/src/app/components/layouts/PageViewLayoutList.vue":{"10":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/components/layouts/ResourcesListLayout.vue":{"150":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","151":[137],"154":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","165":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","169":"b:KAiAgADwAQA+AGAQAAIAQBgKAAAA","173":[31,44,45,46,68,69,85,86,92,5],"198":[44,68,85,5],"242":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","243":[137],"252":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","259":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","260":[47,65,66,67,68,69,131,137],"266":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","273":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","274":[66,85,137],"278":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","279":[11,31,45,92,5],"285":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","292":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","299":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","311":"b:OACAGQCAAQA0ABAEAAIAQBgCAAAA","316":[31,44,66,67,85,86,92,5,137],"330":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","344":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","349":[137],"354":"b:OAiAiQDwAQA+AHAUAAIAQAgKAAAA","358":[48],"366":[44],"377":"b:IAgAgACgAQA+AAAQAAAAAAgAAAAA","387":"b:IAgAgACgAQA+AAAQAAAAAAgCAAAA","395":[45,47,68,69,92,5,131],"402":"b:IAgAgACgAQA+AAAQAAAAAAgCAAAA","417":[85],"421":[137],"425":"b:IAgAgACgAQA+AAAQAAAAAAgAAAAA","426":"b:IAgAgACgAQA+AAAQAAAAAAgAAAAA","439":[31,44,45,46,68,69,86,92,5],"446":[85],"453":[44],"459":[137],"463":[66,85,137],"477":[44,48],"526":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","576":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","592":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","624":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","639":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","649":[44],"650":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","652":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","670":[137],"688":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","694":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA","721":[31,44,45,46,68,69,86,92,5],"732":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","764":[85],"768":[85],"779":[85,137]},"packages/frontend/editor-ui/src/app/composables/useAiGateway.ts":{"13":"b:+v+f/f////////s///////8PAAAA","17":"b:+v+f/Q////////s///////8PAAAA","30":"b:cP8f4A86/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useBackendStatus.ts":{"10":"b:+v////////////////////8PAAAA","19":"b:+v////////////////////8PAAAA","49":"b:+v////////////////////8PAAAA","67":"b:IIECACAGAQIjAAAABAYAAMIAAAAA","72":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useBeforeUnload.ts":{"15":"b:+v////////////////////8PAAAA","22":"b:AAAAQAAAAAAkAAAAFiAAQAkCAAAA","27":"b:AAAAQAAAAAAkAAAAFiAAQAkCAAAA","32":"b:AAAAQAAAAAAgAAAAFiAAQAkCAAAA","43":"b:+v////////////////////8PAAAA","47":"b:cP9/4A84/v/l/wOg//////8PAAAA","51":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA"},"packages/frontend/editor-ui/src/app/composables/useBrowserNotifications.ts":{"57":"b:+v///f////////v///////8PAAAA","66":[13,18],"80":[13,18]},"packages/frontend/editor-ui/src/app/composables/useBugReporting.ts":{"30":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useClipboard.ts":{"24":[90,107],"44":[98,102,104,131,132],"55":[98,102,104,131],"73":"b:8P9/4P/+///n/zOk//////8PAAAA","86":"b:MJ4bYKgwV0ol+SEkz///f/kOAAAA"},"packages/frontend/editor-ui/src/app/composables/useDebounce.ts":{"19":"b:+v////////////////////8PAAAA","30":"b:cL5b4C3w1+7n+cMxx/3//+sOAAAA","43":"b:cIoZoAkw/04l0CAgx73vfaoKAAAA"},"packages/frontend/editor-ui/src/app/composables/useDebugInfo.ts":{"72":"b:+v////////////////////8PAAAA","78":"b:+P+f/Q/8/////3M0//////8PAAAA","115":"b:+P+f/Q/8/////3M0//////8PAAAA","126":"b:+P+f/Q/8/////3M0//////8PAAAA","136":"b:+P+f/Q/8/////3M0//////8PAAAA","147":"b:+P+f/Q/8/////3M0//////8PAAAA","154":"b:+P+f/Q/8/////3M0//////8PAAAA","158":[102],"166":[102],"169":[102],"174":[102],"184":"b:+P+f/Q/8/////3M0//////8PAAAA","201":"b:+P+f/Q/8/////3M0//////8PAAAA","219":[102],"233":"b:+P+f/Q/8/////3M0//////8PAAAA","237":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useDocumentVisibility.ts":{"12":"b:+v///f////////v///////8PAAAA","17":"b:KgCAQDAEAQA+AFAFFiAAQBkKAAAA","28":"b:+v///f////////v///////8PAAAA","36":"b:+v///f////////v///////8PAAAA","40":[9,10,11,12,124,128,129]},"packages/frontend/editor-ui/src/app/composables/useEditorContext.ts":{"26":"b:AD4EIAgAAAAAAAEAxwAgAAAAAAAA","29":"b:cP8f4A84/v/n/wMg//////8PAAAA","40":"b:+v////////////////////8PAAAA","41":"b:cP8f4A84/v/n/wMg//////8PAAAA","47":"b:cP8f4A84/v/n/wMg//////8PAAAA","48":"b:cP8fwA8wAP/naQKgn///1/8OAAAA","51":"b:cP8fwA8wAP/naQKgn///1/8OAAAA"},"packages/frontend/editor-ui/src/app/composables/useErrorHandler.ts":{"26":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useExecutingNode.ts":{"15":"b:+v////////////////////8PgAAA","19":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","24":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","33":"b:cP9/4A84/v/n/wPg//////8PgAAA","38":"b:cP8b4A8w/v/h/wPg//////sPgAAA"},"packages/frontend/editor-ui/src/app/composables/useExposeCssVar.ts":{"7":"b:+v////////////////////8PAAAA","11":"b:+v////////////////////8PAAAA","12":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useExternalHooks.ts":{"10":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useFloatingUiOffsets.ts":{"9":"b:+v////////////////////8PAAAA","15":"b:MJ5b4A0w1s7h+YMhx+3//ysCAAAA","16":"b:+v////////////////////8PAAAA","19":"b:+v////////////////////8PAAAA","20":"b:+v////////////////////8PAAAA","29":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useGlobalEntityCreation.ts":{"22":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","25":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","65":"b:+P+f/Q/8/////3M0//////8PAAAA","68":"b:+P+f/Q/8/////3M0//////8PAAAA","72":"b:+P+f/Q/8/////3M0//////8PAAAA","76":"b:+P+f/Q/8/////3M0//////8PAAAA","83":"b:+P+f/Q/8/////3M0//////8PAAAA","85":"b:+P+f/Q/8/////3M0//////8PAAAA","92":"b:+P+f/Q/8/////3M0//////8PAAAA","102":"b:+P+f/Q/8/////3M0//////8PAAAA","226":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","260":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","320":[23,48,3,69,5,131,137],"343":[23,48,3,69,5,126,131,137],"354":[27,45,69,7,131],"379":"b:+P+f/Q/8/////3M0//////8PAAAA","380":"b:+P+f/Q/8/////3M0//////8PAAAA","381":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useHistoryHelper.ts":{"17":"b:+v////////////////////8PAAAA","26":[102,128],"54":[102],"82":[102,128],"88":[102,128],"93":[102],"104":"b:CLYAIASQRCBM0iOAd2D0RfkPAAAA","111":"b:KLYAoASQRCBM0mOQd2D0RfkPAAAA","141":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useKeybindings.ts":{"60":"b:+P///f/+/////3P0//////8PAAAA","81":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","83":"b:KLYAoASQRCBM0mOQd2D0RfkPAAAA","87":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","89":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","91":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","96":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","98":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","99":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","103":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","109":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","127":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","145":"b:AKAAIACARAAA0AAAdyCAQPkOAAAA","199":"b:KLYAoASQRCBM0mOQd2D0RfkPAAAA"},"packages/frontend/editor-ui/src/app/composables/useMessage.ts":{"14":[88,106,123,126,138],"48":"b:AAAAAICQAQAAADAhAAwASBAGAAAA","63":"b:AAAAAICQAQAAADAhAAwASBAGAAAA","110":[66,67,98]},"packages/frontend/editor-ui/src/app/composables/useN8nLocalStorage.ts":{"26":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","29":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","33":[48],"58":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeDirtiness.ts":{"27":[78,97,98,110,128,134,135],"35":[78,97,98,110,128,134,135],"58":[110,128],"66":[78,97,98,110,128,134,135],"67":[78,97,98,110,128,134,135],"77":[134,135],"89":"b:AAQAAAAAAACBQAAAgMQAFQEAAAAA","138":"b:+v////////////////////8PAAAA","142":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA","146":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA","150":[78,134,135],"154":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA","156":"b:ANcbAAwgAL/BaAKAhvx/l8EAAAAA","157":[8,15,16,17,110],"160":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA","177":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA","213":[78],"216":[78],"256":"b:cP974A8w/v/h/wPg3/////sPAAAA","260":"b:AAQAAAAAAACBQAAAgMQAFQEAAAAA","269":[78],"306":"b:ANcbAAwgAL/BaAKAhvx/l8EAAAAA","307":"b:ANcbAAwgAL/BaAKAhvx/l8EAAAAA"},"packages/frontend/editor-ui/src/app/composables/useResourcesListI18n.ts":{"8":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","15":"b:uACA3QDwAQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/composables/useSelectionValidation.ts":{"25":"b:+v////////////////////8PAAAA","37":[100],"54":[100,128],"61":[100],"68":[100],"78":[100,128],"84":[100,128],"86":[100,128],"93":[100,128],"95":[100,128]},"packages/frontend/editor-ui/src/app/composables/useSettingsItems.ts":{"23":"b:+v+f/f////////s///////8PAAAA","192":"b:+v+f/f////////s///////8PAAAA","195":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useSidebarLayout.ts":{"9":"b:+P+f/f/+/////3M0//////8PAAAA","12":[24,43,48,68,69,90,131]},"packages/frontend/editor-ui/src/app/composables/useStorage.ts":{"4":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useStyles.ts":{"26":"b:+v////////////////////8PAAAA","27":"b:+v////////////////////8PAAAA","34":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useTelemetry.ts":{"4":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useTelemetryInitializer.ts":{"13":"b:+v////////////////////8PAAAA","27":"b:+v////////////////////8PAAAA","32":"b:+v////////////////////8PAAAA","36":"b:+v////////////////////8PAAAA","40":"b:+v////////////////////8PAAAA","59":"b:+v////////////////////8PAAAA","69":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useToast.ts":{"23":"b:6NeLgK53Af//eHqWl/x/390GAAAA","93":"b:gACAAAAAAAA+AAAGEAQAQBACAAAA","107":[23],"149":[41,42,44,48,89,122,138],"186":"b:AIYBAAA2AQAAAAAChEwgBMgEAAAA","192":"b:MNcbEA4gAP/laAKkh/9/19kOAAAA","193":[9,10,106,134,135,138],"203":"b:cP9/4A84/v/n/wOg//////8PAAAA","205":"b:cP9/4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useUniqueNodeName.ts":{"4":"b:+v////////////////////8PAAAA","11":"b:AIAAAAAAAAAAAAAA5gEANAgAAAAA","12":"b:AIAAAAAAAAAAAAAA5gEANAgAAAAA","27":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","34":"b:AIAAAAAAAAAAAAAA5gEANAgAAAAA"},"packages/frontend/editor-ui/src/app/composables/useUserHelpers.ts":{"5":"b:+v+f/f////////s///////8PAAAA","6":"b:+v+f/f////////s///////8PAAAA","12":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowDiffRouting.ts":{"18":"b:+v////////////////////8PAAAA","27":"b:+v////////////////////8PAAAA","50":"b:+v////////////////////8PAAAA","73":"b:+v////////////////////8PAAAA","111":"b:+v////////////////////8PAAAA","133":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowHelpers.ts":{"71":"b:AIJRIAESBophOUIAA8mvHwMCgAAA","172":"b:AAIAAAAAAIBACAIAAEgHFwEAgAAA","275":"b:AAAAIAAAAAAgAAAAAAAgGQMAgAAA","285":"b:AAAAIAAAAAAgAAAAAAAgGQMAgAAA","310":"b:AJYZAA4gALtBwgMARvxwx8kJgAAA","316":"b:AIJRIAEQBophOQIAA8mvHwMCgAAA","347":"b:AAIAAAAAAIAACAIAAEkPFwEAgAAA","363":[9,151,62,64,96,107,122],"389":"b:AIJRIAEQBsphOQIAA8mvHwMCgAAA","478":"b:+v////////////////////8PgAAA","491":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","517":"b:cJ4JoA0w/ixg0gMAx03iXaoAgAAA","531":"b:AABRIAEQBAIBAAAAAIggDAACgAAA","552":"b:AABQIAEQBAIBAAAAAIggDAACgAAA","593":[9,10,151],"596":[9,10,151],"627":"b:AIJRIAESBoJBOUIAAcmvHwACgAAA","657":[151],"704":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","735":[151,65,96,98,102,122,131,138],"739":[151,96,98,102,122,131,138],"744":[151,138],"746":[151,138],"760":[151,65],"768":[151],"778":"b:cMdzQA4gALvjaQKAnvrzw9kOgAAA","816":"b:cMdzQA4gALvjaQCAnvrzw9kOgAAA","847":[151],"857":[151],"870":[151],"881":[151]},"packages/frontend/editor-ui/src/app/composables/useWorkflowId.ts":{"6":"b:+v////////////////////8PAAAA","12":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowSaving.ts":{"44":"b:+v////////////////////8PAAAA","71":[69,105,126,132],"75":[126],"147":"b:QL4dwA0wAGblYAIgl83vV+8OAAAA","154":"b:QL4dwA0wAGblYAIgl83vV+8OAAAA","184":"b:QL4dwA0wAGblYAIgl83vV+8OAAAA","359":"b:QL4dgA0wAGZnQAIgh03tVa4OAAAA","555":"b:QL4RwA0wACJlQAIgl03nQ+8GAAAA","569":"b:QL4RwA0wACJlQAIgl03nQ+8GAAAA","588":"b:cL4Z4A0w/m7l9gMg9+3vf+8PAAAA","614":[137],"622":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowUpdate.ts":{"44":"b:+v///f////////v///////8PAAAA","64":[13],"66":[13],"69":[13],"76":[13],"99":[13],"112":[13],"189":[13],"198":[13],"202":[13],"217":[13],"242":[13],"254":[13],"255":[13],"259":[13],"261":[13],"285":[13],"319":[13],"334":[13],"349":[13],"370":[13]},"packages/frontend/editor-ui/src/app/constants/actions.ts":{"1":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/constants/durations.ts":{"33":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/constants/experiments.ts":{"6":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/constants/navigation.ts":{"1":"b:+v////////////////////8PAAAA","79":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/constants/nodeTypes.ts":{"136":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/constants/workflows.ts":{"16":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/dev/render-tracker.ts":{"38":"b:+v////////////////////8PAAAA","67":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/init.ts":{"45":"b:+v////////////////////8PAAAA","99":"b:+v///f////////v///////8PAAAA","163":[43],"185":"b:+v+f/b////////s///////8PAAAA","230":"b:+v////////////////////8PAAAA","243":"b:+v+f//////////8///////8PAAAA","279":[69,90]},"packages/frontend/editor-ui/src/app/layouts/BaseLayout.vue":{"10":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/layouts/DefaultLayout.vue":{"8":"b:uAiA3QD0AQA+AHAUAAIAQBgOAAAA","10":"b:uAiA3QD0AQA+AHAUAAIAQBgOAAAA"},"packages/frontend/editor-ui/src/app/models/history.ts":{"8":"b:+v////////////////////8PAAAA","35":"b:cL4ZoA0w/m5h8gMg923vfesDAAAA","44":[128],"52":"b:cL4doA0w/m5h8gMg923vfesDAAAA","57":"b:AJYZAAwgAGZBYAIAh0xtFcEAAAAA","58":"b:AJYZAAwgAGZBYAIAh0xtFcEAAAAA","69":[13,77,78,79,96,97,100,102,131],"81":[102],"85":[13,78,79,96],"96":[102],"97":[102],"110":"b:cL4ZoA0w/m5h0gMg523vfasDAAAA","115":[102,128],"119":"b:ML4ZoA0w1i5h0gMgx2XvfSsBAAAA","123":[102,128],"124":[102,128],"134":[73,96,97,100,102,110,128],"139":[102,128],"143":[97,102,128],"147":[102,128],"148":[102,128],"158":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","163":[102,128],"167":"b:ACYBAAAAECBAwgIAU0BgBQEBAAAA","177":[102,128],"178":[102,128],"188":"b:ACAAAAAAAAAAwgAAU0AAAAEAAAAA","193":[102,128],"197":"b:ACAAAAAAAAAAwgAAU0AAAAEAAAAA","207":[102,128],"208":[102,128],"209":[102,128],"224":"b:AIAAAAAAAAAAAAAgRUAAAOAAAAAA","231":[102],"235":[98,102],"241":[102],"242":[102],"257":[98],"287":[79,128],"296":[128],"305":[79],"314":[128],"315":[128]},"packages/frontend/editor-ui/src/app/moduleInitializer/modalRegistry.ts":{"6":"b:+v////////////////////8PAAAA","10":"b:+v+f/f////////s///////8PAAAA","11":"b:+v+f/f////////s///////8PAAAA","14":"b:+v+f/f////////s///////8PAAAA","42":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/moduleInitializer/moduleInitializer.ts":{"31":"b:+v+f/f////////s///////8PAAAA","32":"b:+v+f/f////////s///////8PAAAA","33":"b:+v+f/f////////s///////8PAAAA","42":"b:+v+f/f////////s///////8PAAAA","44":"b:+v+f/f////////s///////8PAAAA","62":"b:+v+f/f////////s///////8PAAAA","64":"b:+v+f/f////////s///////8PAAAA","75":[47,48],"101":"b:+v+f/f////////s///////8PAAAA","102":"b:+v+f/f////////s///////8PAAAA","103":"b:+v+f/f////////s///////8PAAAA","114":"b:+v////////////////////8PAAAA","115":"b:+v////////////////////8PAAAA","116":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/moduleInitializer/resourceRegistry.ts":{"25":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/plugins/chartjs.ts":{"15":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/plugins/components.ts":{"10":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/plugins/directives.ts":{"5":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/plugins/sentry.ts":{"26":[82],"29":[82],"53":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/plugins/telemetry/index.ts":{"33":"b:+v///f////////v///////8PAAAA","37":"b:+v////////////////////8PAAAA","72":"b:+v+f/f////////s///////8PAAAA","104":"b:eP8f8f///////+u/7/////8PAAAA","127":"b:+v///f////////v///////8PAAAA","157":[69,90],"169":[103],"199":"b:MJQZoA0wgA6hAAEAx4WvHQMAAAAA","274":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/push-connection/useEventSourceClient.ts":{"13":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/push-connection/useHeartbeat.ts":{"12":"b:+v////////////////////8PAAAA","17":"b:+v////////////////////8PAAAA","21":[39,105]},"packages/frontend/editor-ui/src/app/push-connection/useReconnectTimer.ts":{"14":"b:+v////////////////////8PAAAA","33":[39,105],"40":"b:cP8f4P8+/v/l/wuo//////8PAAAA"},"packages/frontend/editor-ui/src/app/push-connection/useWebSocketClient.ts":{"24":"b:+v////////////////////8PAAAA","35":[8,41,69],"40":"b:cP8f4P8+/v/l/wuo//////8PAAAA","53":"b:cP8fwP82AP/laQKgn///1/8OAAAA","61":"b:cP8f4P8+/v/n/wuo//////8PAAAA","75":"b:cP8f4P8+/v/l/wuo//////8PAAAA","94":"b:cP8fwA8wAP/naQIgn///1/8OAAAA"},"packages/frontend/editor-ui/src/app/router.ts":{"40":"b:cP9/4A84/v/n/wOg//////8PAAAA","41":[15,98,106,107,108,110,134,135],"42":[15,98,106,107,108,110,134],"43":[15,98,106,107,108,110,134,135],"44":[15,98,106,107,108,110,134],"47":[98,106,107,108,110,134,135],"48":[98,106,107,108,110,134],"51":[1,89,90],"52":[1,89,90],"53":[7],"54":[7],"56":[83],"57":[83],"58":[43],"59":[43],"60":[87,88],"61":[87,88],"63":[26,28,69,90],"65":[138],"66":[138],"67":[139],"68":[139],"69":[138],"70":[138],"71":[139],"72":[139],"78":[69,90],"80":[84],"81":[84],"82":[86],"87":[86],"96":[91],"97":[91],"98":[105],"99":[105],"100":[139],"101":[93],"102":[93],"105":[93],"106":[93],"174":"b:CACATUKAAQAwAAAAAAAAQAACAAAA","253":[74,138],"282":[139],"287":[139],"446":"b:cL4doA84/m5l1gMg503vfb4PAAAA","466":[21,22,95,110,134,135],"477":[94],"483":[94],"591":[25],"610":"b:+v+f/f////////s///////8PAAAA","732":[9,10,11,12,13,18],"786":"b:+v+f9b////////s///////8PAAAA","1009":"b:+v+f9b////////s///////8PAAAA","1085":"b:+v////////////////////8PAAAA","1100":"b:+v///f////////v///////8PAAAA","1110":"b:+v////////////////////8PAAAA","1142":[26,28,7],"1174":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/aiGateway.store.ts":{"13":[151],"17":"b:+v/f/f////////s///////8PgAAA","27":[151],"37":[151],"48":[151],"59":[151],"70":[151],"74":[151],"78":[151]},"packages/frontend/editor-ui/src/app/stores/backendConnection.store.ts":{"7":"b:+v////////////////////8PAAAA","10":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/canvas.store.ts":{"6":"b:+v////////////////////8PAAAA","13":"b:AEECIAAAAAABIAAAP0BgAAEAAAAA","20":"b:cP8f4A84/v/l/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/cloudPlan.store.ts":{"25":"b:+v////////////////////8PAAAA","34":[69,90],"40":[24,27,43,69,84,90,131],"42":[43],"45":[43],"48":[43],"58":[43],"65":[43],"71":[43],"73":[43],"83":[43],"85":[43],"87":"b:+P+f/Q/8/////3M0//////8PAAAA","89":[43],"91":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","111":[43],"122":[1,43,89,90],"127":[43],"142":[43],"158":[43],"183":[43],"204":[43],"217":[43],"228":[43],"236":[43]},"packages/frontend/editor-ui/src/app/stores/favorites.store.ts":{"9":"b:+v////////////////////8PAAAA","32":"b:+v+f/f////////s///////8PAAAA","42":"b:eP+f4A/8/////0Mg//////8PAAAA","48":[23,47,48,67,3,69,5,131,137],"82":[132,137],"88":[69,90]},"packages/frontend/editor-ui/src/app/stores/focusPanel.store.ts":{"47":"b:+v////////////////////8PAAAA","54":"b:+v////////////////////8PAAAA","64":"b:+v////////////////////8PAAAA","72":"b:cP9/4A84/v/l/wOg//////8PAAAA","73":[80,99],"74":"b:+v////////////////////8PAAAA","77":"b:+v////////////////////8PAAAA","99":"b:+v////////////////////8PAAAA","105":[65,80,99],"140":"b:QL4dgA0wAGZnQAIgh03tVa4OAAAA","176":[80,99],"194":[80,99],"205":"b:+v////////////////////8PAAAA","206":[80,99],"218":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/history.store.ts":{"10":"b:+v////////////////////8PAAAA","17":[102,128],"24":"b:cL4ZoA0w/m5h8gMg923vfesDAAAA","28":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","41":[102],"48":"b:cL4ZoA0w/m5h8gMg923vfesDAAAA","53":[102,128],"58":"b:cP9/4A84/v/l+wPg//////8PAAAA","61":"b:cP9/4A84/v/l+wPg//////8PAAAA","64":"b:cP9/4A84/v/l+wPg//////8PAAAA","68":[102],"74":[102,128],"78":"b:cL4doA0w/m5h8gMg923vfesDAAAA","81":"b:cL4doA0w/m5h8gMg923vfesDAAAA"},"packages/frontend/editor-ui/src/app/stores/logs.store.ts":{"19":"b:+v////////////////////8PAAAA","22":"b:cP8f4A84/v/n/wOg//////8PAAAA","50":"b:cP8f4A84/v/l/wOg//////8PAAAA","54":"b:+v////////////////////8PAAAA","58":[14,15,17,69,95],"62":[14,15,17,69,95],"66":[14,15,16,17,77,95,110],"74":[14,15,16,17,77,110],"78":[110],"124":[14,15,16,17,77,95,110],"130":"b:cP8f4A84/v/l/wOg//////8PAAAA","131":[14,15,16,17,77,110],"134":"b:+v////////////////////8PAAAA","135":"b:cP8f4A84/v/l/wOg//////8PAAAA","136":"b:AMADAAAQAgAAMACAAECAAAAAAAAA","137":[14,15,16,17,77,95,110]},"packages/frontend/editor-ui/src/app/stores/nodeTypes.store.ts":{"42":"b:+v////////////////////8PgAAA","57":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","58":"b:cIoZoAkw/k4h0AAgxy3vfCoCgAAA","76":"b:cP8f4A86/v/n/wsg//////8PgAAA","78":"b:cL8f4A84/P9n/wsg97////8PgAAA","79":"b:cL8f4A84/P9n/wsg97////8PgAAA","82":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","84":"b:cIoJoAkQ/E4h0AAgxy3vfaoCgAAA","85":"b:cIoJoAkQ/E4h0AAgxy3vfaoCgAAA","88":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","92":"b:cP9/4A84/v/n/wPg//////8PgAAA","93":"b:cP8f4A84/v/n/wMg//////8PgAAA","94":"b:cP8f4A84/v/n/wMg//////8PgAAA","98":"b:cP8f4A86/v/n/wsg//////8PgAAA","100":"b:cP8f4A86/v/n/wsg//////8PgAAA","108":"b:cP8f4A86/v/n/wsg//////8PgAAA","109":"b:cP8f4A86/v/n/wsg//////8PgAAA","125":"b:cP9/4C87/v/n/8Px//////8PgAAA","126":"b:cP974C8z/v/h/8Px/////nsPgAAA","141":"b:MJ5b4A0w1s7h+QMgz+3//ysCgAAA","142":"b:MJ5b4A0w1s7h+QMgz+3//isCgAAA","147":[151,58],"148":[151,58],"159":"b:cP974A8w/v/h/wPg3/////sPgAAA","160":"b:cP974A8w/v/h/wPg3////nsPgAAA","172":"b:cP974A8w/v/h/wPg3/////sPgAAA","177":"b:cP974A8w/v/h/wPg//////sPgAAA","178":"b:cP974A8w/v/h/wPg/////nsPgAAA","184":"b:ML9b4A0w1s7h+QMgz+3//ysCgAAA","185":"b:ML9b4A0w1s7h+QMgz+3//isCgAAA","188":"b:ML8b4A0w1s7h+QMgz+3//ysAgAAA","200":"b:MJ5b4A0w1s7h8QMgz+3//ysCgAAA","201":"b:MJ5b4A0w1s7h8QMgz+3//isCgAAA","204":"b:MJ4b4A0w1s7h8QMgz+3//ysAgAAA","216":[151],"217":[151],"222":"b:cP8f4A86/v/n/wsg//////8PgAAA","226":"b:cP8f4A86/v/n/wsg//////8PgAAA","229":[151],"230":[151],"236":[15,16,151,41,49,119,120],"237":[15,16,151,41,49,119,120],"241":[15,16,151,41,49,119,120],"262":[15,16,151,41,49,119,120],"278":[151],"279":[151],"283":[151],"302":"b:cP974A8w/v/h/wPg3/////sPgAAA","303":"b:cP974A8w/v/h/wPg3////nsPgAAA","317":"b:MP974A8w1r/h/wPg3////+sNgAAA","328":"b:+v///f////////v///////8PgAAA","336":[151],"337":[151],"343":[151],"352":[151],"364":[151],"375":"b:+v////////////////////8PgAAA","382":"b:+v+f//////////9///////8PgAAA","388":[151],"396":[151,29,117,120],"400":[151,123],"404":[151,123,124],"412":[151,69,128,129],"420":[151],"424":"b:cP9/4A84/v/n/wvg//////8PgAAA","434":"b:cL9/4A84/P9n/wvg97////8PgAAA","441":[151,55,83],"456":"b:cP974A8w/v/h/wOg//////sPgAAA","457":"b:cP974A8w/v/h/wOg/////nsPgAAA","466":"b:+v////////////////////8PgAAA","469":[151],"470":"b:APdbIA8wBv/h+wPAx/3/38sLgAAA"},"packages/frontend/editor-ui/src/app/stores/npsSurvey.store.ts":{"18":"b:+v////////////////////8PAAAA","27":"b:+v+f/f////////s///////8PAAAA","35":"b:oIARIAAABCgEEIghMk2xgOUBAAAA","75":[69,90],"79":"b:QL4RwA0wACJlQAIgl0XnQ68GAAAA"},"packages/frontend/editor-ui/src/app/stores/posthog.store.ts":{"21":"b:+v////////////////////8PAAAA","36":[69,90],"51":[69,90],"59":"b:+v///f////////v///////8PAAAA","63":"b:+v///f////////v///////8PAAAA","70":"b:+v///f////////v///////8PAAAA","162":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/pushConnection.store.ts":{"17":"b:+v////////////////////8PAAAA","35":"b:cP9/4P8+/v/l/wvo//////8PAAAA","38":[39,69,105,126,132],"46":"b:+v////////////////////8PAAAA","48":"b:+v////////////////////8PAAAA","66":"b:cP8fwP82AP/naQKgn///1/8OAAAA","80":"b:cP8fwP82AP/naQKgn///1/8OAAAA","85":"b:+v////////////////////8PAAAA","87":"b:+v////////////////////8PAAAA","93":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","105":"b:cP8f4P8+/v/l/wuo//////8PAAAA","125":"b:cP8f4P8+/v/n/wuo//////8PAAAA","132":"b:cP8f4P8+/v/n/wug//////8PAAAA","148":[39,105,126,132],"160":[39],"173":"b:+v////////////////////8PAAAA","174":"b:cP8f4P8+/v/n/wuo//////8PAAAA","195":[69,105,126,132],"199":"b:cP8f4P8+/v/l/wOo//////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/rbac.store.ts":{"8":"b:+v////////////////////8PAAAA","77":"b:+v+f/f////////s///////8PAAAA","113":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/roles.store.ts":{"19":"b:+v+f/f////////s///////8PAAAA","36":[23,42,48,3,69,86,5,131,137],"37":[23,42,48,3,69,86,5,131,137],"40":[23,42,48,3,69,86,5,131,137],"42":[23,42,48,3,69,86,5,131,137],"43":[23,42,48,3,69,86,5,131,137],"46":[23,42,48,3,69,86,5,131,137],"53":[40,45,92,5],"54":[40,45,92,5],"57":[4,6,137],"58":[4,6,137],"61":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/settings.store.ts":{"22":"b:+v////////////////////8PAAAA","51":"b:+P+f/Q/8/////3M0//////8PAAAA","53":"b:+P+f/Q/8/////3M0//////8PAAAA","55":"b:+P+f/Q/8/////3M0//////8PAAAA","59":"b:+P+f/Q/8/////3M0//////8PAAAA","61":"b:+P+f/Q/8/////3M0//////8PAAAA","63":"b:+P+f/Q/8/////3M0//////8PAAAA","68":"b:+v////////////////////8PAAAA","70":"b:+P+f/Q/8/////3M0//////8PAAAA","72":"b:+P+f/Q/8/////3M0//////8PAAAA","74":"b:+v////////////////////8PAAAA","76":"b:+v////////////////////8PAAAA","78":"b:+v+f/f////////s///////8PAAAA","80":[43],"82":"b:+v////////////////////8PAAAA","84":"b:cP8f4A84/v/l/wMg//////8PAAAA","86":[43],"88":[43],"90":"b:+v////////////////////8PAAAA","94":"b:cI4ZoAkw/k4h0AEgxy3vfSoCAAAA","96":"b:+v///f////////v///////8PAAAA","100":[9,10,11,12,13,18],"104":"b:+v///f////////v///////8PAAAA","106":"b:+P+f/Q/8/////3M0//////8PAAAA","108":"b:+v+f/f////////s///////8PAAAA","110":"b:+v////////////////////8PAAAA","112":"b:+v////////////////////8PAAAA","131":"b:uJ7b/f33187/+XM0z+///zsOAAAA","135":[36,37,38,39,41,42],"141":"b:+v+f/f////////s///////8PAAAA","147":"b:+P///Q+4/////xOk//////8PAAAA","151":"b:+v////////////////////8PAAAA","155":"b:oIARIAAABCgEEIghMk2xgOUBAAAA","163":[1,89,90],"165":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","167":"b:+v+f/f////////s///////8PAAAA","169":"b:+v////////////+///////8PAAAA","173":"b:OJ7b4A02187h+UMgz+3//ysCAAAA","192":[16],"196":[42,3],"200":"b:eP+f4A+4/////wMg//////8PAAAA","204":"b:cP8f4A84/v/n/wMg//////8PAAAA","210":"b:+v////////////////////8PAAAA","212":"b:+P+f/Q/8/////3M0//////8PAAAA","214":[139],"216":"b:+P+f/Q/8/////3M0//////8PAAAA","218":"b:+v////////////////////8PAAAA","220":"b:+v//9b////////v///////8PAAAA","222":[83],"228":"b:+v+f/f////////s///////8PAAAA","229":"b:cP8f4A84/v/l/wMg//////8PAAAA","231":[91,127,133],"233":[93],"237":[43],"239":"b:+P+f/Q/8/////3M0//////8PAAAA","243":"b:+v////////////////////8PAAAA","245":"b:+v////////////////////8PAAAA","277":"b:+v////////////////////8PAAAA","281":"b:+v////////////////////8PAAAA","285":"b:+v////////////////////8PAAAA","289":"b:+v////////////////////8PAAAA","293":"b:+v////////////////////8PAAAA","297":"b:+v////////////////////8PAAAA","347":"b:+v////////////////////8PAAAA","371":[139],"372":[139],"377":[93],"386":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/ui.store.ts":{"118":"b:+v////////////////////8PAAAA","177":"b:+v////////////////////8PAAAA","285":"b:KACASAAAAQA+AFAEFnwAQNkKAAAA","286":"b:+v////////////////////8PAAAA","347":"b:cP974P93/v/x/0Pw3/////sPAAAA","351":"b:cP974P93/v/x/0Pw3/////sPAAAA","355":[85,6,137],"413":"b:+v////////////////////8PAAAA","414":"b:+v////////////////////8PAAAA","420":"b:cP9/4A84/v/n/wOg//////8PAAAA","422":"b:+v+f/f////////s///////8PAAAA","424":"b:+v+f/f////////s///////8PAAAA","426":"b:+v+f/f////////s///////8PAAAA","432":"b:MMECQAIAAJuiKQGAfvryx9kOAAAA","440":"b:cP9f4A84/v/n/wMg//////8PAAAA","441":"b:QL4dwA0wAGbnYAIgl83vV+8OAAAA","447":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","452":"b:KLYAoASQRKBM0mOwd2D0RfkPAAAA","469":"b:IIgBgCBxgAAgEEgQAAAACQAEAAAA","476":"b:IIgBgCBxgAAoEEgQAAAACQAEAAAA","483":"b:IIgBgCBwgAAgEEAQAAAACQAEAAAA","490":"b:0AIAAMADAIA6AOAhAAAAADECAAAA","497":"b:8IqBgODzgYA6FOg1QAAACTUHAAAA","505":"b:0AIAAMADAIA6AOAhAAAAADECAAAA","510":"b:8KoFgODzAYA+EGg1RF4ASf0PAAAA","515":"b:4IoBgODzAYA6EGg1QAAACTUHAAAA","523":[40,44,45],"536":"b:IIgBgCBwgAAgEEAQAAAACQAEAAAA","562":[83],"568":[83],"578":[67],"587":[67,68,69],"604":"b:QL4dwA0wAGbnYAIgl83vV+8OAAAA","610":"b:QL4dwA0wAGbnYAIgl83vV+8OAAAA","617":[24,43,48,68,69,90,131],"628":[21,22,95],"633":"b:cP9/4A84/v/n/wPg//////8PAAAA","640":"b:+v+f/f////////s///////8PAAAA","651":"b:+v+f/f////////s///////8PAAAA","659":"b:ANcLAA4gAP/BaAKAh/x/l8EAAAAA","663":"b:cL4Z4A0w/m7l9oMh9+3vf+8PAAAA","671":"b:cP9/4A84/v/n/4Ph//////8PAAAA","679":"b:+v+f/f////////s///////8PAAAA","701":"b:+v+f/f////////s///////8PAAAA","702":"b:+v+f/f////////s///////8PAAAA","708":"b:+v+f/f////////s///////8PAAAA","710":"b:+v+f/f////////s///////8PAAAA","734":"b:cP9/4A84/v/n/wOg//////8PAAAA","735":"b:+v////////////////////8PAAAA","736":[33,63,93,132,133,137],"749":[1,89,90],"792":"b:IAgAgEBxAAAwBEAQAAAAAAAEAAAA","800":"b:IAgAgEBxAAAwAEAQAAAAAAAEAAAA","802":"b:IAgAgEBxAAAwAEAQAAAAAAAEAAAA"},"packages/frontend/editor-ui/src/app/stores/ui.utils.ts":{"4":[22,94],"12":"b:+v////////////////////8PAAAA","17":"b:+v////////////////////8PAAAA","23":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/versions.store.ts":{"32":"b:+v////////////////////8PAAAA","64":"b:+P+f/Q/8/////3M0//////8PAAAA","95":"b:+v+f/f////////s///////8PAAAA","99":[23],"103":"b:+P8f/Q/8/////3M0//////8PAAAA","109":"b:+v8f/f////////s///////8PAAAA","115":"b:+v+f/f////////s///////8PAAAA","125":"b:+v+f/f////////s///////8PAAAA","140":"b:+v+f/f////////s///////8PAAAA","141":"b:+v+f/f////////s///////8PAAAA","142":"b:+v+f/f////////s///////8PAAAA","145":"b:+v8f/f////////s///////8PAAAA","158":"b:+P8f/Q/8/////3M0//////8PAAAA","173":"b:+v8f/f////////s///////8PAAAA","178":"b:+v8f/f////////s///////8PAAAA","185":"b:+v8f/f////////s///////8PAAAA","192":"b:+v+f/f////////s///////8PAAAA","233":"b:+v+f/f////////s///////8PAAAA","237":"b:+v+f/f////////s///////8PAAAA","260":[23]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentActive.ts":{"14":"b:+v////////////////////8PgAAA","17":"b:QP8f4A8wAP/laAKg3/3/9/8PgAAA","21":"b:cP9/wA8wAP/naQLgn///1/8OgAAA","30":"b:cP9/wA8wAP/naQLgn///1/8OgAAA","34":"b:cMcTQA4gALvjaQKAnvrzw9kOgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentChecksum.ts":{"12":"b:+v////////////////////8PgAAA","17":"b:cP9/wA8wAP/naQLgn///1/8OgAAA","22":"b:cP9/wA8wAP/naQLgn///1/8OgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentConnections.ts":{"33":"b:+v////////////////////8PgAAA","44":"b:cOdzQA4gALvjbQDAnvrzw9sOgAAA","49":"b:ML4ZoA0w1i5h0gMg12XvfSsBgAAA","110":"b:ACAAAAAAAAAAwgAAU0AAAAEAgAAA","140":[151,73,96,97,100,102,110,128],"182":[151,88],"191":"b:cP9/4A86/v/n/0Pg//////8PgAAA","193":"b:YP8b4A8wBv/hfwKg3/////sPgAAA","197":"b:cP9b4A8w1v/h/wMg3/////sPgAAA","204":"b:YP8b4A8wBv/hfwKg3/////sPgAAA","215":"b:cOdzQA4gALvjbQDAnvrzw9sOgAAA","219":"b:ML4ZoA0w1i5h0gMg12XvfSsBgAAA","223":"b:ACAAAAAAAAAAwgAAU0AAAAEAgAAA","227":[151,73,96,97,100,102,110,128],"234":[151],"240":[151,88]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentDescription.ts":{"12":"b:+v////////////////////8PgAAA","17":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","25":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentExpression.ts":{"6":"b:+v////////////////////8PgAAA","11":"b:cP974A8y/v/h/0Pg//////sPgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentGraph.ts":{"15":"b:+v////////////////////8PgAAA","20":"b:ML9b4A0w1s7h+QMg3+3//ysCgAAA","28":"b:MJ9b4A0w1s7h+QMgz+3//ysCgAAA","36":"b:cL5b4A0w/u7h/wMg7+3//6sPgAAA","40":[151,128],"47":[151,78,79,96],"73":[151],"77":[16,17,151,77],"81":"b:AIJRIAEQBophOQIAA8mvHwMCgAAA","85":"b:AIJRIAEQBophOQIAA8mvHwMCgAAA","93":"b:MJ4b4A0w1g7h+QEgz+Xv/yoAgAAA","108":"b:AAcDAAQAAESBKAAAgchvFgAAgAAA","111":"b:AAcDAAQAAASAKAAAgMhvFgAAgAAA","117":"b:AAcCAAQAAESBCAAAgchvFgAAgAAA","119":[151]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentHomeProject.ts":{"9":"b:+v////////////////////8PgAAA","14":"b:cP9/4A84/v/n+wPg//////8PgAAA","22":"b:cP9/4A84/v/n+wPg//////8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentIsArchived.ts":{"12":"b:+v////////////////////8PgAAA","17":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","22":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentMeta.ts":{"13":"b:+v////////////////////8PgAAA","18":"b:cMdzwA4wALvjfQDAnvrzy9kOgAAA","26":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","30":"b:MIABgAAQAAAhFAAAAEAACQAMgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentName.ts":{"16":"b:+v////////////////////8PgAAA","21":"b:cP9/4A84/v/n/wPg//////8PgAAA","27":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodeGroups.ts":{"30":"b:+v////////////////////8PgAAA","37":"b:cP9/4A84/v/n/wOg//////8PgAAA","39":[151,77,96,97,100,102,128,131],"49":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","50":[151,100],"57":[151,100],"69":[151,100],"78":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","82":[151,100],"96":[151,100],"97":[151],"115":[151,100],"119":[151,100],"125":[151,100],"130":[151,100],"135":[151,100],"141":[151],"150":[151],"157":[151],"161":[151,100,128],"166":"b:AAAAAAAAAAAAAoABU0AAAAEAgAAA","169":[151,100],"178":"b:AABgAAAAAAAgAACBAEIAQNAAgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodeMetadata.ts":{"20":"b:+v////////////////////8PgAAA","29":"b:cOdzQA4iALvjaQDBnvrzw9sOgAAA","34":"b:cP974A8y/v/h/4Ph//////sPgAAA","42":"b:cL5b4A0w/u7h/wMg7+3//6sPgAAA","52":[151,106],"65":"b:AAAAAAAAAAAAAoABU0AAAAEAgAAA","75":[151,98,120,129],"89":"b:cOdzQA4iALvjaQDBnvrzw9sOgAAA","94":"b:cL4ZoA0w/m5h1oMh523vfasPgAAA","100":"b:YOdzQA4iALvhaQDAnvrzw9sOgAAA","105":"b:AAAAAAAAAAAAAoABU0AAAAEAgAAA","109":[151,98,120,129],"113":"b:cL5b4A0w/u7h/wMg7+3//6sPgAAA","117":"b:ALQZIA0wlA6hgAEAx4UvHQMAgAAA","124":[151],"131":[151],"138":[151,106],"142":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","146":"b:ANcbAAwgAL/BaAKAhvx/l8EAgAAA","150":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","154":"b:MJ5b4A0w1s7h+QMgz+3//ysCgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodes.ts":{"75":"b:+v////////////////////8PgAAA","91":"b:ML4Z4A0w1g7h/YEh182vP+sNgAAA","115":"b:cOdzQA4iALvjaQDAnvrzw9sOgAAA","139":"b:YOdzQA4iALvhaQDAnvrzw9sOgAAA","143":"b:cL4ZoA0w/m5h1oMh523vfasPgAAA","163":[151,87,88],"164":[151,87,88],"178":[151,73,96,97,100,102,110,128],"179":[151,73,96,97,100,102,110,128],"180":[151,73,96,97,100,102,110,128],"199":"b:+v////////////////////8PgAAA","223":"b:cP974A8w/v/h/wPg//////sPgAAA","238":"b:cP974A8w/v/h/wPg//////sPgAAA","252":"b:cP974A8w/v/h/wPg//////sPgAAA","266":"b:cP974A8y/v/h/4Ph//////sPgAAA","269":"b:cP974A8y/v/h/4Ph//////sPgAAA","272":"b:cP974A8w/v/h/wPg//////sPgAAA","276":"b:cP974A8w/v/h/wPg//////sPgAAA","279":"b:AAAgAAAAAAAAAoABU0AAAAEAgAAA","282":"b:AAAgAAAAAAAAAoABU0AAAAEAgAAA","289":"b:+v////////////////////8PgAAA","297":"b:+v////////////////////8PgAAA","298":"b:YOdzQA4iALvhaQDAnvrzw9sOgAAA","299":"b:YOdzQA4iALvhaQDAnvrzw9sOgAAA","305":"b:cP974A8y/v/j/4Ph//////sPgAAA","339":"b:cP974A8y/v/j/4Ph//////sPgAAA","365":[151],"367":"b:cL4ZoA0w/m5h1gMg523vfasPgAAA","369":"b:cP9/4A84/v/n/wPg//////8PgAAA","370":"b:cP874A8w/v/h/wMg//////sPgAAA","376":"b:cIoZoAkw/k4h0AAg5y3vfaoCgAAA","377":"b:MIoZoAgwugYh0AAgxyXvfSIAgAAA","384":"b:cP9b4A8w/v/h+wOg//3///sPgAAA","388":"b:+v////////////////////8PgAAA","392":"b:MJ4b4A0w1s7h+QMgx+3//ysCgAAA","393":"b:MJ4b4A0w1s7h+QMgx+3//ysCgAAA","396":"b:AIAAAAAAAAAAAAAgRUAABOgEgAAA","404":"b:cOdzQA4iALvjaQDAnvrzw9sOgAAA","408":"b:cL4ZoA0w/m5h1oMh523vfasPgAAA","412":[151,87,88],"416":[151,73,96,97,100,102,110,128],"420":"b:MJwZoA0w1A6hgAEgx4WvPSMAgAAA","421":"b:MJwZoA0w1A6hgAEgx4WvPSMAgAAA","446":"b:MAgRoAgQVAIhAAAgxwElPSIAgAAA","447":"b:MAgRoAgQVAIhAAAgxwElPSIAgAAA","465":"b:ACAAAAAAAAAA4AAAUwAAAAgAgAAA","466":"b:ACAAAAAAAAAA4AAAUwAAAAgAgAAA","489":"b:ACAAAAAAAAAA4AAAUwAAAAgAgAAA","490":"b:ACAAAAAAAAAA4AAAUwAAAAgAgAAA","496":[151],"497":[151],"502":"b:MIABwAAwAAAhEIAhRUAACeAEgAAA","503":"b:MIABwAAwAAAhEIAhRUAACeAEgAAA","519":"b:cP9b4A8w/v/h/wOg//////sPgAAA","520":"b:cP9b4A8w/v/h/wOg//////sPgAAA","547":[151,88],"557":[151,106],"558":[151,106],"565":[151],"570":[151],"600":"b:AIABwAAyAAAgEAAAAAAACQAAgAAA","607":"b:AIABwAAyAAAgEAAAAAAACQAAgAAA","626":[15,16,151,44,76]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodesIssues.ts":{"23":"b:+v////////////////////8PgAAA","24":"b:cP8fwA8wBv/neQIgn///9/8PgAAA","25":"b:YP8bwA8wBv/heQIgn///9/sPgAAA","35":[151],"37":[151],"41":"b:AOoTIAMQBsIBNQAgSsivbTAPgAAA","42":"b:AOoTIAMQBsIBNQAgSsivbTAPgAAA","54":[13,151,18],"57":[151],"60":[13,151],"69":[13,151],"73":[13,151],"95":[151],"108":"b:cP974A8w/v/h/wPg//////sPgAAA","114":"b:cP974A8y/v/h/4Ph//////sPgAAA","117":"b:cP974A8y/v/h/4Ph//////sPgAAA","120":"b:cP974A8w/v/h/wPg//////sPgAAA","123":"b:AAAgAAAAAAAAAoABU0AAAAEAgAAA","126":"b:AAAgAAAAAAAAAoABU0AAAAEAgAAA","132":"b:+v////////////////////8PgAAA","140":"b:cP974A8y/v/j/4Ph//////sPgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentParentFolder.ts":{"9":"b:+v////////////////////8PgAAA","14":"b:cP9/4A84/v/n+wPg//////8PgAAA","22":"b:cP9/4A84/v/n+wPg//////8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentPinData.ts":{"38":"b:AAAAAAAAAABAAAAAQAVvBwABgAAA","43":"b:AAAAAAAAAABAAAAAQAVvBwABgAAA","56":"b:cMdzQA4gALvjaQDBnvrzw9kOgAAA","57":"b:AABAAAAAAABAAAAACIhzAwEIgAAA","58":"b:AABAAAAAAABAAAAACIhzAwEIgAAA","68":"b:MN5b4A0w1s7h+QMgz+3//ysHgAAA","72":"b:AABAAAAAAABAAAAASIV/BwEBgAAA","76":"b:AAAAAAAAAABAAAAAQAVvBwABgAAA","79":"b:AAAAAAAAAABAAAAAQAVvBwABgAAA","89":"b:+v////////////////////8PgAAA","94":"b:cMdzQA4gALvjaQDBnvrzw9kOgAAA","99":"b:AAAAAAAAAABAAAAAQAVvBwABgAAA","107":"b:AAAAAAAAAAAAAoABU0QAAAEAgAAA","116":[151,98,120,129],"122":[151],"123":[151],"129":[151],"140":"b:cMdzQA4gALvjaQDBnvrzw9kOgAAA","144":"b:AAAAAAAAAABAAAAAQAVvBwABgAAA","148":[151,106],"152":[151,98,120,129],"156":"b:cP9/4A8y/v/l/0Pg//////8PgAAA","160":"b:ML5b4A0w1s7h+QMg3+3//ysCgAAA","179":"b:cP974A8w/v/h/wPg//////sPgAAA","185":"b:cP974A8y/v/h/4Ph//////sPgAAA","188":"b:cP974A8y/v/h/4Ph//////sPgAAA","191":"b:cP974A8w/v/h/wPg//////sPgAAA","194":"b:AAAgAAAAAAAAAoABU0AAAAEAgAAA","197":"b:AAAgAAAAAAAAAoABU0AAAAEAgAAA","203":"b:+v////////////////////8PgAAA","211":"b:cP974A8y/v/j/4Ph//////sPgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentScopes.ts":{"13":"b:+v////////////////////8PgAAA","18":"b:cP9/4A84/v/n+wPg//////8PgAAA","23":"b:cP9/4A84/v/n+wPg//////8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentSettings.ts":{"19":"b:+v////////////////////8PgAAA","24":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","33":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","37":[151],"41":"b:QP8fwA8wAP/laAKg3/3/9+8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentSharedWithProjects.ts":{"13":"b:+v////////////////////8PgAAA","18":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","29":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentTags.ts":{"15":"b:cMdzQA4gALvj6QHAnvrzx90PgAAA","16":[151,80,126,130,136],"19":"b:+v////////////////////8PgAAA","24":"b:cMdzQA4gALvj6QHAnvrzx90PgAAA","29":[151,130],"30":[151],"37":"b:cMdzQA4gALvjaQDAnvrzw90OgAAA","41":"b:AAAAAAAAACAAgAEAAABARQABgAAA","46":[151,130]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentTimestamps.ts":{"19":"b:+v////////////////////8PgAAA","26":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","31":"b:cP9/wA8wAP/naQLgn///1/8OgAAA","36":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","40":"b:cP9/wA8wAP/naQLgn///1/8OgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentUsedCredentials.ts":{"13":"b:+v////////////////////8PgAAA","18":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","26":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","27":"b:AIABQAAgAJMgAAAAAEAAAAAEgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentVersionData.ts":{"14":"b:+v////////////////////8PgAAA","20":"b:cP9/wA8wAP/naQLgn///1/8OgAAA","32":"b:cP9/wA8wAP/naQLgn///1/8OgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentViewport.ts":{"13":"b:+v////////////////////8PgAAA","18":"b:MIBgAAAAAAAkAACgBF4AQNgOgAAA","26":"b:MIBgAAAAAAAkAACgBF4AQNgOgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentWorkflowObject.ts":{"12":"b:+v////////////////////8PgAAA","26":"b:AABgAAAAAAAgAADAAEIAQNAAgAAA","46":"b:cP974A8y/v/j/4Ph//////sPgAAA","50":"b:cP974A8w1r/j/wPh3/////sPgAAA","54":"b:cP9/4A84/v/n/wPg//////8PgAAA","58":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","62":"b:ADYAAAQAACBAggMAREBgRQoBgAAA","81":[13,151,98,120,129],"87":[13,151,98,120,129]},"packages/frontend/editor-ui/src/app/stores/workflowDocument.store.ts":{"114":"b:+v////////////////////8PgAAA","124":"b:+v////////////////////8PgAAA","138":"b:+v////////////////////8PgAAA","139":"b:+v////////////////////8PgAAA","148":"b:cP9/4A84/v/n/wPg//////8PgAAA","161":"b:cMdzQA4gALvjaQDAnvrzw9kOgAAA","170":"b:MAgRoAgQVAIhAAAgxwElPSIAgAAA","173":"b:cP974A8y/v/j/4Ph//////sPgAAA","184":[151],"185":"b:cP974A8w1r/j/wPh3/////sPgAAA","211":"b:cL4Z4A0w/m7h9oMh9+3vfesPgAAA","212":"b:ML4ZoA0w1i5h0gMg12XvfSsBgAAA","213":[151,100],"215":"b:cP974A8y/v/j/4Ph//////sPgAAA","221":[151,88],"228":"b:QP8fwA8wAP/laAKgl/3/1+8OgAAA","229":"b:QP8bwA8wAP/haAKgl/3/1+sOgAAA","249":[151,100],"262":[151,94],"314":"b:AABgAAAAAAAgAACAAEIAQNAAgAAA","354":"b:cP974A8y/v/h/0Pg//////sPgAAA","369":"b:APcPAA4gAP/BaAIAx/1/l8EBgAAA","448":[151,69,105,126,132],"464":"b:+v////////////////////8PgAAA","466":"b:+v////////////////////8PgAAA","475":"b:+v////////////////////8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowExecutionState.store.ts":{"73":"b:+v////////////////////8PgAAA","89":"b:+v////////////////////8PgAAA","90":"b:+v////////////////////8PgAAA","137":"b:cP9/4A84/v/n/wPg//////8PgAAA","150":"b:ANd7AA4gAP/BaALAh/x/l8EIgAAA","170":"b:cP9/4C97/v/n/8Px//////8PgAAA","191":"b:+v////////////////////8PgAAA","198":[151],"208":[151],"214":"b:cP8f4A84/v/n/wOg//////8PgAAA","220":[151,113,116,118,121],"226":"b:+v////////////////////8PgAAA","233":[151],"248":"b:cP974A8w/v/h/wPg//////sPgAAA","267":"b:cP9/4A84/v/n/wPg//////8PgAAA","273":"b:cP9/4A84/v/n/wPg//////8PgAAA","279":"b:cP9/4A84/v/n/wPg//////8PgAAA","286":"b:cP9/4A84/v/n/wPg//////8PgAAA","292":"b:MN5b4A0w1s7h+QMgz+3//ysCgAAA","298":"b:cP9/4A84/v/n/wPg//////8PgAAA","328":"b:cP8b4A8w/v/h/wPg//////sPgAAA","336":"b:cP8b4A8w/v/h/wPg//////sPgAAA","346":"b:cP974A8w/v/h/4Ph//////sPgAAA","349":"b:cP974A8w/v/h/4Ph//////sPgAAA","352":"b:cP8b4A8w/v/h/wPg//////sPgAAA","356":"b:cP8b4A8w/v/h/wPg//////sPgAAA","359":"b:AAAgAAAAAAAgAoABU0IAQBEAgAAA","362":"b:AAAAAAAAAAAAAoABU0AAAAEAgAAA","369":"b:+v////////////////////8PgAAA","383":"b:cP974A8w/v/j/4Oh//////sPgAAA","419":"b:cP9/4A84/v/n/wPg//////8PgAAA","430":[151],"433":[151],"438":[151],"439":[151],"444":[151],"448":"b:ANd7AA4gAP/BaALAh/x/l8EIgAAA","470":[151,106,110,134,135],"479":"b:cP8f4A84/v/n/wOg//////8PgAAA","485":[151],"496":[151],"515":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","532":"b:cP8f4A84/v/n/wOg//////8PgAAA","555":"b:AIAAAAAAAAAAAgAgV0AAAOEAgAAA","562":"b:AMATAAIAAAIBIACAAEgABAAAgAAA","567":[151,106],"572":"b:cP8f4A84/v/n/wOg//////8PgAAA","585":"b:cP9/4A84/v/n/wPg//////8PgAAA","607":[151],"616":"b:cP8f4A84/v/n/wOg//////8PgAAA","621":[151],"626":"b:cP9/4A84/v/n/wPg//////8PgAAA","631":"b:cP9/4A84/v/n/wPg//////8PgAAA","635":[151],"637":[151],"643":[151],"645":[151],"646":[151],"655":[151],"660":[151],"665":"b:cP9/4A84/v/n/wOg//////8PgAAA","678":[151,98,120,129],"691":[151],"697":[151],"703":[151],"716":[151,98,120,129],"741":"b:cP9/4A84/v/n/wPg//////8PgAAA","774":[151,110],"888":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowSave.store.ts":{"15":"b:+v////////////////////8PAAAA","26":"b:cL4Z4A0w/m7l9gMg9+3vf+8PAAAA","30":"b:QL4dwA0wAGblYAIgl83vV+8OAAAA","55":"b:QLYRQAwgACLhYAIAls3nV+ECAAAA"},"packages/frontend/editor-ui/src/app/stores/workflows.store.ts":{"53":"b:+v////////////////////8PgAAA","82":"b:+v////////////////////8PgAAA","87":"b:AIAAAAAAAAAAAAAABFwAAMAAgAAA","88":[151],"91":"b:cP9/4C97/v/n/8Px//////8PgAAA","98":"b:MN5b4A0w1s7h+QMgz+3//ysCgAAA","101":"b:cP8f4A84/v/n/wOg//////8PgAAA","107":"b:+v////////////////////8PgAAA","110":[151,113,116,118,121],"122":"b:cP8f4A86/v/n/wOg//////8PgAAA","132":"b:cP8f4A84/v/n/wOg//////8PgAAA","133":"b:cP8fwA8wAP/naQKgn///1/8OgAAA","142":"b:cP974C9z/v/h/8Px3/////sPgAAA","150":"b:ML4b4A0w1s7h+QMgz+3//ysCgAAA","152":[151],"153":[151],"158":"b:MP9b4C9z1v/h+cOx3/3//+sGgAAA","160":"b:+v+f//////////8///////8PgAAA","164":[151],"175":"b:MJ4b4A0w1s7h+QMgx+3//ysCgAAA","179":"b:MJ4b4A0w1s7h+QMgx+3//ysCgAAA","189":[151],"190":[151],"193":[151,74,138,139],"194":[151],"214":[151,136],"221":"b:cP8f4A84/v/n/wOg//////8PgAAA","249":[151],"257":"b:cP9/4A84/v/n/wPg//////8PgAAA","261":"b:cP9/4A84/v/n/wPg//////8PgAAA","270":"b:cMcTQA4gALvjaQKAnvrzw9kOgAAA","277":[151,132,137],"293":[151,132,137],"308":[151,63,93,132,133,137],"320":[151,132,137],"324":[151,65],"342":[151],"346":[151],"350":"b:cP9/4A84/v/n/wPg//////8PgAAA","354":"b:cP9/4A84/v/n/wPg//////8PgAAA","358":[151],"362":[151,98,120,129],"366":[151],"370":"b:AIAAAAAAAAAAAgAgV0AAAOEAgAAA","375":[151],"393":[151,106,110,134,135],"407":"b:QL4dwA0wAGbvYAIgl83vV+8OgAAA","408":"b:QL4ZwA0wAGbhYAIgl83vV+sOgAAA","416":"b:QL4dgA0wAGZnQAIgh03tVa8OgAAA","450":"b:QLYRQAwgACLrYAIAls3nV+ECgAAA","493":[151,63,93,128,132,133,137],"507":[151,137],"534":[151],"586":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","605":[151],"613":"b:ANcLAA4gAP/BaAKAh/x/l8EAgAAA","625":[151],"629":[151],"633":[151]},"packages/frontend/editor-ui/src/app/stores/workflowsList.store.ts":{"13":"b:+v////////////////////8PAAAA","22":[128,129],"23":[128,129],"27":"b:cP8f4A84/v/l/wOg//////8PAAAA","41":"b:eP//wA+wAf//aQKgn///1/8OAAAA","51":[132,137],"56":"b:cP9/4A84/v/l+wPg//////8PAAAA","66":[63,93,132,133,137],"79":[132,137],"93":"b:uACAXQCAAQA+ABAEAAIAQBsKAAAA","129":"b:CACAAACAAQA+AAAAAAIAQBsKAAAA","130":"b:CACAAACAAQA+AAAAAAIAQBsKAAAA","141":"b:uACAXQCAAQA+ABAEAAIAQBsKAAAA","170":[93,137],"197":[93,137],"216":"b:cMcTQA4gALv9aQIgnvrzw9sOAAAA","222":[83],"226":"b:+P+f/Q+4/////xMk//////8PAAAA","232":"b:cL4doA84/m5l0gMg503vfb4DAAAA","238":[132,137],"244":[132,137],"265":[132,137]},"packages/frontend/editor-ui/src/app/utils/htmlUtils.ts":{"8":"b:6NeLgK73Bf//eXq31/3/3/0GgAAA","10":"b:AACAAAAAAAA+AQAAAAAiABECgAAA","31":"b:gACAAAAWAQA+AQACAAAqBBEGgAAA","44":"b:AAAAAICQAQAMADAhBAwASBAGgAAA","51":[151],"55":"b:+v////////////////////8PgAAA","56":"b:+v////////////////////8PgAAA","57":"b:+v////////////////////8PgAAA","63":[151,96,131,138],"80":"b:cP8f4A84/v/n/wOg//////8PgAAA","101":"b:AIYBIAgQAgAAMUEAz0mvGwAAgAAA"},"packages/frontend/editor-ui/src/app/utils/injectStrict.ts":{"4":"b:+v///f////////v///////8PgAAA"},"packages/frontend/editor-ui/src/app/utils/modules/tabUtils.ts":{"22":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","45":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","49":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/utils/nodeTypes/nodeTypeTransforms.ts":{"8":"b:+v///f////////v///////8PgAAA","29":"b:+v///f////////v///////8PgAAA","32":"b:+v///f////////v///////8PgAAA"},"packages/frontend/editor-ui/src/app/utils/nodeViewUtils.ts":{"60":[151,21,22,74,95,138,139],"61":[151,21,22,74,95,138,139],"70":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","71":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","80":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","81":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","90":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","91":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","100":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","101":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","110":"b:ABYAAAQAACBAggMAREBgRQgBgAAA","127":"b:MIgZoAgwkgYh0AAgxyWvfSoAgAAA","144":[151,78,79,96],"159":"b:cP974A8y/v/h/wPg//////sPgAAA","178":"b:cP974A8y/v/h/wPg//////sPgAAA","188":"b:cL4ZoA0w/m5h1gMg523vfasPgAAA","253":"b:ANdbYAQAOorhKQMA/+33l/kEgAAA","263":[151,101],"275":[151,101],"294":[151,101],"303":[151,21,22,74,95,138,139],"314":[151,21,22,74,95,138,139],"384":"b:MN5b4A0w1s7h+QMgz+3//ysCgAAA","526":[151,97],"552":"b:KLYAoASQRCBs0mOwd370RfkPgAAA","569":"b:cN4ZoA0w/m5h0gMg523vfaoDgAAA","581":[14,151,110],"590":[14,151,110],"596":[14,151,110],"632":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/hasRole.ts":{"5":"b:+v+f//////////8///////8PAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/hasScope.ts":{"4":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isAuthenticated.ts":{"5":"b:+v////////////////////8PAAAA","14":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isValid.ts":{"3":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/authenticated.ts":{"6":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/custom.ts":{"4":"b:uAiA3UL0AQA+AHgUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/permissions.ts":{"28":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/app/utils/typeGuards.ts":{"31":[151],"35":[151,113,121],"39":[151,46,123,138],"43":"b:ACYKAAQAAIzASAIAiu1/twEAgAAA","46":[151],"49":"b:MCgQoAAS1AJhCQAgBElnvyMAgAAA","57":"b:IIgBgCBxgAAgEEAQAAAACQAEgAAA","61":[151,124],"65":[151,86],"71":"b:cP974A8w/v/h/wPg//////sPgAAA","77":"b:cP974A8w/v/h/wPg/////+sPgAAA","81":"b:AIABIAAAOgAAwAAAAyCAEQAAgAAA","90":"b:AAAQIAEAAAIBAAAAAIggBAACgAAA","96":[151,106,124],"102":[151],"109":"b:AAAAAAAAAAAAAEAABFwAAMAAgAAA","113":[151,44,68,85,5],"117":[151,44,68,85,5],"121":[151,85],"125":"b:IAAAgABwAAAwAGAQAAAAAAAAgAAA","129":[151],"135":[151,44,68,85,5],"142":"b:uACA3QDwAQA+AHAUAAIAQBgKgAAA","155":[151,23,42,48,3,69,86,5,131,137],"164":[151],"167":[151,137]},"packages/frontend/editor-ui/src/experiments/readyToRunWorkflowsV2/stores/readyToRunWorkflowsV2.store.ts":{"12":"b:+P+f/Q/8/////3O0//////8PAAAA"},"packages/frontend/editor-ui/src/experiments/resourceCenter/stores/resourceCenter.store.ts":{"19":"b:+P+f/Q/8/////3M0//////8PAAAA","32":"b:+P+f/Q/8/////3M0//////8PAAAA","114":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/experiments/sidebarExpanded/useSidebarExpandedExperiment.ts":{"6":"b:+P+f/Q/8/////3M0//////8PAAAA","10":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/experiments/utils.ts":{"32":"b:cL4doA84/m5n1gMg503vfb4PAAAA","39":"b:+v////////////////////8PAAAA","46":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/features/agents/composables/useAgentPermissions.ts":{"34":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/assistant.store.ts":{"37":"b:+v////////////////////8PAAAA","45":"b:cP8f4A84/v/l/wMg//////8PAAAA","55":[10],"56":[10],"76":[9,10,11,12,13,18],"77":[9,10,12],"79":[9,10,11,12],"81":[9,10,11,12,13,18],"91":"b:+v////////////////////8PAAAA","93":"b:+v////////////////////8PAAAA","97":[9,10,11],"99":[9,11],"104":"b:+v////////////////////8PAAAA","112":"b:+v///f////////v///////8PAAAA","116":[9,10,11,12],"120":[9,10,11,12],"133":[9,10,11,12],"135":[9,10,11,12],"139":[9,10,11,12],"196":[9,10],"207":[11],"213":[9,10,11,12],"217":[9,10,11,12],"240":[9,10,11,12],"244":[9,11,12],"270":[9,10,11,12],"290":[9,10,11,12],"294":[9,10,11,12],"298":[9,10,11,12],"309":[11],"328":[9,12],"410":[9,11,12],"470":[9,11,12],"471":[9,11,12],"483":[9,10],"544":[9,10],"545":[9,10],"552":[10],"580":[10],"581":[10],"588":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA","619":[9,12],"669":[9,12],"670":[9,12],"682":[9,12],"696":[9,10,11,12,13,18],"736":"b:+v////////////////////8PAAAA","737":"b:cL4Z4A0w/m7l9oMh9+3vf+8PAAAA","743":"b:+v////////////////////8PAAAA","744":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/builder.store.ts":{"164":"b:+v////////////////////8PAAAA","186":"b:+v///f////////v///////8PAAAA","228":"b:eP//8P++/////wP0//////8PAAAA","255":"b:+v////////////////////8PAAAA","258":[13,18],"297":[13,18],"300":"b:+v///f////////v///////8PAAAA","316":"b:+v///f////////v///////8PAAAA","320":[13,18],"322":"b:+v///f////////v///////8PAAAA","328":"b:+v///f////////v///////8PAAAA","348":"b:+v///f////////v///////8PAAAA","360":"b:+v///f////////v///////8PAAAA","364":"b:+v///f////////v///////8PAAAA","367":"b:+v///f////////v///////8PAAAA","369":"b:+v///f////////v///////8PAAAA","381":"b:+v///f////////v///////8PAAAA","403":[13,18],"413":"b:+v///f////////v///////8PAAAA","425":"b:eP//8P++/////wP0//////8PAAAA","455":"b:ANcLAA4gAP/BaAKAh/x/l8EAAAAA","462":"b:cP9/4A84/v/n/wPg//////8PAAAA","470":[13,18],"474":[13,18],"496":[13,18],"523":[13,18],"524":[13,18],"573":[13,18],"645":[18],"656":[18],"665":[18],"696":[13,18],"727":[13,18],"740":[13,18],"817":[13,18],"833":[13,18],"865":[13],"889":[13,18],"1025":[13],"1028":[13],"1050":[13],"1057":[18],"1128":[13,18],"1397":[13],"1402":[13],"1429":[13,18],"1440":"b:QLYRQAwgACLhYAIAls3nV+ECAAAA","1448":"b:QLYRQAwgACLhYAIAls3nV+ECAAAA","1456":[13],"1460":[13,18],"1465":[13,18],"1479":"b:+v////////////////////8PAAAA","1480":"b:cP9/4A84/v/n/wPg//////8PAAAA","1513":"b:+v////////////////////8PAAAA","1525":[13],"1546":[13],"1677":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/chatPanel.store.ts":{"32":[9,10,11,12,13,18],"39":"b:+v////////////////////8PAAAA","50":[9,10,11,12],"58":[9,10,11,12,13,18],"64":"b:+v///f////////v///////8PAAAA","66":"b:cP8f4A84/v/l/wMg//////8PAAAA","69":[9,10,11,12,13,18],"103":[9,11],"110":[9,10,11,12,13,18],"119":[9],"127":[9],"142":[9,12,13,18],"150":[9,10,11,12,13,18],"182":[11],"200":[9,10],"216":"b:+v////////////////////8PAAAA","217":"b:+v///f////////v///////8PAAAA","254":"b:+v////////////////////8PAAAA","255":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/chatPanelState.store.ts":{"14":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/AskAssistantBuild.vue":{"76":"b:+v///f////////v///////8PAAAA","90":"b:+v///f////////v///////8PAAAA","120":[13],"127":"b:+v///f////////v///////8PAAAA","128":[13],"134":"b:+v///f////////v///////8PAAAA","138":"b:+v///f////////v///////8PAAAA","143":"b:+v///f////////v///////8PAAAA","153":"b:+v///f////////v///////8PAAAA","158":"b:+v///f////////v///////8PAAAA","169":"b:+v///f////////v///////8PAAAA","170":[13,18],"172":[13,18],"180":[13,18],"181":[13,18],"184":[13,18],"200":"b:+v///f////////v///////8PAAAA","201":"b:+v///f////////v///////8PAAAA","202":"b:+v///f////////v///////8PAAAA","205":"b:+v///f////////v///////8PAAAA","211":"b:+v///f////////v///////8PAAAA","218":"b:+v///f////////v///////8PAAAA","225":"b:+v///f////////v///////8PAAAA","229":"b:+v///f////////v///////8PAAAA","247":[13],"281":"b:+v///f////////v///////8PAAAA","313":"b:+v///f////////v///////8PAAAA","345":"b:cOF/4A8w/v/h/4Mh//////sPAAAA","347":[13,18],"394":[13,18],"410":[13],"419":"b:OICAkPCmAQA+BAA0BF4AQNgOAAAA","543":[13],"557":"b:+v///f////////v///////8PAAAA","559":"b:eOP/8P++/////wP0//////8PAAAA","594":"b:+v///f////////v///////8PAAAA","595":[13,18],"607":"b:+v///f////////v///////8PAAAA","609":[13,18],"684":"b:OICAkPCmAQA+BAA0BF4AQNgOAAAA","691":"b:+v///f////////v///////8PAAAA","703":[13,18],"709":"b:+v///f////////v///////8PAAAA","712":[13,18],"743":[13,18],"749":[13],"756":"b:+v///f////////v///////8PAAAA","773":"b:+v///f////////v///////8PAAAA","778":[13,18],"785":"b:cMF74A8w/v/h/4Mh//////sPAAAA","788":[13],"840":"b:+v///f////////v///////8PAAAA","870":"b:+v///f////////v///////8PAAAA","872":"b:+v///f////////v///////8PAAAA","880":"b:cOF/4A8w/v/h/4Mh//////sPAAAA","910":"b:cOF/4A8w/v/h/4Mh//////sPAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/PlanModeSelector.vue":{"17":"b:+v///f////////v///////8PAAAA","27":"b:+v///f////////v///////8PAAAA","46":"b:+v///f////////v///////8PAAAA","47":"b:+v///f////////v///////8PAAAA","53":"b:+v///f////////v///////8PAAAA","71":"b:+v///f////////v///////8PAAAA","74":"b:+uP//f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/AssistantsHub.vue":{"19":"b:+v///f////////v///////8PAAAA","39":"b:+v///f////////v///////8PAAAA","40":[9,10,11,12,13,18],"51":"b:+v///f////////v///////8PAAAA","85":[9],"89":[9,10,11,12,13,18],"98":"b:AP8fAA4gAP/BaAKAh/x/l8EAAAAA","106":"b:+v///f////////v///////8PAAAA","112":"b:eL6f8P321+7//WM0x/////8OAAAA","124":"b:+v///f////////v///////8PAAAA","141":"b:+v///f////////v///////8PAAAA","150":"b:+v///f////////v//////n8PAAAA","164":"b:+v///f////////v///////8PAAAA","169":[13,18]},"packages/frontend/editor-ui/src/features/ai/assistant/components/FocusedNodes/ChatInputWithMention.vue":{"24":"b:+v///f////////v///////8PAAAA","45":"b:+v///f////////v///////8PAAAA","66":"b:+v///f////////v///////8PAAAA","67":[13,18],"73":[13,18],"103":[13],"114":[13,18],"121":[13,18],"127":[18],"159":[13,18],"174":"b:+v///f////////v///////8PAAAA","283":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useAIAssistantHelpers.ts":{"43":"b:+v////////////////////8PgAAA","59":[9,10,11,151],"71":[151],"78":[9,10,11,151],"97":[151],"98":[151],"110":[151],"119":[151],"128":[151],"134":[151],"160":[151],"177":[151],"204":[9,10,151],"211":[9,10,151],"224":[9,10,11,12,151],"248":[11,151],"273":[9,10,151],"295":[9,10,11,151],"298":[9,10,11,151],"306":[9,10,11,13,151],"332":[9,12,151],"354":[12,151],"376":[12,151],"417":[9,12,13,151,18],"425":[151],"444":[151],"462":[151],"506":[151],"579":[151],"593":[151],"629":[151]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useAskModeCoachmark.ts":{"14":[13,18],"17":"b:+v///f////////v///////8PAAAA","25":"b:+v///f////////v///////8PAAAA","27":"b:+v///f////////v///////8PAAAA","35":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderMessages.ts":{"82":"b:+v////////////////////8PAAAA","88":[13,18],"89":[13,18],"208":[13],"326":"b:+v///f////////v///////8PAAAA","327":[13,18],"330":"b:+v///f////////v///////8PAAAA","342":[13],"395":[13],"419":[13],"436":[13],"460":[13],"462":[13],"471":[13,18],"517":[18],"556":"b:eP//8P++/////wP0//////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderTodos.ts":{"37":"b:+v////////////////////8PAAAA","47":[13],"89":[13],"129":[13,18],"138":[13],"151":[13,18],"206":[13,18],"212":[13],"246":[13,18],"247":[13],"254":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useFocusedNodesChipUI.ts":{"14":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useNodeMention.ts":{"32":"b:+v///f////////v///////8PAAAA","61":"b:+v///f////////v///////8PAAAA","62":"b:MKAZoAgwkgYh0gCg92evffsAAAAA","155":[13,18]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useReviewChanges.ts":{"34":"b:+v///f////////v///////8PAAAA","71":"b:+v///f////////v///////8PAAAA","100":[13],"107":[13],"128":[13],"145":[13],"252":[9,10,11,12],"278":[13,18],"288":[13],"299":[13,18],"309":[9,10,11,12],"311":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/focusedNodes.store.ts":{"25":"b:+v////////////////////8PAAAA","27":"b:+v////////////////////8PAAAA","33":"b:+v////////////////////8PAAAA","35":"b:+v///f////////v///////8PAAAA","45":"b:cP9/4A84/v/n/wPg//////8PAAAA","240":[13,18],"266":"b:+v////////////////////8PAAAA","267":"b:cP9/4A84/v/n/wPg//////8PAAAA","282":"b:+v////////////////////8PAAAA","283":"b:cP9/4A84/v/n/4Ph//////8PAAAA","285":"b:cP974A8w/v/h/4Oh//////sPAAAA","311":"b:+v////////////////////8PAAAA","312":"b:cP9/4A84/v/n/4Ph//////8PAAAA","324":"b:+v////////////////////8PAAAA","325":"b:MJ5b4A0w1s7h+YMhx+3//ysCAAAA","334":[13,18]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.store.ts":{"107":"b:+v////////////////////8PAAAA","136":[36,37,38,39,41,42],"139":[36,37,38,39,41,42],"146":[36,37,38,39,41,42],"162":[36,37,38,39,41,42],"172":[36,37,38,39,41,42],"176":[36,37,38,39,41,42],"213":[36,37,38,39,41,42],"236":[37],"278":[36,37,38,39,41,42],"304":[36,37,38,39],"314":[36,37,38,39,41,42],"333":[36,37,38,39,41,42],"340":[41],"367":[36,37,38,39,41,42],"370":[36,37,38,39,41,42],"376":[36,37,38,39,41,42],"381":[36,37,38,39,41,42],"410":[36,37,38,39,41,42],"440":[36,37],"446":[36,37],"457":[36,37,38,39,41,42],"466":[36,37,38,39,41,42],"483":[41,42],"594":[36,37,38,39,41,42],"609":[36],"656":[41],"693":[37],"796":[37],"948":[37],"960":[39],"984":[39],"995":[39],"1030":[39],"1055":[39],"1075":[39],"1080":[39],"1090":[36,37,38,39,41,42],"1094":[36,37,38,39,41,42],"1105":[40],"1116":[40],"1126":[40],"1143":[36,37,38,39,41,42],"1189":[36,37,38,39],"1207":[36,37,38,39,41,42],"1223":[41,42],"1245":[36,37,38,39,41,42],"1287":[36,37,38,39,41,42],"1328":[36,37,38,39,41,42],"1355":[36,37,38,39,41,42],"1385":[36],"1406":[37],"1524":[36,37,38,39,41,42],"1525":[36,37,38,39,41,42],"1550":[36,37,38,39,41,42],"1551":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/chatHubPanel.store.ts":{"19":"b:+v///f////////v///////8PAAAA","29":"b:cP9/4A84/v/l/wOg//////8PAAAA","66":"b:+v///f////////v///////8PAAAA","67":"b:OIiAkPCmAQA+BAA0BF4AQNgOAAAA"},"packages/frontend/editor-ui/src/features/ai/chatHub/module.descriptor.ts":{"18":[36,37,38,39,41,42],"19":[42],"20":[42],"21":[39],"22":[39],"23":[40],"24":[40],"46":[41],"57":[39],"69":[38],"93":[40],"203":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.store.ts":{"20":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAiSettings.store.ts":{"30":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/mcpAccess/module.descriptor.ts":{"41":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/collaboration/collaboration/collaboration.store.ts":{"32":"b:+v////////////////////8PAAAA","70":"b:cP9/4A84/v/n/wOg//////8PAAAA","78":"b:cP9/4A84/v/l/wOg//////8PAAAA","79":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","82":"b:+v///f////////v///////8PAAAA","86":"b:+v///f////////v///////8PAAAA","90":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","108":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","113":"b:AAAAQAAAAAAgAAAAFiIAQBkCAAAA","117":"b:AAAAQAAAAAAgAAAAFiIAQBECAAAA","122":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","129":"b:cP8fwA8wAP/laQIgn///1/8OAAAA","134":"b:ILwAwAkQAIKhYAAgl+eGV/kGAAAA","153":"b:ILwAwAkQAIKhYAAgl+WGV/kGAAAA","161":"b:ILwAwAkQAIKhYAAgl+eGV/kGAAAA","195":"b:AAAAQAAAAAAgAAAAFiAAQAkCAAAA","204":"b:ILwAwAkQAIKhYAAgl+WGV/kGAAAA","208":"b:cL4d4A0w/u7l9gMg9+3vf/8PAAAA","247":[69,126,132],"266":"b:AIECAAAAAAAjAAAABFwAAsEAAAAA","281":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","288":"b:cP8fwA8wAP/laQIgn///1/8OAAAA","293":"b:cP9/4A84/v/l/wOg//////8PAAAA","297":"b:QL4ZwA0wAGblYIIhl8/vV/8OAAAA","302":[15],"318":"b:QLYRQAwgAKLhYAIgls3nV/ECAAAA","345":"b:+v////////////////////8PAAAA","346":"b:cL4Z4A0w/m7l9oMh9+3vf+8PAAAA","355":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","367":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","389":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","445":[69,105,126,132]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectCardBadge.vue":{"23":"b:+v////////////////////8PAAAA","37":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","46":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","50":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","73":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","77":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","89":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","105":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","148":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","175":"b:KACAgADwAQA0AEAQAAIAQBgKAAAA","178":"b:CACAAACAAQA0AAAAAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectCreateResource.vue":{"14":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","23":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","34":[48,66,67],"35":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectHeader.vue":{"46":"b:OACAgABUAQA+AEAAAAAAAAgCAAAA","48":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","50":"b:OACAgABUAQA+AEAAAAAAAAgCAAAA","70":"b:OACAgABUAQA+AEAAAAAAAAgCAAAA","82":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","86":"b:OAiAgAD0AQA+AEAQAAAAAAgCAAAA","90":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","107":"b:OAiAgAD0AQA+AEAQAAAAAAgCAAAA","110":[85],"113":[85],"117":"b:KAiAgACgAQAwAAAQAAAAAAgCAAAA","121":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","128":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","135":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","149":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","162":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","172":[11,31,44,45,46,68,69,86,92,5],"182":[47,48],"192":[85],"209":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","216":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","232":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","308":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","314":[11,31,44,45,66,4,92,5,131,137],"324":[66,4,5,131,137],"335":[11,31,44,45,66,4,92,5,131,137],"348":[66,4,5,131,137],"358":[11,31,44,45,92,5],"370":[66,67],"373":[47,48],"379":[85],"389":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","399":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","419":"b:OACAgABUAQA+AEAAAAAAAAgCAAAA","427":"b:OACAgABUAQA+AEAAAAAAAAgCAAAA","437":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","451":[3],"462":"b:MAgAgACwAQAMACAQAAAAAAgCAAAA","479":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","482":"b:qAiA3QCgAQAwAHAUAAIAQBgKAAAA","487":[3],"514":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","521":[48,66,67],"522":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","527":"b:MAgAgACwAQAEACAQAAAAAAgCAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectNavigation.vue":{"22":"b:+P+f/Q/8/////3M0//////8PAAAA","46":"b:+P+f/Q/8/////3M0//////8PAAAA","48":"b:+P+f/Q/8/////3M0//////8PAAAA","53":"b:+P+f/Q/8/////3M0//////8PAAAA","58":"b:+P+f/Q/8/////3M0//////8PAAAA","59":"b:+P+f/Q/8/////3M0//////8PAAAA","62":"b:+P+f/Q/8/////3M0//////8PAAAA","74":"b:+P+f/Q/8/////3M0//////8PAAAA","83":"b:eP+f7Q/8/////3M0//////8PAAAA","92":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA","104":"b:+P+f/Q/8/////3M0//////8PAAAA","116":"b:+P+f/Q/8/////3M0//////8PAAAA","126":"b:+P+f/Q/8/////3M0//////8PAAAA","140":"b:+P+f/Q/8/////3M0//////8PAAAA","145":"b:MAAAAAAAAAAkAAAEAAIAQBgOAAAA","148":"b:+P+f/Q/8/////3M0//////8PAAAA","246":[48,68,69,131],"263":"b:eCCAgALUeSR+yEMQ5aJPb8sKAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectTabs.vue":{"22":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","36":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","38":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","44":"b:OAiAgAD0AQA+AEAQAAAAAAgCAAAA","46":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","89":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","102":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","141":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","142":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","158":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/composables/useFavoriteNavItems.ts":{"22":"b:+P+f/Q/8/////3M0//////8PAAAA","128":"b:+P+f/Q/8/////3M0//////8PAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/composables/useProjectPages.ts":{"7":"b:+P+f/Q/8/////3O0//////8PAAAA","11":"b:OAiAgAB0AQA+AEAQAAAAAAgCAAAA","14":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA","17":"b:uAiA3QD0AQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.api.ts":{"7":[151,23,42,48,3,69,86,5,131,137],"11":[151,67,68,69,137],"27":[151,40,45,7,4,92,5,6,137],"45":"b:+v+f/f////////s///////8PgAAA","49":"b:+v+f/f////////s///////8PgAAA","53":"b:OCiAgAL0AQA+AEAQAAAAQMoCgAAA","57":[151,23,48,3,69,5,131,137],"64":[151,23,48,3,69,5,131,137],"72":[151],"85":"b:+v+f/f////////s///////8PgAAA","89":[151,42,3],"97":[151,42],"106":[151]},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.routes.ts":{"10":"b:uACAXQKAAQA+ABAEAAIAQBgKAAAA","11":[11,31,44,45,46,68,69,86,92,5],"12":[11,31,44,45,46,68,69,86,92,5],"13":[23,42,48,3,69,86,5,131,137],"16":[85],"18":"b:uAiA3ULwAQA+AHAUAAIAQBgKAAAA","22":"b:MAiAgADwAQA+AEAQAAAAAAgCAAAA","33":"b:uACAXUKAAQA+ABAEAAIAQBgKAAAA","44":[11,31,44,45,46,68,69,86,92,5],"64":[65,66,67],"74":[85],"134":"b:+v////////////////////8PAAAA","146":[23,42,48,3,69,86,5,131,137],"147":[23,42,48,3,69,86,5,131,137],"169":"b:qAiA3UKgAQAwAHAUAAIAQBgKAAAA","184":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.store.ts":{"32":"b:+v////////////////////8PgAAA","51":"b:+v+f//////////8///////8PgAAA","54":"b:+v+f//////////8///////8PgAAA","58":"b:+v////////////////////8PgAAA","64":[151,137],"65":[151],"66":[151],"68":[151,40,45,86,92,5],"69":"b:+v+f/b////////s///////8PgAAA","70":"b:+P+f/Q/8/////3M0//////8PgAAA","71":"b:+v+f/b////////s///////8PgAAA","72":[151],"75":"b:+v+f/b////////s///////8PgAAA","81":"b:+v////////////////////8PgAAA","84":"b:+v+f//////////8///////8PgAAA","89":"b:+P+f/Q/8/////3M0//////8PgAAA","90":"b:+v////////////////////8PgAAA","95":"b:qCiA3fK2AQAwAHAUAAIAQNoKgAAA","99":[151,23,42,48,3,69,86,5,131,137],"103":"b:+v+f/f////////s///////8PgAAA","107":"b:+v+f/f////////s///////8PgAAA","111":[151],"119":[151,67,68,69,137],"129":[151,40,45,7,4,92,5,6,137],"139":"b:OCiAgAL0AQA+AEAQAAAAQMoCgAAA","142":"b:OAiAgAD0AQA+AEAQAAAAAAgCgAAA","146":"b:ACAAgAIQAAAgAAAAAAAAQMICgAAA","153":"b:+v///f////////v///////8PgAAA","159":[151,23,48,3,69,5,131,137],"166":[151,23,48,3,69,5,131,137],"174":[151,23,48,3,69,5,131,137],"192":[151,42,3],"200":[151,42],"209":[151],"214":[151],"217":[151],"220":"b:+v+f/f////////s///////8PgAAA","224":"b:MMECQAIAAJuiKQAAHvryw9kOgAAA","232":[151,5],"262":[151,68,69],"285":[151],"299":[151,23,42,48,3,69,86,5,131,137],"310":"b:+v////////////////////8PgAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.utils.ts":{"16":[151,40,45,7,4,92,5,6,137],"18":[151,40,45,7,4,92,5,6,137],"31":"b:uACA3QDwAQA+AHAUAAIAQBgKgAAA","33":[151,67,68,69,137],"42":[151],"50":"b:8IgBgCDxgQA8EEAwAAAASQgOgAAA","64":[151,68,69],"69":"b:+v////////////////////8PgAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectVariables.vue":{"68":[85],"78":[85],"82":[85],"87":[85],"91":[85],"93":[85],"94":[85],"109":[85],"114":[85],"150":[85],"184":[85],"193":[85],"197":[85],"216":[85],"222":[85],"269":[85],"281":[85],"290":[85],"314":[85],"400":[85],"434":[85],"435":[85],"451":[85],"452":[85],"463":[85]},"packages/frontend/editor-ui/src/features/core/dataTable/dataTable.api.ts":{"13":[151,47,48,137],"40":[151,47,48],"61":[151,48],"77":[151,47],"93":[151,47],"109":[151,47],"122":[151,47],"139":[151],"156":[151,47,48],"176":[151,47],"193":[151,47],"214":[151,47],"220":[151,47],"238":"b:+v+f/b////////s///////8PgAAA","246":[151],"269":[151],"283":[151]},"packages/frontend/editor-ui/src/features/core/dataTable/dataTable.store.ts":{"37":"b:+v////////////////////8PAAAA","50":[47,48],"56":"b:+v+f/b////////s///////8PAAAA","64":[47,48],"72":"b:+v+f//////////8///////8PAAAA","76":[47,48,137],"101":[47,48],"176":[48],"179":[48],"185":[47],"197":[47],"199":[47],"207":[47],"215":[47],"236":[47,48],"237":[47,48],"244":[47],"256":[47],"264":[47],"278":[47],"279":[47],"313":[47,48],"331":[47],"341":[47],"356":[47],"360":"b:+v+f/b////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/core/folders/folders.constants.ts":{"16":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/core/folders/folders.store.ts":{"23":"b:+v////////////////////8PAAAA","40":"b:OACACQCAAQA+ABAEAAIAQBgKAAAA","41":[65,66,67],"52":[66,67],"56":[66,67],"64":[65,66,67],"75":[65,66,67],"81":[65,66,67],"99":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","115":[67],"116":[67],"121":[67],"125":[67],"134":[67,68,69],"174":[67],"183":[67],"190":[67],"206":[67],"219":[65,67],"249":[67],"262":[66],"273":[66],"342":[66]},"packages/frontend/editor-ui/src/features/credentials/credentials.api.ts":{"15":"b:+v+f/f////////s///////8PgAAA","33":"b:+v+f/f////////s///////8PgAAA","37":"b:IIgBgCBwgAAgEEAQAAAACQAEgAAA","60":"b:IAgAgABxAAA4AMARAAAAAAAGgAAA","76":"b:cP8f4P8+/v/n/wMg//////8PgAAA","85":"b:IIABgCBwAAAgEEAQAAAACQAEgAAA","92":[151,44],"96":[151],"100":[151,40,44,45,92,5],"113":[13,151,38,40,44,45,138],"123":[151,138],"134":[151,46,123],"144":"b:IKABgCARAAAgEAAQAAAAAQAEgAAA"},"packages/frontend/editor-ui/src/features/credentials/credentials.store.ts":{"41":"b:+v////////////////////8PgAAA","49":[13,151],"53":[13,151],"63":[151],"67":"b:+v+f/f////////s///////8PgAAA","68":"b:cP8f4P9//v/3/8sx//////8PgAAA","73":"b:MKgB4PF31pdzFUAwRUGgLygGgAAA","74":"b:IIABQCAWQAJRAAAARQEgKQAGgAAA","77":"b:MKABwPA3AJMhFAAAAEAACQAEgAAA","80":"b:MKABwPA3AJMhFAAAAEAACQAEgAAA","82":"b:MKABwPA3AJMhEAAAAEAACQAEgAAA","91":"b:MKgB4AEy1gZhEQAgBEGgLyAAgAAA","95":"b:MKgB4AEy1gZhEQAgBEGgLyAAgAAA","97":"b:MKABwAAyQAZhEAAABEEgKQAAgAAA","107":[15,16,151,31,44,69,76,120,123],"108":[15,16,151,31,44,69,76,123],"112":[15,16,151,31,44,69,76,120,123],"116":[15,16,151],"124":"b:ML5b4P131t/x/UMwz+3//ysPgAAA","125":"b:ML5b4P131t/x/UMwz+3//ysPgAAA","128":"b:MKgBwPB3gAAhEEAQBEAACQAFgAAA","129":"b:MKgBwPB3gAAhEEAQBEAACQAFgAAA","132":"b:AIABgAAyAAAgEAAAAAAACQAAgAAA","133":"b:AIABgAAyAAAgEAAAAAAACAAAgAAA","139":"b:MKABwPA3AJMhFAAAAEAACQAEgAAA","140":"b:MKABwPA3AJMhFAAAAEAACAAEgAAA","145":[151],"146":[151],"151":"b:IIABgCAxAAAgEAAQAAAAAQAEgAAA","152":"b:IIABgCAxAAAgEAAQAAAAAAAEgAAA","160":"b:IIABgCAxAAAgEAAQAAAAAQAEgAAA","165":[151,30,44],"166":[151,30,44],"172":[151,30,44],"196":"b:IIgBgCBxgAAgEEAQAAAACQAEgAAA","197":"b:IIgBgCBxgAAgEEAQAAAACAAEgAAA","214":"b:IIgBgCBxgAAgEEAQAAAACQAEgAAA","215":"b:IIgBgCBxgAAgEEAQAAAACAAEgAAA","222":"b:cP8f4A84/v/n/wMg//////8PgAAA","223":"b:cP8f4A84/v/n/wMg//////8PgAAA","234":"b:+v+f/f////////s3//////8PgAAA","235":"b:+v+f/f////////s3//////8PgAAA","245":[151],"246":[151],"253":"b:cP8f4P9//v///8Mx//////8PgAAA","254":"b:MKABwPB3SJd5IkARd+91acQOgAAA","265":"b:IIABgCBxAAAgEEAQAAAACQAEgAAA","277":"b:+v+f/f////////s///////8PgAAA","285":"b:IAgAgABxAAA4AMARAAAAAAAGgAAA","317":"b:cP8f4P8+/v/n/wMg//////8PgAAA","328":[13,151,38,40,44,45,138],"336":"b:ML5b4A0y1s7h+QMgz+3//ysCgAAA","349":"b:IIABgCBwAAAgEEAQAAAACQAEgAAA","386":[151,40,44,45,92,5],"399":[151,44],"408":[151],"419":[151,46,123],"423":[151,138],"427":"b:IKABgCARAAAgEAAQAAAAAQAEgAAA","442":"b:IIgBgCBwgAAgEEAQAAAACQAEgAAA","459":[151,92,5],"469":[151,92,5],"481":[151],"487":[151],"544":[13,151,38,40,74,138],"553":[13,151,38,40,138],"555":[13,151,38,40,138]},"packages/frontend/editor-ui/src/features/execution/executions/executions.store.ts":{"31":"b:+v////////////////////8PAAAA","42":[15,98,106,107,108,110,134,135],"63":[15,98,106,107,108,110,134,135],"66":[106,108,134,135],"73":[15,98,106,107,108,110,134,135],"74":[98,106,107,108,110,134,135],"103":[15,98,106,107,108,110,134,135],"111":[15,98,106,107,108,110,134,135],"112":[135],"123":[15,98,106,107,108,110,134,135],"133":[135],"140":[107],"145":[134],"149":[15,98,106,107,108,110,134,135],"157":[15,98,106,107,108,110,134,135],"177":[15,98,106,107,108,110,134,135],"194":[98,106,107,108,110,134,135],"208":[15,98,106,107,108,110,134,135],"214":[106,107,134,135],"222":[15,98,106,107,108,110,134,135],"227":[15,98,106,107,108,110,134,135],"286":[110],"308":[107],"330":[15,98,106,134,135],"338":[15,98,106,134,135]},"packages/frontend/editor-ui/src/features/execution/executions/executions.utils.ts":{"48":"b:+v////////////////////8PgAAA","62":"b:AIAAAAAAAAAAAAAABFwAAMAAgAAA","124":[151,19,20,57],"137":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","139":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","190":[151,110],"247":"b:AMYbAAQAAM7BaAIAgsx/lwEAgAAA","248":"b:AMYbAAQAAM7BaAIAgsx/lwEAgAAA","256":"b:AMYbAAQAAM7BaAIAgsx/lwEAgAAA","265":"b:AMYbAAQAAM7BaAIAgsx/lwEAgAAA","266":"b:AMYbAAQAAM7BaAIAgsx/lwEAgAAA","269":[151],"324":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","362":"b:AIYBAAAgAAAAAAAAAEwgAMAAgAAA","411":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","428":"b:cP9/4A84/v/n/wOg//////8PgAAA","442":[13,151],"449":[13,151,63,107,111,122],"455":"b:cL964A8w/P/hzwMg3/////sPgAAA","461":[151],"497":[151],"519":[151]},"packages/frontend/editor-ui/src/features/execution/insights/components/InsightsSummary.vue":{"33":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","46":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","54":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","56":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","59":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","60":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","118":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","133":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/execution/insights/insights.api.ts":{"16":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","34":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/execution/insights/insights.constants.ts":{"21":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","22":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","23":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","24":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","25":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/execution/insights/insights.store.ts":{"12":"b:uAiA3QLwAQA+AHAUAAIAQBgKAAAA","17":"b:qAiA3QKgAQAwAHAUAAIAQBgKAAAA","21":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","25":"b:qAiA3QKgAQAwAHAUAAIAQBgKAAAA","30":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/execution/insights/insights.utils.ts":{"17":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","19":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","20":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","23":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","24":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","52":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","54":"b:KAiA1QKgAQAwAHAUAAIAQBgKAAAA","79":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","96":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA","117":"b:KAiA1QCgAQAwAHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/instanceRegistry/stores/instanceRegistry.store.ts":{"7":"b:+v////////////////////8PAAAA","14":[102]},"packages/frontend/editor-ui/src/features/integrations/sourceControl.ee/sourceControl.api.ts":{"22":"b:+v////////////////////8PgAAA","24":[151,84],"30":[151],"37":[151],"44":[151,84],"53":[151,84],"61":[151],"65":[151],"76":[151],"87":[151,84],"96":[151]},"packages/frontend/editor-ui/src/features/integrations/sourceControl.ee/sourceControl.store.ts":{"14":"b:+v////////////////////8PgAAA","18":"b:+v+f/f////////s///////8PgAAA","24":"b:+v////////////////////8PgAAA","45":[151],"58":[151],"62":[151,84],"66":"b:+v////////////////////8PgAAA","68":[151,84],"73":[151,84],"78":[151,84],"87":[151,84],"102":[151],"112":[151],"116":[151],"124":[151]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/constants.ts":{"299":"b:+v////////////////////8PAAAA","305":"b:+v////////////////////8PAAAA","311":"b:+v////////////////////8PAAAA","317":"b:+v////////////////////8PAAAA","323":"b:+v////////////////////8PAAAA","329":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/ndv/shared/ndv.store.ts":{"41":"b:+v////////////////////8PgAAA","45":"b:+v////////////////////8PgAAA","46":"b:+v////////////////////8PgAAA","109":"b:+v////////////////////8PgAAA","113":"b:MJ5b4C1w1s7h+UMwz+3//ysGgAAA","135":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","139":"b:MJ5b4C1w1s7h+UMwz+3//ysGgAAA","146":"b:IJAZgCVwAA6hEEAQCAUvHwAEgAAA","150":"b:ML4b4A0y1s7h+cMgz+3//ysCgAAA","152":[151,113],"154":[151,113],"156":"b:AMZaAAQAAM7BaAIAiu1/twEAgAAA","158":"b:MP5b4A0w1s7h+QMgz+3//zsCgAAA","160":"b:AMZaAAQAAM7BaAIAiu1/twEAgAAA","162":"b:AAYIAAQAAIzASAIAiu1/twEAgAAA","182":"b:AIYAAAAAAIBAAQIAgEmvHwAAgAAA","184":"b:AIIAAAAAAIBAAQIAAEmvHwAAgAAA","186":"b:AAAAAAAAAACAAEAAAAUPHwAAgAAA","188":[151],"190":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","203":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","211":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","228":"b:+v////////////////////8PgAAA","230":"b:ALofYAgw3koh+QEhx+3/d7kCgAAA","235":"b:MJ5b4A0w1s7h+YMhx+3//ysCgAAA","244":"b:MJ4b4A0w1o7h+QMgx+3//ysAgAAA","248":[17,151,118,121],"252":"b:MJ5b4A0w1s7h+QMgx+3//ysCgAAA","256":[151],"266":"b:MJ5b4A0w1s7h+QMgx+3//ysCgAAA","270":"b:ALoZYAgwVkoh2QEgx+3/djkCgAAA","274":"b:AAAAAAAAAAAACAAAAElyAgAAgAAA","285":"b:AAAAAAAAAAAAAAAAACEPBgAAgAAA","289":"b:AAAAAAAAAAAAAAAAACEPBgAAgAAA","293":"b:ABAYAAUwAA6hAAAACAQvHwIAgAAA","297":[151,113],"315":[151,113],"325":[151,113],"329":[151,113],"333":[151,113],"337":[151,113,116,118,121],"342":"b:MN5b4A0w1s7h+QMgz+3//ysCgAAA","350":"b:MN5b4A0w1s7h+QMgz+3//ysCgAAA","358":[151,113],"363":[151,113,116,118,121],"368":[151],"373":"b:ABAYAAUgAA4BAEAAAAUPHwAAgAAA","377":[151],"390":"b:ABAYAAUykA6hAIABiAQvHwIAgAAA","467":"b:+v////////////////////8PgAAA","471":[151,69,105,126,132],"489":"b:+v////////////////////8PgAAA","491":"b:+v////////////////////8PgAAA","494":"b:+v////////////////////8PgAAA"},"packages/frontend/editor-ui/src/features/resolvers/composables/useDynamicCredentials.ts":{"9":"b:+v//9b////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/settings/environments.ee/components/VariableModal.vue":{"57":[85],"80":[85],"84":[85],"103":[85],"118":[85],"119":[85],"122":[85],"128":[85],"168":[85],"169":[85],"173":[85],"178":[85],"182":[85],"218":[85],"222":[85],"239":[85],"252":[85],"265":[85],"272":[85],"295":[85],"300":[85],"306":[85],"313":[85],"315":[85],"320":[85],"334":[85]},"packages/frontend/editor-ui/src/features/settings/environments.ee/environments.api.ts":{"10":[151,85,99,124,132],"21":[151,85],"28":[151,85],"40":[151,85]},"packages/frontend/editor-ui/src/features/settings/environments.ee/environments.store.ts":{"13":"b:cP9/4C97/v/n/+Px//////8PgAAA","18":[151],"21":[151,85],"22":[151,85],"29":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","30":[151,99,124],"35":[151,85,99,124,132],"43":[151,85],"46":[151],"56":[151,85],"59":[151],"64":[151,85],"69":[151,85],"74":[151,85],"79":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","80":[151,99,124],"89":[151]},"packages/frontend/editor-ui/src/features/settings/sso/sso.store.ts":{"19":"b:+v////////////////////8PAAAA","26":[26,28,69,90],"39":"b:+v////////////////////8PAAAA","91":[26,28,1,69,89,90,7],"154":[26,28,69,90,7],"175":[26,28,69,90]},"packages/frontend/editor-ui/src/features/settings/users/users.store.ts":{"36":"b:+v+f//////////8///////8PAAAA","37":"b:+v////////////////////8PAAAA","38":"b:+v+f//////////8///////8PAAAA","40":[45,69,131],"45":"b:+v////////////////////8PAAAA","62":"b:+P+f/Q/8/////3M0//////8PAAAA","64":"b:+v////////////////////8PAAAA","68":"b:MAgQoAgQZAIhAAAgxwFlPSIAAAAA","72":"b:+v///f////////v///////8PAAAA","74":[45,69,131],"76":"b:eIoZoAk0/04h0Eggxy3vfaoCAAAA","78":[1,89,90],"80":[1,89,90],"84":[15,16,77,93,110,119,120],"88":[24],"92":[15,77,93,110,119,120],"98":[15,16,44,49,76,96,107,119,120],"124":[7],"130":"b:+v+f//////////8///////8PAAAA","131":"b:+v+f//////////8///////8PAAAA","153":"b:+v+f//////////8///////8PAAAA","166":"b:+v+f//////////8///////8PAAAA","175":"b:+v+f//////////8///////8PAAAA","186":[69,90],"190":[7],"209":[28,69,90],"218":"b:+v////////////////////8PAAAA","222":"b:+v////////////////////8PAAAA","226":[69,90],"283":[89,90],"319":[7],"324":"b:+P+f/Q/8/////3M0//////8PAAAA","374":"b:+P///Q+4/////xOk//////8PAAAA","381":[90],"385":[90],"393":[90],"400":[90],"417":[7],"435":[7],"444":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/setupPanel/setupPanel.store.ts":{"10":"b:+v////////////////////8PAAAA","14":"b:cP8f4A84/v/l/wMg//////8PAAAA","20":"b:cP9/4A84/v/l/wPg//////8PAAAA","22":[13],"29":[13],"34":[13]},"packages/frontend/editor-ui/src/features/shared/banners/banners.store.ts":{"14":"b:+v////////////////////8PAAAA","32":"b:+v+f/f////////s///////8PAAAA","93":"b:+v////////////////////8PAAAA","97":[43],"102":[69,90],"110":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/banners/components/BannerStack.vue":{"38":"b:+v////////////////////8PAAAA","46":"b:+v////////////////////8PAAAA","51":[43],"55":[43],"56":[43],"59":"b:+v////////////////////8PAAAA","65":[43],"86":"b:+v////////////////////8PAAAA","89":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useChatHubCommands.ts":{"28":"b:+v////////////////////8PAAAA","40":[36,37,38,39,41,42],"47":[36,37,38,39,41,42],"81":[36,37,38,39,41,42],"87":[36,37,38,39,41,42],"98":[36,37,38,39,41,42],"101":[36,37,38,39,41,42],"128":[36,37,38,39,41,42],"150":[36,37,38,39,41,42],"151":[36,37,38,39,41,42],"154":[36,37,38,39,41,42],"175":[36,37,38,39,41,42],"176":[36,37,38,39,41,42],"179":[36,37,38,39,41,42],"199":[36,37,38,39,41,42],"200":[36,37,38,39,41,42],"203":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useCommandBar.ts":{"31":"b:+v////////////////////8PAAAA","45":"b:+v+f//////////8///////8PAAAA","52":"b:+v+f/f////////s///////8PAAAA","188":"b:+v+f//////////8///////8PAAAA","222":"b:+v+f//////////8///////8PAAAA","244":[137],"253":"b:+v+f//////////8///////8PAAAA","259":[137],"266":"b:cP8f4P8+/v/n/wMg//////8PAAAA","284":"b:+v+f//////////8///////8PAAAA","285":"b:+v+f//////////8///////8PAAAA","289":"b:+v+f//////////8///////8PAAAA","290":"b:+v+f//////////8///////8PAAAA","293":[137],"311":"b:+v+f//////////8///////8PAAAA","314":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useCredentialNavigationCommands.ts":{"22":"b:+v////////////////////8PAAAA","40":[137],"41":[137],"44":"b:+v+f//////////8///////8PAAAA","46":[137],"56":[137],"62":[137],"119":"b:+v+f//////////8///////8PAAAA","123":"b:+v+f//////////8///////8PAAAA","130":"b:+v+f//////////8///////8PAAAA","192":[137],"215":"b:ugiA3fD/AQA+BPgfAEAAQMgOAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useDataTableNavigationCommands.ts":{"20":"b:+v////////////////////8PAAAA","44":"b:+v+f//////////8///////8PAAAA","50":[137],"58":[137],"69":[137],"124":"b:+v+f/b////////s///////8PAAAA","128":"b:+v+f//////////8///////8PAAAA","135":"b:+v+f//////////8///////8PAAAA","186":[137]},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useExecutionCommands.ts":{"27":"b:+v////////////////////8PAAAA","38":[98,106,107,108,110,134,135],"40":[98,106,107,108,110,134,135],"46":[98,106,107,108,110,134,135],"51":[98,106,107,108,110,134,135],"73":[98,106,107,108,110,134,135],"79":[98,106,107,108,110,134,135],"209":[98,106,107,108,110,134,135]},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useExecutionNavigationCommands.ts":{"10":"b:+v////////////////////8PAAAA","28":"b:+v+f//////////8///////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useGenericCommands.ts":{"31":"b:+v////////////////////8PAAAA","40":"b:+v+f//////////8///////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useInstanceAiCommands.ts":{"20":"b:+v////////////////////8PAAAA","27":"b:+v+f//////////8///////8PAAAA","54":"b:+v+f//////////8///////8PAAAA","101":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useNodeCommands.ts":{"26":"b:+v////////////////////8PAAAA","43":"b:cP8f4A84/v/n+wMg//////8PAAAA","46":"b:cP8f4A84/v/n+wMg//////8PAAAA","48":"b:cP8f4A84/v/n/wMg//////8PAAAA","52":"b:cP8f4A84/v/n/wMg//////8PAAAA","56":"b:cP8f4A84/v/n/wMg//////8PAAAA","62":"b:cP8f4A84/v/n/wMg//////8PAAAA","91":"b:cP8f4A84/v/n/wMg//////8PAAAA","96":"b:cP8f4A84/v/n/wMg//////8PAAAA","99":"b:cP8f4A84/v/n/wMg//////8PAAAA","107":"b:cP8b4A8w/v/h/wMg//////sPAAAA","136":"b:cP8f4A84/v/n/wMg//////8PAAAA","137":"b:cP8b4A8w/v/h/wMg//////sPAAAA","140":"b:cP8f4A84/v/n/wMg//////8PAAAA","148":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useProjectNavigationCommands.ts":{"16":"b:+v////////////////////8PAAAA","27":[137],"72":"b:qACADCAkAQAgAEAAAAAAAAgCAAAA","78":"b:+v+f//////////8///////8PAAAA","84":"b:+v+f//////////8///////8PAAAA","125":[137]},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useRecentResources.ts":{"32":"b:+v////////////////////8PAAAA","43":"b:+v///f////////v///////8PAAAA","58":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","59":"b:IJoawAwQAMrgaQIAF+/3x5kGAAAA","70":"b:IJ4awA0QAM7haQIAh+3/1wMCAAAA","73":"b:AIIAwAAQAAggCQAABezyRwAAAAAA","89":"b:+v+f//////////8///////8PAAAA","177":"b:+v+f/f////////s///////8PAAAA","181":"b:MMECQAIAAJumKQAAHvryw9kCAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useWorkflowCommands.ts":{"51":"b:+v////////////////////8PAAAA","68":"b:cP8f4A84/v/n+wMg//////8PAAAA","71":"b:cP8f4A84/v/n/wMg//////8PAAAA","73":"b:cP8f4A84/v/n/wMg//////8PAAAA","77":"b:cP8f4A84/v/n/wMg//////8PAAAA","81":"b:cP8f4A84/v/n/wMg//////8PAAAA","84":"b:cP8b4A8w/v/h/wMg//////sPAAAA","85":"b:MKABwAAwAJMhEAAAAEAACQAEAAAA","97":"b:MKABwAAwAJMhEAAAAEAACQAEAAAA","117":"b:cP8f4A84/v/n/wMg//////8PAAAA","300":"b:cP8f4A84/v/n/wMg//////8PAAAA","302":"b:cP8b4A8w/v/h/wMg//////sPAAAA","303":[69,127,128,129],"304":[69,127,128,129],"310":[69,128,129],"320":[69,128,129],"342":"b:cP8f4A84/v/n/wMg//////8PAAAA","383":"b:cP8f4A84/v/n/wMg//////8PAAAA","420":"b:cP8f4A84/v/n/wMg//////8PAAAA","474":"b:cP8f4A84/v/n/wMg//////8PAAAA","484":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useWorkflowNavigationCommands.ts":{"29":"b:+v////////////////////8PAAAA","55":"b:+v+f//////////8///////8PAAAA","57":[137],"65":[137],"74":[137],"161":[137],"162":[137],"167":[137],"168":[137],"206":[137],"220":[137],"242":[137],"302":[137],"312":"b:+v+f/7////////8///////8PAAAA","313":[137],"316":"b:+v+f//////////8///////8PAAAA","320":[137],"323":"b:+v+f//////////8///////8PAAAA","377":[137],"402":"b:+v+f/f////////s///////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/completions/js.snippets.ts":{"8":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/constants.ts":{"467":"b:+v////////////////////8PAAAA","471":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/datatype.completions.ts":{"75":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","163":[112,113,120,122],"179":[112,113,115,120,122],"181":[112,113,115,120,122],"187":[112,113,115,120],"188":[112,113,115,120],"205":[112,113,115,120,122],"208":[112,113,115,120,122],"210":[112,113,115,120,122],"211":[112,113,115,120,122],"215":[115],"240":[112,113,115,120,122],"261":[112,113,115,120,122],"285":[112,113,115,120],"292":[112,113,115,120],"315":[112,113,115,120],"324":[112,113,115,120],"330":[112,113,115,120],"342":[112,113,120],"348":[112,113,120],"353":[112,113,120],"362":[112,113,120],"368":[112,113,115,120],"380":[112,113,115,120],"381":[112,113,115,120],"382":[112,113,115,120],"392":[112,113,115,120,122],"414":[112,113,115,120],"422":[112,113,120,122],"453":[112,113,120,122],"472":[122],"476":[112,113,120],"477":[112,113,120],"527":[112,113,115,120,122],"545":[112,113,115,120,122],"553":[112,113,115,120,122],"561":[112,113,115,120,122],"562":[112,113,115,120,122],"573":[115],"574":[115],"578":[115],"583":[115],"633":[115],"700":[115],"731":[115],"763":[115],"776":[115],"784":[112,113,120],"985":[122],"1077":[122],"1078":[122],"1560":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/infoBoxRenderer.ts":{"6":[115],"18":[115],"31":[115],"64":[122],"76":[115,122],"117":[115],"166":[115],"170":[115],"177":[115],"189":[115],"217":[115],"238":"b:+v////////////////////8PAAAA","239":[115,122]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/utils.ts":{"27":[104,112,113,114,115,120,122],"83":[112,113,115,120,122],"119":[112,113,120,122],"122":[112,113,120,122],"131":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","134":[112,113,120],"143":[112,113,120],"169":"b:AAAAAAAAAAAAAAAAAAEPFQAAAAAA","183":[122],"207":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","232":"b:AIIBAAAQAoBAMEIAAUmPHwAAAAAA","234":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","252":"b:AAAAAAAAAAAAAAAAAAEPFQAAAAAA","269":[112,113,120,122],"271":[112,113,120,122],"274":"b:AAQAIAgAAAAAAAEAxwEvFQAAAAAA","298":"b:AAQAIAgAAAAAAAEAxwEvFQAAAAAA","302":"b:AAQAIAgAAAAAAAEAxwEvFQAAAAAA","303":"b:AAQAIAgAAAAAAAEAxwEvFQAAAAAA","310":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","314":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","315":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","319":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","328":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","353":[112,113,115,120,122],"356":[112,113,115,120,122],"357":[112,113,115,120,122],"358":[112,113,115,120,122],"376":"b:AAAAAAAAAAAAAAAAAAEPFQAAAAAA","432":[112,113,115,120,122],"434":[112,113,115,120,122],"438":[112,113,115,120],"439":[112,113,115,120],"442":[112,113,120,122],"453":"b:+v////////////////////8PAAAA","464":[112,113,120],"481":[112,113,115,120,122]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/format.ts":{"10":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/keymap.ts":{"83":"b:+v////////////////////8PAAAA","100":[113],"261":"b:AAAAAAAAAAAAAAAAAAEvHQAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/multiCursor.ts":{"4":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/resolvableHighlighter.ts":{"61":"b:+v////////////////////8PAAAA","62":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","65":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","75":[104,113,115],"81":[113,120,121,124],"101":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","102":"b:AIIAAAAAAIBAAEIAAEmPHwAAAAAA","115":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","116":[72,104,107,113,114,115,120]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/tooltips/InfoBoxTooltip.ts":{"27":"b:+v////////////////////8PAAAA","28":"b:AIIBAAAQAoBAMQIAAUivHgAAAAAA","44":[112,114,115,122,124],"55":[115],"74":[112,114,115,122,124],"96":"b:AIIBAAAQAoBAMUIAAUivHwAAAAAA","100":"b:AIIBAAAQAoBAMQIAAUivHwAAAAAA","104":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","119":[112,114,115,122,124],"120":[112,114,115,122,124],"143":[112,114,115,122,124],"165":[115],"179":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","227":[112,114,115,122,124],"233":[115],"245":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","253":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","262":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","286":"b:+v////////////////////8PAAAA","290":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","293":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","323":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","331":[115,122],"349":[115],"352":[115],"394":"b:AIYBIAgQAgAAEEEAxwGvGwAAAAAA","406":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","414":"b:AIIBAAAQAgAAMUAAAUiFAgAAAAAA","420":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/facet.ts":{"9":"b:+v////////////////////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/envFeatureFlag/useEnvFeatureFlag.ts":{"5":"b:+v////////////////////8PAAAA","8":"b:+v///f////////v///////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useActionsGeneration.ts":{"31":"b:cP8f4A84/v/n/wMg//////8PgAAA","37":"b:cP8f4A84/v/n/wMg//////8PgAAA","45":"b:cP8f4A84/v/n/wMg//////8PgAAA","48":"b:cP8f4A84/v/n/wMg//////8PgAAA","61":"b:cP8f4A84/v/n/wMg//////8PgAAA","67":"b:cP8f4A84/v/n/wMg//////8PgAAA","82":"b:cP8f4A84/v/n/wMg//////8PgAAA","102":"b:cP8f4A84/v/n/wMg//////8PgAAA","103":"b:cP8f4A84/v/n/wMg//////8PgAAA","106":"b:cP8f4A84/v/n/wMg//////8PgAAA","120":"b:cP8f4A84/v/n/wMg//////8PgAAA","126":"b:cP8f4A84/v/n/wMg//////8PgAAA","130":"b:cP8f4A84/v/n/wMg//////8PgAAA","148":"b:cP8f4A84/v/n/wMg//////8PgAAA","153":"b:cP8f4A84/v/n/wMg//////8PgAAA","161":"b:cP8f4A84/v/n/wMg//////8PgAAA","179":"b:cP8f4A84/v/n/wMg//////8PgAAA","182":"b:cP8f4A84/v/n/wMg//////8PgAAA","203":"b:cP8f4A84/v/n/wMg//////8PgAAA","214":"b:cP8f4A84/v/n/wMg//////8PgAAA","233":"b:cP8f4A84/v/n/wMg//////8PgAAA","235":"b:cP8f4A84/v/n/wMg//////8PgAAA","239":"b:cP8f4A84/v/n/wMg//////8PgAAA","241":"b:cP8f4A84/v/n/wMg//////8PgAAA","242":"b:cP8f4A84/v/n/wMg//////8PgAAA","246":"b:cP8f4A84/v/n/wMg//////8PgAAA","261":"b:cP8f4A84/v/n/wMg//////8PgAAA","271":"b:cP8f4A84/v/n/wMg//////8PgAAA","309":"b:+v////////////////////8PgAAA","310":"b:cP8f4A84/v/n/wMg//////8PgAAA","328":"b:cP8f4A84/v/n/wMg//////8PgAAA","331":"b:cP8f4A84/v/n/wMg//////8PgAAA","342":"b:cP8f4A84/v/n/wMg//////8PgAAA","372":"b:cP8f4A84/v/n/wMg//////8PgAAA","379":"b:cP8f4A84/v/n/wMg//////8PgAAA","401":"b:cP8f4A84/v/n/wMg//////8PgAAA","402":"b:cP8f4A84/v/n/wMg//////8PgAAA","407":"b:cP8f4A84/v/n/wMg//////8PgAAA","413":"b:cP8f4A84/v/n/wMg//////8PgAAA","424":"b:cP8f4A84/v/n/wMg//////8PgAAA","425":"b:cP8f4A84/v/n/wMg//////8PgAAA","429":"b:cP8f4A84/v/n/wMg//////8PgAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useGetNodeCreatorFilter.ts":{"9":"b:+v////////////////////8PAAAA","13":[15,16,49,119,120],"30":[15,16,49,119,120],"49":[15,49,119]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useViewStacks.ts":{"106":"b:+v////////////////////8PAAAA","113":"b:cP8f4A84/v/l/wMg//////8PAAAA","122":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","154":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","161":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","174":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","178":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","182":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","185":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","189":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","193":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","197":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","198":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","204":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","222":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","223":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","236":[11,35,51],"251":[51,52],"253":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","257":[15,16,44,49,76,119,120],"258":[15,16,44,49,76,119,120],"269":[15,16,49,119,120],"270":[15,16,49,119],"284":[15,49,119],"292":[15,49,119],"293":[15,49,119],"296":[15,49,119],"310":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","315":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","327":[15,16,44,49,119,120],"368":[15,49,119],"400":[15,49,119],"415":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","416":"b:cIoZoAkw/k4h0AAgxy3vfSoCAAAA","432":[15,16,49,119,120],"451":[15,16,49,119,120],"481":[15,16,49,119,120],"497":[15,49,119],"504":[15,16,49,119,120],"518":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","547":[51],"548":[51],"569":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","591":[51,53],"598":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","600":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","604":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","613":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/nodeCreator.store.ts":{"49":"b:+v////////////////////8PAAAA","51":"b:AAoAIAAAyAAgAAAARAmEAYACAAAA","71":[15,16,49,119,120],"72":[15,16,49,119,120],"75":"b:cP8f4A84/v/l/wMg//////8PAAAA","83":"b:cP8f4A84/v/l/wMg//////8PAAAA","87":"b:cP9/4A84/v/l/wPg//////8PAAAA","91":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","95":[119,120],"116":[119,120],"141":"b:cP9/4A84/v/n/wPg//////8PAAAA","180":"b:AIABIAAAOgAAwAAAAyCAEQAAAAAA","269":"b:AAoAIAAAyAAgAAAARAkEAIACAAAA","329":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","335":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","339":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","346":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","366":"b:QIgZgAkwEAYhQAAgxw2vPSIAAAAA","382":"b:QIgZgAkwEAYhQAAgxw2vPSIAAAAA","422":[54],"426":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","439":[15,49,51,52],"446":"b:cIoZoAkw/k4h0AAgxy2vfaoCAAAA","462":"b:cP9/4A84/v/n/wPg//////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/tags/tags.api.ts":{"8":"b:+v////////////////////8PgAAA","10":"b:+v+f/b////////s///////8PgAAA","13":[151,80,126,130,136],"19":[151],"26":[151,130]},"packages/frontend/editor-ui/src/features/shared/tags/tags.store.ts":{"15":"b:+v////////////////////8PgAAA","19":"b:+v////////////////////8PgAAA","31":[151,65,130,137],"32":[151,130,137],"35":[151,65,130,137],"37":[151],"41":"b:+v+f/b////////s///////8PgAAA","42":"b:AAAAAAAAAAAAAAAAAAAKQAQLgAAA","50":"b:cMdzQA4gALvjaQGAnvrzw90PgAAA","51":[151,80,126,130,136],"72":[151,130],"77":"b:+v+f/f////////s///////8PgAAA","96":[151,80,126,130,136],"104":[151],"115":[151],"121":[151,130]},"packages/frontend/editor-ui/src/features/workflows/canvas/canvas.types.ts":{"24":"b:+v////////////////////8PgAAA","51":"b:+v////////////////////8PgAAA","154":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/canvas.utils.ts":{"37":"b:cP974A8w/v/h/wOg3/////sPgAAA","46":"b:MP974A8w1r/h/wOg3////+sNgAAA","47":"b:cP974A8w/v/h/wOg3/////sPgAAA","49":"b:MP974A8w1r/h/wOg3////+sNgAAA","50":"b:cP974A8w/v/h/wOg3/////sPgAAA","66":"b:cP9/4A84/v/n/wPg//////8PgAAA","83":"b:cP9/4A84/v/n/wPg//////8PgAAA","106":[151],"114":"b:cP9/4A84/v/n/wPg//////8PgAAA","119":"b:cP9/4A84/v/n/wPg//////8PgAAA","121":"b:MP974A8w1r/h/wPg3////+sNgAAA","127":"b:MP974A8w1r/h/wPg3////+sNgAAA","129":"b:MP974A8w1r/h/wPg3////+sNgAAA","130":"b:MP974A8w1r/h/wPg3////+sNgAAA","187":[151,102,128],"219":"b:cP974A8w/v/h/wPg/////+sPgAAA","239":"b:cP974A8w/v/h/wPg//////sPgAAA","254":"b:MP974A8w1r/h/wPg3////+sNgAAA","261":"b:ML4ZoA0w1i5h0gMg92XvfSsBgAAA","295":"b:cP974A8w/v/h/wPg//////sPgAAA","304":"b:cP974A8w/v/h/wPg3/////sPgAAA","312":"b:cP974A8w/v/h/wPg3/////sPgAAA","329":[151,79,101,127],"347":"b:cP9/4A84/v/n/wPg//////8PgAAA","364":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","374":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","378":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","392":"b:KLYAoASQRCBM0mOQd2D0RfkPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupOperationGuards.ts":{"54":"b:+v////////////////////8PAAAA","57":[100],"60":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","68":[100],"105":[100],"127":[100],"139":[100],"142":[100],"226":[100],"236":[100],"252":[100],"270":[100],"293":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","338":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/experimentalNdv.store.ts":{"17":"b:+v////////////////////8PAAAA","19":"b:cP9/4A84/v/l/wPg//////8PAAAA","24":"b:cP9/4A84/v/l/4Oh//////8PAAAA","54":"b:cP9/4A84/v/n/wPg//////8PAAAA","62":[13,80,99],"140":"b:cP9/4A84/v/l/wPg//////8PAAAA","141":"b:cP9/4A84/v/l/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/workflows/readyToRun/components/ReadyToRunButton.vue":{"13":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","25":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","31":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","53":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/workflows/readyToRun/composables/useEmptyStateDetection.ts":{"9":"b:+P+f/Q/8/////3O0//////8PAAAA","22":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/workflows/readyToRun/stores/readyToRun.store.ts":{"22":"b:+P+f/Q/8/////3O0//////8PAAAA","59":"b:+P+f/Q/8/////3O0//////8PAAAA","66":"b:+P+f/Q/8/////3O0//////8PAAAA","74":"b:+P+f/Q/8/////3O0//////8PAAAA","90":"b:+P+f/Q/8/////3O0//////8PAAAA","91":"b:+P+f/Q/8/////3O0//////8PAAAA","110":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","208":"b:uAiA3QDwAQA+AHAUAAIAQBgKAAAA","220":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","224":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/features/workflows/templates/templates.store.ts":{"48":[139],"54":"b:+v////////////////////8PAAAA","89":[139],"90":[139],"95":[138],"96":[138],"99":[138,139],"100":[138,139],"106":[138],"108":[139],"109":[139],"112":[139],"113":[139],"120":[139],"124":[139],"125":[139],"132":[139],"136":[139],"137":[139],"165":"b:+P+f/Q/8/////3M0//////8PAAAA","169":"b:+P+f/Q/8/////3M0//////8PAAAA","178":"b:+P+f/Q/8/////3M0//////8PAAAA","193":"b:+P+f/Q/8/////3M0//////8PAAAA","198":[120],"205":[139],"209":[138,139],"212":[138,139],"213":[138,139],"224":[138,139],"225":[138,139],"231":[139],"235":[139],"243":[139],"248":[139],"293":"b:+v///f////////v///////8PAAAA","298":[74,138,139],"304":[138,139],"320":[138],"338":[139],"354":[139],"369":[139],"374":[139],"420":[74,138,139],"428":[74,138,139],"436":[74,138,139]},"packages/frontend/editor-ui/src/features/workflows/templates/utils/typeGuards.ts":{"8":[151,138],"14":[151,138],"20":"b:+v////////////////////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/templates/utils/workflowSamples.ts":{"14":"b:+v////////////////////8PgAAA","22":"b:+v////////////////////8PgAAA","26":"b:+v////////////////////8PgAAA","43":[151],"54":[151],"94":[151],"100":[151],"103":[151]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/workflowHistory.store.ts":{"22":"b:+v////////////////////8PAAAA","28":[105],"30":[105],"34":[105],"38":[105],"44":"b:ACAAAAAAAAAAAAAABF4AAMAAAAAA"},"packages/localhost-44589/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[25,85,99,124,132]},"packages/localhost-44589/assets/chunk-CC9Q-vWm.js":{"8":[25,85,99,124,132],"9":[25,85,99,124,132],"10":[25,85,99,124,132],"19":[25,85,99,124,132],"23":[25,85,99,124,132],"29":[25,85,99,124,132],"33":[25,85,99,124,132],"34":[25,85,99,124,132]},"packages/vite/source-map-js-shim.ts":{"1":"b:+v////////////////////8PAAAA"},"packages/@n8n/chat-hub/src/artifact.ts":{"3":[36,37,38,39,41,42],"19":[36,37,38]},"packages/@n8n/chat-hub/src/parser.ts":{"12":[36,37,38,39,41,42],"117":[36,37,38,39,41,42],"134":[36,37,38,39,41,42],"159":[36,37,38],"187":[36,37,38],"217":[36,37,38],"250":[36,37,38,39,41,42],"275":[36,37,38]},"packages/@n8n/design-system/src/components/N8nActionDropdown/ActionDropdown.vue":{"14":"b:8P8f4P++///n/wOg//////8PAAAA","49":"b:8P8f4P++///n/wOg//////8PAAAA","54":"b:8P8f4P++///n/wOg//////8PAAAA","59":"b:8P8f4P++///n/wOg//////8PAAAA","67":"b:8P8f4P++///n/wOg//////8PAAAA","68":"b:8P8f4P++///n/wOg//////8PAAAA","86":"b:0BYAAISAACBCggMAQEBgRRABAAAA","87":"b:0BYAAISAACBCggMAQEBgRRABAAAA","97":"b:8P8f4P++///n/wOg//////8PAAAA","104":"b:8P8f4P++///n/wOg//////8PAAAA","128":"b:8P8f4P++///n/wOg//////8PAAAA","141":"b:0BYAAISAACBCggMAQEBgRRABAAAA","149":"b:0BYAAISAACBCggMAQEBgRRABAAAA","151":"b:UBYAAISAACBCggMAQEBgRBABAAAA","156":"b:0BYAAISAACBCggMAQEBgRRABAAAA"},"packages/@n8n/design-system/src/components/N8nCard/Card.vue":{"9":"b:OACAibDwAQA+ANAVAAIAQBgKAAAA","14":"b:OACAibDwAQA+ANAVAAIAQBgKAAAA","19":"b:OACAibDwAQA+ANAVAAIAQBgKAAAA"},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenuItem.vue":{"25":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","81":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","82":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","84":[37,38,39,65,66,67],"110":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","114":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","118":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","122":"b:gAgAAAERAQA/AEgBAAAAEAACAAAA","124":[37,38,39],"128":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","135":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","143":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","144":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","152":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","162":[37,38,39,65,66,67],"167":[37,38,39,65,66,67],"175":[65,66,67],"205":[37,38,39,65,66,67],"212":[37,38,39],"238":[37,38,39],"240":[37,38,39],"248":[37,38,39],"251":[37,38,39],"254":[37,38,39],"280":"b:0B4AAOWRASB/gksBQEBgVRADAAAA","282":"b:0B4AAIURASB/gksBQEBgVRADAAAA","294":"b:gAgAAAERAQA/AEgBAAAAEAACAAAA","299":"b:gAgAAAERAQA/AEgBAAAAEAACAAAA"},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenuSearch.vue":{"17":[37,38,39],"71":[37,38,39],"76":[37,38,39]},"packages/@n8n/design-system/src/components/N8nIcon/custom/filled-square.svg":{"10":"b:AD4EAPAGAAAAAAAAAAAAAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nIconPicker/IconPicker.vue":{"26":[23,39,42,48,3,69,86,5,131,137],"59":[69],"61":[69],"118":[23,39,42,48,3,69,5,131,137],"122":[69],"135":[69],"142":[69],"148":[69],"155":[69],"158":[69],"167":[23,39,42,48,3,69,86,5,131,137],"189":[23,39,42,48,3,69,86,5,131,137],"212":[69],"228":[69],"233":[69],"263":[69],"274":[69],"278":[69]},"packages/@n8n/design-system/src/components/N8nLogo/Logo.vue":{"8":"b:AAAAHfAOAQAwAAAEAAAAAAgAAAAA","24":"b:AAAAHfAOAQAwAAAEAAAAAAgAAAAA","30":"b:AAAAHfAOAQAwAAAEAAAAAAgAAAAA","42":"b:AAAAHfAOAQAwAAAEAAAAAAgAAAAA","57":"b:AAAAHfAOAQAwAAAEAAAAAAgAAAAA"},"packages/@n8n/design-system/src/components/N8nLogo/logo-icon.svg":{"11":"b:AAAAHfAOAQAwAAAEAAAAAAgAAAAA"},"packages/@n8n/design-system/src/components/N8nLogo/logo-text.svg":{"11":"b:AAAAHfAOAQAwAAAEAAAAAAgAAAAA"},"packages/@n8n/design-system/src/components/N8nNodeIcon/IconContent.vue":{"20":"b:cP974P93/v/x/0Pw3/////sPAAAA","34":"b:cP974A8y/v/h+0Pg3/////sPAAAA","53":"b:cP974A8y/v/h+0Pg3/////sPAAAA","56":"b:cP974P93/v/x/0Pw3/////sPAAAA"},"packages/@n8n/design-system/src/components/N8nNodeIcon/NodeIcon.vue":{"24":"b:cP974P93/v/x/0Pw3/////sPAAAA","28":"b:cP974P93/v/x/0Pw3/////sPAAAA","43":"b:cP974P93/v/x/0Pw3/////sPAAAA","59":"b:MJ5b4A0w1s7h+QMgx+3//ysOAAAA"},"packages/@n8n/utils/src/assert.ts":{"4":"b:IJYFgKBxAAAgEMARAAAACQAMAAAA"},"packages/@n8n/utils/src/retry.ts":{"46":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/app/composables/useFreeAiCredits.ts":{"24":"b:MJ5b4P131s7h+UMwz+3//ysGAAAA","26":[36,37,38,39,41,42],"38":"b:MJ5b4P131s7h+UMwz+3//ysGAAAA"},"packages/frontend/editor-ui/src/app/composables/useResizablePanel.ts":{"51":[65],"61":[65],"62":[65],"63":"b:cP8f4P8+/v/n/wOg//////8PAAAA","92":[65],"96":"b:cP8f4P8+/v/n/wOg//////8PAAAA","100":[65],"104":"b:cP8f4P8+/v/n/wOg//////8PAAAA","108":[65],"125":[65],"138":"b:cP8f4P8+/v/n/wOg//////8PAAAA","139":"b:cP8f4P8+/v/n/wOg//////8PAAAA","145":"b:cP8f4P8+/v/n/wOg//////8PAAAA","153":"b:AMACAIAAAAAAIAAgBF4AQNAAAAAA","159":"b:cP8f4P8+/v/n/wOg//////8PAAAA","160":[14,15,16,17,65,77,95,110],"161":[14,15,16,17,65,77,110]},"packages/frontend/editor-ui/src/app/constants/localStorage.ts":{"22":[36,37,38,39,41,42],"24":[36,37,38,39,41,42],"30":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/app/layouts/ChatLayout.vue":{"8":[36,37,38,39,41,42],"10":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/app/utils/nodeTypesUtils.ts":{"43":"b:IIgBgCBxggAgEEAQAAAACQAEgAAA","46":"b:IIgBgCBxggAgEEAQAAAACQAEgAAA","54":"b:MPgb4Acy1pfhvQAgRe2gryAPgAAA","58":[151,74,120,123,138],"61":[151,74,120,123,138],"65":"b:AAAAIAEAAAABAAAAAIAgBAAKgAAA","77":"b:cP974A8w/v/h/wPg//////sPgAAA","111":[151,20,50,56,57,61,64,117],"122":[151,20,50,56,57,61,64,117],"134":"b:cP8f4A84/v/n/wMg//////8PgAAA","135":"b:cP8b4A8w/v/h/wMg3/////sPgAAA","140":[151,138,139],"141":[151,138,139],"142":[151,138,139],"146":[151,138,139],"149":"b:AAAAAAAAAAAAAEAAAAAPHQIAgAAA","150":"b:AAAAAAAAAAAAAEAAAAAPHQAAgAAA","153":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","173":"b:MP5b4A0w1s7h+QMgz+3//ysCgAAA","174":"b:AMZaAAQAAM7BaAIAiu1/lwEAgAAA","182":"b:MIgBgAAQFAAgEAAgAECgCSMAgAAA","194":"b:MKgB4AEy1gZhEQAgBEGgLyAAgAAA","214":"b:MK4ToAkS1s7h+YMhz+n//ysCgAAA","221":"b:MCgAoAEQFAIhAQAAAAAgLyAAgAAA","224":"b:MCgAoAEQEAIhAQAAAAAgLyAAgAAA","241":"b:AK4TIAkS1s7heYMhz+n//ysAgAAA","246":"b:AKgBIAECxgZBEAAgBEGAAQAAgAAA","250":[151,29,32,50,57,64],"255":[151,29,32,50,57,64],"257":[151,29,32,50,57,64],"274":"b:MK4BgCBxgAAgEEAQAAAACQAEgAAA","288":[11,13,151,31,44,69,4,5,120,123],"292":[11,13,151,31,44,69,4,5,120,123],"295":[11,13,151,31,44,69,4,5,120,123],"322":[11,13,151,31,44,69,4,5,120,123],"331":[13,151],"337":[13,151],"346":[11,13,151,31,44,69,4,5,120,123],"353":[11,13,151,31,44,69,4,5,120,123],"359":"b:MKgBgAAQgAAgEAAAAAAACQAAgAAA","368":[11,13,151,31,44,69,4,5,120,123],"376":"b:MCgAoAAQFAAgAQAAAAAgLyAAgAAA","381":"b:MCgAoAAQFAAgAQAAAAAgLyAAgAAA","393":"b:MK4ToAkS1s7heYMhz+n//ysAgAAA","399":"b:MKgBoAES1gZhEQAgBEGgLyAAgAAA","401":"b:MCgAoAEQFAIhAQAAAAAgLyAAgAAA","402":"b:MCgAoAEQFAIhAQAAAAAgLyAAgAAA","404":"b:MCgAoAEQFAIhAQAAAAAgLyAAgAAA","420":"b:MCgAoAEQFAIhAQAAAAAgLyAAgAAA","443":[151,31,44,69,4,5,120,123],"469":"b:MCgAoAAQFAAgAQAAAAAgLyAAgAAA","478":[151],"479":[151],"491":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","498":[151,124],"511":[151,124],"520":[151,124],"547":[151,124],"559":"b:cP974P93/v/x/0Pw3/////sPgAAA"},"packages/frontend/editor-ui/src/features/ai/chatHub/ChatPersonalAgentsView.vue":{"38":[39],"39":[39],"40":[39],"42":[39],"51":[39],"66":[39],"78":[39],"79":[39],"87":[39],"110":[39],"129":[39],"133":[39],"140":[39],"145":[39],"158":[39],"159":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/ChatView.vue":{"76":[36,37,38,39,41,42],"84":[36,37,38,39,41,42],"91":[36,37,38,39,41,42],"94":[36,37,38,39,41,42],"96":[36,37,38,39,41,42],"99":[36,37,38,39,41,42],"101":[36,37,38,39,41,42],"106":[36,37,38,39,41,42],"108":[36,37,38,39,41,42],"134":[36,37],"141":[36,37,38,39,41,42],"146":[36,37,38,39,41,42],"150":[36,37,38,39,41,42],"182":[36,37,38,39,41,42],"214":[36,37,38,39,41,42],"218":[36,37,38,39,41,42],"225":[36,37,38,39,41],"236":[41],"245":[36,37,38,39,41,42],"253":[36,37,38,39,41,42],"258":[36,37,38,39,41,42],"267":[36,37,38,39,41,42],"293":[36,37,38,39,41,42],"308":[36,37,38,39,41,42],"323":[36,37,38,39,41,42],"335":[36,37,38,39,41,42],"363":[36,37,38,39,41,42],"364":[36,37,38,39,41,42],"382":[36,37,38,39,41,42],"400":[36,37,38,39,41,42],"408":[36,37,38,39,41,42],"417":[36,37,38,39,41,42],"428":[36,37,38,39,41,42],"448":[36,37,38,39,41,42],"464":[36,37,38,39,41,42],"472":[36,37,38,39,41,42],"483":[36,37,38,39,41,42],"517":[37],"525":[37],"553":[37],"576":[36,37,38,39,41],"600":[36,37,38,39,41],"604":[37],"628":[39],"707":[36,37,38,39,41,42],"736":[36,37,38,39,41,42],"748":[36,37,38,39,41,42],"769":[37]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.api.ts":{"32":[36,37,38,39,40,41,42],"44":[36,37,38,39,41,42],"79":[37],"120":[37],"160":[36,37,38,39,41,42],"183":[36,37,38,39,41,42],"232":[36,37,38,39,41,42],"240":[39],"248":[39],"256":[39],"265":[39],"299":[40],"309":[40],"322":[40],"340":[36],"395":[36,37,38,39,41,42],"399":[41]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.utils.ts":{"25":[36,37,38,39,41,42],"46":[36,37,38,39,41,42],"64":[36,37,38,39,41,42],"71":[36,37,39,41,42],"82":[39,42],"110":[36,37,38,39,41,42],"122":[36,37,38,39,41,42],"158":[39,42],"196":[36,37,38,39,41,42],"200":[37,38,39],"215":[36,37,38,39,41,42],"227":[36,37,38,39,41,42],"280":[36,37,38,39,41,42],"331":[36,37,38,39,41,42],"335":[36,37,38,39,41,42],"341":[36,37,38,39,41,42],"352":[36,37,38,39,41],"361":[36,37,38,39,41],"381":[36,37,38,39,41,42],"412":[36,37,38,39,41,42],"442":[36,37,38,39,41,42],"459":[36],"467":[36],"487":[36,37,38,39,41,42],"491":[36,37,38,39,41,42],"505":[36,37,38,39,41,42],"515":[36,37,38,39,41,42],"608":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/AgentEditorModal.vue":{"116":[39],"119":[39],"125":[39],"126":[39],"127":[39],"132":[39],"138":[39],"145":[39],"152":[39],"156":[39],"162":[39],"172":[39],"195":[39],"197":[39],"210":[39],"238":[39],"243":[39],"426":[39],"435":[39],"449":[39],"471":[39],"485":[39],"520":[39],"540":[39],"555":[39],"571":[39],"581":[39],"600":[39],"687":[39],"690":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatAgentAvatar.vue":{"22":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatAgentCard.vue":{"24":[39,42],"30":[39,42],"36":[39],"43":[39,42],"53":[39,42],"56":[39,42],"74":[39],"76":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatAgentSearchSort.vue":{"8":[39,42],"18":[39,42],"27":[39,42],"45":[39,42],"57":[39,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatConversationHeader.vue":{"47":[36,37,38,39,41,42],"65":[36,37,38,39,41,42],"67":[36,37,38,39,41,42],"85":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatGreetings.vue":{"22":[36,37,38,39,41,42],"38":[39,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatMessage.vue":{"68":[36,37,38,39,41,42],"96":[36,37,38,39,41,42],"116":[36,37,38,39,41,42],"117":[36,37,38,39,41,42],"144":[36,37,38,39,41,42],"149":[36,37,38,39,41,42],"150":[36,37,38,39,41,42],"159":[36,37,38,39,41,42],"169":[36,37,38,39,41,42],"170":[36],"181":[37],"188":[36,37,38,39,41,42],"190":[36,37,38,39,41,42],"198":[36,37,38,39,41,42],"200":[37],"208":[37],"276":[37],"290":[37],"295":[36,37,38,39,41,42],"296":[36,37,38,39,41,42],"307":[36,37,38,39,41,42],"309":[37],"317":[36,37,38,39,41,42],"320":[36,37,38,39,41,42],"389":[37],"397":[37],"407":[36],"419":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatMessageActions.vue":{"13":[36,37,38,39,41,42],"31":[37],"32":[37],"35":[36,37,38,39,41,42],"37":[36,37,38,39,41,42],"52":[36,37,38,39,41,42],"53":[36,37,38,39,41,42],"55":[37],"59":[37],"65":[36,37,38,39,41,42],"126":[37],"129":[37]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatPrompt.vue":{"18":[36,37,38,39,41,42],"59":[36,37,38,39,41,42],"71":[36,37,38,39,41,42],"75":[36,37,38,39,41,42],"79":[36,37,38,39,41,42],"81":[36,37,38,39,41,42],"82":[36,37,38,39,41,42],"104":[36],"150":[36,37,38,39,41,42],"208":[36,37,38,39,41,42],"209":[36,37,38,39,41,42],"225":[36,37,38,39,41,42],"286":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatPromptCallouts.vue":{"19":[36,37,38,39,41,42],"35":[37],"45":[37],"62":[41],"72":[41],"81":[41]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatPromptFull.vue":{"10":[36,37,38,39,41,42],"55":[36],"71":[36,37,38,39,41,42],"75":[36,37,38,39,41,42],"87":[36,37,38,39,41,42],"103":[36,37,38,39,41,42],"112":[36,37,38,39,41,42],"125":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatProviderAvatar.vue":{"13":[37,38,39],"23":[37,38,39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSessionMenuItem.vue":{"20":[36,37,38,39,41,42],"34":[36,37,38,39,41,42],"44":[36,37,38,39,41,42],"87":[36,37,38,39,41,42],"89":[36,37,38,39,41,42],"101":[36,37,38,39,41,42],"122":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSidebar.vue":{"15":[36,37,38,39,41,42],"45":[36,37,38,39,41,42],"55":[36,37,38,39,41,42],"56":[36,37,38,39,41,42],"65":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSidebarContent.vue":{"25":[36,37,38,39,41,42],"32":[36,37,38,39,41,42],"39":[36,37,38,39,41,42],"43":[36,37,38,39,41,42],"45":[36,37,38,39,41,42],"57":[36,37,38,39,41,42],"69":[36,37,38,39,41,42],"80":[36,37,38,39,41,42],"138":[36,37,38,39,41,42],"141":[36,37,38,39,41,42],"156":[36,37,38,39,41,42],"176":[36,37,38,39,41,42],"181":[36,37,38,39,41,42],"184":[36,37,38,39,41,42],"195":[36,37,38,39,41,42],"199":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSidebarLink.vue":{"26":[36,37,38,39,41,42],"45":[36,37,38,39,41,42],"62":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatStarter.vue":{"36":[36,37,38,39,41,42],"38":[36,37,39],"42":[36,37,39],"46":[36,37,39],"47":[36,37,39],"49":[36,37,39],"59":[36,37,38,39,41,42],"67":[36,37,39],"80":[36,37,39],"97":[36,37,39],"111":[36,37,39],"133":[36,37,39],"148":[36,37,39],"159":[36,37,39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatTypingIndicator.vue":{"2":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CopyButton.vue":{"12":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ModelSelector.vue":{"58":[36,37,38,39,41,42],"82":[36,37,38,39,41,42],"88":[36,37,38,39,41,42],"89":[36,37,38,39,41,42],"97":[36,37,38,39,41,42],"107":[36,37,38,39,41,42],"109":[36,37,38,39,41,42],"113":[37],"117":[37,38],"148":[37,38,39],"179":[37,38,39],"188":[36,37,38,39,41,42],"207":[36,37,38,39,41,42],"215":[37,38,39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/SkeletonMenuItem.vue":{"2":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/SuggestedPromptsEditor.vue":{"9":[39],"51":[39],"92":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ToolsSelector.vue":{"32":[41],"34":[36,37,38,39,41,42],"36":[41],"39":[41],"41":[41],"45":[41],"50":[36,37,38,39,41,42],"53":[41],"62":[41],"104":[41],"108":[41],"116":[41],"153":[36,37,38,39,41,42],"166":[36,37,38,39,41,42],"175":[36,37,38,39,41,42],"197":[41],"204":[41],"207":[41]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatArtifacts.ts":{"6":[36,37,38,39,41,42],"12":[36,37,38,39,41,42],"13":[36,37,38,39,41,42],"21":[36,37,38,39,41,42],"24":[36,37,38,39,41,42],"31":[36,37,38,39,41,42],"81":[36,37,38,39,41,42],"82":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatCredentials.ts":{"18":[36,37,38,39,41,42],"38":[36,37,38,39,41,42],"43":[36,37,38,39,41,42],"47":[36,37,38,39,41,42],"49":[36,37,38,39,41,42],"72":[37,42],"81":[36,37,38,39,41,42],"83":[36,37,38,39,41,42],"100":[36,37,38,39,41,42],"102":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatHubMarkdownOptions.ts":{"25":[65],"40":[36,37,38,39,41,42,65],"56":[36,37,38,39,41,42,65],"75":[36,37,38,39,41,42,65],"85":[36,65],"104":[65],"116":[65],"117":[65],"138":[36,37,38,39,41,42,65],"139":[36,37,38,39,41,42,65],"141":[65],"144":[65],"156":[36,37,38,39,41,42,65],"161":[36,65],"179":[36,37,38,39,41,42,65],"183":[65],"190":[65],"199":[36,37,38,39,41,42,65],"206":[36,37,38,39,41,42,65],"215":[65],"226":[65],"227":[65],"228":[65],"229":[65],"230":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatInputFocus.ts":{"13":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatPushHandler.ts":{"31":[36,37,38,39,41,42],"42":[36,37,38,39,41,42],"50":[36,37,38,39,41,42],"62":[36,37,38,39,41,42],"93":[36,37,38,39],"118":[36,37,38,39,41,42],"133":[41,42],"148":[36,37,38,39,41,42],"155":[37],"162":[36,37,38,39,41,42],"179":[36,37,38,39,41,42],"211":[36,37,38,39,41,42],"220":[36,37,38,39,41,42],"222":[36,37,38,39,41,42],"233":[39],"268":[36,37,39,41]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatSession.ts":{"29":[36,37,38,39,41,42],"37":[36,37,38,39,41,42],"41":[39],"46":[36,37,38,39,41,42],"47":[36,37,38,39,41,42],"51":[36,37,38,39,41,42],"71":[36,37,38,39,41,42],"78":[36,37],"85":[36,37,38,39,41,42],"95":[36,37,38,39,41,42],"111":[36,37,38,39,41,42],"112":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useCustomAgent.ts":{"7":[36,37,38,39,41,42],"8":[36,37,38,39,41],"18":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useDynamicCredentialsStatus.ts":{"29":[36,37,38,39,41,42],"35":[36,37,38,39,41,42],"36":[36,37,38,39,41,42],"170":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useFileDrop.ts":{"3":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/chatHub/model-selector.utils.ts":{"115":[36,37,38,39,41,42],"129":[36,37,38,39,41,42],"139":[39],"167":[42],"179":[42],"196":[36,37,38,39,41,42],"220":[36,37,38,39,41,42],"264":[36,37,38,39,41,42],"271":[36,37,38,39,41,42],"281":[36,37,38,39,41,42],"331":[36,37,38,39,41,42],"373":[36,37,38,39,41,42],"390":[36,37,38,39,41,42]},"packages/frontend/editor-ui/src/features/ai/modelSelector/AiModelSelectorDropdown.vue":{"56":[36,37,38,39,41,42],"60":[37,38,39],"66":[37,38,39],"90":[36,37,38,39,41,42],"109":[36,37,38,39,41],"129":[37,38,39],"143":[37,38,39],"160":[37,38,39]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialIcon.vue":{"24":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA","26":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA","30":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA","38":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA","49":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA","55":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA","65":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA","75":"b:IKgBgPB3ggAwEEAQAAAACQAEAAAA"},"packages/localhost-33345/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[38,39,40]},"packages/localhost-33345/assets/chunk-CC9Q-vWm.js":{"8":[38,39,40],"9":[38,39,40],"10":[38,39,40],"19":[38,39,40],"23":[38,39,40],"29":[38,39,40],"33":[38,39,40],"34":[38,39,40]},"packages/@n8n/api-types/src/dto/project/list-projects-query.dto.ts":{"13":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA","14":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA","17":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA","26":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA","34":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA","35":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA","38":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA","41":"b:6ACAAAAlAAA4AEAAAAAAAAgCAAAA"},"packages/@n8n/backend-common/src/logging/logger.ts":{"20":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","30":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","41":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","71":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","76":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","88":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","109":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","130":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","142":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","151":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","159":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","163":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","169":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","170":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","176":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","182":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","192":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","195":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","198":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","208":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","214":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","221":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","223":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","231":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","245":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","264":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","268":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","272":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","276":"b:AABgAAAVAQAAAFAMAAAACABsAoAB","284":"b:AABgAAAVAQAAAFAMAAAACABsAoAB"},"packages/@n8n/backend-common/src/modules/module-registry.ts":{"26":[40,156,157],"65":[40,156,157],"68":[40,156,157],"74":[40,156,157],"85":[40,156,157],"143":[40,156,157],"181":[40,156,157],"200":[40,156,157],"216":[40,156,157],"220":[40,156,157]},"packages/@n8n/db/src/repositories/credential-dependency.repository.ts":{"25":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","62":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","66":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","75":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","78":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","93":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","103":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","116":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","117":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","118":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","138":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","149":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA"},"packages/@n8n/db/src/repositories/credentials.repository.ts":{"16":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","20":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","27":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","45":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","63":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","134":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","174":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","191":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","220":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","245":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","261":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","272":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","284":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","292":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","304":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","344":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","422":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","424":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","428":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA","446":"b:MPsGoP99urX2HEAQGlAAAYgUMAAA"},"packages/@n8n/db/src/repositories/project-relation.repository.ts":{"9":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","13":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","27":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","35":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","38":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","43":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","49":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","56":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","62":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","70":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","76":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A","79":"b:/tMKDH4hAJXgCAAABFwCEYjwEC8A"},"packages/@n8n/db/src/repositories/secrets-provider-connection.repository.ee.ts":{"8":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","12":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","16":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","25":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","33":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","36":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","55":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","89":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","119":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","125":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","140":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","164":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","182":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","190":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","200":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","210":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA","222":"b:OKiAwHB1gJMwEEAQAEAAAQgGJIAA"},"packages/@n8n/decorators/src/module/module-metadata.ts":{"17":[40,156,157],"20":[40,156,157],"24":[40,156,157],"28":[40,156,157],"32":[40,156,157],"33":[40,156,157]},"packages/cli/src/credentials/credential-dependency.service.ts":{"19":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","24":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","39":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","46":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","64":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","82":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","98":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA"},"packages/cli/src/credentials/credentials.controller.ts":{"54":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","70":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","85":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","95":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","103":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","117":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","144":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","157":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","199":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","242":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","338":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","378":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","384":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","400":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","401":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","404":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","405":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","435":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","441":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","477":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA","484":"b:MPsW4H99kpOwFMARCFAAAYgEJIAA"},"packages/cli/src/credentials/credentials.service.ts":{"124":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","153":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","157":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","161":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","166":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","174":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","187":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","188":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","197":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","228":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","297":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","358":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","441":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","482":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","518":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","532":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","534":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","535":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","539":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","542":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","547":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","550":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","554":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","579":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","594":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","595":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","600":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","605":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","607":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","608":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","613":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","614":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","618":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","637":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","644":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","657":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","674":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","701":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","711":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","760":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","786":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","807":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","815":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","837":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","854":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","868":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","922":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","938":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","942":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","953":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","975":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","989":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1003":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1018":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1062":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1077":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1078":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1081":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1090":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1093":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1106":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1115":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1136":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1146":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1171":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1231":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1233":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1252":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1261":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1269":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1270":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1281":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1282":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1287":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1294":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1302":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1323":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1332":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1370":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1398":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1402":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA","1465":"b:sPsW4P99UpfxFMCRGnGAEYgUtIEA"},"packages/cli/src/credentials/validation.ts":{"19":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","26":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","54":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","90":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","133":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","151":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","152":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA","164":"b:MKAAwHBxAJMwEEAQAEAAAAAEJIAA"},"packages/cli/src/credentials-helper.ts":{"69":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","72":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","75":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","87":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","103":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","134":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","135":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","161":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","171":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","222":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","238":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","267":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","274":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","290":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","316":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","335":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","376":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","475":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","584":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","609":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA","663":"b:MKAA4HBxAJMwEEARAEAgCQAMJIQA"},"packages/cli/src/errors/http-error-classifier.ts":{"6":"b:AABgAAARAQAAABAMAAAACABsAoAD","41":"b:AABgAAARAQAAABAMAAAACABsAoAD","58":"b:AABgAAARAQAAABAMAAAACABsAoAD"},"packages/cli/src/errors/http-error-serializers.ts":{"13":"b:AABgAAARAQAAABAMAAAACABsAoAD","51":"b:AABgAAARAQAAABAMAAAACABsAoAD"},"packages/cli/src/errors/response-errors/abstract/response.error.ts":{"19":"b:AABgAAARAAAAABAEAAAAAAAgApAD"},"packages/cli/src/errors/response-errors/not-found.error.ts":{"4":"b:AABgAAAFAAAwAAAAAAAAAAAgIIAC","14":"b:AABgAAAFAAAwAAAAAAAAAAAgIIAC"},"packages/cli/src/generic-helpers.ts":{"13":"b:ANsGgA81EpGwBAAACFAAAYj0NgAA","25":"b:ANsGgA81EpGwBAAACFAAAYj0NgAA"},"packages/cli/src/middlewares/list-query/filter.ts":{"11":"b:YAgAXQJxAAAwANQFAAAAABgEYAAA"},"packages/cli/src/middlewares/list-query/pagination.ts":{"10":"b:YAgAXQJxAAAwANQFAAAAABgEYAAA"},"packages/cli/src/middlewares/list-query/select.ts":{"11":"b:YAgAXQJxAAAwANQFAAAAABgEYAAA"},"packages/cli/src/middlewares/list-query/sort-by.ts":{"12":"b:YAgAXQJxAAAwANQFAAAAABgEYAAA"},"packages/cli/src/modules/chat-hub/chat-hub.settings.controller.ts":{"16":[40],"26":[40],"33":[40],"48":[40],"68":[40]},"packages/cli/src/modules/chat-hub/chat-hub.settings.service.ts":{"19":[36,37,38,39,40,7],"24":[36,37,38,39,40,7],"35":[36,37,38,39,40,7],"37":[36,37,38,39,40,7],"44":[36,37,38,39,40,7],"51":[36,37,38,39,40,7],"64":[36,37,38,39,40,7],"72":[36,37,38,39,40,7],"89":[36,37,38,39,40,7],"111":[36,37,38,39,40,7],"121":[36,37,38,39,40,7],"137":[36,37,38,39,40,7],"148":[36,37,38,39,40,7]},"packages/cli/src/modules/data-table/data-table-file-cleanup.service.ts":{"13":"b:KKKA4AEHgCAgATBMAEAAAIgEAAAA","20":"b:KKKA4AEHgCAgATBMAEAAAIgEAAAA","29":"b:KKKA4AEHgCAgATBMAEAAAIgEAAAA","33":"b:KKKA4AEHgCAgATBMAEAAAIgEAAAA","38":"b:KKKA4AEHgCAgATBMAEAAAIgEAAAA","49":"b:KKKA4AEHgCAgATBMAEAAAIgEAAAA","82":"b:KKKA4AEHgCAgATBMAEAAAIgEAAAA"},"packages/cli/src/modules/external-secrets.ee/provider-registry.service.ts":{"10":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","13":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","17":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","21":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","25":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","29":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","33":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","43":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","47":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","51":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","55":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","57":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA","58":"b:IIkCgABxgAAgEEAQAAAAAQAECAAA"},"packages/cli/src/modules/external-secrets.ee/secrets-providers-completions.controller.ee.ts":{"15":"b:IIgAgABxgAAgEEAQAAAAAQAEAAAA","24":"b:IIgAgABxgAAgEEAQAAAAAQAEAAAA","55":"b:IIgAgABxgAAgEEAQAAAAAQAEAAAA","72":"b:IIgAgABxgAAgEEAQAAAAAQAEAAAA","84":"b:IIgAgABxgAAgEEAQAAAAAQAEAAAA"},"packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.service.ee.ts":{"39":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","53":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","79":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","107":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","124":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","141":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","146":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","147":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","152":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","153":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","168":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","190":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","212":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","221":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","244":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","252":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","262":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","266":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","274":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","282":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","286":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","288":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","295":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","310":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","320":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","338":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","339":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","350":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","376":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","403":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","407":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","420":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","437":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","441":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","468":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","472":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","485":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","501":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA","523":"b:KIiAgLB1gAAgEEAQAAAAAQgGAAAA"},"packages/cli/src/push/abstract.push.ts":{"34":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","40":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","43":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","58":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","66":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","70":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","79":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","96":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","102":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","106":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","115":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","117":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","124":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA","134":"b:KPuW5H8/ErXgDTBMClQCEYgEAAAA"},"packages/cli/src/response-helper.ts":{"15":"b:AABgIAARAQAAABAMAAAgCABsAoAD","48":"b:AABgIAARAQAAABAMAAAgCABsAoAD","95":"b:AABgIAARAQAAABAMAAAgCABsAoAD","117":"b:AABgIAARAQAAABAMAAAgCABsAoAD","131":"b:AABgIAARAQAAABAMAAAgCABsAoAD","135":"b:AABgIAARAQAAABAMAAAgCABsAoAD"},"packages/cli/src/wait-tracker.ts":{"35":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","50":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","62":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","66":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","71":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","73":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","82":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","91":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","104":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","112":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","120":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","190":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","200":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","211":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","232":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","235":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","249":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA","253":"b:KKKAxAEXACAgATBMAEAAAIgEAAgA"},"packages/workflow/src/errors/base/base.error.ts":{"32":"b:AANiAAgXACAAABAEBFgAAIBwAiIC"},"packages/workflow/src/errors/ensure-error.ts":{"2":"b:AABgAAARAQAAABAEAAAACABsAjAD"},"packages/workflow/src/errors/index.ts":{"5":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","14":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","17":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","23":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","27":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","29":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","30":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","33":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD","36":"b:AIJgAAA3AQAAABAMAEAgCQBsArAD"},"packages/workflow/src/node-helpers.ts":{"251":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","259":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","269":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","279":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","294":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","316":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","317":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","334":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","338":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","353":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","412":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","439":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","478":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","514":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","551":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","586":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","591":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","667":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","934":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","973":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1005":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1006":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1054":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1084":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1114":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1135":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1144":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1148":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1154":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1157":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1180":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1242":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1278":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1304":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1334":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1348":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1373":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1401":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1436":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1444":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1456":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1499":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1502":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1667":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1708":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1716":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1728":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1738":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1742":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1759":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1768":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1774":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1776":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1784":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1788":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1812":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1847":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1854":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1870":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1875":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1909":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1942":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1957":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","1983":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","2001":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","2014":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","2028":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","2042":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B","2053":"b:MPs+oH9/EtfxDEIRj9zjl7n+Nq8B"},"packages/@n8n/design-system/src/components/N8nAvatar/Avatar.vue":{"15":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","28":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","29":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","31":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","33":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","43":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","44":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA"},"packages/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.vue":{"52":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","95":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","96":[40,42,48,3,69,86,7,5],"104":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","111":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","115":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","121":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","133":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","137":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","146":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","151":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","180":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","181":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","192":[23,42,48,3,69,86,7,5,131,137],"218":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","226":[42,3],"229":[42,3],"241":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","290":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","322":[42,3],"340":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","344":[7],"356":[42,3],"389":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","406":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","407":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","466":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","467":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","470":[42,7],"472":"b:qACAAAAFAQAgAEAAAAAAAAgCAAAA","511":[40],"513":[40]},"packages/@n8n/design-system/src/components/N8nIcon/custom/mcp.svg":{"13":"b:ioCAAACJAwA+ANgPAAKAQBgKAAAA"},"packages/@n8n/design-system/src/components/N8nIconPicker/types.ts":{"13":"b:OCCAgAL1AQA+AEAQAAAAAAoCAAAA"},"packages/@n8n/design-system/src/components/N8nInlineTextEdit/InlineTextEdit.vue":{"16":"b:cP9f4C/7///v/8Mx//////8PAAAA","35":"b:cP9f4C/7///v/8Mx//////8PAAAA","38":"b:cP9f4C/7///v/8Mx//////8PAAAA","44":"b:cP9f4C/7///v/8Mx//////8PAAAA","47":"b:cP9f4C/7///v/8Mx//////8PAAAA","57":"b:cP9f4C/7///v/8Mx//////8PAAAA","68":"b:YBYAgASwACBMgsMREEBgRQAHAAAA","74":"b:QBYAAAQgACBkggMAAEBgRRQDAAAA","81":"b:YBYAgASwACBMgsMREEBgRQAHAAAA","92":"b:YBYAgASwACBMgsMREEBgRQAHAAAA","96":"b:YBYAgASwACBsgsMREEBgRRQHAAAA","103":"b:cP9f4C/7///v/8Mx//////8PAAAA","122":"b:cP9f4C/7///v/8Mx/////n8PAAAA","127":"b:cP9f4C/7///v/8Mx/////n8PAAAA","143":"b:YBYAgASwACBMgsMREEBgRQAHAAAA"},"packages/@n8n/design-system/src/components/N8nInputNumber/InputNumber.vue":{"15":"b:AIpKAAEBFECBQcAgQunvfyAEAAAA","31":"b:AIpKAAEBFECBQcAgQunvfyAEAAAA","32":"b:AIpKAAEBFECBQcAgQunvfyAEAAAA"},"packages/@n8n/design-system/src/components/N8nPagination/Pagination.vue":{"10":[40]},"packages/@n8n/design-system/src/components/N8nRadioButtons/RadioButton.vue":{"22":"b:cP9f4C95/v/n/8Pw//////8PAAAA"},"packages/@n8n/design-system/src/components/N8nRadioButtons/RadioButtons.vue":{"20":"b:cP9f4C95/v/n/8Pw//////8PAAAA","33":"b:AIAAAAAAAAAACEAABFx/H8IAAAAA","41":"b:cP9f4C95/v/n/8Pw//////8PAAAA","50":"b:cP9f4C95/v/n/8Pw/////n8PAAAA","58":"b:AIAAAAAAAAAACEAABFx/H8IAAAAA","59":"b:cP9f4C95/v/n/8Pw//////8PAAAA"},"packages/@n8n/design-system/src/components/N8nSwitch/Switch.vue":{"10":[40],"14":[40],"21":[40],"22":[40],"23":[40],"30":[40],"40":[40]},"packages/@n8n/design-system/src/components/N8nTag/Tag.vue":{"15":"b:8v8fwA8ZAP/nadsvn///1/8PAAAA"},"packages/@n8n/design-system/src/components/PreviewTag/PreviewTag.vue":{"11":"b:ggAACQAJAQAwANgPAAAAAAgAAAAA","12":"b:ggAACQAJAQAwANgPAAAAAAgAAAAA"},"packages/@n8n/design-system/src/utils/labelUtil.ts":{"1":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","4":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","6":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA","11":"b:+gCAAAAlAQA4AEAWAAAAAAgCAAAA"},"packages/@n8n/i18n/src/utils.ts":{"9":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","29":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","31":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","34":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","41":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","49":"b:AJIYQAUABMoBIQIgSshv9yAAAAAA","57":"b:AJIYQAUABMoBIQIgSshv9yAAAAAA","58":"b:AJIYQAUABMoBIQIgSshv9yAAAAAA"},"packages/frontend/editor-ui/src/app/components/Banner.vue":{"22":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","47":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","53":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","58":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","62":"b:IIgBgCBxgAAgEEAQAAAACAAEAAAA","71":[86]},"packages/frontend/editor-ui/src/app/components/EnterpriseEdition.ee.vue":{"17":"b:cIgBgCBxgAA4EEAQAAAACQAGAAAA","18":"b:cIgBgCBxgAA4EEAQAAAACQAGAAAA"},"packages/frontend/editor-ui/src/app/components/FreeAiCreditsCallout.vue":{"21":"b:MJ5b4C1x1s7h+UMwz+3//ysGAAAA","55":"b:MJ5b4C1x1s7h+UMwz+3//ysGAAAA","57":"b:MJ5b4C1x1s7h+UMwz+3//ysGAAAA","63":"b:MJ5b4C1x1s7h+UMwz+3//ysGAAAA"},"packages/frontend/editor-ui/src/app/components/SaveButton.vue":{"12":"b:IIgBgCBxgAAgEMARAAAACQAEAAAA","36":"b:IIgBgCBxgAAgEMARAAAACQAEAAAA","45":"b:IIgBgCBxgAAgEMARAAAACQAEAAAA","73":"b:IIABgCAxAAAgEMARAAAAAQAEAAAA"},"packages/frontend/editor-ui/src/app/components/SettingsSidebar.vue":{"23":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA","26":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA","37":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA","41":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA"},"packages/frontend/editor-ui/src/app/components/TimeAgo.vue":{"20":"b:KACAgADxAQA+AEAQAAIAQBgOAAAA","21":"b:KACAgADxAQA+AEAQAAIAQBgOAAAA","31":"b:KACAgADxAQA+AEAQAAIAQBgOAAAA","37":"b:KACAgADxAQA+AEAQAAIAQBgOAAAA","41":"b:KACAgADxAQA+AEAQAAIAQBgOAAAA"},"packages/frontend/editor-ui/src/app/composables/useCollectionOverhaul.ts":{"5":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","8":"b:MJ5b4C0z1s7h+YMhz+3//ysGAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeHelpers.ts":{"81":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","111":"b:ML5b4A0w1s7h+QMgz+3//ysCAAAA","144":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","157":"b:MIABwAAwAAIhEAAAAEAACQAAAAAA","158":"b:MIABwAAwAAIhEAAAAEAACQAAAAAA","159":"b:MIABwAAwAAIhEAAAAEAACQAAAAAA","163":"b:MP5b4C9z1t/h/cMxz+3//ysPAAAA","183":[16,41,119],"244":"b:ANcbAA4iAP/BaAKAh/z/l8EIAAAA","260":[30,44,45,58],"274":"b:cP8b4A8w/v/h/wMg//////sPAAAA","294":"b:cP9/4A84/v/n/wOg//////8PAAAA","302":"b:cP8f4A84/v/n/wOg//////8PAAAA","314":"b:cP9/4A84/v/n/wOg//////8PAAAA","322":"b:MJQZoA0wgA6hAAEAx4WvHQMEAAAA","330":"b:cL4Z4A0w/m7h1gMg5+3vfesPAAAA","345":"b:MLQZoA0wgA6hAAEAx4WvHQMAAAAA","353":"b:cP9b4A8w/v/h/wMg//////sPAAAA","380":"b:cP8b4A8y/v/h/wMg//////sPAAAA","393":"b:MP8b4A8w1r/h/wMg3////+sNAAAA","425":"b:MPgb4Acy1pfhvQAgRe2gryAPAAAA","451":"b:cP8b4A8y/v/h/wMg//////sPAAAA","559":"b:MKABgAASAJMhEAAAAEAACQAEAAAA","614":[30,44,45,58],"622":[30,44],"633":[30,44],"636":"b:cP9/4A95/v/n/wOw//////8PAAAA","651":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","655":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","661":"b:MJ4b4A0w1o7h+QMgx+3//ysAAAAA","663":"b:AAYIAAQAAIzASAIAgsx/lwEAAAAA","669":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","677":"b:AAYIAAQAAIzASAIAgux/lwEAAAAA","683":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","709":"b:AMYbAAQAAM7BaAIAgux/lwEAAAAA","717":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","748":"b:AIAAAAAAAAAAAAAgRUAAAOAAAAAA","755":"b:AIAAAAAAAAAAAAAgRUAAAOAAAAAA","797":"b:cP974A8w/v/h/wOg//////sPAAAA","801":"b:AKABQAAgAJMgAAAAAEAAAAAEAAAA","817":"b:AKABQAAgAJMAAAAAAEAAAAAEAAAA","852":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","856":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","859":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","877":[102],"911":"b:AAACAAAAAAgAAAAAAEhiBgAAAAAA","927":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","996":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA"},"packages/frontend/editor-ui/src/app/composables/useResolvedExpression.ts":{"25":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","46":"b:MJ5b4C1x1s7h+cMxz+3//ysGAAAA","52":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","53":"b:AAIAAAAAAIBAAAIAAEgHBwAAAAAA","54":"b:AIIBAAAQAoBAMUIAAUivHwAAAAAA","59":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","61":"b:AIIBAAAQAoBAMUIAAUivHwAAAAAA","100":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","126":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","127":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","128":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA"},"packages/frontend/editor-ui/src/app/layouts/SettingsLayout.vue":{"27":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA","34":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA","36":"b:ggAAAAAJAAAAANgPAAAAAAAAAAAA"},"packages/frontend/editor-ui/src/app/utils/credentialOnlyNodes.ts":{"5":"b:cP974C8z/v/h/8Px//////sPgAAA","9":[151,58],"13":"b:cP8f4A84/v/n/wMg//////8PgAAA","17":"b:cP8f4A84/v/n/wMg//////8PgAAA","52":"b:cP8f4A84/v/n/wMg//////8PgAAA"},"packages/frontend/editor-ui/src/app/utils/nodes/nodeTransforms.ts":{"28":"b:cJ4ZoA0w/m5h1gMg523vfasHgAAA","37":"b:cL8Z4A8w/v9h3wMg/9////sPgAAA","62":"b:MLgZ4Acw1pdhnQAgRU2gLyAPgAAA","72":[151,138,139],"86":"b:MKgBoAEQ1pdhnQAgBEGgLyANgAAA","100":"b:cL8Z4A8w/v9h3wMg/9////sPgAAA","106":"b:MKgBoAEQ1pdhnQAgBEGgLyANgAAA","117":"b:AAcCAAQAAESBKAAAgYhvFgAAgAAA","131":"b:ML5b4C1z1s7h+cMxz+3//ysGgAAA","151":"b:MJ5b4A0w1s7h+YMhx+3//ysCgAAA","170":"b:QP8bwA8wAP/haAKg1/3/1+sOgAAA","229":"b:AIABAAAAAJMhAAAAAEAAAAAEgAAA","230":"b:AIABAAAAAJMhAAAAAEAAAAAEgAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/rbac.ts":{"11":[40,43,83,84,86,87,88,7,91]},"packages/frontend/editor-ui/src/app/utils/rbacUtils.ts":{"4":[40,43,83,84,86,87,88,7,91],"12":[40,43,83,84,86,87,88,7,91],"23":[40,43,83,84,86,87,88,7,91],"34":[86,7]},"packages/frontend/editor-ui/src/app/utils/typesUtils.ts":{"14":"b:AMZaAAQAAM7BaAIAyu1/lwEJAAAA","23":"b:cP5/4C97/u79/8Px7/3///8PAAAA","40":[138,139],"56":"b:KACAgADxAQA+AEAQAAIAQBgOAAAA","60":"b:AAAAAAAAAABAAAAAQAVvBwABAAAA","66":[122],"71":"b:AMZaAAQAAM7BaAIAiu1/twEAAAAA","119":[104,112,113,114,115,121,122],"124":[104,112,113,114,115,121,122],"166":[74,138,139],"170":"b:cP5b4C1z/u7/+8Nx/+///+sHAAAA","174":"b:IJAZgCXwAA6hEMARCAQvHwAEAAAA","201":"b:IJAZgCVykA6hEMARiAQvHwAEAAAA"},"packages/frontend/editor-ui/src/features/ai/chatHub/SettingsChatHubView.vue":{"26":[40],"42":[40],"44":[40],"46":[40],"54":[40],"72":[40],"93":[40],"108":[40]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatProvidersTable.vue":{"25":[40],"47":[40],"56":[40],"65":[40],"75":[40],"81":[40],"89":[40],"93":[40],"116":[40],"123":[40],"136":[40],"140":[40],"163":[40],"172":[40],"176":[40],"190":[40],"193":[40],"199":[40],"204":[40]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ProviderSettingsModal.vue":{"123":[40],"127":[40],"141":[40],"156":[40],"164":[40],"184":[40],"217":[40],"227":[40],"229":[40],"240":[40],"243":[40],"250":[40],"254":[40],"265":[40],"279":[40],"308":[40],"319":[40],"372":[40],"375":[40],"398":[40],"401":[40]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectSharing.vue":{"68":[40,45,67,68,69,7,4,92,5,6,137],"76":[40,45,67,68,69,7,92,5,6,137],"79":[40,45,67,68,69,7,92,5,6,137],"88":[40,45,67,68,69,7,92,5,6,137],"98":[40,45,68,92,5,6,137],"104":[40,45,92,5,6,137],"110":[40,45,67,68,69,7,92,5,6,137],"117":[40,45,67,68,69,7,92,5,6,137],"121":[40,45,67,68,69,7,92,5,6,137],"123":[40,45,67,68,69,7,92,5,6,137],"137":[40,45,67,68,69,7,4,92,5,6,137],"153":[40,45,68,69,7,92,5,6],"159":[40,45,67,68,69,7,4,92,5,6,137],"163":[40,45,68,69,7,92,5,6],"169":[68,69,7,92,5,6],"183":[45],"200":[40,45,67,68,69,7,4,92,5,6,137],"201":[40,45,67,68,69,7,4,92,5,6,137],"216":[40,45,67,68,69,7,4,92,5,6,137],"233":[40,45,67,68,69,7,92,5,6,137],"241":[40,45,67,68,69,7,92,5,6,137],"244":[40,45,67,68,69,7,92,5,6,137],"248":[40,45,67,68,69,7,92,5,6,137],"272":[40,45,4,92,5,6,137],"273":[40,45,4,92,5,6,137],"295":[40,45,92,5,6],"312":[45]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectSharingInfo.vue":{"14":[40,45,67,68,69,7,4,92,5,6,137],"25":[40,45,67,68,69,7,4,92,5,6,137],"31":[40,45,67,68,69,7,4,92,5,6,137]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialConfig.vue":{"81":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","116":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","137":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","140":[11,44,46,123,138],"145":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","146":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","149":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","179":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","184":[11,44,46,123,138],"192":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","201":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","211":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","215":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","217":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","219":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","230":[11],"234":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","236":"b:IIABgCBxAAAgEEAQAAAACQAEAAAA","240":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","244":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","246":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","251":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","255":"b:IIgBgCBxAAAgEEAQAAAACQAEAAAA","259":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","272":[11,44],"276":[11],"294":[46],"299":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","345":"b:IIgBgCBxAAAgEEAQAAAACQAEAAAA","347":"b:IIgBgCBxAAAgEEAQAAAACAAEAAAA","394":[11,44,46,123],"397":"b:IIgBgCAxgAAgEEAQAAAAAQAEAAAA","417":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","552":[46,123,138],"560":"b:IIgBgCBxgAAgEAAQAAAACQAEAAAA","562":"b:IIgBgCBxgAAgEAAQAAAACAAEAAAA","564":"b:IIgBgCBxgAAgEAAQAAAACAAEAAAA"},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialEdit.vue":{"102":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","104":[44,123,138],"109":[44,123,138],"159":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","169":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","174":"b:IIABgCBxAAAgEEAQAAAAAQAEAAAA","179":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","188":"b:IIgBgCBwgAAgEEAQAAAACQAEAAAA","204":[11,15,16,55,76],"217":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","234":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","249":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","254":"b:IIABgCBxAAAgEEAQAAAACQAEAAAA","259":"b:IIABgCAxAAAgEEAQAAAAAQAEAAAA","267":"b:IIABgCAxAAAgEAAQAAAAAQAEAAAA","270":"b:IIABgCAxAAAgEAAQAAAAAQAEAAAA","282":"b:IIABgCAxAAAgEAAQAAAAAQAEAAAA","290":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","298":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","309":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","311":"b:AIgBgAAQgAAgEAAAAAAACQAAAAAA","316":[11,46],"320":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","325":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","331":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","343":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","350":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","387":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","393":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","415":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","425":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","433":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","440":[40,44,45,92,5],"444":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","452":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","463":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","465":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","484":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","493":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","564":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","579":"b:IIABgCAxAAAgEEAQAAAACQAEAAAA","618":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","642":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","670":[40,44,45],"672":[40,44,45],"678":[40,44,45],"737":[40,45,92,5],"752":[92,5],"761":[40,45],"766":[11,44],"774":[11,44],"781":[11,44],"830":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","846":[15,16,31,44,69,76,120,138],"850":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","866":[31,44,45,86,92,5,138],"872":"b:IIABgCBRAAAgEAAQAAAAAQAEAAAA","873":"b:IIABgCBRAAAgEAAQAAAAAQAEAAAA","888":[40,44,45],"913":"b:IIABgCARAAAgEAAQAAAAAQAEAAAA","926":"b:IIABgCBxAAAgEEAQAAAACQAEAAAA","927":"b:IIABgCBxAAAgEEAQAAAACQAEAAAA","932":"b:AIgBgAAQgAAgEAAAAAAACQAAAAAA","941":"b:IIABgCBxAAAgEEAQAAAACQAEAAAA","1016":"b:IIABgCBxAAAgEEAQAAAACQAEAAAA","1082":"b:IIABgCBxAAAgEEAQAAAAAQAEAAAA","1115":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","1138":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","1188":[40,44,45,92,5],"1236":[44],"1276":[46,123,138],"1353":[46],"1385":[46],"1389":[46],"1442":[11,44],"1499":[11,44],"1524":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","1536":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","1575":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","1607":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","1611":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","1615":[40,45,92,5]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialInputs.vue":{"21":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","25":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","29":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","30":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","39":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","41":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","47":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA"},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialModeSelector.vue":{"27":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","46":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","47":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","52":"b:AIgBgAAQgAAgEAAAAAAACQAAAAAA","53":"b:AIgBgAAQgAAgEAAAAAAACQAAAAAA","60":"b:IIgBgCBxgAAgEEAQAAAAAAAEAAAA","61":"b:IIgBgCBxgAAgEEAQAAAAAAAEAAAA","66":[11],"79":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","90":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","102":[11,31,44,69,120,123],"124":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","146":[11,31,44,69,120,123],"168":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","169":[11,31,44,69,120,123],"170":[11,31,44,69,120,123],"173":[11,31,44,69,120,123],"180":[11,31,44,69,120,123],"181":[11,31,44,69,120,123],"188":[11,44],"191":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","198":[11,31,44,69,120,123],"208":[11,31,44,69,120,123],"210":[11,31,44,69,123]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialSharing.ee.vue":{"38":[40,45,92,5],"61":[40,45,92,5],"69":[40,45,92,5],"70":[40,45,92,5],"82":[40,45,92,5],"86":[40,45,92,5],"90":[40,45,92,5],"96":[40,45,92,5],"102":[40,45,92,5],"103":[40,45,92,5],"116":[40,45,92,5],"122":[40,45,92,5],"128":[92,5],"139":[40,45,92,5],"168":[40,45,92,5],"198":[40,45]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialPicker/CredentialPicker.vue":{"48":[38,40,74,138],"61":[38,40,74,138],"62":[38,40,138],"70":[38,40,74,138],"99":[38,40,74,138],"104":[38,40,74,138],"110":[40],"113":[138],"127":[40],"170":[138],"199":[38,40,138],"209":[38,40,74,138],"210":[38,40,74,138],"236":[38,40,138],"255":[38]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialPicker/CredentialsDropdown.vue":{"39":[38,40,138],"48":[38,40],"52":[40],"86":[38,40,138],"91":[38,40,138],"92":[38,40,138],"97":[38,40,138]},"packages/frontend/editor-ui/src/features/credentials/composables/useCredentialOAuth.ts":{"41":"b:IKgB4CFz1gRgEUAwBAGgLyAEAAAA","59":"b:IKgB4CFz1gRgEUAwBAGgLyAEAAAA","72":"b:IIgBgCBxggAgEEAQAAAACQAEAAAA","82":"b:AKgA4AES1gRgEQAgBAGgLyAAAAAA","99":"b:AAgAoAAQEAAgAQAAAAAgLyAAAAAA","109":[11],"121":"b:AAgAoAAQEgAgAQAAAAAgLyAAAAAA","128":"b:AAgAoAAQEgAgAQAAAAAgLyAAAAAA","134":"b:AAgAoAAQEgAgAQAAAAAgLyAAAAAA","153":[11,49],"355":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/credentials/quickConnect/components/QuickConnectButton.vue":{"9":"b:IIgBgCBxggAgEEAQAAAACQAEAAAA","35":"b:IIgBgCAxggAgEEAQAAAAAQAEAAAA","44":"b:IIgBgCBxggAgEEAQAAAACQAEAAAA","49":"b:IIgBgCBxggAgEEAQAAAACQAEAAAA","64":"b:IIgBgCAxggAgEEAQAAAAAQAEAAAA"},"packages/frontend/editor-ui/src/features/credentials/quickConnect/composables/useQuickConnect.ts":{"33":"b:ML5b4A0y1s7h+QMgz+3//ysCAAAA","41":"b:MAgRoAgQ5AIhAAggxwFlPSIAAAAA","51":"b:AKgB4AES1gRgEQAgBAGgLyAAAAAA","64":"b:MAgRoAgQ5AIhAAggxwFlPSIAAAAA","71":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","117":"b:ML4b4C0z9s7h+Uswz+3//ysGAAAA"},"packages/frontend/editor-ui/src/features/integrations/externalSecrets.ee/externalSecrets.ee.store.ts":{"21":[86],"24":[86],"28":[86],"61":"b:ML5b4C1z1s7x+cMxz+3//ysGAAAA","67":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","79":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","93":[86],"94":[86],"98":[86],"101":[86],"102":[86],"142":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","156":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","182":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","217":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionEditModal.vue":{"38":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","78":[114],"80":[114],"85":[114],"99":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","100":[114],"136":[114],"141":[114],"156":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","165":[114],"177":[114],"185":[114],"206":[114],"216":[114],"239":[114]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionEditorModal/theme.ts":{"4":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","33":[114],"39":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInput.vue":{"146":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","238":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","244":[29,117,120],"248":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","254":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","258":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","260":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","264":"b:ML4b4C1z1s7h+cMxz+3//ysGAAAA","268":"b:IJAZgCVwAA4hEMARAAQiGQAEAAAA","282":[17,30,54,98,120,127],"298":[17,30,54,98,120,127],"302":[17,30,54,98,120,127],"310":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","314":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","321":"b:AIQCYAgAQAAAAAEAxwEggQAAAAAA","330":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","334":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","358":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","372":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","375":"b:AIQAIAgAAAAAAAEAxwAgAAAAAAAA","379":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","387":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","391":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","465":"b:MIoBgAAQFoBgMUIgAUivHyMAAAAA","480":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","513":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","530":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","570":"b:MJ5b4A0y1s7h+YMhz+3//ysCAAAA","601":[69,128,129],"620":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","634":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","641":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","649":[41,44,75,119],"653":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","680":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","699":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","703":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","707":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","711":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","715":[104],"717":"b:IJAZgCVykA6hEMARiAQvHwAEAAAA","718":"b:AAAIAAEykAKBAIAAgAAHEwAAAAAA","720":[71,106,113],"721":"b:IJAZgCVwAA6hEMARCAQnGQAEAAAA","728":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","740":[15,117],"742":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","751":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","755":[30,44,45],"769":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","783":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","791":"b:MJ5b4C1z1s7h+UMwz+3//ysGAAAA","799":[29,117,120,123],"851":[117],"856":[117],"861":[114],"865":[114],"895":[117],"907":[114],"922":"b:IJAZgCVykA6hEMARiAQvHwIEAAAA","930":"b:IJAZgCVykA6hEMARiAQvHwIEAAAA","991":"b:IJAZgCVwAA6hEMARAAQiGQAEAAAA","1014":"b:IJQZoC1ykA6hEMERxwUvHQMEAAAA","1101":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA","1108":"b:IJAZgCVyEA6hEMARiAQvGQIEAAAA","1175":"b:IJAZgCVwAA6hEMARAAQiGQAEAAAA","1182":"b:AAAAAAAAAAAAAEAAAAAPHQIAAAAA","1262":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1296":[41,44,75,119],"1325":"b:IJob4CgzVkoh+UExz+3/fysGAAAA","1331":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1332":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1350":[117,120,123],"1356":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1357":"b:IJwZoC1xgA6hEMARxwQvHQMEAAAA","1367":[29,117,120],"1372":"b:AAAAAAAAAAAAAEAAAAAPHQIAAAAA","1382":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1385":[32,44],"1401":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1414":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1420":"b:AAAAAAAAAACAAIAAAAErHQAAAAAA","1543":[117],"1629":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","1634":[117],"1654":[104],"1699":[104],"1722":[15,117],"1745":[17,30,54,98,120,127],"1775":"b:IJAZgCVwAA4hEMARAAQiGQAEAAAA","1793":[12,87,113,117,120],"1798":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1909":[30,44,45],"1930":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1932":"b:ML5b4C1z1s7h+cMxz+3//isGAAAA","1937":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","1969":[29,50,123],"1971":[29,50,123],"1975":[29,50,123]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputExpanded.vue":{"24":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","61":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","92":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","114":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","122":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","129":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","133":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","142":[86],"146":"b:IIABgCBwAAAgEEAQAAAACQAEAAAA","169":[86],"171":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","184":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA","194":"b:IIgBgCBxgAAgEEAQAAAACQAEAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputWrapper.vue":{"50":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","70":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","74":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","85":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","91":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","102":[72,86,112,113,114,121,123,124],"104":[121],"106":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","111":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","128":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","132":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","139":"b:IJAZgCVykA6hEMARiAQvHwIEAAAA","143":"b:IJAZgCVyEA6hEMARiAQvGQIEAAAA","151":"b:IJQZoC1ygA6hEMERxwUvHQMEAAAA","155":"b:IJAZgCVwAA6hEMARAAQiGQAEAAAA","160":[41,44,75,119],"161":[86],"168":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","175":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","206":"b:ML5b4C1z1s7h+cMxz+3//isGAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterOptions.vue":{"40":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","61":"b:ML4b4C1z1s7h+cMxz+3//ysGAAAA","62":"b:ML4b4C1z1s7h+cMxz+3//ysGAAAA","63":"b:MJob4CVx1s7h+cIwT+3//ysGAAAA","64":"b:ML4b4C1z1s7h+cMxz+3//ysGAAAA","67":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","77":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","96":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","115":"b:MJob4CVx1s7h+cIwT+z//ysGAAAA","116":"b:ML4b4C1z1s7h+cMxz+3//ysGAAAA","120":"b:ML4b4C1z1s7h+cMxz+3//ysGAAAA","128":"b:ML4b4C1z1s7h+cMxz+3//ysGAAAA","173":[124],"174":"b:AAAAAAAAAAAAAEAAAAANHQIAAAAA","181":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","189":[124],"215":[124]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/TextEdit.vue":{"10":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","31":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","41":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","42":"b:IJwZoC1xgA4hEMARxwQiGQAEAAAA","48":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","66":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/composables/useNodeSettingsParameters.ts":{"56":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","66":"b:MJQZoA0wgA6hAAEAx4WvHQMAAAAA","130":[120],"186":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/ndv/shared/composables/useBinaryDataAccessTooltip.ts":{"9":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA"},"packages/frontend/editor-ui/src/features/ndv/shared/ndv.utils.ts":{"41":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","57":"b:MJQZoA0wgA6hAAEAx4WvHQMAAAAA","139":"b:MJQZoA0wgA6hAAEAx4WvHQMAAAAA","268":"b:MJQZoA0wgA6hAAEAx4UvHQMAAAAA","274":"b:MJQZoA0wgA6hAAEAx4UvHQMAAAAA","296":[120,123],"297":[120,123],"300":[120],"314":"b:MJQZoA0wgA6hAAEAx4WvHQMAAAAA","335":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","342":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","346":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","368":"b:MJQZoA0wgA6hAAEAx4WvHQMAAAAA","374":"b:AAAAAAAAAAAAAEAAAAAPHQIAAAAA","447":"b:MJ5b4A0y1s7h+YMhz+3//ysCAAAA","458":"b:MJ5b4A0y1s7h+QMgz+3//ysCAAAA","622":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","734":"b:MJ5b4A0y1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/composables/useIsInExperimentalNdv.ts":{"4":"b:ML5b4C1z1s7h+cMxz+3//ysGAAAA","8":"b:IAgAgCBxAAAgAEERCAAPHwAEAAAA"},"packages/@n8n/ai-utilities/src/index.ts":{"7":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","12":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","13":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","14":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","15":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","50":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","80":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","88":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","89":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","118":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","119":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","123":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA"},"packages/@n8n/ai-utilities/src/utils/shared-fields.ts":{"37":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","46":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","110":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","115":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","120":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","125":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","132":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","158":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA","164":"b:AIEDAHAQAgAACAAAAECAAQAAAIAA"},"packages/@n8n/api-types/src/dto/index.ts":{"1":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","3":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","4":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","12":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","16":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","36":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","37":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","40":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","42":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","49":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","51":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","53":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","57":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","59":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","62":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","64":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","70":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","71":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","81":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","84":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","90":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","99":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","100":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","102":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","110":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","111":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","112":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","113":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","114":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","116":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","118":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","134":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","140":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","147":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","148":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","157":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","158":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","182":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","187":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","189":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","199":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","202":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","203":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","209":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","211":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","237":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","240":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","241":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","243":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","244":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","253":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA","254":"b:gNsWiA80ErXiDAABGFAAAYjUEAAA"},"packages/@n8n/api-types/src/dto/user/users-list-filter.dto.ts":{"51":"b:ANsWKQ98ApHwBHQEAFAAAYgEAAAA"},"packages/@n8n/api-types/src/dto/workflows/base-workflow.dto.ts":{"25":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","30":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","41":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","53":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","54":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","68":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","80":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","89":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","131":"b:ANsegA80EpPyBAAACFAAQcj0FCAA","134":"b:ANsegA80EpPyBAAACFAAQcj0FCAA"},"packages/@n8n/api-types/src/index.ts":{"90":"b:/NsWrX/+E5XwDHwEClACEYj0VDcA","110":"b:/NsWrX/+E5XwDHwEClACEYj0VDcA","118":"b:/NsWrX/+E5XwDHwEClACEYj0VDcA","238":"b:/NsWrX/+E5XwDHwEClACEYj0VDcA","472":"b:/NsWrX/+E5XwDHwEClACEYj0VDcA"},"packages/@n8n/config/src/index.ts":{"54":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","56":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","57":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","59":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","60":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","65":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","67":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","75":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","77":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","78":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","79":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","83":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","84":"b:ANACAHwwAoQAAACAAESAAQAAAAQA","94":"b:ANACAHwwAoQAAACAAESAAQAAAAQA"},"packages/@n8n/db/src/entities/user.ts":{"60":"b:ANsWiA8wEpHgBAAAClAAAYgEAAAA","84":"b:ANsWiA8wEpHgBAAAClAAAYgEAAAA","115":"b:ANsWiA8wEpHgBAAAClAAAYgEAAAA","117":"b:ANsWiA8wEpHgBAAAClAAAYgEAAAA","124":"b:ANsWiA8wEpHgBAAAClAAAYgEAAAA","129":"b:ANsWiA8wEpHgBAAAClAAAYgEAAAA","139":"b:ANsWiA8wEpHgBAAAClAAAYgEAAAA"},"packages/@n8n/db/src/repositories/index.ts":{"3":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","6":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","7":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","8":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","21":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","23":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","30":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","32":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","36":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","40":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","42":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","45":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","46":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","48":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","50":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","51":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","58":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","59":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA"},"packages/@n8n/db/src/repositories/shared-workflow.repository.ts":{"21":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","25":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","32":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","35":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","45":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","66":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","76":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","82":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","94":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","106":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","118":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","121":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","129":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","138":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","147":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","156":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","161":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","174":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A","212":"b:5Nuu7W80EpG2BBQUDF4gGZj2Fi0A"},"packages/@n8n/db/src/repositories/workflow-dependency.repository.ts":{"15":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","21":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","40":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","53":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","57":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","62":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","95":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","120":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","121":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","132":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA","158":"b:ANsGgA80EpHwBAAACFAAAZj2FgAA"},"packages/@n8n/db/src/repositories/workflow.repository.ts":{"58":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","68":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","78":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","84":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","87":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","94":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","97":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","103":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","113":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","128":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","139":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","145":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","148":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","164":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","173":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","180":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","189":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","196":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","210":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","217":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","223":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","229":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","239":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","328":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","352":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","374":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","400":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","411":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","412":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","415":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","437":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","481":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","528":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","556":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","584":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","661":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","672":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","677":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","678":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","681":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","683":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","684":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","687":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","702":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","709":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","710":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","712":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","721":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","735":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","754":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","779":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","835":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","851":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","864":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","874":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","888":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","905":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","917":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","925":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","948":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","956":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","962":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","973":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","979":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","984":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","995":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1007":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1028":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1041":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1050":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1071":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1082":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1098":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1100":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1123":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1150":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1154":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1164":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1196":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1204":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1210":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1220":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1225":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1241":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1250":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1257":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1264":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1271":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1281":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1296":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1330":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1337":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1341":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1356":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1363":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1399":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1415":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1451":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1466":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B","1502":"b:6Nu+/X+8VrX+DBwkClaCEbv20C0B"},"packages/@n8n/db/src/utils/transformers.ts":{"7":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","8":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","15":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","16":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","23":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","24":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","32":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","34":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","44":"b:ANsegH80EpXwDAAACFACEYj0Fi8B","45":"b:ANsegH80EpXwDAAACFACEYj0Fi8B"},"packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts":{"9":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V1/AgentV1.node.ts":{"37":[15,36,37,38,44,49,75,110,119],"53":[15,36,37,38,44,49,75,110,119],"63":[15,36,37,38,44,49,75,110,119],"221":[15,36,37,38,44,49,75,110,119],"276":[15,36,37,38,44,49,75,110,119],"361":[15,36,37,38,44,49,75,110,119],"470":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V2/AgentV2.node.ts":{"24":[15,36,37,38,44,49,75,110,119],"141":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V3/AgentV3.node.ts":{"28":[15,36,37,38,44,49,75,110,119],"151":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/execute.ts":{"16":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.ts":{"15":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/PlanAndExecuteAgent/execute.ts":{"18":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/execute.ts":{"21":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/execute.ts":{"25":[15,36,37,38,44,49,75,110,119],"28":[15,36,37,38,44,49,75,110,119],"29":[15,36,37,38,44,49,75,110,119],"43":[15,36,37,38,44,49,75,110,119],"55":[15,36,37,38,44,49,75,110,119],"144":[15,36,37,38,44,49,75,110,119],"150":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/other/handlers/mysql.ts":{"4":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/other/handlers/postgres.ts":{"6":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.ts":{"8":[15,36,37,38,44,49,75,110,119],"38":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V1/execute.ts":{"36":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/description.ts":{"15":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/execute.ts":{"44":[15,36,37,38,44,49,75,110,119],"92":[15,36,37,38,44,49,75,110,119],"97":[15,36,37,38,44,49,75,110,119],"102":[15,36,37,38,44,49,75,110,119],"132":[15,36,37,38,44,49,75,110,119],"200":[15,36,37,38,44,49,75,110,119],"216":[15,36,37,38,44,49,75,110,119],"240":[15,36,37,38,44,49,75,110,119],"297":[15,36,37,38,44,49,75,110,119],"404":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/execute.ts":{"29":[15,36,37,38,44,49,75,110,119],"54":[15,36,37,38,44,49,75,110,119],"134":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/buildExecutionContext.ts":{"29":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/checkMaxIterations.ts":{"27":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/createAgentSequence.ts":{"25":[15,36,37,38,44,49,75,110,119],"66":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/executeBatch.ts":{"40":[15,36,37,38,44,49,75,110,119],"78":[15,36,37,38,44,49,75,110,119],"107":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/finalizeResult.ts":{"21":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/index.ts":{"11":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/prepareItemContext.ts":{"40":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/resolveSubAgentRequest.ts":{"25":[15,36,37,38,44,49,75,110,119],"40":[15,36,37,38,44,49,75,110,119],"49":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/runAgent.ts":{"39":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/common.ts":{"25":[15,36,37,38,44,49,75,110,119],"38":[15,36,37,38,44,49,75,110,119],"49":[15,36,37,38,44,49,75,110,119],"64":[15,36,37,38,44,49,75,110,119],"72":[15,36,37,38,44,49,75,110,119],"73":[15,36,37,38,44,49,75,110,119],"144":[15,36,37,38,44,49,75,110,119],"149":[15,36,37,38,44,49,75,110,119],"152":[15,36,37,38,44,49,75,110,119],"154":[15,36,37,38,44,49,75,110,119],"199":[15,36,37,38,44,49,75,110,119],"219":[15,36,37,38,44,49,75,110,119],"220":[15,36,37,38,44,49,75,110,119],"228":[15,36,37,38,44,49,75,110,119],"229":[15,36,37,38,44,49,75,110,119],"255":[15,36,37,38,44,49,75,110,119],"275":[15,36,37,38,44,49,75,110,119],"276":[15,36,37,38,44,49,75,110,119],"279":[15,36,37,38,44,49,75,110,119],"342":[15,36,37,38,44,49,75,110,119],"376":[15,36,37,38,44,49,75,110,119],"392":[15,36,37,38,44,49,75,110,119],"407":[15,36,37,38,44,49,75,110,119],"422":[15,36,37,38,44,49,75,110,119],"469":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/utils.ts":{"13":[15,36,37,38,44,49,75,110,119],"19":[15,36,37,38,44,49,75,110,119],"36":[15,36,37,38,44,49,75,110,119],"42":[15,36,37,38,44,49,75,110,119],"45":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/utils.ts":{"11":[15,36,37,38,44,49,75,110,119],"23":[15,36,37,38,44,49,75,110,119],"26":[15,36,37,38,44,49,75,110,119],"86":[15,36,37,38,44,49,75,110,119],"89":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/ChatTrigger.node.ts":{"35":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","229":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","750":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","813":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","931":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","932":"b:AMACAHAQAgAAAACAAECAAAAAAAAA"},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/GenericFunctions.ts":{"7":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","41":"b:AMACAHAQAgAAAACAAECAAAAAAAAA"},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/error.ts":{"4":"b:AMACAHAQAgAAAACAAECAAAAAAAAA"},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/templates.ts":{"5":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","18":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","23":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","24":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","39":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","40":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","43":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","52":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","59":"b:AMACAHAQAgAAAACAAECAAAAAAAAA"},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/types.ts":{"8":"b:AMACAHAQAgAAAACAAECAAAAAAAAA","12":"b:AMACAHAQAgAAAACAAECAAAAAAAAA"},"packages/@n8n/nodes-langchain/utils/N8nTool.ts":{"11":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","25":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","28":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","33":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","50":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","57":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","62":"b:AIACAHAQAgAACAAgAECAAQAAAIAA"},"packages/@n8n/nodes-langchain/utils/agent-execution/buildResponseMetadata.ts":{"17":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/buildSteps.ts":{"34":[15,36,37,38,44,49,75,110,119],"84":[15,36,37,38,44,49,75,110,119],"132":[15,36,37,38,44,49,75,110,119],"156":[15,36,37,38,44,49,75,110,119],"193":[15,36,37,38,44,49,75,110,119],"206":[15,36,37,38,44,49,75,110,119],"218":[15,36,37,38,44,49,75,110,119],"261":[15,36,37,38,44,49,75,110,119],"265":[15,36,37,38,44,49,75,110,119],"272":[15,36,37,38,44,49,75,110,119],"284":[15,36,37,38,44,49,75,110,119],"288":[15,36,37,38,44,49,75,110,119],"317":[15,36,37,38,44,49,75,110,119],"342":[15,36,37,38,44,49,75,110,119],"364":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/createEngineRequests.ts":{"16":[15,36,37,38,44,49,75,110,119],"25":[15,36,37,38,44,49,75,110,119],"43":[15,36,37,38,44,49,75,110,119],"76":[15,36,37,38,44,49,75,110,119],"143":[15,36,37,38,44,49,75,110,119],"150":[15,36,37,38,44,49,75,110,119],"190":[15,36,37,38,44,49,75,110,119],"198":[15,36,37,38,44,49,75,110,119],"201":[15,36,37,38,44,49,75,110,119],"206":[15,36,37,38,44,49,75,110,119],"208":[15,36,37,38,44,49,75,110,119],"248":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/executeEngineAction.ts":{"17":[15,36,37,38,44,49,75,110,119],"22":[15,36,37,38,44,49,75,110,119],"47":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/index.ts":{"13":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/memoryManagement.ts":{"25":[15,36,37,38,44,49,75,110,119],"77":[15,36,37,38,44,49,75,110,119],"138":[15,36,37,38,44,49,75,110,119],"141":[15,36,37,38,44,49,75,110,119],"154":[15,36,37,38,44,49,75,110,119],"201":[15,36,37,38,44,49,75,110,119],"253":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/processEventStream.ts":{"20":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/processHitlResponses.ts":{"26":[15,36,37,38,44,49,75,110,119],"38":[15,36,37,38,44,49,75,110,119],"47":[15,36,37,38,44,49,75,110,119],"54":[15,36,37,38,44,49,75,110,119],"71":[15,36,37,38,44,49,75,110,119],"80":[15,36,37,38,44,49,75,110,119],"106":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/serializeIntermediateSteps.ts":{"10":[15,36,37,38,44,49,75,110,119],"15":[15,36,37,38,44,49,75,110,119],"29":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/agent-execution/types.ts":{"177":[15,36,37,38,44,49,75,110,119],"193":[15,36,37,38,44,49,75,110,119],"207":[15,36,37,38,44,49,75,110,119]},"packages/@n8n/nodes-langchain/utils/descriptions.ts":{"28":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","54":"b:AIACAHAQAgAACAAgAECAAQAAAIAA","72":"b:AIACAHAQAgAACAAgAECAAQAAAIAA"},"packages/@n8n/nodes-langchain/utils/helpers.ts":{"17":"b:AIACAHASAgAACAAgAECAAQAAAIAA","64":"b:AIACAHASAgAACAAgAECAAQAAAIAA","77":"b:AIACAHASAgAACAAgAECAAQAAAIAA","81":"b:AIACAHASAgAACAAgAECAAQAAAIAA","145":"b:AIACAHASAgAACAAgAECAAQAAAIAA","147":"b:AIACAHASAgAACAAgAECAAQAAAIAA","159":"b:AIACAHASAgAACAAgAECAAQAAAIAA","180":"b:AIACAHASAgAACAAgAECAAQAAAIAA","192":"b:AIACAHASAgAACAAgAECAAQAAAIAA","213":"b:AIACAHASAgAACAAgAECAAQAAAIAA","217":"b:AIACAHASAgAACAAgAECAAQAAAIAA","221":"b:AIACAHASAgAACAAgAECAAQAAAIAA","274":"b:AIACAHASAgAACAAgAECAAQAAAIAA","296":"b:AIACAHASAgAACAAgAECAAQAAAIAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nItemListOutputParser.ts":{"10":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","26":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","29":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","30":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","42":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","57":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nOutputFixingParser.ts":{"15":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","24":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","35":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","42":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","88":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","92":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nOutputParser.ts":{"15":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nStructuredOutputParser.ts":{"22":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","31":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","131":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","148":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA","175":"b:AIAAAHAQAgAACAAAAECAAQAAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/langchainParserError.ts":{"11":"b:AIAAAHAWAgAACAAAAECAAQAAAAAA","19":"b:AIAAAHAWAgAACAAAAECAAQAAAAAA","26":"b:AIAAAHAWAgAACAAAAECAAQAAAAAA","30":"b:AIAAAHAWAgAACAAAAECAAQAAAAAA","33":"b:AIAAAHAWAgAACAAAAECAAQAAAAAA","41":"b:AIAAAHAWAgAACAAAAECAAQAAAAAA"},"packages/@n8n/nodes-langchain/utils/tracing.ts":{"19":"b:AIACAHAQAgAACAAgAECAAAAAAAAA","83":"b:AIACAHAQAgAACAAgAECAAAAAAAAA"},"packages/cli/src/chat/chat-server.ts":{"21":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","23":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","24":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","28":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","34":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","39":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","42":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","51":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA"},"packages/cli/src/collaboration/collaboration.message.ts":{"71":"b:ANsWgA8wEpHgBAAAClAAAYgEAAAA"},"packages/cli/src/collaboration/collaboration.service.ts":{"34":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","43":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","44":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","69":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","78":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","94":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","110":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","133":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","137":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","143":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","145":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","155":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","183":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","200":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","211":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","217":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","232":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","234":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","247":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","249":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","263":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","270":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","301":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","307":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","327":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","341":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA","355":"b:IN8WwA80Er/gRAAAn3IAUZnmECUA"},"packages/cli/src/collaboration/collaboration.state.ts":{"35":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","40":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","52":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","58":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","86":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","90":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","105":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","112":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","117":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","149":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","160":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","166":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","177":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","198":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","203":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA","212":"b:IN8WwA80EpvgRAAAn3IAEZnmEAQA"},"packages/cli/src/controllers/active-workflows.controller.ts":{"8":"b:ANsWKQ84EpHwBBQECFAAAYgEAAAA","11":"b:ANsWKQ84EpHwBBQECFAAAYgEAAAA","16":"b:ANsWKQ84EpHwBBQECFAAAYgEAAAA"},"packages/cli/src/controllers/me.controller.ts":{"32":[15,49,77,89,90,93,110,119,120],"48":[15,49,77,89,90,93,110,119,120],"108":[15,49,77,89,90,93,110,119,120],"120":[15,49,77,89,90,93,110,119,120],"174":[15,49,77,89,90,93,110,119,120],"183":[15,49,77,89,90,93,110,119,120],"193":[15,49,77,89,90,93,110,119,120],"231":[15,49,77,89,90,93,110,119,120],"264":[15,49,77,89,90,93,110,119,120],"309":[15,49,77,89,90,93,110,119,120]},"packages/cli/src/controllers/users.controller.ts":{"55":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","81":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","105":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","114":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","127":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","134":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","151":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","173":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","201":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","222":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","279":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","310":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","320":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA","343":"b:gNsWKQ98ApHwBHQEAFAAAYgEAAAA"},"packages/cli/src/credentials/credentials-finder.service.ts":{"15":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","24":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","36":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","43":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","56":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","64":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","69":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","71":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","73":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","85":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","122":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","171":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","200":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","211":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","213":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","230":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","261":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","275":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA","298":"b:MPsGoH94EpGwBAAQCFAACYgUJAAA"},"packages/cli/src/license/license.controller.ts":{"15":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","22":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","28":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","44":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","60":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","72":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","77":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA"},"packages/cli/src/license/license.service.ts":{"25":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","34":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","59":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","69":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","108":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","116":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","142":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","160":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","175":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA","189":"b:ANs2KQ84EpGwBBQECFAAAYgEAAAA"},"packages/cli/src/load-nodes-and-credentials.ts":{"64":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","73":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","134":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","138":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","154":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","169":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","173":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","177":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","181":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","185":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","189":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","230":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","237":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","241":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","259":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","282":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","293":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","299":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","308":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","319":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","322":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","323":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","334":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","345":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","346":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","353":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","369":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","373":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","382":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","393":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","404":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","414":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","491":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","504":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","521":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","533":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","539":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","544":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","576":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","595":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","602":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","619":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","636":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","637":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","639":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","641":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","654":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","679":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","683":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","684":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","690":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","700":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","701":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA","702":"b:MPsC4H9yVpvwzUAQCPGEhYj0toAA"},"packages/cli/src/modules/mcp-registry/mcp-registry-node-loader.ts":{"52":[49],"57":[49],"61":[49],"71":[49],"109":[49],"115":[49],"121":[49],"129":[49],"134":[49],"138":[49],"142":[49]},"packages/cli/src/modules/mcp-registry/mcp-registry-test.controller.ts":{"17":[49],"23":[49],"29":[49],"38":[49]},"packages/cli/src/modules/mcp-registry/registry/mcp-registry.service.ts":{"33":[49],"45":[49],"55":[49],"61":[49],"66":[49],"72":[49],"79":[49],"88":[49],"93":[49],"98":[49],"102":[49],"107":[49],"116":[49],"121":[49],"135":[49],"165":[49],"170":[49],"171":[49],"173":[49],"174":[49],"176":[49],"177":[49],"191":[49],"202":[49],"214":[49],"238":[49],"242":[49],"246":[49]},"packages/cli/src/modules/workflow-index/workflow-index.service.ts":{"33":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","45":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","46":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","48":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","50":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","53":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","56":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","59":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","71":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","74":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","76":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","82":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","95":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","143":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","157":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","175":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","182":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","204":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","222":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","223":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","265":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","275":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","292":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","314":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","329":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","343":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B","358":"b:ANsewA80EpfwRAAAClAAkbv2Fi0B"},"packages/cli/src/node-types.ts":{"17":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","22":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","35":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","61":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","65":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","89":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","128":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","132":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","150":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","153":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","160":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","163":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","174":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA","175":"b:AN8CgH8wEpHgBAAACFAAAYj0FgAA"},"packages/cli/src/push/index.ts":{"57":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","67":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","70":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","75":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","78":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","80":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","84":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","99":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","104":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","116":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","171":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","176":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","185":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","194":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","199":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","220":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","227":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","242":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA","249":"b:ANsWoH84ErXgDAAAClQCEYgEAAAA"},"packages/cli/src/push/push-helpers.ts":{"5":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","9":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","14":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA","18":"b:ANsWoH84EpHgBAAACFAAAYgEAAAA"},"packages/cli/src/push/websocket.push.ts":{"9":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA","15":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA","21":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA","60":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA","71":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA","75":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA","79":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA","88":"b:MNsWoH86GpHgBQAAz1gAkYgEAAAA"},"packages/cli/src/services/access.service.ts":{"13":"b:AN8WwA8wEpvgRAAAC1AAEYkEAAAA","19":"b:AN8WwA8wEpvgRAAAC1AAEYkEAAAA","31":"b:AN8WwA8wEpvgRAAAC1AAEYkEAAAA"},"packages/cli/src/services/active-workflows.service.ts":{"13":"b:oNseKQ84FrHwBBQUCFAAAaoGAAAA","21":"b:oNseKQ84FrHwBBQUCFAAAaoGAAAA","24":"b:oNseKQ84FrHwBBQUCFAAAaoGAAAA","27":"b:oNseKQ84FrHwBBQUCFAAAaoGAAAA","33":"b:oNseKQ84FrHwBBQUCFAAAaoGAAAA","38":"b:oNseKQ84FrHwBBQUCFAAAaoGAAAA","41":"b:oNseKQ84FrHwBBQUCFAAAaoGAAAA"},"packages/cli/src/services/cache/cache.service.ts":{"26":"b:ANsewH80EpXwDCAACHICFbj2FC0B","32":"b:ANsewH80EpXwDCAACHICFbj2FC0B","39":"b:ANsewH80EpXwDCAACHICFbj2FC0B","55":"b:ANsewH80EpXwDCAACHICFbj2FC0B","69":"b:ANsewH80EpXwDCAACHICFbj2FC0B","79":"b:ANsewH80EpXwDCAACHICFbj2FC0B","83":"b:ANsewH80EpXwDCAACHICFbj2FC0B","87":"b:ANsewH80EpXwDCAACHICFbj2FC0B","91":"b:ANsewH80EpXwDCAACHICFbj2FC0B","103":"b:ANsewH80EpXwDCAACHICFbj2FC0B","115":"b:ANsewH80EpXwDCAACHICFbj2FC0B","121":"b:ANsewH80EpXwDCAACHICFbj2FC0B","139":"b:ANsewH80EpXwDCAACHICFbj2FC0B","160":"b:ANsewH80EpXwDCAACHICFbj2FC0B","180":"b:ANsewH80EpXwDCAACHICFbj2FC0B","218":"b:ANsewH80EpXwDCAACHICFbj2FC0B","256":"b:ANsewH80EpXwDCAACHICFbj2FC0B","300":"b:ANsewH80EpXwDCAACHICFbj2FC0B","308":"b:ANsewH80EpXwDCAACHICFbj2FC0B","320":"b:ANsewH80EpXwDCAACHICFbj2FC0B","339":"b:ANsewH80EpXwDCAACHICFbj2FC0B","355":"b:ANsewH80EpXwDCAACHICFbj2FC0B"},"packages/cli/src/services/naming.service.ts":{"6":"b:IL40oC941kQhFECQA1CEEYgEgAAA","11":"b:IL40oC941kQhFECQA1CEEYgEgAAA","15":"b:IL40oC941kQhFECQA1CEEYgEgAAA","19":"b:IL40oC941kQhFECQA1CEEYgEgAAA","28":"b:IL40oC941kQhFECQA1CEEYgEgAAA"},"packages/cli/src/services/ownership.service.ts":{"27":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","44":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","50":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","57":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","64":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","74":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","88":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","111":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","123":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","143":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","150":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","157":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","169":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","211":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","217":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA","237":"b:qNuWgP90ApXwDEAACXAGEYj2NCcA"},"packages/cli/src/utils.ts":{"10":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","14":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","15":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","17":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","22":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","42":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","46":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","48":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","53":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","58":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","64":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","77":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","79":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","84":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","104":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","111":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","131":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","143":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","147":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B","155":"b:cPuS/X9wErf2HFQUCFYinZn0Pq8B"},"packages/cli/src/workflow-helpers.ts":{"33":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","60":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","66":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","72":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","91":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","110":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","114":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","126":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","146":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","150":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","191":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","199":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","205":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","228":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","264":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","382":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","395":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","414":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","442":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","485":"b:ANsewH90ErfwTACAGlAClYn0Fi4B","507":"b:ANsewH90ErfwTACAGlAClYn0Fi4B"},"packages/cli/src/workflows/utils.ts":{"15":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","22":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","23":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","31":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","37":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","42":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA"},"packages/cli/src/workflows/workflow-creation.service.ts":{"42":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","63":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","168":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","259":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","264":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA"},"packages/cli/src/workflows/workflow-finder.service.ts":{"15":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","21":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","54":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","72":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","95":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","141":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","152":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","155":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","186":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","217":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","220":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","224":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","233":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","245":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","248":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA","265":"b:SNumlA+0EpG+BAAACFIAAZj0FgAA"},"packages/cli/src/workflows/workflow-history/workflow-history.service.ts":{"26":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","35":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","70":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","103":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","125":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","167":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","209":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","257":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","272":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","297":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","300":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA","318":"b:APs2gA80EpXyDAAgCFIAAbj2FiUA"},"packages/cli/src/workflows/workflow-validation.service.ts":{"52":"b:IPsewA80EpPwBACACFAACbr2Fq0B","63":"b:IPsewA80EpPwBACACFAACbr2Fq0B","125":"b:IPsewA80EpPwBACACFAACbr2Fq0B","126":"b:IPsewA80EpPwBACACFAACbr2Fq0B","149":"b:IPsewA80EpPwBACACFAACbr2Fq0B","181":"b:IPsewA80EpPwBACACFAACbr2Fq0B","242":"b:IPsewA80EpPwBACACFAACbr2Fq0B","263":"b:IPsewA80EpPwBACACFAACbr2Fq0B","298":"b:IPsewA80EpPwBACACFAACbr2Fq0B","334":"b:IPsewA80EpPwBACACFAACbr2Fq0B","336":"b:IPsewA80EpPwBACACFAACbr2Fq0B","341":"b:IPsewA80EpPwBACACFAACbr2Fq0B","360":"b:IPsewA80EpPwBACACFAACbr2Fq0B","383":"b:IPsewA80EpPwBACACFAACbr2Fq0B","388":"b:IPsewA80EpPwBACACFAACbr2Fq0B","422":"b:IPsewA80EpPwBACACFAACbr2Fq0B","441":"b:IPsewA80EpPwBACACFAACbr2Fq0B","466":"b:IPsewA80EpPwBACACFAACbr2Fq0B","474":"b:IPsewA80EpPwBACACFAACbr2Fq0B","495":"b:IPsewA80EpPwBACACFAACbr2Fq0B"},"packages/cli/src/workflows/workflow.service.ee.ts":{"43":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","60":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","73":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","75":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","82":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","93":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","105":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","115":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","119":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","131":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","132":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","146":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","150":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","154":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","159":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","167":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","191":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","203":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","215":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","219":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","222":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","239":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","248":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","261":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","265":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","270":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","272":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","281":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","335":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","357":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","426":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","449":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","474":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","499":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","514":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","540":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","551":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","575":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","579":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","601":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","606":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","619":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","633":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","639":"b:YPsW4A80Erf7TACAHnACGYj0FIEA","660":"b:YPsW4A80Erf7TACAHnACGYj0FIEA"},"packages/cli/src/workflows/workflow.service.ts":{"77":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","105":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","166":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","210":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","214":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","217":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","221":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","227":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","239":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","242":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","243":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","246":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","247":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","251":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","257":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","262":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","268":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","276":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","283":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","287":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","289":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","304":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","370":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","595":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","677":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","701":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","711":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","729":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","889":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","969":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","994":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","995":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1007":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1074":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1109":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1113":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1117":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1121":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1133":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1141":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1150":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1151":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1162":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1163":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1168":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1174":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1182":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1189":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1200":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1202":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1209":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1219":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1220":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1240":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1267":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B","1306":"b:7Nue3X+0Erf2RBwEClIAEbr2VC0B"},"packages/cli/src/workflows/workflows.controller.ts":{"69":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","93":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","130":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","155":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","171":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","205":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","288":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","295":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","343":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","354":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","375":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","409":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","443":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","477":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","508":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","551":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","557":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","571":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","572":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","576":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","577":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","581":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","582":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","603":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","627":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","634":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","651":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","671":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","697":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","710":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B","728":"b:YNu+/Q88Ur/2TB4EGtaCkbv21C0B"},"packages/community-node-types-utils.ts":{"34":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","40":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","57":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA"},"packages/community-node-types.controller.ts":{"9":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","12":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","17":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA"},"packages/community-node-types.service.ts":{"29":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","35":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","52":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","83":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","125":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","133":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","149":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","151":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","164":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","186":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","192":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","197":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","202":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","204":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","206":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","209":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","216":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","222":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","229":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA","234":"b:ANs2oA84EpGgBAAACBAAAYgEAAAA"},"packages/core/src/index.ts":{"5":"b:AKoAoHhQRpjwBAAQAEAAAAAEgAAA","24":"b:AKoAoHhQRpjwBAAQAEAAAAAEgAAA"},"packages/core/src/nodes-loader/directory-loader.ts":{"37":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","88":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","108":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","117":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","123":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","135":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","139":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","143":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","145":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","146":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","147":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","150":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","166":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","230":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","243":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","261":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","290":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","311":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","314":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","326":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","328":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","333":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","345":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","370":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","401":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","407":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","413":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","425":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","444":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","461":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","480":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","500":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","514":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","534":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","535":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB","538":"b:ANsawH8yEpXhBQAADNAAhaj0FiwB"},"packages/core/src/nodes-loader/index.ts":{"2":"b:AKoAoHhQRpjwBAAQAEAAAAAEgAAA","4":"b:AKoAoHhQRpjwBAAQAEAAAAAEgAAA"},"packages/core/src/observability/tracing/tracing.ts":{"37":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","61":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","68":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","76":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","81":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","89":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA"},"packages/workflow/src/index.ts":{"93":"b:APsWgH8wEr/hDQAgClxiEYn0EC4B"},"packages/workflow/src/utils.ts":{"18":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","29":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","37":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","58":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","97":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","102":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","103":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","110":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","128":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","130":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","157":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","200":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","206":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","216":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","241":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","245":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","246":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","250":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","251":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","259":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","267":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","278":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","296":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","300":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","302":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","309":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","322":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","326":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","343":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","360":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","363":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","370":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","407":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","413":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","417":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","426":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","438":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","446":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","454":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","473":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","492":"b:APseoH82ErfxDQIgCFQCmYn2FCcA","495":"b:APseoH82ErfxDQIgCFQCmYn2FCcA"},"packages/workflow/src/versioned-node-type.ts":{"10":"b:ANoSQHYwEpVgBQAACEAAgYjkFCAA","19":"b:ANoSQHYwEpVgBQAACEAAgYjkFCAA","23":"b:ANoSQHYwEpVgBQAACEAAgYjkFCAA"},"packages/workflow/src/workflow-checksum.ts":{"46":"b:ANsGgA80EpHwBAAACFAAAYj0FAAA","50":"b:ANsGgA80EpHwBAAACFAAAYj0FAAA","74":"b:ANsGgA80EpHwBAAACFAAAYj0FAAA","99":"b:ANsGgA80EpHwBAAACFAAAYj0FAAA"},"packages/workflow/src/workflow-structure-validation.ts":{"94":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","97":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","103":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","105":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","113":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","119":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA","190":"b:ANsGgA80EpHwBAAACFAAAYj0FgAA"},"packages/@n8n/composables/src/structuralComputed.ts":{"21":"b:cP974A8y/v/h/4Ph//////sPgAAA","27":"b:cP974A8w/v/h/wPg//////sPgAAA"},"packages/@n8n/composables/src/useShortKeyPress.ts":{"6":"b:cP9/4A84/v/n/wPg//////8PgAAA","22":[151],"33":"b:ADIAAAAAAAAAAAAABAEJHQAAgAAA"},"packages/@n8n/composables/src/useThrottleWithReactiveDelay.ts":{"7":"b:cP8f4A84/v/n/wOg//////8PAAAA","12":"b:cP8f4A84/v/n/wOg//////8PAAAA"},"packages/@n8n/design-system/src/components/N8nBlockUi/BlockUi.vue":{"12":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","13":"b:MN5b4A0w1s7h+QMgz+3//isCAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/bolt-filled.svg":{"9":"b:cP974A8w/v/h/wPg3/////sPAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/grip-lines-vertical.svg":{"9":[15,16,49,69,119,120]},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-ellipsis.svg":{"11":"b:cP974A8w/v/h/wOg//////sPAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-play.svg":{"11":"b:cP8b4A8w/v/h/wOg3/////sPAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-power.svg":{"11":"b:cP8b4A8w/v/h/wMg3/////sPAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-trash.svg":{"11":"b:cP8b4A8w/v/h/wMg//////sPAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-validation-error.svg":{"11":"b:ML4Z4AEw1gZhnQAgBU2iL+INAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/pop-out.svg":{"8":"b:cP8f4A84/v/n/wOg//////8PAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/vector-square.svg":{"9":[15,16,49,69,119,120]},"packages/@n8n/design-system/src/components/N8nIcon/icons.ts":{"777":"b:cP974A8w/v/h/wPg3/////sPAAAA","781":"b:cP974A8y/v/h+0Pg3/////sPAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/ai-agent.svg":{"11":"b:AIABAAAQAgAAGAAAAUCAAQAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/call-n8n-sub-workflow-tool.svg":{"11":[15,41,49,119]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/chat-trigger.svg":{"11":"b:cMoboAkw/k4h8ACgx02vfaoCAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/form-trigger.svg":{"11":"b:cIoZoAkw/k4h0AAgxw2vfaoCAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/http-request.svg":{"11":"b:AJAAYAUyAgQBgEAAAQSABAAIAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/manual-trigger.svg":{"11":"b:cJ974A8w/v/h2gNg13///+sCAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/schedule-trigger.svg":{"11":"b:cKoZoAkw/k4h0QAgz82vfboDAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/sub-workflow-trigger.svg":{"11":"b:cIoZoAkw/k4h0AAgxw2vfaoCAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/webhook.svg":{"11":"b:cIpZoAsw/s4h0AAgx42vfaoCAAAA"},"packages/@n8n/design-system/src/components/N8nNodeCreatorNode/NodeCreatorNode.vue":{"32":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","33":"b:cIoZoAkw/k4h0AAgxy3vfCoCAAAA","58":"b:MIAAgAAQIAggAAAAAgEgASAAAAAA","61":[15,49,119]},"packages/@n8n/errors/src/application.error.ts":{"18":"b:qILhNCA2AwJgMFAGAUClG8BMAIAA"},"packages/@n8n/tournament/src/ExpressionBuilder.ts":{"25":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","29":"b:MP9b4HcwVp7h/0KAX+///6vmEK4A","33":"b:AONbIHMQBoJhOgKgQ8jqn4PjEK4A","37":"b:AMMaAHIAAIJBAAIAAkhPhIHiEK4A","50":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","54":"b:AMMaAHIAAIJBAgIAAkhKhIHiEK4A","58":"b:AMMaAHIAAIJBAAIAAkhKhIHiEK4A","62":"b:AMNbIHMQAoJBOgKgQ8jqh4HjEK4A","71":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","75":"b:AMMaAHIAAIJBCAIgAkjKhIHiEK4A","88":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","103":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","110":"b:AOMaAHIAAIJBIwIAAkhqhIHiEK4A","136":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","137":"b:AMMaAHIAAIJBCAIgAkjKhIHiEK4A","141":"b:AMMaAHIAAIJBCAIgAkjKhIHiEK4A","157":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","158":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","171":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","188":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","197":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","198":"b:MP9b4HcwVp7h/0KgX+///6vnEK4A","263":"b:AOMaAHIAAIJBIwIAAkhqhIHiEK4A"},"packages/@n8n/tournament/src/ExpressionSplitter.ts":{"19":"b:MP9T4HcwVp7h/0KgX+///6vnECQA","23":"b:MP9T4HcwVp7h/0KgX+///6vnECQA","27":"b:MP9T4HcwVp7h/0KgX+///6vnECQA","101":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA","105":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA","107":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA"},"packages/@n8n/tournament/src/FunctionEvaluator.ts":{"6":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA","8":"b:MP9T4HcwVp7h/0KgX+///6vnECQA","18":"b:MP9T4HcwVp7h/0KgX+///6vnECQA"},"packages/@n8n/tournament/src/Parser.ts":{"5":"b:MP9T4HcwVp7h/0KgX+///6vnECQA"},"packages/@n8n/tournament/src/VariablePolyfill.ts":{"12":"b:AMEbAHIQAoBBGAIAAUCChIHiEC4A","22":"b:MP9b4HcwVp7h/0KgX+///6vnEC4A","33":"b:MP9b4HcwVp7h/0KgX+///6vnEC4A","46":"b:MP9b4HcwVp7h/0KgX+///6vnEC4A","73":"b:MP9b4HcwVp7h/0KgX+///6vnEC4A","78":"b:AMEaAHIAAIBBAAIAAEAChIHiEC4A","83":"b:AMFbIHMQAoBBOgKgQ8jnh4HjEC4A","102":"b:AMEaAHIAAIBBAAIAAEAChIHiEC4A","107":"b:AMFbIHMQAoBBGgIgQ8jih4HjEC4A","114":"b:MP9b4HcwVp7h/0KgX+///6vnEC4A","119":"b:AMEaAHIAAIBBAAIAAEAChIHiEC4A","122":"b:MP9b4HcwVp7h/0KgX+///6vnEC4A"},"packages/@n8n/utils/src/event-queue.ts":{"7":"b:cP9/4A84/v/n/wvo//////8PAAAA","17":"b:cP8fwA8wAP/naQKgn///1/8OAAAA","44":"b:cP8fwA8wAP/naQKgn///1/8OAAAA"},"packages/@n8n/utils/src/search/reRankSearchResults.ts":{"1":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","6":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","9":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","23":"b:MIoJoAkQ5EghEAAgxwGvZSACgAAA"},"packages/@n8n/utils/src/search/sublimeSearch.ts":{"25":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","41":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","182":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","205":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","222":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","231":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","285":"b:MIoJoAkQ5EghEAAgxwGvZSACgAAA"},"packages/frontend/editor-ui/src/app/api/workflows.ts":{"26":"b:cL59oA84/m5l1gPg503vff4PAAAA","39":"b:cL59oA84/m5l1gPg503vff4PAAAA","65":"b:cMcTQA4gALv9aQIgnvrzw9sOAAAA","69":"b:cL4doA84/m5l0gMg503vfb4DAAAA","73":[93,137],"87":[83],"98":"b:uACAXQCAAQA+ABAEAAIAQBsKAAAA","114":"b:+P+f/Q+4/////xMk//////8PAAAA","136":"b:ANcLAA4gAP/BaAKAh/x/l8EAAAAA","149":"b:MMECQAIAAJugKQAAHvryw9kOAAAA","160":"b:cP8fwA8wAP/laQIgn///1/8OAAAA"},"packages/frontend/editor-ui/src/app/components/BreakpointsObserver.vue":{"30":"b:cP8f4A84/v/n/wMg//////8PAAAA","37":"b:cP8f4A84/v/n/wMg//////8PAAAA","53":"b:cP8f4A84/v/n/wMg//////8PAAAA","72":[65,108],"76":[65,108],"84":"b:cP8f4A84/v/n/wMg//////8PAAAA","88":[65,69,105,126,132],"91":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/ConnectionTracker.vue":{"26":"b:cP8f4A84/v/n/wMo//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/Draggable.vue":{"40":"b:ON7b4A2w187/+QMgz+///zsKAAAA","44":"b:AAAAAAAAAAA+AAAAAAJSAggCAAAA","78":[65,113],"105":[65,113],"115":[65,66,67,68,69,105,113,137],"127":[65,66,67,68,69,105,113,137],"135":"b:CNKbYAiwV06/+QEgz+//dykCAAAA","149":"b:ON7b4A2w187/+QMgz+///zsKAAAA"},"packages/frontend/editor-ui/src/app/components/DraggableTarget.vue":{"15":"b:ML5b4A0y1s7h+cMhz+3//ysCAAAA","31":"b:ML4b4A0y1s7h+cMgz+3//ysCAAAA","32":[113],"34":"b:ML5b4A0y1s7h+cMhz+3//ysCAAAA","37":"b:ML5b4A0y1s7h+cMhz+3//ysCAAAA","39":[113],"49":"b:AKpZ4A0ykAYhwUAAx+lv3woAAAAA","53":"b:AIpZ4A0ykAYhwUAAx+lv3woAAAAA","57":"b:AIAYQAUykAYhAEAAgIEvHwIAAAAA","64":[113],"79":"b:ML5b4A0y1s7h+cMhz+3//ysCAAAA"},"packages/frontend/editor-ui/src/app/components/FocusSidebar.vue":{"33":"b:cP9/4A84/v/n/wOg//////8PAAAA","52":"b:cP9/4A84/v/n/wOg//////8PAAAA","53":[80,99],"54":"b:cP9f4A84/v/n/wOg//////8HAAAA","56":[80,99],"63":[80,99],"66":[80,99],"74":[80,99],"86":[80,99],"91":"b:cP9f4A84/v/n/wOg//////8HAAAA","99":[80,99],"115":[80,99],"119":"b:cP9/4A84/v/n/wOg//////8PAAAA","123":"b:cP9/4A84/v/n/wOg//////8PAAAA","124":"b:cP9/4A84/v/n/wOg//////8PAAAA","135":"b:cP9f4A84/v/n/wOg//////8HAAAA","163":"b:cP9/4A84/v/n/wOg//////8PAAAA","167":"b:AIAAAAAAAAAgAAAgBF4AQNAIAAAA","170":"b:cP9/4A84/v/n/wOg//////8PAAAA","192":[80,99]},"packages/frontend/editor-ui/src/app/components/MainHeader/ActionsDropdownMenu.vue":{"44":"b:cP8f4A84/v/n/wMg//////8PAAAA","74":"b:cP8f4A84/v/n/wMg//////8PAAAA","78":"b:cP8f4A84/v/n/wMg//////8PAAAA","86":"b:cP8f4A84/v/n/wMg//////8PAAAA","88":"b:cP8f4A84/v/n/wMg//////8PAAAA","92":"b:ABYAAAQAACBCggMAAEBgRQABAAAA","96":"b:ABYAAAQAACBCggMAAEBgRQABAAAA","118":"b:cP8f4A84/v/n/wMg//////8PAAAA","246":"b:UBYAAAQAACBCggMAQEBgRRABAAAA","420":"b:cP8f4A84/v/n/wMg//////8PAAAA","428":"b:ABYAAAQAACBCggMAAEBgRQABAAAA"},"packages/frontend/editor-ui/src/app/components/MainHeader/MainHeader.vue":{"60":"b:cP8f4A84/v/n/wMg//////8PAAAA","68":"b:cP8f4A84/v/n/wMg//////8PAAAA","69":"b:cP8f4A84/v/n/wMg//////8PAAAA","74":"b:cP8f4A84/v/n/wMg//////8PAAAA","75":"b:cP8f4A84/v/n/wMg//////8PAAAA","76":"b:cP8f4A84/v/n/wMg//////8PAAAA","77":"b:cP8f4A84/v/n/wMg//////8PAAAA","78":"b:cP8f4A84/v/n/wMg//////8PAAAA","80":"b:cP8f4A84/v/n/wMg//////8PAAAA","83":[65],"86":"b:cP8f4A84/v/n/wMg//////8PAAAA","94":"b:cP8f4A84/v/n/wMg//////8PAAAA","104":"b:cL4f4A0w1u7n/QMgx/////8OAAAA","108":"b:cP8f4A84/v/n/wMg//////8PAAAA","112":[65,105,126,132],"116":"b:cP8f4A84/v/n/wMg//////8PAAAA","121":"b:cP8f4A84/v/n/wMg//////8PAAAA","128":"b:cP8f4A84/v/n/wMg//////8PAAAA","138":"b:cP8f4A84/v/n/wMg//////8PAAAA","158":"b:AIAAAAAAAAACAAAABFwAAMAAAAAA","179":[15,65,98,135],"210":"b:AIAAAAAAAAACAAAABFwAAMAAAAAA","236":[65],"254":[65],"258":[65]},"packages/frontend/editor-ui/src/app/components/MainHeader/TabBar.vue":{"22":"b:AIAAAAAAAAACAAAABFwAAMAAAAAA","24":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowDetails.vue":{"47":"b:cP8f4A84/v/n/wMg//////8PAAAA","93":[65,130],"99":[65],"102":"b:cP8f4A84/v/n/wMg//////8PAAAA","106":"b:cP8f4A84/v/n/wMg//////8PAAAA","110":"b:cP8f4A84/v/n/wMg//////8PAAAA","115":"b:cP8f4A84/v/n/wMg//////8PAAAA","120":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","122":"b:cP8f4A84/v/n/wMg//////8PAAAA","134":"b:cP8f4A84/v/n/wMg//////8PAAAA","135":[65,69,126,132],"142":[65,130],"150":[65,130],"157":[65,130],"186":[65],"191":[65],"197":"b:QBYAAAQgACBGggMAAEBgRQADAAAA","223":[65,132],"267":[65],"288":[65],"324":[65,132],"334":[65,132],"386":[65],"388":[65],"394":"b:ABYAAAQAACBCggMAAEBgRQABAAAA","400":"b:cP8f4A84/v/n/wMg//////8PAAAA","409":[65,69,105,126,132],"417":"b:cP8f4A84/v/n/wMg//////8PAAAA","428":"b:cP8f4A84/v/n/wMg//////8PAAAA","434":"b:cP8f4A84/v/n/wMg/////n8PAAAA","493":[132],"500":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.vue":{"65":"b:cP8f4A84/v/n/wMg//////8PAAAA","80":"b:cP8f4A84/v/n/wMg//////8PAAAA","87":"b:cP8f4A84/v/n/wMg//////8PAAAA","89":[65],"98":"b:ABYAAAQAACBCggMAAEBgRQABAAAA","100":"b:cP8f4A84/v/n/wMg//////8PAAAA","104":"b:cP8f4A84/v/n/wMg//////8PAAAA","108":"b:cP8fwA8wBv/neQIgn///9/8PAAAA","112":"b:AOoTIAMQBsIDNQAgSsivbTAPAAAA","122":"b:cP8f4A84/v/n/wMg//////8PAAAA","146":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","147":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","148":"b:cP8f4A84/v/n/wMg//////8PAAAA","149":[33,63,65,93,132,133,137],"151":"b:cL4doA84/m5n1gMg503vfb4PAAAA","157":[65,137],"182":[63,65,93,132,133,137],"198":"b:cP8f4A84/v/n/wMg//////8PAAAA","309":"b:cP8f4A84/v/n/wMg//////8PAAAA","314":"b:cP8f4A84/v/n/wMg//////8PAAAA","323":"b:cP8f4A84/v/n/wMg//////8PAAAA","325":[65],"332":[65],"337":"b:cP8f4A84/v/n/wMg//////8PAAAA","342":"b:cP8f4A84/v/n/wMg//////8PAAAA","344":"b:cP8f4A84/v/n/wMg//////8PAAAA","379":"b:cP8f4A84/v/n/wMg//////8PAAAA","384":"b:cP8f4A84/v/n/wMg//////8PAAAA","387":[65],"412":[65],"447":[65],"457":[65],"477":[65],"502":[65],"503":[65],"508":[65],"512":[65],"517":[65],"523":"b:cP8f4A84/v/n/wMg//////8PAAAA","528":[65,69,105,126,132],"536":"b:cP8f4A84/v/n/wMg//////8PAAAA","571":"b:cP8f4A84/v/n/wMg//////8PAAAA","581":"b:cP8f4A84/v/n/wMg/////n8PAAAA","609":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/NodeExecuteButton.vue":{"15":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","59":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","74":"b:AAYDAAQAAESBIAAAgIBqFgAAAAAA","81":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","93":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","99":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","105":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","116":"b:MJ4b4A0w1k6h8QEgz83vfyoAAAAA","120":"b:AAYTAAQAAEaBIAAAgIBqFwAAAAAA","132":"b:AAYDAAQAAESBIAAAgIBqFgAAAAAA","136":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","148":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/app/components/NodeIcon.vue":{"43":"b:cP5b4A0y/s7h/QOgz+3//6sOAAAA","44":"b:cP5b4A0y/s7h/QOgz+3//6sOAAAA","48":"b:cP974A8y/v/h/wPg3/////sPAAAA","50":"b:cP974A8y/v/h/wPg3/////sPAAAA","51":"b:cP974A8y/v/h/wPg3/////sPAAAA","56":"b:cP974A8y/v/h/wPg3/////sPAAAA","61":"b:cP974A8y/v/h/wPg3/////sPAAAA","66":"b:cP974A8y/v/h/wPg3/////sPAAAA","71":"b:cP974A8y/v/h/wPg3/////sPAAAA"},"packages/frontend/editor-ui/src/app/components/TidyUpIcon.vue":{"2":"b:cP8f4A84/v/n/wMg//////8PgAAA"},"packages/frontend/editor-ui/src/app/components/app/AppHeader.vue":{"6":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/components/transitions/SlideTransition.vue":{"3":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/canvasConnectionReplacement.utils.ts":{"86":"b:MIgZoAgwkgYh0AAg5yWvfSIAAAAA","94":"b:MIgZoAgwgAYhEAAg5wUvbSIAAAAA","102":"b:MIgZoAgwkgYh0AAg5yWvfSIAAAAA","192":[78,79,96],"212":[78,79,96],"221":[78,79,96],"227":[78,79,96],"249":[78,79,96],"264":[78,79,96]},"packages/frontend/editor-ui/src/app/composables/useActivityDetection.ts":{"6":"b:cP9/4A84/v/n/wOg//////8PAAAA","9":"b:ALwAwAkAAAKhIAAgFaSGV/kGAAAA","15":"b:ILwAwAkQAIKhYAAgl+WGV/kGAAAA","16":"b:ILwAwAkQAIKhYAAgl+WGV/kGAAAA","21":"b:MIAAQAAAAAAkAAAgFF4AQNgOAAAA","22":"b:MIAAQAAAAAAkAAAgFF4AQNgOAAAA","28":"b:cP9/4A84/v/n/wOg//////8PAAAA","29":"b:ILwAwAkQAIKhYAAgl+WGV/kGAAAA","39":"b:cP9/4A84/v/n/wOg//////8PAAAA","46":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA"},"packages/frontend/editor-ui/src/app/composables/useAutocompleteTelemetry.ts":{"11":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","55":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA","59":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA","94":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA","101":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","107":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA"},"packages/frontend/editor-ui/src/app/composables/useCalloutHelpers.ts":{"33":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","111":[15,16,44,49,76,96,107,119,120]},"packages/frontend/editor-ui/src/app/composables/useCanvasOperations.ts":{"238":"b:cIoZoAkw/k4hUAAgxw2vfaoCAAAA","242":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","252":[13],"265":[13],"282":[13,77,96,97,100,102,131],"290":[13,77,96,97,100,102,131],"299":[13,77,78,79,96,97,100,102,131],"321":[102],"330":[79,128],"358":[128],"370":[98,120,129],"426":[73,96,97,100,102,110,128],"505":[73,96,97,100,102,110,128],"544":[96,97,100,102,128],"549":[96,97,100,102,128],"556":[102,128],"561":[73,96,97,100,102,110,128],"580":[128],"601":[128],"764":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","774":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","797":"b:cN9b4A0w/u7h+wMg/+3///sHAAAA","813":"b:AIAAAAAAAAAAAAAgRUAAAOAAAAAA","826":[102],"869":"b:cP974A8w/v/h/wOg//////sPAAAA","889":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","897":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","977":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","996":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1010":[98,131],"1021":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1044":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1093":[102,128],"1102":[78,79,96],"1113":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1186":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","1196":[101],"1202":"b:cIoZoAkw/k4h0AAgxy2vfaoCAAAA","1232":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1275":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1281":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1286":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1306":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","1318":"b:cP974A8w/v/h/wOg//////sPAAAA","1330":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1456":"b:AIABAAAQAgABkAAAxyGFdAAAAAAA","1469":"b:MIgZoAgwkgYh0AAgxyWvfSIAAAAA","1490":[78,79,96],"1546":"b:MIgZoAgwkgYh0AAgxyWvfSIAAAAA","1551":[15,16,44,49,76,119],"1574":"b:AIAAAAAAAAABgAAAxyEFdAAAAAAA","1614":"b:cL4ZoA0w/m5h1gMg523vfasPAAAA","1620":"b:cP974A8w/v/h/wOg//////sPAAAA","1635":[78,79,96],"1657":[78,79,96],"1694":[78,79,96],"1709":[79],"1714":[78,79,96],"1716":[78,79,96],"1722":[79],"1736":[79],"1748":[79],"1762":[79],"1769":[79],"1776":[78,79,96],"1783":[78,79,96],"1791":[79,96],"1800":[79,96],"1804":[78,79,96],"1816":[78,79,96],"1819":[78,79,96],"1822":[78,79,96],"1923":[79],"1970":[78,79,96],"1989":[78,79,96],"2033":"b:ML4ZoA0w1i5h0gMg92XvfSsBAAAA","2073":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","2083":[102,128],"2098":[73,96,97,100,102,110,128],"2164":"b:ACAAAAAAAAAAwgAAU0AAAAEAAAAA","2200":"b:ACAAAAAAAAAAwgAAU0AAAAEAAAAA","2214":[102,128],"2225":[15,32,64,97,128],"2242":[15,97,128],"2269":[15,128],"2273":[32,64,97,128],"2277":"b:ML4ZoA0w1i5h0gMg92XvfSsBAAAA","2285":"b:ML4ZoA0w1i5h0gMg92XvfSsBAAAA","2291":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","2298":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","2302":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","2307":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","2386":"b:ML4ZoA0w1i5h0gMg12XvfSsBAAAA","2417":"b:cL4ZoA0w/m5h0gMg523vfaoDAAAA","2444":"b:cP9/4A84/v/n/wPg//////8PAAAA","2491":"b:cMdzQA4gALvhaQKAnvrzw9kOAAAA","2497":"b:YMdzQA4gALvhaQCAnvrzw9kOAAAA","2498":"b:YMdzQA4gALvhaQCAnvrzw9kOAAAA","2499":"b:YMdzQA4gALvhaQCAnvrzw9kOAAAA","2501":"b:YMdzQA4gALvhaQCAnvrzw9kOAAAA","2543":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2559":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2578":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2595":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2598":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2641":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2771":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2805":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2820":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2827":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2834":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2835":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2956":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","2979":[61,79,80,118,120,122,126,136],"2981":[136],"2984":[80,126,136],"2988":[80,126,136],"2998":[80,126,136],"2999":[80,126,136],"3010":[136],"3033":[96,98,102,122,131,138],"3047":"b:ABYAAAQAACBAggMAREBgRQgBAAAA","3071":[96,98,102,122,131,138],"3083":[96,98,102,122,131,138],"3125":[138],"3130":[138],"3139":[96,98,102,122,131,138],"3160":[96,98,131,138],"3167":[96,98,131,138],"3168":[96,98,131,138],"3179":[98,102,122],"3186":[98,102,122],"3189":[96,131,138],"3201":[96,131,138],"3211":[110,134,135],"3261":[15,16,17,77,95],"3276":[15,16,17,77,95],"3281":[74,138,139],"3378":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","3404":"b:AIABAAEQ1ggAUAAAAACgGQgAAAAA","3454":"b:cP9/4A84/v/l/wPg//////8PAAAA","3455":"b:cP9/4A84/v/l/wPg//////8PAAAA","3458":[74,138,139],"3466":[74,138,139],"3473":[74,138,139]},"packages/frontend/editor-ui/src/app/composables/useDataSchema.ts":{"31":"b:cP9/4A84/v/n/wOg//////8PgAAA","34":"b:ACYKAAQAAIzASAIAiu1/twEAgAAA","57":[151],"64":"b:AAAAAAAAAAhAAAAACEAaAwAAgAAA","74":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","99":"b:ACYKAAQAAIzASAIAiu1/twEAgAAA","109":[151,111,125],"129":[151,111,125],"150":[151,111,125],"162":"b:AAYaAAQAAM6BSAIAgsx/lwEAgAAA","178":"b:ML5b4A0w1s7h+QMg3+3//ysCgAAA","206":"b:ML5b4A0w1s7h+QMg3+3//ysCgAAA","215":"b:AABAAAAAAAAAAAAACAVfBwEAgAAA","220":"b:AABAAAAAAAAAAAAACAVfBwEAgAAA","227":[151,118],"235":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","240":[151,118],"364":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","366":"b:AAYIAAQAAIzASAIAguxktgAAgAAA","377":[151,111,125],"384":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","393":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","395":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","398":[151,113,118],"406":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","467":"b:AAYKAAQAAIzASAIAiu1/twEAgAAA","508":"b:AAYIAAQAAIzASAIAiu1/twEAgAAA","513":"b:AAYIAAQAAIzASAIAiu1/twEAgAAA"},"packages/frontend/editor-ui/src/app/composables/useGlobalLinkActions.ts":{"14":"b:cP9/4A84/v/l/wOg//////8PAAAA","15":"b:cP9/4A84/v/l/wOg//////8PAAAA","18":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","22":[120],"34":"b:cP9f4A84/v/n+wOg//////8HAAAA","55":[120],"60":"b:cP9/4A84/v/n/wOg//////8PAAAA","69":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA"},"packages/frontend/editor-ui/src/app/composables/useLayoutProps.ts":{"4":"b:cP8f4A84/v/n/wMg//////8PAAAA","7":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeConnections.ts":{"12":"b:cP9/4A84/v/n/wPg//////8PgAAA","25":"b:cP9/4A84/v/n/wPg//////8PgAAA","26":"b:MP974A8w1r/h/wPg3////+sNgAAA","29":"b:cP9/4A84/v/n/wPg//////8PgAAA","30":"b:MP974A8w1r/h/wPg3////+sNgAAA","33":"b:cP9/4A84/v/n/wPg//////8PgAAA","34":"b:AIEDAAAQAgAAGAAgAUCAAQAAgAAA","37":"b:MP974A8w1r/h/wPg3////+sNgAAA","45":"b:cP9/4A84/v/n/wPg//////8PgAAA","46":"b:cP974A8w/v/h/wPg3/////sPgAAA","49":"b:cP9/4A84/v/n/wPg//////8PgAAA","50":"b:cP974A8w/v/h/wPg3/////sPgAAA","53":"b:cP974A8w/v/h/wPg3/////sPgAAA","61":[151,97,100,128]},"packages/frontend/editor-ui/src/app/composables/useNodeDocsUrl.ts":{"5":"b:cP9/4A84/v/n/wOg//////8PAAAA","8":[55],"10":[44,55,118,119],"18":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeExecution.ts":{"81":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","105":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","114":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","118":"b:ML4b4A0w1s7h+QMgx+3//ysCAAAA","124":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","128":[20,57,64],"130":"b:ML4b4A0w1s7h+QMgx+3//ysCAAAA","132":"b:AAYDAAQAAESBIAAAgIBqFgAAAAAA","138":"b:ML4b4A0w1s7h+QMgx+3//ysAAAAA","140":"b:ML4b4A0w1s7h+QMgx+3//ysAAAAA","142":[9,20,57,62,64,122],"144":"b:ML4b4A0w1s7h+QMgx+3//ysCAAAA","146":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","156":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","169":"b:ML4b4A0w1s7h+QMgx+3//ysCAAAA","177":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","183":"b:AKoRIAEQBEIBAQAgQom/bCACAAAA","190":"b:MJ4b4A0w1s7h+QMgz+3//ysCAAAA","214":"b:ML4b4A0w1s7h+QMgx+3//ysCAAAA","242":"b:ML4b4A0w1s7h+QMgx+3//ysCAAAA","248":"b:ML4b4A0w1s7h+QMgz+3//ysCAAAA","348":[16,17,77],"357":"b:AAYDAAQAAESBIAAAgIBqFgAAAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeIconSource.ts":{"6":"b:cP9/4A86/v/l/wPg//////8PAAAA","12":"b:cP5b4A0y/s7h/QOgz+3//6sOAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeType.ts":{"8":"b:cP9/4A84/v/l/wOg//////8PAAAA","16":"b:cJ5b4A0w/s7h+QMgz+3//6sCAAAA","29":"b:cJ5b4A0w/s7h+QMgz+3//6sCAAAA","31":"b:MJ5b4A0w1s7h8QMgx+3//ysCAAAA"},"packages/frontend/editor-ui/src/app/composables/usePinnedData.ts":{"72":"b:MN5b4A0w1s7h+QMgz+3//ysDAAAA","80":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","85":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","95":"b:MJ5b4A0w1s7h+QMg3+3//ysCAAAA","106":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","111":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","173":"b:AAAAAAAAAABAAAAAQAVvBwABAAAA","177":"b:AAAAAAAAAABAAAAAQAVvBwABAAAA","227":"b:AAAAAAAAAABAAAAAQAVvBwABAAAA","246":[122],"268":"b:AAAAAAAAAABAAAAAQAVvBwABAAAA"},"packages/frontend/editor-ui/src/app/composables/usePostMessageHandler.ts":{"39":"b:cP9/4A84/v/n/wOg//////8PAAAA","43":"b:cP9/4A84/v/n/wPg//////8PAAAA","65":"b:cP9/4A84/v/n/wPg//////8PAAAA","78":[65],"84":[21,22,65,95],"131":[65,110,134,135],"160":[65,110,134,135],"183":[65],"232":"b:cP9/4A84/v/n/wPg//////8PAAAA","294":"b:cP9/4A84/v/n/wPg//////8PAAAA","300":[65,105,126,132]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/usePushConnection.ts":{"44":"b:cP9/4A84/v/n/wvo//////8PAAAA","45":"b:cP8fwA8wAP/naQKgn///1/8OAAAA","50":[65,105,126,132],"59":"b:cP8fwA8wAP/naQKgn///1/8OAAAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowExtraction.ts":{"39":"b:cP9/4A84/v/l/wOg//////8PAAAA","87":[128],"102":[128],"105":[128],"128":[128],"139":[128],"147":[128],"148":[128],"154":[128],"155":[128],"209":[128],"234":[128],"261":[128],"266":[128],"267":[128],"274":[128],"308":[128],"327":[128],"346":[128],"351":[128],"367":[128],"370":[128],"371":[128],"379":[128],"432":[128],"439":[128],"442":[128],"451":[128],"452":[128],"458":[128],"459":[128],"475":[128],"503":[128],"504":[128],"512":[128],"519":[128],"531":[128],"547":[128]},"packages/frontend/editor-ui/src/app/composables/useWorkflowImport.ts":{"11":"b:cP9/4A84/v/n/wPg//////8PAAAA","17":[21,22,65,95],"19":[21,22,65,95]},"packages/frontend/editor-ui/src/app/composables/useWorkflowInitialization.ts":{"81":"b:cP9/4A84/v/n/wPg//////8PAAAA","92":"b:cP8f4A84/v/n+wMg//////8PAAAA","93":"b:cP9/4A84/v/n+wPg//////8PAAAA","94":"b:cP9/4A84/v/n/wPg//////8PAAAA","95":[65],"96":"b:cP8f4A84/v/n/wMg//////8PAAAA","98":"b:cP8f4A84/v/n/wMg//////8PAAAA","123":"b:cP9/4A84/v/n/wPg//////8PAAAA","188":"b:MMECQAIAAJuiKQAAHv7yw9kOAAAA","205":"b:cP9/4A84/v/n/wPg//////8PAAAA","207":"b:cP9/4A84/v/n/wPg//////8PAAAA","243":"b:MMECQAIAAJuiKQAAHvryw9kOAAAA","295":"b:cL59oA84/m5n0gPg503vff4DAAAA","307":"b:cL59oA84/m5n0gPg503vff4DAAAA","338":"b:MMECQAIAAJuiKQAAHvryw9kOAAAA","393":"b:cP9/4A84/v/n/wPg//////8PAAAA","463":[65,105,126,132]},"packages/frontend/editor-ui/src/app/layouts/WorkflowLayout.vue":{"40":"b:cP8f4A84/v/n/wMg//////8PAAAA","49":[65,69,74,126,132,138,139],"62":[65,106],"70":[65,105,126,132],"79":"b:cP8f4A84/v/n/wMg//////8PAAAA","81":"b:cP8f4A84/v/n/wMg//////8PAAAA","83":"b:cP8f4A84/v/n/wMg//////8PAAAA","88":"b:cP8f4A84/v/n/wMg//////8PAAAA","91":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/app/stores/executionData.store.ts":{"58":"b:cP9/4A84/v/n/wPg//////8PgAAA","65":"b:cP9/4A84/v/n/wPg//////8PgAAA","75":"b:cP9/4A84/v/n/wPg//////8PgAAA","76":"b:cP9/4A84/v/n/wPg//////8PgAAA","85":"b:cP9/4A84/v/n/wPg//////8PgAAA","89":[151],"102":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","119":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","122":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","125":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","128":"b:AAYAAAAAAACBAAAABMhAEoAAgAAA","131":"b:AAYAAAAAAACBAAAABMhAEoAAgAAA","137":"b:cP9/4A84/v/n/wPg//////8PgAAA","145":"b:cP9/4A84/v/n/wPg//////8PgAAA","176":"b:cP9/4A84/v/n/wPg//////8PgAAA","183":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","187":"b:cP9/4A84/v/n/wPg//////8PgAAA","202":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","215":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","222":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","258":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","261":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","264":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","273":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","277":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","280":[151,128],"283":[151,128],"291":"b:cP9/4A84/v/n/wPg//////8PgAAA","299":"b:cP9/4A84/v/n/wPg//////8PgAAA","315":"b:cP9/4A84/v/n/wPg//////8PgAAA","325":"b:AMcbAA4gAL/BaAIAhvx3l8EAgAAA","416":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","423":[151],"437":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","441":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","453":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","461":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","476":[151,110],"481":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","500":"b:AAAKAAAAAIIAAAAAAEBAggEAgAAA","505":"b:AAAKAAAAAIIAAAAAAEBAggEAgAAA","524":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","528":[151],"546":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","549":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","561":[151],"572":[151,98],"592":[151],"593":[151],"597":[151],"609":[151,98],"610":[151,98],"618":[151,98],"654":[151,110],"662":[151,110],"678":[151],"726":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentRenderData.ts":{"95":"b:cP974A8w/v/h/wPg//////sPgAAA","101":"b:cP974A8w/v/h/wPg//////sPgAAA","111":"b:cP974A8w/v/h/wPg3/////sPgAAA","117":"b:cP974A8w/v/h/wPg//////sPgAAA","138":"b:cP974A8w/v/h/wPg3/////sPgAAA","159":"b:cP974A8w/v/h/wPg3/////sPgAAA","210":"b:cP974A8w/v/h/wPg//////sPgAAA","235":[151,70,79,101,107,127,136,139],"247":[151],"251":[151],"255":"b:cP974A8w/v/h/wPg3/////sPgAAA","289":"b:cP974A8w/v/h/wPg//////sPgAAA","304":"b:cP974A8w/v/h/wPg//////sPgAAA","307":"b:cP974A8w/v/h/wPg//////sPgAAA","310":"b:cP974A8w/v/h/wPg3/////sPgAAA","314":"b:cP974A8w/v/h/wPg3/////sPgAAA","318":"b:cP974A8w/v/h/wPg//////sPgAAA","322":"b:cP974A8w/v/h/wPg3/////sPgAAA","326":"b:cP974A8w/v/h/wPg3/////sPgAAA","330":"b:cP974A8w/v/h/wPg//////sPgAAA","334":"b:cP974A8w/v/h/wPg//////sPgAAA","337":"b:AIAgAAAAAAAgAgAgV14AQNEAgAAA","340":"b:AAAgAAAAAAAAAgAAU0AAAAEAgAAA","352":"b:cP9/4A84/v/n/wPg//////8PgAAA","362":"b:cL554A0w/m7h/wOg9+3vf/sPgAAA","395":"b:AIAAAAAAAAAgBACgBF4AQNAMgAAA","407":"b:cP9/4A84/v/n/wPg//////8PgAAA","428":[151,79,101,127],"429":[151,70,79,101,107,127,136,139],"463":"b:cP9/4A84/v/n/wPg//////8PgAAA","466":"b:cP9/4A84/v/n/wPg//////8PgAAA","469":"b:cP974A8w/v/h/wPg3/////sPgAAA","472":"b:MP974A8w1r/h/wPg3////+sNgAAA","475":"b:cP9/4A84/v/n/wPg//////8PgAAA","494":"b:cP974A8w/v/h/wPg3/////sPgAAA","497":"b:cP9/4A84/v/n/wPg//////8PgAAA","500":"b:cP9/4A84/v/n/wPg//////8PgAAA","503":"b:cP9/4A84/v/n/wPg//////8PgAAA","506":"b:cP9/4A84/v/n/wPg//////8PgAAA","509":"b:cP9/4A84/v/n/wPg//////8PgAAA","512":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/app/utils/aiUtils.ts":{"57":[15,110],"82":[110],"87":[110],"236":[15,110],"248":[15,110],"263":[15,110],"264":[15,110],"274":[14,15,16,17,77,95,110],"286":[110],"300":"b:cP974A8w/v/h/wOg//////sPAAAA"},"packages/frontend/editor-ui/src/app/utils/expressions.ts":{"17":[151],"21":[151,113,114],"25":[151,86],"26":[151,86],"34":"b:AIIBAAAQAgBAMAAAAUClGgAAgAAA","38":"b:AIIBAAAQAgAAMAAAAUCBGAAAgAAA","42":"b:AIIBAAAQAgAAMAAAAUGNGAAAgAAA","48":[9,151,123,124],"52":[9,151,123,124],"56":[9,151,123,124],"60":[9,151,123,124],"64":[9,151,123,124],"68":"b:AIIBAAAQAoBAMEIAAUmvHwAAgAAA","83":"b:AIIAAAAAAABAAAAAAACFGgAAgAAA","126":"b:AIIBAAAQAoBAMUIAAUivHwAAgAAA","150":"b:IJQZoC1ygA6hEMERxwUvHQMEgAAA","160":"b:IJAZoClyAA6hEMERxwUqHQIEgAAA"},"packages/frontend/editor-ui/src/app/utils/nodeIcon.ts":{"79":"b:cP974A8y/v/h+0Pg3/////sPAAAA","93":"b:cP974A8y/v/h/0Pg3/////sPAAAA","103":"b:cP974A8y/v/h+0Pg3/////sPAAAA","111":"b:MKoJoAgSftzgnQAgx+nv7yANAAAA","116":"b:cP974A8y/v/h/0Pg3/////sPAAAA","123":"b:MKoJoAgSftzgnQAgx+nv7yANAAAA","129":"b:cP974A8y/v/h+0Pg3/////sPAAAA","150":"b:cP974A8y/v/h/0Pg3/////sPAAAA"},"packages/frontend/editor-ui/src/app/utils/objectUtils.ts":{"3":"b:cP974A8y1v/h+wOg3/////sPAAAA","7":"b:cP974A8y1v/h+4Oh3/////sPAAAA","11":"b:cP974A8y1v/h+4Oh3/////sPAAAA","15":[116,118],"16":[116,118],"28":[9,10,11,12]},"packages/frontend/editor-ui/src/app/views/NodeView.vue":{"154":"b:cP8f4A84/v/n/wMg//////8PAAAA","161":"b:cP9/4A84/v/n/wOg//////8PAAAA","165":"b:cP8f4A84/v/n/wMg//////8PAAAA","166":"b:cP8f4A84/v/n/wMg/////n8PAAAA","181":"b:QL4RwA0wACJlQAIgl03nQ+8GAAAA","192":"b:cP9/4A84/v/n/wOg//////8PAAAA","281":"b:cP9/4A84/v/n/wOg//////8PAAAA","292":"b:cP9/4A84/v/n/wOg//////8PAAAA","296":"b:cP9/4A84/v/n/wOg//////8PAAAA","298":"b:cP9/4A84/v/n/wOg//////8PAAAA","299":"b:cIoZoAkw/k4h0AAg522vfeoCAAAA","300":"b:cP9/4A84/v/n/wOg//////8PAAAA","303":"b:cP9/4A84/v/n/wOg//////8PAAAA","309":"b:cP9/4A84/v/n/wOg//////8PAAAA","321":"b:cP9/4A84/v/n/wOg//////8PAAAA","335":"b:cP9/4A84/v/n/wOg//////8PAAAA","337":"b:cP9/4A84/v/n/wOg//////8PAAAA","341":"b:AMADAAAQAgAAMACAAECAAAAAAAAA","347":"b:cP9/4A84/v/n/wOg//////8PAAAA","380":"b:cP9/4A84/v/n/wOg//////8PAAAA","385":"b:cP9/4A84/v/n/wOg//////8PAAAA","427":"b:cP9/4A84/v/n/wOg//////8PAAAA","429":"b:cP974A8w/v/h/wOg//////sPAAAA","435":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","437":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","438":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","442":"b:cP9/4A84/v/n/wOg//////8PAAAA","443":"b:cP974A8w/v/h/wOg3/////sPAAAA","445":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","452":[13],"463":[128],"467":[77,96,97,100,102,131],"475":[102],"479":[73,96,110],"488":[96,97,100,102],"492":[102,128],"496":[93,96,110],"504":[102],"508":[15,98,102,133,134,135],"516":"b:ABZbQAQAAIrhKQMA3+33h/kEAAAA","521":"b:ABZbQAQAAIrgKQMAhO33hwEAAAAA","543":"b:cN9b4A0w/u7h+wMg/+3///sHAAAA","548":[96,131,138],"554":[98,102,131,132],"602":[98,102,131],"615":[98,102,122],"639":"b:cP9/4A84/v/n/wOg//////8PAAAA","643":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","662":[98],"684":[98],"703":[98],"730":[128],"746":[15],"750":[32,64,97],"754":"b:AIABIAAAOgAAAAAAAyAAEAAAAAAA","794":[97,100,128],"798":[102,128],"802":"b:AIABIAAAOgAAAAAAAyAAEAAAAAAA","830":[96,102],"834":[102,128],"842":"b:ABYAAAQAACBAggMAAEBgRQABAAAA","857":"b:ABYAAAQAACBAggMAAEBgRQABAAAA","873":[136],"883":[136],"886":"b:cP9/4A84/v/n/wOg//////8PAAAA","892":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","903":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","907":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","939":[102,128],"943":[103,104,119,124],"951":[119],"964":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","977":[135],"990":"b:cN9b4A0w/u7h+wMg/+3///sHAAAA","996":[101],"1000":[78,79,96],"1065":"b:cP8f4A84/v/n/wMg//////8PAAAA","1071":"b:cL4doA84/m5l1gMg503vfb4PAAAA","1073":"b:MCAAgAIQAAAkAAAAAAAAQAoCAAAA","1084":"b:cP9/4A84/v/n/wOg//////8PAAAA","1085":"b:cP8f4A84/v/n/wOg//////8PAAAA","1089":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","1101":"b:cP8f4A84/v/n/wOg//////8PAAAA","1104":"b:cP8f4A84/v/n/wOg//////8PAAAA","1107":"b:cP8f4A84/v/n/wOg//////8PAAAA","1111":[8,17,75,77,96,107,111,112,114],"1181":[8,17,75,77,96,107,111,112,114],"1193":[110,134,135],"1226":[110,134,135],"1237":"b:cP9/4A84/v/n/wOg//////8PAAAA","1242":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","1247":[110],"1257":"b:AJAYAA4gALtBQAIABvxwh8EAAAAA","1261":"b:ABAYAA4gALtBQAIABvxwh8EAAAAA","1269":"b:cP4foA84/m5n9gOg503vfb4PAAAA","1270":"b:AMADAAAQAgAAsACAZUCgAAAAAAAA","1275":"b:cP8f4A84/v/n/wOg//////8PAAAA","1278":"b:cP8b4A8w/v/h/wOg//////sPAAAA","1286":"b:cP8f4A84/v/n/wOg//////8PAAAA","1287":"b:cP8b4A8w/v/h/wOg3/////sPAAAA","1290":"b:cP4foA84/m5n9gOg503vfb4PAAAA","1296":"b:cP9/4A84/v/n/wOg//////8PAAAA","1312":[15,95],"1320":[15],"1399":"b:cP9/4A84/v/n/wOg//////8PAAAA","1410":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","1445":"b:cP9/4A84/v/n/wOg//////8PAAAA","1449":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","1456":"b:cP9/4A84/v/n/wOg//////8PAAAA","1460":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","1468":"b:cIoZoAkw/k4h0AAg522vfeoCAAAA","1511":"b:cP9/4A84/v/n/wOg//////8PAAAA","1529":[106],"1545":"b:cJ4ZoA0w/m5h0gMg523vfaoDAAAA","1549":"b:cP9/4A84/v/n/wOg//////8PAAAA","1555":"b:cJ4ZoA0w/m5h0gMg523vfaoDAAAA","1556":"b:cJ4ZoA0w/m5h0gMg523vfaoDAAAA","1563":"b:AEECIAAAAAABIAAAP0BgAAEAAAAA","1568":"b:AEECIAAAAAABIAAAP0BgAAEAAAAA","1576":[96],"1598":"b:cP9/4A84/v/n/wOg//////8PAAAA","1608":[120],"1638":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","1644":"b:cP9/4A84/v/n/wOg//////8PAAAA","1651":"b:cP9/4A84/v/n/wOg//////8PAAAA","1667":"b:MJ4b4A0w1s7h+QMgx+3//ysCAAAA","1685":"b:cP9/4A84/v/n/wOg//////8PAAAA","1690":"b:cP9/4A84/v/n/wOg//////8PAAAA","1696":"b:cL4doA84/m5n1gMg503vfb4PAAAA","1728":"b:cP9/4A84/v/n/wOg//////8PAAAA","1730":"b:MJ4b4A0w1s7h+QMgx+3//ysCAAAA","1739":"b:cP9/4A84/v/n/wOg//////8PAAAA","1741":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","1759":"b:cP9/4A84/v/n/wOg//////8PAAAA","1760":"b:cL4Z4A0w/m7l9gMg9+3vf+8PAAAA","1778":"b:cP9/4A84/v/n/wOg//////8PAAAA","1779":[13,18],"1791":"b:cP9/4A84/v/n/wOg//////8PAAAA","1801":"b:AAcCAAQAAESBCAAAgchvFgAAAAAA","1802":"b:AAcCAAQAAESBCAAAgchvFgAAAAAA","1807":"b:cP9/4A84/v/n/wOg//////8PAAAA","1816":"b:cL8aoA4wkP/hygIg1/1///sAAAAA","1826":"b:cL8aoA4wkP/hygIg1/1///sAAAAA","1827":"b:cL8aoA4wkP/hygIg1/1///sAAAAA","1838":"b:AIAAAAAAAAAgAAAgBF4AQNAAAAAA","1887":"b:cP9/4A84/v/n/wOg//////8PAAAA","1889":"b:QIYRAAwgACJBQAIAhkhhARAAAAAA","1910":"b:cP9/4A84/v/n/wOg//////8PAAAA","1934":"b:MIAAAAAAAAAkAAAgBF4AQNgOAAAA","2003":[139],"2013":"b:cP9/4A84/v/n/wOg//////8PAAAA","2033":"b:AJAYAA4gALtBQAIABvxwh8EAAAAA","2048":"b:AMADAAAQAgAAMACAAECAAAAAAAAA"},"packages/frontend/editor-ui/src/experiments/aiTemplatesStarterCollection/stores/aiTemplatesStarterCollection.store.ts":{"20":"b:+P///Q+4/////xPk//////8PAAAA","33":"b:OACACQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/experiments/emptyStateBuilderPrompt/stores/emptyStateBuilderPrompt.store.ts":{"23":"b:+P///Q+4/////xOk//////8PAAAA","58":[24,27,69,84,90,131],"86":"b:cP9/4A84/v/l/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/experiments/evaluationsWizardSidepanel/useEvaluationsWizardSidepanelExperiment.ts":{"6":"b:cP9/4A84/v/n/wOg//////8PAAAA","9":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/experiments/readyToRunWorkflows/stores/readyToRunWorkflows.store.ts":{"21":"b:+P///Q+4/////xPk//////8PAAAA","30":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","42":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/BuildModeEmptyState.vue":{"5":"b:cMF74A8w/v/h/4Mh//////sPAAAA","6":"b:cMF74A8w/v/h/4Mh/////nsPAAAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/components/EvaluationsCanvasInfoCard/EvaluationsCanvasInfoCard.vue":{"25":"b:cP8f4A84/v/n/wMg//////8PAAAA","74":"b:cP8f4A84/v/n/wMg//////8PAAAA","85":"b:cP8f4A84/v/n/wMg//////8PAAAA","99":"b:cP8f4A84/v/n/wMg//////8PAAAA","103":"b:cP8f4A84/v/n/wMg//////8PAAAA","134":"b:cP8f4A84/v/n/wMg//////8PAAAA","150":[74,138,139],"159":"b:cP8f4A84/v/n/wMg//////8PAAAA","182":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/composables/useAiRootNodes.ts":{"15":"b:cP9/4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/composables/useEvaluationsLicense.ts":{"9":[65],"10":[65],"12":"b:cP9/4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/evaluation.store.ts":{"10":"b:cP8f4A84/v/n/wMg//////8PgAAA","24":"b:cP8f4A84/v/n/wMg//////8PgAAA","26":[151],"28":[151],"29":[151],"43":[151],"50":[151],"63":[151,93],"67":[151],"79":[151],"85":[151],"97":[151],"106":[151],"125":[151],"136":[151],"137":[151],"143":[151],"148":[151],"159":[151],"160":[151]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/wizardSidepanel.store.ts":{"28":"b:cP9/4A84/v/n/wOg//////8PAAAA","31":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/features/core/dataTable/components/NodeStorageLimitCallout.vue":{"9":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","13":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","28":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/core/folders/components/FolderBreadcrumbs.vue":{"59":"b:cP+f4A+4/////wMg//////8PAAAA","65":"b:cP+f4A+4/////wMg//////8PAAAA","67":"b:cP+f4A+4/////wMg//////8PAAAA","76":[66],"88":"b:cP+f4A+4/////wMg//////8PAAAA","92":[66,67],"96":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","107":"b:cP+f4A+4/////wMg//////8PAAAA","111":"b:cP+f4A+4/////wMg//////8PAAAA","147":[66],"162":[66],"174":[66,67],"178":[65],"185":[65,66,67],"196":[66],"208":"b:cP+f4A+4/////wMg//////8PAAAA","209":"b:cP+f4A+4/////wMg//////8PAAAA","212":"b:cP+f4A+4/////wMg//////8PAAAA","219":"b:MACAAACAAQA+AAAAAAIAQBgCAAAA","242":[65,66,67],"249":[65,66,67],"275":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","305":[66,67]},"packages/frontend/editor-ui/src/features/core/folders/components/ProjectBreadcrumb.vue":{"30":"b:cP+f4A+4/////wMg//////8PAAAA","52":"b:cP+f4A+4/////wMg//////8PAAAA","63":"b:cP+f4A+4/////wMg//////8PAAAA","75":[65,66,67],"79":[65],"91":[65,66,67],"100":"b:cP+f4A+4/////wMg//////8PAAAA"},"packages/frontend/editor-ui/src/features/core/folders/composables/useParentFolder.ts":{"5":"b:cP9/4A84/v/n/wPg//////8PAAAA","11":"b:cL59oA84/m5n0gPg503vff4DAAAA"},"packages/frontend/editor-ui/src/features/credentials/components/NodeCredentials.vue":{"116":"b:MKgB4AEy1AZhEQAgBEGgLyAAAAAA","131":"b:MLgZ4AUy1gZhkQAgBc2gLyACAAAA","133":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","146":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","150":"b:MIgBoAES1gZhEQAgBEGgLyAAAAAA","161":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","165":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","173":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","200":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","201":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","226":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","231":"b:MKgBoAEy1gRhEQAgBEGgLyAAAAAA","245":"b:MIABgAAyAAAhEAAAAEAACQAAAAAA","261":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","273":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","274":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","281":"b:AIgBgAAQgAAgEAAAAAAACQAAAAAA","365":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","370":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","377":[30],"381":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","389":[44],"408":"b:AIgBgAAQgAAgEAAAAAAACQAAAAAA","439":[123],"449":"b:MIABwAAyAAAhEAAAAEAACQAAAAAA","527":[31,44,69,4,5,120,123],"562":"b:MKgBwAAyAgIhEAAAAEAACQAAAAAA","566":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","611":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","624":[44],"639":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","658":[15,16,30,41,45],"662":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","666":[15,16],"667":[15,16],"672":[11,49],"677":"b:AKgA4AES1gRgEQAgBAGgLyAAAAAA","678":"b:AKgA4AES1gRgEQAgBAGgLyAAAAAA","684":"b:AKgAoAES1gRgEQAgBAGgLyAAAAAA","688":"b:MKgB4AEy1AZhEQAgBEGgLyAAAAAA","692":[11,49],"738":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","740":[13],"776":[11],"784":[11],"785":[11],"807":[11,15,31,44,55,69,76,120,123],"808":"b:AKgAoAES1ARgEQAgBAGgLyAAAAAA","827":[30,41,45],"834":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","839":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","865":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","866":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","872":[15,16],"902":[30],"917":[44]},"packages/frontend/editor-ui/src/features/credentials/composables/useNodeCredentialOptions.ts":{"30":"b:ML5b4A0y1s7h+QMgz+3//ysCAAAA","38":"b:MKgBoAAS1gRhEQAgBEGgLyAAAAAA","40":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","44":"b:ML4b4A0y1s7h+QMgz+3//ysCAAAA","45":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","55":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","57":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","59":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA","69":[30,44,45],"75":"b:MLgZ4AUy1gZhkQAgBc2gLyACAAAA","92":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","102":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","107":"b:MAgAoAAQFAAgAQAAAAAgLyAAAAAA","114":[13],"120":"b:MKgB4AEy1gZhEQAgBEGgLyAAAAAA","126":"b:MKABwAAyAAIhEAAAAEAACQAAAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionData.ts":{"8":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","12":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","23":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionRedaction.ts":{"10":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","17":[14,15,16,17,77,110],"19":[14,15,16,17,77,110]},"packages/frontend/editor-ui/src/features/execution/logs/components/ChatMessagesPanel.vue":{"30":"b:AMADAAAQAgACMACAAECAAAAAAAAA","57":[14,15,16,17,65,77,95,110],"61":"b:AMADAAAQAgACMACAAECAAAAAAAAA","67":[14,65],"76":[14,15,16,17,65,77,95,110],"96":[14,15,16,17,65,77,95,110],"105":"b:AMADAAAQAgACMACAAECAAAAAAAAA","107":[14,15,16,17,65,77,95,110],"117":"b:AMADAAAQAgACMACAAECAAAAAAAAA","119":[15,16,65,110],"135":"b:AMADAAAQAgACMACAAECAAAAAAAAA","137":"b:AMADAAAQAgACMACAAECAAAAAAAAA","145":[65],"154":"b:AMADAAAQAgACMACAAECAAAAAAAAA","156":[65],"166":"b:AMADAAAQAgACMACAAECAAAAAAAAA","168":[65,110],"182":"b:AMADAAAQAgACMACAAECAAAAAAAAA","190":[14,15,17,65,110],"193":"b:AMADAAAQAgACMACAAECAAAAAAAAA","208":"b:AMADAAAQAgACMACAAECAAAAAAAAA","210":[65],"214":"b:AMADAAAQAgACMACAAECAAAAAAAAA","221":"b:AMADAAAQAgACMACAAECAAAAAAAAA","227":"b:AMADAAAQAgACMACAAECAAAAAAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsOverviewPanel.vue":{"39":"b:cP8f4A84/v/n/wOg//////8PAAAA","51":[14,15,16,17,65,77,95,110],"52":[14,15,16,17,65,77,95,110],"57":[14,15,16,17,65,77,95,110],"59":[14,15,16,17,65,77,95,110],"67":[14,15,16,17,65,77,95,110],"72":[14,15,16,17,65,77,95,110],"75":[14,15,16,17,65,77,95,110],"78":[65],"80":"b:cP8f4A84/v/n/wOg//////8PAAAA","94":"b:cP8f4A84/v/n/wOg//////8PAAAA","98":"b:ANcLAA4gAP/BaAIAh/x/l8EAAAAA","107":"b:ANcLAA4gAP/BaAIAh/x/l8EAAAAA","125":[14,15,16,17,77,95,110],"147":[110],"148":[14,110]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsPanel.vue":{"21":"b:cP8f4A84/v/n/wOg//////8PAAAA","31":"b:cP8f4A84/v/n/wOg//////8PAAAA","70":"b:cP8f4A84/v/n/wOg//////8PAAAA","71":"b:cP8f4A84/v/n/wOg//////8PAAAA","74":"b:cP8f4A84/v/n/wOg//////8PAAAA","83":[14,15,16,17,65,77,110],"88":[14,15,16,17,65,77,110],"94":"b:cP8f4A84/v/n/wOg//////8PAAAA","112":[65],"120":[65,110],"123":[65,110],"133":[65],"138":[65],"141":"b:cP8f4A84/v/n/wOg//////8PAAAA","173":"b:AMADAAAQAgAAMACAAECAAAAAAAAA","199":"b:cP8f4A84/v/n/wOg//////8PAAAA","242":[14,15,16,17,77,110]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsPanelActions.vue":{"19":"b:cP8f4A84/v/n/wOg//////8PAAAA","22":"b:cP8f4A84/v/n/wOg//////8PAAAA","23":"b:cP8f4A84/v/n/wOg//////8PAAAA","26":[14,15,16,17,65,77,95,110],"35":[65],"44":"b:cP8f4A84/v/n/wOg//////8PAAAA","51":"b:cP8f4A84/v/n/wOg//////8PAAAA","75":"b:cP8f4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsPanelHeader.vue":{"8":"b:cP8f4A84/v/n/wOg//////8PAAAA","10":[14,15,65,110],"13":"b:cP8f4A84/v/n/wOg//////8PAAAA","20":"b:cP8f4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewKeyboardEventListener.vue":{"8":"b:cP8f4A84/v/n/wOg//////8PAAAA","11":"b:AKAAIAAARAAC0AAAdyCAQPkOAAAA","24":[65],"27":"b:cP8f4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useChatState.ts":{"41":"b:cP8f4A84/v/n/wOg//////8PAAAA","48":[14,15,16,17,65,69,77,95,110],"61":[14,15,16,17,65,77,95,110],"62":[65,110],"65":[14,15,16,17,65,77,95,110],"67":[65],"68":"b:AMADAAAQAgACMACAAECAAAAAAAAA","76":"b:AMADAAAQAgACMACAAECAAAAAAAAA","103":"b:AMADAAAQAgACMACAAECAAAAAAAAA","122":"b:AMADAAAQAgACMACAAECAAAAAAAAA","127":"b:AMADAAAQAgACMACAAECAAAAAAAAA","132":"b:AMADAAAQAgACMACAAECAAAAAAAAA","137":[14,15,16,17,65,77,95,110],"151":[14,15,16,17,65,77,95,110],"167":[14,15,16,17,65,77,95,110],"179":[65],"180":[65],"181":[65],"185":[65],"186":[65],"232":[14,15,16,17,65,77,95,110],"278":[14,15,16,17,65,77,95,110],"292":[14,15,16,17,65,77,95,110],"323":[65,110],"331":[14,15,17,65,69,95],"344":[65],"352":"b:cP8f4A84/v/n/wOg//////8PAAAA","353":"b:cP8f4A84/v/n/wOg//////8PAAAA","364":"b:AMADAAAQAgACMACAAECAAAAAAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useClearExecutionButtonVisible.ts":{"9":"b:cP8f4A84/v/n/wOg//////8PAAAA","14":"b:cP8f4A84/v/n/wMg//////8PAAAA","17":"b:cP8b4A8w/v/j/wMg3/////sPAAAA","18":"b:cP8f4A84/v/n/wMg//////8PAAAA","19":"b:cP8f4A84/v/n/wOg//////8PAAAA","21":"b:cP8f4A84/v/n/wMg//////8PAAAA","22":"b:cP8f4A84/v/n/wMg//////8PAAAA","24":"b:cP8b4A8w/v/j/wMg//////sPAAAA","25":"b:cP8b4A8w/v/j/wMg3/////sPAAAA","28":"b:cP8f4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsExecutionData.ts":{"34":"b:cP8f4A84/v/n/wOg//////8PAAAA","45":"b:cP8f4A84/v/n/wOg//////8PAAAA","52":"b:cP8f4A84/v/n/wOg//////8PAAAA","58":"b:cP8f4A84/v/n/wOg//////8PAAAA","59":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","74":"b:cP8f4A84/v/n/wOg//////8PAAAA","84":"b:cP8f4A84/v/n/wOg//////8PAAAA","89":"b:cP8f4A84/v/n/wOg//////8PAAAA","108":"b:cP8f4A84/v/n/wOg//////8PAAAA","121":[65],"149":"b:cP8f4A84/v/n/wOg//////8PAAAA","150":"b:cP8f4A84/v/n/wOg//////8PAAAA","151":"b:cP8f4A84/v/n/wOg//////8PAAAA","152":"b:cP8f4A84/v/n/wOg//////8PAAAA","153":"b:cP8f4A84/v/n/wOg//////8PAAAA","155":"b:cP8f4A84/v/n/wOg//////8PAAAA","178":"b:cP8f4A84/v/n/wOg//////8PAAAA","179":"b:cP8f4A84/v/n/wOg//////8PAAAA","188":"b:cP8f4A84/v/n/wOg//////8PAAAA","198":"b:cP8f4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsPanelLayout.ts":{"16":"b:cP8f4A84/v/n/wOg//////8PAAAA","30":"b:cP8f4A84/v/n/wOg//////8PAAAA","32":[65],"38":"b:AMADAAAQAgACMACAAECAAAAAAAAA","40":[65],"45":"b:cP8f4A84/v/n/wOg//////8PAAAA","51":"b:cP8f4A84/v/n/wOg//////8PAAAA","56":[14,15,16,17,65,77,110],"57":"b:cP8f4A84/v/n/wOg//////8PAAAA","58":"b:cP8f4A84/v/n/wOg//////8PAAAA","67":[65],"77":[14,15,65,110],"91":[65],"97":[65],"110":"b:cP8f4A84/v/n/wOg//////8PAAAA","133":"b:AIAAAAAAAAACAAAgBF4AQNAAAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsSelection.ts":{"20":"b:cP8f4A84/v/n/wOg//////8PAAAA","29":"b:cP8f4A84/v/n/wOg//////8PAAAA","30":"b:cP8f4A84/v/n/wOg//////8PAAAA","38":[14,65,110],"46":[14,65,110],"63":[65],"78":[65],"94":"b:cP8f4A84/v/n/wOg//////8PAAAA","105":"b:cP8f4A84/v/n/wOg//////8PAAAA","120":"b:cP8f4A84/v/n/wOg//////8PAAAA","126":[15,16,17,77,110]},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsTreeExpand.ts":{"10":"b:cP8f4A84/v/n/wOg//////8PAAAA","14":[15,65,110]},"packages/frontend/editor-ui/src/features/execution/logs/composables/usePopOutWindow.ts":{"32":[65],"39":[65],"61":[65],"77":"b:cP8f4A84/v/n/wOg//////8PAAAA","88":"b:cP8f4A84/v/n/wOg//////8PAAAA","89":"b:cP8f4A84/v/n/wOg//////8PAAAA","90":"b:cP8f4A84/v/n/wOg//////8PAAAA","93":"b:cP8f4A84/v/n/wOg//////8PAAAA","104":[65],"121":[65],"141":[65],"168":[65],"171":"b:cP8f4A84/v/n/wOg//////8PAAAA","180":"b:cP8f4A84/v/n/wOg//////8PAAAA","185":"b:cP8f4A84/v/n/wOg//////8PAAAA","194":"b:AIAAAAAAAAACAAAgBF4AQNAAAAAA","199":"b:AIAAAAAAAAACAAAgBF4AQNAAAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/logs.utils.ts":{"33":[14,15,16,17,65,77,95,110],"34":[14,15,16,17,65,77,95,110],"48":[14,15,16,17,65,77,95,110],"56":[14,15,16,17,65,77,95,110],"80":[14,15,16,17,65,77,95,110],"110":[15,16,65,110],"118":[15,16,65,110],"119":[15,16,65,110],"123":[15,16,65,110],"144":[14,15,16,17,65,77,95,110],"162":[14,15,16,17,65,77,95,110],"166":[14,15,16,17,65,77,95,110],"172":[14,15,16,17,65,77,95,110],"186":"b:ANcKAA4gAP/DaAIAh/x/l8EAAAAA","187":[14,15,65,77,110],"193":[14,15,65,77,110],"207":[14,15,16,17,65,77,95,110],"213":[14,15,16,17,65,77,95,110],"229":[14,15,16,17,65,77,95,110],"237":[65],"242":[15,16,65,110],"260":[14,15,16,17,65,77,95,110],"276":[14,15,16,17,65,77,95,110],"284":[14,15,16,17,65,77,95,110],"303":[65],"304":[65],"307":"b:cN8b4A8w/v/j+wMg//3///sHAAAA","326":"b:cP8f4A84/v/n/wOg//////8PAAAA","337":[14,15,16,17,77,110],"360":"b:cP8f4A84/v/n/wOg//////8PAAAA","376":[65],"381":[65],"386":[14,15,16,17,65,77,95,110],"404":[14,15,16,17,65,77,95,110],"418":[14,15,16,17,65,77,95,110],"423":[14,15,16,17,65,77,95,110],"428":[14,15,16,17,65,77,95,110],"438":[65,110],"440":[14,15,16,17,65,77,95,110],"463":[14,15,16,17,65,77,95,110],"467":[14,15,16,17,65,77,95,110],"495":[14,65,110],"507":[65,110],"518":[65,110],"543":[65,110],"595":[65,110],"602":[65,110],"614":[65,110],"677":[14,15,16,17,65,77,110],"681":[14,15,16,17,65,77,110],"691":"b:ANcbAA4gAP/DaAKAh/x/l8EIAAAA","699":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/features/ndv/panel/components/InputPanel.vue":{"61":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","111":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","119":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","127":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","131":"b:MJ4b4A0w1g7h+QEgz+Xv/yoAAAAA","151":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","152":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","161":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","185":"b:MJ4b4A0w1o7h8QMgz+3//ysAAAAA","186":[15,120],"190":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","198":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","214":"b:AAYAAAQAAASAAAAAgIBvlgAAAAAA","223":"b:MJ4b4A0w1g7h+QEgz+Xv/yoAAAAA","228":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","243":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","244":"b:MJ4b4A0w1o7h8QMgz+3//ysAAAAA","247":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","254":"b:MJ4b4A0w1o7h8QMgz+3//ysAAAAA","258":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","259":"b:MJ4b4A0w1o7h8QMgz+3//ysAAAAA","265":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","284":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","286":"b:MJ4b4A0w1g6h8QEgx8XnfyoAAAAA","291":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","304":"b:AAAQAAAAAAIBAAAACAAPFwAAAAAA","306":"b:AAAQAAAAAAIBAAAAAAAPFQAAAAAA","324":"b:MJ4b4A0w1o7h8QMgz+3//ysAAAAA","344":[103,113],"357":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","361":[17,118],"365":"b:MJ4b4A0w1g7h+QEgz+Xv/yoAAAAA","369":[116],"373":[113,118,121],"382":[110,113,116,117,118,121],"386":[113,121],"387":[113,121],"403":"b:AAACAAAAAAAACAAAgUDyCwAAAAAA","409":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","445":[75,110,113,116,117,118,121],"448":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","455":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","467":[75,110,113,116,117,118,121],"476":[16,44,75,76,120],"480":[16,44,75,76,120],"489":"b:MJ4b4A0w1g6h8QEgx8XnfyoAAAAA","523":"b:MJ4b4A0w1g6h8QEgx8XnfyoAAAAA","525":"b:MJ4b4A0w1g6h8QEgx8XnfioAAAAA","631":"b:IAABIAAQAAAhEAAAAgAgRQAAAAAA","676":[17]},"packages/frontend/editor-ui/src/features/ndv/panel/components/NDVFloatingNodes.vue":{"13":"b:cP9/4A84/v/l/wOg//////8PAAAA","18":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","30":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","32":[119],"39":"b:AJAAoAAQRACA0AAARyH/XQACAAAA","53":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","55":"b:MJ5b4A0w1o7h+QMgx+3//ysAAAAA","65":"b:MJ5b4A0w1o7h+QMgx+3//ysAAAAA","68":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","97":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","101":"b:AJobYAgwVkoh+QEgx+3/dykCAAAA","107":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","125":"b:MJ5b4A0w1o7h+QMgx+3//ysAAAAA","131":[103,104,119,124]},"packages/frontend/editor-ui/src/features/ndv/panel/components/NDVHeader.vue":{"27":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","32":[65],"34":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","62":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","64":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","70":[65],"72":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/ndv/panel/components/NDVSubConnections.vue":{"25":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","57":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","61":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","66":[16,119],"84":[15,16,44,49,76,93,96,119,120],"87":[15,16,44,49,76,93,96,119,120],"99":[16,119],"110":[15,16,44,49,76,93,96,119,120],"127":[15,16,44,49,76,93,96,119,120],"131":[15,16,44,49,76,93,96,119,120],"133":[15,16,44,49,76,93,96,119,120],"137":[15,16,44,49,76,93,96,119,120],"145":[15,16,44,49,76,93,96,119,120],"152":[15,16,44,49,93,119,120],"167":[15,16,44,49,76,93,96,119,120],"169":[16,119],"183":[16,119],"186":[15,16,44,49,76,93,96,119,120],"193":"b:MJ4b4A0w1o7h8QMgx+3//ysAAAAA","201":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","210":"b:MJ4b4A0w1o7h8QMgx+3//ysAAAAA","231":[119],"250":"b:AAYAAAQAAESAAAAAgIBqFgAAAAAA","253":"b:AAYAAAQAAESAAAAAgIBqFgAAAAAA","259":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","260":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","262":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","274":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","296":[15,16,44,49,93,119,120],"297":[15,16,44,49,76,93,96,119,120],"305":[119],"317":[119],"335":[15,16,44,49,76,93,96,119,120],"355":[16,119],"376":[16,119]},"packages/frontend/editor-ui/src/features/ndv/panel/components/OutputPanel.vue":{"35":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","84":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","89":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","90":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","115":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","119":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","125":"b:MJ4b4A0w1k7h+QEgx+3v/yoCAAAA","129":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","146":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","155":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","159":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","167":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","169":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","187":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","205":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","213":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","217":"b:MJ4b4A0w1k7h+QEgx+3v/yoCAAAA","221":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","244":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","265":[118],"269":[118],"288":[17,118,121,127],"293":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","306":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","312":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","343":"b:AABaAAQAAM6BAAIAgM1/lwEAAAAA","344":[113,116,118,121],"345":[116,118],"346":[104,107,118,121],"349":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","375":"b:MJ4b4A0w1k7h+QEgx+3v/yoCAAAA","398":"b:AIoRIAEQBEIBAQAgQomvbCACAAAA","406":"b:MJ4b4A0w1g7h+QEgx+Xv/yoAAAAA","408":"b:MJ4b4A0w1k7h+QEgx+3v/yoCAAAA","419":"b:AIABAAAQEggAWAAAAECAAwAAAAAA","457":"b:MJ4b4A0w1kbh8QEgx63v/yoCAAAA","491":[110],"493":[110],"497":[17],"536":[17,110,118,121,127]},"packages/frontend/editor-ui/src/features/ndv/panel/components/PanelDragButtonV2.vue":{"11":"b:MJ4b4A0w1o7j+QMgx+3//ysCAAAA","17":[65],"21":[65],"25":[65],"27":"b:MJ4b4A0w1o7j+QMgx+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/ndv/panel/composables/useNdvLayout.ts":{"21":"b:cP9/4A84/v/n/wOg//////8PAAAA","29":"b:cP9/4A84/v/n/wOg//////8PAAAA","35":"b:cP9/4A84/v/n/wOg//////8PAAAA","37":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","41":"b:cP9/4A84/v/n/wOg//////8PAAAA","45":"b:cP9/4A84/v/n/wOg//////8PAAAA","46":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","51":"b:cP9/4A84/v/n/wOg//////8PAAAA","53":"b:cP9/4A84/v/n/wOg//////8PAAAA","75":"b:cP9/4A84/v/n/wOg//////8PAAAA","102":[65],"106":"b:cP9/4A84/v/n/wOg//////8PAAAA","119":[65],"123":[65],"157":[65],"175":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","182":"b:cP9/4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/Collection/CollectionParameter.vue":{"9":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","25":"b:AJpbYAUyVo4h+YIhT+3/7gsCAAAA","34":[57,64]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/Collection/CollectionParameterLegacy.vue":{"24":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","44":"b:AJobYAUyVo4h+YIhT+3/bwsCAAAA","48":"b:AJobYAUyVo4h+YIhT+3/bwsCAAAA","55":"b:AJobYAUyVo4h+YIhT+3/bwgCAAAA","61":"b:AJobYAUyVo4h+YIhT+3/bwgCAAAA","73":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","89":[12,34,57,64,72,118,127],"93":[12,34,57,64,72,118,127],"110":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","112":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","113":[12,34,57,64,72,118,127],"116":[12,34,57,64,72,118,127],"118":[12,34,57,64,72,118,127],"129":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","131":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","143":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","144":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","147":[57,64],"201":[57,64],"203":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","210":"b:AIpbYAEyVo4h+YIhT+3/bwsCAAAA","243":"b:AJobYAUyVo4h+YIhT+3/bwgCAAAA","246":"b:AJobYAUyVo4h+YIhT+3/bggCAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionFunctionIcon.vue":{"8":"b:AIABAAAQAgBAEUAAAQinGgIAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionParameterInput.vue":{"26":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","67":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","68":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","78":"b:AAAAAAAAAAAAAEAAAAAPHwAAAAAA","84":"b:AAAAAAAAAAAAAEAAAAAPHwAAAAAA","89":"b:AAAAAAAAAAAAAEAAAAAPGwAAAAAA","97":"b:AIIBAAAQAgAAIUAAAEivGwAAAAAA","100":"b:AIIAAAAAAAAAAEAAAEiPGwAAAAAA","128":"b:AIIAAAAAAIBAAUIAAEiPHwAAAAAA","137":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","148":[113],"160":[113],"166":[113],"175":[113],"181":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","185":"b:AIIBAAAQAgAAMUAAAUiFAgAAAAAA","189":[113],"196":"b:AIIBAAAQAgAAIUAAAEivGwAAAAAA","199":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","219":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","244":[114]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputFull.vue":{"62":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","96":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","107":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","114":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","118":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","122":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","125":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","132":"b:ALobYAUy1s7h+YIgT+z//ysCAAAA","134":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","143":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","161":"b:ABAYAAUykA6hAIABiAQvHwIAAAAA","169":"b:ABAYAAUyEA6hAIABiAQvGQIAAAAA","185":"b:AKpZ4A0ykg4hkYAAx83vnwIAAAAA","189":"b:AIpZ4A0ykg4hkYAAx83vnwIAAAAA","193":"b:AAAAAAAAAAAAAAAAAAANHQIAAAAA","200":"b:AJQZIA0ygA6hAIEBxwUvHQMAAAAA","204":"b:ABAYAAUgAA6BAIABAAQiEQAAAAAA","210":[113],"218":[113],"289":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","294":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","295":[124],"304":"b:AKpZ4A0ykg4hkYAAx83vnwIAAAAA","309":[41,44,75,119],"313":[41],"350":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","435":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","439":[41,44,75,119],"452":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","473":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","506":[41,44,75,119]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputList.vue":{"65":"b:MJoZwAUQFEIhAQAgQoD/ZyAAAAAA","68":"b:AJpbYAUyVo4h+YIhT+3/7wsCAAAA","123":"b:MJ5b4A0yVs4h+YMhz+3/7ysCAAAA","144":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","146":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","175":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","188":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","194":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","195":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","217":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","241":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","268":"b:AAYSAAACAAIBIAEBgAHhEQIAAAAA","269":"b:AAYSAAACAAIBIAEBgAHhEQIAAAAA","275":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","276":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","279":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","280":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","283":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","300":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","309":[20,57],"312":[20,57],"335":[20,57],"353":[19],"356":[19],"391":[20,57],"394":[20,57],"398":[20,57],"403":"b:ABAYAAUyEAahAIABgAQnGQIAAAAA","407":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","414":"b:MDhZ4AUwFAYhgQAAAcygLyACAAAA","421":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","425":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","440":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","447":[15,16],"462":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","479":"b:AJQZIA0ygA6hAIEBx4UvHQMAAAAA","489":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","504":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","508":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","536":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","542":[15,16,44,49,76,96,119,120],"546":[15,16,44,49,76,96,119,120],"556":"b:MAgQoAASVAJhCQAgBAFlPyAAAAAA","561":[31,41,44,69,4,5,120,123],"643":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","666":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","725":[15,16,44,49,76,96,119,120],"740":[120],"746":[15,16,44,49,76,96,119,120],"798":"b:MJpb4AUyVs4h+YIhT+3/7ysCAAAA","821":"b:MJpb4AUyVs4h+YIhT+3/7ysCAAAA","823":"b:MJpb4AUyVs4h+YIhT+3/7isCAAAA","944":"b:ABAYAAUyEAahAIABgAQnGQIAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/utils/fromAIOverride.utils.ts":{"38":[41],"79":[75],"86":[41,44,75,119],"102":[41],"113":"b:AIABAAASAAAgGAAAAECACQMAAAAA","117":[41],"128":[41],"134":[41],"149":[41],"174":[41,44,75,119],"196":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","205":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","209":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA","227":"b:ML5b4A0y1s7h+YMhz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunData.vue":{"103":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","104":[75,107,110,113,118],"106":"b:AIYKAAQAAIzAyAIAiu1/twEAAAAA","109":[15,110],"111":"b:AMZaAAQAAM7BaAIAis1/lwEAAAAA","262":"b:AEYYAAQAAM6BAAIAgM1/lwEAAAAA","263":"b:MN5b4A0w1s7h8QMgx+3//ysCAAAA","264":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","272":"b:AIAAAAAAAACACAAAAG1/BgAAAAAA","273":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","279":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","280":"b:AIYKAAQAAIzASAIAis1/lwEAAAAA","282":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","283":"b:AAZaAAQAAM7BSAIAgs1/lwEAAAAA","284":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","285":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","286":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","289":"b:MJ4b4A0w1o6h+QMgx+3//ysAAAAA","293":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","301":"b:AIYKAAQAAIzAyAIAiu1/twEAAAAA","302":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","303":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","304":"b:AABYAAQAAM6BAAIAgM1/lwEAAAAA","312":"b:AIYKAAQAAIzAyAIAiu1/twEAAAAA","322":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","328":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","332":"b:AMZbAAQAAM7B6AIAiu1/twEAAAAA","336":"b:AMZaAAQAAM7B6AIAiu1/twEAAAAA","345":"b:AMZaAAQAAM7B6AIAiu1/twEAAAAA","349":"b:AMZaAAQAAM7B6AIAiu1/twEAAAAA","359":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","361":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","370":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","379":"b:AMZbAAQAAM7BaAIAis1/lwEAAAAA","383":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","388":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","399":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","405":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","412":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","422":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","425":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","435":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","439":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","443":"b:AEYQAAQAAEaBAAAAgMBvlgAAAAAA","447":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","455":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","458":"b:AMJIAAQAAIhAaAIACs1/hwEAAAAA","459":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","467":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","468":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","472":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","477":[17,110,118,121,127],"487":[17,110,118,121,127],"493":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","497":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","498":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","499":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","503":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","504":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","514":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","524":[15,17,59,110,116,117,118,121],"525":[15,17,59,110,116,117,118,121],"565":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","569":"b:MJ4b4A0w1s7h8QMgx+3//ysCAAAA","570":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","576":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","587":"b:AMZaAAQAAM7B6AIAiu1/twEAAAAA","591":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","603":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","620":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","625":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","634":"b:AABYAAQAAM6BAAIAgM1/lwEAAAAA","638":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","656":[17],"662":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","665":"b:MJ4b4A0w1o7h+QMgz+3//ysAAAAA","668":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","670":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","673":"b:AAAAAAAAAIAAgQAAAKFApAAAAAAA","674":"b:AAAAAAAAAIAAgQAAAKFApAAAAAAA","691":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","698":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","702":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","703":[15,110],"706":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","710":[110],"716":"b:AEYQAAAAAAIBAAAAgEHjEwIAAAAA","721":"b:AMYTAAQAAEaBIAAAgMFvlgAAAAAA","731":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","736":"b:AMZaAAQAAM6BaAIAis1/lwEAAAAA","743":"b:AMYTAAQQAk6BOAAAgMX/lwIAAAAA","752":"b:AMYTAAQAAE6BIAAAgMH/lwIAAAAA","760":[9,10,15,110,117,121],"767":[116,118],"773":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","782":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","803":[106,110],"814":"b:ANobYAgwVkoh+QEgz+3/dykCAAAA","819":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","835":[52,70,72,78,107,118,125,129],"862":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","901":[113,116,118,121],"923":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","939":"b:AAYAAAAAAAKBAAAAgIEfFAAAAAAA","947":"b:ANobYAgwVkoh+QEgz+3/dykCAAAA","955":"b:AEYQAAQAAEaBAAAAgMU/FAAAAAAA","960":"b:AAAAAAAAAAAAAAAAACEPBgAAAAAA","996":"b:AAAAAAAAAAAAAAAAACEPBgAAAAAA","1020":[104,112,113,114,115,121,122],"1047":[104,112,113,114,115,121,122],"1057":[106,122],"1111":[121],"1135":[17,118],"1143":[17,118],"1147":[17,118],"1151":[71],"1164":"b:AMYSAAQAAEaBIAAAgEF/lgAAAAAA","1187":"b:AIAAAAAAAAAACAAAAEhyAgAAAAAA","1218":[17,110,118,121,127],"1246":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1271":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1274":"b:AABAAAAAAAAAAAAACAVfBwEAAAAA","1286":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1292":[116,118],"1295":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1313":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1323":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1350":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1377":[15,17,59,110,116,117,118,121],"1395":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1398":"b:AMZaAAQAAM6BaAIAis1/lwEAAAAA","1404":"b:MN5b4A0w1s7h+QMgz+3//ysCAAAA","1411":[17,118,121,127],"1428":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","1434":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","1440":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","1493":"b:AAAAAAAAAAAAAAAAAAVfBgAAAAAA","1497":"b:AABAAAAAAAAAAAAAAAVfBgAAAAAA","1505":"b:AABAAAAAAAAAAAAAAAVfBgAAAAAA","1520":"b:AAAAAAAAAAAAAAAAACUPBgAAAAAA","1571":"b:AAAAAAAAAAAAAAAAACEPBgAAAAAA","1584":[106,122],"1630":[17,118,121,127],"1632":[17,110,118,121,127],"1633":[17,110,118,121,127],"1634":[17,110,118,121,127],"1645":[17,118,121],"1679":[52,72,78,125,129],"1684":[52,72,78,125,129],"1756":"b:AMYTAAQAAEaBIAAAgMBvlgAAAAAA","1794":[109],"1800":[104,112,113,114,115,121,122],"1805":"b:AAAAAAAAAAAAAAAAACEPBgAAAAAA","1807":"b:AAAAAAAAAAAAAAAAACEPBgAAAAAA","2066":"b:AMJIAAQAAIhAaAIACs1/hwEAAAAA","2109":[116],"2111":[116],"2134":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataDisplayModeSelect.vue":{"18":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","21":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","45":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","47":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","53":"b:MN5b4A0w1s7h+QMgx+3//ysCAAAA","62":[75,107,110,113,116,117,118,121],"64":[14,15,16,17,77,110]},"packages/frontend/editor-ui/src/features/ndv/runData/schemaPreview.store.ts":{"11":"b:MN9b4A8w1v/h+QOgz/3//+sCAAAA","21":"b:ANcbAA4gAP/B6QKAh/1/t8EAAAAA","30":"b:AAAAAAAAAIBAwQAAAKFEpAAAAAAA","49":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettings.vue":{"160":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","163":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","164":[69],"167":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","168":[69],"171":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","174":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","176":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","182":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","185":"b:AAAAAAAAAAAAAAAAACEPBgAAAAAA","187":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","189":"b:MJ5b4A0w1s7h8QMgz+3//ysCAAAA","191":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","195":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","200":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","202":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","206":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","220":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","234":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","242":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","246":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","250":"b:MJhZ4AUw1gZhkQAgBc2gLyACAAAA","254":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","257":"b:MJhZ4AUw1gZhkQAgBc2gLyACAAAA","258":"b:MIgBoAEQ1gZhEQAgBEGgLyAAAAAA","262":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","266":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","275":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","278":"b:AJ5bYA0wls6h+QMgz+3//ysCAAAA","281":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","283":[117],"304":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","311":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","320":"b:MJQZoA0wgA6hAAEAx4WvHQMAAAAA","487":[119],"495":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","498":"b:MIoZoAkw1k4h0AEgz2WvfSoCAAAA","504":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","514":"b:AJAZAAUwEAahAAAAgAQlGQIAAAAA","515":"b:AIAZAAEwEAYhAAAAgAQlGQIAAAAA","523":"b:AAYAAAQAAESAAAAAgIBqFgAAAAAA","529":"b:MIABgAAQAAAhEAAAAEAACQAAAAAA","553":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","578":[117],"595":"b:AAYSAAAAAAIBIAAAgAHhEQIAAAAA","599":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","610":"b:AJobYAgwVkoh+QEgz+3/dykCAAAA","616":"b:MJhZ4AUw1gZhkQAgBc2gLyACAAAA","782":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettingsHeader.vue":{"22":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","40":[117]},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettingsHint.vue":{"13":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","16":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","68":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","72":[117],"77":[117]},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettingsTabs.vue":{"29":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","45":[80,99],"49":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","53":[55],"55":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","63":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","130":[117],"161":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeWebhooks.vue":{"21":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","38":"b:AABQIAEQBAIBAAAAAIggDAACAAAA","45":"b:AABQIAEAAAIBAAAAAIggBAACAAAA","53":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","58":"b:AAhZIAEQFAIBAQAAAMggDwACAAAA","70":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","124":"b:AABQIAEQBAIBAAAAAIggDAACAAAA","192":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","193":"b:AAYQAAAAAAIBAAAAgAHhEQIAAAAA","200":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","218":"b:AABQIAEAAAIBAAAAAIggBAACAAAA","224":"b:AABQIAEAAAIBAAAAAIggBAACAAAA"},"packages/frontend/editor-ui/src/features/ndv/shared/views/NodeDetailsViewV2.vue":{"70":"b:cP9/4A84/v/n/wOg//////8PAAAA","86":"b:cP9/4A84/v/n/wOg//////8PAAAA","103":"b:ML5b4A0w1s7j+QMgx+3//zsCAAAA","105":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","109":"b:cP9/4A84/v/n/wOg//////8PAAAA","118":[9,10,65,103,113,118,122],"120":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","134":"b:cP9/4A84/v/n/wOg//////8PAAAA","139":"b:MJ4b4A0w1o7h8QMgx+3//ysAAAAA","146":"b:cP9/4A84/v/n/wOg//////8PAAAA","159":"b:cP9/4A84/v/n/wOg//////8PAAAA","165":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","186":"b:cP9/4A84/v/n/wOg//////8PAAAA","193":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","195":"b:cP9/4A84/v/n/wOg//////8PAAAA","199":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","213":[20,57,64,65,107],"219":"b:cP9/4A84/v/n/wOg//////8PAAAA","223":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","225":"b:cP9/4A84/v/n/wOg//////8PAAAA","243":"b:cP9/4A84/v/n/wOg//////8PAAAA","249":"b:cP9/4A84/v/n/wOg//////8PAAAA","270":"b:MJ4b4A0w1o7h+QMgx+3//ysAAAAA","285":"b:cP9/4A84/v/n/wOg//////8PAAAA","296":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","300":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","302":"b:ALoZYAgwVkoj2QEgx+3/djkCAAAA","304":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","306":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","312":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","314":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","318":"b:MJ4b4A0w1s7j+QMgx+3//ysCAAAA","320":"b:MJ4b4A0w1o7j+QMgx+3//ysAAAAA","322":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","324":"b:cP9/4A84/v/n/wOg//////8PAAAA","326":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","330":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","342":"b:cP9/4A84/v/n/wOg//////8PAAAA","353":"b:AAYAAAAAAAKDAAAAgIEfFAAAAAAA","357":[65,110],"361":"b:AJAAoAAQRACC0AAARyH/XQACAAAA","367":[65,113,118,121],"382":[65,110,113,116,117,118,121],"386":[65],"391":[65,113,116,118,121],"406":[65],"421":[65],"425":[65,118],"430":"b:MJ4b4A0w1g7j+QEgx+Xv/yoAAAAA","436":"b:AAYAAAQAAESCAAAAgIBqFgAAAAAA","437":[9,10,65,103,113,118,122],"445":[65],"449":"b:MJ4b4A0w1g7j+QEgx+Xv/yoAAAAA","458":[17,65,118],"464":[65,103,104,119,124],"468":[65,119],"472":"b:ALoZYAgwVkoj2QEgx+3/djkCAAAA","512":"b:MJ4b4A0w1o7j+QMgx+3//ysAAAAA","521":[17,65,118,121,127],"526":"b:MJ4b4A0w1o7j+QMgx+3//ysAAAAA","534":"b:AABaAAQAAM6DAAIAgM1/lwEAAAAA","538":[65,113,121],"552":[65],"556":"b:AAACAAAAAAACCAAAgUDyCwAAAAAA","561":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","566":[65,116,118],"570":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","574":"b:cP9/4A84/v/n/wOg//////8PAAAA","578":[65],"582":"b:AAAAAAAAAAACCAAAAElyAgAAAAAA","588":"b:cP9/4A84/v/n/wOg//////8PAAAA","606":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","616":"b:AI4bQAkwAAIhQAAgx03/PyIAAAAA","654":[17,65,110,118,121,127],"658":[17,65,118,121],"662":"b:MJ4b4A0w1o7j+QMgx+3//ysAAAAA","663":"b:MJ4b4A0w1o7j+QMgx+3//ysAAAAA","668":[17,65,118,121],"669":[17,65,118,121],"674":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","679":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","682":"b:MJ5b4A0w1s7j+QMgx+3//ysCAAAA","703":"b:cP9/4A84/v/n/wOg//////8PAAAA","709":"b:AIAAAAAAAAAiAAAgBF4AQNAAAAAA","783":"b:MJ4b4A0w1g7h+QEgx+Xv/yoAAAAA","791":[75,110,113,116,117,118,121],"809":"b:MJ5b4A0w1s7h+QMgx+3//ysCAAAA","850":[118],"857":[104,107,118,121]},"packages/frontend/editor-ui/src/features/settings/communityNodes/communityNodes.store.ts":{"12":"b:MJ5b4A0w1s7h+Qsgz+3//ysCAAAA","22":[55,83],"30":[83],"36":[55,83],"37":[83],"46":[55,83],"55":[55,83],"60":[83],"74":[83],"79":[83],"84":[83],"88":[83],"103":[55]},"packages/frontend/editor-ui/src/features/settings/communityNodes/composables/useInstalledCommunityPackage.ts":{"10":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","16":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","17":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","25":[55],"32":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","34":[17,55,77,119],"41":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA","51":"b:MJ5b4A0w1s7h+QMgz+3//ysCAAAA"},"packages/frontend/editor-ui/src/features/settings/usage/usage.store.ts":{"38":"b:+P///Q+4/////xOk//////8PAAAA","74":"b:eP//6Q+4/////xOk//////8PAAAA","79":"b:+P///Q+4/////xOk//////8PAAAA"},"packages/frontend/editor-ui/src/features/shared/contextMenu/components/ContextMenu.vue":{"17":"b:cP9/4A84/v/n/wPg//////8PgAAA","24":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","28":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","49":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","54":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","61":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","64":"b:cP9/4A84/v/n/wPg//////8PgAAA","72":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","88":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","95":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","96":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA"},"packages/frontend/editor-ui/src/features/shared/contextMenu/composables/useContextMenu.ts":{"16":"b:cP9/4A84/v/n/wPg//////8PgAAA","18":"b:cP9/4A84/v/n/wPg//////8PgAAA","20":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","27":"b:cP9/4A84/v/n/wOg//////8PgAAA","32":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","53":"b:cP9/4A84/v/n/wPg//////8PgAAA","59":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA"},"packages/frontend/editor-ui/src/features/shared/contextMenu/composables/useContextMenuItems.ts":{"52":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","58":"b:cP9/4A84/v/n/wPg//////8PgAAA","72":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","76":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","85":[151],"95":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","97":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","101":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","102":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","108":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","116":"b:AIAAAAAAAAAAIAEAVgAABAEAgAAA","120":"b:AIAAAAAAAAAAIAAAVgAABAEAgAAA","135":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","144":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","146":"b:AIAAAAAAAAAAIAEAdgAABAEAgAAA","230":"b:AIAAAAAAAAAAIAEAVgAABAEAgAAA","238":"b:AIAAAAAAAAAAIAEAVgAABAEAgAAA","242":"b:AIAAAAAAAAAAIAEAVgAABAEAgAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/InlineExpressionEditorInput.vue":{"26":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","39":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","51":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","75":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","81":"b:AIIAAAAAAIBAAUIAAEiPHwAAAAAA","88":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","97":"b:AAAAAAAAAAAAAEAAAAAPHwAAAAAA","104":"b:AAAAAAAAAAAAAEAAAAAPHwAAAAAA","107":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA","118":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/InlineExpressionEditorOutput.vue":{"32":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","38":"b:AIIBAAAQAgAAMUAAAUmFAgAAAAAA","45":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","62":"b:AAAAAAAAAAAAAEAAAAEPHgAAAAAA","66":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","72":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/theme.ts":{"4":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","18":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","58":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/composables/useExpressionEditor.ts":{"59":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","70":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA","103":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","108":"b:AIIBAAAQAoBAMUIAAUmPHwAAAAAA","122":"b:AIIBAAAQAoBAMUIAAUmPHwAAAAAA","142":"b:AIIBAAAQAoBAMUIAAUmPHwAAAAAA","176":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","180":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","186":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","197":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","201":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","212":"b:AIIBAAAQAgAAEEAAAQGvGwAAAAAA","220":"b:AIIBAAAQAgAAEEAAAQGvHwAAAAAA","227":"b:AAAAAAAAAAAAAAAAAAEPHQAAAAAA","238":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","249":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","276":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","281":"b:AAAAAAAAAAAAAEAAAAAPHwAAAAAA","293":"b:AAAAAAAAAAAAAEAAAAENHwAAAAAA","309":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","317":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","327":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","339":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","350":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","354":"b:AIIBAAAQAgAAMUAAAUmFAgAAAAAA","361":"b:AIABAAAQAgAAMAAAAUCBAAAAAAAA","363":"b:AIABAAAQAgAAMAAAAUCBAAAAAAAA","369":"b:AIABAAAQAgAAMAAAAUCBAAAAAAAA","379":"b:AIIBAAAQAoBAMEIAAUmPHwAAAAAA","441":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","443":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","444":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","447":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","448":"b:AIIAAAAAAIBAAUIAAEmPHwAAAAAA","478":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","481":"b:AIIAAAAAAIBAAUIAAEiPHwAAAAAA","511":"b:AIIAAAAAAIBAAUIAAEiPHwAAAAAA","527":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","535":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA","555":"b:AAAAAAAAAAAAAEAAAAAPHQAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/addCompletions.ts":{"8":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","15":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/dragAndDrop.ts":{"15":"b:AIYDYAgQQoBAMUMAx2mvnwIAAAAA","18":"b:AIYBAAgQAoBAMUMAgWmvnwIAAAAA","20":"b:AIYBAAgQAoBAMUIAgWmvnwIAAAAA","35":"b:AIYDYAgQQoBAMUMAx2mvnwIAAAAA","42":"b:AIYDYAgQQoBAMUMAx2mvnwIAAAAA","46":"b:AIYDYAgQQoBAMUMAx2mvnwIAAAAA","93":"b:AIIDIAgQQgAAMUEAx0mvBwAAAAAA","97":"b:AAABAAgAAAAAAUAAAAEvnwAAAAAA","104":"b:AAAAAAAAAAAAAEAAgAEvHwAAAAAA","112":"b:AAABAAgAAAAAAUAAAAEPnwAAAAAA","115":"b:AAAAAAAAAAAAAEAAAAEvHwAAAAAA","123":[113],"127":[113],"139":[113],"143":[113],"163":"b:AIYDYAgQQoBAMUMAx2mvnwIAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/expressionCloseBrackets.ts":{"10":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA","14":"b:AAAAAAAAAAAAAEAAAAEPHQAAAAAA","36":"b:AIIBAAAQAoBAMUIAAUmvHwIAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/n8nLang.ts":{"11":[72,113,114,115],"14":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","25":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","28":"b:AIIBAAAQAoBAMUIAAUivHwIAAAAA","32":"b:AIIDQAAQQoBAMUIABWmvnwIAAAAA","37":[112,113,120,122]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/CategoryItem.vue":{"12":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","16":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","20":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/NodeItem.vue":{"38":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","58":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","78":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","85":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","90":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","94":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","98":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","102":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","108":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","110":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","115":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","116":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","118":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","127":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","131":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","135":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","139":[65],"143":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","155":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","157":[65],"171":[65],"173":[65],"178":[65],"181":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","201":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","214":"b:MIgJoAkQTAgjEAAgxwGiJSACAAAA","215":[65],"217":"b:MIgJoAkQTAgjEAAgxwGiJSACAAAA","227":[55,65],"229":[65],"232":[55,65],"246":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","258":[65]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/SubcategoryItem.vue":{"13":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","15":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","16":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Modes/NodesMode.vue":{"54":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","68":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","70":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","73":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","75":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","87":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","97":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","111":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","194":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","253":[15,49,51,52,65],"273":[15,49,51,52,65],"289":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","295":[65],"299":[29,65,96],"307":[29,65,96],"315":[29,65,96],"321":[65],"324":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","333":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","343":[65],"344":[65]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/NodeCreator.vue":{"54":"b:cP8f4A84/v/n/wMg//////8PAAAA","56":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","64":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","72":[65,96],"83":"b:cKodoAkw/k4j0AAgx3/vffoCAAAA","87":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","91":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","96":[65],"99":[65],"119":"b:cP8f4A84/v/n/wMg//////8PAAAA","123":"b:cP8f4A84/v/n/wMg//////8PAAAA","124":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","134":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","142":[29,51,65,120],"145":"b:cP8f4A84/v/n/wMg//////8PAAAA","149":"b:cP8f4A84/v/n/wMg//////8PAAAA","160":"b:AKAEAAAAAAAiAAAgBF4AQNAAAAAA","165":[65,118]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/NodeCreatorShortcutCoachmark.vue":{"14":"b:cP8f4A84/v/n/wMg//////8PAAAA","28":"b:cP8f4A84/v/n/wMg//////8PAAAA","31":[65],"45":[65]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/NodesListPanel.vue":{"41":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","51":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","53":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","55":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","57":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","59":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","75":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","80":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","82":[55,65],"86":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","93":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","105":"b:cIoZoAkw/k4j0AAgxy3vfSoCAAAA","125":"b:MIgRoAgQ/gIjAAAgxwHlPSIAAAAA","130":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","134":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","139":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","144":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","145":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","194":[51,53,65],"196":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","208":[29,50,51,65,98,102]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/SearchBar.vue":{"16":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","26":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","30":"b:cIoZoAkw/k4j0AAgxy3vfSoCAAAA","35":[65],"39":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","44":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","52":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Renderers/CategorizedItemsRenderer.vue":{"28":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","38":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","39":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","41":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","45":[54,65],"49":[50,54,65],"62":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","68":[65],"74":[65],"83":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","84":[50,65],"92":[65],"97":[29,65,96],"103":[65],"106":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","122":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","126":[65],"150":"b:MIoZoAkQfkojEAAgxwHvfSICAAAA","151":[50,65,117,120,123,124]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Renderers/ItemsRenderer.vue":{"28":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","43":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","45":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","47":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","51":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","61":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","78":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","104":[65],"108":[65],"112":[65],"116":[65],"120":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","124":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","131":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","132":"b:cIoZoAkw/k4j0AAgxy3vfSoCAAAA","139":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","152":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","161":[15,52,65,119],"180":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useActions.ts":{"65":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","72":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","76":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","77":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","97":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","98":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","103":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","154":"b:MAgRoAgQZAIhAAAgxwFlPSIAAAAA","170":"b:MAgRoAgQRAIhAAAgxwElPSIAAAAA","173":"b:MAgAoAgQQAAgAAAgxwElLSAAAAAA","188":"b:MAgRoAgQRAIhAAAgxwElPSIAAAAA","217":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","243":"b:cIoZoAkwvkYh0AAg5y2vfaICAAAA","251":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","253":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","256":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","269":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","278":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","282":[15,16,96],"286":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","290":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","298":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","306":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","338":"b:cIoZoAkw/k4h0AAg5y2vfaoCAAAA","374":"b:MAgRoAgQVAIhAAAgxwElPSIAAAAA","379":"b:MAgRoAgQVAIhAAAgxwElPSIAAAAA","389":"b:MAgRoAgQRAIhAAAgxwElPSIAAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useKeyboardNavigation.ts":{"14":"b:cP8f4A84/v/l/wMg//////8PAAAA","20":[29,51,96,120],"43":[29,96],"46":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","49":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","50":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","53":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","56":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","62":[29,51,96,120],"64":[29,51,96,120],"66":[29,51,96,120],"79":[9,29,50,51,96,98,102,120],"102":[29,51,96,120],"127":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","131":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","141":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","147":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","151":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","156":"b:cP8f4A84/v/l/wMg//////8PAAAA","157":"b:cP8f4A84/v/n/wMg//////8PAAAA","166":"b:cIoZoAkw/k4h0AAgxy3vfaoCAAAA","171":"b:MIgRoAgQ/gIhAAAgxwFlPSIAAAAA","172":"b:MIgRoAgQ/gIhAAAgxwFlPSIAAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useNodeCreatorShortcutCoachmark.ts":{"12":"b:cP8f4A84/v/n/wMg//////8PAAAA","22":"b:AKAEAAAAAAAgAAAgBF4AQNAAAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/nodeCreator.utils.ts":{"51":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","72":[151,51,52],"78":[151,51,52],"82":[151,51,52],"94":[151,51,52],"105":"b:MIgRoAgQfgIhEAAgxwHlPSIAgAAA","106":"b:MIgRoAgQfgIhAAAgxwHlPSAAgAAA","118":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","123":"b:cIoAoAgwuEQgAAAgxw0vTSIAgAAA","130":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","137":[151],"148":"b:cIoZoAkw/k4h0AAgxy3vfSoCgAAA","151":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","152":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","154":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","168":[15,151,49,119],"173":[15,151,49,119],"187":[15,151,49,119],"202":[15,16,151,44,49,52,76,119,120],"207":[15,16,151,44,49,52,119,120],"211":[15,16,151,44,49,52,76,119,120],"212":[15,16,151,44,49,52,119,120],"213":[15,16,151,44,49,52,119,120],"222":[15,16,151,44,49,52,76,119,120],"226":[15,16,151,44,49,52,119,120],"237":[15,16,151,44,49,52,119,120],"238":[15,16,151,44,49,52,119,120],"254":[15,16,151,44,49,52,76,119,120],"256":[15,16,151,119,120],"270":[15,16,151,44,49,52,76,119,120],"278":"b:cP8f4A84/v/n/wMg//////8PgAAA","286":"b:cP974A8w/v/h/wug//////sPgAAA","289":"b:cP974A8y/v/h/0Pg3/////sPgAAA","291":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","327":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","329":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","336":[151],"342":[151],"347":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","372":[151],"373":[151],"377":"b:cIoJoAkQ/E4h0AAgxy3vfSoCgAAA","382":[151,55],"405":[151],"431":[151,53],"449":[151,120],"468":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","472":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","478":"b:cIoZoAkw/k4h0AAgxy3vfaoCgAAA","486":[151,52],"487":[151,52]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/views/NodeCreation.vue":{"40":"b:cP8f4A84/v/n/wMg//////8PAAAA","65":"b:cP8f4A84/v/n/wMg//////8PAAAA","72":"b:cIoZoAkwvk4jUAAgxwXvfSoAAAAA","79":[65,101],"93":"b:cIoZoAkw/k4j0AAgxy3vfaoCAAAA","100":"b:cIoZoAkw/k4j0AAgxy2vfaoCAAAA","105":[65,80,99],"119":[9,12,65],"136":[65],"139":[65],"155":"b:cP8f4A84/v/n/wMg//////8PAAAA","159":"b:cP8f4A84/v/n/wMg/////n8PAAAA","174":"b:cP8f4A84/v/n/wMg//////8PAAAA","188":"b:cP8f4A84/v/n/wMg//////8PAAAA","202":"b:cP8f4A84/v/n/wMg//////8PAAAA","218":[9,10,11,12,13,18],"227":[9,10,11,12,13,18]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/views/viewsData.ts":{"122":[120],"139":[120],"141":[120],"145":[120],"148":[120],"174":[120],"197":[120],"250":[15,16,49,119,120],"253":[15,16,49,119,120],"263":[15,16,49,119,120],"389":"b:cIoZoAkw/k4h0AAgxw2vfaoCAAAA","515":"b:MIoZoAgwuAYh0AAgxyVvfSIAAAAA","526":"b:MIoZoAgwuAYh0AAgxyVvfSIAAAAA","528":"b:MIoZoAgwuAYh0AAgxyVvfSIAAAAA","529":"b:MIoZoAgwuAYh0AAgxyVvfSIAAAAA","651":"b:MIoZoAgwuAYh0AAgxyVvfSIAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/Canvas.vue":{"197":"b:cP9/4A84/v/n/wPg//////8PgAAA","199":"b:cP9/4A84/v/n/wOg//////8PgAAA","203":"b:cP9/4A84/v/n/wPg//////8PgAAA","206":"b:cP9/4A84/v/n/wPg7/////8PgAAA","248":"b:cP9/4A84/v/n/wPg//////8PgAAA","249":"b:cN5b4A0w/u7h+wMg/+3///sHgAAA","251":[151,96,97,98,102,131,138],"252":[151,96,97,98,102,131,138],"258":"b:cP9/4A84/v/n/wPg//////8PgAAA","275":"b:AAAAAAAAAAAAAAAAdwAgABkMgAAA","281":"b:ADIAAAAAAAAAAAAAdwEtHVkMgAAA","301":[151],"316":"b:AKAAIAAARAAA0AAAdyCAQPkOgAAA","318":[151,96],"326":[151,96],"334":[151],"336":[151],"345":[151],"347":[151],"356":[151,128],"358":[151,128],"361":[151,96],"363":[151,96],"366":[151],"378":[151,100],"382":[151,100],"394":[151],"397":[151],"402":"b:ACAAAAAAAAAAAAAAdwAAAPkMgAAA","404":[151],"406":[151,96,131,138],"407":[151,96,131,138],"409":[151],"410":[151,96,97,98,102,131,138],"412":[151],"413":[151],"414":[151],"415":[151],"422":[151],"423":[151],"424":[151],"429":[151],"435":[151],"436":[151,96,97,102],"437":[151,98],"438":[151,98,102,133,134,135],"439":[151],"440":[151,98],"441":[151],"443":[151],"444":[151],"448":[151,101],"449":[151],"450":[151],"451":[151,139],"454":[151],"455":[151],"456":[151],"457":[151],"458":[151],"459":[151],"460":[151],"461":[151],"466":[151],"470":[151],"471":[151],"486":"b:AAAAAAAAAAAAAAAARwAAAOgEgAAA","487":"b:cP9/4A84/v/n/wPg//////8PgAAA","490":"b:AP9fYAQA+orh6wMg/+/3l/kHgAAA","491":"b:AP9fYAQA+orh6wMg/+/3l/kHgAAA","500":"b:ANdbYAQAOorh6wMg3+/3l/kFgAAA","507":"b:cP9/4A84/v/n/wPg//////8PgAAA","508":"b:cN4b4A0wku7h+wMg/83//+sEgAAA","513":"b:cP9/4A84/v/n/wPg//////8PgAAA","519":"b:cP9/4A84/v/n/wPg//////8PgAAA","520":[9,10,11,12,13,151,18],"528":"b:AIABIAAAOgAAAAAAAyAAEAAAgAAA","532":[151,77,96,97,100,102,131],"536":[151],"542":[151,100],"543":[151],"544":[151,100],"545":[151,77,96,97,100,102,131],"546":[151,100],"549":[151,77,96,97,100,102,131],"553":[151,77,96,97,100,102,131],"557":[151,77,96,97,100,102,131],"562":[151],"566":[151],"570":[151,100],"574":[151,100],"578":"b:ABZbQAQAAIrhKQMA3+33h/kEgAAA","595":[151],"600":"b:AEECIAAAAAABIAAAP0BgAAEAgAAA","608":"b:ABZbQAQAAIrgKQMAhO33hwEAgAAA","613":[151],"617":"b:cN4ZoA0w/m5h8gMg923vfasDgAAA","621":"b:cN5b4A0w/u7h+wMg/+3///sHgAAA","625":"b:cN4ZoA0w/m5h8gMg923vfasDgAAA","642":[151,93,96,110],"646":[151,73,96,110],"650":[151],"654":[15,151],"658":[15,151],"661":[151,32,64,97],"665":[151,32,64,97],"668":[151],"681":[151],"685":[151],"690":[151],"706":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","713":[151,97,100,128],"720":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","731":[151,96,102],"735":[151,78,79,96],"748":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA","754":[151,78,79,80,96,102],"772":[151,69,78,79,80,96,102,110],"777":[151,69,78,79,80,96,102,110],"784":"b:AL9fYAQA+orhKwMg/+33l/kHgAAA","788":"b:AL5fYAQA+orhKQMg/+33l/kDgAAA","796":[8,17,151,75,96,107,111,112,114],"804":"b:ACAAAAAAAAAAAAAAdwAAAPkMgAAA","812":"b:ACAAAAAAAAAAAAAAdwAAAPkMgAAA","829":"b:ANdbYAQAOorhKQMA/+33l/kEgAAA","839":"b:AEECIAAAAAABIAAAP0BgAAEAgAAA","843":[151],"847":"b:cP9/4A84/v/n/wPg//////8PgAAA","855":[151,98],"859":[151,98,105],"863":[151,98],"867":[151,98],"871":"b:cP9/4A84/v/n/wPg//////8PgAAA","880":[151],"884":"b:cP9/4A84/v/n/wPg//////8PgAAA","890":"b:cP9/4A84/v/n/wOg//////8PgAAA","891":"b:cP9/4A84/v/n/wOg//////8PgAAA","899":[151],"900":[151],"914":[151,97,98,101,128],"922":[151],"926":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","941":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","990":[13,151,94],"1021":[151,96],"1025":[151,96],"1035":"b:cP9/4A84/v/n/wPg//////8PgAAA","1039":"b:cP9/4A84/v/n/wPg//////8PgAAA","1044":[151],"1052":[151],"1061":[151],"1062":[151],"1067":[151],"1071":[151],"1079":[151,134],"1098":"b:AAAAQAAAAAAkAAAAFiAAQAkCgAAA","1105":[151,21,22,95],"1113":[151,21,22,95],"1121":"b:cP9/4A84/v/n/wPg//////8PgAAA","1126":[151],"1132":"b:AIAAAAAAAAAgAAAgBF4AQNAIgAAA","1142":"b:cP9/4A84/v/n/wPg//////8PgAAA","1151":"b:cP9/4A84/v/n/wPg//////8PgAAA","1167":"b:cP9/4A84/v/n/wPg//////8PgAAA","1177":"b:AEECIAAAAAABIAAAP0BgAAEAgAAA","1181":"b:cP9/4A84/v/n/wPg//////8PgAAA","1184":[151],"1191":[151],"1218":"b:cP9/4A84/v/n/wPg//////8PgAAA","1261":[151,100],"1273":"b:cP9/4A84/v/n/wPg//////8PgAAA","1300":[151],"1307":"b:MP974A8w1r/h/wPg3////+sNgAAA","1317":[151,69,78,79,80,96,102,110],"1322":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","1324":"b:cP9/4A84/v/n/wPg//////8PgAAA","1328":"b:cP9/4A84/v/n/wOg//////8PgAAA","1337":[151],"1341":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/WorkflowCanvas.vue":{"69":"b:cP9/4A84/v/n/wOg//////8PAAAA","70":"b:cP9/4A84/v/n/wOg//////8PAAAA","74":"b:cP9/4A84/v/n/wOg//////8PAAAA","80":"b:AIAAAAAAAAAgAAAgBF4AQNAIAAAA","84":"b:cP9/4A84/v/n/wOg//////8PAAAA","89":"b:cP9/4A84/v/n/wOg//////8PAAAA","91":"b:cP9/4A84/v/n/wOg//////8PAAAA","92":"b:cP8f4A84/v/n/wMg//////8PAAAA","95":"b:cP974A8w/v/h/wOg3/////sPAAAA","108":"b:cP9/4A84/v/n/wOg//////8PAAAA","111":[100],"112":[100],"117":"b:cP9/4A84/v/n/wOg//////8PAAAA","123":"b:cP9/4A84/v/n/wOg//////8PAAAA","139":[98,102,122,131,136],"147":[98,102,122,131,136],"153":[98,102,122,131,136],"204":"b:cP9/4A84/v/n/wOg//////8PAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/background/CanvasBackground.vue":{"13":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasChatButton.vue":{"9":"b:AMADAAAQAgAAMACAAECAAAAAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasControlButtons.vue":{"10":"b:cP9/4A84/v/n/wPg//////8PgAAA","36":"b:cP9/4A84/v/n/wPg//////8PgAAA","38":"b:cP9/4A84/v/n/wPg//////8PgAAA","40":"b:cP9/4A84/v/n/wPg//////8PgAAA","42":[151,98],"46":[151,98,105],"50":[151,98],"54":"b:AMECAAAAAAAAIAMAX+hgggEBgAAA","58":[151],"62":[151],"64":"b:cP9/4A84/v/n/wPg//////8PgAAA","71":"b:cP9/4A84/v/n/wPg//////8PgAAA","82":"b:cP9/4A84/v/n/wPg//////8PgAAA","92":"b:cP9/4A84/v/n/wPg//////8PgAAA","107":[151],"126":"b:AAACAAAAAAAAAABABErAggAAgAAA","140":"b:cP8f4A84/v/n/wMg//////8PgAAA","149":"b:cP8f4A84/v/n/wMg//////8PgAAA","157":[151],"170":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasArrowHeadMarker.vue":{"6":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasConnectionLine.vue":{"11":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","17":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","21":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","28":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","34":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","38":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","46":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA","47":"b:AIABIAAAMgAAAAAAAyAAEAEAgAAA","51":"b:AIABIAAAOgAAAAAAEyAAEAEAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasEdge.vue":{"35":"b:MP974A8w1r/h/wPg3////+sNgAAA","43":"b:MP974A8w1r/h/wPg3////+sNgAAA","45":"b:MP974A8w1r/h/wPg3////+sNgAAA","46":"b:MP974A8w1r/h/wPg3////+sNgAAA","52":"b:IP8bwA8wkr/h/QMg3////+sMgAAA","60":"b:MP974A8w1r/h/wPg3////+sNgAAA","62":"b:MP974A8w1r/h/wPg3////+sNgAAA","64":"b:MP974A8w1r/h/wPg3////+sNgAAA","66":"b:MP974A8w1r/h/wPg3////+sNgAAA","71":"b:MP974A8w1r/h/wPg3////+sNgAAA","77":"b:MP974A8w1r/h/wPg3////+sNgAAA","82":"b:MP974A8w1r/h/wPg3////+sNgAAA","89":"b:MP974A8w1r/h/wPg3////+sNgAAA","95":"b:MP974A8w1r/h/wPg3////+sNgAAA","97":"b:MP974A8w1r/h/wPg3////+sNgAAA","99":[151,78,79,96,102],"106":"b:MP974A8w1r/h/wPg3////+sNgAAA","116":"b:MP974A8w1r/h/wPg3////+sNgAAA","117":"b:MP974A8w1r/h/wPg3////+sNgAAA","121":"b:MP974A8w1r/h/wPg3////+sNgAAA","132":[151,78,79,96],"136":[151,96,102],"140":[151,69,78,79,80,96,102,110],"144":[151,69,78,79,80,96],"146":"b:MP974A8w1r/h/wPg3////+sNgAAA","160":"b:MP974A8w1r/h/wPg3////+sNgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/utils/getEdgeRenderData.ts":{"11":"b:MP974A8w/r/h/wPg3////+sNgAAA","13":"b:MP974A8w/r/h/wPg3////+sNgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/CanvasHandleRenderer.vue":{"15":"b:cP974A8w/v/h/wPg3/////sPgAAA","43":"b:cP974A8w/v/h/wPg3/////sPgAAA","47":"b:cP974A8w/v/h/wPg3/////sPgAAA","53":"b:cP974A8w/v/h/wPg3/////sPgAAA","57":"b:cP974A8w/v/h/wPg3/////sPgAAA","63":"b:cP974A8w/v/h/wPg3/////sPgAAA","69":"b:cP974A8w/v/h/wPg3/////sPgAAA","77":"b:cP974A8w/v/h/wPg3/////sPgAAA","87":"b:cP974A8w/v/h/wPg3/////sPgAAA","89":"b:cP974A8w/v/h/wPg3/////sPgAAA","113":"b:AIABIAAAOgAAAAAAAyAAEAAAgAAA","142":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleMainInput.vue":{"14":"b:MP974A8w1r/h/wPg3////+sNgAAA","22":"b:MP974A8w1r/h/wPg3////+sNgAAA","26":"b:MP974A8w1r/h/wPg3////+sNgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleMainOutput.vue":{"22":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","27":"b:cP974A8w/v/h/wPg3/////sPgAAA","29":"b:cP974A8w/v/h/wPg3/////sPgAAA","38":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","40":"b:AIcLAA4gALvBSAIAhvx3l4EAgAAA","49":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","51":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","53":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","58":"b:ACBAIAMAEIhBwgAAQspyBgALgAAA","63":"b:AIcLAA4gALvBSAIAhvx3l4EAgAAA","70":"b:cP974A8w/v/h/wPg3/////sPgAAA","75":"b:AAAAIAAAOAAAAAAAByAAEAAAgAAA","79":[151,29,52,53,96,97,109,124],"83":[151,29,51,52,53,96,97,109,124],"85":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleNonMainInput.vue":{"19":"b:AIEDAAAQAgAAGAAgAUCAAQAAgAAA","21":"b:AIEDAAAQAgAAGAAgAUCAAQAAgAAA","27":"b:AIEDAAAQAgAAGAAgAUCAAQAAgAAA","33":"b:AIABAAAQAgAAGAAgAUCAAQAAgAAA","39":"b:AIEDAAAQAgAAGAAgAUCAAQAAgAAA","44":[15,16,151,49],"48":[15,16,151,49],"52":[15,16,151,49],"54":"b:AIEDAAAQAgAAGAAgAUCAAQAAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleNonMainOutput.vue":{"13":"b:AIEDAAAQAgAAGAAAAECAAQAAgAAA","15":"b:AIEDAAAQAgAAGAAAAECAAQAAgAAA","23":"b:AIEDAAAQAgAAGAAAAECAAQAAgAAA","27":"b:AIEDAAAQAgAAGAAAAECAAQAAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/parts/CanvasHandleDiamond.vue":{"13":"b:AIEDAAAQAgAAGAAgAUCAAQAAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/parts/CanvasHandleDot.vue":{"4":"b:cP974A8w/v/h/wPg3/////sPgAAA","13":"b:cP974A8w/v/h/wPg3/////sPgAAA","14":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/parts/CanvasHandlePlus.vue":{"6":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","34":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","41":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","57":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","64":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","89":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","102":"b:AIABIAAAOgAAAAAAAyAAEAAAgAAA","104":"b:cP8b4A8w/v/h/wNg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/CanvasNode.vue":{"49":"b:cP9/4A84/v/n/wPg//////8PgAAA","89":"b:cP9/4A84/v/n/wPg//////8PgAAA","90":"b:cP9/4A84/v/n/wPg//////8PgAAA","91":"b:cP974A8w/v/h/wPg3/////sPgAAA","105":"b:cP974A8w/v/h/wPg3/////sPgAAA","107":"b:cP9/4A84/v/n/wPg//////8PgAAA","115":[151],"118":"b:cP9/4A84/v/n/wPg//////8PgAAA","120":"b:cP9/4A84/v/n/wPg//////8PgAAA","136":"b:ABZbQAQAAIrgKQMApO33hwEAgAAA","146":"b:cP9/4A84/v/n/wPg//////8PgAAA","150":"b:cP9/4A84/v/n/wPg//////8PgAAA","154":"b:cP9/4A84/v/n/wPg//////8PgAAA","161":"b:cP9/4A84/v/n/wPg//////8PgAAA","165":"b:cP974A8w/v/h/wPg3/////sPgAAA","172":"b:cP9/4A84/v/n/wPg//////8PgAAA","249":"b:AIABIAAAOgAAAAAAAyAAEAAAgAAA","253":[151,73,96,110],"257":[8,17,151,75,96,107,111,112,114],"261":[151,93,96,110],"265":"b:ABZbQAQAAIrgKQMAgO33hwEAgAAA","269":[151],"273":[151,98],"277":"b:AIAAAAAAAAAAIAAAdgAABAEAgAAA","281":[151],"285":[151],"289":[151],"293":[151],"297":[151],"301":[151],"304":[151],"326":"b:cP9/4A84/v/n/wOg//////8PgAAA","331":"b:cP9/4A84/v/n/wPg//////8PgAAA","340":"b:cP9/4A84/v/n/wPg//////8PgAAA","341":"b:cN5b4A0w/u7h+wMg/+3///sHgAAA","347":[15,151,74,138,139],"353":[151,32,64,74,97,138,139],"359":"b:cP9/4A84/v/n/wPg//////8PgAAA","364":"b:cL49oA0w/m5h1gMg91/vffsPgAAA","368":"b:cP9/4A84/v/n/wPg//////8PgAAA","378":"b:cP974A8w/v/h/wPg3/////sPgAAA","395":"b:MP974A8w1r/h/wPg3////+sNgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/CanvasNodeRenderer.vue":{"10":"b:cP9/4A84/v/n/wPg//////8PgAAA","12":"b:cP9/4A84/v/n/wPg//////8PgAAA","33":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/CanvasNodeToolbar.vue":{"17":"b:cP974A8w/v/h/wOg//////sPgAAA","54":"b:AIEDAAAQAgAAGAAAAECAAQAAgAAA","57":"b:AIEDAAAQAgAAGAAAAECAAQAAgAAA","59":"b:cP8b4A8w/v/h/wMg3/////sPgAAA","66":"b:cP974A8w/v/h/wOg//////sPgAAA","73":"b:cP974A8w/v/h/wOg//////sPgAAA","82":"b:cP974A8w/v/h/wOg//////sPgAAA","86":"b:cP974A8w/v/h/wOg//////sPgAAA","88":"b:cP974A8w/v/h/wOg//////sPgAAA","92":"b:cP974A8w/v/h/wOg//////sPgAAA","97":"b:cP974A8w/v/h/wOg//////sPgAAA","101":[8,17,151,75,96,107,111,112,114],"105":[151,93,96,110],"109":[151,73,96,110],"113":[151],"119":[151,98],"123":"b:AAECAAAAAAAACgAgBcgFAAEAgAAA","127":"b:AAACAAAAAAAACAAgBMgFAAEAgAAA","131":[151],"137":[151],"140":"b:cP974A8w/v/h/wOg//////sPgAAA","150":"b:AAECAAAAAAAACgAgBcgFAAAAgAAA","151":[151],"159":"b:cP8b4A8w/v/h/wOg3/////sPgAAA","202":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeAddNodes.vue":{"18":"b:cJ4ZoA84/m5n1gMg503vfb4PgAAA","26":"b:cJ4ZoA84/m5n1gMg503vfb4PgAAA","30":"b:cJ4ZoA84/m5n1gMg503vfb4PgAAA","35":"b:cJ4ZoA0w/m5h1gMg503vfaoPgAAA","40":[151],"44":[151],"48":"b:AAoAIAAAyAAgAAAARAkEAAACgAAA","55":[151],"63":"b:cJ4ZoA84/m5n1gMg503vfb4PgAAA","71":[151],"83":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeDefault.vue":{"22":"b:cP974A8w/v/h/wPg3/////sPgAAA","52":"b:cP974A8w/v/h/wPg3/////sPgAAA","53":"b:cP974A8w/v/h/wPg3/////sPgAAA","54":"b:cP974A8w/v/h/wPg3/////sPgAAA","57":"b:cP974A8w/v/h/wPg3/////sPgAAA","66":"b:cP974A8w/v/h/wPg3/////sPgAAA","67":[151],"69":"b:cP974A8w/v/h/wPg3/////sPgAAA","90":"b:cP974A8w/v/h/wPg3/////sPgAAA","96":"b:cP974A8w/v/h/wPg3/////sPgAAA","109":"b:cP974A8w/v/h/wPg3/////sPgAAA","117":"b:cP974A8w/v/h/wPg3/////sPgAAA","130":"b:cP974A8w/v/h/wPg3/////sPgAAA","139":"b:cP974A8w/v/h/wPg3/////sPgAAA","151":"b:IMFiQAIAAJugLQDAHv7yw9kOgAAA","157":"b:MP974A8w1v/h/wPg3/////sPgAAA","159":"b:MP974A8w1v/h/wPg3/////sPgAAA","164":"b:AIAAAAAAAAAAIAAAVgAABAEAgAAA","168":"b:ABZbQAQAAIrgKQMAgO33hwEAgAAA","175":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeSettingsIcons.vue":{"16":"b:cP974A8w/v/h/wPg3/////sPgAAA","17":"b:cP974A8w/v/h/wPg3/////sPgAAA","19":[151],"23":[151],"30":[151],"43":[151],"46":"b:cP974A8w/v/h/wPg3/////sPgAAA","51":[151],"60":[151,117],"68":[151],"77":[151],"85":[151],"94":[151],"104":[151],"113":[151],"121":[151],"131":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeStatusIcons.vue":{"23":"b:cP974A8w/v/h/wPg3/////sPgAAA","39":"b:cP974A8w/v/h/wPg3/////sPgAAA","42":"b:cP974A8w/v/h/wPg3/////sPgAAA","43":"b:cP974A8w/v/h/wPg3/////sPgAAA","46":"b:ML4Z4AEw1gZhnQAgBU2iL+INgAAA","47":[151],"48":"b:cP974A8w/v/h/wPg3/////sPgAAA","52":"b:MP9b4A8w1v/h/QKgz/3/v+MNgAAA","58":[151],"59":[151],"67":[151],"71":"b:cP974A8w/v/h/wPg3/////sPgAAA","80":[151],"81":[151],"93":[151],"95":"b:AIYBAAAgAAAAAAAAAEwgAMAAgAAA","105":[151],"107":"b:ML4Z4AEw1gZhnQAgBU2iL+INgAAA","123":[151],"126":"b:AAAAAAAAAACBQAAAgIAAFQEAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeTrigger.vue":{"33":"b:cP974A8w/v/h/wPg3/////sPgAAA","34":"b:cP974A8w/v/h/wPg3/////sPgAAA","45":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","53":[151],"54":[151],"58":"b:AMADAAAQAgAAMAAAAECAAAAAgAAA","63":[151],"64":"b:AMADAAAQAgAAMAAAAECAAAAAgAAA","67":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","68":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","70":[151],"78":[151],"86":[151,63,107],"89":"b:cP974A8w/v/h/wPg3/////sPgAAA","94":[151,63,107],"116":"b:AMADAAAQAgAAMAAAAECAAAAAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvas.ts":{"4":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasLayout.ts":{"54":"b:cP9/4A84/v/n/wPg//////8PgAAA","67":[13,151,94],"71":[13,151,94],"76":[13,151,94],"81":[13,151,94],"82":[13,151,94],"83":[13,151,94],"90":[13,151,94],"94":[13,151,94],"98":[13,151,94],"124":[13,151,94],"126":[13,151,94],"129":[13,151,94],"133":[13,151,94],"135":[13,151,94],"142":[13,151,94],"144":[13,151,94],"146":[13,151,94],"151":[13,151,94],"165":[151],"170":[13,151,94],"171":[13,151,94],"177":[13,151,94],"178":[13,151,94],"183":[13,151,94],"192":[13,151],"194":[13,151,94],"198":[13,151,94],"206":[151],"220":[151],"225":[151],"226":[151],"232":[151],"233":[151],"239":[13,151,94],"240":[13,151,94],"261":[13,151,94],"271":[13,151,94],"280":[13,151,94],"282":[13,151,94],"286":[13,151,94],"291":[151],"305":[151],"311":[151],"329":[13,151,94],"337":[151],"341":[151],"351":[151],"352":[151],"353":[151],"359":[13,151,94],"363":[13,151,94],"364":[13,151,94],"369":[13,151,94],"376":[13,151,94],"380":[13,151,94],"385":[151],"396":[151],"399":[151],"407":[151],"418":[13,151,94],"427":[13,151,94],"430":[151],"436":[13,151,94],"449":[151],"460":[151],"479":[13,151,94],"491":[13,151,94],"492":[151],"495":[151],"501":[151],"502":[151],"513":[13,151,94],"517":[13,151,94],"525":[13,151,94],"526":[151],"530":[151],"532":[151],"540":[151],"541":[151],"559":[13,151,94],"561":[13,151,94]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasMapping.groups.ts":{"28":[151,100],"36":[151,100],"53":[151,100],"57":[151,100],"75":[151,100],"81":[151,100],"122":"b:cP9/4A84/v/n/wOg//////8PgAAA","132":[151,100]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasMapping.ts":{"37":"b:cP9/4A84/v/n/wPg//////8PgAAA","50":"b:cP9/4A84/v/n/wPg//////8PgAAA","52":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","58":"b:cP9/4A84/v/n/wOg//////8PgAAA","77":"b:cP9/4A84/v/n/wPg//////8PgAAA","84":"b:cP9/4A84/v/n/wPg//////8PgAAA","133":"b:cP9/4A84/v/n/wPg//////8PgAAA","134":"b:MP974A8w1r/h/wPg3////+sNgAAA","145":"b:MP974A8w1r/h/wPg3////+sNgAAA","183":"b:MP974A8w1r/h/wPg3////+sNgAAA","184":"b:MP974A8w1r/h/wPg3////+sNgAAA","196":"b:MP974A8w1r/h/wPg3////+sNgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNode.ts":{"8":"b:cP974A8w/v/h/wPg//////sPgAAA","10":"b:cP974A8w/v/h/wPg//////sPgAAA","33":"b:cP974A8w/v/h/wPg//////sPgAAA","34":"b:cP974A8w/v/h/wPg3/////sPgAAA","36":"b:cP974A8w/v/h/wPg3/////sPgAAA","37":"b:cP974A8w/v/h/wPg3/////sPgAAA","38":"b:cP974A8w/v/h/wPg3/////sPgAAA","40":"b:cP974A8w/v/h/wPg3/////sPgAAA","41":[151,70,79,101,107,127,136,139],"42":"b:cP974A8w/v/h/wPg//////sPgAAA","44":[151],"45":[151],"46":"b:cP974A8w/v/h/wPg3/////sPgAAA","48":"b:cP974A8w/v/h/wPg3/////sPgAAA","49":"b:cP974A8w/v/h/wPg3/////sPgAAA","50":"b:cP974A8w/v/h/wPg3/////sPgAAA","51":"b:cP974A8w/v/h/wPg3/////sPgAAA","53":"b:cP974A8w/v/h/wPg3/////sPgAAA","54":"b:ANcbAA4gAP/BaAKAh/x/l8EAgAAA","55":"b:cP974A8w/v/h/wPg3/////sPgAAA","57":"b:cP974A8w/v/h/wPg//////sPgAAA","59":[151,70,79,101,107,127,136,139],"63":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupActions.ts":{"10":"b:cP9/4A84/v/n/wPg//////8PgAAA","18":[151,100],"20":[151,100],"21":[151,100],"24":[151,100],"29":[151],"39":[151],"41":[151,100],"49":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupDrag.ts":{"30":"b:cP9/4A84/v/n/wPg//////8PgAAA","38":[151],"44":[151],"60":[151],"70":[151],"89":[151],"94":[151,77,96,97,100,102,131],"99":[151,77,96,97,100,102,131],"110":[151,77,96,97,100,102,131],"145":[151,100],"153":[151,77,96,97,100,102,131],"160":[151,77,96,97,100,102,131],"178":[151,77,96,97,100,102,131],"190":[151,77,96,97,100,102,131],"199":[151,77,96,97,100,102,131],"222":[151],"232":[151],"236":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeHandle.ts":{"11":"b:cP974A8w/v/h/wPg3/////sPgAAA","14":"b:cP974A8w/v/h/wPg3/////sPgAAA","15":"b:cP974A8w/v/h/wPg3/////sPgAAA","16":"b:cP8b4A8w/v/h/wNg3/////sPgAAA","17":"b:cP974A8w/v/h/wPg3/////sPgAAA","18":"b:cP974A8w/v/h/wPg3/////sPgAAA","19":[8,15,16,17,151,49,75,110,119],"20":[151],"21":[151],"22":[151],"23":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeHover.ts":{"10":"b:cP9/4A84/v/n/wPg//////8PgAAA","17":"b:AP9fYAQA+orh6wMg/+/3l/kHgAAA","31":"b:ANdbYAQAOorh6wMg3+/3l/kFgAAA","64":[151],"73":"b:cP9/4A84/v/n/wPg//////8PgAAA","77":"b:AIAAAAAAAAAgAAAgBF4AQNAIgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasTraversal.ts":{"4":"b:cP9/4A84/v/n/wPg//////8PgAAA","5":[151,96],"6":[151],"9":[151,96],"13":[151,96],"17":[151],"18":[151],"21":[151],"26":[151],"27":[151],"32":[151,128],"42":[151,128],"43":[151,128],"46":[151,96],"56":[151,96],"57":[151,96]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useViewportAutoAdjust.ts":{"7":"b:cP9/4A84/v/n/wPg//////8PgAAA","21":"b:cP9/4A84/v/n/wPg//////8PgAAA","27":"b:cP9/4A84/v/n/wPg//////8PgAAA","46":"b:AIAAAAAAAAAgAAAgBF4AQNAIgAAA","51":"b:cP9/4A84/v/n/wPg//////8PgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useZoomAdjustedValues.ts":{"8":"b:cP974A8w/v/h/wPg3/////sPgAAA","17":"b:cP974A8w/v/h/wPg3/////sPgAAA","39":"b:cP974A8w/v/h/wPg3/////sPgAAA","40":"b:cP974A8w/v/h/wPg3/////sPgAAA","60":"b:cP974A8w/v/h/wPg3/////sPgAAA","61":"b:cP974A8w/v/h/wPg3/////sPgAAA","76":"b:cP974A8w/v/h/wPg3/////sPgAAA","77":"b:cP974A8w/v/h/wPg3/////sPgAAA"},"packages/frontend/editor-ui/src/features/workflows/templates/components/SetupWorkflowCredentialsButton.vue":{"28":[65,74],"32":"b:cP8f4A84/v/n/wMg//////8PAAAA","36":"b:cP8f4A84/v/n/wMg//////8PAAAA","46":"b:cL8Z4A8w/v9h3wMg/9////sPAAAA","49":"b:cP8f4A84/v/n/wMg//////8PAAAA","55":[65,74,138,139],"59":"b:cP8f4A84/v/n/wMg//////8PAAAA","76":[65,74,138,139],"84":"b:MIgBoAEQ1gRjkAAgBEGgLSAFAAAA","94":[65],"99":[65,74,138],"103":[65,74,138],"111":"b:AKAEAAAAAAAiAAAgBF4AQNAAAAAA","115":"b:cP8f4A84/v/n/wMg//////8PAAAA"},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryButton.vue":{"12":"b:cP8f4A84/v/n/wMg//////8PAAAA","24":"b:QK4RgA0wACJjQAIgh03nB+MEAAAA","31":"b:cP8f4A84/v/n/wMg//////8PAAAA","32":"b:QL4dwA0wAGbnYAIgl83vV+8OAAAA","42":"b:cMUDQAYgAJviKQAgnv/3w9sOAAAA","49":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","52":"b:cP8f4A84/v/n/wMg//////8PAAAA","55":"b:cP8f4A84/v/n/wMg//////8PAAAA","62":"b:cP8f4A84/v/n/wMg/////n8PAAAA"},"packages/localhost-44601/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[49]},"packages/localhost-44601/assets/chunk-CC9Q-vWm.js":{"8":[49],"9":[49],"10":[49],"19":[49],"23":[49],"29":[49],"33":[49],"34":[49]},"packages/cli/src/abstract-server.ts":{"76":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","109":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","113":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","117":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","121":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","129":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","133":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","136":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","140":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","147":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","153":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","162":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","170":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","175":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","184":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","190":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","220":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","229":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","286":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","290":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","312":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","339":"b:KoECACQCAQIyAAACAlIAAIAAAIAA","348":"b:KoECACQCAQIyAAACAlIAAIAAAIAA"},"packages/cli/src/modules/external-secrets.ee/external-secrets-providers.ee.ts":{"13":[23,42,3,69,147,86,5,131,137],"23":[23,42,3,69,147,86,5,131,137],"27":[23,42,3,69,147,86,5,131,137],"31":[23,42,3,69,147,86,5,131,137],"35":[23,42,3,69,147,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/providers/aws-secrets-manager.ts":{"102":[23,42,3,69,147,5,131,137],"107":[23,42,3,69,147,5,131,137],"118":[23,42,3,69,147,5,131,137],"124":[23,42,3,69,147,5,131,137],"134":[23,42,3,69,147,5,131,137],"144":[23,42,3,69,147,5,131,137],"148":[23,42,3,69,147,5,131,137],"154":[23,42,3,69,147,5,131,137],"160":[23,42,3,69,147,5,131,137],"164":[23,42,3,69,147,5,131,137],"168":[23,42,3,69,147,5,131,137],"172":[23,42,3,69,147,5,131,137],"178":[23,42,3,69,147,5,131,137],"188":[23,42,3,69,147,5,131,137],"197":[23,42,3,69,147,5,131,137],"224":[23,42,3,69,147,5,131,137],"225":[23,42,3,69,147,5,131,137]},"packages/cli/src/modules/external-secrets.ee/providers/azure-key-vault/azure-key-vault.ts":{"66":[23,42,3,69,86,5,131,137],"71":[23,42,3,69,86,5,131,137],"77":[23,42,3,69,86,5,131,137],"80":[23,42,3,69,86,5,131,137],"81":[23,42,3,69,86,5,131,137],"89":[23,42,3,69,86,5,131,137],"100":[23,42,3,69,86,5,131,137],"104":[23,42,3,69,86,5,131,137],"112":[23,42,3,69,86,5,131,137],"143":[23,42,3,69,86,5,131,137],"147":[23,42,3,69,86,5,131,137],"151":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/providers/gcp-secrets-manager/gcp-secrets-manager.ts":{"40":[23,42,3,69,86,5,131,137],"45":[23,42,3,69,86,5,131,137],"49":[23,42,3,69,86,5,131,137],"52":[23,42,3,69,86,5,131,137],"62":[23,42,3,69,86,5,131,137],"73":[23,42,3,69,86,5,131,137],"77":[23,42,3,69,86,5,131,137],"84":[23,42,3,69,86,5,131,137],"94":[23,42,3,69,86,5,131,137],"139":[23,42,3,69,86,5,131,137],"147":[23,42,3,69,86,5,131,137],"151":[23,42,3,69,86,5,131,137],"155":[23,42,3,69,86,5,131,137],"159":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/providers/infisical.ts":{"154":[23,42,3,69,86,5,131,137],"159":[23,42,3,69,86,5,131,137],"165":[23,42,3,69,86,5,131,137],"175":[23,42,3,69,86,5,131,137],"193":[23,42,3,69,86,5,131,137],"204":[23,42,3,69,86,5,131,137],"208":[23,42,3,69,86,5,131,137],"237":[23,42,3,69,86,5,131,137],"257":[23,42,3,69,86,5,131,137],"268":[23,42,3,69,86,5,131,137],"270":[23,42,3,69,86,5,131,137],"273":[23,42,3,69,86,5,131,137],"274":[23,42,3,69,86,5,131,137],"283":[23,42,3,69,86,5,131,137],"286":[23,42,3,69,86,5,131,137],"293":[23,42,3,69,86,5,131,137],"299":[23,42,3,69,86,5,131,137],"313":[23,42,3,69,86,5,131,137],"325":[23,42,3,69,86,5,131,137],"337":[23,42,3,69,86,5,131,137],"341":[23,42,3,69,86,5,131,137],"345":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/providers/one-password.ts":{"50":[23,42,3,69,86,5,131,137],"55":[23,42,3,69,86,5,131,137],"73":[23,42,3,69,86,5,131,137],"74":[23,42,3,69,86,5,131,137],"91":[23,42,3,69,86,5,131,137],"102":[23,42,3,69,86,5,131,137],"106":[23,42,3,69,86,5,131,137],"141":[23,42,3,69,86,5,131,137],"145":[23,42,3,69,86,5,131,137],"149":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/providers/vault.ts":{"264":[23,42,3,69,86,5,131,137],"269":[23,42,3,69,86,5,131,137],"276":[23,42,3,69,86,5,131,137],"281":[23,42,3,69,86,5,131,137],"291":[23,42,3,69,86,5,131,137],"317":[23,42,3,69,86,5,131,137],"321":[23,42,3,69,86,5,131,137],"328":[23,42,3,69,86,5,131,137],"345":[23,42,3,69,86,5,131,137],"354":[23,42,3,69,86,5,131,137],"374":[23,42,3,69,86,5,131,137],"392":[23,42,3,69,86,5,131,137],"407":[23,42,3,69,86,5,131,137],"412":[23,42,3,69,86,5,131,137],"421":[23,42,3,69,86,5,131,137],"449":[23,42,3,69,86,5,131,137],"473":[23,42,3,69,86,5,131,137],"474":[23,42,3,69,86,5,131,137],"481":[23,42,3,69,86,5,131,137],"485":[23,42,3,69,86,5,131,137],"493":[23,42,3,69,86,5,131,137],"496":[23,42,3,69,86,5,131,137],"504":[23,42,3,69,86,5,131,137],"507":[23,42,3,69,86,5,131,137],"520":[23,42,3,69,86,5,131,137],"526":[23,42,3,69,86,5,131,137],"530":[23,42,3,69,86,5,131,137],"542":[23,42,3,69,86,5,131,137],"548":[23,42,3,69,86,5,131,137],"556":[23,42,3,69,86,5,131,137],"562":[23,42,3,69,86,5,131,137],"588":[23,42,3,69,86,5,131,137],"592":[23,42,3,69,86,5,131,137],"596":[23,42,3,69,86,5,131,137],"597":[23,42,3,69,86,5,131,137],"603":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.controller.ee.ts":{"32":[23,42,3,69,86,5,131,137],"41":[23,42,3,69,86,5,131,137],"81":[23,42,3,69,86,5,131,137],"104":[23,42,3,69,86,5,131,137],"122":[23,42,3,69,86,5,131,137],"135":[23,42,3,69,86,5,131,137],"138":[23,42,3,69,86,5,131,137],"145":[23,42,3,69,86,5,131,137],"157":[23,42,3,69,86,5,131,137],"172":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/secrets-providers-project.controller.ee.ts":{"32":[23,42,3,69,86,5,131,137],"42":[23,42,3,69,86,5,131,137],"56":[23,42,3,69,86,5,131,137],"89":[23,42,3,69,86,5,131,137],"96":[23,42,3,69,86,5,131,137],"101":[23,42,3,69,86,5,131,137],"125":[23,42,3,69,86,5,131,137],"160":[23,42,3,69,86,5,131,137],"181":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/secrets-providers-types.controller.ee.ts":{"16":[23,42,3,69,86,5,131,137],"25":[23,42,3,69,86,5,131,137],"41":[23,42,3,69,86,5,131,137],"44":[23,42,3,69,86,5,131,137],"51":[23,42,3,69,86,5,131,137]},"packages/cli/src/modules/external-secrets.ee/types.ts":{"29":[23,42,3,69,147,5,131,137],"52":[23,42,3,69,147,5,131,137],"75":[23,42,3,69,147,5,131,137],"92":[23,42,3,69,147,5,131,137],"93":[23,42,3,69,147,5,131,137],"99":[23,42,3,69,147,5,131,137]},"packages/cli/src/modules/instance-registry/checks/check.service.ts":{"46":"b:iABAAACQAQABAAAkcwAAADAAAAAA","57":"b:iABAAACQAQABAAAkcwAAADAAAAAA","63":"b:iABAAACQAQABAAAkcwAAADAAAAAA","75":"b:iABAAACQAQABAAAkcwAAADAAAAAA","83":"b:iABAAACQAQABAAAkcwAAADAAAAAA","88":"b:iABAAACQAQABAAAkcwAAADAAAAAA","90":"b:iABAAACQAQABAAAkcwAAADAAAAAA","96":"b:iABAAACQAQABAAAkcwAAADAAAAAA","111":"b:iABAAACQAQABAAAkcwAAADAAAAAA","115":"b:iABAAACQAQABAAAkcwAAADAAAAAA","133":"b:iABAAACQAQABAAAkcwAAADAAAAAA","148":"b:iABAAACQAQABAAAkcwAAADAAAAAA","157":"b:iABAAACQAQABAAAkcwAAADAAAAAA","193":"b:iABAAACQAQABAAAkcwAAADAAAAAA","214":"b:iABAAACQAQABAAAkcwAAADAAAAAA","228":"b:iABAAACQAQABAAAkcwAAADAAAAAA","239":"b:iABAAACQAQABAAAkcwAAADAAAAAA","245":"b:iABAAACQAQABAAAkcwAAADAAAAAA","254":"b:iABAAACQAQABAAAkcwAAADAAAAAA","277":"b:iABAAACQAQABAAAkcwAAADAAAAAA","301":"b:iABAAACQAQABAAAkcwAAADAAAAAA"},"packages/cli/src/modules/instance-registry/instance-registry.service.ts":{"29":"b:iptipLewEYgxBHAkc1AAALgEEBAA","37":"b:iptipLewEYgxBHAkc1AAALgEEBAA","52":"b:iptipLewEYgxBHAkc1AAALgEEBAA","72":"b:iptipLewEYgxBHAkc1AAALgEEBAA","76":"b:iptipLewEYgxBHAkc1AAALgEEBAA","80":"b:iptipLewEYgxBHAkc1AAALgEEBAA","84":"b:iptipLewEYgxBHAkc1AAALgEEBAA","88":"b:iptipLewEYgxBHAkc1AAALgEEBAA","92":"b:iptipLewEYgxBHAkc1AAALgEEBAA","96":"b:iptipLewEYgxBHAkc1AAALgEEBAA","109":"b:iptipLewEYgxBHAkc1AAALgEEBAA","113":"b:iptipLewEYgxBHAkc1AAALgEEBAA","114":"b:iptipLewEYgxBHAkc1AAALgEEBAA","118":"b:iptipLewEYgxBHAkc1AAALgEEBAA","122":"b:iptipLewEYgxBHAkc1AAALgEEBAA","123":"b:iptipLewEYgxBHAkc1AAALgEEBAA","133":"b:iptipLewEYgxBHAkc1AAALgEEBAA"},"packages/cli/src/modules/instance-registry/stale-member-cleanup.service.ts":{"17":"b:iABAAACQAQABAAAkcwAAADAAAAAA","25":"b:iABAAACQAQABAAAkcwAAADAAAAAA","30":"b:iABAAACQAQABAAAkcwAAADAAAAAA","34":"b:iABAAACQAQABAAAkcwAAADAAAAAA","42":"b:iABAAACQAQABAAAkcwAAADAAAAAA","47":"b:iABAAACQAQABAAAkcwAAADAAAAAA","59":"b:iABAAACQAQABAAAkcwAAADAAAAAA"},"packages/cli/src/modules/instance-registry/storage/memory-storage.ts":{"9":"b:iptipLewEYgxBHAkc1AAALgEEBAA","16":"b:iptipLewEYgxBHAkc1AAALgEEBAA","20":"b:iptipLewEYgxBHAkc1AAALgEEBAA","24":"b:iptipLewEYgxBHAkc1AAALgEEBAA","30":"b:iptipLewEYgxBHAkc1AAALgEEBAA","34":"b:iptipLewEYgxBHAkc1AAALgEEBAA","41":"b:iptipLewEYgxBHAkc1AAALgEEBAA","45":"b:iptipLewEYgxBHAkc1AAALgEEBAA","49":"b:iptipLewEYgxBHAkc1AAALgEEBAA","53":"b:iptipLewEYgxBHAkc1AAALgEEBAA"},"packages/cli/src/modules/provisioning.ee/provisioning.controller.ee.ts":{"13":[27,42,48,3,69,86,7,5],"21":[27,42,48,3,69,86,7,5],"31":[27,42,48,3,69,86,7,5]},"packages/cli/src/modules/workflow-index/workflow-dependency-query.service.ts":{"37":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","48":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","73":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","128":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","152":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","205":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","220":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","259":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","273":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","281":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","289":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","302":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA","306":"b:eACAFACwAQA2AAAQAAIAQBgCAAAA"},"packages/cli/src/modules/workflow-index/workflow-dependency.controller.ts":{"9":"b:aACAFACwAAA0AAAAAAIAABgAAAAA","12":"b:aACAFACwAAA0AAAAAAIAABgAAAAA","25":"b:aACAFACwAAA0AAAAAAIAABgAAAAA"},"packages/cli/src/requests.ts":{"54":"b:aAiAXXL0AAA2AFQEAAIAABgAQCAA","63":"b:aAiAXXL0AAA2AFQEAAIAABgAQCAA","66":"b:aAiAXXL0AAA2AFQEAAIAABgAQCAA"},"packages/core/src/execution-engine/ssh-clients-manager.ts":{"10":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","16":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","17":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","61":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","66":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","69":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","74":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","94":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","119":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","121":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","143":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","144":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","148":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","152":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","156":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","166":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","177":"b:KPMCYH4mgJXECABIAHCCGZDQECcA","185":"b:KPMCYH4mgJXECABIAHCCGZDQECcA"},"packages/@n8n/design-system/src/components/N8nUserInfo/UserInfo.vue":{"22":[23,42,48,3,69,86,7,5,131,137],"29":[23,42,48,3,69,86,7,5,131,137],"35":[23,42,48,3,69,86,7,5,131,137],"50":[23,42,48,3,69,86,7,5,131,137],"58":[23,42,48,3,69,86,7,5,131,137]},"packages/@n8n/design-system/src/components/N8nUserSelect/UserSelect.vue":{"22":[23,42,48,3,69,86,5,131,137],"40":[23,42,48,3,69,86,5,131,137],"43":[42,48,3,69,86,5],"63":[23,42,48,3,69,86,5,131,137],"64":[42,48,3,69,86,5],"80":[42,3],"88":[42],"89":[42,3],"91":[42,48,3,69,86,5],"93":[23,42,48,3,69,86,5,131,137],"112":[23,42,48,3,69,86,5,131,137],"114":[23,42,48,3,69,86,5,131,137],"117":[42,48,3,69,86,5],"124":[42,48,3,69,86,5]},"packages/frontend/editor-ui/src/app/api/workflow-dependencies.ts":{"9":"b:KACAAACwAQA+AAAAAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/components/WorkflowCard.vue":{"55":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","133":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","136":"b:CACAAACAAQAwAAAAAAIAQBgKAAAA","137":[137],"138":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","140":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","143":[69,131],"146":[69,131],"150":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","154":"b:CACAAACAAQAwAAAAAAIAQBgKAAAA","165":"b:CACAAACAAQAwAAAAAAIAQBgKAAAA","185":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","285":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","306":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","310":"b:CACAAACAAQAwAAAAAAIAQBgKAAAA","316":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","320":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","324":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","326":[69,105,131,137],"352":[65,67,68,69,137],"416":[137],"426":[137],"461":[137],"465":[137],"503":[137],"552":[137],"592":[137],"594":[137],"596":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","607":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","619":[131],"656":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","674":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","691":"b:CACAAACAAQAwAAAAAAIAQBgKAAAA","717":[137]},"packages/frontend/editor-ui/src/app/composables/useAutoScrollOnDrag.ts":{"13":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","20":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","99":[65],"103":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","108":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","117":"b:OACAEACAAQA+AAAEAAIAQBgKAAAA","125":"b:OACAEACAAQA0AAAEAAIAQBgCAAAA"},"packages/frontend/editor-ui/src/app/composables/useDependencies.ts":{"14":"b:uAiA3QDwAQA+AFAUAAIAQBgKAAAA","18":"b:KAiAgADwAQA+AEAQAAIAQBgKAAAA","59":[45,69,5,126,137,139],"67":"b:KACAgADwAQA+AEAQAAIAQBgKAAAA","70":[45,69,5,126,137,139],"73":"b:KACAgADwAQA+AEAQAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/composables/useLatestFetch.ts":{"1":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","4":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","6":"b:OACACQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/app/utils/formatters/textFormatter.ts":{"8":[3]},"packages/frontend/editor-ui/src/app/views/WorkflowsView.vue":{"226":[65,66,67],"271":[65,66,67],"273":[65,66,67],"278":[65,66,67],"280":[65,66,67],"285":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","289":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","293":"b:OACAAACAAQA+AAAAAAIAQBgKAAAA","295":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","299":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","303":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","310":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","314":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","318":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","324":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","328":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","332":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","336":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","341":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","348":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","354":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","360":[65,66,67],"366":[65,66,67],"371":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","377":"b:OACAAACAAQA+AAAAAAIAQBgKAAAA","379":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","383":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","396":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","421":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","444":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","456":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","484":"b:MACAAACAAQA+AAAAAAAAAAgCAAAA","493":[65,66,67],"497":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","498":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","536":[137],"551":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","565":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","576":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","585":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","591":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","595":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","608":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","612":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","617":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","625":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","638":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","642":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","644":[65,66,67],"663":[68,69,137],"673":[67],"706":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","716":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","720":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","728":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","742":"b:OACAEACAAQA0AAAEAAIAQBgCAAAA","757":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","780":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","794":[137],"828":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","829":[65,66,67],"847":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","848":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","881":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","902":[47,65,66,67,68,69,131,137],"910":[66,137],"921":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","951":[47,65,66,67,68,69,131,137],"991":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","996":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","1025":[137],"1067":[69],"1080":[69],"1203":[137],"1204":[137],"1213":[65,67],"1214":[65,67],"1220":[67],"1244":[65,66,67],"1267":[65],"1289":[65],"1297":[65],"1316":[65],"1348":[66,67],"1579":[66,67],"1640":[66,67],"1678":[66],"1724":[67],"1759":[66,67],"1778":[67],"1794":[65,67],"1921":[67,68,69],"1948":[68,69],"1995":[65,67],"2008":[65],"2066":[67],"2141":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","2178":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","2245":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","2281":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","2291":[65,66,67],"2294":[65,66,67],"2295":[65,66,67],"2335":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","2338":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","2339":"b:CACAAACAAQA+AAAAAAIAQBgKAAAA","2377":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","2390":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","2393":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","2402":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","2411":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","2420":[137],"2433":[137],"2448":[137],"2464":[137],"2468":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","2476":"b:CACAAACAAQA+AAAAAAIAQAgKAAAA","2478":"b:CACAAACAAQA+AAAAAAIAQAgKAAAA"},"packages/frontend/editor-ui/src/experiments/credentialsAppSelection/stores/credentialsAppSelection.store.ts":{"14":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","23":[24,27,69,84,90,131],"25":[24,27,69,84,90,131],"29":[24,27,69,84,90,131],"35":[24,27,69,84,90,131]},"packages/frontend/editor-ui/src/experiments/personalizedTemplates/stores/personalizedTemplates.store.ts":{"66":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","91":"b:OACACQCAAQA+ABAEAAIAQBgKAAAA","164":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/experiments/personalizedTemplatesV3/stores/personalizedTemplatesV3.store.ts":{"12":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","26":"b:OACAXQCAAQA8ABAEAAIAQBgKAAAA","35":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","129":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/experiments/templateRecoV2/stores/templateRecoV2.store.ts":{"14":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","21":"b:OACAXQCAAQA8ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/ai/mcpAccess/mcp.store.ts":{"33":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectCustomRolesUpgradeModal.vue":{"8":[42,3],"15":[42,3]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectDeleteDialog.vue":{"62":[23,42,48,3,69,86,5,131,137]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectExternalSecrets.vue":{"27":[23,42,48,3,69,86,5,131,137],"53":[23,42,48,3,69,86,5,131,137],"58":[23,42,48,3,69,86,5,131,137],"62":[86],"66":[23,42,48,3,69,86,5,131,137],"70":[23,42,48,3,69,86,5,131,137],"77":[23,42,48,3,69,86,5,131,137],"90":[23,42,48,3,69,86,5,131,137],"117":[23,42,48,3,69,86,5,131,137],"121":[23,42,48,3,69,86,5,131,137],"132":[23,42,48,3,69,86,5,131,137],"149":[86],"150":[86],"162":[86],"172":[86],"180":[23,42,48,3,69,86,5,131,137],"183":[86],"184":[86],"188":[23,42,48,3,69,86,5,131,137],"264":[23,42,48,3,69,86,5,131,137],"265":[23,42,48,3,69,86,5,131,137],"275":[23,42,48,3,69,86,5,131,137],"291":[23,42,48,3,69,86,5,131,137],"303":[23,42,48,3,69,86,5,131,137],"305":[23,42,48,3,69,86,5,131,137],"308":[23,42,48,3,69,86,5,131,137],"311":[23,42,48,3,69,86,5,131,137],"320":[23,42,48,3,69,86,5,131,137],"328":[23,42,48,3,69,86,5,131,137],"345":[86],"356":[86],"372":[86],"393":[86],"397":[86]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMembersActionsCell.vue":{"6":[23,42,48,3,69,86,5,131,137],"17":[23,42,48,3,69,86,5,131,137]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMembersRoleCell.vue":{"33":[42,3],"56":[42],"60":[42],"72":[42,3],"73":[42,3],"75":[42,3],"78":[42,3],"79":[42,3],"82":[42,3],"88":[42,3],"95":[42,3],"104":[42,3],"138":[42],"140":[42],"172":[42,3],"174":[42,3],"192":[42,3],"197":[42,3],"205":[42,3],"219":[42,3],"223":[42,3],"229":[42,3],"233":[42,3],"238":[42,3],"248":[42,3],"259":[42,3],"270":[42,3],"278":[42,3]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMembersTable.vue":{"11":[23,42,48,3,69,86,5,131,137],"37":[23,42,48,3,69,86,5,131,137],"44":[23,42,48,3,69,86,5,131,137],"58":[23,42,48,3,69,86,5,131,137],"64":[23,42,48,3,69,86,5,131,137],"67":[42],"71":[23,42,48,3,69,86,5,131,137],"73":[42,3],"74":[23,42,48,3,69,86,5,131,137],"88":[42,3],"90":[23,42,48,3,69,86,5,131,137],"95":[23,42,48,3,69,86,5,131,137],"104":[23,42,48,3,69,86,5,131,137],"107":[23,42,48,3,69,86,5,131,137]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectRoleContactAdminModal.vue":{"8":[42,3],"31":[42,3]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectRoleUpgradeDialog.vue":{"14":[23,42,48,3,69,86,5,131,137],"22":[23,42,48,3,69,86,5,131,137]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/RoleHoverPopover.vue":{"14":[42,3],"51":[42,3]},"packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectSettings.vue":{"63":[23,42,48,3,69,86,5,131,137],"78":[23,42,48,3,69,86,5,131,137],"118":[42,48,3,69,86,5],"120":[23,42,48,3,69,86,5,131,137],"121":[42,48,3,69,86,5],"122":[42,48,3,69,86,5],"128":[42,3],"129":[42,3],"132":[23,42,48,3,69,86,5,131,137],"140":[42,3],"146":[42,3],"166":[42,3],"189":[42],"194":[42],"225":[23,48,3,69,5,131,137],"274":[23,42,48,3,69,86,5,131,137],"286":[3],"291":[23,48,3,69,5,131,137],"314":[23,48,3,69,5,131,137],"315":[23,48,3,69,5,131,137],"322":[23,48,3,69,5,131,137],"353":[23,48,3,69,5,131,137],"372":[23,48,3,69,5,131,137],"419":[23,42,48,3,69,86,5,131,137],"426":[69],"442":[23,42,48,3,69,86,5,131,137],"444":[23,42,48,3,69,86,5,131,137],"461":[23,42,48,3,69,86,5,131,137],"462":[23,42,48,3,69,86,5,131,137],"478":[23,42,48,3,69,86,5,131,137],"483":[23,42,48,3,69,86,5,131,137],"497":[23,42,48,3,69,86,5,131,137],"515":[42,3],"519":[42,48,3,69,86,5],"559":[23,42,48,3,69,86,5,131,137],"564":[23,42,48,3,69,86,5,131,137],"568":[23,42,48,3,69,86,5,131,137],"572":[23,42,48,3,69,86,5,131,137],"588":[23,42,48,3,69,86,5,131,137],"598":[23,42,48,3,69,86,5,131,137],"605":[23,42,48,3,69,86,5,131,137],"632":[23,42,48,3,69,86,5,131,137],"652":[23,42,48,3,69,86,5,131,137],"681":[23,42,48,3,69,86,5,131,137],"755":[23,42,48,3,69,86,5,131,137]},"packages/frontend/editor-ui/src/features/core/folders/composables/useFolders.ts":{"12":[65],"16":[65],"20":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","25":[65,66,67],"29":[66,67],"63":[65],"80":[65],"86":[65,66,67],"101":[48,65,66,67,68,69,131,137],"109":[65],"130":[65,66,67]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/composables/useSecretsProvidersList.ee.ts":{"21":[86],"22":[86],"24":[23,42,48,3,69,86,5,131,137],"35":[23,42,48,3,69,86,5,131,137],"64":[86],"68":[86],"72":[23,42,48,3,69,86,5,131,137],"77":[86]},"packages/frontend/editor-ui/src/features/project-roles/projectRoleScopes.ts":{"67":[23,42,48,3,69,86,5,131,137],"69":[23,42,48,3,69,86,5,131,137]},"packages/frontend/editor-ui/src/features/settings/sso/provisioning/composables/userRoleProvisioning.store.ts":{"13":[23,42,48,3,69,86,7,5,131,137],"18":[42,48,3,69,86,7,5]},"packages/frontend/editor-ui/src/features/workflows/composables/useWorkflowsEmptyState.ts":{"17":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","26":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","27":"b:iACAXQCAAQAwABAEAAIAQBgKAAAA","28":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","30":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","36":[24,27,69,84,90,131],"40":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","48":[24,27,69,84,90,131],"56":[24,27,69,84,90,131],"74":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA","94":"b:MACACQCAAQA8ABAEAAAAAAgCAAAA"},"packages/frontend/editor-ui/src/features/workflows/templates/recommendations/recommendedTemplates.store.ts":{"17":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA","25":"b:uACAXQCAAQA+ABAEAAIAQBgKAAAA"},"packages/localhost-43531/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[33,3,78,92,95,98,126,139]},"packages/localhost-43531/assets/chunk-CC9Q-vWm.js":{"8":[33,3,78,92,95,98,126,139],"9":[33,3,78,92,95,98,126,139],"10":[33,3,78,92,95,98,126,139],"19":[33,3,78,92,95,98,126,139],"23":[33,3,78,92,95,98,126,139],"29":[33,3,78,92,95,98,126,139],"33":[33,3,78,92,95,98,126,139],"34":[33,3,78,92,95,98,126,139]},"packages/@n8n/db/src/repositories/workflow-tag-mapping.repository.ts":{"8":"b:AJoQQA0wACbgQAAAAkAAEYAGAAAA","12":"b:AJoQQA0wACbgQAAAAkAAEYAGAAAA","13":"b:AJoQQA0wACbgQAAAAkAAEYAGAAAA","16":"b:AJoQQA0wACbgQAAAAkAAEYAGAAAA"},"packages/cli/src/modules/redaction/redaction-enforcement.service.ts":{"20":"b:AJoQQA0wAAbgQAAAAkAAEYCEAgEA","24":"b:AJoQQA0wAAbgQAAAAkAAEYCEAgEA","50":"b:AJoQQA0wAAbgQAAAAkAAEYCEAgEA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-dirty.svg":{"11":"b:AAAAAAAAAACBQAAAgIAAFQEAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-success.svg":{"11":"b:ANcbAA4gAP/BaAKAh/x/l8EAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/toolbox.svg":{"10":"b:MIoZoAgwuAYh0AAgxyVvfSIAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/edit-fields.svg":{"11":"b:AMZiAAMAAJgh6wLAW+r65wkBAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/loop-over-items.svg":{"11":[52,70,78,79,102,110,113,136]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/no-operation.svg":{"11":"b:MAAAgAAQEAhhyAAAQAgHByAJAAAA"},"packages/@n8n/design-system/src/components/N8nNotice/Notice.vue":{"16":"b:MJ5b4A0wFEYh1VEgx82/zSMGAAAA","30":"b:MJ5b4A0wFEYh1VEgx82/zSMGAAAA","34":"b:MJ5b4A0wFEYh0UEgx82/zSAGAAAA","50":[120],"66":"b:MJ5b4A0wFEYh1VEgx82/zSMGAAAA","75":"b:MJ5b4A0wFEYh1VEgx82/zCMGAAAA"},"packages/@n8n/design-system/src/components/N8nSuggestedActions/SuggestedActions.vue":{"39":"b:cP8fwA8QAP/naQIgn///1/8OAAAA","50":"b:cP8fwA8QAP/naQIgn///1/8OAAAA","52":[93],"58":[93],"60":[93],"64":"b:cP8fwA8QAP/naQIgn///1/8OAAAA","74":[93,132],"76":"b:cP8fwA8QAP/naQIgn///1/8OAAAA","84":[93,132],"86":[93,132],"89":[93,132],"100":[93],"108":[93,132],"112":[93,132],"121":[93,132],"131":[93],"132":[93,132],"142":[93],"143":[93,132]},"packages/@n8n/design-system/src/types/binary.ts":{"24":"b:ACZKAAQAAIzBSAIAiu1/twEAAAAA"},"packages/frontend/editor-ui/src/app/components/DropArea/DropArea.vue":{"4":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","8":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","13":"b:AIIAAAEAAIAhYQIAS+hqZAgAAAAA"},"packages/frontend/editor-ui/src/app/components/WorkflowProductionChecklist.vue":{"32":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","49":[33,63,65,93,132,133,137],"50":[33,63,65,93,132,133,137],"51":[33,63,65,93,132,133,137],"57":[65,93],"61":[33,63,65,93,132,133,137],"66":[33,63,65,93,132,133,137],"67":[33,63,65,93,132,133,137],"72":[33,63,65,93,132,133,137],"73":[33,63,65,93,132,133,137],"76":[33,63,65,93,132,133,137],"81":[65,93,132],"85":[63,65,93,132,133,137],"87":"b:cP8fwA8QAP/naQIgn///1/8OAAAA","91":"b:cP8fwA8wAL/naQIgj/rPV98OAAAA","92":[45,65,69,131],"94":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","98":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","102":"b:cP8fwA8wAL/naQIgj/rPV98OAAAA","104":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","169":"b:cP8fwA8wAP/naQIgn///1n8OAAAA","215":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","224":[65,93],"249":[65,93],"259":[65,93],"275":[65,93],"286":[65,93],"294":[65,93,132],"298":[65,93],"302":[65,93,132],"312":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","314":[63,65,93,132,133,137],"321":[65,93,132],"328":[65],"340":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","343":"b:cP8fwA8wAP/naQIgn///1/8OAAAA"},"packages/frontend/editor-ui/src/app/composables/useLoadingService.ts":{"14":"b:AAAAQAAAAAAkBBAAFmAAQMkPAAAA","26":[74,84,138,139],"32":[74,84,110,134,135,136,138,139],"39":"b:QL4dwA0wAGblYAIgl83vV+8OAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/executionFinished.ts":{"62":"b:ANcLAA4gAP/DaAKAh/x/l8EAAAAA","190":"b:ANcLAA4gAP/DaAIAh/x/l8EAAAAA","196":"b:ANAKAA4AALtCYAIABvxwh8EAAAAA","217":[65],"231":"b:ANcLAA4gAP/DaAKAh/x/l8EAAAAA","261":"b:ANcLAA4gAP/DaAIAh/x/l8EAAAAA","274":"b:ANcLAA4gAP/DaAIAh/x/l8EAAAAA","300":[65],"318":[65],"335":"b:AIYBAAAgAAACAAAAAEwgAMAAAAAA","418":"b:ANEKAA4AAP/DaAKAh/x/l8EAAAAA","439":"b:ANEKAA4AAP/DaAKAh/x/l8EAAAAA","510":"b:ANcLAA4gAP/DaAIAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/executionStarted.ts":{"13":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeExecuteAfter.ts":{"16":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA","49":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA","50":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeExecuteAfterData.ts":{"11":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeExecuteBefore.ts":{"9":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/trackNodeExecution.ts":{"11":"b:ANcbAA4gAP/DaAKAh/x/l8EAAAAA"},"packages/frontend/editor-ui/src/app/composables/useRunWorkflow.ts":{"92":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","106":"b:AAYAAAAAAACBAAAAAMhAEgAAAAAA","110":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","125":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","157":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","279":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","282":"b:ANcbAA4gAP/AaAKAh/x/l8EIAAAA","314":[14,15,17,77,95,110],"325":[9,62,64,96,107,122],"349":[9,62,64,96,107,122],"392":[64,71,111,124],"445":[20,57],"485":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","536":[110],"583":[110],"611":"b:AJAYAA4gALtBQAIABvxwh8EIAAAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowsCache.ts":{"27":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","30":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","35":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","39":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","46":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","62":[63,65,93,132,133,137],"85":[63,65,93,132,133,137],"96":[65,93],"104":[65],"113":[65],"120":[65,93],"123":[65,93]},"packages/frontend/editor-ui/src/app/plugins/cache.ts":{"3":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","8":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","9":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","10":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","13":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","25":[65],"33":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","34":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","36":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","39":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","40":[65],"44":[63,65,93,132,133,137],"49":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","53":[65],"58":[65],"63":[65],"67":[65],"68":[65],"71":[65],"82":[65],"89":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","99":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","100":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","104":[65],"111":[63,65,93,132,133,137],"112":[63,65,93,132,133,137],"117":[65],"118":[65],"123":[65],"124":[65]},"packages/frontend/editor-ui/src/app/utils/mappingUtils.ts":{"11":"b:AMZaAAQAAM7BaAIAiu1/twEAgAAA","15":"b:AMZaAAQAAM7BaAIAiu1/twEAgAAA","16":"b:AMZaAAQAAM7BaAIAiu1/twEAgAAA","29":"b:AMBaAAQAAM7BKAIAis1/lwEAgAAA","33":"b:AMBaAAQAAM6BKAIAgM1/lwEAgAAA","53":"b:AMBaAAQAAM7BKAIAiu1/twEAgAAA","70":[151],"82":[151,113],"96":[151,113]},"packages/frontend/editor-ui/src/app/utils/pairedItemUtils.ts":{"19":"b:ANdbAA4gAP/BaAIAh/1/l8EAgAAA","23":[151,113,121],"48":[151,113,121],"58":[151,113,121],"61":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","89":"b:ANECAAwAAD3AaAIAhvx/l8EAgAAA","95":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","124":"b:ANEKAAwAAL/AaAIAhvx/l8EAgAAA","138":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","143":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","152":[151,60],"168":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","171":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","172":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","173":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","188":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","197":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","209":"b:ANcbAA4gAP/BaAKAh/x/l8EIgAAA","229":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA","230":"b:ANcLAA4gAP/BaAIAh/x/l8EAgAAA"},"packages/frontend/editor-ui/src/app/utils/workflowUtils.ts":{"11":"b:cMdzQA4gALvjaQCAnvrzw9kOgAAA","15":[151],"26":[151,94],"36":[151,94],"49":"b:YNdzQA4gALvh6wOA3vrzx9kPgAAA","60":"b:ANdzQA4gALvg6wOA3vrzx8kNgAAA","80":"b:cNdzQA4gALvj6wOA3vrzx9kPgAAA","100":"b:ANdzQA4gALvg6wOA3vrzx8kNgAAA","103":"b:ANdzQA4gALvg6wOA3vrzx8kNgAAA","138":[13,151],"145":[13,151],"146":[13,151],"158":[13,151],"167":[13,151]},"packages/frontend/editor-ui/src/features/collaboration/collaboration/components/CollaborationPane.vue":{"11":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","15":"b:AAAAQAAAAAAmAAAAFiAAQAkCAAAA","24":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","26":[65,131],"27":[65,131],"29":[65,131],"35":[65,131],"37":"b:cP8fwA8wAP/naQIgn///1/8OAAAA","41":[65,69,105,126,132],"44":"b:cP8fwA8wAP/naQIgn///1/8OAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/AssignmentCollection/AssignmentCollection.vue":{"36":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","50":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","53":"b:AAIAAAAAAIAAIQIACMhCAQAAAAAA","69":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","74":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","75":[113],"76":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","77":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","92":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","93":[118],"101":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","102":[32,64,111,113,115,120,122],"104":[32,64,111,113,115,120,122],"114":[32,64,111,115,122],"135":[32,64,99,113,115,120],"143":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","153":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","169":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA","203":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","212":[32,64,99,113,115,120],"226":"b:AIIAAAEAAIAhYQIAS+hqZQgAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataSearch.vue":{"44":"b:AMZaAAQAAM7BaAIAis1/lwEAAAAA","50":"b:AMZaAAQAAM7BaAIAis1/lwEAAAAA","68":"b:AMZaAAQAAM7BaAIAis1/lwEAAAAA","72":"b:AAAAAAAAAACAQAAAAABfBQAAAAAA","99":[116,118],"104":[116,118],"109":[116,118],"115":[116,118],"121":[116,118],"134":"b:AAAAAAAAAACAQAAAAABfBQAAAAAA","152":"b:AMZaAAQAAM7BaAIAis1/lwEAAAAA","153":[116,118]},"packages/frontend/editor-ui/src/features/ndv/runData/components/TextWithHighlights.vue":{"11":"b:AMZaAAQAAM7BaAIAiu1/twEAAAAA","20":[116,118],"29":"b:AMZaAAQAAM7BaAIAiu1/twEAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/VirtualSchema.vue":{"107":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","108":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","114":[113],"117":[113],"123":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","134":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","143":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","159":[110,117,121],"165":"b:AAYIAAQAAIzASAIAgux/lwEAAAAA","176":"b:AAYIAAQAAIzASAIAgux/lwEAAAAA","205":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","209":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","231":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","254":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","286":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","298":"b:AAYIAAQAAIzASAIAguxktgAAAAAA","320":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","366":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","384":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","388":[17,110,118],"403":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","405":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","431":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","439":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","443":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","444":[118],"456":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","461":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","463":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","466":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","473":[113],"482":[113],"484":[113],"486":[113],"523":[118],"524":[118],"543":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","564":[113],"574":[118],"579":[111,125],"602":[107],"628":[107,109,114]},"packages/frontend/editor-ui/src/features/ndv/runData/components/VirtualSchemaHeader.vue":{"22":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","24":"b:AAYIAAQAAIzASAIAiu1/twEAAAAA","70":[109],"72":[109],"77":[111,125],"79":[111,125],"82":[111,125],"84":[111,125]},"packages/frontend/editor-ui/src/features/ndv/runData/components/VirtualSchemaItem.vue":{"36":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","72":"b:AAYKAAQAAIzASAIAiu1/twEAAAAA","109":"b:AAYIAAQAAIzASAIAgu1vpwEAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/schemaPreview.api.ts":{"13":"b:AAAAAAAAAIBAwQAAAKFEpAAAAAAA","17":[79,111,125],"27":"b:AAAAAAAAAIBAwQAAAKFEpAAAAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/ViewItem.vue":{"13":"b:MIoZoAgwuAYj0AAgxyVvfSIAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasRunWorkflowButton.vue":{"40":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","44":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","45":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","49":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","60":[13,63,102,107,111,122],"62":[13,63,102,107,111,122],"63":[13,63,102,107,111,122],"69":[13,63,102,107,111,122],"76":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","97":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","108":"b:AJAYAA4gALtBQAIABvxwh8EAAAAA","109":"b:ABAYAA4gALtBQAIABvxwh8EAAAAA","111":"b:cL8a4A8w/P/hzwMg3/////sPAAAA","118":[13,63,102,107,111,122],"136":[13,63,102,107,111,122]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasStopCurrentExecutionButton.vue":{"6":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","13":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA","18":"b:ANcbAA4gAP/BaAKAh/x/l8EIAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasEdgeToolbar.vue":{"12":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA","27":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA","31":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA","41":[151,78,79,96],"45":[151,96,102],"47":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA","55":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA","72":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasEdgeTooltip.vue":{"9":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA","20":"b:AAAAAAAAAAAgwAEAQUAAQAEAgAAA"},"packages/@n8n/db/src/entities/credentials-entity.ts":{"64":[149,44,92]},"packages/@n8n/db/src/repositories/shared-credentials.repository.ts":{"12":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","16":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","26":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","36":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","41":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","52":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","61":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","73":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","76":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","85":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","94":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","99":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","112":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","128":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","156":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","165":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","166":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","181":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","182":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA","192":"b:sKgAwHBwAJMwEEAQEkAAAAAEJIAA"},"packages/cli/src/credential-types.ts":{"8":"b:MKAA4HBwAJMwAEAQAEAAAAAEJIAA","10":"b:MKAA4HBwAJMwAEAQAEAAAAAEJIAA","15":"b:MKAA4HBwAJMwAEAQAEAAAAAEJIAA","19":"b:MKAA4HBwAJMwAEAQAEAAAAAEJIAA","26":"b:MKAA4HBwAJMwAEAQAEAAAAAEJIAA"},"packages/cli/src/credentials/credentials.service.ee.ts":{"24":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","36":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","70":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","72":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","76":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","87":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","91":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","159":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","172":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA","213":"b:MCAAAEA0AAAQAAAQAAAAAAAEIAAA"},"packages/cli/src/credentials/external-secrets.utils.ts":{"11":"b:MKAAwHBwAJMwEEAQAEAAAAAEJIAA","19":"b:MKAAwHBwAJMwEEAQAEAAAAAEJIAA","28":"b:MKAAwHBwAJMwEEAQAEAAAAAEJIAA","61":"b:MKAAwHBwAJMwEEAQAEAAAAAEJIAA"},"packages/cli/src/middlewares/list-query/dtos/credentials.filter.dto.ts":{"22":[11,31,44,45,46,68,69,86,92,5]},"packages/core/src/credentials.ts":{"11":"b:MKAAwHBwAJMwEEARAEAAAAAEJIAA","19":"b:MKAAwHBwAJMwEEARAEAAAAAEJIAA","27":"b:MKAAwHBwAJMwEEARAEAAAAAEJIAA","37":"b:MKAAwHBwAJMwEEARAEAAAAAEJIAA","48":"b:MKAAwHBwAJMwEEARAEAAAAAEJIAA","72":"b:MKAAwHBwAJMwEEARAEAAAAAEJIAA"},"packages/workflow/src/interfaces.ts":{"127":"b:MKAAwHBwAJMwEEAQAEAAAAAEJIAA"},"packages/@n8n/db/src/entities/webhook-entity.ts":{"33":"b:AAAYAAIEAIAAAAAAAAAAAKDiEK4B","39":"b:AAAYAAIEAIAAAAAAAAAAAKDiEK4B","43":"b:AAAYAAIEAIAAAAAAAAAAAKDiEK4B","44":"b:AAAYAAIEAIAAAAAAAAAAAKDiEK4B","50":"b:AAAYAAIEAIAAAAAAAAAAAKDiEK4B","51":"b:AAAYAAIEAIAAAAAAAAAAAKDiEK4B","54":"b:AAAYAAIEAIAAAAAAAAAAAKDiEK4B"},"packages/@n8n/db/src/repositories/execution.repository.ts":{"59":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","94":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","137":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","141":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","153":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","185":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","205":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","210":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","217":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","224":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","230":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","236":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","242":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","249":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","280":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","343":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","349":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","369":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","372":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","401":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","423":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","450":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","490":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","501":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","502":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","509":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","515":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","518":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","564":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","573":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","591":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","598":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","602":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","626":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","641":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","659":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","673":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","691":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","726":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","737":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","743":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","756":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","790":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","831":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","847":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","851":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","860":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","896":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","900":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","920":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","940":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1059":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1061":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1069":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1101":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1109":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1112":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1115":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1121":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1129":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1136":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1144":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A","1161":"b:BNMKAH4gAJXACAAABFwCEcDwEC8A"},"packages/@n8n/db/src/repositories/workflow-publish-history.repository.ts":{"8":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","12":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","26":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","37":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B"},"packages/@n8n/db/src/repositories/workflow-statistics.repository.ts":{"22":"b:ANMaAA4kAJXACAAAAFACEYDwEK8B","29":"b:ANMaAA4kAJXACAAAAFACEYDwEK8B","62":"b:ANMaAA4kAJXACAAAAFACEYDwEK8B","120":"b:ANMaAA4kAJXACAAAAFACEYDwEK8B"},"packages/@n8n/decorators/src/execution-lifecycle/lifecycle-metadata.ts":{"82":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","85":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","89":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/@n8n/syslog-client/src/client.ts":{"78":[148],"129":[148],"147":[148],"148":[148],"162":[148],"185":[148],"197":[148],"205":[148],"214":[148],"233":[148],"253":[148],"279":[148],"293":[148],"310":[148],"322":[148],"337":[148],"342":[148],"350":[148],"365":[148],"377":[148],"391":[148],"420":[148],"438":[148],"453":[148],"468":[148],"475":[148],"483":[148],"501":[148]},"packages/@n8n/syslog-client/src/factory.ts":{"25":[148]},"packages/@n8n/syslog-client/src/index.ts":{"13":[148]},"packages/@n8n/syslog-client/src/schemas.ts":{"9":[148],"10":[148],"11":[148]},"packages/@n8n/syslog-client/src/utils.ts":{"7":[148],"15":[148],"37":[148],"69":[148]},"packages/cli/src/activation-errors.service.ts":{"9":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","11":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","15":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","19":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","27":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","35":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B"},"packages/cli/src/active-executions.ts":{"46":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","55":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","62":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","160":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","164":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","185":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","189":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","196":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","202":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","211":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","241":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","263":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","281":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","288":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","308":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","312":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","316":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","320":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","325":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B","360":"b:ANMaAH4gAJfACAAAAFACFYDwEC8B"},"packages/cli/src/active-workflow-manager.ts":{"85":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","111":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","122":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","129":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","151":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","158":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","169":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","258":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","303":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","339":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","350":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","351":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","363":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","375":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","382":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","386":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","389":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","402":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","413":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","414":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","428":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","439":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","453":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","466":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","479":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","482":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","508":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","519":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","536":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","566":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","589":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","608":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","621":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","680":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","687":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","693":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","718":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","832":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","833":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","875":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","888":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","898":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","932":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","933":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","959":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","996":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1026":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1034":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1039":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1060":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1126":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1127":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1130":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1140":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1157":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1164":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1214":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1224":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1237":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1276":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1294":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1309":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1343":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1346":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1369":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1376":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B","1392":"b:AAAYAAIEAJAAAAAgAAAAALLiEC0B"},"packages/cli/src/chat/chat-service.ts":{"49":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","52":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","56":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","68":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","74":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","79":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","126":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","128":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","151":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","181":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","186":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","195":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","196":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","242":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","243":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","271":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","277":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","303":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","305":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","312":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","318":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","323":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","333":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","340":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","368":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA","384":"b:ApsmqL44EIgwBHAEAFAAAIgEkAAA"},"packages/cli/src/concurrency/concurrency-capacity-reservation.ts":{"21":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","23":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","30":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/concurrency/concurrency-control.service.ts":{"35":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","45":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","90":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","100":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","113":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","135":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","136":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","145":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","150":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","158":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","173":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","183":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","193":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","205":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","208":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","225":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","233":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","237":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","244":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/environments.ee/variables/variables.service.ee.ts":{"31":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","39":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","46":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","69":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","74":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","78":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","84":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","86":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","93":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","99":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","109":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","116":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","124":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","128":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","146":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","174":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","179":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","184":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","202":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","204":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","207":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","214":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","221":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA","263":"b:ANMCAH5gAJXgCCAAAFACAYD0FCAA"},"packages/cli/src/eventbus/event-message-classes/event-message-generic.ts":{"23":[148],"31":[148],"36":[148]},"packages/cli/src/eventbus/event-message-classes/event-message-node.ts":{"35":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","43":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","48":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/eventbus/event-message-classes/event-message-workflow.ts":{"36":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","44":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","49":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/eventbus/message-event-bus/message-event-bus.ts":{"59":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","78":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","118":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","127":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","138":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","141":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","151":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","162":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","169":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","192":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","196":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","197":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","202":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","208":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","214":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","220":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","225":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","239":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","250":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","254":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","258":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","262":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","266":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","270":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","274":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","285":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","351":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","370":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA","389":"b:ANcCAH4gALXACAAAhlgCEYDwEKcA"},"packages/cli/src/execution-lifecycle/execute-error-workflow.ts":{"22":"b:AAAYIHAGAJAAAAAAAAAAgIDgEC8B","96":"b:AAAYIHAGAJAAAAAAAAAAgIDgEC8B","103":"b:AAAYIHAGAJAAAAAAAAAAgIDgEC8B","119":"b:AAAYIHAGAJAAAAAAAAAAgIDgEC8B","124":"b:AAAYIHAGAJAAAAAAAAAAgIDgEC8B"},"packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts":{"52":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","60":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","75":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","89":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","104":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","118":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","142":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","151":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","161":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","203":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","205":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","207":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","217":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","219":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","235":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","258":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","272":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","280":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","295":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","367":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","427":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","448":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","451":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","454":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","463":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","468":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","480":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","481":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","486":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","488":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","499":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","518":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","529":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","634":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","642":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","703":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","728":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","760":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","791":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B","848":"b:ANMaAH4gALfACAAAAlwCkYHwEC8B"},"packages/cli/src/execution-lifecycle/restore-binary-data-id.ts":{"30":"b:ANMaAH4kAJXACAAAAFACEYDwEC8B","64":"b:ANMaAH4kAJXACAAAAFACEYDwEC8B","78":"b:ANMaAH4kAJXACAAAAFACEYDwEC8B"},"packages/cli/src/execution-lifecycle/shared/shared-hook-functions.ts":{"12":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","28":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","76":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","92":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/execution-lifecycle/to-save-settings.ts":{"20":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/executions/execution-data/db-store.ts":{"19":"b:ANMCAH4gALXAKAAABnACEYDwECcA","21":"b:ANMCAH4gALXAKAAABnACEYDwECcA","26":"b:ANMCAH4gALXAKAAABnACEYDwECcA","41":"b:ANMCAH4gALXAKAAABnACEYDwECcA","45":"b:ANMCAH4gALXAKAAABnACEYDwECcA","68":"b:ANMCAH4gALXAKAAABnACEYDwECcA","69":"b:ANMCAH4gALXAKAAABnACEYDwECcA","74":"b:ANMCAH4gALXAKAAABnACEYDwECcA"},"packages/cli/src/executions/execution-persistence.ts":{"57":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","74":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","83":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","89":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","113":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","175":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","257":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","303":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","304":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","311":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","316":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","322":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","353":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","354":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","361":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","371":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","381":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","401":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","411":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","415":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","418":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","419":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","424":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","427":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","431":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","444":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","454":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","475":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","486":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","491":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","522":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","539":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","557":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","579":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","597":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","608":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","615":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","636":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","643":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","659":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","665":"b:ANMaAH4gALfAKACABnwCEYDwEC8A","675":"b:ANMaAH4gALfAKACABnwCEYDwEC8A"},"packages/cli/src/executions/execution.service.ts":{"111":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","136":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","151":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","193":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","224":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","382":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","387":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","421":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","458":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","478":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","481":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","517":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","525":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","542":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","559":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","570":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","603":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","624":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","634":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","654":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","669":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","687":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","688":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","699":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","737":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A","749":"b:RNMKAA4gAL3iCAAAHt4CkcnUEA0A"},"packages/cli/src/executions/executions.controller.ts":{"19":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","26":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","38":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","82":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","93":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","108":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","124":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","135":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","144":"b:BNMKAA4gALXACAAABFwCEcDQEA0A","153":"b:BNMKAA4gALXACAAABFwCEcDQEA0A"},"packages/cli/src/executions/parse-range-query.middleware.ts":{"15":"b:BIAIAAAAAJAAAAAABFwAAIDQEA0A","20":"b:BIAIAAAAAJAAAAAABFwAAIDQEA0A"},"packages/cli/src/executions/pre-execution-checks/credentials-permission-checker.ts":{"15":"b:BNMCAH4gAJXACAAAAFACEYDwECcA","26":"b:BNMCAH4gAJXACAAAAFACEYDwECcA","36":"b:BNMCAH4gAJXACAAAAFACEYDwECcA","47":"b:BNMCAH4gAJXACAAAAFACEYDwECcA","86":"b:BNMCAH4gAJXACAAAAFACEYDwECcA","100":"b:BNMCAH4gAJXACAAAAFACEYDwECcA","101":"b:BNMCAH4gAJXACAAAAFACEYDwECcA","124":"b:BNMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/metrics/prometheus/workflow-execution-duration-metrics.service.ts":{"19":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","24":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","28":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","41":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/modules/chat-hub/chat-hub-execution-store.service.ts":{"58":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","79":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","93":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","103":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","127":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","140":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","154":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","158":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","171":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","189":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","199":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","202":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","211":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/modules/chat-hub/chat-hub-execution-watcher.service.ts":{"32":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A","54":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A","117":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A","160":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A","203":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A","235":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A","257":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A","280":"b:ANMaAH4gAJfACAAAAFACEYDwEC8A"},"packages/cli/src/modules/insights/database/entities/insights-raw.ts":{"13":[29,50,59,61,148,135],"27":[29,50,59,61,148,135],"38":[29,50,59,61,148,135]},"packages/cli/src/modules/insights/insights-collection.service.ts":{"65":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","95":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","105":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","113":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","119":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","124":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","131":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","136":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","152":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","217":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","232":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","255":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","283":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","305":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","328":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B","345":"b:AtsyoP80FL3wDHAEAFACEYj0kD8B"},"packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.ts":{"19":[148],"47":[148],"79":[148],"84":[148],"101":[148],"116":[148],"121":[148],"135":[148],"149":[148],"153":[148]},"packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.ts":{"45":[148,88],"78":[148,88],"82":[148,88],"92":[148,88],"110":[148,88],"118":[148,88],"123":[148,88],"127":[148,88]},"packages/cli/src/modules/log-streaming.ee/log-streaming-destination.service.ts":{"37":[148,88],"49":[148,88],"69":[148,88],"84":[148,88],"91":[148,88],"116":[148,88],"136":[148,88],"155":[148,88],"182":[148,88],"187":[148,88],"188":[148,88],"195":[148,88],"203":[148,88],"214":[148,88],"215":[148,88],"223":[148,88],"232":[148,88],"257":[148,88]},"packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts":{"31":[148,87,88],"37":[148,87,88],"46":[148,87,88],"53":[148,87,88],"64":[148,87,88],"114":[148,87,88],"125":[148,87,88]},"packages/cli/src/modules/redaction/instance-redaction-enforcement.service.ts":{"16":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","29":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","33":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","35":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","42":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","60":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","77":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","81":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","90":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/modules/redaction/redaction-context-hook.ts":{"16":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","24":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","36":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/services/role-cache.service.ts":{"37":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA","45":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA","54":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA","68":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA","77":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA","93":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA","105":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA","112":"b:QoCITWIgAJAyABQEAFIAAJgQUiEA"},"packages/cli/src/services/workflow-statistics.service.ts":{"76":"b:ANMaAH4gAJfACAAAAFACEYDwEK8B","90":"b:ANMaAH4gAJfACAAAAFACEYDwEK8B","94":"b:ANMaAH4gAJfACAAAAFACEYDwEK8B","99":"b:ANMaAH4gAJfACAAAAFACEYDwEK8B","208":"b:ANMaAH4gAJfACAAAAFACEYDwEK8B","231":"b:ANMaAH4gAJfACAAAAFACEYDwEK8B"},"packages/cli/src/task-runners/task-broker/task-broker-ws-server.ts":{"21":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","37":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","46":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","50":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","57":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","74":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","83":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","87":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","91":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","95":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","101":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","146":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","158":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","177":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","181":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","186":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA","192":"b:Ap8moL84EKgwBHAEhlgAAIgUkIIA"},"packages/cli/src/utils/circuit-breaker.ts":{"15":[148,88],"147":[148,88],"172":[148,88],"176":[148,88],"180":[148,88],"184":[148,88],"191":[148,88],"197":[148,88],"206":[148,88],"234":[148,88],"269":[148,88],"270":[148,88]},"packages/cli/src/utils/sliding-window.ts":{"31":[148,88],"42":[148,88],"57":[148,88],"60":[148,88],"67":[148,88]},"packages/cli/src/webhooks/live-webhooks.ts":{"36":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","46":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","50":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","58":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","63":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","78":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","97":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","126":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","136":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","160":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","173":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","188":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","200":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","214":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B","230":"b:AAAYAAAAAIAAAAAAAAAAAIDgEI4B"},"packages/cli/src/webhooks/node-type-matcher.ts":{"5":"b:AMAaAAIAAIAAAAAAAEAABIDgEI4B"},"packages/cli/src/webhooks/webhook-execution-context.ts":{"17":"b:AMAaAAIAAIIAAAAAAEAABIDgEI4B","28":"b:AMAaAAIAAIIAAAAAAEAABIDgEI4B","46":"b:AMAaAAIAAIIAAAAAAEAABIDgEI4B"},"packages/cli/src/webhooks/webhook-helpers.ts":{"89":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","106":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","118":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","127":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","137":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","177":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","195":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","266":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","302":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","311":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","340":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","342":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","352":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","420":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","506":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","715":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","817":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","847":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","931":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","966":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","1050":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","1101":"b:ANMaAA4kAJfACACAAFACFIDwEK8B","1126":"b:ANMaAA4kAJfACACAAFACFIDwEK8B"},"packages/cli/src/webhooks/webhook-on-received-response-extractor.ts":{"13":"b:AAAYAAIAAIIAAAAAAEAAAIDgEA4A"},"packages/cli/src/webhooks/webhook-request-handler.ts":{"32":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","41":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","94":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","110":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","119":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","122":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","135":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","141":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","150":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","180":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","234":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","240":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B"},"packages/cli/src/webhooks/webhook-request-sanitizer.ts":{"12":"b:AAAYAAIAAIABAAAAAEAABIDgEI4B","18":"b:AAAYAAIAAIABAAAAAEAABIDgEI4B","19":"b:AAAYAAIAAIABAAAAAEAABIDgEI4B","32":"b:AAAYAAIAAIABAAAAAEAABIDgEI4B","40":"b:AAAYAAIAAIABAAAAAEAABIDgEI4B"},"packages/cli/src/webhooks/webhook-response-headers.ts":{"22":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","26":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","33":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","50":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","57":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","66":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","74":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B"},"packages/cli/src/webhooks/webhook-response.ts":{"37":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","41":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","45":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","49":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","53":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","59":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B","72":"b:AMAaAAIAAIABAAAAAEAABIDgEI4B"},"packages/cli/src/webhooks/webhook.service.ts":{"33":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","40":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","45":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","48":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","52":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","70":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","84":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","92":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","109":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","110":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","128":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","132":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","169":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","173":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","180":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","184":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","189":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","190":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","195":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","199":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","210":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","221":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","223":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","230":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","327":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","344":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","358":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","407":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","409":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","413":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","418":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","437":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","446":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","478":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B","509":"b:ANMaAA4kAJXACAAAAFACFLLyEK8B"},"packages/cli/src/workflow-execute-additional-data.ts":{"67":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","112":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","158":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","176":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","210":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","243":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","260":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","316":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","335":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","354":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","372":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","373":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","378":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","392":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","393":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","407":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","426":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","595":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","605":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","634":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","679":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","685":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","695":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","732":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB","735":"b:ANcaAH5gALfgCAAAhlwCkYH0FKoB"},"packages/cli/src/workflow-hook-context.service.ts":{"9":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","11":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","17":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/cli/src/workflow-runner.ts":{"68":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","78":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","97":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","165":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","186":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","264":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","300":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","319":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","329":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","393":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","398":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","453":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","463":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","473":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","495":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","521":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","547":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","549":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","662":"b:ANMSAH4gAJfACAAAAFACEYDwECcB","682":"b:ANMSAH4gAJfACAAAAFACEYDwECcB"},"packages/cli/src/workflows/workflow-sharing.service.ts":{"22":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","37":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","45":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","70":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","73":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","87":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","90":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","98":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","101":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","107":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","114":"b:BNMKAA4gALXACAAABFwCEYDQEA0A","127":"b:BNMKAA4gALXACAAABFwCEYDQEA0A"},"packages/cli/src/workflows/workflow-static-data.service.ts":{"11":"b:AMAaAAIEAJAAAAAgAEAABLLiEC8B","18":"b:AMAaAAIEAJAAAAAgAEAABLLiEC8B","27":"b:AMAaAAIEAJAAAAAgAEAABLLiEC8B","48":"b:AMAaAAIEAJAAAAAgAEAABLLiEC8B","54":"b:AMAaAAIEAJAAAAAgAEAABLLiEC8B"},"packages/core/src/execution-engine/execution-context-hook-registry.service.ts":{"17":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","33":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","83":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","92":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","105":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","106":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","111":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/execution-engine/execution-context.service.ts":{"22":"b:ANMCAH4gALXACAAAAlwCEYDwECcA","28":"b:ANMCAH4gALXACAAAAlwCEYDwECcA","48":"b:ANMCAH4gALXACAAAAlwCEYDwECcA","57":"b:ANMCAH4gALXACAAAAlwCEYDwECcA","69":"b:ANMCAH4gALXACAAAAlwCEYDwECcA","77":"b:ANMCAH4gALXACAAAAlwCEYDwECcA"},"packages/core/src/execution-engine/execution-context.ts":{"104":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/execution-engine/execution-lifecycle-hooks.ts":{"103":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","110":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","118":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/execution-engine/node-execution-context/base-execute-context.ts":{"41":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","56":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","60":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","64":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","65":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","72":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","76":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","83":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","88":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","98":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","110":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","117":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","160":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","183":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","187":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","205":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","213":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","229":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","235":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","260":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","271":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B","296":"b:ANcaAH4mALfACAAAhlwCkYHQEK8B"},"packages/core/src/execution-engine/node-execution-context/execute-context.ts":{"58":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","105":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","107":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","115":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","119":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","129":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","144":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","148":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","163":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","188":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","209":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","217":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","219":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","231":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","236":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","241":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","245":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","249":"b:ANMSAH4gALfBCAAAAFACEYDQECcB","254":"b:ANMSAH4gALfBCAAAAFACEYDQECcB"},"packages/core/src/execution-engine/node-execution-context/index.ts":{"2":"b:ANMaIH5iAJfgCAAAAlgiHYP8FK8B","3":"b:ANMaIH5iAJfgCAAAAlgiHYP8FK8B","9":"b:ANMaIH5iAJfgCAAAAlgiHYP8FK8B","10":"b:ANMaIH5iAJfgCAAAAlgiHYP8FK8B","15":"b:ANMaIH5iAJfgCAAAAlgiHYP8FK8B","17":"b:ANMaIH5iAJfgCAAAAlgiHYP8FK8B","18":"b:ANMaIH5iAJfgCAAAAlgiHYP8FK8B"},"packages/core/src/execution-engine/node-execution-context/node-execution-context.ts":{"52":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","64":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","69":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","81":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","85":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","89":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","93":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","98":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","102":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","106":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","128":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","166":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","177":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","181":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","186":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","197":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","207":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","212":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","214":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","218":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","223":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","225":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","229":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","232":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","233":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","234":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","237":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","241":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","245":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","249":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","253":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","257":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","265":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","269":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","294":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","298":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","307":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","318":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","370":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","475":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","480":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","490":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","585":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B","600":"b:ANMaIH4kAPfgCACAAtgCnZP4EK8B"},"packages/core/src/execution-engine/node-execution-context/utils/binary-helper-functions.ts":{"37":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","46":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","53":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","60":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","69":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","141":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","168":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","180":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","193":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","256":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","353":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","362":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","366":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","368":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA","370":"b:ANMCAH4gALXBCAAAAFQCEYDwECcA"},"packages/core/src/execution-engine/node-execution-context/utils/cleanup-parameter-data.ts":{"8":"b:ANMSAH4gANXgCAAAANBCEZHwECcA","14":"b:ANMSAH4gANXgCAAAANBCEZHwECcA","19":"b:ANMSAH4gANXgCAAAANBCEZHwECcA"},"packages/core/src/execution-engine/node-execution-context/utils/credential-check-helper-functions.ts":{"3":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","9":"b:ANMCAH4gAJXACAAAAFACEYDQECcA"},"packages/core/src/execution-engine/node-execution-context/utils/custom-data.ts":{"15":"b:ANMCAH4gALXACACAAFACEYDQECYA","23":"b:ANMCAH4gALXACACAAFACEYDQECYA","34":"b:ANMCAH4gALXACACAAFACEYDQECYA","45":"b:ANMCAH4gALXACACAAFACEYDQECYA","48":"b:ANMCAH4gALXACACAAFACEYDQECYA"},"packages/core/src/execution-engine/node-execution-context/utils/data-table-helper-functions.ts":{"8":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","16":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","22":"b:ANMCAH4gAJXACAAAAFACEYDQECcA"},"packages/core/src/execution-engine/node-execution-context/utils/deduplication-helper-functions.ts":{"16":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","30":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","46":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","60":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","72":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","84":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","88":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","95":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","109":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","116":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","122":"b:ANMCAH4gAJXACAAAAFACEYDQECcA"},"packages/core/src/execution-engine/node-execution-context/utils/file-system-helper-functions.ts":{"27":"b:ANMCAH4gALXACAAAAFACEYDQECcA","33":"b:ANMCAH4gALXACAAAAFACEYDQECcA","34":"b:ANMCAH4gALXACAAAAFACEYDQECcA","35":"b:ANMCAH4gALXACAAAAFACEYDQECcA","40":"b:ANMCAH4gALXACAAAAFACEYDQECcA","57":"b:ANMCAH4gALXACAAAAFACEYDQECcA","65":"b:ANMCAH4gALXACAAAAFACEYDQECcA","66":"b:ANMCAH4gALXACAAAAFACEYDQECcA","67":"b:ANMCAH4gALXACAAAAFACEYDQECcA","76":"b:ANMCAH4gALXACAAAAFACEYDQECcA","82":"b:ANMCAH4gALXACAAAAFACEYDQECcA","92":"b:ANMCAH4gALXACAAAAFACEYDQECcA","98":"b:ANMCAH4gALXACAAAAFACEYDQECcA","99":"b:ANMCAH4gALXACAAAAFACEYDQECcA","162":"b:ANMCAH4gALXACAAAAFACEYDQECcA","166":"b:ANMCAH4gALXACAAAAFACEYDQECcA","270":"b:ANMCAH4gALXACAAAAFACEYDQECcA","287":"b:ANMCAH4gALXACAAAAFACEYDQECcA"},"packages/core/src/execution-engine/node-execution-context/utils/get-additional-keys.ts":{"13":"b:ANMCAH5gALXgCAAAAFACEYD0FCYA","20":"b:ANMCAH5gALXgCAAAAFACEYD0FCYA","56":"b:ANMCAH5gALXgCAAAAFACEYD0FCYA"},"packages/core/src/execution-engine/node-execution-context/utils/get-secrets-proxy.ts":{"4":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","6":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","25":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","30":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","50":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","66":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","69":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","75":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA","78":"b:ANMCAH5gAJXgCAAAAFACEYD0FCIA"},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/factory.ts":{"27":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","34":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","69":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","89":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","109":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","127":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","141":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","166":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","186":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA","205":"b:ANMCIH4gAJXACAAAAFQiGYDwECcA"},"packages/core/src/execution-engine/node-execution-context/utils/resolve-source-overwrite.ts":{"7":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/execution-engine/node-execution-context/utils/ssh-tunnel-helper-functions.ts":{"7":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","10":"b:ANMCAH4gAJXACAAAAFACEYDQECcA","12":"b:ANMCAH4gAJXACAAAAFACEYDQECcA"},"packages/core/src/execution-engine/node-execution-context/utils/validate-value-against-schema.ts":{"20":"b:ANMTAH4gAPfgCAAAANACEZPwEC8B","44":"b:ANMTAH4gAPfgCAAAANACEZPwEC8B","77":"b:ANMTAH4gAPfgCAAAANACEZPwEC8B","89":"b:ANMTAH4gAPfgCAAAANACEZPwEC8B","151":"b:ANMTAH4gAPfgCAAAANACEZPwEC8B","162":"b:ANMTAH4gAPfgCAAAANACEZPwEC8B"},"packages/core/src/execution-engine/node-execution-context/utils/webhook-helper-functions.ts":{"13":"b:AAAYAAIAAIABAAAAAEAABIDgEA4B","33":"b:AAAYAAIAAIABAAAAAEAABIDgEA4B"},"packages/core/src/execution-engine/node-execution-context/webhook-context.ts":{"33":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","71":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","82":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","86":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","90":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","94":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","98":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","102":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","106":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","113":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","121":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","132":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","136":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B","143":"b:AMAaAAIAAIIBAACAAEAABIDgEI4B"},"packages/core/src/execution-engine/requests-response.ts":{"31":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","55":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","89":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","187":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","203":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","238":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","285":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","291":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/execution-engine/workflow-execute.ts":{"111":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","129":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","196":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","204":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","294":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","326":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","367":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","395":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","414":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","617":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","834":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","901":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","919":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","930":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","974":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","998":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1003":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1012":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1064":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1071":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1073":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1098":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1166":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1186":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1239":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1274":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1397":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1417":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1443":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1469":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1515":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1531":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1536":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1545":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1635":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1640":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1719":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1720":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1745":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1746":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1864":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1868":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","1915":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2211":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2307":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2324":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2327":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2354":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2359":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2396":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2412":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2430":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2451":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2470":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2491":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2547":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2628":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2639":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2651":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2757":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2817":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2818":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2820":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A","2828":"b:ANMaAH4gAL/ACAAAgtxSEYHwEC8A"},"packages/core/src/html-sandbox.ts":{"4":"b:AMAaAAIAAIIAAAAAAEAABIDwEA4B","8":"b:AMAaAAIAAIIAAAAAAEAABIDwEA4B","15":"b:AMAaAAIAAIIAAAAAAEAABIDwEA4B"},"packages/core/src/storage.config.ts":{"20":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","32":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","38":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","66":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","101":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/utils/assertions.ts":{"14":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","31":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/utils/convert-binary-data.ts":{"13":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/core/src/utils/deep-merge.ts":{"4":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","17":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/nodes-base/nodes/Set/Set.node.ts":{"8":"b:AMISAAIAAJAgCQIACMJCgYnAECAA"},"packages/nodes-base/nodes/Set/v1/SetV1.node.ts":{"139":"b:AMISAAIAAJAgCQIACMpig4nAECAA","146":"b:AMISAAIAAJAgCQIACMpig4nAECAA","182":"b:AMISAAIAAJAgCQIACMpig4nAECAA","193":"b:AMISAAIAAJAgCQIACMpig4nAECAA","211":"b:AMISAAIAAJAgCQIACMpig4nAECAA"},"packages/nodes-base/nodes/Set/v2/SetV2.node.ts":{"302":"b:AMISAAIAAJAgCQIACMJCgYnAECIA","309":"b:AMISAAIAAJAgCQIACMJCgYnAECIA"},"packages/nodes-base/nodes/Set/v2/helpers/utils.ts":{"28":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","31":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","34":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","37":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","43":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","46":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","49":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","56":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","89":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","90":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","104":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","105":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","130":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","161":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","214":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","228":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","230":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","237":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA","257":"b:AMIaAAIAAJAgCQIACMJCgYnAECIA"},"packages/nodes-base/nodes/Set/v2/manual.mode.ts":{"189":"b:AMISAAIAAJAgCQIACMJCgYnAECIA"},"packages/nodes-base/nodes/Set/v2/raw.mode.ts":{"36":"b:AMISAAIAAJAgCQIACMJCgYnAECAA"},"packages/nodes-base/nodes/Webhook/Webhook.node.ts":{"204":"b:AAAYAAMAAIBBAAAAAMAABKDgEA4B","216":"b:AAAYAAMAAIBBAAAAAMAABKDgEA4B","320":"b:AAAYAAMAAIBBAAAAAMAABKDgEA4B","324":"b:AAAYAAMAAIBBAAAAAMAABKDgEA4B"},"packages/nodes-base/nodes/Webhook/description.ts":{"19":"b:AAAYAAMAAIBBAAAAAMAABKDgEAwB","56":"b:AAAYAAMAAIBBAAAAAMAABKDgEAwB"},"packages/nodes-base/nodes/Webhook/error.ts":{"4":"b:ACgYAAMQEINABQAAAMAAAKDkEIQB"},"packages/nodes-base/nodes/Webhook/utils.ts":{"37":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","54":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","68":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","79":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","89":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","106":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","117":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","119":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","130":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","140":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","155":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","166":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","204":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","209":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","235":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","358":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","423":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B","441":"b:ACgYAAMQEINBBQAAAMAABKDkEI4B"},"packages/nodes-base/utils/utilities.ts":{"40":"b:AMISAHIAALFgCQIACMhCgYnAECgB","59":"b:AMISAHIAALFgCQIACMhCgYnAECgB","71":"b:AMISAHIAALFgCQIACMhCgYnAECgB","76":"b:AMISAHIAALFgCQIACMhCgYnAECgB","92":"b:AMISAHIAALFgCQIACMhCgYnAECgB","95":"b:AMISAHIAALFgCQIACMhCgYnAECgB","119":"b:AMISAHIAALFgCQIACMhCgYnAECgB","142":"b:AMISAHIAALFgCQIACMhCgYnAECgB","146":"b:AMISAHIAALFgCQIACMhCgYnAECgB","154":"b:AMISAHIAALFgCQIACMhCgYnAECgB","173":"b:AMISAHIAALFgCQIACMhCgYnAECgB","180":"b:AMISAHIAALFgCQIACMhCgYnAECgB","189":"b:AMISAHIAALFgCQIACMhCgYnAECgB","192":"b:AMISAHIAALFgCQIACMhCgYnAECgB","195":"b:AMISAHIAALFgCQIACMhCgYnAECgB","273":"b:AMISAHIAALFgCQIACMhCgYnAECgB","277":"b:AMISAHIAALFgCQIACMhCgYnAECgB","282":"b:AMISAHIAALFgCQIACMhCgYnAECgB","284":"b:AMISAHIAALFgCQIACMhCgYnAECgB","292":"b:AMISAHIAALFgCQIACMhCgYnAECgB","317":"b:AMISAHIAALFgCQIACMhCgYnAECgB","331":"b:AMISAHIAALFgCQIACMhCgYnAECgB","332":"b:AMISAHIAALFgCQIACMhCgYnAECgB","351":"b:AMISAHIAALFgCQIACMhCgYnAECgB","373":"b:AMISAHIAALFgCQIACMhCgYnAECgB","400":"b:AMISAHIAALFgCQIACMhCgYnAECgB","409":"b:AMISAHIAALFgCQIACMhCgYnAECgB","410":"b:AMISAHIAALFgCQIACMhCgYnAECgB","420":"b:AMISAHIAALFgCQIACMhCgYnAECgB","429":"b:AMISAHIAALFgCQIACMhCgYnAECgB","451":"b:AMISAHIAALFgCQIACMhCgYnAECgB","453":"b:AMISAHIAALFgCQIACMhCgYnAECgB","477":"b:AMISAHIAALFgCQIACMhCgYnAECgB","478":"b:AMISAHIAALFgCQIACMhCgYnAECgB","481":"b:AMISAHIAALFgCQIACMhCgYnAECgB","505":"b:AMISAHIAALFgCQIACMhCgYnAECgB","511":"b:AMISAHIAALFgCQIACMhCgYnAECgB","518":"b:AMISAHIAALFgCQIACMhCgYnAECgB"},"packages/workflow/src/common/get-child-nodes.ts":{"5":"b:BNAKAH4gAJFAAAAAAPAAAYDwEC8A"},"packages/workflow/src/common/get-connected-nodes.ts":{"11":"b:ANMCAH4gAJXACAAAgFAjEYHwECcA","34":"b:ANMCAH4gAJXACAAAgFAjEYHwECcA","46":"b:ANMCAH4gAJXACAAAgFAjEYHwECcA","61":"b:ANMCAH4gAJXACAAAgFAjEYHwECcA","62":"b:ANMCAH4gAJXACAAAgFAjEYHwECcA"},"packages/workflow/src/common/map-connections-by-destination.ts":{"5":"b:ANMCAH5gAJXgCAAAAFACEYD0FCAA"},"packages/workflow/src/deferred-promise.ts":{"10":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","12":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/workflow/src/execution-context-establishment-hooks.ts":{"41":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/workflow/src/expression-evaluator-proxy.ts":{"8":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA","15":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA","19":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA"},"packages/workflow/src/expression-sandboxing.ts":{"22":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","25":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","73":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","74":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","93":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","137":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","139":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","171":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","195":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","211":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","248":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","250":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","326":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","356":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","358":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","367":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","384":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","393":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","413":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","433":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","442":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","451":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","460":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","469":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","508":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","533":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","542":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","551":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B","557":"b:AMEaAHIAAIBBAAIAAEgKhoHiEK4B"},"packages/workflow/src/expression.ts":{"35":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","38":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","41":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","45":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","59":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","112":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","113":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","137":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","151":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","183":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","185":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","193":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","197":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","208":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","210":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","217":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","220":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","231":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","237":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","246":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","260":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","262":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","282":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","286":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","294":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","305":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","318":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","322":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","466":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","475":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","516":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA","613":"b:ANMSAH5gAJXgCAIAAFAikYH2FCQA"},"packages/workflow/src/extensions/expression-extension.ts":{"25":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","29":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","64":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","66":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","69":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","77":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","79":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","95":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","124":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","133":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","160":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","174":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","183":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","196":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","208":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","387":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","405":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","440":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","457":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","519":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","527":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","535":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","555":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","571":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","579":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","583":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","584":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","598":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA"},"packages/workflow/src/extensions/expression-parser.ts":{"20":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","24":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","93":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","97":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA","99":"b:AMMSAHIAAIJAAAIAAEAKgIHiECQA"},"packages/workflow/src/extensions/index.ts":{"7":"b:AMMSAHIAAIBAAAIAAEACgIHiECQA"},"packages/workflow/src/global-state.ts":{"9":"b:ANMCAH5gAJXgCAAAAFACEYD0FCAA","13":"b:ANMCAH5gAJXgCAAAAFACEYD0FCAA"},"packages/workflow/src/logger-proxy.ts":{"3":"b:AFMAAAogABXACAAAABACEYDwECcA","9":"b:AFMAAAogABXACAAAABACEYDwECcA","10":"b:AFMAAAogABXACAAAABACEYDwECcA","11":"b:AFMAAAogABXACAAAABACEYDwECcA","12":"b:AFMAAAogABXACAAAABACEYDwECcA","13":"b:AFMAAAogABXACAAAABACEYDwECcA"},"packages/workflow/src/node-validation.ts":{"19":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","59":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B","84":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B"},"packages/workflow/src/observable-object.ts":{"9":"b:ANcCAH5gAPXgCAAAhtgCFZD0FCcA","38":"b:ANcCAH5gAPXgCAAAhtgCFZD0FCcA","48":"b:ANcCAH5gAPXgCAAAhtgCFZD0FCcA","51":"b:ANcCAH5gAPXgCAAAhtgCFZD0FCcA","54":"b:ANcCAH5gAPXgCAAAhtgCFZD0FCcA"},"packages/workflow/src/redaction-channels.ts":{"22":"b:ANMCAH4gAJXACAAAAFACEYDwECcA","36":"b:ANMCAH4gAJXACAAAAFACEYDwECcA"},"packages/workflow/src/run-execution-data-factory.ts":{"54":"b:ANMaAH5gAJXACAAAAFACHaD0FC8A","67":"b:ANMaAH5gAJXACAAAAFACHaD0FC8A","86":"b:ANMaAH5gAJXACAAAAFACHaD0FC8A","108":"b:ANMaAH5gAJXACAAAAFACHaD0FC8A","125":"b:ANMaAH5gAJXACAAAAFACHaD0FC8A"},"packages/workflow/src/type-guards.ts":{"15":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","21":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","25":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","29":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","33":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","37":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","41":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","47":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","60":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","70":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","83":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","93":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","99":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB","103":"b:ANMaAH4mAL3ACAAAAlxiFaHiECwB"},"packages/workflow/src/type-validation.ts":{"15":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","24":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","38":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","48":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","72":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","114":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","124":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","146":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","162":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","206":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","272":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","284":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","305":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","333":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","437":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA","438":"b:AMMaAHKAAJkBCAIAAkhikYHAEKIA"},"packages/workflow/src/workflow-data-proxy-env-provider.ts":{"13":"b:AMMSAHoAAKBAAAIAAFACgIHyECQA","41":"b:AMMSAHoAAKBAAAIAAFACgIHyECQA","49":"b:AMMSAHoAAKBAAAIAAFACgIHyECQA","53":"b:AMMSAHoAAKBAAAIAAFACgIHyECQA"},"packages/workflow/src/workflow-data-proxy.ts":{"40":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","63":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","102":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","107":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","119":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","141":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","142":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","150":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","156":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","168":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","174":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","175":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","179":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","188":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","213":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","214":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","220":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","222":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","224":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","233":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","234":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","236":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","237":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","251":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","256":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","257":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","260":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","266":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","269":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","274":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","275":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","287":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","294":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","295":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","298":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","304":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","306":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","368":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","400":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","517":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","528":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","529":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","636":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","643":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","644":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","647":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","653":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","684":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","691":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","692":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","695":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","701":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","729":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","734":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","735":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","759":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","763":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","790":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","840":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","862":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","875":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","886":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","898":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","911":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","922":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","933":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","942":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","961":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","970":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","973":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1009":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1031":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1035":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1043":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1050":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1102":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1127":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1145":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1168":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1169":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1182":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1215":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1225":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1323":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1342":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1366":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1397":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1398":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1401":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1407":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1422":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1437":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1452":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1498":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1516":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1540":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1596":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB","1597":"b:AMMaAHIGAIpAAAIAAEgihqHiECwB"},"packages/workflow/src/workflow-expression.ts":{"22":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","30":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","74":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","89":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","94":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","154":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","189":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","222":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","269":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","273":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B","277":"b:ANMaAH5gANXgCAAAANBCHbD2FK8B"},"packages/workflow/src/workflow-validation.ts":{"16":"b:AAAYAAIEAJAAAAAAAAAAALLiEC0B"},"packages/workflow/src/workflow.ts":{"87":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","137":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","144":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","149":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","153":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","157":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","164":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","217":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","245":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","253":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","254":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","261":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","262":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","271":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","300":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","309":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","330":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","334":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","390":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","409":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","447":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","491":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","544":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","563":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","581":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","595":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","610":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","625":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","636":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","659":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","677":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","678":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","692":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","751":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","822":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","852":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","853":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","872":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B","897":"b:BNMaAH5kANfgCAAAgfgiF7P2FK8B"},"packages/@n8n/design-system/src/components/N8nRecycleScroller/RecycleScroller.vue":{"14":[31,44,45,46,68,69,86,92,5],"30":[31,44,45,46,68,69,86,92,5],"31":[31,44,45,46,68,69,86,92,5],"48":[31,44,45,46,68,69,86,92,5],"50":[31,44,45,46,68,69,86,92,5],"60":[31,44,45,46,68,69,86,92,5],"61":[31,44,45,46,68,69,86,92,5],"72":[31,44,45,46,68,69,86,92,5],"76":[31,44,45,46,68,69,86,92,5],"77":[31,44,45,46,68,69,86,92,5],"79":[31,44,45,46,68,69,86,92,5],"81":[31,44,45,46,68,69,86,92,5],"94":[31,44,45,46,68,69,86,92,5],"102":[31,44,45,46,68,69,86,92,5],"106":[31,44,45,46,68,69,86,92,5],"116":[31,44,45,46,68,69,86,92,5],"120":[31,44,45,46,68,69,86,92,5],"132":[31,44,45,46,68,69,86,92,5],"133":[31,44,45,46,68,69,86,92,5],"141":[31,44,45,46,68,69,86,92,5],"147":[31,44,45,46,68,69,86,92,5],"148":[31,44,45,46,68,69,86,92,5],"167":[31,44,45,46,68,69,86,92,5],"170":[31,44,45,46,68,69,86,92,5],"201":[31,44,45,46,68,69,86,92,5],"208":[31,44,45,46,68,69,86,92,5],"210":[31,44,45,46,68,69,86,92,5]},"packages/frontend/editor-ui/src/app/utils/parameterUtils.ts":{"13":"b:MJQZoC1ygA6hEEEQx4WvHQMEAAAA"},"packages/frontend/editor-ui/src/features/credentials/components/CredentialCard.vue":{"68":[31,44,45,46,68,69,86,92,5],"69":[31,44,45,46,68,69,86,92,5],"72":[31,44,45,46,68,69,86,92,5],"74":[31,44,45,46,68,69,86,92,5],"82":[31,44,45,46,68,69,86,92,5],"113":[31,44,45,46,68,69,86,92,5],"122":[31,44,45,46,68,69,86,92,5],"124":[45],"151":[68],"215":[68],"224":[31,44,45,46,68,69,86,92,5],"229":[31,44,45,46,68,69,86,92,5],"232":[31,44,45,46,68,69,86,92,5],"236":[45],"263":[31,44,45,46,68,69,86,92,5],"272":[31,44,45,46,68,69,86,92,5]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialsSelectModal.vue":{"14":[11,31,44,45,46,69,86,92,5],"27":[11,31,44,45,46,69,86,92,5],"34":[11,31,44,45,46,69,86,92,5],"42":[11,31,44,45,46,69,86,92,5],"43":[11,31,44,45,46,69,86,92,5],"46":[11,31,44,45,46,69,86,92,5],"50":[11,31,44,45,46,69,86,92,5],"63":[11,31,44,45,46,69,86,92,5],"76":[11,31,44,45,46,69,86,92,5],"81":[11,31,44,45,46,69,86,92,5],"96":[11,31,44,45,46,69,86,92,5],"98":[11,31,44,45,46,69,86,92,5],"100":[11,31,44,45,46,69,86,92,5],"110":[11,31,44,45,46,69,86,92,5]},"packages/frontend/editor-ui/src/features/credentials/credentials.ee.api.ts":{"6":[151,92,5],"19":[151,68]},"packages/frontend/editor-ui/src/features/credentials/views/CredentialsView.vue":{"62":[11,31,45,92,5],"79":[31,44,45,46,68,69,86,92,5],"85":[31,44,45,46,68,69,86,92,5],"88":[11,31,44,45,46,68,69,86,92,5],"89":[31,44,45,46,68,69,86,92,5],"114":[11,31,44,45,46,68,69,86,92,5],"116":[11,31,44,45,46,68,69,86,92,5],"132":[31,45,46,86],"136":[31,44,45,46,69,86,92,5],"144":[31,46,86],"153":[11,31,44,45,46,68,69,86,92,5],"164":[31,44,45,46,68,69,86,92,5],"187":[11,31,44,45,46,68,69,86,92,5],"197":[11,31,44,45,46,68,69,86,92,5],"220":[11,31,44,45,46,68,69,86,92,5],"249":[44,45,68,69,5],"253":[11,31,44,45,46,68,69,86,92,5],"255":[31,44,45,46,69,86,92,5],"268":[11,31,44,45,46,68,69,86,92,5],"270":[11,31,44,45,46,68,69,86,92,5],"271":[11,31,44,45,46,69,86,92,5],"280":[11,31,44,45,46,68,69,86,92,5],"290":[11,31,44,45,46,68,69,86,92,5],"309":[11,31,44,45,46,68,69,86,92,5],"319":[31,44,45,46,68,69,86,92,5]},"packages/@n8n/db/src/repositories/execution-metadata.repository.ts":{"8":[14,15,17,36,37,38,95,110]},"packages/cli/src/services/execution-metadata.service.ts":{"7":[14,15,17,36,37,38,95,110],"9":[14,15,17,36,37,38,95,110]},"packages/cli/src/webhooks/test-webhook-registrations.service.ts":{"28":[14,15,17,20,33,95,110,122],"40":[14,15,17,20,33,95,110,122],"47":[14,15,17,20,33,95,110,122],"76":[14,15,17,20,33,95,110,122],"85":[14,15,17,20,33,95,110,122],"90":[14,15,17,20,33,95,110,122],"98":[14,15,17,20,33,95,110,122],"106":[14,15,17,20,33,95,110,122],"116":[14,15,17,20,33,95,110,122]},"packages/cli/src/webhooks/test-webhooks.ts":{"56":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","72":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","102":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","150":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","164":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","215":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","238":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","244":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","267":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","271":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","278":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","281":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","294":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","307":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","353":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","356":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","364":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","375":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","458":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","486":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","493":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","507":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","515":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","516":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","525":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","537":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","544":"b:ANMSAA4gALXACACAAlwCFIAQAAAA","580":"b:ANMSAA4gALXACACAAlwCFIAQAAAA"},"packages/cli/src/webhooks/webhook-last-node-response-extractor.ts":{"29":[14,15,17,153,64,95,110,122,155],"71":[14,15,17,153,64,95,110,122,155],"116":[14,15,17,153,64,95,110,122,155],"183":[14,15,17,153,64,95,110,122,155]},"packages/core/src/execution-engine/node-execution-context/utils/execution-metadata.ts":{"8":[14,15,17,36,37,38,95,110],"46":[14,15,17,36,37,38,95,110],"51":[14,15,17,36,37,38,95,110],"63":[14,15,17,36,37,38,95,110],"70":[14,15,17,36,37,38,95,110]},"packages/nodes-base/nodes/Notion/NotionTrigger.node.ts":{"181":[95],"275":[95],"284":[95],"287":[95]},"packages/nodes-base/nodes/Notion/shared/GenericFunctions.ts":{"27":[44,69,5,95,120,133],"48":[44,69,5,95,120,133],"84":[44,69,5,95,120,133],"118":[44,69,5,95,120,133],"139":[44,69,5,95,120,133],"160":[44,69,5,95,120,133],"205":[44,69,5,95,120,133],"213":[44,69,5,95,120,133],"219":[44,69,5,95,120,133],"225":[44,69,5,95,120,133],"249":[44,69,5,95,120,133],"296":[44,69,5,95,120,133],"305":[44,69,5,95,120,133],"321":[44,69,5,95,120,133],"328":[44,69,5,95,120,133],"332":[44,69,5,95,120,133],"339":[44,69,5,95,120,133],"358":[44,69,5,95,120,133],"367":[44,69,5,95,120,133],"370":[44,69,5,95,120,133],"371":[44,69,5,95,120,133],"373":[44,69,5,95,120,133],"376":[44,69,5,95,120,133],"394":[44,69,5,95,120,133],"396":[44,69,5,95,120,133],"397":[44,69,5,95,120,133],"414":[44,69,5,95,120,133],"473":[44,69,5,95,120,133],"485":[44,69,5,95,120,133],"493":[44,69,5,95,120,133],"501":[44,69,5,95,120,133],"505":[44,69,5,95,120,133],"517":[44,69,5,95,120,133],"519":[44,69,5,95,120,133],"527":[44,69,5,95,120,133],"528":[44,69,5,95,120,133],"536":[44,69,5,95,120,133],"537":[44,69,5,95,120,133],"585":[44,69,5,95,120,133],"592":[44,69,5,95,120,133],"613":[44,69,5,95,120,133],"619":[44,69,5,95,120,133],"621":[44,69,5,95,120,133],"625":[44,69,5,95,120,133],"644":[44,69,5,95,120,133],"652":[44,69,5,95,120,133],"660":[44,69,5,95,120,133],"662":[44,69,5,95,120,133],"667":[44,69,5,95,120,133],"675":[44,69,5,95,120,133],"721":[44,69,5,95,120,133],"730":[44,69,5,95,120,133],"817":[44,69,5,95,120,133],"835":[44,69,5,95,120,133],"851":[44,69,5,95,120,133],"872":[44,69,5,95,120,133],"912":[44,69,5,95,120,133],"921":[44,69,5,95,120,133],"947":[44,69,5,95,120,133],"960":[44,69,5,95,120,133],"1080":[44,69,5,95,120,133],"1094":[44,69,5,95,120,133],"1095":[44,69,5,95,120,133],"1108":[44,69,5,95,120,133],"1125":[44,69,5,95,120,133],"1130":[44,69,5,95,120,133],"1138":[44,69,5,95,120,133],"1155":[44,69,5,95,120,133],"1167":[44,69,5,95,120,133],"1207":[44,69,5,95,120,133]},"packages/nodes-base/nodes/Notion/shared/descriptions/Filters.ts":{"1":[44,69,5,95,120,133]},"packages/nodes-base/nodes/Notion/shared/methods/listSearch.ts":{"10":[44,69,5,95,120,133],"28":[44,69,5,95,120,133]},"packages/workflow/src/highlighted-data.ts":{"3":[14,15,17,36,37,38,95,110],"7":[14,15,17,36,37,38,95,110]},"packages/workflow/src/node-parameters/parameter-type-validation.ts":{"15":[14,15,17,36,37,38,95,110],"30":[14,15,17,36,37,38,95,110],"39":[14,15,17,36,37,38,95,110],"47":[14,15,17,36,37,38,95,110],"55":[14,15,17,36,37,38,95,110],"69":[14,15,17,36,37,38,95,110],"75":[14,15,17,36,37,38,95,110],"82":[14,15,17,36,37,38,95,110],"103":[14,15,17,36,37,38,95,110],"110":[14,15,17,36,37,38,95,110],"121":[14,15,17,36,37,38,95,110],"133":[14,15,17,36,37,38,95,110],"141":[14,15,17,36,37,38,95,110],"142":[14,15,17,36,37,38,95,110],"148":[14,15,17,36,37,38,95,110],"162":[14,15,17,36,37,38,95,110],"175":[14,15,17,36,37,38,95,110],"197":[14,15,17,36,37,38,95,110],"246":[14,15,17,36,37,38,95,110],"259":[14,15,17,36,37,38,95,110]},"packages/@n8n/chat/src/api/generic.ts":{"1":[14,15,16,17,65,77,95,110],"5":[14,15,16,17,65,77,95,110],"38":[65],"49":[14,15,16,17,65,77,95,110],"56":[65]},"packages/@n8n/chat/src/api/message.ts":{"9":[65],"24":[14,15,16,17,65,77,95,110],"68":[65],"73":[65],"82":[65],"119":[65],"151":[65],"211":[65],"245":[65]},"packages/@n8n/chat/src/components/Chat.vue":{"14":[14,15,16,17,65,77,95,110],"20":[14,15,16,17,65,77,95,110],"25":[65],"27":[65],"28":[65],"31":[14,15,16,17,65,77,95,110],"36":[14,15,16,17,65,77,95,110],"41":[14,15,16,17,65,77,95,110],"46":[14,15,16,17,65,77,95,110],"51":[65],"55":[65],"106":[14,15,16,17,65,77,95,110],"108":[15,65,110],"116":[14,15,16,17,65,77,95,110],"122":[65],"127":[14,15,16,17,65,77,95,110],"131":[14,15,16,17,65,77,95,110],"149":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/components/GetStartedFooter.vue":{"5":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/components/Input.vue":{"23":[14,15,16,17,65,77,95,110],"48":[14,15,16,17,65,77,95,110],"54":[14,15,16,17,65,77,95,110],"55":[65],"58":[14,15,16,17,65,77,95,110],"59":[65],"61":[14,15,16,17,65,77,95,110],"77":[65],"93":[65],"97":[14,15,16,17,65,77,95,110],"104":[14,15,16,17,65,77,95,110],"117":[65],"129":[65],"135":[14,15,16,17,65,77,95],"141":[65],"146":[14,15,16,17,65,77,95,110],"157":[65],"170":[65],"189":[65],"202":[65],"205":[65],"208":[65],"211":[65],"218":[65],"228":[65],"249":[14,15,16,17,65,77,95,110],"279":[65,95],"288":[65],"301":[65,95],"312":[65],"317":[14,15,16,17,65,77,95,110],"325":[14,15,16,17,65,77,95,110],"336":[14,15,16,17,65,77,95,110],"364":[65]},"packages/@n8n/chat/src/components/Layout.vue":{"6":[14,15,16,17,65,77,95,110],"8":[14,15,16,17,65,77,95,110],"15":[14,15,16,17,65,77,95,110],"20":[65],"24":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/components/MarkdownRenderer.vue":{"16":[14,15,16,17,77,95,110],"22":[14,15,16,17,77,95,110],"42":[14,15,16,17,77,95,110]},"packages/@n8n/chat/src/components/Message.vue":{"20":[14,15,16,17,65,77,95,110],"25":[14,15,16,17,65,77,95,110],"29":[14,15,16,17,65,77,95,110],"37":[14,15,16,17,65,77,95,110],"49":[65],"50":[65],"52":[65],"57":[14,15,16,17,65,77,95,110],"69":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/components/MessageActions.vue":{"8":[14,15,16,17,65,77,95,110],"16":[65],"30":[65],"35":[14,15,16,17,65,77,95,110],"43":[65]},"packages/@n8n/chat/src/components/MessageTyping.vue":{"8":[14,15,16,17,65,77,95,110],"23":[14,15,16,17,65,77,95,110],"31":[14,15,16,17,65,77,95,110],"34":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/components/MessagesList.vue":{"19":[14,15,16,17,65,77,95,110],"23":[14,15,16,17,65,77,95,110],"24":[14,15,16,17,65,77,95,110],"32":[14,15,16,17,65,77,95,110],"41":[65],"48":[65],"53":[14,15,16,17,65,77,95,110],"55":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/components/PoweredBy.vue":{"2":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/composables/useI18n.ts":{"5":[14,15,16,17,77,95,110],"9":[14,15,16,17,77,95,110],"17":[14,15,16,17,77,95,110]},"packages/@n8n/chat/src/composables/useOptions.ts":{"6":[14,15,16,17,77,95,110]},"packages/@n8n/chat/src/plugins/chat.ts":{"26":[14,15,16,17,65,77,95,110],"41":[14,15,16,17,65,77,95,110],"69":[65],"77":[65],"100":[65],"130":[65],"143":[65],"146":[65],"149":[65],"193":[14,15,16,17,65,77,95,110],"210":[14,15,16,17,65,77,95,110],"218":[14,15,16,17,65,77,95,110],"219":[65],"226":[14,15,16,17,65,77,95,110],"235":[14,15,16,17,65,77,95,110],"295":[14,15,16,17,65,77,95,110],"302":[14,15,16,17,65,77,95,110],"318":[65],"334":[14,15,16,17,65,77,95,110]},"packages/@n8n/chat/src/utils/streaming.ts":{"22":[14,15,16,17,65,77,95,110],"24":[65],"31":[65],"46":[65],"51":[65],"57":[65],"66":[65],"82":[65],"88":[65],"89":[65],"92":[65],"96":[65],"100":[65],"102":[65],"103":[65],"106":[65],"113":[14,15,16,17,65,77,95,110],"122":[65],"127":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/testWebhookReceived.ts":{"8":"b:AMATAAIAAAIDIACAAEgABAAAAAAA"},"packages/frontend/editor-ui/src/app/composables/useReportWorkflowFailuresToParent.ts":{"33":[21,22,94,95,110,134,135]},"packages/frontend/editor-ui/src/app/layouts/DemoLayout.vue":{"18":[21,22,94,95,110,134,135],"61":[21,22,94,95,110,134,135],"88":[21,22,94,95,110,134,135]},"packages/frontend/editor-ui/src/app/utils/formatters/dateFormatter.ts":{"4":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","15":[98,106,107,108,110,134,135],"27":[14,15,16,17,77,95,110],"29":[14,15,16,17,77,95,110]},"packages/frontend/editor-ui/src/features/execution/logs/components/DemoFooter.vue":{"9":[21,22,94,95,110,134,135],"10":[21,22,94,95,110,134,135],"11":[21,22,94,95,110,134,135]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsOverviewRow.vue":{"42":[14,15,16,17,65,77,95,110],"43":[14,15,16,17,65,77,95,110],"44":[14,15,16,17,65,77,95,110],"45":[14,15,16,17,65,77,95,110],"46":[14,15,16,17,65,77,95,110],"47":[14,15,16,17,65,77,95,110],"50":[14,15,16,17,65,77,95,110],"63":[14,15,16,17,65,77,95,110],"64":[14,15,16,17,65,77,95,110],"75":[14,15,16,17,65,77,95,110],"79":[14,15,16,17,65,77,95,110],"81":[14,15,16,17,65,77,95,110],"98":[14,15,16,17,65,77,95,110],"99":[14,15,16,17,65,77,95,110],"101":[14,15,16,17,65,77,95,110],"135":[15,16,65,110],"152":[14,15,16,17,65,77,95,110],"153":[14,15,16,17,65,77,95,110],"155":[14,15,16,17,65,77,95,110],"161":[14,15,16,17,65,77,95,110],"171":[14,15,16,17,65,77,95,110],"179":[65]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsOverviewRows.vue":{"40":[14,15,16,17,65,77,95,110],"41":[14,15,16,17,65,77,95,110],"47":[14,15,16,17,65,77,95,110],"51":[65,110],"67":[14,15,16,17,65,77,95,110],"68":[14,15,16,17,65,77,95,110],"69":[14,15,16,17,65,77,95,110],"79":[14,15,16,17,65,77,95,110],"81":[14,15,16,17,65,77,95,110],"82":[14,15,16,17,65,77,95,110],"87":[14,15,16,17,65,77,110],"89":[65],"98":[14,15,16,17,65,77,95,110],"114":[65],"115":[65,110],"116":[65,110],"117":[14,65,110]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewExecutionSummary.vue":{"18":[14,15,16,17,65,77,95,110],"20":[14,15,16,17,65,77,95,110],"37":[14,15,16,17,65,77,95,110]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewNodeName.vue":{"12":[14,15,16,17,65,77,95,110],"18":[14,15,16,17,65,77,95,110]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/background/CanvasBackgroundStripedPattern.vue":{"6":"b:ACBkAAAAAAAAAACAAEAAANgAgAAA","13":"b:ACBkAAAAAAAAAACAAEAAANgAgAAA","14":"b:ACBkAAAAAAAAAACAAEAAANgAgAAA","15":"b:ACBkAAAAAAAAAACAAEAAANgAgAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasStopWaitingForWebhookButton.vue":{"5":"b:AMATAAIAAAIBIACAAEgABAAAAAAA","9":"b:AMATAAIAAAIBIACAAEgABAAAAAAA"},"packages/cli/src/eventbus/event-message-classes/event-message-runner.ts":{"24":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","32":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","37":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA"},"packages/cli/src/modules/external-secrets.ee/external-secrets-manager.ee.ts":{"37":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","58":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","61":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","81":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","93":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","97":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","105":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","109":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","113":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","120":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","126":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","139":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","165":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","189":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","193":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","197":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","201":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","209":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","220":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","226":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","241":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","292":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","310":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","342":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","360":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","364":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","374":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","385":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","395":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","413":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","421":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","423":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","429":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","440":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","444":"b:EAECAAAAAAACAEAAlQgECEQBCAAA","463":"b:EAECAAAAAAACAEAAlQgECEQBCAAA"},"packages/cli/src/task-runners/default-task-runner-disconnect-analyzer.ts":{"18":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","22":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA"},"packages/cli/src/task-runners/errors/task-runner-disconnected-error.ts":{"7":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","27":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA"},"packages/cli/src/task-runners/task-broker/errors/task-deferred.error.ts":{"4":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA"},"packages/cli/src/task-runners/task-broker/errors/task-runner-accept-timeout.error.ts":{"4":"b:AAUSAAgAACAAAAAAhlAAAIAAAAIA"},"packages/cli/src/task-runners/task-broker/task-broker.service.ts":{"97":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","108":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","109":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","114":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","115":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","131":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","142":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","147":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","169":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","173":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","177":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","181":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","185":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","233":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","252":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","260":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","268":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","276":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","293":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","310":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","327":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","364":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","381":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","393":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","409":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","420":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","428":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","442":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","456":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","472":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","479":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","490":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","516":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","530":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","544":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","548":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","552":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","594":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","606":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","615":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","648":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","655":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","670":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","674":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","681":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","695":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","700":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","704":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","712":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","716":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","720":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","724":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","728":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","732":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","736":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","740":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","744":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","748":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA","752":"b:AAUSAAgAACAAAAAAhlgAAMAQAIIA"},"packages/cli/src/task-runners/task-managers/data-request-response-builder.ts":{"17":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","37":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","56":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","69":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA"},"packages/cli/src/task-runners/task-managers/data-request-response-stripper.ts":{"18":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","32":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","43":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","64":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","68":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","72":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","86":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","94":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","118":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE","138":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIE"},"packages/cli/src/task-runners/task-managers/local-task-requester.ts":{"19":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","30":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","39":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA","40":"b:AAUCAAgAACAAAAAAhlgAAIAQAIIA"},"packages/cli/src/task-runners/task-managers/task-requester.ts":{"71":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","79":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","83":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","88":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","136":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","172":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","196":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","218":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","224":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","228":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","247":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","259":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","261":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","287":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","301":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","325":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","333":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","341":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","349":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","375":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA","390":"b:AAUCAAgAACAAAAAAhlgAAMAQAIIA"},"packages/core/src/execution-engine/node-execution-context/utils/normalize-items.ts":{"10":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA","17":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA","20":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA","24":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA","26":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA","27":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA","40":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA","44":"b:AAECAAgAACgAAAAAhlhgAoAQAAIA"},"packages/nodes-base/nodes/Code/Code.node.ts":{"24":"b:AAcCAAgAACAAAAAAh1ggAIAQAAIA","187":"b:AAcCAAgAACAAAAAAh1ggAIAQAAIA"},"packages/nodes-base/nodes/Code/JsCodeValidator.ts":{"8":"b:AIMCAAgAACAAAAAAh1gAAIAUAIAE","15":"b:AIMCAAgAACAAAAAAh1gAAIAUAIAE","42":"b:AIMCAAgAACAAAAAAh1gAAIAUAIAE","54":"b:AIMCAAgAACAAAAAAh1gAAIAUAIAE"},"packages/nodes-base/nodes/Code/JsTaskRunnerSandbox.ts":{"20":"b:AIcCAAgAACAAAAAAh1ggAIAQAIIE","30":"b:AIcCAAgAACAAAAAAh1ggAIAQAIIE","56":"b:AIcCAAgAACAAAAAAh1ggAIAQAIIE","78":"b:AIcCAAgAACAAAAAAh1ggAIAQAIIE","123":"b:AIcCAAgAACAAAAAAh1ggAIAQAIIE","145":"b:AIcCAAgAACAAAAAAh1ggAIAQAIIE"},"packages/nodes-base/nodes/Code/PythonTaskRunnerSandbox.ts":{"18":"b:AIMCAAgAACAAAAAAh1gAAIAQAIAA","26":"b:AIMCAAgAACAAAAAAh1gAAIAQAIAA","42":"b:AIMCAAgAACAAAAAAh1gAAIAQAIAA","80":"b:AIMCAAgAACAAAAAAh1gAAIAQAIAA","98":"b:AIMCAAgAACAAAAAAh1gAAIAQAIAA"},"packages/nodes-base/nodes/Code/ValidationError.ts":{"12":"b:AIMCAAgAACAAAAAAh1gAAIAUAIAA"},"packages/nodes-base/nodes/Code/errors/WrappedExecutionError.ts":{"13":"b:AIcCAAgAACAAAAAAh1gAAMAQAIAA","22":"b:AIcCAAgAACAAAAAAh1gAAMAQAIAA","29":"b:AIcCAAgAACAAAAAAh1gAAMAQAIAA"},"packages/nodes-base/nodes/Code/python-runner-unavailable.error.ts":{"11":"b:AAMCAAgAACAAAAAAh1ggAIAQAAAA"},"packages/nodes-base/nodes/Code/reserved-key-found-error.ts":{"4":"b:AIMCAAgAACAAAAAAh1gAAIAUAIAA"},"packages/nodes-base/nodes/Code/result-validation.ts":{"16":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","25":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","31":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","61":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","86":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","126":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","159":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","160":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE","172":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIE"},"packages/nodes-base/nodes/Code/throw-execution-error.ts":{"5":"b:AIcCAAgAACAAAAAAh1gAAMAQAIAA"},"packages/nodes-base/nodes/Code/utils.ts":{"3":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIA","9":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIA","16":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIA","17":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIA","40":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIA","47":"b:AIMCAAgAACAAAAAAh1ggAIAUAIIA"},"packages/nodes-base/nodes/N8n/GenericFunctions.ts":{"21":[98],"56":[98],"93":[98],"94":[98],"107":[98],"111":[98],"146":[98],"150":[98],"186":[98],"210":[98]},"packages/nodes-base/nodes/N8n/WorkflowLocator.ts":{"18":[98],"32":[98],"37":[98],"42":[98]},"packages/workflow/src/errors/base/operational.error.ts":{"16":"b:AAUSAAgGACAAAAAAhlAAAIAAAAIA"},"packages/workflow/src/errors/base/unexpected.error.ts":{"16":"b:AAUCAAgEACAAABAAhFgAAIBQAIIA"},"packages/workflow/src/errors/base/user.error.ts":{"19":"b:AANiAAgQACAAAAAABlgAAIAQACIA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/ai-transform.svg":{"11":"b:AAAAIAgAAAgAAAAAxwAgAQAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/code.svg":{"11":"b:AAcCIAgAACgAgAFAx1pgQsAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/compare-datasets.svg":{"11":[29,35,96,97,98,102,103,117]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/convert-to-file.svg":{"11":"b:AAAAIAgAAAABAAAAxwEgAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/extract-from-file.svg":{"11":"b:AAAAIAgAACAAAAAAxwEgAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/n8n.svg":{"11":[54,98]},"packages/@n8n/design-system/src/components/N8nInfoAccordion/InfoAccordion.vue":{"29":"b:AIAAIAEAAAIBAAAABNwgBMACAAAA","40":"b:AIAAIAEAAAIBAAAABNwgBMACAAAA","54":"b:AIAAIAEAAAIBAAAABNwgBMACAAAA","61":"b:AIAAIAEAAAIBAAAABNwgBMACAAAA"},"packages/@n8n/design-system/src/components/N8nKeyboardShortcut/N8nKeyboardShortcut.vue":{"7":"b:AIAAAAAAAAAAIAEAdgAABAEAAAAA","10":"b:AIAAAAAAAAAAIAEAdgAABAEAAAAA","25":"b:AIAAAAAAAAAAIAEAdgAABAEAAAAA","29":"b:AIAAAAAAAAAAIAEAdgAABAEAAAAA","33":"b:AIAAAAAAAAAAIAEAdgAABAEAAAAA"},"packages/@n8n/design-system/src/v2/components/Checkbox/Checkbox.vue":{"12":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","15":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","20":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","23":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","24":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","26":[83,84,93,110,137,139],"30":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","38":"b:AIAAAAAAAIAgABhgBFwAAHAKAAAA","47":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","49":"b:AIAAAAAAAAAAABhgBFwAAEAKAAAA","58":"b:AIAAAAAAAIAgABhgBFwAAPAKAAAA","59":"b:AIAAAAAAAAAAAABABFwAAEAKAAAA"},"packages/frontend/editor-ui/src/app/components/WorkflowPreview.vue":{"63":[98,106,107,108,110,134,135,139],"79":[98,106,107,108,110,134,135,139],"126":[110,134,135],"163":[134],"173":[110,134,135],"193":[110,134,135],"197":[110,134,135],"209":[110,134,135],"223":[98,106,107,108,110,134,135,139],"228":[98,106,107,135,139],"233":[98,106,107,108,110,134,135,139],"234":[110,134,135],"246":[98,106,107,108,110,134,135,139],"269":[98,106,107,108,110,134,135,139],"278":[98,106,107,108,110,134,135,139],"279":[139]},"packages/frontend/editor-ui/src/app/composables/useIntersectionObserver.ts":{"45":[15,98,105,106,108,135],"56":[108,135],"62":[108,135],"82":[15,98,105,106,135]},"packages/frontend/editor-ui/src/features/execution/executions/components/ExecutionStopAllText.vue":{"10":[15,98,106,107,108,110,134,135],"17":[15,98,106,107,108,110,134,135],"18":[98,106,107,108,110,134,135],"26":[15,98,106,107,108,110,134,135]},"packages/frontend/editor-ui/src/features/execution/executions/components/ExecutionsFilter.vue":{"41":[15,98,106,107,108,110,134,135],"63":[134],"66":[134],"67":[134],"69":[15,98,106,107,108,110,134,135],"87":[134],"104":[134],"113":[134],"120":[134],"127":[134],"139":[134],"155":[15,98,106,107,108,110,134,135],"205":[134],"219":[15,98,106,107,108,110,134,135],"222":[15,98,106,107,108,110,134,135],"233":[15,98,106,107,108,110,134,135],"249":[134],"256":[134],"300":[134],"352":[134],"364":[134],"373":[134],"375":[134],"378":[134],"410":[134],"429":[134],"455":[134],"477":[134],"501":[134]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsCard.vue":{"41":[98,106,107,108,110,134,135],"44":[98,106,107,108,110,134,135],"47":[106,134,135],"57":[98,106,107,108,110,134,135],"60":[98,106,107,108,110,134,135],"61":[98,106,107,108,110,134,135],"63":[98,106,107,108,110,134,135],"69":[98,106,107,108,110,134,135],"104":[98,106,107,108,110,134,135],"119":[135],"137":[98,106,107,108,110,134,135],"175":[98,106,107,108,110,134,135]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsInfoAccordion.vue":{"58":[15,98,106,107,108,110,134,135],"78":[15,98,106,107,108,110,134,135],"88":[15,98,106,107,108,110,134,135],"96":[15,98,106,107,108,110,134,135],"109":[15,98,106,107,108,110,134,135],"110":[15,98,106,107,108,110,134,135],"119":[107,110],"123":[15,98,106,107,108,110,134,135],"130":[15,98,106,107,108,110,134,135]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsLandingPage.vue":{"22":[15,98,106,107,108,110,134,135],"23":[15,98,106,107,108,110,134,135],"25":[135],"43":[135],"46":[135],"54":[15,98,106,107,108,110,134,135]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsList.vue":{"12":[15,98,106,107,108,110,134,135],"42":[15,98,106,107,108,110,134,135],"43":[98,106,107,108,110,134,135],"48":[15,98,106,107,108,110,134,135],"52":[107],"73":[15,98,106,135],"81":[15,98,106,107,108,110,134,135],"92":[110],"94":[134]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsPreview.vue":{"51":[98,106,107,108,110,134,135],"55":[98,106,107,108,110,134,135],"56":[98,106,107,108,110,134,135],"57":[98,106,107,108,110,134,135],"60":[98,106,107,108,110,134,135],"71":[98,106,107,108,110,134,135],"75":[98,106,107,108,110,134,135],"79":[107],"90":[98,106,107,108,110,134,135],"96":[106,107,108,110,134,135],"106":[106,107,108,110,134,135],"118":[98,106,107,108,110,134,135],"140":[98,106,107,108,110,134,135],"142":[98,106,107,108,110,134,135],"169":[107],"239":[135],"247":[135],"260":[98,106,107,108,110,134,135],"280":[98,106,107,108,110,134,135],"310":[98,106,107,108,110,134,135],"321":[106,107,108,110,134,135],"355":[98,106,107,108,110,134,135],"367":[98,106,107,108,110,134,135],"370":[106],"395":[106,134],"398":[106,134],"401":[106,134]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsSidebar.vue":{"26":[15,98,106,107,108,110,134,135],"63":[108,135],"70":[15,98,106,107,108,110,134,135],"79":[98,106,107,108,110,134,135],"83":[15,98,106,107,108,110,134,135],"87":[15,98,106,107,108,110,134,135],"97":[15,98,106,107,108,110,134,135],"98":[98,106,107,108,110,134,135],"107":[98,106,107,108,110,134,135],"116":[98,106,107,108,110,134,135],"125":[98,106,107,108,110,134,135],"136":[134],"143":[110],"147":[98,106,134],"169":[15,98,106,107,108,110,134,135],"176":[15,98,106,107,108,110,134,135],"216":[15,98,106,107,108,110,134,135],"221":[107,134],"229":[15,98,106,107,108,110,134,135],"232":[98,106,107,108,110,134,135]},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionHelpers.ts":{"24":[98,106,107,108,110,134,135],"69":[98,106,107,108,110,134,135],"74":[98,106,107,108,110,134,135],"87":[127,128]},"packages/frontend/editor-ui/src/features/execution/executions/views/WorkflowExecutionsView.vue":{"37":[15,98,106,107,108,110,134,135],"42":[15,98,106,107,108,110,134,135],"51":[15,98,106,107,108,110,134,135],"52":[98,106,107,108,110,134,135],"70":[15,98,106,107,108,110,134,135],"74":[15,98,106,107,108,110,134,135],"81":[15,98,106,107,108,110,134,135],"83":[98,106,107,108,110,134,135],"88":[15,98,106,107,108,110,134,135],"99":[15,98,106,135],"104":[15,98,106,107,108,110,134,135],"137":[15,98,106,107,108,110,134,135],"149":[15,98,106,107,108,110,134,135],"161":[110],"196":[134],"223":[107],"229":[107],"300":[108,135],"306":[15,98,106,107,108,110,134,135],"312":[108,135]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/AskAI/AskAI.vue":{"28":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","57":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","64":[103],"67":[103],"70":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","76":[103],"93":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","100":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","101":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","103":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","104":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","107":[103],"108":[103],"110":[103],"118":[103],"133":[103],"141":[103],"150":[103],"216":[103],"221":[103],"243":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","250":[103],"254":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","259":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","293":[103],"304":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","308":[103]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/CodeNodeEditor.vue":{"43":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","71":[96,103,117],"72":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","73":[10,96,103,117],"76":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","77":[29,35,96,97,98,102,103,117],"78":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","85":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","86":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","87":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","90":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","97":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","100":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","109":[29,35,80,96,97,98,102,103,117],"114":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","118":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","124":[103],"140":[103],"152":[10,80,103,117],"158":[10],"160":[10],"165":[10,80,103,117],"166":[10,80,103,117],"199":[103],"203":[103],"225":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","239":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","245":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","252":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","271":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","291":[35]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/linter.ts":{"23":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","29":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","38":[10,96,103,117],"62":[103],"68":[103],"95":[96,103,117],"136":[96,103,117],"138":[96,103,117],"142":[96,103,117],"144":[96,103,117],"146":[96,103,117],"151":[103],"180":[103],"222":[103],"230":[103],"257":[96,103,117],"264":[103],"288":[96,103,117],"298":[103],"321":[96,103,117],"328":[103],"329":[103],"346":[103],"352":[103],"377":[96,103,117],"399":[96,103,117],"415":[96,103,117],"422":[103],"466":[103],"513":[96,103,117],"554":[96,103,117],"588":[96,103,117],"599":[103],"626":[103],"632":[103],"633":[103]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/theme.ts":{"91":"b:AIQCYAgAQAAAAAEAxyEvhwAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/JsonEditor/JsonEditor.vue":{"33":"b:AAACQAAAQAAAAAAABCEPhwAAAAAA","43":"b:AAACQAAAQAAAAAAABCEPhwAAAAAA","71":"b:AAACQAAAQAAAAAAABCEPhwAAAAAA","80":"b:AAACQAAAQAAAAAAABCEPhwAAAAAA","84":"b:AAACAAAAQAAAAAAAAAEPBwAAAAAA","89":"b:AAACQAAAQAAAAAAABCEPhwAAAAAA","90":[104,112,113,114,115,121,122],"102":"b:AAACQAAAQAAAAAAABCEPhwAAAAAA","124":"b:AAACQAAAQAAAAAAABCEPhwAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/composables/useCodeEditor.ts":{"70":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","113":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","114":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","125":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","134":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","166":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","170":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","181":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","185":[10,35,80,96,103,117],"195":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","203":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","224":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","239":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","253":[10,80,103,117],"262":[117],"267":[117],"275":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","370":[10,29,35,96,97,98,102,103,117],"382":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","386":[29,35,80,96,97,98,102,103,117],"417":[10,103,117],"443":[10,103,117]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/useTypescript.ts":{"28":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","44":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","68":[10,103],"116":[10,103],"124":[10,103],"134":"b:AAQAIAgAAAAAAAEAxwAgAAAAAAAA","138":[103],"146":[29,35,80,96,97,98,102,103,117]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/ActionItem.vue":{"19":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","35":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","40":[65],"42":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","45":[65],"75":[65],"88":[65],"94":[65],"99":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","111":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","117":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Modes/ActionsMode.vue":{"41":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","63":"b:MAgRoAAQRAIiAAAAAAEgPSIAAAAA","66":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","69":"b:MAgQoAgQIAIjAAAgxwFlPSIAAAAA","76":"b:AAABIAAQRAACAAAAAAAgOQAAAAAA","86":"b:MAgRoAAQRAIiAAAAAAEgPSIAAAAA","92":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","93":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","98":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","100":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","102":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","104":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","109":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","118":"b:MAgRoAAQRAIiAAAAAAEgPSIAAAAA","127":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","130":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","137":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","139":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","151":[65],"157":[65],"161":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","165":[65],"169":[65],"171":[65],"176":"b:MAgRoAgQRAIjAAAgxwElPSIAAAAA","189":"b:MAgRoAgQRAIjAAAgxwElPSIAAAAA","212":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","215":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","223":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","234":[65],"238":[65],"258":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","262":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","263":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","280":"b:MAgRoAAQRAIiAAAAAAEgPSIAAAAA","293":[50,65,117,120,123,124],"299":[50,65,117,120,123,124],"311":[65],"320":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA","335":[54,65,120,123,124],"339":[65],"341":[65]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/OrderSwitcher.vue":{"11":"b:MAgRoAgQZAIjAAAgxwFlPSIAAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/NoResults.vue":{"20":[51,65,98,102],"41":[51,65,98,102],"46":[51,65,98,102],"56":[51,65,98,102]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/NoResultsIcon.vue":{"8":[51,65,98,102]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeDisabledStrikeThrough.vue":{"6":"b:AAAAAAAAAAAAAAAgRVAAAOAAgAAA","10":"b:AAAAAAAAAAAAAAAgRVAAAOAAgAAA","19":"b:AAAAAAAAAAAAAAAgRVAAAOAAgAAA"},"packages/localhost-43531/assets/shield-alt-B7h2cjjC.js":{"8":[98]},"packages/@n8n/db/src/repositories/tag.repository.ts":{"11":[108,126,130,134,135],"15":[108,126,130,134,135],"26":[108,126,130,134,135],"35":[108,126,130,134,135],"47":[108,126,130,134,135],"64":[108,126,130,134,135],"76":[108,126,130,134,135]},"packages/nodes-base/nodes/Schedule/GenericFunctions.ts":{"7":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","40":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","105":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","110":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","142":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA"},"packages/nodes-base/nodes/Schedule/ScheduleTrigger.node.ts":{"429":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","455":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","494":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","507":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA","522":"b:ACoAAAAAAEAAAQAASMgDRRAAACAA"},"packages/frontend/editor-ui/src/app/components/DependencyPill.vue":{"37":[45,69,5,126,137,139],"39":[45,69,5,126,137,139],"45":[45,69,5,126,137,139],"47":[45,69,5,126,137,139],"53":[45,69,5,126,137,139],"95":[45,69,5,126,137,139],"219":[45,69,5,126,137,139],"222":[45,69,5,126,137,139]},"packages/frontend/editor-ui/src/app/components/IntersectionObserved.vue":{"6":[65,80,126,130,136],"19":[65,80,126,130,136],"29":[65,130],"34":[65,80,126,130,136]},"packages/frontend/editor-ui/src/app/components/IntersectionObserver.vue":{"6":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","26":[65,130,132],"32":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","43":[65,80,126,130,136],"44":[65,80,126,130,136],"54":[65,80,126,130,136],"60":[65,130],"64":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA"},"packages/frontend/editor-ui/src/features/ndv/panel/components/WireMeUp.vue":{"8":"b:IAABIAAQAAAhEAAAAgAgRQAAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FixedCollection/FixedCollectionParameterLegacy.vue":{"66":"b:MJIZwAUQFEIgAQAgQoD/ZyAAAAAA","71":"b:AJIYQAUABEIBAQAgQoBvZyAAAAAA","73":"b:AJIYQAUABEIBAQAgQoBvZyAAAAAA","76":"b:AJIYQAUABEIBAQAgQoBvZyAAAAAA","80":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","81":"b:MAAZgAAQEAIgAAAAAADyAyAAAAAA","82":"b:AJIYQAUABEIAAQAgQoBvZyAAAAAA","83":"b:AJIYQAUABEIBAQAgQoBvZyAAAAAA","85":"b:MJIZwAUQFEIgAQAgQoD/ZyAAAAAA","92":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","94":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","105":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","108":[52,57,64],"111":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","115":[20,57],"122":[20,57],"126":[20,57],"140":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","155":[20,57],"160":[20,57],"191":[20,57],"196":"b:AJIYQAUABEIBAQAgQoBvZyAAAAAA","207":[20,57],"232":"b:AJIYQAUABEIBAQAgQoBvZyAAAAAA","242":[20,57],"263":[57],"276":[57],"299":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","300":"b:ABAYgAQQAAIhAAAAAgCDAQAAAAAA","307":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","339":[19,20,57,97,113,120],"362":[19,20,57,97,113,120],"368":[19,20,57,97,113,120],"382":[19,20,57,97,113,120],"389":[19,20,57,64,97,112,113],"421":"b:AJIYQAUABEIAAQAgQoBvZyAAAAAA","423":"b:MJIZwAUQFEIhAQAgQoD/ZyAAAAAA","439":"b:AJIYQAUABEIBAQAgQoBvZyAAAAAA","461":"b:AJIYQAUABEIAAQAgQoBvZyAAAAAA","531":[57],"532":[20,57],"636":[19,20,57,97,113,120],"644":[113,117,118,121]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputHint.vue":{"13":"b:AIIBAAAABMABEUIgQsmvXyAAAAAA","21":"b:AIIBAAAABMABEUIgQsmvXyAAAAAA","23":[72],"27":"b:AAIAAAAAAIAAAUIAAEgPHwAAAAAA","39":"b:AIIBAAAABMABEUIgQsmvXyAAAAAA","43":"b:AIIBAAAABMABEUIgQsmvXyAAAAAA"},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsContainer.vue":{"20":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","37":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","41":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","42":[65,80,126,130,136],"48":[65,80,126,130,136],"55":[65,80,126,130,136],"63":[65,80,126,130,136],"81":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","87":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","95":[65,80,126,130,136],"101":[65,130],"112":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","117":[65,130,132],"120":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","131":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","134":[65,80,126,130,136],"137":[65,130],"152":[65,80,126,130,136]},"packages/frontend/editor-ui/src/features/shared/tags/components/WorkflowTagsContainer.vue":{"16":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","22":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA","24":[65,130],"26":"b:AAAAAAAAAAACAAEAAAAAQBwNAAAA"},"packages/core/src/errors/error-reporter.ts":{"70":[142,48,91,117,120,123,138,139],"87":[142,48,91,117,120,123,138,139],"95":[142,48,91,117,120,123,138,139],"123":[142,48,91,117,120,123,138,139],"125":[142,48,91,117,120,123,138,139],"129":[142,48,91,117,120,123,138,139],"147":[142,48,91,117,120,123,138,139],"153":[142,48,91,117,120,123,138,139],"158":[142,48,91,117,120,123,138,139],"176":[142,48,91,117,120,123,138,139],"200":[142,48,91,117,120,123,138,139],"201":[142,48,91,117,120,123,138,139],"237":[142,48,91,117,120,123,138,139],"238":[142,48,91,117,120,123,138,139],"241":[142,48,91,117,120,123,138,139],"268":[142,48,91,117,120,123,138,139],"272":[142,48,91,117,120,123,138,139],"278":[142,48,91,117,120,123,138,139],"325":[142,48,91,117,120,123,138,139],"331":[142,48,91,117,120,123,138,139],"335":[142,48,91,117,120,123,138,139],"339":[142,48,91,117,120,123,138,139],"346":[142,48,91,117,120,123,138,139],"351":[142,48,91,117,120,123,138,139],"355":[142,48,91,117,120,123,138,139],"359":[142,48,91,117,120,123,138,139],"369":[142,48,91,117,120,123,138,139],"375":[142,48,91,117,120,123,138,139],"391":[142,48,91,117,120,123,138,139],"393":[142,48,91,117,120,123,138,139]},"packages/core/src/execution-engine/node-execution-context/hook-context.ts":{"21":[139],"34":[139],"38":[139],"42":[139],"54":[139],"61":[139]},"packages/nodes-base/nodes/Google/GenericFunctions.ts":{"70":[11,44,121,123,139],"125":[11,44,121,123,139]},"packages/nodes-base/nodes/Google/Sheet/GoogleSheets.node.ts":{"8":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v1/GenericFunctions.ts":{"20":[123,139],"72":[123,139],"96":[123,139],"99":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheet.ts":{"48":[123,139],"66":[123,139],"78":[123,139],"97":[123,139],"119":[123,139],"138":[123,139],"156":[123,139],"175":[123,139],"194":[123,139],"218":[123,139],"250":[123,139],"270":[123,139],"286":[123,139],"300":[123,139],"386":[123,139],"470":[123,139],"542":[123,139],"574":[123,139],"576":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheetsV1.node.ts":{"32":[123,139],"42":[123,139],"68":[123,139],"96":[123,139],"125":[123,139],"227":[123,139],"299":[123,139],"413":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/GoogleSheetsV2.node.ts":{"15":[123,139],"29":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts":{"9":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/append.operation.ts":{"213":[123,139],"326":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.ts":{"264":[123,139],"365":[123,139],"374":[123,139],"392":[123,139],"424":[123,139],"447":[123,139],"521":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/clear.operation.ts":{"160":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/create.operation.ts":{"77":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/delete.operation.ts":{"114":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/read.operation.ts":{"170":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/remove.operation.ts":{"7":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts":{"253":[123,139],"345":[123,139],"354":[123,139],"371":[123,139],"403":[123,139],"430":[123,139],"496":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/create.operation.ts":{"118":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/delete.operation.ts":{"68":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/utils/readOperation.ts":{"12":[123,139],"110":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts":{"39":[123,139],"47":[123,139],"58":[123,139],"74":[123,139],"93":[123,139],"117":[123,139],"136":[123,139],"149":[123,139],"165":[123,139],"178":[123,139],"186":[123,139],"204":[123,139],"220":[123,139],"262":[123,139],"285":[123,139],"331":[123,139],"365":[123,139],"378":[123,139],"392":[123,139],"409":[123,139],"439":[123,139],"444":[123,139],"459":[123,139],"478":[123,139],"492":[123,139],"543":[123,139],"625":[123,139],"673":[123,139],"801":[123,139],"831":[123,139],"833":[123,139],"855":[123,139],"878":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.ts":{"24":[123,139],"50":[123,139],"56":[123,139],"69":[123,139],"79":[123,139],"82":[123,139],"99":[123,139],"101":[123,139],"106":[123,139],"108":[123,139],"115":[123,139],"117":[123,139],"120":[123,139],"128":[123,139],"134":[123,139],"135":[123,139],"146":[123,139],"149":[123,139],"151":[123,139],"156":[123,139],"161":[123,139],"162":[123,139],"166":[123,139],"199":[123,139],"206":[123,139],"208":[123,139],"211":[123,139],"238":[123,139],"272":[123,139],"281":[123,139],"282":[123,139],"305":[123,139],"310":[123,139],"311":[123,139],"326":[123,139],"334":[123,139],"336":[123,139],"351":[123,139],"358":[123,139],"364":[123,139],"368":[123,139],"369":[123,139],"371":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/credentialTest.ts":{"9":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/listSearch.ts":{"13":[123,139],"42":[123,139],"51":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/loadOptions.ts":{"8":[123,139],"39":[123,139],"83":[123,139],"92":[123,139],"95":[123,139],"99":[123,139],"109":[123,139],"113":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/resourceMapping.ts":{"12":[123,139],"52":[123,139],"54":[123,139]},"packages/nodes-base/nodes/Google/Sheet/v2/transport/index.ts":{"15":[123,139],"82":[123,139]},"packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.ts":{"16":[139],"326":[139],"329":[139],"332":[139],"335":[139],"343":[139],"390":[139],"424":[139],"453":[139]},"packages/nodes-base/nodes/Hubspot/V1/GenericFunctions.ts":{"15":[139],"78":[139],"114":[139],"125":[139],"1923":[139],"1925":[139],"1930":[139],"1933":[139],"1948":[139],"1957":[139],"1967":[139],"1978":[139],"1994":[139]},"packages/nodes-base/nodes/If/If.node.ts":{"8":[13,59,105,107,110,116,118,139]},"packages/nodes-base/nodes/If/V1/IfV1.node.ts":{"16":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","310":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","319":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","321":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","327":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","329":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","331":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","333":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","335":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","337":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","339":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","340":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","341":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","343":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","345":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","347":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","349":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","351":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","353":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","359":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","367":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","381":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA","398":"b:ACAAAAAAAAgAAAAAAEpQAgAIAAAA"},"packages/nodes-base/nodes/If/V2/IfV2.node.ts":{"21":"b:ACAAAAAAAAgAAAAAAEpwAAAIAAAA","96":"b:ACAAAAAAAAgAAAAAAEpwAAAIAAAA","100":"b:ACAAAAAAAAgAAAAAAEpwAAAIAAAA"},"packages/nodes-base/nodes/If/V2/utils.ts":{"3":"b:ACAAAAAAAAhAAAAAAkhSAAAIAAAA","7":"b:ACAAAAAAAAhAAAAAAkhSAAAIAAAA","8":"b:ACAAAAAAAAhAAAAAAkhSAAAIAAAA"},"packages/nodes-base/nodes/NoOp/NoOp.node.ts":{"26":"b:AAAAAAAAABhhCAAAAAgGAgAIAAEA"},"packages/nodes-base/nodes/StickyNote/StickyNote.node.ts":{"57":[70,101,107,127,139]},"packages/workflow/src/errors/abstract/execution-base.error.ts":{"25":"b:AIIAAAAmAAAAAAAAAEwACQBIAAAA","41":"b:AIIAAAAmAAAAAAAAAEwACQBIAAAA"},"packages/workflow/src/errors/abstract/node.error.ts":{"40":"b:AIIAIAAmAAAAAAAAAAwACQBIAAAA","78":"b:AIIAIAAmAAAAAAAAAAwACQBIAAAA","98":"b:AIIAIAAmAAAAAAAAAAwACQBIAAAA","106":"b:AIIAIAAmAAAAAAAAAAwACQBIAAAA","138":"b:AIIAIAAmAAAAAAAAAAwACQBIAAAA","148":"b:AIIAIAAmAAAAAAAAAAwACQBIAAAA"},"packages/workflow/src/errors/node-operation.error.ts":{"12":[9,15,142,41,42,107,117,139],"28":[9,15,142,41,42,107,117,139]},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-pin.svg":{"11":"b:AABAAAAAAABAAAAASI1/BwEJAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/edit-image.svg":{"11":[50,51,139]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/if.svg":{"11":"b:ACAAAAAAAAgAAAAAAEpwAgAJAAAA"},"packages/@n8n/design-system/src/components/N8nMarkdown/Markdown.vue":{"37":[70,79,101,107,127,136,138,139],"82":[70,79,101,107,127,136,138,139],"89":[139],"110":[101,136,139],"143":[70,79,101,107,127,136,138,139],"200":[101],"218":[70,79,101,107,127,136,138,139],"236":[138,139]},"packages/@n8n/design-system/src/components/N8nMarkdown/youtube.ts":{"34":[70,79,101,107,127,136,138,139],"42":[70,101,107,127,136,139]},"packages/@n8n/design-system/src/components/N8nSticky/Sticky.vue":{"16":[70,79,101,107,127,136,139],"28":[70,79,101,107,127,136,139],"32":[70,79,101,107,127,136,139],"36":[70,79,101,107,127,136,139],"38":[70,79,101,107,127,136,139],"43":[70,79,101,107,127,136,139],"58":[70,79,101,107,127,136,139],"65":[70,79,101,107,127,136,139],"99":[70,79,101,107,127,136,139]},"packages/@n8n/design-system/src/utils/markdown.ts":{"36":[139]},"packages/frontend/editor-ui/src/app/components/CollectionWorkflowCard.vue":{"12":[139],"13":[139],"17":[139]},"packages/frontend/editor-ui/src/app/components/NodeList.vue":{"19":[138,139],"23":[139],"27":[138,139],"31":[138,139],"36":[138,139],"42":[138,139]},"packages/frontend/editor-ui/src/app/views/WorkflowOnboardingView.vue":{"17":[139],"55":[139]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeStickyNote.vue":{"15":[151,70,79,101,107,127,136,139],"27":[151,70,79,101,107,127,136,139],"29":[151,70,79,101,107,127,136,139],"39":[151],"57":[151],"63":[151],"75":[151],"83":[151,101],"91":[151,70,79,101,107,127,136,139],"95":[151],"98":[151,70,79,101,107,127,136,139]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/toolbar/CanvasNodeStickyColorSelector.vue":{"10":[151,70,79,101,107,127,136,139],"17":[151,101],"21":[151,101],"27":[151],"31":[151,101],"35":[151],"40":[151],"44":[151],"49":[151],"53":[151,101],"60":[151],"61":[151],"66":[151,70,79,101,107,127,136,139],"70":[151],"73":[151,70,79,101,107,127,136,139],"86":[151,70,79,101,107,127,136,139],"95":[151,101],"98":[151,101],"135":[151]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateCard.vue":{"12":[138,139],"37":[138],"41":[139],"43":[138,139],"65":[138,139],"71":[138,139],"75":[138,139]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateFilters.vue":{"15":[139],"34":[139],"38":[139],"43":[139],"44":[139],"52":[139],"60":[139],"68":[139],"69":[139],"80":[139],"81":[139],"91":[139],"108":[139],"118":[139]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateList.vue":{"38":[138,139],"47":[138,139],"71":[139],"74":[138],"83":[138,139],"90":[138,139],"97":[139],"98":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplatesInfoCard.vue":{"21":[139],"29":[139]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplatesInfoCarousel.vue":{"11":[139],"37":[139],"64":[139],"65":[139],"67":[139],"73":[139],"74":[139],"76":[139],"82":[139],"95":[139],"101":[139],"112":[139],"113":[139],"115":[139]},"packages/frontend/editor-ui/src/features/workflows/templates/recommendations/components/RecommendedTemplateCard.vue":{"35":[139],"38":[139],"43":[139],"46":[139],"71":[139],"82":[139],"101":[139],"109":[139],"121":[139],"137":[139],"148":[139],"177":[139],"187":[139]},"packages/frontend/editor-ui/src/features/workflows/templates/utils/templateActions.ts":{"30":[138],"72":[138],"100":[139],"128":[138,139],"132":[138,139],"137":[138,139]},"packages/frontend/editor-ui/src/features/workflows/templates/views/TemplatesSearchView.vue":{"51":[139],"54":[139],"61":[139],"65":[139],"69":[139],"73":[139],"87":[139],"105":[139],"106":[139],"110":[139],"115":[139],"125":[139],"129":[139],"137":[139],"149":[139],"156":[139],"166":[139],"173":[139],"178":[139],"192":[139],"196":[139],"206":[139],"220":[139],"258":[139],"277":[139],"285":[139],"297":[139],"310":[139],"319":[139],"330":[139],"379":[139],"386":[139],"410":[139]},"packages/frontend/editor-ui/src/features/workflows/templates/views/TemplatesWorkflowView.vue":{"35":[139],"39":[139],"41":[139],"58":[139],"68":[139],"69":[139],"80":[139],"102":[139],"119":[139],"126":[139],"160":[139],"165":[139]},"packages/@n8n/backend-common/src/index.ts":{"5":"b:APsCGX5wALXxGFQEAFACEZjUJKIA","6":"b:APsCGX5wALXxGFQEAFACEZjUJKIA","7":"b:APsCGX5wALXxGFQEAFACEZjUJKIA","9":"b:APsCGX5wALXxGFQEAFACEZjUJKIA","10":"b:APsCGX5wALXxGFQEAFACEZjUJKIA","14":"b:APsCGX5wALXxGFQEAFACEZjUJKIA"},"packages/@n8n/db/src/index.ts":{"15":"b:INsCXX6gAbXyCHQEAFoCEYjSBDAA","17":"b:INsCXX6gAbXyCHQEAFoCEYjSBDAA","18":"b:INsCXX6gAbXyCHQEAFoCEYjSBDAA","19":"b:INsCXX6gAbXyCHQEAFoCEYjSBDAA","34":"b:INsCXX6gAbXyCHQEAFoCEYjSBDAA","42":"b:INsCXX6gAbXyCHQEAFoCEYjSBDAA","44":"b:INsCXX6gAbXyCHQEAFoCEYjSBDAA"},"packages/@n8n/db/src/utils/sql.ts":{"4":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA"},"packages/cli/src/middlewares/list-query/dtos/base.filter.dto.ts":{"7":"b:YAgAXQJwAAAwAFQEAAIAABgAAAAA","23":"b:YAgAXQJwAAAwAFQEAAIAABgAAAAA"},"packages/cli/src/modules/insights/database/repositories/insights-by-period-query.helper.ts":{"23":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","55":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA"},"packages/cli/src/modules/insights/database/repositories/insights-by-period.repository.ts":{"38":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","39":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","40":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","41":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","42":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","43":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","44":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","51":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","55":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","79":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","83":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","87":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","97":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","111":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","119":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","137":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","160":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","204":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","240":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","259":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","305":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","310":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","323":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","392":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","407":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","431":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA"},"packages/cli/src/modules/insights/insights.controller.ts":{"22":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","26":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","43":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","63":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","85":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","102":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","109":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","123":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","127":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","141":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","157":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA"},"packages/cli/src/modules/insights/insights.service.ts":{"17":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","28":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","37":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","46":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","53":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","59":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","64":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","69":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","91":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","99":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","128":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","163":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","193":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","214":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","247":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA","272":"b:IAgAXQIgAAAyAHQEAAIAAAgAAAAA"},"packages/nodes-base/nodes/Form/Form.node.ts":{"354":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","437":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","445":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","455":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA"},"packages/nodes-base/nodes/Form/utils/formCompletionUtils.ts":{"21":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","25":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","32":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","51":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA"},"packages/nodes-base/nodes/Form/utils/formNodeUtils.ts":{"14":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","84":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA","87":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA"},"packages/nodes-base/nodes/Form/utils/utils.ts":{"58":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","71":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","149":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","150":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","153":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","154":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","166":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","186":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","198":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","209":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","217":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","296":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","316":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","338":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","344":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","383":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","434":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","463":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","541":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","581":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","633":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","634":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","643":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","645":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","661":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","682":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","711":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","749":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","758":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","932":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA","961":"b:ACgYAAAQEINABQAAAEAAAKAkAAAA"},"packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts":{"30":[11,44,121],"146":[11,44,121],"209":[11,44,121],"233":[11,44,121],"255":[11,44,121],"278":[11,44,121],"286":[11,44,121],"340":[11,44,121],"397":[11,44,121],"405":[11,44,121],"425":[11,44,121],"465":[11,44,121],"498":[11,44,121],"499":[11,44,121],"509":[11,44,121],"514":[11,44,121],"518":[11,44,121],"520":[11,44,121],"527":[11,44,121],"539":[11,44,121],"556":[11,44,121]},"packages/nodes-base/nodes/Google/Gmail/Gmail.node.ts":{"8":[11,44,121]},"packages/nodes-base/nodes/Google/Gmail/utils/replyToEmail.ts":{"15":[11,44,121],"70":[11,44,121],"75":[11,44,121],"92":[11,44,121],"102":[11,44,121]},"packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts":{"134":[11,44,121],"147":[11,44,121],"260":[11,44,121],"267":[11,44,121],"275":[11,44,121],"347":[11,44,121],"354":[11,44,121],"362":[11,44,121],"417":[11,44,121],"421":[11,44,121],"587":[11,44,121],"595":[11,44,121],"603":[11,44,121]},"packages/nodes-base/nodes/Google/Gmail/v2/GmailV2.node.ts":{"157":[11,44,121],"174":[11,44,121]},"packages/nodes-base/nodes/Google/Gmail/v2/loadOptions.ts":{"5":[11,44,121],"29":[11,44,121]},"packages/nodes-base/nodes/Google/Gmail/v2/utils/draft.ts":{"7":[11,44,121],"14":[11,44,121],"21":[11,44,121],"32":[11,44,121]},"packages/nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts":{"40":"b:AJsCoA4wELXgCAAAElwAEIgQAgAA","41":"b:AJsCoA4wELXgCAAAElwAEIgQAgAA"},"packages/nodes-base/nodes/Slack/Slack.node.ts":{"8":[11,13,44,52,63,72]},"packages/nodes-base/nodes/Slack/V1/GenericFunctions.ts":{"16":[11,13,44,52,63,72],"19":[11,13,44,52,63,72],"20":[11,13,44,52,63,72],"26":[11,13,44,52,63,72],"27":[11,13,44,52,63,72],"33":[11,13,44,52,63,72],"104":[11,13,44,52,63,72],"140":[11,13,44,52,63,72]},"packages/nodes-base/nodes/Slack/V1/SlackV1.node.ts":{"76":[11,13,44,52,63,72],"190":[11,13,44,52,63,72],"202":[11,13,44,52,63,72],"216":[11,13,44,52,63,72],"236":[11,13,44,52,63,72],"250":[11,13,44,52,63,72],"268":[11,13,44,52,63,72],"476":[11,13,44,52,63,72],"486":[11,13,44,52,63,72]},"packages/nodes-base/nodes/Slack/V2/GenericFunctions.ts":{"34":[11,13,44,52,63,72],"41":[11,13,44,52,63,72],"44":[11,13,44,52,63,72],"45":[11,13,44,52,63,72],"51":[11,13,44,52,63,72],"52":[11,13,44,52,63,72],"58":[11,13,44,52,63,72],"153":[11,13,44,52,63,72],"166":[11,13,44,52,63,72],"202":[11,13,44,52,63,72],"264":[11,13,44,52,63,72],"296":[11,13,44,52,63,72],"371":[11,13,44,52,63,72],"381":[11,13,44,52,63,72],"408":[11,13,44,52,63,72],"424":[11,13,44,52,63,72],"456":[11,13,44,52,63,72]},"packages/nodes-base/nodes/Slack/V2/SlackV2.node.ts":{"59":[11,13,44,52,63,72],"174":[11,13,44,52,63,72],"191":[11,13,44,52,63,72],"211":[11,13,44,52,63,72],"216":[11,13,44,52,63,72],"221":[11,13,44,52,63,72],"228":[11,13,44,52,63,72],"236":[11,13,44,52,63,72],"241":[11,13,44,52,63,72],"246":[11,13,44,52,63,72],"257":[11,13,44,52,63,72],"269":[11,13,44,52,63,72],"283":[11,13,44,52,63,72],"303":[11,13,44,52,63,72],"317":[11,13,44,52,63,72],"336":[11,13,44,52,63,72],"350":[11,13,44,52,63,72],"370":[11,13,44,52,63,72],"594":[11,13,44,52,63,72],"657":[11,13,44,52,63,72],"667":[11,13,44,52,63,72],"1459":[11,13,44,52,63,72],"1504":[11,13,44,52,63,72],"1532":[11,13,44,52,63,72]},"packages/nodes-base/utils/sendAndWait/configureWaitTillDate.util.ts":{"4":"b:ACgQAAAQEIMABQAAAAAAAAAEAAAA"},"packages/nodes-base/utils/sendAndWait/email-templates.ts":{"82":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","147":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA"},"packages/nodes-base/utils/sendAndWait/utils.ts":{"58":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","154":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","309":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","339":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","349":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","352":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","482":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","545":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","553":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA","587":"b:ACgAAAAQEIEABQAAAAgAAAAEAAAA"},"packages/@n8n/design-system/src/components/AskAssistantButton/AskAssistantButton.vue":{"8":[9,10,11],"26":[9,10,11]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/BaseMessage.vue":{"16":[9,10,11,12,13,18],"26":[9,10,11,12,13,18]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/MessageWrapper.vue":{"22":[9,10,11,12,13,18],"30":[9,10,11,12,13,18],"33":[9,10,11,12,13,18],"47":[10],"48":[10]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/TextMessage.vue":{"31":[12],"40":[9,10,11,12,13,18],"42":[9,10,11,12,13,18],"52":[9,10,11,12,13,18],"53":[9,10,11,12,13,18],"58":[9,10,11,12,13,18],"80":[9,10,11,12,13,18],"89":[9,10,11,12,13,18],"137":[12]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/ThinkingMessage.vue":{"14":[9,10,11,12,13,18],"21":[9,10,11,12,13,18],"23":[9,10,11,12,13,18],"32":[9,10,11,12,13,18],"38":[9,10,11,12,13,18],"48":[9,10,11,12,13,18],"64":[9,10,11,12,13,18],"65":[9,10,11,12,13,18]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/helpers.ts":{"10":[9,10,11,12,13,18]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/useMarkdown.ts":{"6":[9,10,11,12,13,18],"20":[9,10,11,12,13,18]},"packages/@n8n/design-system/src/components/BlinkingCursor/BlinkingCursor.vue":{"2":[9,10,11,12,13]},"packages/@n8n/design-system/src/components/InlineAskAssistantButton/InlineAskAssistantButton.vue":{"8":[9,10,11,12],"37":[9,10,11,12],"39":[9,10,11],"42":[9,10,11,12]},"packages/@n8n/design-system/src/types/assistant.ts":{"165":[9,10,11,12,13,18],"221":[9,10,11,12,13,18],"227":[9,10,11,12,13,18],"239":[9,10,11,12,13,18]},"packages/frontend/editor-ui/src/app/components/CopyInput.vue":{"37":[107],"54":[11,44,46,64,84,107,123,138]},"packages/frontend/editor-ui/src/features/ai/assistant/assistant.api.ts":{"15":[13,151,18],"42":[9,10,11,12,151],"71":[10,151],"83":[151,103],"95":[151],"105":[151],"125":[13,151,18],"132":[151],"136":[151],"143":[151],"151":[151],"160":[151]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/AskAssistantChat.vue":{"13":[9,10,11,12],"27":[9,10,11,12],"32":[9,10,11,12],"34":[9,10,11,12],"39":[9,12],"50":[9,12],"65":[10],"72":[10],"80":[9,10,11,12],"84":[9,10,11,12],"87":[9,12],"96":[9],"108":[9,10,11,12]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/AskAssistantFloatingButton.vue":{"13":[9,10,11,65],"21":[9,10,11,65],"35":[65],"39":[65],"59":[9,10,11,65],"71":[65],"76":[9,10,11,65]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/AskModeEmptyState.vue":{"5":[9,10,11,12],"6":[9,10,11,12]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/GoogleAuthButton.vue":{"2":[11,44,46,123]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceLocator/ResourceLocator.vue":{"76":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","166":[120,123],"175":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","188":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","195":[117,123],"198":[117,123],"207":[117,123],"220":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","233":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","237":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","241":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","242":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","254":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","290":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","300":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","302":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","315":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","317":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","320":[123],"328":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","330":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","337":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","341":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","342":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","343":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","346":[117,123],"350":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","364":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","370":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","376":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","380":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","467":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","473":[117,123],"481":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","492":[120,123],"502":[117,123],"522":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","523":[117,120,123],"543":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","544":[15,16,31,44,69,76,120,123],"565":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","569":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","574":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","579":"b:AIABAAAAFAAgEAAgAECgASAAAAAA","589":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","595":[120,123],"622":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","645":[123],"665":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","667":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","672":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","680":[120,123],"697":[123],"703":[123],"709":[120,123],"728":[120,123],"750":[117,123],"757":[123],"769":[117,123],"780":[117,123],"897":[123],"910":[123],"918":[117,120,123],"943":"b:MIgBgAAQEAAgEAAgAECgCSAAAAAA","951":[117,123],"957":[117,123],"970":[117,120,123],"1013":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","1043":[117,123],"1050":[117,123],"1055":[123],"1083":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","1103":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","1105":"b:MIgBgAAQFAAgEAAgAECgCCAAAAAA","1112":"b:MIgBgAAQFAAgEAAgAECgCCAAAAAA","1134":"b:MIgBgAAQFAAgEAAgAECgCSAAAAAA","1186":"b:AIgBAAAQFAAAEAAgAECgCQAAAAAA","1210":[120,123]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceLocator/ResourceLocatorDropdown.vue":{"13":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","58":[123],"74":[69,123,129],"76":[123,129],"116":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","117":[69,117,123,129],"123":[69,117,123,129],"132":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","136":"b:AIABAAAAFAAgEAAgAECgASMAAAAA","196":[129],"200":[129],"213":[69,129],"216":[69,129],"227":[129],"242":[120,123],"248":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","250":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","264":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","276":"b:MIgBgAAQFAAgEAAgAECgCSMAAAAA","279":[69,117,123,129],"301":[69,123,129],"338":[69,129],"340":[69,129],"348":[123,129],"359":[129],"360":[129],"387":[123,129]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/LabelItem.vue":{"11":"b:MAgAoAAQQAAiAAAgAAAlLSAAAAAA"},"packages/localhost-37381/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[11,23,48,75,4,109,129,135]},"packages/localhost-37381/assets/chunk-CC9Q-vWm.js":{"8":[11,23,48,75,4,109,129,135],"9":[11,23,48,75,4,109,129,135],"10":[11,23,48,75,4,109,129,135],"19":[11,23,48,75,4,109,129,135],"23":[11,23,48,75,4,109,129,135],"29":[11,23,48,75,4,109,129,135],"33":[11,23,48,75,4,109,129,135],"34":[11,23,48,75,4,109,129,135]},"packages/localhost-37381/assets/shield-alt-B7h2cjjC.js":{"8":[11,4]},"packages/@n8n/db/src/repositories/folder.repository.ts":{"11":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","15":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","23":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","28":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","39":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","51":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","56":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","66":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","85":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","98":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","104":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","136":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","140":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","144":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","148":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","165":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","198":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","209":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","225":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","235":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","240":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","254":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","260":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","276":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","295":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","312":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","352":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","386":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA","389":"b:4ACAXQIAAAA+ABQEAAIAABgAAAAA"},"packages/@n8n/db/src/utils/is-string-array.ts":{"1":"b:YACAXQIEAAA2ABQEAAIAABgCQCAA","2":"b:YACAXQIEAAA2ABQEAAIAABgCQCAA"},"packages/@n8n/decorators/src/timed.ts":{"16":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA","17":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA","18":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA","23":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA"},"packages/cli/src/middlewares/list-query/dtos/pagination.dto.ts":{"6":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA","15":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA"},"packages/cli/src/middlewares/list-query/dtos/workflow.filter.dto.ts":{"55":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA"},"packages/cli/src/middlewares/list-query/dtos/workflow.sort-by.dto.ts":{"6":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA","13":"b:YACAXQIAAAA2ABQEAAIAABgAAAAA"},"packages/frontend/editor-ui/src/app/components/Badge.vue":{"8":[23],"17":[23]},"packages/frontend/editor-ui/src/app/components/VersionCard.vue":{"13":[23],"17":[23]},"packages/@n8n/api-types/src/dto/data-table/list-data-table-content-query.dto.ts":{"12":[47,48],"39":[47,48]},"packages/@n8n/db/src/utils/transaction.ts":{"8":[36,37,38,47,48,156]},"packages/cli/src/modules/data-table/data-table-aggregate.service.ts":{"13":[48,137],"20":[48,137],"21":[48,137],"23":[48,137],"30":[48,137],"33":[48,137]},"packages/cli/src/modules/data-table/data-table-column.repository.ts":{"21":[47,48],"31":[47,48],"43":[47,48],"62":[47,48],"72":[47,48],"76":[47,48],"88":[47,48],"98":[47,48],"99":[47,48],"124":[47,48],"125":[47,48],"138":[47,48],"144":[47,48],"163":[47,48],"169":[47,48],"189":[47,48],"190":[47,48],"195":[47,48]},"packages/cli/src/modules/data-table/data-table-ddl.service.ts":{"21":[47,48],"23":[47,48],"28":[47,48],"42":[47,48],"43":[47,48],"51":[47,48],"57":[47,48],"62":[47,48],"68":[47,48],"73":[47,48],"80":[47,48]},"packages/cli/src/modules/data-table/data-table-rows.repository.ts":{"56":[47,48],"138":[47,48],"140":[47,48],"146":[47,48],"167":[47,48],"208":[47,48],"215":[47,48],"221":[47,48],"222":[47,48],"261":[47,48],"273":[47,48],"294":[47,48],"302":[47,48],"307":[47,48],"308":[47,48],"342":[47,48],"347":[47,48],"366":[47,48],"372":[47,48],"409":[47,48],"417":[47,48],"449":[47,48],"455":[47,48],"456":[47,48],"477":[47,48],"484":[47,48],"499":[47,48],"513":[47,48],"534":[47,48],"546":[47,48],"564":[47,48],"573":[47,48],"574":[47,48],"593":[47,48],"618":[47,48],"629":[47,48],"655":[47,48],"664":[47,48],"683":[47,48],"692":[47,48],"700":[47,48]},"packages/cli/src/modules/data-table/data-table.controller.ts":{"51":[47,48],"57":[47,48],"77":[47,48],"87":[47,48],"104":[47,48],"129":[47,48],"143":[47,48],"167":[47,48],"188":[47,48],"208":[47,48],"224":[47,48],"240":[47,48],"262":[47,48],"284":[47,48],"309":[47,48],"350":[47,48],"379":[47,48],"409":[47,48],"462":[47,48],"515":[47,48]},"packages/cli/src/modules/favorites/favorites.event-relay.ts":{"10":[36,37,39,42,48,67,132,137],"17":[36,37,39,42,48,67,132,137],"19":[36,37,39,42,48,67,132,137],"21":[36,37,39,42,48,67,132,137],"23":[36,37,39,42,48,67,132,137],"25":[36,37,39,42,48,67,132,137]},"packages/@n8n/design-system/src/components/N8nBreadcrumbs/Breadcrumbs.vue":{"34":[47,48,65,66,67],"59":[47,48,65,66,67],"65":[47,48,65,66,67],"69":[66],"73":[66],"74":[66],"81":[66],"107":[47,48,65,66,67],"108":[66],"114":[66],"123":[66],"124":[66],"142":[66],"143":[66],"158":[66],"172":[47,48,65,66,67],"211":[66],"212":[66],"238":[66],"245":[47,48,65,66,67],"257":[66],"258":[66],"259":[66],"261":[47,48,65,66,67]},"packages/frontend/editor-ui/src/features/core/dataTable/DataTableDetailsView.vue":{"49":[47,48],"51":[47,48],"69":[47,48],"88":[47],"96":[47],"103":[47],"111":[47],"143":[47,48],"150":[47,48],"157":[48],"200":[47,48],"203":[47,48],"207":[47,48],"218":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/DataTableView.vue":{"64":[47,48],"65":[47,48],"73":[47,48],"75":[48],"82":[47,48],"100":[47,48],"120":[47,48],"125":[47,48],"142":[48],"161":[47,48],"165":[47,48],"166":[47,48],"201":[47,48],"211":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/AddDataTableModal.vue":{"120":[47,48],"140":[47,48],"141":[47,48],"149":[47,48],"188":[47,48],"267":[47,48],"334":[47,48],"339":[47,48],"345":[47,48],"357":[47,48],"358":[47,48],"361":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DataTableActions.vue":{"53":[47,48],"54":[47,48],"56":[47,48],"91":[48],"153":[48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DataTableBreadcrumbs.vue":{"16":[47,48],"38":[47,48],"42":[47,48],"46":[47,48],"81":[47],"103":[47,48],"109":[47,48],"119":[47,48],"122":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DataTableCard.vue":{"34":[47,48],"44":[47,48],"49":[47,48],"50":[47,48],"55":[47,48],"64":[47,48],"67":[47,48],"74":[47,48],"81":[47,48],"93":[47,48],"105":[47,48],"114":[47,48],"120":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DownloadDataTableModal.vue":{"25":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/ImportCsvModal.vue":{"21":[47,48],"143":[47,48],"154":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/AddColumnButton.vue":{"31":[47,48],"48":[47,48],"67":[47,48],"69":[47],"72":[47],"78":[47],"114":[47],"123":[47],"129":[47],"142":[47,48],"154":[47,48],"160":[47,48],"174":[47],"184":[47],"217":[47],"221":[47],"222":[47],"243":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/AddRowButton.vue":{"5":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/ColumnHeader.vue":{"31":[47,48],"32":[47,48],"34":[47,48],"55":[47],"64":[47],"68":[47],"72":[47],"76":[47,48],"86":[47,48],"90":[47,48],"97":[47,48],"102":[47,48],"113":[47,48],"122":[47,48],"124":[47],"130":[47,48],"150":[47,48],"154":[47,48],"172":[47],"182":[47,48],"194":[47,48],"200":[47,48],"253":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/DataTableTable.vue":{"49":[47,48],"51":[47,48],"69":[47,48],"90":[47,48],"117":[47,48],"120":[47],"128":[47],"132":[47],"136":[47],"140":[47,48],"157":[47],"162":[47,48],"163":[47],"193":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/registerAgGridModulesOnce.ts":{"27":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useAgGrid.ts":{"23":[47,48],"34":[47,48],"81":[47,48],"93":[47,48],"113":[47],"119":[47],"128":[47],"130":[47],"140":[47],"148":[47],"168":[47],"207":[47,48],"226":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableColumnFilters.ts":{"19":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableColumns.ts":{"40":[47,48],"59":[47,48],"66":[47],"97":[47],"123":[47,48],"132":[47,48],"159":[47,48],"161":[47,48],"214":[47,48],"218":[47],"219":[47],"226":[47],"234":[47],"242":[47],"244":[47],"245":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableOperations.ts":{"57":[47,48],"113":[47],"114":[47],"132":[47],"135":[47],"204":[47],"228":[47],"238":[47],"254":[47],"277":[47],"330":[47,48],"354":[47],"390":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTablePagination.ts":{"11":[47,48],"17":[47,48],"21":[47],"32":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableSelection.ts":{"5":[47,48],"13":[47,48],"18":[47],"19":[47,48],"23":[47],"27":[47],"36":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableTypes.ts":{"8":[47,48],"9":[47,48],"18":[47,48],"25":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/module.descriptor.ts":{"13":[47,48],"14":[47,48],"15":[47,48],"25":[47,48],"37":[48]},"packages/frontend/editor-ui/src/features/core/dataTable/typeGuards.ts":{"11":[47],"21":[47,48]},"packages/frontend/editor-ui/src/features/core/dataTable/utils/columnUtils.ts":{"26":[47],"29":[47],"35":[47,48],"36":[47,48],"51":[47,48],"52":[47,48],"65":[47,48],"66":[47,48],"94":[47,48],"95":[47],"119":[47],"126":[47,48],"135":[47],"141":[47],"149":[47,48],"156":[47,48],"163":[47,48],"170":[47,48],"177":[47],"184":[47,48],"191":[47,48],"198":[47,48],"205":[47,48],"212":[47,48],"219":[47,48],"229":[47,48],"241":[47],"253":[47]},"packages/@n8n/backend-common/src/utils/parse-flatted.ts":{"15":"b:ANMCAH4gALXACAAAAFACEYDQACAA"},"packages/@n8n/nodes-langchain/nodes/agents/Agent/AgentTool.node.ts":{"8":[75]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V2/AgentToolV2.node.ts":{"19":[75],"99":[75]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V2/utils.ts":{"11":[75],"23":[75],"26":[75],"86":[75],"89":[75]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V3/AgentToolV3.node.ts":{"22":[75],"101":[75]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.ts":{"73":[15,75,119],"742":[15,75,119]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/common.ts":{"15":[15,75,119],"18":[15,75,119],"21":[15,75,119],"24":[15,75,119],"27":[15,75,119],"30":[15,75,119],"86":[15,75,119]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/methods/loadModels.ts":{"10":[15,75,119],"35":[15,75,119],"43":[15,75,119],"46":[15,75,119]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/error-handling.ts":{"11":[15,16,75,93,119],"15":[15,16,75,93,119],"19":[15,16,75,93,119],"36":[15,16,75,93,119]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/modelFiltering.ts":{"9":[15,75,93,119]},"packages/cli/src/executions/execution-redaction-proxy.service.ts":{"13":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","17":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","27":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA"},"packages/cli/src/executions/execution.service.ee.ts":{"13":"b:ANMCAA4gALXACAAAAlQCEYAQAAAA","19":"b:ANMCAA4gALXACAAAAlQCEYAQAAAA"},"packages/cli/src/manual-execution.service.ts":{"27":"b:AJMCAA4gAPXACAAAg1wjEYAQAAAA","29":"b:AJMCAA4gAPXACAAAg1wjEYAQAAAA","49":"b:AJMCAA4gAPXACAAAg1wjEYAQAAAA","61":"b:AJMCAA4gAPXACAAAg1wjEYAQAAAA"},"packages/cli/src/modules/redaction/executions/execution-redaction.service.ts":{"37":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","45":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","57":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","74":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","89":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","96":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","99":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","191":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","239":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","272":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","273":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","274":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","291":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","306":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA","325":"b:ANMCAA4gALXACAAAAFQCEYDQAAAA"},"packages/cli/src/tool-generation/index.ts":{"7":[41,44,75,119]},"packages/cli/src/utils/get-item-count-by-connection-type.ts":{"4":"b:ANMSAA4gALXACAAAAlQCEYAAAAAA","15":"b:ANMSAA4gALXACAAAAlQCEYAAAAAA"},"packages/cli/src/workflows/workflow-execution.service.ts":{"47":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","63":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","100":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","101":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","112":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","276":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","315":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","499":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","517":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","522":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","525":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","528":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","531":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","539":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","564":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","576":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","588":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","597":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA","604":"b:BNMKAH4gAPfBCAAAg/xnE4AQAAEA"},"packages/cli/src/workflows/workflow-history/workflow-history.controller.ts":{"20":"b:AOM2AA4gALWiCAAAGlIAAYgEAAAA","23":"b:AOM2AA4gALWiCAAAGlIAAYgEAAAA","40":"b:AOM2AA4gALWiCAAAGlIAAYgEAAAA","58":"b:AOM2AA4gALWiCAAAGlIAAYgEAAAA","79":"b:AOM2AA4gALWiCAAAGlIAAYgEAAAA","92":"b:AOM2AA4gALWiCAAAGlIAAYgEAAAA"},"packages/core/src/execution-engine/node-execution-context/trigger-context.ts":{"19":"b:AJMCAA4gAJXACAAAAlgCEIAQACEA","23":"b:AJMCAA4gAJXACAAAAlgCEIAQACEA","27":"b:AJMCAA4gAJXACAAAAlgCEIAQACEA","34":"b:AJMCAA4gAJXACAAAAlgCEIAQACEA","56":"b:AJMCAA4gAJXACAAAAlgCEIAQACEA","60":"b:AJMCAA4gAJXACAAAAlgCEIAQACEA"},"packages/core/src/execution-engine/node-execution-context/utils/return-json-array.ts":{"8":"b:ANMCAA4gAJXACAAAAlQCEIAQAAEA","15":"b:ANMCAA4gAJXACAAAAlQCEIAQAAEA"},"packages/core/src/execution-engine/node-execution-context/utils/scheduling-helper-functions.ts":{"6":"b:AJMCAA4gAJXACAAgAlgCELAQACEA","13":"b:AJMCAA4gAJXACAAgAlgCELAQACEA"},"packages/core/src/execution-engine/triggers-and-pollers.ts":{"26":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","51":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","55":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","61":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","65":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","71":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","76":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","81":"b:AJMCAA4gALXACAAAAlwCEIAQACEA","95":"b:AJMCAA4gALXACAAAAlwCEIAQACEA"},"packages/core/src/node-execute-functions.ts":{"17":"b:AJMCAA4gALXACAAAAlwCEIAQAAAA","31":"b:AJMCAA4gALXACAAAAlwCEIAQAAAA"},"packages/nodes-base/nodes/HackerNews/GenericFunctions.ts":{"16":[75,111,112,114],"42":[75,111,112,114]},"packages/nodes-base/nodes/HackerNews/HackerNews.node.ts":{"264":[75,111,112,114]},"packages/workflow/src/common/get-parent-nodes.ts":{"11":"b:AMMSAHQAAESACAAAgUACEAEAAIIA"},"packages/workflow/src/execution-context.ts":{"12":"b:AJMCAA4gALXACAAAAlwCEYAQAAQA","294":"b:AJMCAA4gALXACAAAAlwCEYAQAAQA","316":"b:AJMCAA4gALXACAAAAlwCEYAQAAQA","329":"b:AJMCAA4gALXACAAAAlwCEYAQAAQA","334":"b:AJMCAA4gALXACAAAAlwCEYAQAAQA"},"packages/workflow/src/run-execution-data/run-execution-data.ts":{"29":"b:ANMCAH4gALXACAAAAFACEYDQACAA"},"packages/@n8n/design-system/src/components/N8nSelectableList/SelectableList.vue":{"7":[41,75],"37":[41,75],"39":[41,75],"43":[41,75],"63":[41,75],"70":[41,75],"76":[41,75]},"packages/frontend/editor-ui/src/app/components/AiStarsIcon.vue":{"11":[41,44,75,119],"17":[41,44,75,119]},"packages/frontend/editor-ui/src/features/ndv/panel/components/InputNodeSelect.vue":{"18":"b:AAABAAAQAAAAGAAAAEByAwAAAAAA","29":"b:AAABAAAQAAAAGAAAAEByAwAAAAAA","33":"b:AAABAAAQAAAAGAAAAEByAwAAAAAA","40":"b:AAABAAAQAAAAGAAAAEByAwAAAAAA","43":[75,110,113,116,117,118,121],"56":[75,110,113,116,117,118,121],"58":[75,110,113,116,117,118,121],"65":[75,110,113,116,117,118,121],"70":[75,110,113,116,117,118,121],"79":[75,110,113,116,117,118,121],"106":[75,110,113,116,117,118,121],"110":[75,110,113,116,117,118,121],"116":[113,121],"118":"b:AAABAAAQAAAAGAAAAEByAwAAAAAA","133":"b:AAABAAAQAAAAGAAAAEByAwAAAAAA","139":"b:AAABAAAQAAAAGAAAAEByAwAAAAAA","143":[75,110,113,116,117,118,121],"149":[75,110,113,116,117,118,121]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputOverrides/FromAiOverrideButton.vue":{"6":[41,44,75,119],"16":[41,44,75,119],"24":[41,44,75,119],"29":[41]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputOverrides/FromAiOverrideField.vue":{"10":[41,75],"11":[41,75]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputOverrides/ParameterOverrideSelectableList.vue":{"16":[41,75],"22":[41,75],"23":[41,75],"47":[41,75]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataItemCount.vue":{"16":"b:AMZbAAQAAM6BKAIAgM1/lwEAAAAA","17":"b:AMZbAAQAAM6BKAIAgM1/lgEAAAAA","21":[116,118],"29":"b:AMZbAAQAAM6BKAIAgM1/lwEAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJson.vue":{"22":[75,107,110,113,118],"59":[75,107,110,113,118],"61":[75,107,110,113,118],"63":[113],"71":[75,107,110,113,118],"82":[75,107,110,113,118],"83":[75,107,110,113,118],"85":[113],"98":[113],"122":[75,107,110,113,118],"126":[75,107,110,113,118],"130":[75,107,110,113,118],"166":[75,107,110,113,118],"181":[75,107,110,113,118]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJsonActions.vue":{"63":[75,107,110,113,118]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/data-table.svg":{"11":"b:MIAAgAASAAAgAAAAAAEgASAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/information-extractor.svg":{"11":[31,44,59,69,4,5,120,133]},"packages/frontend/editor-ui/src/app/components/WorkflowShareModal.ee.vue":{"42":[4,6,137],"60":[4,6,137],"63":[4,6,137],"64":[4,6,137],"65":[6,137],"68":[4,6,137],"71":[4,6,137],"74":[4,6,137],"86":[4,6,137],"90":[4,6,137],"92":[4,6,137],"111":[4,6,137],"115":[4,6,137],"127":[6,137],"130":[4],"132":[4,6,137],"137":[4,6,137],"138":[4,6,137],"154":[6],"161":[6],"175":[6],"182":[6],"217":[6],"241":[4,6,137],"256":[4,6,137],"261":[6],"267":[4,6,137],"279":[4,6,137],"323":[4],"324":[4],"327":[4],"360":[4,6,137],"372":[4,6,137],"374":[4,6,137],"377":[4],"386":[6,137]},"packages/frontend/editor-ui/src/app/stores/workflows.ee.store.ts":{"13":[4,6,93,137],"18":[93],"19":[93],"34":[6],"43":[6],"49":[6]},"packages/nodes-base/nodes/DebugHelper/DebugHelper.node.ts":{"255":[71,107,109,117,127],"346":[71,107,109,117,127]},"packages/nodes-base/nodes/DebugHelper/functions.ts":{"4":[71,107,109,117,127],"14":[71,107,109,117,127]},"packages/nodes-base/nodes/DebugHelper/randomData.ts":{"26":[71,107,109,117,127],"36":[71,107,109,117,127],"48":[71,107,109,117,127],"55":[71,107,109,117,127],"59":[71,107,109,117,127],"63":[71,107,109,117,127],"79":[71,107,109,117,127],"83":[71,107,109,117,127],"87":[71,107,109,117,127],"91":[71,107,109,117,127],"95":[71,107,109,117,127],"99":[71,107,109,117,127]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/components/EventDestinationCard.vue":{"44":[87,88],"52":[87,88],"56":[87,88],"72":[87,88],"76":[87,88],"87":[88],"110":[88],"135":[87,88],"141":[87,88],"144":[87,88],"148":[87,88],"153":[87,88],"157":[87,88],"160":[87,88]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/components/EventDestinationSettingsModal.vue":{"80":[87,88],"107":[87,88],"121":[87,88],"125":[87,88],"129":[87],"133":[87],"137":[87,88],"139":[87,88],"143":[87,88],"161":[87,88],"165":[87,88],"185":[87,88],"189":[87,88],"204":[87,88],"208":[87,88],"217":[87,88],"223":[87,88],"231":[87,88],"235":[87,88],"261":[87,88],"300":[87],"305":[88],"329":[88],"341":[87,88],"361":[87,88],"391":[87,88],"399":[87,88],"415":[87,88],"432":[87,88],"474":[87,88],"484":[87,88],"492":[87,88],"494":[87,88],"506":[87,88],"515":[87,88]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/logStreaming.store.ts":{"44":[87,88],"53":[87,88],"81":[87,88],"99":[87,88],"105":[87,88],"128":[87,88],"136":[87,88],"151":[87,88],"155":[87,88],"163":[87,88],"220":[87,88],"226":[88],"231":[87,88],"248":[87,88],"265":[87],"276":[87,88],"280":[87,88],"284":[88]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/logStreaming.utils.ts":{"8":[87,88]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/views/SettingsLogStreamingView.vue":{"37":[87,88],"45":[87,88],"50":[87,88],"54":[87,88],"58":[87,88],"60":[87,88],"73":[87,88],"75":[88],"88":[87,88],"94":[87,88],"98":[87,88],"103":[88],"108":[87,88],"133":[87,88],"137":[87,88],"152":[88],"161":[88],"182":[87,88],"204":[87,88],"208":[87,88],"214":[88],"215":[88],"230":[87,88],"248":[88]},"packages/localhost-41381/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[87]},"packages/localhost-41381/assets/chunk-CC9Q-vWm.js":{"8":[87],"9":[87],"10":[87],"19":[87],"23":[87],"29":[87],"33":[87],"34":[87]},"packages/@n8n/ai-utilities/src/guards.ts":{"7":[8,15,17,36,37,38,110],"9":[8,15,17,36,37,38,110],"17":[8,15,17,36,37,38,110],"21":[8,15,17,36,37,38,110],"25":[8,15,17,36,37,38,110],"31":[8,15,17,36,37,38,110]},"packages/@n8n/ai-utilities/src/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.ts":{"13":[15,36,37,38,41,42,110],"17":[15,36,37,38,41,42,110]},"packages/@n8n/ai-utilities/src/utils/helpers.ts":{"3":[8,15,17,36,37,38,110],"17":[8,15,17,36,37,38,110],"37":[8,15,17,36,37,38,110]},"packages/@n8n/ai-utilities/src/utils/http-proxy-agent.ts":{"31":[15,36,37,38,110],"50":[15,36,37,38,110],"79":[15,36,37,38,110],"101":[15,36,37,38,110]},"packages/@n8n/ai-utilities/src/utils/log-ai-event.ts":{"4":[8,15,17,36,37,38,110]},"packages/@n8n/ai-utilities/src/utils/n8n-llm-tracing.ts":{"55":[15,36,37,38,41,42,110],"92":[15,36,37,38,41,42,110],"107":[15,36,37,38,41,42,110],"110":[15,36,37,38,41,42,110],"121":[15,36,37,38,41,42,110],"122":[15,36,37,38,41,42,110],"126":[15,36,37,38,41,42,110],"131":[15,36,37,38,41,42,110],"136":[15,36,37,38,41,42,110],"137":[15,36,37,38,41,42,110],"187":[15,36,37,38,41,42,110],"212":[15,36,37,38,41,42,110],"245":[15,36,37,38,41,42,110],"253":[15,36,37,38,41,42,110],"286":[15,36,37,38,41,42,110],"290":[15,36,37,38,41,42,110]},"packages/@n8n/ai-utilities/src/utils/tokenizer/tiktoken.ts":{"9":[15,36,37,38,110],"15":[15,36,37,38,110],"18":[15,36,37,38,110],"34":[15,36,37,38,110],"43":[15,36,37,38,110]},"packages/@n8n/ai-utilities/src/utils/tokenizer/token-estimator.ts":{"33":[15,36,37,38,110],"70":[15,36,37,38,110],"129":[15,36,37,38,110],"141":[15,36,37,38,110],"169":[15,36,37,38,110]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatAnthropic/LmChatAnthropic.node.ts":{"82":[36,37,38,110,119],"150":[36,37,38,110,119],"450":[36,37,38,110,119],"529":[36,37,38,110,119],"566":[36,37,38,110,119]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatAnthropic/methods/searchModels.ts":{"14":[36,37,38,110,119],"41":[36,37,38,110,119],"48":[36,37,38,110,119],"49":[36,37,38,110,119],"50":[36,37,38,110,119]},"packages/cli/src/credentials-overwrites.ts":{"22":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","30":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","52":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","56":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","78":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","79":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","83":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","97":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","102":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","117":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","132":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","135":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","139":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","151":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","177":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","209":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","213":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","214":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","219":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA","224":"b:AIAAAHBgAJMAAAAAAEAACQAEBIAA"},"packages/cli/src/eventbus/event-message-classes/event-message-ai-node.ts":{"34":[8,15,17,36,37,38,110],"42":[8,15,17,36,37,38,110],"47":[8,15,17,36,37,38,110]},"packages/cli/src/executions/execution.utils.ts":{"13":"b:AAAYAAAAAIIAAAAAAEAAgIEAAAgB","26":"b:AAAYAAAAAIIAAAAAAEAAgIEAAAgB"},"packages/cli/src/task-runners/task-runner-module.ts":{"44":[110],"53":[110],"61":[110],"69":[110],"70":[110],"77":[110],"84":[110],"94":[110],"95":[110],"96":[110],"103":[110],"106":[110],"113":[110],"116":[110],"123":[110],"135":[110],"159":[110]},"packages/cli/src/utils/cors.util.ts":{"3":[19,20,57,63,110,155,135]},"packages/cli/src/webhooks/waiting-webhooks.ts":{"44":[19,20,57,63,110,155,135],"55":[19,20,57,63,110,155,135],"63":[19,20,57,63,110,155,135],"67":[19,20,57,63,110,155,135],"71":[19,20,57,63,110,155,135],"75":[19,20,57,63,110,155,135],"82":[19,20,57,63,110,155,135],"95":[19,20,57,63,110,155,135],"106":[19,20,57,63,110,155,135],"132":[19,20,57,63,110,155,135],"153":[19,20,57,63,110,155,135],"174":[19,20,57,63,110,155,135],"256":[19,20,57,63,110,155,135],"265":[19,20,57,63,110,155,135],"316":[19,20,57,63,110,155,135],"344":[19,20,57,63,110,155,135],"357":[19,20,57,63,110,155,135]},"packages/core/src/execution-engine/node-execution-context/supply-data-context.ts":{"52":[8,15,17,36,37,38,159,110],"97":[8,15,17,36,37,38,159,110],"99":[8,15,17,36,37,38,159,110],"107":[8,15,17,36,37,38,159,110],"114":[8,15,17,36,37,38,159,110],"129":[8,15,17,36,37,38,159,110],"152":[8,15,17,36,37,38,159,110],"173":[8,15,17,36,37,38,159,110],"181":[8,15,17,36,37,38,159,110],"187":[8,15,17,36,37,38,159,110],"192":[8,15,17,36,37,38,159,110],"208":[8,15,17,36,37,38,159,110],"221":[8,15,17,36,37,38,159,110],"237":[8,15,17,36,37,38,159,110],"247":[8,15,17,36,37,38,159,110],"367":[8,15,17,36,37,38,159,110],"369":[8,15,17,36,37,38,159,110],"381":[8,15,17,36,37,38,159,110]},"packages/core/src/execution-engine/node-execution-context/utils/extract-value.ts":{"19":[59,63,107,110,117,118,120,123],"29":[59,63,107,110,117,118,120,123],"34":[59,63,107,110,117,118,120,123],"70":[59,63,107,110,117,118,120,123],"90":[59,63,107,110,117,118,120,123],"99":[59,63,107,110,117,118,120,123],"133":[59,63,107,110,117,118,120,123],"153":[59,63,107,110,117,118,120,123],"187":[59,63,107,110,117,118,120,123]},"packages/core/src/execution-engine/node-execution-context/utils/get-input-connection-data.ts":{"46":[8,15,17,36,37,38,41,159,110],"51":[8,15,17,36,37,38,41,159,110],"55":[8,15,17,36,37,38,41,159,110],"65":[8,15,17,36,37,38,41,159,110],"78":[8,15,17,36,37,38,41,159,110],"103":[8,15,17,36,37,38,41,159,110],"143":[8,15,17,36,37,38,41,159,110],"147":[8,15,17,36,37,38,41,159,110],"156":[8,15,17,36,37,38,41,159,110],"159":[8,15,17,36,37,38,41,159,110],"168":[8,15,17,36,37,38,41,159,110],"169":[8,15,17,36,37,38,41,159,110],"177":[8,15,17,36,37,38,41,159,110],"208":[8,15,17,36,37,38,41,159,110],"220":[8,15,17,36,37,38,41,159,110],"234":[8,15,17,36,37,38,41,159,110],"328":[8,15,17,36,37,38,41,159,110],"348":[8,15,17,36,37,38,41,159,110],"351":[8,15,17,36,37,38,41,159,110],"365":[8,15,17,36,37,38,41,159,110],"380":[8,15,17,36,37,38,41,159,110],"396":[8,15,17,36,37,38,41,159,110],"405":[8,15,17,36,37,38,41,159,110],"458":[8,15,17,36,37,38,41,159,110],"481":[8,15,17,36,37,38,41,159,110],"552":[8,15,17,36,37,38,41,159,110]},"packages/core/src/execution-engine/partial-execution-utils/clean-run-data.ts":{"12":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/directed-graph.ts":{"40":[9,71,103,107,110,111,118,124],"45":[9,71,103,107,110,111,118,124],"49":[9,71,103,107,110,111,118,124],"58":[9,71,103,107,110,111,118,124],"72":[9,71,103,107,110,111,118,124],"86":[9,71,103,107,110,111,118,124],"91":[9,71,103,107,110,111,118,124],"116":[9,71,103,107,110,111,118,124],"172":[9,71,103,107,110,111,118,124],"198":[9,71,103,107,110,111,118,124],"213":[9,71,103,107,110,111,118,124],"230":[9,71,103,107,110,111,118,124],"252":[9,71,103,107,110,111,118,124],"256":[9,71,103,107,110,111,118,124],"273":[9,71,103,107,110,111,118,124],"290":[9,71,103,107,110,111,118,124],"294":[9,71,103,107,110,111,118,124],"344":[9,71,103,107,110,111,118,124],"352":[9,71,103,107,110,111,118,124],"363":[9,71,103,107,110,111,118,124],"411":[9,71,103,107,110,111,118,124],"451":[9,71,103,107,110,111,118,124],"455":[9,71,103,107,110,111,118,124],"463":[9,71,103,107,110,111,118,124],"496":[9,71,103,107,110,111,118,124],"534":[9,71,103,107,110,111,118,124],"540":[9,71,103,107,110,111,118,124],"563":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/filter-disabled-nodes.ts":{"5":[9,71,103,107,110,111,118,124],"12":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/find-start-nodes.ts":{"13":[9,71,103,107,110,111,118,124],"29":[9,71,103,107,110,111,118,124],"50":[9,71,103,107,110,111,118,124],"137":[9,71,103,107,110,111,118,124],"159":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/find-subgraph.ts":{"6":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","39":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","45":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","88":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA"},"packages/core/src/execution-engine/partial-execution-utils/find-trigger-for-partial-execution.ts":{"12":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","14":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","17":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","29":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","30":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","31":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","36":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","61":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","78":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","98":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","112":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","115":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","121":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA"},"packages/core/src/execution-engine/partial-execution-utils/get-incoming-data.ts":{"3":[9,71,103,107,110,111,118,124],"13":[9,71,103,107,110,111,118,124],"17":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/get-source-data-groups.ts":{"5":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","28":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","86":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","118":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","119":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","126":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","139":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","156":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA","157":"b:AAIAAAAAAACAAAAAgMhAEgAAAAAA"},"packages/core/src/execution-engine/partial-execution-utils/handle-cycles.ts":{"15":[9,71,103,107,110,111,118,124],"26":[9,71,103,107,110,111,118,124],"41":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/index.ts":{"1":[9,71,103,107,110,111,118,124],"7":[9,71,103,107,110,111,118,124],"8":[9,71,103,107,110,111,118,124],"9":[9,71,103,107,110,111,118,124],"10":[9,71,103,107,110,111,118,124],"11":[9,71,103,107,110,111,118,124],"13":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/recreate-node-execution-stack.ts":{"20":[9,71,103,107,110,111,118,124],"39":[9,71,103,107,110,111,118,124],"72":[9,71,103,107,110,111,118,124],"103":[9,71,103,107,110,111,118,124]},"packages/core/src/execution-engine/partial-execution-utils/run-data-utils.ts":{"11":[9,71,103,107,110,111,118,124],"17":[9,71,103,107,110,111,118,124],"20":[9,71,103,107,110,111,118,124]},"packages/core/src/instance-settings/instance-settings.ts":{"66":[14,15,17,20,33,110,122],"88":[14,15,17,20,33,110,122],"101":[14,15,17,20,33,110,122],"102":[14,15,17,20,33,110,122],"110":[14,15,17,20,33,110,122],"111":[14,15,17,20,33,110,122],"117":[14,15,17,20,33,110,122],"170":[14,15,17,20,33,110,122],"174":[14,15,17,20,33,110,122],"179":[14,15,17,20,33,110,122],"184":[14,15,17,20,33,110,122],"188":[14,15,17,20,33,110,122],"192":[14,15,17,20,33,110,122],"196":[14,15,17,20,33,110,122],"200":[14,15,17,20,33,110,122],"204":[14,15,17,20,33,110,122],"208":[14,15,17,20,33,110,122],"212":[14,15,17,20,33,110,122],"216":[14,15,17,20,33,110,122],"220":[14,15,17,20,33,110,122],"228":[14,15,17,20,33,110,122],"251":[14,15,17,20,33,110,122],"259":[14,15,17,20,33,110,122],"306":[14,15,17,20,33,110,122],"313":[14,15,17,20,33,110,122],"321":[14,15,17,20,33,110,122],"329":[14,15,17,20,33,110,122],"357":[14,15,17,20,33,110,122],"362":[14,15,17,20,33,110,122],"383":[14,15,17,20,33,110,122],"395":[14,15,17,20,33,110,122]},"packages/nodes-base/nodes/SplitInBatches/SplitInBatches.node.ts":{"9":[70,110,113]},"packages/nodes-base/nodes/SplitInBatches/v1/SplitInBatchesV1.node.ts":{"62":[70,110,113],"97":[70,110,113],"111":[70,110,113],"128":[70,110,113]},"packages/nodes-base/nodes/SplitInBatches/v2/SplitInBatchesV2.node.ts":{"64":[70,110,113],"102":[70,110,113],"116":[70,110,113],"135":[70,110,113],"147":[70,110,113]},"packages/nodes-base/nodes/SplitInBatches/v3/SplitInBatchesV3.node.ts":{"88":[70,110,113],"126":[70,110,113],"140":[70,110,113],"159":[70,110,113],"171":[70,110,113]},"packages/nodes-base/nodes/Wait/Wait.node.ts":{"229":[19,20,70,107,110,155,133,135],"501":[19,20,70,107,110,155,133,135],"507":[19,20,70,107,110,155,133,135],"522":[19,20,70,107,110,155,133,135],"599":[19,20,70,107,110,155,133,135],"600":[19,20,70,107,110,155,133,135],"601":[19,20,70,107,110,155,133,135],"612":[19,20,70,107,110,155,133,135],"643":[19,20,70,107,110,155,133,135]},"packages/nodes-base/nodes/Wait/validation.ts":{"1":[19,20,70,107,110,155,133,135],"6":[19,20,70,107,110,155,133,135]},"packages/workflow/src/errors/execution-cancelled.error.ts":{"9":[110],"19":[110],"26":[110],"33":[110]},"packages/workflow/src/node-parameters/filter-parameter.ts":{"24":[59,107,110,117,118],"32":[59,107,110,117,118],"66":[59,107,110,117,118],"71":[59,107,110,117,118],"106":[59,107,110,117,118],"118":[59,107,110,117,118],"124":[59,107,110,117,118],"196":[59,107,110,117,118],"209":[59,107,110,117,118],"211":[59,107,110,117,118],"222":[59,107,110,117,118],"419":[59,107,110,117,118],"423":[59,107,110,117,118],"437":[59,107,110,117,118],"442":[59,107,110,117,118]},"packages/workflow/src/result.ts":{"7":[10,110,134,135],"12":[10,110,134,135],"23":[10,110,134,135]},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-execution-error.svg":{"11":"b:AIYBAAAgAAAAAAAAAEwgAMAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/schema.svg":{"8":[14,15,16,17,69,77,110]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-waiting.svg":{"8":[69,110]},"packages/@n8n/design-system/src/components/N8nIcon/custom/text.svg":{"8":[15,69,110]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/wait.svg":{"11":[19,21,22,70,107,110]},"packages/@n8n/design-system/src/components/N8nTree/Tree.vue":{"20":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","28":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","32":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","36":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","52":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","61":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","68":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","87":[110,113,116,121],"95":[110,113,116,121]},"packages/frontend/editor-ui/src/features/agents/composables/useMessageAgentSessionLink.ts":{"19":[65],"32":[14,15,16,17,65,77,110],"60":[14,15,16,17,65,77,110],"65":[14,15,16,17,65,77,110],"89":[65]},"packages/frontend/editor-ui/src/features/execution/executions/components/ViewSubExecution.vue":{"9":[17,19,110,127,128],"23":[17,19,110,127,128],"27":[127,128],"41":[17,19,110,127,128]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogDetailsPanel.vue":{"32":[14,15,16,17,65,77,110],"70":[14,15,16,17,65,77,110],"71":[14,15,16,17,65,77,110],"72":[14,15,16,17,65,77,110],"73":[14,15,16,17,65,77,110],"77":[15,65,110],"79":[65],"83":[15,65,110],"84":[14,15,16,17,65,77,110],"92":[65],"102":[14,15,16,17,65,77,110],"113":[14,15,16,17,65,77,110],"130":[14,15,16,17,65,77,110],"138":[65],"145":[14,15,16,17,65,77,110],"151":[14,15,16,17,65,77,110],"158":[14,15,16,17,65,77,110],"164":[14,15,16,17,65,77,110],"175":[65],"193":[15,65,110],"202":[65],"215":[65],"226":[65]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewConsumedTokenCountText.vue":{"8":[65,110],"20":[65]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewRunData.vue":{"37":[14,15,16,17,65,77,110],"49":[14,15,16,17,65,77,110],"52":[14,15,16,17,65,77,110],"75":[14,15,16,17,65,77,110],"82":[65],"86":[15,65,110],"88":[14,15,16,17,65,77,110],"116":[65],"118":[14,15,16,17,65,77,110],"120":[14,15,16,17,65,77,110],"124":[14,15,16,17,65,77,110],"131":[15,65,110],"135":[65,110],"137":[65,110],"146":[65],"154":[65],"160":[65],"164":[65],"167":[65]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/AssignmentCollection/Assignment.vue":{"32":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","36":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","54":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","78":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","87":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","101":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","103":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","112":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","114":"b:AAIAAAAAAIAAAQIAAEgKBQAAAAAA","116":[32,64,113],"120":[32,64],"128":[32,64,113,115,120,122],"136":[32,64,99,113,115,120],"140":[113],"153":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","185":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","201":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","205":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","215":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/AssignmentCollection/TypeSelect.vue":{"17":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","30":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","32":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","33":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","43":[32,64],"45":"b:AAIAAAEAAIABIQIACMhKBQAAAAAA","58":"b:AAIAAAEAAIABIQIACMhKBAAAAAAA","60":"b:AAIAAAEAAIABIQIACMhKBAAAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/InputTriple/InputTriple.vue":{"10":"b:AAIAAAEAAIgBIQIACshKBQAAAAAA","13":"b:AAIAAAEAAIgBIQIACshKBQAAAAAA","21":"b:AAIAAAEAAIgBIQIACshKBQAAAAAA","22":"b:AAIAAAEAAIgBIQIACshKBQAAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataParsedAiContent.vue":{"31":[110],"33":[110],"54":[110],"63":[110],"72":[110],"76":[110]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPinButton.vue":{"6":"b:AABYAAQAAM6BAAIAgM1/lwEAAAAA","24":"b:AABYAAQAAM6BAAIAgM1/lwEAAAAA","27":"b:AABYAAQAAM6BAAIAgM1/lwEAAAAA","31":[57,64],"49":"b:AABYAAQAAM6BAAIAgM1/lwEAAAAA","66":[106,122]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataTable.vue":{"87":"b:AABaAAQAAM6BAAIAgM1/lwEAAAAA","88":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","89":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","91":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","92":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","93":[113,116,118,121],"94":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","95":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","103":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","114":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","151":[127],"163":[113,116,118,121],"185":[113,118,121],"192":[113],"196":[113],"200":[113,116],"206":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","219":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","226":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","239":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","252":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","262":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","284":[113],"294":[113],"302":[113],"308":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","316":[113],"318":[113],"340":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","349":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","353":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","357":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","369":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","394":"b:AAAAAAAAAAiAAAAAAEhyhwAAAAAA","412":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","428":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","456":[64,71,113,120,121,122],"457":[64,71,113,120,121,122],"466":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","511":[110,117,118,122],"568":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","580":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","589":[113],"591":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","594":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","611":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","667":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","697":[127],"711":"b:AMBaAAQAAM6BIAIAgM1/lwEAAAAA","729":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA","743":[113],"752":"b:AABCAAAAAAgBAAAAAERaAgAAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunInfo.vue":{"7":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","15":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","19":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","23":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA","33":"b:AAYKAAQAAM6BAAIAgMx6lwEAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/ai/utils.ts":{"38":[110],"51":[110],"52":[110],"53":[110]},"packages/frontend/editor-ui/src/features/ndv/runData/components/error/NodeErrorView.vue":{"46":[9,10,15,16,106,110,117],"69":[9,10,15,16,106,110,117],"73":[117],"86":[9,10,15,16,106,110,117],"97":[9,10,15,16,106,110,117],"101":[16,106],"110":[9,10,15,16,106,110,117],"117":[16,106],"140":[9,10,15,16,106,110,117],"151":[9,10],"158":[9,10,15,16,106,110,117],"165":[9,16,106,117],"181":[9,10,15,16,117],"185":[9,10,15,16,117],"210":[9,10,15,16,106,110,117],"222":[9,10,15,16,106,110,117],"225":[9,10,15,16,106,110,117],"250":[117],"260":[117],"266":[117],"280":[117],"402":[9,10,16,106,117],"436":[9,10],"463":[9,10,15,16,106,110,117],"509":[9,10,15,16,106,110,117],"548":[16,106]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeTooltip.vue":{"11":"b:AMATAAIAAAIBIAAAAEgABAAAgAAA","13":"b:AMATAAIAAAIBIAAAAEgABAAAgAAA","14":"b:AMATAAIAAAIBIAAAAEgABAAAgAAA","26":"b:AMATAAIAAAIBIAAAAEgABAAAgAAA","28":"b:AMATAAIAAAIBIAAAAEgABAAAgAAA"},"packages/localhost-38255/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[110]},"packages/localhost-38255/assets/chunk-CC9Q-vWm.js":{"8":[110],"9":[110],"10":[110],"19":[110],"23":[110],"29":[110],"33":[110],"34":[110]},"packages/@n8n/api-types/src/schemas/node-version.schema.ts":{"7":[29,69,117,120,123,124,128,129]},"packages/cli/src/controllers/dynamic-node-parameters.controller.ts":{"16":[29,69,117,120,123,124,128,129],"19":[29,69,117,120,123,124,128,129],"68":[29,69,117,120,123,124,128,129],"106":[29,69,117,120,123,124,128,129],"134":[29,69,117,120,123,124,128,129],"158":[29,69,117,120,123,124,128,129]},"packages/cli/src/services/dynamic-node-parameters.service.ts":{"60":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","68":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","108":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","109":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","118":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","127":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","139":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","147":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","215":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","226":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","230":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","244":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","250":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","262":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","268":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","281":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","294":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","320":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","363":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","367":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","393":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","402":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","414":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA","418":"b:AAAAIHAAAAAgAAAAAAAgGQMAAAAA"},"packages/cli/src/services/workflow-loader.service.ts":{"7":[69,128,129],"9":[69,128,129]},"packages/cli/src/workflows/workflow.formatter.ts":{"6":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB"},"packages/core/src/execution-engine/active-workflow-triggers.ts":{"38":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","51":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","58":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","65":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","76":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","89":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","109":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","127":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","167":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","211":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","242":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","269":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","312":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","321":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","347":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","368":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","395":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","406":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","408":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B","418":"b:AAAAAAAEAJAAAAAgAAAAALIiAC0B"},"packages/core/src/execution-engine/node-execution-context/local-load-options-context.ts":{"16":[69,128,129],"23":[69,128,129],"42":[69,128,129],"69":[69,128,129]},"packages/core/src/execution-engine/node-execution-context/workflow-node-context.ts":{"16":[69,128,129],"22":[69,128,129]},"packages/core/src/execution-engine/workflow-active-triggers-state.ts":{"7":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB","11":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB","16":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB","21":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB","26":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB","31":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB","36":"b:AAAAAAAAAJAAAAAgAAAAADIAACkB"},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow/ExecuteWorkflow.node.ts":{"290":[69,127,128,160,155,129]},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow/GenericFunctions.ts":{"10":[69,127,128,160,155,129],"29":[69,127,128,160,155,129]},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow/methods/localResourceMapping.ts":{"5":[69,127,128,160,155,129]},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.ts":{"223":[69,127,128,160,155,129],"229":[69,127,128,160,155,129],"248":[69,127,128,160,155,129],"249":[69,127,128,160,155,129],"251":[69,127,128,160,155,129],"254":[69,127,128,160,155,129]},"packages/nodes-base/utils/workflow-backtracking.ts":{"24":[69,127,128,160,155,129],"44":[69,127,128,160,155,129]},"packages/nodes-base/utils/workflowInputsResourceMapping/GenericFunctions.ts":{"27":[69,127,128,160,155,129],"29":[69,127,128,160,155,129],"74":[69,127,128,160,155,129],"81":[69,127,128,160,155,129],"121":[69,127,128,160,155,129],"126":[69,127,128,160,155,129],"147":[69,127,128,160,155,129],"155":[69,127,128,160,155,129],"157":[69,127,128,160,155,129],"160":[69,127,128,160,155,129],"168":[69,127,128,160,155,129],"184":[69,127,128,160,155,129]},"packages/workflow/src/node-parameters/path-utils.ts":{"10":[69,128,129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/execute-sub-workflow.svg":{"11":[54,127,128,129]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterIssues.vue":{"9":"b:ABAYQAAyAAIgAQAAAAGiCQIAAAAA","10":"b:ABAYQAAyAAIgAQAAAAGiCAIAAAAA","17":"b:ABAYAAACAAIgAQAAAAGiCQIAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/ResourceMapper.vue":{"50":[69,123,124,128,129],"90":[124],"110":[69,123,124,128,129],"112":[124],"130":[124],"142":[69,123,124,128,129],"144":[124],"156":[69,123,124,128,129],"192":[124],"222":[124],"226":[69,123,124,128,129],"233":[69,123,124,128,129],"237":[69,123,124,128,129],"241":[69,123,124,128,129],"245":[69,123,124,128,129],"253":[69,123,124,128,129],"263":[124],"273":[124],"289":[69,123,124,128,129],"292":[124],"300":[69,128,129],"307":[69,123,124,128,129],"332":[69,123,124,128,129],"357":[69,123,124,128,129],"380":[69,123,124,128,129],"388":[124],"389":[124],"416":[69,123,124,128,129],"419":[124],"439":[69,123,124,128,129],"452":[69,123,124,128,129],"458":[124],"469":[124],"489":[124],"495":[124],"503":[124],"504":[124],"521":[124],"568":[69,123,124,128,129],"580":[69,123,124,128,129],"586":[124],"597":[69,123,124,128,129],"630":[124],"633":[69,128,129],"666":[69,128,129]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/WorkflowSelectorParameterInput/WorkflowSelectorParameterInput.vue":{"59":[69,128,129],"96":[69,128,129],"120":[69,128,129],"130":[69,128,129],"144":[69,128,129],"156":[69,128,129],"164":[69,128,129],"168":[69,128,129],"175":[128,129],"193":[129],"203":[69,129],"208":[69,129],"216":[129],"229":[69,128,129],"245":[69,128,129],"252":[128,129],"256":[69,128,129],"257":[129],"266":[69,128,129],"267":[69,128,129],"279":[69,128,129],"283":[69,129],"288":[69,129],"321":[69,128,129],"359":[129],"367":[69,128,129],"385":[69,128,129],"387":[69,128,129],"393":[69,128,129],"410":[69,128,129],"446":[69,128,129],"470":[69,128,129]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useWorkflowResourceLocatorDropdown.ts":{"4":[69,128,129],"11":[69,129],"19":[69,129],"23":[69,129]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useWorkflowResourceLocatorModes.ts":{"12":[69,128,129],"19":[69,128,129],"32":[69,128,129],"33":[69,128,129],"35":[129],"52":[69,128,129]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useWorkflowResourcesLocator.ts":{"11":[69,128,129],"25":[69,128,129],"27":[69,128,129],"36":[128,129],"44":[69,129],"52":[69,128,129],"57":[69,128,129],"67":[69,128,129],"92":[69,128,129],"98":[129],"103":[69,129]},"packages/core/src/execution-engine/scheduled-task-manager.ts":{"22":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","27":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","34":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","44":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","53":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","82":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","85":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","127":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","151":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","156":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","183":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","188":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","197":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB","213":"b:AAAAAAAEAAAAAAAgAAAAALAiACUB"},"packages/frontend/editor-ui/src/features/execution/executions/components/ExecutionsTime.vue":{"14":[135],"22":[135],"24":[135],"29":[135],"36":[135]},"packages/localhost-45211/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[135]},"packages/localhost-45211/assets/chunk-CC9Q-vWm.js":{"8":[135],"9":[135],"10":[135],"19":[135],"23":[135],"29":[135],"33":[135],"34":[135]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/respond-to-webhook.svg":{"11":[29,32,64,117,122,137]},"packages/frontend/editor-ui/src/features/ndv/panel/components/TriggerPanel.vue":{"60":"b:AAAQIAEAAAIBAAAAAIggBAACAAAA","74":"b:AAAQIAEQBAIBAAAAAIggLAACAAAA","78":"b:AAAQIAEQBAIBAAAAAIggLAACAAAA","86":"b:AAAQIAEAAAIBAAAAAIggBAACAAAA","94":"b:AAAQIAEAAAIBAAAAAIggBAACAAAA","113":"b:AAAQIAEQBAIBAAAAAIggLAACAAAA","119":[29,32,64,111,117,122,137],"127":[20,57],"135":[20,57,64,107],"139":"b:AAAQIAEQBAIBAAAAAIggLAACAAAA","157":"b:AAAQIAEQBAIBAAAAAIggLAACAAAA","165":"b:AAAQIAEAAAIBAAAAAIggBAACAAAA","169":[20,57,64,111],"173":"b:AAAQIAEAAAIBAAAAAIggBAACAAAA","191":[20,29,32,57,64,111,117,122,137],"193":[20,29,32,57,64,111,117,122,137],"199":[20,29,32,57,64,111,117,122,137],"201":[20,57],"207":[20,57],"220":[20,29,32,57,64,111,117,122,137],"238":[20,29,32,57,64,111,117,122,137],"248":[20,29,32,57,64,111,117,122,137],"288":[20,29,32,57,64,111,117,122,137],"378":[107],"435":[20,57],"439":[20,57],"465":[29,32,57,64,111,117,122,137],"482":[29,32,57,64,111,117,122,137],"488":[29,32,57,64,111,117,122,137]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ImportCurlParameter.vue":{"11":"b:ABAAQAUwAAQBgAAAAQSABAAAAAAA","16":"b:ABAAQAUwAAQBgAAAAQSABAAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/InlineExpressionTip.vue":{"21":"b:ABAYAAUgAA4BAEAAAAUPHwAAAAAA","33":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","37":[112,113,114,115,120,121,122],"39":"b:ABAYAAUgAA4BAEAAAAUPHwAAAAAA","57":"b:AAAAAAAAAAAAAEAAAAAPHwAAAAAA","83":"b:ABAYAAUgAA4BAEAAAAUPGQAAAAAA","88":"b:ABAYAAUgAA4BAEAAAAUPHwAAAAAA","96":"b:ABAYAAUgAA4BAEAAAAUPHwAAAAAA","97":"b:AAAAAAAAAAAAAEAAAAAPHwAAAAAA","106":"b:ABAYAAUgAA4BAEAAAAUPHwAAAAAA","110":"b:ABAYAAUgAA4BAEAAAAUPHwAAAAAA","114":[113,115,120,122],"120":[113,115,120,122]},"packages/localhost-45867/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[32,50,83,100,104,106,116,117]},"packages/localhost-45867/assets/chunk-CC9Q-vWm.js":{"8":[32,50,83,100,104,106,116,117],"9":[32,50,83,100,104,106,116,117],"10":[32,50,83,100,104,106,116,117],"19":[32,50,83,100,104,106,116,117],"23":[32,50,83,100,104,106,116,117],"29":[32,50,83,100,104,106,116,117],"33":[32,50,83,100,104,106,116,117],"34":[32,50,83,100,104,106,116,117]},"packages/localhost-45867/assets/shield-alt-B7h2cjjC.js":{"8":[32,50,104,117]},"packages/@n8n/ai-utilities/src/node-catalog/discriminator-utils.ts":{"44":[156,157],"55":[156,157],"70":[156,157],"81":[156,157],"117":[156,157],"128":[156,157],"139":[156,157],"151":[156,157],"161":[156,157],"178":[156,157]},"packages/@n8n/ai-utilities/src/node-catalog/index.ts":{"14":[156,157],"31":[156,157]},"packages/@n8n/ai-utilities/src/node-catalog/lean-node-type.ts":{"62":[156,157],"66":[156,157],"88":[156,157]},"packages/@n8n/ai-utilities/src/node-catalog/node-type-parser.ts":{"39":[156,157],"48":[156,157],"64":[156,157],"80":[156,157],"87":[156,157],"109":[156,157],"118":[156,157],"126":[156,157],"145":[156,157]},"packages/@n8n/ai-utilities/src/node-catalog/resource-operation-extractor.ts":{"56":[156,157],"82":[156,157],"87":[156,157],"98":[156,157],"122":[156,157],"127":[156,157],"152":[156,157],"171":[156,157],"198":[156,157],"216":[156,157],"250":[156,157],"288":[156,157],"295":[156,157],"305":[156,157]},"packages/@n8n/ai-utilities/src/node-catalog/search-engine.ts":{"20":[156,157],"27":[156,157],"58":[156,157],"72":[156,157],"79":[156,157],"82":[156,157],"89":[156,157],"91":[156,157],"120":[156,157],"121":[156,157],"132":[156,157],"138":[156,157],"149":[156,157],"153":[156,157],"157":[156,157],"161":[156,157],"173":[156,157],"203":[156,157],"210":[156,157],"214":[156,157],"221":[156,157],"223":[156,157],"242":[156,157],"248":[156,157],"250":[156,157],"276":[156,157],"324":[156,157],"337":[156,157],"351":[156,157],"378":[156,157],"379":[156,157],"388":[156,157],"414":[156,157],"422":[156,157],"424":[156,157]},"packages/@n8n/ai-workflow-builder.ee/src/code-builder/index.ts":{"14":[156,157],"21":[156,157],"22":[156,157],"24":[156,157]},"packages/@n8n/ai-workflow-builder.ee/src/index.ts":{"7":[18,156,157],"42":[18,156,157]},"packages/@n8n/workflow-sdk/src/index.ts":{"113":[156,157],"126":[156,157],"164":[156,157]},"packages/@n8n/workflow-sdk/src/validation/index.ts":{"64":[156,157],"91":[156,157],"139":[156,157],"204":[156,157],"267":[156,157],"287":[156,157],"305":[156,157],"370":[156,157],"382":[156,157],"473":[156,157],"539":[156,157],"596":[156,157],"629":[156,157],"692":[156,157],"700":[156,157],"701":[156,157],"723":[156,157],"736":[156,157],"750":[156,157],"772":[156,157],"857":[156,157],"898":[156,157],"933":[156,157],"945":[156,157],"969":[156,157],"1001":[156,157],"1031":[156,157],"1035":[156,157],"1048":[156,157],"1055":[156,157],"1063":[156,157],"1068":[156,157],"1075":[156,157],"1100":[156,157],"1158":[156,157],"1195":[156,157]},"packages/@n8n/workflow-sdk/src/validation/schema-validator.ts":{"38":[156,157],"46":[156,157],"59":[156,157],"75":[156,157],"94":[156,157],"120":[156,157],"138":[156,157],"151":[156,157],"183":[156,157],"192":[156,157],"212":[156,157],"256":[156,157],"284":[156,157],"300":[156,157],"313":[156,157],"335":[156,157],"357":[156,157],"389":[156,157],"412":[156,157],"420":[156,157],"422":[156,157],"469":[156,157],"479":[156,157],"482":[156,157],"503":[156,157],"515":[156,157],"518":[156,157],"520":[156,157],"539":[156,157],"548":[156,157],"550":[156,157],"558":[156,157],"573":[156,157],"588":[156,157],"590":[156,157],"611":[156,157],"626":[156,157],"627":[156,157],"636":[156,157],"653":[156,157],"679":[156,157],"680":[156,157]},"packages/cli/src/modules/data-table/data-table-proxy.service.ts":{"44":[156,157],"50":[156,157],"60":[156,157],"69":[156,157],"75":[156,157],"80":[156,157],"91":[156,157],"103":[156,157],"110":[156,157],"113":[156,157],"115":[156,157],"119":[156,157],"124":[156,157],"131":[156,157],"137":[156,157],"147":[156,157],"153":[156,157],"159":[156,157],"171":[156,157],"178":[156,157],"188":[156,157],"199":[156,157],"211":[156,157],"229":[156,157],"232":[156,157],"236":[156,157],"244":[156,157],"248":[156,157],"254":[156,157],"262":[156,157],"266":[156,157],"271":[156,157],"275":[156,157],"279":[156,157],"283":[156,157],"288":[156,157],"292":[156,157],"299":[156,157],"309":[156,157],"319":[156,157]},"packages/cli/src/modules/mcp/mcp-api-key.service.ts":{"25":[157],"33":[157],"56":[157],"71":[157],"105":[157],"124":[157],"133":[157],"146":[157],"162":[157],"163":[157]},"packages/cli/src/modules/mcp/mcp-server-middleware.service.ts":{"23":[156,157],"34":[156,157],"61":[156,157],"62":[156,157],"103":[156,157],"116":[156,157],"125":[156,157]},"packages/cli/src/modules/mcp/mcp.controller.ts":{"24":[156,157],"28":[156,157],"37":[156,157],"64":[156,157],"80":[156,157],"113":[156,157],"191":[156,157],"197":[156,157],"204":[156,157],"212":[156,157]},"packages/cli/src/modules/mcp/mcp.errors.ts":{"9":[156,157],"21":[156,157],"35":[156,157],"46":[156,157],"53":[156,157],"66":[156,157]},"packages/cli/src/modules/mcp/mcp.service.ts":{"107":[156,157],"135":[156,157],"154":[156,157],"193":[156,157],"194":[156,157],"400":[156,157],"453":[156,157],"533":[156,157],"555":[156,157],"563":[156,157],"578":[156,157],"592":[156,157],"603":[156,157],"626":[156,157],"641":[156,157]},"packages/cli/src/modules/mcp/mcp.settings.controller.ts":{"19":[156,157],"30":[156,157],"52":[156,157],"58":[156,157],"63":[156,157],"87":[156,157]},"packages/cli/src/modules/mcp/mcp.settings.service.ts":{"45":[156,157],"55":[156,157],"71":[156,157],"80":[156,157],"120":[156,157],"180":[156,157],"204":[156,157],"209":[156,157],"225":[156,157],"228":[156,157],"248":[156,157],"263":[156,157]},"packages/cli/src/modules/mcp/mcp.typeguards.ts":{"15":[156,157],"24":[156,157],"47":[156,157],"58":[156,157],"76":[156,157]},"packages/cli/src/modules/mcp/mcp.utils.ts":{"11":[156,157],"24":[156,157],"41":[156,157],"63":[156,157],"71":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/add-data-table-column.tool.ts":{"29":[156,157],"47":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/add-data-table-rows.tool.ts":{"30":[156,157],"49":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/create-data-table.tool.ts":{"35":[156,157],"54":[156,157],"72":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/delete-data-table-column.tool.ts":{"19":[156,157],"38":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/index.ts":{"1":[156,157],"2":[156,157],"3":[156,157],"5":[156,157],"6":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/rename-data-table-column.tool.ts":{"28":[156,157],"46":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/rename-data-table.tool.ts":{"19":[156,157],"37":[156,157]},"packages/cli/src/modules/mcp/tools/data-table/search-data-tables.tool.ts":{"28":[156,157],"47":[156,157],"73":[156,157],"79":[156,157]},"packages/cli/src/modules/mcp/tools/execute-workflow.tool.ts":{"96":[156,157],"117":[156,157],"191":[156,157],"224":[156,157],"246":[156,157],"316":[156,157],"334":[156,157],"387":[156,157],"414":[156,157],"425":[156,157],"449":[156,157]},"packages/cli/src/modules/mcp/tools/get-execution.tool.ts":{"64":[156,157],"84":[156,157],"206":[156,157],"239":[156,157],"243":[156,157]},"packages/cli/src/modules/mcp/tools/get-workflow-details.tool.ts":{"31":[156,157],"55":[156,157],"104":[156,157],"134":[156,157],"142":[156,157],"165":[156,157],"167":[156,157]},"packages/cli/src/modules/mcp/tools/list-credentials.tool.ts":{"90":[156,157],"109":[156,157],"163":[156,157],"193":[156,157]},"packages/cli/src/modules/mcp/tools/prepare-workflow-pin-data.tool.ts":{"57":[156,157],"79":[156,157],"137":[156,157],"147":[156,157],"150":[156,157],"223":[156,157]},"packages/cli/src/modules/mcp/tools/publish-workflow.tool.ts":{"39":[156,157],"60":[156,157],"77":[156,157]},"packages/cli/src/modules/mcp/tools/schemas.ts":{"14":[156,157],"18":[156,157],"43":[156,157]},"packages/cli/src/modules/mcp/tools/search-executions.tool.ts":{"64":[156,157],"84":[156,157],"134":[156,157]},"packages/cli/src/modules/mcp/tools/search-folders.tool.ts":{"35":[156,157],"55":[156,157],"93":[156,157]},"packages/cli/src/modules/mcp/tools/search-projects.tool.ts":{"62":[156,157],"82":[156,157],"114":[156,157],"115":[156,157],"119":[156,157],"127":[156,157],"135":[156,157],"142":[156,157]},"packages/cli/src/modules/mcp/tools/search-workflows.tool.ts":{"73":[156,157],"93":[156,157],"151":[156,157],"187":[156,157]},"packages/cli/src/modules/mcp/tools/test-workflow.tool.ts":{"58":[156,157],"81":[156,157],"150":[156,157],"183":[156,157],"184":[156,157],"254":[156,157]},"packages/cli/src/modules/mcp/tools/unpublish-workflow.tool.ts":{"31":[156,157],"52":[156,157],"68":[156,157]},"packages/cli/src/modules/mcp/tools/webhook-utils.ts":{"41":[157],"49":[157],"108":[157],"114":[157],"123":[157],"129":[157],"139":[157],"145":[157],"159":[157],"168":[157],"176":[157],"198":[157],"201":[157],"206":[157],"217":[157],"233":[157],"263":[157],"278":[157],"298":[157]},"packages/cli/src/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.ts":{"25":[156,157],"113":[156,157],"137":[156,157],"180":[156,157],"195":[156,157],"269":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/delete-workflow.tool.ts":{"28":[156,157],"48":[156,157],"66":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.ts":{"49":[156,157],"50":[156,157],"56":[156,157],"63":[156,157],"79":[156,157],"104":[156,157],"122":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.ts":{"39":[156,157],"58":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.ts":{"41":[156,157],"59":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/mcp-instructions.ts":{"21":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.ts":{"31":[156,157],"50":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/update-workflow.tool.ts":{"121":[156,157],"126":[156,157],"140":[156,157],"142":[156,157],"220":[156,157],"246":[156,157],"263":[156,157],"298":[156,157],"345":[156,157],"358":[156,157],"371":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/validate-node.tool.ts":{"81":[156,157],"99":[156,157],"107":[156,157],"109":[156,157],"126":[156,157],"127":[156,157],"128":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.ts":{"53":[156,157],"72":[156,157],"80":[156,157],"90":[156,157]},"packages/cli/src/modules/mcp/tools/workflow-validation.utils.ts":{"20":[157],"50":[157]},"packages/cli/src/node-catalog/node-catalog.service.ts":{"67":[156,157],"71":[156,157],"74":[156,157],"79":[156,157],"86":[156,157],"100":[156,157],"118":[156,157],"120":[156,157],"132":[156,157],"134":[156,157],"161":[156,157],"171":[156,157],"176":[156,157],"182":[156,157],"183":[156,157],"184":[156,157],"201":[156,157],"204":[156,157],"219":[156,157],"229":[156,157]},"packages/cli/src/telemetry/index.ts":{"86":[156,157],"97":[156,157],"142":[156,157],"154":[156,157],"156":[156,157],"165":[156,157],"174":[156,157],"176":[156,157],"183":[156,157],"226":[156,157],"227":[156,157],"251":[156,157],"255":[156,157],"256":[156,157],"276":[156,157],"323":[156,157],"336":[156,157],"362":[156,157],"386":[156,157],"393":[156,157],"423":[156,157],"449":[156,157],"491":[156,157],"495":[156,157],"499":[156,157]},"packages/nodes-base/nodes/OpenWeatherMap/OpenWeatherMap.node.ts":{"195":[50]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/ftp.svg":{"11":[50]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/McpServer.ts":{"59":[159],"68":[159],"76":[159],"89":[159],"98":[159],"99":[159],"102":[159],"117":[159],"130":[159],"185":[159],"206":[159],"230":[159],"234":[159],"244":[159],"260":[159],"278":[159],"327":[159],"332":[159],"337":[159],"341":[159],"345":[159],"349":[159],"353":[159],"357":[159],"361":[159],"365":[159],"369":[159],"380":[159],"389":[159],"405":[159],"422":[159],"432":[159],"435":[159],"442":[159],"454":[159],"470":[159],"516":[159],"519":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/McpTrigger.node.ts":{"13":[159],"144":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/DirectExecutionStrategy.ts":{"6":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/ExecutionCoordinator.ts":{"10":[159],"14":[159],"22":[159],"26":[159],"30":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/PendingCallsManager.ts":{"9":[159],"12":[159],"18":[159],"19":[159],"35":[159],"46":[159],"57":[159],"61":[159],"65":[159],"69":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/protocol/MessageFormatter.ts":{"4":[159],"25":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/protocol/MessageParser.ts":{"11":[159],"20":[159],"30":[159],"40":[159],"49":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/session/InMemorySessionStore.ts":{"5":[159],"11":[159],"16":[159],"21":[159],"26":[159],"30":[159],"34":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/session/SessionManager.ts":{"16":[159],"18":[159],"32":[159],"37":[159],"41":[159],"45":[159],"49":[159],"53":[159],"57":[159],"61":[159],"65":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/transport/SSETransport.ts":{"10":[159],"17":[159],"22":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/transport/StreamableHttpTransport.ts":{"17":[159],"32":[159],"37":[159],"49":[159],"54":[159]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/transport/TransportFactory.ts":{"13":[159],"17":[159],"23":[159],"30":[159],"35":[159]},"packages/@n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts":{"46":[15,159],"72":[15,159],"92":[15,159],"176":[15,159],"329":[15,159],"334":[15,159]},"packages/@n8n/nodes-langchain/utils/schemaParsing.ts":{"9":[159],"10":[159],"36":[159],"51":[159],"55":[159]},"packages/cli/src/credentials/dynamic-credentials-proxy.ts":{"30":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA","32":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA","36":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA","46":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA","58":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA","64":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA","87":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA","115":"b:AAAAAHAgAJEAAAAAAAAAAAAABIQA"},"packages/cli/src/errors/response-errors/webhook-not-found.error.ts":{"3":[141,159],"36":[141,159]},"packages/workflow/src/tool-helpers.ts":{"10":[41,159]},"packages/@n8n/db/src/utils/build-workflows-by-nodes-query.ts":{"4":[36,37,38,83],"20":[36,37,38,83],"27":[36,37,38,83]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/CommunityPackageCard.vue":{"43":[83],"47":[83],"55":[83],"63":[83],"80":[83],"98":[83],"103":[83],"105":[83],"108":[83],"120":[83],"135":[83],"142":[83],"151":[83],"168":[83],"176":[83]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/CommunityPackageInstallModal.vue":{"32":[83],"39":[83],"47":[83],"54":[83],"78":[83],"82":[83],"86":[83],"98":[83],"111":[83],"119":[83],"134":[83],"167":[83],"172":[83],"178":[83]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/CommunityPackageManageConfirmModal.vue":{"32":[83],"54":[83],"57":[83],"68":[83],"69":[83],"72":[83],"108":[83],"112":[83],"120":[83],"124":[83],"147":[83],"151":[83],"190":[83],"192":[83],"203":[83],"216":[83],"226":[83],"232":[83],"240":[83],"252":[83],"253":[83],"261":[83],"270":[83]},"packages/frontend/editor-ui/src/features/settings/communityNodes/composables/useInstallNode.ts":{"38":[55,83],"60":[83]},"packages/frontend/editor-ui/src/features/settings/communityNodes/views/SettingsCommunityNodesView.vue":{"40":[83],"44":[83],"48":[83],"56":[83],"77":[83],"82":[83],"94":[83],"104":[83],"110":[83],"117":[83],"122":[83],"126":[83],"130":[83],"178":[83]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/groups/CanvasNodeGroupTitleBar.vue":{"18":[151,100],"47":[151,100],"48":[151,100],"52":[151,100],"59":[151,100],"68":[151,100],"70":[151,100],"77":[151,100],"81":[151,100],"85":[151,100],"93":[151,100],"97":[151,100],"98":[151,100],"108":[151,100],"115":[151,100],"154":[151,100],"175":[151,100]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/selection/CanvasSelectionToolbar.vue":{"14":[151,100],"30":[151,100],"31":[151,100],"39":[151,100],"41":[151,100],"45":[151,100],"49":[151,100],"53":[151,100],"61":[151,100],"66":[151],"68":[151,100],"80":[151,100],"87":[151,100],"103":[151,100]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useVueFlowTransformPaneTeleport.ts":{"9":[151,100],"14":[151,100],"16":[151,100]},"packages/nodes-base/nodes/Html/Html.node.ts":{"19":[104],"23":[104],"24":[104],"383":[104],"429":[104],"435":[104],"451":[104],"474":[104],"579":[104]},"packages/nodes-base/nodes/Html/utils.ts":{"10":[104],"12":[104],"13":[104],"21":[104],"29":[104],"35":[104]},"packages/nodes-base/nodes/Postgres/Postgres.node.ts":{"8":[104]},"packages/nodes-base/nodes/Postgres/transport/index.ts":{"26":[104],"44":[104],"79":[104],"80":[104],"84":[104],"88":[104],"94":[104],"102":[104],"109":[104],"116":[104],"124":[104],"125":[104],"152":[104],"153":[104],"158":[104],"164":[104],"182":[104],"204":[104]},"packages/nodes-base/nodes/Postgres/v1/PostgresV1.node.ts":{"288":[104],"297":[104],"331":[104]},"packages/nodes-base/nodes/Postgres/v1/genericFunctions.ts":{"13":[104],"27":[104],"33":[104],"36":[104],"55":[104],"62":[104],"78":[104],"83":[104],"88":[104],"92":[104],"105":[104],"119":[104],"121":[104],"136":[104],"157":[104],"182":[104],"198":[104],"200":[104],"224":[104],"231":[104],"255":[104],"291":[104],"307":[104],"308":[104],"314":[104],"327":[104],"346":[104],"383":[104],"398":[104],"399":[104],"405":[104],"418":[104],"425":[104],"450":[104],"494":[104],"510":[104],"511":[104],"517":[104],"520":[104],"537":[104],"546":[104],"558":[104],"561":[104],"587":[104],"626":[104],"641":[104],"642":[104],"648":[104],"651":[104],"668":[104],"677":[104],"690":[104],"693":[104],"721":[104]},"packages/nodes-base/nodes/Postgres/v2/PostgresV2.node.ts":{"16":[104],"25":[104]},"packages/nodes-base/nodes/Postgres/v2/actions/database/deleteTable.operation.ts":{"88":[104]},"packages/nodes-base/nodes/Postgres/v2/actions/database/executeQuery.operation.ts":{"55":[104],"65":[104],"119":[104],"120":[104]},"packages/nodes-base/nodes/Postgres/v2/actions/database/insert.operation.ts":{"161":[104]},"packages/nodes-base/nodes/Postgres/v2/actions/database/select.operation.ts":{"79":[104]},"packages/nodes-base/nodes/Postgres/v2/actions/database/update.operation.ts":{"195":[104],"279":[104],"286":[104],"333":[104]},"packages/nodes-base/nodes/Postgres/v2/actions/database/upsert.operation.ts":{"194":[104],"286":[104],"298":[104]},"packages/nodes-base/nodes/Postgres/v2/actions/router.ts":{"11":[104]},"packages/nodes-base/nodes/Postgres/v2/helpers/utils.ts":{"27":[104],"36":[104],"46":[104],"50":[104],"51":[104],"54":[104],"58":[104],"63":[104],"70":[104],"79":[104],"87":[104],"130":[104],"151":[104],"180":[104],"192":[104],"207":[104],"226":[104],"234":[104],"311":[104],"314":[104],"315":[104],"322":[104],"353":[104],"356":[104],"359":[104],"366":[104],"376":[104],"392":[104],"413":[104],"453":[104],"495":[104],"501":[104],"517":[104],"518":[104],"526":[104],"527":[104],"530":[104],"537":[104],"540":[104],"547":[104],"562":[104],"592":[104],"608":[104],"613":[104],"620":[104],"625":[104],"628":[104],"645":[104],"652":[104],"673":[104],"676":[104],"694":[104],"711":[104],"752":[104],"754":[104],"766":[104],"772":[104],"781":[104]},"packages/nodes-base/nodes/Postgres/v2/methods/credentialTest.ts":{"10":[104]},"packages/nodes-base/nodes/Postgres/v2/methods/listSearch.ts":{"6":[104],"17":[104],"24":[104],"40":[104]},"packages/nodes-base/nodes/Postgres/v2/methods/loadOptions.ts":{"7":[104],"23":[104],"30":[104],"38":[104],"43":[104]},"packages/nodes-base/nodes/Postgres/v2/methods/resourceMapping.ts":{"61":[104],"76":[104],"98":[104],"100":[104]},"packages/nodes-base/utils/connection-pool-manager.ts":{"48":[104],"61":[104],"63":[104],"69":[104],"76":[104],"99":[104],"126":[104],"134":[104],"147":[104],"161":[104]},"packages/@n8n/codemirror-lang-sql/src/complete.ts":{"192":[104],"193":[104]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/html.svg":{"11":[104]},"packages/frontend/editor-ui/src/features/shared/editors/components/HtmlEditor/HtmlEditor.vue":{"51":[104],"63":[104],"68":[104],"97":[104],"100":[104],"237":[104],"243":[104],"247":[104],"260":[104],"265":[104]},"packages/frontend/editor-ui/src/features/shared/editors/components/HtmlEditor/utils.ts":{"44":[104]},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/ExpressionOutput.vue":{"20":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","30":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","35":"b:AAAAAAAAAAAAAEAAAAEPFwAAAAAA","49":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","50":"b:AAAAAAAAAAAAAEAAAAEPFwAAAAAA","53":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","71":"b:AAAAAAAAAAAAAEAAAAEPFwAAAAAA","82":"b:AAAAAAAAAAAAAEAAAAEPFwAAAAAA","85":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","95":[114],"105":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","106":"b:AAAAAAAAAAAAAEAAAAEPFwAAAAAA","119":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","132":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","137":"b:AAAAAAAAAAAAAEAAAAEPGQAAAAAA","141":[114],"142":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/OutputItemSelect.vue":{"7":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","10":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","11":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","12":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","13":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","14":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","17":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","18":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","19":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","20":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","21":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","25":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","31":[120,121],"35":[120],"37":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","43":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA","70":"b:AAAAAAAAAAAAAEAAAAEPHwAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/SqlEditor/SqlEditor.vue":{"42":[104],"80":[104],"82":[104],"88":[104],"130":[104],"135":[104],"140":[104],"146":[104],"154":[104],"158":[104],"160":[104],"163":[104],"208":[104],"213":[104]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/blank.completions.ts":{"8":"b:AAAAAAAAAAAAAEAAAAEPHQAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/bracketAccess.completions.ts":{"17":"b:AAAAAAAAAAAAAEAAAAEPHQAAAAAA","53":[112,113,114,120],"62":[113],"70":[112,113,114,120],"74":[112,113,114,120],"75":[112,113,114,120]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/dollar.completions.ts":{"29":"b:AAAAAAAAAAAAAEAAAAEPHQAAAAAA","43":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","60":"b:AAAAAAAAAAAAAEAAAAEPFQAAAAAA","138":"b:AAAAAAAAAAAAAAAAAAEPFQAAAAAA","153":"b:AAAAAAAAAAAAAAAAAAEPFQAAAAAA","155":"b:AAAAAAAAAAAAAAAAAAEPFQAAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/nonDollar.completions.ts":{"9":"b:AAAAAAAAAAAAAEAAAAEPHQAAAAAA"},"packages/core/src/binary-data/utils.ts":{"6":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","10":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","15":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","16":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","18":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","19":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","20":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","29":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","46":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","54":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","75":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","83":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","89":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","98":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B","108":"b:ABEAABQEACQBAAAAAAQAgAEQAA4B"},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/axios-utils.ts":{"18":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","27":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","36":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","48":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","55":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","59":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","78":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","86":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","133":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","140":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","145":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","148":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","151":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","184":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","194":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","197":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","201":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","217":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","230":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","236":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","238":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","253":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","280":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","291":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","316":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA","331":"b:ABAAAHQgAIQAAAAAAIQAAQAAAAQA"},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/http-request.ts":{"32":"b:ABAAIHQgAIQAAAAAAAQgCQAAAAQA","52":"b:ABAAIHQgAIQAAAAAAAQgCQAAAAQA","108":"b:ABAAIHQgAIQAAAAAAAQgCQAAAAQA","159":"b:ABAAIHQgAIQAAAAAAAQgCQAAAAQA","163":"b:ABAAIHQgAIQAAAAAAAQgCQAAAAQA","173":"b:ABAAIHQgAIQAAAAAAAQgCQAAAAQA","180":"b:ABAAIHQgAIQAAAAAAAQgCQAAAAQA"},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/legacy-request-adapter.ts":{"55":[12,34,45,154,58,63,106,120],"73":[12,34,45,154,58,63,106,120],"138":[12,34,45,154,58,63,106,120],"187":[12,34,45,154,58,63,106,120],"207":[12,34,45,154,58,63,106,120],"211":[12,34,45,154,58,63,106,120],"220":[12,34,45,154,58,63,106,120],"250":[12,34,45,154,58,63,106,120],"261":[12,34,45,154,58,63,106,120],"314":[12,34,45,154,58,63,106,120],"322":[12,34,45,154,58,63,106,120],"335":[12,34,45,154,58,63,106,120],"352":[12,34,45,154,58,63,106,120]},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/outbound-user-agent.ts":{"11":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","28":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","40":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","54":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA"},"packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts":{"31":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","40":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","44":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","45":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","48":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","54":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","67":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","94":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","129":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","131":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","142":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","238":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","243":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","248":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","255":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","281":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","296":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","298":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","300":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","312":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA"},"packages/nodes-base/nodes/HttpRequest/HttpRequest.node.ts":{"9":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA"},"packages/nodes-base/nodes/HttpRequest/V1/HttpRequestV1.node.ts":{"42":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","616":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","812":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","889":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1003":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1010":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1015":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1159":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA"},"packages/nodes-base/nodes/HttpRequest/V2/HttpRequestV2.node.ts":{"44":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","629":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","874":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","951":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1068":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1074":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1079":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1092":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA","1235":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA"},"packages/nodes-base/nodes/HttpRequest/V3/Description.ts":{"1223":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA"},"packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts":{"53":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","60":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","64":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","71":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","106":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","389":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","506":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","630":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","672":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","728":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","747":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","758":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","763":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","778":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","784":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","807":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","809":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","810":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","945":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","1107":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","1170":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA"},"packages/nodes-base/nodes/HttpRequest/V3/utils/binaryData.ts":{"3":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA"},"packages/nodes-base/nodes/HttpRequest/V3/utils/buffer-decoding.ts":{"13":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","36":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA"},"packages/nodes-base/nodes/HttpRequest/V3/utils/parse.ts":{"1":"b:ABAAQAQwAAQBAAAAAQSAAAAABAAA"},"packages/nodes-base/nodes/HttpRequest/shared/optimizeResponse.ts":{"20":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","37":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","38":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","42":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","55":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","63":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","92":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","97":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","127":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","128":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","179":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","194":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","226":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA","255":"b:ABAAQAQwAAQBAAAAAQSAAAAABAQA"},"packages/workflow/src/credential-domain-restrictions.ts":{"54":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","58":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","65":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","74":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","86":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","91":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","98":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","116":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","133":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","147":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA","181":"b:ABAAAHQgAIQAAAAAAAQAAQAAAAQA"},"packages/workflow/src/errors/node-api.error.ts":{"124":[15,29,41,42,45,106,120,123],"277":[15,29,41,42,45,106,120,123],"285":[15,29,41,42,45,106,120,123],"301":[15,29,41,42,45,106,120,123]},"packages/frontend/editor-ui/src/app/components/FocusPanel.vue":{"57":[80,99],"89":[80,99],"93":[80,99],"113":[80,99],"129":[80,99],"137":[80,99],"140":[80,99],"142":[80,99],"196":[80,99],"202":[80,99],"213":[80,99],"215":[80,99],"233":[80,99],"235":[99],"241":[99],"369":[80,99],"373":[80,99],"374":[80,99],"395":[80,99],"601":[99],"604":[99]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalCanvasNodeSettings.vue":{"21":[151,80,99],"31":[151,80,99],"32":[151,80,99],"35":[151,80,99],"36":[151,80,99],"41":[151,80,99],"43":[151],"49":[151],"70":[151,80,99],"92":[151],"94":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue":{"19":[13,80,99],"39":[13,80,99],"43":[13,80,99],"45":[99],"54":[99],"80":[13,80,99],"87":[80,99],"96":[13,80,99],"111":[99]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalFocusPanelHeader.vue":{"18":[80,99],"27":[80,99],"28":[80,99],"32":[80,99]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalNodeDetailsDrawer.vue":{"21":[80,99],"26":[80,99],"27":[80],"33":[80,99],"36":[80,99],"37":[80],"46":[80,99],"51":[80],"53":[80],"58":[80]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/composables/useExpressionResolveCtx.ts":{"7":[13,151,80,99],"12":[13,151,80,99],"21":[13,151,80,99]},"packages/@n8n/design-system/src/components/N8nIcon/custom/triangle.svg":{"8":"b:AAQAAAAAAAChAAAAgIQAFQEAAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/sendConsoleMessage.ts":{"7":[12,34,45,58,65,106]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isEnterpriseFeatureEnabled.ts":{"4":[106],"15":[106]},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/enterprise.ts":{"6":[106]},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionDebugging.ts":{"39":[106],"43":[106],"54":[106],"55":[106],"61":[106],"71":[106],"88":[106],"107":[106],"113":[106],"117":[106],"161":[106]},"packages/frontend/editor-ui/src/app/utils/stringUtils.ts":{"8":[116,118],"16":[116,118],"21":[116,118],"22":[116,118]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPaginationBar.vue":{"12":[71,116,118],"16":[71,116,118],"28":[71],"39":[71,116,118],"40":[71,116,118]},"packages/core/src/execution-engine/node-execution-context/load-options-context.ts":{"21":[29,36,37,38,117,120,123,124],"36":[29,36,37,38,117,120,123,124],"40":[29,36,37,38,117,120,123,124],"69":[29,36,37,38,117,120,123,124]},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/authentication.ts":{"22":[29,36,37,38,154,63,117,120],"150":[29,36,37,38,154,63,117,120]},"packages/nodes-base/nodes/Airtable/Airtable.node.ts":{"8":[117]},"packages/nodes-base/nodes/Airtable/v1/AirtableV1.node.ts":{"558":[117],"565":[117],"833":[117],"834":[117],"838":[117],"839":[117]},"packages/nodes-base/nodes/Airtable/v1/GenericFunctions.ts":{"29":[117],"72":[117],"100":[117]},"packages/nodes-base/nodes/Airtable/v2/AirtableV2.node.ts":{"15":[117],"29":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/base/getMany.operation.ts":{"88":[117],"112":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/base/getSchema.operation.ts":{"30":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/record/create.operation.ts":{"51":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/record/deleteRecord.operation.ts":{"36":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/record/get.operation.ts":{"60":[117],"85":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/record/search.operation.ts":{"147":[117],"183":[117],"214":[117],"224":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/record/update.operation.ts":{"57":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/record/upsert.operation.ts":{"52":[117],"120":[117],"125":[117],"142":[117]},"packages/nodes-base/nodes/Airtable/v2/actions/router.ts":{"8":[117]},"packages/nodes-base/nodes/Airtable/v2/helpers/utils.ts":{"11":[117],"16":[117],"35":[117],"42":[117],"57":[117],"76":[117],"91":[117],"100":[117],"110":[117]},"packages/nodes-base/nodes/Airtable/v2/methods/listSearch.ts":{"11":[117],"44":[117],"54":[117],"91":[117],"101":[117],"117":[117],"145":[117]},"packages/nodes-base/nodes/Airtable/v2/methods/loadOptions.ts":{"6":[117],"19":[117],"42":[117],"57":[117],"62":[117],"65":[117],"80":[117]},"packages/nodes-base/nodes/Airtable/v2/methods/resourceMapping.ts":{"48":[117],"63":[117],"76":[117],"88":[117],"90":[117],"120":[117]},"packages/nodes-base/nodes/Airtable/v2/transport/index.ts":{"20":[117],"59":[117],"87":[117],"94":[117],"131":[117]},"packages/nodes-base/nodes/Code/ExecutionError.ts":{"14":[8,17,117,138],"30":[8,17,117,138],"38":[8,17,117,138],"39":[8,17,117,138],"59":[8,17,117,138],"75":[8,17,117,138]},"packages/nodes-base/nodes/Code/JavaScriptSandbox.ts":{"30":[8,17,117,138],"52":[8,17,117,138],"55":[8,17,117,138],"65":[8,17,117,138],"85":[8,17,117,138],"93":[8,17,117,138],"103":[8,17,117,138]},"packages/nodes-base/nodes/Code/Sandbox.ts":{"24":[8,17,117,138],"46":[8,17,117,138],"59":[8,17,117,138],"71":[8,17,117,138]},"packages/nodes-base/nodes/Function/Function.node.ts":{"67":[117,138],"79":[117,138],"80":[117,138],"101":[117,138],"102":[117,138],"115":[117,138],"215":[117,138]},"packages/nodes-base/nodes/Typeform/GenericFunctions.ts":{"40":[117],"77":[117],"113":[117]},"packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts":{"122":[117],"160":[117],"179":[117],"205":[117],"230":[117],"305":[117]},"packages/nodes-base/nodes/Typeform/TypeformTriggerHelpers.ts":{"18":[117],"24":[117],"36":[117]},"packages/nodes-base/utils/webhook-signature-verification.ts":{"64":[117],"106":[117]},"packages/workflow/src/errors/expression.error.ts":{"32":[117],"56":[117]},"packages/workflow/src/workflow-data-proxy-helpers.ts":{"3":[117]},"packages/@n8n/design-system/src/components/N8nIcon/custom/empty-output.svg":{"9":[117]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/utils.ts":{"10":[96,103,117],"19":[96,103,117],"30":[96,103,117]},"packages/frontend/editor-ui/src/features/shared/editors/components/JsEditor/JsEditor.vue":{"31":[15,117],"36":[15,117],"40":[15,117],"57":[15,117],"73":[15,117],"77":[15,117],"102":[15,117],"121":[15,117]},"packages/core/src/execution-engine/node-execution-context/utils/parse-incoming-message.ts":{"3":[19,20,34,57,63],"5":[19,20,34,57,63],"55":[19,20,34,57,63],"77":[19,20,34,57,63],"108":[19,20,34,57,63]},"packages/localhost-33901/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[34]},"packages/localhost-33901/assets/chunk-CC9Q-vWm.js":{"8":[34],"9":[34],"10":[34],"19":[34],"23":[34],"29":[34],"33":[34],"34":[34]},"packages/@n8n/ai-utilities/src/utils/log-wrapper.ts":{"38":[8,17,36,37,38],"80":[8,17,36,37,38],"109":[8,17,36,37,38],"127":[8,17,36,37,38],"132":[8,17,36,37,38],"155":[8,17,36,37,38],"184":[8,17,36,37,38],"205":[8,17,36,37,38],"227":[8,17,36,37,38],"271":[8,17,36,37,38],"298":[8,17,36,37,38],"325":[8,17,36,37,38],"355":[8,17,36,37,38],"374":[8,17,36,37,38],"398":[8,17,36,37,38],"422":[8,17,36,37,38],"456":[8,17,36,37,38]},"packages/@n8n/api-types/src/schemas/timezone.schema.ts":{"3":[36,37,38]},"packages/@n8n/db/src/repositories/project-secrets-provider-access.repository.ee.ts":{"9":[36,37,39,86],"12":[36,37,39,86],"21":[36,37,39,86],"28":[36,37,39,86],"35":[36,37,39,86],"43":[36,37,39,86],"54":[36,37,39,86]},"packages/@n8n/nodes-langchain/credentials/AnthropicApi.credentials.ts":{"9":[36,37,38],"76":[36,37,38]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryBufferWindow/MemoryBufferWindow.node.ts":{"30":[36,37,38],"34":[36,37,38],"41":[36,37,38],"63":[36,37,38],"75":[36,37,38],"158":[36,37,38]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryManager/MemoryManager.node.ts":{"20":[36,37,38],"47":[36,37,38],"50":[36,37,38],"53":[36,37,38],"63":[36,37,38],"73":[36,37,38],"302":[36,37,38],"400":[36,37,38]},"packages/@n8n/nodes-langchain/nodes/memory/descriptions.ts":{"28":[15,36,37,38,119,120],"63":[15,36,37,38,119,120]},"packages/cli/src/credentials/credential-connection-status-proxy.ts":{"17":[36,37,39],"21":[36,37,39],"26":[36,37,39],"31":[36,37,39],"36":[36,37,39]},"packages/cli/src/modules/chat-hub/chat-hub-agent.repository.ts":{"8":[36,37,38,39],"12":[36,37,38,39],"23":[36,37,38,39],"31":[36,37,38,39],"36":[36,37,38,39],"43":[36,37,38,39],"52":[36,37,38,39]},"packages/cli/src/modules/chat-hub/chat-hub-agent.service.ts":{"37":[36,37,38,39,7],"52":[36,37,38,39,7],"55":[36,37,38,39,7],"58":[36,37,38,39,7],"59":[36,37,38,39,7],"78":[36,37,38,39,7],"82":[36,37,38,39,7],"90":[36,37,38,39,7],"97":[36,37,38,39,7],"125":[36,37,38,39,7],"165":[36,37,38,39,7],"184":[36,37,38,39,7],"205":[36,37,38,39,7],"217":[36,37,38,39,7],"231":[36,37,38,39,7],"265":[36,37,38,39,7],"288":[36,37,38,39,7],"310":[36,37,38,39,7],"335":[36,37,38,39,7],"350":[36,37,38,39,7],"361":[36,37,38,39,7],"376":[36,37,38,39,7],"385":[36,37,38,39,7],"395":[36,37,38,39,7],"401":[36,37,38,39,7],"404":[36,37,38,39,7],"419":[36,37,38,39,7],"427":[36,37,38,39,7],"452":[36,37,38,39,7]},"packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts":{"18":[36,37,38,39,42],"25":[36,37,38,39,42],"38":[36,37,38,39,42],"49":[36,37,38,39,42],"62":[36,37,38,39,42],"71":[36,37,38,39,42],"91":[36,37,38,39,42]},"packages/cli/src/modules/chat-hub/chat-hub-execution.service.ts":{"51":[36,37,38,41,42],"68":[36,37,38,41,42],"79":[36,37,38,41,42],"91":[36,37,38,41,42],"156":[36,37,38,41,42],"207":[36,37,38,41,42],"228":[36,37,38,41,42],"251":[36,37,38,41,42],"254":[36,37,38,41,42],"264":[36,37,38,41,42],"274":[36,37,38,41,42],"303":[36,37,38,41,42],"368":[36,37,38,41,42],"447":[36,37,38,41,42],"489":[36,37,38,41,42],"497":[36,37,38,41,42],"498":[36,37,38,41,42],"499":[36,37,38,41,42],"541":[36,37,38,41,42],"570":[36,37,38,41,42],"610":[36,37,38,41,42],"624":[36,37,38,41,42],"629":[36,37,38,41,42],"631":[36,37,38,41,42],"635":[36,37,38,41,42],"641":[36,37,38,41,42],"653":[36,37,38,41,42],"659":[36,37,38,41,42],"661":[36,37,38,41,42],"662":[36,37,38,41,42],"663":[36,37,38,41,42],"666":[36,37,38,41,42],"673":[36,37,38,41,42],"692":[36,37,38,41,42],"713":[36,37,38,41,42],"733":[36,37,38,41,42],"746":[36,37,38,41,42]},"packages/cli/src/modules/chat-hub/chat-hub-extractor.ts":{"31":[36,37,38],"51":[36,37,38],"64":[36,37,38],"70":[36,37,38]},"packages/cli/src/modules/chat-hub/chat-hub-title.service.ts":{"39":[36,37,38,39,42],"53":[36,37,38,39,42],"80":[36,37,38,39,42],"88":[36,37,38,39,42],"124":[36,37,38,39,42],"152":[36,37,38,39,42],"186":[36,37,38,39,42],"259":[36,37,38,39,42],"260":[36,37,38,39,42],"262":[36,37,38,39,42],"272":[36,37,38,39,42]},"packages/cli/src/modules/chat-hub/chat-hub-tool.repository.ts":{"10":[36,37,38,39,41],"14":[36,37,38,39,41],"22":[36,37,38,39,41],"30":[36,37,38,39,41],"35":[36,37,38,39,41],"42":[36,37,38,39,41],"50":[36,37,38,39,41],"57":[36,37,38,39,41],"68":[36,37,38,39,41],"79":[36,37,38,39,41],"90":[36,37,38,39,41],"98":[36,37,38,39,41],"101":[36,37,38,39,41],"109":[36,37,38,39,41],"112":[36,37,38,39,41],"122":[36,37,38,39,41]},"packages/cli/src/modules/chat-hub/chat-hub-tool.service.ts":{"21":[36,37,38,39,41],"29":[36,37,38,39,41],"33":[36,37,38,39,41],"37":[36,37,38,39,41],"39":[36,37,38,39,41],"42":[36,37,38,39,41],"44":[36,37,38,39,41],"47":[36,37,38,39,41],"51":[36,37,38,39,41],"55":[36,37,38,39,41],"59":[36,37,38,39,41],"63":[36,37,38,39,41],"79":[36,37,38,39,41],"86":[36,37,38,39,41],"104":[36,37,38,39,41],"110":[36,37,38,39,41],"136":[36,37,38,39,41],"137":[36,37,38,39,41],"149":[36,37,38,39,41]},"packages/cli/src/modules/chat-hub/chat-hub-workflow.service.ts":{"85":[36,37,38,39,41,42],"100":[36,37,38,39,41,42],"106":[36,37,38,39,41,42],"127":[36,37,38,39,41,42],"181":[36,37,38,39,41,42],"192":[36,37,38,39,41,42],"247":[36,37,38,39,41,42],"262":[36,37,38,39,41,42],"276":[36,37,38,39,41,42],"296":[36,37,38,39,41,42],"297":[36,37,38,39,41,42],"311":[36,37,38,39,41,42],"358":[36,37,38,39,41,42],"374":[36,37,38,39,41,42],"424":[36,37,38,39,41,42],"425":[36,37,38,39,41,42],"488":[36,37,38,39,41,42],"558":[36,37,38,39,41,42],"623":[36,37,38,39,41,42],"635":[36,37,38,39,41,42],"716":[36,37,38,39,41,42],"724":[36,37,38,39,41,42],"750":[36,37,38,39,41,42],"912":[36,37,38,39,41,42],"927":[36,37,38,39,41,42],"949":[36,37,38,39,41,42],"1019":[36,37,38,39,41,42],"1079":[36,37,38,39,41,42],"1090":[36,37,38,39,41,42],"1104":[36,37,38,39,41,42],"1120":[36,37,38,39,41,42],"1121":[36,37,38,39,41,42],"1128":[36,37,38,39,41,42],"1153":[36,37,38,39,41,42],"1166":[36,37,38,39,41,42],"1201":[36,37,38,39,41,42],"1204":[36,37,38,39,41,42],"1215":[36,37,38,39,41,42],"1226":[36,37,38,39,41,42],"1284":[36,37,38,39,41,42],"1326":[36,37,38,39,41,42],"1396":[36,37,38,39,41,42],"1426":[36,37,38,39,41,42],"1456":[36,37,38,39,41,42],"1464":[36,37,38,39,41,42],"1467":[36,37,38,39,41,42],"1521":[36,37,38,39,41,42],"1530":[36,37,38,39,41,42],"1534":[36,37,38,39,41,42],"1539":[36,37,38,39,41,42],"1552":[36,37,38,39,41,42],"1561":[36,37,38,39,41,42],"1579":[36,37,38,39,41,42],"1586":[36,37,38,39,41,42],"1615":[36,37,38,39,41,42],"1641":[36,37,38,39,41,42],"1762":[36,37,38,39,41,42],"1785":[36,37,38,39,41,42]},"packages/cli/src/modules/chat-hub/chat-hub.attachment.service.ts":{"19":[36,37,38],"28":[36,37,38],"55":[36,37,38],"85":[36,37,38],"129":[36,37,38],"132":[36,37,38],"138":[36,37,38],"146":[36,37,38],"152":[36,37,38],"154":[36,37,38],"158":[36,37,38],"170":[36,37,38],"174":[36,37,38],"196":[36,37,38],"197":[36,37,38],"211":[36,37,38]},"packages/cli/src/modules/chat-hub/chat-hub.constants.ts":{"694":[36,37,38],"719":[36,37,38]},"packages/cli/src/modules/chat-hub/chat-hub.controller.ts":{"59":[36,37,38,39,41],"69":[36,37,38,39,41],"79":[36,37,38,39,41],"94":[36,37,38,39,41],"104":[36,37,38,39,41],"142":[36,37,38,39,41],"151":[36,37,38,39,41],"177":[36,37,38,39,41],"207":[36,37,38,39,41],"232":[36,37,38,39,41],"266":[36,37,38,39,41],"291":[36,37,38,39,41],"325":[36,37,38,39,41],"341":[36,37,38,39,41],"357":[36,37,38,39,41],"372":[36,37,38,39,41],"384":[36,37,38,39,41],"386":[36,37,38,39,41],"391":[36,37,38,39,41],"403":[36,37,38,39,41],"418":[36,37,38,39,41],"429":[36,37,38,39,41],"435":[36,37,38,39,41],"445":[36,37,38,39,41],"456":[36,37,38,39,41],"470":[36,37,38,39,41],"493":[36,37,38,39,41],"503":[36,37,38,39,41]},"packages/cli/src/modules/chat-hub/chat-hub.models.service.ts":{"32":[36,37,38,42],"41":[36,37,38,42],"54":[36,37,38,42],"64":[36,37,38,42],"90":[36,37,38,42],"98":[36,37,38,42],"172":[36,37,38,42],"188":[36,37,38,42],"204":[36,37,38,42],"256":[36,37,38,42],"301":[36,37,38,42],"311":[36,37,38,42],"318":[36,37,38,42],"412":[36,37,38,42],"461":[36,37,38,42],"510":[36,37,38,42],"554":[36,37,38,42],"597":[36,37,38,42],"640":[36,37,38,42],"683":[36,37,38,42],"726":[36,37,38,42],"769":[36,37,38,42],"781":[36,37,38,42],"783":[36,37,38,42],"803":[36,37,38,42],"812":[36,37,38,42],"813":[36,37,38,42],"820":[36,37,38,42],"828":[36,37,38,42],"874":[36,37,38,42],"879":[36,37,38,42],"880":[36,37,38,42],"884":[36,37,38,42],"885":[36,37,38,42],"894":[36,37,38,42],"900":[36,37,38,42]},"packages/cli/src/modules/chat-hub/chat-hub.service.ts":{"56":[36,37,38,39,41,42],"76":[36,37,38,39,41,42],"87":[36,37,38,39,41,42],"113":[36,37,38,39,41,42],"163":[36,37,38,39,41,42],"187":[36,37,38,39,41,42],"194":[36,37,38,39,41,42],"198":[36,37,38,39,41,42],"225":[36,37,38,39,41,42],"233":[36,37,38,39,41,42],"249":[36,37,38,39,41,42],"262":[36,37,38,39,41,42],"271":[36,37,38,39,41,42],"281":[36,37,38,39,41,42],"293":[36,37,38,39,41,42],"301":[36,37,38,39,41,42],"318":[36,37,38,39,41,42],"322":[36,37,38,39,41,42],"331":[36,37,38,39,41,42],"375":[36,37,38,39,41,42],"376":[36,37,38,39,41,42],"383":[36,37,38,39,41,42],"422":[36,37,38,39,41,42],"436":[36,37,38,39,41,42],"460":[36,37,38,39,41,42],"474":[36,37,38,39,41,42],"506":[36,37,38,39,41,42],"550":[36,37,38,39,41,42],"587":[36,37,38,39,41,42],"615":[36,37,38,39,41,42],"628":[36,37,38,39,41,42],"707":[36,37,38,39,41,42],"745":[36,37,38,39,41,42],"760":[36,37,38,39,41,42],"773":[36,37,38,39,41,42],"779":[36,37,38,39,41,42],"852":[36,37,38,39,41,42],"878":[36,37,38,39,41,42],"898":[36,37,38,39,41,42],"911":[36,37,38,39,41,42],"917":[36,37,38,39,41,42],"1006":[36,37,38,39,41,42],"1033":[36,37,38,39,41,42],"1042":[36,37,38,39,41,42],"1054":[36,37,38,39,41,42],"1057":[36,37,38,39,41,42],"1113":[36,37,38,39,41,42],"1127":[36,37,38,39,41,42],"1139":[36,37,38,39,41,42],"1142":[36,37,38,39,41,42],"1201":[36,37,38,39,41,42],"1228":[36,37,38,39,41,42],"1271":[36,37,38,39,41,42],"1291":[36,37,38,39,41,42],"1298":[36,37,38,39,41,42]},"packages/cli/src/modules/chat-hub/chat-message.repository.ts":{"19":[36,37,38],"26":[36,37,38],"38":[36,37,38],"48":[36,37,38],"74":[36,37,38],"108":[36,37,38],"117":[36,37,38],"122":[36,37,38],"130":[36,37,38]},"packages/cli/src/modules/chat-hub/chat-session.repository.ts":{"10":[36,37,38],"14":[36,37,38],"26":[36,37,38],"31":[36,37,38],"36":[36,37,38],"72":[36,37,38],"77":[36,37,38],"91":[36,37,38]},"packages/cli/src/modules/chat-hub/chat-stream-state.service.ts":{"68":[36,37,38],"89":[36,37,38],"115":[36,37,38],"131":[36,37,38],"151":[36,37,38],"177":[36,37,38],"187":[36,37,38],"205":[36,37,38],"233":[36,37,38],"245":[36,37,38],"251":[36,37,38],"268":[36,37,38],"283":[36,37,38],"287":[36,37,38],"291":[36,37,38],"304":[36,37,38],"319":[36,37,38],"329":[36,37,38],"342":[36,37,38],"357":[36,37,38],"367":[36,37,38],"370":[36,37,38],"380":[36,37,38]},"packages/cli/src/modules/chat-hub/chat-stream.service.ts":{"52":[36,37,38,41,42],"66":[36,37,38,41,42],"100":[36,37,38,41,42],"137":[36,37,38,41,42],"162":[36,37,38,41,42],"198":[36,37,38,41,42],"235":[36,37,38,41,42],"272":[36,37,38,41,42],"308":[36,37,38,41,42],"318":[36,37,38,41,42],"326":[36,37,38,41,42],"335":[36,37,38,41,42],"435":[36,37,38,41,42],"454":[36,37,38,41,42],"461":[36,37,38,41,42],"501":[36,37,38,41,42],"531":[36,37,38,41,42],"561":[36,37,38,41,42],"588":[36,37,38,41,42],"616":[36,37,38,41,42],"643":[36,37,38,41,42]},"packages/cli/src/modules/chat-hub/context-limits.ts":{"223":[36,37,38]},"packages/cli/src/modules/chat-hub/stream-capturer.ts":{"13":[36,37,38],"23":[36,37,38],"32":[36,37,38],"43":[36,37,38],"44":[36,37,38],"53":[36,37,38],"67":[36,37,38],"72":[36,37,38],"96":[36,37,38],"112":[36,37,38],"124":[36,37,38],"142":[36,37,38],"151":[36,37,38],"204":[36,37,38]},"packages/nodes-base/nodes/Merge/Merge.node.ts":{"9":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v1/MergeV1.node.ts":{"20":[36,37,38,97,107,119],"205":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts":{"35":[36,37,38,97,107,119],"293":[36,37,38,97,107,119],"459":[36,37,38,97,107,119],"467":[36,37,38,97,107,119],"520":[36,37,38,97,107,119],"603":[36,37,38,97,107,119],"604":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v2/utils.ts":{"31":[36,37,38,97,107,119],"32":[36,37,38,97,107,119],"34":[36,37,38,97,107,119],"41":[36,37,38,97,107,119],"47":[36,37,38,97,107,119],"72":[36,37,38,97,107,119],"78":[36,37,38,97,107,119],"103":[36,37,38,97,107,119],"128":[36,37,38,97,107,119],"150":[36,37,38,97,107,119],"151":[36,37,38,97,107,119],"159":[36,37,38,97,107,119],"176":[36,37,38,97,107,119],"187":[36,37,38,97,107,119],"191":[36,37,38,97,107,119],"197":[36,37,38,97,107,119],"203":[36,37,38,97,107,119],"210":[36,37,38,97,107,119],"213":[36,37,38,97,107,119],"216":[36,37,38,97,107,119],"219":[36,37,38,97,107,119],"243":[36,37,38,97,107,119],"246":[36,37,38,97,107,119],"250":[36,37,38,97,107,119],"268":[36,37,38,97,107,119],"273":[36,37,38,97,107,119],"279":[36,37,38,97,107,119],"285":[36,37,38,97,107,119],"288":[36,37,38,97,107,119],"292":[36,37,38,97,107,119],"307":[36,37,38,97,107,119],"327":[36,37,38,97,107,119],"334":[36,37,38,97,107,119],"350":[36,37,38,97,107,119],"351":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/MergeV3.node.ts":{"15":[36,37,38,97,107,119],"26":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/actions/mode/append.ts":{"21":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/actions/mode/chooseBranch.ts":{"73":[36,37,38,97,107,119],"98":[36,37,38,97,107,119],"99":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineAll.ts":{"35":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineByFields.ts":{"261":[36,37,38,97,107,119],"274":[36,37,38,97,107,119],"297":[36,37,38,97,107,119],"305":[36,37,38,97,107,119],"358":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineByPosition.ts":{"49":[36,37,38,97,107,119],"80":[36,37,38,97,107,119],"82":[36,37,38,97,107,119],"95":[36,37,38,97,107,119],"100":[36,37,38,97,107,119],"106":[36,37,38,97,107,119],"110":[36,37,38,97,107,119],"112":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineBySql.ts":{"84":[36,37,38,97,107,119],"105":[36,37,38,97,107,119],"113":[36,37,38,97,107,119],"114":[36,37,38,97,107,119],"138":[36,37,38,97,107,119],"181":[36,37,38,97,107,119],"196":[36,37,38,97,107,119],"197":[36,37,38,97,107,119],"198":[36,37,38,97,107,119],"215":[36,37,38,97,107,119],"216":[36,37,38,97,107,119],"226":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/actions/router.ts":{"7":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/helpers/sandbox-utils.ts":{"12":[36,37,38,97,107,119],"14":[36,37,38,97,107,119],"30":[36,37,38,97,107,119],"42":[36,37,38,97,107,119],"50":[36,37,38,97,107,119],"102":[36,37,38,97,107,119],"121":[36,37,38,97,107,119],"136":[36,37,38,97,107,119],"156":[36,37,38,97,107,119],"177":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/helpers/utils.ts":{"33":[36,37,38,97,107,119],"34":[36,37,38,97,107,119],"36":[36,37,38,97,107,119],"43":[36,37,38,97,107,119],"49":[36,37,38,97,107,119],"74":[36,37,38,97,107,119],"80":[36,37,38,97,107,119],"105":[36,37,38,97,107,119],"130":[36,37,38,97,107,119],"152":[36,37,38,97,107,119],"153":[36,37,38,97,107,119],"161":[36,37,38,97,107,119],"178":[36,37,38,97,107,119],"189":[36,37,38,97,107,119],"193":[36,37,38,97,107,119],"199":[36,37,38,97,107,119],"205":[36,37,38,97,107,119],"212":[36,37,38,97,107,119],"215":[36,37,38,97,107,119],"218":[36,37,38,97,107,119],"221":[36,37,38,97,107,119],"245":[36,37,38,97,107,119],"248":[36,37,38,97,107,119],"252":[36,37,38,97,107,119],"270":[36,37,38,97,107,119],"275":[36,37,38,97,107,119],"281":[36,37,38,97,107,119],"287":[36,37,38,97,107,119],"290":[36,37,38,97,107,119],"294":[36,37,38,97,107,119],"309":[36,37,38,97,107,119],"329":[36,37,38,97,107,119],"336":[36,37,38,97,107,119],"352":[36,37,38,97,107,119],"353":[36,37,38,97,107,119],"365":[36,37,38,97,107,119],"366":[36,37,38,97,107,119],"372":[36,37,38,97,107,119],"376":[36,37,38,97,107,119],"390":[36,37,38,97,107,119],"407":[36,37,38,97,107,119]},"packages/nodes-base/nodes/Merge/v3/methods/loadOptions.ts":{"3":[36,37,38,97,107,119],"36":[36,37,38,97,107,119]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.types.ts":{"114":[36,37]},"packages/localhost-43315/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[37,42]},"packages/localhost-43315/assets/chunk-CC9Q-vWm.js":{"8":[37,42],"9":[37,42],"10":[37,42],"19":[37,42],"23":[37,42],"29":[37,42],"33":[37,42],"34":[37,42]},"packages/@n8n/ai-utilities/src/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.ts":{"20":[15,41,42]},"packages/cli/src/events/relays/workflow-failure-notification.event-relay.ts":{"15":[29,42],"24":[29,42],"26":[29,42],"35":[29,42]},"packages/cli/src/modules/provisioning.ee/provisioning.service.ee.ts":{"37":[27,42,7],"54":[27,42,7],"58":[27,42,7],"66":[27,42,7],"141":[27,42,7],"207":[27,42,7],"220":[27,42,7],"250":[27,42,7],"252":[27,42,7],"255":[27,42,7],"272":[27,42,7],"330":[27,42,7],"363":[27,42,7],"367":[27,42,7],"386":[27,42,7],"401":[27,42,7],"409":[27,42,7],"417":[27,42,7],"425":[27,42,7],"430":[27,42,7],"435":[27,42,7],"440":[27,42,7],"446":[27,42,7],"452":[27,42,7],"485":[27,42,7],"495":[27,42,7],"502":[27,42,7],"510":[27,42,7],"556":[27,42,7],"583":[27,42,7],"593":[27,42,7],"605":[27,42,7],"607":[27,42,7],"612":[27,42,7],"628":[27,42,7],"646":[27,42,7],"652":[27,42,7],"657":[27,42,7]},"packages/core/src/binary-data/binary-data.service.ts":{"24":"b:AAEAABAEACABAAAAAAgAgBESAAoB","30":"b:AAEAABAEACABAAAAAAgAgBESAAoB","34":"b:AAEAABAEACABAAAAAAgAgBESAAoB","39":"b:AAEAABAEACABAAAAAAgAgBESAAoB","47":"b:AAEAABAEACABAAAAAAgAgBESAAoB","60":"b:AAEAABAEACABAAAAAAgAgBESAAoB","66":"b:AAEAABAEACABAAAAAAgAgBESAAoB","97":"b:AAEAABAEACABAAAAAAgAgBESAAoB","128":"b:AAEAABAEACABAAAAAAgAgBESAAoB","134":"b:AAEAABAEACABAAAAAAgAgBESAAoB","144":"b:AAEAABAEACABAAAAAAgAgBESAAoB","150":"b:AAEAABAEACABAAAAAAgAgBESAAoB","156":"b:AAEAABAEACABAAAAAAgAgBESAAoB","164":"b:AAEAABAEACABAAAAAAgAgBESAAoB","193":"b:AAEAABAEACABAAAAAAgAgBESAAoB","199":"b:AAEAABAEACABAAAAAAgAgBESAAoB","202":"b:AAEAABAEACABAAAAAAgAgBESAAoB","222":"b:AAEAABAEACABAAAAAAgAgBESAAoB","234":"b:AAEAABAEACABAAAAAAgAgBESAAoB","238":"b:AAEAABAEACABAAAAAAgAgBESAAoB","246":"b:AAEAABAEACABAAAAAAgAgBESAAoB","258":"b:AAEAABAEACABAAAAAAgAgBESAAoB","264":"b:AAEAABAEACABAAAAAAgAgBESAAoB","265":"b:AAEAABAEACABAAAAAAgAgBESAAoB","278":"b:AAEAABAEACABAAAAAAgAgBESAAoB"},"packages/core/src/binary-data/file-system.manager.ts":{"18":"b:AAEAABAEACABAAAAAAgAABASAAIA","23":"b:AAEAABAEACABAAAAAAgAABASAAIA","27":"b:AAEAABAEACABAAAAAAgAABASAAIA","46":"b:AAEAABAEACABAAAAAAgAABASAAIA","50":"b:AAEAABAEACABAAAAAAgAABASAAIA","60":"b:AAEAABAEACABAAAAAAgAABASAAIA","70":"b:AAEAABAEACABAAAAAAgAABASAAIA","76":"b:AAEAABAEACABAAAAAAgAABASAAIA","79":"b:AAEAABAEACABAAAAAAgAABASAAIA","84":"b:AAEAABAEACABAAAAAAgAABASAAIA","90":"b:AAEAABAEACABAAAAAAgAABASAAIA","109":"b:AAEAABAEACABAAAAAAgAABASAAIA","124":"b:AAEAABAEACABAAAAAAgAABASAAIA","136":"b:AAEAABAEACABAAAAAAgAABASAAIA","137":"b:AAEAABAEACABAAAAAAgAABASAAIA","155":"b:AAEAABAEACABAAAAAAgAABASAAIA","159":"b:AAEAABAEACABAAAAAAgAABASAAIA","170":"b:AAEAABAEACABAAAAAAgAABASAAIA","186":"b:AAEAABAEACABAAAAAAgAABASAAIA","196":"b:AAEAABAEACABAAAAAAgAABASAAIA","202":"b:AAEAABAEACABAAAAAAgAABASAAIA"},"packages/core/src/binary-data/index.ts":{"4":[140,36,42,127,128,160,155]},"packages/nodes-base/nodes/E2eTest/E2eTest.node.ts":{"175":[123,124],"180":[123,124],"188":[123,124],"201":[123,124],"207":[123,124]},"packages/nodes-base/nodes/E2eTest/mock.ts":{"66":[123,124]},"packages/frontend/editor-ui/src/features/ai/chatHub/ChatWorkflowAgentsView.vue":{"30":[42],"31":[42],"32":[42],"49":[42],"68":[42],"76":[42]},"packages/@n8n/client-oauth2/src/client-oauth2.ts":{"41":[46,146,123],"61":[46,146,123],"69":[46,146,123],"82":[46,146,123],"95":[46,146,123],"98":[46,146,123],"129":[46,146,123]},"packages/@n8n/client-oauth2/src/code-flow.ts":{"21":[46,146,123],"26":[46,146,123],"56":[46,146,123]},"packages/@n8n/client-oauth2/src/credentials-flow.ts":{"20":[46,146,123],"25":[46,146,123]},"packages/@n8n/client-oauth2/src/index.ts":{"2":[46,146,123],"5":[46,146,123]},"packages/@n8n/client-oauth2/src/utils.ts":{"8":[46,146,123],"22":[46,146,123],"34":[46,146,123],"51":[46,146,123],"58":[46,146,123],"65":[46,146,123]},"packages/cli/src/controllers/oauth/oauth2-credential.controller.ts":{"20":[46,146,123],"30":[46,146,123],"38":[46,146,123],"158":[46,146,123]},"packages/cli/src/oauth/oauth-browser-binding.service.ts":{"16":[46,146,123,138],"19":[46,146,123,138],"31":[46,146,123,138],"48":[46,146,123,138],"58":[46,146,123,138],"72":[46,146,123,138]},"packages/cli/src/oauth/oauth.service.ts":{"76":[46,146,123,138],"87":[46,146,123,138],"104":[46,146,123,138],"108":[46,146,123,138],"117":[46,146,123,138],"122":[46,146,123,138],"148":[46,146,123,138],"175":[46,146,123,138],"182":[46,146,123,138],"192":[46,146,123,138],"199":[46,146,123,138],"214":[46,146,123,138],"229":[46,146,123,138],"251":[46,146,123,138],"287":[46,146,123,138],"293":[46,146,123,138],"313":[46,146,123,138],"321":[46,146,123,138],"329":[46,146,123,138],"409":[46,146,123,138],"422":[46,146,123,138],"460":[46,146,123,138],"464":[46,146,123,138],"499":[46,146,123,138],"510":[46,146,123,138],"519":[46,146,123,138],"571":[46,146,123,138],"574":[46,146,123,138],"587":[46,146,123,138],"598":[46,146,123,138],"689":[46,146,123,138],"709":[46,146,123,138],"764":[46,146,123,138],"824":[46,146,123,138],"850":[46,146,123,138],"925":[46,146,123,138],"937":[46,146,123,138],"975":[46,146,123,138],"1007":[46,146,123,138],"1035":[46,146,123,138],"1056":[46,146,123,138],"1088":[46,146,123,138],"1114":[46,146,123,138]},"packages/cli/src/oauth/validate-oauth-url.ts":{"12":[46,146,123,138]},"packages/localhost-40353/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[46,52,61,66,7,128]},"packages/localhost-40353/assets/chunk-CC9Q-vWm.js":{"8":[46,52,61,66,7,128],"9":[46,52,61,66,7,128],"10":[46,52,61,66,7,128],"19":[46,52,61,66,7,128],"23":[46,52,61,66,7,128],"29":[46,52,61,66,7,128],"33":[46,52,61,66,7,128],"34":[46,52,61,66,7,128]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/send-mail.svg":{"11":[15,19,41,52,56]},"packages/nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts":{"63":[152],"86":[152]},"packages/@n8n/backend-common/src/utils/fs.ts":{"3":[8,140,153,36,61,64],"13":[8,140,153,36,61,64]},"packages/core/src/utils/serialized-buffer.ts":{"10":[8,140,153,61],"14":[8,140,153,61]},"packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.ts":{"117":[61]},"packages/nodes-base/nodes/Files/ExtractFromFile/actions/moveTo.operation.ts":{"105":[61]},"packages/nodes-base/nodes/Files/ExtractFromFile/actions/pdf.operation.ts":{"83":[61]},"packages/nodes-base/nodes/Files/ExtractFromFile/actions/spreadsheet.operation.ts":{"8":[61],"9":[61],"18":[61],"58":[61]},"packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.ts":{"60":[61]},"packages/nodes-base/nodes/Files/ReadWriteFile/actions/read.operation.ts":{"78":[61]},"packages/nodes-base/nodes/Files/ReadWriteFile/actions/write.operation.ts":{"62":[61]},"packages/nodes-base/nodes/Files/ReadWriteFile/helpers/utils.ts":{"5":[61],"37":[61],"44":[61]},"packages/nodes-base/nodes/SpreadsheetFile/v2/fromFile.operation.ts":{"85":[61],"126":[61],"129":[61],"136":[61],"144":[61],"154":[61]},"packages/nodes-base/utils/binary.ts":{"32":[56,61,64],"82":[56,61,64],"134":[56,61,64],"150":[56,61,64],"170":[56,61,64],"174":[56,61,64],"184":[56,61,64],"213":[56,61,64],"216":[56,61,64]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/read-write-files-from-disk.svg":{"11":[59,61]},"packages/@n8n/api-types/src/schemas/folder.schema.ts":{"10":[65,66]},"packages/cli/src/controllers/folder.controller.ts":{"36":[65,66,67,68,69],"43":[65,66,67,68,69],"61":[65,66,67,68,69],"82":[65,66,67,68,69],"102":[65,66,67,68,69],"126":[65,66,67,68,69],"148":[65,66,67,68,69],"170":[65,66,67,68,69],"185":[65,66,67,68,69],"207":[65,66,67,68,69]},"packages/cli/src/services/folder.service.ts":{"33":[65,66,67,68,69,7],"41":[65,66,67,68,69,7],"58":[65,66,67,68,69,7],"97":[65,66,67,68,69,7],"105":[65,66,67,68,69,7],"134":[65,66,67,68,69,7],"153":[65,66,67,68,69,7],"166":[65,66,67,68,69,7],"189":[65,66,67,68,69,7],"197":[65,66,67,68,69,7],"205":[65,66,67,68,69,7],"213":[65,66,67,68,69,7],"224":[65,66,67,68,69,7],"238":[65,66,67,68,69,7],"239":[65,66,67,68,69,7],"247":[65,66,67,68,69,7],"272":[65,66,67,68,69,7],"285":[65,66,67,68,69,7],"311":[65,66,67,68,69,7],"321":[65,66,67,68,69,7],"324":[65,66,67,68,69,7],"329":[65,66,67,68,69,7]},"packages/frontend/editor-ui/src/features/core/folders/components/FolderCard.vue":{"68":[65,66,67],"72":[66],"74":[65,66,67],"98":[65,66,67],"106":[65,66,67],"119":[65,66,67],"130":[65,66,67],"134":[65,66,67],"145":[66],"165":[66],"169":[65,66,67],"180":[65,66,67],"213":[65,66,67],"220":[65,66,67],"221":[65,66,67],"230":[65,66,67],"233":[65,66,67],"240":[65,66,67],"248":[65,67],"259":[65,66,67],"271":[65,66,67],"280":[65,66,67],"286":[65,66,67],"287":[65,66,67],"299":[66],"329":[65,66,67],"339":[65,66,67],"360":[65,66,67]},"packages/frontend/editor-ui/src/features/core/folders/folders.api.ts":{"11":[66,67],"23":[65,66,67],"35":[67],"46":[67],"57":[67,68,69],"87":[67],"100":[65,67],"111":[67]},"packages/frontend/editor-ui/src/app/utils/telemetryUtils.ts":{"5":[86,112,113,114,115,120,123,124],"13":[86,112,113,114,115,120,124],"14":[86,112,113,114,115,124],"21":[86,112,113,114,115,124],"27":[112,114,124],"28":[112,114,124],"71":[86,112,113,114,115,124]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/MappingFields.vue":{"49":[124],"74":[124],"83":[124],"85":[124],"86":[124],"101":[124],"104":[124],"117":[124],"118":[124],"121":[124],"122":[124],"131":[124],"132":[124],"134":[124],"161":[124],"164":[124],"178":[124],"182":[124],"186":[124],"196":[124],"204":[124],"214":[124],"238":[124],"252":[124],"267":[124],"279":[124],"283":[124],"287":[124],"295":[124],"314":[124],"327":[124],"365":[124],"396":[124],"441":[124]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/MappingModeSelect.vue":{"20":[123,124],"54":[123,124],"61":[123,124],"103":[123,124],"113":[123,124],"121":[123,124],"123":[123,124],"128":[123,124],"140":[123,124],"150":[123,124],"153":[123,124]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/MatchingColumnsSelect.vue":{"27":[124],"39":[124],"50":[124],"51":[124],"62":[124],"63":[124],"69":[124],"84":[124],"103":[124],"117":[124],"130":[124],"156":[124],"169":[124],"182":[124],"191":[124],"200":[124],"202":[124],"206":[124],"211":[124]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useNodeSpecificationValues.ts":{"5":[123,124],"6":[123,124],"10":[123,124],"16":[124],"20":[123,124],"24":[124]},"packages/@n8n/api-types/src/dto/user/role-change-request.dto.ts":{"9":[7]},"packages/cli/src/modules/chat-hub/chat-hub-event-relay.service.ts":{"10":[7],"19":[7],"27":[7]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isDefaultUser.ts":{"4":[7]},"packages/frontend/editor-ui/src/features/settings/users/components/DeleteUserModal.vue":{"15":[7],"32":[7],"35":[7],"38":[7],"40":[7],"49":[7],"65":[7],"71":[7],"105":[7],"118":[7],"122":[7],"128":[7],"132":[7],"134":[7],"137":[7],"142":[7],"154":[7],"155":[7],"156":[7],"165":[7],"174":[7]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersActionsCell.vue":{"7":[7],"16":[7],"21":[7]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersLastActiveCell.vue":{"7":[7],"10":[7],"13":[7]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersProjectsCell.vue":{"6":[7],"13":[7],"19":[7],"22":[7],"26":[7],"30":[7]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersRoleCell.vue":{"20":[7],"21":[7],"22":[7],"24":[7],"29":[7],"42":[7],"49":[7],"54":[7]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersTable.vue":{"24":[7],"45":[7],"51":[7],"66":[7],"77":[7],"88":[7],"99":[7],"105":[7],"124":[7],"143":[7],"151":[7],"154":[7],"159":[7],"161":[7],"176":[7],"181":[7],"192":[7],"195":[7],"198":[7],"202":[7]},"packages/frontend/editor-ui/src/features/settings/users/views/SettingsUsersView.vue":{"73":[7],"75":[7],"79":[7],"83":[7],"85":[7],"95":[7],"100":[7],"109":[7],"115":[7],"122":[7],"131":[7],"136":[7],"140":[7],"144":[7],"163":[7],"198":[7],"203":[7],"318":[7],"319":[7],"328":[7],"340":[7],"363":[7],"368":[7],"415":[7],"418":[7],"423":[7],"432":[7],"492":[7],"499":[7]},"packages/cli/src/executions/pre-execution-checks/subworkflow-policy-checker.ts":{"17":[127,128,160,155],"28":[127,128,160,155],"61":[127,128,160,155],"79":[127,128,160,155],"88":[127,128,160,155],"106":[127,128,160,155],"110":[127,128,160,155],"111":[127,128,160,155],"122":[127,128,160,155]},"packages/frontend/editor-ui/src/app/components/WorkflowExtractionNameModal.vue":{"21":[128],"31":[128],"37":[128],"57":[128],"59":[128],"64":[128],"79":[128],"90":[128]},"packages/@n8n/config/src/configs/ai.config.ts":{"6":[15],"26":[15]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryRedisChat/MemoryRedisChat.node.ts":{"26":[15,119],"114":[15,119],"148":[15,119],"178":[15,119]},"packages/@n8n/nodes-langchain/nodes/tools/ToolCalculator/ToolCalculator.node.ts":{"15":[15],"21":[15],"55":[15],"61":[15]},"packages/@n8n/nodes-langchain/nodes/tools/ToolWikipedia/ToolWikipedia.node.ts":{"15":[15,120],"23":[15,120],"56":[15,120],"62":[15,120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/calculator.svg":{"11":[15,41]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/compression.svg":{"11":[15,41]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/date-and-time.svg":{"11":[15,41]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/item-list-output-parser.svg":{"11":[15]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/model-selector.svg":{"11":[15,16,119]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/rss-read.svg":{"11":[15,41]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/simple-memory.svg":{"11":[15,119]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/structured-output-parser.svg":{"11":[15,120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/think-tool.svg":{"11":[15,41]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/totp.svg":{"11":[15,41]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/vector-store-question-answer-tool.svg":{"11":[15]},"packages/localhost-46493/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[15,16]},"packages/localhost-46493/assets/chunk-CC9Q-vWm.js":{"8":[15,16],"9":[15,16],"10":[15,16],"19":[15,16],"23":[15,16],"29":[15,16],"33":[15,16],"34":[15,16]},"packages/localhost-46493/assets/shield-alt-B7h2cjjC.js":{"8":[15,16]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/ChainLlm.node.ts":{"23":[16,119],"67":[16,119],"87":[16,119],"93":[16,119],"119":[16,119],"137":[16,119]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/chainExecutor.ts":{"19":[16,119],"34":[16,119],"45":[16,119],"60":[16,119],"69":[16,119],"95":[16,119],"118":[16,119],"126":[16,119],"140":[16,119]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/config.ts":{"21":[16,119]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/imageUtils.ts":{"15":[16,119],"27":[16,119],"82":[16,119]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/index.ts":{"1":[16,119]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/processItem.ts":{"11":[16,119],"33":[16,119]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/promptUtils.ts":{"23":[16,119],"34":[16,119],"44":[16,119],"50":[16,119],"66":[16,119],"75":[16,119],"120":[16,119],"149":[16,119],"153":[16,119],"158":[16,119],"159":[16,119],"168":[16,119]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/responseFormatter.ts":{"6":[16,119]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/basic-llm-chain.svg":{"11":[16,119,120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/chat-memory-manager.svg":{"11":[16,97]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/completer.ts":{"23":[35],"27":[35]},"packages/localhost-34739/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[35,62,91,127,133]},"packages/localhost-34739/assets/chunk-CC9Q-vWm.js":{"8":[35,62,91,127,133],"9":[35,62,91,127,133],"10":[35,62,91,127,133],"19":[35,62,91,127,133],"23":[35,62,91,127,133],"29":[35,62,91,127,133],"33":[35,62,91,127,133],"34":[35,62,91,127,133]},"packages/localhost-34739/assets/shield-alt-B7h2cjjC.js":{"8":[35,133]},"packages/@n8n/design-system/src/components/N8nAlertDialog/AlertDialog.vue":{"74":[43],"94":[43],"99":[43]},"packages/@n8n/design-system/src/components/N8nDialog/Dialog.vue":{"95":[43,93],"99":[43,93],"108":[43,93]},"packages/@n8n/design-system/src/components/N8nDialog/DialogContent.vue":{"59":[43,93],"81":[43,93],"101":[43,93]},"packages/@n8n/design-system/src/components/N8nDialog/DialogOverlay.vue":{"15":[43,93]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isInstanceOwner.ts":{"4":[1,43,89,90]},"packages/frontend/editor-ui/src/features/settings/apiKeys/apiKeys.store.ts":{"17":[43],"23":[43]},"packages/frontend/editor-ui/src/features/settings/apiKeys/components/ApiKeyScopesModal.vue":{"7":[43],"18":[43],"27":[43]},"packages/frontend/editor-ui/src/features/settings/apiKeys/components/RevokeApiKeyConfirmModal.vue":{"7":[43],"23":[43],"31":[43],"43":[43]},"packages/frontend/editor-ui/src/features/settings/apiKeys/views/SettingsApiView.vue":{"150":[43],"226":[43]},"packages/frontend/editor-ui/src/features/shared/banners/components/banners/BaseBanner.vue":{"18":[43],"34":[43],"44":[43],"59":[43]},"packages/frontend/editor-ui/src/features/shared/banners/components/banners/TrialBanner.vue":{"73":[43],"80":[43],"81":[43],"82":[43],"90":[43],"93":[43],"99":[43],"104":[43],"106":[43],"120":[43],"130":[43],"135":[43],"143":[43],"148":[43],"166":[43],"178":[43],"194":[43],"198":[43],"204":[43],"212":[43]},"packages/localhost-34695/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[43]},"packages/localhost-34695/assets/chunk-CC9Q-vWm.js":{"8":[43],"9":[43],"10":[43],"19":[43],"23":[43],"29":[43],"33":[43],"34":[43]},"packages/cli/src/errors/response-errors/auth.error.ts":{"4":[145,156,90]},"packages/cli/src/modules/mcp/mcp-oauth-authorization-code.service.ts":{"17":[156],"23":[156],"53":[156],"81":[156],"109":[156],"136":[156],"150":[156]},"packages/cli/src/modules/mcp/mcp-oauth-consent.service.ts":{"17":[156],"29":[156],"58":[156]},"packages/cli/src/modules/mcp/mcp-oauth-service.ts":{"43":[156],"53":[156],"55":[156],"77":[156],"100":[156],"105":[156],"123":[156],"136":[156],"162":[156],"202":[156],"212":[156],"272":[156],"286":[156],"290":[156],"296":[156],"310":[156],"338":[156],"345":[156],"355":[156],"386":[156]},"packages/cli/src/modules/mcp/mcp-oauth-token.service.ts":{"35":[156],"51":[156],"56":[156],"60":[156],"84":[156],"90":[156],"106":[156],"111":[156],"171":[156],"205":[156],"246":[156],"261":[156],"276":[156],"285":[156],"304":[156]},"packages/cli/src/modules/mcp/mcp-oauth.helpers.ts":{"9":[156],"22":[156]},"packages/cli/src/modules/mcp/mcp.auth.consent.controller.ts":{"12":[156],"19":[156],"45":[156],"76":[156],"83":[156],"90":[156]},"packages/cli/src/modules/mcp/mcp.oauth.controller.ts":{"28":[156],"49":[156],"66":[156],"69":[156],"112":[156],"122":[156],"147":[156],"157":[156]},"packages/cli/src/modules/mcp/oauth-session.service.ts":{"24":[156],"29":[156],"45":[156],"52":[156],"59":[156]},"packages/cli/src/controllers/orchestration.controller.ts":{"9":[91],"20":[91]},"packages/cli/src/scaling/worker-status.service.ee.ts":{"16":[91],"23":[91],"33":[91],"48":[91],"59":[91],"91":[91],"92":[91],"102":[91]},"packages/frontend/editor-ui/src/features/settings/orchestration.ee/components/WorkerList.vue":{"25":[91],"35":[91],"39":[91],"41":[91],"49":[91],"60":[91]},"packages/frontend/editor-ui/src/features/settings/orchestration.ee/orchestration.store.ts":{"26":[65,91],"34":[65],"47":[65],"56":[65,91],"59":[65],"65":[65],"71":[65],"74":[65],"77":[65]},"packages/frontend/editor-ui/src/features/settings/orchestration.ee/views/WorkerView.vue":{"30":[91],"33":[91]},"packages/cli/src/errors/response-errors/bad-request.error.ts":{"4":[141,44,84,160,133]},"packages/cli/src/errors/response-errors/conflict.error.ts":{"4":[133]},"packages/nodes-base/nodes/Form/FormTrigger.node.ts":{"8":[141,20,57,133]},"packages/nodes-base/nodes/Form/v1/FormTriggerV1.node.ts":{"91":[141,20,57,133],"98":[141,20,57,133]},"packages/nodes-base/nodes/Form/v2/FormTriggerV2.node.ts":{"154":[141,20,57,133],"269":[141,20,57,133],"276":[141,20,57,133]},"packages/nodes-base/nodes/Notion/Notion.node.ts":{"8":[44,69,5,120,133]},"packages/nodes-base/nodes/Notion/shared/descriptions/Blocks.ts":{"377":[44,69,5,120,133],"426":[44,69,5,120,133],"442":[44,69,5,120,133],"458":[44,69,5,120,133],"468":[44,69,5,120,133],"478":[44,69,5,120,133],"493":[44,69,5,120,133],"557":[44,69,5,120,133]},"packages/nodes-base/nodes/Notion/v1/NotionV1.node.ts":{"34":[44,69,5,120,133],"44":[44,69,5,120,133],"69":[44,69,5,120,133],"80":[44,69,5,120,133],"92":[44,69,5,120,133],"103":[44,69,5,120,133],"106":[44,69,5,120,133],"116":[44,69,5,120,133],"121":[44,69,5,120,133],"127":[44,69,5,120,133],"132":[44,69,5,120,133],"145":[44,69,5,120,133],"172":[44,69,5,120,133],"184":[44,69,5,120,133],"195":[44,69,5,120,133],"203":[44,69,5,120,133],"223":[44,69,5,120,133],"404":[44,69,5,120,133],"409":[44,69,5,120,133]},"packages/nodes-base/nodes/Notion/v2/NotionV2.node.ts":{"38":[44,69,5,120,133],"47":[44,69,5,120,133],"140":[44,69,5,120,133],"453":[44,69,5,120,133],"457":[44,69,5,120,133]},"packages/nodes-base/nodes/Notion/v2/methods/loadOptions.ts":{"11":[44,69,5,120,133],"37":[44,69,5,120,133],"49":[44,69,5,120,133],"63":[44,69,5,120,133],"75":[44,69,5,120,133],"79":[44,69,5,120,133],"91":[44,69,5,120,133],"99":[44,69,5,120,133],"105":[44,69,5,120,133],"111":[44,69,5,120,133],"125":[44,69,5,120,133],"154":[44,69,5,120,133],"166":[44,69,5,120,133],"177":[44,69,5,120,133],"185":[44,69,5,120,133]},"packages/nodes-base/nodes/RespondToWebhook/RespondToWebhook.node.ts":{"358":[142,153,64,160,133],"366":[142,153,64,160,133],"390":[142,153,64,160,133],"470":[142,153,64,160,133],"536":[142,153,64,160,133]},"packages/nodes-base/nodes/RespondToWebhook/utils/binary.ts":{"5":[142,64,160,133],"16":[142,64,160,133]},"packages/nodes-base/nodes/RespondToWebhook/utils/outputs.ts":{"1":[142,64,160,133]},"packages/frontend/editor-ui/src/app/components/ActivationModal.vue":{"22":[63,93,132,133,137],"31":[63,93,132,133,137],"33":[63,93,132,133,137],"94":[93],"98":[63,93,132,133,137],"103":[63,93,132,133,137],"105":[63,93,132,133,137],"110":[63,93,132,133,137],"122":[63,93,132,133,137],"125":[63,93,132,133,137]},"packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowPublishModal.vue":{"32":[63,93,132,133,137],"48":[63,93,132,133,137],"52":[63,93,132,133,137],"56":[63,93,132,133,137],"66":[63,93,132,133,137],"68":[63,93,132,133,137],"74":[63,93,132,133,137],"80":[63,93,132,133,137],"96":[63,93,132,133,137],"100":[63,93,132,133,137],"118":[63,93,132,133,137],"122":[63,93,132,133,137],"125":[63],"147":[63,93,132,133,137],"160":[63,93,132,133,137],"203":[63,93,132,133,137],"251":[63,93,132,133,137],"264":[63,93,132,133,137],"265":[63,93,132,133,137],"267":[63,93,132,133,137],"309":[63,93,132,133,137]},"packages/frontend/editor-ui/src/app/components/WorkflowVersionForm.vue":{"16":[63,93,132,133,137],"26":[63,93,132,133,137],"38":[63,93,132,133,137],"47":[63,93,132,133,137],"62":[63,93,132,133,137]},"packages/frontend/editor-ui/src/app/composables/useWorkflowActivate.ts":{"85":[63,93,132,133,137],"178":[137]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/utils.ts":{"9":[105],"15":[63,93,132,133,137],"19":[105],"37":[105],"69":[105],"74":[105]},"packages/@n8n/ai-utilities/src/utils/n8n-json-loader.ts":{"15":[17],"21":[17],"35":[17],"45":[17],"81":[17]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/MemoryCalculator.ts":{"21":[8,17],"61":[8,17]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/MemoryVectorStoreManager.ts":{"40":[8,17],"69":[8,17],"80":[8,17],"91":[8,17],"106":[8,17],"114":[8,17],"131":[8,17],"138":[8,17],"163":[8,17],"175":[8,17],"182":[8,17],"190":[8,17],"211":[8,17],"268":[8,17]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/StoreCleanupService.ts":{"16":[8,17],"31":[8,17],"45":[8,17],"79":[8,17],"117":[8,17],"120":[8,17],"153":[8,17]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/config.ts":{"10":[8,17],"38":[8,17],"47":[8,17]},"packages/@n8n/ai-utilities/src/utils/vector-store/createVectorStoreNode/createVectorStoreNode.ts":{"46":[8,17,120],"49":[8,17,120],"413":[8,17,120],"471":[8,17,120]},"packages/@n8n/ai-utilities/src/utils/vector-store/createVectorStoreNode/operations/insertOperation.ts":{"17":[8,17]},"packages/@n8n/ai-utilities/src/utils/vector-store/createVectorStoreNode/utils.ts":{"11":[8,17,120],"15":[8,17,120],"25":[8,17,120],"35":[8,17,120],"40":[8,17,120]},"packages/@n8n/ai-utilities/src/utils/vector-store/processDocuments.ts":{"7":[8,17],"19":[8,17],"28":[8,17],"41":[8,17]},"packages/@n8n/nodes-langchain/nodes/chains/ChainRetrievalQA/ChainRetrievalQa.node.ts":{"20":[17],"185":[17],"201":[17],"207":[17]},"packages/@n8n/nodes-langchain/nodes/chains/ChainRetrievalQA/processItem.ts":{"19":[17]},"packages/@n8n/nodes-langchain/nodes/code/Code.node.ts":{"67":[8,17],"122":[8,17],"126":[8,17],"136":[8,17],"146":[8,17],"150":[8,17],"151":[8,17],"152":[8,17]},"packages/@n8n/nodes-langchain/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.ts":{"21":[8,17],"38":[8,17],"329":[8,17]},"packages/@n8n/nodes-langchain/nodes/retrievers/RetrieverVectorStore/RetrieverVectorStore.node.ts":{"14":[17],"73":[17]},"packages/@n8n/nodes-langchain/nodes/text_splitters/TextSplitterCharacterTextSplitter/TextSplitterCharacterTextSplitter.node.ts":{"13":[8,17],"68":[8,17]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreInMemory/VectorStoreInMemory.node.ts":{"37":[8,17],"132":[8,17],"143":[8,17],"152":[8,17],"161":[8,17],"186":[8,17],"192":[8,17]},"packages/core/src/execution-engine/external-secrets-proxy.ts":{"15":[8,17],"19":[8,17],"23":[8,17],"27":[8,17],"31":[8,17],"35":[8,17]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/character-text-splitter.svg":{"11":[8,17]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/default-data-loader.svg":{"11":[8,17,120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/question-and-answer-chain.svg":{"11":[17,120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/simple-vector-store.svg":{"11":[8,17,53,113,120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/vector-store-retriever.svg":{"11":[17,120]},"packages/localhost-44479/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[17]},"packages/localhost-44479/assets/chunk-CC9Q-vWm.js":{"8":[17],"9":[17],"10":[17],"19":[17],"23":[17],"29":[17],"33":[17],"34":[17]},"packages/@n8n/ai-workflow-builder.ee/src/agents/planner.agent.ts":{"62":[18],"64":[18],"109":[18],"136":[18]},"packages/@n8n/ai-workflow-builder.ee/src/agents/responder.agent.ts":{"78":[18],"104":[18],"108":[18],"112":[18],"121":[18],"186":[18],"231":[18],"269":[18]},"packages/@n8n/ai-workflow-builder.ee/src/agents/supervisor.agent.ts":{"23":[18],"66":[18],"74":[18],"122":[18]},"packages/@n8n/ai-workflow-builder.ee/src/ai-workflow-builder-agent.service.ts":{"38":[18],"61":[18],"66":[18],"86":[18],"102":[18],"159":[18],"167":[18],"171":[18],"180":[18],"186":[18],"196":[18],"233":[18],"244":[18],"267":[18],"326":[18],"363":[18],"365":[18],"372":[18],"374":[18],"379":[18],"380":[18],"385":[18],"400":[18],"423":[18],"429":[18],"447":[18],"466":[18],"482":[18],"501":[18],"541":[18]},"packages/@n8n/ai-workflow-builder.ee/src/chains/workflow-name.ts":{"7":[18]},"packages/@n8n/ai-workflow-builder.ee/src/llm-config.ts":{"17":[18],"18":[18],"34":[18],"35":[18],"55":[18],"56":[18],"81":[18],"82":[18],"103":[18],"104":[18],"135":[18],"136":[18],"137":[18],"234":[18]},"packages/@n8n/ai-workflow-builder.ee/src/multi-agent-workflow-subgraphs.ts":{"56":[18],"73":[18],"113":[18],"118":[18],"187":[18],"194":[18],"211":[18],"252":[18],"275":[18],"286":[18],"353":[18],"379":[18],"391":[18],"392":[18],"402":[18],"403":[18],"406":[18],"433":[18],"444":[18],"452":[18],"506":[18],"525":[18],"527":[18],"536":[18],"544":[18]},"packages/@n8n/ai-workflow-builder.ee/src/parent-graph-state.ts":{"23":[18],"28":[18],"29":[18],"34":[18],"39":[18],"40":[18],"45":[18],"46":[18],"51":[18],"52":[18],"57":[18],"58":[18],"63":[18],"64":[18],"70":[18],"77":[18],"82":[18],"83":[18],"88":[18],"89":[18],"94":[18],"95":[18],"100":[18],"101":[18],"106":[18],"107":[18],"113":[18],"114":[18],"118":[18],"119":[18],"124":[18],"125":[18],"130":[18],"131":[18],"136":[18],"137":[18]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/agents/discovery.prompt.ts":{"30":[18],"32":[18],"36":[18],"38":[18],"347":[18],"358":[18],"368":[18],"372":[18]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/agents/planner.prompt.ts":{"73":[18],"98":[18],"109":[18],"122":[18],"129":[18],"130":[18]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/agents/responder.prompt.ts":{"168":[18],"178":[18],"188":[18],"200":[18],"205":[18],"226":[18],"232":[18],"244":[18]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/builder/prompt-builder.ts":{"17":[18],"30":[18],"44":[18],"55":[18],"79":[18],"116":[18],"129":[18],"149":[18],"175":[18],"197":[18],"228":[18],"252":[18],"268":[18],"282":[18],"302":[18],"330":[18],"357":[18]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/index.ts":{"31":[18],"45":[18],"47":[18]},"packages/@n8n/ai-workflow-builder.ee/src/session-manager.service.ts":{"36":[18],"54":[18],"62":[18],"72":[18],"83":[18],"87":[18],"96":[18],"104":[18],"118":[18],"132":[18],"160":[18],"166":[18],"174":[18],"180":[18],"185":[18],"200":[18],"222":[18],"270":[18],"275":[18],"279":[18],"283":[18],"300":[18],"312":[18],"335":[18],"363":[18],"378":[18],"427":[18],"440":[18],"532":[18],"564":[18],"583":[18],"666":[18],"674":[18]},"packages/@n8n/ai-workflow-builder.ee/src/subgraphs/discovery.subgraph.ts":{"103":[18],"104":[18],"109":[18],"110":[18],"115":[18],"116":[18],"121":[18],"122":[18],"127":[18],"128":[18],"133":[18],"134":[18],"139":[18],"140":[18],"145":[18],"146":[18],"151":[18],"152":[18],"175":[18],"176":[18],"181":[18],"187":[18],"193":[18],"199":[18],"200":[18],"205":[18],"206":[18],"211":[18],"212":[18],"217":[18],"218":[18],"223":[18],"224":[18],"229":[18],"230":[18],"237":[18],"238":[18],"276":[18],"304":[18],"307":[18],"351":[18],"377":[18],"396":[18],"440":[18],"447":[18],"494":[18],"501":[18],"561":[18],"563":[18],"591":[18],"659":[18],"670":[18],"709":[18],"721":[18],"769":[18],"795":[18]},"packages/@n8n/ai-workflow-builder.ee/src/tools/get-documentation.tool.ts":{"60":[18],"81":[18],"88":[18],"113":[18],"115":[18],"136":[18],"146":[18]},"packages/@n8n/ai-workflow-builder.ee/src/tools/node-search.tool.ts":{"46":[18],"91":[18],"105":[18],"121":[18],"123":[18],"170":[18]},"packages/@n8n/ai-workflow-builder.ee/src/tools/utils/ssrf-guard.ts":{"27":[18],"37":[18],"39":[18],"40":[18],"42":[18],"52":[18],"62":[18]},"packages/@n8n/ai-workflow-builder.ee/src/tools/utils/web-fetch-security.ts":{"35":[18],"48":[18],"55":[18],"61":[18],"64":[18],"67":[18],"70":[18],"111":[18],"112":[18],"120":[18],"121":[18],"122":[18],"123":[18],"127":[18],"131":[18],"144":[18],"146":[18],"163":[18],"167":[18]},"packages/@n8n/ai-workflow-builder.ee/src/tools/web-fetch.tool.ts":{"30":[18],"69":[18],"83":[18],"86":[18]},"packages/@n8n/ai-workflow-builder.ee/src/utils/cleanup-dangling-tool-call-messages.ts":{"10":[18],"13":[18],"19":[18],"23":[18]},"packages/@n8n/ai-workflow-builder.ee/src/utils/http-proxy-agent.ts":{"8":[18]},"packages/@n8n/ai-workflow-builder.ee/src/utils/state-modifier.ts":{"34":[18],"56":[18],"72":[18],"84":[18],"118":[18],"144":[18],"155":[18],"165":[18],"192":[18],"201":[18],"227":[18],"231":[18],"261":[18],"274":[18]},"packages/@n8n/ai-workflow-builder.ee/src/utils/stream-processor.ts":{"86":[18],"87":[18],"91":[18],"96":[18],"101":[18],"107":[18],"110":[18],"117":[18],"122":[18],"131":[18],"140":[18],"141":[18],"158":[18],"183":[18],"187":[18],"191":[18],"196":[18],"201":[18],"211":[18],"237":[18],"272":[18],"285":[18],"298":[18],"317":[18],"337":[18],"378":[18],"391":[18],"418":[18],"426":[18],"445":[18],"469":[18],"477":[18],"480":[18],"488":[18],"497":[18],"506":[18],"549":[18],"551":[18],"555":[18],"563":[18],"581":[18],"634":[18],"657":[18],"661":[18],"662":[18],"668":[18],"690":[18]},"packages/@n8n/ai-workflow-builder.ee/src/utils/thread-id.ts":{"7":[18]},"packages/@n8n/ai-workflow-builder.ee/src/utils/token-usage.ts":{"27":[18],"29":[18],"43":[18],"44":[18],"50":[18],"67":[18],"71":[18]},"packages/@n8n/ai-workflow-builder.ee/src/workflow-builder-agent.ts":{"166":[18],"184":[18],"196":[18],"204":[18],"213":[18],"234":[18],"315":[18],"344":[18],"362":[18],"392":[18],"410":[18],"441":[18],"463":[18],"476":[18],"515":[18],"587":[18],"602":[18],"618":[18],"668":[18],"686":[18],"690":[18]},"packages/@n8n/api-types/src/dto/ai/ai-build-request.dto.ts":{"41":[18],"51":[18],"61":[18],"63":[18],"72":[18],"75":[18],"86":[18],"95":[18]},"packages/cli/src/controllers/ai.controller.ts":{"42":[18],"56":[18],"65":[18],"139":[18],"144":[18],"153":[18],"175":[18],"189":[18],"216":[18],"248":[18],"268":[18],"279":[18],"290":[18],"305":[18],"319":[18],"340":[18],"356":[18]},"packages/cli/src/modules/workflow-builder/workflow-builder-session.repository.ts":{"22":[18],"26":[18],"46":[18],"73":[18],"78":[18]},"packages/cli/src/services/ai-workflow-builder.service.ts":{"41":[18],"58":[18],"66":[18],"73":[18],"81":[18],"97":[18],"103":[18],"117":[18],"122":[18],"123":[18],"178":[18],"195":[18],"200":[18],"206":[18],"211":[18],"216":[18]},"packages/@n8n/design-system/src/components/CanvasPill/CanvasPill.vue":{"8":[13,18],"9":[13,18]},"packages/@n8n/design-system/src/components/CanvasThinkingPill/CanvasThinkingPill.vue":{"17":[13,18],"23":[13,18],"27":[13,18],"30":[13,18]},"packages/frontend/editor-ui/src/features/ai/assistant/assistant.types.ts":{"422":[13,18],"439":[13],"458":[13,18],"464":[13,18],"468":[13],"492":[13],"505":[13],"511":[13],"523":[13],"529":[13],"535":[13],"545":[13],"551":[13],"555":[13],"561":[13],"573":[13,18],"579":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/builder.utils.ts":{"19":[13,18],"23":[13,18],"27":[13,18],"130":[13,18],"141":[13,18]},"packages/frontend/editor-ui/src/features/ai/assistant/components/HubSwitcher.vue":{"12":[13,18],"22":[13,18],"29":[13,18],"36":[13,18]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeChoicePrompt.vue":{"20":[13,151,18],"29":[13,151,18],"38":[13,151,18],"42":[151],"53":[13,151,18],"63":[151],"71":[13,151,18],"75":[13,151,18],"100":[151]},"packages/localhost-38277/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[18]},"packages/localhost-38277/assets/chunk-CC9Q-vWm.js":{"8":[18],"9":[18],"10":[18],"19":[18],"23":[18],"29":[18],"33":[18],"34":[18]},"packages/@n8n/db/src/repositories/workflow-published-version.repository.ts":{"8":[143],"12":[143],"16":[143],"20":[143],"33":[143]},"packages/cli/src/workflows/workflow-published-data.service.ts":{"12":[143],"22":[143]},"packages/cli/src/metrics/prometheus/token-exchange-metrics.service.ts":{"22":[145],"27":[145],"31":[145],"72":[145],"76":[145],"81":[145],"85":[145],"90":[145],"94":[145]},"packages/cli/src/modules/token-exchange/controllers/embed-auth.controller.ts":{"22":[145],"37":[145],"55":[145],"66":[145]},"packages/cli/src/modules/token-exchange/controllers/token-exchange.controller.ts":{"22":[145],"43":[145]},"packages/cli/src/modules/token-exchange/database/repositories/token-exchange-jti.repository.ts":{"14":[145],"18":[145],"31":[145],"32":[145],"79":[145],"80":[145]},"packages/cli/src/modules/token-exchange/database/repositories/trusted-key.repository.ts":{"8":[145],"12":[145],"16":[145]},"packages/cli/src/modules/token-exchange/services/identity-resolution.service.ts":{"31":[145],"35":[145],"43":[145],"65":[145],"106":[145],"122":[145],"152":[145],"163":[145],"206":[145],"249":[145],"286":[145]},"packages/cli/src/modules/token-exchange/services/jti-store.service.ts":{"25":[145],"34":[145]},"packages/cli/src/modules/token-exchange/services/scoped-jwt.strategy.ts":{"17":[145],"22":[145],"67":[145],"74":[145],"97":[145],"104":[145]},"packages/cli/src/modules/token-exchange/services/token-exchange.service.ts":{"34":[145],"56":[145],"143":[145],"156":[145]},"packages/cli/src/modules/token-exchange/services/trusted-key.service.ts":{"80":[145],"105":[145],"118":[145],"126":[145],"130":[145],"138":[145],"144":[145],"158":[145],"208":[145],"216":[145],"220":[145],"226":[145],"254":[145],"263":[145],"264":[145],"266":[145],"267":[145],"312":[145],"327":[145],"344":[145],"370":[145],"372":[145],"391":[145],"443":[145],"462":[145],"481":[145],"496":[145],"511":[145],"520":[145],"551":[145],"597":[145]},"packages/cli/src/modules/token-exchange/token-exchange.errors.ts":{"11":[145],"24":[145]},"packages/cli/src/utils/validate-redirect-url.ts":{"5":[145]},"packages/@n8n/design-system/src/components/N8nFormInputs/FormInputs.vue":{"19":[26,28,1,69,89,90],"37":[26,28,1,69,89,90],"38":[26,28,1,69,89,90],"43":[28,69,89,90],"44":[28,69,89,90],"55":[26,28,1,69,89,90],"56":[26,28,1,69,89,90],"59":[26,28,1,69,89,90],"63":[26,28,1,69,89,90],"64":[90],"67":[90],"68":[90],"69":[90],"74":[28,69,89,90],"80":[26,28,1,69,89,90],"107":[90],"116":[28,69,89,90],"123":[28,69,89,90],"136":[26,28,1,69,89,90],"147":[26,28,1,69,89,90],"151":[26,28,1,69,89,90],"154":[26,28,1,69,89,90],"177":[28,69,89,90],"178":[26,28,1,69,89,90]},"packages/@n8n/design-system/src/components/ResizeObserver/ResizeObserver.vue":{"6":[26,28,1,69,89,90],"21":[26,28,1,69,89,90],"23":[26,28,1,69,89,90],"25":[26,28,1,69,89,90],"30":[26,28,1,69,89,90],"36":[26,28,1,69,89,90],"37":[26,28,1,69,89,90],"38":[26,28,1,69,89,90],"47":[28,69,90],"52":[26,28,1,69,89,90]},"packages/frontend/editor-ui/src/features/core/auth/views/SettingsPersonalView.vue":{"90":[1,89,90],"94":[1,89,90],"98":[1,89,90],"109":[1,89,90],"113":[1,89,90],"116":[1,89,90],"119":[1,89,90],"123":[1,89,90],"127":[1,89,90],"131":[1,89,90],"160":[1,89,90],"162":[1,89,90],"205":[89,90],"209":[1,89,90],"214":[89,90],"230":[89,90],"237":[90],"267":[89,90],"282":[89,90],"290":[89,90],"298":[90],"317":[90],"337":[90],"359":[1,89,90],"360":[1,89,90],"399":[1,89,90],"408":[1,89,90],"414":[1,89,90],"449":[1,89,90]},"packages/localhost-43467/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[1,71,72,119]},"packages/localhost-43467/assets/chunk-CC9Q-vWm.js":{"8":[1,71,72,119],"9":[1,71,72,119],"10":[1,71,72,119],"19":[1,71,72,119],"23":[1,71,72,119],"29":[1,71,72,119],"33":[1,71,72,119],"34":[1,71,72,119]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialsSelect.vue":{"21":[30,44,45],"36":[30,44,45],"37":[30,44,45],"43":[30,44,45],"44":[30,44,45],"47":[44,45],"57":[30,44,45],"84":[30,44,45],"92":[30,44],"101":[30,44,45],"102":[30,44,45],"125":[30,44,45],"139":[44,45],"141":[44,45],"142":[44,45],"143":[30,44,45],"145":[30,44,45],"151":[30,44,45],"173":[30,44,45]},"packages/localhost-39753/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[45]},"packages/localhost-39753/assets/chunk-CC9Q-vWm.js":{"8":[45],"9":[45],"10":[45],"19":[45],"23":[45],"29":[45],"33":[45],"34":[45]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/merge.svg":{"11":[19,97,107,119]},"packages/localhost-43467/assets/shield-alt-B7h2cjjC.js":{"8":[119]},"packages/localhost-43335/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[21,70,94,96,105,120]},"packages/localhost-43335/assets/chunk-CC9Q-vWm.js":{"8":[21,70,94,96,105,120],"9":[21,70,94,96,105,120],"10":[21,70,94,96,105,120],"19":[21,70,94,96,105,120],"23":[21,70,94,96,105,120],"29":[21,70,94,96,105,120],"33":[21,70,94,96,105,120],"34":[21,70,94,96,105,120]},"packages/cli/src/modules/provisioning.ee/role-mapping-rule.service.ee.ts":{"46":[27],"52":[27],"79":[27],"83":[27],"129":[27],"142":[27],"166":[27],"216":[27],"233":[27],"239":[27],"262":[27],"268":[27],"278":[27],"281":[27],"298":[27],"308":[27],"310":[27],"313":[27],"329":[27],"336":[27]},"packages/cli/src/modules/sso-oidc/oidc.controller.ee.ts":{"23":[27],"36":[27],"47":[27],"65":[27],"87":[27],"108":[27]},"packages/cli/src/modules/sso-oidc/oidc.service.ee.ts":{"72":[27],"91":[27],"104":[27],"113":[27],"115":[27],"119":[27],"123":[27],"131":[27],"143":[27],"178":[27],"186":[27],"219":[27],"257":[27],"352":[27],"385":[27],"425":[27],"491":[27],"492":[27],"504":[27],"526":[27],"528":[27],"536":[27],"567":[27],"600":[27],"610":[27],"672":[27],"701":[27],"722":[27],"750":[27]},"packages/core/src/execution-engine/node-execution-context/utils/construct-execution-metadata.ts":{"8":[60,111,118],"13":[60,111,118]},"packages/nodes-base/nodes/Kafka/Kafka.node.ts":{"211":[60],"219":[60],"261":[60],"289":[60]},"packages/nodes-base/nodes/Kafka/KafkaTrigger.node.ts":{"381":[60],"409":[60],"418":[60],"442":[60],"480":[60],"503":[60]},"packages/nodes-base/nodes/Kafka/utils.ts":{"65":[60],"68":[60],"102":[60],"153":[60],"159":[60],"194":[60],"222":[60],"223":[60],"226":[60],"229":[60],"234":[60],"238":[60],"241":[60],"244":[60],"247":[60],"250":[60],"271":[60],"274":[60],"282":[60],"304":[60],"325":[60],"334":[60],"359":[60],"365":[60],"366":[60],"402":[60],"424":[60],"432":[60]},"packages/localhost-32893/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[60]},"packages/localhost-32893/assets/chunk-CC9Q-vWm.js":{"8":[60],"9":[60],"10":[60],"19":[60],"23":[60],"29":[60],"33":[60],"34":[60]},"packages/@n8n/api-types/src/dto/folders/list-folder-query.dto.ts":{"46":[67,68,69],"74":[67,68,69],"75":[67,68,69],"83":[67,68,69],"84":[67,68,69],"93":[67,68,69],"102":[67,68,69]},"packages/frontend/editor-ui/src/app/api/workflows.ee.ts":{"7":[151,6],"20":[151,68,69],"28":[151]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMoveResourceModal.vue":{"41":[68],"66":[68],"73":[68],"90":[68],"94":[68],"97":[68],"98":[68],"99":[68],"102":[68],"112":[68],"115":[68],"120":[68],"124":[68],"173":[68],"189":[68],"192":[68],"194":[68],"202":[68],"206":[68],"207":[68],"213":[68],"214":[68],"222":[68],"240":[68],"245":[68],"329":[68],"332":[68],"340":[68]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMoveSuccessToastMessage.vue":{"19":[68],"20":[68],"21":[68],"24":[68]},"packages/frontend/editor-ui/src/features/collaboration/projects/composables/useMoveResourceToProjectToast.ts":{"26":[68]},"packages/frontend/editor-ui/src/features/core/folders/components/MoveToFolderDropdown.vue":{"40":[67,68,69],"41":[67,68,69],"42":[67,68,69],"54":[67,68,69],"64":[67],"94":[67,68,69],"95":[67,68,69],"105":[67,68,69],"107":[67],"109":[67,68,69],"128":[67,68,69],"130":[67,68,69],"132":[67,68,69],"137":[67,68,69],"141":[67,68,69],"148":[67],"151":[67]},"packages/frontend/editor-ui/src/features/core/folders/components/MoveToFolderModal.vue":{"65":[67,68,69],"81":[67,68,69],"84":[67,68,69],"90":[67,68,69],"100":[67,68,69],"101":[67,68,69],"105":[69],"108":[67,68,69],"109":[69],"127":[67,68,69],"130":[67,68,69],"134":[67,68,69],"143":[67,68,69],"153":[67,68,69],"167":[67,68,69],"168":[68,69],"174":[67,68,69],"175":[67,68,69],"182":[67,68,69],"186":[68],"192":[68,69],"200":[67,68,69],"354":[67],"379":[67,68,69],"381":[67,68,69],"386":[67,68,69],"390":[67,68,69],"417":[67,68,69],"427":[67,68,69],"436":[67,68,69],"438":[67,68,69],"452":[68,69],"457":[68,69],"478":[67,68,69],"497":[69],"506":[69],"532":[69],"556":[67,68,69]},"packages/localhost-36273/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[68]},"packages/localhost-36273/assets/chunk-CC9Q-vWm.js":{"8":[68],"9":[68],"10":[68],"19":[68],"23":[68],"29":[68],"33":[68],"34":[68]},"packages/nodes-base/nodes/Discourse/Discourse.node.ts":{"93":[70],"107":[70]},"packages/nodes-base/nodes/Discourse/GenericFunctions.ts":{"11":[70],"40":[70]},"packages/nodes-base/nodes/Filter/Filter.node.ts":{"8":[70,107]},"packages/nodes-base/nodes/Filter/V1/FilterV1.node.ts":{"17":[70,107],"310":[70,107]},"packages/nodes-base/nodes/Filter/V1/GenericFunctions.ts":{"5":[70,107],"8":[70,107],"13":[70,107],"14":[70,107],"15":[70,107],"17":[70,107],"19":[70,107],"21":[70,107],"23":[70,107],"24":[70,107],"25":[70,107],"26":[70,107],"28":[70,107],"30":[70,107],"32":[70,107],"34":[70,107],"36":[70,107],"42":[70,107],"50":[70,107],"64":[70,107],"81":[70,107]},"packages/nodes-base/nodes/Filter/V2/FilterV2.node.ts":{"21":[70,107],"96":[70,107],"100":[70,107]},"packages/workflow/src/extensions/date-extensions.ts":{"85":[70],"89":[70],"99":[70],"104":[70],"114":[70],"120":[70],"145":[70],"153":[70],"176":[70],"183":[70],"195":[70],"200":[70],"221":[70],"242":[70],"251":[70],"256":[70],"270":[70],"275":[70],"284":[70],"289":[70],"293":[70]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/filter.svg":{"11":[70,107]},"packages/cli/src/modules/source-control.ee/source-control-export.service.ee.ts":{"70":[84],"94":[84],"98":[84],"102":[84],"106":[84],"114":[84],"116":[84],"123":[84],"130":[84],"152":[84],"155":[84],"164":[84],"175":[84],"208":[84],"219":[84],"232":[84],"257":[84],"273":[84],"324":[84],"346":[84],"347":[84],"380":[84],"414":[84],"419":[84],"455":[84],"486":[84],"488":[84],"497":[84],"515":[84],"518":[84],"525":[84],"527":[84],"531":[84],"538":[84],"577":[84],"596":[84],"600":[84],"607":[84],"621":[84],"637":[84]},"packages/cli/src/modules/source-control.ee/source-control-git.service.ee.ts":{"46":[84],"56":[84],"79":[84],"116":[84],"129":[84],"133":[84],"186":[84],"190":[84],"205":[84],"212":[84],"227":[84],"283":[84],"298":[84],"314":[84],"347":[84],"355":[84],"364":[84],"365":[84],"379":[84],"388":[84],"399":[84],"411":[84],"423":[84],"431":[84],"443":[84],"460":[84],"474":[84],"488":[84],"495":[84],"509":[84],"524":[84],"525":[84],"533":[84]},"packages/cli/src/modules/source-control.ee/source-control-helper.ee.ts":{"41":[84],"65":[84],"73":[84],"96":[84],"123":[84],"153":[84],"157":[84],"161":[84],"168":[84],"172":[84],"176":[84],"180":[84],"184":[84],"202":[84],"211":[84],"224":[84],"239":[84],"245":[84],"262":[84],"267":[84],"268":[84],"307":[84],"316":[84],"320":[84],"321":[84],"325":[84],"333":[84],"337":[84],"339":[84],"343":[84],"350":[84],"352":[84],"354":[84],"356":[84],"358":[84],"362":[84],"369":[84],"370":[84],"372":[84],"374":[84],"384":[84],"401":[84],"438":[84],"453":[84],"461":[84],"462":[84],"464":[84],"481":[84],"500":[84],"504":[84],"517":[84]},"packages/cli/src/modules/source-control.ee/source-control-preferences.service.ee.ts":{"33":[84],"45":[84],"53":[84],"60":[84],"68":[84],"78":[84],"86":[84],"94":[84],"106":[84],"115":[84],"130":[84],"138":[84],"164":[84],"178":[84],"192":[84],"205":[84],"233":[84],"237":[84],"241":[84],"245":[84],"249":[84],"253":[84],"272":[84],"324":[84],"326":[84],"332":[84]},"packages/cli/src/modules/source-control.ee/source-control.controller.ee.ts":{"32":[84],"41":[84],"68":[84],"133":[84],"178":[84],"188":[84],"197":[84],"233":[84],"249":[84],"258":[84],"274":[84],"290":[84],"304":[84]},"packages/cli/src/modules/source-control.ee/source-control.service.ee.ts":{"62":[84],"79":[84],"94":[84],"103":[84],"116":[84],"139":[84],"148":[84],"178":[84],"209":[84],"258":[84],"267":[84],"280":[84],"296":[84],"312":[84],"339":[84],"340":[84],"351":[84],"370":[84],"371":[84],"390":[84],"393":[84],"449":[84],"474":[84],"488":[84],"503":[84],"525":[84],"597":[84],"602":[84],"610":[84]},"packages/@n8n/design-system/src/components/N8nColorPicker/ColorPicker.vue":{"21":[84],"34":[84],"59":[84]},"packages/frontend/editor-ui/src/app/components/layouts/EmptyStateLayout.vue":{"25":[24,27,69,84,90,131],"58":[69],"63":[24,27,69,84,90,131],"74":[24,27,69,84,90,131],"100":[24,27,69,84,90,131],"116":[24,27,69,84,90,131],"202":[24,27,69,84,90,131],"212":[84],"277":[24,27,69,84,90,131],"286":[24,27,69,84,90,131]},"packages/frontend/editor-ui/src/experiments/surfaceMcpToNewCloudUsers/composables/useSurfaceMcpEmptyState.ts":{"21":[24,27,69,84,90,131],"33":[24,27,69,84,90,131],"59":[24,27,69,84,90,131],"63":[24,27,69,84,90,131],"71":[24,27,69,84,90,131],"88":[24,27,69,84,90,131]},"packages/frontend/editor-ui/src/experiments/surfaceMcpToNewCloudUsers/composables/useSurfaceMcpToNewCloudUsersEligibility.ts":{"7":[24,27,69,84,90,131],"13":[24,27,69,84,90,131]},"packages/frontend/editor-ui/src/experiments/surfaceMcpToNewCloudUsers/stores/surfaceMcpToNewCloudUsers.store.ts":{"26":[24,27,69,84,90,131]},"packages/frontend/editor-ui/src/features/integrations/sourceControl.ee/views/SettingsSourceControl.vue":{"43":[84],"44":[84],"55":[84],"86":[84],"115":[84],"133":[84],"144":[84],"153":[84],"174":[84],"178":[84],"206":[84],"284":[84],"285":[84],"335":[84],"345":[84],"349":[84],"426":[84],"444":[84],"449":[84],"450":[84],"467":[84],"489":[84],"496":[84],"515":[84],"517":[84],"536":[84]},"packages/localhost-40183/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[84]},"packages/localhost-40183/assets/chunk-CC9Q-vWm.js":{"8":[84],"9":[84],"10":[84],"19":[84],"23":[84],"29":[84],"33":[84],"34":[84]},"packages/frontend/editor-ui/src/app/views/DemoDiffView.vue":{"19":[94],"26":[94],"35":[94],"62":[94]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/HighlightedEdge.vue":{"6":[94]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/SyncedWorkflowCanvas.vue":{"16":[94],"39":[94],"49":[94],"68":[94],"71":[94],"76":[94],"90":[94],"98":[94],"102":[94],"131":[94],"146":[94],"149":[94],"152":[94]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/WorkflowDiffContent.vue":{"15":[94],"41":[94],"46":[94],"48":[94],"59":[94],"70":[94],"75":[94],"87":[94],"102":[94],"113":[94],"118":[94],"130":[94]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/WorkflowDiffView.vue":{"64":[94],"65":[94],"84":[94],"85":[94],"102":[94],"148":[94],"169":[94],"174":[94],"176":[94],"183":[94]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/useViewportSync.ts":{"30":[94],"47":[94],"53":[94],"72":[94]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/useWorkflowDiff.ts":{"31":[94],"32":[94],"42":[94],"43":[94],"47":[94],"52":[94],"71":[94],"83":[94],"94":[94],"100":[94],"117":[94],"128":[94],"147":[94],"151":[94],"168":[94],"211":[94],"233":[94],"261":[94]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/useWorkflowDiffUI.ts":{"25":[94],"40":[94],"94":[94],"97":[94],"98":[94],"130":[94],"167":[94],"182":[94],"221":[94],"225":[94]},"packages/localhost-33543/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[27]},"packages/localhost-33543/assets/chunk-CC9Q-vWm.js":{"8":[27],"9":[27],"10":[27],"19":[27],"23":[27],"29":[27],"33":[27],"34":[27]},"packages/localhost-43335/assets/shield-alt-B7h2cjjC.js":{"8":[96,120]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryContent.vue":{"71":[105],"119":[105],"125":[105]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryList.vue":{"22":[105],"49":[105],"61":[105],"73":[105],"82":[105],"86":[105],"92":[105],"119":[105],"151":[105],"179":[105],"184":[105]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryListItem.vue":{"26":[105],"58":[105],"63":[105],"74":[105],"83":[105],"99":[105],"165":[105],"172":[105],"203":[105],"211":[105],"214":[105]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/views/WorkflowHistory.vue":{"61":[105],"78":[105],"81":[105],"92":[105],"93":[105],"100":[105],"101":[105],"106":[105],"112":[105],"117":[105],"127":[105],"128":[105],"143":[105],"154":[105],"169":[105],"177":[105],"181":[105],"199":[105],"228":[105],"572":[105],"587":[105],"624":[105],"643":[105]},"packages/@n8n/nodes-langchain/nodes/embeddings/EmbeddingsHuggingFaceInference/EmbeddingsHuggingFaceInference.node.ts":{"15":[120],"85":[120],"93":[120],"119":[120]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryXata/MemoryXata.node.ts":{"23":[120],"105":[120]},"packages/@n8n/nodes-langchain/nodes/output_parser/OutputParserStructured/OutputParserStructured.node.ts":{"30":[120],"196":[120]},"packages/@n8n/nodes-langchain/nodes/text_splitters/TextSplitterTokenSplitter/TextSplitterTokenSplitter.node.ts":{"13":[120],"62":[120]},"packages/@n8n/nodes-langchain/nodes/text_splitters/TextSplitterTokenSplitter/TokenTextSplitter.ts":{"16":[120],"28":[120],"36":[120]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreQdrant/Qdrant.utils.ts":{"9":[120],"28":[120]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreSupabase/VectorStoreSupabase.node.ts":{"67":[120],"84":[120]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts":{"22":[120],"68":[120],"127":[120]},"packages/@n8n/nodes-langchain/nodes/vector_store/shared/methods/listSearch.ts":{"10":[120],"19":[120],"27":[120],"58":[120],"65":[120],"73":[120],"87":[120],"95":[120],"102":[120]},"packages/nodes-base/credentials/NotionApi.credentials.ts":{"33":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/contextual-compression-retriever.svg":{"11":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/guardrails.svg":{"11":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/multiquery-retriever.svg":{"11":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/sentiment-analysis.svg":{"11":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/summarization-chain.svg":{"11":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/text-classifier.svg":{"11":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/token-splitter.svg":{"11":[120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/workflow-retriever.svg":{"11":[120]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FixedCollection/FixedCollectionParameter.vue":{"39":[19,20,57,64,97,112,113,120]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/LinkItem.vue":{"13":[65,120]},"packages/localhost-38519/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[120]},"packages/localhost-38519/assets/chunk-CC9Q-vWm.js":{"8":[120],"9":[120],"10":[120],"19":[120],"23":[120],"29":[120],"33":[120],"34":[120]},"packages/localhost-42789/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[14,26,55,57,64,73,77,107]},"packages/localhost-42789/assets/chunk-CC9Q-vWm.js":{"8":[14,26,55,57,64,73,77,107],"9":[14,26,55,57,64,73,77,107],"10":[14,26,55,57,64,73,77,107],"19":[14,26,55,57,64,73,77,107],"23":[14,26,55,57,64,73,77,107],"29":[14,26,55,57,64,73,77,107],"33":[14,26,55,57,64,73,77,107],"34":[14,26,55,57,64,73,77,107]},"packages/frontend/editor-ui/src/app/components/NodeExecutionErrorMessage.vue":{"4":[151]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/evaluation.api.ts":{"59":[151,93],"63":[151,93],"68":[151],"81":[151],"107":[151],"123":[151],"131":[151],"135":[151],"150":[151],"166":[151],"174":[151],"188":[151],"201":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNdvActions.vue":{"6":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNodeDetails.vue":{"25":[151],"28":[151],"34":[151],"35":[151],"43":[151],"56":[151],"62":[151],"66":[151],"70":[151],"78":[151],"81":[151],"107":[151],"119":[151],"122":[151]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/experimentalNdv.utils.ts":{"5":[151],"25":[151],"26":[151]},"packages/nodes-base/nodes/Linear/GenericFunctions.ts":{"16":[29],"66":[29],"70":[29],"100":[29],"126":[29]},"packages/nodes-base/nodes/Linear/Linear.node.ts":{"109":[29],"119":[29],"136":[29],"154":[29],"172":[29],"220":[29]},"packages/nodes-base/nodes/Linear/Queries.ts":{"2":[29],"15":[29],"28":[29],"41":[29],"95":[29],"102":[29],"138":[29],"147":[29],"189":[29],"245":[29],"255":[29]},"packages/@n8n/design-system/src/components/N8nFormBox/FormBox.vue":{"34":[26,28,69,90],"41":[28,69,90],"42":[28,69,90],"43":[28,69,90],"45":[26,28,69,90],"51":[26,28,69,90],"80":[26,28,69,90]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isGuest.ts":{"4":[26,28,69,90]},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/guest.ts":{"6":[26,28,69,90]},"packages/frontend/editor-ui/src/features/core/auth/views/AuthView.vue":{"28":[28,69,90],"32":[28,69,90],"59":[26,28,69,90]},"packages/frontend/editor-ui/src/features/core/auth/views/SigninView.vue":{"45":[26,28,69,90],"46":[26,28,69,90],"89":[90],"98":[28,69,90],"102":[28,69,90],"119":[28,69,90],"127":[28,69,90],"190":[90],"195":[90]},"packages/frontend/editor-ui/src/features/settings/sso/components/SSOLogin.vue":{"23":[26,28,69,90]},"packages/community-packages.controller.ts":{"9":[55],"13":[55],"21":[55],"27":[55],"35":[55]},"packages/community-packages.lifecycle.service.ts":{"33":[55],"35":[55],"47":[55],"58":[55],"64":[55],"108":[55],"207":[55],"223":[55],"231":[55],"249":[55],"284":[55],"294":[55],"309":[55],"316":[55],"335":[55],"372":[55],"386":[55]},"packages/frontend/editor-ui/src/features/settings/communityNodes/communityNodes.utils.ts":{"10":[55]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeDetails.vue":{"19":[55,65],"28":[65],"30":[65],"39":[55,65],"41":[65],"43":[65],"74":[65],"79":[65],"97":[55,65],"115":[65],"118":[65]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeDocsLink.vue":{"9":[55,65],"11":[65],"14":[55,65],"23":[55,65]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeFooter.vue":{"15":[55],"32":[55],"52":[55],"57":[55],"72":[55],"73":[55],"79":[55],"80":[55]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeInfo.vue":{"17":[55,65],"29":[55,65],"33":[55,65],"41":[55,65],"43":[65],"48":[55,65],"65":[65],"101":[65],"109":[55,65],"114":[55,65],"119":[55,65],"130":[65],"132":[65],"138":[65],"144":[65],"145":[55,65],"148":[55,65],"156":[65],"163":[65],"168":[65],"169":[65],"172":[65]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/CommunityNodeItem.vue":{"11":[55,65]},"packages/cli/src/webhooks/waiting-forms.ts":{"23":[19,20,57],"26":[19,20,57],"30":[19,20,57],"36":[19,20,57],"47":[19,20,57],"59":[19,20,57],"79":[19,20,57],"158":[19,20,57]},"packages/cli/src/webhooks/webhook-form-data.ts":{"4":[19,20,57,63],"16":[19,20,57,63],"17":[19,20,57,63],"30":[19,20,57,63],"31":[19,20,57,63]},"packages/@n8n/design-system/src/components/N8nPulse/Pulse.vue":{"6":[20,57,64,107]},"packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.ts":{"107":[64]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/iCall.operation.ts":{"16":[64]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/spreadsheet.operation.ts":{"94":[64]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/toBinary.operation.ts":{"105":[64]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/toJson.operation.ts":{"90":[64],"102":[64]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/toText.operation.ts":{"78":[64]},"packages/nodes-base/nodes/ICalendar/createEvent.operation.ts":{"275":[64]},"packages/localhost-42789/assets/shield-alt-B7h2cjjC.js":{"8":[64]},"packages/@n8n/api-types/src/push/heartbeat.ts":{"9":[8,41,69]},"packages/@n8n/design-system/src/components/N8nIcon/custom/binary.svg":{"8":[69]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-canceled.svg":{"8":[69]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-completed.svg":{"8":[69]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-error.svg":{"8":[69]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-new.svg":{"8":[69]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-unknown.svg":{"8":[69]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-warning.svg":{"8":[24,69]},"packages/@n8n/design-system/src/types/menu.ts":{"55":[24,69,90,102]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectIcon.vue":{"35":[69]},"packages/frontend/editor-ui/src/features/core/auth/views/SignoutView.vue":{"14":[69,90],"23":[69,90]},"packages/localhost-39203/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[69]},"packages/localhost-39203/assets/chunk-CC9Q-vWm.js":{"8":[69],"9":[69],"10":[69],"19":[69],"23":[69],"29":[69],"33":[69],"34":[69]},"packages/localhost-39203/assets/shield-alt-B7h2cjjC.js":{"8":[69]},"packages/localhost-45407/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[29,76,88,97,130]},"packages/localhost-45407/assets/chunk-CC9Q-vWm.js":{"8":[29,76,88,97,130],"9":[29,76,88,97,130],"10":[29,76,88,97,130],"19":[29,76,88,97,130],"23":[29,76,88,97,130],"29":[29,76,88,97,130],"33":[29,76,88,97,130],"34":[29,76,88,97,130]},"packages/localhost-45407/assets/shield-alt-B7h2cjjC.js":{"8":[29,76,97]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/switch.svg":{"11":[59,73,97,102,113,118,121,136]},"packages/cli/src/execution-lifecycle/save-execution-progress.ts":{"8":[107]},"packages/nodes-base/nodes/Telegram/GenericFunctions.ts":{"70":[13,74,107,138],"194":[13,74,107,138],"234":[13,74,107,138],"247":[13,74,107,138],"251":[13,74,107,138],"257":[13,74,107,138],"278":[13,74,107,138]},"packages/nodes-base/nodes/Telegram/Telegram.node.ts":{"1809":[13,74,107,138],"1815":[13,74,107,138]},"packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.ts":{"16":[44],"280":[44],"314":[44],"362":[44],"386":[44]},"packages/nodes-base/nodes/Pipedrive/v1/GenericFunctions.ts":{"31":[44,122],"103":[44,122],"142":[44,122],"187":[44,122],"195":[44,122],"210":[44,122],"230":[44,122],"278":[44,122],"292":[44,122],"293":[44,122],"302":[44,122],"305":[44,122]},"packages/nodes-base/nodes/Trello/GenericFunctions.ts":{"14":[44],"46":[44]},"packages/nodes-base/nodes/Trello/Trello.node.ts":{"138":[44],"161":[44],"169":[44],"192":[44],"203":[44]},"packages/localhost-46685/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[44,53,65,67,79,80,113,115]},"packages/localhost-46685/assets/chunk-CC9Q-vWm.js":{"8":[44,53,65,67,79,80,113,115],"9":[44,53,65,67,79,80,113,115],"10":[44,53,65,67,79,80,113,115],"19":[44,53,65,67,79,80,113,115],"23":[44,53,65,67,79,80,113,115],"29":[44,53,65,67,79,80,113,115],"33":[44,53,65,67,79,80,113,115],"34":[44,53,65,67,79,80,113,115]},"packages/localhost-46685/assets/shield-alt-B7h2cjjC.js":{"8":[44,113]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/OpenTemplateItem.vue":{"14":[53,65],"23":[53,65],"27":[65]},"packages/nodes-base/nodes/Shopify/GenericFunctions.ts":{"12":[74,138],"85":[74,138],"124":[74,138]},"packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.ts":{"335":[74,138],"350":[74,138],"373":[74,138],"389":[74,138]},"packages/nodes-base/nodes/Twitter/Twitter.node.ts":{"8":[74,138]},"packages/nodes-base/nodes/Twitter/V1/GenericFunctions.ts":{"12":[74,138],"44":[74,138],"67":[74,138],"79":[74,138]},"packages/nodes-base/nodes/Twitter/V1/TwitterV1.node.ts":{"27":[74,138],"76":[74,138],"92":[74,138],"123":[74,138],"164":[74,138],"171":[74,138]},"packages/nodes-base/nodes/Twitter/V2/GenericFunctions.ts":{"13":[74,138],"60":[74,138],"83":[74,138],"105":[74,138]},"packages/nodes-base/nodes/Twitter/V2/TwitterV2.node.ts":{"31":[74,138],"100":[74,138],"116":[74,138]},"packages/@n8n/chat/src/components/GetStarted.vue":{"5":[65]},"packages/@n8n/chat/src/utils/streamingHandlers.ts":{"11":[65],"55":[65],"64":[65],"78":[65],"98":[65]},"packages/frontend/editor-ui/src/app/components/ConsumedTokensDetails.vue":{"7":[65],"13":[65],"24":[65]},"packages/frontend/editor-ui/src/app/components/DuplicateWorkflowDialog.vue":{"20":[65],"58":[65],"64":[65],"72":[65],"76":[65],"147":[65],"156":[65],"161":[65],"172":[65],"192":[65]},"packages/frontend/editor-ui/src/app/components/MainHeader/utils.ts":{"1":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/builderCreditsUpdated.ts":{"4":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/executionRecovered.ts":{"14":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeDescriptionUpdated.ts":{"10":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/reloadNodeType.ts":{"9":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/removeNodeType.ts":{"10":[65],"17":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/sendWorkerStatusMessage.ts":{"8":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/testWebhookDeleted.ts":{"8":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowActivated.ts":{"9":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowAutoDeactivated.ts":{"10":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowDeactivated.ts":{"8":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowFailedToActivate.ts":{"9":[65],"25":[65]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowSettingsUpdated.ts":{"8":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatFloatingMenu.vue":{"10":[65],"26":[65],"27":[65],"32":[65],"34":[65],"43":[65],"75":[65],"108":[65],"120":[65],"133":[65],"148":[65],"149":[65],"154":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatFloatingWindow.vue":{"23":[65],"28":[65],"37":[65],"46":[65],"58":[65],"59":[65],"62":[65],"66":[65],"70":[65],"78":[65],"90":[65],"92":[65],"100":[65],"105":[65],"122":[65],"125":[65],"130":[65],"140":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatHubPanel.vue":{"30":[65],"50":[65],"51":[65],"61":[65],"62":[65],"63":[65],"66":[65],"72":[65],"100":[65],"101":[65],"136":[65],"138":[65],"144":[65],"150":[65],"159":[65],"164":[65],"174":[65],"175":[65],"181":[65],"196":[65],"200":[65],"214":[65],"218":[65],"222":[65],"243":[65],"254":[65],"266":[65],"278":[65],"279":[65],"280":[65],"281":[65],"282":[65],"294":[65],"308":[65],"312":[65],"322":[65],"324":[65],"334":[65],"336":[65],"361":[65],"372":[65],"382":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatOverlay.vue":{"9":[65],"18":[65],"19":[65],"26":[65],"31":[65],"39":[65],"42":[65],"51":[65],"59":[65],"60":[65],"68":[65],"72":[65],"76":[65],"81":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatSessionDropdown.vue":{"19":[65],"32":[65],"33":[65],"40":[65],"42":[65],"51":[65],"52":[65],"54":[65],"67":[65],"72":[65],"77":[65],"78":[65],"91":[65],"99":[65],"100":[65],"103":[65],"112":[65],"117":[65],"129":[65],"131":[65],"137":[65],"150":[65],"156":[65],"161":[65],"164":[65],"167":[65],"168":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatButtons.vue":{"11":[65],"14":[65],"27":[65],"33":[65],"40":[65],"41":[65]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatMarkdownChunk.vue":{"33":[65],"38":[65],"47":[65],"84":[65],"91":[65]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/components/Paywall/EvaluationsPaywall.vue":{"7":[65],"10":[65],"17":[65]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeInstallHint.vue":{"10":[65],"11":[65]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsDropdown.vue":{"64":[130,137],"65":[130,137],"70":[130,137],"71":[130,137],"74":[130,137],"78":[65,130,137],"87":[130,137],"88":[130],"96":[130,137],"104":[130],"122":[130,137],"126":[130],"131":[130,137],"133":[130,137],"136":[130],"152":[130,137],"153":[130,137],"154":[130,137],"163":[130,137],"172":[130,137],"183":[130],"190":[130,137],"199":[130],"200":[130],"206":[130,137],"240":[130],"247":[65,130,137],"255":[130,137],"265":[65,130,137]},"packages/frontend/editor-ui/src/features/core/folders/components/DeleteFolderModal.vue":{"16":[67],"41":[67],"46":[67],"50":[67],"55":[67],"74":[67],"82":[67],"105":[67],"141":[67],"143":[67],"155":[67],"162":[67],"165":[67],"168":[67],"181":[67],"197":[67],"199":[67],"227":[67]},"packages/localhost-34611/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[82]},"packages/localhost-34611/assets/chunk-CC9Q-vWm.js":{"8":[82],"9":[82],"10":[82],"19":[82],"23":[82],"29":[82],"33":[82],"34":[82]},"packages/nodes-base/nodes/Switch/Switch.node.ts":{"9":[97,113,118,121]},"packages/nodes-base/nodes/Switch/V1/SwitchV1.node.ts":{"15":[97,113,118,121],"523":[97,113,118,121],"538":[97,113,118,121],"540":[97,113,118,121],"542":[97,113,118,121],"544":[97,113,118,121],"546":[97,113,118,121],"548":[97,113,118,121],"550":[97,113,118,121],"551":[97,113,118,121],"552":[97,113,118,121],"554":[97,113,118,121],"556":[97,113,118,121],"558":[97,113,118,121],"560":[97,113,118,121],"562":[97,113,118,121],"564":[97,113,118,121],"578":[97,113,118,121],"595":[97,113,118,121],"616":[97,113,118,121]},"packages/nodes-base/nodes/Switch/V2/SwitchV2.node.ts":{"17":[97,113,118,121],"521":[97,113,118,121],"523":[97,113,118,121],"538":[97,113,118,121],"553":[97,113,118,121],"555":[97,113,118,121],"557":[97,113,118,121],"559":[97,113,118,121],"561":[97,113,118,121],"563":[97,113,118,121],"565":[97,113,118,121],"566":[97,113,118,121],"567":[97,113,118,121],"569":[97,113,118,121],"571":[97,113,118,121],"573":[97,113,118,121],"575":[97,113,118,121],"577":[97,113,118,121],"579":[97,113,118,121],"593":[97,113,118,121],"610":[97,113,118,121],"631":[97,113,118,121],"652":[97,113,118,121],"662":[97,113,118,121]},"packages/nodes-base/nodes/Switch/V3/SwitchV3.node.ts":{"21":[97,113,118,121],"25":[97,113,118,121],"31":[97,113,118,121],"51":[97,113,118,121],"347":[97,113,118,121],"377":[97,113,118,121],"383":[97,113,118,121],"409":[97,113,118,121],"422":[97,113,118,121]},"packages/frontend/editor-ui/src/app/utils/formatters/listFormatter.ts":{"15":[74,138]},"packages/frontend/editor-ui/src/features/workflows/templates/components/AppsRequiringCredsNotice.vue":{"10":[74,138],"17":[74,138],"24":[74,138],"27":[74,138],"33":[74,138],"38":[74,138]},"packages/frontend/editor-ui/src/features/workflows/templates/components/IconSuccess.vue":{"2":[74,138]},"packages/frontend/editor-ui/src/features/workflows/templates/components/SetupTemplateFormStep.vue":{"42":[74,138],"44":[74,138],"48":[74,138],"52":[74,138],"53":[74,138],"60":[74,138],"71":[138],"85":[74,138],"98":[74,138]},"packages/frontend/editor-ui/src/features/workflows/templates/components/SetupWorkflowCredentialsModal.vue":{"13":[74,138],"29":[74,138],"46":[74,138],"52":[138],"61":[74,138],"65":[74,138],"67":[74,138],"71":[74,138],"83":[74,138],"90":[138],"98":[74,138],"105":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/composables/useCredentialSetupState.ts":{"29":[74,138],"34":[74,138],"38":[74,138],"43":[74,138],"77":[74,138],"103":[74,138],"115":[74,138],"123":[74,138],"126":[74,138],"132":[74,138],"136":[74,138],"140":[74,138],"144":[138],"163":[74,138],"171":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/composables/useSetupWorkflowCredentialsModalState.ts":{"9":[74,138],"15":[74,138],"34":[74,138],"40":[138],"52":[138],"66":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/utils/templateTransforms.ts":{"38":[74,138],"47":[74,138],"55":[138],"73":[138],"99":[138],"122":[138],"127":[138]},"packages/localhost-36813/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[74]},"packages/localhost-36813/assets/chunk-CC9Q-vWm.js":{"8":[74],"9":[74],"10":[74],"19":[74],"23":[74],"29":[74],"33":[74],"34":[74]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/sort.svg":{"11":[113,118,121]},"packages/frontend/editor-ui/src/features/ndv/parameters/utils/assignmentCollection.utils.ts":{"8":[113],"18":[113]},"packages/workflow/src/extensions/array-extensions.ts":{"17":[115],"21":[115],"25":[115],"29":[115],"33":[115],"40":[115],"43":[115],"44":[115],"59":[115],"64":[115],"65":[115],"67":[115],"74":[115],"77":[115],"78":[115],"83":[115],"86":[115],"97":[115],"101":[115],"113":[115],"117":[115],"129":[115],"140":[115],"142":[115],"147":[115],"155":[115],"163":[115],"173":[115],"187":[115],"193":[115],"200":[115],"213":[115],"233":[115],"238":[115],"267":[115],"274":[115],"281":[115],"290":[115],"297":[115],"306":[115],"311":[115],"318":[115],"322":[115],"326":[115],"330":[115],"334":[115],"338":[115]},"packages/workflow/src/extensions/string-extensions.ts":{"126":[115],"157":[115],"161":[115],"165":[115],"169":[115],"173":[115],"215":[115],"219":[115],"232":[115],"254":[115],"262":[115],"270":[115],"281":[115],"295":[115],"305":[115],"312":[115],"318":[115],"322":[115],"326":[115],"337":[115],"341":[115],"345":[115],"368":[115],"375":[115],"383":[115],"401":[115],"409":[115],"418":[115],"429":[115],"435":[115],"439":[115]},"packages/frontend/editor-ui/src/app/components/VersionUpdateCTA.vue":{"13":[24],"30":[24]},"packages/localhost-43055/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[24,31,47,51,58,111,123,125,137]},"packages/localhost-43055/assets/chunk-CC9Q-vWm.js":{"8":[24,31,47,51,58,111,123,125,137],"9":[24,31,47,51,58,111,123,125,137],"10":[24,31,47,51,58,111,123,125,137],"19":[24,31,47,51,58,111,123,125,137],"23":[24,31,47,51,58,111,123,125,137],"29":[24,31,47,51,58,111,123,125,137],"33":[24,31,47,51,58,111,123,125,137],"34":[24,31,47,51,58,111,123,125,137]},"packages/localhost-43055/assets/shield-alt-B7h2cjjC.js":{"8":[31,51,125,137]},"packages/@n8n/api-types/src/dto/data-table/delete-data-table-rows.dto.ts":{"7":[47],"52":[47]},"packages/@n8n/api-types/src/dto/data-table/update-data-table-row.dto.ts":{"10":[47],"18":[47]},"packages/frontend/editor-ui/src/app/components/common/SelectedItemsInfo.vue":{"17":[47],"24":[47],"28":[47],"32":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/ElDatePickerCellEditor.vue":{"7":[47],"24":[47],"30":[47],"36":[47],"43":[47],"45":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/NullEmptyCellRenderer.vue":{"2":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDatePickerCommon.ts":{"11":[47],"17":[47],"22":[47],"35":[47],"60":[47],"67":[47],"84":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/utils/typeUtils.ts":{"13":[47],"49":[47]},"packages/frontend/editor-ui/src/features/core/dataTable/utils.ts":{"1":[47],"6":[47]},"packages/frontend/editor-ui/src/app/utils/json-schema.ts":{"5":[111],"9":[111],"12":[111],"25":[111],"32":[111],"35":[111]},"packages/@n8n/client-oauth2/src/client-oauth2-token.ts":{"25":[146,154,123],"40":[146,154,123],"72":[146,154,123],"120":[146,154,123]},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/oauth.ts":{"37":[154,123],"41":[154,123],"58":[154,123],"86":[154,123],"97":[154,123],"103":[154,123],"117":[154,123],"206":[154,123],"214":[154,123],"325":[154,123],"340":[154,123],"342":[154,123],"350":[154,123],"362":[154,123],"365":[154,123],"373":[154,123],"397":[154,123],"439":[154,123],"445":[154,123]},"packages/@n8n/permissions/src/schemas.ee.ts":{"23":[131],"50":[131],"73":[131]},"packages/@n8n/design-system/src/components/N8nUserStack/UserStack.vue":{"9":[131],"23":[131],"35":[131],"39":[131],"49":[131],"55":[131],"59":[131],"62":[131],"73":[131],"83":[131],"85":[131],"92":[131],"96":[131]},"packages/localhost-44819/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[131]},"packages/localhost-44819/assets/chunk-CC9Q-vWm.js":{"8":[131],"9":[131],"10":[131],"19":[131],"23":[131],"29":[131],"33":[131],"34":[131]},"packages/cli/src/middlewares/list-query/dtos/base.select.dto.ts":{"7":[137],"12":[137]},"packages/cli/src/middlewares/list-query/dtos/workflow.select.dto.ts":{"4":[137],"22":[137]},"packages/@n8n/design-system/src/components/N8nCommandBar/CommandBarItem.vue":{"6":[137],"17":[137],"21":[137],"27":[137]},"packages/@n8n/design-system/src/components/N8nTags/Tags.vue":{"21":[137,138],"37":[137,138],"45":[137],"50":[137,138],"56":[137,138]},"packages/frontend/editor-ui/src/features/shared/commandBar/components/CommandBarItemTitle.vue":{"23":[137]},"packages/frontend/editor-ui/src/features/shared/tags/components/WorkflowTagsDropdown.vue":{"33":[130,137],"34":[130,137],"37":[130,137],"38":[130,137],"39":[130,137],"41":[130],"45":[130],"53":[130,137]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryVersionUnpublishModal.vue":{"15":[137],"36":[137],"42":[137],"45":[137],"49":[137],"51":[137],"58":[137],"62":[137],"70":[137],"73":[137],"76":[137]},"packages/@n8n/ai-utilities/src/utils/loaders/n8n-pdf-loader.ts":{"22":[8],"27":[8],"31":[8],"35":[8],"44":[8],"58":[8],"74":[8],"83":[8]},"packages/@n8n/ai-utilities/src/utils/n8n-binary-loader.ts":{"33":[8],"40":[8],"54":[8],"60":[8],"86":[8],"104":[8],"151":[8],"158":[8],"166":[8],"174":[8],"198":[8],"227":[8]},"packages/localhost-39921/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[8,30,54,102,114,118]},"packages/localhost-39921/assets/chunk-CC9Q-vWm.js":{"8":[8,30,54,102,114,118],"9":[8,30,54,102,114,118],"10":[8,30,54,102,114,118],"19":[8,30,54,102,114,118],"23":[8,30,54,102,114,118],"29":[8,30,54,102,114,118],"33":[8,30,54,102,114,118],"34":[8,30,54,102,114,118]},"packages/cli/src/modules/external-secrets.ee/external-secrets.controller.ee.ts":{"13":[147],"22":[147],"34":[147],"40":[147],"47":[147],"60":[147],"68":[147],"76":[147],"90":[147]},"packages/cli/src/modules/external-secrets.ee/external-secrets.service.ee.ts":{"10":[147],"15":[147],"30":[147],"31":[147],"44":[147],"50":[147],"54":[147],"61":[147],"66":[147],"70":[147],"77":[147]},"packages/cli/src/modules/external-secrets.ee/provider-lifecycle.service.ts":{"25":[147,86],"36":[147,86],"78":[147,86],"112":[147,86],"127":[147,86]},"packages/cli/src/modules/external-secrets.ee/redaction.service.ee.ts":{"14":[147],"18":[147],"19":[147],"41":[147],"52":[147],"61":[147]},"packages/cli/src/modules/external-secrets.ee/retry-manager.service.ts":{"27":[147,86],"30":[147,86],"31":[147,86],"42":[147,86],"62":[147,86],"70":[147,86],"97":[147,86],"112":[147,86],"123":[147,86],"130":[147,86]},"packages/cli/src/modules/external-secrets.ee/secrets-cache.service.ts":{"15":[147,86],"25":[147,86],"29":[147,86],"38":[147,86],"54":[147,86],"56":[147,86],"57":[147,86],"78":[147,86],"86":[147,86],"94":[147,86],"102":[147,86]},"packages/cli/src/modules/external-secrets.ee/settings-store.service.ts":{"18":[147],"26":[147],"38":[147],"54":[147],"61":[147],"80":[147],"108":[147],"116":[147],"127":[147],"142":[147]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/n8n-trigger.svg":{"11":[54]},"packages/localhost-39921/assets/shield-alt-B7h2cjjC.js":{"8":[54,102]},"packages/cli/src/modules/instance-registry/instance-registry.controller.ts":{"9":[102],"15":[102],"23":[102],"38":[102]},"packages/frontend/editor-ui/src/app/components/AboutModal.vue":{"16":[102],"24":[102],"28":[102],"57":[102],"68":[102],"72":[102],"75":[102],"80":[102],"83":[102],"88":[102],"91":[102],"92":[102],"98":[102],"101":[102],"102":[102],"108":[102],"111":[102],"116":[102],"119":[102],"120":[102],"127":[102]},"packages/frontend/editor-ui/src/app/components/ImportWorkflowUrlModal.vue":{"10":[102,136],"16":[102,136],"20":[102,136],"24":[136],"29":[102,136],"32":[102,136],"45":[102,136],"60":[102,136],"68":[102,136],"76":[102,136]},"packages/localhost-41061/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[108]},"packages/localhost-41061/assets/chunk-CC9Q-vWm.js":{"8":[108],"9":[108],"10":[108],"19":[108],"23":[108],"29":[108],"33":[108],"34":[108]},"packages/frontend/editor-ui/src/app/utils/forceParse.ts":{"9":[10,103,114]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionEditorModal/ExpressionEditorModalInput.vue":{"27":[114],"39":[114],"49":[114],"57":[114],"65":[114],"66":[114],"72":[114],"79":[114],"85":[114],"90":[114],"93":[114]},"packages/nodes-base/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.ts":{"119":[118]},"packages/nodes-base/nodes/Transform/Sort/Sort.node.ts":{"164":[118,121],"221":[118,121],"226":[118,121]},"packages/nodes-base/nodes/Transform/Sort/utils.ts":{"8":[118,121]},"packages/cli/src/errors/response-errors/workflow-activation-bad-request.error.ts":{"8":[160]},"packages/cli/src/errors/response-errors/workflow-validation.error.ts":{"9":[160]},"packages/cli/src/modules/external-secrets.ee/secret-provider-access-check.service.ee.ts":{"17":[86],"24":[86],"34":[86],"77":[86],"98":[86],"100":[86]},"packages/frontend/editor-ui/src/features/integrations/externalSecrets.ee/assets/images/aws-secrets-manager.svg":{"8":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/DeleteSecretsProviderModal.ee.vue":{"28":[86],"41":[86],"43":[86],"47":[86],"54":[86],"64":[86],"74":[86],"90":[86],"128":[86],"142":[86],"145":[86],"157":[86],"162":[86],"163":[86],"179":[86],"190":[86],"195":[86],"198":[86],"206":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProviderConnectionCard.ee.vue":{"49":[86],"57":[86],"61":[86],"63":[86],"74":[86],"85":[86],"87":[86],"95":[86],"115":[86],"156":[86],"167":[86],"180":[86],"183":[86],"205":[86],"231":[86],"237":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProviderConnectionModal.ee.vue":{"43":[86],"75":[86],"76":[86],"77":[86],"78":[86],"92":[86],"93":[86],"103":[86],"120":[86],"130":[86],"146":[86],"150":[86],"151":[86],"157":[86],"166":[86],"171":[86],"175":[86],"179":[86],"183":[86],"208":[86],"228":[86],"235":[86],"248":[86],"264":[86],"270":[86],"303":[86],"308":[86],"313":[86],"344":[86],"418":[86],"439":[86],"441":[86],"451":[86],"460":[86],"477":[86],"481":[86],"490":[86],"502":[86],"505":[86],"510":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProviderImage.ee.vue":{"17":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProvidersEmptyState.ee.vue":{"8":[86],"16":[86],"45":[86],"56":[86],"62":[86],"64":[86],"73":[86],"95":[86],"101":[86],"108":[86],"112":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/composables/useConnectionModal.ee.ts":{"31":[86],"35":[86],"60":[86],"66":[86],"92":[86],"118":[86],"138":[86],"142":[86],"151":[86],"159":[86],"164":[86],"166":[86],"167":[86],"173":[86],"174":[86],"181":[86],"187":[86],"194":[86],"199":[86],"200":[86],"207":[86],"208":[86],"212":[86],"213":[86],"215":[86],"225":[86],"233":[86],"239":[86],"257":[86],"276":[86],"281":[86],"283":[86],"291":[86],"298":[86],"306":[86],"307":[86],"357":[86],"401":[86],"442":[86],"450":[86],"478":[86],"516":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/composables/useSecretsProviderConnection.ee.ts":{"34":[86],"39":[86],"62":[86],"79":[86],"100":[86]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/views/SettingsSecretsProviders.ee.vue":{"47":[86],"49":[86],"52":[86],"97":[86],"101":[86],"105":[86],"137":[86],"138":[86],"141":[86],"154":[86],"193":[86],"194":[86],"205":[86],"212":[86],"237":[86],"243":[86],"251":[86],"266":[86],"269":[86],"285":[86],"298":[86],"310":[86]},"packages/localhost-40003/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[86]},"packages/localhost-40003/assets/chunk-CC9Q-vWm.js":{"8":[86],"9":[86],"10":[86],"19":[86],"23":[86],"29":[86],"33":[86],"34":[86]},"packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.ts":{"32":[88],"84":[88],"122":[88],"131":[88],"136":[88],"150":[88],"188":[88],"189":[88],"206":[88],"231":[88],"288":[88],"322":[88],"337":[88]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/Condition.vue":{"43":[59,97],"63":[59,97],"67":[59,97],"79":[59,97],"97":[59,97],"110":[59,97],"120":[59,97],"131":[59,97],"143":[59],"145":[59],"166":[59],"170":[59],"215":[59,97],"221":[59,97],"250":[59,97],"269":[59,97],"278":[59,97],"306":[59,97],"316":[59]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/FilterConditions.vue":{"39":[59,97],"62":[59,97],"71":[59],"75":[59,97],"78":[59,97],"90":[59],"94":[59,97],"96":[59],"100":[59,97],"105":[59,97],"134":[59,97],"135":[59,97],"144":[59,97],"145":[59,97],"152":[59,97],"160":[59],"164":[59],"172":[59],"176":[59,97],"178":[59,97],"210":[59,97],"232":[59],"233":[59]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/OperatorSelect.vue":{"19":[59,97],"30":[59,97],"31":[59,97],"34":[59,97],"36":[59,97],"38":[59,97],"41":[59,97],"42":[59,97],"55":[59,97],"73":[59,97],"86":[59,97],"88":[59,97]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/utils.ts":{"19":[59,97],"81":[59,97],"124":[59,97],"145":[59,97]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/NoTagsView.vue":{"19":[130],"20":[130],"25":[130],"29":[130],"38":[130]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsManager.vue":{"29":[130],"42":[130],"46":[130],"48":[130],"49":[130],"51":[130],"55":[130],"59":[130],"63":[130],"67":[130],"117":[130],"118":[130],"130":[130],"133":[130],"148":[130],"161":[130],"183":[130]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsView/TagsTable.vue":{"33":[130],"42":[130],"46":[130],"73":[130],"84":[130],"88":[130],"92":[130],"93":[130],"100":[130],"101":[130],"109":[130],"118":[130],"119":[130],"127":[130],"132":[130],"145":[130],"147":[130],"148":[130],"150":[130],"169":[130],"171":[130],"181":[130],"183":[130],"234":[130]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsView/TagsTableHeader.vue":{"19":[130],"28":[130],"34":[130],"39":[130],"40":[130],"48":[130],"54":[130]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsView/TagsView.vue":{"13":[130],"33":[130],"47":[130],"49":[130],"50":[130],"57":[130],"58":[130],"72":[130],"81":[130],"108":[130],"112":[130],"116":[130],"118":[130],"128":[130],"133":[130],"138":[130],"141":[130],"152":[130],"173":[130]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/WorkflowTagsManager.vue":{"10":[130],"14":[130],"15":[130],"17":[130],"27":[130],"62":[130],"83":[130]},"packages/@n8n/api-types/src/dto/binary-data/binary-data-query.dto.ts":{"8":[140],"12":[140]},"packages/cli/src/controllers/binary-data.controller.ts":{"16":[140],"19":[140],"36":[140],"50":[140],"74":[140]},"packages/@n8n/chat/src/components/ChatFile.vue":{"28":[36],"33":[36]},"packages/frontend/editor-ui/src/app/utils/fileUtils.ts":{"5":[36],"6":[36]},"packages/localhost-33775/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[36,41]},"packages/localhost-33775/assets/chunk-CC9Q-vWm.js":{"8":[36,41],"9":[36,41],"10":[36,41],"19":[36,41],"23":[36,41],"29":[36,41],"33":[36,41],"34":[36,41]},"packages/localhost-38803/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[20,59,5,101,112,134]},"packages/localhost-38803/assets/chunk-CC9Q-vWm.js":{"8":[20,59,5,101,112,134],"9":[20,59,5,101,112,134],"10":[20,59,5,101,112,134],"19":[20,59,5,101,112,134],"23":[20,59,5,101,112,134],"29":[20,59,5,101,112,134],"33":[20,59,5,101,112,134],"34":[20,59,5,101,112,134]},"packages/cli/src/controllers/password-reset.controller.ts":{"44":[144],"70":[144],"114":[144],"170":[144],"198":[144],"229":[144]},"packages/cli/src/middlewares/jitter.ts":{"14":[144],"18":[144],"21":[144]},"packages/cli/src/user-management/email/node-mailer.ts":{"19":[144],"48":[144],"84":[144]},"packages/@n8n/decorators/src/credential-resolver/errors.ts":{"5":[146],"16":[146],"27":[146]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-userinfo-identifier.ts":{"47":[146],"52":[146],"75":[146],"106":[146],"117":[146],"130":[146],"155":[146],"164":[146],"171":[146]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-utils.ts":{"11":[146]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/oauth-credential-resolver.ts":{"39":[146],"125":[146],"154":[146],"175":[146],"185":[146],"189":[146],"202":[146],"207":[146],"218":[146],"226":[146]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/storage/dynamic-credential-entry-storage.ts":{"10":[146],"14":[146],"31":[146],"53":[146],"66":[146]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers.controller.ts":{"39":[146,150],"43":[146,150],"53":[146,150],"64":[146,150],"67":[146,150],"78":[146,150],"110":[146,150],"131":[146,150],"151":[146,150],"189":[146,150]},"packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts":{"28":[146],"41":[146],"67":[146],"95":[146],"107":[146],"137":[146],"149":[146],"202":[146]},"packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.ts":{"22":[146],"38":[146],"48":[146],"82":[146],"133":[146],"145":[146]},"packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver.service.ts":{"47":[146,150],"63":[146,150],"87":[146,150],"90":[146,150],"95":[146,150],"98":[146,150],"105":[146,150],"110":[146,150],"111":[146,150],"119":[146,150],"132":[146,150],"188":[146,150],"202":[146,150],"216":[146,150],"247":[146,150],"274":[146,150],"281":[146,150],"295":[146,150]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-cors.service.ts":{"10":[146],"28":[146],"29":[146],"51":[146],"59":[146]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.ts":{"25":[146],"34":[146],"115":[146],"121":[146]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.ts":{"15":[146],"34":[146],"36":[146],"53":[146]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential.service.ts":{"40":[146,154],"61":[146,154],"172":[146,154],"179":[146,154],"210":[146,154],"256":[146,154],"271":[146,154],"288":[146,154],"301":[146,154],"304":[146,154],"324":[146,154]},"packages/cli/src/modules/dynamic-credentials.ee/services/resolver-config-expression.service.ts":{"16":[146],"23":[146]},"packages/cli/src/modules/dynamic-credentials.ee/services/shared-fields.ts":{"12":[146],"31":[146]},"packages/cli/src/modules/dynamic-credentials.ee/workflow-status.controller.ts":{"22":[146],"36":[146],"57":[146],"73":[146],"81":[146]},"packages/workflow/src/node-parameters/node-parameter-value-type-guard.ts":{"13":[146],"27":[146],"38":[146],"54":[146],"66":[146],"84":[146],"120":[146]},"packages/cli/src/modules/dynamic-credentials.ee/context-establishment-hooks/bearer-token-extractor.ts":{"29":[154],"37":[154],"41":[154]},"packages/cli/src/modules/dynamic-credentials.ee/context-establishment-hooks/http-header-extractor.ts":{"24":[154],"32":[154],"53":[154],"75":[154],"101":[154],"105":[154]},"packages/nodes-base/nodes/EmailSend/EmailSend.node.ts":{"8":[56]},"packages/nodes-base/nodes/EmailSend/v1/EmailSendV1.node.ts":{"135":[56],"142":[56]},"packages/nodes-base/nodes/EmailSend/v2/EmailSendV2.node.ts":{"88":[56],"101":[56]},"packages/nodes-base/nodes/EmailSend/v2/send.operation.ts":{"185":[56]},"packages/nodes-base/nodes/EmailSend/v2/sendAndWait.operation.ts":{"27":[56]},"packages/nodes-base/nodes/EmailSend/v2/utils.ts":{"20":[56],"51":[56]},"packages/localhost-38301/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[56]},"packages/localhost-38301/assets/chunk-CC9Q-vWm.js":{"8":[56],"9":[56],"10":[56],"19":[56],"23":[56],"29":[56],"33":[56],"34":[56]},"packages/core/src/execution-engine/node-execution-context/utils/create-node-as-tool.ts":{"30":[41],"76":[41],"84":[41],"96":[41],"108":[41],"122":[41]},"packages/workflow/src/from-ai-parse-utils.ts":{"27":[41],"59":[41],"110":[41],"120":[41],"148":[41],"199":[41],"248":[41],"324":[41],"327":[41],"329":[41],"331":[41],"335":[41],"342":[41],"344":[41],"362":[41],"460":[41],"491":[41],"511":[41],"527":[41]},"packages/workflow/src/schemas.ts":{"89":[41],"102":[41],"166":[41],"240":[41],"265":[41],"430":[41]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/CombinatorSelect.vue":{"14":[59],"22":[59],"31":[59],"32":[59]},"packages/localhost-38803/assets/shield-alt-B7h2cjjC.js":{"8":[59,5]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ToolListItem.vue":{"25":[41],"32":[41],"38":[41],"48":[41],"51":[41],"58":[41],"68":[41],"79":[41],"94":[41]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ToolsManagerModal.vue":{"41":[41],"42":[41],"46":[41],"53":[41],"69":[41],"92":[41],"94":[41],"102":[41],"107":[41],"108":[41],"114":[41],"121":[41],"135":[41],"147":[41],"151":[41],"208":[41],"231":[41],"241":[41],"250":[41],"270":[41],"273":[41],"295":[41],"308":[41],"317":[41],"325":[41],"340":[41],"348":[41],"352":[41],"373":[41],"374":[41]},"packages/frontend/editor-ui/src/features/shared/toolConfig/NodeToolSettingsContent.vue":{"65":[41],"66":[41],"68":[41],"78":[41],"82":[41],"86":[41],"96":[41],"101":[41],"104":[41],"112":[41],"113":[41],"116":[41],"130":[41],"138":[41],"145":[41],"155":[41],"167":[41],"176":[41],"185":[41],"221":[41],"237":[41],"238":[41],"299":[41],"300":[41],"315":[41],"319":[41],"320":[41],"328":[41],"355":[41],"384":[41]},"packages/localhost-35873/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[12,13,22,81,89,6,103,121,122]},"packages/localhost-35873/assets/chunk-CC9Q-vWm.js":{"8":[12,13,22,81,89,6,103,121,122],"9":[12,13,22,81,89,6,103,121,122],"10":[12,13,22,81,89,6,103,121,122],"19":[12,13,22,81,89,6,103,121,122],"23":[12,13,22,81,89,6,103,121,122],"29":[12,13,22,81,89,6,103,121,122],"33":[12,13,22,81,89,6,103,121,122],"34":[12,13,22,81,89,6,103,121,122]},"packages/nodes-base/nodes/Telegram/TelegramTrigger.node.ts":{"205":[13],"216":[13],"242":[13],"257":[13],"293":[13],"301":[13]},"packages/nodes-base/nodes/Telegram/util/triggerUtils.ts":{"11":[13]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/MessageRating.vue":{"15":[13],"62":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/BuilderSetupCard.vue":{"28":[13],"53":[13],"57":[13],"59":[13],"82":[13],"89":[13],"95":[13],"99":[13],"103":[13],"104":[13],"105":[13],"109":[13],"110":[13],"111":[13],"112":[13],"114":[13],"120":[13],"136":[13],"149":[13],"182":[13],"189":[13],"205":[13],"206":[13],"209":[13],"218":[13],"219":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/BuilderSetupWizard.vue":{"14":[13],"39":[13],"43":[13],"47":[13],"51":[13],"55":[13],"59":[13],"75":[13],"86":[13],"91":[13],"96":[13],"102":[13],"104":[13],"107":[13],"115":[13],"122":[13],"131":[13],"162":[13],"175":[13],"187":[13],"204":[13],"210":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/CreditsSettingsDropdown.vue":{"29":[13],"79":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/ExecuteMessage.vue":{"34":[13],"51":[13],"58":[13],"87":[13],"136":[13],"146":[13],"191":[13],"223":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderExecution.ts":{"22":[13],"55":[13]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderSetupCards.ts":{"10":[13],"21":[13],"26":[13],"30":[13],"45":[13],"59":[13],"60":[13],"65":[13],"67":[13],"71":[13],"74":[13],"77":[13],"89":[13],"90":[13],"104":[13],"110":[13],"157":[13]},"packages/frontend/editor-ui/src/features/credentials/composables/useCredentialTestInBackground.ts":{"4":[13],"12":[13],"28":[13]},"packages/frontend/editor-ui/src/features/setupPanel/components/TriggerExecuteButton.vue":{"6":[13],"18":[13],"22":[13],"30":[13]},"packages/frontend/editor-ui/src/features/setupPanel/components/cards/SetupCardBody.vue":{"22":[13],"57":[13],"61":[13],"63":[13],"70":[13],"77":[13],"94":[13],"97":[13],"106":[13],"110":[13],"111":[13],"113":[13],"124":[13],"135":[13],"136":[13],"183":[13],"197":[13],"200":[13],"206":[13]},"packages/frontend/editor-ui/src/features/setupPanel/components/cards/SetupCardSection.vue":{"9":[13],"13":[13],"16":[13]},"packages/frontend/editor-ui/src/features/setupPanel/composables/groupSetupCards.ts":{"20":[13],"81":[13]},"packages/frontend/editor-ui/src/features/setupPanel/composables/useTriggerExecution.ts":{"18":[13],"38":[13],"40":[13],"46":[13],"70":[13],"77":[13],"81":[13],"87":[13],"91":[13]},"packages/frontend/editor-ui/src/features/setupPanel/composables/useWebhookUrls.ts":{"21":[13],"25":[13],"27":[13],"33":[13],"35":[13],"83":[13]},"packages/frontend/editor-ui/src/features/setupPanel/composables/useWorkflowSetupState.ts":{"46":[13],"63":[13],"70":[13],"117":[13],"120":[13],"156":[13],"194":[13],"222":[13],"227":[13],"291":[13],"293":[13],"294":[13],"300":[13],"324":[13],"347":[13],"348":[13],"355":[13],"356":[13],"359":[13],"360":[13],"370":[13],"384":[13],"398":[13],"411":[13],"428":[13],"429":[13],"431":[13],"435":[13],"443":[13],"462":[13],"465":[13],"471":[13],"472":[13],"507":[13],"616":[13],"632":[13],"635":[13],"658":[13],"659":[13],"661":[13],"663":[13],"794":[13],"805":[13],"831":[13],"862":[13]},"packages/frontend/editor-ui/src/features/setupPanel/setupPanel.utils.ts":{"7":[13],"25":[13],"50":[13],"103":[13],"136":[13],"227":[13],"267":[13],"310":[13],"318":[13]},"packages/@n8n/api-types/src/dto/user/user-update-request.dto.ts":{"6":[89,90],"13":[89,90],"15":[89,90]},"packages/core/src/utils/signature-helpers.ts":{"9":[63],"16":[63],"31":[63]},"packages/@n8n/design-system/src/components/N8nCircleLoader/CircleLoader.vue":{"3":[103],"15":[103],"16":[103],"18":[103],"22":[103],"23":[103],"24":[103],"28":[103]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/completions.ts":{"19":[103],"30":[103]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/linter.ts":{"4":[103],"8":[103]},"packages/localhost-35873/assets/shield-alt-B7h2cjjC.js":{"8":[103,122]},"packages/nodes-base/nodes/Pipedrive/Pipedrive.node.ts":{"8":[122]},"packages/nodes-base/nodes/Pipedrive/v1/PipedriveV1.node.ts":{"37":[122],"2256":[122],"2393":[122],"3809":[122],"3820":[122],"3834":[122],"3862":[122],"3876":[122],"3900":[122],"3904":[122],"3908":[122],"3912":[122],"3916":[122],"3926":[122],"3930":[122],"3944":[122],"3962":[122],"3978":[122],"3994":[122],"4023":[122],"4053":[122],"4058":[122],"4063":[122],"4068":[122],"4073":[122],"4103":[122],"4949":[122]},"packages/nodes-base/nodes/Pipedrive/v2/PipedriveV2.node.ts":{"16":[122],"28":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/create.operation.ts":{"119":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/get.operation.ts":{"34":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/getAll.operation.ts":{"126":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/update.operation.ts":{"140":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/create.operation.ts":{"222":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/duplicate.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/get.operation.ts":{"34":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/getAll.operation.ts":{"124":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/search.operation.ts":{"138":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/update.operation.ts":{"179":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/add.operation.ts":{"117":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/getAll.operation.ts":{"54":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/remove.operation.ts":{"40":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/update.operation.ts":{"116":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/create.operation.ts":{"87":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/download.operation.ts":{"34":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/get.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/update.operation.ts":{"54":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/create.operation.ts":{"148":[122],"175":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/get.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/getAll.operation.ts":{"100":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/update.operation.ts":{"105":[122],"132":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/create.operation.ts":{"96":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/get.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/getAll.operation.ts":{"143":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/update.operation.ts":{"103":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/create.operation.ts":{"71":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/get.operation.ts":{"34":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/getAll.operation.ts":{"81":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/search.operation.ts":{"98":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/update.operation.ts":{"78":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/create.operation.ts":{"164":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/get.operation.ts":{"34":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/getAll.operation.ts":{"80":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/search.operation.ts":{"117":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/update.operation.ts":{"171":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/create.operation.ts":{"126":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/delete.operation.ts":{"31":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/get.operation.ts":{"34":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/getAll.operation.ts":{"53":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/search.operation.ts":{"101":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/update.operation.ts":{"133":[122]},"packages/nodes-base/nodes/Pipedrive/v2/actions/router.ts":{"15":[122]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/customFields.ts":{"24":[122],"36":[122],"58":[122],"59":[122],"61":[122],"69":[122],"97":[122],"130":[122],"142":[122],"143":[122]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/fields.ts":{"10":[122]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/index.ts":{"3":[122],"7":[122]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/searchResponse.ts":{"9":[122],"14":[122],"25":[122]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/typeCoercion.ts":{"4":[122],"18":[122],"32":[122],"55":[122]},"packages/nodes-base/nodes/Pipedrive/v2/methods/loadOptions.ts":{"9":[122],"34":[122],"65":[122],"83":[122],"117":[122],"120":[122],"127":[122],"130":[122],"137":[122],"143":[122],"150":[122],"162":[122],"187":[122],"193":[122],"203":[122],"206":[122],"213":[122],"223":[122],"226":[122]},"packages/nodes-base/nodes/Pipedrive/v2/transport/pipedrive.api.ts":{"30":[122],"96":[122],"126":[122],"170":[122],"229":[122],"232":[122]},"packages/nodes-base/nodes/StopAndError/StopAndError.node.ts":{"82":[9]},"packages/nodes-base/nodes/StopAndError/utils.ts":{"14":[9],"18":[9]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/EventMessage.vue":{"24":[9],"40":[9],"44":[9]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/stop-and-error.svg":{"11":[9,10]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/NewAssistantSessionModal.vue":{"14":[9],"27":[9],"31":[9],"44":[9],"56":[9],"62":[9],"65":[9],"68":[9],"72":[9]},"packages/localhost-37003/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[9,10,19,28,93,136]},"packages/localhost-37003/assets/chunk-CC9Q-vWm.js":{"8":[9,10,19,28,93,136],"9":[9,10,19,28,93,136],"10":[9,10,19,28,93,136],"19":[9,10,19,28,93,136],"23":[9,10,19,28,93,136],"29":[9,10,19,28,93,136],"33":[9,10,19,28,93,136],"34":[9,10,19,28,93,136]},"packages/localhost-40857/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[63]},"packages/localhost-40857/assets/chunk-CC9Q-vWm.js":{"8":[63],"9":[63],"10":[63],"19":[63],"23":[63],"29":[63],"33":[63],"34":[63]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/CodeDiffMessage.vue":{"19":[10],"20":[10],"32":[10],"40":[10],"41":[10]},"packages/@n8n/design-system/src/components/CodeDiff/CodeDiff.vue":{"10":[10],"43":[10],"48":[10],"85":[10],"93":[10],"120":[10],"121":[10],"137":[10],"138":[10]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useCodeDiff.ts":{"39":[10],"41":[10],"62":[10],"66":[10],"72":[10],"85":[10],"131":[10]},"packages/localhost-37003/assets/shield-alt-B7h2cjjC.js":{"8":[19,93]},"packages/cli/src/controllers/mfa.controller.ts":{"22":[90],"33":[90],"68":[90],"76":[90],"119":[90],"160":[90],"204":[90]},"packages/cli/src/mfa/mfa.service.ts":{"17":[90],"27":[90],"35":[90],"36":[90],"39":[90],"45":[90],"60":[90],"68":[90],"80":[90],"83":[90],"91":[90],"95":[90],"100":[90],"107":[90],"120":[90],"127":[90],"136":[90],"145":[90],"155":[90],"165":[90]},"packages/cli/src/mfa/totp.service.ts":{"6":[90],"10":[90],"26":[90],"38":[90]},"packages/frontend/editor-ui/src/features/core/auth/components/MfaSetupModal.vue":{"26":[90],"57":[90],"61":[90],"68":[90],"77":[90],"90":[90],"105":[90],"133":[90],"152":[90],"155":[90],"174":[90],"178":[90],"183":[90],"184":[90],"187":[90],"203":[90],"212":[90],"231":[90],"235":[90],"236":[90],"240":[90],"241":[90],"244":[90],"246":[90],"263":[90]},"packages/frontend/editor-ui/src/features/core/auth/components/PromptMfaCodeModal.vue":{"12":[90],"31":[90],"48":[90],"52":[90],"54":[90],"67":[90],"78":[90]},"packages/frontend/editor-ui/src/features/core/auth/views/MfaView.vue":{"63":[90],"86":[90],"107":[90],"116":[90],"117":[90],"129":[90],"155":[90],"164":[90],"189":[90],"194":[90],"204":[90],"225":[90]},"packages/localhost-34923/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[90]},"packages/localhost-34923/assets/chunk-CC9Q-vWm.js":{"8":[90],"9":[90],"10":[90],"19":[90],"23":[90],"29":[90],"33":[90],"34":[90]},"packages/@n8n/db/src/repositories/test-run.repository.ee.ts":{"17":[93],"21":[93],"44":[93],"52":[93],"56":[93],"61":[93],"70":[93],"81":[93],"88":[93],"96":[93],"100":[93],"115":[93],"128":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/OpenAi.node.ts":{"12":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/binary-data.ts":{"11":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/description.ts":{"3":[93],"20":[93],"38":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/polling.ts":{"4":[93],"34":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/utils.ts":{"17":[93],"27":[93],"39":[93],"50":[93],"58":[93],"66":[93],"88":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/methods/listSearch.ts":{"13":[93],"36":[93],"45":[93],"46":[93],"49":[93],"63":[93],"69":[93],"75":[93],"82":[93],"85":[93],"89":[93],"92":[93],"96":[93],"121":[93],"126":[93],"130":[93],"173":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/methods/loadOptions.ts":{"5":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/transport/index.ts":{"15":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/OpenAiV1.node.ts":{"22":[93],"82":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/create.operation.ts":{"176":[93],"185":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/deleteAssistant.operation.ts":{"18":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/list.operation.ts":{"25":[93],"62":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/message.operation.ts":{"158":[93],"165":[93],"225":[93],"232":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/update.operation.ts":{"120":[93],"126":[93],"132":[93],"207":[93],"213":[93],"214":[93],"217":[93],"223":[93],"224":[93],"228":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/audio/generate.operation.ts":{"134":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/audio/transcribe.operation.ts":{"58":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/audio/translate.operation.ts":{"50":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/descriptions.ts":{"3":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/file/deleteFile.operation.ts":{"51":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/file/list.operation.ts":{"53":[93],"63":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/file/upload.operation.ts":{"57":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/image/analyze.operation.ts":{"131":[93],"158":[93],"172":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/image/generate.operation.ts":{"255":[93],"291":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/router.ts":{"16":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/text/classify.operation.ts":{"53":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/text/message.operation.ts":{"240":[93],"244":[93],"360":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/OpenAiV2.node.ts":{"23":[93],"92":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/audio/generate.operation.ts":{"134":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/audio/transcribe.operation.ts":{"58":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/audio/translate.operation.ts":{"50":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/create.operation.ts":{"82":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/get.operation.ts":{"27":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/remove.operation.ts":{"27":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/update.operation.ts":{"34":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/descriptions.ts":{"3":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/file/deleteFile.operation.ts":{"51":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/file/list.operation.ts":{"62":[93],"72":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/file/upload.operation.ts":{"65":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/image/analyze.operation.ts":{"133":[93],"157":[93],"169":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/image/edit.operation.ts":{"584":[93],"618":[93],"695":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/image/generate.operation.ts":{"73":[93],"118":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/router.ts":{"17":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/text/classify.operation.ts":{"58":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/text/helpers/responses.ts":{"14":[93],"16":[93],"19":[93],"22":[93],"25":[93],"31":[93],"101":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/text/response.operation.ts":{"583":[93],"587":[93],"629":[93],"632":[93],"652":[93],"659":[93],"717":[93],"719":[93],"736":[93]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/video/generate.operation.ts":{"92":[93],"132":[93],"135":[93]},"packages/cli/src/evaluation.ee/test-runs.controller.ee.ts":{"19":[93],"27":[93],"50":[93],"68":[93],"77":[93],"90":[93],"99":[93],"112":[93],"130":[93],"158":[93]},"packages/cli/src/environments.ee/variables/variables.controller.ee.ts":{"19":[85],"22":[85],"32":[85],"50":[85],"60":[85],"80":[85]},"packages/frontend/editor-ui/src/app/components/RedactionMembersModal.vue":{"9":[93],"24":[93],"26":[93],"41":[93]},"packages/frontend/editor-ui/src/app/components/WorkflowSettings/WorkflowSettings.vue":{"72":[93],"214":[93],"221":[93],"224":[93],"227":[93],"228":[93],"229":[93],"230":[93],"233":[93],"238":[93],"248":[93],"252":[93],"254":[93],"258":[93],"263":[93],"278":[93],"282":[93],"286":[93],"287":[93],"295":[93],"314":[93],"330":[93],"346":[93],"380":[93],"382":[93],"387":[93],"391":[93],"402":[93],"416":[93],"441":[93],"471":[93],"495":[93],"519":[93],"542":[93],"565":[93],"592":[93],"648":[93],"836":[93],"994":[93],"1009":[93],"1017":[93],"1020":[93],"1028":[93],"1031":[93],"1035":[93],"1046":[93],"1047":[93],"1051":[93],"1056":[93],"1066":[93],"1068":[93],"1073":[93],"1148":[93],"1152":[93],"1158":[93],"1164":[93],"1166":[93],"1199":[93],"1203":[93],"1208":[93],"1215":[93],"1217":[93],"1228":[93],"1232":[93],"1237":[93],"1244":[93],"1246":[93],"1257":[93],"1261":[93],"1266":[93],"1273":[93],"1275":[93],"1286":[93],"1290":[93],"1295":[93],"1302":[93],"1304":[93],"1315":[93],"1319":[93],"1324":[93],"1331":[93],"1333":[93],"1344":[93],"1347":[93],"1370":[93],"1376":[93],"1384":[93],"1401":[93],"1417":[93],"1419":[93],"1441":[93],"1466":[93],"1472":[93],"1480":[93],"1505":[93],"1519":[93],"1521":[93],"1534":[93],"1538":[93],"1543":[93],"1633":[93],"1638":[93],"1644":[93],"1652":[93],"1654":[93],"1665":[93],"1755":[93]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/composables/useWorkflowEvaluationState.ts":{"25":[93],"26":[93],"51":[93]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/views/EvaluationsRootView.vue":{"44":[93],"91":[93],"101":[93],"118":[93]},"packages/@n8n/imap/src/errors.ts":{"5":[138],"18":[138],"24":[138]},"packages/@n8n/imap/src/helpers/get-message.ts":{"13":[138],"17":[138],"21":[138],"24":[138],"29":[138],"41":[138],"45":[138]},"packages/@n8n/imap/src/imap-simple.ts":{"12":[138],"16":[138],"21":[138],"27":[138],"35":[138],"39":[138],"57":[138],"65":[138],"66":[138],"87":[138],"94":[138],"98":[138],"104":[138],"111":[138],"122":[138],"128":[138],"134":[138],"146":[138],"152":[138],"157":[138],"167":[138],"173":[138],"174":[138],"179":[138],"180":[138],"181":[138],"186":[138],"190":[138],"191":[138],"196":[138],"200":[138],"201":[138]},"packages/@n8n/imap/src/index.ts":{"12":[138],"18":[138],"19":[138],"26":[138],"31":[138],"40":[138],"45":[138],"81":[138]},"packages/@n8n/imap/src/part-data.ts":{"8":[138],"10":[138],"14":[138],"41":[138],"47":[138],"55":[138],"59":[138],"65":[138],"72":[138],"78":[138]},"packages/@n8n/imap/src/uudecode.ts":{"9":[138]},"packages/cli/src/controllers/oauth/oauth1-credential.controller.ts":{"13":[138],"21":[138],"36":[138]},"packages/nodes-base/nodes/EmailReadImap/EmailReadImap.node.ts":{"8":[138]},"packages/nodes-base/nodes/EmailReadImap/v1/EmailReadImapV1.node.ts":{"24":[138],"222":[138],"231":[138],"271":[138],"285":[138],"290":[138],"310":[138],"320":[138],"329":[138],"344":[138],"441":[138],"500":[138],"510":[138],"529":[138],"561":[138],"585":[138],"586":[138],"617":[138],"628":[138]},"packages/nodes-base/nodes/EmailReadImap/v2/EmailReadImapV2.node.ts":{"200":[138],"209":[138],"261":[138],"291":[138],"300":[138],"320":[138],"331":[138],"334":[138],"347":[138],"365":[138],"384":[138],"430":[138],"442":[138],"448":[138],"469":[138],"472":[138],"483":[138],"502":[138],"525":[138]},"packages/nodes-base/nodes/EmailReadImap/v2/utils.ts":{"19":[138],"57":[138],"105":[138],"194":[138]},"packages/nodes-base/nodes/NextCloud/GenericFunctions.ts":{"14":[138]},"packages/nodes-base/nodes/NextCloud/NextCloud.node.ts":{"866":[138],"1068":[138],"1142":[138],"1150":[138],"1177":[138],"1185":[138],"1215":[138],"1223":[138],"1243":[138],"1248":[138],"1256":[138]},"packages/frontend/editor-ui/src/app/components/GoBackButton.vue":{"11":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateDetails.vue":{"21":[138],"32":[138],"34":[138],"49":[138],"59":[138],"62":[138],"79":[138],"86":[138],"89":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/setupTemplate.store.ts":{"39":[138],"56":[138],"60":[138],"80":[138],"98":[138],"115":[138],"128":[138],"149":[138],"176":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/views/SetupWorkflowFromTemplateView.vue":{"22":[138],"25":[138],"26":[138],"28":[138],"49":[138],"57":[138],"79":[138],"89":[138],"109":[138],"135":[138],"143":[138],"151":[138]},"packages/frontend/editor-ui/src/features/workflows/templates/views/TemplatesCollectionView.vue":{"32":[138],"37":[138],"39":[138],"44":[138],"45":[138],"48":[138],"49":[138],"64":[138],"87":[138],"88":[138],"98":[138],"117":[138],"121":[138],"124":[138]},"packages/localhost-43789/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[138]},"packages/localhost-43789/assets/chunk-CC9Q-vWm.js":{"8":[138],"9":[138],"10":[138],"19":[138],"23":[138],"29":[138],"33":[138],"34":[138]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CredentialSelectorModal.vue":{"35":[38],"36":[38],"45":[38],"105":[38],"113":[38],"117":[38],"120":[38],"142":[38],"145":[38]}}} \ No newline at end of file +{"specs":["tests/e2e/ai/ai-2505-pdf-embed.spec.ts","tests/e2e/ai/assistant-basic.spec.ts","tests/e2e/ai/assistant-code-help.spec.ts","tests/e2e/ai/assistant-support-chat.spec.ts","tests/e2e/ai/builder-setup-wizard.spec.ts","tests/e2e/ai/chat-session.spec.ts","tests/e2e/ai/langchain-agents.spec.ts","tests/e2e/ai/langchain-vectorstores.spec.ts","tests/e2e/ai/workflow-builder.spec.ts","tests/e2e/api/binary-data-xss.spec.ts","tests/e2e/api/waiting-endpoint-security.spec.ts","tests/e2e/api/workflow-publication-service.spec.ts","tests/e2e/app-config/security-notifications.spec.ts","tests/e2e/auth/oidc.spec.ts","tests/e2e/building-blocks/canvas-actions.spec.ts","tests/e2e/building-blocks/credential-mismatch.spec.ts","tests/e2e/building-blocks/credentials.spec.ts","tests/e2e/building-blocks/node-details-configuration.spec.ts","tests/e2e/building-blocks/workflow-entry-points.spec.ts","tests/e2e/capabilities/proxy-server.spec.ts","tests/e2e/chat-hub/chat-hub-workflow-agent.spec.ts","tests/e2e/credentials/global.spec.ts","tests/e2e/credentials/oauth.spec.ts","tests/e2e/dynamic-credentials/mcp-trigger-credential-gate.spec.ts","tests/e2e/instance-ai/instance-ai-artifacts.spec.ts","tests/e2e/instance-ai/instance-ai-confirmations.spec.ts","tests/e2e/instance-ai/instance-ai-workflow-execution.spec.ts","tests/e2e/journeys/admin-views-executions-list.spec.ts","tests/e2e/mcp-registry/mcp-registry.spec.ts","tests/e2e/node-creator/vector-stores.spec.ts","tests/e2e/nodes/community-nodes.spec.ts","tests/e2e/nodes/email-send-node.spec.ts","tests/e2e/nodes/form-trigger-node.spec.ts","tests/e2e/nodes/http-request-node.spec.ts","tests/e2e/nodes/kafka-nodes.spec.ts","tests/e2e/nodes/mcp-trigger.spec.ts","tests/e2e/nodes/pdf-node.spec.ts","tests/e2e/nodes/schedule-trigger-node.spec.ts","tests/e2e/nodes/webhook.spec.ts","tests/e2e/projects/folders-advanced.spec.ts","tests/e2e/projects/folders-basic.spec.ts","tests/e2e/projects/projects-move-resources.spec.ts","tests/e2e/projects/projects.spec.ts","tests/e2e/redaction-enforcement/redaction-enforcement.spec.ts","tests/e2e/regression/ADO-4462-template-setup-experiment.spec.ts","tests/e2e/settings/external-secrets/secret-providers-connections-ui.spec.ts","tests/e2e/settings/log-streaming/log-streaming-delivery.spec.ts","tests/e2e/settings/log-streaming/log-streaming-observability.spec.ts","tests/e2e/settings/log-streaming/log-streaming.spec.ts","tests/e2e/sharing/credential-visibility.spec.ts","tests/e2e/workflows/editor/execution/executions-list-infinite-scroll.spec.ts","tests/e2e/workflows/editor/execution/logs.spec.ts","tests/e2e/workflows/editor/execution/partial.spec.ts","tests/e2e/workflows/editor/viewer-permissions.spec.ts","tests/e2e/workflows/editor/workflow-actions/archive.spec.ts","tests/e2e/workflows/list/workflows.spec.ts","tests/e2e/workflows/templates/credentials-setup.spec.ts","tests/e2e/ai/rag-callout.spec.ts","tests/e2e/app-config/versions.spec.ts","tests/e2e/cloud/cloud.spec.ts","tests/e2e/instance-ai/instance-ai-background-lifecycle.spec.ts","tests/e2e/instance-ai/instance-ai-chat-basics.spec.ts","tests/e2e/instance-ai/instance-ai-sidebar.spec.ts","tests/e2e/mcp/mcp-oauth.spec.ts","tests/e2e/sentry/sentry-baseline.spec.ts","tests/e2e/settings/environments/source-control.spec.ts","tests/e2e/settings/personal/two-factor-authentication.spec.ts","tests/e2e/ai/langchain-chains.spec.ts","tests/e2e/api/wait-form-resume.spec.ts","tests/e2e/app-config/demo-reimport.spec.ts","tests/e2e/app-config/demo.spec.ts","tests/e2e/auth/admin-smoke.spec.ts","tests/e2e/auth/authenticated.spec.ts","tests/e2e/auth/signin.spec.ts","tests/e2e/building-blocks/user-service.spec.ts","tests/e2e/capabilities/task-runner.spec.ts","tests/e2e/chat-hub/chat-hub-attachment.spec.ts","tests/e2e/chat-hub/chat-hub-basic.spec.ts","tests/e2e/chat-hub/chat-hub-tools.spec.ts","tests/e2e/credentials/crud.spec.ts","tests/e2e/data-tables/details.spec.ts","tests/e2e/data-tables/tables.spec.ts","tests/e2e/instance-ai/instance-ai-workflow-preview.spec.ts","tests/e2e/node-creator/special-nodes.spec.ts","tests/e2e/node-creator/workflows.spec.ts","tests/e2e/nodes/if-node.spec.ts","tests/e2e/projects/project-settings.spec.ts","tests/e2e/regression/ADO-1338-ndv-missing-input-panel.spec.ts","tests/e2e/regression/ADO-2230-ndv-reset-data-pagination.spec.ts","tests/e2e/regression/ADO-2372-prevent-clipping-params.spec.ts","tests/e2e/regression/ADO-2929-can-load-old-switch-node-workflows.spec.ts","tests/e2e/regression/AI-1401-sub-nodes-input-panel.spec.ts","tests/e2e/regression/AI-716-correctly-set-up-agent-model-shows-error.spec.ts","tests/e2e/regression/AI-812-partial-execs-broken-when-using-chat-trigger.spec.ts","tests/e2e/regression/CAT-726-canvas-node-connectors-not-rendered-when-nodes-inserted.spec.ts","tests/e2e/regression/PAY-4367-node-shifting-cyclic.spec.ts","tests/e2e/regression/SUG-121-fields-reset-after-closing-ndv.spec.ts","tests/e2e/settings/community-nodes/community-nodes.spec.ts","tests/e2e/settings/environments/variables.spec.ts","tests/e2e/settings/log-streaming/log-streaming-ui-e2e.spec.ts","tests/e2e/settings/personal/personal.spec.ts","tests/e2e/settings/users/users.spec.ts","tests/e2e/settings/workers/workers.spec.ts","tests/e2e/sharing/access-control.spec.ts","tests/e2e/sharing/credential-sharing.spec.ts","tests/e2e/sharing/workflow-sharing.spec.ts","tests/e2e/workflows/checklist/production-checklist.spec.ts","tests/e2e/workflows/demo-diff.spec.ts","tests/e2e/workflows/demo-executable-chat-trigger.spec.ts","tests/e2e/workflows/editor/canvas/actions.spec.ts","tests/e2e/workflows/editor/canvas/canvas-nodes.spec.ts","tests/e2e/workflows/editor/canvas/canvas-zoom.spec.ts","tests/e2e/workflows/editor/canvas/focus-panel.spec.ts","tests/e2e/workflows/editor/canvas/node-groups.spec.ts","tests/e2e/workflows/editor/canvas/stickies.spec.ts","tests/e2e/workflows/editor/canvas/undo-redo.spec.ts","tests/e2e/workflows/editor/code/code-node.spec.ts","tests/e2e/workflows/editor/code/editors.spec.ts","tests/e2e/workflows/editor/editor-after-route-changes.spec.ts","tests/e2e/workflows/editor/execution/debug.spec.ts","tests/e2e/workflows/editor/execution/execution.spec.ts","tests/e2e/workflows/editor/execution/inject-previous.spec.ts","tests/e2e/workflows/editor/expressions/inline.spec.ts","tests/e2e/workflows/editor/expressions/modal.spec.ts","tests/e2e/workflows/editor/expressions/transformation.spec.ts","tests/e2e/workflows/editor/ndv/io-filter.spec.ts","tests/e2e/workflows/editor/ndv/ndv-core.spec.ts","tests/e2e/workflows/editor/ndv/ndv-data-display.spec.ts","tests/e2e/workflows/editor/ndv/ndv-floating-nodes.spec.ts","tests/e2e/workflows/editor/ndv/ndv-parameters.spec.ts","tests/e2e/workflows/editor/ndv/paired-item.spec.ts","tests/e2e/workflows/editor/ndv/pinning.spec.ts","tests/e2e/workflows/editor/ndv/resource-locator.spec.ts","tests/e2e/workflows/editor/ndv/resource-mapper.spec.ts","tests/e2e/workflows/editor/ndv/schema-preview.spec.ts","tests/e2e/workflows/editor/routing.spec.ts","tests/e2e/workflows/editor/subworkflows/debugging.spec.ts","tests/e2e/workflows/editor/subworkflows/extraction.spec.ts","tests/e2e/workflows/editor/tags.spec.ts","tests/e2e/workflows/editor/workflow-actions/publish.spec.ts","tests/e2e/workflows/executions/filter.spec.ts","tests/e2e/workflows/executions/list.spec.ts","tests/e2e/workflows/executions/preview-isolation.spec.ts","tests/e2e/workflows/list/import.spec.ts","tests/e2e/workflows/templates/templates.spec.ts","tests/e2e/api/form-endpoint-isolation.spec.ts","tests/e2e/api/webhook-external.spec.ts","tests/e2e/dynamic-credentials/execution-status.spec.ts","tests/e2e/mcp/mcp-service.spec.ts","tests/e2e/api/webhook-isolation.spec.ts","tests/e2e/dynamic-credentials/external-user-trigger.spec.ts","tests/e2e/dynamic-credentials/resolver-deletion.spec.ts","tests/e2e/workflows/editor/execution/subworkflow-stop.spec.ts","tests/e2e/api/discovery.spec.ts","tests/e2e/app-config/env-feature-flags.spec.ts","tests/e2e/auth/password-reset.spec.ts","tests/e2e/instance-ai/instance-ai-multimain.spec.ts","tests/e2e/settings/external-secrets/aws-secrets-manager.spec.ts","tests/e2e/credentials/api-operations.spec.ts","tests/e2e/workflows/editor/subworkflows/subworkflow-version-resolution.spec.ts","tests/e2e/nodes/n8n-trigger.spec.ts","tests/e2e/nodes/code-node-api.spec.ts"],"files":{"packages/@n8n/api-types/src/dto/index.ts":{"1":"b://///////wEAAAAAAAAAAAAAAAAA","3":"b://///////wEAAAAAAAAAAAAAAAAA","4":"b://///////wEAAAAAAAAAAAAAAAAA","12":"b://///////wEAAAAAAAAAAAAAAAAA","16":"b://///////wEAAAAAAAAAAAAAAAAA","36":"b://///////wEAAAAAAAAAAAAAAAAA","37":"b://///////wEAAAAAAAAAAAAAAAAA","40":"b://///////wEAAAAAAAAAAAAAAAAA","44":"b://///////wEAAAAAAAAAAAAAAAAA","51":"b://///////wEAAAAAAAAAAAAAAAAA","53":"b://///////wEAAAAAAAAAAAAAAAAA","55":"b://///////wEAAAAAAAAAAAAAAAAA","59":"b://///////wEAAAAAAAAAAAAAAAAA","61":"b://///////wEAAAAAAAAAAAAAAAAA","64":"b://///////wEAAAAAAAAAAAAAAAAA","66":"b://///////wEAAAAAAAAAAAAAAAAA","72":"b://///////wEAAAAAAAAAAAAAAAAA","73":"b://///////wEAAAAAAAAAAAAAAAAA","83":"b://///////wEAAAAAAAAAAAAAAAAA","86":"b://///////wEAAAAAAAAAAAAAAAAA","92":"b://///////wEAAAAAAAAAAAAAAAAA","101":"b://///////wEAAAAAAAAAAAAAAAAA","102":"b://///////wEAAAAAAAAAAAAAAAAA","104":"b://///////wEAAAAAAAAAAAAAAAAA","112":"b://///////wEAAAAAAAAAAAAAAAAA","113":"b://///////wEAAAAAAAAAAAAAAAAA","114":"b://///////wEAAAAAAAAAAAAAAAAA","115":"b://///////wEAAAAAAAAAAAAAAAAA","116":"b://///////wEAAAAAAAAAAAAAAAAA","118":"b://///////wEAAAAAAAAAAAAAAAAA","120":"b://///////wEAAAAAAAAAAAAAAAAA","136":"b://///////wEAAAAAAAAAAAAAAAAA","142":"b://///////wEAAAAAAAAAAAAAAAAA","149":"b://///////wEAAAAAAAAAAAAAAAAA","150":"b://///////wEAAAAAAAAAAAAAAAAA","159":"b://///////wEAAAAAAAAAAAAAAAAA","160":"b://///////wEAAAAAAAAAAAAAAAAA","189":"b://///////wEAAAAAAAAAAAAAAAAA","194":"b://///////wEAAAAAAAAAAAAAAAAA","196":"b://///////wEAAAAAAAAAAAAAAAAA","206":"b://///////wEAAAAAAAAAAAAAAAAA","209":"b://///////wEAAAAAAAAAAAAAAAAA","210":"b://///////wEAAAAAAAAAAAAAAAAA","216":"b://///////wEAAAAAAAAAAAAAAAAA","244":"b://///////wEAAAAAAAAAAAAAAAAA","247":"b://///////wEAAAAAAAAAAAAAAAAA","248":"b://///////wEAAAAAAAAAAAAAAAAA","250":"b://///////wEAAAAAAAAAAAAAAAAA","251":"b://///////wEAAAAAAAAAAAAAAAAA","260":"b://///////wEAAAAAAAAAAAAAAAAA","261":"b://///////wEAAAAAAAAAAAAAAAAA","271":"b://///////wEAAAAAAAAAAAAAAAAA","272":"b://///////wEAAAAAAAAAAAAAAAAA"},"packages/@n8n/api-types/src/dto/pagination/pagination.dto.ts":{"10":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","11":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","14":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","18":"b://V///d/////////////////AQAA","22":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","23":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","27":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","35":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","47":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","48":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","51":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","55":"b://V///d/////////////////AQAA","59":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","60":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","63":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA","66":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA"},"packages/@n8n/api-types/src/dto/user/users-list-filter.dto.ts":{"51":"b:7+U6vWQ+LP8HAAAAAAAAAAAAAAAA"},"packages/@n8n/api-types/src/dto/workflows/base-workflow.dto.ts":{"25":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","30":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","41":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","53":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","54":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","68":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","80":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","89":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","134":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA","137":"b:78++9r7eLAEQAAAAAAAAAIBwHgAA"},"packages/@n8n/api-types/src/index.ts":{"92":"b:7+8+/3/+LP8HcQMAoAIAEAAA+gEA","112":"b:7+8+/3/+LP8HcQMAoAIAEAAA+gEA","120":"b:7+8+/3/+LP8HcQMAoAIAEAAA+gEA","245":"b:7+8+/3/+LP8HcQMAoAIAEAAA+gEA","532":"b:7+8+/3/+LP8HcQMAoAIAEAAA+gEA"},"packages/@n8n/api-types/src/schemas/boolean-from-string.ts":{"3":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA"},"packages/@n8n/api-types/src/zod-class.ts":{"32":"b://9///f/////////////////Cz4A","37":"b://V/9/d//33/////////////AQAA","39":"b://9/HYT/7v8ncAAAAAAAAAAACj4A","44":"b://9/HYT/7v8ncAAAAAAAAAAACj4A","48":"b://9/HYT/7v8ncAAAAAAAAAAACj4A","52":"b://9/HYT/7v8ncAAAAAAAAAAACj4A"},"packages/@n8n/backend-common/src/index.ts":{"5":"b:7748hf9vbAUHcQAAAAAAEAAAOQEA","6":"b:7748hf9vbAUHcQAAAAAAEAAAOQEA","7":"b:7748hf9vbAUHcQAAAAAAEAAAOQEA","9":"b:7748hf9vbAUHcQAAAAAAEAAAOQEA","20":"b:7748hf9vbAUHcQAAAAAAEAAAOQEA"},"packages/@n8n/backend-common/src/license-state.ts":{"9":"b://9//e//7v+HcwAArAIAABAAmkAA","15":"b://9//e//7v+HcwAArAIAABAAmkAA","18":"b://9//e//7v+HcwAArAIAABAAmkAA","22":"b://9//e//7v+HcwAArAIAABAAmkAA","33":"b://9//e//7v+HcwAArAIAABAAmkAA","47":"b://9//e//7v+HcwAArAIAABAAmkAA","57":"b://9//e//7v+HcwAArAIAABAAmkAA","61":"b://9//e//7v+HcwAArAIAABAAmkAA","65":"b://9//e//7v+HcwAArAIAABAAmkAA","69":"b://9//e//7v+HcwAArAIAABAAmkAA","73":"b://9//e//7v+HcwAArAIAABAAmkAA","77":"b://9//e//7v+HcwAArAIAABAAmkAA","81":"b://9//e//7v+HcwAArAIAABAAmkAA","85":"b://9//e//7v+HcwAArAIAABAAmkAA","89":"b://9//e//7v+HcwAArAIAABAAmkAA","93":"b://9//e//7v+HcwAArAIAABAAmkAA","97":"b://9//e//7v+HcwAArAIAABAAmkAA","101":"b://9//e//7v+HcwAArAIAABAAmkAA","105":"b://9//e//7v+HcwAArAIAABAAmkAA","109":"b://9//e//7v+HcwAArAIAABAAmkAA","113":"b://9//e//7v+HcwAArAIAABAAmkAA","117":"b://9//e//7v+HcwAArAIAABAAmkAA","121":"b://9//e//7v+HcwAArAIAABAAmkAA","125":"b://9//e//7v+HcwAArAIAABAAmkAA","129":"b://9//e//7v+HcwAArAIAABAAmkAA","133":"b://9//e//7v+HcwAArAIAABAAmkAA","137":"b://9//e//7v+HcwAArAIAABAAmkAA","141":"b://9//e//7v+HcwAArAIAABAAmkAA","145":"b://9//e//7v+HcwAArAIAABAAmkAA","149":"b://9//e//7v+HcwAArAIAABAAmkAA","153":"b://9//e//7v+HcwAArAIAABAAmkAA","157":"b://9//e//7v+HcwAArAIAABAAmkAA","161":"b://9//e//7v+HcwAArAIAABAAmkAA","165":"b://9//e//7v+HcwAArAIAABAAmkAA","169":"b://9//e//7v+HcwAArAIAABAAmkAA","173":"b://9//e//7v+HcwAArAIAABAAmkAA","177":"b://9//e//7v+HcwAArAIAABAAmkAA","181":"b://9//e//7v+HcwAArAIAABAAmkAA","185":"b://9//e//7v+HcwAArAIAABAAmkAA","189":"b://9//e//7v+HcwAArAIAABAAmkAA","193":"b://9//e//7v+HcwAArAIAABAAmkAA","197":"b://9//e//7v+HcwAArAIAABAAmkAA","201":"b://9//e//7v+HcwAArAIAABAAmkAA","205":"b://9//e//7v+HcwAArAIAABAAmkAA","209":"b://9//e//7v+HcwAArAIAABAAmkAA","213":"b://9//e//7v+HcwAArAIAABAAmkAA","221":"b://9//e//7v+HcwAArAIAABAAmkAA","225":"b://9//e//7v+HcwAArAIAABAAmkAA","229":"b://9//e//7v+HcwAArAIAABAAmkAA","233":"b://9//e//7v+HcwAArAIAABAAmkAA","237":"b://9//e//7v+HcwAArAIAABAAmkAA","241":"b://9//e//7v+HcwAArAIAABAAmkAA","245":"b://9//e//7v+HcwAArAIAABAAmkAA","249":"b://9//e//7v+HcwAArAIAABAAmkAA","253":"b://9//e//7v+HcwAArAIAABAAmkAA","257":"b://9//e//7v+HcwAArAIAABAAmkAA","262":"b://9//e//7v+HcwAArAIAABAAmkAA","275":"b://9//e//7v+HcwAArAIAABAAmkAA"},"packages/@n8n/backend-common/src/utils/parse-flatted.ts":{"15":"b:7w48hWcIDAAAcAAAAAAAEAAAEAEA"},"packages/@n8n/backend-network/src/http/axios/config.ts":{"16":"b:78UqlXZcJGsgAAAAAAAAAAAACAAA","27":"b:78UqlXZcJGsgAAAAAAAAAAAACAAA","38":"b:78UqlXZcJGsgAAAAAAAAAAAACAAA","52":"b:78UqlXZcJGsgAAAAAAAAAAAACAAA","53":"b:78UqlXZcJGsgAAAAAAAAAAAACAAA"},"packages/@n8n/backend-network/src/http/axios/invoke.ts":{"6":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA"},"packages/@n8n/backend-network/src/http/axios/redirect.ts":{"49":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","67":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","72":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","80":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","95":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","107":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","113":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","119":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","135":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","151":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","183":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","206":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","219":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","227":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","234":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","238":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA"},"packages/@n8n/backend-network/src/http/axios/request.ts":{"27":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","77":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","128":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","132":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","144":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","158":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","182":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA"},"packages/@n8n/backend-network/src/http/axios/user-agent.ts":{"11":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","28":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","40":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA","54":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA"},"packages/@n8n/backend-network/src/http/axios/utils.ts":{"20":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","29":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","38":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","50":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","57":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","61":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","81":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","100":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","108":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","150":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","157":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","162":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","165":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","168":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","201":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","211":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","214":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","218":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","234":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","250":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","270":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","277":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","287":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","295":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","302":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","303":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","318":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","349":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","360":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","383":"b:78UqkHZcNAsgAAAAAACAAAIASAAA","398":"b:78UqkHZcNAsgAAAAAACAAAIASAAA"},"packages/@n8n/backend-network/src/http/client-default-headers.ts":{"18":"b:78UqkHZcJAsgAAAAAAAAAAAACAAA"},"packages/@n8n/backend-network/src/http/env-proxy-http-agent.ts":{"23":"b:L8QqlXZcNGsgAAAAAAAAAAAACCAA","28":"b:L8QqlXZcNGsgAAAAAAAAAAAACCAA","32":"b:L8QqlXZcNGsgAAAAAAAAAAAACCAA"},"packages/@n8n/backend-network/src/http/env-proxy-https-agent.ts":{"17":"b:78UqkHYcJAsgAAAAAAAAAAAACCAA","22":"b:78UqkHYcJAsgAAAAAAAAAAAACCAA","26":"b:78UqkHYcJAsgAAAAAAAAAAAACCAA"},"packages/@n8n/backend-network/src/http/env-proxy-router.ts":{"22":"b:78UqlXZcJGsgAAAAAAAAAAAACCAA","31":"b:78UqlXZcJGsgAAAAAAAAAAAACCAA","51":"b:78UqlXZcJGsgAAAAAAAAAAAACCAA","64":"b:78UqlXZcJGsgAAAAAAAAAAAACCAA"},"packages/@n8n/backend-network/src/http/index.ts":{"9":"b:7048hS/IDAAAcAAAAAAAUAIAcgEA","10":"b:7048hS/IDAAAcAAAAAAAUAIAcgEA","11":"b:7048hS/IDAAAcAAAAAAAUAIAcgEA","12":"b:7048hS/IDAAAcAAAAAAAUAIAcgEA"},"packages/@n8n/backend-network/src/http/node-agents.ts":{"23":"b:78UqkHZcJAsgAAAAAAAAAAAACCAA","67":"b:78UqkHZcJAsgAAAAAAAAAAAACCAA","122":"b:78UqkHZcJAsgAAAAAAAAAAAACCAA","137":"b:78UqkHZcJAsgAAAAAAAAAAAACCAA","142":"b:78UqkHZcJAsgAAAAAAAAAAAACCAA"},"packages/@n8n/backend-network/src/http/outbound-http.ts":{"161":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","170":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","174":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","186":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","197":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","210":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","220":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","223":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","224":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","225":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","231":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA","233":"b:7+UqlXZcNGsgAAAAAACAAAIASCAA"},"packages/@n8n/backend-network/src/http/parse-incoming-message.ts":{"3":[68,10,19,32],"5":[68,10,19,32],"55":[68,10,19,32],"77":[68,10,19,32],"108":[68,10,19,32]},"packages/@n8n/config/src/index.ts":{"58":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","60":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","61":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","63":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","64":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","69":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","71":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","81":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","83":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","84":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","85":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","89":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","90":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA","101":"b:78W6kH5cLAsg+AAgAAAAAAAACAAA"},"packages/@n8n/db/src/entities/types-db.ts":{"326":"b:7+86lSTeLP+HcAAAAAAAAAAACiIA","338":"b:7+86lSTeLP+HcAAAAAAAAAAACiIA","476":"b:7+86lSTeLP+HcAAAAAAAAAAACiIA"},"packages/@n8n/db/src/entities/user.ts":{"60":"b:7+Uq5XYcLAEAAAAAAAAAAAAAAAAA","84":"b:7+Uq5XYcLAEAAAAAAAAAAAAAAAAA","115":"b:7+Uq5XYcLAEAAAAAAAAAAAAAAAAA","117":"b:7+Uq5XYcLAEAAAAAAAAAAAAAAAAA","124":"b:7+Uq5XYcLAEAAAAAAAAAAAAAAAAA","129":"b:7+Uq5XYcLAEAAAAAAAAAAAAAAAAA","139":"b:7+Uq5XYcLAEAAAAAAAAAAAAAAAAA"},"packages/@n8n/db/src/entities/webhook-entity.ts":{"33":"b:AAwUAAiIAAAQAAAAAAAAAAAodoEA","39":"b:AAwUAAiIAAAQAAAAAAAAAAAodoEA","43":"b:AAwUAAiIAAAQAAAAAAAAAAAodoEA","44":"b:AAwUAAiIAAAQAAAAAAAAAAAodoEA","50":"b:AAwUAAiIAAAQAAAAAAAAAAAodoEA","51":"b:AAwUAAiIAAAQAAAAAAAAAAAodoEA","54":"b:AAwUAAiIAAAQAAAAAAAAAAAodoEA"},"packages/@n8n/db/src/index.ts":{"14":"b:7/48h+furOVnc0MAxAAAEAIIe8EA","16":"b:7/48h+furOVnc0MAxAAAEAIIe8EA","19":"b:7/48h+furOVnc0MAxAAAEAIIe8EA","20":"b:7/48h+furOVnc0MAxAAAEAIIe8EA","21":"b:7/48h+furOVnc0MAxAAAEAIIe8EA","36":"b:7/48h+furOVnc0MAxAAAEAIIe8EA","46":"b:7/48h+furOVnc0MAxAAAEAIIe8EA","48":"b:7/48h+furOVnc0MAxAAAEAIIe8EA"},"packages/@n8n/db/src/repositories/credentials.repository.ts":{"16":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","20":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","27":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","45":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","63":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","134":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","174":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","191":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","220":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","245":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","261":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","272":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","284":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","292":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","304":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","344":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","422":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","424":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","428":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA","446":"b:/+d/9+f/vg8H8QAQoAMAAAAAAAAA"},"packages/@n8n/db/src/repositories/execution.repository.ts":{"63":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","98":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","141":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","145":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","157":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","189":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","209":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","214":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","221":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","228":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","234":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","240":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","246":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","253":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","284":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","347":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","353":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","376":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","379":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","408":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","432":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","459":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","499":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","510":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","511":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","518":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","524":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","527":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","573":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","582":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","600":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","607":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","611":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","635":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","650":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","660":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","674":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","692":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","703":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","709":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","722":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","760":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","801":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","817":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","821":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","848":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","884":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","888":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","908":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","928":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1047":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1049":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1057":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1089":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1097":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1100":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1103":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1109":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1117":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1124":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1132":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB","1149":"b:7w48hy/IDAAQcAAAAICAUQBQdoEB"},"packages/@n8n/db/src/repositories/index.ts":{"3":"b:78865S7eLAEAAAAAAAAAAAAACgAA","6":"b:78865S7eLAEAAAAAAAAAAAAACgAA","7":"b:78865S7eLAEAAAAAAAAAAAAACgAA","8":"b:78865S7eLAEAAAAAAAAAAAAACgAA","21":"b:78865S7eLAEAAAAAAAAAAAAACgAA","23":"b:78865S7eLAEAAAAAAAAAAAAACgAA","30":"b:78865S7eLAEAAAAAAAAAAAAACgAA","32":"b:78865S7eLAEAAAAAAAAAAAAACgAA","36":"b:78865S7eLAEAAAAAAAAAAAAACgAA","48":"b:78865S7eLAEAAAAAAAAAAAAACgAA","50":"b:78865S7eLAEAAAAAAAAAAAAACgAA","53":"b:78865S7eLAEAAAAAAAAAAAAACgAA","54":"b:78865S7eLAEAAAAAAAAAAAAACgAA","56":"b:78865S7eLAEAAAAAAAAAAAAACgAA","58":"b:78865S7eLAEAAAAAAAAAAAAACgAA","73":"b:78865S7eLAEAAAAAAAAAAAAACgAA","74":"b:78865S7eLAEAAAAAAAAAAAAACgAA"},"packages/@n8n/db/src/repositories/project-relation.repository.ts":{"9":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","13":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","27":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","35":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","38":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","43":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","49":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","56":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","62":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","70":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","76":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB","79":"b:7y48jy/MLAAQcQAAoIKAEQBAdoEB"},"packages/@n8n/db/src/repositories/project.repository.ts":{"9":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","13":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","25":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","36":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","46":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","70":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","85":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","102":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","112":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","124":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","140":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","149":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","165":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","178":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","192":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","202":"b:7/86/27+rv+HcEIAiAIAAAAACgAA","209":"b:7/86/27+rv+HcEIAiAIAAAAACgAA"},"packages/@n8n/db/src/repositories/role.repository.ts":{"9":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","13":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","18":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","36":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","52":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","63":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","72":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","80":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","106":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","109":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","112":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","126":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","129":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","149":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","178":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","185":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","192":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","199":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","232":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA","236":"b:7+c6nWT+LP+HdAAAqAAAAAAAgAIA"},"packages/@n8n/db/src/repositories/shared-workflow.repository.ts":{"21":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","25":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","32":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","35":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","45":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","66":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","76":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","82":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","94":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","106":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","118":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","121":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","129":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","138":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","147":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","156":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","161":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","174":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB","212":"b:7/8+z67f7AU3IQEAIIOAQSJAXoEB"},"packages/@n8n/db/src/repositories/user.repository.ts":{"11":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","15":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","27":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","51":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","55":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","59":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","63":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","70":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","74":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","85":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","92":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","103":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","110":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","114":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","158":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","179":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","192":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","200":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","205":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","264":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","290":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","309":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","331":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA","342":"b:/+d+/fc+Pv8XdAAAoAIAAAAAAAoA"},"packages/@n8n/db/src/repositories/workflow-dependency.repository.ts":{"15":"b:78865S7e7AEAAAAAAAAAAAAACgAA","21":"b:78865S7e7AEAAAAAAAAAAAAACgAA","40":"b:78865S7e7AEAAAAAAAAAAAAACgAA","53":"b:78865S7e7AEAAAAAAAAAAAAACgAA","57":"b:78865S7e7AEAAAAAAAAAAAAACgAA","62":"b:78865S7e7AEAAAAAAAAAAAAACgAA","95":"b:78865S7e7AEAAAAAAAAAAAAACgAA","120":"b:78865S7e7AEAAAAAAAAAAAAACgAA","121":"b:78865S7e7AEAAAAAAAAAAAAACgAA","132":"b:78865S7e7AEAAAAAAAAAAAAACgAA","158":"b:78865S7e7AEAAAAAAAAAAAAACgAA"},"packages/@n8n/db/src/repositories/workflow-publish-history.repository.ts":{"9":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","13":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","31":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","42":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB"},"packages/@n8n/db/src/repositories/workflow-statistics.repository.ts":{"43":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","50":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","83":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","126":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","131":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","144":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","197":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","202":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA","212":"b:7w48hS/IHAAAAAAAAAAAEAAgdoEA"},"packages/@n8n/db/src/repositories/workflow-tag-mapping.repository.ts":{"8":"b:XoQoAHMEmAAQgAAAAAAAEAAAAAAA","12":"b:XoQoAHMEmAAQgAAAAAAAEAAAAAAA","13":"b:XoQoAHMEmAAQgAAAAAAAEAAAAAAA","16":"b:XoQoAHMEmAAQgAAAAAAAEAAAAAAA"},"packages/@n8n/db/src/repositories/workflow.repository.ts":{"58":"b:///+n//f/A83c0wCggYAUAAi14EB","68":"b:///+n//f/A83c0wCggYAUAAi14EB","78":"b:///+n//f/A83c0wCggYAUAAi14EB","84":"b:///+n//f/A83c0wCggYAUAAi14EB","87":"b:///+n//f/A83c0wCggYAUAAi14EB","94":"b:///+n//f/A83c0wCggYAUAAi14EB","97":"b:///+n//f/A83c0wCggYAUAAi14EB","103":"b:///+n//f/A83c0wCggYAUAAi14EB","109":"b:///+n//f/A83c0wCggYAUAAi14EB","119":"b:///+n//f/A83c0wCggYAUAAi14EB","134":"b:///+n//f/A83c0wCggYAUAAi14EB","145":"b:///+n//f/A83c0wCggYAUAAi14EB","151":"b:///+n//f/A83c0wCggYAUAAi14EB","154":"b:///+n//f/A83c0wCggYAUAAi14EB","170":"b:///+n//f/A83c0wCggYAUAAi14EB","179":"b:///+n//f/A83c0wCggYAUAAi14EB","186":"b:///+n//f/A83c0wCggYAUAAi14EB","195":"b:///+n//f/A83c0wCggYAUAAi14EB","202":"b:///+n//f/A83c0wCggYAUAAi14EB","216":"b:///+n//f/A83c0wCggYAUAAi14EB","229":"b:///+n//f/A83c0wCggYAUAAi14EB","236":"b:///+n//f/A83c0wCggYAUAAi14EB","242":"b:///+n//f/A83c0wCggYAUAAi14EB","248":"b:///+n//f/A83c0wCggYAUAAi14EB","258":"b:///+n//f/A83c0wCggYAUAAi14EB","347":"b:///+n//f/A83c0wCggYAUAAi14EB","371":"b:///+n//f/A83c0wCggYAUAAi14EB","393":"b:///+n//f/A83c0wCggYAUAAi14EB","419":"b:///+n//f/A83c0wCggYAUAAi14EB","430":"b:///+n//f/A83c0wCggYAUAAi14EB","431":"b:///+n//f/A83c0wCggYAUAAi14EB","434":"b:///+n//f/A83c0wCggYAUAAi14EB","456":"b:///+n//f/A83c0wCggYAUAAi14EB","500":"b:///+n//f/A83c0wCggYAUAAi14EB","558":"b:///+n//f/A83c0wCggYAUAAi14EB","592":"b:///+n//f/A83c0wCggYAUAAi14EB","622":"b:///+n//f/A83c0wCggYAUAAi14EB","701":"b:///+n//f/A83c0wCggYAUAAi14EB","712":"b:///+n//f/A83c0wCggYAUAAi14EB","717":"b:///+n//f/A83c0wCggYAUAAi14EB","718":"b:///+n//f/A83c0wCggYAUAAi14EB","721":"b:///+n//f/A83c0wCggYAUAAi14EB","723":"b:///+n//f/A83c0wCggYAUAAi14EB","724":"b:///+n//f/A83c0wCggYAUAAi14EB","727":"b:///+n//f/A83c0wCggYAUAAi14EB","742":"b:///+n//f/A83c0wCggYAUAAi14EB","749":"b:///+n//f/A83c0wCggYAUAAi14EB","750":"b:///+n//f/A83c0wCggYAUAAi14EB","752":"b:///+n//f/A83c0wCggYAUAAi14EB","761":"b:///+n//f/A83c0wCggYAUAAi14EB","775":"b:///+n//f/A83c0wCggYAUAAi14EB","794":"b:///+n//f/A83c0wCggYAUAAi14EB","825":"b:///+n//f/A83c0wCggYAUAAi14EB","895":"b:///+n//f/A83c0wCggYAUAAi14EB","918":"b:///+n//f/A83c0wCggYAUAAi14EB","957":"b:///+n//f/A83c0wCggYAUAAi14EB","964":"b:///+n//f/A83c0wCggYAUAAi14EB","965":"b:///+n//f/A83c0wCggYAUAAi14EB","972":"b:///+n//f/A83c0wCggYAUAAi14EB","988":"b:///+n//f/A83c0wCggYAUAAi14EB","1001":"b:///+n//f/A83c0wCggYAUAAi14EB","1011":"b:///+n//f/A83c0wCggYAUAAi14EB","1025":"b:///+n//f/A83c0wCggYAUAAi14EB","1042":"b:///+n//f/A83c0wCggYAUAAi14EB","1054":"b:///+n//f/A83c0wCggYAUAAi14EB","1062":"b:///+n//f/A83c0wCggYAUAAi14EB","1085":"b:///+n//f/A83c0wCggYAUAAi14EB","1093":"b:///+n//f/A83c0wCggYAUAAi14EB","1099":"b:///+n//f/A83c0wCggYAUAAi14EB","1110":"b:///+n//f/A83c0wCggYAUAAi14EB","1116":"b:///+n//f/A83c0wCggYAUAAi14EB","1121":"b:///+n//f/A83c0wCggYAUAAi14EB","1132":"b:///+n//f/A83c0wCggYAUAAi14EB","1144":"b:///+n//f/A83c0wCggYAUAAi14EB","1165":"b:///+n//f/A83c0wCggYAUAAi14EB","1178":"b:///+n//f/A83c0wCggYAUAAi14EB","1187":"b:///+n//f/A83c0wCggYAUAAi14EB","1208":"b:///+n//f/A83c0wCggYAUAAi14EB","1219":"b:///+n//f/A83c0wCggYAUAAi14EB","1232":"b:///+n//f/A83c0wCggYAUAAi14EB","1242":"b:///+n//f/A83c0wCggYAUAAi14EB","1244":"b:///+n//f/A83c0wCggYAUAAi14EB","1267":"b:///+n//f/A83c0wCggYAUAAi14EB","1294":"b:///+n//f/A83c0wCggYAUAAi14EB","1298":"b:///+n//f/A83c0wCggYAUAAi14EB","1308":"b:///+n//f/A83c0wCggYAUAAi14EB","1340":"b:///+n//f/A83c0wCggYAUAAi14EB","1348":"b:///+n//f/A83c0wCggYAUAAi14EB","1354":"b:///+n//f/A83c0wCggYAUAAi14EB","1364":"b:///+n//f/A83c0wCggYAUAAi14EB","1369":"b:///+n//f/A83c0wCggYAUAAi14EB","1385":"b:///+n//f/A83c0wCggYAUAAi14EB","1394":"b:///+n//f/A83c0wCggYAUAAi14EB","1401":"b:///+n//f/A83c0wCggYAUAAi14EB","1408":"b:///+n//f/A83c0wCggYAUAAi14EB","1415":"b:///+n//f/A83c0wCggYAUAAi14EB","1425":"b:///+n//f/A83c0wCggYAUAAi14EB","1440":"b:///+n//f/A83c0wCggYAUAAi14EB","1474":"b:///+n//f/A83c0wCggYAUAAi14EB","1481":"b:///+n//f/A83c0wCggYAUAAi14EB","1485":"b:///+n//f/A83c0wCggYAUAAi14EB","1500":"b:///+n//f/A83c0wCggYAUAAi14EB","1507":"b:///+n//f/A83c0wCggYAUAAi14EB","1540":"b:///+n//f/A83c0wCggYAUAAi14EB","1556":"b:///+n//f/A83c0wCggYAUAAi14EB","1592":"b:///+n//f/A83c0wCggYAUAAi14EB","1607":"b:///+n//f/A83c0wCggYAUAAi14EB","1643":"b:///+n//f/A83c0wCggYAUAAi14EB"},"packages/@n8n/db/src/subscribers/user-subscriber.ts":{"12":"b:QAwACASICAAEBAAgMAAAAAADJoIB","15":"b:QAwACASICAAEBAAgMAAAAAADJoIB","19":"b:QAwACASICAAEBAAgMAAAAAADJoIB","24":"b:QAwACASICAAEBAAgMAAAAAADJoIB"},"packages/@n8n/db/src/utils/transformers.ts":{"7":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","8":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","15":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","16":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","23":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","24":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","32":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","34":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","44":"b:788+5S/eLAEAcAAAAAAAEAAAegEA","45":"b:788+5S/eLAEAcAAAAAAAEAAAegEA"},"packages/@n8n/decorators/src/execution-lifecycle/lifecycle-metadata.ts":{"82":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","85":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","89":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/@n8n/decorators/src/redactable.ts":{"14":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","21":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","46":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","47":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","53":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","54":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/@n8n/permissions/src/index.ts":{"20":"b:7+869S7+LP+ncAAAAAAAAAAACj4A","21":"b:7+869S7+LP+ncAAAAAAAAAAACj4A","25":"b:7+869S7+LP+ncAAAAAAAAAAACj4A","27":"b:7+869S7+LP+ncAAAAAAAAAAACj4A"},"packages/@n8n/permissions/src/roles/all-roles.ts":{"58":"b://V///d/////////////////AQAA","62":"b://V///d/////////////////AQAA","83":"b:7+U6nWR+DP+HcAAACAAAAAAAAAAA"},"packages/@n8n/permissions/src/utilities/combine-scopes.ee.ts":{"16":"b://9/9///////////////////CyIA","18":"b://9/9///////////////////CyIA","23":"b:7+869S7+LP8ncAAAAAAAAAAACiIA","26":"b:7+869S7+LP8ncAAAAAAAAAAACiIA"},"packages/@n8n/permissions/src/utilities/get-global-scopes.ee.ts":{"8":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","9":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/@n8n/permissions/src/utilities/get-role-scopes.ee.ts":{"5":"b://9/9///////////////////CyIA","16":"b://9/9///////////////////CyIA","19":"b:7+869S7+LP8ncAAAAAAAAAAACiIA","30":"b:7+869S7+LP8ncAAAAAAAAAAACiIA","36":"b:7+869S7+LP8ncAAAAAAAAAAACiIA","38":"b:7+869S7+LP8ncAAAAAAAAAAACiIA"},"packages/@n8n/permissions/src/utilities/has-global-scope.ee.ts":{"10":"b:7+86lSTeDP8ncAAAAAAAAAAACiIA"},"packages/@n8n/permissions/src/utilities/has-scope.ee.ts":{"11":"b://9/9///////////////////KyIA","20":"b://9/9/////+//v///+f/////KyIA","21":"b://9/9///////////////////KyIA"},"packages/@n8n/tournament/src/ExpressionBuilder.ts":{"25":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","29":"b:/8y/F0+8ugFY8Lz/gPDr//8rd4EA","33":"b:80yWEEmMmABY8CA8AHQI0T+jd4EA","37":"b:4wyUAEmICAAQcCAgAEAAHQwhdoEA","50":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","54":"b:4wyUAEmICAAQcCAkAEAAkQwhdoEA","58":"b:4wyUAEmICAAQcCAgAEAAEQwhdoEA","62":"b:40yWEEmImABY8CA8AHQI0Q+hd4EA","71":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","75":"b:4wyUAEmICAAQcCAoAEQAEQ0hdoEA","88":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","103":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","110":"b:8wyUAEmICAAQcCAmAEAA0QwhdoEA","136":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","137":"b:4wyUAEmICAAQcCAoAEQAEQ0hdoEA","141":"b:4wyUAEmICAAQcCAoAEQAEQ0hdoEA","157":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","158":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","171":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","188":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","197":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","198":"b:/8y/F0+8ugFY8Lz/gPTr//+rd4EA","263":"b:8wyUAEmICAAQcCAmAEAA0QwhdoEA"},"packages/@n8n/tournament/src/ExpressionSplitter.ts":{"19":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA","23":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA","27":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA","101":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA","105":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA","107":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA"},"packages/@n8n/tournament/src/FunctionEvaluator.ts":{"6":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA","8":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA","18":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA"},"packages/@n8n/tournament/src/Parser.ts":{"5":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA"},"packages/@n8n/tournament/src/VariablePolyfill.ts":{"12":"b:4QwUEEmICAAY8AAYAGAAEA0hdoEA","22":"b:/8w/F0+8ugFY8Lz/gPTr//+rd4EA","33":"b:/8w/F0+8ugFY8Lz/gPTr//+rd4EA","46":"b:/8w/F0+8ugFY8Lz/gPTr//+rd4EA","73":"b:/8w/F0+8ugFY8Lz/gPTr//+rd4EA","78":"b:4QwUAEmICAAQcAAAAEAAEAwhdoEA","83":"b:4UwWEEmImABY8AA8AHQI3Q+hd4EA","102":"b:4QwUAEmICAAQcAAAAEAAEAwhdoEA","107":"b:4UwWEEmImABY8AAcAGQI0Q+hd4EA","114":"b:/8w/F0+8ugFY8Lz/gPTr//+rd4EA","119":"b:4QwUAEmICAAQcAAAAEAAEAwhdoEA","122":"b:/8w/F0+8ugFY8Lz/gPTr//+rd4EA"},"packages/@n8n/tournament/src/index.ts":{"16":"b://1/9////33/////////////U4EA","17":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA","25":"b://1/9////33/////////////U4EA","29":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA","33":"b:/8w/F0+8ugFI8Lz/gPTr//+LU4EA"},"packages/@n8n/utils/src/promise/deferred-promise.ts":{"12":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/activation-errors.service.ts":{"9":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","11":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","15":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","19":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","27":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","35":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB"},"packages/cli/src/active-executions.ts":{"45":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","54":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","61":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","159":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","163":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","184":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","188":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","195":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","201":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","210":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","240":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","262":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","280":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","287":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","307":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","311":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","315":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","319":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","324":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA","359":"b:7w48hW/IDAAQcAAAAAAAEAggdoEA"},"packages/cli/src/active-workflow-manager.ts":{"70":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","91":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","102":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","109":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","131":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","138":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","149":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","238":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","283":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","319":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","339":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","352":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","379":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","393":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","412":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","425":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","484":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","491":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","500":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","528":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","642":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","644":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","681":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","689":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","694":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","715":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","781":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","782":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","785":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","795":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","812":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","819":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","874":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","884":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","897":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","936":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","954":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","969":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","1003":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","1006":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","1027":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","1034":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB","1050":"b:AAQUAAyIQAAQAAAAAAQAAAAqVoEB"},"packages/cli/src/auth/auth-handler.registry.ts":{"7":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","20":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","30":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","82":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","94":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","112":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/cli/src/auth/auth.service.ts":{"64":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","101":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","106":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","164":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","173":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","181":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","185":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","189":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","193":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","209":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","234":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","255":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","262":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","288":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","298":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","314":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","331":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","362":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","392":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","397":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","407":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","441":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","449":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","454":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A","464":"b:7+8+lWfeHP8ncAQAAAAAUAAACj4A"},"packages/cli/src/auth/handlers/email.auth-handler.ts":{"16":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","23":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","35":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/cli/src/chat/chat-server.ts":{"21":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","23":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","24":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","28":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","34":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","39":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","42":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","51":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA"},"packages/cli/src/collaboration/collaboration.message.ts":{"71":"b:78Uq5XYcLAEAAAAAAAAAAAAAAAAA"},"packages/cli/src/collaboration/collaboration.service.ts":{"34":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","43":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","44":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","69":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","78":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","94":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","110":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","133":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","137":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","143":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","145":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","155":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","183":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","200":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","211":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","217":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","232":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","234":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","247":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","249":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","263":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","270":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","301":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","307":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","327":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","341":"b:/80+5/+c/gEQgABAAORIEIEAUgAA","355":"b:/80+5/+c/gEQgABAAORIEIEAUgAA"},"packages/cli/src/collaboration/collaboration.state.ts":{"35":"b:/8065X+cvgEAgABAAORIAIEAQgAA","40":"b:/8065X+cvgEAgABAAORIAIEAQgAA","52":"b:/8065X+cvgEAgABAAORIAIEAQgAA","58":"b:/8065X+cvgEAgABAAORIAIEAQgAA","86":"b:/8065X+cvgEAgABAAORIAIEAQgAA","90":"b:/8065X+cvgEAgABAAORIAIEAQgAA","105":"b:/8065X+cvgEAgABAAORIAIEAQgAA","112":"b:/8065X+cvgEAgABAAORIAIEAQgAA","117":"b:/8065X+cvgEAgABAAORIAIEAQgAA","149":"b:/8065X+cvgEAgABAAORIAIEAQgAA","160":"b:/8065X+cvgEAgABAAORIAIEAQgAA","166":"b:/8065X+cvgEAgABAAORIAIEAQgAA","177":"b:/8065X+cvgEAgABAAORIAIEAQgAA","198":"b:/8065X+cvgEAgABAAORIAIEAQgAA","203":"b:/8065X+cvgEAgABAAORIAIEAQgAA","212":"b:/8065X+cvgEAgABAAORIAIEAQgAA"},"packages/cli/src/concurrency/concurrency-capacity-reservation.ts":{"21":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","23":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","30":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/concurrency/concurrency-control.service.ts":{"35":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","45":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","90":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","100":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","113":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","135":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","136":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","145":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","150":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","158":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","173":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","183":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","193":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","205":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","208":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","225":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","233":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","237":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","244":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/controller.registry.ts":{"37":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","46":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","52":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","64":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","90":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","116":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","121":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","144":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","224":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","225":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","234":"b://9/naT/r/+HcAAAAAIAAAAAGiIA","235":"b://9/naT/r/+HcAAAAAIAAAAAGiIA"},"packages/cli/src/controllers/active-workflows.controller.ts":{"8":"b:7+UqtXQeLA8HAAAAAAAAAAAAAAAA","11":"b:7+UqtXQeLA8HAAAAAAAAAAAAAAAA","16":"b:7+UqtXQeLA8HAAAAAAAAAAAAAAAA"},"packages/cli/src/controllers/auth.controller.ts":{"40":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","67":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","109":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","115":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","131":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","164":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","192":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","205":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","250":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","259":"b:7+86nWT+LP+ncAAACAAAAAAACj4A","278":"b:7+86nWT+LP+ncAAACAAAAAAACj4A"},"packages/cli/src/controllers/e2e.controller.ts":{"185":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","198":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","201":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","212":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","216":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","227":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","233":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","239":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","245":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","251":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","256":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","295":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","314":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","348":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","383":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","396":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","400":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","401":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","404":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","415":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","422":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","433":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","443":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","455":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","535":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","541":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","542":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","550":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","561":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","566":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","575":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","596":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","603":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A","671":"b:7+86nWT+LP8ncAAASAAAAAAAKj4A"},"packages/cli/src/controllers/module-settings.controller.ts":{"7":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","13":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA"},"packages/cli/src/controllers/project.controller.ts":{"44":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","53":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","74":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","85":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","102":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","123":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","136":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","144":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","160":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","198":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","211":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","224":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","235":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","244":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","254":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","263":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","281":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","291":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","314":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","336":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","351":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","365":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","377":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA","385":"b://V/nfR/7v+HcEIAqAMAAAAAAAAA"},"packages/cli/src/controllers/role.controller.ts":{"38":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","43":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","50":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","57":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","58":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","59":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","60":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","65":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","78":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","91":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","101":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","112":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","131":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","148":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA"},"packages/cli/src/controllers/tags.controller.ts":{"20":"b:7+U6vWR+rP8HcAAACQAAAICEAAAA","24":"b:7+U6vWR+rP8HcAAACQAAAICEAAAA","30":"b:7+U6vWR+rP8HcAAACQAAAICEAAAA","43":"b:7+U6vWR+rP8HcAAACQAAAICEAAAA","56":"b:7+U6vWR+rP8HcAAACQAAAICEAAAA"},"packages/cli/src/controllers/users.controller.ts":{"56":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","75":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","76":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","90":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","114":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","123":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","136":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","143":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","160":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","182":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","210":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","231":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","291":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","322":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","346":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA","369":"b:7+U6vWQ+LP8HAAAAIAAAAAAAAAAA"},"packages/cli/src/credentials/credentials-finder.service.ts":{"15":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","24":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","36":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","43":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","56":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","64":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","69":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","71":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","73":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","85":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","122":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","171":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","200":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","211":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","213":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","230":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","261":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","275":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA","298":"b:/8f6tWYeLnsA8AAAgAEAABIACEAA"},"packages/cli/src/credentials/credentials.controller.ts":{"55":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","72":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","87":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","97":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","105":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","119":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","146":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","159":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","203":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","341":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","381":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","387":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","403":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","404":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","407":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","408":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","432":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","472":"b://V/9f9+Lw8H80AQiAMAAAAACEAA","479":"b://V/9f9+Lw8H80AQiAMAAAAACEAA"},"packages/cli/src/credentials/credentials.service.ts":{"125":"b://d/9//+Pw8X80AQqAcIQAAACEAA","154":"b://d/9//+Pw8X80AQqAcIQAAACEAA","158":"b://d/9//+Pw8X80AQqAcIQAAACEAA","162":"b://d/9//+Pw8X80AQqAcIQAAACEAA","167":"b://d/9//+Pw8X80AQqAcIQAAACEAA","175":"b://d/9//+Pw8X80AQqAcIQAAACEAA","188":"b://d/9//+Pw8X80AQqAcIQAAACEAA","189":"b://d/9//+Pw8X80AQqAcIQAAACEAA","198":"b://d/9//+Pw8X80AQqAcIQAAACEAA","229":"b://d/9//+Pw8X80AQqAcIQAAACEAA","298":"b://d/9//+Pw8X80AQqAcIQAAACEAA","359":"b://d/9//+Pw8X80AQqAcIQAAACEAA","442":"b://d/9//+Pw8X80AQqAcIQAAACEAA","483":"b://d/9//+Pw8X80AQqAcIQAAACEAA","519":"b://d/9//+Pw8X80AQqAcIQAAACEAA","533":"b://d/9//+Pw8X80AQqAcIQAAACEAA","535":"b://d/9//+Pw8X80AQqAcIQAAACEAA","536":"b://d/9//+Pw8X80AQqAcIQAAACEAA","540":"b://d/9//+Pw8X80AQqAcIQAAACEAA","543":"b://d/9//+Pw8X80AQqAcIQAAACEAA","548":"b://d/9//+Pw8X80AQqAcIQAAACEAA","551":"b://d/9//+Pw8X80AQqAcIQAAACEAA","555":"b://d/9//+Pw8X80AQqAcIQAAACEAA","580":"b://d/9//+Pw8X80AQqAcIQAAACEAA","595":"b://d/9//+Pw8X80AQqAcIQAAACEAA","596":"b://d/9//+Pw8X80AQqAcIQAAACEAA","601":"b://d/9//+Pw8X80AQqAcIQAAACEAA","606":"b://d/9//+Pw8X80AQqAcIQAAACEAA","608":"b://d/9//+Pw8X80AQqAcIQAAACEAA","609":"b://d/9//+Pw8X80AQqAcIQAAACEAA","614":"b://d/9//+Pw8X80AQqAcIQAAACEAA","615":"b://d/9//+Pw8X80AQqAcIQAAACEAA","619":"b://d/9//+Pw8X80AQqAcIQAAACEAA","638":"b://d/9//+Pw8X80AQqAcIQAAACEAA","645":"b://d/9//+Pw8X80AQqAcIQAAACEAA","658":"b://d/9//+Pw8X80AQqAcIQAAACEAA","675":"b://d/9//+Pw8X80AQqAcIQAAACEAA","702":"b://d/9//+Pw8X80AQqAcIQAAACEAA","712":"b://d/9//+Pw8X80AQqAcIQAAACEAA","761":"b://d/9//+Pw8X80AQqAcIQAAACEAA","787":"b://d/9//+Pw8X80AQqAcIQAAACEAA","808":"b://d/9//+Pw8X80AQqAcIQAAACEAA","816":"b://d/9//+Pw8X80AQqAcIQAAACEAA","838":"b://d/9//+Pw8X80AQqAcIQAAACEAA","855":"b://d/9//+Pw8X80AQqAcIQAAACEAA","869":"b://d/9//+Pw8X80AQqAcIQAAACEAA","923":"b://d/9//+Pw8X80AQqAcIQAAACEAA","939":"b://d/9//+Pw8X80AQqAcIQAAACEAA","943":"b://d/9//+Pw8X80AQqAcIQAAACEAA","954":"b://d/9//+Pw8X80AQqAcIQAAACEAA","976":"b://d/9//+Pw8X80AQqAcIQAAACEAA","990":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1004":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1019":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1063":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1078":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1079":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1082":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1091":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1094":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1107":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1116":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1137":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1149":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1166":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1191":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1251":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1253":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1272":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1281":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1289":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1290":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1301":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1302":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1307":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1314":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1322":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1343":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1352":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1377":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1415":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1443":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1447":"b://d/9//+Pw8X80AQqAcIQAAACEAA","1510":"b://d/9//+Pw8X80AQqAcIQAAACEAA"},"packages/cli/src/environments.ee/variables/variables.service.ee.ts":{"31":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","39":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","46":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","69":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","74":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","78":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","84":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","86":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","93":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","99":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","109":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","116":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","124":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","128":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","146":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","174":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","179":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","184":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","202":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","204":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","207":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","214":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","221":"b:7054hS/MDAEAcAAABAAAEAAAGgAA","263":"b:7054hS/MDAEAcAAABAAAEAAAGgAA"},"packages/cli/src/eventbus/event-message-classes/abstract-event-message.ts":{"10":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","12":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","16":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","28":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","48":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","59":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","72":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","101":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","108":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","113":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","124":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","135":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A","139":"b:7+8aFQTeDf8ncAAAAAAAAAAACj4A"},"packages/cli/src/eventbus/event-message-classes/event-message-confirm.ts":{"19":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","25":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","36":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/cli/src/eventbus/event-message-classes/event-message-node.ts":{"35":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","43":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","48":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/eventbus/event-message-classes/event-message-workflow.ts":{"36":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","44":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","49":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/eventbus/message-event-bus/message-event-bus.ts":{"59":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","78":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","118":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","127":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","138":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","141":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","151":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","162":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","169":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","192":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","196":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","197":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","202":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","208":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","214":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","220":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","225":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","239":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","250":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","254":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","258":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","262":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","266":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","270":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","274":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","285":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","351":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","370":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA","389":"b:7w68hS/IDAAAcAAAAMAQkABAcgEA"},"packages/cli/src/eventbus/message-event-bus-writer/message-event-bus-log-writer.ts":{"67":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","72":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","82":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","110":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","116":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","122":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","126":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","132":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","142":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","153":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","162":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","169":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","175":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","184":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","205":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","213":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","241":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","291":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","326":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","333":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","341":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","345":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","353":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","366":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","369":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","380":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","406":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","410":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","414":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","418":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","422":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","433":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/cli/src/events/relays/event-relay.ts":{"8":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","10":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","18":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/cli/src/events/relays/log-streaming.event-relay.ts":{"15":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","19":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","34":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","42":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","44":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","45":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","46":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","47":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","48":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","49":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","50":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","51":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","52":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","53":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","54":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","55":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","56":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","57":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","58":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","59":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","60":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","61":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","62":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","63":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","64":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","65":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","66":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","67":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","68":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","69":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","70":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","71":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","72":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","73":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","74":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","75":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","76":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","77":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","78":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","79":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","80":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","81":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","82":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","83":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","84":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","86":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","87":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","89":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","91":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","93":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","94":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","96":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","97":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","98":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","99":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","100":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","101":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","102":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","103":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","104":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","105":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","106":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","107":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","108":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","109":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","110":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","111":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","112":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","113":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","114":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","115":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","116":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","117":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","118":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","119":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","120":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","121":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","122":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","123":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","124":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","125":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","126":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","127":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","128":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","129":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","130":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","131":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","132":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","133":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","134":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","135":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","136":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","137":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","138":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","139":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","140":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","147":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","155":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","163":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","175":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","183":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","191":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","199":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","212":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","230":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","243":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","264":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","300":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","364":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","383":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","400":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","412":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","432":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","457":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","465":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","473":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","481":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","489":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","497":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","509":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","517":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","524":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","539":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","547":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","555":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","569":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","577":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","585":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","597":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","609":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","617":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","625":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","636":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","644":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","651":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","665":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","673":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","681":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","692":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","701":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","710":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","719":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","728":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","737":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","746":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","760":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","771":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","779":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","790":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","797":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","806":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","824":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","839":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","849":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","867":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","882":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","909":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","918":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","925":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","932":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","939":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","946":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","953":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","960":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","967":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","974":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","981":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","988":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","995":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1002":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1013":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1020":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1031":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1038":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1045":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1057":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1100":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1115":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1122":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1129":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1136":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1143":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1150":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1157":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1164":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1175":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1193":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1208":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1222":"b:/++////+/v83/AQRtOEQ0Qhqfv8B","1235":"b:/++////+/v83/AQRtOEQ0Qhqfv8B"},"packages/cli/src/execution-lifecycle/execute-error-workflow.ts":{"22":"b:AAwQAASIAAAQcAAAAAAAAAADdoEB","96":"b:AAwQAASIAAAQcAAAAAAAAAADdoEB","103":"b:AAwQAASIAAAQcAAAAAAAAAADdoEB","119":"b:AAwQAASIAAAQcAAAAAAAAAADdoEB","124":"b:AAwQAASIAAAQcAAAAAAAAAADdoEB"},"packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts":{"53":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","61":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","76":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","90":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","105":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","119":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","143":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","152":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","162":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","204":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","206":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","208":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","218":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","220":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","236":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","259":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","273":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","281":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","296":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","368":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","428":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","449":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","452":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","455":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","464":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","469":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","481":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","482":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","487":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","489":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","500":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","519":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","530":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","609":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","611":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","648":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","656":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","699":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","701":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","725":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","750":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","782":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","813":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA","870":"b:7w48hXfIHAAQcAAAAACAUQAjcoEA"},"packages/cli/src/execution-lifecycle/restore-binary-data-id.ts":{"30":"b:7w48hSfIDAAQcAAAAAAAEAAgdoEA","64":"b:7w48hSfIDAAQcAAAAAAAEAAgdoEA","78":"b:7w48hSfIDAAQcAAAAAAAEAAgdoEA"},"packages/cli/src/execution-lifecycle/shared/shared-hook-functions.ts":{"13":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","29":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","78":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","94":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/execution-lifecycle/to-save-settings.ts":{"20":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/executions/execution-data/db-store.ts":{"14":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","16":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","32":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","50":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","58":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","71":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","82":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","96":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA","100":"b:7w48hW/IDAAAcAAgAMAAEQAAcgEA"},"packages/cli/src/executions/execution-persistence.ts":{"69":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","82":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","86":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","95":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","111":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","116":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","146":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","217":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","315":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","369":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","370":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","379":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","384":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","393":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","424":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","425":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","432":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","442":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","457":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","472":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","513":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","523":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","528":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","529":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","530":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","531":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","532":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","536":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","539":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","540":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","541":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","544":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","555":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","560":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","568":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","573":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","581":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","594":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","604":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","632":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","654":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","657":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","695":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","714":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","732":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","758":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","780":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","792":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","802":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","825":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","832":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","853":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","866":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","871":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","880":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","896":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","916":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","929":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","943":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","955":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","971":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","987":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","993":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA","1003":"b:7w48hW/IHAAQcAAgANAAEQAgcgEA"},"packages/cli/src/executions/execution-redaction-proxy.service.ts":{"13":"b:7w4shWcIHAAAAAAAAAAAEAAAAAEA","17":"b:7w4shWcIHAAAAAAAAAAAEAAAAAEA","27":"b:7w4shWcIHAAAAAAAAAAAEAAAAAEA"},"packages/cli/src/executions/execution.service.ee.ts":{"13":"b:7wYshWcIHAAAAAAAAAAAEAAAAAEA","19":"b:7wYshWcIHAAAAAAAAAAAEAAAAAEA"},"packages/cli/src/executions/execution.service.ts":{"113":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","139":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","154":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","208":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","240":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","399":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","404":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","438":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","475":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","495":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","498":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","534":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","542":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","559":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","576":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","587":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","620":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","641":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","651":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","671":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","693":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","711":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","712":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","723":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","761":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB","773":"b:744sh+eMPgEQAAAIAMKBEQRQRIEB"},"packages/cli/src/executions/execution.utils.ts":{"13":"b:AAQAAAEACAAQAAAAAAAAAAAjAIEA","26":"b:AAQAAAEACAAQAAAAAAAAAAAjAIEA"},"packages/cli/src/executions/executions.controller.ts":{"19":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","26":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","38":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","82":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","93":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","108":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","124":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","135":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","144":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB","153":"b:7w4sh2eIHAAQAAAAAICAEQBQRIEB"},"packages/cli/src/executions/parse-range-query.middleware.ts":{"15":"b:QA4ABgSIDAAQAAAAAICAAQBARIEB","20":"b:QA4ABgSIDAAQAAAAAICAAQBARIEB"},"packages/cli/src/executions/pre-execution-checks/credentials-permission-checker.ts":{"15":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA","26":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA","36":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA","47":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA","86":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA","100":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA","101":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA","128":"b:7w48jS/IDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/executions/sum-binary-data-bytes.ts":{"13":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","37":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","64":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/generic-helpers.ts":{"13":"b:78869S7eLAEAAAAAAAAAAAAACgAA","25":"b:78869S7eLAEAAAAAAAAAAAAACgAA"},"packages/cli/src/license/license.controller.ts":{"15":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","22":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","28":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","45":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","61":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","73":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","78":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA"},"packages/cli/src/license/license.service.ts":{"30":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","45":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","70":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","85":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","128":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","136":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","162":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","180":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","195":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA","209":"b:7+UqlXQeLA8nAAAAAAAAAAAAAAAA"},"packages/cli/src/license.ts":{"43":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","53":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","72":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","73":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","75":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","76":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","78":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","79":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","81":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","82":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","84":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","85":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","86":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","110":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","112":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","131":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","146":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","151":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","156":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","158":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","163":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","180":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","182":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","190":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","203":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","213":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","222":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","231":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","241":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","254":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","258":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","262":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","267":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","272":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","277":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","282":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","287":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","292":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","297":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","302":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","307":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","312":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","317":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","322":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","327":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","332":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","337":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","342":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","347":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","352":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","357":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","362":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","367":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","372":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","377":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","381":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","385":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","389":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","399":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","409":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","412":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","416":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","423":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","428":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","433":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","438":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","443":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","451":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","455":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","459":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","467":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","475":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","490":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","505":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","514":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","519":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","524":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","528":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","534":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A","537":"b:7+86lXTeLP8ncAAAAAAAAAAACj4A"},"packages/cli/src/load-nodes-and-credentials.ts":{"60":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","69":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","130":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","134":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","150":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","165":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","169":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","173":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","177":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","181":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","185":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","226":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","233":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","237":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","255":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","278":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","289":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","295":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","304":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","315":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","318":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","319":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","330":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","341":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","342":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","349":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","365":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","369":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","378":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","389":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","400":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","410":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","487":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","500":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","517":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","529":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","535":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","540":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","572":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","591":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","598":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","615":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","632":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","633":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","635":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","637":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","650":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","675":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","679":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","680":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","686":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","696":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","697":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA","698":"b:/8579S/+PAMQ+IDaAAMAAgFACwAA"},"packages/cli/src/metrics/prometheus/webhook-and-form-metrics.service.ts":{"18":"b:4AwEAEGICAAAAAAgAAAAAAggZoEA","20":"b:4AwEAEGICAAAAAAgAAAAAAggZoEA","24":"b:4AwEAEGICAAAAAAgAAAAAAggZoEA","46":"b:4AwEAEGICAAAAAAgAAAAAAggZoEA","67":"b:4AwEAEGICAAAAAAgAAAAAAggZoEA"},"packages/cli/src/metrics/prometheus/workflow-execution-duration-metrics.service.ts":{"19":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","24":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","28":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","41":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/modules/chat-hub/chat-hub-execution-store.service.ts":{"58":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","79":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","93":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","103":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","127":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","140":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","154":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","158":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","171":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","189":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","199":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","202":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","211":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/modules/chat-hub/chat-hub-execution-watcher.service.ts":{"32":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","54":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","117":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","160":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","203":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","235":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","257":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","280":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA"},"packages/cli/src/modules/data-table/data-table-aggregate.controller.ts":{"10":"b:7/U+neR+LP+Hc0AACAIAAAAAAQAA","17":"b:7/U+neR+LP+Hc0AACAIAAAAAAQAA","27":"b:7/U+neR+LP+Hc0AACAIAAAAAAQAA"},"packages/cli/src/modules/data-table/data-table-size-validator.service.ts":{"16":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","21":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","33":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","56":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","73":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","86":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","91":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA"},"packages/cli/src/modules/data-table/data-table.repository.ts":{"29":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","45":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","46":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","48":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","53":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","59":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","60":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","66":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","80":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","109":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","110":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","117":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","124":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","159":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","160":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","173":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","174":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","188":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","194":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","199":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","210":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","214":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","219":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","234":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","242":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","252":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","257":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","280":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","288":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","299":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","310":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","314":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","317":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","321":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","349":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA","387":"b:7/U+neR+LP+Hc0MAKAIAAAAAAQAA"},"packages/cli/src/modules/data-table/data-table.service.ts":{"51":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","65":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","66":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","68":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","81":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","118":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","145":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","154":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","158":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","173":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","183":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","194":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","204":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","218":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","229":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","241":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","245":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","252":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","270":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","276":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","296":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","305":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","346":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","356":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","403":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","447":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","457":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","511":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","520":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","550":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","553":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","563":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","572":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","579":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","580":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","582":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","600":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","643":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","658":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","671":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","682":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","688":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","698":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","734":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","736":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","740":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","742":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","758":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","772":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","797":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","802":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","804":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","809":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","834":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","862":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA","871":"b:7+U6nWR+LP+HcAMAKAAAAAAAAAAA"},"packages/cli/src/modules/data-table/utils/sql-utils.ts":{"25":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","26":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","44":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","72":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","79":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","83":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","87":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","102":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","111":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","128":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","137":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","140":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","144":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","148":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","161":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","165":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","175":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","183":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","196":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","203":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","221":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","242":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","247":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","251":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","280":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","313":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","331":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","354":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","371":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","377":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA","382":"b:7+U6nWR+LP+HcAMACAAAAAAAAAAA"},"packages/cli/src/modules/favorites/database/repositories/user-favorite.repository.ts":{"9":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","13":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","20":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","24":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA"},"packages/cli/src/modules/favorites/favorites.controller.ts":{"10":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","16":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","19":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","24":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA","29":"b:7+U6nWR+LP+HcAAACAAAAAAAAAAA"},"packages/cli/src/modules/favorites/favorites.service.ts":{"24":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","25":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","27":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","33":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","44":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","53":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","65":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","74":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","90":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","112":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","113":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","121":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","126":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","131":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","144":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","163":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","186":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","204":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","230":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","242":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA","246":"b:7+U6nWR+7P+HcAIACAAAAAAAAAAA"},"packages/cli/src/modules/insights/insights-collection.service.ts":{"65":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","95":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","105":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","113":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","119":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","124":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","131":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","136":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","152":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","217":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","232":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","255":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","283":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","305":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","328":"b:798+xWf+LWkmckiCEAAAUAAgdoEB","345":"b:798+xWf+LWkmckiCEAAAUAAgdoEB"},"packages/cli/src/modules/otel/execution-level-tracer.ts":{"22":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","39":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","43":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","48":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","87":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","123":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","168":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","199":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","220":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","226":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","239":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","244":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","252":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","264":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","276":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","285":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","291":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","297":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","316":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","329":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","336":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA","344":"b:7w48hSfIHAAAcAAAAACAEAAAcgEA"},"packages/cli/src/modules/otel/otel-lifecycle-handler.ts":{"20":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","29":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","41":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","52":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","57":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","61":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","72":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","84":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","117":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","124":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","153":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","165":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","168":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","178":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","181":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","194":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","198":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","219":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","232":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","237":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","242":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","244":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA","247":"b:7w48hSfIDAAQcAAAAAAAEAAgcgEA"},"packages/cli/src/modules/redaction/executions/execution-redaction.service.ts":{"37":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","45":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","57":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","74":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","89":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","96":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","99":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","191":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","239":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","272":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","273":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","276":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","293":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","308":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA","327":"b:7w4shWcIHAAAAAAAAAAAUAAAAAEA"},"packages/cli/src/modules/redaction/instance-redaction-enforcement.service.ts":{"16":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","29":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","33":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","35":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","42":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","60":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","77":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","81":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","90":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/modules/redaction/redaction-context-hook.ts":{"16":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","24":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","36":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/modules/redaction/redaction-enforcement.service.ts":{"20":"b:XowoBfMMGAAQgAAAAAAAAAAAAAAA","24":"b:XowoBfMMGAAQgAAAAAAAAAAAAAAA","50":"b:XowoBfMMGAAQgAAAAAAAAAAAAAAA"},"packages/cli/src/modules/workflow-index/workflow-index.service.ts":{"28":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","40":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","41":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","43":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","45":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","48":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","51":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","54":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","66":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","69":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","71":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","77":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","90":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","138":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","152":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","170":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","177":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","199":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","217":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","218":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","260":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","270":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","287":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","309":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","324":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","338":"b:/88+5//e/AEQgAAAAAAAAAADXoEB","353":"b:/88+5//e/AEQgAAAAAAAAAADXoEB"},"packages/cli/src/node-types.ts":{"15":"b:78469S7cLAEA8AAIAAAAAAEACgAA","20":"b:78469S7cLAEA8AAIAAAAAAEACgAA","25":"b:78469S7cLAEA8AAIAAAAAAEACgAA","38":"b:78469S7cLAEA8AAIAAAAAAEACgAA","64":"b:78469S7cLAEA8AAIAAAAAAEACgAA","68":"b:78469S7cLAEA8AAIAAAAAAEACgAA","91":"b:78469S7cLAEA8AAIAAAAAAEACgAA","130":"b:78469S7cLAEA8AAIAAAAAAEACgAA","134":"b:78469S7cLAEA8AAIAAAAAAEACgAA","152":"b:78469S7cLAEA8AAIAAAAAAEACgAA","155":"b:78469S7cLAEA8AAIAAAAAAEACgAA","162":"b:78469S7cLAEA8AAIAAAAAAEACgAA","165":"b:78469S7cLAEA8AAIAAAAAAEACgAA","176":"b:78469S7cLAEA8AAIAAAAAAEACgAA","177":"b:78469S7cLAEA8AAIAAAAAAEACgAA","203":"b:78469S7cLAEA8AAIAAAAAAEACgAA"},"packages/cli/src/permissions.ee/check-access.ts":{"27":"b:7+86nSTeLv+HcAAAgAIIAAAACiIA","65":"b:7+86nSTeLv+HcAAAgAIIAAAACiIA","85":"b:7+86nSTeLv+HcAAAgAIIAAAACiIA","120":"b:7+86nSTeLv+HcAAAgAIIAAAACiIA","130":"b:7+86nSTeLv+HcAAAgAIIAAAACiIA"},"packages/cli/src/posthog/index.ts":{"28":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","33":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","39":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","45":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","51":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","66":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","92":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","104":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","118":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","146":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","166":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/cli/src/push/abstract.push.ts":{"34":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","40":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","43":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","58":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","66":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","70":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","79":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","96":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","102":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","106":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","115":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","117":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","124":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA","134":"b:/91/9XccPHtGcEAAEMAAUAAAAAAA"},"packages/cli/src/push/index.ts":{"52":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","62":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","65":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","70":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","73":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","75":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","79":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","94":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","99":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","111":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","166":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","171":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","180":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","189":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","194":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","215":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","222":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","237":"b:780+9XccPHsAcAAAAAAAUAAAAAAA","244":"b:780+9XccPHsAcAAAAAAAUAAAAAAA"},"packages/cli/src/push/push-helpers.ts":{"5":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","9":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","14":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA","18":"b:78U6tXYcLHsAcAAAAAAAAAAAAAAA"},"packages/cli/src/push/websocket.push.ts":{"9":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA","15":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA","21":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA","60":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA","71":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA","75":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA","79":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA","88":"b:/8U69XYcLHsAcAAAAcQKAIHAAAAA"},"packages/cli/src/server.ts":{"89":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","101":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","103":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","105":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","106":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","125":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","127":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","131":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","136":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","140":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","144":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","148":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","149":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","157":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","163":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","165":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","199":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","213":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","224":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","244":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","274":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","328":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","332":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","347":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","362":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","436":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","438":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","451":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","458":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","480":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","489":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","498":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","499":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA","505":"b:/+V7vWZ+PP83eIDSCAcAAgBAAAAA"},"packages/cli/src/services/access.service.ts":{"13":"b:/8Uq5XccPAEAgABAAMQIAAEAAAAA","19":"b:/8Uq5XccPAEAgABAAMQIAAEAAAAA","31":"b:/8Uq5XccPAEAgABAAMQIAAEAAAAA"},"packages/cli/src/services/active-workflows.service.ts":{"13":"b:7+UutXQePA8XAAgCAAIAQAAiAAAA","21":"b:7+UutXQePA8XAAgCAAIAQAAiAAAA","24":"b:7+UutXQePA8XAAgCAAIAQAAiAAAA","27":"b:7+UutXQePA8XAAgCAAIAQAAiAAAA","33":"b:7+UutXQePA8XAAgCAAIAQAAiAAAA","38":"b:7+UutXQePA8XAAgCAAIAQAAiAAAA","41":"b:7+UutXQePA8XAAgCAAIAQAAiAAAA"},"packages/cli/src/services/cache/cache.service.ts":{"26":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","32":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","39":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","55":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","69":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","79":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","83":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","87":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","91":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","103":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","115":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","121":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","139":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","160":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","180":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","218":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","256":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","300":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","308":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","320":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","339":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB","355":"b:788+5e/ebAEAcAAAAMAAEIgIX4AB"},"packages/cli/src/services/frontend.service.ts":{"124":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","145":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","149":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","150":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","157":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","169":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","176":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","432":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","446":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","625":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","636":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","657":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","699":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","703":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","719":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","727":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","732":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","742":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","755":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","756":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA","786":"b:7+U6nWR+LP+HcwQACAAAAAAAEAAA"},"packages/cli/src/services/jwt.service.ts":{"12":"b:7+86nSTeDP8ndAAAgAAAAAAAGj4A","33":"b:7+86nSTeDP8ndAAAgAAAAAAAGj4A","60":"b:7+86nSTeDP8ndAAAgAAAAAAAGj4A","64":"b:7+86nSTeDP8ndAAAgAAAAAAAGj4A","68":"b:7+86nSTeDP8ndAAAgAAAAAAAGj4A"},"packages/cli/src/services/last-active-at.service.ts":{"11":"b:7+86lSTeDP8ncAAAAAAAAAAACiIA","16":"b:7+86lSTeDP8ncAAAAAAAAAAACiIA","18":"b:7+86lSTeDP8ncAAAAAAAAAAACiIA","25":"b:7+86lSTeDP8ncAAAAAAAAAAACiIA"},"packages/cli/src/services/naming.service.ts":{"6":"b:XkVrUHM0KgswoAgQAMUIUIEAAQAA","11":"b:XkVrUHM0KgswoAgQAMUIUIEAAQAA","15":"b:XkVrUHM0KgswoAgQAMUIUIEAAQAA","19":"b:XkVrUHM0KgswoAgQAMUIUIEAAQAA","28":"b:XkVrUHM0KgswoAgQAMUIUIEAAQAA"},"packages/cli/src/services/ownership.service.ts":{"29":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","46":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","52":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","59":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","66":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","76":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","90":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","113":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","125":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","145":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","152":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","159":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","171":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","213":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","219":"b:798+5a/+rgEAcGIAIIAAEAAAegEC","239":"b:798+5a/+rgEAcGIAIIAAEAAAegEC"},"packages/cli/src/services/password.utility.ts":{"8":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A","12":"b:7+8aFQTeDP8ncAAAAAAAAAAACj4A"},"packages/cli/src/services/project.service.ee.ts":{"39":"b://9/ne7/7v+ncEIArAMAAAAACgAA","47":"b://9/ne7/7v+ncEIArAMAAAAACgAA","53":"b://9/ne7/7v+ncEIArAMAAAAACgAA","57":"b://9/ne7/7v+ncEIArAMAAAAACgAA","69":"b://9/ne7/7v+ncEIArAMAAAAACgAA","81":"b://9/ne7/7v+ncEIArAMAAAAACgAA","82":"b://9/ne7/7v+ncEIArAMAAAAACgAA","87":"b://9/ne7/7v+ncEIArAMAAAAACgAA","88":"b://9/ne7/7v+ncEIArAMAAAAACgAA","93":"b://9/ne7/7v+ncEIArAMAAAAACgAA","94":"b://9/ne7/7v+ncEIArAMAAAAACgAA","99":"b://9/ne7/7v+ncEIArAMAAAAACgAA","100":"b://9/ne7/7v+ncEIArAMAAAAACgAA","105":"b://9/ne7/7v+ncEIArAMAAAAACgAA","106":"b://9/ne7/7v+ncEIArAMAAAAACgAA","107":"b://9/ne7/7v+ncEIArAMAAAAACgAA","111":"b://9/ne7/7v+ncEIArAMAAAAACgAA","112":"b://9/ne7/7v+ncEIArAMAAAAACgAA","117":"b://9/ne7/7v+ncEIArAMAAAAACgAA","118":"b://9/ne7/7v+ncEIArAMAAAAACgAA","123":"b://9/ne7/7v+ncEIArAMAAAAACgAA","124":"b://9/ne7/7v+ncEIArAMAAAAACgAA","125":"b://9/ne7/7v+ncEIArAMAAAAACgAA","129":"b://9/ne7/7v+ncEIArAMAAAAACgAA","175":"b://9/ne7/7v+ncEIArAMAAAAACgAA","192":"b://9/ne7/7v+ncEIArAMAAAAACgAA","255":"b://9/ne7/7v+ncEIArAMAAAAACgAA","274":"b://9/ne7/7v+ncEIArAMAAAAACgAA","283":"b://9/ne7/7v+ncEIArAMAAAAACgAA","292":"b://9/ne7/7v+ncEIArAMAAAAACgAA","296":"b://9/ne7/7v+ncEIArAMAAAAACgAA","299":"b://9/ne7/7v+ncEIArAMAAAAACgAA","301":"b://9/ne7/7v+ncEIArAMAAAAACgAA","316":"b://9/ne7/7v+ncEIArAMAAAAACgAA","324":"b://9/ne7/7v+ncEIArAMAAAAACgAA","338":"b://9/ne7/7v+ncEIArAMAAAAACgAA","348":"b://9/ne7/7v+ncEIArAMAAAAACgAA","352":"b://9/ne7/7v+ncEIArAMAAAAACgAA","376":"b://9/ne7/7v+ncEIArAMAAAAACgAA","379":"b://9/ne7/7v+ncEIArAMAAAAACgAA","384":"b://9/ne7/7v+ncEIArAMAAAAACgAA","389":"b://9/ne7/7v+ncEIArAMAAAAACgAA","390":"b://9/ne7/7v+ncEIArAMAAAAACgAA","404":"b://9/ne7/7v+ncEIArAMAAAAACgAA","408":"b://9/ne7/7v+ncEIArAMAAAAACgAA","415":"b://9/ne7/7v+ncEIArAMAAAAACgAA","427":"b://9/ne7/7v+ncEIArAMAAAAACgAA","431":"b://9/ne7/7v+ncEIArAMAAAAACgAA","434":"b://9/ne7/7v+ncEIArAMAAAAACgAA","435":"b://9/ne7/7v+ncEIArAMAAAAACgAA","440":"b://9/ne7/7v+ncEIArAMAAAAACgAA","444":"b://9/ne7/7v+ncEIArAMAAAAACgAA","450":"b://9/ne7/7v+ncEIArAMAAAAACgAA","460":"b://9/ne7/7v+ncEIArAMAAAAACgAA","472":"b://9/ne7/7v+ncEIArAMAAAAACgAA","481":"b://9/ne7/7v+ncEIArAMAAAAACgAA","489":"b://9/ne7/7v+ncEIArAMAAAAACgAA","494":"b://9/ne7/7v+ncEIArAMAAAAACgAA","508":"b://9/ne7/7v+ncEIArAMAAAAACgAA","525":"b://9/ne7/7v+ncEIArAMAAAAACgAA","529":"b://9/ne7/7v+ncEIArAMAAAAACgAA","547":"b://9/ne7/7v+ncEIArAMAAAAACgAA","551":"b://9/ne7/7v+ncEIArAMAAAAACgAA","563":"b://9/ne7/7v+ncEIArAMAAAAACgAA","573":"b://9/ne7/7v+ncEIArAMAAAAACgAA","578":"b://9/ne7/7v+ncEIArAMAAAAACgAA","587":"b://9/ne7/7v+ncEIArAMAAAAACgAA","589":"b://9/ne7/7v+ncEIArAMAAAAACgAA","593":"b://9/ne7/7v+ncEIArAMAAAAACgAA","603":"b://9/ne7/7v+ncEIArAMAAAAACgAA","609":"b://9/ne7/7v+ncEIArAMAAAAACgAA","621":"b://9/ne7/7v+ncEIArAMAAAAACgAA","627":"b://9/ne7/7v+ncEIArAMAAAAACgAA","635":"b://9/ne7/7v+ncEIArAMAAAAACgAA","641":"b://9/ne7/7v+ncEIArAMAAAAACgAA","645":"b://9/ne7/7v+ncEIArAMAAAAACgAA","652":"b://9/ne7/7v+ncEIArAMAAAAACgAA","662":"b://9/ne7/7v+ncEIArAMAAAAACgAA","693":"b://9/ne7/7v+ncEIArAMAAAAACgAA","715":"b://9/ne7/7v+ncEIArAMAAAAACgAA","718":"b://9/ne7/7v+ncEIArAMAAAAACgAA","751":"b://9/ne7/7v+ncEIArAMAAAAACgAA","764":"b://9/ne7/7v+ncEIArAMAAAAACgAA","772":"b://9/ne7/7v+ncEIArAMAAAAACgAA","779":"b://9/ne7/7v+ncEIArAMAAAAACgAA","789":"b://9/ne7/7v+ncEIArAMAAAAACgAA","800":"b://9/ne7/7v+ncEIArAMAAAAACgAA"},"packages/cli/src/services/role.service.ts":{"52":"b://8+/+//bP+XdwAAqIIAAAACngIB","61":"b://8+/+//bP+XdwAAqIIAAAACngIB","64":"b://8+/+//bP+XdwAAqIIAAAACngIB","71":"b://8+/+//bP+XdwAAqIIAAAACngIB","79":"b://8+/+//bP+XdwAAqIIAAAACngIB","83":"b://8+/+//bP+XdwAAqIIAAAACngIB","91":"b://8+/+//bP+XdwAAqIIAAAACngIB","98":"b://8+/+//bP+XdwAAqIIAAAACngIB","116":"b://8+/+//bP+XdwAAqIIAAAACngIB","129":"b://8+/+//bP+XdwAAqIIAAAACngIB","142":"b://8+/+//bP+XdwAAqIIAAAACngIB","172":"b://8+/+//bP+XdwAAqIIAAAACngIB","186":"b://8+/+//bP+XdwAAqIIAAAACngIB","190":"b://8+/+//bP+XdwAAqIIAAAACngIB","192":"b://8+/+//bP+XdwAAqIIAAAACngIB","194":"b://8+/+//bP+XdwAAqIIAAAACngIB","204":"b://8+/+//bP+XdwAAqIIAAAACngIB","237":"b://8+/+//bP+XdwAAqIIAAAACngIB","266":"b://8+/+//bP+XdwAAqIIAAAACngIB","271":"b://8+/+//bP+XdwAAqIIAAAACngIB","280":"b://8+/+//bP+XdwAAqIIAAAACngIB","307":"b://8+/+//bP+XdwAAqIIAAAACngIB","355":"b://8+/+//bP+XdwAAqIIAAAACngIB","365":"b://8+/+//bP+XdwAAqIIAAAACngIB","369":"b://8+/+//bP+XdwAAqIIAAAACngIB","379":"b://8+/+//bP+XdwAAqIIAAAACngIB","388":"b://8+/+//bP+XdwAAqIIAAAACngIB","400":"b://8+/+//bP+XdwAAqIIAAAACngIB","424":"b://8+/+//bP+XdwAAqIIAAAACngIB","435":"b://8+/+//bP+XdwAAqIIAAAACngIB","436":"b://8+/+//bP+XdwAAqIIAAAACngIB","446":"b://8+/+//bP+XdwAAqIIAAAACngIB","448":"b://8+/+//bP+XdwAAqIIAAAACngIB","453":"b://8+/+//bP+XdwAAqIIAAAACngIB","459":"b://8+/+//bP+XdwAAqIIAAAACngIB","463":"b://8+/+//bP+XdwAAqIIAAAACngIB","473":"b://8+/+//bP+XdwAAqIIAAAACngIB"},"packages/cli/src/services/tag.service.ts":{"18":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","34":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","44":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","49":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","55":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","69":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","79":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","86":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","105":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","115":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","129":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","130":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","135":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","142":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","147":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","162":"b:7+26/X7+rP8XcAAACQAAQID0AAAA","167":"b:7+26/X7+rP8XcAAACQAAQID0AAAA"},"packages/cli/src/services/user.service.ts":{"45":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","60":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","70":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","74":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","86":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","98":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","109":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","115":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","120":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","163":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","166":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","167":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","172":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","180":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","190":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","262":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","263":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","267":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","269":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","271":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","283":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","289":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","291":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","311":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","319":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","322":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","338":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","341":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","431":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B","457":"b:7+86vWz+LP+ndAAguAAAAAEDPr4B"},"packages/cli/src/services/workflow-statistics.service.ts":{"61":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","79":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","90":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","105":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","109":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","114":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","168":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","188":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","215":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","259":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB","282":"b:7w48hS/IHAAAcAAAAAAAEAAjdoEB"},"packages/cli/src/sso.ee/sso-helpers.ts":{"14":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","28":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","47":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","51":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","58":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","62":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","66":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","70":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","74":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","78":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","82":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","90":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","94":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A","98":"b:7+8aHQTeDP8ndAAAoAAAAAAACj4A"},"packages/cli/src/utils/cors.util.ts":{"3":[68,10,32,51,141]},"packages/cli/src/utils/get-item-count-by-connection-type.ts":{"4":"b:7wQshXcAHAAAAAAAAAAAUAAAAAAA","15":"b:7wQshXcAHAAAAAAAAAAAUAAAAAAA"},"packages/cli/src/utils/strapi-utils.ts":{"54":"b:78UqkHYcJAsgAAAAAAAAAAAAAAAA","66":"b:78UqkHYcJAsgAAAAAAAAAAAAAAAA","76":"b:78UqkHYcJAsgAAAAAAAAAAAAAAAA","129":"b:78UqkHYcJAsgAAAAAAAAAAAAAAAA"},"packages/cli/src/utils.ts":{"10":"b://4/9e//fgUH80AQgAMAUCoDe6EA","14":"b://4/9e//fgUH80AQgAMAUCoDe6EA","15":"b://4/9e//fgUH80AQgAMAUCoDe6EA","17":"b://4/9e//fgUH80AQgAMAUCoDe6EA","22":"b://4/9e//fgUH80AQgAMAUCoDe6EA","42":"b://4/9e//fgUH80AQgAMAUCoDe6EA","46":"b://4/9e//fgUH80AQgAMAUCoDe6EA","48":"b://4/9e//fgUH80AQgAMAUCoDe6EA","53":"b://4/9e//fgUH80AQgAMAUCoDe6EA","58":"b://4/9e//fgUH80AQgAMAUCoDe6EA","64":"b://4/9e//fgUH80AQgAMAUCoDe6EA","77":"b://4/9e//fgUH80AQgAMAUCoDe6EA","79":"b://4/9e//fgUH80AQgAMAUCoDe6EA","84":"b://4/9e//fgUH80AQgAMAUCoDe6EA","104":"b://4/9e//fgUH80AQgAMAUCoDe6EA","111":"b://4/9e//fgUH80AQgAMAUCoDe6EA","131":"b://4/9e//fgUH80AQgAMAUCoDe6EA","143":"b://4/9e//fgUH80AQgAMAUCoDe6EA","147":"b://4/9e//fgUH80AQgAMAUCoDe6EA","155":"b://4/9e//fgUH80AQgAMAUCoDe6EA"},"packages/cli/src/webhooks/live-webhooks.ts":{"36":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","46":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","50":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","58":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","63":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","78":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","99":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","128":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","138":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","162":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","175":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","190":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","202":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","216":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA","232":"b:AAwAAAiIAAAQAAAAAAAAAAAgZoEA"},"packages/cli/src/webhooks/node-type-matcher.ts":{"5":"b:4AwEAAmICAAAAAAAAAAAAAggZoEA"},"packages/cli/src/webhooks/test-webhook-registrations.service.ts":{"28":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","40":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","47":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","76":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","85":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","90":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","98":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","106":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA","116":"b:4AQEAEEACAAAAAAAADAAAAgAAQAA"},"packages/cli/src/webhooks/test-webhooks.ts":{"56":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","72":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","102":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","150":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","164":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","215":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","238":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","244":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","267":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","271":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","278":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","281":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","294":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","307":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","353":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","356":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","364":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","375":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","458":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","486":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","493":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","507":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","515":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","516":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","525":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","537":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","544":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA","580":"b:7wYshGdIHAAAAAQAADAAQAgAAQAA"},"packages/cli/src/webhooks/waiting-forms.ts":{"23":[68,10,32],"26":[68,10,32],"30":[68,10,32],"36":[68,10,32],"47":[68,10,32],"59":[68,10,32],"79":[68,10,32],"158":[68,10,32]},"packages/cli/src/webhooks/waiting-webhooks.ts":{"44":[68,10,32,51,141],"55":[68,10,32,51,141],"63":[68,10,32,51,141],"67":[68,10,32,51,141],"71":[68,10,32,51,141],"75":[68,10,32,51,141],"82":[68,10,32,51,141],"95":[68,10,32,51,141],"106":[68,10,32,51,141],"132":[68,10,32,51,141],"153":[68,10,32,51,141],"174":[68,10,32,51,141],"256":[68,10,32,51,141],"265":[68,10,32,51,141],"316":[68,10,32,51,141],"344":[68,10,32,51,141],"357":[68,10,32,51,141]},"packages/cli/src/webhooks/webhook-execution-context.ts":{"17":"b:4AwEAEmICAAQAAAAAAAAAAggZoEA","28":"b:4AwEAEmICAAQAAAAAAAAAAggZoEA","46":"b:4AwEAEmICAAQAAAAAAAAAAggZoEA"},"packages/cli/src/webhooks/webhook-form-data.ts":{"10":[68,10,32],"13":[68,10,32],"20":[68,10,32],"32":[68,10,32],"33":[68,10,32],"46":[68,10,32],"47":[68,10,32]},"packages/cli/src/webhooks/webhook-helpers.ts":{"99":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","116":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","128":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","137":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","147":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","187":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","205":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","276":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","312":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","321":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","350":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","352":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","362":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","430":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","516":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","526":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","538":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","559":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","573":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","781":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","883":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","916":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","1000":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","1035":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","1119":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","1170":"b:7w68hG/IDAAAAAQAABAAAAggdoEA","1195":"b:7w68hG/IDAAAAAQAABAAAAggdoEA"},"packages/cli/src/webhooks/webhook-on-received-response-extractor.ts":{"13":"b:AAwEAEGICAAQAAAAAAAAAAAgZgAA"},"packages/cli/src/webhooks/webhook-request-handler.ts":{"34":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","43":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","96":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","112":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","121":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","124":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","137":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","143":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","152":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","182":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","236":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","244":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","283":"b:4AwEAEmICAAAAAAAABAAAAggZoEA","290":"b:4AwEAEmICAAAAAAAABAAAAggZoEA"},"packages/cli/src/webhooks/webhook-request-sanitizer.ts":{"12":"b:AAwEAAiICAAQAAAAAAAAAAggZoEA","18":"b:AAwEAAiICAAQAAAAAAAAAAggZoEA","19":"b:AAwEAAiICAAQAAAAAAAAAAggZoEA","32":"b:AAwEAAiICAAQAAAAAAAAAAggZoEA","40":"b:AAwEAAiICAAQAAAAAAAAAAggZoEA"},"packages/cli/src/webhooks/webhook-response-headers.ts":{"22":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","26":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","33":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","50":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","57":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","66":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","74":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA"},"packages/cli/src/webhooks/webhook-response.ts":{"37":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","41":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","45":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","49":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","53":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","59":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA","72":"b:4AwEAEmICAAAAAAAAAAAAAggZoEA"},"packages/cli/src/webhooks/webhook.service.ts":{"33":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","40":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","45":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","48":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","52":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","64":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","82":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","95":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","104":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","112":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","129":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","130":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","148":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","152":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","189":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","194":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","198":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","205":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","209":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","214":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","215":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","220":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","224":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","235":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","246":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","248":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","255":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","352":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","369":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","383":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","432":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","434":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","438":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","443":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","462":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","471":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","503":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB","534":"b:7w68hG/ITAAQAAQAAAAAAAgqd4EB"},"packages/cli/src/workflow-execute-additional-data.ts":{"71":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","116":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","162":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","180":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","238":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","271":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","288":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","344":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","362":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","374":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","394":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","395":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","400":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","414":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","415":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","429":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","448":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","619":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","629":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","658":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","706":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","712":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","722":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","759":"b:7074hS/MDAEQeAAAAMCQkABjOoEA","762":"b:7074hS/MDAEQeAAAAMCQkABjOoEA"},"packages/cli/src/workflow-helpers.ts":{"40":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","67":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","73":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","79":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","98":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","117":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","121":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","133":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","158":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","159":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","172":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","218":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","227":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","265":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","269":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","274":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","293":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","301":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","307":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","330":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","366":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","489":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","510":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","538":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","594":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA","616":"b:/8/+9X/ePAEQ8AAAABACEAgjfoEA"},"packages/cli/src/workflow-hook-context.service.ts":{"9":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","11":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","17":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/cli/src/workflow-runner.ts":{"66":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","76":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","95":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","163":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","184":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","262":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","298":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","317":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","327":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","392":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","397":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","452":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","462":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","472":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","494":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","522":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","548":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","550":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","663":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA","683":"b:7w48hW/IHAAAcAAAAAAAEAAAcoEA"},"packages/cli/src/workflows/triggers/trigger-execution-context.factory.ts":{"55":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","73":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","85":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","86":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","100":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","111":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","125":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","138":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","151":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","155":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","159":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","170":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","192":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","203":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","204":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","216":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","228":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","235":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","239":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","242":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","251":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB","281":"b:AAQUAAyIQAAQAAAAAAQAAAACVoEB"},"packages/cli/src/workflows/utils.ts":{"15":"b:78865i7eLAEAAAAAAAAAAAAACgAA","22":"b:78865i7eLAEAAAAAAAAAAAAACgAA","23":"b:78865i7eLAEAAAAAAAAAAAAACgAA","31":"b:78865i7eLAEAAAAAAAAAAAAACgAA","37":"b:78865i7eLAEAAAAAAAAAAAAACgAA","42":"b:78865i7eLAEAAAAAAAAAAAAACgAA"},"packages/cli/src/workflows/workflow-creation.service.ts":{"43":"b:78869q7fLAEAAAAAAAAAAAAACgAA","64":"b:78869q7fLAEAAAAAAAAAAAAACgAA","181":"b:78869q7fLAEAAAAAAAAAAAAACgAA","273":"b:78869q7fLAEAAAAAAAAAAAAACgAA","285":"b:78869q7fLAEAAAAAAAAAAAAACgAA","290":"b:78869q7fLAEAAAAAAAAAAAAACgAA"},"packages/cli/src/workflows/workflow-entity-mapper.ts":{"22":"b:78869i7eLAEAAAAAAAAAAAAACgAA","29":"b:78869i7eLAEAAAAAAAAAAAAACgAA","30":"b:78869i7eLAEAAAAAAAAAAAAACgAA"},"packages/cli/src/workflows/workflow-execution.service.ts":{"48":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","66":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","103":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","104":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","115":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","279":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","322":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","367":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","528":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","546":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","551":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","554":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","557":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","560":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","568":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","593":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","605":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","617":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","626":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB","633":"b:7wY8hGdIHAAQeCRBAMAA2QwAAAAB"},"packages/cli/src/workflows/workflow-finder.service.ts":{"15":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","21":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","54":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","72":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","95":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","141":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","152":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","155":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","181":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","208":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","219":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","227":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","258":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","261":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","265":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","274":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","286":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","289":"b:79++xa7f7AEgA0IAAAIAAAAACwAA","306":"b:79++xa7f7AEgA0IAAAIAAAAACwAA"},"packages/cli/src/workflows/workflow-history/workflow-history.controller.ts":{"20":"b:94UshXcMPAFgAAAAAABAAAAAAAAA","23":"b:94UshXcMPAFgAAAAAABAAAAAAAAA","40":"b:94UshXcMPAFgAAAAAABAAAAAAAAA","58":"b:94UshXcMPAFgAAAAAABAAAAAAAAA","79":"b:94UshXcMPAFgAAAAAABAAAAAAAAA","92":"b:94UshXcMPAFgAAAAAABAAAAAAAAA"},"packages/cli/src/workflows/workflow-history/workflow-history.service.ts":{"29":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","38":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","73":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","106":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","128":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","171":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","218":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","266":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","286":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","311":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","314":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA","332":"b:/88+5T/ebAFgAAAAAARAAAAIWgAA"},"packages/cli/src/workflows/workflow-sharing.service.ts":{"22":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","37":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","45":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","70":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","73":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","87":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","90":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","98":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","101":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","107":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","114":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB","127":"b:7w4sh2eIHAAQAAAAAICAEQBARIEB"},"packages/cli/src/workflows/workflow-static-data.service.ts":{"11":"b:4AwUAA2ISAAQAAAAAAQAAAgqdoEB","18":"b:4AwUAA2ISAAQAAAAAAQAAAgqdoEB","27":"b:4AwUAA2ISAAQAAAAAAQAAAgqdoEB","48":"b:4AwUAA2ISAAQAAAAAAQAAAgqdoEB","54":"b:4AwUAA2ISAAQAAAAAAQAAAgqdoEB"},"packages/cli/src/workflows/workflow-validation.service.ts":{"50":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","51":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","56":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","67":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","129":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","130":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","153":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","185":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","246":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","267":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","306":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","343":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","368":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","390":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","420":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","425":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","459":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","478":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","503":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","511":"b:788+5S/ebgEQgAAAgAAIAAACX4EB","532":"b:788+5S/ebgEQgAAAgAAIAAACX4EB"},"packages/cli/src/workflows/workflow.service.ee.ts":{"43":"b:/88+5//ePgEQgAABgAYIEAQACgAA","60":"b:/88+5//ePgEQgAABgAYIEAQACgAA","73":"b:/88+5//ePgEQgAABgAYIEAQACgAA","75":"b:/88+5//ePgEQgAABgAYIEAQACgAA","82":"b:/88+5//ePgEQgAABgAYIEAQACgAA","93":"b:/88+5//ePgEQgAABgAYIEAQACgAA","105":"b:/88+5//ePgEQgAABgAYIEAQACgAA","115":"b:/88+5//ePgEQgAABgAYIEAQACgAA","119":"b:/88+5//ePgEQgAABgAYIEAQACgAA","131":"b:/88+5//ePgEQgAABgAYIEAQACgAA","132":"b:/88+5//ePgEQgAABgAYIEAQACgAA","146":"b:/88+5//ePgEQgAABgAYIEAQACgAA","150":"b:/88+5//ePgEQgAABgAYIEAQACgAA","154":"b:/88+5//ePgEQgAABgAYIEAQACgAA","159":"b:/88+5//ePgEQgAABgAYIEAQACgAA","167":"b:/88+5//ePgEQgAABgAYIEAQACgAA","191":"b:/88+5//ePgEQgAABgAYIEAQACgAA","203":"b:/88+5//ePgEQgAABgAYIEAQACgAA","215":"b:/88+5//ePgEQgAABgAYIEAQACgAA","219":"b:/88+5//ePgEQgAABgAYIEAQACgAA","222":"b:/88+5//ePgEQgAABgAYIEAQACgAA","239":"b:/88+5//ePgEQgAABgAYIEAQACgAA","248":"b:/88+5//ePgEQgAABgAYIEAQACgAA","261":"b:/88+5//ePgEQgAABgAYIEAQACgAA","265":"b:/88+5//ePgEQgAABgAYIEAQACgAA","270":"b:/88+5//ePgEQgAABgAYIEAQACgAA","272":"b:/88+5//ePgEQgAABgAYIEAQACgAA","281":"b:/88+5//ePgEQgAABgAYIEAQACgAA","335":"b:/88+5//ePgEQgAABgAYIEAQACgAA","357":"b:/88+5//ePgEQgAABgAYIEAQACgAA","426":"b:/88+5//ePgEQgAABgAYIEAQACgAA","449":"b:/88+5//ePgEQgAABgAYIEAQACgAA","474":"b:/88+5//ePgEQgAABgAYIEAQACgAA","499":"b:/88+5//ePgEQgAABgAYIEAQACgAA","514":"b:/88+5//ePgEQgAABgAYIEAQACgAA","540":"b:/88+5//ePgEQgAABgAYIEAQACgAA","551":"b:/88+5//ePgEQgAABgAYIEAQACgAA","575":"b:/88+5//ePgEQgAABgAYIEAQACgAA","579":"b:/88+5//ePgEQgAABgAYIEAQACgAA","601":"b:/88+5//ePgEQgAABgAYIEAQACgAA","606":"b:/88+5//ePgEQgAABgAYIEAQACgAA","619":"b:/88+5//ePgEQgAABgAYIEAQACgAA","633":"b:/88+5//ePgEQgAABgAYIEAQACgAA","639":"b:/88+5//ePgEQgAABgAYIEAQACgAA","660":"b:/88+5//ePgEQgAABgAYIEAQACgAA"},"packages/cli/src/workflows/workflow.service.ts":{"67":"b://8+7//f/AUX80EAogIAEAAK34EB","96":"b://8+7//f/AUX80EAogIAEAAK34EB","163":"b://8+7//f/AUX80EAogIAEAAK34EB","208":"b://8+7//f/AUX80EAogIAEAAK34EB","229":"b://8+7//f/AUX80EAogIAEAAK34EB","233":"b://8+7//f/AUX80EAogIAEAAK34EB","236":"b://8+7//f/AUX80EAogIAEAAK34EB","240":"b://8+7//f/AUX80EAogIAEAAK34EB","246":"b://8+7//f/AUX80EAogIAEAAK34EB","258":"b://8+7//f/AUX80EAogIAEAAK34EB","261":"b://8+7//f/AUX80EAogIAEAAK34EB","262":"b://8+7//f/AUX80EAogIAEAAK34EB","265":"b://8+7//f/AUX80EAogIAEAAK34EB","266":"b://8+7//f/AUX80EAogIAEAAK34EB","270":"b://8+7//f/AUX80EAogIAEAAK34EB","276":"b://8+7//f/AUX80EAogIAEAAK34EB","281":"b://8+7//f/AUX80EAogIAEAAK34EB","287":"b://8+7//f/AUX80EAogIAEAAK34EB","295":"b://8+7//f/AUX80EAogIAEAAK34EB","302":"b://8+7//f/AUX80EAogIAEAAK34EB","306":"b://8+7//f/AUX80EAogIAEAAK34EB","308":"b://8+7//f/AUX80EAogIAEAAK34EB","323":"b://8+7//f/AUX80EAogIAEAAK34EB","393":"b://8+7//f/AUX80EAogIAEAAK34EB","633":"b://8+7//f/AUX80EAogIAEAAK34EB","705":"b://8+7//f/AUX80EAogIAEAAK34EB","729":"b://8+7//f/AUX80EAogIAEAAK34EB","739":"b://8+7//f/AUX80EAogIAEAAK34EB","757":"b://8+7//f/AUX80EAogIAEAAK34EB","955":"b://8+7//f/AUX80EAogIAEAAK34EB","1032":"b://8+7//f/AUX80EAogIAEAAK34EB","1064":"b://8+7//f/AUX80EAogIAEAAK34EB","1065":"b://8+7//f/AUX80EAogIAEAAK34EB","1077":"b://8+7//f/AUX80EAogIAEAAK34EB","1144":"b://8+7//f/AUX80EAogIAEAAK34EB","1179":"b://8+7//f/AUX80EAogIAEAAK34EB","1183":"b://8+7//f/AUX80EAogIAEAAK34EB","1187":"b://8+7//f/AUX80EAogIAEAAK34EB","1191":"b://8+7//f/AUX80EAogIAEAAK34EB","1203":"b://8+7//f/AUX80EAogIAEAAK34EB","1211":"b://8+7//f/AUX80EAogIAEAAK34EB","1220":"b://8+7//f/AUX80EAogIAEAAK34EB","1221":"b://8+7//f/AUX80EAogIAEAAK34EB","1232":"b://8+7//f/AUX80EAogIAEAAK34EB","1233":"b://8+7//f/AUX80EAogIAEAAK34EB","1238":"b://8+7//f/AUX80EAogIAEAAK34EB","1244":"b://8+7//f/AUX80EAogIAEAAK34EB","1252":"b://8+7//f/AUX80EAogIAEAAK34EB","1259":"b://8+7//f/AUX80EAogIAEAAK34EB","1270":"b://8+7//f/AUX80EAogIAEAAK34EB","1272":"b://8+7//f/AUX80EAogIAEAAK34EB","1279":"b://8+7//f/AUX80EAogIAEAAK34EB","1289":"b://8+7//f/AUX80EAogIAEAAK34EB","1290":"b://8+7//f/AUX80EAogIAEAAK34EB","1310":"b://8+7//f/AUX80EAogIAEAAK34EB","1337":"b://8+7//f/AUX80EAogIAEAAK34EB","1376":"b://8+7//f/AUX80EAogIAEAAK34EB","1398":"b://8+7//f/AUX80EAogIAEAAK34EB","1405":"b://8+7//f/AUX80EAogIAEAAK34EB","1452":"b://8+7//f/AUX80EAogIAEAAK34EB","1458":"b://8+7//f/AUX80EAogIAEAAK34EB"},"packages/cli/src/workflows/workflows.controller.ts":{"71":"b://9+///f/g83gwQIgsIBUAQK34EB","97":"b://9+///f/g83gwQIgsIBUAQK34EB","129":"b://9+///f/g83gwQIgsIBUAQK34EB","154":"b://9+///f/g83gwQIgsIBUAQK34EB","170":"b://9+///f/g83gwQIgsIBUAQK34EB","204":"b://9+///f/g83gwQIgsIBUAQK34EB","287":"b://9+///f/g83gwQIgsIBUAQK34EB","294":"b://9+///f/g83gwQIgsIBUAQK34EB","338":"b://9+///f/g83gwQIgsIBUAQK34EB","349":"b://9+///f/g83gwQIgsIBUAQK34EB","370":"b://9+///f/g83gwQIgsIBUAQK34EB","404":"b://9+///f/g83gwQIgsIBUAQK34EB","438":"b://9+///f/g83gwQIgsIBUAQK34EB","472":"b://9+///f/g83gwQIgsIBUAQK34EB","503":"b://9+///f/g83gwQIgsIBUAQK34EB","546":"b://9+///f/g83gwQIgsIBUAQK34EB","552":"b://9+///f/g83gwQIgsIBUAQK34EB","566":"b://9+///f/g83gwQIgsIBUAQK34EB","567":"b://9+///f/g83gwQIgsIBUAQK34EB","571":"b://9+///f/g83gwQIgsIBUAQK34EB","572":"b://9+///f/g83gwQIgsIBUAQK34EB","576":"b://9+///f/g83gwQIgsIBUAQK34EB","577":"b://9+///f/g83gwQIgsIBUAQK34EB","598":"b://9+///f/g83gwQIgsIBUAQK34EB","622":"b://9+///f/g83gwQIgsIBUAQK34EB","629":"b://9+///f/g83gwQIgsIBUAQK34EB","646":"b://9+///f/g83gwQIgsIBUAQK34EB","667":"b://9+///f/g83gwQIgsIBUAQK34EB","689":"b://9+///f/g83gwQIgsIBUAQK34EB","715":"b://9+///f/g83gwQIgsIBUAQK34EB","734":"b://9+///f/g83gwQIgsIBUAQK34EB"},"packages/community-node-types-utils.ts":{"34":"b:78UqkHYcJAsgAAAAAAAAAAAAAAAA","40":"b:78UqkHYcJAsgAAAAAAAAAAAAAAAA","57":"b:78UqkHYcJAsgAAAAAAAAAAAAAAAA"},"packages/community-node-types.controller.ts":{"9":"b:78UqlXYcJAsgAAAAAAAAAAAAAAAA","12":"b:78UqlXYcJAsgAAAAAAAAAAAAAAAA","17":"b:78UqlXYcJAsgAAAAAAAAAAAAAAAA"},"packages/community-node-types.service.ts":{"31":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","37":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","54":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","85":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","127":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","135":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","151":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","153":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","166":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","188":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","194":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","199":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","204":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","206":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","208":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","211":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","218":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","224":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","231":"b:78UqlXYcJAswAACAAAAAAAAAAAAA","236":"b:78UqlXYcJAswAACAAAAAAAAAAAAA"},"packages/core/src/execution-engine/execution-context-hook-registry.service.ts":{"17":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","33":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","83":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","92":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","105":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","106":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","111":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/execution-engine/execution-context.service.ts":{"22":"b:7w48hS/IHAAQcAQBACAAUAAAcgEA","28":"b:7w48hS/IHAAQcAQBACAAUAAAcgEA","48":"b:7w48hS/IHAAQcAQBACAAUAAAcgEA","57":"b:7w48hS/IHAAQcAQBACAAUAAAcgEA","69":"b:7w48hS/IHAAQcAQBACAAUAAAcgEA","77":"b:7w48hS/IHAAQcAQBACAAUAAAcgEA"},"packages/core/src/execution-engine/execution-context.ts":{"104":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/execution-engine/execution-lifecycle-hooks.ts":{"103":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","110":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","118":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/execution-engine/index.ts":{"101":"b:7w48hS/IDAAAcAAAAAAAEAggdoEB"},"packages/core/src/execution-engine/node-execution-context/base-execute-context.ts":{"44":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","59":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","63":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","67":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","68":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","75":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","79":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","86":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","91":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","101":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","113":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","120":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","164":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","184":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","196":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","212":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","216":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","234":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","242":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","258":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","264":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","289":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","300":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA","325":"b:7w68hU+IDAAQeAQAAMCQkQBjcIEA"},"packages/core/src/execution-engine/node-execution-context/execute-context.ts":{"54":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","101":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","103":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","111":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","115":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","125":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","140":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","144":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","159":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","184":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","205":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","213":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","215":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","227":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","232":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","237":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","241":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","245":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA","250":"b:7w48hVeIDAAAcAAAAIAAEAAAcIEA"},"packages/core/src/execution-engine/node-execution-context/index.ts":{"2":"b:7078hW/MDAEQcAABAKQAUDoif4EA","3":"b:7078hW/MDAEQcAABAKQAUDoif4EA","9":"b:7078hW/MDAEQcAABAKQAUDoif4EA","10":"b:7078hW/MDAEQcAABAKQAUDoif4EA","15":"b:7078hW/MDAEQcAABAKQAUDoif4EA","16":"b:7078hW/MDAEQcAABAKQAUDoif4EA","17":"b:7078hW/MDAEQcAABAKQAUDoif4EA"},"packages/core/src/execution-engine/node-execution-context/node-execution-context.ts":{"52":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","64":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","69":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","81":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","85":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","89":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","93":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","98":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","102":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","106":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","128":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","166":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","177":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","181":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","186":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","197":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","207":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","212":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","214":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","218":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","223":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","225":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","229":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","232":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","233":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","234":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","237":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","241":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","245":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","249":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","253":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","257":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","265":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","269":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","294":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","298":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","307":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","318":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","370":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","475":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","480":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","490":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","585":"b:7068hW/MDAAQeAAgAFQAURgjd4EB","600":"b:7068hW/MDAAQeAAgAFQAURgjd4EB"},"packages/core/src/execution-engine/node-execution-context/utils/binary-helper-functions.ts":{"33":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","40":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","47":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","56":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","128":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","155":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","167":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","180":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","201":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","244":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","291":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","342":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","351":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","355":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","357":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA","359":"b:7w48hX/IDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/execution-engine/node-execution-context/utils/cleanup-parameter-data.ts":{"8":"b:7048hW+MDAAAcCAIAAAAUAwAcgEA","14":"b:7048hW+MDAAAcCAIAAAAUAwAcgEA","19":"b:7048hW+MDAAAcCAIAAAAUAwAcgEA"},"packages/core/src/execution-engine/node-execution-context/utils/credential-check-helper-functions.ts":{"3":"b:7w48hUeIDAAAcAAAAIAAEAAAcAEA","9":"b:7w48hUeIDAAAcAAAAIAAEAAAcAEA"},"packages/core/src/execution-engine/node-execution-context/utils/custom-data.ts":{"15":"b:7w48hQ+IDAAAcAAgAJAAEAAAcAEA","23":"b:7w48hQ+IDAAAcAAgAJAAEAAAcAEA","34":"b:7w48hQ+IDAAAcAAgAJAAEAAAcAEA","45":"b:7w48hQ+IDAAAcAAgAJAAEAAAcAEA","48":"b:7w48hQ+IDAAAcAAgAJAAEAAAcAEA"},"packages/core/src/execution-engine/node-execution-context/utils/data-table-helper-functions.ts":{"8":"b:7044hQ+IDAAAcAAAAIAAEAAAcAEA","16":"b:7044hQ+IDAAAcAAAAIAAEAAAcAEA","22":"b:7044hQ+IDAAAcAAAAIAAEAAAcAEA"},"packages/core/src/execution-engine/node-execution-context/utils/deduplication-helper-functions.ts":{"16":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","30":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","46":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","60":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","72":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","84":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","88":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","95":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","109":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","116":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA","122":"b:7w48hQ+IDAAAcAAAAIAAEAAAcAEA"},"packages/core/src/execution-engine/node-execution-context/utils/file-system-helper-functions.ts":{"41":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","47":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","48":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","49":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","54":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","71":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","79":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","80":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","81":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","90":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","99":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","120":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","126":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","136":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","142":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","143":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","151":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","163":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","171":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","183":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","236":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","239":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","245":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","272":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","273":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","327":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","331":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","427":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","439":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","442":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","446":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA","454":"b:7w48hR+IDAAAcAAAAIAAEAAAcAEA"},"packages/core/src/execution-engine/node-execution-context/utils/get-additional-keys.ts":{"13":"b:7058hS+MDAEAcAAAAIAAEAAAegEA","20":"b:7058hS+MDAEAcAAAAIAAEAAAegEA","62":"b:7058hS+MDAEAcAAAAIAAEAAAegEA"},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/factory.ts":{"27":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","34":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","69":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","89":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","90":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","112":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","130":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","144":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","169":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","189":"b:7044hS/IHAAAcAAAAACAUBIAcgEA","208":"b:7044hS/IHAAAcAAAAACAUBIAcgEA"},"packages/core/src/execution-engine/node-execution-context/utils/resolve-source-overwrite.ts":{"7":"b:7w48hWfIDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/execution-engine/node-execution-context/utils/ssh-tunnel-helper-functions.ts":{"7":"b:7044hS/IDAAAcAAAAAAAEAAAcAEA","10":"b:7044hS/IDAAAcAAAAAAAEAAAcAEA","12":"b:7044hS/IDAAAcAAAAAAAEAAAcAEA"},"packages/core/src/execution-engine/node-execution-context/utils/validate-value-against-schema.ts":{"20":"b:7048hX+MDAAYcIAIAAAAUSwCcoEA","44":"b:7048hX+MDAAYcIAIAAAAUSwCcoEA","77":"b:7048hX+MDAAYcIAIAAAAUSwCcoEA","89":"b:7048hX+MDAAYcIAIAAAAUSwCcoEA","151":"b:7048hX+MDAAYcIAIAAAAUSwCcoEA","162":"b:7048hX+MDAAYcIAIAAAAUSwCcoEA"},"packages/core/src/execution-engine/node-execution-context/utils/webhook-helper-functions.ts":{"13":"b:AAwEAECICAAQAAAAAAAAAAggZ4EA","33":"b:AAwEAECICAAQAAAAAAAAAAggZ4EA"},"packages/core/src/execution-engine/node-execution-context/webhook-context.ts":{"36":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","88":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","99":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","103":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","107":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","111":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","115":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","119":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","123":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","130":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","138":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","156":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","160":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","167":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","177":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","184":"b:4AyEAEmICAAQAAAgABAAAAggZoEA","191":"b:4AyEAEmICAAQAAAgABAAAAggZoEA"},"packages/core/src/execution-engine/requests-response.ts":{"31":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","55":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","89":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","187":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","203":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","238":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","285":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA","291":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/execution-engine/ssh-clients-manager.ts":{"10":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","16":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","17":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","67":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","69":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","85":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","88":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","108":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","133":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","135":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","157":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","158":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","162":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","166":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","170":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","180":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","191":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA","203":"b:/145h2/IDQAAcUAgAMAEUAAAcAEA"},"packages/core/src/execution-engine/workflow-execute.ts":{"112":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","130":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","197":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","205":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","308":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","340":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","381":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","409":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","428":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","631":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","848":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","915":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","933":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","944":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","986":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","999":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1010":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1025":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1030":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1039":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1090":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1097":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1099":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1124":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1192":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1212":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1265":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1300":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1320":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1449":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1477":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1503":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1529":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1575":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1591":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1596":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1605":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1695":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1700":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1777":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1778":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1807":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1808":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1926":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1930":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","1977":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2267":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2363":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2380":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2383":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2410":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2415":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2452":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2468":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2486":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2507":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2526":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2547":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2603":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2684":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2695":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2707":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2813":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2873":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2874":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2876":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA","2884":"b:7w48hWfIHAAQcKQBAOCA8QRwdgEA"},"packages/core/src/html-sandbox.ts":{"4":"b:4A4EAEGICAAQAAAAAAAAAAggZoAA","8":"b:4A4EAEGICAAQAAAAAAAAAAggZoAA","15":"b:4A4EAEGICAAQAAAAAAAAAAggZoAA"},"packages/core/src/instance-settings/instance-settings.ts":{"67":[5,6,7,10,18,32,38,51,131,144],"89":[5,6,7,10,18,32,38,51,131,144],"102":[5,6,7,10,18,32,38,51,131,144],"103":[5,6,7,10,18,32,38,51,131,144],"111":[5,6,7,10,18,32,38,51,131,144],"112":[5,6,7,10,18,32,38,51,131,144],"118":[5,6,7,10,18,32,38,51,131,144],"171":[5,6,7,10,18,32,38,51,131,144],"175":[5,6,7,10,18,32,38,51,131,144],"180":[5,6,7,10,18,32,38,51,131,144],"185":[5,6,7,10,18,32,38,51,131,144],"189":[5,6,7,10,18,32,38,51,131,144],"193":[5,6,7,10,18,32,38,51,131,144],"197":[5,6,7,10,18,32,38,51,131,144],"201":[5,6,7,10,18,32,38,51,131,144],"205":[5,6,7,10,18,32,38,51,131,144],"209":[5,6,7,10,18,32,38,51,131,144],"213":[5,6,7,10,18,32,38,51,131,144],"217":[5,6,7,10,18,32,38,51,131,144],"221":[5,6,7,10,18,32,38,51,131,144],"229":[5,6,7,10,18,32,38,51,131,144],"252":[5,6,7,10,18,32,38,51,131,144],"260":[5,6,7,10,18,32,38,51,131,144],"307":[5,6,7,10,18,32,38,51,131,144],"314":[5,6,7,10,18,32,38,51,131,144],"322":[5,6,7,10,18,32,38,51,131,144],"330":[5,6,7,10,18,32,38,51,131,144],"358":[5,6,7,10,18,32,38,51,131,144],"363":[5,6,7,10,18,32,38,51,131,144],"384":[5,6,7,10,18,32,38,51,131,144],"396":[5,6,7,10,18,32,38,51,131,144]},"packages/core/src/nodes-loader/directory-loader.ts":{"37":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","88":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","108":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","117":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","123":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","135":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","139":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","143":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","145":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","146":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","147":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","150":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","165":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","229":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","242":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","260":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","289":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","310":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","313":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","325":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","327":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","332":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","344":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","369":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","400":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","406":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","412":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","424":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","443":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","460":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","479":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","499":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","513":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","533":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","539":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","540":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","542":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","548":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","582":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA","604":"b:/84+9WfcLAEQcACAAIAAEAwgXoEA"},"packages/core/src/observability/tracing/tracing.ts":{"38":"b:78865S7eLAEAAAAAAAAAAAAACgAA","62":"b:78865S7eLAEAAAAAAAAAAAAACgAA","69":"b:78865S7eLAEAAAAAAAAAAAAACgAA","77":"b:78865S7eLAEAAAAAAAAAAAAACgAA","86":"b:78865S7eLAEAAAAAAAAAAAAACgAA","94":"b:78865S7eLAEAAAAAAAAAAAAACgAA","102":"b:78865S7eLAEAAAAAAAAAAAAACgAA"},"packages/core/src/storage.config.ts":{"22":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","34":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","40":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","68":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","103":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/utils/assertions.ts":{"14":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","31":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/utils/convert-binary-data.ts":{"13":"b:7w48hSfIDAAAcAAAAAAAEAAAcgEA"},"packages/core/src/utils/deep-merge.ts":{"4":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","17":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/nodes-base/nodes/Form/Form.node.ts":{"354":[4,10,79,83,31,32,44,120,130,56],"437":[4,10,79,83,31,32,44,120,130,56],"445":[4,10,79,83,31,32,44,120,130,56],"455":[4,10,79,83,31,32,44,120,130,56]},"packages/nodes-base/nodes/Form/FormTrigger.node.ts":{"8":[145,10,32,139]},"packages/nodes-base/nodes/Form/utils/formCompletionUtils.ts":{"22":[4,10,79,83,31,32,44,120,130,56],"26":[4,10,79,83,31,32,44,120,130,56],"33":[4,10,79,83,31,32,44,120,130,56],"52":[4,10,79,83,31,32,44,120,130,56]},"packages/nodes-base/nodes/Form/utils/formNodeUtils.ts":{"20":[4,10,79,83,31,32,44,120,130,56],"92":[4,10,79,83,31,32,44,120,130,56],"95":[4,10,79,83,31,32,44,120,130,56]},"packages/nodes-base/nodes/Form/utils/utils.ts":{"58":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","71":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","149":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","150":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","153":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","154":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","166":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","186":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","198":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","209":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","217":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","296":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","316":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","338":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","344":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","383":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","434":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","463":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","541":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","581":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","633":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","634":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","643":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","645":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","661":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","682":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","711":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","749":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","758":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","932":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA","963":"b:EAQAgAEQCAEQgAwAAAAAAQQoAgAA"},"packages/nodes-base/nodes/Form/v1/FormTriggerV1.node.ts":{"91":[145,10,32,139],"98":[145,10,32,139]},"packages/nodes-base/nodes/Form/v2/FormTriggerV2.node.ts":{"154":[145,10,32,139],"269":[145,10,32,139],"276":[145,10,32,139]},"packages/nodes-base/nodes/Set/Set.node.ts":{"8":"b:5gwEBUSMKAAAAACiAEACEAQAEAAA"},"packages/nodes-base/nodes/Set/v1/SetV1.node.ts":{"139":"b:5gwEBUSMOAAAAACiAEAC0QQAEAAA","146":"b:5gwEBUSMOAAAAACiAEAC0QQAEAAA","182":"b:5gwEBUSMOAAAAACiAEAC0QQAEAAA","193":"b:5gwEBUSMOAAAAACiAEAC0QQAEAAA","211":"b:5gwEBUSMOAAAAACiAEAC0QQAEAAA"},"packages/nodes-base/nodes/Set/v2/SetV2.node.ts":{"302":"b:5gwEBUSMKAAAAACqAEACUAQBMAAA","309":"b:5gwEBUSMKAAAAACqAEACUAQBMAAA"},"packages/nodes-base/nodes/Set/v2/helpers/utils.ts":{"28":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","31":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","34":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","37":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","43":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","46":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","49":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","56":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","89":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","90":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","104":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","105":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","130":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","161":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","214":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","228":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","230":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","237":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA","257":"b:5gwEBUSMKAAAAACqAEACEAwDNAAA"},"packages/nodes-base/nodes/Set/v2/manual.mode.ts":{"189":"b:5gwEBUSMKAAAAACqAEACUAQBMAAA"},"packages/nodes-base/nodes/Set/v2/raw.mode.ts":{"36":"b:5gwEBUSMKAAAAACiAEACEAQAEAAA"},"packages/nodes-base/nodes/Wait/Wait.node.ts":{"229":[68,10,82,87,120,51,139,141],"501":[68,10,82,87,120,51,139,141],"507":[68,10,82,87,120,51,139,141],"522":[68,10,82,87,120,51,139,141],"599":[68,10,82,87,120,51,139,141],"600":[68,10,82,87,120,51,139,141],"601":[68,10,82,87,120,51,139,141],"612":[68,10,82,87,120,51,139,141],"643":[68,10,82,87,120,51,139,141]},"packages/nodes-base/nodes/Wait/validation.ts":{"1":[68,10,82,87,120,51,139,141],"6":[68,10,82,87,120,51,139,141]},"packages/nodes-base/nodes/Webhook/Webhook.node.ts":{"204":"b:AAwGAECICAAQAAQAAAAAAAggZoEA","216":"b:AAwGAECICAAQAAQAAAAAAAggZoEA","335":"b:AAwGAECICAAQAAQAAAAAAAggZoEA","339":"b:AAwGAECICAAQAAQAAAAAAAggZoEA"},"packages/nodes-base/nodes/Webhook/description.ts":{"19":"b:AAwGAECICAAQAAQAAAAAAAggRoEA","56":"b:AAwGAECICAAQAAQAAAAAAAggRoEA"},"packages/nodes-base/nodes/Webhook/error.ts":{"4":"b:EAyGgEmYCAEQAAQAAAAAAAwgRoEA"},"packages/nodes-base/nodes/Webhook/utils.ts":{"37":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","54":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","68":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","79":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","89":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","106":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","117":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","119":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","130":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","140":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","155":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","166":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","204":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","209":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","235":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","358":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","423":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA","441":"b:EAyGgEmYCAEQAAQAAAAAAAwgZoEA"},"packages/nodes-base/utils/sendAndWait/configureWaitTillDate.util.ts":{"4":[4,10,79,83,31,32,44,120,130,56]},"packages/nodes-base/utils/utilities.ts":{"34":"b:/owshVecKAEAcACiAEACEQADGoEA","53":"b:/owshVecKAEAcACiAEACEQADGoEA","65":"b:/owshVecKAEAcACiAEACEQADGoEA","70":"b:/owshVecKAEAcACiAEACEQADGoEA","86":"b:/owshVecKAEAcACiAEACEQADGoEA","89":"b:/owshVecKAEAcACiAEACEQADGoEA","113":"b:/owshVecKAEAcACiAEACEQADGoEA","136":"b:/owshVecKAEAcACiAEACEQADGoEA","140":"b:/owshVecKAEAcACiAEACEQADGoEA","148":"b:/owshVecKAEAcACiAEACEQADGoEA","167":"b:/owshVecKAEAcACiAEACEQADGoEA","174":"b:/owshVecKAEAcACiAEACEQADGoEA","183":"b:/owshVecKAEAcACiAEACEQADGoEA","186":"b:/owshVecKAEAcACiAEACEQADGoEA","189":"b:/owshVecKAEAcACiAEACEQADGoEA","267":"b:/owshVecKAEAcACiAEACEQADGoEA","271":"b:/owshVecKAEAcACiAEACEQADGoEA","276":"b:/owshVecKAEAcACiAEACEQADGoEA","278":"b:/owshVecKAEAcACiAEACEQADGoEA","287":"b:/owshVecKAEAcACiAEACEQADGoEA","309":"b:/owshVecKAEAcACiAEACEQADGoEA","336":"b:/owshVecKAEAcACiAEACEQADGoEA","345":"b:/owshVecKAEAcACiAEACEQADGoEA","346":"b:/owshVecKAEAcACiAEACEQADGoEA","356":"b:/owshVecKAEAcACiAEACEQADGoEA","365":"b:/owshVecKAEAcACiAEACEQADGoEA","387":"b:/owshVecKAEAcACiAEACEQADGoEA","389":"b:/owshVecKAEAcACiAEACEQADGoEA","413":"b:/owshVecKAEAcACiAEACEQADGoEA","414":"b:/owshVecKAEAcACiAEACEQADGoEA","417":"b:/owshVecKAEAcACiAEACEQADGoEA","441":"b:/owshVecKAEAcACiAEACEQADGoEA","447":"b:/owshVecKAEAcACiAEACEQADGoEA","454":"b:/owshVecKAEAcACiAEACEQADGoEA"},"packages/workflow/src/common/get-child-nodes.ts":{"5":"b:6A48hQXIDAAAeCAAAMAAAAAAdgEA"},"packages/workflow/src/common/get-connected-nodes.ts":{"13":"b:7w48hS/IHAAAcAABAIAA0QQAcgEA","29":"b:7w48hS/IHAAAcAABAIAA0QQAcgEA","63":"b:7w48hS/IHAAAcAABAIAA0QQAcgEA","77":"b:7w48hS/IHAAAcAABAIAA0QQAcgEA","83":"b:7w48hS/IHAAAcAABAIAA0QQAcgEA","84":"b:7w48hS/IHAAAcAABAIAA0QQAcgEA"},"packages/workflow/src/common/get-parent-nodes.ts":{"11":"b:5wSYBSsAGAAAcAAAAAAA0AQAIAAA"},"packages/workflow/src/common/map-connections-by-destination.ts":{"5":"b:7054hS/MDAEAcAAAAAAAEAAAGgAA"},"packages/workflow/src/common/resolve-variables.ts":{"23":"b:7054hS/MDAEAcAAAAAAAEAAAGgAA"},"packages/workflow/src/credential-domain-restrictions.ts":{"55":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","59":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","66":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","75":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","87":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","92":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","99":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","117":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","134":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","148":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA","182":"b:78UqkHZcJAsgAAAAAAAAAAAASAAA"},"packages/workflow/src/execution-context-establishment-hooks.ts":{"41":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/workflow/src/execution-status.ts":{"16":"b:7w48hSfIDAAAAAAAAAAAEAAAcgEA","29":"b:7w48hSfIDAAAAAAAAAAAEAAAcgEA"},"packages/workflow/src/expression-evaluator-proxy.ts":{"8":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA","15":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA","19":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA"},"packages/workflow/src/expression-sandboxing.ts":{"22":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","25":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","73":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","74":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","93":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","137":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","139":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","171":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","195":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","211":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","248":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","250":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","326":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","356":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","358":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","367":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","384":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","393":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","413":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","433":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","442":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","451":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","460":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","469":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","508":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","533":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","542":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","551":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA","557":"b:4QwUAEmICAAQcAAAAEAAEQwhdoEA"},"packages/workflow/src/expression.ts":{"35":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","38":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","41":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","45":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","59":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","112":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","113":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","137":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","151":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","183":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","185":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","193":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","197":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","208":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","210":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","217":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","220":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","231":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","237":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","246":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","260":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","262":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","283":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","288":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","296":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","307":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","320":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","324":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","481":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","490":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","531":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA","628":"b:7058hS/MDAEAcAAAAEAAUAQDWoEA"},"packages/workflow/src/extensions/expression-extension.ts":{"25":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","29":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","64":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","66":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","69":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","77":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","79":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","95":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","124":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","133":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","160":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","174":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","183":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","196":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","208":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","387":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","405":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","440":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","457":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","519":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","527":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","535":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","555":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","571":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","579":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","583":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","584":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","598":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA"},"packages/workflow/src/extensions/expression-parser.ts":{"20":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","24":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","93":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","97":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA","99":"b:4wwUAAmICAAAcIAAAEAAEAQDUoEA"},"packages/workflow/src/extensions/index.ts":{"7":"b:4wwUAAmICAAAcAAAAEAAEAQBUoEA"},"packages/workflow/src/global-state.ts":{"9":"b:7054hS/MDAEAcAAAAAAAEAAAGgAA","13":"b:7054hS/MDAEAcAAAAAAAEAAAGgAA"},"packages/workflow/src/index.ts":{"92":"b:/8c+5X/cPgEA8CgAgAAI0SQCeoEA","101":"b:/8c+5X/cPgEA8CgAgAAI0SQCeoEA"},"packages/workflow/src/interfaces.ts":{"128":"b:/449hQ/uDAEA8AAQAIEAEAAAegEA","2356":"b:/449hQ/uDAEA8AAQAIEAEAAAegEA","2373":"b:/449hQ/uDAEA8AAQAIEAEAAAegEA"},"packages/workflow/src/logger-proxy.ts":{"3":"b:Lw4kgCeIBAAAAAAAAAAAEAAAcgEA","9":"b:Lw4kgCeIBAAAAAAAAAAAEAAAcgEA","10":"b:Lw4kgCeIBAAAAAAAAAAAEAAAcgEA","11":"b:Lw4kgCeIBAAAAAAAAAAAEAAAcgEA","12":"b:Lw4kgCeIBAAAAAAAAAAAEAAAcgEA","13":"b:Lw4kgCeIBAAAAAAAAAAAEAAAcgEA"},"packages/workflow/src/node-helpers.ts":{"252":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","260":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","270":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","280":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","295":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","317":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","318":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","335":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","339":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","354":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","413":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","440":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","479":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","515":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","552":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","587":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","592":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","668":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","936":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","975":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1007":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1008":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1056":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1086":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1116":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1137":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1146":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1150":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1156":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1159":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1182":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1244":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1280":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1306":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1336":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1350":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1375":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1403":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1438":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1453":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1464":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1469":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1495":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1507":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1550":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1553":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1718":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1759":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1767":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1779":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1789":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1793":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1810":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1819":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1825":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1827":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1835":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1839":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1863":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1898":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1905":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1921":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1926":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1960":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","1993":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","2008":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","2040":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","2067":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","2080":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","2094":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","2108":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB","2119":"b:/8//9X/+Posw8KCpAOGC0S8jfoEB"},"packages/workflow/src/node-validation.ts":{"19":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","59":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB","84":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB"},"packages/workflow/src/observable-object.ts":{"9":"b:7078hS/MDAEAcAAAAMQQkQhAegEA","38":"b:7078hS/MDAEAcAAAAMQQkQhAegEA","48":"b:7078hS/MDAEAcAAAAMQQkQhAegEA","51":"b:7078hS/MDAEAcAAAAMQQkQhAegEA","54":"b:7078hS/MDAEAcAAAAMQQkQhAegEA"},"packages/workflow/src/redaction-channels.ts":{"22":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA","36":"b:7w48hS/IDAAAcAAAAAAAEAAAcgEA"},"packages/workflow/src/run-execution-data/run-execution-data.ts":{"29":"b:7w48hWcIDAAAcAAAAAAAEAAAEAEA"},"packages/workflow/src/run-execution-data-factory.ts":{"54":"b:7w58hS/IDAEAcAAAAEAAEAAgfoEA","67":"b:7w58hS/IDAEAcAAAAEAAEAAgfoEA","86":"b:7w58hS/IDAEAcAAAAEAAEAAgfoEA","108":"b:7w58hS/IDAEAcAAAAEAAEAAgfoEA","125":"b:7w58hS/IDAEAcAAAAEAAEAAgfoEA"},"packages/workflow/src/type-guards.ts":{"15":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","21":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","25":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","29":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","33":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","37":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","41":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","47":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","60":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","70":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","83":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","93":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","99":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA","103":"b:7ww8hX+IHAAAcCAAAEAA0SAiVoEA"},"packages/workflow/src/type-validation.ts":{"15":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","24":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","38":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","48":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","72":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","114":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","124":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","146":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","162":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","206":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","272":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","284":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","305":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","333":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","437":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA","438":"b:4wyEhU2ICAAAcCUgAEAA0CQBNAAA"},"packages/workflow/src/utils.ts":{"18":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","29":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","37":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","58":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","97":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","102":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","103":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","110":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","128":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","130":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","157":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","200":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","206":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","216":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","241":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","245":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","246":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","250":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","251":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","259":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","267":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","278":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","296":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","300":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","302":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","309":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","322":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","326":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","343":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","360":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","363":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","370":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","408":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","414":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","418":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","427":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","439":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","447":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","455":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","474":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","493":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA","496":"b:/88+5X/eLgEA8AgAAEAIUQYBfoEA"},"packages/workflow/src/versioned-node-type.ts":{"10":"b:/ow8lUecKAEAcACAAAAAEAQAGgAA","19":"b:/ow8lUecKAEAcACAAAAAEAQAGgAA","23":"b:/ow8lUecKAEAcACAAAAAEAQAGgAA"},"packages/workflow/src/workflow-checksum.ts":{"46":"b:78865S7eLAEAAAAAAAAAAAAACgAA","50":"b:78865S7eLAEAAAAAAAAAAAAACgAA","74":"b:78865S7eLAEAAAAAAAAAAAAACgAA","99":"b:78865S7eLAEAAAAAAAAAAAAACgAA"},"packages/workflow/src/workflow-data-proxy-env-provider.ts":{"13":"b:5w4UAAmIDAAAcAAAAMAAEARBUoEA","41":"b:5w4UAAmIDAAAcAAAAMAAEARBUoEA","49":"b:5w4UAAmIDAAAcAAAAMAAEARBUoEA","53":"b:5w4UAAmIDAAAcAAAAMAAEARBUoEA"},"packages/workflow/src/workflow-data-proxy.ts":{"41":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","63":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","84":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","123":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","128":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","140":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","162":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","163":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","171":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","177":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","189":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","195":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","196":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","200":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","234":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","259":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","260":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","266":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","268":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","270":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","279":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","280":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","282":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","283":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","297":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","302":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","303":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","306":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","312":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","315":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","320":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","321":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","333":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","340":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","341":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","344":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","350":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","352":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","414":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","446":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","563":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","574":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","575":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","682":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","689":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","690":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","693":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","699":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","730":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","737":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","738":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","741":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","747":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","775":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","780":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","781":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","805":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","809":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","836":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","886":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","908":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","921":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","932":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","944":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","957":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","968":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","979":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","988":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1007":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1016":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1019":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1055":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1077":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1081":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1089":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1096":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1148":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1173":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1191":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1214":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1215":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1228":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1261":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1271":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1369":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1388":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1412":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1443":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1444":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1447":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1453":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1468":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1483":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1498":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1544":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1571":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1595":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1651":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA","1652":"b:4wwUAAmICAAAcAAgAEAAURQjVoEA"},"packages/workflow/src/workflow-expression.ts":{"22":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","30":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","74":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","89":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","94":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","154":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","189":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","222":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","269":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","274":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA","278":"b:7058hW/MDAEAcCAIAEAAUAwgfoEA"},"packages/workflow/src/workflow-structure-validation.ts":{"94":"b:78869S7eLAEAAAAAAAAAAAAACgAA","97":"b:78869S7eLAEAAAAAAAAAAAAACgAA","103":"b:78869S7eLAEAAAAAAAAAAAAACgAA","105":"b:78869S7eLAEAAAAAAAAAAAAACgAA","113":"b:78869S7eLAEAAAAAAAAAAAAACgAA","119":"b:78869S7eLAEAAAAAAAAAAAAACgAA","190":"b:78869S7eLAEAAAAAAAAAAAAACgAA"},"packages/workflow/src/workflow-validation.ts":{"16":"b:AAwUAAyIQAAQAAAAAAAAAAACVoEB"},"packages/workflow/src/workflow.ts":{"87":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","137":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","144":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","149":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","153":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","157":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","164":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","217":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","245":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","253":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","254":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","261":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","262":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","271":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","300":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","309":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","330":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","334":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","390":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","409":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","447":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","491":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","544":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","563":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","581":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","595":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","610":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","624":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","635":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","658":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","676":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","677":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","691":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","750":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","821":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","851":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","852":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","871":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB","896":"b:7078hW/MXAEQeCAhAOQA0QwCfoEB"},"packages/@n8n/api-types/src/agent-builder-tool-node-types.ts":{"4":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/api-types/src/agents/agent-integration.schema.ts":{"3":"b://V/9/d//33/////////////AQAA","16":"b://V/9/d//33/////////////AQAA","22":"b://V/9/d//33/////////////AQAA","35":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/api-types/src/agents/dto.ts":{"172":"b://V/9/d//33/////////////AQAA","188":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/api-types/src/dto/data-table/list-data-table-query.dto.ts":{"32":"b://V/9/d//33/////////////AQAA","36":"b:ALAEAIAGIAQHA0AAAAIAAAAAAQAA"},"packages/@n8n/api-types/src/schemas/password.schema.ts":{"13":"b://V///d//33/////////////AQIA","18":[153,74,27,43,101,103],"21":[153,74,27,43,101,103]},"packages/@n8n/chat-hub/src/constants.ts":{"50":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/chat/src/composables/useChat.ts":{"6":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/chat/src/utils/event-bus.ts":{"11":"b://V/9/d//33/////////////AQAA","22":[5,6,67,7,93,108,51],"36":[5,6,67,7,93,108,51],"40":[5,6,67,7,93,108,51]},"packages/@n8n/codemirror-lang-sql/src/sql.ts":{"19":"b://V/9/d//33/////////////AQAA","26":[117],"61":"b://V/9/d//33/////////////AQAA","76":[117],"80":[117],"140":"b://V/9/d//33/////////////AQAA","157":"b://V/9/d//33/////////////AQAA","195":[117]},"packages/@n8n/codemirror-lang-sql/src/tokens.ts":{"33":"b://V/9/d//33/////////////AQAA","80":[117],"88":[117],"113":[117],"122":[117],"141":[117],"164":[117],"171":"b://V/9/d//33/////////////AQAA","221":"b://V/9/d//33/////////////AQAA","240":"b://V/9/d//33/////////////AQAA","241":[117]},"packages/@n8n/composables/src/structuralComputed.ts":{"21":"b:/8Qv93dc/wN4yLz/if7////7AQAA","27":"b:/8Qv93cc/gN4iLz/gf7////7AQAA"},"packages/@n8n/composables/src/useDeviceSupport.ts":{"3":"b://V/9/d//33/////////////AQAA","26":"b:4AAAAAAAGAAAAAAgAcAPAAhCAAAA","28":"b:XkAJABAh6kEAgNHUBfEu/ov6AQAA"},"packages/@n8n/composables/src/useDocumentTitle.ts":{"28":"b://V/9/d//33/////////////AQAA","37":"b://V/9/d//31+/v//////////AQAA","42":[54],"47":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA"},"packages/@n8n/composables/src/useShortKeyPress.ts":{"6":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","22":[57],"33":"b:GgAAAAAAAAIAAAAAAIAgFDoAAAAA"},"packages/@n8n/composables/src/useThrottleWithReactiveDelay.ts":{"7":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","12":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA"},"packages/@n8n/design-system/src/components/AskAssistantChat/AskAssistantChat.vue":{"25":"b://V/9/d//31+////////////AQAA","62":[1],"77":"b://V/9/d//31+////////////AQAA","78":[1,2,3,4,8],"86":"b://V/9/d//31+////////////AQAA","87":[1,2,3,4,8],"99":"b://V/9/d//31+////////////AQAA","133":"b://V/9/d//31+////////////AQAA","272":"b://V/9/d//31+////////////AQAA","275":"b://V/9/d//31+////////////AQAA","287":[1,2,3,4,8],"303":"b:/8Uv8Hdc/wF4iLj/ieb////7AQAA","307":"b://V/9/d//31+////////////AQAA","311":"b://V/9/d//31+////////////AQAA","315":"b://V/9/d//31+////////////AQAA","321":[1,2,3,4,8],"327":"b://V/9/d//31+////////////AQAA","332":"b://V/9/d//31+////////////AQAA","345":[4],"360":"b:/8Uv8Hdc/wF4iLj/ieb////7AQAA","364":[8],"378":[1],"382":[1,3,4,8],"391":[4,8],"395":[4,8],"399":[1,3,4,8],"403":"b://V/9/d//31+////////////AQAA","405":"b://V/9/d//31+////////////AQAA","422":"b://V/9/d//31+////////////AQAA","439":[1,2,3],"443":[1,2,3,4,8],"456":[1,2,3,4,8],"464":[1,2,3,4,8],"469":"b://V/9/d//31+////////////AQAA","500":[1,2,3,4,8],"507":[1,2,3,4,8],"534":[2],"535":[2],"538":[4],"554":[1,2,3],"562":[1],"563":[1,2,3],"597":"b://V/9/d//31+////////////AQAA","602":[4,8],"614":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/components/AskAssistantIcon/AssistantIcon.vue":{"4":"b://V/9/d//31+////////////AQAA","22":"b://V/9/d//31+////////////AQAA","30":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/components/AskAssistantText/AssistantText.vue":{"9":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/components/ConditionalRouterLink/CondtionalRouterLink.vue":{"16":"b://V/9/c//n0eiv//pef/////AQAA","27":"b://Vv8/c//n0eiv//pef/////AQAA","32":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/@n8n/design-system/src/components/N8nActionDropdown/ActionDropdown.vue":{"14":"b:/8V/9/cd/kkY+L//gfb/////AQAA","49":"b:/8V/9/cd/kkY+L//gfb/////AQAA","54":"b:/8V/9/cd/kkY+L//gfb/////AQAA","59":"b:/8V/9/cd/kkY+L//gfb/////AQAA","67":"b:/8V/9/cd/kkY+L//gfb/////AQAA","68":"b:/8V/9/cd/kkY+L//gfb/////AQAA","86":"b:DgAIAJAISEAAAIGEgQIIwIqAAAAA","87":"b:DgAIAJAISEAAAIGEgQIIwIqAAAAA","97":"b:/8V/9/cd/kkY+L//gfb/////AQAA","104":"b:/8V/9/cd/kkY+L//gfb/////AQAA","128":"b:/8V/9/cd/kkY+L//gfb/////AQAA","141":"b:DgAIAJAISEAAAIGEgQIIwIqAAAAA","149":"b:DgAIAJAISEAAAIGEgQIIwIqAAAAA","151":"b:DgAIAJAISEAAAIGEgQIIwIqAAAAA","156":"b:DgAIAJAISEAAAIGEgQIIwIqAAAAA"},"packages/@n8n/design-system/src/components/N8nActionToggle/ActionToggle.vue":{"31":"b:3tR7VONn+wEY6vv7r+X5//8LAQAA","52":"b:3tR7VONn+wEY6vv7r+X5//8LAQAA","53":"b:3tR7VONn+wEY6vv7r+X5//8LAQAA","62":"b:AAAAAIAngQAAAAIAIgAAACAAAAAA","63":"b:AAAAAIAngQAAAAIAIgAAACAAAAAA","92":"b:3tR7VONn+wEY6vv7r+X5//8LAQAA","99":"b:AAAAAIAngQAAAAIAIgAAACAAAAAA","117":"b:3tR7VONn+wEY6vv7r+X5//8LAQAA","130":[40],"132":[40],"139":"b:AAAAAIAngQAAAAIAIgAAACAAAAAA"},"packages/@n8n/design-system/src/components/N8nBlockUi/BlockUi.vue":{"12":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","13":"b:7sQrUGMMugBYiLj7geS5//9LAAAA"},"packages/@n8n/design-system/src/components/N8nButton/Button.vue":{"9":"b://V/9/d//31+////////////AQAA","25":"b://V/9/d//31+////////////AQAA","31":"b://V/9/d//31+////////////AQAA","37":"b://V/9/d//31+////////////AQAA","43":"b://V/9/d//31+////////////AQAA","48":"b://V/9/d//31+////////////AQAA","53":"b://V/9/d//31+////////////AQAA","55":"b://V/9/d//31+////////////AQAA","81":"b:/9V/9/dv/20e+u//v/f/////AQAA","84":"b://V/9/d//31+////////////AQAA","103":"b://Vv8/d//31+////////////AQAA","105":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/components/N8nChatInput/ChatInput.vue":{"41":"b://V/9/d//31+////////////AQAA","77":"b://V/9/d//31+////////////AQAA","82":"b://V/9/d//31+////////////AQAA","96":"b://V/9/d//31+////////////AQAA","97":"b://V/9/d//31+////////////AQAA","107":"b://V/9/d//31+////////////AQAA","111":"b://V/9/d//31+////////////AQAA","120":"b://V/9/d//31+////////////AQAA","122":"b://V/9/d//31+////////////AQAA","131":"b://V/9/d//31+////////////AQAA","133":"b:GgEQBwAAAGAAcAQAAAAAAAAAAAAA","144":"b://V/9/d//31+////////////AQAA","153":"b:GgEQBwAAAGAAcAQAAAAAAAAAAAAA","160":"b:GgEQBwAAAGAAcAQAAAAAAAAAAAAA","164":[1,3,4,8],"170":"b:GgEQBwAAAGAAcAQAAAAAAAAAAAAA","177":[8],"184":[1,3,4,8],"229":"b:HgEQBwAAAGAAcAQAAAAAAAAAAAAA","234":"b:HgEQBwAAAGAAcAQAAAAAAAAAAAAA","239":[4],"244":[4],"249":"b://V/9/d//31+////////////AQAA","253":"b://V/9/d//31+////////////AQAA","255":"b://V/9/d//31+////////////AQAA","265":"b://V/9/d//31+////////////AQAA","269":"b://Vv8/d//31+////////////AQAA","290":"b:GgAQBwAAAGAAcAQAAAAAAAAAAAAA","304":"b:GgAQBwAAAGAAcAQAAAAAAAAAAAAA","314":[78],"326":"b:GgEQBwAAAGAAcAQAAAAAAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nCommandBar/CommandBar.vue":{"34":"b://V/9/d//32f/////+f/////AQAA","42":[55],"43":[55],"46":[55],"50":[55],"57":[55],"62":[55],"85":[55],"90":[55],"103":[55],"110":[55],"115":[55],"122":[55],"126":[55],"127":[55],"155":[55],"163":[55],"189":[55],"202":"b:XkEJABAn6kEEgNHVDeEu/rv+AQAA","252":"b:/9V/9/dv/00e+P//v+f/////AQAA","260":[55],"265":"b://V/9/d//32f/////+f/////AQAA","270":[42,66],"274":"b://V/9/d//32f/////+f/////AQAA","279":"b://Vv8/d//32f/////+f/////AQAA","280":"b://Vv8/d//32f/////+f/////AQAA","293":[55],"313":[55],"325":[55],"327":[55],"340":[55]},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenu.typeguards.ts":{"6":"b:/9V/9/d//0kY+v//r/f/////AQAA","8":"b:/9V/9/d//0kY+v//r/f/////AQAA"},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenu.vue":{"25":"b:/9V/9/d//0kY+v//r/f/////AQAA","53":[77,39,40],"66":"b:/9V/9/d//0kY+v//r/f/////AQAA","74":"b:/9V/9/d//0kY+v//r/f/////AQAA","83":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","92":[39,40],"111":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","125":"b:7tQrFfEv+0EY6v/+o+f5///6AQAA","132":"b:TsQqEPEv+UAYqKvOo+b4/e/KAAAA","139":"b:ToQqENEv+UAYqKPOo+b4/e/IAAAA","153":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","159":"b:/9V/9/d//0kY+v//r/f/////AQAA","160":"b:/9V/9/d//0kY+v//r/f/////AQAA","172":"b:6tQjFeEn+0EY6n/6o+X5//96AQAA","181":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","211":"b:/9V/9/d//0kY+v//r/f/////AQAA","217":"b:/9Vv8/d//0kY+v//r/f/////AQAA","218":"b:/9V/9/d//0kY+v//r/f/////AQAA","247":"b:/9V/9/d//0kY+v//r/f/////AQAA","261":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","273":[77],"281":[77],"306":[77],"309":[77],"312":[77],"332":[40],"340":"b:DgAIAJAISEAAAIGEgQIIwIqAAAAA","343":"b:DgAIAJAJSEAAAIGEgQIIwIqAAAAA","346":"b:DgAIAJAvyUAAAIOEowIIwKqAAAAA"},"packages/@n8n/design-system/src/components/N8nFormInput/validators.ts":{"7":"b:ABAQAAAkogAGB0IAFAAAAAAAAAAA","36":[98],"67":[73,74,42,100,66],"97":[65,98],"109":"b://V/9/d//33/////////////AQAA","139":"b:ABAQAAAkogAGB0IAFAAAAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nHeading/Heading.vue":{"27":"b://V/9/d//33/////////////AQAA","34":"b://V/9/d//33/////////////AQAA","50":"b://V/9/d//33/////////////AQAA","52":"b://V/9/d//33/////////////AQAA","56":"b://Vv8/d//33/////////////AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/Icon.vue":{"25":"b://V/9/d//33/////////////AQAA","32":"b://V/9/d//33/////////////AQAA","42":"b://V/9/d//33/////////////AQAA","54":"b://V/9/d//33/////////////AQAA","66":"b://V/9/d//33/////////////AQAA","83":"b://V/9/d//33/////////////AQAA","91":"b://V/9/d//33/////////////AQAA","93":"b://V/9/d//33/////////////AQAA","95":"b:/8Qv93cs/gB4yLz/gf77///7AQAA","107":"b://V/9/d//33/////////////AQAA","109":"b://V/9/d//33/////////////AQAA","129":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/bolt-filled.svg":{"9":"b:/8Qv93cc/gF4iLz/gf77///7AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-ellipsis.svg":{"11":"b:/8Qv93cc/gF4iLz/gfb////7AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-play.svg":{"11":"b:/8Qv93cc/gEYiLz/gfb7///7AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-power.svg":{"11":"b:/8Qv93cc/gEYiLz/geb7///7AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-success.svg":{"11":"b:7wQsh3cIHAAYCKRpAPCQ/y5zAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-trash.svg":{"11":"b:/8Qv93cc/gEYiLz/geb////7AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-validation-error.svg":{"11":"b:XMQjUEMUCgEYgJiagKSgQV+YAQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/pop-out.svg":{"8":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/spinner.svg":{"9":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/toolbox.svg":{"10":"b:QkQhYEMEAgAYiAjQgOS43voIAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/iconColor.ts":{"25":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/icons.ts":{"787":"b:/8Qv93cc/gF4iLz/gf77///7AQAA","791":"b:/8Qv93cs/gF4yLz/gf77///7AQAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/chat-trigger.svg":{"11":"b:4kQDcGMEqgAYiDjwgPa4XfsoAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/form-trigger.svg":{"11":"b:QkQDYGMEogAYiDjQgOa4XfsoAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/manual-trigger.svg":{"11":"b:z8Qv53cMrgA4iLzdge76//97AAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/schedule-trigger.svg":{"11":"b:UkQDYGME+gAYiDjSgOa5XfuoAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/sub-workflow-trigger.svg":{"11":"b:QkQDYGMEogAYiDjQgOa4XfsoAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/webhook.svg":{"11":"b:QkQHYGMMsgBYiDjQgOa4XfsoAQAA"},"packages/@n8n/design-system/src/components/N8nIconButton/IconButton.vue":{"6":"b://V/9/d//31+////////////AQAA","7":"b://Vv8/d//31+////////////AQAA"},"packages/@n8n/design-system/src/components/N8nIconPicker/iconCategories.ts":{"118":"b://V/9/d//33/////////////AQAA","129":[42]},"packages/@n8n/design-system/src/components/N8nInfoAccordion/InfoAccordion.vue":{"29":"b:QEQCAEEInAAAAAAAAICAQQhwAAAA","40":"b:QEQCAEEInAAAAAAAAICAQQhwAAAA","54":"b:QEQCAEEInAAAAAAAAICAQQhwAAAA","61":"b:QEQCAEEInAAAAAAAAICAQQhwAAAA"},"packages/@n8n/design-system/src/components/N8nInfoTip/InfoTip.vue":{"14":"b:xhRpRONvuwEcomMRjAGw/75DAQAA","57":"b:xhRpRONvuwEcomMRjAGw/75DAQAA","63":"b:xhRpRONvuwEcomMRjAGw/75DAQAA"},"packages/@n8n/design-system/src/components/N8nInlineTextEdit/InlineTextEdit.vue":{"16":"b:/8Vv9/d9/wlY6L//ief/////AQAA","35":"b:/8Vv9/d9/wlY6L//ief/////AQAA","38":"b:/8Vv9/d9/wlY6L//ief/////AQAA","44":"b:/8Vv9/d9/wlY6L//ief/////AQAA","47":"b:/8Vv9/d9/wlY6L//ief/////AQAA","57":"b:/8Vv9/d9/wlY6L//ief/////AQAA","68":"b:DgApABBhiwEAgIGECQMCwIqAAAAA","74":"b:DgAoABAFyAAAAICEAQIAwIqEAAAA","81":"b:DgApABBhiwEAgIGECQMCwIqAAAAA","92":"b:DgApABBhiwEAgIGECQMCwIqAAAAA","96":"b:DgApABBlywEAgIGECQMCwIqEAAAA","103":"b:/8Vv9/d9/wlY6L//ief/////AQAA","122":"b:/8Vv8/d9/wlY6L//ief/////AQAA","127":"b:/8Vv8/d9/wlY6L//ief/////AQAA","145":"b:DgApABBhiwEAgIGECQMCwIqAAAAA"},"packages/@n8n/design-system/src/components/N8nInput/Input.vue":{"11":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","40":"b:/tR7VONv+wFe7/v7v+W9///bAQAA","49":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","59":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","78":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","81":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","83":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","97":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","111":"b:SBRrAENlowEeomMQPgGQ4DKEAQAA","118":"b:SBRrAMNk4wEeomMQPgWZ4DKOAAAA","124":"b:SBRrAMNl4wEeo2MQPgWZ4DKOAQAA","130":"b:CAAAAAABgAAEgEEADAAIYAIEAAAA","135":"b:AAQKAAMFgAAQAAAAIAAIADIAAAAA","146":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","150":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","156":"b:6tQzEOEn+wEe6nv7J+W5///OAQAA","157":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","162":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","163":"b:StRrRMNtuwFepmMzPoGR4z+GAQAA","172":"b:/tR7VONv+wFe7/v7v+W9///fAQAA","182":"b:SBRrAMNlowEco2MQLAGJ4DKCAAAA","183":[126,132],"184":"b:ABAAAAAE4gAAAEMAAAQAoAAKAAAA","187":"b:/tR7VONv+wFe7/v7v+W9///fAQAA"},"packages/@n8n/design-system/src/components/N8nInputLabel/InputLabel.vue":{"31":"b:3tR7VGNs+wFe7/v7v+W5//9LAAAA","33":"b:3tR7VGNs+wFe7/v7v+W5//9LAAAA","65":"b:3sRrVGNs+wFc77v7v+W5//9LAAAA","69":"b:QABAAAAgwAEMpAMQFAQAABIIAAAA"},"packages/@n8n/design-system/src/components/N8nLink/Link.vue":{"31":"b:/9Vv9/d//wler////+f/////AQAA","32":"b:/9Vv8/d//wler////+f/////AQAA","34":"b:/9Vv8/d//wler////+f/////AQAA"},"packages/@n8n/design-system/src/components/N8nLoading/Loading.vue":{"38":"b:QvRjcOMn5gUeinvQpuf43/soAQAA","47":"b:QvRjcOMn5gUeinvQpuf43/soAQAA","49":[80,81,56],"60":"b:QvRjcOMn5gUeinvQpuf43/soAQAA"},"packages/@n8n/design-system/src/components/N8nMenuItem/MenuItem.vue":{"15":"b://V/9/d//30e/v///+f/////AQAA","29":"b://V/9/d//30e/v///+f/////AQAA","45":"b:AAAgAAAmIgQEAAMAAAEIAIAAAAAA","52":"b://V/9/d//30e/v///+f/////AQAA","64":"b://V/9/d//30e/v///+f/////AQAA","73":"b://V/9/d//30e/v///+f/////AQAA","89":"b://V/9/d//30e/v///+f/////AQAA","92":"b://V/9/d//30e/v///+f/////AQAA","99":"b://V/9/d//30e/v///+f/////AQAA","117":"b://Vv8/d//30e/v///+f/////AQAA","125":[58,42,115],"134":"b:QCBxQABuIw0O9AIQegEIABIAAAAA"},"packages/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.vue":{"42":"b://V/9/c//n0eiv//pef/////AQAA","56":"b://V/9/c//n0eiv//pef/////AQAA","58":"b://V/9/c//n0eiv//pef/////AQAA","59":"b://V/9/c//n0eiv//pef/////AQAA","60":"b://V/9/c//n0eiv//pef/////AQAA","84":"b:/9V/9/cv/m0ciP//hef/////AQAA","89":[12,81,86,42,49,135,53,55],"94":[12,81,86,42,49,53,55],"103":"b://V/9/c//n0eiv//pef/////AQAA","113":[12,81,86,42,49,135,53,55],"117":"b://V/9/c//n0eiv//pef/////AQAA","126":"b://V/9/c//n0eiv//pef/////AQAA","128":"b://V/9/c//n0eiv//pef/////AQAA","130":"b://Vv8/c//n0eiv//pef/////AQAA","141":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","143":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","161":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","163":"b:EBBFAJAvogAAiPNKhAWb+LREAAAA","166":"b:EBBFAJAvogAAiPNKhAWb+LREAAAA","170":[42,135,55],"171":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","172":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","184":[42],"208":"b://V/9/c//n0eiv//pef/////AQAA","212":"b://Vv8/c//n0eiv//pef/////AQAA"},"packages/@n8n/design-system/src/components/N8nNodeCreatorNode/NodeCreatorNode.vue":{"32":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","33":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","58":"b:QAABIAAEAgAAgCAAgEAgQAIIAAAA","61":[6,28,128]},"packages/@n8n/design-system/src/components/N8nNodeIcon/IconContent.vue":{"21":"b:/8Rv93c+/gF4+Lz/gf/7///7AQAA","35":"b:/8Qv93cs/gF4yLz/gf77///7AQAA","54":"b:/8Qv93cs/gF4yLz/gf77///7AQAA","57":"b:/8Rv93c+/gF4+Lz/gf/7///7AQAA"},"packages/@n8n/design-system/src/components/N8nNodeIcon/NodeIcon.vue":{"24":"b:/8Rv93c+/gF4+Lz/gf/7///7AQAA","28":"b:/8Rv93c+/gF4+Lz/gf/7///7AQAA","43":"b:/8Rv93c+/gF4+Lz/gf/7///7AQAA","59":"b:zsQrVGMMugFYiLj7geS4//9LAQAA"},"packages/@n8n/design-system/src/components/N8nNotice/Notice.vue":{"16":"b:zsQrAGM0mgFaiAjSgeS4fZtLAAAA","30":"b:zsQrAGM0mgFaiAjSgeS4fZtLAAAA","34":"b:zsQrAGMkmgFYiAjSgeS4fZtJAAAA","50":[129],"66":"b:zsQrAGM0mgFaiAjSgeS4fZtLAAAA","75":"b:zsQrAGM0mgFaiAjSgeS4fZtLAAAA"},"packages/@n8n/design-system/src/components/N8nOption/Option.vue":{"12":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","13":"b:3tRrUONvuwFe7vv7vee5//9fAQAA","16":"b:3tRrUONvuwFe7vv7vee5//9fAQAA"},"packages/@n8n/design-system/src/components/N8nPopover/Popover.vue":{"84":"b://V/9/c//n0e+v//pef/////AQAA","105":"b:AAAAAAAkwAQEAAEAAAQtXD4QAAAA","111":"b:AAAAAAAkwAAEAAEAAAQpXDIAAAAA","125":"b:AAAAAAAkwAAAAAEAAAQpHDoQAAAA","133":"b://V/9/c//n0e+v//pef/////AQAA","134":"b:AAAAAAAkQAAAAAEAAAQlXD4AAAAA","143":"b://V/9/c//n0e+v//pef/////AQAA","146":"b:AAAAAAAkwAQEAAEAAAQpHDoQAAAA","147":"b://V/9/c//n0e+v//pef/////AQAA","148":"b://V/9/c//n0e+v//pef/////AQAA","151":"b://V/9/c//n0e+v//pef/////AQAA","167":"b:AAAAAAAkwAQEAAEAAAQtXD4QAAAA","174":"b:AAAAAAAEwAQEAAEAAAQJAAAQAAAA"},"packages/@n8n/design-system/src/components/N8nPromptInputSuggestions/N8nPromptInputSuggestions.vue":{"10":"b://V/9/d//31+////////////AQAA","20":[8],"23":"b://V/9/d//31+////////////AQAA","41":"b://V/9/d//31+////////////AQAA","46":[8]},"packages/@n8n/design-system/src/components/N8nPulse/Pulse.vue":{"6":[10,32,38,120]},"packages/@n8n/design-system/src/components/N8nRadioButtons/RadioButton.vue":{"22":"b:/8Vv9Pd9/glYqLj/if//////AQAA"},"packages/@n8n/design-system/src/components/N8nRadioButtons/RadioButtons.vue":{"20":"b:/8Vv9Pd9/glYqLj/if//////AQAA","33":"b:QAAAAAAgDAAAAAAIAICA/T5wAAAA","41":"b:/8Vv9Pd9/glYqLj/if//////AQAA","50":"b:/8Vv8Pd9/glYqLj/if//////AQAA","58":"b:QAAAAAAgDAAAAAAIAICA/T5wAAAA","59":"b:/8Vv9Pd9/glYqLj/if//////AQAA"},"packages/@n8n/design-system/src/components/N8nResizeWrapper/ResizeWrapper.vue":{"6":"b://V/9/d//31+////////////AQAA","72":"b://V/9/d//31+////////////AQAA","91":"b://V/9/d//31+////////////AQAA","141":"b:ysQgFWEF/kEciDz6geT4/+96AQAA","167":"b:ysQgFWEF/kEciDz6geT4/+96AQAA","195":"b://V/9/d//31+////////////AQAA","201":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/components/N8nRoute/Route.vue":{"13":"b://V/9/d//31e/////+f/////AQAA","15":"b://V/9/d//31e/////+f/////AQAA","28":"b://V/9/d//31e/v///+f/////AQAA","29":"b://V/9/d//31e/////+f/////AQAA","38":"b://V/9/d//30e/////+f/////AQAA"},"packages/@n8n/design-system/src/components/N8nScrollArea/N8nScrollArea.vue":{"50":"b://V/9/c//n0e+v//pef/////AQAA","68":"b://V/9/c//n0e+v//pef/////AQAA","82":"b://V/9/c//n0eiv//pef/////AQAA","104":[4,8],"144":"b://V/9/c//n0eiv//pef/////AQAA","163":"b://V/9/c//n0e+v//pef/////AQAA","172":"b://Vv8/c//n0e+v//pef/////AQAA","174":"b://V/9/c//n0e+v//pef/////AQAA","181":[76,77,25]},"packages/@n8n/design-system/src/components/N8nSelect/Select.vue":{"11":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","63":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","64":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","72":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","85":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","89":[16,79,21,22,42,45,104,49],"93":[6,67],"97":"b:AAAiQEFAAAAQwAgAAAAQAAIEAAAA","113":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","134":"b:3tR7VONvuwFe7vv7vee5//9fAQAA","136":"b:ABBxAAAmqgAIgEIYJAMA4AYQAAAA","142":"b:UIAhAEEECgEIwAAQgAAAABIAAAAA","145":"b:UIAhAEEECgEIwAAQgAAAABIAAAAA"},"packages/@n8n/design-system/src/components/N8nSendStopButton/N8nSendStopButton.vue":{"5":"b://V/9/d//31+////////////AQAA","30":"b:GgAQBwAAAGAAcAQAAAAAAAAAAAAA","34":[8],"36":"b://V/9/d//31+////////////AQAA","62":"b://Vv8/d//31+////////////AQAA"},"packages/@n8n/design-system/src/components/N8nSpinner/Spinner.vue":{"20":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/components/N8nSuggestedActions/SuggestedActions.vue":{"39":"b:/4UMh/cN/gEYiKRrgOb7/69/AQAA","50":"b:/4UMh/cN/gEYiKRrgOb7/69/AQAA","52":[106],"58":[106],"60":[106],"64":"b:/4UMh/cN/gEYiKRrgOb7/69/AQAA","74":[106,54],"76":"b:/4UMh/cN/gEYiKRrgOb7/69/AQAA","84":[106,54],"86":[106,54],"89":[106,54],"100":[106],"108":[106,54],"112":[106,54],"121":[106,54],"131":[106],"132":[106,54],"142":[106],"143":[106,54]},"packages/@n8n/design-system/src/components/N8nTabs/Tabs.vue":{"25":"b:ztR7VOMv+gBYyvv7heX5//9LAQAA","30":"b:ztR7VOMv+gBYyvv7heX5//9LAQAA","40":"b:ztR7VOMv+gBYyvv7heX5//9LAQAA","53":"b:ytQgEGEH+gAYyHv6geT5/+9KAAAA","63":[42,126,130],"73":"b:ztR7VOMv+gBYyvv7heX5//9LAQAA","92":"b:ztRrUOMv+gBYyvv7heX5//9LAQAA","101":"b:ztR7VOMv+gBYyvv7heX5//9LAQAA","125":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","142":[42,126,130]},"packages/@n8n/design-system/src/components/N8nTag/Tag.vue":{"15":"b:/4UMh/dt/wkejKRr++b7/6//AQAA"},"packages/@n8n/design-system/src/components/N8nText/Text.vue":{"18":"b://V/9/d//31e////////////AQAA","26":"b://V/9/d//31e////////////AQAA","46":"b://V/9/d//31e////////////AQAA","48":"b://V/9/d//31e////////////AQAA","52":"b://Vv8/d//31e////////////AQAA"},"packages/@n8n/design-system/src/components/N8nTooltip/Tooltip.vue":{"21":"b://V/9/d//31+////////////AQAA","37":"b://V/9/d//31+////////////AQAA","45":"b://V/9/d//31+////////////AQAA","46":"b://V/9/d//31+////////////AQAA","48":"b://V/9/d//31+////////////AQAA","57":"b://V/9/d//31+////////////AQAA","62":"b://V/9/d//31+////////////AQAA","63":"b://V/9/d//31+////////////AQAA","73":"b://V/9/d//31+////////////AQAA","75":"b:68Q/9HcOvkwc6L/+o/b////7AAAA","77":"b://V/9/d//31+////////////AQAA","88":"b://Vv8/d//31+////////////AQAA","94":"b:4AAQAAAACAAIAEAgIBAAAABAAAAA","98":"b://V/9/d//31+////////////AQAA","101":"b://V/9/d//31+////////////AQAA","109":"b:4AQEAEEICAAIAAAgAOAYQUAAAAAA"},"packages/@n8n/design-system/src/composables/useAutosizeTextarea.ts":{"41":"b://V/9/d//31+////////////AQAA","57":"b://V/9/d//31+////////////AQAA","70":"b://V/9/d//31+////////////AQAA","116":"b://V/9/d//31+////////////AQAA","127":"b://V/9/d//31+////////////AQAA","141":"b://V/9/d//31+////////////AQAA","149":"b:/9U/9/d//2F+6v//r+f/////AQAA","159":"b://V/9/d//31+////////////AQAA","165":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/composables/useCharacterLimit.ts":{"15":"b://V/9/d//31+////////////AQAA","19":"b://V/9/d//31+////////////AQAA","23":[1,3,4,8],"25":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/composables/useI18n.ts":{"4":"b://V/9/d//31+////////////AQAA","6":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/composables/useIconBodyLoader.ts":{"20":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/composables/useTooltipAppendTo.ts":{"7":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","11":"b://V/9/d//31+////////////AQAA","14":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/directives/n8n-html.ts":{"19":"b:/tVrVGN/uwlY6Lv7j+W5//9LAQAA","31":"b:/tVrVGN/uwlY6Lv7j+W5//9LAQAA"},"packages/@n8n/design-system/src/icons/lucide/bucket.ts":{"16":"b:/8Qv93cs/gB4yLz/gf77///7AQAA"},"packages/@n8n/design-system/src/icons/lucide/index.ts":{"9":"b:/8Qv93cs/gB4yLz/gf77///7AQAA","15":"b:/8Qv93cs/gB4yLz/gf77///7AQAA"},"packages/@n8n/design-system/src/locale/format.ts":{"8":"b://V/9/d//33/////////////AQAA","12":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/locale/index.ts":{"16":"b://V/9/d//31+////////////AQAA","36":"b://V/9/d//33/////////////AQAA","38":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/plugin.ts":{"8":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/utils/cn.ts":{"4":"b://V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/utils/typeguards.ts":{"1":"b:3tR7VONvuwFe7vv7vee5//9fAQAA"},"packages/@n8n/design-system/src/utils/uid.ts":{"6":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/design-system/src/v2/components/Select/Select.vue":{"45":"b://V/9/d//31+////////////AQAA","63":"b:8/V/9/d//31+////////////AQAA","69":"b://V/9/d//31+////////////AQAA","84":"b://V/9/d//31+////////////AQAA","91":"b://V/9/d//31+////////////AQAA","99":"b://V/9/d//31+////////////AQAA","106":[20,86,101],"108":"b:8/V/9/d//31+////////////AQAA","110":"b:8/V/9/d//31+////////////AQAA","126":"b://V/9/d//31+////////////AQAA","137":"b://Vv8/d//31+////////////AQAA","144":"b://V/9/d//31+////////////AQAA","147":"b://V/9/d//31+////////////AQAA","158":"b:8/V/9/d//31+////////////AQAA","166":"b:8/V/9/d//31+////////////AQAA","167":"b:8/Vv8/d//31+////////////AQAA","169":[20,86,101],"181":"b:8/V/9/d//31+////////////AQAA","182":"b:8/V/9/d//31+////////////AQAA","185":"b:8/V/9/d//31+////////////AQAA","188":"b:8/V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/v2/components/Select/SelectItem.vue":{"10":"b:8/V/9/d//31+////////////AQAA","13":"b:8/V/9/d//31+////////////AQAA","17":"b:8/V/9/d//31+////////////AQAA","21":"b:8/V/9/d//31+////////////AQAA","25":"b:8/V/9/d//31+////////////AQAA","32":[20,43,101],"33":"b:8/V/9/d//31+////////////AQAA","35":"b:8/V/9/d//31+////////////AQAA","39":"b:8/V/9/d//31+////////////AQAA","46":"b:8/V/9/d//31+////////////AQAA"},"packages/@n8n/design-system/src/v2/utils/index.ts":{"6":"b:8/V/9/d//31+////////////AQAA","12":"b:8/V/9/d//31+////////////AQAA"},"packages/@n8n/i18n/src/index.ts":{"36":"b://V/9/d//33/////////////AQAA","48":"b:/8Qv93dMvwBYyLz7ifa5//97AAAA","63":"b://V/9/d//33/////////////AQAA","93":"b://V/9/d//33/////////////AQAA","101":"b:/8Rv93dsvwFY6Lz7ife5//97AAAA","105":"b:4AAAAAAIDAAIAAAgAJCAAQBwAAAA","138":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","145":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","153":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","170":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","180":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","190":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","203":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","216":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","229":"b:/8Rv13dsvwFY6Lz7ifW5//97AAAA","238":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","250":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","262":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","277":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","295":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","317":"b:zsQrVGMMugBYyLj7geS5//9LAAAA","340":[52,126,127,130],"373":[10,32],"380":"b:7wQsh3cAHAAYCKRpAPCQwyxxAAAA","389":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","407":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/i18n/src/utils.ts":{"9":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","29":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","31":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","34":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","41":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","49":"b:SoQKBGEIGAAQACAiAEQJ3e4JAAAA","57":"b:SoQKBGEIGAAQACAiAEQJ3e4JAAAA","58":"b:SoQKBGEIGAAQACAiAEQJ3e4JAAAA"},"packages/@n8n/permissions/src/roles/custom-role-scopes.ee.ts":{"135":"b://V/9/d//33/////////////AQAA","150":"b://V/9/d//33/////////////AQAA","151":"b://V/9/d//33/////////////AQAA","163":"b://V/9/d//33/////////////AQAA","164":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/permissions/src/scope-information.ts":{"4":"b://V/9/d//33/////////////AQAA","5":"b://V/9/d//33/////////////AQAA","6":"b://V/9/d//33/////////////AQAA","12":"b://V/9/d//33/////////////AQAA","13":"b://V/9/d//33/////////////AQAA","14":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/permissions/src/utilities/get-resource-permissions.ee.ts":{"14":"b://V/9/d//32f//////f/////AQAA","15":"b://V/9/d//32f//////f/////AQAA","18":"b://V/9/d//32f//////f/////AQAA"},"packages/@n8n/stores/src/metaTagConfig.ts":{"1":"b://V/9/d//33/////////////AQAA","8":"b://V/9/d//33/////////////AQAA","34":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/stores/src/useAgentRequestStore.ts":{"18":"b://V/9/d//33/////////////AQAA","64":"b:gQAABAAAEAAAAAAoACAADQAAAAAA","78":"b:hwAIBGIAGAAIAAApACAQ3SwAAAAA"},"packages/@n8n/stores/src/useRootStore.ts":{"39":"b://V/9/d//33/////////////AQAA","71":"b://V/9/d//33/////////////AQAA","73":"b:AEQCAEEAkABAgAAAAAAAQRgAAAAA","75":"b:AEQCAEEAkABAgAAAAAAAQRgAAAAA","79":[51],"83":"b:AEQCAEEAkABAgAAAAAAAQRgAAAAA","85":"b:4EQCAEEAmABIgAAgABAAQRgAAAAA","93":"b:AEQCAEEAkABAgAAAAAAAQRgAAAAA","95":"b:AEQCAEEAkABAgAAAAAAAQRgAAAAA","99":"b://V/9/d//33/////////////AQAA","101":"b:7wQshHcAHAAYCKRpAPCQ/y5zAQAA","103":"b://V/9/d//33/////////////AQAA","105":[1,2,6,67,22,119,51,126,132],"109":"b://V/9/d//30f/////+f/////AQAA","111":"b://V/9/d//31/////////////AQAA","113":[79,22,132,56],"117":"b://V/9/d//33/////////////AQAA","119":[43,106],"121":[43,106],"123":[43,106],"125":"b://V/9/d//33/////////////AQAA","136":"b://V/9/d//33/////////////AQAA","141":"b://V/9/d//33/////////////AQAA","146":"b://V/9/d//33/////////////AQAA","151":"b://V/9/d//33/////////////AQAA","155":"b://V/9/d//33/////////////AQAA","159":"b://V/9/d//33/////////////AQAA","163":"b://V/9/d//33/////////////AQAA","167":"b://V/9/d//33/////////////AQAA","171":"b://V/9/d//33/////////////AQAA","175":"b://V/9/d//33/////////////AQAA","179":"b://V/9/d//33/////////////AQAA","183":"b://V/9/d//33/////////////AQAA","188":"b://V/9/d//33/////////////AQAA","192":"b://V/9/d//33/////////////AQAA","196":"b://V/9/d//33/////////////AQAA","200":"b://V/9/d//33/////////////AQAA","204":"b://V/9/d//33/////////////AQAA","212":"b://V/9/d//33/////////////AQAA","216":"b://V/9/d//33/////////////AQAA","220":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/utils/src/create-event-queue.ts":{"7":"b:/8Vv9/cd/gl4iLz/w/7/////AQAA","17":"b:/4Ush/cN/gEYiKRrgPb7/69/AQAA","44":"b:/4Ush/cN/gEYiKRrgPb7/69/AQAA"},"packages/@n8n/utils/src/event-bus.ts":{"43":"b://V/9/d//33/////////////AQAA","50":"b://V/9/d//33/////////////AQAA","60":[66,55],"61":[66,55],"68":"b:/9Vv9/d//wl86v//r/f/////AQAA","75":"b:/8Vv9/d//wl8qrz/v///////AQAA","78":"b:/8Vv9/d//wl8irz/u///////AQAA"},"packages/@n8n/utils/src/placeholder.ts":{"13":[24,61,62,26],"22":[24,61,62,26],"32":"b:3sRrVWNsu2FY6Lj7ieW5//9LAAAA","43":[4,24,61,62,26],"63":"b:3sRrVWNsu2FY6Lj7ieW5//9LAAAA","84":[4,24,61,62,26],"87":[4,24,61,62,26],"91":[4,24,61,62,26],"95":[4,24,61,62,26],"107":[4],"111":[4,24,61,62,26]},"packages/@n8n/utils/src/search/re-rank-search-results.ts":{"1":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","6":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","9":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","23":"b:QkADcGIEggIYiDgQgOa4XdsIAAAA"},"packages/@n8n/utils/src/search/sublime-search.ts":{"25":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","41":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","182":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","205":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","222":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","231":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","285":"b:QkADcGIEggIYiDgQgOa4XdsIAAAA"},"packages/@n8n/utils/src/sort/sort-by-property.ts":{"1":"b://V/9/c//n0eiv//pef/////AQAA","6":"b:EABBAIAPogAAgPJChAWb+DREAAAA"},"packages/frontend/editor-ui/src/Interface.ts":{"392":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/App.vue":{"35":"b://V/9/d//33/////////////AQAA","49":"b://V/9/d//33/////////////AQAA","69":"b://V/9/d//33/////////////AQAA","74":"b:xgQiAEEEAAAYgAACAMQ4vD8AAAAA","81":"b://V/9/d//33/////////////AQAA","87":"b://V/9/d//33/////////////AQAA","93":"b://V/9/d//31+////////////AQAA","94":"b://V/9/d//31+////////////AQAA","101":"b://V/9/d//33/////////////AQAA","113":"b://V/9/d//31+////////////AQAA","120":"b://V/9/d//33/////////////AQAA","125":"b://V/9/d//33/////////////AQAA","133":"b://V/9/d//33/////////////AQAA","136":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/api/favorites.ts":{"16":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/app/api/workflows.ts":{"26":"b:XkVvcHMV6gl4iLjUgf683fusAQAA","39":"b:XkVvcHMV6gl4iLjUgf683fusAQAA","65":"b:54QshxUP/gEICKRrgMZT54dzAQAA","69":"b:XkVvcHMF6ggYiLjUgea83fusAAAA","73":[43,106,55],"87":[97],"98":"b:ALAAAIAH4gQGAkMAoAAAAIACAQAA","114":"b://Vv9/cf/g0eiv//oeb/////AQAA","136":"b:7wAsh3cAHAAYCKRpAPCQ/y5zAAAA","149":"b:4YAEgAUM/gEAACArgMBD44dzAQAA","160":"b:/4Ush3cN/gEYiKRrgOb7/69/AQAA"},"packages/frontend/editor-ui/src/app/components/BottomMenu.vue":{"23":"b://V/9/c//n0e+v//pef/////AQAA","33":[58,115],"36":[58,115],"78":[58,42,66,115],"82":[42,66],"84":"b://V/9/c//n0e+v//pef/////AQAA","104":[58,115],"106":[58,115],"118":[58,115],"129":"b://V/9/c//n0eiv//pef/////AQAA","134":[58,115],"146":[42,66],"148":[42,66],"168":"b://V/9/c//n0e+v//pef/////AQAA","173":[42,66]},"packages/frontend/editor-ui/src/app/components/BreakpointsObserver.vue":{"30":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","37":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","53":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","72":[39,50],"76":[39,50],"84":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","88":[24,26,82,39,42,118,135,54],"91":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/app/components/ConnectionTracker.vue":{"26":"b:/8Vv9/cd/gkYiLz/web/////AQAA"},"packages/frontend/editor-ui/src/app/components/Draggable.vue":{"40":"b:7tQrVOMPugBYivv7geS5//9LAQAA","44":[39,40,41,42,125,127,130,53,55],"78":[39],"105":[39],"115":[39,40,41,42,55],"127":[39,40,41,42,55],"135":"b:6tQoEOMHuAAYinv7AeS5/+9KAQAA","149":"b:7tQrVOMPugBYivv7geS5//9LAQAA"},"packages/frontend/editor-ui/src/app/components/DraggableTarget.vue":{"15":"b:3sQrVGNsuwBYyLj7ieS5//9LAAAA","31":"b:3sQrVGNkugAYyLj7ieS5//8LAAAA","34":"b:3sQrVGNsuwBYyLj7ieS5//9LAAAA","37":"b:3sQrVGNsuwBYyLj7ieS5//9LAAAA","49":"b:UsQrQENkOABYyAjCAOA4374BAAAA","53":"b:QsQrQENkOABYyAjCAOA4374BAAAA","57":"b:QIQqQENkEAAQwAgAAAAwXD4AAAAA","79":"b:3sQrVGNsuwBYyLj7ieS5//9LAAAA"},"packages/frontend/editor-ui/src/app/components/DynamicModalLoader.vue":{"9":"b://V/9/d//33/////////////AQAA","17":"b://V/9/d//30f/////+f/////AQAA","23":"b://V/9/d//33/////////////AQAA","29":"b://V/9/d//30f/////+f/////AQAA","44":"b://V/9/d//33/////////////AQAA","46":"b://V/9/d//30f/////+f/////AQAA","54":"b://V/9/d//33/////////////AQAA","58":"b://Vv8/d//30f/////+f/////AQAA","60":[78,80,81]},"packages/frontend/editor-ui/src/app/components/FocusSidebar.vue":{"33":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","52":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","53":[96,112],"54":"b:/8Uv9/cd/glYiLz/gfb/////AQAA","56":[96,112],"63":[96,112],"66":[96,112],"74":[96,112],"86":[96,112],"91":"b:/8Uv9/cd/glYiLz/gfb/////AQAA","99":[96,112],"115":[96,112],"119":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","123":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","124":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","135":"b:/8Uv9/cd/glYiLz/gfb/////AQAA","163":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","167":"b:QAAABQAETAAAAAQAAITAAYBwAQAA","170":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","192":[96,112]},"packages/frontend/editor-ui/src/app/components/FreeAiCreditsCallout.vue":{"21":"b:zsRrVGMsugFYqLj7geW5//9LAAAA","55":"b:zsRrVGMsugFYqLj7geW5//9LAAAA","57":"b:zsRrVGMsugFYqLj7geW5//9LAAAA","63":"b:zsRrVGMsugFYqLj7geW5//9LAAAA"},"packages/frontend/editor-ui/src/app/components/KeyboardShortcutTooltip.vue":{"21":"b://V/9/c//n1++v//pf//////AQAA"},"packages/frontend/editor-ui/src/app/components/MainHeader/ActionsDropdownMenu.vue":{"44":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","74":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","82":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","84":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","88":"b:DgAIAJAACAAAAICEAQAAwIqAAAAA","92":"b:DgAIAJAACAAAAICEAQAAwIqAAAAA","114":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","239":"b:DgAIAJAISAAAAICEgQIIwIqAAAAA","413":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","421":"b:DgAIAJAACAAAAICEAQAAwIqAAAAA"},"packages/frontend/editor-ui/src/app/components/MainHeader/MainHeader.vue":{"62":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","70":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","71":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","76":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","77":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","78":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","79":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","80":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","82":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","85":[39],"88":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","96":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","106":"b:3sUrUPMV/gEYiLj7geb4//9/AQAA","110":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","114":[24,26,82,39,118,135,54],"118":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","123":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","130":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","140":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","160":"b:QAAAAIAADAAAAAAAAICAAQBwAAAA","181":[6,39,111,141,142],"212":"b:QAAAAIAADAAAAAAAAICAAQBwAAAA","238":[39],"256":[39],"260":[39]},"packages/frontend/editor-ui/src/app/components/MainHeader/TabBar.vue":{"22":"b:QAAAAIAADAAAAAAAAICAAQBwAAAA","24":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA"},"packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowDetails.vue":{"46":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","92":[39,138],"98":[39],"101":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","105":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","109":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","114":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","119":[39,96,135,138,53,54,143,56,144],"121":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","133":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","134":[39,42,135,54],"141":[39,138],"149":[39,138],"156":[39,138],"185":[39],"190":[39],"196":"b:DgAoAJABiAAAAICEAQIAwIqAAAAA","222":[39,54],"266":[39],"287":[39],"323":[39,54],"333":[39,54],"384":[39],"386":[39],"392":"b:DgAIAJAACAAAAICEAQAAwIqAAAAA","398":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","407":[24,26,82,39,42,118,135,54],"415":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","426":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","432":"b:/8Vv8/cd/gkYiLz/geb/////AQAA","491":[54],"498":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.vue":{"67":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","73":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","86":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","93":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","95":[39],"104":"b:DgAIAJAACAAAAICEAQAAwIqAAAAA","106":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","110":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","114":"b:/4Usl/cN/gEYiKR7gOb7/+//AQAA","118":"b:8kQGEOEY2AEIgAAyAEQJXduIAQAA","131":[39],"132":[39],"133":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","135":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","166":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","167":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","168":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","169":[18,39,43,106,54,139,55],"171":"b:XkVvcPMV6gkYiLjUgea83fusAQAA","177":[39,55],"202":[39,106,54,139,55],"218":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","364":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","369":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","378":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","380":[39],"387":[39],"392":"b:/8Vv9/cd/nkYiLz/geb/////AQAA","397":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","399":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","434":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","439":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","442":[39],"467":[39],"502":[39],"512":[39],"532":[39],"557":[39],"558":[39],"563":[39],"567":[39],"572":[39],"578":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","583":[24,26,82,39,42,118,135,54],"591":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","635":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","646":"b:/8Vv8/cd/gkYiLz/geb/////AQAA","681":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/app/components/MainSidebar.vue":{"32":"b://V/9/c//n0eiv//pef/////AQAA","79":"b://V/9/c//n0eiv//pef/////AQAA","82":"b:/+V/9/c//nkeiv//pef/////AQAA","87":"b://V/9/c//n0eiv//pef/////AQAA","89":"b://V/9/c//n0eiv//pef/////AQAA","212":"b://V/9/c//n0eiv//pef/////AQAA","213":"b://V/9/c//n0eiv//pef/////AQAA","216":"b://V/9/c//n0eiv//pef/////AQAA","228":[58,59,81,41,42,66,53],"229":[58,59,81,41,42,66,53],"234":"b://V/9/c//n0eiv//pef/////AQAA","238":"b://V/9/c//n0eiv//pef/////AQAA","243":"b://V/9/c//n0eiv//pef/////AQAA","254":"b:AAAAAAAF4gEEAAAAgABAAIAAAQAA","263":[115],"270":[55],"273":[55],"285":[58,42,66,115],"328":[42,66],"336":"b://V/9/c//n0eiv//pef/////AQAA","369":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/app/components/MainSidebarHeader.vue":{"37":"b:/9V/9/cv/m0ciP//hef/////AQAA","41":[58,59,81,41,42,66,53],"45":[55],"69":"b:ACAQAAAGIAwEcAIAAAAAAAAAAAAA","114":"b://V/9/c//n0eiv//pef/////AQAA","123":"b://V/9/c//n0eiv//pef/////AQAA","132":"b://V/9/c//n0eiv//pef/////AQAA","137":[65],"144":[13,21,42,101,53],"168":"b://V/9/c//n0e+v//pef/////AQAA"},"packages/frontend/editor-ui/src/app/components/MainSidebarSourceControl.vue":{"27":[65],"37":[65],"41":"b://V/9/c//n0eiv//pef/////AQAA","47":[65],"53":[65],"62":[65],"84":"b://V/9/c//n0eiv//pef/////AQAA","111":[65],"144":[65],"170":[65]},"packages/frontend/editor-ui/src/app/components/ModalDrawer.vue":{"7":"b://V/9/d//33/////////////AQAA","40":"b:DkAJABAh6kEAgMGEBfEO6IuCAQAA","61":"b://V/9/d//33/////////////AQAA","75":"b://V/9/d//33/////////////AQAA","89":"b://V/9/d//33/////////////AQAA","91":[12]},"packages/frontend/editor-ui/src/app/components/ModalRoot.vue":{"20":"b://V/9/d//33/////////////AQAA","21":"b://Vv8/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/components/Modals.vue":{"149":"b://V/9/d//33/////////////AQAA","151":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","180":[115],"188":[16,79,21,22,42,45,104,49],"192":[39],"198":[115,143],"206":[138],"214":"b://V/9/d//33/////////////AQAA","218":"b://V/9/d//33/////////////AQAA","224":[43,106],"242":[101],"248":[106,54,139,55],"252":[66],"256":[66],"260":[103,105,55],"266":[97],"274":[97],"285":[46,99,48],"339":[45],"345":[45],"371":[55],"400":[44,56],"409":[41],"418":[1],"436":[41,42],"466":[137],"491":[98],"514":[106,54,139,55]},"packages/frontend/editor-ui/src/app/components/NodeExecuteButton.vue":{"15":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","59":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","74":"b:hgAIAGIAEAAIAAAhAAAQ0CwAAAAA","81":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","93":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","99":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","105":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","116":"b:zsQrUGMEOgAYiDjzgeS53f8IAAAA","120":"b:hgQIAGMAEAAIAAAhAAAQ0C4AAAAA","132":"b:hgAIAGIAEAAIAAAhAAAQ0CwAAAAA","136":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","145":[116],"148":"b:zsQrVGMEugAYiLj7geS5//8LAAAA"},"packages/frontend/editor-ui/src/app/components/NodeIcon.vue":{"43":"b:/sQrdGMcugFYyLj7gfa5//9rAQAA","44":"b:/sQrdGMcugFYyLj7gfa5//9rAQAA","48":"b:/8Qv93cc/gF4yLz/gf77///7AQAA","50":"b:/8Qv93cc/gF4yLz/gf77///7AQAA","51":"b:/8Qv93cc/gF4yLz/gf77///7AQAA","56":"b:/8Qv93cc/gF4yLz/gf77///7AQAA","61":"b:/8Qv93cc/gF4yLz/gf77///7AQAA","66":"b:/8Qv93cc/gF4yLz/gf77///7AQAA","68":"b:/8Qv93cc/gF4yLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/app/components/NpsSurvey.vue":{"14":"b://V/9/d//33/////////////AQAA","40":"b://V/9/d//33/////////////AQAA","117":"b://V/9/d//33/////////////AQAA","127":"b://V/9/d//33/////////////AQAA","144":"b://V/9/d//33/////////////AQAA","146":"b://Vv8/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/components/TidyUpIcon.vue":{"2":"b:/8Vv9/cd/gsYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/app/components/UpdatesPanel.vue":{"11":"b://V/9/d//33/////////////AQAA","15":"b://Vv8/d//33/////////////AQAA","24":"b://V/9/d//33/////////////AQAA","29":[12],"61":[12],"70":[12]},"packages/frontend/editor-ui/src/app/components/WorkflowProductionChecklist.vue":{"32":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","49":[18,39,43,106,54,139,55],"50":[18,39,43,106,54,139,55],"51":[18,39,43,106,54,139,55],"57":[39,106],"61":[18,39,43,106,54,139,55],"66":[18,39,43,106,54,139,55],"67":[18,39,43,106,54,139,55],"72":[18,39,43,106,54,139,55],"73":[18,39,43,106,54,139,55],"76":[18,39,43,106,54,139,55],"81":[39,106,54],"85":[39,106,54,139,55],"87":"b:/4UMh/cN/gEYiKRrgOb7/69/AQAA","91":"b:/4Ush/cN7gEYiKRrgOb7/69/AAAA","92":[21,39,42,53],"94":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","98":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","102":"b:/4Ush/cN7gEYiKRrgOb7/69/AAAA","104":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","169":"b:/4Usg/cN/gEYiKRrgOb7/69/AQAA","215":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","224":[39,106],"249":[39,106],"259":[39,106],"275":[39,106],"286":[39,106],"294":[39,106,54],"298":[39,106],"302":[39,106,54],"312":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","314":[39,106,54,139,55],"321":[39,106,54],"328":[39],"340":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","343":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA"},"packages/frontend/editor-ui/src/app/components/app/AppBanners.vue":{"7":"b://V/9/d//33/////////////AQAA","9":"b://V/9/d//33/////////////AQAA","10":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/components/app/AppChatPanel.vue":{"9":"b://V/9/d//31+////////////AQAA","24":"b://V/9/d//31+////////////AQAA","26":"b://V/9/d//31+////////////AQAA","34":"b://V/9/d//31+////////////AQAA","49":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/app/components/app/AppCommandBar.vue":{"11":"b://V/9/d//33/////////////AQAA","24":"b://V/9/d//32f/////+f/////AQAA","26":"b://V/9/d//33/////////////AQAA","28":"b://V/9/d//32f/////+f/////AQAA","34":[55],"37":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/components/app/AppHeader.vue":{"6":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA"},"packages/frontend/editor-ui/src/app/components/app/AppLayout.vue":{"5":"b://V/9/d//33/////////////AQAA","6":"b:ALB1AIAn4gUGg0MApAFAAIAAAQAA","9":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA","12":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","14":[72,73,42,66],"15":[69,70,107,108],"16":[76,77,78,20],"18":[24,60,61,25,62,26,82],"30":"b://V/9/d//31+////////////AQAA","35":"b://V/9/d//31+////////////AQAA","37":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/components/app/AppModals.vue":{"7":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/components/transitions/SlideTransition.vue":{"3":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/app/composables/canvasConnectionReplacement.utils.ts":{"85":"b:QEQhUEMEAgAYiAjQgOS8XvsIAAAA","93":"b:QEQhQEMEAgAYiAAQgOS8XNoIAAAA","101":"b:QEQhUEMEAgAYiAjQgOS8XvsIAAAA","191":[94,95,109],"211":[94,95,109],"220":[94,95,109],"227":[94,95,109],"251":[94,95,109],"266":[94,95,109]},"packages/frontend/editor-ui/src/app/composables/useActivityDetection.ts":{"6":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","9":"b:XIAAAEEE8gEAAAAhAISaCq96AAAA","15":"b:XIAAAEEE+gEAgABhAMS6Cq96AAAA","16":"b:XIAAAEEE+gEAgABhAMS6Cq96AAAA","21":"b:QIAABQAF7gEAAAQAgITAAYBwAQAA","22":"b:QIAABQAF7gEAAAQAgITAAYBwAQAA","28":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","29":"b:XIAAAEEE+gEAgABhAMS6Cq96AAAA","39":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","46":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA"},"packages/frontend/editor-ui/src/app/composables/useAiGateway.ts":{"14":"b://V/9/d//30e/v///+f/////AQAA","18":"b://V/9/d//30ezv///+f/////AQAA","37":"b:AEQBQEEEAgAAgJgKgIQgzH4IAAAA","43":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","46":"b:/8Vv9/cd/gkYyLz/geb/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useBackendStatus.ts":{"10":"b://V/9/d//33/////////////AQAA","19":"b://V/9/d//33/////////////AQAA","49":"b://V/9/d//33/////////////AQAA","67":"b:QQAQB8EECgAIQAYAAITAAAAAAAAA","72":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useBeforeUnload.ts":{"15":"b://V/9/d//33/////////////AQAA","22":"b:AIBAAAENoAAAACAAAMACxosCAAAA","27":"b:AIBAAAENoAAAACAAAMACxosCAAAA","32":"b:AIAAAAAMoAAAAAAAAMACAoACAAAA","43":"b://V/9/d//33/////////////AQAA","47":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","51":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA"},"packages/frontend/editor-ui/src/app/composables/useBrowserNotifications.ts":{"57":"b://V/9/d//31+////////////AQAA","66":[4,8],"80":[4,8]},"packages/frontend/editor-ui/src/app/composables/useBugReporting.ts":{"30":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useCalloutHelpers.ts":{"33":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","111":[6,67,79,28,92,109,120,128,129]},"packages/frontend/editor-ui/src/app/composables/useCanvasOperations.ts":{"212":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","248":"b:QkQjcGMEogAYiDhQgOa4XfsoAAAA","252":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","262":[4],"275":[4],"292":[4,93,109,110,113,115,53],"300":[4,93,109,110,113,115,53],"309":[4,93,94,95,109,110,113,115,53],"331":[115],"340":[95,137],"368":[137],"380":[111,129],"441":[90,109,110,113,115,51,137],"520":[90,109,110,113,115,51,137],"584":[109,110,113,115,137],"589":[109,110,113,115,137],"596":[115,137],"601":[90,109,110,113,115,51,137],"620":[137],"641":[137],"817":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","827":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","850":"b:78QrdHMM+gFYiLj/gea////7AAAA","866":"b:QAAAAAAAGAAAAAAAAKQIAAB4AAAA","879":[115],"922":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","930":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1010":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1029":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1043":[111,53],"1054":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1077":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1126":[115,137],"1135":[94,95,109],"1146":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1219":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","1229":[114],"1235":"b:QkQjcGMEogAYiDjQgOa4X/soAAAA","1265":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1308":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1314":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1319":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1339":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","1351":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1477":"b:QAAAEEAAAAAIgACQAOA4DukAAAAA","1490":"b:QEQhUEMEAgAYiAjQgOS4XvsIAAAA","1511":[94,95,109],"1567":"b:QEQhUEMEAgAYiAjQgOS4XvsIAAAA","1572":[6,67,79,28,92,128],"1595":"b:QAAAAEAAAAAAAACAAOA4DugAAAAA","1635":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","1644":[94,95,109],"1666":[94,95,109],"1703":[94,95,109],"1718":[95],"1723":[94,95,109],"1725":[94,95,109],"1731":[95],"1745":[95],"1757":[95],"1771":[95],"1778":[95],"1785":[94,95,109],"1792":[94,95,109],"1800":[95,109],"1809":[95,109],"1813":[94,95,109],"1825":[94,95,109],"1828":[94,95,109],"1831":[94,95,109],"1932":[95],"1979":[94,95,109],"1998":[94,95,109],"2045":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","2083":"b:XkQrUFMEKgAYiLjUgeS+3vuKAAAA","2135":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","2145":[115,137],"2160":[90,109,110,113,115,51,137],"2226":"b:EAAAAAAACAAAAADEAGAKAAACAAAA","2261":"b:EAAAAAAACAAAAADEAGAKAAACAAAA","2275":[115,137],"2289":[6,17,38,110,137],"2306":[6,110,137],"2333":[6,137],"2337":[17,38,110,137],"2341":"b:XkQrUFMEKgAYiLjUgeS+3vuKAAAA","2349":"b:XkQrUFMEKgAYiLjUgeS+3vuKAAAA","2355":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","2362":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","2366":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","2371":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","2450":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","2481":"b:XkQrcHMEqgAYiLjUgea83/uoAAAA","2508":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","2559":"b:54QshxUM/gFoCKRrgNJT54dzAQAA","2596":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2613":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2631":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2648":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2651":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2694":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2816":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2850":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2865":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2872":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2882":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","2883":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","3007":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","3037":[36,95,96,127,129,131,135,143],"3039":[129,143],"3042":[96,135,143],"3048":[96,135,143],"3057":[96,135,143],"3065":[96,135,143],"3066":[96,135,143],"3077":[143],"3100":[109,111,115,131,53,56],"3114":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","3150":[109,111,115,131,53,56],"3162":[109,111,115,131,53,56],"3204":[56],"3209":[56],"3218":[109,111,115,131,53,56],"3239":[109,111,53,56],"3246":[109,111,53,56],"3247":[109,111,53,56],"3258":[111,115,131],"3265":[111,115,131],"3268":[109,53,56],"3280":[109,53,56],"3340":[6,67,7,93,108],"3355":[6,67,7,93,108],"3360":[44,56,144],"3457":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","3483":"b:QAACUAAAIAAIgDhQAAAAQDMAAAAA","3533":"b:/8Vv93cd/gl4iLz/gf7/////AQAA","3534":"b:/8Vv93cd/gl4iLz/gf7/////AQAA","3537":[44,56,144],"3545":[44,56,144],"3552":[44,56,144]},"packages/frontend/editor-ui/src/app/composables/useClipboard.ts":{"24":[66,120],"44":[111,115,117,53,54],"55":[111,115,117,53],"73":"b:/8V/9/cd/nl++L//pfb/////AQAA","86":"b:zsQgFWEF/kEcqD76heT5//96AQAA"},"packages/frontend/editor-ui/src/app/composables/useCollectionOverhaul.ts":{"5":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","8":"b:zsQrVGNMuwFY6Lj7ieS5//9LAAAA"},"packages/frontend/editor-ui/src/app/composables/useDataSchema.ts":{"31":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","35":"b:lgAIBAIIGAIQAKDJAECx/25DAAAA","58":[57],"65":"b:AAAAAAAACAIAAKAAAAABMAYAAAAA","75":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","100":"b:lgAIBAIIGAIQAKDJAECx/25DAAAA","110":[57,95,52,134],"130":[57,95,52,134],"151":[57,95,52,134],"163":"b:hgQIBGMIGAIQACBJAECQ/S5DAAAA","179":"b:3sQrVGMMugJYiLj7geS7//9LAAAA","207":"b:3sQrVGMMugJYiLj7geS7//9LAAAA","216":"b:AAAAAAAAEAJAAAAAAAChvA4CAAAA","221":"b:AAAAAAAAEAJAAAAAAAChvA4CAAAA","228":[57,127],"236":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","241":[57,127],"365":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","367":"b:BgAIBAIIGAIQAKAJAECQy2xBAAAA","378":[57,52,134],"385":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","394":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","396":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","399":[57,127],"407":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","468":"b:hgAIBAIIGAIQAKDJAECx/25DAAAA","509":"b:BgAIBAIIGAIQAKDJAECx/25DAAAA","514":"b:BgAIBAIIGAIQAKAJAECx/25DAAAA"},"packages/frontend/editor-ui/src/app/composables/useDebounce.ts":{"19":"b://V/9/d//33/////////////AQAA","30":"b:3sRrVPNvvwFYqPv7iee4//97AQAA","43":"b:QkQjcGMHtgAYiHrQhOa43/soAQAA"},"packages/frontend/editor-ui/src/app/composables/useDebugInfo.ts":{"72":"b://V/9/d//33/////////////AQAA","78":"b://V/9/c//n0eiv//pef/////AQAA","115":"b://V/9/c//n0eiv//pef/////AQAA","126":"b://V/9/c//n0eiv//pef/////AQAA","136":"b://V/9/c//n0eiv//pef/////AQAA","147":"b://V/9/c//n0eiv//pef/////AQAA","154":"b://V/9/c//n0eiv//pef/////AQAA","158":[115],"166":[115],"169":[115],"174":[115],"184":"b://V/9/c//n0eiv//pef/////AQAA","201":"b://V/9/c//n0eiv//pef/////AQAA","219":[115],"233":"b://V/9/c//n0eiv//pef/////AQAA","237":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useDocumentVisibility.ts":{"17":"b:AJBQAIFv4zAGNGIAAMACxosCAQAA","28":"b://V/9/d//31+////////////AQAA","36":"b://V/9/d//31+////////////AQAA","40":"b:DgAABQAEQAAAAAQAAABAAKACAAAA"},"packages/frontend/editor-ui/src/app/composables/useEditorContext.ts":{"27":"b:HkEABAAAAAAACAAAAeAYQABAAAAA","30":"b:/8Vv9Pcd/gkYiLj/geb/////AQAA","51":"b://V/9/d//33/////////////AQAA","52":"b:/8Vv9Pcd/gkYiLj/geb/////AQAA","59":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","60":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","61":"b:/4Ush/cN/gEYiKRrgPb7/69/AQAA","64":"b:/4Ush/cN/gEYiKRrgPb7/69/AQAA"},"packages/frontend/editor-ui/src/app/composables/useErrorHandler.ts":{"26":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useExecutingNode.ts":{"15":"b://V/9/d//3//////////////AQAA","19":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","24":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","33":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","38":"b:/8Qv93cc/gMYiLz/gf7////7AQAA"},"packages/frontend/editor-ui/src/app/composables/useExposeCssVar.ts":{"7":"b://V/9/d//33/////////////AQAA","11":"b://V/9/d//33/////////////AQAA","12":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useExternalHooks.ts":{"10":"b://V/9/d//31/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useFloatingUiOffsets.ts":{"16":"b://V/9/d//33/////////////AQAA","21":"b://V/9/d//33/////////////AQAA","25":"b:zsQrUGMEugBYiLj7geS4//8LAAAA","26":"b://V/9/d//33/////////////AQAA","29":"b://V/9/d//33/////////////AQAA","30":"b://V/9/d//33/////////////AQAA","39":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useFreeAiCredits.ts":{"35":"b:zsR7VGMsugFY+Lj7geW5//9LAAAA","37":[76,77,78,20],"53":"b:zsR7VGMsugFY+Lj7geW5//9LAAAA"},"packages/frontend/editor-ui/src/app/composables/useGlobalEntityCreation.ts":{"27":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","30":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","75":"b://V/9/c//n0eiv//pef/////AQAA","78":"b://V/9/c//n0eiv//pef/////AQAA","82":"b://V/9/c//n0eiv//pef/////AQAA","86":"b://V/9/c//n0eiv//pef/////AQAA","93":"b://V/9/c//n0eiv//pef/////AQAA","95":"b://V/9/c//n0eiv//pef/////AQAA","102":"b://V/9/c//n0eiv//pef/////AQAA","112":"b://V/9/c//n0eiv//pef/////AQAA","116":[98,119,125,127,132],"136":[98,119,125,127,132],"145":"b://V/9/c//n0eiv//pef/////AQAA","156":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","168":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","180":"b://V/9/c//n0eiv//pef/////AQAA","202":"b://V/9/c//n0eiv//pef/////AQAA","332":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","366":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","428":[12,81,86,42,49,53,55],"451":[12,81,86,42,49,135,53,55],"479":[13,21,42,101,53],"504":"b://V/9/c//n0eiv//pef/////AQAA","505":"b://V/9/c//n0eiv//pef/////AQAA","506":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useGlobalLinkActions.ts":{"14":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","15":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","18":"b:QAAABQAN7gEAAAQAgITAAYBwAQAA","22":[129],"34":"b:/8Uv9vcN/glYiLz/gfb/////AAAA","55":[129],"60":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","69":"b:QAAABQAN7gEAAAQAgITAAYBwAQAA"},"packages/frontend/editor-ui/src/app/composables/useHistoryHelper.ts":{"18":"b://V/9/d//33/////////////AQAA","24":"b:XkAJABAh6kEAgNHUBfEO6ov6AQAA","32":[115,137],"60":[115],"88":[115,137],"94":[115,137],"99":[115],"110":"b:XkAIABAB6EEAgNHUBfAO6ov6AQAA","117":"b:XkAJABAh6kEAgNHUBfEO6ov6AQAA","147":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useKeybindings.ts":{"60":"b://V/9/c//n1++v//pf//////AQAA","81":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","83":"b:XkAJABAh6kEAgNHUBfEO6ov6AQAA","87":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","89":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","91":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","96":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","98":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","99":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","103":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","109":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","127":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","145":"b:UEAAAAAA4AEAABHQAOAOAoF6AQAA","199":"b:XkAJABAh6kEAgNHUBfEO6ov6AQAA"},"packages/frontend/editor-ui/src/app/composables/useLayoutProps.ts":{"4":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","7":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useLoadingService.ts":{"14":"b:AIBAAAEdoAECACAAAMACxouCAQAA","26":[44,65,56,144],"32":[44,65,143,56,144],"39":"b:XoUoAHMFuAEYiIBhAOa63b9+AQAA"},"packages/frontend/editor-ui/src/app/composables/useNodeConnections.ts":{"12":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","25":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","26":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","29":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","30":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","33":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","34":"b:wQAAEAAACAIIgAAYACQAAAMAAAAA","37":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","45":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","46":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","49":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","50":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","53":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","61":[57,110,113,137]},"packages/frontend/editor-ui/src/app/composables/useNodeDirtiness.ts":{"27":"b:AAAAAAAAGAAAAABAAMAAAAByAAAA","35":"b:AAAAAAAAGAAAAABAAMAAAAByAAAA","58":[51,137],"66":"b:AAAAAAAAGAAAAABAAMAAAAByAAAA","67":"b:AAAAAAAAGAAAAABAAMAAAAByAAAA","77":[140,141,142],"89":"b:BAAAAEAAGAAAAABBAACQACoCAAAA","138":"b://V/9/d//33/////////////AQAA","141":"b:7wQsh3cIHAAYCKRpAPCQ/y5zAAAA","144":"b:/8Qv93cc/gF4iLz/gf77///7AQAA","148":"b:7wQsh3cIHAAYCKRpAPCQ/y5zAAAA","152":[94,140,141,142],"156":"b:7wQsh3cIHAAYCKRpAPCQ/y5zAAAA","158":"b:7wQoh1cIHAAYCKRpANCQ/y5zAAAA","159":[0,6,67,7,51],"162":"b:7wQsh3cIHAAYCKRpAPCQ/y5zAAAA","179":"b:7wQsh3cIHAAYCKRpAPCQ/y5zAAAA","215":[94],"218":[94],"258":"b:/8Qv93cc/gF4iLz/gf77///7AQAA","262":"b:BAAAAEAAGAAAAABBAACQACoCAAAA","271":[94],"308":"b:7wQoh1cIHAAYCKRpANCQ/y5zAAAA","309":"b:7wQoh1cIHAAYCKRpANCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeDocsUrl.ts":{"5":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","8":[30],"10":[79,30,127,128],"18":"b:zsQrVGMMugBYiLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeExecution.ts":{"81":"b:3sQrVGMEugAYiLj7geS5//8LAAAA","104":"b:hgAIAGIAEAAIAAAhAAAQ0CwAAAAA","112":"b:3sQrVGMEugAYiLj7geS5//8LAAAA","116":"b:3sQrVGMEugAYiLj7geS4//8LAAAA","122":"b:3sQrVGMEugAYiLj7geS5//8LAAAA","126":[10,32,38],"128":"b:3sQrVGMEugAYiLj7geS4//8LAAAA","130":"b:hgAIAGIAEAAIAAAhAAAQ0CwAAAAA","136":"b:3sQrVGMEOgAYiLj7geS4//8LAAAA","138":"b:3sQrVGMEOgAYiLj7geS4//8LAAAA","140":[1,10,32,37,38,131],"142":"b:3sQrVGMEugAYiLj7geS4//8LAAAA","144":"b:3sQrVGMEugAYiLj7geS5//8LAAAA","154":"b:3sQrVGMEugAYiLj7geS5//8LAAAA","167":"b:3sQrVGMEugAYiLj7geS4//8LAAAA","175":"b:3sQrVGMEugAYiLj7geS5//8LAAAA","181":"b:UkQCAGEAkAAIgAACAEQofdkIAAAA","188":"b:zsQrVGMEugAYiLj7geS5//8LAAAA","212":"b:3sQrVGMEugAYiLj7geS4//8LAAAA","240":"b:3sQrVGMEugAYiLj7geS4//8LAAAA","246":"b:3sQrVGMEugAYiLj7geS5//8LAAAA","346":[67,7,93],"355":"b:hgAIAGIAEAAIAAAhAAAQ0CwAAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeHelpers.ts":{"81":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","111":"b:3sQrVGMMugBYiLj7geS5//9LAAAA","144":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","157":"b:QIAhAEEECgAIgAAQgAAAABIAAAAA","158":"b:QIAhAEEECgAIgAAQgAAAABIAAAAA","159":"b:QIAhAEEECgAIgAAQgAAAABIAAAAA","163":"b:/sRv1Gd8uwFY6Lz7ieW5///LAQAA","183":[67,78,128],"244":"b:7wQsh3cAHAAYSKRpAPCQ/y9zAQAA","260":[15,79,21,33],"274":"b:/8Qv93cc/gEYiLz/geb////7AQAA","294":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","302":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","314":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","322":"b:TEQrQEMEEgEYiCABgeC4XDsCAAAA","330":"b:XsQrcHMUugEYiLjVgea83/v6AQAA","345":"b:XEQrQEMEEgAYiCABgeC4XDsCAAAA","353":"b:/8Qv93cc/gFYiLz/geb////7AQAA","380":"b:/8Qv93cc/gEYyLz/geb////7AQAA","393":"b:/8Qv11ccPgEYiLz/geT7///7AQAA","451":"b:+MQv0EccmgEYwJy7gKSoQ1+JAQAA","479":"b:/8Qv93cc/gEYyLz/geb////7AQAA","587":"b:UAABgEUECgEIwAAQgAAAABIAAAAA","642":[15,79,21,33],"650":[15,79],"661":[15,79],"664":"b:/8Vv9/cd/gl4iLz/gff/////AQAA","679":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","683":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","690":"b:zsQrVEMMOgAYiLj7geS4//9LAAAA","692":"b:BgAIBAIIGAAQAKBJAECQ/S5DAAAA","698":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","706":"b:BgAIBAIIGAAQAKBJAECQ/y5DAAAA","712":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","738":"b:5gQIBGMIGAAYAKBpAECQ/y5DAAAA","746":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","777":"b:QAAAAAAAGAAAAAAAAKQIAAB4AAAA","784":"b:QAAAAAAAGAAAAAAAAKQIAAB4AAAA","826":"b:/8Qv93cc/gF4iLz/gfb////7AQAA","830":[6,67,15,21,31,32,34,42,51,56],"846":[6,67,15,21,31,32,34,51,56],"881":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","885":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","888":"b:DgAIABAAKAAAAICEAYAIwIqAAAAA","906":[115],"940":[7,85,120,51,126,127,130,131],"956":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1025":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA"},"packages/frontend/editor-ui/src/app/composables/useNodeIconSource.ts":{"6":"b:/8Vv93cd/gl4yLz/gf7/////AQAA","12":"b:/sQrdGMcugFYyLj7gfa5//9rAQAA"},"packages/frontend/editor-ui/src/app/composables/useNodeType.ts":{"8":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","16":"b:zsQrdGMMugBYiLj7gea5//9rAAAA","29":"b:zsQrdGMMugBYiLj7gea5//9rAAAA","31":"b:zsQrVGMMugBYiLjzgeS4//9LAAAA"},"packages/frontend/editor-ui/src/app/composables/usePinnedData.ts":{"70":"b:7sQrVGMMugBYiLj7geS5///LAAAA","78":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","83":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","93":"b:zsQrVGMMugBYiLj7geS7//9LAAAA","104":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","109":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","171":"b:AAAAAAAAAAAAAIAAAACo3A6AAAAA","175":"b:AAAAAAAAAAAAAIAAAACo3A6AAAAA","225":"b:AAAAAAAAAAAAAIAAAACo3A6AAAAA","244":[131],"266":"b:AAAAAAAAAAAAAIAAAACo3A6AAAAA"},"packages/frontend/editor-ui/src/app/composables/usePostMessageHandler.ts":{"39":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","43":"b:/8Vv8Pcd/gl4iLj/gf7/////AQAA","65":"b:/8Vv8Pcd/gl4iLj/gf7/////AQAA","78":[39],"84":[69,70,39,108],"131":[39],"160":[39],"183":[39],"232":"b:/8Vv8Pcd/gl4iLj/gf7/////AQAA","294":"b:/8Vv8Pcd/gl4iLj/gf7/////AQAA","300":[39,118,135,54]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/executionStarted.ts":{"13":"b:7wQsh/cAHAAYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeExecuteAfter.ts":{"16":"b:7wQsh/cAHAAYCKRpAPCQ/y5zAAAA","49":"b:7wQsh/cAHAAYCKRpAPCQ/y5zAAAA","50":"b:7wQsh/cAHAAYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeExecuteAfterData.ts":{"11":"b:7wQsh/cAHAAYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeExecuteBefore.ts":{"9":"b:7wQsh/cAHAAYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/testWebhookReceived.ts":{"8":"b:4AQEAMEACAAIAAAgABAAAQgAAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/trackNodeExecution.ts":{"11":"b:7wQsh/cAHAAYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/usePushConnection.ts":{"45":"b:/8Vv9/cd/gl4iLz/w/7/////AQAA","46":"b:/4Ush/cN/gEYiKRrgPb7/69/AQAA","51":[24,26,82,39,118,135,54],"60":"b:/4Ush/cN/gEYiKRrgPb7/69/AQAA"},"packages/frontend/editor-ui/src/app/composables/useResizablePanel.ts":{"51":[39],"61":[39],"62":[39],"63":"b:/8V/9/cd/gkY+Lz/gfb/////AQAA","92":[39],"96":"b:/8V/9/cd/gkY+Lz/gfb/////AQAA","100":[39],"104":"b:/8V/9/cd/gkY+Lz/gfb/////AQAA","108":[39],"125":[39],"138":"b:/8V/9/cd/gkY+Lz/gfb/////AQAA","139":"b:/8V/9/cd/gkY+Lz/gfb/////AQAA","145":"b:/8V/9/cd/gkY+Lz/gfb/////AQAA","153":"b:4AAABQAATAAAAAQgAITAAYBwAAAA","159":"b:/8V/9/cd/gkY+Lz/gfb/////AQAA","160":[5,6,67,7,39,93,108,51,142],"161":[5,6,67,7,39,93,51,142]},"packages/frontend/editor-ui/src/app/composables/useResolvedExpression.ts":{"26":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","41":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","47":"b:zsRrVGNsuwFYqLj7ieW5//9LAAAA","53":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","54":"b:AgAAAAAACAAAAIAAAAAAHQ4AAAAA","55":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","60":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","62":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","101":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","127":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","128":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","129":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA"},"packages/frontend/editor-ui/src/app/composables/useRunWorkflow.ts":{"95":"b:7wQshHcAHAAYCKRpAPCQ/y5zAQAA","109":"b:BgAAAEAAGAAAAAABAAAQgSQAAAAA","113":"b:7wQshHcAHAAYCKRpAPCQ/y5zAQAA","128":"b:7wQshHcAHAAYCKRpAPCQ/y5zAQAA","160":"b:7wQshHcAHAAYCKRpAPCQ/y5zAQAA","306":"b:7wQshHcAHAAYCKRpAPCQ/y5zAQAA","309":"b:7wQshDcAHAAYCKRpAPCQ/y5zAQAA","341":[5,6,7,93,108,51],"352":[1,37,38,109,120,131],"376":[1,37,38,109,120,131],"419":[38,88,116,52,133],"472":[10,32],"512":"b:7wQshHcAHAAYCKRpAPCQ/y5zAQAA","563":[51],"610":[51],"638":"b:SAQshFUAHAAQCKRAAMCA4w5zAQAA"},"packages/frontend/editor-ui/src/app/composables/useSelectionValidation.ts":{"25":"b://V/9/d//33/////////////AQAA","37":[113],"54":[113,137],"61":[113],"68":[113],"78":[113,137],"84":[113,137],"86":[113,137],"93":[113,137],"95":[113,137]},"packages/frontend/editor-ui/src/app/composables/useSettingsItems.ts":{"23":"b://V/9/d//30e/v///+f/////AQAA","203":"b://V/9/d//30e/v///+f/////AQAA","206":"b://V/9/d//30e/v///+f/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useSidebarLayout.ts":{"9":"b://V/9/c//n0e+v//pef/////AQAA","12":[58,59,81,41,42,66,53]},"packages/frontend/editor-ui/src/app/composables/useStorage.ts":{"4":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useStyles.ts":{"26":"b://V/9/d//33/////////////AQAA","27":"b://V/9/d//33/////////////AQAA","34":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useTelemetry.ts":{"4":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useTelemetryInitializer.ts":{"13":"b://V/9/d//33/////////////AQAA","27":"b://V/9/d//33/////////////AQAA","32":"b://V/9/d//33/////////////AQAA","36":"b://V/9/d//33/////////////AQAA","40":"b://V/9/d//33/////////////AQAA","59":"b://V/9/d//33/////////////AQAA","69":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useToast.ts":{"23":"b:7xB9gPcv/gEe6OJ5NvOS/753AAAA","93":"b:ABAAAIAPwAAEAAAAMACCAIAAAAAA","107":[12],"149":[78,20,79,81,100,52,131,56],"186":"b:RgAwAAAAOAEIwAIAEICQQQgwAAAA","192":"b:7wQshXcF/gEcCqRpgPTw/65zAQAA","193":[1,2,119,140,141,56],"203":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","205":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useUniqueNodeName.ts":{"4":"b://V/9/d//33/////////////AQAA","11":"b:QAAAAAAAIAAAAAAAAMA8AGgAAAAA","12":"b:QAAAAAAAIAAAAAAAAMA8AGgAAAAA","27":"b:XkQrcHMUqgEYiLjUgea83/uqAQAA","34":"b:QAAAAAAAIAAAAAAAAMA8AGgAAAAA"},"packages/frontend/editor-ui/src/app/composables/useUserHelpers.ts":{"5":"b://V/9/d//30e/v///+f/////AQAA","6":"b://V/9/d//30e/v///+f/////AQAA","12":"b://V/9/d//30e/v///+f/////AQAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowDiffRouting.ts":{"18":"b://V/9/d//33/////////////AQAA","27":"b://V/9/d//33/////////////AQAA","50":"b://V/9/d//33/////////////AQAA","73":"b://V/9/d//33/////////////AQAA","111":"b://V/9/d//33/////////////AQAA","133":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowExtraction.ts":{"40":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","88":[137],"103":[137],"106":[137],"129":[137],"140":[137],"148":[137],"149":[137],"155":[137],"156":[137],"210":[137],"235":[137],"262":[137],"267":[137],"268":[137],"275":[137],"309":[137],"328":[137],"347":[137],"352":[137],"368":[137],"371":[137],"372":[137],"392":[137],"445":[137],"452":[137],"455":[137],"464":[137],"465":[137],"471":[137],"472":[137],"488":[137],"516":[137],"517":[137],"525":[137],"532":[137],"544":[137],"560":[137]},"packages/frontend/editor-ui/src/app/composables/useWorkflowHelpers.ts":{"74":"b:QkQCEEEkmAJIwKA6AGAgXT8CAAAA","175":"b:AgAAAAAACAIAAIAIAAAAHS4CAAAA","278":[57,14,42,126,129,132,133,137],"288":[57,14,42,126,129,132,133,137],"313":"b:TgQshFUAPAIYCKTEAcCI447zAQAA","319":"b:QkQCEEEEmAJIgKA6AGAgXT8CAAAA","350":"b:AgAAAAAACAIAAAAIAAAgHS4CAAAA","366":[1,57,37,38,109,120,131],"392":"b:QkQCEGEEmAJIgKA6AGAgXT8CAAAA","481":"b://V/9/d//3//////////////AQAA","495":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","521":"b:TkArcBIEKgIYiLjUgeK4wbsoAAAA","535":"b:AEQCAEEAkAJIgAAAAAAAQRgAAAAA","556":"b:AEQCAEEAkAJAgAAAAAAAQRgAAAAA","597":[1,2,57],"600":[1,2,57],"631":"b:QkQCEEEgmAJIwIA6ACAgXT8AAAAA","661":[57],"708":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","739":[57,39,109,111,115,131,53,56],"743":[57,109,111,115,131,53,56],"748":[57,56],"750":[57,56],"764":[57,39],"772":[57],"782":"b:54Qsh5UM/gNoCKRrgNJT54dzAQAA","820":"b:54Qsh5UM/gNoCKRrgNJT54dzAQAA","851":[57],"861":[57],"874":[57],"885":[57]},"packages/frontend/editor-ui/src/app/composables/useWorkflowId.ts":{"17":"b://V/9/d//3//////////////AQAA","20":"b://V/9/d//3//////////////AQAA","36":"b://V/9/d//3//////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowImport.ts":{"11":"b:/8Vv8Pcd/gl4iLj/gf7/////AQAA","17":[69,70,39,108],"19":[69,70,39,108]},"packages/frontend/editor-ui/src/app/composables/useWorkflowInitialization.ts":{"81":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","92":"b:/8Vv9/cN/gkYiLz/geb/////AQAA","93":"b:/8Vv9/cN/gl4iLz/gf7/////AQAA","94":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","95":[39],"96":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","98":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","123":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","188":"b:4YAEh4UM/gEAACQrgMDD44dzAQAA","205":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","207":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","243":"b:4YAEh4UM/gEAACQrgMBD44dzAQAA","298":"b:XkVvcPMF6gh4iLjUgf683fusAAAA","313":"b:XkVvcPMF6gh4iLjUgf683fusAAAA","344":"b:4YAEh4UM/gEAACQrgMBD44dzAQAA","399":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","469":[24,82,39,118,135,54]},"packages/frontend/editor-ui/src/app/composables/useWorkflowNormalization.ts":{"22":"b://V/9/d//33/////////////AQAA","26":"b:/8Qv93cc/gF4iLz/gfb////7AQAA","46":"b:/8Qv93cc/gF4iLz/gfb////7AQAA","58":"b:/8Qv93cc/gF4iLz/gfb////7AQAA","76":"b:54QshxUM/gFoCKRrgNLT54dzAQAA","81":"b:54QshxUM/gFoCKRrANLT54dzAQAA","82":"b:54QshxUM/gFoCKRrANLT54dzAQAA","83":"b:54QshxUM/gFoCKRrANLT54dzAQAA","85":"b:54QshxUM/gFoCKRrANLT54dzAQAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowPublicationStatusSync.ts":{"26":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","35":[39],"38":[39],"41":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","81":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","82":[39,42,135,54],"88":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","89":[39],"95":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","96":[39],"97":[24,26,82,39,42,118,135,54]},"packages/frontend/editor-ui/src/app/composables/useWorkflowSaving.ts":{"44":"b://V/9/d//33/////////////AQAA","71":"b:AAAAAAAEQAAAAAAAAIDAAIBgAQAA","75":[135],"147":"b:XoUoAHMFuAEYiIBhAOa63b9+AQAA","154":"b:XoUoAHMFuAEYiIBhAOa63b9+AQAA","184":"b:XoUoAHMFuAEYiIBhAOa63b9+AQAA","359":"b:XgUoAPMFqAEYiIBAAOa43bssAQAA","555":"b:XoQoAFEFqAEIiIBAAOa6zZd8AAAA","569":"b:XoQoAFEFqAEIiIBAAOa6zZd8AAAA","588":"b:XsQrcHMVugEYiLj1gea+3//+AQAA","614":[55],"622":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/composables/useWorkflowUpdate.ts":{"39":"b://V/9/d//31+////////////AQAA","58":[4],"60":[4],"63":[4],"70":[4],"93":[4],"106":[4],"183":[4],"192":[4],"196":[4],"211":[4],"236":[4],"248":[4],"249":[4],"253":[4],"255":[4],"279":[4],"313":[4],"325":[4],"340":[4],"361":[4]},"packages/frontend/editor-ui/src/app/composables/useWorkflowsCache.ts":{"27":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","30":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","35":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","39":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","46":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","62":[39,106,54,139,55],"85":[39,106,54,139,55],"96":[39,106],"104":[39],"113":[39],"120":[39,106],"123":[39,106]},"packages/frontend/editor-ui/src/app/constants/actions.ts":{"1":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/constants/durations.ts":{"33":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/constants/experiments.ts":{"6":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/constants/navigation.ts":{"1":"b://V/9/d//33/////////////AQAA","84":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/constants/nodeTypes.ts":{"136":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/constants/workflows.ts":{"16":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/dev/render-tracker.ts":{"38":"b://V/9/d//33/////////////AQAA","67":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/init.ts":{"45":"b://V/9/d//33/////////////AQAA","99":"b://V/9/d//31/////////////AQAA","163":[59],"185":"b://V/9/d//30f/////+f/////AQAA","230":"b://V/9/d//33/////////////AQAA","243":"b://V/9/d//32f/////+f/////AQAA","279":[42,66]},"packages/frontend/editor-ui/src/app/layouts/BaseLayout.vue":{"10":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/layouts/WorkflowLayout.vue":{"47":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","56":[39,42,44,135,54,56,144],"69":[39,119],"77":[39,118,135,54],"86":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","88":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","90":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","95":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","98":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA"},"packages/frontend/editor-ui/src/app/models/history.ts":{"8":"b://V/9/d//33/////////////AQAA","38":"b:XkQrcHMEugAYiLj0gea+3/v6AAAA","55":"b:XkUrcHMEugAYiLj0gea+3/v6AAAA","60":"b:TgQoAHMAGAAYCIBgAOCQ3SpyAAAA","61":"b:TgQoAHMAGAAYCIBgAOCQ3SpyAAAA","72":[4,93,94,95,109,110,113,115,53],"84":[115],"88":[4,94,95,109,113],"99":[115],"100":[115],"113":"b:XkQrcHMEqgAYiLjUgea83/uqAAAA","118":[115,137],"122":"b:XkQrUFMEKgAYiLjUgeS43vuKAAAA","126":[115,137],"127":[115,137],"137":[90,109,110,113,115,51,137],"142":[115,137],"146":[110,115,137],"150":[115,137],"151":[115,137],"161":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","166":[115,137],"170":"b:FgAAABAACAAIAIjEAGAKwAqCAAAA","180":[115,137],"181":[115,137],"191":"b:EAAAAAAACAAAAADEAGAKAAACAAAA","196":[115,137],"200":"b:EAAAAAAACAAAAADEAGAKAAACAAAA","210":[115,137],"211":[115,137],"212":[115,137],"227":"b:QAAAAAAAGAAAAAAAAKQIAAB4AAAA","234":[115],"238":[111,115],"244":[115],"245":[115],"260":[111],"290":[95,137],"299":[137],"308":[95],"317":[137],"318":[137],"329":[113],"345":[113],"371":[113],"380":[113],"399":[113],"409":[113]},"packages/frontend/editor-ui/src/app/moduleInitializer/modalRegistry.ts":{"6":"b://V/9/d//33/////////////AQAA","10":"b://V/9/d//30f/////+f/////AQAA","11":"b://V/9/d//30f/////+f/////AQAA","14":"b://V/9/d//30f/////+f/////AQAA","42":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/moduleInitializer/moduleInitializer.ts":{"33":"b://V/9/d//30f/////+f/////AQAA","34":"b://V/9/d//30f/////+f/////AQAA","35":"b://V/9/d//30f/////+f/////AQAA","44":"b://V/9/d//30f/////+f/////AQAA","46":"b://V/9/d//30f/////+f/////AQAA","64":"b://V/9/d//30f/////+f/////AQAA","66":"b://V/9/d//30f/////+f/////AQAA","77":[80,81,24,60,61,25,62,26,82],"103":"b://V/9/d//30f/////+f/////AQAA","104":"b://V/9/d//30f/////+f/////AQAA","105":"b://V/9/d//30f/////+f/////AQAA","116":"b://V/9/d//33/////////////AQAA","117":"b://V/9/d//33/////////////AQAA","118":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/moduleInitializer/resourceRegistry.ts":{"25":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/app/plugins/cache.ts":{"3":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","8":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","9":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","10":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","13":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","25":[39],"33":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","34":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","36":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","39":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","40":[39],"44":[39,106,54,139,55],"49":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","53":[39],"58":[39],"63":[39],"67":[39],"68":[39],"71":[39],"82":[39],"89":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","99":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","100":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","104":[39],"111":[39,106,54,139,55],"112":[39,106,54,139,55],"117":[39],"118":[39],"123":[39],"124":[39]},"packages/frontend/editor-ui/src/app/plugins/chartjs.ts":{"15":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/plugins/components.ts":{"10":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/plugins/directives.ts":{"5":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/plugins/sentry.ts":{"33":[64],"36":[64],"60":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/plugins/telemetry/index.ts":{"33":"b://V/9/d//31/////////////AQAA","37":"b://V/9/d//33/////////////AQAA","72":"b://V/9/d//30f/////+f/////AQAA","104":"b:/8V/9/d//20c+v//3/f/////AQAA","127":"b://V/9/d//31+////////////AQAA","157":[42,66],"169":[116],"199":"b:TEQrQEMEEgAYiCABgeC4XDsCAAAA","274":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/plugins/vitePreloadError.ts":{"4":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/push-connection/useEventSourceClient.ts":{"13":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/push-connection/useHeartbeat.ts":{"12":"b://V/9/d//33/////////////AQAA","17":"b://V/9/d//33/////////////AQAA","21":[118]},"packages/frontend/editor-ui/src/app/push-connection/useReconnectTimer.ts":{"14":"b://V/9/d//33/////////////AQAA","33":[118],"40":"b:/8V/93cd/nkY+Lz/w/b/////AQAA"},"packages/frontend/editor-ui/src/app/push-connection/useWebSocketClient.ts":{"24":"b://V/9/d//33/////////////AQAA","35":[0,78,25,42],"40":"b:/8V/93cd/nkY+Lz/w/b/////AQAA","53":"b:/4U8h3cN/gEY+KRrgPb7/69/AQAA","61":"b:/8V/9/cd/nkY+Lz/w/b/////AQAA","75":"b:/8V/93cd/nkY+Lz/w/b/////AQAA","94":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA"},"packages/frontend/editor-ui/src/app/router.ts":{"40":"b:/8Vv8Pcd/gl4iLj/gfb/////AQAA","41":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","42":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","43":"b:QAAAAAAADAAAAAAAAICAAQBwAAAA","44":"b:QAAAAAAADAAAAAAAAICAAQBwAAAA","47":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","48":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","51":[74,100,66],"52":[74,100,66],"53":[101],"54":[101],"56":[97],"57":[97],"58":[59],"59":[59],"60":[46,99,48],"61":[46,99,48],"63":[72,73,42,66],"65":[56],"66":[56],"67":[144],"68":[144],"69":[56],"70":[56],"71":[144],"72":[144],"78":[42,66],"80":[65],"81":[65],"82":[45],"87":[45],"96":[102],"97":[102],"98":[118],"99":[118],"100":[144],"101":[106],"102":[106],"105":[106],"106":[106],"113":[43],"114":[43],"174":"b:ALAEBwAGgGQAAUcAAAAAAIAAAAAA","253":[44,56],"282":[144],"287":[144],"446":"b:XkVvcHMV6gkYiLjUgea83fusAQAA","466":[69,70,108],"477":[107],"483":[107],"591":[71],"610":"b://V/9/d//30e/v///+f/////AQAA","732":[1,2,3,4,8],"786":"b:/9V/9/d//30e/v///+f/////AQAA","1080":"b:/9V/9/d//30e/v///+f/////AQAA","1156":"b://V/9/d//33/////////////AQAA","1171":"b://V/9/d//31+////////////AQAA","1181":"b://V/9/d//33/////////////AQAA","1213":[72,73,101],"1245":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/app/stores/aiGateway.store.ts":{"16":[57],"22":[57],"25":"b://V/9/d//39e/v///+f/////AQAA","35":[57],"45":[57],"56":[57],"67":[57],"78":[57],"82":[57],"100":[57],"115":[57],"123":"b:3sQrVGNMuwJYyLj7ieS5//9LAAAA","125":"b:UIAhAEEECgIIwAAQgAAAABIAAAAA","128":"b:3sQrVGNMuwJYyLj7ieS5//9LAAAA","145":"b:AEQBQEEEAgIAgJgKgIQgzH4IAAAA","159":[57]},"packages/frontend/editor-ui/src/app/stores/backendConnection.store.ts":{"7":"b://V/9/d//33/////////////AQAA","10":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/stores/canvas.store.ts":{"6":"b://V/9/d//33/////////////AQAA","13":"b:oUAAAUAACAAAAAQgAOAHwAACAAAA","20":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","27":"b:/8Vv93cd/gkYiLz/gfb/////AQAA","28":"b:/8Vv93cd/gkYiLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/app/stores/cloudPlan.store.ts":{"25":"b://V/9/d//33/////////////AQAA","34":[42,66],"40":[58,13,59,42,65,66,101,53],"42":[59],"45":[59],"48":[59],"58":[59],"65":[59],"71":[59],"73":[59],"83":[59],"85":[59],"87":"b://V/9/c//n0eiv//pef/////AQAA","89":[59],"91":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","111":[59],"122":[74,59,100,66],"127":[59],"142":[59],"158":[59],"183":[59],"204":[59],"217":[59],"228":[59],"236":[59]},"packages/frontend/editor-ui/src/app/stores/executionData.store.ts":{"59":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","66":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","75":[57,141,142],"85":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","86":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","95":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","99":"b:BgQIBGMAGAIQAKBJAECQ/S4DAAAA","101":"b:7wAsh3cIHAIYCKRpAPCQ/y5zAAAA","116":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA","133":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA","136":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA","139":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA","142":"b:BgAAAEAAGAIAAAABAIAAgSRgAAAA","145":"b:BgAAAEAAGAIAAAABAIAAgSRgAAAA","151":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","159":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","190":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","197":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","201":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","216":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","229":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","236":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","272":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","275":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","278":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","287":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","291":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","294":[57,137],"297":[57,137],"305":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","313":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","329":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","339":"b:5wQsh1cIHAIYCKRpAMCQ/y5zAAAA","430":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","450":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","458":[57],"472":"b:7wAsh3cAHAIYCKRpAOCQ/y5zAAAA","476":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","488":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","496":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","511":[57,51],"516":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","535":[7,57,68,32,51,127,130,136,137],"540":[7,57,68,32,51,127,130,136,137],"559":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","563":[57],"577":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","580":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","588":[57,142],"595":[57,111],"615":[57],"616":[57],"620":[57],"632":[57,111],"633":[57,111],"641":[57,111],"685":[57,51],"693":[57,51],"705":[57],"754":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/app/stores/favorites.store.ts":{"9":"b://V/9/d//33/////////////AQAA","32":"b://V/9/d//30f/////+f/////AQAA","42":"b:/9V/9/c//gkYiv//geb/////AQAA","48":[12,80,81,86,42,49,53,55],"82":[54,55],"88":[42,66]},"packages/frontend/editor-ui/src/app/stores/focusPanel.store.ts":{"47":"b://V/9/d//33/////////////AQAA","54":"b://V/9/d//33/////////////AQAA","64":"b://V/9/d//33/////////////AQAA","71":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","72":[96,112],"73":"b://V/9/d//33/////////////AQAA","76":"b://V/9/d//33/////////////AQAA","98":"b://V/9/d//33/////////////AQAA","104":[39,96,112],"139":"b:XgUoAPMFqAEYiIBAAOa43assAQAA","175":[96,112],"193":[96,112],"204":"b://V/9/d//33/////////////AQAA","205":[96,112],"217":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/stores/history.store.ts":{"10":"b://V/9/d//33/////////////AQAA","17":[115,137],"24":"b:XkQrcHMEugAYiLj0gea+3/v6AAAA","28":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","41":[115],"48":"b:XkQrcHMEugAYiLj0gea+3/v6AAAA","53":[115,137],"58":"b:/8Vv93cN/gl4iLz/gf7/////AQAA","61":"b:/8Vv93cN/gl4iLz/gf7/////AQAA","64":"b:/8Vv93cN/gl4iLz/gf7/////AQAA","68":[115],"74":[115,137],"78":"b:XkUrcHMEugAYiLj0gea+3/v6AAAA","81":"b:XkUrcHMEugAYiLj0gea+3/v6AAAA"},"packages/frontend/editor-ui/src/app/stores/logs.store.ts":{"19":"b://V/9/d//33/////////////AQAA","22":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","50":"b:/8Vv93cd/gkYiLz/gfb/////AQAA","54":"b://V/9/d//33/////////////AQAA","58":[5,6,7,42,108],"62":[5,6,7,42,108],"66":[5,6,67,7,93,108,51,142],"74":[5,6,67,7,93,51,142],"78":[51],"124":[5,6,67,7,93,108,51],"130":"b:/8Vv93cd/gkYiLz/gfb/////AQAA","131":[5,6,67,7,93,51,142],"134":"b://V/9/d//33/////////////AQAA","135":"b:/8Vv93cd/gkYiLz/gfb/////AQAA","136":"b:4AAAEAAACAAIgAAwABAAAAEAAAAA","137":[5,6,67,7,93,108,51]},"packages/frontend/editor-ui/src/app/stores/nodeTypes.store.ts":{"43":"b://V/9/d//3//////////////AQAA","58":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","59":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","77":"b:/8Vv9/cd/gsYyLz/g+b/////AQAA","79":"b:38FvcMMd9gsYiLj/g+b/////AQAA","80":"b:38FvcMMd9gsYiLj/g+b/////AQAA","83":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","85":"b:QkADcEMEogIYiDjQgOa43/soAAAA","86":"b:QkADcEMEogIYiDjQgOa43/soAAAA","89":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","93":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","94":"b:38Vv9/cd/gsYiLz3geb/////AQAA","95":"b:38Vv9/cd/gsYiLz3geb/////AQAA","99":"b:/8Vv9/cd/gsYyLz/g+b/////AQAA","101":"b:/8Vv9/cd/gsYyLz/g+b/////AQAA","109":"b:/8Vv9/cd/gsYyLz/g+b/////AQAA","110":"b:/8Vv9/cd/gsYyLz/g+b/////AQAA","126":"b:/8Vv9/d9/wt46Lz/if//////AQAA","127":"b:/8Qv83d8/wN46Lz/if/////7AQAA","142":"b:zsQrVGMMugJYiLj7geS5//9LAAAA","143":"b:zsQrUGMMugJYiLj7geS5//9LAAAA","148":[57,33],"149":[57,33],"160":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","161":"b:/8Qv83cc/gN4iLz/gf77///7AQAA","173":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","178":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","179":"b:/8Qv83cc/gN4iLz/gf7////7AQAA","185":"b:38QrVGMMugJYiLj7geS5//9LAAAA","186":"b:38QrUGMMugJYiLj7geS5//9LAAAA","189":"b:38QrVGMMOgIYiLj7geS5//9LAAAA","201":"b:zsQrVGMMugJYiLjzgeS5//9LAAAA","202":"b:zsQrUGMMugJYiLjzgeS5//9LAAAA","205":"b:zsQrVGMMOgIYiLjzgeS5//9LAAAA","217":[57],"218":[57],"223":"b:/8Vv9/cd/gsYyLz/g+b/////AQAA","227":"b:/8Vv9/cd/gsYyLz/g+b/////AQAA","230":[57],"231":[57],"237":[6,67,57,78,28,128,129],"238":[6,67,57,78,28,128,129],"242":[6,67,57,78,28,128,129],"263":[6,67,57,78,28,128,129],"279":[57],"280":[57],"284":[57],"303":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","304":"b:/8Qv83cc/gN4iLz/gf77///7AQAA","318":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","329":"b://V/9/d//39+////////////AQAA","337":[57],"338":[57],"346":[57],"350":[57],"373":[57],"384":[57],"396":[57],"410":[57],"412":[57],"420":"b://V/9/d//3//////////////AQAA","431":"b://V/9/d//3+f/////+//////AQAA","437":[57],"445":[57,14,126,129],"449":[57,132],"453":[57,132,133],"461":[57,42,137],"469":[57],"473":"b:/8Vv9/cd/gt4iLz/g/7/////AQAA","483":"b:38FvcMMd9gt4iLj/g/7/////AQAA","490":[57,30,97],"505":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","506":"b:/8Qv83cc/gN4iLz/gfb////7AQAA","515":"b://V/9/d//3//////////////AQAA","518":[57],"519":"b:/0Qul3cMvAJYiKT/Afj4/7/zAQAA"},"packages/frontend/editor-ui/src/app/stores/npsSurvey.store.ts":{"18":"b://V/9/d//33/////////////AQAA","27":"b://V/9/d//30f/////+f/////AQAA","35":"b:QAQBAEAJ2QAIAhhGySZRDSO7AQAA","75":[42,66],"79":"b:XoQoAFEFqAEIiIBAAOa6zIc8AAAA"},"packages/frontend/editor-ui/src/app/stores/posthog.store.ts":{"21":"b://V/9/d//33/////////////AQAA","36":[42,66],"51":[42,66],"59":"b://V/9/d//31+////////////AQAA","63":"b://V/9/d//31+////////////AQAA","70":"b://V/9/d//31+////////////AQAA","162":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/app/stores/pushConnection.store.ts":{"17":"b://V/9/d//33/////////////AQAA","35":"b:/8V/93cd/nl4+Lz/w/7/////AQAA","38":[24,82,42,118,135,54],"46":"b://V/9/d//33/////////////AQAA","48":"b://V/9/d//33/////////////AQAA","66":"b:/4U8h/cN/gEY+KRrgPb7/69/AQAA","80":"b:/4U8h/cN/gEY+KRrgPb7/69/AQAA","85":"b://V/9/d//33/////////////AQAA","87":"b://V/9/d//33/////////////AQAA","93":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","105":"b:/8V/93cd/nkY+Lz/w/b/////AQAA","125":"b:/8V/9/cd/nkY+Lz/w/b/////AQAA","132":"b:/8V/9/cd/mkY+Lz/g/b/////AQAA","148":[118,135,54],"173":"b://V/9/d//33/////////////AQAA","174":"b:/8V/9/cd/nkY+Lz/w/b/////AQAA","195":[24,26,82,42,118,135,54],"199":"b:/8V/93cd/nkY+Lz/wfb/////AQAA"},"packages/frontend/editor-ui/src/app/stores/rbac.store.ts":{"8":"b://V/9/d//33/////////////AQAA","79":"b://V/9/d//30f/////+f/////AQAA","115":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/stores/roles.store.ts":{"22":[12,20,81,86,42,45,101,49,53,55],"23":[12,81,86,42,45,101,49,53,55],"34":"b://V/9/d//30f/////+f/////AQAA","50":[12,20,81,86,42,45,49,53,55],"51":[12,20,81,86,42,45,49,53,55],"55":[101],"56":[101],"59":[101],"61":[101],"69":[101],"70":[101],"73":[12,20,81,86,42,45,49,53,55],"75":[12,20,81,86,42,45,49,53,55],"83":[21,104,49],"84":[21,104,49],"87":[103,105,55],"88":[103,105,55],"91":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/app/stores/settings.store.ts":{"22":"b://V/9/d//33/////////////AQAA","51":"b://V/9/c//n0eiv//pef/////AQAA","53":"b://V/9/c//n0eiv//pef/////AQAA","55":"b://V/9/c//n0eiv//pef/////AQAA","59":"b://V/9/c//n0eiv//pef/////AQAA","61":"b://V/9/c//n0eiv//pef/////AQAA","63":"b://V/9/c//n0eiv//pef/////AQAA","68":"b://V/9/d//33/////////////AQAA","70":"b://V/9/c//n0eiv//pef/////AQAA","72":"b://V/9/c//n0eiv//pef/////AQAA","74":"b://V/9/d//33/////////////AQAA","76":"b://V/9/d//33/////////////AQAA","78":"b://V/9/d//30e/v///+f/////AQAA","80":[59],"82":"b://V/9/d//33/////////////AQAA","84":"b:/8Vv93cd/gkYiLz/geb/////AQAA","90":[59],"92":[59],"94":"b://V/9/d//33/////////////AQAA","98":"b:RkQjcGMEogAYiDjQgea43/tIAAAA","100":"b://V/9/d//31+////////////AQAA","104":[1,2,3,4,8],"108":"b://V/9/d//31/////////////AQAA","110":"b://V/9/c//n0eiv//pef/////AQAA","112":"b://V/9/d//30f/////+f/////AQAA","114":"b://V/9/d//33/////////////AQAA","116":"b://V/9/d//33/////////////AQAA","135":"b:zvR7VOMv+gVe+vv7peW5//9LAQAA","139":[76,77,78,20],"145":"b://V/9/d//30e/v///+f/////AQAA","151":"b://Vv9/cf/g1+iv//ofb/////AQAA","155":"b://V/9/d//33/////////////AQAA","159":"b:QAQBAEAJ2QAIAhhGySZRDSO7AQAA","167":[74,100,66],"169":"b:ALBhAIAn4gQGgkMApAEAAIAAAQAA","171":"b://V/9/d//30f/////+f/////AQAA","173":"b://V/9/d//33///////f/////AQAA","177":"b:ztQ7VGMsugBYyPr7geS5//9LAAAA","194":[67],"198":[20,86,101],"202":"b:/9Vv9/cf/gkYiv//geb/////AQAA","206":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","212":"b://V/9/d//33/////////////AQAA","214":"b://V/9/c//n0eiv//pef/////AQAA","216":[144],"218":"b://V/9/c//n0eiv//pef/////AQAA","220":"b://V/9/d//33/////////////AQAA","222":"b:/9V/9/d//31+/v//////////AQAA","224":[97],"230":"b://V/9/d//30e/v///+f/////AQAA","231":"b:/8Vv93cd/gkYiLz/geb/////AQAA","233":[102,52,143,144],"235":[43,106],"239":[59],"241":"b://V/9/c//n0eiv//pef/////AQAA","245":"b://V/9/d//33/////////////AQAA","247":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","251":"b://V/9/d//33/////////////AQAA","283":"b://V/9/d//33/////////////AQAA","287":"b://V/9/d//33/////////////AQAA","291":"b://V/9/d//33/////////////AQAA","295":"b://V/9/d//33/////////////AQAA","299":"b://V/9/d//33/////////////AQAA","303":"b://V/9/d//33/////////////AQAA","354":"b://V/9/d//33/////////////AQAA","378":[144],"379":[144],"384":[43,106],"393":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/app/stores/ui.store.ts":{"121":"b://V/9/d//33/////////////AQAA","181":"b://V/9/d//33/////////////AQAA","293":"b:ALBAAIEv4jAGAGIAAMACxosCAQAA","294":"b://V/9/d//33/////////////AQAA","358":"b:/8Rv93c+/gF4+Lz/gf/7///7AQAA","362":"b:/8Rv93c+/gF4+Lz/gf/7///7AQAA","366":[98,105,55],"424":"b://V/9/d//33/////////////AQAA","425":"b://V/9/d//33/////////////AQAA","431":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","433":"b://V/9/d//30e/v///+f/////AQAA","435":"b://V/9/d//30e/v///+f/////AQAA","437":"b://V/9/d//30e/v///+f/////AQAA","443":"b:4YAEh4UM/gEAACQrgdBP449zAQAA","451":"b:/8Vv9/cd/glYiLz/geb/////AQAA","452":"b:XoUoAPMFuAEYiIBhAOa63b9+AQAA","458":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","463":"b:XkAJABAh6kEAgNHUBfUO6ov6AQAA","480":"b:QABhQAAkAgEIoAAQAgEAABIAAAAA","487":"b:QABhQAAkAgEIoAAQAgEAABIAAAAA","494":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","501":"b:AgAAAIBmwQAAQAAArAYAAAAKAAAA","508":"b:QhBhQIB+wwEM4AMQrgcIABKOAAAA","516":"b:AgAAAIBmwQAAQAAArAYAAAAKAAAA","521":"b:UgFhB4Av7wEM4AcQpofIAZL+AQAA","526":"b:QgBhAIAuwwEM4AMQJgcIABKOAAAA","534":[79,21],"556":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","589":[97],"595":[97],"614":[41,42],"631":"b:XoUoAPMFuAEYiIBhAOa63b9+AQAA","637":"b:XoUoAPMFuAEYiIBhAOa63a9+AQAA","644":[58,59,81,41,42,66,53],"655":[69,70,108],"660":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","667":"b://V/9/d//30f/////+f/////AQAA","678":"b://V/9/d//30f/////+f/////AQAA","686":"b:7wAsh3cAHAAYCKRpAPCQ/y5zAAAA","690":"b:XsQrcHNVuwEYiLj1iea+3//+AQAA","698":"b:/8Vv9/dd/wl4iLz/if7/////AQAA","706":"b://V/9/d//30f/////+f/////AQAA","728":"b://V/9/d//30f/////+f/////AQAA","729":"b://V/9/d//30f/////+f/////AQAA","735":"b://V/9/d//30f/////+f/////AQAA","737":"b://V/9/d//30f/////+f/////AQAA","761":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","762":"b://V/9/d//33/////////////AQAA","763":[18,43,106,54,139,55],"777":[74,100,66],"820":"b:AABhAAA2AgEAgAAAAAEAAAAAAAAA","828":[16,79,21,22,41,42,45,104,49,56],"830":[16,79,21,22,41,42,45,104,49,56]},"packages/frontend/editor-ui/src/app/stores/ui.utils.ts":{"4":[70,107],"12":"b://V/9/d//33/////////////AQAA","17":"b://V/9/d//33/////////////AQAA","23":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/stores/versions.store.ts":{"32":"b://V/9/d//33/////////////AQAA","64":"b://V/9/c//n0eiv//pef/////AQAA","95":"b://V/9/d//30f/////+f/////AQAA","99":[12],"103":"b:/+V/9/c//n0eiv//pef/////AQAA","109":"b:/+V/9/d//30f/////+f/////AQAA","115":"b://V/9/d//30f/////+f/////AQAA","125":"b://V/9/d//30f/////+f/////AQAA","140":"b://V/9/d//30f/////+f/////AQAA","141":"b://V/9/d//30f/////+f/////AQAA","142":"b://V/9/d//30f/////+f/////AQAA","145":"b:/+V/9/d//30f/////+f/////AQAA","158":"b:/+V/9/c//n0eiv//pef/////AQAA","173":"b:/+V/9/d//30f/////+f/////AQAA","178":"b:/+V/9/d//30f/////+f/////AQAA","185":"b:/+V/9/d//30f/////+f/////AQAA","192":"b://V/9/d//30f/////+f/////AQAA","234":"b://V/9/d//30f/////+f/////AQAA","238":"b://V/9/d//30f/////+f/////AQAA","261":[12]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentActive.ts":{"14":"b://V/9/d//3//////////////AQAA","17":"b:/8Uuh3cN/AMYiKTpAPa7////AQAA","21":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA","30":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA","34":"b:54Qsh5UM/gMICKRrgNJT54dzAQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentChecksum.ts":{"12":"b://V/9/d//3//////////////AQAA","17":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA","22":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentConnections.ts":{"33":"b://V/9/d//3//////////////AQAA","44":"b:94Qsh5Uc/gNoCKRrgNrT54dzAQAA","49":"b:XkQrUFMEKgIYiLjUgeS63vuKAAAA","110":"b:EAAAAAAACAIAAADEAGAKAAACAAAA","140":[57,90,109,110,113,115,51,137],"182":[57,48],"191":"b:/8Vv9/c9/gt4yLz/gf7/////AQAA","193":"b:/8Qul3cc/gMYiKR/APb7///7AQAA","197":"b:/8Qv13cc/gNYiLz/geb7///7AQAA","204":"b:/8Qul3cc/gMYiKR/APb7///7AQAA","215":"b:94Qsh5Uc/gNoCKRrgNrT54dzAQAA","219":"b:XkQrUFMEKgIYiLjUgeS63vuKAAAA","223":"b:EAAAAAAACAIAAADEAGAKAAACAAAA","227":[57,90,109,110,113,115,51,137],"234":[57],"240":[57,48]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentDescription.ts":{"12":"b://V/9/d//3//////////////AQAA","17":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","25":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentExpression.ts":{"6":"b://V/9/d//3//////////////AQAA","11":"b:/8Qv93c8/gN4yLz/gf7////7AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentGraph.ts":{"15":"b://V/9/d//3//////////////AQAA","20":"b:38QrVGMMugJYiLj7geS7//9LAAAA","28":"b:z8QrVGMMugJYiLj7geS5//9LAAAA","36":"b:3sQrdHMcugNYiLj/gea9///rAQAA","40":[57,137],"47":[57,94,95,109],"73":[57],"77":[67,7,57,93],"81":"b:QkQCEEEEmAJIgKA6AGAgXT8CAAAA","85":"b:QkQCEEEEmAJIgKA6AGAgXT8CAAAA","93":"b:zsQrUEMEOgIYiLj7geS53v8JAAAA","108":"b:hwAIBGIAGAIIAAApACAQ3SwAAAAA","111":"b:hwAIBAIAGAIIAAApAAAQ3SwAAAAA","117":"b:hwAIBGIAGAIAAAAJACAQ3SwAAAAA","119":[57]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentHomeProject.ts":{"9":"b://V/9/d//3//////////////AQAA","14":"b:/8Vv9/cN/gt4iLz/gf7/////AQAA","22":"b:/8Vv9/cN/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentIsArchived.ts":{"12":"b://V/9/d//3//////////////AQAA","17":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","22":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentMeta.ts":{"13":"b://V/9/d//3//////////////AQAA","18":"b:54Qth9Uc/gNoiKR7gN7T55d7AQAA","26":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","30":"b:QAABAEAUCgMIgAAQgAQAABIIAQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentName.ts":{"16":"b://V/9/d//3//////////////AQAA","21":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","27":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodeGroups.ts":{"39":"b://V/9/d//3//////////////AQAA","46":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","48":"b:bkQrcHMEugIYiLj0gea+3/uqAAAA","58":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","59":[57,113],"66":[57,113],"82":[57,113],"91":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","95":[57,113],"109":[57,113],"110":[57],"128":[57,113],"132":[57,113],"138":[57,113],"144":[57],"149":[57,113],"154":[57,113],"160":[57],"169":[57],"176":[57,113],"180":[57,90,109,110,113,115,51,137],"185":"b:AAAAAABACQIAAAAECGAKAAACAAAA","188":[57,113],"197":"b:AAAABQAEQQJgAAQAABBAAIAAAAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodeMetadata.ts":{"20":"b://V/9/d//3//////////////AQAA","29":"b:94Qsh5UM/wNoSKRrgNrT54dzAQAA","34":"b:/8Qv93dc/wN4yLz/if7////7AQAA","42":"b:3sQrdHMcugNYiLj/gea9///rAQAA","52":[57,119],"65":"b:AAAAAABACQIAAAAECGAKAAACAAAA","75":[57,111,129],"89":"b:94Qsh5UM/wNoSKRrgNrT54dzAQAA","94":"b:XkQrcHNUqwMYiLjUiea83/uqAQAA","100":"b:94QshxUM/gNoSKRrANrT54dzAQAA","105":"b:AAAAAABACQIAAAAECGAKAAACAAAA","109":[57,111,129],"113":"b:3sQrdHMcugNYiLj/gea9///rAQAA","117":"b:XEQqQEMEEAIYiCiBAeC4XDoCAAAA","124":[57],"131":[57],"138":[57,119],"142":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA","146":"b:7wQoh1cIHAIYCKRpANCQ/y5zAAAA","150":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA","154":"b:zsQrVGMMugJYiLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodes.ts":{"75":"b://V/9/d//3//////////////AQAA","91":"b:XsQrUENUOwMYiLj7ieS6XX/6AQAA","115":"b:94Qsh5UM/gNoSKRrgNrT54dzAQAA","139":"b:94QshxUM/gNoSKRrANrT54dzAQAA","143":"b:XkQrcHNUqwMYiLjUiea83/uqAQAA","163":[57,46,99,48],"164":[57,46,99,48],"178":[57,90,109,110,113,115,51,137],"179":[57,90,109,110,113,115,51,137],"180":[57,90,109,110,113,115,51,137],"199":"b://V/9/d//3//////////////AQAA","223":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","238":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","252":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","266":"b:/8Qv93dc/wN4yLz/if7////7AQAA","269":"b:/8Qv93dc/wN4yLz/if7////7AQAA","272":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","276":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","279":"b:AAAAAABACQIgAAAECGAKAAACAAAA","282":"b:AAAAAABACQIgAAAECGAKAAACAAAA","289":"b://V/9/d//3//////////////AQAA","297":"b://V/9/d//3//////////////AQAA","298":"b:94QshxUM/gNoSKRrANrT54dzAQAA","299":"b:94QshxUM/gNoSKRrANrT54dzAQAA","305":"b:/8Qv9/dc/wN4yLz/if7////7AQAA","339":"b:/8Qv9/dc/wN4yLz/if7////7AQAA","365":[57],"367":"b:XkQrcHMUqgMYiLjUgea83/uqAQAA","369":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","370":"b:/8Qv93cc/gM4iLz/geb////7AQAA","376":"b:QkQjcGMEogIYiDjQgOa83/soAAAA","377":"b:QkQhcEMEAgIYiAjQgOS43vsIAAAA","384":"b:/8Qv93cM/gNYiLz/gfa////7AQAA","388":"b://V/9/d//3//////////////AQAA","392":"b:zsQrUGMEugIYiLj7geS4//8LAAAA","393":"b:zsQrUGMEugIYiLj7geS4//8LAAAA","396":"b:QAAAAAAAOAMAAAAAAKQIAAh4AAAA","404":"b:94Qsh5UM/gNoSKRrgNrT54dzAQAA","408":"b:XkQrcHNUqwMYiLjUiea83/uqAQAA","412":[57,46,99,48],"416":[57,90,109,110,113,115,51,137],"420":"b:TEQrQEMEEgIYiDiBgeS4XHsKAAAA","421":"b:TEQrQEMEEgIYiDiBgeS4XHsKAAAA","446":"b:AEQBAEEEAgIIiBgAgOQ4THoIAAAA","447":"b:AEQBAEEEAgIIiBgAgOQ4THoIAAAA","465":"b:EAAAAAAAIAIAAADgAGAKAAAAAAAA","466":"b:EAAAAAAAIAIAAADgAGAKAAAAAAAA","489":"b:EAAAAAAAIAIAAADgAGAKAAAAAAAA","490":"b:EAAAAAAAIAIAAADgAGAKAAAAAAAA","496":[57],"497":[57],"502":"b:UIAhAEBEGwMIgAAQiKQIABJ4AAAA","503":"b:UIAhAEBEGwMIgAAQiKQIABJ4AAAA","519":"b:/8Qv93cc/gNYiLz/gfb////7AQAA","520":"b:/8Qv93cc/gNYiLz/gfb////7AQAA","547":[57,48],"557":[57,119],"558":[57,119],"565":[57],"570":[57],"600":"b:QIAhAAAEAAIIwAAQAAAAABIAAAAA","607":"b:QIAhAAAEAAIIwAAQAAAAABIAAAAA","626":[6,67,57,79,92]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentNodesIssues.ts":{"23":"b://V/9/d//3//////////////AQAA","24":"b:/4Usl/cN/gMYiKR7gOb7/+//AQAA","25":"b:/4Qsl3cM/gMYiKR7AOb7/+/7AQAA","35":[57],"37":[57],"41":"b:8kQGEGEY2AMIgAAyAEQJXduIAQAA","42":"b:8kQGEGEY2AMIgAAyAEQJXduIAQAA","54":[4,57,8],"57":[57],"60":[4,57],"69":[4,57],"73":[4,57],"95":[57],"108":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","114":"b:/8Qv93dc/wN4yLz/if7////7AQAA","117":"b:/8Qv93dc/wN4yLz/if7////7AQAA","120":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","123":"b:AAAAAABACQIgAAAECGAKAAACAAAA","126":"b:AAAAAABACQIgAAAECGAKAAACAAAA","132":"b://V/9/d//3//////////////AQAA","140":"b:/8Qv9/dc/wN4yLz/if7////7AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentParentFolder.ts":{"9":"b://V/9/d//3//////////////AQAA","14":"b:/8Vv9/cN/gt4iLz/gf7/////AQAA","22":"b:/8Vv9/cN/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentPinData.ts":{"38":"b:AAAAAAAAAAIAAIAAAACo3A6AAAAA","43":"b:AAAAAAAAAAIAAIAAAACo3A6AAAAA","56":"b:54Qsh5UM/wNoCKRrgNrT54dzAQAA","57":"b:AAAAAAAAEAJAAIAAAAAB5QYCAQAA","58":"b:AAAAAAAAEAJAAIAAAAAB5QYCAQAA","68":"b:7sQrVGMMugNYiLj7geS5///LAAAA","72":"b:AAAAAAAAEAJAAIAAAACp/A6CAAAA","76":"b:AAAAAAAAAAIAAIAAAACo3A6AAAAA","79":"b:AAAAAAAAAAIAAIAAAACo3A6AAAAA","89":"b://V/9/d//3//////////////AQAA","94":"b:54Qsh5UM/wNoCKRrgNrT54dzAQAA","99":"b:AAAAAAAAAAIAAIAAAACo3A6AAAAA","107":[57,115,119],"116":[57,111,129],"122":[57],"123":[57],"129":[57],"140":"b:54Qsh5UM/wNoCKRrgNrT54dzAQAA","144":"b:AAAAAAAAAAIAAIAAAACo3A6AAAAA","148":[57,119],"152":[57,111,129],"156":"b:/8Uv93c9/gN4yLz/gf7/////AQAA","160":"b:3sQrVGMMugJYiLj7geS7//9LAAAA","179":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","185":"b:/8Qv93dc/wN4yLz/if7////7AQAA","188":"b:/8Qv93dc/wN4yLz/if7////7AQAA","191":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","194":"b:AAAAAABACQIgAAAECGAKAAACAAAA","197":"b:AAAAAABACQIgAAAECGAKAAACAAAA","203":"b://V/9/d//3//////////////AQAA","211":"b:/8Qv9/dc/wN4yLz/if7////7AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentPublicationStatus.ts":{"6":"b://V/9/d//3//////////////AQAA","10":"b:AAAABQAEQAJgAAQAABBAAIAAAAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentRenderData.ts":{"99":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","105":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","115":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","121":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","142":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","163":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","214":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","236":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","248":[57,87,95,114,120,136,143,144],"260":[57],"264":[57],"268":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","302":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","317":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","320":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","323":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","327":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","331":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","335":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","339":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","343":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","354":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","361":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","364":"b:QAAABQAETAIgAAQEAOTKAYByAQAA","367":"b:AAAAAAAACAIgAAAEAGAKAAACAAAA","380":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","390":"b:XsQrcHMc+gN4iLj/gfa+3//6AQAA","423":"b:QAAABQAETAIAAAQAAJTAAYBwAQAA","435":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","456":[57,95,114,136],"457":[57,87,95,114,120,136,143,144],"491":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","494":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","497":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","500":"b:/8Qv11cUPgN4iLz/gfz7///7AQAA","503":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","522":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","525":"b:7wAsh3cIHAIYCKRpAPCQ/y5zAAAA","528":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","531":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","534":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","537":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","540":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","543":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","546":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentScopes.ts":{"13":"b://V/9/d//3//////////////AQAA","18":"b:/8Vv9/cN/gt4iLz/gf7/////AQAA","23":"b:/8Vv9/cN/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentSettings.ts":{"19":"b://V/9/d//3//////////////AQAA","24":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","33":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","37":[57],"41":"b:/4Ush3cNvAMYiKRpAPa7////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentSharedWithProjects.ts":{"13":"b://V/9/d//3//////////////AQAA","18":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","29":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentTags.ts":{"15":"b:54Qsh5UM/gNoCKTrgdrT54/3AQAA","16":[57,96,135,138,143],"19":"b://V/9/d//3//////////////AQAA","24":"b:54Qsh5UM/gNoCKTrgdrT54/3AQAA","29":[57,138],"30":[57],"37":"b:54Qsh5UM/gNoCKRrgNrT54d3AQAA","41":"b:AAAAABAAAAIAAACAAQAAgIqAAAAA","46":[57,138]},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentTimestamps.ts":{"19":"b://V/9/d//3//////////////AQAA","26":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","31":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA","36":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","40":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentUsedCredentials.ts":{"13":"b://V/9/d//3//////////////AQAA","18":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","26":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","27":"b:QIAggAUECAMIAAAAAAAAAAAAAAAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentVersionData.ts":{"14":"b://V/9/d//3//////////////AQAA","20":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA","32":"b:/4Ush/cN/gN4iKRrgP77/69/AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentViewport.ts":{"13":"b://V/9/d//3//////////////AQAA","18":"b:QAAABQAF7gNgAAQAgJTAAYBwAQAA","26":"b:QAAABQAF7gNgAAQAgJTAAYBwAQAA"},"packages/frontend/editor-ui/src/app/stores/workflowDocument/useWorkflowDocumentWorkflowObject.ts":{"12":"b://V/9/d//3//////////////AQAA","26":"b:AAAABQAMTAJgAAQAAJjAAYBwAQAA","46":"b:/8Qv9/dc/wN4yLz/if7////7AQAA","50":"b:/8Qv19cc/wN4iLz/gf77///7AQAA","54":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","58":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","62":"b:HgAIABAAKAIAAICEAYAIwIqAAAAA","81":[4,57,111,129],"87":[4,57,111,129]},"packages/frontend/editor-ui/src/app/stores/workflowDocument.store.ts":{"115":"b://V/9/d//3//////////////AQAA","140":"b:AAAAAAAIDAIAAAAAAICAAQBwAAAA","149":"b:AAAAAAAIDAIAAAAAAICAAQBwAAAA","162":"b://V/9/d//3//////////////AQAA","176":"b://V/9/d//3//////////////AQAA","177":"b://V/9/d//3//////////////AQAA","186":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","200":"b:54Qsh5UM/gNoCKRrgNrT54dzAQAA","209":"b:AEQBAEEEAgIIiBgAgOQ4THoIAAAA","212":"b:/8Qv9/dc/wN4yLz/if7////7AQAA","223":[57],"224":"b:/8Qv19cc/wN4iLz/gf77///7AQAA","250":"b:XsQrcHNUuwMYiLj1iea+3/v6AQAA","251":"b:XkQrUFMEKgIYiLjUgeS63vuKAAAA","252":[57,113],"254":"b:/8Qv9/dc/wN4yLz/if7////7AQAA","260":[57,48],"267":"b:/4UshHcFvAMYiKRpAPa6/79/AQAA","268":"b:/4QshHcEvAMYiKRpAPa6/797AQAA","288":[57,113],"301":"b:AAAAAAAIDAIAAAAAAIjAAQBwAQAA","353":"b:AAAABQAEQAJgAAQAABBAAIAAAAAA","394":"b:/8Qv93c8/gN4yLz/gf7////7AQAA","409":"b:/wEsh3cAHAIYCKRpAOC4/y7zAAAA","489":"b:AAAABQAEQAIAQAQAAIDAAYBgAQAA","505":"b://V/9/d//3//////////////AQAA","507":"b://V/9/d//3//////////////AQAA","516":"b://V/9/d//3//////////////AQAA","537":"b://V/9/d//39+////////////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowExecutionState.store.ts":{"86":"b://V/9/d//3//////////////AQAA","102":"b://V/9/d//3//////////////AQAA","103":"b://V/9/d//3//////////////AQAA","163":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","176":"b:7wQsh3cIHAJ4CKRpAPiQ/y5zAQAA","200":"b:/8Vv9/d9/wt46Lz/if//////AQAA","227":"b://V/9/d//3//////////////AQAA","234":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","241":"b:/8Rv93d8/wN46Lz/if/7///7AQAA","251":"b:3sQrVGMEugIYiLj7geS5//8LAAAA","257":"b:/8Vv9/cd/gsYiLz/gfb/////AQAA","267":[57,125,127,130],"274":"b://V/9/d//3//////////////AQAA","281":[57],"295":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","307":"b:7wAsh3cIHAIYCKRpAPCQ/y5zAAAA","320":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","326":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","332":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","339":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","345":"b:7sQrVGMMugJYiLj7geS5//9LAAAA","354":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","384":"b:/8Qv93cc/gMYiLz/gf7////7AQAA","392":"b:/8Qv93cc/gMYiLz/gf7////7AQAA","402":"b:/8Qv93dc/wN4yLz/if7////7AQAA","405":"b:/8Qv93dc/wN4yLz/if7////7AQAA","408":"b:/8Qv93cc/gMYiLz/gf7////7AQAA","412":"b:/8Qv93cc/gMYiLz/gf7////7AQAA","415":"b:AAAABQBESQIgAAQECODKAYBiAQAA","418":"b:AAAAAABACQIAAAAECGAKAAACAAAA","425":"b://V/9/d//3//////////////AQAA","439":"b:/8Qv9/dc/wN4yLz/ifb////7AQAA","475":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","486":[57],"489":[57],"494":[57],"495":[57],"500":[57],"504":"b:7wQsh3cIHAJ4CKRpAPiQ/y5zAQAA","532":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","541":"b:/8Vv9vcd/gsYiLz/gfb/////AQAA","547":[57],"558":[57],"577":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","594":"b:/8Vv9vcd/gsYiLz/gfb/////AQAA","617":"b:QAAAAAAAGAIAAAAEAOQKAAB6AAAA","624":"b:4AQEAEEACAIIAAAgABAAAQgAAAAA","629":[57,119],"634":"b:/8Vv8Pcd/gsYiLj/gfb/////AQAA","647":"b:4YAEgIUM/gMAACArgMBD44dzAQAA","669":[57],"678":"b:/8Vv8Pcd/gsYiLj/gfb/////AQAA","687":[57],"691":[57],"696":[57,44,56,144],"701":[57,44,56,144],"705":[57],"707":[57],"713":[57],"715":[57],"716":[57],"725":[57],"730":[57],"735":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","748":[57,111,129],"761":[57],"767":[57],"773":[57],"786":[57,111,129],"811":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","845":[57,51],"969":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","992":"b://V/9/d//3//////////////AQAA","996":"b:/8Vv9/d9/wt46Lz/if//////AQAA"},"packages/frontend/editor-ui/src/app/stores/workflowSave.store.ts":{"15":"b://V/9/d//33/////////////AQAA","26":"b:XsQrcHMVugEYiLj1gea+3//+AQAA","30":"b:XoUoAHMFuAEYiIBhAOa63b9+AQAA","55":"b:XoQoAVEEmAAICIRhAMKyza16AAAA","63":[24,82]},"packages/frontend/editor-ui/src/app/stores/workflows.store.ts":{"43":"b://V/9/d//3//////////////AQAA","60":"b:/8Vv9/cd/gsYyLz/gfb/////AQAA","70":"b:/8Vv9/cd/gsYiLz/gfb/////AQAA","71":"b:/4Ush/cN/gMYiKRrgPb7/69/AQAA","80":"b://V/9/d//3+f/////+f/////AQAA","85":"b:zsQrUGMEugIYiLj7geS4//8LAAAA","89":"b:zsQrUGMEugIYiLj7geS4//8LAAAA","99":[57,44,56,144],"100":[57],"120":[57,143],"127":"b:/8Vv9/cd/gsYiLz/gfb/////AQAA","157":[57],"165":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","169":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","180":"b:54Qsh5UM/gMICKRrgNJT54dzAQAA","187":[57,54,55],"203":[57,54,55],"218":[57,106,54,139,55],"230":[57,54,55],"234":[57,39],"253":[57],"271":"b:AAAAAAAIDAIAAAAAAICAAQBwAAAA","285":"b:XoUoAPMNuAMYiIBhAOa63a9+AQAA","286":"b:XoQoAHMMuAMYiIBhAOa63a96AQAA","294":"b:XgUoAPMFqAMYiIBAAOa43bsuAQAA","328":"b:XoQoANEMmAIICIBhAMKyza16AAAA","371":[57,106,137,54,139,55],"385":[57],"393":[57,55],"420":[57],"472":"b:7wQshHcAHAIYCKRpAPCQ/y5zAQAA","491":[57],"499":"b:7wAsh3cAHAIYCKRpAPCQ/y5zAAAA","511":[57]},"packages/frontend/editor-ui/src/app/stores/workflowsList.store.ts":{"27":"b://V/9/d//33/////////////AQAA","39":[137],"40":[137],"44":"b:/8Vv93cd/gkYiLz/gfb/////AQAA","58":"b:/5Ush/cP/gF4iudrgPb7/69/AQAA","68":[54,55],"73":"b:/8Vv93cN/gl4iLz/gf7/////AQAA","98":[106,54,139,55],"111":[54,55],"125":"b:ALAAAIAH4gQGAkMAoAAAAIACAQAA","153":"b:ABAAAIAHoAAAAkMAAAAAAIACAQAA","154":"b:ABAAAIAHoAAAAkMAAAAAAIACAQAA","165":"b:ALAAAIAH4gQGAkMAoAAAAIACAQAA","186":[43,106,55],"213":[43,106,55],"234":"b:54QshxUP/gEICKRrgMZT54dzAQAA","240":[97],"244":"b://Vv9/cf/g0eiv//oeb/////AQAA","250":"b:XkVvcHMF6ggYiLjUgea83fusAAAA","256":[54,55],"262":[54,55],"283":[54,55]},"packages/frontend/editor-ui/src/app/utils/aiUtils.ts":{"57":[6,51],"82":[51],"87":[51],"236":[6,51],"248":[6,51],"263":[6,51],"264":[6,51],"274":[5,6,67,7,93,108,51,142],"286":[51],"300":"b:/8Qv93cc/gF4iLz/gfb////7AQAA"},"packages/frontend/editor-ui/src/app/utils/credentialOnlyNodes.ts":{"5":"b:/8Qv93d8/wN46Lz/if/////7AQAA","9":[57,33],"13":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","17":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","52":"b:/8Vv9/cd/gsYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/app/utils/expressions.ts":{"12":[57],"16":[57,123],"20":[57,45],"21":[57,45],"29":"b:QgAAEAAACAIIgIAwACAATDUAAAAA","33":"b:QgAAEAAAAAIIgAAwACAABDEAAAAA","37":"b:QgAAEAAAAAIIgAAwACAgHDEAAAAA","43":[1,57,132,133],"47":[1,57,132,133],"51":[1,57,132,133],"55":[1,57,132,133],"59":[1,57,132,133],"63":"b:QgAAEAAgCAIIgIAyACAgXT8AAAAA","78":"b:QgAAAAAAAAIAAIAAAAAADDUAAAAA","121":"b:QgAAEAAgCAIIgIAyACAAXT8AAAAA","145":"b:SERrQENkAwMY6CARCeG4XDoCAAAA","155":"b:SERjAENkAwMY6CARCeG4UDoAAAAA"},"packages/frontend/editor-ui/src/app/utils/formatters/dateFormatter.ts":{"4":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","15":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","27":[5,6,67,7,93,108,51],"29":[5,6,67,7,93,108,51]},"packages/frontend/editor-ui/src/app/utils/htmlUtils.ts":{"8":"b:7xB9gPcv/wMe6ON7Nve6/79/AAAA","10":"b:ABAAAIAHwAIAAAACAAAAQAACAAAA","31":"b:ABAQAIAH0AMAwAICMAAAUAgCAAAA","48":[57],"65":"b:AAAAAAABwQMCgAMABISAAZAAAAAA","72":[57],"76":"b://V/9/d//3//////////////AQAA","77":"b://V/9/d//3//////////////AQAA","78":"b://V/9/d//3//////////////AQAA","84":[57,109,53,56],"101":"b:/8Vv9/cd/gsYiLz/gfb/////AQAA","122":"b:RkAAEAAgCAIIiAAyAeA5XTcAAAAA"},"packages/frontend/editor-ui/src/app/utils/injectStrict.ts":{"4":"b://V/9/d//39+////////////AQAA"},"packages/frontend/editor-ui/src/app/utils/mappingUtils.ts":{"11":"b:5gQIBGMIGAJQAKDpAECx/25DAAAA","15":"b:5gQIBGMIGAJQAKDpAECx/25DAAAA","16":"b:5gQIBGMIGAJQAKDpAECx/25DAAAA","29":"b:4AQIBGMIGAJQAKApAECx/S5DAAAA","33":"b:4AQIBGMIGAJQACApAACw/S5DAAAA","53":"b:4AQIBGMIGAJQAKApAECx/25DAAAA","70":[57],"82":[57],"96":[57]},"packages/frontend/editor-ui/src/app/utils/nodeIcon.ts":{"81":"b:/8Qv93cs/gF4yLz/gf77///7AQAA","95":"b:/8Qv93c8/gF4yLz/gf77///7AQAA","105":"b:/8Qv93cs/gF4yLz/gf77///7AQAA","113":"b:UkABMCYUGgEYyLibgOQ439+JAQAA","118":"b:/8Qv93c8/gF4yLz/gf77///7AQAA","125":"b:UkABMCYUGgEYyLibgOQ439+JAQAA","131":"b:/8Qv93cs/gF4yLz/gf77///7AQAA","152":"b:/8Qv93c8/gF4yLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/app/utils/nodeTypes/nodeTypeTransforms.ts":{"8":"b://V/9/d//39+////////////AQAA","29":"b://V/9/d//39+////////////AQAA","32":"b://V/9/d//39+////////////AQAA"},"packages/frontend/editor-ui/src/app/utils/nodeTypesUtils.ts":{"43":"b:QABhUAAkAgMIoAAQAAEAABIAAAAA","46":"b:QABhUAAkAgMIoAAQAAEAABIAAAAA","54":"b:+MQv0EccmgMYwJy7gKSoQ1+JAQAA","58":[57,44,129,132,56],"61":[57,44,129,132,56],"65":[57,14,17,38,52,126,131,55,144],"77":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","111":[57,10,31,32,36,38,126,144],"122":[57,10,31,32,36,38,126,144],"134":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","135":"b:/8Qv93cc/gMYiLz/geb7///7AQAA","140":[57,56,144],"141":[57,56,144],"142":[57,56,144],"146":[57,56,144],"149":"b:AAAAAAAgAAIAAAAAAAAAHDoAAAAA","150":"b:AAAAAAAgAAIAAAAAAAAAHDoAAAAA","153":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","173":"b:/sQrVGMMugJYiLj7geS5//9LAAAA","174":"b:5gQIBGMIGAJQAKBpAECx/y5DAAAA","182":"b:QAABAAAECgIIgAgQgAQAQBMKAAAA","194":"b:UMAjUEMECgIIwJgSgIQgQF8IAAAA","214":"b:1kQDVGNMuwIYyLj7ieQ5//9LAAAA","221":"b:EEADAEEEAgIAgAgCgAAAQF4IAAAA","224":"b:EEADAEEEAgIAgAgCgAAAQF4IAAAA","241":"b:1kQCVGNMOQIIyLh7CeQ5//9LAAAA","246":"b:UEACUEMACAIIQJAQAIQgAAMAAAAA","250":[57,14,17,32,38],"255":[57,14,17,32,38],"265":[57,14,17,32,38],"282":"b:RgBhQAAkAgMIoAAQgAEAABIAAAAA","296":[57,16,79,42,103,49,129,132],"300":[57,16,79,42,103,49,129,132],"303":[57,16,79,42,103,49,129,132],"330":[57,16,79,42,103,49,129,132],"339":[4,57],"345":[4,57],"354":[57,16,79,42,103,49,129,132],"361":[57,16,79,42,103,49,129,132],"367":"b:QAABQAAEAgIIgAAQgAAAABIAAAAA","376":[57,16,79,42,103,49,129,132],"384":"b:EEABAAAEAgIAgAgCgAAAQF4IAAAA","389":"b:EEABAAAEAgIAgAgCgAAAQF4IAAAA","401":"b:1kQDVGNMOwIIyLh7ieQ5//9LAAAA","407":"b:UEADUEMECgIIwJgSgIQgQF8IAAAA","409":"b:EEADAEEEAgIAgAgCgAAAQF4IAAAA","410":"b:EEADAEEEAgIAgAgCgAAAQF4IAAAA","412":"b:EEADAEEEAgIAgAgCgAAAQF4IAAAA","428":"b:EEADAEEEAgIAgAgCgAAAQF4IAAAA","451":[57,16,79,42,103,49,129,132],"477":"b:EEABAAAEAgIAgAgCgAAAQF4IAAAA","486":[57],"487":[57],"499":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","506":[57,133],"519":[57,133],"528":[57,133],"562":[57],"563":[57],"566":[57,133],"578":"b:/8Rv93c+/gN4+Lz/gf/7///7AQAA"},"packages/frontend/editor-ui/src/app/utils/nodeViewUtils.ts":{"60":[57,69,70,44,108,56,144],"61":[57,69,70,44,108,56,144],"70":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","71":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","80":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","81":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","90":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","91":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","100":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","101":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","110":"b:DgAIABAAKAIAAICEAYAIwIqAAAAA","127":"b:QEQhUEMEIgIYiAjQgOS4XvsIAAAA","144":[57,94,95,109],"159":"b:/8Qv93cc/gN4yLz/gf7////7AQAA","178":"b:/8Qv93cc/gN4yLz/gf7////7AQAA","188":"b:XkQrcHMUqgMYiLjUgea83/uqAQAA","253":"b:78QINEEMeANYAKgrAeC/7y97AAAA","263":[57,114],"275":[57,114],"294":[57,114],"303":[57,69,70,44,108,56,144],"314":[57,69,70,44,108,56,144],"384":"b:7sQrVGMMugJYiLj7geS5//9LAAAA","526":[57,110],"552":"b:XkAJABAl7kMAgNHUBfXO64v6AQAA","569":"b:bkQrcHMEqgIYiLjUgea83/uoAAAA","581":[5,57,51],"590":[5,57,51],"596":[5,57,51],"632":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/app/utils/nodes/nodeTransforms.ts":{"28":"b:TkQrcHMUqgMYiLjUgea83/uqAQAA","37":"b:X8Qv93cc/gMYiLzegeb//f/7AQAA","62":"b:WMQv0EccmgMYgJyagKSoQV+IAQAA","72":[57,56,144],"86":"b:UEAD0EcUCgMIgJiagIQgQF+IAQAA","100":"b:X8Qv93cc/gMYiLzegeb//f/7AQAA","106":"b:UEAD0EcUCgMIgJiagIQgQF+IAQAA","117":"b:hwAIBGIAEAIAAAApACAQ3SwAAAAA","131":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","151":"b:zsQrVGNMuwJYiLj7ieS4//9LAAAA","170":"b:/4QshHcEvAMYiKRpAPa6/797AQAA","229":"b:QAAAgEUECAMIAAAAAAAAABAAAAAA","230":"b:QAAAgEUECAMIAAAAAAAAABAAAAAA"},"packages/frontend/editor-ui/src/app/utils/objectUtils.ts":{"3":"b:/8Vv93cd/gl4yLz/gfb/////AQAA","7":"b:/8Vv93dd/wl4yLz/ifb/////AQAA","11":"b:/8Vv93dd/wl4yLz/ifb/////AQAA","15":[113],"16":[113],"19":"b:/8Vv93cd/gkYiLz/geb/////AQAA","23":[125,127],"24":[125,127],"36":[1,2,3]},"packages/frontend/editor-ui/src/app/utils/pairedItemUtils.ts":{"19":"b:7wQsh3cIHAJYCKRpAOCw/y5zAAAA","23":[57,130],"48":[57,130],"58":[57,130],"61":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","89":"b:6QAIhxYIHAIACKRpAMCQ/y5zAAAA","95":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","124":"b:6QAIhxcIHAIQCKRpAMCQ/y5zAAAA","138":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","143":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","152":[57,34],"168":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","171":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","172":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","173":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","188":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","197":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","209":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAQAA","229":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","230":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/utils/parameterUtils.ts":{"13":"b:TERrQEMkEgEY6CARgeG4XDsCAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/hasScope.ts":{"4":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isAuthenticated.ts":{"5":"b://V/9/d//33/////////////AQAA","14":"b://V/9/d//31/////////////AQAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isValid.ts":{"3":"b://V/9/d//30e/v///+f/////AQAA"},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/authenticated.ts":{"6":"b://V/9/d//31/////////////AQAA"},"packages/frontend/editor-ui/src/app/utils/rbac/permissions.ts":{"28":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/app/utils/typeGuards.ts":{"31":[57],"35":[57,130],"39":[57,22,132,56],"43":"b:lgAIBAIIGAIQAKDJAECx/25DAAAA","46":[57],"49":"b:EEQBQEEECgIAwJgKgIQgzX4LAAAA","57":"b:QABhQAAkAgMIoAAQAAEAABIAAAAA","61":[57,133],"65":[57,45],"71":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","77":"b:/8Qv93ccvgN4iLz/gf7////7AQAA","81":"b:QEAAMAAAAAIIAAjAAGAAAiMAAAAA","90":"b:AEQCAEEAkAIAAAAAAAAAQQgAAAAA","96":[57,119,133],"102":[57],"109":"b:AAAAAAAoDAIAAAAAAICAAQBwAAAA","113":[57,79,41,98,49],"117":[57,79,41,98,49],"121":[57,98],"125":"b:AABhAAAmAgIAgAAABAEAAAAAAAAA","129":[57],"135":[57,79,41,98,49],"142":"b:ABBhAIAnogIAgkMABAEAAIAAAQAA","155":[57,12,20,81,86,42,45,49,53,55],"164":[57],"167":[57,55]},"packages/frontend/editor-ui/src/app/utils/typesUtils.ts":{"14":"b:5gQIBGMIGABQAKBpAEC5/y7DAQAA","23":"b:/vVvdHN//w1+6v//qf+9////AQAA","40":[56,144],"63":"b:ABBhAIAnogEAgkMAAAEAAIAAAQAA","67":"b:AAAAAAAAAAAAAIAAAACo3A6AAAAA","73":[131],"78":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","84":"b:5gQIBGMIGABQAKDpAECx/25DAAAA","132":[117,122,123,124,130,131],"137":[117,122,123,124,130,131],"179":[44,56,144],"183":"b:/sRrdPNvuwFY6Lj/ie+////7AAAA","187":"b:SARrAENkAwEYoCERCAGBXD4AAAAA","214":"b:SARrQENkAwEY4CgRCAGRXD4AAAAA"},"packages/frontend/editor-ui/src/app/utils/workflowUtils.ts":{"11":"b:54Qsh5UM/gNoCKRrgNJT54dzAQAA","15":[57],"26":[57,107],"36":[57,107],"49":"b:74QshxUM/gNoCKTvAdLb54/zAQAA","60":"b:74QshxUMPANoCKTvAdDb54/zAQAA","80":"b:74Qsh5UM/gNoCKTvgdLb54/zAQAA","100":"b:74QshxUMPANoCKTvAdDb54/zAQAA","103":"b:74QshxUMPANoCKTvAdDb54/zAQAA","138":[4,57],"145":[4,57],"146":[4,57],"158":[4,57],"167":[4,57]},"packages/frontend/editor-ui/src/app/views/NodeView.vue":{"156":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","163":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","167":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","168":"b:/8Vv8/cd/gkYiLz/geb/////AQAA","183":"b:XoQoAFEFqAEIiIBAAOa6zYd8AAAA","194":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","283":"b:/8Vv9/cd/glYiLz/gfb/////AQAA","294":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","298":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","300":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","301":"b:QkQjcGMEugAYiDjQgOa8X/t4AAAA","302":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","305":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","311":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","323":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","327":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","341":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","343":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","347":"b:4AAAEAAACAAIgAAwABAAAAEAAAAA","353":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","386":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","391":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","424":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","426":"b:/8Qv93cc/gF4iLz/gfb////7AQAA","432":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","434":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","435":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","439":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","440":"b:/8Qv93cc/gF4iLz/gfb7///7AQAA","442":"b:7wQshXcAHAAYCKRpAPCQ/y5zAQAA","449":[4],"460":[137],"464":[93,109,110,113,115,53],"472":[115],"476":[90,109,51],"485":[109,110,113,115],"489":[115,137],"505":[106,109,51],"513":[115],"517":[6,111,115,52,139,140,141,142],"525":"b:joQIBEEMeAFYAKArAeC77w97AAAA","530":"b:joQIBAEMGABYAKArAYCw7w9DAAAA","552":"b:78QrdHMM+gFYiLj/gea////7AAAA","557":[109,53,56],"563":[111,115,53,54],"611":[111,115,53],"624":[111,115,131],"648":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","652":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","671":[111],"693":[111],"712":[111],"739":[137],"755":[6],"759":[17,38,110],"763":"b:QEAAMAAAAAAIAAgAAGAAAiAAAAAA","803":[110,113,137],"807":[115,137],"811":"b:QEAAMAAAAAAIAAgAAGAAAiAAAAAA","839":[109,113,115],"843":[115,137],"851":"b:DgAIABAACAAAAICEAQAAwIqAAAAA","866":"b:DgAIABAACAAAAICEAQAAwIqAAAAA","882":[143],"892":[143],"895":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","901":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","912":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","916":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","948":[115,137],"952":[116,117,128,133],"960":[128],"973":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","986":[141],"999":"b:78QrdHMM+gFYiLj/gea////7AAAA","1005":[114],"1009":[94,95,109],"1074":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","1080":"b:XkVvcHMV6gkYiLjUgea83fusAQAA","1082":"b:EABFAAAFogAAgAAAgAAAAJAAAAAA","1093":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1094":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","1098":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","1110":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","1113":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","1116":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","1120":"b:gQAABAAAEAAAAAAoACAADQAAAAAA","1190":"b:gQAABAAAEAAAAAAoACAADQAAAAAA","1246":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1251":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","1256":[51],"1266":"b:SAQshFUAHAAQCKRAAMCA4w5zAAAA","1270":"b:CAQshFUAHAAQCKRAAMCA4w5zAAAA","1278":"b:/kVvcPMV+gkYiLj0gfa83fusAQAA","1279":"b:4AAAEAAAGAAIgACwALAMQAEAAAAA","1284":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","1287":"b:/8Qv93cc/gEYiLz/gfb////7AQAA","1295":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","1296":"b:/8Qv93cc/gEYiLz/gfb7///7AQAA","1299":"b:/kVvcPMV+gkYiLj0gfa83fusAQAA","1305":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1321":[6,108],"1329":[6],"1408":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1422":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","1460":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1464":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","1471":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1475":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","1483":"b:QkQjcGMEugAYiDjQgOa8X/t4AAAA","1526":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1544":[119],"1560":"b:TkQrcHMEqgAYiLjUgea83/uoAAAA","1564":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1570":"b:TkQrcHMEqgAYiLjUgea83/uoAAAA","1571":"b:TkQrcHMEqgAYiLjUgea83/uoAAAA","1578":"b:oUAAAEAACAAAAAAgAOAHwAACAAAA","1583":"b:oUAAAEAACAAAAAAgAOAHwAACAAAA","1591":[109],"1613":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1623":[129],"1653":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","1659":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1669":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1685":"b:zsQrUGMEugAYiLj7geS4//8LAAAA","1703":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1708":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1714":"b:XkVvcPMV6gkYiLjUgea83fusAQAA","1746":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1748":"b:zsQrUGMUugEYiLj7geS4//8rAQAA","1757":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1759":"b:zsQrVGMcugFYiLj7geS4//9LAQAA","1777":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1778":"b:XsQrcHMVugEYiLj1gea+3//+AQAA","1796":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1797":[4,8],"1809":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1821":"b:hwAIB2IAGAAAAAQJACAQ3SwAAAAA","1822":"b:hwAIB2IAGAAAAAQJACAQ3SwAAAAA","1827":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1836":"b:30Qtx3cMfgAQiKzNgOa6//57AAAA","1846":"b:30Qtx3cMfgAQiKzNgOa6//57AAAA","1847":"b:30Qtx3cMfgAQiKzNgOa6//57AAAA","1858":"b:QAAAAAAETAAAAAAAAITAAYBwAQAA","1907":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","1909":"b:RgQoABEISAAICIBAAMIQxQAAAAAA","1930":"b:/8Vv9/cd/glYiLz/gfb/////AQAA","1954":"b:QAAABQAF7gEAAAQAgITAAYBwAQAA","2025":[144],"2035":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","2055":"b:SAQshFUAHAAQCKRAAMCA4w5zAAAA","2070":"b:4AAAEAAACAAIgAAwABAAAAEAAAAA"},"packages/frontend/editor-ui/src/app/workers/isDataWorkerEnabled.ts":{"10":"b://V/9/d//3//////////////AQAA"},"packages/frontend/editor-ui/src/experiments/aiTemplatesStarterCollection/stores/aiTemplatesStarterCollection.store.ts":{"20":"b://Vv9/cf/g1+iv//of7/////AQAA","33":"b:ABAAAIAHogAAAkMAgAAAAIAAAQAA"},"packages/frontend/editor-ui/src/experiments/emptyStateBuilderPrompt/stores/emptyStateBuilderPrompt.store.ts":{"23":"b://Vv9/cf/g1+iv//ofb/////AQAA","58":[58,13,42,65,66,101,53],"86":"b:/8Vv93cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/experiments/evaluationsWizardSidepanel/useEvaluationsWizardSidepanelExperiment.ts":{"6":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","9":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/experiments/readyToRunWorkflows/stores/readyToRunWorkflows.store.ts":{"21":"b://Vv9/cf/g1+iv//of7/////AQAA","30":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","42":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA"},"packages/frontend/editor-ui/src/experiments/readyToRunWorkflowsV2/stores/readyToRunWorkflowsV2.store.ts":{"12":"b://V/9/c//n0eiv//pff/////AQAA"},"packages/frontend/editor-ui/src/experiments/resourceCenter/stores/resourceCenter.store.ts":{"19":"b://V/9/c//n0eiv//pef/////AQAA","32":"b://V/9/c//n0eiv//pef/////AQAA","114":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/experiments/sidebarExpanded/useSidebarExpandedExperiment.ts":{"6":"b://V/9/c//n0eiv//pef/////AQAA","10":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/experiments/utils.ts":{"32":"b:XkVvcPMV6gkYiLjUgea83fusAQAA","39":"b://V/9/d//33/////////////AQAA","47":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/assistant.store.ts":{"37":"b://V/9/d//33/////////////AQAA","45":"b:/8Vv8Hcd/gkYiLj/geb/////AQAA","58":[2],"59":[2],"79":[1,2,3,4,8],"80":[1,2,3],"82":[1,2,3],"84":[1,2,3,4,8],"94":"b://V/9/d//33/////////////AQAA","96":"b://V/9/d//33/////////////AQAA","100":[1,2],"102":[1],"107":"b://V/9/d//33/////////////AQAA","115":"b://V/9/d//31+////////////AQAA","119":[1,2,3],"123":[1,2,3],"136":[1,2,3],"138":[1,2,3],"142":[1,2,3],"199":[1,2],"216":[1,2,3],"220":[1,2,3],"247":[1,2,3],"251":[1,3],"277":[1,2,3],"297":[1,2,3],"301":[1,2,3],"305":[1,2,3],"336":[1,3],"420":[1,3],"480":[1,3],"481":[1,3],"493":[1,2],"554":[1,2],"555":[1,2],"562":[2],"590":[2],"591":[2],"598":"b:7wQsh3cAHAAYCKRpAPCQ/y5zAAAA","629":[1,3],"679":[1,3],"680":[1,3],"692":[1,3],"706":[1,2,3,4,8],"746":"b://V/9/d//33/////////////AQAA","747":"b:XsQrcHNVuwEYiLj1iea+3//+AQAA","753":"b://V/9/d//33/////////////AQAA","756":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/builder.store.ts":{"166":"b://V/9/d//33/////////////AQAA","188":"b://V/9/d//31+////////////AQAA","230":"b:/9V/9/cf/ml8+v//gf//////AQAA","259":"b://V/9/d//33/////////////AQAA","262":[4,8],"265":[4,8],"304":[4,8],"307":"b://V/9/d//31+////////////AQAA","323":"b://V/9/d//31+////////////AQAA","327":[4,8],"329":"b://V/9/d//31+////////////AQAA","335":"b://V/9/d//31+////////////AQAA","355":"b://V/9/d//31+////////////AQAA","367":"b://V/9/d//31+////////////AQAA","371":"b://V/9/d//31+////////////AQAA","374":"b://V/9/d//31+////////////AQAA","376":"b://V/9/d//31+////////////AQAA","388":"b://V/9/d//31+////////////AQAA","410":[4,8],"420":"b://V/9/d//31+////////////AQAA","432":"b:/9V/9/cf/ml8+v//gf//////AQAA","462":"b:7wAsh3cAHAAYCKRpAPCQ/y5zAAAA","469":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","477":[4,8],"481":[4,8],"503":[4,8],"530":[4,8],"531":[4,8],"580":[4,8],"644":[8],"655":[8],"664":[8],"695":[4,8],"726":[4,8],"739":[4,8],"816":[4,8],"832":[4,8],"864":[4],"889":[4,8],"1025":[4],"1028":[4],"1050":[4],"1057":[8],"1128":[4,8],"1397":[4],"1402":[4],"1429":[4,8],"1440":"b:XoQoAFEEmAAICIBhAMKyza16AAAA","1448":"b:XoQoAFEEmAAICIBhAMKyza16AAAA","1456":[4],"1460":[4,8],"1465":[4,8],"1479":"b://V/9/d//33/////////////AQAA","1480":"b:/8Vv8Pcd/gl4iLj/gf7/////AQAA","1513":"b://V/9/d//33/////////////AQAA","1525":[4],"1546":[4],"1677":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/chatPanel.store.ts":{"32":[1,2,3,4,8],"39":"b://V/9/d//33/////////////AQAA","50":[1,2,3],"58":[1,2,3,4,8],"64":"b://V/9/d//31+////////////AQAA","66":"b:/8Vv93cd/gkYiLz/geb/////AQAA","69":[1,2,3,4,8],"103":[1],"110":[1,2,3,4,8],"119":[1],"127":[1],"142":[1,3,4,8],"150":[1,2,3,4,8],"200":[1,2],"216":"b://V/9/d//33/////////////AQAA","217":"b://V/9/d//31+////////////AQAA","254":"b://V/9/d//33/////////////AQAA","255":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/chatPanelState.store.ts":{"14":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/AskAssistantBuild.vue":{"75":"b://V/9/d//31+////////////AQAA","88":"b://V/9/d//31+////////////AQAA","118":[4],"125":"b://V/9/d//31+////////////AQAA","132":"b://V/9/d//31+////////////AQAA","136":"b://V/9/d//31+////////////AQAA","141":"b://V/9/d//31+////////////AQAA","151":"b://V/9/d//31+////////////AQAA","156":"b://V/9/d//31+////////////AQAA","167":"b://V/9/d//31+////////////AQAA","168":[4,8],"170":[4,8],"178":[4,8],"179":[4,8],"182":[4,8],"198":"b://V/9/d//31+////////////AQAA","199":"b://V/9/d//31+////////////AQAA","200":"b://V/9/d//31+////////////AQAA","203":"b://V/9/d//31+////////////AQAA","209":"b://V/9/d//31+////////////AQAA","216":"b://V/9/d//31+////////////AQAA","223":"b://V/9/d//31+////////////AQAA","227":"b://V/9/d//31+////////////AQAA","245":[4],"250":[4],"258":[4],"267":[4],"279":"b://V/9/d//31+////////////AQAA","311":"b://V/9/d//31+////////////AQAA","343":"b:8cUv8Hdc/wF4iLj/ieb////7AQAA","345":[4,8],"392":[4,8],"408":[4],"417":"b:QBAxB4AX7mEEckcAgIXAAYBwAQAA","543":[4],"557":"b://V/9/d//31+////////////AQAA","559":"b:UBExB4AX7mEEckcAgIXAAYBwAQAA","594":"b://V/9/d//31+////////////AQAA","595":[4,8],"607":"b://V/9/d//31+////////////AQAA","609":[4,8],"684":"b:QBAxB4AX7mEEckcAgIXAAYBwAQAA","691":"b://V/9/d//31+////////////AQAA","703":[4,8],"709":"b://V/9/d//31+////////////AQAA","712":[4,8],"743":[4,8],"749":[4],"756":"b://V/9/d//31+////////////AQAA","773":"b://V/9/d//31+////////////AQAA","778":[4,8],"785":"b:4cQv8Hdc/wF4iLj/ieb////7AQAA","788":[4],"840":"b://V/9/d//31+////////////AQAA","870":"b://V/9/d//31+////////////AQAA","872":"b://V/9/d//31+////////////AQAA","880":"b:8cUv8Hdc/wF4iLj/ieb////7AQAA","910":"b:8cUv8Hdc/wF4iLj/ieb////7AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/BuildModeEmptyState.vue":{"5":"b:4cQv8Hdc/wF4iLj/ieb////7AQAA","6":"b:4cQv8Hdc/wF4iLj/ieb////7AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/PlanModeSelector.vue":{"17":"b://V/9/d//31+////////////AQAA","27":"b://V/9/d//31+////////////AQAA","46":"b://V/9/d//31+////////////AQAA","47":"b://V/9/d//31+////////////AQAA","53":"b://V/9/d//31+////////////AQAA","71":"b://V/9/d//31+////////////AQAA","74":"b:8/V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/components/AssistantsHub.vue":{"19":"b://V/9/d//31+////////////AQAA","39":"b://V/9/d//31+////////////AQAA","40":[1,2,3,4,8],"51":"b://V/9/d//31+////////////AQAA","85":[1],"89":[1,2,3,4,8],"98":"b:/wUsh3cAHAAYCKRpAPCQ/y5zAAAA","106":"b://V/9/d//31+////////////AQAA","112":"b:3tV7V/M3/mEc+v/7hef4//9/AQAA","124":"b://V/9/d//31+////////////AQAA","141":"b://V/9/d//31+////////////AQAA","150":"b://Vv8/d//31+////////////AQAA","164":"b://V/9/d//31+////////////AQAA","169":[4,8]},"packages/frontend/editor-ui/src/features/ai/assistant/components/FocusedNodes/ChatInputWithMention.vue":{"24":"b://V/9/d//31+////////////AQAA","45":"b://V/9/d//31+////////////AQAA","66":"b://V/9/d//31+////////////AQAA","67":[4,8],"73":[4,8],"103":[4],"114":[4,8],"121":[4,8],"127":[8],"159":[4,8],"174":"b://V/9/d//31+////////////AQAA","283":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useAIAssistantHelpers.ts":{"45":"b://V/9/d//3//////////////AQAA","47":[1,2,57],"62":[1,2,57],"74":[57],"81":[1,2,57],"100":[57],"101":[57],"113":[57],"122":[57],"131":[57],"137":[57],"163":[57],"180":[57],"207":[1,2,57],"214":[1,2,57],"227":[1,2,3,57],"251":[57],"276":[1,2,57],"298":[1,2,57],"301":[1,2,57],"309":[1,2,4,57],"335":[1,3,57],"357":[3,57],"379":[3,57],"420":[1,3,4,57,8],"428":[57],"447":[57],"465":[57],"509":[57],"582":[57],"596":[57],"632":[57]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useAskModeCoachmark.ts":{"14":[4,8],"17":"b://V/9/d//31+////////////AQAA","25":"b://V/9/d//31+////////////AQAA","27":"b://V/9/d//31+////////////AQAA","35":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderMessages.ts":{"82":"b://V/9/d//33/////////////AQAA","88":[4,8],"89":[4,8],"208":[4],"326":"b://V/9/d//31+////////////AQAA","327":[4,8],"330":"b://V/9/d//31+////////////AQAA","342":[4],"395":[4],"419":[4],"436":[4],"460":[4],"462":[4],"471":[4,8],"517":[8],"556":"b:/9V/9/cf/ml8+v//gf//////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderTodos.ts":{"37":"b://V/9/d//33/////////////AQAA","47":[4],"89":[4],"129":[4,8],"138":[4],"151":[4,8],"206":[4,8],"212":[4],"246":[4,8],"247":[4],"254":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useFocusedNodesChipUI.ts":{"14":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useNodeMention.ts":{"32":"b://V/9/d//31+////////////AQAA","61":"b://V/9/d//31+////////////AQAA","62":"b:UEQhV0MEagAYiAzUgPT+XvsKAAAA","155":[4,8]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useReviewChanges.ts":{"34":"b://V/9/d//31+////////////AQAA","71":"b://V/9/d//31+////////////AQAA","100":[4],"107":[4],"116":[4],"128":[4],"139":[4],"145":[4],"252":[1,2,3],"278":[4,8],"288":[4],"299":[4,8],"309":[1,2,3],"311":"b://V/9/d//31+////////////AQAA"},"packages/frontend/editor-ui/src/features/ai/assistant/focusedNodes.store.ts":{"25":"b://V/9/d//33/////////////AQAA","27":"b://V/9/d//33/////////////AQAA","33":"b://V/9/d//33/////////////AQAA","35":"b://V/9/d//31+////////////AQAA","45":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","240":[4,8],"266":"b://V/9/d//33/////////////AQAA","267":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","282":"b://V/9/d//33/////////////AQAA","283":"b:/8Vv9/dd/wl4iLz/if7/////AQAA","285":"b:/8Qv93dc/wF4iLz/ifb////7AQAA","311":"b://V/9/d//33/////////////AQAA","312":"b:/8Vv9/dd/wl4iLz/if7/////AQAA","324":"b://V/9/d//33/////////////AQAA","325":"b:zsQrVGNEuwBYiLj7ieS4//8LAAAA","334":[4,8]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.store.ts":{"108":"b://V/9/d//33/////////////AQAA","137":[76,77,78,20],"140":[76,77,78,20],"147":[76,77,78,20],"163":[76,77,78,20],"173":[76,77,78,20],"177":[76,77,78,20],"214":[76,77,78,20],"237":[77],"279":[76,77,78,20],"305":[76,77],"315":[76,77,78,20],"334":[76,77,78,20],"341":[78],"368":[76,77,78,20],"371":[76,77,78,20],"377":[76,77,78,20],"382":[76,77,78,20],"411":[76,77,78,20],"441":[76,77],"447":[76,77],"458":[76,77,78,20],"467":[76,77,78,20],"484":[78,20],"595":[76,77,78,20],"610":[76],"657":[78],"694":[77],"797":[77],"949":[77],"1091":[76,77,78,20],"1095":[76,77,78,20],"1150":[76,77,78,20],"1196":[76,77],"1214":[76,77,78,20],"1230":[78,20],"1252":[76,77,78,20],"1294":[76,77,78,20],"1335":[76,77,78,20],"1362":[76,77,78,20],"1392":[76],"1413":[77],"1531":[76,77,78,20],"1532":[76,77,78,20],"1557":[76,77,78,20],"1558":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/chatHubPanel.store.ts":{"19":"b://V/9/d//31+////////////AQAA","29":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","66":"b://V/9/d//31+////////////AQAA","67":"b:QBAxB4AX7mEEckcAgIXAAYBwAQAA"},"packages/frontend/editor-ui/src/features/ai/chatHub/module.descriptor.ts":{"18":[76,77,78,20],"19":[20],"46":[78],"203":"b://V/9/d//30e/v///+f/////AQAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/components/EvaluationsCanvasInfoCard/EvaluationsCanvasInfoCard.vue":{"25":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","74":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","85":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","99":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","103":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","134":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","159":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","182":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/composables/useAiRootNodes.ts":{"15":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/composables/useEvaluationsLicense.ts":{"9":[39],"10":[39],"12":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/evaluation.store.ts":{"11":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","26":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","28":[57],"30":[57],"31":[57],"45":[57],"52":[57],"65":[57],"69":[57],"81":[57],"87":[57],"99":[57],"108":[57],"127":[57],"138":[57],"147":[57],"160":[57],"175":[57],"176":[57],"182":[57],"187":[57],"198":[57],"199":[57]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/wizardSidepanel.store.ts":{"28":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","31":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/features/ai/instanceAi/composables/useInstanceAiHandoffCapability.ts":{"33":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","47":[39],"66":[39],"78":[39],"120":[39],"137":[39],"153":[39]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.store.ts":{"20":"b://V/9/d//33/////////////AQAA","43":[24,61,25,62,26,82],"48":[24,60,61,25,62,26,82],"57":[60,61,62],"61":[62],"75":[24,60,61,25,62,26,82],"86":[24,60,61,25,62,26,82],"98":[24,60,61,25,62,26,82],"106":[24,60,61,25,62,26,82],"109":[24,25,26,82],"132":[24,60,61,25,62,26,82],"144":[24,60,61,25,62,26,82],"152":[24,60,61,25,62,26,82],"153":[24,60,61,25,62,26,82],"154":[24,60,61,25,62,26,82],"169":[24,61,25,62,26,82],"175":[62],"191":[62],"204":[62],"210":[62],"211":[62],"281":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAiSettings.store.ts":{"43":"b://V/9/d//33/////////////AQAA","104":[24,60,61,25,62,26,82],"108":[24,60,61,25,62,26,82],"111":[24,60,61,25,62,26,82],"114":[24,60,61,25,62,26,82],"123":[24,60,61,25,62,26,82],"160":[24,60,61,25,62,26,82],"164":[24,60,61,25,62,26,82],"269":[24,60,61,25,62,26,82],"369":[24,60,61,25,62,26,82],"395":[61,25,62,82],"411":[24,60,61,25,62,26,82],"521":[24,60,61,25,62,26,82],"524":[24,25,26,82],"542":[24,60,61,25,62,26,82],"543":[61,25,62,82],"606":[24,60,61,25,62,26,82],"610":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/mcpAccess/module.descriptor.ts":{"41":"b://V/9/d//30e/v///+f/////AQAA"},"packages/frontend/editor-ui/src/features/collaboration/collaboration/collaboration.store.ts":{"32":"b://V/9/d//33/////////////AQAA","70":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","78":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","79":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","82":"b://V/9/d//31+////////////AQAA","86":"b://V/9/d//31+////////////AQAA","90":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","108":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","113":"b:AIAABQAM4AAAAAQAAMBCAoACAAAA","117":"b:AIAABQAMwAAAAAQAAMBCAoACAAAA","122":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","129":"b:/4Ush3cN/gEYiKRrgOb7/69/AQAA","134":"b:XIAABUEE+gEAgARhAMT6Cq96AAAA","153":"b:XIAAAEEE+gEAgABhAMS6Cq96AAAA","161":"b:XIAABUEE+gEAgARhAMT6Cq96AAAA","195":"b:AIAAAAAMoAAAAAAAAMACAoACAAAA","204":"b:XIAAAEEE+gEAgABhAMS6Cq96AAAA","208":"b:XsUrcHMV+gEYiLj1gea+3//+AQAA","247":[42,135,54],"266":"b:wQAABsAEDAAAAAAAAICAoABiAAAA","281":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","288":"b:/4Ush3cN/gEYiKRrgOb7/69/AQAA","293":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","297":"b:XoQoBXNF+QEYiIRhCOb63a9+AQAA","318":"b:XoQoAFEM2AAICIBhAMayza16AAAA","345":"b://V/9/d//33/////////////AQAA","346":"b:XsQrcHNVuwEYiLj1iea+3//+AQAA","355":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","367":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","389":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","445":[24,26,82,42,118,135,54]},"packages/frontend/editor-ui/src/features/collaboration/collaboration/components/CollaborationPane.vue":{"11":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","15":"b:AIAAAIANoAAAAAAAAMACAoACAAAA","24":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","26":[39,53],"27":[39,53],"29":[39,53],"35":[39,53],"37":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","41":[24,26,82,39,42,118,135,54],"44":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectCardBadge.vue":{"23":"b://V/9/d//33/////////////AQAA","37":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","46":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","50":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","73":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","77":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","89":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","105":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","148":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","175":"b:ABBhAAAnogAAgkMAAAEAAIAAAQAA","178":"b:ABAAAAAHoAAAAkMAAAAAAIAAAQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectNavigation.vue":{"22":"b://V/9/c//n0eiv//pef/////AQAA","46":"b://V/9/c//n0eiv//pef/////AQAA","48":"b://V/9/c//n0eiv//pef/////AQAA","53":"b://V/9/c//n0eiv//pef/////AQAA","58":"b://V/9/c//n0eiv//pef/////AQAA","59":"b://V/9/c//n0eiv//pef/////AQAA","62":"b://V/9/c//n0eiv//pef/////AQAA","74":"b://V/9/c//n0eiv//pef/////AQAA","83":"b://V/9/c//n0eiv//pef/////AQAA","92":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA","104":"b://V/9/c//n0eiv//pef/////AQAA","116":"b://V/9/c//n0eiv//pef/////AQAA","118":[24,60,61,25,62,26,82],"126":[20],"140":"b://V/9/c//n0eiv//pef/////AQAA","145":"b:AAAAAAAF4gEEAAAAgABAAIAAAQAA","148":"b://V/9/c//n0eiv//pef/////AQAA","246":[81,41,42,53],"263":"b:EBBVAJAvogAAiPNKhAWb+LREAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/composables/useFavoriteNavItems.ts":{"22":"b://V/9/c//n0eiv//pef/////AQAA","128":"b://V/9/c//n0eiv//pef/////AQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/composables/useProjectPages.ts":{"7":"b://V/9/c//n0eiv//pff/////AQAA","11":"b:ABBxAIAnogAAgEIAgAEAAAAAAAAA","14":"b:ALBxAIAn4gQGgkMApAEAAIAAAQAA","17":"b:ALBxAIAn4gQGgkMApAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.api.ts":{"7":[57,12,20,81,86,42,45,49,53,55],"11":[57,41,42,55],"27":[57,21,101,103,104,49,105,55],"45":"b://V/9/d//38f/////+f/////AQAA","49":"b://V/9/d//38f/////+f/////AQAA","53":"b:EBB1AIAn4gIAgEMAgAEAAJAAAAAA","57":[57,12,81,86,42,49,53,55],"64":[57,12,81,86,42,49,53,55],"72":[57],"85":"b://V/9/d//38f/////+f/////AQAA","89":[57,20,86],"97":[57,20],"106":[57]},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.routes.ts":{"10":"b:ALAEAIAH4gQHA0MAoAAAAIAAAQAA","11":[16,79,21,22,41,42,45,104,49],"12":[16,79,21,22,41,42,45,104,49],"13":[12,20,81,86,42,45,49,53,55],"16":[98],"18":"b:ALBlAIAn4gQHg0MApAEAAIAAAQAA","22":"b:ABBhAIAn4gAAgAMAgAEAAAAAAAAA","33":"b:ALAEAIAH4gQHA0MAoAAAAIAAAQAA","44":[16,79,21,22,41,42,45,104,49],"64":[39,40],"74":[98],"134":"b://V/9/d//33/////////////AQAA","146":[12,20,81,86,42,45,49,53,55],"147":[12,20,81,86,42,45,49,53,55],"169":"b:ALAlAAAmogQHA0MAJAEAAIAAAQAA","184":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.store.ts":{"32":"b://V/9/d//3//////////////AQAA","51":"b://V/9/d//3+f/////+f/////AQAA","54":"b://V/9/d//3+f/////+f/////AQAA","58":"b://V/9/d//3//////////////AQAA","64":[57,55],"65":[57],"66":[57],"68":[57,21,45,104,49],"69":"b://V/9/d//38f/////+f/////AQAA","70":"b://V/9/c//n8eiv//pef/////AQAA","71":"b://V/9/d//38f/////+f/////AQAA","72":[57],"75":"b://V/9/d//38f/////+f/////AQAA","81":"b://V/9/d//3//////////////AQAA","84":"b://V/9/d//3+f/////+f/////AQAA","89":"b://V/9/c//n8eiv//pef/////AQAA","90":"b://V/9/d//3//////////////AQAA","95":"b:ELB1BwAmonYG80cAJAEAAJAAAQAA","99":[57,12,20,81,86,42,45,49,53,55],"103":"b://V/9/d//38f/////+f/////AQAA","107":"b://V/9/d//38f/////+f/////AQAA","111":[57],"119":[57,41,42,55],"129":[57,21,101,103,104,49,105,55],"139":"b:EBB1AIAn4gIAgEMAgAEAAJAAAAAA","142":"b:ABBxAIAn4gIAgEMAgAEAAAAAAAAA","146":[4,57,16,18,79,22,42,132,135,55],"153":"b://V/9/d//39/////////////AQAA","159":[57,12,81,86,42,49,53,55],"166":[57,12,81,86,42,49,53,55],"174":[57,12,81,86,42,49,53,55],"192":[57,20,86],"200":[57,20],"209":[57],"214":[57],"217":[57],"220":"b://V/9/d//38f/////+f/////AQAA","224":"b:4YAEh4UM/gMAACQrgMBD44dzAQAA","232":[57,49],"264":[57,41,42],"287":[57],"301":[57,12,20,81,86,42,45,49,53,55],"312":"b://V/9/d//3//////////////AQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/projects.utils.ts":{"16":[57,21,101,103,104,49,105,55],"18":[57,21,101,103,104,49,105,55],"31":"b:ABBhAIAnogIAgkMABAEAAIAAAQAA","33":[57,41,42,55],"42":[57],"50":"b:QABhQAAvogMIoEIQoAcAABIAAAAA","64":[57,41,42],"69":"b://V/9/d//3//////////////AQAA"},"packages/frontend/editor-ui/src/features/core/dataTable/components/NodeStorageLimitCallout.vue":{"9":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","13":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","28":"b:zsQrVGMMugBYiLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/features/core/dataTable/dataTable.api.ts":{"13":"b:ALAAAAAGoAYGAkMAIAAAAIAAAQAA","40":[57,80,81],"61":[57,81],"77":[57,80],"93":[57,80],"109":[57,80],"122":[57,80],"139":[57],"156":[57,80,81],"176":[57,80],"193":[57,80],"214":[57,80],"220":[57,80],"238":"b://V/9/d//38f/////+f/////AQAA","246":[57],"269":[57],"283":[57]},"packages/frontend/editor-ui/src/features/core/dataTable/dataTable.store.ts":{"37":"b://V/9/d//33/////////////AQAA","50":[80,81],"56":"b://V/9/d//30f/////+f/////AQAA","64":[80,81],"72":"b://V/9/d//32f/////+f/////AQAA","76":"b:ALAAAAAGoAQGAkMAIAAAAIAAAQAA","101":[80,81],"176":[81],"179":[81],"185":[80],"197":[80],"199":[80],"207":[80],"215":[80],"236":[80,81],"237":[80,81],"244":[80],"256":[80],"264":[80],"278":[80],"279":[80],"313":[80,81],"331":[80],"341":[80],"356":[80],"360":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/core/folders/components/FolderBreadcrumbs.vue":{"59":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","65":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","67":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","76":[40],"88":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","92":[40],"96":[80,39,40,41,42,53,55],"107":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","111":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","147":[40],"162":[40],"174":[40],"178":[39],"185":[39,40],"196":[40],"208":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","209":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","212":"b:/8Vv9/cf/gkYiL3/geb/////AQAA","219":"b:AAAABQAHYAAAAAUAAABAAIAAAAAA","242":[39,40],"249":[39,40],"275":[80,39,40,41,42,53,55],"305":[40]},"packages/frontend/editor-ui/src/features/core/folders/components/ProjectBreadcrumb.vue":{"30":"b:/8Vv9/cf/gkYiL//geb/////AQAA","52":"b:/8Vv9/cf/gkYiL//geb/////AQAA","63":"b:/8Vv9/cf/gkYiL//geb/////AQAA","75":[39,40],"79":[39],"91":[39,40],"100":"b:/8Vv9/cf/gkYiL//geb/////AQAA"},"packages/frontend/editor-ui/src/features/core/folders/composables/useParentFolder.ts":{"5":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","11":"b:XkVvcPMF6gh4iLjUgf683fusAAAA"},"packages/frontend/editor-ui/src/features/core/folders/folders.constants.ts":{"16":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/core/folders/folders.store.ts":{"23":"b://V/9/d//33/////////////AQAA","40":"b:ADAAAIAHogQGAkMAoAAAAIAAAQAA","41":[39,40],"52":[40],"56":[40],"64":[39,40],"75":[39,40],"81":[39,40],"99":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","134":[41,42],"219":[39],"262":[40],"273":[40],"342":[40]},"packages/frontend/editor-ui/src/features/credentials/components/NodeCredentials.vue":{"109":[6,67,16,79,30,42,92,129,132],"136":[6,67,16,79,30,42,92,129,132],"138":"b:UMAjQEMECgAIwJgSgIQgQF8IAAAA","153":"b:WMQrUEMEmgAYwJiSgKSgQV8IAAAA","155":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","168":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","172":"b:QEADUEMECgAIwJgSgIQgQF8IAAAA","183":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","187":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","195":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","262":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","263":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","290":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","311":"b:UEAjUEIECgAIwJgSgIQgQF8IAAAA","331":"b:UAAhAEAECgAIwAAQgAAAABIAAAAA","347":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","359":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","360":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","367":[6,67,16,79,30,42,92,129,132],"451":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","456":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","463":[15],"467":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","475":[79],"494":[6,67,16,79,30,42,92,129,132],"529":[132],"539":"b:UIAhAEAECgAIwAAQgAAAABIAAAAA","617":[16,79,42,103,49,129,132],"652":"b:UIAhEEEECgAIwAAQgAAAABIAAAAA","656":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","702":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","715":[79],"733":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","752":[6,67,15,78,21],"756":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","760":[6,67],"761":[6,67],"766":[28],"771":"b:UMADUAIEAAAAwJgSAIQgQF8IAAAA","772":"b:UMADUAIEAAAAwJgSAIQgQF8IAAAA","778":"b:UEADUAIEAAAAwJgSAIQgQF8IAAAA","782":"b:UMAjQEMECgAIwJgSgIQgQF8IAAAA","786":[28],"832":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","834":[4],"923":[6,16,79,30,42,92,129,132],"924":"b:UEADQAIEAAAAwJgSAIQgQF8IAAAA","955":[15,78,21],"962":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","967":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","988":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","989":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","995":[6,67],"1020":[15],"1039":[79]},"packages/frontend/editor-ui/src/features/credentials/composables/useCredentialOAuth.ts":{"42":"b:UMBjUAIkAgEI4JgSAIUgQF8IAAAA","60":"b:UMBjUAIkAgEI4JgSAIUgQF8IAAAA","73":"b:QAAhUAAkAgEIoAAQAAEAAAIAAAAA","83":"b:UMADUAIEAAAAwJgSAIQgQF8IAAAA","100":"b:AEABAAAEAAAAgAgCAAAAQF4IAAAA","122":"b:AEABEAAEAAAAgAgCAAAAQF4IAAAA","129":"b:AEABEAAEAAAAgAgCAAAAQF4IAAAA","135":"b:AEABEAAEAAAAgAgCAAAAQF4IAAAA","154":[28],"387":"b:3sQrVGMMugAYyLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/features/credentials/composables/useNodeCredentialOptions.ts":{"30":"b:3sQrVGMMugBYyLj7geS5//9LAAAA","38":"b:UEABUEIECgAIwJgSgIQgQF8IAAAA","40":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","44":"b:3sQrVGMMugAYyLj7geS5//9LAAAA","45":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","55":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","57":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","59":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","69":[15,79,21],"75":"b:WMQrUEMEmgAYwJiSgKSgQV8IAAAA","92":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","102":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","107":"b:AEABAAAEAgAAgAgCgAAAQF4IAAAA","114":[4],"120":"b:UMAjUEMECgAIwJgSgIQgQF8IAAAA","126":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA"},"packages/frontend/editor-ui/src/features/credentials/credentials.api.ts":{"15":"b://V/9/d//38e/////+f/////AQAA","33":"b://V/9/d//38e/////+f/////AQAA","37":"b:QABhQAAkAgMIoAAQAAEAABIAAAAA","60":"b:ALBhAABmowcGgkMAKAEAAIAAAQAA","76":"b:/8V/9/cd/gsY+Lz/geb/////AQAA","85":"b:QABhAAAkAgMIoAAQAAEAABIAAAAA","92":[57,79],"96":[57],"100":[57,79,21,104,49],"113":[4,57,79,21,56],"123":[57,56],"134":[57,22,132],"144":"b:UAABAAAEAgMIoAAQAAEAAAIAAAAA"},"packages/frontend/editor-ui/src/features/credentials/credentials.store.ts":{"41":"b://V/9/d//3//////////////AQAA","49":[4,57],"53":[4,57],"63":[57],"67":"b://V/9/d//38e/////+f/////AQAA","68":"b:/8V/9/d//wsY+Lz/i+f/////AQAA","73":"b:UPBz0Mc36gcO8tsSoKUoQN8IAQAA","74":"b:QIAAAEECAgMI4BIAACQIQAYAAAAA","77":"b:UIAxgEUUCgMI8AAQgAAAABIAAAAA","80":"b:UIAxgEUUCgMI8AAQgAAAABIAAAAA","82":"b:UIAxgEUECgMI8AAQgAAAABIAAAAA","91":"b:UMAjUEMECgIIwJgSgIQgQF8IAAAA","95":"b:UMAjUEMECgIIwJgSgIQgQF8IAAAA","97":"b:UIAhAEEECgIIwBAQgAQAQBYAAAAA","107":[6,67,57,16,79,42,92,129,132],"108":[6,67,57,16,79,42,92,129,132],"112":[6,67,57,16,79,42,92,129,132],"116":[6,67,57],"124":"b:3sRr1Gc+ugNY+Lj7geW5///LAQAA","125":"b:3sRr1Gc+ugNY+Lj7geW5///LAQAA","128":"b:UIBxQEAkCgMI8AAQgIEAABKAAAAA","129":"b:UIBxQEAkCgMI8AAQgIEAABKAAAAA","132":"b:QAAhAAAEAAIIwAAQAAAAABIAAAAA","133":"b:QAAhAAAEAAIIwAAQAAAAABIAAAAA","139":"b:UIAxgEUUCgMI8AAQgAAAABIAAAAA","140":"b:UIAhgEUUCgMI8AAQgAAAABIAAAAA","145":[57],"146":[57],"151":"b:QAAhAAAEAgMIoAAQAAEAAAIAAAAA","152":"b:QAAhAAAEAgMIoAAQAAEAAAIAAAAA","160":"b:QAAhAAAEAgMIoAAQAAEAAAIAAAAA","165":[57,15,79],"166":[57,15,79],"172":[57,15,79],"196":"b:QABhQAAkAgMIoAAQAAEAABIAAAAA","197":"b:QABhQAAkAgMIoAAQAAEAABIAAAAA","214":"b:QABhQAAkAgMIoAAQAAEAABIAAAAA","215":"b:QABhQAAkAgMIoAAQAAEAABIAAAAA","222":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","223":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","234":"b://V/9/d//38e/v//v+f/////AQAA","235":"b://V/9/d//38e/v//v+f/////AQAA","245":[57],"246":[57],"253":"b://V/9/d//w8e+v//qef/////AQAA","254":"b:UIBxgEVmCgMI8BIlgSdKRQZUAAAA","265":"b:QABhAAAkAgMIoAAQAAEAABIAAAAA","277":"b://V/9/d//38e/////+f/////AQAA","285":"b:ALBhAABmowcGgkMAKAEAAIAAAQAA","317":"b:/8V/9/cd/gsY+Lz/geb/////AQAA","328":[4,57,79,21,56],"336":"b:3sQrVGMMugJYyLj7geS5//9LAAAA","349":"b:QABhAAAkAgMIoAAQAAEAABIAAAAA","386":[57,79,21,104,49],"399":[57,79],"408":[57],"413":[57],"423":[57,22,132],"427":[57,56],"431":"b:UAABAAAEAgMIoAAQAAEAAAIAAAAA","446":"b:QABhQAAkAgMIoAAQAAEAABIAAAAA","466":[57,104,49],"476":[57,104,49],"488":[57],"494":[57],"552":[4,57,44,56],"561":[4,57,56],"563":[4,57,56]},"packages/frontend/editor-ui/src/features/credentials/quickConnect/composables/useQuickConnect.ts":{"33":"b:3sQrVGMMugBYyLj7geS5//9LAAAA","41":"b:AEQBYEEEAgAIiBAAguQ4zHoIAAAA","51":"b:UMADUAIEAAAIwJgSAIQgQF8IAAAA","64":"b:AEQBYEEEAgAIiBAAguQ4zHoIAAAA","71":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","117":"b:3sQrdGMsugEY6Lj7g+W5//9LAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionData.ts":{"8":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","10":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","12":"b:zsQrVGMMugBYiLj7geS4//9LAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionRedaction.ts":{"13":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","22":[5,6,67,7,43,93,51,142],"26":[5,6,67,7,93,51,142],"28":[43],"30":[43]},"packages/frontend/editor-ui/src/features/execution/executions/executions.store.ts":{"31":"b://V/9/d//33/////////////AQAA","43":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","64":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","67":[119,50,140,141,142],"74":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","75":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","104":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","112":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","113":[142],"124":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","134":[142],"141":[120],"146":[140],"150":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","158":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","178":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","203":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","217":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","223":[142],"231":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","236":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","295":[51],"317":[120],"339":[6,111,119,140,141,142],"347":[6,111,119,140,141,142]},"packages/frontend/editor-ui/src/features/execution/executions/executions.utils.ts":{"50":"b:QAAAAAAIDAIAAAAAAICAAQBwAAAA","53":"b:AAAAAAAIDAIAAAAAAICAAQBwAAAA","56":"b://V/9/d//3//////////////AQAA","70":"b:QAAAAAAIDAIAAAAAAICAAQBwAAAA","132":[57,68,10,32],"145":"b:7wQsh3cAHAIYCKRpAPCQ/y5zAAAA","147":"b:7wQshHcAHAIYCKRpAPCQ/y5zAAAA","198":[57,51],"255":"b:5gQIBGMIGAIYAKBpAECQ/S5DAAAA","256":"b:5gQIBGMIGAIYAKBpAECQ/S5DAAAA","264":"b:5gQIBGMIGAIYAKBpAECQ/S5DAAAA","273":"b:5gQIBGMIGAIYAKBpAECQ/S5DAAAA","274":"b:5gQIBGMIGAIYAKBpAECQ/S5DAAAA","277":[57],"332":"b:7wAsh3cAHAIYCKRpAOCQ/y5zAAAA","370":"b:RgAgAAAAGAIIAAAAAACAQQAwAAAA","419":"b:7wAsh3cIHAIYCKRpAOCQ/y5zAAAA","436":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","450":[4,57],"457":[4,57,120,52,131],"463":"b:38Qv53cc/gNwiLzPgeb7///7AQAA","469":[57],"505":[57],"527":[57]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsOverviewPanel.vue":{"39":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","51":[5,6,67,7,39,93,108,51,142],"52":[5,6,67,7,39,93,108,51,142],"57":[5,6,67,7,39,93,108,51,142],"59":[5,6,67,7,39,93,108,51,142],"67":[5,6,67,7,39,93,108,51,142],"72":[5,6,67,7,39,93,108,51,142],"75":[5,6,67,7,39,93,108,51,142],"78":[39],"80":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","94":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","98":"b:7wAsh3cAHAAYCKRpAOCQ/y5zAAAA","107":"b:7wAsh3cAHAAYCKRpAOCQ/y5zAAAA","125":[5,6,67,7,93,108,51,142],"153":[51],"154":[5,51]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsPanel.vue":{"21":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","31":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","70":[5,6,67,7,39,93,51,142],"73":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","74":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","77":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","86":[5,6,67,7,39,93,51,142],"91":[5,6,67,7,39,93,51,142],"97":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","115":[39],"123":[39,51],"130":[39,51],"140":[39],"147":[39],"152":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","184":"b:4AAAEAAACAAIgAAwABAAAAEAAAAA","210":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","253":[5,6,67,7,93,51,142]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsPanelActions.vue":{"20":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","27":[5,6,67,7,39,93,108,51,142],"29":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","30":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","33":[5,6,67,7,39,93,108,51,142],"42":[39],"51":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","58":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","77":[51],"84":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsPanelHeader.vue":{"8":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","10":[5,6,39,51,142],"13":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","20":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewKeyboardEventListener.vue":{"8":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","11":"b:UEAAAIAA4AEAABDQAOAOAoF6AQAA","24":[39],"27":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useChatState.ts":{"41":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","59":[5,6,67,7,39,93,108,51],"60":[39,51],"63":[5,6,67,7,39,93,108,51],"65":[39],"66":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","74":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","101":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","120":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","125":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","130":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","135":[5,6,67,7,39,93,108,51],"149":[5,6,67,7,39,93,108,51],"165":[5,6,67,7,39,93,108,51],"177":[39],"178":[39],"179":[39],"183":[39],"184":[39],"230":[5,6,67,7,39,93,108,51],"276":[5,6,67,7,39,93,108,51],"290":[5,6,67,7,39,93,108,51],"321":[39,51],"329":[5,6,7,39,42,108],"342":[39],"350":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","351":"b:/8Vv8Pcd/gkYiLj/gfb/////AQAA","362":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useClearExecutionButtonVisible.ts":{"8":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","13":"b:/8Qv9/cc/gEYiLz/geb7///7AQAA","14":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","15":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","17":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","18":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","20":"b:/8Qv9/cc/gEYiLz/geb////7AQAA","21":"b:/8Qv9/cc/gEYiLz/geb7///7AQAA","24":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsExecutionData.ts":{"38":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","44":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","47":[5,6,67,7,39,93,108,51,142],"55":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","62":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","69":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","70":"b:7wQsh3cIHAAYCKRpAPCQ/y5zAQAA","85":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","95":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","100":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","126":"b:/8Vv8Pcd/gkYiLj/gfb/////AQAA","135":[39],"168":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","169":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","170":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","171":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","172":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","174":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","198":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","199":"b:/8Vv8Pcd/gkYiLj/gfb/////AQAA","208":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","218":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsPanelLayout.ts":{"16":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","30":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","32":[39],"38":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","40":[39],"45":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","51":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","56":[5,6,67,7,39,93,51,142],"57":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","58":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","67":[39],"77":[5,6,39,51,142],"91":[39],"97":[39],"110":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","133":"b:QAAABYAATAAAAAQAAITAAYBwAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsSelection.ts":{"25":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","34":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","35":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","43":[5,39,51],"58":[5,39,51],"85":[39],"100":[39],"116":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","127":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","156":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","162":[6,67,7,93,51,142],"183":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","222":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","224":[5,6,67,7,93,51,142],"229":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","230":[6,67,39,51]},"packages/frontend/editor-ui/src/features/execution/logs/composables/useLogsTreeExpand.ts":{"15":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","19":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","23":[6,39,51]},"packages/frontend/editor-ui/src/features/execution/logs/composables/usePopOutWindow.ts":{"32":[39],"39":[39],"61":[39],"77":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","88":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","89":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","90":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","93":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","104":[39],"121":[39],"141":[39],"168":[39],"171":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","180":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","185":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","194":"b:QAAABYAATAAAAAQAAITAAYBwAAAA","199":"b:QAAABYAATAAAAAQAAITAAYBwAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/logs.utils.ts":{"44":[5,6,67,7,39,93,108,51,142],"45":[5,6,67,7,39,93,108,51,142],"59":[5,6,67,7,39,93,108,51,142],"67":[5,6,67,7,39,93,108,51,142],"92":[5,6,67,7,39,93,108,51,142],"123":[6,67,39,51],"131":[6,67,39,51],"132":[6,67,39,51],"136":[6,67,39,51],"157":[5,6,67,7,39,93,108,51,142],"175":[5,6,67,7,39,93,108,51,142],"179":[5,6,67,7,39,93,108,51,142],"185":[5,6,67,7,39,93,108,51,142],"204":[39],"234":[39],"254":[39],"268":[39],"273":"b:7wAsh/cIHAAYCKRpAOCQ/y5zAAAA","274":[5,6,67,39,93,51,142],"280":[5,6,39,93,51,142],"297":[5,6,67,7,39,93,108,51,142],"303":[5,6,67,7,39,93,108,51,142],"319":[5,6,67,7,39,93,108,51,142],"327":[39],"332":[6,67,39,51],"350":[5,6,67,7,39,93,108,51,142],"366":[5,6,67,7,39,93,108,51,142],"375":[39],"384":[39],"389":[39],"403":[39],"409":[39],"443":[39],"464":[39],"470":[39],"471":[39],"502":[39],"512":[5,6,67,7,39,93,108,51,142],"574":[5,6,67,7,39,93,108,51,142],"597":[39],"598":[39],"601":"b:78Qv9/cM/gEYiLz/gea////7AAAA","620":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","631":[5,6,67,7,93,51,142],"656":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","672":[39],"677":[39],"682":[5,6,67,7,39,93,108,51,142],"704":[5,6,67,7,39,93,108,51,142],"718":[5,6,67,7,39,93,108,51,142],"723":[5,6,67,7,39,93,108,51],"728":[5,6,67,7,39,93,108,51],"738":[39,51],"740":[5,6,67,7,39,93,108,51],"763":[5,6,67,7,39,93,108,51,142],"767":[5,6,67,7,39,93,108,51,142],"778":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","781":"b:/8Vv9/cd/gkYiLz/gfb/////AQAA","801":[5,39,51],"813":[39,51],"824":[39,51],"849":[39,51],"901":[39,51],"908":[39,51],"920":[39,51],"983":[5,6,67,7,39,93,51,142],"992":[5,6,67,7,39,93,51,142],"1002":"b:7wQsh/cIHAAYCKRpAPCQ/y5zAQAA","1010":"b:7wQsh/cIHAAYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/features/instanceRegistry/stores/instanceRegistry.store.ts":{"7":"b://V/9/d//33/////////////AQAA","14":[115]},"packages/frontend/editor-ui/src/features/integrations/externalSecrets.ee/externalSecrets.ee.store.ts":{"21":[45],"24":[45],"28":[45],"61":"b:3sRrVGNuuwFY6Lj7ieW5//9LAAAA","67":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","79":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","93":[45],"94":[45],"98":[45],"101":[45],"102":[45],"142":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","156":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","182":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","217":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA"},"packages/frontend/editor-ui/src/features/integrations/sourceControl.ee/sourceControl.api.ts":{"22":"b://V/9/d//3//////////////AQAA","24":[57,65],"30":[57],"37":[57],"44":[57,65],"53":[57,65],"61":[57],"65":[57],"76":[57],"87":[57,65],"96":[57]},"packages/frontend/editor-ui/src/features/integrations/sourceControl.ee/sourceControl.store.ts":{"14":"b://V/9/d//3//////////////AQAA","18":"b://V/9/d//38f/////+f/////AQAA","24":"b://V/9/d//3//////////////AQAA","45":[57],"58":[57],"62":[57,65],"66":"b://V/9/d//3//////////////AQAA","68":[57,65],"73":[57,65],"78":[57,65],"87":[57,65],"102":[57],"112":[57],"116":[57],"124":[57]},"packages/frontend/editor-ui/src/features/ndv/panel/components/InputPanel.vue":{"60":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","110":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","116":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","124":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","128":"b:zsQrUEMEOgAYiLj7geS53v8JAAAA","145":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","146":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","155":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","179":"b:zsQrVEMMOgAYiLjzgeS5//9LAAAA","180":[6,129],"184":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","192":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","208":"b:BgAIAAIAEAAAAAABAAAQ3CwBAAAA","217":"b:zsQrUEMEOgAYiLj7geS53v8JAAAA","222":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","237":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","238":"b:zsQrVEMMOgAYiLjzgeS5//9LAAAA","241":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","248":"b:zsQrVEMMOgAYiLjzgeS5//9LAAAA","252":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","253":"b:zsQrVEMMOgAYiLjzgeS5//9LAAAA","259":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","278":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","280":"b:zsQrUEMEOgAYiDjzgeS4zP8IAAAA","285":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","298":"b:AAQAAEEAAAAAAAAAAAABHC4AAAAA","300":"b:AAQAAEEAAAAAAAAAAAAAHCoAAAAA","318":"b:zsQrVEMMOgAYiLjzgeS5//9LAAAA","338":[116],"351":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","355":[7,127],"359":"b:zsQrUEMEOgAYiLj7geS53v8JAAAA","363":[125],"367":[127,130],"376":[51,125,126,127,130],"380":[130],"381":[130],"397":"b:gAAAAAAACAAAAAAIACAQ4BcAAAAA","403":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","439":[91,51,125,126,127,130],"442":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","449":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","461":[91,51,125,126,127,130],"470":[67,79,91,92,129],"474":[67,79,91,92,129],"483":"b:zsQrUEMEOgAYiDjzgeS4zP8IAAAA","517":"b:zsQrUEMEOgAYiDjzgeS4zP8IAAAA","519":"b:zsQrUEMEOgAYiDjzgeS4zP8IAAAA","625":"b:AEAAAEAEAgAIgAAQAEAAQIoAAAAA","670":[7],"680":[43]},"packages/frontend/editor-ui/src/features/ndv/panel/components/NDVFloatingNodes.vue":{"13":"b:/8Vv93cd/gl4iLz/gfb/////AQAA","18":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","30":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","32":[128],"39":"b:SEABAAAAgAAAgBDRAOAo/rsAAAAA","53":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","55":"b:zsQrVEMMOgBYiLj7geS4//9LAAAA","65":"b:zsQrVEMMOgBYiLj7geS4//9LAAAA","68":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","97":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","101":"b:ysQgEGEEuAAYiDj6AeS4/+9KAAAA","107":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","124":[116],"125":"b:zsQrVEMMOgBYiLj7geS4//9LAAAA","131":[116,117,128,133]},"packages/frontend/editor-ui/src/features/ndv/panel/components/NDVHeader.vue":{"27":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","32":[39],"34":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","62":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","64":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","70":[67,39,109,110,111,115,126,134],"72":"b:zsQrVOMMugBYiLj7geS4//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/panel/components/NDVSubConnections.vue":{"25":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","57":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","61":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","66":[67,128],"84":[6,67,79,28,92,106,109,128,129],"87":[6,67,79,28,92,106,109,128,129],"99":[67,128],"110":[6,67,79,28,92,106,109,128,129],"127":[6,67,79,28,92,106,109,128,129],"131":[6,67,79,28,92,106,109,128,129],"133":[6,67,79,28,92,106,109,128,129],"137":[6,67,79,28,92,106,109,128,129],"145":[6,67,79,28,92,106,109,128,129],"152":[6,67,79,28,106,128,129],"167":[6,67,79,28,92,106,109,128,129],"169":[67,128],"183":[67,128],"186":[6,67,79,28,92,106,109,128,129],"193":"b:zsQrVEMMOgAYiLjzgeS4//9LAAAA","201":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","210":"b:zsQrVEMMOgAYiLjzgeS4//9LAAAA","231":[128],"250":"b:BgAIACIAEAAAAAABAAAQ0CwAAAAA","253":"b:BgAIACIAEAAAAAABAAAQ0CwAAAAA","259":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","260":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","262":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","274":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","296":[6,67,79,28,106,128,129],"297":[6,67,79,28,92,106,109,128,129],"305":[128],"317":[128],"335":[6,67,79,28,92,106,109,128,129],"355":[67,128],"376":[67,128]},"packages/frontend/editor-ui/src/features/ndv/panel/components/OutputPanel.vue":{"34":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","85":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","86":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","111":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","115":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","121":"b:zsQrUGMEugAYiLj7geS43/8JAAAA","125":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","144":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","153":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","157":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","165":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","167":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","185":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","203":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","211":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","215":"b:zsQrUGMEugAYiLj7geS43/8JAAAA","219":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","242":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","263":[127],"267":[127],"286":[7,127,130,136],"291":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","304":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","310":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","341":"b:gAQIBGMIGABQACABAACw/S5DAAAA","342":[7,125,127,130],"343":[125,127],"344":[117,120,127,130],"347":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","373":"b:zsQrUGMEugAYiLj7geS43/8JAAAA","396":"b:QkQCAGEAkAAIgAACAEQoXdkIAAAA","404":"b:zsQrUEMEOgAYiLj7geS43v8JAAAA","406":"b:zsQrUGMEugAYiLj7geS43/8JAAAA","417":"b:QAAAEAAACAAIgChYAAAAAAcAAAAA","455":"b:zsQrUGMEsgAYiJjzgeS43/8JAAAA","489":[51],"491":[51],"495":[7],"513":[43],"534":[7,51,127,130,136]},"packages/frontend/editor-ui/src/features/ndv/panel/components/PanelDragButtonV2.vue":{"11":"b:zsQrVMMMugAYiLj7geS4//9LAAAA","17":[39],"21":[39],"25":[39],"27":"b:zsQrVMMMugAYiLj7geS4//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/panel/components/TriggerPanel.vue":{"70":"b:AEQCAEEAkAAAgAAAAAAAQVgAAAAA","74":"b:AEQCAEEAkAAAgAAAAAAAQVgAAAAA","82":"b:AEQCAEEAkAAAAAAAAAAAQQgAAAAA","90":"b:AEQCAEEAkAAAAAAAAAAAQQgAAAAA","109":"b:AEQCAEEAkAAAgAAAAAAAQVgAAAAA","115":[14,17,38,52,126,131,55],"123":[10,32],"131":[10,32,38,120],"135":"b:AEQCAEEAkAAAgAAAAAAAQVgAAAAA","153":"b:AEQCAEEAkAAAgAAAAAAAQVgAAAAA","161":"b:AEQCAEEAkAAAAAAAAAAAQQgAAAAA","165":[10,32,38,52],"169":"b:AEQCAEEAkAAAAAAAAAAAQQgAAAAA","187":[10,14,17,32,38,52,126,131,55],"189":[10,14,17,32,38,52,126,131,55],"195":[10,14,17,32,38,52,126,131,55],"197":[10,32],"203":[10,32],"216":[10,14,17,32,38,52,126,131,55],"234":[10,14,17,32,38,52,126,131,55],"244":[10,14,17,32,38,52,126,131,55],"284":[10,14,17,32,38,52,126,131,55],"374":[120],"431":[10,32],"435":[10,32],"461":[10,14,17,32,38,52,126,131,55],"478":[10,14,17,32,38,52,126,131,55],"484":[10,14,17,32,38,52,126,131,55]},"packages/frontend/editor-ui/src/features/ndv/panel/composables/useNdvLayout.ts":{"21":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","29":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","35":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","37":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","41":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","45":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","46":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","51":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","53":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","75":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","102":[39],"106":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","119":[39],"123":[39],"157":[39],"175":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","182":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/Collection/CollectionParameter.vue":{"9":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","25":"b:ysQqEENMuQBYwDj6COSp/98DAAAA","34":[32,38]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/Collection/CollectionParameterLegacy.vue":{"25":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","46":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","50":"b:ysQqFENEuQAYwDj6COSp/98CAAAA","57":"b:ysQqFENEuQAYwDj6COSp/98AAAAA","63":"b:ysQqFENEuQAYwDj6COSp/98AAAAA","75":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","91":[3,19,32,38,89,127,136],"95":[3,19,32,38,89,127,136],"112":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","114":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","115":[3,19,32,38,89,127,136],"118":[3,19,32,38,89,127,136],"120":[3,19,32,38,89,127,136],"131":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","133":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","148":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","149":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","152":[32,38],"206":[32,38],"208":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","215":"b:wsQiFENMuQBYwDj6COSp/98CAAAA","248":"b:ysQqFENEuQAYwDj6COSp/98AAAAA","251":"b:ysQqEENEuQAYwDj6COSp/98AAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionEditModal.vue":{"38":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","64":[123],"82":[123],"84":[123],"89":[123],"103":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","104":[123],"140":[123],"145":[123],"160":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","169":[123],"181":[123],"189":[123],"210":[123],"220":[123],"243":[123]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionEditorModal/theme.ts":{"4":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","33":[123],"39":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/constants.ts":{"299":"b://V/9/d//33/////////////AQAA","305":"b://V/9/d//33/////////////AQAA","311":"b://V/9/d//33/////////////AQAA","317":"b://V/9/d//33/////////////AQAA","323":"b://V/9/d//33/////////////AQAA","329":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FixedCollection/FixedCollectionParameter.vue":{"39":[68,10,32,38,110,122,129]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FixedCollection/FixedCollectionParameterLegacy.vue":{"66":"b:SoQLACEEEgAYgAgCgEQI/M8IAAAA","71":"b:SoQKAGEAEAAQAAACAEQI3M4IAAAA","73":"b:SoQKAGEAEAAQAAACAEQI3M4IAAAA","76":"b:SoQKAGEAEAAQAAACAEQI3M4IAAAA","80":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","81":"b:AAQBAAEEEgAYgAgAgAAA4AcIAAAA","82":"b:SoQKACEAEAAQAAACAEQI3M4IAAAA","83":"b:SoQKAGEAEAAQAAACAEQI3M4IAAAA","85":"b:SoQLACEEEgAYgAgCgEQI/M8IAAAA","92":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","94":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","105":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","108":[83,32,38],"111":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","115":[10,32],"122":[10,32],"126":[10,32],"140":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","155":[10,32],"160":[10,32],"191":[10,32],"196":"b:SoQKAGEAEAAQAAACAEQI3M4IAAAA","207":[10,32],"232":"b:SoQKAGEAEAAQAAACAEQI3M4IAAAA","242":[10,32],"263":[32],"276":[32],"299":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","300":"b:CAQJAEEEAAAQgAAAAEAABAMAAAAA","307":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","339":[68,10,32,110,129],"362":[68,10,32,110,129],"368":[68,10,32,110,129],"382":[68,10,32,110,129],"389":[68,10,32,38,110,122],"421":"b:SoQKACEAEAAQAAACAEQI3M4IAAAA","423":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","439":"b:SoQKAGEAEAAQAAACAEQI3M4IAAAA","461":"b:SoQKACEAEAAQAAACAEQI3M4IAAAA","531":[32],"532":[10,32],"636":[68,10,32,110,129],"644":[52,126,127,130]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInput.vue":{"126":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","245":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","251":[14,126,129],"255":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","261":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","265":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","267":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","271":"b:3sRrVGNkuwEY6Lj7ieW5//8LAAAA","275":"b:SARrAENkAwEYoCAQCAGAQDIAAAAA","289":[7,15,84,46,111,129,136],"305":[7,15,84,46,111,129,136],"309":[7,15,84,46,111,129,136],"317":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","321":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","340":"b:AEQBQEEEAgAAgJgKgIQgzH4IAAAA","347":"b:xMAAAABAAAAACBAAAeA4QAJBAAAA","356":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","360":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","384":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","400":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","403":"b:REAAAAAAAAAACAAAAeAYQABAAAAA","411":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","415":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","423":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","427":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","501":"b:QgABEAAkCgAIgIgygCQAXT8KAAAA","516":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","549":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","566":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","606":"b:zsQrVGNMuwBYyLj7ieS5//9LAAAA","637":[42,137],"656":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","670":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","677":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","685":[78,79,91,128],"689":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","716":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","735":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","739":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","743":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","747":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","751":[117],"753":"b:SARrQENkAwEY4CgRCAGRXD4AAAAA","754":"b:AAAiQEFAAAAQwAgBCAAQDCYAAAAA","756":[88,119],"757":"b:SARrAENkAwEYoCARCAGBTDIAAAAA","764":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","776":[6,126],"778":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","787":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","791":[15,79,21],"805":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","819":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","827":"b:zsRrVGMsugFY6Lj7geW5//9LAAAA","835":[14,126,129,132],"887":[126],"892":[126],"897":[123],"901":[123],"931":[126],"943":[123],"958":"b:SARrQENkAwEY4CgRCAGRXD4AAAAA","966":"b:SARrQENkAwEY4CgRCAGRXD4AAAAA","1027":"b:SARrAENkAwEYoCARCAGAQDIAAAAA","1050":"b:SERrQENkAwEY6CgRCeG4XDoCAAAA","1137":[45,122,123,124,129,131,132,133],"1144":"b:SARrAENkAwEY4CgRCAGRXDIAAAAA","1211":"b:SARrAENkAwEYoCARCAGAQDIAAAAA","1218":[45,122,123,124,129,131,132,133],"1298":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1332":[78,79,91,128],"1361":"b:ysQhEGEkuwEY6Dj6AeW5//9KAAAA","1367":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1368":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1386":[126,129,132],"1392":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1393":"b:TERrQENkAwEYqCARCOGYXDoCAAAA","1403":[14,126,129],"1408":[45,122,123,124,129,131,132,133],"1418":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1421":[17,79],"1437":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1450":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1456":"b:AAAAAAAAAAAAAAABCAAgVDoAAAAA","1579":[126],"1665":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","1670":[126],"1690":[117],"1735":[117],"1758":[6,126],"1781":[7,15,84,46,111,129,136],"1811":"b:SARrAENkAwEYoCAQCAGAQDIAAAAA","1829":[3,99,126,129],"1834":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1945":[15,79,21],"1966":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","1968":"b:3sRrUGNsuwFY6Lj7ieW5//9LAAAA","1973":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","2005":[14,132],"2007":[14,132],"2011":[14,132]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputFull.vue":{"63":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","97":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","108":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","115":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","119":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","123":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","126":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","133":"b:2sQqVGNEuAAYwLj7COSJ//8LAAAA","135":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","144":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","162":"b:CAQqQENEAQAQwCgBCACRXD4AAAAA","170":"b:CAQqAENEAQAQwCgBCACRXDIAAAAA","186":"b:UsQrUENEGABYyCiSCOC43T8BAAAA","190":"b:QsQrUENEGABYyCiSCOC43T8BAAAA","194":[122,123,124,129,131,132,133],"201":"b:SEQqQENEAQAYyCABCeC4XDoCAAAA","205":"b:CAQqAENAAQAQACABCACAQCIAAAAA","290":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","295":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","296":[133],"305":"b:UsQrUENEGABYyCiSCOC43T8BAAAA","310":[78,79,91,128],"314":[78],"351":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","436":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","440":[78,79,91,128],"453":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","474":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","507":[78,79,91,128]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputList.vue":{"65":"b:SoQLAGEEEgAYgAgCgEQI/M8IAAAA","68":"b:ysQqFENMuQBYwDj6COSp/98DAAAA","123":"b:zsQrFGNMuwBYyDj6ieS5/99LAAAA","144":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","146":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","175":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","188":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","194":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","195":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","217":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","241":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","268":"b:hgQAAAEACQAAQAAgAQAwxCMAAAAA","269":"b:hgQAAAEACQAAQAAgAQAwxCMAAAAA","275":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","276":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","279":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","280":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","283":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","300":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","309":[10,32],"312":[10,32],"335":[10,32],"353":[68],"356":[68],"391":[10,32],"394":[10,32],"398":[10,32],"403":"b:CAQqAENEAQAQwAgBCACQTDIAAAAA","407":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","414":"b:GMQrAEMEmgBYgAiCgCCAQV8IAAAA","421":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","425":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","440":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","453":[6,67],"468":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","485":"b:SEQqQENEEQAYyCABCeC4XDoCAAAA","495":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","510":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","514":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","542":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","548":[6,67,79,28,92,109,128,129],"552":[6,67,79,28,92,109,128,129],"562":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","567":"b:UIAhAEEECgAIwAAQgAAAABIAAAAA","583":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","661":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","684":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","743":[6,67,79,28,92,109,128,129],"758":[129],"764":[6,67,79,28,92,109,128,129],"816":"b:ysQrFGNMuwBYwDj6iOSp/98LAAAA","839":"b:ysQrFGNMuwBYwDj6iOSp/98LAAAA","841":"b:ysQrEGNMuwBYwDj6iOSp/98LAAAA","962":"b:CAQqAENEAQAQwAgBCACQTDIAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputWrapper.vue":{"50":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","70":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","74":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","85":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","91":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","102":[89,45,122,123,130,132,133],"104":[130],"108":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","113":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","130":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","134":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","141":"b:SARrQENkAwEY4CgRCAGRXD4AAAAA","145":"b:SARrAENkAwEY4CgRCAGRXDIAAAAA","153":"b:SERrQENkAwEY6CARCeG4XDoCAAAA","157":"b:SARrAENkAwEYoCARCAGAQDIAAAAA","162":[78,79,91,128],"163":[45],"170":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","177":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","208":"b:3sRrUGNsuwFY6Lj7ieW5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterIssues.vue":{"9":"b:CIQgAAFEAAAQwAACAAAgQBMAAAAA","10":"b:CIQgAAFEAAAQwAACAAAgQBMAAAAA","17":"b:CAQAAAFEAAAQQAACAAAgQBMAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterOptions.vue":{"40":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","61":"b:3sRrVGNkuwEY6Lj7ieW5//8LAAAA","62":"b:3sRrVGNkuwEY6Lj7ieW5//8LAAAA","63":"b:ysRrVGNkugEYoLj7iOWp//8LAAAA","64":"b:3sRrVGNkuwEY6Lj7ieW5//8LAAAA","67":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","77":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","96":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","115":"b:ysRrVGNkugEYoLj7iOWJ//8LAAAA","116":"b:3sRrVGNkuwEY6Lj7ieW5//8LAAAA","120":"b:3sRrVGNkuwEY6Lj7ieW5//8LAAAA","128":"b:3sRrVGNkuwEY6Lj7ieW5//8LAAAA","173":[133],"174":[45,122,123,124,129,131,132,133],"181":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","189":[133],"215":[133]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/TextEdit.vue":{"10":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","31":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","41":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","42":"b:TERrQENkAwEYqCAQCOGYQDIAAAAA","48":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","66":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/utils/fromAIOverride.utils.ts":{"39":[78],"80":[91],"87":[78,79,91,128],"103":[78],"114":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","118":[78],"129":[78],"135":[78],"150":[78],"175":[78,79,91,128],"197":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","214":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","215":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","231":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","238":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA","250":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunData.vue":{"103":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","104":[91,120,51,127],"106":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","109":[6,51],"111":"b:5gQIBGMIGABQAKBpAECx/S5DAAAA","236":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","237":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","266":"b:JgQIBGMAGAAQACABAACw/S4DAAAA","267":"b:7sQrVGMMugBYiLjzgeS4//9LAAAA","268":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","276":"b:QAAAAAAACAAAAAAJAACg/wwAAAAA","277":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","283":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","284":"b:xgAIBAIIGAAQAKBJAECx/S5DAAAA","286":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","287":"b:hgQIBGMIGABQAKBJAECw/S5DAAAA","288":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","289":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","290":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","293":"b:zsQrVEMMOgAYiDj7geS4//8LAAAA","297":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","305":"b:xgAIBAIIGAAQAKDJAECx/25DAAAA","306":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","307":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","308":"b:AAQIBGMIGABQACABAACw/S5DAAAA","316":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","326":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","332":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","336":"b:5gQIBGMIGABYAKDpAECx/25DAAAA","340":"b:5gQIBGMIGABQAKDpAECx/25DAAAA","349":"b:5gQIBGMIGABQAKDpAECx/25DAAAA","353":"b:5gQIBGMIGABQAKDpAECx/25DAAAA","363":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","365":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","374":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","383":"b:5gQIBGMIGABYAKBpAECx/S5DAAAA","387":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","392":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","403":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","409":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","416":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","426":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","429":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","439":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","443":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","447":"b:JgQIAGMAEAAAAAABAAAQ3CwBAAAA","451":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","459":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","462":"b:YgAIBAAIGABQAKBoAECh/Q5DAAAA","463":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","471":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","472":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","476":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","481":[7,51,127,130,136],"491":[7,51,127,130,136],"497":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","501":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","502":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","503":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","507":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","508":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","518":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","528":[6,7,85,51,125,126,127,130],"529":[6,7,85,51,125,126,127,130],"569":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","573":"b:zsQrVGMEugAYiLjzgeS4//8LAAAA","574":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","580":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","591":"b:5gQIBGMIGABQAKDpAECx/25DAAAA","595":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","607":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","624":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","629":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","638":"b:AAQIBGMIGABQACABAACw/S5DAAAA","642":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","660":[7],"666":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","669":"b:zsQrVEMMOgAYiLj7geS5//9LAAAA","672":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","674":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","677":"b:AAAAAAAAEAAAAACCAAAggkgBAAAA","678":"b:AAAAAAAAEAAAAACCAAAggkgBAAAA","695":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","702":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","706":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","707":[6,51],"710":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","714":[51],"720":"b:ZgQAAAEACAAAAAAAAAAwxCcAAAAA","725":"b:5gQIAGMAGAAIAAAhAAAw3CwBAAAA","735":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","740":"b:5gQIBGMIGABQACBpAECx/S5DAAAA","747":"b:5gQIEGMAGAAIgCA5AACw/C8BAAAA","756":"b:5gQIAGMAGAAIACAhAAAw/C8BAAAA","764":[1,2,51,126,130],"771":[125,127],"777":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","786":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","807":[119,51],"818":"b:6sQgEGEEuAAYiDj6AeS5/+9KAAAA","823":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","839":[83,87,89,94,120,127,134],"866":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","905":[7,125,127,130],"927":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","943":"b:BgAAAEMAEAAAAAABAAAwPCgAAAAA","951":"b:6sQgEGEEuAAYiDj6AeS5/+9KAAAA","959":"b:JgQIAGMAGAAAAAABAACwfCgAAAAA","964":[117,121,122,123,124,130,131],"1000":[117,121,122,123,124,130,131],"1024":[117,122,123,124,130,131],"1051":[117,122,123,124,130,131],"1061":[119,131],"1115":[130],"1139":[7,127],"1147":[7,127],"1151":[7,127],"1155":[88],"1168":"b:5gQIAGMACAAAAAAhAAAw/CwBAAAA","1191":[6,91,120,51,125,126,127,130],"1222":[7,51,127,130,136],"1250":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1275":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1278":"b:AAAAAAAAEABAAAAAAAChvA4CAAAA","1290":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1296":[125,127],"1299":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1317":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1327":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1354":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1381":[6,7,85,51,125,126,127,130],"1399":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1402":"b:5gQIBGMIGABQACBpAECx/S5DAAAA","1408":"b:7sQrVGMMugBYiLj7geS5//9LAAAA","1415":[7,127,130,136],"1432":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","1438":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","1444":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","1497":"b:AAAAAAAAAAAAAAAAAACgvAwAAAAA","1501":"b:AAAAAAAAAABAAAAAAACgvAwAAAAA","1509":"b:AAAAAAAAAABAAAAAAACgvAwAAAAA","1524":"b:AAAAAAAAAAAAAAAAAACgHgwAAAAA","1575":[117,121,122,123,124,130,131],"1588":[119,131],"1634":[7,127,130,136],"1636":[7,51,127,130,136],"1637":[7,51,127,130,136],"1638":[7,51,127,130,136],"1649":[7,127,130],"1683":[83,89,94,134],"1688":[83,89,94,134],"1760":"b:5gQIAGMAGAAIAAAhAAAQ3CwBAAAA","1798":[121],"1804":[117,122,123,124,130,131],"1809":[117,121,122,123,124,130,131],"1811":[117,121,122,123,124,130,131],"1928":[43],"2070":"b:YgAIBAAIGABQAKBoAECh/Q5DAAAA","2113":[125],"2115":[125],"2138":"b:4AQIBGMIGABQACAhAACw/S5DAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataDisplayModeSelect.vue":{"18":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","21":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","45":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","47":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","53":"b:7sQrVGMMugBYiLj7geS4//9LAAAA","62":[91,120,51,125,126,127,130],"64":[5,6,67,7,93,51,142]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataItemCount.vue":{"16":"b:5gQIBGMIGABYACApAACw/S5DAAAA","17":"b:5gQIAGMIGABYACApAACw/S5DAAAA","21":[125,127],"29":"b:5gQIBGMIGABYACApAACw/S5DAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPinButton.vue":{"6":"b:AAQIBGMIGABQACABAACw/S5DAAAA","24":"b:AAQIBGMIGABQACABAACw/S5DAAAA","27":"b:AAQIBGMIGABQACABAACw/S5DAAAA","31":[32,38],"49":"b:AAQIBGMIGABQACABAACw/S5DAAAA","66":[119,131]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataSearch.vue":{"44":"b:5gQIBGMIGABQAKBpAECx/S5DAAAA","50":"b:5gQIBGMIGABQAKBpAECx/S5DAAAA","68":"b:5gQIBGMIGABQAKBpAECx/S5DAAAA","72":"b:AAAAAAAAAAAAAABBAAAAvAoAAAAA","99":[125,127],"104":[125,127],"109":[125,127],"115":[125,127],"121":[125,127],"134":"b:AAAAAAAAAAAAAABBAAAAvAoAAAAA","152":"b:5gQIBGMIGABQAKBpAECx/S5DAAAA","153":[125,127]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataTable.vue":{"87":"b:gAQIBGMIGABQACABAACw/S5DAAAA","88":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","89":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","91":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","92":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","93":[125,127,130],"96":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","97":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","105":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","116":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","153":[136],"165":[7,125,127,130],"187":[7,127,130],"202":[125],"208":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","221":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","228":"b:gAAAAEAACABAACAAAACAsAQAAAAA","241":"b:gAAAAEAACABAACAAAACAsAQAAAAA","254":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","264":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","310":"b:gAAAAEAACABAACAAAACAsAQAAAAA","342":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","351":"b:gAAAAEAACABAACAAAACAsAQAAAAA","355":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","359":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","371":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","396":"b:AAAAAAAACAAAACABAAAA4Q4BAAAA","414":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","430":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","458":[38,88,129,130,131],"459":[38,88,129,130,131],"468":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","513":[51,126,127,131],"570":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","582":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","593":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","596":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","613":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","669":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","699":[136],"713":"b:4AQIBGMIGABQACAhAACw/S5DAAAA","731":"b:gAAAAEAACABAACAAAACAsAQAAAAA","754":"b:gAAAAEAACABAACAAAACAsAQAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunInfo.vue":{"7":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","15":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","19":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","23":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA","33":"b:hgQIBGMIGAAQACABAACQ8S5DAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/TextWithHighlights.vue":{"11":"b:5gQIBGMIGABQAKDpAECx/25DAAAA","20":[125,127],"29":"b:5gQIBGMIGABQAKDpAECx/25DAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/schemaPreview.store.ts":{"12":"b:78Qv13cMvgBYiLz7gfS5//97AAAA","22":"b:7wQsh3cAHAAYCKTrAPCw/25zAAAA","31":"b:AAAAAAAAEAAAAIDCAAAgikhBAAAA","50":"b:7wQsh3cAHAAYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettings.vue":{"135":"b:zsQrVGMMugAYiLj7geS5//9LAAAA","165":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","168":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","169":[42],"172":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","173":[42],"176":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","179":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","181":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","187":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","190":[117,121,122,123,124,130,131],"192":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","194":"b:zsQrVGMMugBYiLjzgeS5//9LAAAA","196":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","200":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","205":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","207":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","211":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","225":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","239":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","247":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","251":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","255":"b:SMQrUEMEmgBYgJiSgKSgQV8IAAAA","259":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","262":"b:SMQrUEMEmgBYgJiSgKSgQV8IAAAA","263":"b:QEADUEMECgAIgJgSgIQgQF8IAAAA","267":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","271":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","280":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","283":"b:zsQqVGMMuABYiCj7AeS5//9LAAAA","286":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","288":[126],"309":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","316":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","325":"b:TEQrQEMEEgAYiCABgeC4XDsCAAAA","492":[128],"500":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","503":"b:QkQjUGMEqgAYiDjQgeS5XvsIAAAA","509":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","519":"b:SAQqAEMEAAAYgAgBAACQTDIAAAAA","520":"b:QAQiAEMEAAAYgAgAAACQTDIAAAAA","528":"b:BgAIACIAEAAAAAABAAAQ0CwAAAAA","534":"b:QAABAEAECgAIgAAQgAAAABIAAAAA","558":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","583":[126],"600":"b:hgQAAAEACAAAAAAgAAAwxCMAAAAA","604":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","615":"b:ysQgEGEEuAAYiDj6AeS5/+9KAAAA","621":"b:SMQrUEMEmgBYgJiSgKSgQV8IAAAA","787":"b:zsQrVGMMugBYiLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettingsHeader.vue":{"22":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","40":[126]},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettingsHint.vue":{"13":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","16":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","68":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","72":[126],"77":[126]},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeSettingsTabs.vue":{"29":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","45":[96,112],"49":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","53":[30],"55":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","63":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","130":[126],"161":"b:zsQrVGMMugBYiLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/components/NodeWebhooks.vue":{"21":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","38":"b:AEQCAEEAkABAgAAAAAAAQRgAAAAA","45":"b:AEQCAEEAkABAAAAAAAAAQQgAAAAA","53":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","58":"b:AEQCAEEAmABYgAgCAAAAQR4AAAAA","70":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","124":"b:AEQCAEEAkABAgAAAAAAAQRgAAAAA","192":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","193":"b:BgQAAAEACAAAAAAAAAAwxCMAAAAA","200":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","218":"b:AEQCAEEAkABAAAAAAAAAQQgAAAAA","224":"b:AEQCAEEAkABAAAAAAAAAQQgAAAAA"},"packages/frontend/editor-ui/src/features/ndv/settings/composables/useNodeSettingsParameters.ts":{"56":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","67":"b:TEQrQEMEEgAYiCABgeC4XDsCAAAA","131":[129],"186":"b:3sQrVGNMuwBYyLj7ieS5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/shared/composables/useBinaryDataAccessTooltip.ts":{"9":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/shared/ndv.store.ts":{"41":"b://V/9/d//3//////////////AQAA","45":"b://V/9/d//3//////////////AQAA","46":"b://V/9/d//3//////////////AQAA","109":"b://V/9/d//3//////////////AQAA","113":"b:zsRrVGMsugNYqLj7geW5//9LAAAA","138":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","142":"b:zsRrVGMsugNYqLj7geW5//9LAAAA","149":"b:SARrAEMkAgMYoCARAAGhXD4AAAAA","153":"b:3sQrVGNkugIYyLj7ieS5//8LAAAA","155":[57],"157":[57],"159":"b:5gQIBGMIGAJQAKDpAECx/25DAAAA","161":"b:/sQrVGMM+gJYiLj7geS5//9LAAAA","163":"b:5gQIBGMIGAJQAKDpAECx/25DAAAA","165":"b:BgAIBAIIGAIQAKAJAECx/25DAAAA","185":"b:RgAAAAAACAIAAIACAAAwXT8AAAAA","187":"b:QgAAAAAACAIAAIACAAAgXT8AAAAA","189":"b:AAAAAAAgAAIAAAABAACgHD4AAAAA","191":[57],"193":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","206":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","214":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","231":"b:/8Vv8Pcd/gt4iLj/gf7/////AQAA","233":"b:2sUgUGEU+QMYiDj6AeS4/+9qAQAA","238":"b:zsQrVGNMuwJYiLj7ieS4//9LAAAA","247":"b:zsQrVEMMOgIYiLj7geS4//9LAAAA","251":[7,57,127,130],"255":"b:zsQrVGMMugJYiLj7geS4//9LAAAA","259":[57],"269":"b:zsQrVGMMugJYiLj7geS4//9LAAAA","273":"b:WsQgEGEE+AIYiDjaAeS4/+1KAAAA","277":"b:AAAAAAAACAIAAAAIAAAg4QQAAAAA","288":[57,117,121,122,123,124,130,131],"292":[57,117,121,122,123,124,130,131],"296":"b:CAQqAENEAAIQgCABAACBXD4AAAAA","300":[57],"318":[57],"328":[57],"332":[57],"336":[57],"340":[7,57,125,127,130],"345":"b:7sQrVGMMugJYiLj7geS5//9LAAAA","353":"b:7sQrVGMMugJYiLj7geS5//9LAAAA","361":[57],"366":[7,57,125,127,130],"371":[57],"376":"b:CAQqAEMgAAIQACAAAACgHD4AAAAA","380":[57],"393":"b:CAQqQENEAQIQwCgBCACRXD4AAAAA","470":"b://V/9/d//3//////////////AQAA","474":"b:AAAABQAEQAIAQAQAAIDAAYBgAQAA","498":"b:/8Vv9/d9/wt46Lz/iff/////AQAA","501":"b:/8Vv9/d9/wt46Lz/iff/////AQAA","525":"b:/8Vv9/d9/wtY6Lz/ief/////AQAA","528":"b:/8Vv9/d9/wtY6Lz/ief/////AQAA"},"packages/frontend/editor-ui/src/features/ndv/shared/ndv.utils.ts":{"41":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","57":"b:TEQrQEMEEgAYiCABgeC4XDsCAAAA","139":"b:TEQrQEMEEgAYiCABgeC4XDsCAAAA","268":"b:TEQrQEMEEgAYiCABgeC4XDoCAAAA","274":"b:TEQrQEMEEgAYiCABgeC4XDoCAAAA","296":[129,132],"297":[129,132],"300":[129],"314":"b:TEQrQEMEEgAYiCABgeC4XDsCAAAA","335":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","342":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","346":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","368":"b:TEQrQEMEEgAYiCABgeC4XDsCAAAA","374":[45,122,123,124,129,131,132,133],"453":"b:zsQrVGNMuwBYyLj7ieS5//9LAAAA","464":"b:zsQrVGMMugBYyLj7geS5//9LAAAA","628":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","740":"b:zsQrVGMMugBYyLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/features/ndv/shared/views/NodeDetailsViewV2.vue":{"69":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","84":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","101":"b:3sQrVOMM+gBYiLj7geS4//9LAAAA","103":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","107":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","116":[1,2,39,88,116,127,131],"118":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","132":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","137":"b:zsQrVEMMOgAYiLjzgeS4//9LAAAA","144":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","157":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","163":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","184":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","191":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","193":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","197":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","211":[10,32,38,39,120],"217":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","222":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","224":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","242":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","248":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","269":"b:zsQrVEMMOgAYiLj7geS4//9LAAAA","284":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","295":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","299":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","301":"b:WsQgEOEE+AAYiDjaAeS4/+1KAAAA","303":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","305":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","309":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","311":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","315":"b:zsQrVOMEugAYiLj7geS4//8LAAAA","317":"b:zsQrVMMMOgAYiLj7geS4//9LAAAA","319":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","321":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","323":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","327":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","339":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","350":"b:BgAAAMMAEAAAAAABAAAwPCgAAAAA","354":[39,51],"358":"b:SEABAIAAgAAAgBDRAOAo/rsAAAAA","364":[39,127,130],"379":[39,51,125,126,127,130],"383":[39],"388":[7,39,125,127,130],"403":[39],"418":[39],"422":[39,127],"427":"b:zsQrUMMEOgAYiLj7geS43v8JAAAA","433":"b:BgAIAKIAEAAAAAABAAAQ0CwAAAAA","434":[1,2,39,88,116,127,131],"442":[39],"446":"b:zsQrUMMEOgAYiLj7geS43v8JAAAA","455":[7,39,127],"461":[39,116,117,128,133],"465":[39,128],"469":"b:WsQgEOEE+AAYiDjaAeS4/+1KAAAA","509":"b:zsQrVMMMOgAYiLj7geS4//9LAAAA","518":[7,39,127,130,136],"523":"b:zsQrVMMMOgAYiLj7geS4//9LAAAA","531":"b:gAQIBOMIGABQACABAACw/S5DAAAA","535":[39,130],"549":[39],"553":"b:gAAAAIAACAAAAAAIACAQ4BcAAAAA","558":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","563":[39,125,127],"567":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","571":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","575":[39],"579":"b:AAAAAIAACAAAAAAIAAAg4QQAAAAA","585":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","603":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","613":"b:xoQiAEEECAAYgABCAOS4vX8IAAAA","651":[7,39,51,127,130,136],"655":[7,39,127,130],"659":"b:zsQrVMMMOgAYiLj7geS4//9LAAAA","660":"b:zsQrVMMMOgAYiLj7geS4//9LAAAA","665":[7,39,127,130],"666":[7,39,127,130],"671":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","676":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","679":"b:zsQrVOMMugBYiLj7geS4//9LAAAA","700":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","706":"b:QAAABYAETAAAAAQAAITAAYBwAQAA","780":"b:zsQrUEMEOgAYiLj7geS43v8JAAAA","788":[91,51,125,126,127,130],"806":"b:zsQrVGMMugBYiLj7geS4//9LAAAA","847":[127],"854":[117,120,127,130]},"packages/frontend/editor-ui/src/features/resolvers/composables/useDynamicCredentials.ts":{"13":"b:/9V/9/d//30e/v///+f/////AQAA","17":"b:/9V/9/d//30e/v///+f/////AQAA"},"packages/frontend/editor-ui/src/features/resolvers/composables/useNodePrivateCredential.ts":{"14":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","20":[57],"22":[57],"26":[57],"32":[57],"41":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","47":[57]},"packages/frontend/editor-ui/src/features/resolvers/composables/usePrivateCredentials.ts":{"17":"b:/9R/9/c//gF46v//gf/7///7AQAA"},"packages/frontend/editor-ui/src/features/settings/communityNodes/communityNodes.store.ts":{"12":"b:zsQrVGMMugBYiLj7g+S5//9LAAAA","22":[30,97],"30":[97],"36":[30,97],"37":[97],"46":[30,97],"55":[30,97],"60":[97],"74":[97],"79":[97],"84":[97],"88":[97],"103":[30]},"packages/frontend/editor-ui/src/features/settings/communityNodes/composables/useInstalledCommunityPackage.ts":{"10":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","16":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","17":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","25":[30],"32":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","34":[7,30,93,128],"41":"b:zsQrVGMMugBYiLj7geS5//9LAAAA","51":"b:zsQrVGMMugBYiLj7geS5//9LAAAA"},"packages/frontend/editor-ui/src/features/settings/environments.ee/environments.store.ts":{"13":"b://V/9/d//39+6v//rf//////AQAA","18":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","21":"b:ALAAAIAH4gYGAkMApAAAAIAAAQAA","22":[57,98],"29":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","30":[57,119,125,127,132],"35":[57,98,119,125,127,132],"43":[57,98],"46":[57],"56":[57,98],"59":[57],"64":[57,98],"69":[57,98],"74":[57,98],"79":"b:3sRrVGNsuwNY6Lj7ieW5//9LAAAA","83":[57]},"packages/frontend/editor-ui/src/features/settings/sso/sso.store.ts":{"19":"b://V/9/d//33/////////////AQAA","26":[72,73,42,66],"39":"b://V/9/d//33/////////////AQAA","91":[72,73,74,42,100,66,101],"154":[72,73,42,66,101],"175":[72,73,42,66]},"packages/frontend/editor-ui/src/features/settings/usage/usage.store.ts":{"38":"b://Vv9/cf/g1+iv//ofb/////AQAA","74":"b://Vv9/cf/g1+iv//ofb/////AQAA","79":"b://Vv9/cf/g1+iv//ofb/////AQAA"},"packages/frontend/editor-ui/src/features/settings/users/users.store.ts":{"36":"b://V/9/d//32f/////+f/////AQAA","37":"b://V/9/d//33/////////////AQAA","38":"b://V/9/d//32f/////+f/////AQAA","40":[21,42,53],"45":"b://V/9/d//33/////////////AQAA","62":"b://V/9/c//n0eiv//pef/////AQAA","64":"b://V/9/d//33/////////////AQAA","68":"b:AEQBIEEEAgAAiBAAgOQ4zHoIAAAA","72":"b://V/9/d//31+////////////AQAA","74":[21,42,53],"76":"b:QkQjcGMEogAYiDjQgua43/soAAAA","78":[74,100,66],"80":[74,100,66],"84":[6,67,93,106,51,128,129],"88":[58],"92":[93,106,51,128],"98":[6,67,79,28,92,109,120,128,129],"124":[101],"130":"b://V/9/d//32f/////+f/////AQAA","131":"b://V/9/d//32f/////+f/////AQAA","153":"b://V/9/d//32f/////+f/////AQAA","166":"b://V/9/d//32f/////+f/////AQAA","175":"b://V/9/d//32f/////+f/////AQAA","186":[42,66],"190":[101],"209":[73,42,66],"218":"b://V/9/d//33/////////////AQAA","222":"b://V/9/d//33/////////////AQAA","226":[42,66],"283":[100,66],"319":[101],"324":"b://V/9/c//n0eiv//pef/////AQAA","374":"b://Vv9/cf/g1+iv//ofb/////AQAA","381":[66],"385":[66],"393":[66],"400":[66],"417":[101],"435":[101],"444":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/setupPanel/setupPanel.store.ts":{"10":"b://V/9/d//33/////////////AQAA","14":"b:/8Vv93cd/gkYiLz/geb/////AQAA","20":"b:/8Vv93cd/gl4iLz/gf7/////AQAA","22":[4],"29":[4],"34":[4]},"packages/frontend/editor-ui/src/features/shared/banners/banners.store.ts":{"14":"b://V/9/d//33/////////////AQAA","32":"b://V/9/d//30f/////+f/////AQAA","96":"b://V/9/d//33/////////////AQAA","100":[59],"105":[42,66],"113":"b://V/9/d//30f/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/shared/banners/components/BannerStack.vue":{"38":"b://V/9/d//33/////////////AQAA","46":"b://V/9/d//33/////////////AQAA","51":[59],"55":[59],"56":[59],"59":"b://V/9/d//33/////////////AQAA","65":[59],"86":"b://V/9/d//33/////////////AQAA","89":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useChatHubCommands.ts":{"28":"b://V/9/d//33/////////////AQAA","40":[76,77,78,20],"47":[76,77,78,20],"81":[76,77,78,20],"87":[76,77,78,20],"98":[76,77,78,20],"101":[76,77,78,20],"128":[76,77,78,20],"150":[76,77,78,20],"151":[76,77,78,20],"154":[76,77,78,20],"175":[76,77,78,20],"176":[76,77,78,20],"179":[76,77,78,20],"199":[76,77,78,20],"200":[76,77,78,20],"203":[76,77,78,20]},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useCommandBar.ts":{"31":"b://V/9/d//33/////////////AQAA","45":"b://V/9/d//32f/////+f/////AQAA","52":"b://V/9/d//30f/////+f/////AQAA","188":"b://V/9/d//32f/////+f/////AQAA","222":"b://V/9/d//32f/////+f/////AQAA","244":[55],"253":"b://V/9/d//32f/////+f/////AQAA","259":[55],"266":"b:/8V/9/cd/nkY+Lz/geb/////AQAA","284":"b://V/9/d//32f/////+f/////AQAA","285":"b://V/9/d//32f/////+f/////AQAA","289":"b://V/9/d//32f/////+f/////AQAA","290":"b://V/9/d//32f/////+f/////AQAA","293":[55],"311":"b://V/9/d//32f/////+f/////AQAA","314":"b://V/9/d//30e/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useCredentialNavigationCommands.ts":{"22":"b://V/9/d//33/////////////AQAA","40":[55],"41":[55],"44":"b://V/9/d//32f/////+f/////AQAA","46":[55],"56":[55],"119":"b://V/9/d//32f/////+f/////AQAA","123":"b://V/9/d//32f/////+f/////AQAA","130":"b://V/9/d//32f/////+f/////AQAA","192":[55],"215":"b:ALBxB4B/o3UG90cA/gEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useDataTableNavigationCommands.ts":{"20":"b://V/9/d//33/////////////AQAA","44":"b://V/9/d//32f/////+f/////AQAA","50":[55],"58":[55],"124":"b://V/9/d//30f/////+f/////AQAA","128":"b://V/9/d//32f/////+f/////AQAA","135":"b://V/9/d//32f/////+f/////AQAA","186":[55]},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useExecutionCommands.ts":{"27":"b://V/9/d//33/////////////AQAA","38":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","40":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","46":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","51":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","73":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","79":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","209":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useExecutionNavigationCommands.ts":{"10":"b://V/9/d//33/////////////AQAA","28":"b://V/9/d//32f/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useGenericCommands.ts":{"31":"b://V/9/d//33/////////////AQAA","40":"b://V/9/d//32f/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useInstanceAiCommands.ts":{"20":"b://V/9/d//33/////////////AQAA","27":"b://V/9/d//32f/////+f/////AQAA","33":[24,60,61,25,62,26,82],"42":[24,60,61,25,62,26,82],"43":[24,60,61,25,62,26,82],"54":"b://V/9/d//32f/////+f/////AQAA","101":"b://V/9/d//30e/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useNodeCommands.ts":{"26":"b://V/9/d//33/////////////AQAA","43":"b:/8Vv8PcN/gkYiLj/geb/////AQAA","46":"b:/8Vv8PcN/gkYiLj/geb/////AQAA","48":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","52":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","56":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","62":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","91":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","96":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","99":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","107":"b:/8Qv8Hcc/gEYiLj/geb////7AQAA","136":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","137":"b:/8Qv8Hcc/gEYiLj/geb////7AQAA","140":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","148":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useProjectNavigationCommands.ts":{"16":"b://V/9/d//33/////////////AQAA","27":[55],"72":"b:ADAwAAAkogAAIUIAIAAAAAAAAAAA","78":"b://V/9/d//32f/////+f/////AQAA","84":"b://V/9/d//32f/////+f/////AQAA","125":[55]},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useRecentResources.ts":{"32":"b://V/9/d//33/////////////AQAA","43":"b://V/9/d//31+////////////AQAA","58":"b:/4UsgPcN/gEYiKBrgOb7/69/AQAA","59":"b:yoQIACEE+gEQgKBrAMDq749jAAAA","70":"b:zoQIAGMEmgAQgKBrAMC4/68DAAAA","73":"b:QoAAAAAEGAAAgCAKAICA448AAAAA","89":"b://V/9/d//32f/////+f/////AQAA","177":"b://V/9/d//30e/////+f/////AQAA","181":"b:4YAEgIUN/gAAACArgMBD44dzAAAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useWorkflowCommands.ts":{"51":"b://V/9/d//33/////////////AQAA","68":"b:/8Vv8PcN/gkYiLj/geb/////AQAA","71":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","73":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","77":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","81":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","84":"b:/8Qv8Hcc/gEYiLj/geb////7AQAA","85":"b:UIAhgEUECgEIgAAQgAAAABIAAAAA","97":"b:UIAhgEUECgEIgAAQgAAAABIAAAAA","117":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","302":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","304":"b:/8Qv8Hcc/gEYiLj/geb////7AQAA","305":[42,136,137],"306":[42,136,137],"312":[42,137],"322":[42,137],"344":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","385":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","422":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","476":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA","486":"b:/8Vv8Pcd/gkYiLj/geb/////AQAA"},"packages/frontend/editor-ui/src/features/shared/commandBar/composables/useWorkflowNavigationCommands.ts":{"29":"b://V/9/d//33/////////////AQAA","55":"b://V/9/d//32f/////+f/////AQAA","57":[55],"65":[55],"74":[55],"161":[55],"162":[55],"167":[55],"168":[55],"206":[55],"220":[55],"242":[55],"302":[55],"312":"b://V/9/d//32f/////+f/////AQAA","313":[55],"316":"b://V/9/d//32f/////+f/////AQAA","320":[55],"323":"b://V/9/d//32f/////+f/////AQAA","377":[55],"402":"b://V/9/d//30e/////+f/////AQAA"},"packages/frontend/editor-ui/src/features/shared/contextMenu/components/ContextMenu.vue":{"17":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","24":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","28":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","49":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","54":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","61":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","64":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","72":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","88":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","95":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","96":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA"},"packages/frontend/editor-ui/src/features/shared/contextMenu/composables/useContextMenu.ts":{"16":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","18":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","20":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","27":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","32":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","53":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","59":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA"},"packages/frontend/editor-ui/src/features/shared/contextMenu/composables/useContextMenuItems.ts":{"52":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","58":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","72":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","76":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","85":[57],"95":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","97":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","101":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","102":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","108":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","116":"b:QAAAAAAAEAIAAAAgAcAKAAgCAAAA","120":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","135":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","144":"b:QAAAAAAAEAIAAAAgAcAKAAgCAAAA","149":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","151":"b:QAAAAAAAEAIAAAAgAcAOAAgCAAAA","237":"b:QAAAAAAAEAIAAAAgAcAKAAgCAAAA","245":"b:QAAAAAAAEAIAAAAgAcAKAAgCAAAA","249":"b:QAAAAAAAEAIAAAAgAcAKAAgCAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/completions/js.snippets.ts":{"8":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/InlineExpressionTip.vue":{"21":"b:CAQqAEMgAAAQACAAAACgHD4AAAAA","33":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","37":[122,123,124,129,130,131],"39":"b:CAQqAEMgAAAQACAAAACgHD4AAAAA","57":"b:AAAAAAAgAAAAAAAAAAAAHD4AAAAA","83":"b:CAQqAEMgAAAQACAAAACgHDIAAAAA","88":"b:CAQqAEMgAAAQACAAAACgHD4AAAAA","96":"b:CAQqAEMgAAAQACAAAACgHD4AAAAA","97":"b:AAAAAAAgAAAAAAAAAAAAHD4AAAAA","106":"b:CAQqAEMgAAAQACAAAACgHD4AAAAA","110":"b:CAQqAEMgAAAQACAAAACgHD4AAAAA","114":[124,129,131],"120":[124,129,131]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/constants.ts":{"467":"b://V/9/d//33/////////////AQAA","471":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/datatype.completions.ts":{"75":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","163":[122,129,131],"179":[122,124,129,131],"181":[122,124,129,131],"187":[122,124,129],"188":[122,124,129],"205":[122,124,129,131],"208":[122,124,129,131],"210":[122,124,129,131],"211":[122,124,129,131],"215":[124],"240":[122,124,129,131],"261":[122,124,129,131],"285":[122,124,129],"292":[122,124,129],"315":[122,124,129],"324":[122,124,129],"330":[122,124,129],"342":[122,129],"348":[122,129],"353":[122,129],"362":[122,129],"368":[122,124,129],"380":[122,124,129],"381":[122,124,129],"382":[122,124,129],"392":[122,124,129,131],"414":[122,124,129],"422":[122,129,131],"453":[122,129,131],"472":[131],"476":[122,129],"477":[122,129],"527":[122,124,129,131],"545":[122,124,129,131],"553":[122,124,129,131],"561":[122,124,129,131],"562":[122,124,129,131],"573":[124],"574":[124],"578":[124],"583":[124],"633":[124],"700":[124],"731":[124],"763":[124],"776":[124],"784":[122,129],"985":[131],"1077":[131],"1078":[131],"1560":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/infoBoxRenderer.ts":{"6":[124],"18":[124],"31":[124],"64":[131],"76":[124,131],"117":[124],"166":[124],"170":[124],"177":[124],"189":[124],"217":[124],"238":"b://V/9/d//33/////////////AQAA","239":[124,131]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/utils.ts":{"27":[117,122,123,124,129,131],"83":[122,124,129,131],"119":[122,129,131],"122":[122,129,131],"131":[45,117,122,123,124,129,131,133],"134":[122,129],"143":[122,129],"169":[117,122,123,124,129,131,133],"183":[131],"207":[45,117,122,123,124,129,131,133],"232":"b:QgAAEAAgCAAIgIAyACAgHT8AAAAA","234":[45,117,122,123,124,129,131,133],"252":[117,122,123,124,129,131,133],"269":[122,129,131],"271":[122,129,131],"274":"b:BEAAAAAAAAAACAAAAeA4XCpAAAAA","298":"b:BEAAAAAAAAAACAAAAeA4XCpAAAAA","302":"b:BEAAAAAAAAAACAAAAeA4XCpAAAAA","303":"b:BEAAAAAAAAAACAAAAeA4XCpAAAAA","310":[45,117,122,123,124,129,131,133],"314":[45,117,122,123,124,129,131,133],"315":[45,117,122,123,124,129,131,133],"319":[45,117,122,123,124,129,131,133],"328":[45,117,122,123,124,129,131,133],"353":[122,124,129,131],"356":[122,124,129,131],"357":[122,124,129,131],"358":[122,124,129,131],"376":[117,122,123,124,129,131,133],"432":[122,124,129,131],"434":[122,124,129,131],"438":[122,124,129],"439":[122,124,129],"442":[122,129,131],"453":"b://V/9/d//33/////////////AQAA","464":[122,129],"481":[122,124,129,131]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/format.ts":{"10":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/keymap.ts":{"83":"b://V/9/d//33/////////////AQAA","261":"b:AAAAAAAAAAAAAAAAAAAgXDoAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/multiCursor.ts":{"4":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/resolvableHighlighter.ts":{"61":"b://V/9/d//33/////////////AQAA","62":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","65":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","75":[117,124],"81":[1,124,129,130,133],"101":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","102":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","115":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","116":[89,117,120,123,124,129]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/tooltips/InfoBoxTooltip.ts":{"27":"b://V/9/d//33/////////////AQAA","28":"b:QgAAEAAACAAIgIAyACAAXT8AAAAA","44":[122,124,131,133],"55":[124],"74":[122,124,131,133],"96":[122,123,124,131,133],"116":[122,123,124,131,133],"119":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","123":"b:QgAAEAAACAAIgIAyACAAXT8AAAAA","127":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","142":[122,124,131,133],"143":[122,123,124,131,133],"166":[122,124,131,133],"188":[124],"202":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","256":[122,124,131,133],"262":[124],"274":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","282":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","291":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","315":"b://V/9/d//33/////////////AQAA","319":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","322":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","352":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","360":[124,131],"378":[124],"381":[124],"423":"b:RkAAEAAgAAAIiAAQAeA4XDcAAAAA","435":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","443":"b:QgAAEAAgCAAIgAAyACAADQUAAAAA","449":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/facet.ts":{"9":"b://V/9/d//33/////////////AQAA"},"packages/frontend/editor-ui/src/features/shared/envFeatureFlag/useEnvFeatureFlag.ts":{"5":"b://V/9/d//33/////////////AQAA","8":"b://V/9/d//31+/v//////////AQAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/ActionItem.vue":{"19":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","35":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","40":[39],"42":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","45":[39],"75":[39],"88":[39],"94":[39],"99":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","111":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","117":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/CategoryItem.vue":{"12":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","16":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","20":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/NodeItem.vue":{"38":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","58":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","78":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","85":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","90":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","94":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","98":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","102":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","108":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","110":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","115":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","116":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","118":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","127":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","131":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","135":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","139":[39],"143":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","155":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","157":[39],"171":[39],"173":[39],"178":[39],"181":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","201":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","214":"b:QEADEMAEggAYiDAQgOQ4QEsIAAAA","215":[39],"217":"b:QEADEMAEggAYiDAQgOQ4QEsIAAAA","227":[30,39],"229":[39],"232":[30,39],"246":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","258":[39]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/SubcategoryItem.vue":{"13":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","15":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","16":"b:QkQjcOMEogAYiDjQgOa43/soAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/ViewItem.vue":{"13":"b:QkQhYMMEAgAYiAjQgOS43voIAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Modes/ActionsMode.vue":{"41":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","63":"b:AEQBAIEEAgAIgBAAgAAgQHoIAAAA","66":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","69":"b:AEQBIMEEAgAAiAAAgOQ4zHoIAAAA","76":"b:AEAAAIAAAAAIgBAAAAAAQHIAAAAA","86":"b:AEQBAIEEAgAIgBAAgAAgQHoIAAAA","92":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","93":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","98":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","100":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","102":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","104":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","109":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","118":"b:AEQBAIEEAgAIgBAAgAAgQHoIAAAA","127":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","130":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","137":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","139":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","151":[39],"157":[39],"161":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","165":[39],"169":[39],"171":[39],"176":"b:AEQBAMEEAgAIiBAAgOQ4THoIAAAA","189":"b:AEQBAMEEAgAIiBAAgOQ4THoIAAAA","212":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","215":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","223":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","234":[39],"238":[39],"258":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","262":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","263":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","280":"b:AEQBAIEEAgAIgBAAgAAgQHoIAAAA","293":[39,126,129,132,133],"299":[39,126,129,132,133],"311":[39],"320":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","335":[39,126,129,132],"339":[39],"341":[39]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Modes/NodesMode.vue":{"54":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","68":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","70":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","73":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","75":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","87":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","97":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","111":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","194":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA","253":[6,28,83,39],"273":[6,28,83,39],"289":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","297":[39],"301":[14,39,109],"309":[14,39,109],"317":[14,39,109],"323":[39],"326":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","335":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","345":[39],"346":[39]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/NodeCreator.vue":{"54":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","56":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","64":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","72":[39,109],"83":"b:UkUjdeME7gAYiDjQgOb43/t4AAAA","87":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","91":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","96":[39],"99":[39],"119":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","123":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","124":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","134":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","142":[14,39,129],"145":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","149":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","160":"b:UAEABYAETAAAAAAAAITAAYBwAAAA","165":[39,127]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/NodeCreatorShortcutCoachmark.vue":{"14":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","28":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","31":[39],"45":[39]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/OrderSwitcher.vue":{"11":"b:AEQBIMEEAgAIiBAAgOQ4zHoIAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/NodesListPanel.vue":{"41":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","51":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","53":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","55":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","57":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","59":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","75":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","80":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","82":[30,39],"86":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","93":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","105":"b:QkQjcOMEogAYiDjQgOa43/sIAAAA","125":"b:QEQBcMEEAgAIiBgAgOQ4zHsIAAAA","130":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","134":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","139":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","144":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","145":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","194":[29,39],"196":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","208":[14,39,111,115]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/SearchBar.vue":{"16":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","26":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","30":"b:QkQjcOMEogAYiDjQgOa43/sIAAAA","35":[39],"39":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","44":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","52":"b:QkQjcOMEogAYiDjQgOa43/soAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Renderers/CategorizedItemsRenderer.vue":{"28":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","38":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","39":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","41":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","45":[84,39],"49":[84,39],"62":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","68":[39],"74":[39],"83":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","84":[39],"92":[39],"97":[14,39,109],"103":[39],"106":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","122":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","126":[39],"150":"b:QkQDcMMEggAYiDgQgOa43fsIAAAA","151":[39,126,129,132,133]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Renderers/ItemsRenderer.vue":{"28":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","43":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","45":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","47":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","51":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","61":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","78":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","104":[39],"108":[39],"112":[39],"116":[39],"120":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","124":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","131":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","132":"b:QkQjcOMEogAYiDjQgOa43/sIAAAA","139":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","152":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","161":[6,83,39,128],"180":"b:QkQjcOMEogAYiDjQgOa43/soAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useActions.ts":{"65":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","72":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","76":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","77":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","97":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","98":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","103":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","154":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","170":"b:AEQBAEEEAgAIiBAAgOQ4THoIAAAA","173":"b:AEABAAAEAgAAiBAAgOQ4TFoIAAAA","188":"b:AEQBAEEEAgAIiBAAgOQ4THoIAAAA","217":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","243":"b:QkQjcGMEggAYiAjQgOa8X/soAAAA","251":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","253":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","256":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","269":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","278":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","282":[6,67,109],"286":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","290":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","298":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","306":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","338":"b:QkQjcGMEogAYiDjQgOa8X/soAAAA","374":"b:AEQBAEEEAgAIiBgAgOQ4THoIAAAA","379":"b:AEQBAEEEAgAIiBgAgOQ4THoIAAAA","389":"b:AEQBAEEEAgAIiBAAgOQ4THoIAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useActionsGeneration.ts":{"32":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","38":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","46":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","49":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","62":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","68":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","83":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","104":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","114":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","120":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","126":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","133":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","148":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","153":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","157":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","161":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","179":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","184":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","192":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","210":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","213":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","234":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","245":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","264":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","267":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","271":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","273":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","274":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","278":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","291":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","329":"b://V/9/d//3//////////////AQAA","330":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","348":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","351":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","362":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","392":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","399":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","421":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","422":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","427":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","433":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","444":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","445":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","449":"b:/8Vv9/cd/gsYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useGetNodeCreatorFilter.ts":{"9":"b://V/9/d//33/////////////AQAA","13":[6,67,28,128,129],"30":[6,67,28,128,129],"49":[6,28,128]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useKeyboardNavigation.ts":{"14":"b:/8Vv93cd/gkYiLz/geb/////AQAA","20":[14,109,129],"43":[14,109],"46":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","49":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","50":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","53":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","56":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","62":[14,109,129],"64":[14,109,129],"66":[14,109,129],"79":[1,14,109,111,115,129],"102":[14,109,129],"127":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","131":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","141":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","147":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","151":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","156":"b:/8Vv93cd/gkYiLz/geb/////AQAA","157":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","166":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","171":"b:QEQBcEEEAgAIiBgAgOQ4zHoIAAAA","172":"b:QEQBcEEEAgAIiBgAgOQ4zHoIAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useNodeCreatorShortcutCoachmark.ts":{"12":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","22":"b:UAEABwAETAAAAAAAAITAAYBwAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/composables/useViewStacks.ts":{"106":"b://V/9/d//33/////////////AQAA","113":"b:/8Vv93cd/gkYiLz/geb/////AQAA","122":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","154":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","161":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","174":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","178":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","182":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","185":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","189":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","193":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","197":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","198":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","204":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","222":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","223":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","236":[68,28],"251":[83],"253":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","257":[6,67,79,28,92,128,129],"258":[6,67,79,28,92,128,129],"269":[6,67,28,128,129],"270":[6,67,28,128],"284":[6,28,128],"292":[6,28,128],"293":[6,28,128],"296":[6,28,128],"310":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","315":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","327":[6,67,79,28,128,129],"368":[6,28,128],"400":[6,28,128],"415":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","416":"b:QkQjcGMEogAYiDjQgOa43/sIAAAA","432":[6,67,28,128,129],"451":[6,67,28,128,129],"481":[6,67,28,128,129],"497":[6,28,128],"504":[6,67,28,128,129],"518":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","569":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","591":[29],"598":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","600":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","604":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","613":"b:QkQjcGMEogAYiDjQgOa43/soAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/nodeCreator.store.ts":{"49":"b://V/9/d//33/////////////AQAA","51":"b:AkAAQAAEgAAAABAAAIAoCQMgAAAA","71":[6,67,28,128,129],"72":[6,67,28,128,129],"75":"b:/8Vv93cd/gkYiLz/geb/////AQAA","83":"b:/8Vv93cd/gkYiLz/geb/////AQAA","87":"b:/8Vv93cd/gl4iLz/gf7/////AQAA","91":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","95":[128,129],"116":[128,129],"141":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","180":"b:QEAAMAAAAAAIAAjAAGAAAiMAAAAA","269":"b:AkAAQAAEgAAAABAAAIAoCQAgAAAA","329":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","335":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","339":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","346":"b:QkQjcGMEogAYiDjQgOa43/soAAAA","366":"b:QAQjEEMEIAAYiABAAOa4XHsIAAAA","382":"b:QAQjEEMEIAAYiABAAOa4XHsIAAAA","422":[84],"426":"b:AEQBIEEEAgAIiBAAgOQ4zHoIAAAA","439":[6,28,83],"446":"b:QkQjcGMEogAYiDjQgOa4X/soAAAA","462":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/nodeCreator.utils.ts":{"53":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","74":[57,83],"80":[57,83],"84":[57,83],"96":[57,83],"107":"b:QEQBMEEEAgIIiBgQgOQ4zHsIAAAA","108":"b:QEQBMEEEAgIIiBgAgOQ4zHsIAAAA","120":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","125":"b:QkAhYCIEAgIAiAgAgOa4XZoIAAAA","132":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","139":[57],"150":"b:QkQjcGMEogIYiDjQgOa43/sIAAAA","153":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","154":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","156":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","170":[6,57,28,128],"175":[6,57,28,128],"189":[6,57,28,128],"204":[6,67,57,79,28,83,92,128,129],"209":[6,67,57,79,28,83,128,129],"213":[6,67,57,79,28,83,92,128,129],"214":[6,67,57,79,28,83,128,129],"215":[6,67,57,79,28,83,128,129],"224":[6,67,57,79,28,83,92,128,129],"228":[6,67,57,79,28,83,128,129],"239":[6,67,57,79,28,83,128,129],"240":[6,67,57,79,28,83,128,129],"256":[6,67,57,79,28,83,92,128,129],"258":[6,67,57,128,129],"272":[6,67,57,79,28,83,92,128,129],"280":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","288":"b:/8Qv93cc/gN4iLz/g/b////7AQAA","291":"b:/8Qv93c8/gN4yLz/gf77///7AQAA","293":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","321":[57],"339":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","341":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","348":[57],"354":[57],"359":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","384":[57],"385":[57],"389":"b:QkADcEMEogIYiDjQgOa43/sIAAAA","394":[57,30],"417":[57],"443":[57,29],"461":[57,129],"482":"b:QkQhYEMEAgIYiAjQgOS43voIAAAA","484":"b:QkQhYEMEAgIYiAjQgOS43voIAAAA","485":"b:QkQhYEMEAgIYiAjQgOS43voIAAAA","491":[57],"509":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","518":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","524":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","531":"b:QkQjcGMEogIYiDjQgOa43/soAAAA","539":[57,83],"540":[57,83]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/views/NodeCreation.vue":{"41":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","66":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","73":"b:QkQjcOMEIgAYiChQgOa43PsIAAAA","80":[39,114],"94":"b:QkQjcOMEogAYiDjQgOa43/soAAAA","101":"b:QkQjcOMEogAYiDjQgOa4X/soAAAA","106":[39,96,112],"124":[39],"128":[1,3,39],"145":[39],"148":[39],"164":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","168":"b:/8Vv8/cd/gkYiLz/geb/////AQAA","183":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","197":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","211":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","249":[1,2,3,4,8],"258":[1,2,3,4,8]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/views/viewsData.ts":{"122":[129],"139":[129],"141":[129],"145":[129],"148":[129],"174":[129],"197":[129],"250":[6,67,28,128,129],"253":[6,67,28,128,129],"263":[6,67,28,128,129],"389":"b:QkQjcGMEogAYiDjQgOa4XfsoAAAA","515":"b:QkQhYEMEAgAYiAjQgOS43voIAAAA","645":"b:QkQhYEMEAgAYiAjQgOS43voIAAAA"},"packages/frontend/editor-ui/src/features/shared/tags/tags.api.ts":{"8":"b://V/9/d//3//////////////AQAA","10":"b://V/9/d//38e/////+f/////AQAA","13":[57,96,135,138,143],"19":[57],"26":[57,138]},"packages/frontend/editor-ui/src/features/shared/tags/tags.store.ts":{"34":"b://V/9/d//3//////////////AQAA","39":"b://V/9/d//3//////////////AQAA","51":[57,39,138,55],"52":[57,138,55],"55":[57,39,138,55],"57":[57],"61":"b://V/9/d//38e/v///+f/////AQAA","62":[57,118,129,135,138,143,55,144],"70":"b:54Qsh5UM/gNoCKRrgdJT54f3AQAA","71":[57,96,135,138,143],"92":[57,138],"97":"b://V/9/d//38e/////+f/////AQAA","116":[57,96,135,138,143],"128":[57],"139":[57],"149":[57,138]},"packages/frontend/editor-ui/src/features/workflows/canvas/canvas.types.ts":{"25":"b://V/9/d//3//////////////AQAA","52":"b://V/9/d//3//////////////AQAA","147":[57,113],"151":[57,113],"195":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/canvas.utils.ts":{"37":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","51":"b:/8Qv93cc/gN4iLz/gfb7///7AQAA","60":"b:/8Qv11ccPgN4iLz/gfT7///7AQAA","61":"b:/8Qv93cc/gN4iLz/gfb7///7AQAA","63":"b:/8Qv11ccPgN4iLz/gfT7///7AQAA","64":"b:/8Qv93cc/gN4iLz/gfb7///7AQAA","80":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","97":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","122":[57],"130":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","135":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","137":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","143":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","145":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","146":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","203":[57,115,137],"235":"b:/8Qv93ccvgN4iLz/gf7////7AQAA","255":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","270":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","281":[57,94,95,109,113,115],"298":"b:XkQrUFMEKgIYiLjUgeS+3vuKAAAA","332":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","341":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","349":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","366":[57,95,113,114,136],"384":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","401":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","411":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","415":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","429":"b:XkAJABAh6kMAgNHUBfEO6ov6AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/Canvas.vue":{"209":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","211":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","215":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","218":"b:/8Vv9/cd/gt4iLz/gf79////AQAA","260":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","261":"b:7sQrdHMM+gNYiLj/gea////7AAAA","263":[57,109,110,111,115,53,56],"264":[57,109,110,111,115,53,56],"271":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","288":"b:AAAAAAAAYAMAAAAAAOAOQAACAQAA","294":"b:GgAAAAAAYAMAAAAAAOAuXDoCAQAA","314":[57],"329":"b:UEAAAAAA4AMAABDQAOAOAoF6AQAA","331":[57,109],"339":[57,109],"347":[57],"349":[57],"358":[57],"360":[57],"369":[57,137],"371":[57,137],"374":[57,109],"376":[57,109],"379":[57],"391":[57,113],"399":[57,113],"413":[57],"418":[57],"426":"b:EAAAAAAAYAMAAAAAAOAOAAB6AQAA","428":[57],"430":[57,109,53,56],"431":[57,109,53,56],"433":[57],"436":[57],"437":[57],"438":[57],"439":[57],"446":[57],"447":[57],"448":[57],"453":[57],"459":[57],"461":[57,111],"462":[57,111,115,139,140,141,142],"463":[57],"464":[57,111],"465":[57],"467":[57],"468":[57],"472":[57,114],"473":[57],"474":[57],"475":[57,144],"478":[57],"479":[57],"480":[57],"481":[57],"482":[57],"483":[57],"484":[57],"485":[57],"490":[57],"494":[57],"495":[57],"514":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","518":"b:AAAAAAAAIAMAAAAAAOAIAAB4AAAA","530":"b:/8UIdEEM+ANYALjvAeT/7y/7AAAA","531":"b:/8UIdEEM+ANYALjvAeT/7y/7AAAA","540":"b:78QINEEMeANYAKjvAeT77y/7AAAA","547":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","548":"b:7sQrUHMMOgMYiKj/gea//f97AAAA","553":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","560":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","561":"b:7sQrdHMM+gNYiLj/gea////7AAAA","563":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","566":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","567":[1,2,3,4,57,8],"575":"b:QEAAMAAAAAIIAAgAAGAAAiAAAAAA","579":[57],"583":[57],"587":[57,93,109,110,113,115,53],"597":[57,113],"601":[57],"612":[57,93,109,110,113,115,53],"613":[57,113],"614":[57,113],"615":[57,93,109,110,113,115,53],"616":[57,93,109,110,113,115,53],"617":[57,113],"621":[57,93,109,110,113,115,53],"625":[57,93,109,110,113,115,53],"629":[57,93,109,110,113,115,53],"634":[57],"638":[57],"642":[57,113],"661":[57,113],"662":[57,113],"675":[57,113],"679":[57,113],"705":[57,109,110,115],"711":"b:joQIBEEMeANYAKArAeC77w97AAAA","728":[57],"733":"b:oUAAAEAACAIAAAAgAOAHwAACAAAA","741":"b:joQIBAEMGAJYAKArAYCw7w9DAAAA","746":[57],"750":"b:bkQrcHMEugIYiLj0gea+3/uqAAAA","754":[57,109,110,111,115,53,56],"758":"b:7sQrdHMM+gNYiLj/gea////7AAAA","762":"b:bkQrcHMEugIYiLj0gea+3/uqAAAA","767":"b:bkQrcHMEugIYiLj0gea+3/uqAAAA","792":[57,106,109,51],"796":[57,90,109,51],"800":[57],"804":[6,57],"808":[6,57],"811":[57,17,38,110],"815":[57,17,38,110],"818":[57],"831":[57],"835":[57],"840":[57],"856":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","863":[57,110,113,137],"870":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","881":[57,109,113,115],"885":[57,94,95,109],"898":"b:AAAAAAAECAIAAADAASAKAIACAAAA","904":[57,94,95,96,109,113,115],"922":[57,42,94,95,96,109,113,115,51],"927":[57,42,94,95,96,109,113,115,51],"934":"b:38UIdEEM+ANYALivAeS/7y/7AAAA","938":"b:3sUIdEEM+AJYALirAeS/7y/7AAAA","946":"b:gQAABAAAEAIAAAAIACAADQAAAAAA","954":"b:EAAAAAAAYAMAAAAAAOAOAAB6AQAA","962":"b:EAAAAAAAYAMAAAAAAOAOAAB6AQAA","979":"b:78QINEEMeANYAKgrAeC/7y97AAAA","989":"b:oUAAAEAACAIAAAAgAOAHwAACAAAA","993":[57],"997":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1005":[57,111],"1009":[57,111,118],"1013":[57,111],"1017":[57,111],"1021":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1030":[57],"1034":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1040":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","1041":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","1049":[57],"1050":[57],"1064":[57,110,111,114,137],"1072":[57],"1076":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","1091":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","1140":[4,57,107],"1171":[57,109],"1175":[57,109],"1185":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1189":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1194":[57],"1202":[57],"1211":[57],"1212":[57],"1217":[57],"1221":[57],"1229":[57],"1248":"b:AIBAAAENoAIAACAAAMACxosCAAAA","1255":[57,69,70,108],"1263":[57,69,70,108],"1271":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1282":"b:QAAABQAETAIAAAQAAITAAYBwAQAA","1293":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1302":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1318":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1328":"b:oUAAAEAACAIAAAAgAOAHwAACAAAA","1332":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1335":[57],"1342":[57],"1369":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1412":[57,113],"1425":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1452":[57],"1459":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","1469":[57,42,94,95,96,109,113,115,51],"1474":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","1476":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","1480":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","1489":[57],"1493":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/WorkflowCanvas.vue":{"79":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","80":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","84":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","90":"b:QAAABQAETAAAAAQAAITAAYBwAQAA","94":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","99":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","102":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","107":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","108":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","109":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","110":[113],"111":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","115":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","116":[108],"123":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","124":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","125":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","128":"b:/8Qv93cc/gF4iLz/gfb7///7AQAA","144":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","159":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","167":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","175":[113],"176":[113],"177":[113],"179":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","185":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","188":[113],"189":[113],"190":[113],"191":[113],"197":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","205":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","221":[111,115,131,53,143],"229":[111,115,131,53,143],"235":[111,115,131,53,143],"286":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/background/CanvasBackground.vue":{"13":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasControlButtons.vue":{"10":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","36":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","38":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","40":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","42":[57,111],"46":[57,111,118],"50":[57,111],"54":"b:4QAAAAAAGAIAAAAgAeALwwSDAAAA","58":[57],"62":[57],"64":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","71":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","82":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","92":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","107":[57],"126":"b:gAAABwAACAIAAAQAAIhAgQUBAAAA","140":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","149":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","157":[57],"170":[57]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasRunWorkflowButton.vue":{"40":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","44":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","45":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","49":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","60":[4,115,120,52,131],"62":[4,115,120,52,131],"63":[4,115,120,52,131],"69":[4,115,120,52,131],"76":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","97":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","108":"b:SAQshFUAHAAQCKRAAMCA4w5zAAAA","109":"b:CAQshFUAHAAQCKRAAMCA4w5zAAAA","111":"b:38Qv53cc/gEQiLzPgeb7///7AQAA","118":[4,115,120,52,131],"136":[4,115,120,52,131]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasStopCurrentExecutionButton.vue":{"6":"b:7wQshXcAHAAYCKRpAPCQ/y5zAQAA","13":"b:7wQshXcAHAAYCKRpAPCQ/y5zAQAA","18":"b:7wQshXcAHAAYCKRpAPCQ/y5zAQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasStopWaitingForWebhookButton.vue":{"5":"b:4AQEAEEACAAIAAAgABAAAQgAAAAA","9":"b:4AQEAEEACAAIAAAgABAAAQgAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasArrowHeadMarker.vue":{"6":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasEdge.vue":{"36":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","44":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","46":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","47":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","53":"b:/4Qv11ccPgMYiKz7geT7//97AQAA","61":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","63":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","65":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","67":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","72":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","78":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","83":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","90":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","96":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","98":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","100":[57,94,95,109,113,115],"110":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","120":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","121":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","125":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","136":[57,94,95,109],"140":[57,109,113,115],"144":[57,42,94,95,96,109,113,115,51],"148":[57,42,94,95,96,109],"150":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","164":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/utils/getEdgeRenderData.ts":{"11":"b:/8Qv91ccPgN4iLz/gfz7///7AQAA","13":"b:/8Qv91ccPgN4iLz/gfz7///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/CanvasHandleRenderer.vue":{"15":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","43":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","47":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","53":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","57":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","63":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","69":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","77":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","87":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","89":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","113":"b:QEAAMAAAAAIIAAgAAGAAAiAAAAAA","142":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleMainInput.vue":{"14":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","22":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","26":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleMainOutput.vue":{"22":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","27":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","29":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","38":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","40":"b:xwAsh1cIHAIYCKRJAMCQ/y5zAAAA","49":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","51":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","53":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","58":"b:EEAGAEAImAJAAKjEAEBK4QyAAQAA","63":"b:xwAsh1cIHAIYCKRJAMCQ/y5zAAAA","70":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","75":"b:AEAAIAAAAAIAAAgAAOAAAiAAAAAA","79":[57,14,83,29,109,110,121,133],"83":[57,14,83,29,109,110,121,133],"85":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/parts/CanvasHandleDot.vue":{"4":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","13":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","14":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/parts/CanvasHandlePlus.vue":{"6":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","34":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","41":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","57":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","64":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","89":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","102":"b:QEAAMAAAAAIIAAgAAGAAAiAAAAAA","104":"b:/8Qv93cc/gMYiLz/ge77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/CanvasNode.vue":{"49":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","89":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","90":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","91":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","105":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","107":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","115":[57],"118":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","120":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","136":"b:joQIBAEMGAJYAKArAYC07w9DAAAA","146":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","150":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","154":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","161":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","165":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","172":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","249":"b:QEAAMAAAAAIIAAgAAGAAAiAAAAAA","253":[57,90,109,51],"257":"b:gQAABAAAEAIAAAAIACAADQAAAAAA","261":[57,106,109,51],"265":"b:joQIBAEMGAJYAKArAQCw7w9DAAAA","269":[57],"273":[57,111],"277":"b:QAAAAAAAEAIAAAAgAMAOAAgCAAAA","281":[57],"285":[57],"289":[57],"293":[57],"297":[57],"301":[57],"304":[57],"326":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","331":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","340":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","341":"b:7sQrdHMM+gNYiLj/gea////7AAAA","347":[6,57],"353":[57,17,38,110],"359":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","364":"b:XkUrdXMU7gM4iLzUgeb+3fv6AQAA","368":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","378":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","395":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/CanvasNodeRenderer.vue":{"10":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","12":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","33":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/CanvasNodeToolbar.vue":{"17":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","54":"b:wQAAEAAACAIIgAAYAAAAAAMAAAAA","57":"b:wQAAEAAACAIIgAAYAAAAAAMAAAAA","59":"b:/8Qv93cc/gMYiLz/geb7///7AQAA","66":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","73":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","82":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","86":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","88":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","93":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","101":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","105":"b:gQAABAAAEAIAAAAIACAADQAAAAAA","109":[57,106,109,51],"113":[57,90,109,51],"117":[57],"123":[57,111],"127":"b:gQAABAAAGAIAAAAMAKQADQACAAAA","131":"b:gAAABAAAGAIAAAAIAIQADQACAAAA","135":[57],"141":[57],"144":"b:/8Qv93cc/gN4iLz/gfb////7AQAA","154":"b:gQAAAAAAGAIAAAAMAKQADQAAAAAA","155":[57],"162":"b:/8Qv93cc/gMYiLz/gfb7///7AQAA","176":"b:/8Qv93cc/gMYiLz/geb7///7AQAA","189":"b:/8Qv93cc/gMYiLz/geb////7AQAA","213":[57],"224":"b:/8Qv93cc/gN4iLz/gfb////7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeAddNodes.vue":{"18":"b:TkRvcPMV6gsYiLjUgea83fusAQAA","26":"b:TkRvcPMV6gsYiLjUgea83fusAQAA","30":"b:TkRvcPMV6gsYiLjUgea83fusAQAA","35":"b:TkQrcHMUqgMYiLjUgea83fuoAQAA","40":[57],"44":[57],"48":"b:AkAAQAAEgAIAABAAAIAoCQAAAAAA","55":[57],"63":"b:TkRvcPMV6gsYiLjUgea83fusAQAA","71":[57],"83":[57]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeDefault.vue":{"23":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","55":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","56":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","57":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","60":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","65":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","70":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","79":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","80":[57],"82":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","107":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","113":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","126":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","133":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","146":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","155":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","180":"b:4YAEhwUc/gNgACQrANjD44dzAQAA","186":"b:/8Qv13cc/gN4iLz/gfz7///7AQAA","188":"b:/8Qv13cc/gN4iLz/gfz7///7AQAA","193":"b:QAAAAAAAEAIAAAAgAMAKAAgCAAAA","197":"b:joQIBAEMGAJYAKArAQCw7w9DAAAA","204":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeSettingsIcons.vue":{"12":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","13":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","19":[57],"28":[57,126],"36":[57],"45":[57],"53":[57],"62":[57],"72":[57],"81":[57]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeStatusIcons.vue":{"24":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","40":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","43":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","44":"b:/8Qv93cM/gN4iLz/gf77///7AQAA","49":"b:/8Qv93cM/gN4iLz/gf77///7AQAA","54":"b:/8Qv93cM/gN4iLz/gf77///7AQAA","57":"b:XsQjUEMUCgMYgJiagKSgQV+4AQAA","58":[57],"59":"b:/8Qv93cM/gN4iLz/gf77///7AQAA","63":"b:/8Qv13ccHgNYiLz7gPS5/3/7AQAA","69":[57],"70":[57],"78":[57],"82":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","91":[57],"92":[57],"104":[57],"106":"b:RgAgAAAACAIIAAAAAACAQQAwAAAA","116":[57],"118":"b:XMQjUEMUCgMYgJiagKSgQV+YAQAA","136":[57],"139":"b:AAAAAEAAEAIAAABBAAAQACoCAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeStatusMark.vue":{"5":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeTooltip.vue":{"11":"b:4AQEAEEACAIIAAAgAAAAAQAAAAAA","13":"b:4AQEAEEACAIIAAAgAAAAAQAAAAAA","14":"b:4AQEAEEACAIIAAAgAAAAAQAAAAAA","26":"b:4AQEAEEACAIIAAAgAAAAAQAAAAAA","28":"b:4AQEAEEACAIIAAAgAAAAAQAAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeTrigger.vue":{"33":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","34":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","45":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","53":[57],"54":[57],"58":[5,6,67,7,57,79,28,92,93,51,128],"63":[57],"64":[5,6,67,7,57,79,28,92,93,51,128],"67":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","68":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","70":[57],"78":[57],"86":[57,120],"89":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","94":[57,120],"116":[5,6,67,7,57,79,28,92,93,51,128]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvas.ts":{"4":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasLayout.ts":{"60":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","73":[4,57,107],"77":[4,57,107],"82":[57],"86":[4,57,107],"96":[4,57,107],"101":[4,57,107],"102":[4,57,107],"103":[4,57,107],"110":[4,57,107],"114":[4,57,107],"118":[4,57,107],"152":[4,57,107],"154":[4,57,107],"157":[4,57,107],"161":[4,57,107],"163":[4,57,107],"170":[4,57,107],"172":[4,57,107],"174":[4,57,107],"179":[4,57,107],"193":[57],"198":[4,57,107],"199":[4,57,107],"205":[4,57,107],"206":[4,57,107],"211":[4,57,107],"220":[4,57],"222":[4,57,107],"226":[4,57,107],"234":[57],"248":[57],"253":[57],"254":[57],"260":[57],"261":[57],"267":[4,57,107],"268":[4,57,107],"289":[4,57,107],"299":[4,57,107],"308":[4,57,107],"310":[4,57,107],"314":[4,57,107],"319":[57],"333":[57],"339":[57],"357":[4,57,107],"365":[57],"369":[57],"379":[57],"380":[57],"381":[57],"387":[4,57,107],"393":[4,57,107],"394":[4,57,107],"399":[4,57,107],"406":[4,57,107],"410":[4,57,107],"415":[57],"426":[57],"429":[57],"437":[57],"448":[4,57,107],"457":[4,57,107],"460":[57],"466":[4,57,107],"479":[57],"490":[57],"509":[4,57,107],"521":[4,57,107],"522":[57],"525":[57],"531":[57],"532":[57],"572":[4,57,107],"583":[4,57,107],"584":[57],"588":[57],"590":[57],"598":[57],"599":[57],"617":[4,57,107],"619":[4,57,107]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasMapping.groups.ts":{"43":[113],"51":[113],"68":[113],"90":[113],"97":[113],"115":[113],"121":[113],"169":[113],"184":[113],"214":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA","227":[113],"264":"b:/8Vv9/cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasMapping.ts":{"48":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","66":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","72":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","82":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","111":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","113":[57,113],"119":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","138":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","147":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","154":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","206":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","209":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","218":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","246":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","249":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","261":[57],"270":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","271":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA","283":"b:/8Qv11ccPgN4iLz/gfz7///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNode.ts":{"8":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","10":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","33":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","34":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","36":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","37":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","38":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","40":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","41":[57,87,95,114,120,136,143,144],"42":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","44":[57],"45":[57],"46":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","48":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","49":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","50":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","51":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","53":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","54":"b:7wQsh3cIHAIYCKRpAPCQ/y5zAAAA","55":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","57":"b:/8Qv93cc/gN4iLz/gf7////7AQAA","59":[57,87,95,114,120,136,143,144],"63":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupActions.ts":{"20":[57,113],"24":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","33":[57,113],"35":[57,113],"38":[57,113],"39":[57,113],"43":[57,113],"48":[57],"67":[57],"69":[57,113],"79":[57,113],"91":[57,113]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupDrag.ts":{"38":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","46":[57,113],"52":[57,113],"71":[57,113],"82":[57,113],"108":[57,113],"113":[57,93,109,110,113,115,53],"118":[57,93,109,110,113,115,53],"130":[57,93,109,110,113,115,53],"131":[57,93,109,110,113,115,53],"142":[57,93,109,110,113,115,53],"190":[57,113],"198":[57,93,109,110,113,115,53],"205":[57,93,109,110,113,115,53],"223":[57,93,109,110,113,115,53],"235":[57,93,109,110,113,115,53],"246":[57,113],"255":[57,93,109,110,113,115,53],"274":[57],"284":[57],"288":[57]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupLayout.ts":{"68":[57,113],"80":[57,113],"109":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","121":[57,113],"128":[57,113],"132":[57,113],"136":[57,113],"140":[57,113],"144":[57,113],"155":[57,113],"159":[57,113],"239":[57],"255":[57,113],"265":[57,113],"271":[57],"274":[57,113],"279":[57,113],"282":[57,113],"286":[57],"297":[57,113],"304":[57],"336":[57,113],"354":[57],"360":[57],"368":[57,113],"376":[57],"396":[57],"397":[57],"416":[57,113],"478":[57,113],"500":[57,113],"512":[57,113],"514":[57,113]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupOperationGuards.ts":{"59":"b://V/9/d//33/////////////AQAA","62":[113],"65":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","75":[113],"95":[113],"104":[113],"112":[113],"134":[113],"146":[113],"149":[113],"235":[113],"245":[113],"261":[113],"280":[113],"285":"b:XkQrUFMEKgAYiLjUgeS63vuKAAAA","333":[4,109,113,115]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupTelemetry.ts":{"16":"b://V/9/d//33/////////////AQAA","21":[113],"34":[113],"37":[113],"40":[113],"43":[113]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeGroupView.ts":{"40":"b:/8Vv9/cd/gsYiLz/geb/////AQAA","50":[57,113],"59":[57,113],"84":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","88":[57,93,109,110,113,115,53],"91":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","96":[57,113],"99":[57,113],"103":[57,113],"111":[57,113],"113":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","115":[57,113],"120":[57,113],"127":[57,113],"128":[57,113],"130":[57,113],"136":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","147":[57,113],"153":[57,113],"160":[57,113],"164":[57],"169":[57,113],"171":[57,113],"175":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","179":[57,113],"183":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","188":[57,113],"198":[57,113],"202":[57],"203":[57],"217":[57,113],"229":[57,113],"244":[57,93,109,110,113,115,53],"251":[57,113],"280":[57],"284":[57,113],"289":[57],"303":[57],"315":"b:RgQoABEISAJoCIBAAMISxABgAAAA","317":[57],"336":"b:/8Vv9/cd/gt4iLz/gfb/////AQAA","347":"b:QAAABQAETAIAAAQAAITAAYBwAQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeHandle.ts":{"11":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","14":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","15":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","16":"b:/8Qv93cc/gMYiLz/ge77///7AQAA","17":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","18":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","19":[0,6,67,7,57,28,91,51,128],"20":[57],"21":[57],"22":[57],"23":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasNodeHover.ts":{"10":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","17":"b:/8UIdEEM+ANYALjvAeT/7y/7AAAA","31":"b:78QINEEMeANYAKjvAeT77y/7AAAA","64":[57],"73":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","77":"b:QAAABQAETAIAAAQAAITAAYBwAQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useCanvasTraversal.ts":{"4":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","5":[57,109],"6":[57],"9":[57,109],"13":[57,109],"17":[57],"18":[57],"21":[57],"26":[57],"27":[57],"32":[57,137],"42":[57,137],"43":[57,137],"46":[57,109],"56":[57,109],"57":[57,109]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useViewportAutoAdjust.ts":{"7":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","21":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","27":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA","46":"b:QAAABQAETAIAAAQAAITAAYBwAQAA","51":"b:/8Vv9/cd/gt4iLz/gf7/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useZoomAdjustedValues.ts":{"8":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","17":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","39":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","40":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","60":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","61":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","76":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","77":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","92":"b:/8Qv93cc/gN4iLz/gf77///7AQAA","94":"b:/8Qv93cc/gN4iLz/gf77///7AQAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/composables/useIsInExperimentalNdv.ts":{"4":"b:3sRrVGNsuwFY6Lj7ieW5//9LAAAA","8":"b:AABhAAAkAwEAoAAAAQEBHD4AAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/experimentalNdv.store.ts":{"17":"b://V/9/d//33/////////////AQAA","19":"b:/8Vv93cd/gl4iLz/gf7/////AQAA","24":"b:/8Vv93dd/wl4iLz/ifb/////AQAA","54":"b:/8Vv9/cd/gl4iLz/gf7/////AQAA","62":[4,96,112],"140":"b:/8Vv93cd/gl4iLz/gf7/////AQAA","141":"b:/8Vv93cd/gl4iLz/gfb/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/readyToRun/composables/useEmptyStateDetection.ts":{"13":"b://V/9/c//n0eiv//pff/////AQAA","26":"b:ALAAAAAGoAQGAkMAIAAAAIAAAQAA","45":"b:ADAAAIAH4gQGAkMAoAAAAIAAAQAA"},"packages/frontend/editor-ui/src/features/workflows/readyToRun/stores/readyToRun.store.ts":{"22":"b://V/9/c//n0eiv//pff/////AQAA","59":"b://V/9/c//n0eiv//pff/////AQAA","66":"b://V/9/c//n0eiv//pff/////AQAA","74":"b://V/9/c//n0eiv//pff/////AQAA","90":"b://V/9/c//n0eiv//pff/////AQAA","91":"b://V/9/c//n0eiv//pff/////AQAA","110":"b:ADBhAIAn4gQGgkMApAEAAIAAAQAA","208":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","220":"b:ADAAAIAH4gQGAkMAoAAAAIAAAQAA","224":[44]},"packages/frontend/editor-ui/src/features/workflows/templates/components/SetupWorkflowCredentialsButton.vue":{"28":[39,44],"32":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","36":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","43":"b:X8Qv93cc/gEYiLzegeb//f/7AQAA","48":"b:X8Qv93cc/gEYiLzegeb//f/7AQAA","51":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","57":[39,44,56,144],"61":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","78":[39,44,56,144],"86":"b:QEADUMIECgEIgJiQgIQgQFuIAAAA","96":[39],"101":[39,44,56],"105":[39,44,56],"113":"b:UAEAB4AETAAAAAAAAITAAYBwAAAA","117":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","133":"b:/8Vv9/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/templates/templates.store.ts":{"48":[144],"54":"b://V/9/d//33/////////////AQAA","89":[144],"90":[144],"95":[56],"96":[56],"99":[56,144],"100":[56,144],"106":[56],"108":[144],"109":[144],"112":[144],"113":[144],"120":[144],"124":[144],"125":[144],"132":[144],"136":[144],"137":[144],"165":"b://V/9/c//n0eiv//pef/////AQAA","169":"b://V/9/c//n0eiv//pef/////AQAA","178":"b://V/9/c//n0eiv//pef/////AQAA","193":"b://V/9/c//n0eiv//pef/////AQAA","198":[129],"205":[144],"209":[56,144],"212":[56,144],"213":[56,144],"224":[56,144],"225":[56,144],"231":[144],"235":[144],"243":[144],"248":[144],"293":"b://V/9/d//31+////////////AQAA","298":[44,56,144],"304":[56,144],"320":[56],"338":[144],"354":[144],"369":[144],"374":[144],"420":[44,56,144],"428":[44,56,144],"436":[44,56,144]},"packages/frontend/editor-ui/src/features/workflows/templates/utils/typeGuards.ts":{"8":[57,56],"14":[57,56],"20":"b://V/9/d//3//////////////AQAA"},"packages/frontend/editor-ui/src/features/workflows/templates/utils/workflowSamples.ts":{"14":"b://V/9/d//3//////////////AQAA","22":"b://V/9/d//3//////////////AQAA","26":"b://V/9/d//3//////////////AQAA","43":[57],"54":[57],"94":[57],"100":[57],"103":[57]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryButton.vue":{"12":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","24":"b:VgQgANEECAEYCIBAAMa4yQ96AAAA","31":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","32":"b:XoUoAPMFuAEYiIBhAOa63b9+AQAA","42":"b:4YAkh8UM/gEIAKQrgMbz64dzAQAA","49":"b:/4Ush/cN/gEYiKRrgOb7/69/AQAA","52":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","55":"b:/8Vv9/cd/gkYiLz/geb/////AQAA","62":"b:/8Vv8/cd/gkYiLz/geb/////AQAA"},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/workflowHistory.store.ts":{"22":"b://V/9/d//33/////////////AQAA","28":[118],"30":[4,118],"34":[118],"38":[118],"44":"b:EAAAAAAIDAAAAAAAAIDAAQBwAAAA"},"packages/localhost-45789/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[10,73,16,84,106]},"packages/localhost-45789/assets/chunk-CC9Q-vWm.js":{"8":[10,73,16,84,106],"9":[10,73,16,84,106],"10":[10,73,16,84,106],"19":[10,73,16,84,106],"23":[10,73,16,84,106],"29":[10,73,16,84,106],"33":[10,73,16,84,106],"34":[10,73,16,84,106]},"packages/vite/source-map-js-shim.ts":{"1":"b://V/9/d//33/////////////AQAA"},"packages/@n8n/chat-hub/src/artifact.ts":{"3":[76,77,78,20],"19":[76,77,78]},"packages/@n8n/chat-hub/src/parser.ts":{"12":[76,77,78,20],"117":[76,77,78,20],"134":[76,77,78,20],"159":[76,77,78,20],"187":[76,77,78,20],"217":[76,77,78,20],"250":[76,77,78,20],"275":[76,77,78,20]},"packages/@n8n/chat/src/components/ChatFile.vue":{"28":[76],"33":[76]},"packages/@n8n/design-system/src/components/N8nAiModelSelectorDropdown/AiModelSelectorDropdown.vue":{"22":[76,77,78,20],"79":[76,77,78,20],"81":[76,77,78,20],"87":[77],"97":[76,77,78,20],"110":[76,77,78,20],"116":[76,77,78],"121":[76,77,78,20],"136":[76,77,78],"145":[77],"159":[77],"176":[77],"189":[77]},"packages/@n8n/design-system/src/components/N8nCallout/Callout.vue":{"9":"b:QABhFAAkwglK8AhSBCWg/X8IAAAA","33":"b:QABhFAAkwglK8AhSBCWg/X8IAAAA","42":"b:QAAAFAAkwAhK8AhSBCSgvU8IAAAA","46":"b:QAAAFAAkwAhK8AhSBCSgvU8IAAAA","55":"b:QABhFAAkwglK8AhSBCWg/X8IAAAA","64":"b:QABhFAAkwglK8AhSBCWg/X8IAAAA"},"packages/@n8n/design-system/src/components/N8nCard/Card.vue":{"9":"b:ADBhA4BnowQG8kcAKAEAAIAAAQAA","14":"b:ADBhA4BnowQG8kcAKAEAAIAAAQAA","19":"b:ADBhA4BnowQG8kcAKAEAAIAAAQAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/filled-square.svg":{"10":"b:HgEQBwAAAGAAcAQAAAAAAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nLogo/Logo.vue":{"8":"b:ACAQAAAGIAwEcwIAAAAAAAAAAAAA","24":"b:ACAQAAAGIAwEcwIAAAAAAAAAAAAA","30":"b:ACAQAAAGIAwEcwIAAAAAAAAAAAAA","42":"b:ACAQAAAGIAwEcwIAAAAAAAAAAAAA","57":"b:ACAQAAAGIAwEcwIAAAAAAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nLogo/logo-icon.svg":{"11":"b:ACAQAAAGIAwEcwIAAAAAAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nLogo/logo-text.svg":{"11":"b:ACAQAAAGIAwEcwIAAAAAAAAAAAAA"},"packages/@n8n/utils/src/retry.ts":{"46":[76,77,78,20]},"packages/@n8n/utils/src/string/truncate.ts":{"1":"b:ABBxAAAnqgAA8kMIBAEA4IQAAQAA","11":[4,76,77,78,20,115,120,52,131]},"packages/frontend/editor-ui/src/app/constants/localStorage.ts":{"22":[76,77,78,20],"24":[76,77,78,20],"30":[76,77,78,20]},"packages/frontend/editor-ui/src/app/layouts/ChatLayout.vue":{"8":[76,77,78,20],"10":[76,77,78,20]},"packages/frontend/editor-ui/src/app/utils/fileUtils.ts":{"5":[76],"6":[76]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/hasRole.ts":{"5":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/ChatView.vue":{"76":[76,77,78,20],"84":[76,77,78,20],"91":[76,77,78,20],"94":[76,77,78,20],"96":[76,77,78,20],"99":[76,77,78,20],"101":[76,77,78,20],"106":[76,77,78,20],"108":[76,77,78,20],"134":[76,77],"141":[76,77,78,20],"146":[76,77,78,20],"150":[76,77,78,20],"182":[76,77,78,20],"214":[76,77,78,20],"218":[76,77,78,20],"225":[76,77,78],"236":[78],"245":[76,77,78,20],"253":[76,77,78,20],"258":[76,77,78,20],"267":[76,77,78,20],"293":[76,77,78,20],"308":[76,77,78,20],"323":[76,77,78,20],"335":[76,77,78,20],"363":[76,77,78,20],"364":[76,77,78,20],"382":[76,77,78,20],"400":[76,77,78,20],"408":[76,77,78,20],"417":[76,77,78,20],"428":[76,77,78,20],"448":[76,77,78,20],"464":[76,77,78,20],"472":[76,77,78,20],"483":[76,77,78,20],"517":[77],"525":[77],"553":[77],"576":[76,77,78],"600":[76,77,78],"604":[77],"707":[76,77,78,20],"736":[76,77,78,20],"748":[76,77,78,20],"769":[77]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.api.ts":{"32":[76,77,78,20],"44":[76,77,78,20],"79":[77],"120":[77],"160":[76,77,78,20],"183":[76,77,78,20],"232":[76,77,78,20],"349":[76],"404":[76,77,78,20],"408":[78]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.types.ts":{"114":[76,77]},"packages/frontend/editor-ui/src/features/ai/chatHub/chat.utils.ts":{"25":[76,77,78,20,62],"46":[76,77,78,20],"64":[76,77,78,20],"71":[76,77],"82":[20],"110":[76,77,78,20],"122":[76,77,78,20],"158":[20],"196":[76,77,78,20],"200":[77],"215":[76,77,78,20],"227":[76,77,78,20],"280":[76,77,78,20],"331":[76,77,78,20],"335":[76,77,78,20],"341":[76,77,78,20],"352":[76,77,78],"361":[76,77,78],"381":[76,77,78,20],"412":[76,77,78],"442":[76,77,78,20],"459":[76],"467":[76],"487":[76,77,78,20],"491":[76,77,78,20],"505":[76,77,78,20],"515":[76,77,78,20],"608":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatAgentAvatar.vue":{"22":[76,77,78]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatConversationHeader.vue":{"47":[76,77,78,20],"65":[76,77,78,20],"67":[76,77,78,20],"85":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatGreetings.vue":{"22":[76,77,78,20],"38":[20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatMessage.vue":{"68":[76,77,78,20],"96":[76,77,78,20],"116":[76,77,78,20],"117":[76,77,78,20],"144":[76,77,78,20],"149":[76,77,78,20],"150":[76,77,78,20],"159":[76,77,78,20],"169":[76,77,78,20],"170":[76],"181":[77],"188":[76,77,78,20],"190":[76,77,78,20],"198":[76,77,78,20],"200":[77],"208":[77],"276":[77],"290":[77],"295":[76,77,78,20],"296":[76,77,78,20],"307":[76,77,78,20],"309":[77],"317":[76,77,78,20],"320":[76,77,78,20],"389":[77],"397":[77],"410":[76],"422":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatMessageActions.vue":{"13":[76,77,78,20],"31":[77],"32":[77],"35":[76,77,78,20],"37":[76,77,78,20],"52":[76,77,78,20],"53":[76,77,78,20],"55":[77],"59":[77],"65":[76,77,78,20],"126":[77],"129":[77]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatPrompt.vue":{"18":[76,77,78,20],"59":[76,77,78,20],"71":[76,77,78,20],"75":[76,77,78,20],"79":[76,77,78,20],"81":[76,77,78,20],"82":[76,77,78,20],"104":[76],"150":[76,77,78,20],"208":[76,77,78,20],"209":[76,77,78,20],"225":[76,77,78,20],"286":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatPromptCallouts.vue":{"19":[76,77,78,20],"35":[76,77],"45":[76,77],"62":[78],"72":[78],"81":[78]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatPromptFull.vue":{"10":[76,77,78,20],"55":[76],"71":[76,77,78,20],"75":[76,77,78,20],"87":[76,77,78,20],"103":[76,77,78,20],"112":[76,77,78,20],"125":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSessionMenuItem.vue":{"20":[76,77,78,20],"34":[76,77,78,20],"44":[76,77,78,20],"87":[76,77,78,20],"89":[76,77,78,20],"101":[76,77,78,20],"122":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSidebar.vue":{"15":[76,77,78,20],"45":[76,77,78,20],"55":[76,77,78,20],"56":[76,77,78,20],"65":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSidebarContent.vue":{"25":[76,77,78,20],"32":[76,77,78,20],"39":[76,77,78,20],"43":[76,77,78,20],"45":[76,77,78,20],"57":[76,77,78,20],"69":[76,77,78,20],"80":[76,77,78,20],"138":[76,77,78,20],"141":[76,77,78,20],"156":[76,77,78,20],"176":[76,77,78,20],"181":[76,77,78,20],"184":[76,77,78,20],"195":[76,77,78,20],"199":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatSidebarLink.vue":{"26":[76,77,78,20],"45":[76,77,78,20],"62":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatStarter.vue":{"36":[76,77,78,20],"38":[76,77,78],"42":[76,77,78],"46":[76,77,78],"47":[76,77,78],"49":[76,77,78],"59":[76,77,78,20],"67":[76,77,78],"80":[76,77,78],"97":[76,77,78],"111":[76,77,78],"133":[76,77,78],"148":[76,77,78],"159":[76,77,78]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatTypingIndicator.vue":{"2":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CopyButton.vue":{"12":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ModelSelector.vue":{"54":[76,77,78,20],"78":[76,77,78,20],"84":[76,77,78,20],"85":[76,77,78,20],"93":[76,77,78,20],"103":[76,77,78,20],"105":[76,77,78,20],"109":[77],"113":[77],"144":[77],"184":[76,77,78,20],"200":[76,77,78,20],"208":[77]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/SkeletonMenuItem.vue":{"2":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ToolsSelector.vue":{"32":[78],"34":[76,77,78,20],"36":[78],"39":[78],"41":[78],"45":[78],"50":[76,77,78,20],"53":[78],"62":[78],"104":[78],"108":[78],"116":[78],"153":[76,77,78,20],"166":[76,77,78,20],"175":[76,77,78,20],"197":[78],"204":[78],"207":[78]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatArtifacts.ts":{"6":[76,77,78,20],"12":[76,77,78,20],"13":[76,77,78,20],"21":[76,77,78,20],"24":[76,77,78,20],"31":[76,77,78,20],"81":[76,77,78,20],"82":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatCredentials.ts":{"18":[76,77,78,20],"38":[76,77,78,20],"43":[76,77,78,20],"47":[76,77,78,20],"49":[76,77,78,20],"72":[77],"81":[76,77,78,20],"83":[76,77,78,20],"100":[76,77,78,20],"102":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatHubMarkdownOptions.ts":{"25":[24,25,82,39],"40":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","56":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","75":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","85":[76,39],"104":[39],"116":[39],"117":[39],"138":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","139":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","141":[24,25,82,39],"144":[24,25,82,39],"156":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","161":[76,39],"179":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","183":[39],"190":[39],"199":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","206":"b:AAAQB4AAAHAAcAQAAAAAAAAAAAAA","215":[39],"226":[39],"227":[39],"228":[39],"229":[39],"230":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatInputFocus.ts":{"13":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatPushHandler.ts":{"31":[76,77,78,20],"42":[76,77,78,20],"50":[76,77,78,20],"62":[76,77,78,20],"93":[76,77],"118":[76,77,78,20],"133":[78,20],"148":[76,77,78,20],"155":[77],"162":[76,77,78,20],"179":[76,77,78,20],"211":[76,77,78,20],"220":[76,77,78,20],"222":[76,77,78,20],"268":[76]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useChatSession.ts":{"29":[76,77,78,20],"37":[76,77,78,20],"46":[76,77,78,20],"47":[76,77,78,20],"51":[76,77,78,20],"71":[76,77,78,20],"78":[76,77],"85":[76,77,78,20],"95":[76,77,78,20],"111":[76,77,78,20],"112":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useCustomAgent.ts":{"7":[76,77,78,20],"8":[76,77,78],"18":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useDynamicCredentialsStatus.ts":{"29":[76,77,78,20],"35":[76,77,78,20],"36":[76,77,78,20],"170":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/composables/useFileDrop.ts":{"3":[76,77,78,20]},"packages/frontend/editor-ui/src/features/ai/chatHub/model-selector.utils.ts":{"118":[76,77,78,20],"132":[76,77,78,20],"170":[20],"182":[20],"199":[76,77,78,20],"223":[76,77,78,20],"267":[76,77,78,20],"274":[76,77,78,20],"284":[76,77,78,20],"334":[76,77,78,20],"376":[76,77,78,20],"393":[76,77,78,20]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialIcon.vue":{"24":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA","26":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA","30":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA","38":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA","49":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA","55":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA","65":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA","75":"b:UABhUAAmAgEI8AAQAAEAABIAAAAA"},"packages/localhost-35389/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[76]},"packages/localhost-35389/assets/chunk-CC9Q-vWm.js":{"8":[76],"9":[76],"10":[76],"19":[76],"23":[76],"29":[76],"33":[76],"34":[76]},"packages/@n8n/design-system/src/components/N8nInputNumber/InputNumber.vue":{"15":"b:wgACAGAoGAFQAAhDCEQo3/8IAAAA","31":"b:wgACAGAoGAFQAAhDCEQo3/8IAAAA","32":"b:wgACAGAoGAFQAAhDCEQo3/8IAAAA"},"packages/@n8n/design-system/src/components/N8nMarkdown/Markdown.vue":{"37":[87,95,114,120,136,143,56,144],"82":[87,95,114,120,136,143,56,144],"89":[144],"110":[87,95,114,120,136,143,144],"114":[120],"123":[87,95,114,120,136,143,144],"152":[114,143,144],"185":[87,95,114,120,136,143,56,144],"242":[114],"260":[87,95,114,120,136,143,56,144],"278":[56,144]},"packages/@n8n/design-system/src/components/N8nMarkdown/youtube.ts":{"34":[87,95,114,120,136,143,56,144],"42":[87,114,120,136,143,144]},"packages/@n8n/design-system/src/components/N8nTags/Tags.vue":{"21":[55,56,144],"37":[55,56,144],"45":[55,144],"50":[55,56,144],"56":[55,56,144]},"packages/@n8n/utils/src/assert.ts":{"4":"b:TgFhAABkAwEIoAAQCAEAABIAAQAA"},"packages/frontend/editor-ui/src/app/components/Banner.vue":{"22":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","47":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","53":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","58":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","62":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","71":[45]},"packages/frontend/editor-ui/src/app/components/CopyInput.vue":{"37":[120],"54":[79,22,38,65,120,132,56]},"packages/frontend/editor-ui/src/app/components/EnterpriseEdition.ee.vue":{"17":"b:QABhQAAuggEIoAAQgAMAABIAAAAA","18":"b:QABhQAAuggEIoAAQgAMAABIAAAAA"},"packages/frontend/editor-ui/src/app/components/GoBackButton.vue":{"11":[56]},"packages/frontend/editor-ui/src/app/components/IntersectionObserver.vue":{"6":[39,96,135,138,53,54,143,56,144],"26":[39,138,54],"32":[39,96,135,138,53,54,143,56,144],"43":[39,96,135,138,143],"44":[39,96,135,138,143],"54":[39,96,135,138,143],"60":[39,138],"64":[39,96,135,138,53,54,143,56,144]},"packages/frontend/editor-ui/src/app/components/Modal.vue":{"59":"b:QgBhQIB+wwEM4AMQrgcIABKOAAAA","81":"b:QgBhQAB+wwEM4AMQrgcIABKOAAAA","90":"b:QgBhAAAuwwEM4AMQJgcIABKOAAAA","97":[16,79,80,45,104,49],"102":"b:QgBhAAB+wwEM4AMQLgcIABKOAAAA","109":[16,79,80,45,104,49,115],"113":"b:QABhAIAswwEM4AAQJgcIABKOAAAA","125":"b:AAAhAAAkQwEA4AAABAEAABCAAAAA","129":"b:QgBhQIB+wwEM4AMQrgcIABKOAAAA","162":"b:QgBhQIB+wwEM4AMQrgcIABKOAAAA","164":"b:QgBhQAB2wwEI4AMQCAUAABIIAAAA","178":[41,42,115]},"packages/frontend/editor-ui/src/app/components/NodeList.vue":{"19":[56,144],"23":[144],"27":[56,144],"31":[56,144],"36":[56,144],"42":[56,144]},"packages/frontend/editor-ui/src/app/components/SaveButton.vue":{"12":"b:QABhQABkAwEIoAAQCAEAABIAAAAA","36":"b:QABhQABkAwEIoAAQCAEAABIAAAAA","45":"b:QABhQABkAwEIoAAQCAEAABIAAAAA","73":"b:QAAhAABkAwEIoAAQCAEAAAIAAAAA"},"packages/frontend/editor-ui/src/app/components/TimeAgo.vue":{"20":"b:ABBhAIAnogEAgkMAAAEAAIAAAQAA","21":"b:ABBhAIAnogEAgkMAAAEAAIAAAQAA","31":"b:ABBhAIAnogEAgkMAAAEAAIAAAQAA","37":"b:ABBhAIAnogEAgkMAAAEAAIAAAQAA","41":"b:ABBhAIAnogEAgkMAAAEAAIAAAQAA"},"packages/frontend/editor-ui/src/app/composables/useMessage.ts":{"14":[48,119,132,135,56],"48":"b:AAAAAAAAwQECgAMABASAAZAAAAAA","63":"b:AAAAAAAAwQECgAMABASAAZAAAAAA","110":[40,111]},"packages/frontend/editor-ui/src/app/layouts/DefaultLayout.vue":{"8":"b:ALBxAIAn4gUGgkMApAFAAIAAAQAA","10":"b:ALBxAIAn4gUGgkMApAFAAIAAAQAA"},"packages/frontend/editor-ui/src/app/utils/formatters/listFormatter.ts":{"15":[44,56]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialConfig.vue":{"85":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","117":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","138":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","141":[79,22,132,56],"146":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","147":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","158":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","188":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","193":[79,22,132,56],"201":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","210":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","219":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","223":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","225":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","227":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","242":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","244":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","248":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","255":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","266":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","275":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","277":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","282":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","286":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","290":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","303":[79],"350":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","402":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","404":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","473":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","519":[79,22,132],"520":[22,132],"524":"b:QAAhQAAkAgEIoAAQAAEAAAIAAAAA","531":[56],"624":"b:QABhQAAEAgEIoAAQAAEAABIAAAAA","626":"b:QABhQAAEAgEIoAAQAAEAABIAAAAA","628":"b:QABhQAAEAgEIoAAQAAEAABIAAAAA"},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialEdit.vue":{"88":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","90":[79,132,56],"95":[79,132,56],"172":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","174":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","184":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","190":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","191":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","192":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","193":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","194":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","195":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","241":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","248":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","253":"b:QAAhAAAkAgEIoAAQAAEAAAIAAAAA","258":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","263":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","285":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","295":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","302":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","309":[79,21,104,49],"311":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","381":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","399":"b:QAAhAAAkAgEIoAAQAAEAABIAAAAA","454":[21,104,49],"469":[104,49],"478":[21],"483":[79],"491":[79],"498":[79],"561":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","565":[6,67,16,79,42,92,129,56],"569":[16,79,21,45,104,49,56],"575":"b:QAABAAAEAgEIoAAQAAEAAAIAAAAA","576":"b:QAABAAAEAgEIoAAQAAEAAAIAAAAA","591":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","679":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","745":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","778":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","801":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","851":[79,21,104,49],"906":[79],"976":[22,132,56],"1066":[22,132],"1072":[22,132],"1079":[22,132],"1178":[79],"1237":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","1251":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","1286":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","1321":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","1325":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","1329":[21,104,49]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialInputs.vue":{"21":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","25":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","29":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","30":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","39":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","41":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","47":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA"},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialModeSelector.vue":{"27":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","46":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","47":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","52":[6,67,16,79,30,42,92,129,132],"53":[6,67,16,79,30,42,92,129,132],"60":"b:QABhQAAkAgEIoAAQAAEAAAAAAAAA","61":"b:QABhQAAkAgEIoAAQAAEAAAAAAAAA","79":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","90":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","102":[16,79,42,129,132],"124":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","146":[16,79,42,129,132],"168":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","169":[16,79,42,129,132],"170":[16,79,42,129,132],"173":[16,79,42,129,132],"180":[16,79,42,129,132],"181":[16,79,42,129,132],"188":[79],"191":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","198":[16,79,42,129,132],"208":[16,79,42,129,132],"210":[16,79,42,129,132]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialPicker/CredentialPicker.vue":{"49":[44,56],"62":[44,56],"63":[56],"71":[44,56],"100":[44,56],"105":[44,56],"114":[56],"171":[56],"200":[56],"210":[44,56],"211":[44,56],"238":[56]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialPicker/CredentialsDropdown.vue":{"40":[56],"95":[56],"100":[56],"101":[56],"106":[56]},"packages/frontend/editor-ui/src/features/credentials/composables/useCredentialForm.ts":{"64":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","90":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","95":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","105":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","117":[6,67,30,92],"125":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","134":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","149":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","153":"b:QAAhAAAEAgEIoAAQAAEAAAIAAAAA","158":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","168":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","173":[6,67,16,79,30,42,92,129,132],"178":[22,132],"182":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","195":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","201":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","205":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","215":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","219":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","226":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","230":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","256":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","259":"b:QAAhAAAkAgEIoAAQAAEAAAIAAAAA","265":"b:QAAhAAAEAgEIoAAQAAEAAAIAAAAA","266":"b:QAAhAAAEAgEIoAAQAAEAAAIAAAAA","273":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","282":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","292":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","306":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","327":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","336":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","337":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","344":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","360":[79],"385":[79,21],"387":[79,21],"393":[79,21],"425":[79,21],"441":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","464":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","491":"b:QAABAAAEAgEIoAAQAAEAAAIAAAAA","503":[79,21]},"packages/frontend/editor-ui/src/features/credentials/quickConnect/components/QuickConnectButton.vue":{"9":"b:QAAhUAAkAgEIoAAQAAEAAAIAAAAA","35":"b:QAAhUAAkAgEIoAAQAAEAAAIAAAAA","44":"b:QAAhUAAkAgEIoAAQAAEAAAIAAAAA","49":"b:QAAhUAAkAgEIoAAQAAEAAAIAAAAA","64":"b:QAAhUAAkAgEIoAAQAAEAAAIAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputExpanded.vue":{"24":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","61":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","92":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","114":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","122":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","129":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","133":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","142":[45],"146":"b:QABhAAAkAgEIoAAQAAEAABIAAAAA","169":[45],"171":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","184":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA","194":"b:QABhQAAkAgEIoAAQAAEAABIAAAAA"},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsContainer.vue":{"20":[39,96,135,138,53,54,143,56,144],"37":[39,96,135,138,53,54,143,56,144],"41":[39,96,135,138,53,54,143,56,144],"42":[39,96,135,138,143],"48":[39,96,135,138,143],"55":[39,96,135,138,143],"63":[39,96,135,138,143],"81":[39,96,135,138,53,54,143,56,144],"87":[39,96,135,138,53,54,143,56,144],"95":[39,96,135,138,143],"101":[39,138],"112":[39,96,135,138,53,54,143,56,144],"117":[39,138,54],"120":[39,96,135,138,53,54,143,56,144],"131":[39,96,135,138,53,54,143,56,144],"134":[39,96,135,138,143],"137":[39,138],"152":[39,96,135,138,143]},"packages/frontend/editor-ui/src/features/shared/tags/components/WorkflowTagsContainer.vue":{"16":[39,96,135,138,53,54,143,56,144],"22":[39,96,135,138,53,54,143,56,144],"24":[39,138],"26":[39,96,135,138,53,54,143,56,144]},"packages/frontend/editor-ui/src/features/workflows/templates/components/AppsRequiringCredsNotice.vue":{"10":[44,56],"17":[44,56],"24":[44,56],"27":[44,56],"33":[44,56],"38":[44,56]},"packages/frontend/editor-ui/src/features/workflows/templates/components/IconSuccess.vue":{"2":[44,56]},"packages/frontend/editor-ui/src/features/workflows/templates/components/SetupTemplateFormStep.vue":{"42":[44,56],"44":[44,56],"48":[44,56],"52":[44,56],"53":[44,56],"60":[44,56],"71":[56],"85":[44,56],"98":[44,56]},"packages/frontend/editor-ui/src/features/workflows/templates/components/SetupWorkflowCredentialsModal.vue":{"13":[44,56],"29":[44,56],"46":[44,56],"52":[56],"61":[44,56],"65":[44,56],"67":[44,56],"71":[44,56],"83":[44,56],"90":[56],"98":[44,56],"105":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateCard.vue":{"12":[56,144],"37":[56],"41":[144],"43":[56,144],"65":[56,144],"71":[56,144],"75":[56,144]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateDetails.vue":{"21":[56],"32":[56],"34":[56],"49":[56],"59":[56],"62":[56],"79":[56],"86":[56],"89":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateList.vue":{"38":[56,144],"47":[56,144],"71":[144],"74":[56],"83":[56,144],"90":[56,144],"97":[144],"98":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/composables/useCredentialSetupState.ts":{"29":[44,56],"34":[44,56],"38":[44,56],"43":[44,56],"77":[44,56],"103":[44,56],"115":[44,56],"123":[44,56],"126":[44,56],"132":[44,56],"136":[44,56],"140":[44,56],"144":[56],"163":[44,56],"171":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/composables/useSetupWorkflowCredentialsModalState.ts":{"9":[44,56],"15":[44,56],"34":[44,56],"40":[56],"52":[56],"66":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/setupTemplate.store.ts":{"39":[56],"56":[56],"60":[56],"80":[56],"98":[56],"115":[56],"128":[56],"149":[56],"176":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/utils/templateActions.ts":{"30":[56],"72":[56],"100":[144],"128":[56,144],"132":[56,144],"137":[56,144]},"packages/frontend/editor-ui/src/features/workflows/templates/utils/templateTransforms.ts":{"38":[44,56],"47":[44,56],"55":[56],"73":[56],"99":[56],"122":[56],"127":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/views/SetupWorkflowFromTemplateView.vue":{"22":[56],"25":[56],"26":[56],"28":[56],"49":[56],"57":[56],"79":[56],"89":[56],"109":[56],"135":[56],"143":[56],"151":[56]},"packages/frontend/editor-ui/src/features/workflows/templates/views/TemplatesCollectionView.vue":{"32":[56],"37":[56],"39":[56],"44":[56],"45":[56],"48":[56],"49":[56],"64":[56],"87":[56],"88":[56],"98":[56],"117":[56],"121":[56],"124":[56]},"packages/localhost-33037/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[56]},"packages/localhost-33037/assets/chunk-CC9Q-vWm.js":{"8":[56],"9":[56],"10":[56],"19":[56],"23":[56],"29":[56],"33":[56],"34":[56]},"packages/@n8n/backend-network/src/http/axios/legacy.ts":{"33":[3,19,21,150,33,119,52,129],"53":[3,19,21,150,33,119,52,129],"74":[3,19,21,150,33,119,52,129],"139":[3,19,21,150,33,119,52,129],"188":[3,19,21,150,33,119,52,129],"208":[3,19,21,150,33,119,52,129],"212":[3,19,21,150,33,119,52,129],"221":[3,19,21,150,33,119,52,129],"251":[3,19,21,150,33,119,52,129],"262":[3,19,21,150,33,119,52,129],"306":[3,19,21,150,33,119,52,129],"314":[3,19,21,150,33,119,52,129],"327":[3,19,21,150,33,119,52,129]},"packages/@n8n/backend-network/src/http/binary-buffer.ts":{"16":[0,3,19,76,150,33,36,119],"20":[0,3,19,76,150,33,36,119],"25":[0,3,19,76,150,33,36,119],"29":[0,3,19,76,150,33,36,119],"32":[0,3,19,76,150,33,36,119],"34":[0,3,19,76,150,33,36,119],"42":[0,3,19,76,150,33,36,119],"46":[0,3,19,76,150,33,36,119],"47":[0,3,19,76,150,33,36,119],"48":[0,3,19,76,150,33,36,119],"58":[0,3,19,76,150,33,36,119],"59":[0,3,19,76,150,33,36,119],"61":[0,3,19,76,150,33,36,119],"81":[0,3,19,76,150,33,36,119]},"packages/@n8n/backend-network/src/http/binary-string.ts":{"12":[3,19,150,33,119]},"packages/@n8n/backend-network/src/http/legacy-request.ts":{"42":[3,19,21,150,33,119,52,129]},"packages/cli/src/chat/chat-service.ts":{"44":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","47":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","51":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","63":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","69":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","74":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","121":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","123":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","146":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","176":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","181":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","190":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","191":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","237":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","238":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","266":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","272":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","298":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","300":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","307":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","313":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","318":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","328":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","335":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","363":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA","379":"b:y/E6RUL+LGk2ckCAAAAAAAAAAAAA"},"packages/cli/src/manual-execution.service.ts":{"27":"b:zwIshCZIHAAQAAQBACAA0AQAAAAA","29":"b:zwIshCZIHAAQAAQBACAA0AQAAAAA","49":"b:zwIshCZIHAAQAAQBACAA0AQAAAAA","61":"b:zwIshCZIHAAQAAQBACAA0AQAAAAA"},"packages/cli/src/modules/instance-registry/instance-registry.service.ts":{"29":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","37":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","52":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","72":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","76":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","80":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","84":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","88":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","92":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","96":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","109":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","113":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","114":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","118":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","122":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","123":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","133":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA"},"packages/cli/src/modules/instance-registry/storage/memory-storage.ts":{"9":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","16":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","20":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","24":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","30":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","34":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","41":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","45":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","49":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA","53":"b:y9E6R8K/Lmkm8mOAEKVAAgAAAAAA"},"packages/cli/src/task-runners/task-broker/task-broker-ws-server.ts":{"21":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","37":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","46":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","50":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","57":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","74":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","83":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","87":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","91":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","95":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","101":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","146":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","158":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","177":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","181":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","186":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA","192":"b:z9O6RUq+LGkmckCAEMAQgABAIAEA"},"packages/core/src/execution-engine/node-execution-context/trigger-context.ts":{"20":"b:zwIshSZIDAAQAAABACQAAAAAEAEB","24":"b:zwIshSZIDAAQAAABACQAAAAAEAEB","28":"b:zwIshSZIDAAQAAABACQAAAAAEAEB","35":"b:zwIshSZIDAAQAAABACQAAAAAEAEB","57":"b:zwIshSZIDAAQAAABACQAAAAAEAEB","61":"b:zwIshSZIDAAQAAABACQAAAAAEAEB"},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/legacy-request-adapter.ts":{"15":[3,19,21,150,33,119,52,129],"32":[3,19,21,150,33,119,52,129]},"packages/core/src/execution-engine/node-execution-context/utils/return-json-array.ts":{"8":"b:7wIshSZIHAAAAAABACAAQAAAAAAA","15":"b:7wIshSZIHAAAAAABACAAQAAAAAAA"},"packages/core/src/execution-engine/node-execution-context/utils/scheduling-helper-functions.ts":{"8":"b:zwIshSZITAAQAAABACQAAAAIEAEA","15":"b:zwIshSZITAAQAAABACQAAAAIEAEA"},"packages/core/src/execution-engine/triggers-and-pollers.ts":{"26":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","51":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","55":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","61":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","65":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","71":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","76":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","81":"b:zwIshSZIHAAQAAABACQAQAAAEAEA","95":"b:zwIshSZIHAAQAAABACQAQAAAEAEA"},"packages/core/src/node-execute-functions.ts":{"17":"b:zwIshSZIHAAQAAABACAAQAAAAAAA","31":"b:zwIshSZIHAAQAAABACAAQAAAAAAA"},"packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts":{"31":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","40":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","44":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","45":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","48":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","54":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","67":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","94":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","129":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","131":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","142":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","238":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","243":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","248":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","255":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","281":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","296":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","298":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","300":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","312":"b:CIAoAEIAAAAAgACAAACAAAEASAAA"},"packages/nodes-base/nodes/HttpRequest/HttpRequest.node.ts":{"9":[3,15,19,79,21,147,33,38,95,128]},"packages/nodes-base/nodes/HttpRequest/V1/HttpRequestV1.node.ts":{"42":[3,15,19,79,21,147,33,38,95,128],"616":[3,15,19,79,21,147,33,38,95,128],"812":[3,15,19,79,21,147,33,38,95,128],"889":[3,15,19,79,21,147,33,38,95,128],"1003":[3,15,19,79,21,147,33,38,95,128],"1010":[3,15,19,79,21,147,33,38,95,128],"1015":[3,15,19,79,21,147,33,38,95,128],"1159":[3,15,19,79,21,147,33,38,95,128]},"packages/nodes-base/nodes/HttpRequest/V2/HttpRequestV2.node.ts":{"44":[3,15,19,79,21,147,33,38,95,128],"629":[3,15,19,79,21,147,33,38,95,128],"874":[3,15,19,79,21,147,33,38,95,128],"951":[3,15,19,79,21,147,33,38,95,128],"1068":[3,15,19,79,21,147,33,38,95,128],"1074":[3,15,19,79,21,147,33,38,95,128],"1079":[3,15,19,79,21,147,33,38,95,128],"1092":[3,15,19,79,21,147,33,38,95,128],"1235":[3,15,19,79,21,147,33,38,95,128]},"packages/nodes-base/nodes/HttpRequest/V3/Description.ts":{"1227":[3,15,19,79,21,147,33,38,95,128]},"packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts":{"53":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","60":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","64":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","71":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","106":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","389":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","506":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","630":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","672":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","732":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","751":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","762":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","767":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","782":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","788":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","811":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","813":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","814":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","949":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","1111":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","1174":"b:CIAoAEIAAAAAgACAAACAAAEASAAA"},"packages/nodes-base/nodes/HttpRequest/V3/utils/binaryData.ts":{"3":[3,15,19,79,21,147,33,38,95,128]},"packages/nodes-base/nodes/HttpRequest/V3/utils/buffer-decoding.ts":{"13":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","36":"b:CIAoAEIAAAAAgACAAACAAAEASAAA"},"packages/nodes-base/nodes/HttpRequest/V3/utils/parse.ts":{"1":[3,15,19,79,21,147,33,38,95,128]},"packages/nodes-base/nodes/HttpRequest/shared/optimizeResponse.ts":{"20":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","37":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","38":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","42":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","55":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","63":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","92":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","97":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","127":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","128":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","179":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","194":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","226":"b:CIAoAEIAAAAAgACAAACAAAEASAAA","255":"b:CIAoAEIAAAAAgACAAACAAAEASAAA"},"packages/nodes-base/nodes/ManualTrigger/ManualTrigger.node.ts":{"40":"b:z8Is5QZMLAAQAACBAKIAQAAAAAAA","41":"b:z8Is5QZMLAAQAACBAKIAQAAAAAAA"},"packages/workflow/src/execution-context.ts":{"12":"b:zwIshCZIHAAQAAQBACAAUAAAQAAA","294":"b:zwIshCZIHAAQAAQBACAAUAAAQAAA","316":"b:zwIshCZIHAAQAAQBACAAUAAAQAAA","329":"b:zwIshCZIHAAQAAQBACAAUAAAQAAA","334":"b:zwIshCZIHAAQAAQBACAAUAAAQAAA"},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/BaseMessage.vue":{"16":[1,2,3,4,8],"26":[1,2,3,4,8]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/MessageWrapper.vue":{"22":[1,2,3,4,8],"30":[1,2,3,4,8],"33":[1,2,3,4,8],"47":[2],"48":[2]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/TextMessage.vue":{"31":[3],"40":[1,2,3,4,8],"42":[1,2,3,4,8],"52":[1,2,3,4,8],"53":[1,2,3,4,8],"58":[1,2,3,4,8],"80":[1,2,3,4,8],"89":[1,2,3,4,8],"137":[3]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/ThinkingMessage.vue":{"14":[1,2,3,4,8],"21":[1,2,3,4,8],"23":[1,2,3,4,8],"32":[1,2,3,4,8],"38":[1,2,3,4,8],"48":[1,2,3,4,8],"64":[1,2,3,4,8],"65":[1,2,3,4,8]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/helpers.ts":{"10":[1,2,3,4,8]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/useMarkdown.ts":{"6":[1,2,3,4,8],"20":[1,2,3,4,8]},"packages/@n8n/design-system/src/components/BlinkingCursor/BlinkingCursor.vue":{"2":[1,2,3,4]},"packages/@n8n/design-system/src/components/InlineAskAssistantButton/InlineAskAssistantButton.vue":{"8":[1,2,3],"39":[1,2,3],"41":[1,2],"44":[1,2,3]},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenuItem.vue":{"50":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","52":[77],"54":[77],"61":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","62":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","64":[77,39,40],"74":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","78":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","82":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","86":"b:AAACAMAngQAAgAIAIgAAACAAAAAA","88":[77],"92":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","98":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","108":[77],"150":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","151":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","160":[77],"170":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","173":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","183":[77,39,40],"191":[77,39,40],"193":[39,40],"223":[77,39,40],"231":[77],"301":[77],"308":[77],"311":[77],"314":[77],"336":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","338":"b:DgAKANAvyQAAgIKEowIIwKqAAAAA","350":"b:AAACAMAngQAAgAIAIgAAACAAAAAA","355":"b:AAACAMAngQAAgAIAIgAAACAAAAAA"},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenuItems.vue":{"32":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","48":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","69":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","71":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","78":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","80":[77,39,40],"81":"b:DgAKANAvyUAAoIOEowIIwKqAAAAA","84":"b:DgAIAJAISEAAIIGEgQIIwIqAAAAA","87":"b:DgAIAJAJSEAAIIGEgQIIwIqAAAAA","90":"b:DgAIAJAvyUAAIIOEowIIwKqAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/http-request.svg":{"11":"b:SMAqEEIgAAAAwACAACCAAAkAAQAA"},"packages/@n8n/design-system/src/types/assistant.ts":{"165":[1,2,3,4,8],"221":[1,2,3,4,8],"227":[1,2,3,4,8],"239":[1,2,3,4,8]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/executionFinished.ts":{"62":"b:7wAsh/cAHAAYCKRpAPCQ/y5zAAAA","205":"b:7wAsh/cAHAAYCKRpAOCQ/y5zAAAA","211":"b:6AAMh5UAHAAQCKRgAMCA4w5zAAAA","232":[39],"246":"b:7wAsh/cAHAAYCKRpAPCQ/y5zAAAA","276":"b:7wAsh/cAHAAYCKRpAOCQ/y5zAAAA","289":"b:7wAsh/cAHAAYCKRpAOCQ/y5zAAAA","315":[39],"333":[39],"350":"b:RgAgAIAAGAAIAAAAAACAQQAwAAAA","433":"b:6QAMh/cAHAAQCKRpAPCQ/y5zAAAA","454":"b:6QAMh/cAHAAQCKRpAPCQ/y5zAAAA","524":"b:7wAsh/cAHAAYCKRpAOCQ/y5zAAAA"},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/sendConsoleMessage.ts":{"7":[3,19,21,33,39,119]},"packages/frontend/editor-ui/src/features/ai/assistant/assistant.api.ts":{"15":[4,57,8],"42":[1,2,3,57],"71":[2,57],"83":[57,116],"95":[57],"105":[57],"125":[4,57,8],"132":[57],"136":[57],"143":[57],"151":[57],"160":[57]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/AskAssistantChat.vue":{"13":[1,2,3],"27":[1,2,3],"32":[1,2,3],"34":[1,2,3],"39":[1,3],"50":[1,3],"65":[2],"72":[2],"80":[1,2,3],"84":[1,2,3],"87":[1,3],"96":[1],"108":[1,2,3]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/AskModeEmptyState.vue":{"5":[1,2,3],"6":[1,2,3]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ImportCurlParameter.vue":{"11":"b:CIAqAEIAAAAAgACAACCAAAkAAAAA","16":"b:CIAqAEIAAAAAgACAACCAAAkAAAAA"},"packages/localhost-43425/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[3,70,72,74,92,49,142]},"packages/localhost-43425/assets/chunk-CC9Q-vWm.js":{"8":[3,70,72,74,92,49,142],"9":[3,70,72,74,92,49,142],"10":[3,70,72,74,92,49,142],"19":[3,70,72,74,92,49,142],"23":[3,70,72,74,92,49,142],"29":[3,70,72,74,92,49,142],"33":[3,70,72,74,92,49,142],"34":[3,70,72,74,92,49,142]},"packages/@n8n/backend-common/src/logging/logger.ts":{"20":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","30":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","41":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","71":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","76":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","88":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","109":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","130":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","142":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","151":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","159":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","163":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","169":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","170":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","176":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","182":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","192":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","195":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","198":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","208":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","214":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","221":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","223":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","231":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","245":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","264":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","268":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","272":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","276":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA","284":"b:RkAwBggoCGFmYAIAQAAAAAIoAkAA"},"packages/@n8n/db/src/utils/is-unique-constraint-error.ts":{"6":"b:AEAAAgAIAGFkAAIAQAAAAAIIAsAA"},"packages/cli/src/errors/http-error-classifier.ts":{"6":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA","41":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA","58":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA"},"packages/cli/src/errors/http-error-serializers.ts":{"13":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA","51":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA"},"packages/cli/src/errors/response-errors/abstract/response.error.ts":{"19":"b:AAAQAggIAOBkgAAAAAAAAAAIAsAA"},"packages/cli/src/errors/response-errors/not-found.error.ts":{"4":[145,69,70,20,158,35,41,42],"14":[145,69,70,20,158,35,41,42]},"packages/cli/src/modules/data-table/data-table-file-cleanup.service.ts":{"13":"b:UlBDJUEMKAFGQEAAAMAEAAAAAAAA","20":"b:UlBDJUEMKAFGQEAAAMAEAAAAAAAA","29":"b:UlBDJUEMKAFGQEAAAMAEAAAAAAAA","33":"b:UlBDJUEMKAFGQEAAAMAEAAAAAAAA","38":"b:UlBDJUEMKAFGQEAAAMAEAAAAAAAA","49":"b:UlBDJUEMKAFGQEAAAMAEAAAAAAAA","82":"b:UlBDJUEMKAFGQEAAAMAEAAAAAAAA"},"packages/cli/src/response-helper.ts":{"16":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA","49":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA","99":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA","113":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA","117":"b:AEAQAggIAGFkAAIAQAAAAAIIBsAA"},"packages/cli/src/wait-tracker.ts":{"35":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","50":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","62":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","66":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","71":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","73":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","82":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","91":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","104":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","112":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","120":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","191":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","202":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","214":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","235":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","238":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","252":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA","256":"b:UlBDJUEMKAFGQEAAEMAAAAAAAAEA"},"packages/workflow/src/errors/base/base.error.ts":{"32":"b:x0KwQggIDOBmYAAAAMAAAAAAMkEA"},"packages/workflow/src/errors/base/user.error.ts":{"19":"b:hwKAQAgADABgoAAAAMAAAAAAMAEA"},"packages/workflow/src/errors/index.ts":{"5":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","14":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","17":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","23":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","27":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","29":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","30":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","33":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA","35":"b:RkAwBggICGFkYAIAQAAAQQIoBsEA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-pin.svg":{"11":"b:AAAAAAAAEABAAIAAAACp/Q6CAQAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/edit-fields.svg":{"11":"b:5gAGB0QMOABgACTuAHhL88+DAAAA"},"packages/@n8n/design-system/src/components/N8nTree/Tree.vue":{"20":"b:gAAAAEAACABAACAAAACAsAQAAAAA","28":"b:gAAAAEAACABAACAAAACAsAQAAAAA","32":"b:gAAAAEAACABAACAAAACAsAQAAAAA","36":"b:gAAAAEAACABAACAAAACAsAQAAAAA","52":"b:gAAAAEAACABAACAAAACAsAQAAAAA","61":"b:gAAAAEAACABAACAAAACAsAQAAAAA","68":"b:gAAAAEAACABAACAAAACAsAQAAAAA","87":[51,125,130],"95":[51,125,130]},"packages/@n8n/design-system/src/types/binary.ts":{"24":"b:lgAIBEIIGABQAKDJAECx/25DAAAA"},"packages/frontend/editor-ui/src/app/composables/useReportWorkflowFailuresToParent.ts":{"33":[69,70,107,108]},"packages/frontend/editor-ui/src/app/layouts/DemoLayout.vue":{"18":[69,70,107,108],"61":[69,70,107,108],"88":[69,70,107,108]},"packages/frontend/editor-ui/src/features/execution/logs/components/DemoFooter.vue":{"9":[69,70,107,108],"10":[69,70,107,108],"11":[69,70,107,108]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/background/CanvasBackgroundStripedPattern.vue":{"6":"b:EAEABwAIbAJgAAQAAJDAAQBwAQAA","13":"b:EAEABwAIbAJgAAQAAJDAAQBwAQAA","14":"b:EAEABwAIbAJgAAQAAJDAAQBwAQAA","15":"b:EAEABwAIbAJgAAQAAJDAAQBwAQAA"},"packages/@n8n/db/src/repositories/folder.repository.ts":{"11":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","15":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","23":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","28":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","39":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","51":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","56":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","66":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","85":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","98":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","104":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","136":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","140":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","144":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","148":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","165":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","198":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","209":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","225":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","235":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","240":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","254":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","260":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","276":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","295":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","312":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","352":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","386":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","395":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","419":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA","422":"b:ALAEAIAHYAQHA0AAoAIAAAAAAQAA"},"packages/@n8n/db/src/repositories/shared-credentials.repository.ts":{"12":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","16":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","26":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","36":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","41":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","52":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","61":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","73":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","76":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","85":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","94":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","99":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","112":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","128":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","156":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","165":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","166":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","181":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","182":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA","192":"b:UKAxgE1uKgEA8QAQoAMAAAAACAAA"},"packages/@n8n/db/src/utils/is-string-array.ts":{"1":"b:ALAUDYAP4AQHAwAAgAIAAAAAkAAA","2":"b:ALAUDYAP4AQHAwAAgAIAAAAAkAAA"},"packages/@n8n/db/src/utils/sql.ts":{"4":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA"},"packages/@n8n/decorators/src/timed.ts":{"16":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA","17":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA","18":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA","23":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA"},"packages/cli/src/middlewares/list-query/dtos/base.filter.dto.ts":{"7":"b:ALAkCIAvYAQHAwAAgAIAAAAAAQAA","23":"b:ALAkCIAvYAQHAwAAgAIAAAAAAQAA"},"packages/cli/src/middlewares/list-query/dtos/pagination.dto.ts":{"6":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA","15":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA"},"packages/cli/src/middlewares/list-query/dtos/workflow.filter.dto.ts":{"74":"b:ALAECIAPYAQHAwAAgAIAAAAAAQAA"},"packages/cli/src/middlewares/list-query/dtos/workflow.sort-by.dto.ts":{"6":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA","13":"b:ALAEAIAHYAQHA0AAgAIAAAAAAQAA"},"packages/cli/src/middlewares/list-query/filter.ts":{"11":"b:ALAkCoBvYQUHAwAAiAIAAAAAgAAA"},"packages/cli/src/middlewares/list-query/pagination.ts":{"10":"b:ALAkCoBvYQUHAwAAiAIAAAAAgAAA"},"packages/cli/src/middlewares/list-query/select.ts":{"11":"b:ALAkCoBvYQUHAwAAiAIAAAAAgAAA"},"packages/cli/src/middlewares/list-query/sort-by.ts":{"12":"b:ALAkCoBvYQUHAwAAiAIAAAAAgAAA"},"packages/cli/src/modules/data-table/data-table-aggregate.service.ts":{"13":"b:ALAEAIAGIAQHA0AAIAIAAAAAAQAA","20":"b:ALAEAIAGIAQHA0AAIAIAAAAAAQAA","21":"b:ALAEAIAGIAQHA0AAIAIAAAAAAQAA","23":"b:ALAEAIAGIAQHA0AAIAIAAAAAAQAA","30":"b:ALAEAIAGIAQHA0AAIAIAAAAAAQAA","33":"b:ALAEAIAGIAQHA0AAIAIAAAAAAQAA"},"packages/cli/src/modules/insights/database/repositories/insights-by-period-query.helper.ts":{"23":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","55":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA"},"packages/cli/src/modules/insights/database/repositories/insights-by-period.repository.ts":{"38":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","39":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","40":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","41":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","42":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","43":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","44":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","51":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","55":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","79":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","83":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","87":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","97":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","111":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","119":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","137":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","160":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","204":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","240":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","259":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","305":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","310":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","323":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","392":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","407":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","431":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","440":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA"},"packages/cli/src/modules/insights/insights.controller.ts":{"22":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","26":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","43":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","63":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","85":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","102":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","109":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","123":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","127":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","141":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","157":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA"},"packages/cli/src/modules/insights/insights.service.ts":{"17":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","28":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","37":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","46":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","53":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","59":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","64":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","69":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","91":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","99":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","128":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","163":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","193":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","214":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","247":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA","272":"b:ALAkAIAmIAQHA0AAgAAAAAAAAQAA"},"packages/cli/src/modules/workflow-index/workflow-dependency-query.service.ts":{"37":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","48":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","73":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","151":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","175":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","231":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","251":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","318":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","332":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","340":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","348":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","361":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA","365":"b:ABAkAIAH4gAAg0MAgAMAAAAAAQAA"},"packages/cli/src/modules/workflow-index/workflow-dependency.controller.ts":{"9":"b:ABAkAIAH4AAAA0IAgAIAAAAAAQAA","12":"b:ABAkAIAH4AAAA0IAgAIAAAAAAQAA","25":"b:ABAkAIAH4AAAA0IAgAIAAAAAAQAA"},"packages/cli/src/requests.ts":{"54":"b:ALA0D4AvYAQHcwAAgAIAAAACkQAA","63":"b:ALA0D4AvYAQHcwAAgAIAAAACkQAA","66":"b:ALA0D4AvYAQHcwAAgAIAAAACkQAA"},"packages/cli/src/services/role-cache.service.ts":{"37":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB","45":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB","54":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB","68":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB","77":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB","93":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB","105":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB","112":"b:QLI0BoSOLAQXIwAAAIIAAAAAlAAB"},"packages/@n8n/design-system/src/components/N8nFormBox/FormBox.vue":{"34":[72,73,42,66],"41":[73,42,66],"42":[73,42,66],"43":[73,42,66],"45":[72,73,42,66],"51":[72,73,42,66],"80":[72,73,42,66]},"packages/@n8n/design-system/src/components/N8nFormInput/FormInput.vue":{"56":"b:ABAQAAAkogAGB0IAFAAAAAACAAAA","82":"b:ABAQAAAkogAGB0IAFAAAAAACAAAA","122":"b:ABAAAAAEogAGAkIAFAAAAAACAAAA","128":"b:ABAAAAAEogAGAkIAFAAAAAAAAAAA","133":"b:ABAAAAAEogAGA0IAFAAAAAACAAAA","137":[66],"143":"b:ABAQAAAkogAGB0IAFAAAAAACAAAA","161":"b:ABAQAAAkogAGB0IAFAAAAAACAAAA","167":"b:ABAQAAAkogAGB0IAFAAAAAACAAAA","173":[73,74,86,42,65,98,100,66],"176":"b:ABAQAAAkogAGB0IAFAAAAAACAAAA","214":"b:ABAQAAAkogAGB0IAFAAAAAACAAAA","215":[86,66],"232":[65],"234":[65]},"packages/@n8n/design-system/src/components/N8nFormInputs/FormInputs.vue":{"19":[72,73,74,42,100,66],"37":[72,73,74,42,100,66],"38":[72,73,74,42,100,66],"43":[73,42,100,66],"44":[73,42,100,66],"55":[72,73,74,42,100,66],"56":[72,73,74,42,100,66],"59":[72,73,74,42,100,66],"63":[72,73,74,42,100,66],"64":[66],"67":[66],"68":[66],"69":[66],"74":[73,42,100,66],"80":[72,73,74,42,100,66],"107":[66],"116":[73,42,100,66],"123":[73,42,100,66],"136":[72,73,74,42,100,66],"147":[72,73,74,42,100,66],"151":[72,73,74,42,100,66],"154":[72,73,74,42,100,66],"177":[73,42,100,66],"178":[72,73,74,42,100,66]},"packages/@n8n/design-system/src/components/ResizeObserver/ResizeObserver.vue":{"6":[72,73,74,42,100,66],"21":[72,73,74,42,100,66],"23":[72,73,74,42,100,66],"25":[72,73,74,42,100,66],"30":[72,73,74,42,100,66],"36":[72,73,74,42,100,66],"37":[72,73,74,42,100,66],"38":[72,73,74,42,100,66],"47":[73,42,66],"52":[72,73,74,42,100,66]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isGuest.ts":{"4":[72,73,42,66]},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/custom.ts":{"4":"b:ALB1B4An4nQHg0cApgEAAIAAAQAA"},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/guest.ts":{"6":[72,73,42,66]},"packages/frontend/editor-ui/src/features/core/auth/views/AuthView.vue":{"28":[73,42,66],"32":[73,42,66],"59":[72,73,42,66]},"packages/frontend/editor-ui/src/features/core/auth/views/SigninView.vue":{"45":[72,73,42,66],"46":[72,73,42,66],"89":[66],"98":[73,42,66],"102":[73,42,66],"119":[73,42,66],"127":[73,42,66],"190":[66],"195":[66]},"packages/frontend/editor-ui/src/features/execution/insights/insights.api.ts":{"16":"b:AJAlAAAmogQHA0MABAEAAIAAAQAA","34":"b:AJAlAAAmogQHA0MABAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/execution/insights/insights.constants.ts":{"21":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","22":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","23":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","24":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","25":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/execution/insights/insights.store.ts":{"12":"b:ALBlAIAn4gQHg0MApAEAAIAAAQAA","17":"b:ALAlAAAmogQHA0MAJAEAAIAAAQAA","21":"b:AJAlAAAmogQHA0MABAEAAIAAAQAA","25":"b:ALAlAAAmogQHA0MAJAEAAIAAAQAA","30":"b:AJAlAAAmogQHA0MABAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/execution/insights/insights.utils.ts":{"17":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","19":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","20":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","23":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","24":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","52":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","54":"b:AJAlAAAmogQGA0MABAEAAIAAAQAA","79":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","96":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","117":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/settings/sso/components/SSOLogin.vue":{"23":[72,73,42,66]},"packages/@n8n/api-types/src/dto/api-keys/create-api-key-request.dto.ts":{"5":[153,74,27,43,46,103]},"packages/@n8n/api-types/src/dto/api-keys/update-api-key-request.dto.ts":{"7":[153,74,27,43,46,103]},"packages/@n8n/api-types/src/dto/invitation/invite-users-request.dto.ts":{"12":[153,74,27,43,101,103]},"packages/@n8n/api-types/src/schemas/scopes.schema.ts":{"14":[153,74,27,43,46,103]},"packages/@n8n/permissions/src/public-api-permissions.ee.ts":{"191":[153,74,27,43,46,101,103],"198":[153,74,27,43,46,101,103],"205":[153,74,27,43,46,101,103],"208":[153,74,27,43,46,101,103]},"packages/@n8n/permissions/src/types.ee.ts":{"75":[153,74,27,43,46,103],"129":[153,74,27,43,46,103]},"packages/cli/src/abstract-server.ts":{"77":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","110":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","114":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","118":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","122":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","130":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","134":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","137":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","141":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","148":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","154":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","163":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","171":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","176":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","185":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","191":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","221":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","230":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","287":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","291":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","330":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA","339":"b:wQAwBZkODAAAxAMAEIQQAAAAAAAA"},"packages/cli/src/controllers/api-keys.controller.ts":{"26":[153,74,27,43,46,103],"36":[153,74,27,43,46,103],"43":[153,74,27,43,46,103],"67":[153,74,27,43,46,103],"81":[153,74,27,43,46,103],"96":[153,74,27,43,46,103],"114":[153,74,27,43,46,103],"129":[153,74,27,43,46,103]},"packages/cli/src/controllers/invitation.controller.ts":{"25":[153,74,27,43,101,103],"44":[153,74,27,43,101,103],"76":[153,74,27,43,101,103],"95":[153,74,27,43,101,103],"120":[153,74,27,43,101,103],"164":[153,74,27,43,101,103]},"packages/cli/src/public-api/index.ts":{"38":[153,74,27,43,103],"40":[153,74,27,43,103],"47":[153,74,27,43,103],"67":[153,74,27,43,103],"77":[153,74,27,43,103],"84":[153,74,27,43,103],"89":[153,74,27,43,103],"100":[153,74,27,43,103],"152":[153,74,27,43,103],"189":[153,74,27,43,103],"197":[153,74,27,43,103],"199":[153,74,27,43,103],"200":[153,74,27,43,103],"209":[153,74,27,43,103],"213":[153,74,27,43,103],"245":[153,74,27,43,103],"249":[153,74,27,43,103],"253":[153,74,27,43,103],"264":[153,74,27,43,103],"286":[153,74,27,43,103],"303":[153,74,27,43,103],"308":[153,74,27,43,103],"325":[153,74,27,43,103],"339":[153,74,27,43,103],"343":[153,74,27,43,103],"345":[153,74,27,43,103],"358":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/audit/audit.handler.ts":{"15":[153,74,27,43,103],"16":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.handler.ts":{"60":[153,74,27,43,103],"73":[153,74,27,43,103],"98":[153,74,27,43,103],"112":[153,74,27,43,103],"133":[153,74,27,43,103],"143":[153,74,27,43,103],"180":[153,74,27,43,103],"195":[153,74,27,43,103],"219":[153,74,27,43,103],"230":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.mapper.ts":{"8":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.middleware.ts":{"21":[153,74,27,43,103],"28":[153,74,27,43,103],"36":[153,74,27,43,103],"41":[153,74,27,43,103],"55":[153,74,27,43,103],"70":[153,74,27,43,103],"89":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/credentials/credentials.service.ts":{"30":[153,74,27,43,103],"34":[153,74,27,43,103],"55":[153,74,27,43,103],"60":[153,74,27,43,103],"61":[153,74,27,43,103],"70":[153,74,27,43,103],"77":[153,74,27,43,103],"81":[153,74,27,43,103],"98":[153,74,27,43,103],"137":[153,74,27,43,103],"178":[153,74,27,43,103],"243":[153,74,27,43,103],"256":[153,74,27,43,103],"271":[153,74,27,43,103],"277":[153,74,27,43,103],"292":[153,74,27,43,103],"307":[153,74,27,43,103],"308":[153,74,27,43,103],"311":[153,74,27,43,103],"325":[153,74,27,43,103],"336":[153,74,27,43,103],"462":[153,74,27,43,103],"470":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.columns.handler.ts":{"14":[153,74,27,43,103],"36":[153,74,27,43,103],"46":[153,74,27,43,103],"70":[153,74,27,43,103],"81":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.handler.ts":{"30":[153,74,27,43,103],"51":[153,74,27,43,103],"73":[153,74,27,43,103],"110":[153,74,27,43,103],"128":[153,74,27,43,103],"153":[153,74,27,43,103],"181":[153,74,27,43,103],"216":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.rows.handler.ts":{"25":[153,74,27,43,103],"40":[153,74,27,43,103],"64":[153,74,27,43,103],"107":[153,74,27,43,103],"136":[153,74,27,43,103],"167":[153,74,27,43,103],"198":[153,74,27,43,103],"217":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/data-tables/data-tables.service.ts":{"9":[153,74,27,43,103],"32":[153,74,27,43,103],"33":[153,74,27,43,103],"41":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/discover/discover.handler.ts":{"18":[153,74,27,43,103],"30":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/discover/discover.service.ts":{"52":[153,74,27,43,103],"60":[153,74,27,43,103],"73":[153,74,27,43,103],"85":[153,74,27,43,103],"92":[153,74,27,43,103],"156":[153,74,27,43,103],"164":[153,74,27,43,103],"206":[153,74,27,43,103],"211":[153,74,27,43,103],"215":[153,74,27,43,103],"223":[153,74,27,43,103],"247":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/evaluations/evaluations.handler.ts":{"27":[153,74,27,43,103],"46":[153,74,27,43,103],"70":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/evaluations/evaluations.mapper.ts":{"29":[153,74,27,43,103],"45":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/executions/executions.handler.ts":{"31":[153,74,27,43,103],"42":[153,74,27,43,103],"62":[153,74,27,43,103],"106":[153,74,27,43,103],"158":[153,74,27,43,103],"182":[153,74,27,43,103],"183":[153,74,27,43,103],"246":[153,74,27,43,103],"274":[153,74,27,43,103],"297":[153,74,27,43,103],"299":[153,74,27,43,103],"328":[153,74,27,43,103],"350":[153,74,27,43,103],"352":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/executions/executions.service.ts":{"9":[153,74,27,43,103],"10":[153,74,27,43,103],"18":[153,74,27,43,103],"27":[153,74,27,43,103],"32":[153,74,27,43,103],"48":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/folders/folders.handler.ts":{"23":[153,74,27,43,103],"46":[153,74,27,43,103],"66":[153,74,27,43,103],"85":[153,74,27,43,103],"105":[153,74,27,43,103],"123":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/insights/insights.handler.ts":{"15":[153,74,27,43,103],"29":[153,74,27,43,103],"49":[153,74,27,43,103],"52":[153,74,27,43,103],"57":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/projects/projects.handler.ts":{"48":[153,74,27,43,103],"60":[153,74,27,43,103],"74":[153,74,27,43,103],"93":[153,74,27,43,103],"113":[153,74,27,43,103],"135":[153,74,27,43,103],"164":[153,74,27,43,103],"182":[153,74,27,43,103],"201":[153,74,27,43,103],"219":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/source-control/source-control.handler.ts":{"23":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/tags/tags.handler.ts":{"31":[153,74,27,43,103],"46":[153,74,27,43,103],"68":[153,74,27,43,103],"85":[153,74,27,43,103],"107":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/users/users.handler.ee.ts":{"39":[153,74,27,43,103],"61":[153,74,27,43,103],"94":[153,74,27,43,103],"110":[153,74,27,43,103],"119":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/users/users.service.ee.ts":{"9":[153,74,27,43,103],"21":[153,74,27,43,103],"30":[153,74,27,43,103],"45":[153,74,27,43,103],"51":[153,74,27,43,103],"66":[153,74,27,43,103],"73":[153,74,27,43,103],"78":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/variables/variables.handler.ts":{"29":[153,74,27,43,103],"42":[153,74,27,43,103],"55":[153,74,27,43,103],"65":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/workflows/workflows.handler.ts":{"30":[153,74,27,43,103],"59":[153,74,27,43,103],"67":[153,74,27,43,103],"84":[153,74,27,43,103],"100":[153,74,27,43,103],"136":[153,74,27,43,103],"163":[153,74,27,43,103],"229":[153,74,27,43,103],"278":[153,74,27,43,103],"301":[153,74,27,43,103],"329":[153,74,27,43,103],"350":[153,74,27,43,103],"367":[153,74,27,43,103],"394":[153,74,27,43,103],"396":[153,74,27,43,103],"433":[153,74,27,43,103],"449":[153,74,27,43,103]},"packages/cli/src/public-api/v1/handlers/workflows/workflows.service.ts":{"18":[153,74,27,43,103],"22":[153,74,27,43,103],"41":[153,74,27,43,103],"57":[153,74,27,43,103],"63":[153,74,27,43,103],"84":[153,74,27,43,103],"88":[153,74,27,43,103],"89":[153,74,27,43,103],"92":[153,74,27,43,103],"103":[153,74,27,43,103],"105":[153,74,27,43,103],"112":[153,74,27,43,103]},"packages/cli/src/public-api/v1/shared/middlewares/global.middleware.ts":{"21":[153,74,27,43,103],"26":[153,74,27,43,103],"57":[153,74,27,43,103],"60":[153,74,27,43,103],"63":[153,74,27,43,103],"97":[153,74,27,43,103],"99":[153,74,27,43,103],"105":[153,74,27,43,103],"106":[153,74,27,43,103],"128":[153,74,27,43,103],"136":[153,74,27,43,103],"138":[153,74,27,43,103],"145":[153,74,27,43,103],"152":[153,74,27,43,103],"167":[153,74,27,43,103],"168":[153,74,27,43,103]},"packages/cli/src/public-api/v1/shared/services/pagination.service.ts":{"10":[153,74,27,43,103],"14":[153,74,27,43,103],"26":[153,74,27,43,103],"38":[153,74,27,43,103],"47":[153,74,27,43,103]},"packages/cli/src/public-api/v1/shared/services/utils.service.ts":{"9":[153,74,27,43,103]},"packages/cli/src/services/api-key-auth.strategy.ts":{"17":[153,74,27,148,43,103],"23":[153,74,27,148,43,103],"66":[153,74,27,148,43,103],"72":[153,74,27,148,43,103],"79":[153,74,27,148,43,103],"84":[153,74,27,148,43,103]},"packages/cli/src/services/auth-strategy.registry.ts":{"24":[153,74,27,148,43,103],"27":[153,74,27,148,43,103],"31":[153,74,27,148,43,103],"49":[153,74,27,148,43,103]},"packages/cli/src/services/public-api-key.service.ts":{"38":[153,74,27,43,46,101,103],"42":[153,74,27,43,46,101,103],"49":[153,74,27,43,46,101,103],"67":[153,74,27,43,46,101,103],"83":[153,74,27,43,46,101,103],"131":[153,74,27,43,46,101,103],"142":[153,74,27,43,46,101,103],"167":[153,74,27,43,46,101,103],"178":[153,74,27,43,46,101,103],"206":[153,74,27,43,46,101,103],"234":[153,74,27,43,46,101,103],"252":[153,74,27,43,46,101,103],"264":[153,74,27,43,46,101,103],"265":[153,74,27,43,46,101,103],"271":[153,74,27,43,46,101,103],"276":[153,74,27,43,46,101,103],"287":[153,74,27,43,46,101,103],"309":[153,74,27,43,46,101,103],"333":[153,74,27,43,46,101,103],"342":[153,74,27,43,46,101,103],"351":[153,74,27,43,46,101,103],"356":[153,74,27,43,46,101,103],"358":[153,74,27,43,46,101,103],"361":[153,74,27,43,46,101,103],"371":[153,74,27,43,46,101,103],"380":[153,74,27,43,46,101,103],"381":[153,74,27,43,46,101,103],"386":[153,74,27,43,46,101,103],"388":[153,74,27,43,46,101,103]},"packages/cli/src/user-management/email/user-management-mailer.ts":{"28":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","32":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","62":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","79":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","90":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","101":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","129":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","155":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","176":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","186":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","203":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","217":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","231":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","235":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","240":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","256":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","260":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","265":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","281":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","285":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","290":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","299":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","304":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","305":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","318":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","323":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","328":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA","344":"b:AAAQCAAMIgAABAAAoAMAAAAAAAoA"},"packages/community-packages.handler.ts":{"32":[153,74,27,43,103],"47":[153,74,27,43,103],"56":[153,74,27,43,103],"74":[153,74,27,43,103]},"packages/community-packages.mapper.ts":{"4":[153,74,27,43,103],"8":[153,74,27,43,103],"12":[153,74,27,43,103],"17":[153,74,27,43,103],"22":[153,74,27,43,103],"36":[153,74,27,43,103]},"packages/n8n-packages.handler.ts":{"37":[153,74,27,43,103],"64":[153,74,27,43,103],"68":[153,74,27,43,103],"70":[153,74,27,43,103],"71":[153,74,27,43,103],"82":[153,74,27,43,103],"85":[153,74,27,43,103],"115":[153,74,27,43,103],"120":[153,74,27,43,103]},"packages/utils/import-package-upload.ts":{"25":[153,74,27,43,103],"38":[153,74,27,43,103],"46":[153,74,27,43,103],"50":[153,74,27,43,103],"53":[153,74,27,43,103]},"packages/@n8n/design-system/src/components/N8nAvatar/Avatar.vue":{"15":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","28":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","29":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","31":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","33":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","43":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","44":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/mcp.svg":{"13":"b:QBAAEIBvoQgGBkMAegAAAIEAAQAA"},"packages/@n8n/design-system/src/components/PreviewTag/PreviewTag.vue":{"11":"b:AAAAAABsAQgGBAAAegAAAAAAAAAA","12":"b:AAAAAABsAQgGBAAAegAAAAAAAAAA"},"packages/@n8n/design-system/src/utils/labelUtil.ts":{"1":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","4":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","6":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA","11":"b:ABAwAAAmogAEBEIAsAMAAAAAAAAA"},"packages/frontend/editor-ui/src/app/components/SettingsSidebar.vue":{"23":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA","26":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA","37":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA","41":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA"},"packages/frontend/editor-ui/src/app/layouts/SettingsLayout.vue":{"27":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA","34":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA","36":"b:AAAAAABoAQgGBAAAegAAAAAAAAAA"},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isInstanceOwner.ts":{"4":[74,59,100,66]},"packages/frontend/editor-ui/src/features/core/auth/views/SettingsPersonalView.vue":{"92":[74,100,66],"96":[74,100,66],"100":[74,100,66],"111":[74,100,66],"115":[74,100,66],"118":[74,100,66],"121":[74,100,66],"125":[74,100,66],"129":[74,100,66],"133":[74,100,66],"175":[74,100,66],"218":[100,66],"222":[74,100,66],"227":[100,66],"243":[100,66],"250":[66],"280":[100,66],"295":[100,66],"303":[100,66],"311":[66],"330":[66],"350":[66],"372":[74,100,66],"373":[74,100,66],"412":[74,100,66],"421":[74,100,66],"427":[74,100,66],"462":[74,100,66]},"packages/@n8n/db/src/repositories/credential-dependency.repository.ts":{"25":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","62":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","66":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","75":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","78":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","93":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","103":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","116":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","117":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","118":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","138":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","149":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA"},"packages/@n8n/db/src/repositories/secrets-provider-connection.repository.ee.ts":{"8":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","12":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","16":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","25":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","33":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","36":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","55":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","89":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","119":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","125":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","140":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","164":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","182":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","190":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","200":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","210":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA","222":"b:UJBxwA1mqgEA8EIQgAEAAAAACAAA"},"packages/cli/src/credential-types.ts":{"8":"b:UMAxgA1mCAEAcAAQAAEAAAAACQAA","10":"b:UMAxgA1mCAEAcAAQAAEAAAAACQAA","15":"b:UMAxgA1mCAEAcAAQAAEAAAAACQAA","19":"b:UMAxgA1mCAEAcAAQAAEAAAAACQAA","26":"b:UMAxgA1mCAEAcAAQAAEAAAAACQAA"},"packages/cli/src/credentials/credential-dependency.service.ts":{"19":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","24":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","39":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","46":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","64":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","82":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","98":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA"},"packages/cli/src/credentials/external-secrets.utils.ts":{"14":"b:UIAxgA1mCAEA8AAQAAEAAAAACAAA","23":"b:UIAxgA1mCAEA8AAQAAEAAAAACAAA","32":"b:UIAxgA1mCAEA8AAQAAEAAAAACAAA","70":"b:UIAxgA1mCAEA8AAQAAEAAAAACAAA"},"packages/cli/src/credentials/validation.ts":{"19":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","26":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","54":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","90":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","133":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","151":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","152":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA","164":"b:UIAxgA1mCgEA8AAQAAEAAAAACEAA"},"packages/cli/src/credentials-helper.ts":{"68":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","71":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","74":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","86":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","102":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","133":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","134":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","160":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","170":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","221":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","237":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","266":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","273":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","289":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","315":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","334":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","372":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","403":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","412":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","447":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","546":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","655":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","680":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA","734":"b:UMBxgA1mCgEA8AAQAAEAQBIASQAA"},"packages/cli/src/credentials-overwrites.ts":{"23":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","31":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","53":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","57":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","79":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","80":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","84":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","98":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","103":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","118":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","133":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","136":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","140":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","152":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","178":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","210":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","214":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","215":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","220":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","225":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","229":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","233":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA","240":"b:UIBxgA1mCAEA8AAQAAEAABAACAAA"},"packages/cli/src/modules/external-secrets.ee/provider-registry.service.ts":{"10":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","13":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","17":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","21":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","25":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","29":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","33":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","43":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","47":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","51":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","55":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","57":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA","58":"b:QABhQAAkAAEAgAAQgAEAAAAAACAA"},"packages/cli/src/modules/external-secrets.ee/secrets-providers-completions.controller.ee.ts":{"15":"b:QABhQAAkAgEAgAAQgAEAAAAAAAAA","24":"b:QABhQAAkAgEAgAAQgAEAAAAAAAAA","55":"b:QABhQAAkAgEAgAAQgAEAAAAAAAAA","72":"b:QABhQAAkAgEAgAAQgAEAAAAAAAAA","84":"b:QABhQAAkAgEAgAAQgAEAAAAAAAAA"},"packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.service.ee.ts":{"39":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","53":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","79":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","107":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","124":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","141":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","146":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","147":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","152":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","153":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","168":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","190":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","212":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","221":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","244":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","252":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","262":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","266":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","274":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","282":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","286":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","288":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","295":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","310":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","320":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","338":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","339":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","350":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","376":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","403":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","407":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","420":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","437":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","441":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","468":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","472":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","485":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","501":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA","523":"b:QBBxQAAkogEA8EIQgAEAAAAAAAAA"},"packages/core/src/credentials.ts":{"11":"b:UIAxgA1mCgEA8AAQAAEAAAAACAAA","19":"b:UIAxgA1mCgEA8AAQAAEAAAAACAAA","27":"b:UIAxgA1mCgEA8AAQAAEAAAAACAAA","37":"b:UIAxgA1mCgEA8AAQAAEAAAAACAAA","48":"b:UIAxgA1mCgEA8AAQAAEAAAAACAAA","72":"b:UIAxgA1mCgEA8AAQAAEAAAAACAAA"},"packages/core/src/index.ts":{"5":"b:UkBBMCYWGAMQeAAQAAMAAAAAAAAA","22":"b:UkBBMCYWGAMQeAAQAAMAAAAAAAAA"},"packages/core/src/nodes-loader/index.ts":{"2":"b:UkBBMCYWGAMQeAAQAAMAAAAAAAAA","4":"b:UkBBMCYWGAMQeAAQAAMAAAAAAAAA"},"packages/@n8n/ai-utilities/src/guards.ts":{"7":[0,6,7,76,77,78,20,51],"9":[0,6,7,76,77,78,20,51],"17":[0,6,7,76,77,78,20,51],"21":[0,6,7,76,77,78,20,51],"25":[0,6,7,76,77,78,20,51],"31":[0,6,7,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/index.ts":{"7":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","12":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","13":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","14":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","16":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","51":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","81":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","89":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","90":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","119":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","120":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","124":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA"},"packages/@n8n/ai-utilities/src/model-discovery/index.ts":{"39":[6,76,77,78,20,91,51,128],"43":[6,76,77,78,20,91,51,128],"58":[6,76,77,78,20,91,51,128],"64":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/providers/anthropic.ts":{"5":[6,76,77,78,20,91,51,128],"15":[6,76,77,78,20,91,51,128],"16":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/providers/cohere.ts":{"5":[6,76,77,78,20,91,51,128],"14":[6,76,77,78,20,91,51,128],"15":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/providers/google.ts":{"11":[6,76,77,78,20,91,51,128],"22":[6,76,77,78,20,91,51,128],"27":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/providers/groq.ts":{"5":[6,76,77,78,20,91,51,128],"14":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/providers/mistral.ts":{"5":[6,76,77,78,20,91,51,128],"14":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/providers/nvidia.ts":{"16":[6,76,77,78,20,91,51,128],"25":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/providers/openai.ts":{"10":[6,76,77,78,20,91,51,128],"29":[6,76,77,78,20,91,51,128],"37":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/model-discovery/request.ts":{"4":[6,76,77,78,20,91,51,128],"16":[6,76,77,78,20,91,51,128],"25":[6,76,77,78,20,91,51,128],"29":[6,76,77,78,20,91,51,128],"33":[6,76,77,78,20,91,51,128],"42":[6,76,77,78,20,91,51,128],"44":[6,76,77,78,20,91,51,128],"45":[6,76,77,78,20,91,51,128],"52":[6,76,77,78,20,91,51,128],"53":[6,76,77,78,20,91,51,128]},"packages/@n8n/ai-utilities/src/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.ts":{"20":[6,78,20]},"packages/@n8n/ai-utilities/src/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.ts":{"13":[6,76,77,78,20,51],"17":[6,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/utils/helpers.ts":{"3":[0,6,7,76,77,78,20,51],"17":[0,6,7,76,77,78,20,51],"37":[0,6,7,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/utils/http-proxy-agent.ts":{"60":[6,76,77,78,20,51],"89":[6,76,77,78,20,51],"111":[6,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/utils/log-ai-event.ts":{"4":[0,6,7,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/utils/log-wrapper.ts":{"38":[0,7,76,77,78],"80":[0,7,76,77,78],"109":[0,7,76,77,78],"127":[0,7,76,77,78],"132":[0,7,76,77,78],"155":[0,7,76,77,78],"184":[0,7,76,77,78],"205":[0,7,76,77,78],"227":[0,7,76,77,78],"271":[0,7,76,77,78],"298":[0,7,76,77,78],"325":[0,7,76,77,78],"355":[0,7,76,77,78],"374":[0,7,76,77,78],"398":[0,7,76,77,78],"422":[0,7,76,77,78],"456":[0,7,76,77,78]},"packages/@n8n/ai-utilities/src/utils/n8n-llm-tracing.ts":{"56":[6,76,77,78,20,51],"94":[6,76,77,78,20,51],"109":[6,76,77,78,20,51],"112":[6,76,77,78,20,51],"124":[6,76,77,78,20,51],"125":[6,76,77,78,20,51],"129":[6,76,77,78,20,51],"134":[6,76,77,78,20,51],"139":[6,76,77,78,20,51],"140":[6,76,77,78,20,51],"190":[6,76,77,78,20,51],"215":[6,76,77,78,20,51],"251":[6,76,77,78,20,51],"259":[6,76,77,78,20,51],"292":[6,76,77,78,20,51],"296":[6,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/utils/redact-headers.ts":{"13":[6,76,77,78,20,51],"29":[6,76,77,78,20,51],"32":[6,76,77,78,20,51],"58":[6,76,77,78,20,51],"64":[6,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/utils/shared-fields.ts":{"37":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","46":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","110":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","115":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","120":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","125":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","132":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","158":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA","164":"b:wQCQEAgACAAI8AAIAAAAAAMAAAAA"},"packages/@n8n/ai-utilities/src/utils/tokenizer/tiktoken.ts":{"9":[6,76,77,78,20,51],"15":[6,76,77,78,20,51],"18":[6,76,77,78,20,51],"34":[6,76,77,78,20,51],"43":[6,76,77,78,20,51]},"packages/@n8n/ai-utilities/src/utils/tokenizer/token-estimator.ts":{"33":[6,76,77,78,20,51],"70":[6,76,77,78,20,51],"129":[6,76,77,78,20,51],"141":[6,76,77,78,20,51],"169":[6,76,77,78,20,51]},"packages/@n8n/api-types/src/schemas/timezone.schema.ts":{"3":[76,77,78,20,24,61,62,26]},"packages/@n8n/backend-common/src/modules/module-registry.ts":{"26":[76,77,78,20,23,25,63,148],"68":[76,77,78,20,23,25,63,148],"71":[76,77,78,20,23,25,63,148],"77":[76,77,78,20,23,25,63,148],"88":[76,77,78,20,23,25,63,148],"146":[76,77,78,20,23,25,63,148],"184":[76,77,78,20,23,25,63,148],"203":[76,77,78,20,23,25,63,148],"219":[76,77,78,20,23,25,63,148],"223":[76,77,78,20,23,25,63,148]},"packages/@n8n/backend-network/src/proxy/index.ts":{"19":[6,76,77,78,20,51]},"packages/@n8n/backend-network/src/proxy/proxy-resolution.ts":{"20":[6,76,77,78,20,51],"35":[6,76,77,78,20,51],"57":[6,76,77,78,20,51],"72":[6,76,77,78,20,51],"80":[6,76,77,78,20,51]},"packages/@n8n/db/src/repositories/execution-metadata.repository.ts":{"8":[5,6,7,76,77,78,20,93,108,51]},"packages/@n8n/db/src/repositories/project-secrets-provider-access.repository.ee.ts":{"9":[76,77,78,20,45],"12":[76,77,78,20,45],"21":[76,77,78,20,45],"28":[76,77,78,20,45],"35":[76,77,78,20,45],"43":[76,77,78,20,45],"54":[76,77,78,20,45]},"packages/@n8n/db/src/utils/transaction.ts":{"8":[76,77,78,20,80,81,63]},"packages/@n8n/decorators/src/module/module-metadata.ts":{"17":[76,77,78,20,23,25,63,148],"20":[76,77,78,20,23,25,63,148],"24":[76,77,78,20,23,25,63,148],"28":[76,77,78,20,23,25,63,148],"32":[76,77,78,20,23,25,63,148],"33":[76,77,78,20,23,25,63,148]},"packages/@n8n/errors/src/index.ts":{"2":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA"},"packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts":{"9":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V1/AgentV1.node.ts":{"37":[6,76,77,78,20,79,28,91,51,128],"53":[6,76,77,78,20,79,28,91,51,128],"63":[6,76,77,78,20,79,28,91,51,128],"221":[6,76,77,78,20,79,28,91,51,128],"276":[6,76,77,78,20,79,28,91,51,128],"361":[6,76,77,78,20,79,28,91,51,128],"470":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V2/AgentV2.node.ts":{"24":[6,76,77,78,20,79,28,91,51,128],"141":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V3/AgentV3.node.ts":{"28":[6,76,77,78,20,79,28,91,51,128],"151":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/execute.ts":{"16":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.ts":{"15":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/PlanAndExecuteAgent/execute.ts":{"18":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/execute.ts":{"21":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/execute.ts":{"25":[6,76,77,78,20,79,28,91,51,128],"28":[6,76,77,78,20,79,28,91,51,128],"29":[6,76,77,78,20,79,28,91,51,128],"43":[6,76,77,78,20,79,28,91,51,128],"55":[6,76,77,78,20,79,28,91,51,128],"144":[6,76,77,78,20,79,28,91,51,128],"150":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/other/handlers/mysql.ts":{"4":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/other/handlers/postgres.ts":{"6":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.ts":{"8":[6,76,77,78,20,79,28,91,51,128],"38":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V1/execute.ts":{"36":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/description.ts":{"15":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/execute.ts":{"44":[6,76,77,78,20,79,28,91,51,128],"92":[6,76,77,78,20,79,28,91,51,128],"97":[6,76,77,78,20,79,28,91,51,128],"102":[6,76,77,78,20,79,28,91,51,128],"132":[6,76,77,78,20,79,28,91,51,128],"200":[6,76,77,78,20,79,28,91,51,128],"216":[6,76,77,78,20,79,28,91,51,128],"240":[6,76,77,78,20,79,28,91,51,128],"297":[6,76,77,78,20,79,28,91,51,128],"406":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/execute.ts":{"29":[6,76,77,78,20,79,28,91,51,128],"54":[6,76,77,78,20,79,28,91,51,128],"134":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/buildExecutionContext.ts":{"29":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/checkMaxIterations.ts":{"27":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/createAgentSequence.ts":{"25":[6,76,77,78,20,79,28,91,51,128],"66":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/executeBatch.ts":{"40":[6,76,77,78,20,79,28,91,51,128],"78":[6,76,77,78,20,79,28,91,51,128],"107":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/finalizeResult.ts":{"21":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/index.ts":{"11":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/prepareItemContext.ts":{"41":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/resolveSubAgentRequest.ts":{"25":[6,76,77,78,20,79,28,91,51,128],"40":[6,76,77,78,20,79,28,91,51,128],"49":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V3/helpers/runAgent.ts":{"39":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/common.ts":{"32":[6,76,77,78,20,79,28,91,51,128],"45":[6,76,77,78,20,79,28,91,51,128],"56":[6,76,77,78,20,79,28,91,51,128],"60":[6,76,77,78,20,79,28,91,51,128],"78":[6,76,77,78,20,79,28,91,51,128],"112":[6,76,77,78,20,79,28,91,51,128],"133":[6,76,77,78,20,79,28,91,51,128],"218":[6,76,77,78,20,79,28,91,51,128],"228":[6,76,77,78,20,79,28,91,51,128],"229":[6,76,77,78,20,79,28,91,51,128],"280":[6,76,77,78,20,79,28,91,51,128],"285":[6,76,77,78,20,79,28,91,51,128],"288":[6,76,77,78,20,79,28,91,51,128],"290":[6,76,77,78,20,79,28,91,51,128],"335":[6,76,77,78,20,79,28,91,51,128],"355":[6,76,77,78,20,79,28,91,51,128],"356":[6,76,77,78,20,79,28,91,51,128],"364":[6,76,77,78,20,79,28,91,51,128],"365":[6,76,77,78,20,79,28,91,51,128],"391":[6,76,77,78,20,79,28,91,51,128],"411":[6,76,77,78,20,79,28,91,51,128],"412":[6,76,77,78,20,79,28,91,51,128],"415":[6,76,77,78,20,79,28,91,51,128],"478":[6,76,77,78,20,79,28,91,51,128],"512":[6,76,77,78,20,79,28,91,51,128],"528":[6,76,77,78,20,79,28,91,51,128],"543":[6,76,77,78,20,79,28,91,51,128],"558":[6,76,77,78,20,79,28,91,51,128],"615":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/utils.ts":{"13":[6,76,77,78,20,79,28,91,51,128],"19":[6,76,77,78,20,79,28,91,51,128],"36":[6,76,77,78,20,79,28,91,51,128],"42":[6,76,77,78,20,79,28,91,51,128],"45":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/utils.ts":{"11":[6,76,77,78,20,79,28,91,51,128],"23":[6,76,77,78,20,79,28,91,51,128],"26":[6,76,77,78,20,79,28,91,51,128],"86":[6,76,77,78,20,79,28,91,51,128],"89":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatAnthropic/LmChatAnthropic.node.ts":{"91":[76,77,78,20,51,128],"117":[76,77,78,20,51,128],"185":[76,77,78,20,51,128],"485":[76,77,78,20,51,128],"564":[76,77,78,20,51,128],"597":[76,77,78,20,51,128],"615":[76,77,78,20,51,128],"628":[76,77,78,20,51,128]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatAnthropic/methods/searchModels.ts":{"7":[76,77,78,20,51,128],"22":[76,77,78,20,51,128],"31":[76,77,78,20,51,128],"32":[76,77,78,20,51,128]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryBufferWindow/MemoryBufferWindow.node.ts":{"30":[76,77,78],"34":[76,77,78],"41":[76,77,78],"63":[76,77,78],"75":[76,77,78],"158":[76,77,78]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryManager/MemoryManager.node.ts":{"20":[76,77,78],"47":[76,77,78],"50":[76,77,78],"53":[76,77,78],"63":[76,77,78],"73":[76,77,78],"302":[76,77,78],"400":[76,77,78]},"packages/@n8n/nodes-langchain/nodes/memory/descriptions.ts":{"28":[6,76,77,78,128,129],"63":[6,76,77,78,128,129]},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/ChatTrigger.node.ts":{"35":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA","229":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA","750":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA","813":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA","939":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA","940":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA"},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/GenericFunctions.ts":{"7":[5,6,7,76,77,78,20,79,28,93,51],"41":[5,6,7,76,77,78,20,79,28,93,51]},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/error.ts":{"4":[5,6,7,76,77,78,20,79,28,93,51]},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/templates.ts":{"5":[5,6,7,76,77,78,20,79,28,93,51],"21":[5,6,7,76,77,78,20,79,28,93,51],"26":[5,6,7,76,77,78,20,79,28,93,51],"27":[5,6,7,76,77,78,20,79,28,93,51],"42":[5,6,7,76,77,78,20,79,28,93,51],"43":[5,6,7,76,77,78,20,79,28,93,51],"46":[5,6,7,76,77,78,20,79,28,93,51],"55":[5,6,7,76,77,78,20,79,28,93,51],"62":[5,6,7,76,77,78,20,79,28,93,51]},"packages/@n8n/nodes-langchain/nodes/trigger/ChatTrigger/types.ts":{"8":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA","12":"b:4AAQEAAACAAA8AAgABAAAAAAAAAA"},"packages/@n8n/nodes-langchain/utils/N8nTool.ts":{"11":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","25":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","28":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","33":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","50":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","57":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","62":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/agent-execution/buildResponseMetadata.ts":{"17":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/buildSteps.ts":{"34":[6,76,77,78,20,79,28,91,51,128],"84":[6,76,77,78,20,79,28,91,51,128],"132":[6,76,77,78,20,79,28,91,51,128],"155":[6,76,77,78,20,79,28,91,51,128],"192":[6,76,77,78,20,79,28,91,51,128],"205":[6,76,77,78,20,79,28,91,51,128],"217":[6,76,77,78,20,79,28,91,51,128],"260":[6,76,77,78,20,79,28,91,51,128],"264":[6,76,77,78,20,79,28,91,51,128],"271":[6,76,77,78,20,79,28,91,51,128],"283":[6,76,77,78,20,79,28,91,51,128],"287":[6,76,77,78,20,79,28,91,51,128],"316":[6,76,77,78,20,79,28,91,51,128],"341":[6,76,77,78,20,79,28,91,51,128],"363":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/createEngineRequests.ts":{"16":[6,76,77,78,20,79,28,91,51,128],"25":[6,76,77,78,20,79,28,91,51,128],"43":[6,76,77,78,20,79,28,91,51,128],"76":[6,76,77,78,20,79,28,91,51,128],"143":[6,76,77,78,20,79,28,91,51,128],"150":[6,76,77,78,20,79,28,91,51,128],"190":[6,76,77,78,20,79,28,91,51,128],"198":[6,76,77,78,20,79,28,91,51,128],"201":[6,76,77,78,20,79,28,91,51,128],"206":[6,76,77,78,20,79,28,91,51,128],"208":[6,76,77,78,20,79,28,91,51,128],"248":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/executeEngineAction.ts":{"17":[6,76,77,78,20,79,28,91,51,128],"22":[6,76,77,78,20,79,28,91,51,128],"47":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/index.ts":{"13":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/memoryManagement.ts":{"25":[6,76,77,78,20,79,28,91,51,128],"81":[6,76,77,78,20,79,28,91,51,128],"148":[6,76,77,78,20,79,28,91,51,128],"151":[6,76,77,78,20,79,28,91,51,128],"164":[6,76,77,78,20,79,28,91,51,128],"211":[6,76,77,78,20,79,28,91,51,128],"263":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/processEventStream.ts":{"20":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/processHitlResponses.ts":{"26":[6,76,77,78,20,79,28,91,51,128],"38":[6,76,77,78,20,79,28,91,51,128],"47":[6,76,77,78,20,79,28,91,51,128],"54":[6,76,77,78,20,79,28,91,51,128],"71":[6,76,77,78,20,79,28,91,51,128],"80":[6,76,77,78,20,79,28,91,51,128],"106":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/serializeIntermediateSteps.ts":{"10":[6,76,77,78,20,79,28,91,51,128],"15":[6,76,77,78,20,79,28,91,51,128],"29":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/agent-execution/types.ts":{"177":[6,76,77,78,20,79,28,91,51,128],"193":[6,76,77,78,20,79,28,91,51,128],"207":[6,76,77,78,20,79,28,91,51,128]},"packages/@n8n/nodes-langchain/utils/descriptions.ts":{"28":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","54":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","72":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/helpers.ts":{"17":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","64":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","77":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","81":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","145":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","147":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","159":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","180":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","192":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","213":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","217":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","221":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","274":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","292":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA","310":"b:wACQEAgACAAA8AAIAAQAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nItemListOutputParser.ts":{"10":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","26":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","29":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","30":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","42":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","57":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nOutputFixingParser.ts":{"15":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","24":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","35":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","42":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","88":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","92":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nOutputParser.ts":{"15":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/N8nStructuredOutputParser.ts":{"22":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","31":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","131":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","148":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","175":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/output_parsers/langchainParserError.ts":{"11":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","19":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","26":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","30":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","33":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA","41":"b:QAAQEAAACAAA8AAIAAAAAAMAAAAA"},"packages/@n8n/nodes-langchain/utils/tracing.ts":{"19":"b:wAAQEAAACAAA8AAIAAQAAAEAAAAA","83":"b:wAAQEAAACAAA8AAIAAQAAAEAAAAA"},"packages/cli/src/credentials/credential-connection-status-proxy.ts":{"17":[76,77,78,20,158,41],"21":[76,77,78,20,158,41],"26":[76,77,78,20,158,41],"31":[76,77,78,20,158,41],"36":[76,77,78,20,158,41],"45":[76,77,78,20,158,41]},"packages/cli/src/credentials/dynamic-credentials-proxy.ts":{"30":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA","32":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA","36":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA","46":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA","58":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA","64":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA","87":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA","115":"b:AAAwgAwAAAAAcAAAAAAAAAAASAAA"},"packages/cli/src/eventbus/event-message-classes/event-message-ai-node.ts":{"34":[0,6,7,76,77,78,20,51],"42":[0,6,7,76,77,78,20,51],"47":[0,6,7,76,77,78,20,51]},"packages/cli/src/modules/chat-hub/chat-hub-agent.repository.ts":{"8":[76,77,78,20],"12":[76,77,78,20],"23":[76,77,78,20],"31":[76,77,78,20],"36":[76,77,78,20],"43":[76,77,78,20],"52":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub-agent.service.ts":{"36":[76,77,78,20,101],"51":[76,77,78,20,101],"54":[76,77,78,20,101],"57":[76,77,78,20,101],"58":[76,77,78,20,101],"77":[76,77,78,20,101],"81":[76,77,78,20,101],"89":[76,77,78,20,101],"96":[76,77,78,20,101],"124":[76,77,78,20,101],"164":[76,77,78,20,101],"183":[76,77,78,20,101],"204":[76,77,78,20,101],"216":[76,77,78,20,101],"230":[76,77,78,20,101],"264":[76,77,78,20,101],"287":[76,77,78,20,101],"309":[76,77,78,20,101],"334":[76,77,78,20,101],"349":[76,77,78,20,101],"360":[76,77,78,20,101],"375":[76,77,78,20,101],"384":[76,77,78,20,101],"394":[76,77,78,20,101],"400":[76,77,78,20,101],"403":[76,77,78,20,101],"418":[76,77,78,20,101],"426":[76,77,78,20,101],"451":[76,77,78,20,101]},"packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts":{"18":[76,77,78,20],"25":[76,77,78,20],"38":[76,77,78,20],"49":[76,77,78,20],"62":[76,77,78,20],"71":[76,77,78,20],"91":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub-execution.service.ts":{"51":[76,77,78,20],"68":[76,77,78,20],"79":[76,77,78,20],"91":[76,77,78,20],"156":[76,77,78,20],"207":[76,77,78,20],"228":[76,77,78,20],"251":[76,77,78,20],"254":[76,77,78,20],"264":[76,77,78,20],"274":[76,77,78,20],"303":[76,77,78,20],"368":[76,77,78,20],"447":[76,77,78,20],"489":[76,77,78,20],"497":[76,77,78,20],"498":[76,77,78,20],"499":[76,77,78,20],"541":[76,77,78,20],"570":[76,77,78,20],"610":[76,77,78,20],"624":[76,77,78,20],"629":[76,77,78,20],"631":[76,77,78,20],"635":[76,77,78,20],"641":[76,77,78,20],"653":[76,77,78,20],"659":[76,77,78,20],"661":[76,77,78,20],"662":[76,77,78,20],"663":[76,77,78,20],"666":[76,77,78,20],"673":[76,77,78,20],"692":[76,77,78,20],"713":[76,77,78,20],"733":[76,77,78,20],"746":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub-extractor.ts":{"32":[76,77,78,20],"52":[76,77,78,20],"65":[76,77,78,20],"71":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub-title.service.ts":{"39":[76,77,78,20],"53":[76,77,78,20],"80":[76,77,78,20],"88":[76,77,78,20],"124":[76,77,78,20],"152":[76,77,78,20],"186":[76,77,78,20],"259":[76,77,78,20],"260":[76,77,78,20],"262":[76,77,78,20],"272":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub-tool.repository.ts":{"10":[76,77,78,20],"14":[76,77,78,20],"22":[76,77,78,20],"30":[76,77,78,20],"35":[76,77,78,20],"42":[76,77,78,20],"50":[76,77,78,20],"57":[76,77,78,20],"68":[76,77,78,20],"79":[76,77,78,20],"90":[76,77,78,20],"98":[76,77,78,20],"101":[76,77,78,20],"109":[76,77,78,20],"112":[76,77,78,20],"122":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub-tool.service.ts":{"21":[76,77,78,20],"29":[76,77,78,20],"33":[76,77,78,20],"37":[76,77,78,20],"39":[76,77,78,20],"42":[76,77,78,20],"44":[76,77,78,20],"47":[76,77,78,20],"51":[76,77,78,20],"55":[76,77,78,20],"59":[76,77,78,20],"63":[76,77,78,20],"79":[76,77,78,20],"86":[76,77,78,20],"104":[76,77,78,20],"110":[76,77,78,20],"136":[76,77,78,20],"137":[76,77,78,20],"149":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub-workflow.service.ts":{"85":[76,77,78,20],"100":[76,77,78,20],"106":[76,77,78,20],"127":[76,77,78,20],"181":[76,77,78,20],"192":[76,77,78,20],"247":[76,77,78,20],"262":[76,77,78,20],"276":[76,77,78,20],"296":[76,77,78,20],"297":[76,77,78,20],"311":[76,77,78,20],"358":[76,77,78,20],"374":[76,77,78,20],"424":[76,77,78,20],"425":[76,77,78,20],"488":[76,77,78,20],"558":[76,77,78,20],"623":[76,77,78,20],"635":[76,77,78,20],"716":[76,77,78,20],"724":[76,77,78,20],"750":[76,77,78,20],"912":[76,77,78,20],"927":[76,77,78,20],"949":[76,77,78,20],"1019":[76,77,78,20],"1079":[76,77,78,20],"1090":[76,77,78,20],"1104":[76,77,78,20],"1120":[76,77,78,20],"1121":[76,77,78,20],"1128":[76,77,78,20],"1153":[76,77,78,20],"1166":[76,77,78,20],"1201":[76,77,78,20],"1204":[76,77,78,20],"1215":[76,77,78,20],"1226":[76,77,78,20],"1284":[76,77,78,20],"1326":[76,77,78,20],"1396":[76,77,78,20],"1426":[76,77,78,20],"1456":[76,77,78,20],"1464":[76,77,78,20],"1467":[76,77,78,20],"1521":[76,77,78,20],"1530":[76,77,78,20],"1534":[76,77,78,20],"1539":[76,77,78,20],"1552":[76,77,78,20],"1561":[76,77,78,20],"1579":[76,77,78,20],"1586":[76,77,78,20],"1615":[76,77,78,20],"1641":[76,77,78,20],"1762":[76,77,78,20],"1785":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub.attachment.service.ts":{"19":[76,77,78,20],"28":[76,77,78,20],"55":[76,77,78,20],"85":[76,77,78,20],"129":[76,77,78,20],"132":[76,77,78,20],"138":[76,77,78,20],"146":[76,77,78,20],"152":[76,77,78,20],"154":[76,77,78,20],"158":[76,77,78,20],"170":[76,77,78,20],"174":[76,77,78,20],"196":[76,77,78,20],"197":[76,77,78,20],"211":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub.constants.ts":{"694":[76,77,78,20],"719":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub.controller.ts":{"63":[76,77,78,20],"73":[76,77,78,20],"87":[76,77,78,20],"97":[76,77,78,20],"112":[76,77,78,20],"122":[76,77,78,20],"160":[76,77,78,20],"169":[76,77,78,20],"195":[76,77,78,20],"225":[76,77,78,20],"250":[76,77,78,20],"284":[76,77,78,20],"309":[76,77,78,20],"343":[76,77,78,20],"359":[76,77,78,20],"375":[76,77,78,20],"390":[76,77,78,20],"402":[76,77,78,20],"404":[76,77,78,20],"409":[76,77,78,20],"421":[76,77,78,20],"436":[76,77,78,20],"447":[76,77,78,20],"453":[76,77,78,20],"463":[76,77,78,20],"474":[76,77,78,20],"488":[76,77,78,20],"511":[76,77,78,20],"521":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub.models.service.ts":{"32":[76,77,78,20],"41":[76,77,78,20],"54":[76,77,78,20],"64":[76,77,78,20],"90":[76,77,78,20],"98":[76,77,78,20],"172":[76,77,78,20],"188":[76,77,78,20],"204":[76,77,78,20],"256":[76,77,78,20],"301":[76,77,78,20],"311":[76,77,78,20],"318":[76,77,78,20],"412":[76,77,78,20],"461":[76,77,78,20],"510":[76,77,78,20],"554":[76,77,78,20],"597":[76,77,78,20],"640":[76,77,78,20],"683":[76,77,78,20],"726":[76,77,78,20],"769":[76,77,78,20],"781":[76,77,78,20],"783":[76,77,78,20],"803":[76,77,78,20],"812":[76,77,78,20],"813":[76,77,78,20],"820":[76,77,78,20],"828":[76,77,78,20],"874":[76,77,78,20],"879":[76,77,78,20],"880":[76,77,78,20],"884":[76,77,78,20],"885":[76,77,78,20],"894":[76,77,78,20],"900":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub.service.ts":{"56":[76,77,78,20],"76":[76,77,78,20],"87":[76,77,78,20],"113":[76,77,78,20],"163":[76,77,78,20],"187":[76,77,78,20],"194":[76,77,78,20],"198":[76,77,78,20],"225":[76,77,78,20],"233":[76,77,78,20],"249":[76,77,78,20],"262":[76,77,78,20],"271":[76,77,78,20],"281":[76,77,78,20],"293":[76,77,78,20],"301":[76,77,78,20],"318":[76,77,78,20],"322":[76,77,78,20],"331":[76,77,78,20],"375":[76,77,78,20],"376":[76,77,78,20],"383":[76,77,78,20],"422":[76,77,78,20],"436":[76,77,78,20],"460":[76,77,78,20],"474":[76,77,78,20],"506":[76,77,78,20],"550":[76,77,78,20],"587":[76,77,78,20],"615":[76,77,78,20],"628":[76,77,78,20],"707":[76,77,78,20],"745":[76,77,78,20],"760":[76,77,78,20],"773":[76,77,78,20],"779":[76,77,78,20],"852":[76,77,78,20],"878":[76,77,78,20],"898":[76,77,78,20],"911":[76,77,78,20],"917":[76,77,78,20],"1006":[76,77,78,20],"1033":[76,77,78,20],"1042":[76,77,78,20],"1054":[76,77,78,20],"1057":[76,77,78,20],"1113":[76,77,78,20],"1127":[76,77,78,20],"1139":[76,77,78,20],"1142":[76,77,78,20],"1201":[76,77,78,20],"1228":[76,77,78,20],"1271":[76,77,78,20],"1291":[76,77,78,20],"1298":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub.settings.controller.ts":{"18":[76,77,78,20],"27":[76,77,78,20],"39":[76,77,78,20],"46":[76,77,78,20],"61":[76,77,78,20],"75":[76,77,78,20],"88":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-hub.settings.service.ts":{"21":[76,77,78,20,101],"26":[76,77,78,20,101],"37":[76,77,78,20,101],"39":[76,77,78,20,101],"48":[76,77,78,20,101],"55":[76,77,78,20,101],"68":[76,77,78,20,101],"76":[76,77,78,20,101],"93":[76,77,78,20,101],"115":[76,77,78,20,101],"125":[76,77,78,20,101],"141":[76,77,78,20,101],"152":[76,77,78,20,101]},"packages/cli/src/modules/chat-hub/chat-message.repository.ts":{"19":[76,77,78,20],"26":[76,77,78,20],"38":[76,77,78,20],"48":[76,77,78,20],"74":[76,77,78,20],"108":[76,77,78,20],"117":[76,77,78,20],"122":[76,77,78,20],"130":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-session.repository.ts":{"10":[76,77,78,20],"14":[76,77,78,20],"26":[76,77,78,20],"31":[76,77,78,20],"36":[76,77,78,20],"72":[76,77,78,20],"77":[76,77,78,20],"91":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-stream-state.service.ts":{"68":[76,77,78,20],"89":[76,77,78,20],"115":[76,77,78,20],"131":[76,77,78,20],"151":[76,77,78,20],"177":[76,77,78,20],"187":[76,77,78,20],"205":[76,77,78,20],"233":[76,77,78,20],"245":[76,77,78,20],"251":[76,77,78,20],"268":[76,77,78,20],"283":[76,77,78,20],"287":[76,77,78,20],"291":[76,77,78,20],"304":[76,77,78,20],"319":[76,77,78,20],"329":[76,77,78,20],"342":[76,77,78,20],"357":[76,77,78,20],"367":[76,77,78,20],"370":[76,77,78,20],"380":[76,77,78,20]},"packages/cli/src/modules/chat-hub/chat-stream.service.ts":{"52":[76,77,78,20],"66":[76,77,78,20],"100":[76,77,78,20],"137":[76,77,78,20],"162":[76,77,78,20],"198":[76,77,78,20],"235":[76,77,78,20],"272":[76,77,78,20],"308":[76,77,78,20],"318":[76,77,78,20],"326":[76,77,78,20],"335":[76,77,78,20],"435":[76,77,78,20],"454":[76,77,78,20],"461":[76,77,78,20],"501":[76,77,78,20],"531":[76,77,78,20],"561":[76,77,78,20],"588":[76,77,78,20],"616":[76,77,78,20],"643":[76,77,78,20]},"packages/cli/src/modules/chat-hub/context-limits.ts":{"223":[76,77,78]},"packages/cli/src/modules/chat-hub/stream-capturer.ts":{"13":[76,77,78,20],"23":[76,77,78,20],"32":[76,77,78,20],"43":[76,77,78,20],"44":[76,77,78,20],"53":[76,77,78,20],"67":[76,77,78,20],"72":[76,77,78,20],"96":[76,77,78,20],"112":[76,77,78,20],"124":[76,77,78,20],"142":[76,77,78,20],"151":[76,77,78,20],"204":[76,77,78,20]},"packages/cli/src/modules/favorites/favorites.event-relay.ts":{"10":[76,77,78,20,81,54,55],"17":[76,77,78,20,81,54,55],"19":[76,77,78,20,81,54,55],"21":[76,77,78,20,81,54,55],"23":[76,77,78,20,81,54,55],"25":[76,77,78,20,81,54,55]},"packages/cli/src/services/dynamic-node-parameters.service.ts":{"65":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","73":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","113":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","114":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","123":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","132":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","144":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","155":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","189":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","251":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","262":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","266":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","280":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","286":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","298":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","304":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","317":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","330":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","356":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","399":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","403":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","429":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","438":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","450":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA","454":"b:AEAQAAAEAAAAcAAAAAAAQDICAAAA"},"packages/cli/src/services/execution-metadata.service.ts":{"7":[5,6,7,76,77,78,20,93,108,51],"9":[5,6,7,76,77,78,20,93,108,51]},"packages/cli/src/tool-generation/index.ts":{"7":[78,79,91,128]},"packages/core/src/errors/error-reporter.ts":{"92":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","109":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","117":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","145":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","147":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","151":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","172":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","178":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","183":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","201":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","226":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","227":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","273":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","274":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","287":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","314":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","318":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","324":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","371":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","377":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","381":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","385":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","392":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","397":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","401":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","405":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","415":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","421":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","437":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA","439":"b:RkAwBAAICAEAYAIAQAAAAQIoAAAA"},"packages/core/src/execution-engine/node-execution-context/load-options-context.ts":{"21":[14,76,77,78,20,126,129,133],"36":[14,76,77,78,20,126,129,133],"40":[14,76,77,78,20,126,129,133],"69":[14,76,77,78,20,126,129,133]},"packages/core/src/execution-engine/node-execution-context/supply-data-context.ts":{"53":[0,6,7,76,77,78,20,23,35,51],"98":[0,6,7,76,77,78,20,23,35,51],"100":[0,6,7,76,77,78,20,23,35,51],"108":[0,6,7,76,77,78,20,23,35,51],"115":[0,6,7,76,77,78,20,23,35,51],"130":[0,6,7,76,77,78,20,23,35,51],"153":[0,6,7,76,77,78,20,23,35,51],"174":[0,6,7,76,77,78,20,23,35,51],"182":[0,6,7,76,77,78,20,23,35,51],"188":[0,6,7,76,77,78,20,23,35,51],"193":[0,6,7,76,77,78,20,23,35,51],"209":[0,6,7,76,77,78,20,23,35,51],"222":[0,6,7,76,77,78,20,23,35,51],"238":[0,6,7,76,77,78,20,23,35,51],"248":[0,6,7,76,77,78,20,23,35,51],"368":[0,6,7,76,77,78,20,23,35,51],"370":[0,6,7,76,77,78,20,23,35,51],"382":[0,6,7,76,77,78,20,23,35,51]},"packages/core/src/execution-engine/node-execution-context/utils/create-node-as-tool.ts":{"43":[78],"89":[78],"97":[78],"109":[78],"115":[78],"125":[78],"139":[78]},"packages/core/src/execution-engine/node-execution-context/utils/get-input-connection-data.ts":{"46":[0,6,7,76,77,78,20,23,35,51],"51":[0,6,7,76,77,78,20,23,35,51],"55":[0,6,7,76,77,78,20,23,35,51],"65":[0,6,7,76,77,78,20,23,35,51],"78":[0,6,7,76,77,78,20,23,35,51],"103":[0,6,7,76,77,78,20,23,35,51],"143":[0,6,7,76,77,78,20,23,35,51],"147":[0,6,7,76,77,78,20,23,35,51],"156":[0,6,7,76,77,78,20,23,35,51],"159":[0,6,7,76,77,78,20,23,35,51],"168":[0,6,7,76,77,78,20,23,35,51],"169":[0,6,7,76,77,78,20,23,35,51],"177":[0,6,7,76,77,78,20,23,35,51],"208":[0,6,7,76,77,78,20,23,35,51],"220":[0,6,7,76,77,78,20,23,35,51],"234":[0,6,7,76,77,78,20,23,35,51],"328":[0,6,7,76,77,78,20,23,35,51],"348":[0,6,7,76,77,78,20,23,35,51],"351":[0,6,7,76,77,78,20,23,35,51],"365":[0,6,7,76,77,78,20,23,35,51],"380":[0,6,7,76,77,78,20,23,35,51],"396":[0,6,7,76,77,78,20,23,35,51],"405":[0,6,7,76,77,78,20,23,35,51],"458":[0,6,7,76,77,78,20,23,35,51],"481":[0,6,7,76,77,78,20,23,35,51],"558":[0,6,7,76,77,78,20,23,35,51]},"packages/core/src/execution-engine/node-execution-context/utils/get-secrets-proxy.ts":{"4":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","6":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","25":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","30":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","50":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","66":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","69":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","75":"b:QABwgA0ACAEAcAAAAAAAABAACAAA","78":"b:QABwgA0ACAEAcAAAAAAAABAACAAA"},"packages/nodes-base/nodes/Merge/Merge.node.ts":{"9":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v1/MergeV1.node.ts":{"20":[76,77,78,110,120,128],"205":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v2/MergeV2.node.ts":{"35":[76,77,78,110,120,128],"293":[76,77,78,110,120,128],"459":[76,77,78,110,120,128],"467":[76,77,78,110,120,128],"520":[76,77,78,110,120,128],"603":[76,77,78,110,120,128],"604":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v2/utils.ts":{"31":[76,77,78,110,120,128],"32":[76,77,78,110,120,128],"34":[76,77,78,110,120,128],"41":[76,77,78,110,120,128],"47":[76,77,78,110,120,128],"72":[76,77,78,110,120,128],"78":[76,77,78,110,120,128],"103":[76,77,78,110,120,128],"128":[76,77,78,110,120,128],"150":[76,77,78,110,120,128],"151":[76,77,78,110,120,128],"159":[76,77,78,110,120,128],"176":[76,77,78,110,120,128],"187":[76,77,78,110,120,128],"191":[76,77,78,110,120,128],"197":[76,77,78,110,120,128],"203":[76,77,78,110,120,128],"210":[76,77,78,110,120,128],"213":[76,77,78,110,120,128],"216":[76,77,78,110,120,128],"219":[76,77,78,110,120,128],"243":[76,77,78,110,120,128],"246":[76,77,78,110,120,128],"250":[76,77,78,110,120,128],"268":[76,77,78,110,120,128],"273":[76,77,78,110,120,128],"279":[76,77,78,110,120,128],"285":[76,77,78,110,120,128],"288":[76,77,78,110,120,128],"292":[76,77,78,110,120,128],"307":[76,77,78,110,120,128],"327":[76,77,78,110,120,128],"334":[76,77,78,110,120,128],"349":[76,77,78,110,120,128],"350":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/MergeV3.node.ts":{"15":[76,77,78,110,120,128],"26":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/actions/mode/append.ts":{"21":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/actions/mode/chooseBranch.ts":{"73":[76,77,78,110,120,128],"98":[76,77,78,110,120,128],"99":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineAll.ts":{"35":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineByFields.ts":{"261":[76,77,78,110,120,128],"274":[76,77,78,110,120,128],"297":[76,77,78,110,120,128],"305":[76,77,78,110,120,128],"358":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineByPosition.ts":{"49":[76,77,78,110,120,128],"80":[76,77,78,110,120,128],"82":[76,77,78,110,120,128],"95":[76,77,78,110,120,128],"100":[76,77,78,110,120,128],"106":[76,77,78,110,120,128],"110":[76,77,78,110,120,128],"112":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/actions/mode/combineBySql.ts":{"84":[76,77,78,110,120,128],"105":[76,77,78,110,120,128],"113":[76,77,78,110,120,128],"114":[76,77,78,110,120,128],"138":[76,77,78,110,120,128],"181":[76,77,78,110,120,128],"196":[76,77,78,110,120,128],"197":[76,77,78,110,120,128],"198":[76,77,78,110,120,128],"215":[76,77,78,110,120,128],"216":[76,77,78,110,120,128],"226":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/actions/router.ts":{"7":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/helpers/sandbox-utils.ts":{"13":[76,77,78,110,120,128],"18":[76,77,78,110,120,128],"29":[76,77,78,110,120,128],"41":[76,77,78,110,120,128],"49":[76,77,78,110,120,128],"100":[76,77,78,110,120,128],"120":[76,77,78,110,120,128],"135":[76,77,78,110,120,128],"155":[76,77,78,110,120,128],"176":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/helpers/utils.ts":{"33":[76,77,78,110,120,128],"34":[76,77,78,110,120,128],"36":[76,77,78,110,120,128],"43":[76,77,78,110,120,128],"49":[76,77,78,110,120,128],"74":[76,77,78,110,120,128],"80":[76,77,78,110,120,128],"105":[76,77,78,110,120,128],"130":[76,77,78,110,120,128],"152":[76,77,78,110,120,128],"153":[76,77,78,110,120,128],"161":[76,77,78,110,120,128],"178":[76,77,78,110,120,128],"189":[76,77,78,110,120,128],"193":[76,77,78,110,120,128],"199":[76,77,78,110,120,128],"205":[76,77,78,110,120,128],"212":[76,77,78,110,120,128],"215":[76,77,78,110,120,128],"218":[76,77,78,110,120,128],"221":[76,77,78,110,120,128],"245":[76,77,78,110,120,128],"248":[76,77,78,110,120,128],"252":[76,77,78,110,120,128],"270":[76,77,78,110,120,128],"275":[76,77,78,110,120,128],"281":[76,77,78,110,120,128],"287":[76,77,78,110,120,128],"290":[76,77,78,110,120,128],"294":[76,77,78,110,120,128],"309":[76,77,78,110,120,128],"329":[76,77,78,110,120,128],"336":[76,77,78,110,120,128],"351":[76,77,78,110,120,128],"352":[76,77,78,110,120,128],"364":[76,77,78,110,120,128],"365":[76,77,78,110,120,128],"371":[76,77,78,110,120,128],"375":[76,77,78,110,120,128],"389":[76,77,78,110,120,128],"406":[76,77,78,110,120,128]},"packages/nodes-base/nodes/Merge/v3/methods/loadOptions.ts":{"3":[76,77,78,110,120,128],"36":[76,77,78,110,120,128]},"packages/workflow/src/errors/abstract/execution-base.error.ts":{"27":"b:QkAwAAAACAAAYAAAAAAAAQIAAQEA","43":"b:QkAwAAAACAAAYAAAAAAAAQIAAQEA"},"packages/workflow/src/errors/abstract/node.error.ts":{"40":"b:QkAwAAAAAAAAYAAAAAAAQQIAAQAA","78":"b:QkAwAAAAAAAAYAAAAAAAQQIAAQAA","98":"b:QkAwAAAAAAAAYAAAAAAAQQIAAQAA","106":"b:QkAwAAAAAAAAYAAAAAAAQQIAAQAA","138":"b:QkAwAAAAAAAAYAAAAAAAQQIAAQAA","148":"b:QkAwAAAAAAAAYAAAAAAAQQIAAQAA"},"packages/workflow/src/errors/base/operational.error.ts":{"16":"b:x0AQCAgADAAAYAAAAMAAAABAIQEA"},"packages/workflow/src/errors/node-api.error.ts":{"124":[6,14,78,20,21,126,129],"277":[6,14,78,20,21,126,129],"285":[6,14,78,20,21,126,129],"301":[6,14,78,20,21,126,129]},"packages/workflow/src/errors/node-operation.error.ts":{"12":[1,6,14,77,78,20,120,126,144],"31":[1,6,14,77,78,20,120,126,144]},"packages/workflow/src/from-ai-parse-utils.ts":{"27":[78],"59":[78],"110":[78],"120":[78],"148":[78],"199":[78],"248":[78],"324":[78],"327":[78],"329":[78],"331":[78],"335":[78],"342":[78],"344":[78],"362":[78],"460":[78],"491":[78],"511":[78],"527":[78]},"packages/workflow/src/highlighted-data.ts":{"3":[5,6,7,76,77,78,20,93,108,51],"7":[5,6,7,76,77,78,20,93,108,51]},"packages/workflow/src/node-parameters/parameter-type-validation.ts":{"15":[5,6,7,76,77,78,20,93,108,51],"30":[5,6,7,76,77,78,20,93,108,51],"39":[5,6,7,76,77,78,20,93,108,51],"47":[5,6,7,76,77,78,20,93,108,51],"55":[5,6,7,76,77,78,20,93,108,51],"69":[5,6,7,76,77,78,20,93,108,51],"75":[5,6,7,76,77,78,20,93,108,51],"82":[5,6,7,76,77,78,20,93,108,51],"103":[5,6,7,76,77,78,20,93,108,51],"110":[5,6,7,76,77,78,20,93,108,51],"121":[5,6,7,76,77,78,20,93,108,51],"133":[5,6,7,76,77,78,20,93,108,51],"141":[5,6,7,76,77,78,20,93,108,51],"142":[5,6,7,76,77,78,20,93,108,51],"148":[5,6,7,76,77,78,20,93,108,51],"162":[5,6,7,76,77,78,20,93,108,51],"175":[5,6,7,76,77,78,20,93,108,51],"197":[5,6,7,76,77,78,20,93,108,51],"246":[5,6,7,76,77,78,20,93,108,51],"259":[5,6,7,76,77,78,20,93,108,51]},"packages/workflow/src/schemas.ts":{"89":[78],"102":[78],"166":[78],"240":[78],"265":[78],"430":[78]},"packages/workflow/src/tool-helpers.ts":{"10":[78,23,35]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/ai-agent.svg":{"11":"b:QAAAEAAACAAIgAAYACAAAAMAAAAA"},"packages/@n8n/utils/src/result.ts":{"7":"b:BAAAAAAgGAAAAACCAAAAHX4wAAAA","12":"b:RgAIFAIIGAAYgKD7AGCwz31xAAAA"},"packages/frontend/editor-ui/src/app/composables/useAutocompleteTelemetry.ts":{"12":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","57":[45,122,123,124,129,131,132,133],"61":[45,122,123,124,129,131,132,133],"96":[45,122,123,124,129,131,132,133],"103":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","109":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA"},"packages/frontend/editor-ui/src/features/execution/logs/components/ChatMessagesPanel.vue":{"30":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","57":[5,6,67,7,39,93,108,51],"61":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","67":[5,39],"76":[5,6,67,7,39,93,108,51],"96":[5,6,67,7,39,93,108,51],"105":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","107":[5,6,67,7,39,93,108,51],"117":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","119":[6,67,39,51],"135":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","137":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","145":[39],"154":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","156":[39],"166":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","168":[39],"182":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","190":[5,6,7,39,51],"193":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","208":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","210":[39],"214":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","221":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA","227":"b:4AAAEIAACAAIgAAwABAAAAEAAAAA"},"packages/frontend/editor-ui/src/features/ndv/panel/components/InputNodeSelect.vue":{"18":"b:AAAAAAAACAAIgAAYAAAA4AYAAAAA","29":"b:AAAAAAAACAAIgAAYAAAA4AYAAAAA","33":"b:AAAAAAAACAAIgAAYAAAA4AYAAAAA","40":"b:AAAAAAAACAAIgAAYAAAA4AYAAAAA","43":[91,51,125,126,127,130],"56":[91,51,125,126,127,130],"58":[91,51,125,126,127,130],"65":[91,51,125,126,127,130],"70":[91,51,125,126,127,130],"79":[91,51,125,126,127,130],"106":[91,51,125,126,127,130],"110":[91,51,125,126,127,130],"116":[130],"118":"b:AAAAAAAACAAIgAAYAAAA4AYAAAAA","133":"b:AAAAAAAACAAIgAAYAAAA4AYAAAAA","139":"b:AAAAAAAACAAIgAAYAAAA4AYAAAAA","143":[91,51,125,126,127,130],"149":[91,51,125,126,127,130]},"packages/frontend/editor-ui/src/features/ndv/panel/components/WireMeUp.vue":{"8":"b:AEAAAEAEAgAIgAAQAEAAQIoAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionFunctionIcon.vue":{"8":"b:QAAAEAAgAAAIgIASACAATTUAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionParameterInput.vue":{"26":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","67":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","68":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","78":"b:AAAAAAAgAAAAAAAAAAAAHD4AAAAA","84":"b:AAAAAAAgAAAAAAAAAAAAHD4AAAAA","89":[45,122,123,124,129,130,132,133],"97":"b:QgAAEAAgCAAIgAAiAAAAXTcAAAAA","100":"b:QgAAAAAgCAAAAAAAAAAAHTcAAAAA","128":"b:QgAAAAAgCAAAAIACAAAAHT8AAAAA","137":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","181":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","185":"b:QgAAEAAgCAAIgAAyACAADQUAAAAA","196":"b:QgAAEAAgCAAIgAAiAAAAXTcAAAAA","199":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","219":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","244":[123]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputHint.vue":{"13":"b:QgAAAGAgGAAIAAASAEQoXb8IAAAA","21":"b:QgAAAGAgGAAIAAASAEQoXb8IAAAA","23":[89],"27":"b:AgAAAAAgCAAAAAACAAAAHT4AAAAA","39":"b:QgAAAGAgGAAIAAASAEQoXb8IAAAA","43":"b:QgAAAGAgGAAIAAASAEQoXb8IAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceLocator/ResourceLocator.vue":{"77":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","167":[129,132],"176":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","189":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","196":[126,132],"199":[126,132],"208":[126,132],"221":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","234":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","238":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","242":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","243":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","255":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","291":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","301":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","303":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","316":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","318":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","321":[132],"329":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","331":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","338":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","342":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","343":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","344":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","347":[126,132],"351":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","365":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","371":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","377":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","381":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","468":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","474":[126,132],"482":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","493":[129,132],"503":[126,132],"523":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","524":[126,129,132],"544":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","545":[6,67,16,79,42,92,129,132],"566":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","570":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","575":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","580":"b:QAAAAAAECAAIAAgQAAQAQAMIAAAA","590":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","596":[129,132],"623":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","646":[132],"666":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","668":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","673":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","681":[129,132],"698":[132],"704":[132],"710":[129,132],"729":[129,132],"751":[126,132],"758":[132],"770":[126,132],"781":[126,132],"898":[132],"911":[132],"919":[126,129,132],"944":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","952":[126,132],"958":[126,132],"971":[126,129,132],"1014":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","1044":[126,132],"1051":[126,132],"1056":[132],"1084":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","1104":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","1106":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","1113":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","1135":"b:QAABAAAECgAIgAgQgAQAQBMIAAAA","1187":"b:QAAAAAAACAAIgAgQAAQAQBMAAAAA","1214":[129,132]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceLocator/ResourceLocatorDropdown.vue":{"13":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","58":[132],"74":[42,132],"76":[132],"116":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","117":[42,126,132],"123":[42,126,132],"132":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","136":"b:QAAAAAAECAAIAAgQAAQAQAMKAAAA","213":[42],"216":[42],"242":[129,132],"248":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","250":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","264":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","276":"b:QAABAAAECgAIgAgQgAQAQBMKAAAA","279":[42,126,132],"301":[42,132],"338":[42],"340":[42],"348":[132],"387":[132]},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/InlineExpressionEditorInput.vue":{"26":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","39":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","51":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","75":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","81":"b:QgAAAAAgCAAAAIACAAAAHT8AAAAA","88":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","97":"b:AAAAAAAgAAAAAAAAAAAAHD4AAAAA","104":"b:AAAAAAAgAAAAAAAAAAAAHD4AAAAA","107":[45,122,123,124,129,131,132,133],"118":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/InlineExpressionEditorOutput.vue":{"32":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","38":"b:QgAAEAAgCAAIgAAyACAgDQUAAAAA","45":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","62":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","66":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","72":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/theme.ts":{"4":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","18":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","58":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/composables/useExpressionEditor.ts":{"60":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","71":[45,122,123,124,129,131,132,133],"86":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","104":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","109":"b:QgAAEAAgCAAIgIAyACAgHT8AAAAA","123":"b:QgAAEAAgCAAIgIAyACAgHT8AAAAA","143":"b:QgAAEAAgCAAIgIAyACAgHT8AAAAA","177":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","181":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","187":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","198":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","202":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","213":"b:QgAAEAAgAAAIgAAQACAgXDcAAAAA","221":"b:QgAAEAAgAAAIgAAQACAgXD8AAAAA","228":"b:AAAAAAAAAAAAAAAAAAAgHDoAAAAA","239":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","250":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","277":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","282":"b:AAAAAAAgAAAAAAAAAAAAHD4AAAAA","294":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","310":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","318":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","328":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","340":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","351":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","355":"b:QgAAEAAgCAAIgAAyACAgDQUAAAAA","362":[6,67,79,28,92,93,109,122,128],"364":[6,67,79,28,92,93,109,122,128],"370":[6,67,79,28,92,93,109,122,128],"380":"b:QgAAEAAgCAAIgIAyACAgHT8AAAAA","448":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","450":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","451":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","454":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","455":"b:QgAAAAAgCAAAAIACAAAgHT8AAAAA","485":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","488":"b:QgAAAAAgCAAAAIACAAAAHT8AAAAA","518":"b:QgAAAAAgCAAAAIACAAAAHT8AAAAA","534":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","535":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","545":[45,122,123,124,129,131,132,133],"565":[45,122,123,124,129,131,132,133]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/addCompletions.ts":{"8":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","15":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/dragAndDrop.ts":{"15":"b:xsAAEABgCAAIiJAyAeA4Xz9BAAAA","18":"b:RgAAEABgCAAIiIAyASA4XT8BAAAA","20":"b:RgAAEAAgCAAIiIAyACA4XT8BAAAA","35":"b:xsAAEABgCAAIiJAyAeA4Xz9BAAAA","42":"b:xsAAEABgCAAIiJAyAeA4Xz9BAAAA","46":"b:xsAAEABgCAAIiJAyAeA4Xz9BAAAA","93":"b:wkAAEAAgCAAIiBAyAeA4XQ9AAAAA","97":"b:AAAAAABgAAAICAAAAAAgXD4BAAAA","104":"b:AAAAAABgAAAAAAAAAAAwXD4AAAAA","112":"b:AAAAAABgAAAICAAAAAAgHD4BAAAA","115":"b:AAAAAABgAAAAAAAAAAAgXD4AAAAA","163":"b:xsAAEABgCAAIiJAyAeA4Xz9BAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/expressionCloseBrackets.ts":{"10":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA","14":"b:AAAAAAAgAAAAAAAAAAAgHDoAAAAA","36":"b:QgAAEAAgCAAIgIAyACAgXT8AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/expressionDeprecations.ts":{"11":"b:QgAAEAAgCAAIgIAyACAgHT8AAAAA","15":"b:QgAAEAAgCAAIgIAyACAgHT8AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/n8nLang.ts":{"11":[89,123,124],"14":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","25":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","28":"b:QgAAEAAgCAAIgIAyACAAXT8AAAAA","32":"b:woAAEABgCAAIgJAyAKAgXz8BAAAA","37":[122,129,131]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/buttons/CanvasChatButton.vue":{"9":"b:4AAAEAAACAAIgAAwABAAAAEAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleNonMainInput.vue":{"19":"b:wQAAEAAACAIIgAAYACQAAAMAAAAA","21":"b:wQAAEAAACAIIgAAYACQAAAMAAAAA","27":"b:wQAAEAAACAIIgAAYACQAAAMAAAAA","33":"b:QAAAEAAACAIIgAAYACQAAAMAAAAA","39":"b:wQAAEAAACAIIgAAYACQAAAMAAAAA","44":[6,67,57,28],"48":[6,67,57,28],"52":[6,67,57,28],"54":"b:wQAAEAAACAIIgAAYACQAAAMAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/CanvasHandleNonMainOutput.vue":{"13":"b:wQAAEAAACAIIgAAYAAAAAAMAAAAA","15":"b:wQAAEAAACAIIgAAYAAAAAAMAAAAA","23":"b:wQAAEAAACAIIgAAYAAAAAAMAAAAA","27":"b:wQAAEAAACAIIgAAYAAAAAAMAAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/handles/render-types/parts/CanvasHandleDiamond.vue":{"13":"b:wQAAEAAACAIIgAAYACQAAAMAAAAA"},"packages/localhost-43425/assets/shield-alt-DX72YG8n.js":{"8":[92,49]},"packages/@n8n/api-types/src/dto/user/user-update-request.dto.ts":{"6":[100,66],"13":[100,66],"15":[100,66]},"packages/cli/src/controllers/me.controller.ts":{"32":[6,93,100,66,106,51,128],"48":[6,93,100,66,106,51,128],"108":[6,93,100,66,106,51,128],"120":[6,93,100,66,106,51,128],"174":[6,93,100,66,106,51,128],"183":[6,93,100,66,106,51,128],"193":[6,93,100,66,106,51,128],"231":[6,93,100,66,106,51,128],"264":[6,93,100,66,106,51,128],"309":[6,93,100,66,106,51,128]},"packages/cli/src/controllers/mfa.controller.ts":{"22":[66],"33":[66],"68":[66],"76":[66],"119":[66],"160":[66],"204":[66]},"packages/cli/src/errors/response-errors/auth.error.ts":{"4":[63,66]},"packages/cli/src/mfa/mfa.service.ts":{"17":[66],"27":[66],"35":[66],"36":[66],"39":[66],"45":[66],"60":[66],"68":[66],"80":[66],"83":[66],"91":[66],"95":[66],"100":[66],"107":[66],"120":[66],"127":[66],"136":[66],"145":[66],"155":[66],"165":[66]},"packages/cli/src/mfa/totp.service.ts":{"6":[66],"10":[66],"26":[66],"38":[66]},"packages/cli/src/modules/instance-registry/checks/check.service.ts":{"46":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","57":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","63":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","75":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","83":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","88":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","90":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","96":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","111":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","115":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","133":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","148":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","157":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","193":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","214":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","228":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","239":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","245":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","254":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","277":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","301":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA"},"packages/cli/src/modules/instance-registry/stale-member-cleanup.service.ts":{"17":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","25":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","30":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","34":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","42":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","47":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA","59":"b:AAAAAoABAgAEgCMAAKVAAgAAAAAA"},"packages/@n8n/design-system/src/types/menu.ts":{"56":[58,42,66,115]},"packages/frontend/editor-ui/src/app/components/layouts/EmptyStateLayout.vue":{"25":[58,13,42,65,66,101,53],"58":[42],"63":[58,13,42,65,66,101,53],"74":[58,13,42,65,66,101,53],"100":[58,13,42,65,66,101,53],"116":[58,13,42,65,66,101,53],"202":[58,13,42,65,66,101,53],"212":[65],"277":[58,13,42,65,66,101,53],"286":[58,13,42,65,66,101,53]},"packages/frontend/editor-ui/src/app/composables/useAutoScrollOnDrag.ts":{"13":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","20":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","99":[39],"103":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","108":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","117":"b:ABAAAIAH4gAEAkMAgAAAAIAAAQAA","125":"b:ABAAAAAH4gAEAkMAgAAAAIAAAAAA"},"packages/frontend/editor-ui/src/app/composables/useDependencies.ts":{"14":"b:ALBhAIAn4gQGgkMAoAEAAIAAAQAA","18":"b:ABBhAIAnogAAgkMAAAEAAIAAAQAA","59":[21,81,42,49,55],"67":"b:ABBhAIAnogAAgkMAAAEAAIAAAQAA","70":[21,81,42,49,55],"73":"b:ABBhAIAnogAAgkMAAAEAAIAAAQAA"},"packages/frontend/editor-ui/src/app/composables/useLatestFetch.ts":{"1":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","4":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","6":"b:ADAAAIAHogQGAkMAoAAAAIAAAQAA"},"packages/frontend/editor-ui/src/app/views/WorkflowsView.vue":{"186":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","238":[39,40],"283":[39,40],"285":[39,40],"290":[39,40],"292":[39,40],"297":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","301":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","305":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","307":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","311":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","315":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","322":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","326":[80,39,40,41,42,53,55],"330":[80,39,40,41,42,53,55],"336":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","340":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","344":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","348":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","353":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","360":[80,39,40,41,42,53,55],"366":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","372":[39,40],"378":[39,40],"383":[80,39,40,41,42,53,55],"389":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","391":[80,39,40,41,42,53,55],"395":[80,39,40,41,42,53,55],"408":[80,39,40,41,42,53,55],"433":[80,39,40,41,42,53,55],"456":[80,39,40,41,42,53,55],"468":[80,39,40,41,42,53,55],"496":[80,39,40,41,42,53,55],"505":[39,40],"509":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","510":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","548":[55],"563":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","577":[39,40,53,55],"588":[39,40,53],"597":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","603":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","607":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","620":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","624":"b:ADAAAIAH4gQGAkMAoAAAAIAAAQAA","629":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","641":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","651":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","653":[39,40],"672":[41,42,55],"715":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","725":[12,81,40,41,42,103,49,53,55],"729":[12,81,40,41,42,103,49,53,55],"737":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","757":"b:ABAAAAAH4gAEAkMAgAAAAIAAAAAA","775":"b:ALAAAAAGoAQGAkMAIAAAAIAAAQAA","791":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","848":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","862":[55],"896":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","897":[39,40],"915":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","916":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","949":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","970":[80,39,40,41,42,53,55],"978":[40,55],"989":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","1019":[80,39,40,41,42,53,55],"1059":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","1064":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","1093":[55],"1135":[42],"1148":[42],"1271":[55],"1272":[55],"1281":[39],"1282":[39],"1312":[39,40],"1335":[39],"1357":[39],"1365":[39],"1384":[39],"1416":[40],"1647":[40],"1708":[40],"1746":[40],"1827":[40],"1862":[39],"1989":[41,42],"2016":[41,42],"2063":[39],"2076":[39],"2213":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","2250":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","2317":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","2353":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","2363":[39,40],"2366":[39,40],"2367":[39,40],"2407":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","2410":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","2411":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","2449":[12,81,40,41,42,103,49,53,55],"2472":[55],"2485":[55],"2500":[55],"2516":[55],"2520":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","2528":[39,40,53],"2530":[39,40,53]},"packages/frontend/editor-ui/src/experiments/credentialsAppSelection/stores/credentialsAppSelection.store.ts":{"14":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","23":[58,13,42,65,66,101,53],"25":[58,13,42,65,66,101,53],"29":[58,13,42,65,66,101,53],"35":[58,13,42,65,66,101,53]},"packages/frontend/editor-ui/src/experiments/personalizedTemplates/stores/personalizedTemplates.store.ts":{"66":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","91":"b:ABAAAIAHogAAAkMAgAAAAIAAAQAA","164":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA"},"packages/frontend/editor-ui/src/experiments/personalizedTemplatesV3/stores/personalizedTemplatesV3.store.ts":{"12":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","26":"b:ABAAAAAHogAAAkMAgAAAAIAAAQAA","35":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","129":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA"},"packages/frontend/editor-ui/src/experiments/surfaceMcpToNewCloudUsers/composables/useSurfaceMcpEmptyState.ts":{"21":[58,13,42,65,66,101,53],"33":[58,13,42,65,66,101,53],"59":[58,13,42,65,66,101,53],"63":[58,13,42,65,66,101,53],"71":[58,13,42,65,66,101,53],"88":[58,13,42,65,66,101,53]},"packages/frontend/editor-ui/src/experiments/surfaceMcpToNewCloudUsers/composables/useSurfaceMcpToNewCloudUsersEligibility.ts":{"7":[58,13,42,65,66,101,53],"13":[58,13,42,65,66,101,53]},"packages/frontend/editor-ui/src/experiments/surfaceMcpToNewCloudUsers/stores/surfaceMcpToNewCloudUsers.store.ts":{"26":[58,13,42,65,66,101,53]},"packages/frontend/editor-ui/src/experiments/templateRecoV2/stores/templateRecoV2.store.ts":{"14":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","21":"b:ABAAAAAHogAAAkMAgAAAAIAAAQAA"},"packages/frontend/editor-ui/src/features/agents/composables/useAgentPermissions.ts":{"34":"b:ADBxAIAn4gQGgkMApAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/ai/mcpAccess/mcp.store.ts":{"35":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA"},"packages/frontend/editor-ui/src/features/core/auth/components/MfaSetupModal.vue":{"26":[66],"57":[66],"61":[66],"68":[66],"77":[66],"90":[66],"105":[66],"133":[66],"152":[66],"155":[66],"174":[66],"178":[66],"183":[66],"184":[66],"187":[66],"203":[66],"212":[66],"231":[66],"235":[66],"236":[66],"240":[66],"241":[66],"244":[66],"246":[66],"263":[66]},"packages/frontend/editor-ui/src/features/core/auth/components/PromptMfaCodeModal.vue":{"12":[66],"31":[66],"48":[66],"52":[66],"54":[66],"67":[66],"78":[66]},"packages/frontend/editor-ui/src/features/core/auth/views/MfaView.vue":{"63":[66],"86":[66],"107":[66],"116":[66],"117":[66],"129":[66],"155":[66],"164":[66],"189":[66],"194":[66],"204":[66],"225":[66]},"packages/frontend/editor-ui/src/features/core/auth/views/SignoutView.vue":{"14":[42,66],"23":[42,66]},"packages/frontend/editor-ui/src/features/core/folders/composables/useFolders.ts":{"12":[39],"16":[39],"20":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","25":[39,40],"29":[40],"63":[39],"80":[39],"86":[39,40],"101":[81,39,40,41,42,53,55],"109":[39],"130":[39,40]},"packages/frontend/editor-ui/src/features/workflows/composables/useWorkflowsEmptyState.ts":{"26":[58,13,42,65,66,101,53],"27":"b:ADAAAAAGoAQGAkMAIAAAAIAAAQAA","28":"b:ADAAAIAH4gQGAkMAoAAAAIAAAQAA","30":"b:ADAAAIAH4gQGAkMAoAAAAIAAAQAA","36":[58,13,42,65,66,101,53],"40":"b:ADAAAIAHogQGAkMAoAAAAIAAAQAA","48":[58,13,42,65,66,101,53],"56":[58,13,42,65,66,101,53],"74":[58,13,42,65,66,101,53],"89":[65]},"packages/frontend/editor-ui/src/features/workflows/templates/recommendations/recommendedTemplates.store.ts":{"17":"b:ALAAAIAH4gQGAkMAoAAAAIAAAQAA","25":"b:ADAAAIAHogQGAkMAoAAAAIAAAQAA"},"packages/localhost-38945/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[66]},"packages/localhost-38945/assets/chunk-CC9Q-vWm.js":{"8":[66],"9":[66],"10":[66],"19":[66],"23":[66],"29":[66],"33":[66],"34":[66]},"packages/@n8n/api-types/src/dto/project/list-projects-query.dto.ts":{"13":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA","14":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA","17":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA","26":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA","34":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA","35":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA","38":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA","41":"b:ABAwAAAmogAAAEIAgAIAAAAAAAAA"},"packages/cli/src/credentials/credentials.service.ee.ts":{"25":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","38":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","72":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","74":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","78":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","89":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","93":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","174":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","187":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","229":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA","231":"b:EACwAAACAgEAgAAAgAEAAAAAAEAA"},"packages/cli/src/middlewares/list-query/dtos/credentials.filter.dto.ts":{"22":[16,79,21,22,41,42,45,104,49]},"packages/cli/src/modules/external-secrets.ee/external-secrets-providers.ee.ts":{"13":[12,20,81,86,42,157,45,49,53,55],"23":[12,20,81,86,42,157,45,49,53,55],"27":[12,20,81,86,42,157,45,49,53,55],"31":[12,20,81,86,42,157,45,49,53,55],"35":[12,20,81,86,42,157,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/providers/aws-secrets-manager.ts":{"114":[12,20,81,86,42,157,45,49,53,55],"122":[12,20,81,86,42,157,45,49,53,55],"145":[12,20,81,86,42,157,45,49,53,55],"158":[12,20,81,86,42,157,45,49,53,55],"173":[12,20,81,86,42,157,45,49,53,55],"188":[12,20,81,86,42,157,45,49,53,55],"192":[12,20,81,86,42,157,45,49,53,55],"199":[12,20,81,86,42,157,45,49,53,55],"213":[12,20,81,86,42,157,45,49,53,55],"217":[12,20,81,86,42,157,45,49,53,55],"221":[12,20,81,86,42,157,45,49,53,55],"225":[12,20,81,86,42,157,45,49,53,55],"231":[12,20,81,86,42,157,45,49,53,55],"241":[12,20,81,86,42,157,45,49,53,55],"250":[12,20,81,86,42,157,45,49,53,55],"277":[12,20,81,86,42,157,45,49,53,55],"278":[12,20,81,86,42,157,45,49,53,55],"283":[12,20,81,86,42,157,45,49,53,55],"287":[12,20,81,86,42,157,45,49,53,55],"291":[12,20,81,86,42,157,45,49,53,55],"316":[12,20,81,86,42,157,45,49,53,55],"334":[12,20,81,86,42,157,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/providers/azure-key-vault/azure-key-vault.ts":{"81":[12,20,81,86,42,45,49,53,55],"86":[12,20,81,86,42,45,49,53,55],"92":[12,20,81,86,42,45,49,53,55],"96":[12,20,81,86,42,45,49,53,55],"97":[12,20,81,86,42,45,49,53,55],"114":[12,20,81,86,42,45,49,53,55],"130":[12,20,81,86,42,45,49,53,55],"134":[12,20,81,86,42,45,49,53,55],"143":[12,20,81,86,42,45,49,53,55],"222":[12,20,81,86,42,45,49,53,55],"226":[12,20,81,86,42,45,49,53,55],"230":[12,20,81,86,42,45,49,53,55],"234":[12,20,81,86,42,45,49,53,55],"245":[12,20,81,86,42,45,49,53,55],"267":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/providers/gcp-secrets-manager/gcp-secrets-manager.ts":{"47":[12,20,81,86,42,45,49,53,55],"52":[12,20,81,86,42,45,49,53,55],"64":[12,20,81,86,42,45,49,53,55],"68":[12,20,81,86,42,45,49,53,55],"89":[12,20,81,86,42,45,49,53,55],"104":[12,20,81,86,42,45,49,53,55],"108":[12,20,81,86,42,45,49,53,55],"116":[12,20,81,86,42,45,49,53,55],"129":[12,20,81,86,42,45,49,53,55],"182":[12,20,81,86,42,45,49,53,55],"209":[12,20,81,86,42,45,49,53,55],"213":[12,20,81,86,42,45,49,53,55],"217":[12,20,81,86,42,45,49,53,55],"221":[12,20,81,86,42,45,49,53,55],"245":[12,20,81,86,42,45,49,53,55],"256":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/providers/infisical.ts":{"164":[12,20,81,86,42,45,49,53,55],"172":[12,20,81,86,42,45,49,53,55],"177":[12,20,81,86,42,45,49,53,55],"184":[12,20,81,86,42,45,49,53,55],"210":[12,20,81,86,42,45,49,53,55],"221":[12,20,81,86,42,45,49,53,55],"242":[12,20,81,86,42,45,49,53,55],"276":[12,20,81,86,42,45,49,53,55],"289":[12,20,81,86,42,45,49,53,55],"291":[12,20,81,86,42,45,49,53,55],"294":[12,20,81,86,42,45,49,53,55],"295":[12,20,81,86,42,45,49,53,55],"304":[12,20,81,86,42,45,49,53,55],"307":[12,20,81,86,42,45,49,53,55],"314":[12,20,81,86,42,45,49,53,55],"320":[12,20,81,86,42,45,49,53,55],"336":[12,20,81,86,42,45,49,53,55],"348":[12,20,81,86,42,45,49,53,55],"364":[12,20,81,86,42,45,49,53,55],"368":[12,20,81,86,42,45,49,53,55],"372":[12,20,81,86,42,45,49,53,55],"376":[12,20,81,86,42,45,49,53,55],"386":[12,20,81,86,42,45,49,53,55],"411":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/providers/one-password.ts":{"61":[12,20,81,86,42,45,49,53,55],"66":[12,20,81,86,42,45,49,53,55],"92":[12,20,81,86,42,45,49,53,55],"94":[12,20,81,86,42,45,49,53,55],"118":[12,20,81,86,42,45,49,53,55],"137":[12,20,81,86,42,45,49,53,55],"141":[12,20,81,86,42,45,49,53,55],"188":[12,20,81,86,42,45,49,53,55],"192":[12,20,81,86,42,45,49,53,55],"196":[12,20,81,86,42,45,49,53,55],"200":[12,20,81,86,42,45,49,53,55],"204":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/providers/vault.ts":{"278":[12,20,81,86,42,45,49,53,55],"286":[12,20,81,86,42,45,49,53,55],"291":[12,20,81,86,42,45,49,53,55],"298":[12,20,81,86,42,45,49,53,55],"325":[12,20,81,86,42,45,49,53,55],"342":[12,20,81,86,42,45,49,53,55],"349":[12,20,81,86,42,45,49,53,55],"366":[12,20,81,86,42,45,49,53,55],"375":[12,20,81,86,42,45,49,53,55],"402":[12,20,81,86,42,45,49,53,55],"428":[12,20,81,86,42,45,49,53,55],"451":[12,20,81,86,42,45,49,53,55],"465":[12,20,81,86,42,45,49,53,55],"500":[12,20,81,86,42,45,49,53,55],"534":[12,20,81,86,42,45,49,53,55],"535":[12,20,81,86,42,45,49,53,55],"542":[12,20,81,86,42,45,49,53,55],"546":[12,20,81,86,42,45,49,53,55],"557":[12,20,81,86,42,45,49,53,55],"560":[12,20,81,86,42,45,49,53,55],"568":[12,20,81,86,42,45,49,53,55],"571":[12,20,81,86,42,45,49,53,55],"584":[12,20,81,86,42,45,49,53,55],"590":[12,20,81,86,42,45,49,53,55],"606":[12,20,81,86,42,45,49,53,55],"613":[12,20,81,86,42,45,49,53,55],"621":[12,20,81,86,42,45,49,53,55],"636":[12,20,81,86,42,45,49,53,55],"669":[12,20,81,86,42,45,49,53,55],"673":[12,20,81,86,42,45,49,53,55],"677":[12,20,81,86,42,45,49,53,55],"678":[12,20,81,86,42,45,49,53,55],"684":[12,20,81,86,42,45,49,53,55],"696":[12,20,81,86,42,45,49,53,55],"707":[12,20,81,86,42,45,49,53,55],"715":[12,20,81,86,42,45,49,53,55],"723":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.controller.ee.ts":{"32":[12,20,81,86,42,45,49,53,55],"41":[12,20,81,86,42,45,49,53,55],"81":[12,20,81,86,42,45,49,53,55],"104":[12,20,81,86,42,45,49,53,55],"122":[12,20,81,86,42,45,49,53,55],"135":[12,20,81,86,42,45,49,53,55],"138":[12,20,81,86,42,45,49,53,55],"145":[12,20,81,86,42,45,49,53,55],"157":[12,20,81,86,42,45,49,53,55],"172":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/secrets-providers-project.controller.ee.ts":{"32":[12,20,81,86,42,45,49,53,55],"42":[12,20,81,86,42,45,49,53,55],"56":[12,20,81,86,42,45,49,53,55],"89":[12,20,81,86,42,45,49,53,55],"96":[12,20,81,86,42,45,49,53,55],"101":[12,20,81,86,42,45,49,53,55],"125":[12,20,81,86,42,45,49,53,55],"160":[12,20,81,86,42,45,49,53,55],"181":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/secrets-providers-types.controller.ee.ts":{"16":[12,20,81,86,42,45,49,53,55],"25":[12,20,81,86,42,45,49,53,55],"41":[12,20,81,86,42,45,49,53,55],"44":[12,20,81,86,42,45,49,53,55],"51":[12,20,81,86,42,45,49,53,55]},"packages/cli/src/modules/external-secrets.ee/types.ts":{"29":[12,20,81,86,42,157,49,53,55],"52":[12,20,81,86,42,157,49,53,55],"75":[12,20,81,86,42,157,49,53,55],"92":[12,20,81,86,42,157,49,53,55],"93":[12,20,81,86,42,157,49,53,55],"99":[12,20,81,86,42,157,49,53,55]},"packages/cli/src/modules/provisioning.ee/provisioning.service.ee.ts":{"38":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","55":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","59":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","67":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","150":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","216":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","229":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","259":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","261":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","264":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","281":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","339":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","372":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","376":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","395":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","410":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","418":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","426":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","434":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","439":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","444":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","453":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","457":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","465":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","472":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","505":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","526":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","533":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","541":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","594":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","621":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","631":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","643":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","645":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","650":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","666":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","690":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","701":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA","707":"b:EDB1CIAv4gAAAAAAIAAAAAAAAAAA"},"packages/nodes-base/nodes/Notion/Notion.node.ts":{"8":[79,42,103,49,129,139]},"packages/nodes-base/nodes/Notion/shared/GenericFunctions.ts":{"27":[79,42,103,49,115,129,139],"48":[79,42,103,49,115,129,139],"84":[79,42,103,49,115,129,139],"118":[79,42,103,49,115,129,139],"139":[79,42,103,49,115,129,139],"160":[79,42,103,49,115,129,139],"205":[79,42,103,49,115,129,139],"213":[79,42,103,49,115,129,139],"219":[79,42,103,49,115,129,139],"225":[79,42,103,49,115,129,139],"249":[79,42,103,49,115,129,139],"296":[79,42,103,49,115,129,139],"305":[79,42,103,49,115,129,139],"321":[79,42,103,49,115,129,139],"328":[79,42,103,49,115,129,139],"332":[79,42,103,49,115,129,139],"339":[79,42,103,49,115,129,139],"358":[79,42,103,49,115,129,139],"367":[79,42,103,49,115,129,139],"370":[79,42,103,49,115,129,139],"371":[79,42,103,49,115,129,139],"373":[79,42,103,49,115,129,139],"376":[79,42,103,49,115,129,139],"394":[79,42,103,49,115,129,139],"396":[79,42,103,49,115,129,139],"397":[79,42,103,49,115,129,139],"414":[79,42,103,49,115,129,139],"473":[79,42,103,49,115,129,139],"485":[79,42,103,49,115,129,139],"493":[79,42,103,49,115,129,139],"501":[79,42,103,49,115,129,139],"505":[79,42,103,49,115,129,139],"517":[79,42,103,49,115,129,139],"519":[79,42,103,49,115,129,139],"527":[79,42,103,49,115,129,139],"528":[79,42,103,49,115,129,139],"536":[79,42,103,49,115,129,139],"537":[79,42,103,49,115,129,139],"585":[79,42,103,49,115,129,139],"592":[79,42,103,49,115,129,139],"613":[79,42,103,49,115,129,139],"619":[79,42,103,49,115,129,139],"621":[79,42,103,49,115,129,139],"625":[79,42,103,49,115,129,139],"644":[79,42,103,49,115,129,139],"652":[79,42,103,49,115,129,139],"660":[79,42,103,49,115,129,139],"662":[79,42,103,49,115,129,139],"667":[79,42,103,49,115,129,139],"675":[79,42,103,49,115,129,139],"721":[79,42,103,49,115,129,139],"730":[79,42,103,49,115,129,139],"817":[79,42,103,49,115,129,139],"835":[79,42,103,49,115,129,139],"851":[79,42,103,49,115,129,139],"872":[79,42,103,49,115,129,139],"912":[79,42,103,49,115,129,139],"921":[79,42,103,49,115,129,139],"947":[79,42,103,49,115,129,139],"960":[79,42,103,49,115,129,139],"1080":[79,42,103,49,115,129,139],"1094":[79,42,103,49,115,129,139],"1095":[79,42,103,49,115,129,139],"1108":[79,42,103,49,115,129,139],"1125":[79,42,103,49,115,129,139],"1130":[79,42,103,49,115,129,139],"1138":[79,42,103,49,115,129,139],"1155":[79,42,103,49,115,129,139],"1167":[79,42,103,49,115,129,139],"1207":[79,42,103,49,115,129,139]},"packages/nodes-base/nodes/Notion/shared/descriptions/Blocks.ts":{"377":[79,42,103,49,129,139],"426":[79,42,103,49,129,139],"442":[79,42,103,49,129,139],"458":[79,42,103,49,129,139],"468":[79,42,103,49,129,139],"478":[79,42,103,49,129,139],"493":[79,42,103,49,129,139],"557":[79,42,103,49,129,139]},"packages/nodes-base/nodes/Notion/shared/descriptions/Filters.ts":{"1":[79,42,103,49,115,129,139]},"packages/nodes-base/nodes/Notion/shared/methods/listSearch.ts":{"10":[79,42,103,49,115,129,139],"28":[79,42,103,49,115,129,139]},"packages/nodes-base/nodes/Notion/v1/NotionV1.node.ts":{"34":[79,42,103,49,129,139],"44":[79,42,103,49,129,139],"69":[79,42,103,49,129,139],"80":[79,42,103,49,129,139],"92":[79,42,103,49,129,139],"103":[79,42,103,49,129,139],"106":[79,42,103,49,129,139],"116":[79,42,103,49,129,139],"121":[79,42,103,49,129,139],"127":[79,42,103,49,129,139],"132":[79,42,103,49,129,139],"145":[79,42,103,49,129,139],"172":[79,42,103,49,129,139],"184":[79,42,103,49,129,139],"195":[79,42,103,49,129,139],"203":[79,42,103,49,129,139],"223":[79,42,103,49,129,139],"404":[79,42,103,49,129,139],"409":[79,42,103,49,129,139]},"packages/nodes-base/nodes/Notion/v2/NotionV2.node.ts":{"38":[79,42,103,49,129,139],"47":[79,42,103,49,129,139],"140":[79,42,103,49,129,139],"453":[79,42,103,49,129,139],"457":[79,42,103,49,129,139]},"packages/nodes-base/nodes/Notion/v2/methods/loadOptions.ts":{"11":[79,42,103,49,129,139],"37":[79,42,103,49,129,139],"49":[79,42,103,49,129,139],"63":[79,42,103,49,129,139],"75":[79,42,103,49,129,139],"79":[79,42,103,49,129,139],"91":[79,42,103,49,129,139],"99":[79,42,103,49,129,139],"105":[79,42,103,49,129,139],"111":[79,42,103,49,129,139],"125":[79,42,103,49,129,139],"154":[79,42,103,49,129,139],"166":[79,42,103,49,129,139],"177":[79,42,103,49,129,139],"185":[79,42,103,49,129,139]},"packages/@n8n/design-system/src/components/N8nActionBox/ActionBox.vue":{"33":"b:ABBxAIBnowgAgEMAzgEAAAAAAAAA","46":"b:ABBhAIBnowgAgAMAzgEAAAAAAAAA","51":"b:ABBxAAAnowgAgEMAxgEAAAAAAAAA","59":"b:ABBhAIBnowgAgAMAzgEAAAAAAAAA","67":[16,22,81,98,45,46,99,48]},"packages/@n8n/design-system/src/components/N8nBadge/Badge.vue":{"23":"b:QBBxEAAv4gAAgkMApAcAAIEQAQAA","25":"b:QBBhEAAv4gAAgkMApAcAAIEQAQAA"},"packages/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.vue":{"52":[12,20,81,86,42,45,101,49,53,55],"95":[12,20,81,86,42,45,101,49,53,55],"96":[20,81,86,42,45,101,49],"104":[12,20,81,86,42,45,101,49,53,55],"111":[12,20,81,86,42,45,101,49,53,55],"115":[12,20,81,86,42,45,101,49,53,55],"121":[12,20,81,86,42,45,101,49,53,55],"133":[12,20,81,86,42,45,101,49,53,55],"137":[12,20,81,86,42,45,101,49,53,55],"146":[12,20,81,86,42,45,101,49,53,55],"151":[12,20,81,86,42,45,101,49,53,55],"180":[12,20,81,86,42,45,101,49,53,55],"181":[12,20,81,86,42,45,101,49,53,55],"192":[12,20,81,86,42,45,101,49,53,55],"218":[12,20,81,86,42,45,101,49,53,55],"226":[20,86],"229":[20,86],"241":[12,20,81,86,42,45,101,49,53,55],"290":[12,20,81,86,42,45,101,49,53,55],"322":[20,86],"340":[12,20,81,86,42,45,101,49,53,55],"344":[101],"356":[20,86],"389":[12,20,81,86,42,45,101,49,53,55],"406":[12,20,81,86,42,45,101,49,53,55],"407":[12,81,86,42,45,101,49,53,55],"466":[12,20,81,86,42,45,101,49,53,55],"467":[12,81,86,42,45,101,49,53,55],"472":[12,20,81,86,42,45,101,49,53,55]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/data-table.svg":{"11":"b:QAABAAAEAgAAwAAAgAAgQAIIAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/information-extractor.svg":{"11":[16,79,85,42,103,49,129,139]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/no-operation.svg":{"11":"b:AAABBEAEAgAAgKjIgAAIDQ6IAQAA"},"packages/@n8n/design-system/src/components/N8nIconPicker/IconPicker.vue":{"45":[12,20,81,86,42,45,49,53,55],"77":[42],"79":[42],"81":[42],"83":[42],"87":[42],"90":[42],"94":[42],"98":[42],"99":[42],"112":[42],"122":[12,20,81,86,42,45,49,53,55],"134":[12,20,81,86,42,49,53,55],"149":[42],"150":[42],"155":[42],"160":[42],"165":[42],"181":[42],"191":[42],"215":[42],"216":[42],"217":[12,20,81,86,42,45,49,53,55],"236":[12,20,81,86,42,45,49,53,55],"266":[42],"290":[42],"302":[42],"317":[42],"324":[42],"336":[42],"355":[42],"363":[42],"394":[42],"402":[42],"409":[42]},"packages/@n8n/design-system/src/components/N8nIconPicker/types.ts":{"17":"b:EBB1B4AnonAAgEYAoAEAABAAAAAA"},"packages/@n8n/design-system/src/components/N8nIconPicker/useIconPickerSearch.ts":{"25":[12,20,81,86,42,45,49,53,55],"67":[42],"105":[42],"111":[42],"121":[42],"127":[42]},"packages/@n8n/design-system/src/components/N8nRecycleScroller/RecycleScroller.vue":{"14":[16,79,21,22,41,42,45,104,49],"30":[16,79,21,22,41,42,45,104,49],"31":[16,79,21,22,41,42,45,104,49],"48":[16,79,21,22,41,42,45,104,49],"50":[16,79,21,22,41,42,45,104,49],"60":[16,79,21,22,41,42,45,104,49],"61":[16,79,21,22,41,42,45,104,49],"72":[16,79,21,22,41,42,45,104,49],"76":[16,79,21,22,41,42,45,104,49],"77":[16,79,21,22,41,42,45,104,49],"79":[16,79,21,22,41,42,45,104,49],"81":[16,79,21,22,41,42,45,104,49],"94":[16,79,21,22,41,42,45,104,49],"102":[16,79,21,22,41,42,45,104,49],"106":[16,79,21,22,41,42,45,104,49],"116":[16,79,21,22,41,42,45,104,49],"120":[16,79,21,22,41,42,45,104,49],"132":[16,79,21,22,41,42,45,104,49],"133":[16,79,21,22,41,42,45,104,49],"141":[16,79,21,22,41,42,45,104,49],"147":[16,79,21,22,41,42,45,104,49],"148":[16,79,21,22,41,42,45,104,49],"167":[16,79,21,22,41,42,45,104,49],"170":[16,79,21,22,41,42,45,104,49],"201":[16,79,21,22,41,42,45,104,49],"208":[16,79,21,22,41,42,45,104,49],"210":[16,79,21,22,41,42,45,104,49]},"packages/@n8n/design-system/src/components/N8nUserInfo/UserInfo.vue":{"22":[12,20,81,86,42,45,101,49,53,55],"29":[12,20,81,86,42,45,101,49,53,55],"35":[12,20,81,86,42,45,101,49,53,55],"50":[12,20,81,86,42,45,101,49,53,55],"58":[12,20,81,86,42,45,101,49,53,55]},"packages/@n8n/design-system/src/components/N8nUserSelect/UserSelect.vue":{"22":[12,20,81,86,42,45,49,53,55],"40":[12,20,81,86,42,45,49,53,55],"43":[20,81,86,42,45,49],"63":[12,20,81,86,42,45,49,53,55],"64":[20,81,86,42,45,49],"80":[20,86],"88":[20],"89":[20,86],"91":[20,81,86,42,45,49],"93":[12,20,81,86,42,45,49,53,55],"112":[12,20,81,86,42,45,49,53,55],"114":[12,20,81,86,42,45,49,53,55],"117":[20,81,86,42,45,49],"124":[81,86,42,45,49]},"packages/@n8n/design-system/src/directives/n8n-truncate.ts":{"19":"b:ABBhAAAnogAAgkMABAEAAIAAAQAA"},"packages/frontend/editor-ui/src/app/api/workflow-dependencies.ts":{"9":"b:ABAgAIAHogAAgkMAAAAAAIAAAQAA"},"packages/frontend/editor-ui/src/app/components/DependencyPill.vue":{"37":[21,81,42,49,55],"39":[21,81,42,49,55],"45":[21,81,42,49,55],"47":[21,81,42,49,55],"51":[21,81,42,49,55],"93":[21,81,42,49,55],"219":[21,81,42,49,55],"222":[21,81,42,49,55]},"packages/frontend/editor-ui/src/app/components/forms/ResourceFiltersDropdown.vue":{"51":[55],"63":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","66":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","89":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","91":[55],"115":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","119":[55],"126":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","130":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","142":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","148":[55],"164":[55],"182":[55]},"packages/frontend/editor-ui/src/app/components/layouts/ResourcesListEmptyState.vue":{"54":[98],"56":"b:ABBhAAAnogAAgAMAhAEAAAAAAAAA","77":"b:ABBhAAAnogAAgAMAhAEAAAAAAAAA","81":"b:ABBhAAAnogAAgAMAhAEAAAAAAAAA","92":[16,22,81,98,45]},"packages/frontend/editor-ui/src/app/components/layouts/ResourcesListLayout.vue":{"150":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","151":[55],"154":"b:ABBhAIAnogAAgkMAhAEAAIAAAQAA","167":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","177":"b:ABBhAIAnogAAgkMAhAEAAIAAAQAA","181":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","185":[16,79,21,22,41,42,98,45,104,49],"210":[79,41,98,49],"254":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","255":[55],"264":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","271":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","272":[80,39,40,41,42,53,55],"278":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","285":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","286":[40,98,55],"290":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","291":[16,21,104,49],"297":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","304":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","311":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","323":"b:ABAAAAAH4gAAAEMAgAAAAIAAAAAA","328":[16,79,40,98,45,104,49,55],"342":"b:ABBhAIAnogAAgkMAhAEAAIAAAQAA","356":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","361":[55],"366":"b:ABBhAIAnogAAgkMAhAEAAIAAAQAA","370":[81],"378":[79],"389":"b:AAAhAIAHIgAAAAMAAAEAAAAAAAAA","399":"b:AAAhAIAHogAAAAMAAAEAAAAAAAAA","407":[21,80,41,42,104,49,53],"414":"b:AAAhAIAHogAAAAMAAAEAAAAAAAAA","429":[98],"433":[55],"437":"b:AAAhAIAHIgAAAAMAAAEAAAAAAAAA","438":"b:AAAhAIAHIgAAAAMAAAEAAAAAAAAA","451":[16,79,21,22,41,42,45,104,49],"458":[98],"465":[79],"471":[55],"475":[40,98,55],"489":[79,81],"538":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","588":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","604":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","622":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","637":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","647":[79],"648":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","650":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","668":[55],"686":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","692":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA","719":[16,79,21,22,41,42,45,104,49],"730":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","762":[98],"766":[98],"777":[98,55]},"packages/frontend/editor-ui/src/app/composables/useN8nLocalStorage.ts":{"26":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","29":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","33":[81],"58":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA"},"packages/frontend/editor-ui/src/app/composables/useResourcesListI18n.ts":{"8":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","15":"b:ABBhAIAnogAAgkMABAEAAIAAAQAA"},"packages/frontend/editor-ui/src/app/utils/modules/tabUtils.ts":{"22":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","45":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","49":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/ai/instanceAi/composables/useInstanceAiAvailability.ts":{"13":[16,79,21,22,41,42,45,104,49],"15":[16,79,21,22,42,45,104,49]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectCreateResource.vue":{"14":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","23":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","34":[81,40],"35":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectDeleteDialog.vue":{"62":[12,20,81,86,42,45,49,53,55]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectExternalSecrets.vue":{"27":[12,20,81,86,42,45,49,53,55],"53":[12,20,81,86,42,45,49,53,55],"58":[12,20,81,86,42,45,49,53,55],"62":[45],"66":[12,20,81,86,42,45,49,53,55],"70":[12,20,81,86,42,45,49,53,55],"77":[12,20,81,86,42,45,49,53,55],"90":[12,20,81,86,42,45,49,53,55],"117":[12,20,81,86,42,45,49,53,55],"121":[12,20,81,86,42,45,49,53,55],"132":[12,20,81,86,42,45,49,53,55],"149":[45],"150":[45],"162":[45],"172":[45],"180":[12,20,81,86,42,45,49,53,55],"183":[45],"184":[45],"188":[12,20,81,86,42,45,49,53,55],"264":[12,20,81,86,42,45,49,53,55],"265":[12,20,81,86,42,45,49,53,55],"275":[12,20,81,86,42,45,49,53,55],"291":[12,20,81,86,42,45,49,53,55],"303":[12,20,81,86,42,45,49,53,55],"305":[12,20,81,86,42,45,49,53,55],"308":[12,20,81,86,42,45,49,53,55],"311":[12,20,81,86,42,45,49,53,55],"320":[12,20,81,86,42,45,49,53,55],"328":[12,20,81,86,42,45,49,53,55],"345":[45],"356":[45],"372":[45],"393":[45],"397":[45]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectHeader.vue":{"46":"b:ABBRAIAnogAAgEIAgAAAAAAAAAAA","48":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","50":"b:ABBRAIAnogAAgEIAgAAAAAAAAAAA","70":"b:ABBRAIAnogAAgEIAgAAAAAAAAAAA","82":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","86":"b:ABBxAIAn4gAAgEMAgAEAAAAAAAAA","90":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","107":"b:ABBxAIAn4gAAgEMAgAEAAAAAAAAA","110":[98],"113":[98],"117":"b:ABAhAAAGogAAAEMAAAEAAAAAAAAA","121":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","128":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","135":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","149":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","162":"b:ABAAAIAH4gAAAkMAgAAAAIAAAQAA","172":[16,79,21,22,41,42,45,104,49],"182":[80,81],"192":[98],"210":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","217":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","233":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","309":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","315":[16,79,21,40,103,104,49,53,55],"325":[40,103,49,53,55],"336":[16,79,21,40,103,104,49,53,55],"349":[40,103,49,53,55],"359":[16,79,21,104,49],"371":[40],"374":[80,81],"380":[98],"390":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","400":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","420":"b:ABBRAIAnogAAgEIAgAAAAAAAAAAA","428":"b:ABBRAIAnogAAgEIAgAAAAAAAAAAA","438":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","452":[86],"463":"b:AAAhAAABogAAgAMAhAEAAAAAAAAA","480":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","483":"b:ABAhAAAm4gAAAkMABAEAAIAAAQAA","488":[86],"515":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","522":[81,40],"523":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","528":"b:AAAhAAABogAAgAMAhAEAAAAAAAAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMembersActionsCell.vue":{"6":[12,20,81,86,42,45,49,53,55],"17":[12,20,81,86,42,45,49,53,55]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMembersTable.vue":{"11":[12,20,81,86,42,45,49,53,55],"37":[12,20,81,86,42,45,49,53,55],"44":[12,20,81,86,42,45,49,53,55],"58":[12,20,81,86,42,45,49,53,55],"64":[12,20,81,86,42,45,49,53,55],"67":[20],"71":[12,20,81,86,42,45,49,53,55],"73":[20,86],"74":[12,20,81,86,42,45,49,53,55],"88":[20,86],"90":[12,20,81,86,42,45,49,53,55],"95":[12,20,81,86,42,45,49,53,55],"104":[12,20,81,86,42,45,49,53,55],"107":[12,20,81,86,42,45,49,53,55]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectRoleUpgradeDialog.vue":{"14":[12,20,81,86,42,45,49,53,55],"22":[12,20,81,86,42,45,49,53,55]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectSharing.vue":{"67":[21,41,42,101,103,104,49,105,55],"75":[21,41,42,101,104,49,105,55],"78":[21,41,42,101,104,49,105,55],"87":[21,41,42,101,104,49,105,55],"97":[21,41,104,49,105,55],"103":[21,104,49,105,55],"109":[21,41,42,101,104,49,105,55],"110":[21,41,42,101,104,49,105,55],"119":[21,41,42,101,104,49,105,55],"123":[21,41,42,101,104,49,105,55],"125":[21,41,42,101,104,49,105,55],"139":[21,41,42,101,103,104,49,105,55],"155":[21,41,42,101,104,49,105],"161":[21,41,42,101,103,104,49,105,55],"165":[21,41,42,101,104,49,105],"171":[41,42,101,104,49,105],"185":[21],"202":[21,41,42,101,103,104,49,105,55],"203":[21,41,42,101,103,104,49,105,55],"218":[21,41,42,101,103,104,49,105,55],"235":[21,41,42,101,104,49,105,55],"243":[21,41,42,101,104,49,105,55],"246":[21,41,42,101,104,49,105,55],"250":[21,41,42,101,104,49,105,55],"274":[21,103,104,49,105,55],"275":[21,103,104,49,105,55],"297":[21,104,49,105],"314":[21]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectSharingInfo.vue":{"14":[21,41,42,101,103,104,49,105,55],"25":[21,41,42,101,103,104,49,105,55],"31":[21,41,42,101,103,104,49,105,55]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectTabs.vue":{"22":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","36":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","38":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","44":"b:ABBxAIAn4gAAgEMAgAEAAAAAAAAA","46":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","89":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","102":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","143":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","144":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA","160":"b:ABBxAIAn4gAAgkMAhAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectSettings.vue":{"62":[12,20,81,86,42,45,49,53,55],"77":[12,20,81,86,42,45,49,53,55],"117":[20,81,86,42,45,49],"121":[12,20,81,86,42,45,49,53,55],"122":[20,81,86,42,45,49],"123":[20,81,86,42,45,49],"129":[20,86],"130":[20,86],"133":[12,20,81,86,42,45,49,53,55],"141":[20,86],"147":[20,86],"167":[20,86],"190":[20],"195":[20],"226":[12,81,86,42,49,53,55],"275":[12,20,81,86,42,45,49,53,55],"287":[86],"292":[12,81,86,42,49,53,55],"315":[12,81,86,42,49,53,55],"316":[12,81,86,42,49,53,55],"323":[12,81,86,42,49,53,55],"354":[12,81,86,42,49,53,55],"373":[12,81,86,42,49,53,55],"420":[12,20,81,86,42,45,49,53,55],"427":[42],"443":[12,20,81,86,42,45,49,53,55],"445":[12,20,81,86,42,45,49,53,55],"462":[12,20,81,86,42,45,49,53,55],"463":[12,20,81,86,42,45,49,53,55],"479":[12,20,81,86,42,45,49,53,55],"484":[12,20,81,86,42,45,49,53,55],"498":[12,20,81,86,42,45,49,53,55],"516":[20,86],"520":[20,81,86,42,45,49],"560":[12,20,81,86,42,45,49,53,55],"565":[12,20,81,86,42,45,49,53,55],"567":[12,20,81,86,42,45,49,53,55],"583":[12,20,81,86,42,45,49,53,55],"593":[12,20,81,86,42,45,49,53,55],"600":[12,20,81,86,42,45,49,53,55],"628":[12,20,81,86,42,45,49,53,55],"648":[12,20,81,86,42,45,49,53,55],"677":[12,20,81,86,42,45,49,53,55],"739":[12,20,81,86,42,45,49,53,55]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialCard.vue":{"68":[16,79,21,22,41,42,45,104,49],"69":[16,79,21,22,41,42,45,104,49],"72":[16,79,21,22,41,42,45,104,49],"74":[16,79,21,22,41,42,45,104,49],"82":[16,79,21,22,41,42,45,104,49],"113":[16,79,21,22,41,42,45,104,49],"122":[16,79,21,22,41,42,45,104,49],"124":[21],"151":[41],"215":[41],"224":[16,79,21,22,41,42,45,104,49],"229":[16,79,21,22,41,42,45,104,49],"232":[16,79,21,22,41,42,45,104,49],"236":[21],"256":[16,79,21,22,41,42,45,104,49],"265":[16,79,21,22,41,42,45,104,49]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/CredentialSharing.ee.vue":{"37":[21,104,49],"59":[21,104,49],"67":[21,104,49],"68":[21,104,49],"80":[21,104,49],"84":[21,104,49],"88":[21,104,49],"94":[21,104,49],"100":[21,104,49],"101":[21,104,49],"114":[21,104,49],"120":[21,104,49],"126":[104,49],"137":[21,104,49],"163":[21,104,49],"192":[21]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialsSelectModal.vue":{"15":[16,79,21,22,42,45,104,49],"31":[16,79,21,22,42,45,104,49],"38":[16,79,21,22,42,45,104,49],"46":[16,79,21,22,42,45,104,49],"47":[16,79,21,22,42,45,104,49],"50":[16,79,21,22,42,45,104,49],"53":[16,79,21,22,42,45,104,49],"56":[16,79,21,22,42,45,104,49],"60":[16,79,21,22,42,45,104,49],"64":[16,79,21,22,42,45,104,49],"91":[16,79,21,22,42,45,104,49],"104":[16,79,21,22,42,45,104,49],"109":[16,79,21,22,42,45,104,49],"125":[16,79,21,22,42,45,104,49],"127":[16,79,21,22,42,45,104,49],"129":[16,79,21,22,42,45,104,49],"139":[16,79,21,22,42,45,104,49]},"packages/frontend/editor-ui/src/features/credentials/credentials.ee.api.ts":{"6":[57,104,49],"19":[57,41]},"packages/frontend/editor-ui/src/features/credentials/views/CredentialsView.vue":{"66":[16,21,104,49],"83":[16,79,21,22,41,42,45,104,49],"93":[16,79,21,22,41,42,45,104,49],"96":[16,79,21,22,41,42,45,104,49],"97":[16,79,21,22,41,42,45,104,49],"122":[16,79,21,22,41,42,45,104,49],"124":[16,79,21,22,41,42,45,104,49],"140":[16,21,22,45],"144":[16,79,21,22,42,45,104,49],"152":[16,22,45],"161":[16,79,21,22,41,42,45,104,49],"172":[16,79,21,22,41,42,45,104,49],"195":[16,79,21,22,41,42,45,104,49],"205":[16,79,21,22,41,42,45,104,49],"230":[16,79,21,22,41,42,45,104,49],"259":[79,21,41,42,49],"263":[16,79,21,22,41,42,45,104,49],"265":[16,79,21,22,42,45,104,49],"278":[16,79,21,22,41,42,45,104,49],"280":[16,79,21,22,41,42,45,104,49],"281":[16,79,21,22,42,45,104,49],"290":[16,79,21,22,41,42,45,104,49],"300":[16,79,21,22,41,42,45,104,49],"319":[16,79,21,22,41,42,45,104,49],"329":[16,79,21,22,41,42,45,104,49]},"packages/frontend/editor-ui/src/features/execution/insights/components/InsightsSummary.vue":{"33":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","46":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","54":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","56":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","59":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","60":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","118":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA","133":"b:ABAhAAAmogAAAkMABAEAAIAAAQAA"},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/composables/useSecretsProvidersList.ee.ts":{"21":[45],"22":[45],"24":[12,20,81,86,42,45,49,53,55],"35":[12,20,81,86,42,45,49,53,55],"64":[45],"68":[45],"72":[12,20,81,86,42,45,49,53,55],"77":[45]},"packages/frontend/editor-ui/src/features/roles/project/projectRoleScopes.ts":{"34":[12,20,81,86,42,45,101,49,53,55],"36":[12,20,81,86,42,45,101,49,53,55]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/LabelItem.vue":{"11":"b:AEABAIAEAgAAgBAAgAQATFoIAAAA"},"packages/frontend/editor-ui/src/features/workflows/readyToRun/components/ReadyToRunButton.vue":{"13":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","25":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","31":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA","53":"b:ABBhAIAn4gAAgkMAhAEAAIAAAQAA"},"packages/cli/src/eventbus/event-message-classes/event-message-runner.ts":{"24":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","32":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","37":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA"},"packages/cli/src/task-runners/default-task-runner-disconnect-analyzer.ts":{"18":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","22":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA"},"packages/cli/src/task-runners/errors/task-runner-disconnected-error.ts":{"7":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","27":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA"},"packages/cli/src/task-runners/task-broker/errors/task-deferred.error.ts":{"4":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA"},"packages/cli/src/task-runners/task-broker/errors/task-runner-accept-timeout.error.ts":{"4":"b:hQAACAgADAAAAAAAAMAQgABAIAEA"},"packages/cli/src/task-runners/task-broker/task-broker.service.ts":{"97":"b:hQKACAgADAAACAAAAMAQgABwIAEA","108":"b:hQKACAgADAAACAAAAMAQgABwIAEA","109":"b:hQKACAgADAAACAAAAMAQgABwIAEA","114":"b:hQKACAgADAAACAAAAMAQgABwIAEA","115":"b:hQKACAgADAAACAAAAMAQgABwIAEA","131":"b:hQKACAgADAAACAAAAMAQgABwIAEA","142":"b:hQKACAgADAAACAAAAMAQgABwIAEA","147":"b:hQKACAgADAAACAAAAMAQgABwIAEA","169":"b:hQKACAgADAAACAAAAMAQgABwIAEA","173":"b:hQKACAgADAAACAAAAMAQgABwIAEA","177":"b:hQKACAgADAAACAAAAMAQgABwIAEA","181":"b:hQKACAgADAAACAAAAMAQgABwIAEA","185":"b:hQKACAgADAAACAAAAMAQgABwIAEA","233":"b:hQKACAgADAAACAAAAMAQgABwIAEA","252":"b:hQKACAgADAAACAAAAMAQgABwIAEA","260":"b:hQKACAgADAAACAAAAMAQgABwIAEA","268":"b:hQKACAgADAAACAAAAMAQgABwIAEA","276":"b:hQKACAgADAAACAAAAMAQgABwIAEA","293":"b:hQKACAgADAAACAAAAMAQgABwIAEA","310":"b:hQKACAgADAAACAAAAMAQgABwIAEA","327":"b:hQKACAgADAAACAAAAMAQgABwIAEA","364":"b:hQKACAgADAAACAAAAMAQgABwIAEA","381":"b:hQKACAgADAAACAAAAMAQgABwIAEA","393":"b:hQKACAgADAAACAAAAMAQgABwIAEA","409":"b:hQKACAgADAAACAAAAMAQgABwIAEA","420":"b:hQKACAgADAAACAAAAMAQgABwIAEA","428":"b:hQKACAgADAAACAAAAMAQgABwIAEA","442":"b:hQKACAgADAAACAAAAMAQgABwIAEA","456":"b:hQKACAgADAAACAAAAMAQgABwIAEA","472":"b:hQKACAgADAAACAAAAMAQgABwIAEA","479":"b:hQKACAgADAAACAAAAMAQgABwIAEA","490":"b:hQKACAgADAAACAAAAMAQgABwIAEA","516":"b:hQKACAgADAAACAAAAMAQgABwIAEA","530":"b:hQKACAgADAAACAAAAMAQgABwIAEA","544":"b:hQKACAgADAAACAAAAMAQgABwIAEA","548":"b:hQKACAgADAAACAAAAMAQgABwIAEA","552":"b:hQKACAgADAAACAAAAMAQgABwIAEA","594":"b:hQKACAgADAAACAAAAMAQgABwIAEA","606":"b:hQKACAgADAAACAAAAMAQgABwIAEA","615":"b:hQKACAgADAAACAAAAMAQgABwIAEA","648":"b:hQKACAgADAAACAAAAMAQgABwIAEA","655":"b:hQKACAgADAAACAAAAMAQgABwIAEA","670":"b:hQKACAgADAAACAAAAMAQgABwIAEA","674":"b:hQKACAgADAAACAAAAMAQgABwIAEA","681":"b:hQKACAgADAAACAAAAMAQgABwIAEA","695":"b:hQKACAgADAAACAAAAMAQgABwIAEA","700":"b:hQKACAgADAAACAAAAMAQgABwIAEA","704":"b:hQKACAgADAAACAAAAMAQgABwIAEA","712":"b:hQKACAgADAAACAAAAMAQgABwIAEA","716":"b:hQKACAgADAAACAAAAMAQgABwIAEA","720":"b:hQKACAgADAAACAAAAMAQgABwIAEA","724":"b:hQKACAgADAAACAAAAMAQgABwIAEA","728":"b:hQKACAgADAAACAAAAMAQgABwIAEA","732":"b:hQKACAgADAAACAAAAMAQgABwIAEA","736":"b:hQKACAgADAAACAAAAMAQgABwIAEA","740":"b:hQKACAgADAAACAAAAMAQgABwIAEA","744":"b:hQKACAgADAAACAAAAMAQgABwIAEA","748":"b:hQKACAgADAAACAAAAMAQgABwIAEA","752":"b:hQKACAgADAAACAAAAMAQgABwIAEA"},"packages/cli/src/task-runners/task-managers/data-request-response-builder.ts":{"17":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","37":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","57":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","70":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA"},"packages/cli/src/task-runners/task-managers/data-request-response-stripper.ts":{"18":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","32":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","43":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","64":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","68":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","72":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","86":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","94":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","118":"b:hQKAAAgADAAACAAAAMAQgABAIAEC","138":"b:hQKAAAgADAAACAAAAMAQgABAIAEC"},"packages/cli/src/task-runners/task-managers/local-task-requester.ts":{"19":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","30":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","39":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA","40":"b:hQKAAAgADAAAAAAAAMAQgABAIAEA"},"packages/cli/src/task-runners/task-managers/task-requester.ts":{"70":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","78":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","82":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","87":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","135":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","171":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","195":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","217":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","223":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","227":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","246":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","258":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","260":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","286":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","300":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","324":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","332":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","340":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","348":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","374":"b:hQKAAAgADAAACAAAAMAQgABwIAEA","389":"b:hQKAAAgADAAACAAAAMAQgABwIAEA"},"packages/cli/src/task-runners/task-runner-module.ts":{"44":[51,152],"53":[51,152],"61":[51,152],"69":[51,152],"70":[51,152],"77":[51,152],"84":[51,152],"94":[51,152],"95":[51,152],"96":[51,152],"103":[51,152],"106":[51,152],"113":[51,152],"116":[51,152],"123":[51,152],"135":[51,152],"159":[51,152]},"packages/cli/src/webhooks/webhook-last-node-response-extractor.ts":{"30":[5,6,7,149,38,93,108,51,131],"72":[5,6,7,149,38,93,108,51,131],"117":[5,6,7,149,38,93,108,51,131],"184":[5,6,7,149,38,93,108,51,131]},"packages/core/src/execution-engine/node-execution-context/utils/execution-metadata.ts":{"8":[5,6,7,76,77,93,108,51],"46":[5,6,7,76,77,93,108,51],"51":[5,6,7,76,77,93,108,51],"63":[5,6,7,76,77,93,108,51],"70":[5,6,7,76,77,93,108,51]},"packages/core/src/execution-engine/node-execution-context/utils/extract-value.ts":{"20":[85,120,51,126,127,129,132],"39":[85,120,51,126,127,129,132],"59":[85,120,51,126,127,129,132],"68":[85,120,51,126,127,129,132],"101":[85,120,51,126,127,129,132],"121":[85,120,51,126,127,129,132],"155":[85,120,51,126,127,129,132]},"packages/core/src/execution-engine/node-execution-context/utils/normalize-items.ts":{"10":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA","17":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA","20":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA","24":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA","26":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA","27":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA","40":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA","44":"b:gQIAAAAADAAACCAAAMAQwQRAIAEA"},"packages/core/src/execution-engine/partial-execution-utils/clean-run-data.ts":{"12":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/directed-graph.ts":{"40":[1,2,88,120,51,52,127,130],"45":[1,2,88,120,51,52,127,130],"49":[1,2,88,120,51,52,127,130],"58":[1,2,88,120,51,52,127,130],"72":[1,2,88,120,51,52,127,130],"86":[1,2,88,120,51,52,127,130],"91":[1,2,88,120,51,52,127,130],"116":[1,2,88,120,51,52,127,130],"172":[1,2,88,120,51,52,127,130],"201":[1,2,88,120,51,52,127,130],"216":[1,2,88,120,51,52,127,130],"233":[1,2,88,120,51,52,127,130],"255":[1,2,88,120,51,52,127,130],"259":[1,2,88,120,51,52,127,130],"276":[1,2,88,120,51,52,127,130],"293":[1,2,88,120,51,52,127,130],"297":[1,2,88,120,51,52,127,130],"347":[1,2,88,120,51,52,127,130],"355":[1,2,88,120,51,52,127,130],"366":[1,2,88,120,51,52,127,130],"414":[1,2,88,120,51,52,127,130],"454":[1,2,88,120,51,52,127,130],"458":[1,2,88,120,51,52,127,130],"466":[1,2,88,120,51,52,127,130],"499":[1,2,88,120,51,52,127,130],"537":[1,2,88,120,51,52,127,130],"543":[1,2,88,120,51,52,127,130],"566":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/filter-disabled-nodes.ts":{"5":[1,2,88,120,51,52,127,130],"12":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/find-start-nodes.ts":{"13":[1,2,88,120,51,52,127,130],"29":[1,2,88,120,51,52,127,130],"50":[1,2,88,120,51,52,127,130],"137":[1,2,88,120,51,52,127,130],"159":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/find-subgraph.ts":{"6":[1,2,88,120,51,52,127,130],"39":[1,2,88,120,51,52,127,130],"45":[1,2,88,120,51,52,127,130],"88":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/find-trigger-for-partial-execution.ts":{"12":[1,2,88,120,51,52,127,130],"14":[1,2,88,120,51,52,127,130],"17":[1,2,88,120,51,52,127,130],"29":[1,2,88,120,51,52,127,130],"30":[1,2,88,120,51,52,127,130],"31":[1,2,88,120,51,52,127,130],"36":[1,2,88,120,51,52,127,130],"61":[1,2,88,120,51,52,127,130],"78":[1,2,88,120,51,52,127,130],"98":[1,2,88,120,51,52,127,130],"112":[1,2,88,120,51,52,127,130],"115":[1,2,88,120,51,52,127,130],"121":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/get-incoming-data.ts":{"3":[1,2,88,120,51,52,127,130],"13":[1,2,88,120,51,52,127,130],"17":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/get-source-data-groups.ts":{"5":[1,2,88,120,51,52,127,130],"28":[1,2,88,120,51,52,127,130],"86":[1,2,88,120,51,52,127,130],"118":[1,2,88,120,51,52,127,130],"119":[1,2,88,120,51,52,127,130],"126":[1,2,88,120,51,52,127,130],"139":[1,2,88,120,51,52,127,130],"156":[1,2,88,120,51,52,127,130],"157":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/handle-cycles.ts":{"15":[1,2,88,120,51,52,127,130],"26":[1,2,88,120,51,52,127,130],"41":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/index.ts":{"1":[1,2,88,120,51,52,127,130],"7":[1,2,88,120,51,52,127,130],"8":[1,2,88,120,51,52,127,130],"9":[1,2,88,120,51,52,127,130],"10":[1,2,88,120,51,52,127,130],"11":[1,2,88,120,51,52,127,130],"13":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/recreate-node-execution-stack.ts":{"20":[1,2,88,120,51,52,127,130],"39":[1,2,88,120,51,52,127,130],"72":[1,2,88,120,51,52,127,130],"103":[1,2,88,120,51,52,127,130]},"packages/core/src/execution-engine/partial-execution-utils/run-data-utils.ts":{"11":[1,2,88,120,51,52,127,130],"17":[1,2,88,120,51,52,127,130],"20":[1,2,88,120,51,52,127,130]},"packages/nodes-base/nodes/Code/Code.node.ts":{"24":"b:hwIAAAAADAAAAACAAOBQgQBAIAEA","192":"b:hwIAAAAADAAAAACAAOBQgQBAIAEA"},"packages/nodes-base/nodes/Code/JsCodeValidator.ts":{"8":"b:xwKAAAgADAEAAACAAGBQgABAAAEC","15":"b:xwKAAAgADAEAAACAAGBQgABAAAEC","42":"b:xwKAAAgADAEAAACAAGBQgABAAAEC","54":"b:xwKAAAgADAEAAACAAGBQgABAAAEC"},"packages/nodes-base/nodes/Code/JsTaskRunnerSandbox.ts":{"20":"b:xwKAAAgADAAAAACAAOBQgQBAIAEC","30":"b:xwKAAAgADAAAAACAAOBQgQBAIAEC","56":"b:xwKAAAgADAAAAACAAOBQgQBAIAEC","78":"b:xwKAAAgADAAAAACAAOBQgQBAIAEC","123":"b:xwKAAAgADAAAAACAAOBQgQBAIAEC","145":"b:xwKAAAgADAAAAACAAOBQgQBAIAEC"},"packages/nodes-base/nodes/Code/PythonTaskRunnerSandbox.ts":{"18":"b:xwKAAAgADAAACACAAGBAgABAAAEA","26":"b:xwKAAAgADAAACACAAGBAgABAAAEA","42":"b:xwKAAAgADAAACACAAGBAgABAAAEA","80":"b:xwKAAAgADAAACACAAGBAgABAAAEA","98":"b:xwKAAAgADAAACACAAGBAgABAAAEA"},"packages/nodes-base/nodes/Code/ValidationError.ts":{"12":"b:xwKAAAgADAEAAACAAGBAgABAAAEA"},"packages/nodes-base/nodes/Code/errors/WrappedExecutionError.ts":{"13":"b:xwKAAAgADAAAAACAAGBAgABwAAEA","22":"b:xwKAAAgADAAAAACAAGBAgABwAAEA","29":"b:xwKAAAgADAAAAACAAGBAgABwAAEA"},"packages/nodes-base/nodes/Code/python-runner-unavailable.error.ts":{"11":"b:hwIAAAAADAAAAACAAGBAgABAAAEA"},"packages/nodes-base/nodes/Code/reserved-key-found-error.ts":{"4":"b:xwKAAAgADAEAAACAAGBAgABAAAEA"},"packages/nodes-base/nodes/Code/result-validation.ts":{"16":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","25":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","31":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","61":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","86":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","126":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","159":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","160":"b:xwKAAAgADAEACACAAOBQgQBQIAEC","172":"b:xwKAAAgADAEACACAAOBQgQBQIAEC"},"packages/nodes-base/nodes/Code/throw-execution-error.ts":{"5":"b:xwKAAAgADAAAAACAAGBAgABwAAEA"},"packages/nodes-base/nodes/Code/utils.ts":{"3":"b:xwKAAAgADAEACACAAOBQgQBAIAEA","9":"b:xwKAAAgADAEACACAAOBQgQBAIAEA","16":"b:xwKAAAgADAEACACAAOBQgQBAIAEA","17":"b:xwKAAAgADAEACACAAOBQgQBAIAEA","40":"b:xwKAAAgADAEACACAAOBQgQBAIAEA","47":"b:xwKAAAgADAEACACAAOBQgQBAIAEA"},"packages/nodes-base/nodes/If/If.node.ts":{"8":[4,113,118,120,51,125,130,143]},"packages/nodes-base/nodes/If/V1/IfV1.node.ts":{"16":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","310":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","319":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","321":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","327":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","329":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","331":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","333":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","335":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","337":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","339":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","340":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","341":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","343":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","345":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","347":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","349":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","351":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","353":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","359":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","367":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","381":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA","398":"b:EAAAAAAACAAAAAAAAABCoQSAAAAA"},"packages/nodes-base/nodes/If/V2/IfV2.node.ts":{"20":"b:EAAAAAAACAAAACAAAABCYQSAAAAA","95":"b:EAAAAAAACAAAACAAAABCYQSAAAAA","99":"b:EAAAAAAACAAAACAAAABCYQSAAAAA"},"packages/nodes-base/nodes/If/V2/utils.ts":{"3":"b:EAAAAAAACAAAAIAAAEBCAQSAAAAA","7":"b:EAAAAAAACAAAAIAAAEBCAQSAAAAA","8":"b:EAAAAAAACAAAAIAAAEBCAQSAAAAA"},"packages/nodes-base/nodes/Schedule/GenericFunctions.ts":{"7":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA","40":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA","109":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA","114":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA","150":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA","211":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA","237":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA","244":"b:EgAAACAASAAAAAAAAAQIEYoIEAAA"},"packages/nodes-base/nodes/Schedule/ScheduleTrigger.node.ts":{"431":"b:EgAAACAAGAAAAAAAAAQIEYoAEAAA","455":"b:EgAAACAAGAAAAAAAAAQIEYoAEAAA","496":"b:EgAAACAAGAAAAAAAAAQIEYoAEAAA","512":"b:EgAAACAAGAAAAAAAAAQIEYoAEAAA","527":"b:EgAAACAAGAAAAAAAAAQIEYoAEAAA"},"packages/nodes-base/nodes/SplitInBatches/SplitInBatches.node.ts":{"9":[87,95,51]},"packages/nodes-base/nodes/SplitInBatches/v1/SplitInBatchesV1.node.ts":{"62":[87,95,51],"97":[87,95,51],"111":[87,95,51],"128":[87,95,51]},"packages/nodes-base/nodes/SplitInBatches/v2/SplitInBatchesV2.node.ts":{"64":[87,95,51],"102":[87,95,51],"116":[87,95,51],"135":[87,95,51],"147":[87,95,51]},"packages/nodes-base/nodes/SplitInBatches/v3/SplitInBatchesV3.node.ts":{"88":[87,95,51],"126":[87,95,51],"140":[87,95,51],"159":[87,95,51],"171":[87,95,51]},"packages/workflow/src/errors/base/unexpected.error.ts":{"16":"b:hQKAAAgADAACAAAAAMAAgABAJAEA"},"packages/workflow/src/errors/execution-cancelled.error.ts":{"9":[51,152],"19":[51,152],"26":[51,152],"33":[51,152]},"packages/workflow/src/node-parameters/filter-parameter.ts":{"24":[85,120,51,126,127],"32":[85,120,51,126,127],"66":[85,120,51,126,127],"71":[85,120,51,126,127],"106":[85,120,51,126,127],"118":[85,120,51,126,127],"124":[85,120,51,126,127],"196":[85,120,51,126,127],"209":[85,120,51,126,127],"211":[85,120,51,126,127],"222":[85,120,51,126,127],"419":[85,120,51,126,127],"423":[85,120,51,126,127],"437":[85,120,51,126,127],"442":[85,120,51,126,127]},"packages/@n8n/chat/src/api/generic.ts":{"1":[5,6,67,7,39,93,108,51],"5":[5,6,67,7,39,93,108,51],"38":[39],"49":[5,6,67,7,39,93,108,51],"56":[39]},"packages/@n8n/chat/src/api/message.ts":{"9":[39],"24":[5,6,67,7,39,93,108,51],"68":[39],"73":[39],"82":[39],"119":[39],"151":[39],"211":[39],"245":[39]},"packages/@n8n/chat/src/components/Chat.vue":{"14":[5,6,67,7,39,93,108,51],"20":[5,6,67,7,39,93,108,51],"25":[39],"27":[39],"28":[39],"31":[5,6,67,7,39,93,108,51],"36":[5,6,67,7,39,93,108,51],"41":[5,6,67,7,39,93,108,51],"46":[5,6,67,7,39,93,108,51],"51":[39],"55":[39],"106":[5,6,67,7,39,93,108,51],"108":[6,39,51],"116":[5,6,67,7,39,93,108,51],"122":[39],"127":[5,6,67,7,39,93,108,51],"131":[5,6,67,7,39,93,108,51],"149":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/components/GetStartedFooter.vue":{"5":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/components/Input.vue":{"23":[5,6,67,7,39,93,108,51],"48":[5,6,67,7,39,93,108,51],"54":[5,6,67,7,39,93,108,51],"55":[39],"58":[5,6,67,7,39,93,108,51],"59":[39],"61":[5,6,67,7,39,93,108,51],"77":[39],"93":[39],"97":[5,6,67,7,39,93,108,51],"104":[5,6,67,7,39,93,108,51],"117":[39],"129":[39],"135":[5,6,67,7,39,93,108],"141":[39],"146":[5,6,67,7,39,93,108,51],"157":[39],"170":[39],"189":[39],"202":[39],"205":[39],"208":[39],"211":[39],"218":[39],"228":[39],"249":[5,6,67,7,39,93,108,51],"279":[39,108],"288":[39],"301":[39,108],"312":[39],"317":[5,6,67,7,39,93,108,51],"325":[5,6,67,7,39,93,108,51],"336":[5,6,67,7,39,93,108,51],"364":[39]},"packages/@n8n/chat/src/components/Layout.vue":{"6":[5,6,67,7,39,93,108,51],"8":[5,6,67,7,39,93,108,51],"15":[5,6,67,7,39,93,108,51],"20":[39],"24":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/components/MarkdownRenderer.vue":{"16":[5,6,67,7,93,108,51],"22":[5,6,67,7,93,108,51],"42":[5,6,67,7,93,108,51]},"packages/@n8n/chat/src/components/Message.vue":{"20":[5,6,67,7,39,93,108,51],"25":[5,6,67,7,39,93,108,51],"29":[5,6,67,7,39,93,108,51],"37":[5,6,67,7,39,93,108,51],"49":[39],"50":[39],"52":[39],"57":[5,6,67,7,39,93,108,51],"69":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/components/MessageActions.vue":{"8":[5,6,67,7,39,93,108,51],"16":[39],"30":[39],"35":[5,6,67,7,39,93,108,51],"43":[39]},"packages/@n8n/chat/src/components/MessageTyping.vue":{"8":[5,6,67,7,39,93,108,51],"23":[5,6,67,7,39,93,108,51],"31":[5,6,67,7,39,93,108,51],"34":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/components/MessagesList.vue":{"19":[5,6,67,7,39,93,108,51],"23":[5,6,67,7,39,93,108,51],"24":[5,6,67,7,39,93,108,51],"32":[5,6,67,7,39,93,108,51],"41":[39],"48":[39],"53":[5,6,67,7,39,93,108,51],"55":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/components/PoweredBy.vue":{"2":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/composables/useI18n.ts":{"5":[5,6,67,7,93,108,51],"9":[5,6,67,7,93,108,51],"17":[5,6,67,7,93,108,51]},"packages/@n8n/chat/src/composables/useOptions.ts":{"6":[5,6,67,7,93,108,51]},"packages/@n8n/chat/src/plugins/chat.ts":{"26":[5,6,67,7,39,93,108,51],"41":[5,6,67,7,39,93,108,51],"69":[39],"77":[39],"100":[39],"130":[39],"143":[39],"146":[39],"149":[39],"193":[5,6,67,7,39,93,108,51],"210":[5,6,67,7,39,93,108,51],"218":[5,6,67,7,39,93,108,51],"219":[39],"226":[5,6,67,7,39,93,108,51],"235":[5,6,67,7,39,93,108,51],"295":[5,6,67,7,39,93,108,51],"302":[5,6,67,7,39,93,108,51],"318":[39],"334":[5,6,67,7,39,93,108,51]},"packages/@n8n/chat/src/utils/streaming.ts":{"22":[5,6,67,7,39,93,108,51],"24":[39],"31":[39],"46":[39],"51":[39],"57":[39],"66":[39],"82":[39],"88":[39],"89":[39],"92":[39],"96":[39],"100":[39],"102":[39],"103":[39],"106":[39],"113":[5,6,67,7,39,93,108,51],"122":[39],"127":[39]},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-execution-error.svg":{"11":"b:RgAgAAAACAAIAAAAAACAQQAwAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/schema.svg":{"8":[5,6,67,7,93,51,142]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-waiting.svg":{"8":[51]},"packages/@n8n/design-system/src/components/N8nIcon/custom/text.svg":{"8":[6,51]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/code.svg":{"11":"b:h0AAABAADAAACCCAAehYwYRwAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/if.svg":{"11":"b:EAAAAAAACAAAACAAAABC4QSAAQAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/loop-over-items.svg":{"11":[83,87,94,95,115,51,143]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/wait.svg":{"11":[68,69,82,87,120,51]},"packages/@n8n/design-system/src/v2/components/Checkbox/Checkbox.vue":{"12":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","15":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","20":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","23":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","24":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","26":[97,65,106,51,55,144],"30":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","38":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","47":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","49":"b:QAAAAAAIjAACAAAAAoyAAQBwAQAA","58":"b:QAAAAAAMzAACAAAAAoyAAQB4AQAA","59":"b:QAAAAAAIjAAAAAAAAIiAAQBwAQAA"},"packages/frontend/editor-ui/src/app/components/DropArea/DropArea.vue":{"4":"b:QgACBEAEOAAAAABiAGAJ08oAAAAA","8":"b:QgACBEAEOAAAAABiAGAJ08oAAAAA","13":"b:QgACAEAEOAAAAABiAGAJ08oAAAAA"},"packages/frontend/editor-ui/src/features/agents/composables/useMessageAgentSessionLink.ts":{"19":[39],"32":[5,6,67,7,39,93,51,142],"60":[5,6,67,7,39,93,51,142],"65":[5,6,67,7,39,93,51,142],"89":[39]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/composables/useAddExecutionToDataset.ts":{"15":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/components/ExecutionStopAllText.vue":{"11":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","18":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","25":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/components/ExecutionsFilter.vue":{"41":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","63":[140],"66":[140],"67":[140],"69":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","87":[140],"104":[140],"113":[140],"120":[140],"127":[140],"139":[140],"155":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","205":[140],"219":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","222":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","233":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","249":[140],"256":[140],"300":[140],"352":[140],"364":[140],"373":[140],"375":[140],"378":[140],"410":[140],"429":[140],"455":[140],"477":[140],"501":[140]},"packages/frontend/editor-ui/src/features/execution/executions/components/ViewSubExecution.vue":{"9":[7,68,51,136,137],"23":[7,68,51,136,137],"27":[136,137],"41":[7,68,51,136,137]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/ExecutionPreviewHost.vue":{"18":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","33":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","36":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","44":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","56":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","57":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","58":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","60":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","71":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","110":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","111":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","113":[111,119,120,141,142],"116":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsCard.vue":{"41":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","44":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","48":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","49":[119,140,141],"59":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","62":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","63":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","65":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","71":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","106":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","121":[142],"139":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","183":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsInfoAccordion.vue":{"58":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","78":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","88":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","96":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","109":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","110":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","119":[120,51],"123":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","130":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsLandingPage.vue":{"22":"b:QAAAAAAADAAAAAAAAICAAQBwAAAA","25":"b:QAAAAAAADAAAAAAAAICAAQBwAAAA","27":[141],"45":[141],"48":[141],"56":"b:QAAAAAAADAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsList.vue":{"12":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","42":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","43":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","48":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","52":[120],"73":[6,111,119,141,142],"81":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","92":[51],"94":[140]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsPreview.vue":{"53":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","57":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","58":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","59":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","62":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","73":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","84":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","94":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","106":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","110":[120],"121":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","127":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","137":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","149":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","171":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","177":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","179":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","206":[120],"276":[142],"284":[142],"297":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","317":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","348":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","360":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","394":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","406":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","409":[119],"434":[119,140],"437":[119,140],"440":[119,140]},"packages/frontend/editor-ui/src/features/execution/executions/components/workflow/WorkflowExecutionsSidebar.vue":{"26":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","63":[50,141],"70":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","79":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","83":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","87":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","97":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","98":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","107":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","116":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","125":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","136":[140],"143":[51],"147":[111,119,140],"169":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","176":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","218":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","223":[120,140],"231":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","234":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA"},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionHelpers.ts":{"24":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","69":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","74":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","87":[136,137]},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionPreviewDocument.ts":{"51":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","95":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","107":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","136":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","163":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","197":[141],"198":[141],"286":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","302":[111,119,120,141,142]},"packages/frontend/editor-ui/src/features/execution/executions/views/WorkflowExecutionsView.vue":{"37":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","42":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","51":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","52":"b:AAAAAAAIDAAAAAAAAICAAQBwAAAA","70":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","74":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","81":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","83":[111,119,120,50,51,140,141,142],"88":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","99":[6,111,119,141,142],"104":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","130":[43],"138":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","150":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","162":[51],"197":[140],"224":[120],"230":[120],"301":[50,141],"307":"b:QAAAAAAIDAAAAAAAAICAAQBwAAAA","313":[50,141]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogDetailsPanel.vue":{"41":[5,6,67,7,39,93,51,142],"79":[5,6,67,7,39,93,51,142],"80":[5,6,67,7,39,93,51,142],"81":[5,6,67,7,39,93,51,142],"86":[5,6,67,7,39,93,51,142],"93":[5,6,67,7,39,93,51,142],"94":[5,6,39,51],"100":[39],"101":[39],"102":[5,6,67,7,39,93,51,142],"103":[5,6,67,7,39,93,51,142],"104":[5,6,67,7,39,93,51,142],"108":[6,39,51],"110":[39],"114":[6,39,51],"115":[5,6,67,7,39,93,51,142],"123":[39],"133":[5,6,67,7,39,93,51,142],"144":[5,6,67,7,39,93,51,142],"158":[5,6,67,7,39,93,51,142],"166":[39],"173":[5,6,67,7,39,93,51,142],"179":[5,6,67,7,39,93,51,142],"186":[5,6,67,7,39,93,51,142],"192":[5,6,67,7,39,93,51,142],"203":[39],"221":[6,39,51],"230":[39],"243":[39],"254":[39],"274":[39],"282":[39],"313":[39],"342":[39]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsOverviewRow.vue":{"49":[5,6,67,7,39,93,108,51,142],"50":[5,6,67,7,39,93,108,51,142],"51":[5,6,67,7,39,93,108,51,142],"52":[5,6,67,7,39,93,108,51,142],"55":[5,6,67,7,39,93,108,51,142],"61":[39],"64":[5,6,67,7,39,93,108,51,142],"67":[5,6,67,7,39,93,108,51,142],"70":[5,6,67,7,39,93,108,51],"71":[5,6,67,7,39,93,108,51,142],"74":[5,6,67,7,39,93,108,51],"79":[39],"84":[5,6,67,7,39,93,108,51],"87":[5,6,67,7,39,93,108,51],"100":[5,6,67,7,39,93,108,51],"103":[5,6,67,7,39,93,108,51],"127":[5,6,67,7,39,93,108,51],"131":[5,6,67,7,39,93,108,51,142],"133":[5,6,67,7,39,93,108,51,142],"150":[5,6,67,7,39,93,108,51,142],"151":[5,6,67,7,39,93,108,51,142],"153":[5,6,67,7,39,93,108,51,142],"187":[6,67,39,51],"204":[5,6,67,7,39,93,108,51],"205":[5,6,67,7,39,93,108,51],"207":[5,6,67,7,39,93,108,51],"213":[5,6,67,7,39,93,108,51],"223":[5,6,67,7,39,93,108,51],"231":[39],"251":[5,6,67,7,39,93,108,51,142],"274":[5,6,67,7,39,93,108,51,142]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsOverviewRows.vue":{"44":[5,6,67,7,39,93,108,51,142],"45":[5,6,67,7,39,93,108,51,142],"51":[5,6,67,7,39,93,108,51,142],"55":[5,6,67,7,39,93,108,51,142],"59":[39,51],"79":[5,6,67,7,39,93,108,51,142],"80":[5,6,67,7,39,93,108,51,142],"81":[5,6,67,7,39,93,108,51,142],"91":[5,6,67,7,39,93,108,51,142],"93":[5,6,67,7,39,93,108,51,142],"94":[5,6,67,7,39,93,108,51,142],"99":[5,6,67,7,39,93,51,142],"101":[39],"110":[5,6,67,7,39,93,108,51,142],"126":[39],"127":[39,51],"128":[39,51],"129":[5,39,51]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewConsumedTokenCountText.vue":{"8":[39,51],"20":[39]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewExecutionSummary.vue":{"18":[5,6,67,7,39,93,108,51,142],"20":[5,6,67,7,39,93,108,51,142],"37":[5,6,67,7,39,93,108,51,142]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewNodeName.vue":{"12":[5,6,67,7,39,93,108,51,142],"18":[5,6,67,7,39,93,108,51,142]},"packages/frontend/editor-ui/src/features/execution/logs/components/LogsViewRunData.vue":{"43":[5,6,67,7,39,93,51,142],"55":[5,6,67,7,39,93,51,142],"58":[5,6,67,7,39,93,51,142],"81":[5,6,67,7,39,93,51,142],"88":[39],"92":[6,39,51],"94":[5,6,67,7,39,93,51,142],"122":[39],"124":[5,6,67,7,39,93,51,142],"126":[5,6,67,7,39,93,51,142],"130":[5,6,67,7,39,93,51,142],"137":[6,39,51],"141":[39,51],"143":[39,51],"152":[39],"160":[39],"166":[39],"170":[39],"173":[39]},"packages/frontend/editor-ui/src/features/execution/logs/logs.types.ts":{"52":[5,6,67,7,39,93,108,51,142],"56":[5,6,67,7,39,93,108,51,142]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/AssignmentCollection/Assignment.vue":{"32":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","36":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","54":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","78":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","87":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","101":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","103":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","112":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","114":[1,89,120,51,124,129,131],"116":[17,38],"120":[17,38],"128":[17,38,124,129,131],"136":[17,38,112,124,129],"153":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","185":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","201":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","205":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","215":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/AssignmentCollection/AssignmentCollection.vue":{"36":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","50":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","53":"b:AgAABAAIGAAAAAAiAAABgQIAAAAA","69":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","74":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","76":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","77":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","92":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","93":[1,51,127],"101":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","102":[17,38,52,124,129,131],"104":[17,38,52,124,129,131],"114":[17,38,52,124,131],"135":[17,38,112,124,129],"143":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","153":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","169":"b:QgACBEAMOAAAAABiAGAJ08oAAAAA","203":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","212":[17,38,112,124,129],"226":"b:QgACBEAEOAAAAABiAGAJ08oAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/AssignmentCollection/TypeSelect.vue":{"17":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","30":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","32":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","33":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","43":[17,38],"45":"b:AgACBEAIGAAAAAAiAAABkQoAAAAA","58":"b:AgACAEAIGAAAAAAiAAABkQoAAAAA","60":"b:AgACAEAIGAAAAAAiAAABkQoAAAAA"},"packages/frontend/editor-ui/src/features/ndv/parameters/components/InputTriple/InputTriple.vue":{"10":"b:AgACBEAIGAAAACAiAEABkQoAAAAA","13":"b:AgACBEAIGAAAACAiAEABkQoAAAAA","21":"b:AgACBEAIGAAAACAiAEABkQoAAAAA","22":"b:AgACBEAIGAAAACAiAEABkQoAAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJson.vue":{"22":[91,120,51,127],"59":[91,120,51,127],"61":[91,120,51,127],"71":[91,120,51,127],"82":[91,120,51,127],"83":[91,120,51,127],"122":[91,120,51,127],"126":[91,120,51,127],"130":[91,120,51,127],"166":[91,120,51,127],"181":[91,120,51,127]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJsonActions.vue":{"63":[91,120,51]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataParsedAiContent.vue":{"31":[51],"33":[51],"54":[51],"63":[51],"72":[51],"76":[51]},"packages/frontend/editor-ui/src/features/ndv/runData/components/VirtualSchema.vue":{"107":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","108":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","123":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","134":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","143":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","159":[51,126,130],"165":"b:BgAIBAIIGAAQAKBJAECQ/y5DAAAA","176":"b:BgAIBAIIGAAQAKBJAECQ/y5DAAAA","205":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","209":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","231":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","254":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","286":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","298":"b:BgAIBAIIGAAQAKDJAECQy2xBAAAA","320":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","366":"b:BgAIBAIIGAAQAKAJAECx/25DAAAA","384":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","388":[7,51,127],"403":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","405":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","431":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","439":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","443":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","444":[127],"456":"b:hgAIBAIIGAAQAKAJAECx/25DAAAA","461":"b:BgAIBAIIGAAQAKAJAECx/25DAAAA","463":"b:BgAIBAIIGAAQAKAJAECx/25DAAAA","466":"b:hgAIBAIIGAAQAKAJAECx/25DAAAA","523":[127],"524":[127],"543":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","574":[127],"579":[52,134],"602":[120],"628":[120,121,123]},"packages/frontend/editor-ui/src/features/ndv/runData/components/VirtualSchemaHeader.vue":{"22":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","24":"b:BgAIBAIIGAAQAKDJAECx/25DAAAA","70":[121],"72":[121],"77":[52,134],"79":[52,134],"82":[52,134],"84":[52,134]},"packages/frontend/editor-ui/src/features/ndv/runData/components/VirtualSchemaItem.vue":{"36":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","72":"b:hgAIBAIIGAAQAKDJAECx/25DAAAA","109":"b:BgAIBAIIGAAQAKDJAEAwX25DAAAA"},"packages/frontend/editor-ui/src/features/ndv/runData/components/ai/utils.ts":{"38":[51],"51":[51],"52":[51],"53":[51]},"packages/frontend/editor-ui/src/features/ndv/runData/components/error/NodeErrorView.vue":{"47":[1,2,6,67,119,51,126],"70":[1,2,6,67,119,51,126],"74":[126],"87":[1,2,6,67,119,51,126],"98":[1,2,6,67,119,51,126],"102":[6,67,119],"111":[1,2,6,67,119,51,126],"118":[6,67,119],"142":[1,2,6,67,119,51,126],"159":[1,2,6,67,119,51,126],"164":[1,2],"171":[1,2,6,67,119,51,126],"178":[1,6,67,119,126],"194":[1,2,6,67,126],"198":[1,2,6,67,126],"223":[1,2,6,67,119,51,126],"235":[1,2,6,67,119,51,126],"238":[1,2,6,67,119,51,126],"263":[126],"273":[126],"279":[126],"293":[126],"415":[1,2,6,67,119,126],"449":[1,2],"480":[1,2,6,67,119,51,126],"536":[1,2,6,67,119,51,126],"575":[6,67,119]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasEdgeToolbar.vue":{"12":"b:AAAAAAAECAIAAADAASAKAIACAAAA","27":"b:AAAAAAAECAIAAADAASAKAIACAAAA","31":"b:AAAAAAAECAIAAADAASAKAIACAAAA","41":[57,94,95,109],"45":[57,109,113,115],"47":"b:AAAAAAAECAIAAADAASAKAIACAAAA","55":"b:AAAAAAAECAIAAADAASAKAIACAAAA","72":"b:AAAAAAAECAIAAADAASAKAIACAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasEdgeTooltip.vue":{"9":"b:AAAAAAAECAIAAADAASAKAIACAAAA","20":"b:AAAAAAAECAIAAADAASAKAIACAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/parts/CanvasNodeDisabledStrikeThrough.vue":{"6":"b:AAAAAAAADAIAAAAAAKQIAAB4AAAA","10":"b:AAAAAAAADAIAAAAAAKQIAAB4AAAA","19":"b:AAAAAAAADAIAAAAAAKQIAAB4AAAA"},"packages/localhost-33965/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[51]},"packages/localhost-33965/assets/chunk-CC9Q-vWm.js":{"8":[51],"9":[51],"10":[51],"19":[51],"23":[51],"29":[51],"33":[51],"34":[51]},"packages/@n8n/db/src/repositories/tag.repository.ts":{"11":[50,135,138,140,141,142,143],"15":[50,135,138,140,141,142,143],"26":[50,135,138,140,141,142,143],"35":[50,135,138,140,141,142,143],"47":[50,135,138,140,141,142,143],"64":[50,135,138,140,141,142,143],"76":[50,135,138,140,141,142,143]},"packages/cli/src/modules/external-secrets.ee/external-secrets-manager.ee.ts":{"35":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","57":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","60":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","80":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","92":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","96":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","104":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","108":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","112":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","119":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","125":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","138":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","170":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","194":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","198":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","202":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","206":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","214":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","225":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","237":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","288":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","306":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","340":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","350":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","368":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","376":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","378":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","384":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","395":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","399":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA","418":"b:AAAAAAAgAAAAgAYAACA4AIpAASAA"},"packages/frontend/editor-ui/src/app/composables/useIntersectionObserver.ts":{"45":[6,111,118,119,50,141,142],"56":[50,141],"62":[50,141],"82":[6,111,118,119,141,142]},"packages/frontend/editor-ui/src/features/execution/executions/components/ExecutionsTime.vue":{"14":[142],"22":[142],"24":[142],"29":[142],"36":[142]},"packages/frontend/editor-ui/src/features/ndv/runData/schemaPreview.api.ts":{"13":"b:AAAAAAAAEAAAAIDCAAAgikhBAAAA","17":[95,52,134],"27":"b:AAAAAAAAEAAAAIDCAAAgikhBAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/CodeNodeEditor.vue":{"43":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","71":[115,116,126],"72":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","73":[2,115,116,126],"76":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","77":[14,75,109,110,111,115,116,126],"78":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","85":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","86":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","87":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","90":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","97":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","100":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","109":"b:AEAAAAAAAAAACAAAAeAYQABAAAAA","114":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","118":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","124":[116],"140":[116],"152":[96,116,126],"158":[2],"165":[96,116,126],"166":[96,116,126],"199":[116],"203":[116],"225":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","239":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","245":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","252":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","271":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","291":[75,142]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/linter.ts":{"23":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","29":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","38":[2,115,116,126],"62":[116],"68":[116],"95":[115,116,126],"136":[115,116,126],"138":[115,116,126],"142":[115,116,126],"144":[115,116,126],"146":[115,116,126],"151":[116],"180":[116],"222":[116],"230":[116],"257":[115,116,126],"264":[116],"288":[115,116,126],"298":[116],"321":[115,116,126],"328":[116],"329":[116],"346":[116],"352":[116],"377":[115,116,126],"399":[115,116,126],"415":[115,116,126],"422":[116],"466":[116],"513":[115,116,126],"554":[115,116,126],"588":[115,116,126],"599":[116],"626":[116],"632":[116],"633":[116]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/theme.ts":{"91":"b:xMAAAABAAAAACBAAAeA4Xg5BAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/composables/useCodeEditor.ts":{"70":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","113":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","114":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","125":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","134":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","166":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","170":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","181":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","185":[2,75,96,115,116,126],"195":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","203":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","224":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","239":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","253":[2,96,116,126],"262":[126],"267":[126],"275":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","370":"b:BEAAAAAAAAAACAAAAOAYQAAAAAAA","382":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","386":"b:AEAAAAAAAAAACAAAAeAYQABAAAAA","417":[2,116,126],"443":[2,116,126]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/useTypescript.ts":{"28":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","37":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","44":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","68":[2,116],"116":[2,116],"124":[2,116],"134":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","135":"b:BEAAAAAAAAAACAAAAeAYQABAAAAA","141":[116],"149":"b:AEAAAAAAAAAACAAAAeAYQABAAAAA"},"packages/@n8n/api-types/src/push/heartbeat.ts":{"9":[0,78,25,42]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/calculator.svg":{"11":[6,78]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/call-n8n-sub-workflow-tool.svg":{"11":[6,78,28,128]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/compression.svg":{"11":[6,78]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/date-and-time.svg":{"11":[6,78]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/rss-read.svg":{"11":[6,78]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/send-mail.svg":{"11":[6,68,78,83,31]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/think-tool.svg":{"11":[6,78]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/totp.svg":{"11":[6,78]},"packages/@n8n/design-system/src/components/N8nSelectableList/SelectableList.vue":{"7":[78,91],"37":[78,91],"39":[78,91],"43":[78,91],"63":[78,91],"70":[78,91],"76":[78,91]},"packages/frontend/editor-ui/src/app/components/AiStarsIcon.vue":{"11":[78,79,91,128],"17":[78,79,91,128]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ToolListItem.vue":{"25":[78],"32":[78],"38":[78],"48":[78],"51":[78],"58":[78],"68":[78],"79":[78],"94":[78]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ToolsManagerModal.vue":{"41":[78],"42":[78],"46":[78],"53":[78],"69":[78],"92":[78],"94":[78],"102":[78],"107":[78],"108":[78],"114":[78],"121":[78],"135":[78],"147":[78],"151":[78],"208":[78],"231":[78],"241":[78],"250":[78],"270":[78],"273":[78],"295":[78],"308":[78],"317":[78],"325":[78],"340":[78],"348":[78],"352":[78],"373":[78],"374":[78]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputOverrides/FromAiOverrideButton.vue":{"6":[78,79,91,128],"16":[78,79,91,128],"24":[78,79,91,128],"29":[78]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputOverrides/FromAiOverrideField.vue":{"10":[78,91],"11":[78,91]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ParameterInputOverrides/ParameterOverrideSelectableList.vue":{"16":[78,91],"22":[78,91],"23":[78,91],"47":[78,91]},"packages/frontend/editor-ui/src/features/shared/toolConfig/NodeToolSettingsContent.vue":{"68":[78],"69":[78],"71":[78],"81":[78],"85":[78],"89":[78],"99":[78],"104":[78],"107":[78],"115":[78],"116":[78],"119":[78],"133":[78],"141":[78],"148":[78],"158":[78],"170":[78],"179":[78],"188":[78],"224":[78],"240":[78],"241":[78],"302":[78],"303":[78],"318":[78],"323":[78],"332":[78],"333":[78],"341":[78],"368":[78],"404":[78]},"packages/localhost-44833/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[78]},"packages/localhost-44833/assets/chunk-CC9Q-vWm.js":{"8":[78],"9":[78],"10":[78],"19":[78],"23":[78],"29":[78],"33":[78],"34":[78]},"packages/localhost-36949/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[37,95,111,117,136,54,141]},"packages/localhost-36949/assets/chunk-CC9Q-vWm.js":{"8":[37,95,111,117,136,54,141],"9":[37,95,111,117,136,54,141],"10":[37,95,111,117,136,54,141],"19":[37,95,111,117,136,54,141],"23":[37,95,111,117,136,54,141],"29":[37,95,111,117,136,54,141],"33":[37,95,111,117,136,54,141],"34":[37,95,111,117,136,54,141]},"packages/nodes-base/nodes/Shopify/GenericFunctions.ts":{"12":[44,56],"85":[44,56],"124":[44,56]},"packages/nodes-base/nodes/Shopify/ShopifyTrigger.node.ts":{"335":[44,56],"350":[44,56],"373":[44,56],"389":[44,56]},"packages/nodes-base/nodes/Telegram/GenericFunctions.ts":{"70":[4,44,120,56],"132":[4,44,120,56],"206":[4,44,120,56],"246":[4,44,120,56],"259":[4,44,120,56],"263":[4,44,120,56],"269":[4,44,120,56],"290":[4,44,120,56]},"packages/nodes-base/nodes/Telegram/Telegram.node.ts":{"2041":[4,44,120,56],"2047":[4,44,120,56]},"packages/nodes-base/nodes/Twitter/Twitter.node.ts":{"8":[44,56]},"packages/nodes-base/nodes/Twitter/V1/GenericFunctions.ts":{"12":[44,56],"44":[44,56],"67":[44,56],"79":[44,56]},"packages/nodes-base/nodes/Twitter/V1/TwitterV1.node.ts":{"27":[44,56],"76":[44,56],"92":[44,56],"123":[44,56],"164":[44,56],"171":[44,56]},"packages/nodes-base/nodes/Twitter/V2/GenericFunctions.ts":{"13":[44,56],"60":[44,56],"83":[44,56],"105":[44,56]},"packages/nodes-base/nodes/Twitter/V2/TwitterV2.node.ts":{"31":[44,56],"100":[44,56],"116":[44,56]},"packages/nodes-base/utils/sendAndWait/email-templates.ts":{"82":[4,79,83,31,44,120,130,56],"147":[4,79,83,31,44,120,130,56]},"packages/nodes-base/utils/sendAndWait/utils.ts":{"58":[4,79,83,31,44,120,130,56],"154":[4,79,83,31,44,120,130,56],"309":[4,79,83,31,44,120,130,56],"339":[4,79,83,31,44,120,130,56],"349":[4,79,83,31,44,120,130,56],"352":[4,79,83,31,44,120,130,56],"495":[4,79,83,31,44,120,130,56],"558":[4,79,83,31,44,120,130,56],"566":[4,79,83,31,44,120,130,56],"600":[4,79,83,31,44,120,130,56]},"packages/localhost-34165/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[44]},"packages/localhost-34165/assets/chunk-CC9Q-vWm.js":{"8":[44],"9":[44],"10":[44],"19":[44],"23":[44],"29":[44],"33":[44],"34":[44]},"packages/nodes-base/nodes/NoOp/NoOp.node.ts":{"26":"b:AAAABEQEAAAAAKCIAAAACQyAAAAA"},"packages/nodes-base/nodes/Reddit/GenericFunctions.ts":{"14":[95],"57":[95],"79":[95],"81":[95],"85":[95],"100":[95]},"packages/nodes-base/nodes/Reddit/Reddit.node.ts":{"87":[95],"328":[95],"370":[95]},"packages/nodes-base/nodes/StickyNote/StickyNote.node.ts":{"57":[87,95,120,139,143]},"packages/@n8n/design-system/src/components/N8nSticky/Sticky.vue":{"16":[87,95,114,120,136,143,144],"28":[87,95,114,120,136,143,144],"32":[87,95,114,120,136,143,144],"36":[87,95,114,120,136,143,144],"38":[87,95,114,120,136,143,144],"43":[87,95,114,120,136,143,144],"58":[87,95,114,120,136,143,144],"65":[87,95,114,120,136,143,144],"99":[87,95,114,120,136,143,144]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeStickyNote.vue":{"15":[57,87,95,114,120,136,143,144],"27":[57,87,95,114,120,136,143,144],"29":[57,87,95,114,120,136,143,144],"39":[57],"57":[57],"63":[57],"75":[57],"83":[57,114],"91":[57,87,95,114,120,136,143,144],"95":[57],"98":[57,87,95,114,120,136,143,144]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/toolbar/CanvasNodeStickyColorSelector.vue":{"10":[57,87,95,114,120,136,143,144],"17":[57,114],"21":[57,114],"27":[57],"31":[57,114],"35":[57],"40":[57],"44":[57],"49":[57],"53":[57,114],"60":[57],"61":[57],"66":[57,87,95,114,120,136,143,144],"70":[57],"73":[57,87,95,114,120,136,143,144],"86":[57,87,95,114,120,136,143,144],"95":[57,114],"98":[57,114],"135":[57]},"packages/@n8n/syslog-client/src/client.ts":{"78":[47],"129":[47],"147":[47],"148":[47],"162":[47],"185":[47],"197":[47],"205":[47],"214":[47],"233":[47],"253":[47],"279":[47],"293":[47],"310":[47],"322":[47],"337":[47],"342":[47],"350":[47],"365":[47],"377":[47],"391":[47],"420":[47],"438":[47],"453":[47],"468":[47],"475":[47],"483":[47],"501":[47]},"packages/@n8n/syslog-client/src/factory.ts":{"25":[47]},"packages/@n8n/syslog-client/src/index.ts":{"13":[47]},"packages/@n8n/syslog-client/src/schemas.ts":{"9":[47],"10":[47],"11":[47]},"packages/@n8n/syslog-client/src/utils.ts":{"7":[47],"15":[47],"37":[47],"69":[47]},"packages/cli/src/eventbus/event-message-classes/event-message-generic.ts":{"23":[46,47,48],"31":[46,47,48],"36":[46,47,48]},"packages/cli/src/modules/insights/database/entities/insights-raw.ts":{"13":[73,20,83,38,43,89,47,48,126],"27":[73,20,83,38,43,89,47,48,126],"38":[73,20,83,38,43,89,47,48,126]},"packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.ts":{"19":[47],"47":[47],"79":[47],"84":[47],"101":[47],"116":[47],"121":[47],"135":[47],"149":[47],"153":[47]},"packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.ts":{"45":[46,47,48],"78":[46,47,48],"82":[46,47,48],"92":[46,47,48],"110":[46,47,48],"118":[46,47,48],"123":[46,47,48],"127":[46,47,48]},"packages/cli/src/modules/log-streaming.ee/log-streaming-destination.service.ts":{"38":[46,47,48],"51":[46,47,48],"75":[46,47,48],"90":[46,47,48],"97":[46,47,48],"122":[46,47,48],"142":[46,47,48],"161":[46,47,48],"188":[46,47,48],"193":[46,47,48],"194":[46,47,48],"201":[46,47,48],"209":[46,47,48],"220":[46,47,48],"221":[46,47,48],"229":[46,47,48],"238":[46,47,48],"263":[46,47,48]},"packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts":{"32":[46,47,99,48],"39":[46,47,99,48],"48":[46,47,99,48],"55":[46,47,99,48],"66":[46,47,99,48],"117":[46,47,99,48],"128":[46,47,99,48]},"packages/cli/src/scaling/pubsub/publisher.service.ts":{"35":[157,46,47,48],"56":[157,46,47,48],"61":[157,46,47,48],"70":[157,46,47,48],"99":[157,46,47,48],"106":[157,46,47,48],"123":[157,46,47,48],"128":[157,46,47,48],"132":[157,46,47,48],"136":[157,46,47,48],"140":[157,46,47,48]},"packages/cli/src/utils/circuit-breaker.ts":{"15":[46,47,48],"147":[46,47,48],"172":[46,47,48],"176":[46,47,48],"180":[46,47,48],"184":[46,47,48],"191":[46,47,48],"197":[46,47,48],"206":[46,47,48],"234":[46,47,48],"269":[46,47,48],"270":[46,47,48]},"packages/cli/src/utils/sliding-window.ts":{"31":[46,47,48],"42":[46,47,48],"57":[46,47,48],"60":[46,47,48],"67":[46,47,48]},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/rbac.ts":{"11":"b:AAAAAABoAQgCAAAAagAAAAAAAAAA"},"packages/frontend/editor-ui/src/app/utils/rbacUtils.ts":{"4":"b:AAAAAABoAQgCAAAAagAAAAAAAAAA","12":"b:AAAAAABoAQgCAAAAagAAAAAAAAAA","23":"b:AAAAAABoAQgCAAAAagAAAAAAAAAA","34":[45,101]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/components/EventDestinationCard.vue":{"44":[46,99,48],"52":[46,99,48],"56":[46,99,48],"72":[46,99,48],"76":[46,99,48],"87":[46,48],"100":[46],"106":[46],"110":[48],"135":[46,99,48],"141":[46,99,48],"144":[46,99,48],"148":[46,99,48],"153":[46,99,48],"157":[46,99,48],"160":[46,99,48],"176":[46]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/components/EventDestinationSettingsModal.vue":{"77":[46,99,48],"88":[46,99,48],"108":[46,99,48],"122":[46,99,48],"126":[46,99,48],"130":[99,48],"134":[99,48],"138":[46,99,48],"140":[46,99,48],"144":[46,99,48],"162":[46,99,48],"166":[46,99,48],"186":[46,99,48],"190":[46,99,48],"205":[46,99,48],"209":[46,99,48],"218":[46,99,48],"224":[46,99,48],"232":[46,99,48],"236":[46,99,48],"262":[46,99,48],"301":[46,99,48],"306":[48],"330":[48],"342":[46,99,48],"371":[46,99,48],"379":[46,99,48],"395":[46,99,48],"412":[46,99,48],"454":[46,99,48],"464":[46,99,48],"472":[46,99,48],"474":[46,99,48],"486":[46,99,48],"495":[46,99,48]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/logStreaming.store.ts":{"44":[46,99,48],"53":[46,99,48],"81":[46,99,48],"99":[46,99,48],"105":[46,99,48],"128":[46,99,48],"136":[46,99,48],"151":[46,99,48],"155":[46,99,48],"163":[46,99,48],"220":[46,99,48],"226":[48],"231":[46,99,48],"248":[46,99,48],"265":[46,99,48],"276":[46,99,48],"280":[46,99,48],"284":[48]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/logStreaming.utils.ts":{"13":[46,99,48],"33":[46,99,48]},"packages/frontend/editor-ui/src/features/integrations/logStreaming.ee/views/SettingsLogStreamingView.vue":{"37":[46,99,48],"45":[46,99,48],"50":[46,99,48],"54":[46,99,48],"58":[46,99,48],"60":[46,99,48],"73":[46,99,48],"75":[48],"88":[46,99,48],"94":[46,99,48],"98":[46,99,48],"103":[48],"108":[46,99,48],"133":[46,99,48],"137":[46,99,48],"152":[48],"161":[46,48],"182":[46,99,48],"204":[46,99,48],"208":[46,99,48],"214":[48],"215":[46,48],"230":[46,99,48],"248":[48]},"packages/localhost-38137/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[99]},"packages/localhost-38137/assets/chunk-CC9Q-vWm.js":{"8":[99],"9":[99],"10":[99],"19":[99],"23":[99],"29":[99],"33":[99],"34":[99]},"packages/nodes-base/nodes/N8n/GenericFunctions.ts":{"21":[111],"56":[111],"93":[111],"94":[111],"107":[111],"111":[111],"146":[111],"150":[111],"186":[111],"210":[111]},"packages/nodes-base/nodes/N8n/WorkflowLocator.ts":{"18":[111],"32":[111],"37":[111],"42":[111]},"packages/cli/src/errors/response-errors/forbidden.error.ts":{"4":[20,61,25,62]},"packages/cli/src/events/relays/workflow-failure-notification.event-relay.ts":{"15":[20,152],"24":[20,152],"26":[20,152],"35":[20,152]},"packages/core/src/binary-data/binary-data.service.ts":{"24":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","30":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","34":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","39":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","47":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","60":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","66":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","97":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","128":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","134":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","144":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","150":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","156":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","164":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","193":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","199":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","202":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","222":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","234":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","238":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","246":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","258":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","264":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","265":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA","278":"b:AQIQAEAAwAAAEAAAAAAAAQADIIEA"},"packages/core/src/binary-data/file-system.manager.ts":{"18":[0,9,149,76,20,38,120,54,55],"23":[0,9,149,76,20,38,120,54,55],"27":[0,9,149,76,20,38,120,54,55],"46":[0,9,149,76,20,38,120,54,55],"50":[0,9,149,76,20,38,120,54,55],"60":[0,9,149,76,20,38,120,54,55],"70":[0,9,149,76,20,38,120,54,55],"76":[0,9,149,76,20,38,120,54,55],"79":[0,9,149,76,20,38,120,54,55],"84":[0,9,149,76,20,38,120,54,55],"90":[0,9,149,76,20,38,120,54,55],"109":[0,9,149,76,20,38,120,54,55],"124":[0,9,149,76,20,38,120,54,55],"136":[0,9,149,76,20,38,120,54,55],"137":[0,9,149,76,20,38,120,54,55],"155":[0,9,149,76,20,38,120,54,55],"159":[0,9,149,76,20,38,120,54,55],"170":[0,9,149,76,20,38,120,54,55],"186":[0,9,149,76,20,38,120,54,55],"196":[0,9,149,76,20,38,120,54,55],"202":[0,9,149,76,20,38,120,54,55]},"packages/core/src/binary-data/index.ts":{"4":[9,76,20,152,136,137,159]},"packages/core/src/binary-data/utils.ts":{"6":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","10":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","26":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","34":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","55":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","63":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","69":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","78":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA","88":"b:AQIQAEAAAAAAEAAAAAAAAAADIIEA"},"packages/core/src/execution-engine/active-workflow-triggers.ts":{"34":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","46":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","61":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","68":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","75":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","84":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","100":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","113":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","133":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","146":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","147":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","173":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","274":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","306":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","340":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","361":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","389":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","399":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","433":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","442":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","456":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","479":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","489":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","500":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB","517":"b:AAgQAAQAQAAAAAAAAAQAAAAKUoEB"},"packages/core/src/execution-engine/scheduled-task-manager.ts":{"34":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","40":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","48":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","57":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","67":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","107":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","110":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","151":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","175":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","179":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","192":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","219":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","224":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","228":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","234":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","238":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","246":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","261":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB","279":"b:AAgQAAAAQAAAAAAAAAQAAAAIUoAB"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/ai-transform.svg":{"11":"b:AEAAAAAAAAAACCAAAOAYQAIAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/compare-datasets.svg":{"11":[14,75,109,110,111,115,116,126]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/convert-to-file.svg":{"11":"b:AEAAAEAAAAAACAAAAOA4QAAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/extract-from-file.svg":{"11":"b:AEAAABAAAAAACAAAAOA4QAAAAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/nodes/n8n.svg":{"11":[84,111]},"packages/@n8n/design-system/src/components/N8nKeyboardShortcut/N8nKeyboardShortcut.vue":{"7":"b:QAAAAAAAEAAAAAAgAcAOAAgCAAAA","10":"b:QAAAAAAAEAAAAAAgAcAOAAgCAAAA","25":"b:QAAAAAAAEAAAAAAgAcAOAAgCAAAA","29":"b:QAAAAAAAEAAAAAAgAcAOAAgCAAAA","33":"b:QAAAAAAAEAAAAAAgAcAOAAgCAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/AskAI/AskAI.vue":{"28":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","57":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","64":[116],"67":[116],"70":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","76":[116],"93":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","100":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","101":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","103":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","104":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","107":[116],"108":[116],"110":[116],"118":[116],"133":[116],"141":[116],"145":[116],"150":[116],"216":[116],"221":[116],"243":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","250":[116],"254":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","259":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","293":[116],"304":"b:BEAAAAAAAAAACAAAAeAYQAAAAAAA","308":[116]},"packages/frontend/editor-ui/src/features/shared/editors/components/JsonEditor/JsonEditor.vue":{"33":"b:gIAAAABAAAAAABAAAIAgHg4BAAAA","43":"b:gIAAAABAAAAAABAAAIAgHg4BAAAA","71":"b:gIAAAABAAAAAABAAAIAgHg4BAAAA","80":"b:gIAAAABAAAAAABAAAIAgHg4BAAAA","84":"b:gAAAAAAAAAAAABAAAAAgHA4AAAAA","89":"b:gIAAAABAAAAAABAAAIAgHg4BAAAA","90":[46,117,122,123,124,130,131],"102":"b:gIAAAABAAAAAABAAAIAgHg4BAAAA","124":"b:gIAAAABAAAAAABAAAIAgHg4BAAAA"},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/NoResults.vue":{"20":[39,111,115],"41":[39,111,115],"46":[39,111,115],"56":[39,111,115]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/Panel/NoResultsIcon.vue":{"8":[39,111,115]},"packages/localhost-36949/assets/shield-alt-DX72YG8n.js":{"8":[111,117]},"packages/nodes-base/nodes/Html/Html.node.ts":{"19":[117],"23":[117],"24":[117],"383":[117],"429":[117],"435":[117],"451":[117],"474":[117],"579":[117]},"packages/nodes-base/nodes/Html/utils.ts":{"10":[117],"12":[117],"13":[117],"21":[117],"29":[117],"39":[117]},"packages/nodes-base/nodes/Postgres/Postgres.node.ts":{"8":[117]},"packages/nodes-base/nodes/Postgres/transport/index.ts":{"25":[117],"45":[117],"48":[117],"54":[117],"63":[117],"98":[117],"99":[117],"103":[117],"107":[117],"113":[117],"121":[117],"128":[117],"140":[117],"160":[117],"161":[117],"166":[117],"172":[117],"190":[117],"212":[117]},"packages/nodes-base/nodes/Postgres/v1/PostgresV1.node.ts":{"288":[117],"297":[117],"331":[117]},"packages/nodes-base/nodes/Postgres/v1/genericFunctions.ts":{"13":[117],"27":[117],"33":[117],"36":[117],"55":[117],"62":[117],"78":[117],"83":[117],"88":[117],"92":[117],"105":[117],"119":[117],"121":[117],"136":[117],"157":[117],"182":[117],"198":[117],"200":[117],"224":[117],"231":[117],"255":[117],"291":[117],"307":[117],"308":[117],"314":[117],"327":[117],"346":[117],"383":[117],"398":[117],"399":[117],"405":[117],"418":[117],"425":[117],"450":[117],"494":[117],"510":[117],"511":[117],"517":[117],"520":[117],"537":[117],"546":[117],"558":[117],"561":[117],"587":[117],"626":[117],"641":[117],"642":[117],"648":[117],"651":[117],"668":[117],"677":[117],"690":[117],"693":[117],"721":[117]},"packages/nodes-base/nodes/Postgres/v2/PostgresV2.node.ts":{"16":[117],"25":[117]},"packages/nodes-base/nodes/Postgres/v2/actions/database/deleteTable.operation.ts":{"88":[117]},"packages/nodes-base/nodes/Postgres/v2/actions/database/executeQuery.operation.ts":{"55":[117],"65":[117],"119":[117],"120":[117]},"packages/nodes-base/nodes/Postgres/v2/actions/database/insert.operation.ts":{"161":[117]},"packages/nodes-base/nodes/Postgres/v2/actions/database/select.operation.ts":{"79":[117]},"packages/nodes-base/nodes/Postgres/v2/actions/database/update.operation.ts":{"195":[117],"279":[117],"286":[117],"333":[117]},"packages/nodes-base/nodes/Postgres/v2/actions/database/upsert.operation.ts":{"194":[117],"286":[117],"298":[117]},"packages/nodes-base/nodes/Postgres/v2/actions/router.ts":{"15":[117]},"packages/nodes-base/nodes/Postgres/v2/helpers/utils.ts":{"27":[117],"36":[117],"46":[117],"50":[117],"51":[117],"54":[117],"58":[117],"63":[117],"70":[117],"79":[117],"87":[117],"130":[117],"151":[117],"180":[117],"192":[117],"207":[117],"226":[117],"234":[117],"311":[117],"314":[117],"315":[117],"322":[117],"353":[117],"356":[117],"359":[117],"366":[117],"376":[117],"392":[117],"413":[117],"453":[117],"495":[117],"501":[117],"517":[117],"518":[117],"526":[117],"527":[117],"530":[117],"537":[117],"540":[117],"547":[117],"562":[117],"592":[117],"608":[117],"613":[117],"620":[117],"625":[117],"628":[117],"645":[117],"652":[117],"673":[117],"676":[117],"694":[117],"711":[117],"752":[117],"754":[117],"766":[117],"772":[117],"781":[117]},"packages/nodes-base/nodes/Postgres/v2/methods/credentialTest.ts":{"10":[117]},"packages/nodes-base/nodes/Postgres/v2/methods/listSearch.ts":{"6":[117],"17":[117],"24":[117],"40":[117]},"packages/nodes-base/nodes/Postgres/v2/methods/loadOptions.ts":{"7":[117],"23":[117],"30":[117],"38":[117],"43":[117]},"packages/nodes-base/nodes/Postgres/v2/methods/resourceMapping.ts":{"61":[117],"76":[117],"98":[117],"100":[117]},"packages/nodes-base/utils/connection-pool-manager.ts":{"53":[117],"66":[117],"68":[117],"74":[117],"81":[117],"104":[117],"131":[117],"139":[117],"152":[117],"172":[117]},"packages/@n8n/codemirror-lang-sql/src/complete.ts":{"192":[117],"193":[117]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/html.svg":{"11":[117]},"packages/frontend/editor-ui/src/features/shared/editors/components/HtmlEditor/HtmlEditor.vue":{"51":[117],"63":[117],"68":[117],"97":[117],"100":[117],"237":[117],"243":[117],"247":[117],"260":[117],"265":[117]},"packages/frontend/editor-ui/src/features/shared/editors/components/HtmlEditor/utils.ts":{"44":[117]},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/ExpressionOutput.vue":{"20":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","30":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","35":"b:AAAAAAAgAAAAAAAAAAAgHC4AAAAA","49":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","50":"b:AAAAAAAgAAAAAAAAAAAgHC4AAAAA","53":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","71":"b:AAAAAAAgAAAAAAAAAAAgHC4AAAAA","82":"b:AAAAAAAgAAAAAAAAAAAgHC4AAAAA","85":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","95":[123],"105":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","106":"b:AAAAAAAgAAAAAAAAAAAgHC4AAAAA","119":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","132":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","137":[45,117,122,123,124,129,132,133],"141":[123],"142":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/InlineExpressionEditor/OutputItemSelect.vue":{"7":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","10":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","11":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","12":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","13":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","14":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","17":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","18":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","19":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","20":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","21":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","25":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","31":[129,130],"35":[129],"37":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","43":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA","70":"b:AAAAAAAgAAAAAAAAAAAgHD4AAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/components/SqlEditor/SqlEditor.vue":{"42":[117],"80":[117],"82":[117],"88":[117],"130":[117],"135":[117],"140":[117],"146":[117],"154":[117],"158":[117],"160":[117],"163":[117],"208":[117],"213":[117]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/blank.completions.ts":{"8":"b:AAAAAAAgAAAAAAAAAAAgHDoAAAAA"},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/bracketAccess.completions.ts":{"17":"b:AAAAAAAgAAAAAAAAAAAgHDoAAAAA","53":[122,123,129],"70":[122,123,129],"74":[122,123,129],"75":[122,123,129]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/dollar.completions.ts":{"29":"b:AAAAAAAgAAAAAAAAAAAgHDoAAAAA","43":[45,117,122,123,124,129,131,133],"60":[45,117,122,123,124,129,131,133],"138":[117,122,123,124,129,131,133],"153":[117,122,123,124,129,131,133],"155":[117,122,123,124,129,131,133]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/completions/nonDollar.completions.ts":{"9":"b:AAAAAAAgAAAAAAAAAAAgHDoAAAAA"},"packages/cli/src/executions/pre-execution-checks/subworkflow-policy-checker.ts":{"17":[152,136,137,159],"28":[152,136,137,159],"61":[152,136,137,159],"79":[152,136,137,159],"88":[152,136,137,159],"106":[152,136,137,159],"110":[152,136,137,159],"111":[152,136,137,159],"122":[152,136,137,159]},"packages/nodes-base/nodes/DebugHelper/DebugHelper.node.ts":{"255":[88,120,121,126,136],"346":[88,120,121,126,136]},"packages/nodes-base/nodes/DebugHelper/functions.ts":{"4":[88,120,121,126,136],"14":[88,120,121,126,136]},"packages/nodes-base/nodes/DebugHelper/randomData.ts":{"26":[88,120,121,126,136],"36":[88,120,121,126,136],"48":[88,120,121,126,136],"55":[88,120,121,126,136],"59":[88,120,121,126,136],"63":[88,120,121,126,136],"79":[88,120,121,126,136],"83":[88,120,121,126,136],"87":[88,120,121,126,136],"91":[88,120,121,126,136],"95":[88,120,121,126,136],"99":[88,120,121,126,136]},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow/ExecuteWorkflow.node.ts":{"302":[42,152,136,137,159]},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow/GenericFunctions.ts":{"10":[42,152,136,137,159],"29":[42,152,136,137,159]},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow/methods/localResourceMapping.ts":{"5":[42,152,136,137,159]},"packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.ts":{"223":[42,152,136,137,159],"229":[42,152,136,137,159],"248":[42,152,136,137,159],"249":[42,152,136,137,159],"251":[42,152,136,137,159],"254":[42,152,136,137,159]},"packages/nodes-base/utils/workflow-backtracking.ts":{"24":[42,152,136,137,159],"44":[42,152,136,137,159]},"packages/nodes-base/utils/workflowInputsResourceMapping/GenericFunctions.ts":{"27":[42,152,136,137,159],"29":[42,152,136,137,159],"74":[42,152,136,137,159],"81":[42,152,136,137,159],"121":[42,152,136,137,159],"126":[42,152,136,137,159],"147":[42,152,136,137,159],"155":[42,152,136,137,159],"157":[42,152,136,137,159],"160":[42,152,136,137,159],"168":[42,152,136,137,159],"184":[42,152,136,137,159]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/execute-sub-workflow.svg":{"11":[84,136,137]},"packages/core/src/execution-engine/workflow-active-triggers-state.ts":{"14":[148,34,160,106,152,137,159,54],"20":[148,34,160,106,152,137,159,54],"25":[148,34,160,106,152,137,159,54],"30":[148,34,160,106,152,137,159,54],"35":[148,34,160,106,152,137,159,54],"43":[148,34,160,106,152,137,159,54],"48":[148,34,160,106,152,137,159,54],"52":[148,34,160,106,152,137,159,54],"63":[148,34,160,106,152,137,159,54],"68":[148,34,160,106,152,137,159,54],"73":[148,34,160,106,152,137,159,54],"78":[148,34,160,106,152,137,159,54],"83":[148,34,160,106,152,137,159,54],"88":[148,34,160,106,152,137,159,54],"93":[148,34,160,106,152,137,159,54]},"packages/frontend/editor-ui/src/app/components/ActivationModal.vue":{"22":[106,54,139,55],"31":[106,54,139,55],"33":[106,54,139,55],"94":[106],"98":[106,54,139,55],"103":[106,54,139,55],"105":[106,54,139,55],"110":[106,54,139,55],"122":[106,54,139,55],"125":[106,54,139,55]},"packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowPublishModal.vue":{"31":[106,54,139,55],"46":[106,54,139,55],"50":[106,54,139,55],"54":[106,54,139,55],"60":[106,54,139,55],"70":[106,54,139,55],"72":[106,54,139,55],"81":[106,54,139,55],"87":[106,54,139,55],"107":[106,54,139,55],"111":[106,54,139,55],"129":[106,54,139,55],"133":[106,54,139,55],"158":[106,54,139,55],"201":[106,54,139,55],"249":[106,54,139,55],"262":[106,54,139,55],"263":[106,54,139,55],"265":[106,54,139,55],"309":[106,54,139,55]},"packages/frontend/editor-ui/src/app/components/WorkflowVersionForm.vue":{"16":[106,54,139,55],"26":[106,54,139,55],"38":[106,54,139,55],"47":[106,54,139,55],"62":[106,54,139,55]},"packages/frontend/editor-ui/src/app/composables/useWorkflowActivate.ts":{"88":[106,54,139,55],"185":[55]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/utils.ts":{"9":[118],"15":[106,54,139,55],"19":[118],"37":[118],"69":[118],"74":[118]},"packages/frontend/editor-ui/src/features/ai/chatHub/ChatWorkflowAgentsView.vue":{"30":[20],"31":[20],"32":[20],"49":[20],"68":[20],"76":[20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatAgentCard.vue":{"24":[20],"30":[20],"43":[20],"53":[20],"56":[20]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatAgentSearchSort.vue":{"8":[20],"18":[20],"27":[20],"45":[20],"57":[20]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMembersRoleCell.vue":{"10":[20,86],"23":[20,86],"25":[20,86],"26":[20,86],"28":[20,86],"29":[20,86],"31":[20],"33":[20,86]},"packages/frontend/editor-ui/src/features/roles/components/CustomRolesUpgradeModal.vue":{"16":[20,86,101]},"packages/frontend/editor-ui/src/features/roles/components/RoleContactAdminModal.vue":{"9":[20,86,101],"32":[20,86,101]},"packages/frontend/editor-ui/src/features/roles/components/RoleHoverPopover.vue":{"16":[20,86,101],"76":[20,86,101]},"packages/frontend/editor-ui/src/features/roles/components/RoleSelectDropdown.vue":{"72":[20,101],"76":[20,101],"88":[20,86,101],"89":[20,86,101],"92":[20,86,101],"98":[20,86,101],"104":[20,86,101],"112":[20,86,101],"143":[20,101],"145":[20,101],"170":[20,86,101],"188":[20,86,101],"202":[20,86,101],"215":[20,86,101],"228":[20,86,101],"234":[20,86,101],"238":[20,86,101],"243":[20,86],"252":[20,86,101],"263":[20,86,101],"273":[20,86,101],"281":[20,86,101]},"packages/localhost-34469/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[20]},"packages/localhost-34469/assets/chunk-CC9Q-vWm.js":{"8":[20],"9":[20],"10":[20],"19":[20],"23":[20],"29":[20],"33":[20],"34":[20]},"packages/localhost-40205/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[20]},"packages/localhost-40205/assets/chunk-CC9Q-vWm.js":{"8":[20],"9":[20],"10":[20],"19":[20],"23":[20],"29":[20],"33":[20],"34":[20]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialsSelect.vue":{"21":[15,79,21],"36":[15,79,21],"37":[15,79,21],"43":[15,79,21],"44":[15,79,21],"47":[79,21],"57":[15,79,21],"84":[15,79,21],"92":[15,79],"101":[15,79,21],"102":[15,79,21],"125":[15,79,21],"139":[79,21],"141":[79,21],"142":[79,21],"143":[15,79,21],"145":[15,79,21],"151":[15,79,21],"173":[15,79,21]},"packages/localhost-33933/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[15,22,81,97,101,107,113,126]},"packages/localhost-33933/assets/chunk-CC9Q-vWm.js":{"8":[15,22,81,97,101,107,113,126],"9":[15,22,81,97,101,107,113,126],"10":[15,22,81,97,101,107,113,126],"19":[15,22,81,97,101,107,113,126],"23":[15,22,81,97,101,107,113,126],"29":[15,22,81,97,101,107,113,126],"33":[15,22,81,97,101,107,113,126],"34":[15,22,81,97,101,107,113,126]},"packages/@n8n/client-oauth2/src/client-oauth2.ts":{"50":[22,147,132],"70":[22,147,132],"78":[22,147,132],"91":[22,147,132],"104":[22,147,132],"107":[22,147,132],"138":[22,147,132]},"packages/@n8n/client-oauth2/src/code-flow.ts":{"25":[22,147,132],"30":[22,147,132],"61":[22,147,132]},"packages/@n8n/client-oauth2/src/credentials-flow.ts":{"25":[22,147,132],"30":[22,147,132]},"packages/@n8n/client-oauth2/src/index.ts":{"2":[22,147,132],"5":[22,147,132]},"packages/@n8n/client-oauth2/src/utils.ts":{"8":[22,147,132],"22":[22,147,132],"34":[22,147,132],"51":[22,147,132],"58":[22,147,132],"65":[22,147,132]},"packages/cli/src/controllers/oauth/oauth2-credential.controller.ts":{"22":[22,147,132],"33":[22,147,132],"41":[22,147,132],"175":[22,147,132]},"packages/cli/src/oauth/oauth-browser-binding.service.ts":{"16":[22,147,132,56],"19":[22,147,132,56],"31":[22,147,132,56],"48":[22,147,132,56],"58":[22,147,132,56],"72":[22,147,132,56]},"packages/cli/src/oauth/oauth.service.ts":{"86":[22,147,132,56],"96":[22,147,132,56],"103":[22,147,132,56],"111":[22,147,132,56],"143":[22,147,132,56],"147":[22,147,132,56],"156":[22,147,132,56],"184":[22,147,132,56],"188":[22,147,132,56],"197":[22,147,132,56],"211":[22,147,132,56],"250":[22,147,132,56],"255":[22,147,132,56],"289":[22,147,132,56],"316":[22,147,132,56],"323":[22,147,132,56],"333":[22,147,132,56],"340":[22,147,132,56],"355":[22,147,132,56],"370":[22,147,132,56],"392":[22,147,132,56],"428":[22,147,132,56],"440":[22,147,132,56],"459":[22,147,132,56],"468":[22,147,132,56],"476":[22,147,132,56],"484":[22,147,132,56],"577":[22,147,132,56],"590":[22,147,132,56],"628":[22,147,132,56],"638":[22,147,132,56],"653":[22,147,132,56],"684":[22,147,132,56],"685":[22,147,132,56],"688":[22,147,132,56],"698":[22,147,132,56],"701":[22,147,132,56],"715":[22,147,132,56],"731":[22,147,132,56],"796":[22,147,132,56],"799":[22,147,132,56],"806":[22,147,132,56],"885":[22,147,132,56],"896":[22,147,132,56],"983":[22,147,132,56],"1043":[22,147,132,56],"1106":[22,147,132,56],"1119":[22,147,132,56],"1145":[22,147,132,56],"1218":[22,147,132,56],"1230":[22,147,132,56],"1274":[22,147,132,56],"1308":[22,147,132,56],"1326":[22,147,132,56],"1371":[22,147,132,56],"1390":[22,147,132,56],"1444":[22,147,132,56],"1470":[22,147,132,56]},"packages/cli/src/oauth/validate-oauth-url.ts":{"12":[22,147,132,56]},"packages/frontend/editor-ui/src/features/credentials/components/CredentialEdit/GoogleAuthButton.vue":{"2":[79,22,132]},"packages/frontend/editor-ui/src/features/credentials/composables/oauthCallback.ts":{"20":[22,132]},"packages/@n8n/api-types/src/dto/data-table/list-data-table-content-query.dto.ts":{"12":[80,81],"39":[80,81]},"packages/cli/src/modules/data-table/data-table-column.repository.ts":{"21":[80,81],"31":[80,81],"33":[80,81],"44":[80,81],"63":[80,81],"73":[80,81],"77":[80,81],"89":[80,81],"99":[80,81],"100":[80,81],"125":[80,81],"126":[80,81],"139":[80,81],"145":[80,81],"164":[80,81],"170":[80,81],"190":[80,81],"191":[80,81],"196":[80,81]},"packages/cli/src/modules/data-table/data-table-ddl.service.ts":{"21":[80,81],"23":[80,81],"28":[80,81],"42":[80,81],"43":[80,81],"51":[80,81],"57":[80,81],"62":[80,81],"68":[80,81],"73":[80,81],"80":[80,81]},"packages/cli/src/modules/data-table/data-table-rows.repository.ts":{"56":[80,81],"138":[80,81],"140":[80,81],"146":[80,81],"167":[80,81],"208":[80,81],"215":[80,81],"221":[80,81],"222":[80,81],"261":[80,81],"273":[80,81],"294":[80,81],"302":[80,81],"307":[80,81],"308":[80,81],"342":[80,81],"347":[80,81],"366":[80,81],"372":[80,81],"409":[80,81],"417":[80,81],"449":[80,81],"455":[80,81],"456":[80,81],"477":[80,81],"478":[80,81],"485":[80,81],"492":[80,81],"507":[80,81],"521":[80,81],"542":[80,81],"554":[80,81],"572":[80,81],"581":[80,81],"582":[80,81],"601":[80,81],"626":[80,81],"637":[80,81],"663":[80,81],"672":[80,81],"691":[80,81],"706":[80,81],"714":[80,81]},"packages/cli/src/modules/data-table/data-table.controller.ts":{"51":[80,81],"57":[80,81],"77":[80,81],"87":[80,81],"104":[80,81],"132":[80,81],"146":[80,81],"170":[80,81],"191":[80,81],"211":[80,81],"227":[80,81],"243":[80,81],"265":[80,81],"287":[80,81],"312":[80,81],"353":[80,81],"382":[80,81],"412":[80,81],"465":[80,81],"518":[80,81]},"packages/@n8n/design-system/src/components/N8nBreadcrumbs/Breadcrumbs.vue":{"34":[80,81,39,40],"59":[80,81,39,40],"65":[80,81,39,40],"69":[40],"73":[40],"74":[40],"81":[40],"107":[80,81,39,40],"108":[40],"114":[40],"123":[40],"124":[40],"142":[40],"143":[40],"158":[40],"172":[80,81,39,40],"211":[40],"212":[40],"238":[40],"245":[80,81,39,40],"257":[40],"258":[40],"259":[40],"261":[80,81,39,40]},"packages/frontend/editor-ui/src/app/components/WorkflowCard.vue":{"56":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","134":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","137":"b:ABAAAAAGoAAAAkMAAAAAAIAAAQAA","138":[55],"139":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","141":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","144":[42,53],"147":[42,53],"151":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","155":"b:ABAAAAAGoAAAAkMAAAAAAIAAAQAA","166":"b:ABAAAAAGoAAAAkMAAAAAAIAAAQAA","186":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","286":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","303":[144],"307":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","311":"b:ABAAAAAGoAAAAkMAAAAAAIAAAQAA","317":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","321":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","325":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","327":[42,53,55],"353":[39,41,42,55],"417":[55],"427":[55],"462":[55],"466":[55],"504":[55],"553":[55],"593":[55,144],"595":[55,144],"597":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","608":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","620":[53],"639":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","669":"b:ABAAAIAHoAAAAkMAAAAAAIAAAQAA","686":"b:ABAAAAAGoAAAAkMAAAAAAIAAAQAA","712":[55]},"packages/frontend/editor-ui/src/features/core/dataTable/DataTableDetailsView.vue":{"49":[80,81],"51":[80,81],"69":[80,81],"88":[80],"96":[80],"103":[80],"111":[80],"143":[80,81],"150":[80,81],"157":[81],"200":[80,81],"203":[80,81],"207":[80,81],"218":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/DataTableView.vue":{"64":[80,81],"65":[80,81],"73":[80,81],"75":[81],"82":[80,81],"84":[80,81],"110":[80,81],"130":[80,81],"135":[80,81],"152":[81],"171":[80,81],"175":[80,81],"176":[80,81],"211":[80,81],"221":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/AddDataTableModal.vue":{"120":[80,81],"140":[80,81],"141":[80,81],"149":[80,81],"188":[80,81],"267":[80,81],"334":[80,81],"339":[80,81],"345":[80,81],"357":[80,81],"358":[80,81],"361":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DataTableActions.vue":{"53":[80,81],"54":[80,81],"56":[80,81],"91":[81],"153":[81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DataTableBreadcrumbs.vue":{"16":[80,81],"38":[80,81],"42":[80,81],"46":[80,81],"81":[80],"103":[80,81],"109":[80,81],"119":[80,81],"122":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DataTableCard.vue":{"34":[80,81],"44":[80,81],"49":[80,81],"50":[80,81],"55":[80,81],"64":[80,81],"67":[80,81],"74":[80,81],"81":[80,81],"93":[80,81],"105":[80,81],"114":[80,81],"120":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/DownloadDataTableModal.vue":{"25":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/ImportCsvModal.vue":{"21":[80,81],"143":[80,81],"154":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/AddColumnButton.vue":{"31":[80,81],"48":[80,81],"67":[80,81],"69":[80],"72":[80],"78":[80],"114":[80],"123":[80],"129":[80],"142":[80,81],"154":[80,81],"160":[80,81],"174":[80],"184":[80],"217":[80],"221":[80],"222":[80],"243":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/AddRowButton.vue":{"5":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/ColumnHeader.vue":{"31":[80,81],"32":[80,81],"34":[80,81,24,60,61,25,62,26,82],"55":[80],"64":[80],"68":[80],"72":[80],"76":[80,81],"86":[80,81],"90":[80,81],"97":[80,81],"102":[80,81],"113":[80,81],"122":[80,81],"124":[80],"130":[80,81],"150":[80,81],"154":[80,81],"172":[80],"182":[80,81],"194":[80,81],"200":[80,81],"253":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/DataTableTable.vue":{"49":[80,81],"51":[80,81],"69":[80,81],"90":[80,81],"117":[80,81],"120":[80],"128":[80],"132":[80],"136":[80],"140":[80,81],"157":[80],"162":[80,81],"163":[80],"193":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/registerAgGridModulesOnce.ts":{"27":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useAgGrid.ts":{"23":[80,81],"34":[80,81],"86":[80,81],"98":[80,81],"118":[80],"124":[80],"133":[80],"135":[80],"145":[80],"153":[80],"173":[80],"212":[80,81],"231":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableColumnFilters.ts":{"19":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableColumns.ts":{"40":[80,81],"59":[80,81],"66":[80],"100":[80],"126":[80,81],"135":[80,81],"162":[80,81],"164":[80,81],"217":[80,81],"221":[80],"222":[80],"229":[80],"237":[80],"245":[80],"247":[80],"248":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableOperations.ts":{"57":[80,81],"113":[80],"114":[80],"132":[80],"135":[80],"204":[80],"228":[80],"238":[80],"254":[80],"277":[80],"330":[80,81],"354":[80],"390":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTablePagination.ts":{"11":[80,81],"17":[80,81],"21":[80],"32":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableSelection.ts":{"5":[80,81],"13":[80,81],"18":[80],"19":[80,81],"23":[80],"27":[80],"36":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDataTableTypes.ts":{"8":[80,81],"9":[80,81],"18":[80,81],"25":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/module.descriptor.ts":{"13":[80,81],"14":[80,81],"15":[80,81],"25":[80,81],"37":[81]},"packages/frontend/editor-ui/src/features/core/dataTable/typeGuards.ts":{"11":[80],"21":[80,81]},"packages/frontend/editor-ui/src/features/core/dataTable/utils/columnUtils.ts":{"26":[80],"29":[80],"35":[80,81],"36":[80,81],"51":[80,81],"52":[80,81],"65":[80,81],"66":[80,81],"94":[80,81],"95":[80],"119":[80],"126":[80,81],"135":[80],"141":[80],"149":[80,81],"156":[80,81],"163":[80,81],"170":[80,81],"177":[80],"184":[80,81],"191":[80,81],"198":[80,81],"205":[80,81],"212":[80,81],"219":[80,81],"229":[80,81],"241":[80],"253":[80]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/CommunityPackageCard.vue":{"43":[97],"47":[97],"55":[97],"63":[97],"80":[97],"98":[97],"103":[97],"105":[97],"108":[97],"120":[97],"135":[97],"142":[97],"151":[97],"168":[97],"176":[97]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/CommunityPackageInstallModal.vue":{"32":[97],"39":[97],"47":[97],"54":[97],"78":[97],"82":[97],"86":[97],"98":[97],"111":[97],"119":[97],"134":[97],"167":[97],"172":[97],"178":[97]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/CommunityPackageManageConfirmModal.vue":{"32":[97],"54":[97],"57":[97],"68":[97],"69":[97],"72":[97],"108":[97],"112":[97],"120":[97],"124":[97],"147":[97],"151":[97],"190":[97],"192":[97],"203":[97],"216":[97],"226":[97],"232":[97],"240":[97],"252":[97],"253":[97],"261":[97],"270":[97]},"packages/frontend/editor-ui/src/features/settings/communityNodes/composables/useInstallNode.ts":{"38":[30,97],"60":[97]},"packages/frontend/editor-ui/src/features/settings/communityNodes/views/SettingsCommunityNodesView.vue":{"40":[97],"44":[97],"48":[97],"56":[97],"77":[97],"82":[97],"94":[97],"104":[97],"110":[97],"117":[97],"122":[97],"126":[97],"130":[97],"178":[97]},"packages/@n8n/api-types/src/dto/user/role-change-request.dto.ts":{"9":[101]},"packages/cli/src/modules/chat-hub/chat-hub-event-relay.service.ts":{"10":[101],"19":[101],"27":[101]},"packages/cli/src/modules/provisioning.ee/provisioning.controller.ee.ts":{"13":[13,101],"21":[13,101],"31":[13,101]},"packages/cli/src/services/folder.service.ts":{"33":[39,40,41,42,101],"41":[39,40,41,42,101],"58":[39,40,41,42,101],"97":[39,40,41,42,101],"105":[39,40,41,42,101],"134":[39,40,41,42,101],"153":[39,40,41,42,101],"166":[39,40,41,42,101],"189":[39,40,41,42,101],"197":[39,40,41,42,101],"205":[39,40,41,42,101],"213":[39,40,41,42,101],"224":[39,40,41,42,101],"238":[39,40,41,42,101],"239":[39,40,41,42,101],"247":[39,40,41,42,101],"272":[39,40,41,42,101],"285":[39,40,41,42,101],"311":[39,40,41,42,101],"321":[39,40,41,42,101],"324":[39,40,41,42,101],"329":[39,40,41,42,101]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isDefaultUser.ts":{"4":[101]},"packages/frontend/editor-ui/src/features/roles/instance/instanceRoleScopes.ts":{"85":[101],"95":[101],"100":[101],"111":[101],"150":[101],"154":[101],"238":[101]},"packages/frontend/editor-ui/src/features/settings/sso/provisioning/composables/userRoleProvisioning.store.ts":{"13":[101],"18":[101]},"packages/frontend/editor-ui/src/features/settings/users/components/DeleteUserModal.vue":{"15":[101],"32":[101],"35":[101],"38":[101],"40":[101],"49":[101],"65":[101],"71":[101],"105":[101],"118":[101],"122":[101],"128":[101],"132":[101],"134":[101],"137":[101],"142":[101],"154":[101],"155":[101],"156":[101],"165":[101],"174":[101]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersActionsCell.vue":{"7":[101],"16":[101],"21":[101]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersLastActiveCell.vue":{"7":[101],"10":[101],"13":[101]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersProjectsCell.vue":{"6":[101],"13":[101],"19":[101],"22":[101],"26":[101],"30":[101]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersRoleCell.vue":{"31":[101],"33":[101],"34":[101],"36":[101],"40":[101],"41":[101],"45":[101],"48":[101],"49":[101],"50":[101],"52":[101],"56":[101],"58":[101]},"packages/frontend/editor-ui/src/features/settings/users/components/SettingsUsersTable.vue":{"19":[101],"41":[101],"47":[101],"63":[101],"74":[101],"85":[101],"96":[101],"127":[101],"135":[101],"138":[101],"143":[101],"145":[101],"160":[101],"165":[101],"176":[101],"179":[101],"182":[101],"186":[101]},"packages/frontend/editor-ui/src/features/settings/users/views/SettingsUsersView.vue":{"74":[101],"76":[101],"80":[101],"84":[101],"86":[101],"96":[101],"101":[101],"110":[101],"116":[101],"123":[101],"132":[101],"137":[101],"141":[101],"145":[101],"169":[101],"204":[101],"209":[101],"327":[101],"328":[101],"337":[101],"349":[101],"372":[101],"377":[101],"424":[101],"427":[101],"432":[101],"441":[101],"501":[101],"508":[101]},"packages/frontend/editor-ui/src/app/views/DemoDiffView.vue":{"19":[107],"26":[107],"35":[107],"62":[107]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/HighlightedEdge.vue":{"6":[107]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/SyncedWorkflowCanvas.vue":{"16":[107],"39":[107],"49":[107],"68":[107],"71":[107],"76":[107],"90":[107],"98":[107],"102":[107],"131":[107],"146":[107],"149":[107],"152":[107]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/WorkflowDiffContent.vue":{"15":[107],"41":[107],"46":[107],"48":[107],"59":[107],"70":[107],"75":[107],"87":[107],"102":[107],"113":[107],"118":[107],"130":[107]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/WorkflowDiffView.vue":{"64":[107],"65":[107],"84":[107],"85":[107],"102":[107],"148":[107],"169":[107],"174":[107],"176":[107],"183":[107]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/useViewportSync.ts":{"30":[107],"47":[107],"53":[107],"72":[107]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/useWorkflowDiff.ts":{"36":[107],"37":[107],"47":[107],"48":[107],"52":[107],"57":[107],"76":[107],"88":[107],"99":[107],"105":[107],"122":[107],"135":[107],"150":[107],"166":[107],"171":[107],"179":[107],"222":[107],"244":[107],"272":[107]},"packages/frontend/editor-ui/src/features/workflows/workflowDiff/useWorkflowDiffUI.ts":{"25":[107],"40":[107],"94":[107],"97":[107],"98":[107],"130":[107],"167":[107],"182":[107],"221":[107],"225":[107]},"packages/@n8n/db/src/entities/credentials-entity.ts":{"64":[158,79,104]},"packages/workflow/src/graph/graph-utils.ts":{"41":[113],"62":[113],"80":[113],"88":[113],"95":[113],"103":[113],"114":[113],"115":[113],"123":[113],"133":[113],"134":[113],"145":[113],"157":[113],"170":[113],"174":[113],"209":[113],"218":[113],"239":[113]},"packages/workflow/src/node-grouping-validation.ts":{"54":[113],"62":[113],"81":[113],"85":[113],"95":[113],"108":[113],"113":[113],"121":[113],"126":[113],"144":[113],"148":[113],"149":[113],"152":[113],"179":[113],"185":[113],"230":[113],"240":[113]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/edges/CanvasConnectionLine.vue":{"11":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","17":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","21":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","28":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","34":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","38":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","46":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA","47":"b:QEAAMAAAAAIIAAgAAGAAAiACAAAA","51":"b:QEAAMAAAAAIIAAgAAGACAiACAAAA"},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/groups/CanvasNodeGroupTitleBar.vue":{"18":[57,113],"51":[57,113],"52":[57,113],"55":[57,113],"56":[57,113],"60":[57,113],"62":[57,113],"75":[57,113],"86":[57,113],"95":[57,113],"97":[57,113],"104":[57,113],"108":[57,113],"112":[57,113],"117":[57],"125":[57,113],"133":[57,113],"137":[57,113],"138":[57,113],"144":[57,113],"160":[57,113],"170":[57],"174":[57,113],"215":[57,113],"247":[57,113]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/selection/CanvasSelectionToolbar.vue":{"14":[57,113],"30":[57,113],"31":[57,113],"39":[57,113],"41":[57,113],"45":[57,113],"49":[57,113],"53":[57,113],"61":[57,113],"66":[57],"68":[57,113],"80":[57,113],"87":[57,113],"103":[57,113]},"packages/frontend/editor-ui/src/features/workflows/canvas/composables/useVueFlowTransformPaneTeleport.ts":{"9":[57,113],"14":[57,113],"16":[57,113]},"packages/localhost-38585/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[50]},"packages/localhost-38585/assets/chunk-CC9Q-vWm.js":{"8":[50],"9":[50],"10":[50],"19":[50],"23":[50],"29":[50],"33":[50],"34":[50]},"packages/cli/src/utils/object-to-error.ts":{"10":[152]},"packages/@n8n/api-types/src/schemas/node-version.schema.ts":{"7":[14,42,126,129,133,137]},"packages/cli/src/controllers/dynamic-node-parameters.controller.ts":{"16":[14,42,126,129,132,133,137],"19":[14,42,126,129,132,133,137],"68":[14,42,126,129,132,133,137],"106":[14,42,126,129,132,133,137],"134":[14,42,126,129,132,133,137],"158":[14,42,126,129,132,133,137]},"packages/cli/src/services/pruning/executions-pruning.service.ts":{"44":[126],"55":[126],"61":[126],"70":[126],"81":[126],"90":[126],"92":[126],"99":[126],"100":[126],"102":[126],"103":[126],"113":[126],"125":[126],"135":[126],"144":[126]},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/authentication.ts":{"22":[14,150,126,129],"150":[14,150,126,129]},"packages/nodes-base/nodes/Airtable/Airtable.node.ts":{"8":[126]},"packages/nodes-base/nodes/Airtable/v1/AirtableV1.node.ts":{"558":[126],"565":[126],"833":[126],"834":[126],"838":[126],"839":[126]},"packages/nodes-base/nodes/Airtable/v1/GenericFunctions.ts":{"29":[126],"72":[126],"100":[126]},"packages/nodes-base/nodes/Airtable/v2/AirtableV2.node.ts":{"15":[126],"29":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/base/getMany.operation.ts":{"88":[126],"112":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/base/getSchema.operation.ts":{"30":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/record/create.operation.ts":{"51":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/record/deleteRecord.operation.ts":{"36":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/record/get.operation.ts":{"60":[126],"85":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/record/search.operation.ts":{"147":[126],"183":[126],"214":[126],"224":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/record/update.operation.ts":{"57":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/record/upsert.operation.ts":{"52":[126],"120":[126],"125":[126],"142":[126]},"packages/nodes-base/nodes/Airtable/v2/actions/router.ts":{"8":[126]},"packages/nodes-base/nodes/Airtable/v2/helpers/utils.ts":{"11":[126],"16":[126],"35":[126],"42":[126],"57":[126],"76":[126],"91":[126],"100":[126],"110":[126]},"packages/nodes-base/nodes/Airtable/v2/methods/listSearch.ts":{"11":[126],"44":[126],"54":[126],"91":[126],"101":[126],"117":[126],"145":[126]},"packages/nodes-base/nodes/Airtable/v2/methods/loadOptions.ts":{"6":[126],"19":[126],"42":[126],"57":[126],"62":[126],"65":[126],"80":[126]},"packages/nodes-base/nodes/Airtable/v2/methods/resourceMapping.ts":{"48":[126],"63":[126],"76":[126],"88":[126],"90":[126],"120":[126]},"packages/nodes-base/nodes/Airtable/v2/transport/index.ts":{"20":[126],"59":[126],"87":[126],"94":[126],"131":[126]},"packages/nodes-base/nodes/Code/ExecutionError.ts":{"14":[0,7,126,56],"30":[0,7,126,56],"38":[0,7,126,56],"39":[0,7,126,56],"59":[0,7,126,56],"75":[0,7,126,56]},"packages/nodes-base/nodes/Code/JavaScriptSandbox.ts":{"30":[0,7,126,56],"52":[0,7,126,56],"55":[0,7,126,56],"65":[0,7,126,56],"85":[0,7,126,56],"93":[0,7,126,56],"103":[0,7,126,56]},"packages/nodes-base/nodes/Code/Sandbox.ts":{"24":[0,7,126,56],"46":[0,7,126,56],"59":[0,7,126,56],"71":[0,7,126,56]},"packages/nodes-base/nodes/Function/Function.node.ts":{"67":[126,56],"79":[126,56],"80":[126,56],"101":[126,56],"102":[126,56],"115":[126,56],"215":[126,56]},"packages/nodes-base/nodes/Typeform/GenericFunctions.ts":{"40":[126],"77":[126],"113":[126]},"packages/nodes-base/nodes/Typeform/TypeformTrigger.node.ts":{"122":[126],"160":[126],"179":[126],"205":[126],"230":[126],"305":[126]},"packages/nodes-base/nodes/Typeform/TypeformTriggerHelpers.ts":{"18":[126],"24":[126],"36":[126]},"packages/nodes-base/utils/webhook-signature-verification.ts":{"64":[126],"106":[126]},"packages/workflow/src/errors/expression.error.ts":{"32":[126],"56":[126]},"packages/workflow/src/workflow-data-proxy-helpers.ts":{"3":[126]},"packages/@n8n/design-system/src/components/N8nIcon/custom/empty-output.svg":{"9":[126]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/respond-to-webhook.svg":{"11":[14,17,38,126,131,55]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/utils.ts":{"10":[115,116,126],"19":[115,116,126],"30":[115,116,126]},"packages/frontend/editor-ui/src/features/shared/editors/components/JsEditor/JsEditor.vue":{"31":[6,126],"36":[6,126],"40":[6,126],"57":[6,126],"73":[6,126],"77":[6,126],"102":[6,126],"121":[6,126]},"packages/localhost-33933/assets/shield-alt-DX72YG8n.js":{"8":[126]},"packages/localhost-45601/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[5,68,100,114,128]},"packages/localhost-45601/assets/chunk-CC9Q-vWm.js":{"8":[5,68,100,114,128],"9":[5,68,100,114,128],"10":[5,68,100,114,128],"19":[5,68,100,114,128],"23":[5,68,100,114,128],"29":[5,68,100,114,128],"33":[5,68,100,114,128],"34":[5,68,100,114,128]},"packages/@n8n/ai-utilities/src/utils/embeddings-input-validation.ts":{"13":[0,7],"32":[0,7],"40":[0,7]},"packages/@n8n/ai-utilities/src/utils/n8n-json-loader.ts":{"15":[7],"21":[7],"35":[7],"45":[7],"81":[7]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/MemoryCalculator.ts":{"21":[0,7],"61":[0,7]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/MemoryVectorStoreManager.ts":{"40":[0,7],"69":[0,7],"80":[0,7],"91":[0,7],"106":[0,7],"114":[0,7],"131":[0,7],"138":[0,7],"163":[0,7],"175":[0,7],"182":[0,7],"190":[0,7],"211":[0,7],"268":[0,7]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/StoreCleanupService.ts":{"16":[0,7],"31":[0,7],"45":[0,7],"79":[0,7],"117":[0,7],"120":[0,7],"153":[0,7]},"packages/@n8n/ai-utilities/src/utils/vector-store/MemoryManager/config.ts":{"10":[0,7],"38":[0,7],"47":[0,7]},"packages/@n8n/ai-utilities/src/utils/vector-store/createVectorStoreNode/createVectorStoreNode.ts":{"50":[0,7,129],"53":[0,7,129],"417":[0,7,129],"479":[0,7,129]},"packages/@n8n/ai-utilities/src/utils/vector-store/createVectorStoreNode/operations/insertOperation.ts":{"17":[0,7]},"packages/@n8n/ai-utilities/src/utils/vector-store/createVectorStoreNode/utils.ts":{"12":[0,7,129],"16":[0,7,129],"26":[0,7,129],"36":[0,7,129],"41":[0,7,129],"47":[0,7,129]},"packages/@n8n/ai-utilities/src/utils/vector-store/processDocuments.ts":{"7":[0,7],"19":[0,7],"28":[0,7],"41":[0,7]},"packages/@n8n/nodes-langchain/nodes/chains/ChainRetrievalQA/ChainRetrievalQa.node.ts":{"20":[7],"185":[7],"201":[7],"207":[7]},"packages/@n8n/nodes-langchain/nodes/chains/ChainRetrievalQA/processItem.ts":{"19":[7]},"packages/@n8n/nodes-langchain/nodes/code/Code.node.ts":{"67":[0,7],"122":[0,7],"126":[0,7],"136":[0,7],"146":[0,7],"150":[0,7],"151":[0,7],"152":[0,7]},"packages/@n8n/nodes-langchain/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.ts":{"21":[0,7],"38":[0,7],"329":[0,7]},"packages/@n8n/nodes-langchain/nodes/retrievers/RetrieverVectorStore/RetrieverVectorStore.node.ts":{"14":[7],"73":[7]},"packages/@n8n/nodes-langchain/nodes/text_splitters/TextSplitterCharacterTextSplitter/TextSplitterCharacterTextSplitter.node.ts":{"13":[0,7],"68":[0,7]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreInMemory/VectorStoreInMemory.node.ts":{"37":[0,7],"132":[0,7],"143":[0,7],"152":[0,7],"161":[0,7],"186":[0,7],"192":[0,7]},"packages/@n8n/agents/src/index.ts":{"98":[24,61,62,26],"110":[24,61,62,26],"132":[24,61,62,26],"133":[24,61,62,26],"135":[24,61,62,26],"188":[24,61,62,26],"256":[24,61,62,26],"259":[24,61,62,26],"313":[24,61,62,26],"360":[24,61,62,26],"361":[24,61,62,26],"362":[24,61,62,26],"363":[24,61,62,26],"364":[24,61,62,26],"397":[24,61,62,26]},"packages/@n8n/agents/src/runtime/json-value.ts":{"3":[24,26],"32":[24,26]},"packages/@n8n/agents/src/runtime/loop/agent-runtime.ts":{"176":[24,61,25,62,26],"191":[24,61,25,62,26],"202":[24,61,25,62,26],"210":[24,61,25,62,26],"216":[24,61,25,62,26],"221":[24,61,25,62,26],"232":[24,61,25,62,26],"246":[24,61,25,62,26],"269":[24,61,25,62,26],"277":[24,61,25,62,26],"292":[24,61,25,62,26],"298":[24,61,25,62,26],"320":[24,61,25,62,26],"337":[24,61,25,62,26],"376":[24,61,25,62,26],"408":[24,61,25,62,26],"434":[24,61,25,62,26],"449":[24,61,25,62,26],"452":[24,61,25,62,26],"466":[24,61,25,62,26],"488":[24,61,25,62,26],"507":[24,61,25,62,26],"513":[24,61,25,62,26],"516":[24,61,25,62,26],"529":[24,61,25,62,26],"542":[24,61,25,62,26],"550":[24,61,25,62,26],"554":[24,61,25,62,26],"555":[24,61,25,62,26],"556":[24,61,25,62,26],"557":[24,61,25,62,26],"558":[24,61,25,62,26],"559":[24,61,25,62,26],"560":[24,61,25,62,26],"561":[24,61,25,62,26],"566":[24,61,25,62,26],"599":[24,61,25,62,26],"621":[24,61,25,62,26],"629":[24,61,25,62,26],"779":[24,61,25,62,26],"786":[24,61,25,62,26],"788":[24,61,25,62,26],"792":[24,61,25,62,26],"797":[24,61,25,62,26],"802":[24,61,25,62,26],"803":[24,61,25,62,26],"804":[24,61,25,62,26],"805":[24,61,25,62,26],"815":[24,61,25,62,26],"847":[24,61,25,62,26],"852":[24,61,25,62,26],"853":[24,61,25,62,26],"860":[24,61,25,62,26],"865":[24,61,25,62,26],"870":[24,61,25,62,26],"881":[24,61,25,62,26],"896":[24,61,25,62,26]},"packages/@n8n/agents/src/runtime/loop/execution-counter.ts":{"14":[24,61,62,26],"22":[24,61,62,26],"24":[24,61,62,26],"27":[24,61,62,26],"29":[24,61,62,26],"32":[24,61,62,26]},"packages/@n8n/agents/src/runtime/loop/runtime-context.ts":{"29":[24,61,62,26],"31":[24,61,62,26],"35":[24,61,62,26],"63":[24,61,62,26],"68":[24,61,62,26],"73":[24,61,62,26],"106":[24,61,62,26],"136":[24,61,62,26],"141":[24,61,62,26],"160":[24,61,62,26],"178":[24,61,62,26],"193":[24,61,62,26],"209":[24,61,62,26],"231":[24,61,62,26],"236":[24,61,62,26],"267":[24,61,62,26],"279":[24,61,62,26]},"packages/@n8n/agents/src/runtime/loop/runtime-helpers.ts":{"14":[24,61,62,26],"22":[24,61,62,26],"42":[24,61,62,26],"65":[24,61,62,26],"67":[24,61,62,26],"68":[24,61,62,26],"76":[24,61,62,26],"79":[24,61,62,26],"80":[24,61,62,26],"81":[24,61,62,26],"86":[24,61,62,26]},"packages/@n8n/agents/src/runtime/loop/stream-sink.ts":{"42":[24,61,25,62,26],"48":[24,61,25,62,26],"60":[24,61,25,62,26],"75":[24,61,25,62,26],"89":[24,61,25,62,26],"94":[24,61,25,62,26],"102":[24,61,25,62,26],"202":[24,61,25,62,26],"227":[24,61,25,62,26],"254":[24,61,25,62,26]},"packages/@n8n/agents/src/runtime/memory/episodic-memory.ts":{"78":[24,61,62,26],"84":[24,61,62,26],"99":[24,61,62,26],"118":[24,61,62,26],"132":[24,61,62,26],"153":[24,61,62,26],"156":[24,61,62,26],"176":[24,61,62,26],"191":[24,61,62,26],"192":[24,61,62,26],"204":[24,61,62,26],"205":[24,61,62,26],"213":[24,61,62,26],"220":[24,61,62,26],"223":[24,61,62,26],"224":[24,61,62,26],"227":[24,61,62,26],"234":[24,61,62,26],"237":[24,61,62,26],"238":[24,61,62,26],"241":[24,61,62,26],"242":[24,61,62,26],"268":[24,61,62,26],"269":[24,61,62,26],"277":[24,61,62,26],"284":[24,61,62,26],"288":[24,61,62,26],"292":[24,61,62,26],"299":[24,61,62,26],"305":[24,61,62,26],"327":[24,61,62,26],"338":[24,61,62,26],"355":[24,61,62,26],"364":[24,61,62,26],"374":[24,61,62,26],"380":[24,61,62,26],"388":[24,61,62,26],"391":[24,61,62,26],"401":[24,61,62,26],"416":[24,61,62,26],"423":[24,61,62,26],"424":[24,61,62,26],"429":[24,61,62,26],"437":[24,61,62,26],"442":[24,61,62,26],"451":[24,61,62,26],"458":[24,61,62,26],"480":[24,61,62,26],"484":[24,61,62,26],"488":[24,61,62,26],"501":[24,61,62,26],"503":[24,61,62,26],"514":[24,61,62,26],"524":[24,61,62,26],"527":[24,61,62,26],"531":[24,61,62,26],"535":[24,61,62,26],"539":[24,61,62,26],"540":[24,61,62,26],"543":[24,61,62,26],"546":[24,61,62,26],"550":[24,61,62,26],"564":[24,61,62,26],"568":[24,61,62,26],"578":[24,61,62,26],"587":[24,61,62,26],"601":[24,61,62,26]},"packages/@n8n/agents/src/runtime/memory/memory-orchestrator.ts":{"36":[24,61,25,62,26],"43":[24,61,25,62,26],"66":[24,61,25,62,26],"72":[24,61,25,62,26],"102":[24,61,25,62,26],"119":[24,61,25,62,26],"134":[24,61,25,62,26],"166":[24,61,25,62,26],"209":[24,61,25,62,26],"241":[24,61,25,62,26],"265":[24,61,25,62,26],"288":[24,61,25,62,26],"309":[24,61,25,62,26],"324":[24,61,25,62,26],"344":[24,61,25,62,26],"357":[24,61,25,62,26],"365":[24,61,25,62,26],"366":[24,61,25,62,26],"367":[24,61,25,62,26],"376":[24,61,25,62,26],"404":[24,61,25,62,26],"416":[24,61,25,62,26],"425":[24,61,25,62,26],"430":[24,61,25,62,26],"449":[24,61,25,62,26]},"packages/@n8n/agents/src/runtime/memory/memory-store.ts":{"53":[24,61,62,26],"61":[24,61,62,26],"65":[24,61,62,26],"81":[24,61,62,26],"107":[24,61,62,26],"109":[24,61,62,26],"111":[24,61,62,26],"112":[24,61,62,26],"114":[24,61,62,26],"115":[24,61,62,26],"117":[24,61,62,26],"119":[24,61,62,26],"124":[24,61,62,26],"129":[24,61,62,26],"144":[24,61,62,26],"152":[24,61,62,26],"153":[24,61,62,26],"156":[24,61,62,26],"160":[24,61,62,26],"175":[24,61,62,26],"185":[24,61,62,26],"189":[24,61,62,26],"191":[24,61,62,26],"198":[24,61,62,26],"208":[24,61,62,26],"214":[24,61,62,26],"234":[24,61,62,26],"239":[24,61,62,26],"244":[24,61,62,26],"251":[24,61,62,26],"275":[24,61,62,26],"282":[24,61,62,26],"284":[24,61,62,26],"289":[24,61,62,26],"292":[24,61,62,26],"301":[24,61,62,26],"314":[24,61,62,26],"326":[24,61,62,26],"335":[24,61,62,26],"355":[24,61,62,26],"361":[24,61,62,26],"366":[24,61,62,26],"375":[24,61,62,26],"382":[24,61,62,26],"386":[24,61,62,26],"392":[24,61,62,26],"396":[24,61,62,26],"407":[24,61,62,26],"428":[24,61,62,26],"433":[24,61,62,26],"444":[24,61,62,26],"452":[24,61,62,26],"483":[24,61,62,26],"489":[24,61,62,26],"512":[24,61,62,26],"522":[24,61,62,26],"533":[24,61,62,26],"539":[24,61,62,26],"545":[24,61,62,26],"555":[24,61,62,26],"560":[24,61,62,26],"561":[24,61,62,26],"565":[24,61,62,26],"571":[24,61,62,26],"572":[24,61,62,26],"578":[24,61,62,26],"594":[24,61,62,26],"595":[24,61,62,26],"604":[24,61,62,26],"615":[24,61,62,26],"623":[24,61,62,26],"633":[24,61,62,26],"652":[24,61,62,26],"665":[24,61,62,26],"675":[24,61,62,26],"685":[24,61,62,26],"689":[24,61,62,26]},"packages/@n8n/agents/src/runtime/memory/observation-log-defaults.ts":{"286":[24,61,62,26],"301":[24,61,62,26],"305":[24,61,62,26],"527":[24,61,62,26],"539":[24,61,62,26],"543":[24,61,62,26]},"packages/@n8n/agents/src/runtime/memory/observation-log-observer.ts":{"88":[24,61,62],"121":[24,61,62],"130":[24,61,62],"131":[24,61,62],"157":[24,61,62],"245":[24,61,62],"249":[24,61,62],"253":[24,61,62],"263":[24,61,62],"274":[24,61,62],"287":[24,61,62],"311":[24,61,62],"315":[24,61,62],"319":[24,61,62],"323":[24,61,62],"327":[24,61,62],"333":[24,61,62],"338":[24,61,62],"346":[24,61,62]},"packages/@n8n/agents/src/runtime/memory/observation-log-reflector.ts":{"61":[24,61,62],"76":[24,61,62],"77":[24,61,62],"78":[24,61,62],"103":[24,61,62],"107":[24,61,62],"108":[24,61,62],"117":[24,61,62],"119":[24,61,62],"123":[24,61,62],"124":[24,61,62],"127":[24,61,62],"128":[24,61,62],"129":[24,61,62],"130":[24,61,62],"140":[24,61,62],"156":[24,61,62],"163":[24,61,62],"218":[24,61,62],"220":[24,61,62],"230":[24,61,62],"243":[24,61,62],"257":[24,61,62],"266":[24,61,62],"275":[24,61,62],"287":[24,61,62],"292":[24,61,62],"309":[24,61,62],"328":[24,61,62],"334":[24,61,62],"337":[24,61,62],"344":[24,61,62],"348":[24,61,62],"351":[24,61,62],"356":[24,61,62],"362":[24,61,62]},"packages/@n8n/agents/src/runtime/memory/observation-log-renderer.ts":{"25":[24,61,62,26],"31":[24,61,62,26],"37":[24,61,62,26],"42":[24,61,62,26],"46":[24,61,62,26],"50":[24,61,62,26]},"packages/@n8n/agents/src/runtime/memory/observation-log-store.ts":{"21":[24,61,62,26],"28":[24,61,62,26],"31":[24,61,62,26],"34":[24,61,62,26],"37":[24,61,62,26]},"packages/@n8n/agents/src/runtime/memory/scoped-memory-task-runner.ts":{"73":[24,61,62],"84":[24,61,62],"88":[24,61,62],"89":[24,61,62],"96":[24,61,62],"97":[24,61,62],"103":[24,61,62],"107":[24,61,62],"123":[24,61,62],"124":[24,61,62],"135":[24,61,62],"165":[24,61,62],"176":[24,61,62],"187":[24,61,62],"200":[24,61,62],"208":[24,61,62]},"packages/@n8n/agents/src/runtime/memory/strip-orphaned-tool-messages.ts":{"13":[24,61,62,26],"22":[24,61,62,26]},"packages/@n8n/agents/src/runtime/memory/title-generation.ts":{"58":[24,61,62],"80":[24,61,62],"87":[24,61,62],"123":[24,61,62],"164":[24,61,62],"227":[24,61,62],"244":[24,61,62],"248":[24,61,62],"249":[24,61,62]},"packages/@n8n/agents/src/runtime/model/lazy-ai.ts":{"5":[24,61,62,26]},"packages/@n8n/agents/src/runtime/model/message-list.ts":{"28":[24,61,25,62,26],"38":[24,61,25,62,26],"79":[24,61,25,62,26],"105":[24,61,25,62,26],"128":[24,61,25,62,26],"134":[24,61,25,62,26],"135":[24,61,25,62,26],"160":[24,61,25,62,26],"166":[24,61,25,62,26],"174":[24,61,25,62,26],"182":[24,61,25,62,26],"197":[24,61,25,62,26],"231":[24,61,25,62,26],"247":[24,61,25,62,26],"254":[24,61,25,62,26],"262":[24,61,25,62,26],"265":[24,61,25,62,26],"276":[24,61,25,62,26],"296":[24,61,25,62,26],"297":[24,61,25,62,26],"304":[24,61,25,62,26],"305":[24,61,25,62,26],"312":[24,61,25,62,26],"313":[24,61,25,62,26],"316":[24,61,25,62,26],"317":[24,61,25,62,26],"326":[24,61,25,62,26]},"packages/@n8n/agents/src/runtime/model/messages.ts":{"43":[24,61,62,26],"47":[24,61,62,26],"51":[24,61,62,26],"55":[24,61,62,26],"63":[24,61,62,26],"69":[24,61,62,26],"98":[24,61,62,26],"102":[24,61,62,26],"106":[24,61,62,26],"110":[24,61,62,26],"114":[24,61,62,26],"119":[24,61,62,26],"121":[24,61,62,26],"128":[24,61,62,26],"138":[24,61,62,26],"161":[24,61,62,26],"204":[24,61,62,26],"236":[24,61,62,26],"304":[24,61,62,26],"309":[24,61,62,26],"318":[24,61,62,26],"394":[24,61,62,26],"409":[24,61,62,26],"453":[24,61,62,26],"474":[24,61,62,26]},"packages/@n8n/agents/src/runtime/model/model-factory.ts":{"27":[24,61,62,26],"39":[24,61,62,26],"46":[24,61,62,26],"75":[24,61,62,26],"86":[24,61,62,26],"93":[24,61,62,26],"100":[24,61,62,26],"106":[24,61,62,26],"112":[24,61,62,26],"118":[24,61,62,26],"124":[24,61,62,26],"130":[24,61,62,26],"136":[24,61,62,26],"143":[24,61,62,26],"156":[24,61,62,26],"174":[24,61,62,26],"194":[24,61,62,26],"238":[24,61,62,26],"277":[24,61,62,26]},"packages/@n8n/agents/src/runtime/model/prompt-cache.ts":{"13":[24,61,62,26],"16":[24,61,62,26],"29":[24,61,62,26],"39":[24,61,62,26],"49":[24,61,62,26],"58":[24,61,62,26],"69":[24,61,62,26],"83":[24,61,62,26],"90":[24,61,62,26],"102":[24,61,62,26],"117":[24,61,62,26],"142":[24,61,62,26],"154":[24,61,62,26],"194":[24,61,62,26]},"packages/@n8n/agents/src/runtime/model/provider-quirks.ts":{"41":[24,61,62,26],"68":[24,61,62,26],"83":[24,61,62,26],"96":[24,61,62,26],"103":[24,61,62,26],"107":[24,61,62,26],"112":[24,61,62,26]},"packages/@n8n/agents/src/runtime/model/raw-error.ts":{"36":[24,61,62,26],"44":[24,61,62,26],"55":[24,61,62,26],"63":[24,61,62,26]},"packages/@n8n/agents/src/runtime/model/raw-usage.ts":{"32":[24,61,62,26],"43":[24,61,62,26],"46":[24,61,62,26],"76":[24,61,62,26],"84":[24,61,62,26]},"packages/@n8n/agents/src/runtime/state/background-task-tracker.ts":{"1":[24,61,62,26],"4":[24,61,62,26],"8":[24,61,62,26],"10":[24,61,62,26],"16":[24,61,62,26]},"packages/@n8n/agents/src/runtime/state/event-bus.ts":{"18":[24,61,62,26],"29":[24,61,62,26],"31":[24,61,62,26],"34":[24,61,62,26],"38":[24,61,62,26],"42":[24,61,62,26],"46":[24,61,62,26],"70":[24,61,62,26],"79":[24,61,62,26],"88":[24,61,62,26],"92":[24,61,62,26],"100":[24,61,62,26],"107":[24,61,62,26],"108":[24,61,62,26],"124":[24,61,62,26],"133":[24,61,62,26],"135":[24,61,62,26],"141":[24,61,62,26],"145":[24,61,62,26],"153":[24,61,62,26]},"packages/@n8n/agents/src/runtime/state/run-state.ts":{"11":[24,61,25,62,26],"14":[24,61,25,62,26],"18":[24,61,25,62,26],"22":[24,61,25,62,26],"29":[24,61,25,62,26],"42":[24,61,25,62,26],"47":[24,61,25,62,26],"55":[24,61,25,62,26],"64":[24,61,25,62,26],"78":[24,61,25,62,26],"88":[24,61,25,62,26]},"packages/@n8n/agents/src/runtime/streaming/stream-session.ts":{"45":[24,61,62,26],"52":[24,61,62,26],"61":[24,61,62,26],"71":[24,61,62,26],"76":[24,61,62,26],"88":[24,61,62,26],"89":[24,61,62,26],"111":[24,61,62,26]},"packages/@n8n/agents/src/runtime/streaming/stream-writer-guard.ts":{"15":[24,61,62,26],"17":[24,61,62,26],"20":[24,61,62,26],"23":[24,61,62,26],"28":[24,61,62,26],"38":[24,61,62,26],"55":[24,61,62,26]},"packages/@n8n/agents/src/runtime/streaming/stream.ts":{"12":[24,61,62,26],"21":[24,61,62,26],"74":[24,61,62,26]},"packages/@n8n/agents/src/runtime/telemetry/runtime-telemetry.ts":{"26":[24,61,62,26],"34":[24,61,62,26],"42":[24,61,62,26],"50":[24,61,62,26],"61":[24,61,62,26],"72":[24,61,62,26],"77":[24,61,62,26],"78":[24,61,62,26],"102":[24,61,62,26],"105":[24,61,62,26],"113":[24,61,62,26],"118":[24,61,62,26],"138":[24,61,62,26],"153":[24,61,62,26],"167":[24,61,62,26],"191":[24,61,62,26],"211":[24,61,62,26],"229":[24,61,62,26],"234":[24,61,62,26],"238":[24,61,62,26]},"packages/@n8n/agents/src/runtime/tools/deferred-tool-manager.ts":{"42":[24,61,62,26],"47":[24,61,62,26],"52":[24,61,62,26],"90":[24,61,62,26],"106":[24,61,62,26],"110":[24,61,62,26],"114":[24,61,62,26],"118":[24,61,62,26],"123":[24,61,62,26],"125":[24,61,62,26],"126":[24,61,62,26],"129":[24,61,62,26],"144":[24,61,62,26],"151":[24,61,62,26],"158":[24,61,62,26],"165":[24,61,62,26],"172":[24,61,62,26],"174":[24,61,62,26],"178":[24,61,62,26],"183":[24,61,62,26],"187":[24,61,62,26],"191":[24,61,62,26],"220":[24,61,62,26],"228":[24,61,62,26],"239":[24,61,62,26]},"packages/@n8n/agents/src/runtime/tools/delegate-sub-agent-tool.ts":{"221":[24,61,62,26],"246":[24,61,62,26],"261":[24,61,62,26],"268":[24,61,62,26],"306":[24,61,62,26],"330":[24,61,62,26],"333":[24,61,62,26],"378":[24,61,62,26],"387":[24,61,62,26],"391":[24,61,62,26],"398":[24,61,62,26],"405":[24,61,62,26],"430":[24,61,62,26],"474":[24,61,62,26],"502":[24,61,62,26],"514":[24,61,62,26],"537":[24,61,62,26],"549":[24,61,62,26],"553":[24,61,62,26],"576":[24,61,62,26],"611":[24,61,62,26],"624":[24,61,62,26],"638":[24,61,62,26],"671":[24,61,62,26],"678":[24,61,62,26],"679":[24,61,62,26]},"packages/@n8n/agents/src/runtime/tools/tool-adapter.ts":{"34":[24,61,25,62,26],"47":[24,61,25,62,26],"68":[24,61,25,62,26],"99":[24,61,25,62,26],"114":[24,61,25,62,26],"145":[24,61,25,62,26],"151":[24,61,25,62,26]},"packages/@n8n/agents/src/runtime/tools/tool-call-executor.ts":{"142":[24,61,25,62,26],"146":[24,61,25,62,26],"153":[24,61,25,62,26],"175":[24,61,25,62,26],"177":[24,61,25,62,26],"181":[24,61,25,62,26],"185":[24,61,25,62,26],"189":[24,61,25,62,26],"194":[24,61,25,62,26],"201":[24,61,25,62,26],"248":[24,61,25,62,26],"288":[24,61,25,62,26],"293":[24,61,25,62,26],"294":[24,61,25,62,26],"310":[24,61,25,62,26],"412":[24,61,25,62,26],"584":[24,61,25,62,26],"635":[24,61,25,62,26],"648":[24,61,25,62,26],"654":[24,61,25,62,26],"656":[24,61,25,62,26],"662":[24,61,25,62,26],"679":[24,61,25,62,26],"703":[24,61,25,62,26],"719":[24,61,25,62,26],"739":[24,61,25,62,26],"743":[24,61,25,62,26],"751":[24,61,25,62,26],"774":[24,61,25,62,26]},"packages/@n8n/agents/src/sdk/agent.ts":{"202":[24,61,25,62,26],"206":[24,61,25,62,26],"210":[24,61,25,62,26],"226":[24,61,25,62,26],"239":[24,61,25,62,26],"245":[24,61,25,62,26],"252":[24,61,25,62,26],"254":[24,61,25,62,26],"263":[24,61,25,62,26],"281":[24,61,25,62,26],"290":[24,61,25,62,26],"301":[24,61,25,62,26],"307":[24,61,25,62,26],"312":[24,61,25,62,26],"338":[24,61,25,62,26],"344":[24,61,25,62,26],"351":[24,61,25,62,26],"357":[24,61,25,62,26],"363":[24,61,25,62,26],"385":[24,61,25,62,26],"412":[24,61,25,62,26],"434":[24,61,25,62,26],"454":[24,61,25,62,26],"460":[24,61,25,62,26],"473":[24,61,25,62,26],"484":[24,61,25,62,26],"496":[24,61,25,62,26],"519":[24,61,25,62,26],"542":[24,61,25,62,26],"548":[24,61,25,62,26],"556":[24,61,25,62,26],"573":[24,61,25,62,26],"589":[24,61,25,62,26],"616":[24,61,25,62,26],"630":[24,61,25,62,26],"647":[24,61,25,62,26],"653":[24,61,25,62,26],"658":[24,61,25,62,26],"673":[24,61,25,62,26],"700":[24,61,25,62,26],"726":[24,61,25,62,26],"738":[24,61,25,62,26],"748":[24,61,25,62,26],"765":[24,61,25,62,26],"769":[24,61,25,62,26],"776":[24,61,25,62,26],"789":[24,61,25,62,26],"795":[24,61,25,62,26],"796":[24,61,25,62,26],"809":[24,61,25,62,26],"823":[24,61,25,62,26],"833":[24,61,25,62,26],"839":[24,61,25,62,26],"845":[24,61,25,62,26],"867":[24,61,25,62,26],"868":[24,61,25,62,26],"869":[24,61,25,62,26],"879":[24,61,25,62,26],"890":[24,61,25,62,26],"915":[24,61,25,62,26],"916":[24,61,25,62,26],"928":[24,61,25,62,26],"1011":[24,61,25,62,26],"1021":[24,61,25,62,26],"1035":[24,61,25,62,26],"1059":[24,61,25,62,26],"1070":[24,61,25,62,26],"1130":[24,61,25,62,26],"1135":[24,61,25,62,26],"1141":[24,61,25,62,26],"1152":[24,61,25,62,26],"1155":[24,61,25,62,26],"1160":[24,61,25,62,26],"1175":[24,61,25,62,26],"1193":[24,61,25,62,26],"1200":[24,61,25,62,26],"1209":[24,61,25,62,26],"1213":[24,61,25,62,26],"1218":[24,61,25,62,26],"1221":[24,61,25,62,26]},"packages/@n8n/agents/src/sdk/cancellation.ts":{"18":[24,26],"22":[24,26]},"packages/@n8n/agents/src/sdk/catalog.ts":{"82":[24,61,62,26],"96":[24,61,62,26],"128":[24,61,62,26],"200":[24,61,62,26],"204":[24,61,62,26],"208":[24,61,62,26],"226":[24,61,62,26],"243":[24,61,62,26],"263":[24,61,62,26]},"packages/@n8n/agents/src/sdk/guardrails/patterns.ts":{"31":[24,61,62,26],"39":[24,61,62,26],"45":[24,61,62,26],"72":[24,61,62,26],"76":[24,61,62,26],"92":[24,61,62,26],"108":[24,61,62,26],"128":[24,61,62,26],"139":[24,61,62,26],"146":[24,61,62,26],"149":[24,61,62,26],"184":[24,61,62,26],"233":[24,61,62,26],"236":[24,61,62,26]},"packages/@n8n/agents/src/sdk/guardrails/redactor.ts":{"32":[24,61,62,26],"44":[24,61,62,26],"56":[24,61,62,26],"57":[24,61,62,26],"67":[24,61,62,26],"87":[24,61,62,26],"98":[24,61,62,26],"104":[24,61,62,26],"109":[24,61,62,26],"122":[24,61,62,26],"163":[24,61,62,26],"177":[24,61,62,26]},"packages/@n8n/agents/src/sdk/guardrails/streaming-redactor.ts":{"38":[24,61,62,26],"46":[24,61,62,26],"79":[24,61,62,26]},"packages/@n8n/agents/src/sdk/memory.ts":{"38":[24,61,62,26],"58":[24,61,62,26],"87":[24,61,62,26],"126":[24,61,62,26],"181":[24,61,62,26],"191":[24,61,62,26],"209":[24,61,62,26],"220":[24,61,62,26],"228":[24,61,62,26]},"packages/@n8n/agents/src/sdk/message.ts":{"3":[24,61,62,26],"19":[24,61,62,26],"23":[24,61,62,26]},"packages/@n8n/agents/src/sdk/telemetry.ts":{"16":[24,61,62,26],"18":[24,61,62,26],"41":[24,61,62,26],"57":[24,61,62,26],"65":[24,61,62,26],"69":[24,61,62,26],"73":[24,61,62,26],"77":[24,61,62,26],"81":[24,61,62,26],"85":[24,61,62,26],"96":[24,61,62,26],"100":[24,61,62,26],"107":[24,61,62,26],"110":[24,61,62,26],"145":[24,61,62,26],"180":[24,61,62,26],"186":[24,61,62,26],"194":[24,61,62,26],"199":[24,61,62,26],"205":[24,61,62,26],"211":[24,61,62,26],"217":[24,61,62,26],"223":[24,61,62,26],"229":[24,61,62,26],"239":[24,61,62,26],"245":[24,61,62,26],"256":[24,61,62,26],"268":[24,61,62,26],"274":[24,61,62,26],"289":[24,61,62,26],"307":[24,61,62,26],"314":[24,61,62,26]},"packages/@n8n/agents/src/sdk/tool.ts":{"31":[24,61,62,26],"45":[24,61,62,26],"61":[24,61,62,26],"73":[24,61,62,26],"168":[24,61,62,26],"173":[24,61,62,26],"187":[24,61,62,26],"193":[24,61,62,26],"200":[24,61,62,26],"207":[24,61,62,26],"214":[24,61,62,26],"224":[24,61,62,26],"234":[24,61,62,26],"246":[24,61,62,26],"255":[24,61,62,26],"261":[24,61,62,26],"267":[24,61,62,26],"278":[24,61,62,26],"289":[24,61,62,26],"354":[24,61,62,26]},"packages/@n8n/agents/src/skills/prompt.ts":{"7":[24,61,62,26],"14":[24,61,62,26],"45":[24,61,62,26],"56":[24,61,62,26],"60":[24,61,62,26]},"packages/@n8n/agents/src/skills/registry.ts":{"24":[24,61,62,26],"34":[24,61,62,26],"36":[24,61,62,26],"40":[24,61,62,26],"47":[24,61,62,26],"64":[24,61,62,26],"69":[24,61,62,26],"79":[24,61,62,26],"82":[24,61,62,26],"89":[24,61,62,26],"95":[24,61,62,26],"98":[24,61,62,26],"102":[24,61,62,26],"123":[24,61,62,26],"126":[24,61,62,26],"154":[24,61,62,26],"158":[24,61,62,26],"167":[24,61,62,26],"173":[24,61,62,26],"207":[24,61,62,26],"233":[24,61,62,26],"254":[24,61,62,26],"283":[24,61,62,26],"289":[24,61,62,26],"307":[24,61,62,26],"324":[24,61,62,26],"335":[24,61,62,26],"346":[24,61,62,26],"351":[24,61,62,26],"354":[24,61,62,26],"357":[24,61,62,26],"366":[24,61,62,26],"372":[24,61,62,26],"389":[24,61,62,26],"407":[24,61,62,26],"411":[24,61,62,26],"416":[24,61,62,26],"420":[24,61,62,26],"424":[24,61,62,26],"428":[24,61,62,26],"438":[24,61,62,26],"445":[24,61,62,26],"452":[24,61,62,26],"459":[24,61,62,26],"464":[24,61,62,26],"465":[24,61,62,26],"466":[24,61,62,26],"472":[24,61,62,26],"478":[24,61,62,26],"482":[24,61,62,26]},"packages/@n8n/agents/src/skills/tools.ts":{"113":[24,61,62,26],"127":[24,61,62,26],"164":[24,61,62,26],"168":[24,61,62,26],"175":[24,61,62,26],"178":[24,61,62,26],"192":[24,61,62,26],"200":[24,61,62,26],"212":[24,61,62,26],"218":[24,61,62,26],"235":[24,61,62,26],"304":[24,61,62,26],"309":[24,61,62,26],"310":[24,61,62,26],"326":[24,61,62,26],"343":[24,61,62,26],"345":[24,61,62,26],"349":[24,61,62,26],"354":[24,61,62,26],"359":[24,61,62,26],"365":[24,61,62,26],"377":[24,61,62,26],"382":[24,61,62,26],"388":[24,61,62,26],"399":[24,61,62,26],"403":[24,61,62,26],"410":[24,61,62,26],"419":[24,61,62,26]},"packages/@n8n/agents/src/skills/validator.ts":{"43":[24,61,62,26],"56":[24,61,62,26],"85":[24,61,62,26],"121":[24,61,62,26],"141":[24,61,62,26],"189":[24,61,62,26],"206":[24,61,62,26],"215":[24,61,62,26],"235":[24,61,62,26],"256":[24,61,62,26],"257":[24,61,62,26],"270":[24,61,62,26],"289":[24,61,62,26],"308":[24,61,62,26],"359":[24,61,62,26],"383":[24,61,62,26],"404":[24,61,62,26],"420":[24,61,62,26],"462":[24,61,62,26],"482":[24,61,62,26],"486":[24,61,62,26]},"packages/@n8n/agents/src/types/sdk/observation-log.ts":{"72":[24,61,62]},"packages/@n8n/agents/src/utils/parse.ts":{"13":[24,26],"26":[24,26]},"packages/@n8n/agents/src/utils/zod.ts":{"6":[24,61,62,26],"14":[24,61,62,26]},"packages/@n8n/agents/src/workspace/filesystem/base-filesystem.ts":{"36":[24,61,62,26],"41":[24,61,62,26],"61":[24,61,62,26],"80":[24,61,62,26],"84":[24,61,62,26],"93":[24,61,62,26],"111":[24,61,62,26],"136":[24,61,62,26]},"packages/@n8n/agents/src/workspace/filesystem/n8n-sandbox-filesystem.ts":{"18":[24,61,62,26],"33":[24,61,62,26],"38":[24,61,62,26],"46":[24,61,62,26],"56":[24,61,62,26],"68":[24,61,62,26],"74":[24,61,62,26],"83":[24,61,62,26],"94":[24,61,62,26],"104":[24,61,62,26],"110":[24,61,62,26],"114":[24,61,62,26],"118":[24,61,62,26],"125":[24,61,62,26],"139":[24,61,62,26]},"packages/@n8n/agents/src/workspace/index.ts":{"1":[24,61,62,26],"7":[24,61,62,26],"8":[24,61,62,26]},"packages/@n8n/agents/src/workspace/lifecycle.ts":{"14":[24,61,62,26]},"packages/@n8n/agents/src/workspace/sandbox/base-sandbox.ts":{"15":[24,61,62,26],"35":[24,61,62,26],"48":[24,61,62,26],"68":[24,61,62,26],"72":[24,61,62,26],"84":[24,61,62,26],"92":[24,61,62,26],"93":[24,61,62,26],"116":[24,61,62,26],"121":[24,61,62,26],"126":[24,61,62,26],"130":[24,61,62,26],"140":[24,61,62,26],"157":[24,61,62,26],"161":[24,61,62,26],"177":[24,61,62,26],"193":[24,61,62,26]},"packages/@n8n/agents/src/workspace/sandbox/create-workspace.ts":{"12":[24,61,62,26],"19":[24,61,62,26],"73":[24,61,62,26]},"packages/@n8n/agents/src/workspace/sandbox/index.ts":{"17":[24,61,62,26],"19":[24,61,62,26]},"packages/@n8n/agents/src/workspace/sandbox/n8n-sandbox-sandbox.ts":{"16":[24,61,62,26],"20":[24,61,62,26],"22":[24,61,62,26],"47":[24,61,62,26],"57":[24,61,62,26],"61":[24,61,62,26],"75":[24,61,62,26],"85":[24,61,62,26],"90":[24,61,62,26],"107":[24,61,62,26],"115":[24,61,62,26],"144":[24,61,62,26],"149":[24,61,62,26],"159":[24,61,62,26],"165":[24,61,62,26],"170":[24,61,62,26]},"packages/@n8n/agents/src/workspace/sandbox/run-in-sandbox.ts":{"28":[24,61,62,26]},"packages/@n8n/agents/src/workspace/sandbox/workspace-root.ts":{"10":[24,61,62,26],"31":[24,61,62,26],"44":[24,61,62,26],"61":[24,61,62,26],"72":[24,61,62,26],"79":[24,61,62,26],"91":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/append-file.ts":{"7":[24,61,62,26],"21":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/batch-str-replace-file.ts":{"39":[24,61,62,26],"46":[24,61,62,26],"52":[24,61,62,26],"59":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/copy-file.ts":{"7":[24,61,62,26],"25":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/delete-file.ts":{"7":[24,61,62,26],"25":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/execute-command.ts":{"7":[24,61,62,26],"26":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/file-stat.ts":{"7":[24,61,62,26],"25":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/list-files.ts":{"7":[24,61,62,26],"29":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/mkdir.ts":{"7":[24,61,62,26],"21":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/move-file.ts":{"7":[24,61,62,26],"25":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/read-file.ts":{"7":[24,61,62,26],"21":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/rmdir.ts":{"7":[24,61,62,26],"25":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/str-replace-file.ts":{"22":[24,61,62,26],"29":[24,61,62,26],"36":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/workspace-tools.ts":{"23":[24,61,62,26]},"packages/@n8n/agents/src/workspace/tools/write-file.ts":{"7":[24,61,62,26],"25":[24,61,62,26]},"packages/@n8n/agents/src/workspace/workspace.ts":{"24":[24,61,62,26],"31":[24,61,62,26],"35":[24,61,62,26],"39":[24,61,62,26],"43":[24,61,62,26],"59":[24,61,62,26],"80":[24,61,62,26],"93":[24,61,62,26],"97":[24,61,62,26],"126":[24,61,62,26]},"packages/@n8n/ai-utilities/src/node-catalog/index.ts":{"14":[24,61,62,26,82,63,148],"32":[24,61,62,26,82,63,148]},"packages/@n8n/ai-utilities/src/node-catalog/suggested.ts":{"25":[24,61,62,26],"34":[24,61,62,26],"59":[24,61,62,26],"93":[24,61,62,26]},"packages/@n8n/api-types/src/schemas/agent-run-reducer.ts":{"32":[24,60,61,62,26],"68":[24,60,61,25,62,26,82],"81":[24,60,61,25,62,26,82],"98":[24,60,61,25,62,26,82],"107":[24,60,61,25,62,26,82],"113":[24,60,61,25,62,26,82],"131":[24,60,61,25,62,26,82],"149":[24,60,61,25,62,26,82],"150":[24,60,61,62,26],"155":[24,60,61,62,26],"170":[24,60,61,25,62,26,82],"194":[24,60,61,25,62,26,82],"437":[24,60,61,25,62,26,82],"448":[24,60,61,25,62,26,82],"463":[24,60,61,25,62,26,82],"477":[24,60,61,25,62,26,82],"488":[24,60,61,62,26],"491":[24,60,61,62,26],"494":[24,60,61,62,26]},"packages/@n8n/api-types/src/schemas/instance-ai.schema.ts":{"35":[24,60,61,25,62,26],"45":[24,60,61,25,62,26],"66":[24,60,61,25,62,26],"161":[24,60,61,25,62,26,82],"493":[24,60,61,25,62,26],"497":[24,60,61,25,62,26],"501":[24,60,61,25,62,26],"505":[24,60,61,25,62,26],"508":[24,60,61,25,62,26],"516":[24,60,61,25,62,26],"1213":[24,60,61,25,62,26],"1232":[24,60,61,25,62,26],"1326":[24,60,61,25,62,26,82]},"packages/@n8n/backend-network/src/http/undici/transport.ts":{"86":[8,13,24,61,62,26,157],"101":[8,13,24,61,62,26,157],"123":[8,13,24,61,62,26,157],"131":[8,13,24,61,62,26,157],"148":[8,13,24,61,62,26,157],"156":[8,13,24,61,62,26,157],"159":[8,13,24,61,62,26,157],"161":[8,13,24,61,62,26,157],"165":[8,13,24,61,62,26,157],"167":[8,13,24,61,62,26,157],"180":[8,13,24,61,62,26,157],"181":[8,13,24,61,62,26,157],"189":[8,13,24,61,62,26,157],"196":[8,13,24,61,62,26,157],"216":[8,13,24,61,62,26,157],"219":[8,13,24,61,62,26,157],"224":[8,13,24,61,62,26,157],"225":[8,13,24,61,62,26,157],"248":[8,13,24,61,62,26,157],"259":[8,13,24,61,62,26,157],"268":[8,13,24,61,62,26,157]},"packages/@n8n/db/src/repositories/ai-builder-temporary-workflow.repository.ts":{"9":[24,61,62,26],"13":[24,61,62,26],"23":[24,61,62,26],"27":[24,61,62,26],"34":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/apply-agent-thinking.ts":{"5":[24,61,62,26],"9":[24,61,62,26],"14":[24,61,62,26],"19":[24,61,62,26],"24":[24,61,62,26],"36":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/computer-use-prompt.ts":{"6":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/instance-agent.ts":{"26":[24,61,62,26],"47":[24,61,62,26],"81":[24,61,62,26],"84":[24,61,62,26],"152":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/mcp-tool-name-validation.ts":{"8":[24,61,62,26],"20":[24,61,62,26],"29":[24,61,62,26],"36":[24,61,62,26],"47":[24,61,62,26],"55":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/runtime-workspace.ts":{"10":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/sanitize-mcp-schemas.ts":{"33":[24,61,62,26],"95":[24,61,62,26],"115":[24,61,62,26],"191":[24,61,62,26],"213":[24,61,62,26],"231":[24,61,62,26],"249":[24,61,62,26],"266":[24,61,62,26],"283":[24,61,62,26],"302":[24,61,62,26],"338":[24,61,62,26],"339":[24,61,62,26],"342":[24,61,62,26],"345":[24,61,62,26],"352":[24,61,62,26],"366":[24,61,62,26],"379":[24,61,62,26],"380":[24,61,62,26],"385":[24,61,62,26],"394":[24,61,62,26],"402":[24,61,62,26],"416":[24,61,62,26],"450":[24,61,62,26],"451":[24,61,62,26],"473":[24,61,62,26],"488":[24,61,62,26],"490":[24,61,62,26],"503":[24,61,62,26],"524":[24,61,62,26],"676":[24,61,62,26],"697":[24,61,62,26],"713":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/shared-prompts.ts":{"24":[24,61,62,26],"29":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/sub-agent-briefing.ts":{"41":[24,61,62,26],"71":[24,61,62,26]},"packages/@n8n/instance-ai/src/agent/system-prompt.ts":{"30":[24,61,62,26],"47":[24,61,62,26],"66":[24,61,62,26],"92":[24,61,62,26],"114":[24,61,62,26],"226":[24,61,62,26]},"packages/@n8n/instance-ai/src/domain-access/domain-access-tracker.ts":{"60":[24,61,62,26],"74":[24,61,62,26],"85":[24,61,62,26],"90":[24,61,62,26],"95":[24,61,62,26],"99":[24,61,62,26],"108":[24,61,62,26],"113":[24,61,62,26],"119":[24,61,62,26],"124":[24,61,62,26]},"packages/@n8n/instance-ai/src/domain-access/domain-gating.ts":{"69":[24,61,62,26],"122":[24,61,62,26],"161":[24,61,62,26],"203":[24,61,62,26]},"packages/@n8n/instance-ai/src/domain-access/index.ts":{"1":[24,61,62,26]},"packages/@n8n/instance-ai/src/error-formatting.ts":{"20":[24,61,62,26],"31":[24,61,62,26],"46":[24,61,62,26],"51":[24,61,62,26],"64":[24,61,62,26],"66":[24,61,62,26],"69":[24,61,62,26],"76":[24,61,62,26],"90":[24,61,62,26],"101":[24,61,62,26],"110":[24,61,62,26],"117":[24,61,62,26],"121":[24,61,62,26],"128":[24,61,62,26],"132":[24,61,62,26],"157":[24,61,62,26],"171":[24,61,62,26]},"packages/@n8n/instance-ai/src/index.ts":{"45":[24,60,61,25,62,26],"47":[24,60,61,25,62,26],"50":[24,60,61,25,62,26],"51":[24,60,61,25,62,26],"56":[24,60,61,25,62,26],"58":[24,60,61,25,62,26],"65":[24,60,61,25,62,26],"75":[24,60,61,25,62,26],"84":[24,60,61,25,62,26],"87":[24,60,61,25,62,26],"90":[24,60,61,25,62,26],"92":[24,60,61,25,62,26],"94":[24,60,61,25,62,26],"97":[24,60,61,25,62,26],"99":[24,60,61,25,62,26],"101":[24,60,61,25,62,26],"103":[24,60,61,25,62,26],"105":[24,60,61,25,62,26],"108":[24,60,61,25,62,26],"110":[24,60,61,25,62,26],"111":[24,60,61,25,62,26],"113":[24,60,61,25,62,26],"116":[24,60,61,25,62,26],"118":[24,60,61,25,62,26],"119":[24,60,61,25,62,26],"121":[24,60,61,25,62,26],"124":[24,60,61,25,62,26],"127":[24,60,61,25,62,26],"130":[24,60,61,25,62,26],"133":[24,60,61,25,62,26],"136":[24,60,61,25,62,26],"139":[24,60,61,25,62,26],"142":[24,60,61,25,62,26],"145":[24,60,61,25,62,26],"148":[24,60,61,25,62,26],"151":[24,60,61,25,62,26],"154":[24,60,61,25,62,26],"157":[24,60,61,25,62,26],"159":[24,60,61,25,62,26],"161":[24,60,61,25,62,26],"164":[24,60,61,25,62,26],"167":[24,60,61,25,62,26],"170":[24,60,61,25,62,26],"173":[24,60,61,25,62,26],"182":[24,60,61,25,62,26],"195":[24,60,61,25,62,26],"199":[24,60,61,25,62,26],"204":[24,60,61,25,62,26],"207":[24,60,61,25,62,26],"210":[24,60,61,25,62,26],"213":[24,60,61,25,62,26],"216":[24,60,61,25,62,26],"220":[24,60,61,25,62,26],"224":[24,60,61,25,62,26],"228":[24,60,61,25,62,26],"232":[24,60,61,25,62,26],"245":[24,60,61,25,62,26],"247":[24,60,61,25,62,26],"263":[24,60,61,25,62,26],"267":[24,60,61,25,62,26],"270":[24,60,61,25,62,26],"273":[24,60,61,25,62,26],"278":[24,60,61,25,62,26],"282":[24,60,61,25,62,26],"286":[24,60,61,25,62,26],"290":[24,60,61,25,62,26],"292":[24,60,61,25,62,26],"295":[24,60,61,25,62,26],"298":[24,60,61,25,62,26],"302":[24,60,61,25,62,26],"315":[24,60,61,25,62,26],"318":[24,60,61,25,62,26],"322":[24,60,61,25,62,26],"325":[24,60,61,25,62,26],"328":[24,60,61,25,62,26],"331":[24,60,61,25,62,26],"334":[24,60,61,25,62,26],"337":[24,60,61,25,62,26],"340":[24,60,61,25,62,26],"341":[24,60,61,25,62,26],"344":[24,60,61,25,62,26],"346":[24,60,61,25,62,26],"347":[24,60,61,25,62,26],"350":[24,60,61,25,62,26],"354":[24,60,61,25,62,26],"358":[24,60,61,25,62,26],"362":[24,60,61,25,62,26],"364":[24,60,61,25,62,26],"365":[24,60,61,25,62,26],"368":[24,60,61,25,62,26],"372":[24,60,61,25,62,26],"374":[24,60,61,25,62,26],"377":[24,60,61,25,62,26],"379":[24,60,61,25,62,26],"380":[24,60,61,25,62,26],"381":[24,60,61,25,62,26],"384":[24,60,61,25,62,26],"388":[24,60,61,25,62,26],"391":[24,60,61,25,62,26],"395":[24,60,61,25,62,26],"398":[24,60,61,25,62,26],"401":[24,60,61,25,62,26],"404":[24,60,61,25,62,26],"406":[24,60,61,25,62,26],"408":[24,60,61,25,62,26],"412":[24,60,61,25,62,26],"415":[24,60,61,25,62,26],"417":[24,60,61,25,62,26],"423":[24,60,61,25,62,26],"426":[24,60,61,25,62,26],"430":[24,60,61,25,62,26],"435":[24,60,61,25,62,26],"437":[24,60,61,25,62,26],"448":[24,60,61,25,62,26],"450":[24,60,61,25,62,26],"469":[24,60,61,25,62,26],"476":[24,60,61,25,62,26],"490":[24,60,61,25,62,26],"493":[24,60,61,25,62,26],"496":[24,60,61,25,62,26],"500":[24,60,61,25,62,26],"515":[24,60,61,25,62,26],"518":[24,60,61,25,62,26],"520":[24,60,61,25,62,26],"522":[24,60,61,25,62,26],"524":[24,60,61,25,62,26],"526":[24,60,61,25,62,26],"528":[24,60,61,25,62,26],"547":[24,60,61,25,62,26],"551":[24,60,61,25,62,26],"553":[24,60,61,25,62,26],"642":[24,60,61,25,62,26],"645":[24,60,61,25,62,26],"647":[24,60,61,25,62,26],"649":[24,60,61,25,62,26],"658":[24,60,61,25,62,26],"660":[24,60,61,25,62,26],"662":[24,60,61,25,62,26],"664":[24,60,61,25,62,26],"667":[24,60,61,25,62,26]},"packages/@n8n/instance-ai/src/knowledge-base/build-templates-index.ts":{"36":[24,61,62,26],"40":[24,61,62,26],"41":[24,61,62,26],"49":[24,61,62,26],"56":[24,61,62,26],"60":[24,61,62,26],"64":[24,61,62,26],"87":[24,61,62,26],"108":[24,61,62,26],"118":[24,61,62,26],"126":[24,61,62,26],"129":[24,61,62,26],"141":[24,61,62,26],"151":[24,61,62,26],"152":[24,61,62,26],"161":[24,61,62,26]},"packages/@n8n/instance-ai/src/knowledge-base/extract-builder-templates-archive.ts":{"7":[24,61,62,26],"11":[24,61,62,26],"16":[24,61,62,26],"17":[24,61,62,26],"20":[24,61,62,26],"26":[24,61,62,26],"35":[24,61,62,26],"76":[24,61,62,26],"89":[24,61,62,26],"101":[24,61,62,26]},"packages/@n8n/instance-ai/src/knowledge-base/materialize-knowledge-base.ts":{"100":[24,61,62,26],"164":[24,61,62,26],"195":[24,61,62,26],"196":[24,61,62,26],"208":[24,61,62,26],"283":[24,61,62,26],"303":[24,61,62,26],"309":[24,61,62,26],"313":[24,61,62,26],"320":[24,61,62,26],"321":[24,61,62,26],"323":[24,61,62,26]},"packages/@n8n/instance-ai/src/mcp/mcp-client-manager.ts":{"43":[24,61,62,26],"56":[24,61,62,26],"80":[24,61,62,26],"84":[24,61,62,26],"85":[24,61,62,26],"99":[24,61,62,26],"100":[24,61,62,26],"109":[24,61,62,26],"114":[24,61,62,26],"139":[24,61,62,26],"144":[24,61,62,26],"159":[24,61,62,26],"172":[24,61,62,26],"177":[24,61,62,26],"180":[24,61,62,26],"192":[24,61,62,26],"206":[24,61,62,26],"234":[24,61,62,26]},"packages/@n8n/instance-ai/src/memory/title-utils.ts":{"13":[24,61,62,26],"21":[24,61,62,26],"35":[24,61,62,26]},"packages/@n8n/instance-ai/src/planned-tasks/planned-task-service.ts":{"20":[24,61,25,62,26],"26":[24,61,25,62,26],"27":[24,61,25,62,26],"30":[24,61,25,62,26],"35":[24,61,25,62,26],"36":[24,61,25,62,26],"50":[24,61,25,62,26],"63":[24,61,25,62,26],"83":[24,61,25,62,26],"87":[24,61,25,62,26],"104":[24,61,25,62,26],"109":[24,61,25,62,26],"118":[24,61,25,62,26],"120":[24,61,25,62,26],"139":[24,61,25,62,26],"156":[24,61,25,62,26],"157":[24,61,25,62,26],"172":[24,61,25,62,26],"173":[24,61,25,62,26],"181":[24,61,25,62,26],"185":[24,61,25,62,26],"190":[24,61,25,62,26],"191":[24,61,25,62,26],"202":[24,61,25,62,26],"207":[24,61,25,62,26],"208":[24,61,25,62,26],"219":[24,61,25,62,26],"224":[24,61,25,62,26],"225":[24,61,25,62,26],"232":[24,61,25,62,26],"261":[24,61,25,62,26],"268":[24,61,25,62,26],"269":[24,61,25,62,26],"283":[24,61,25,62,26],"311":[24,61,25,62,26],"318":[24,61,25,62,26],"325":[24,61,25,62,26],"332":[24,61,25,62,26],"333":[24,61,25,62,26],"347":[24,61,25,62,26],"361":[24,61,25,62,26],"374":[24,61,25,62,26],"375":[24,61,25,62,26],"393":[24,61,25,62,26],"422":[24,61,25,62,26],"427":[24,61,25,62,26],"428":[24,61,25,62,26],"437":[24,61,25,62,26],"448":[24,61,25,62,26],"454":[24,61,25,62,26],"478":[24,61,25,62,26],"501":[24,61,25,62,26],"504":[24,61,25,62,26],"514":[24,61,25,62,26],"520":[24,61,25,62,26],"534":[24,61,25,62,26],"549":[24,61,25,62,26],"550":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/runtime/background-task-manager.ts":{"125":[24,60,61,156,62,26],"127":[24,60,61,156,62,26],"131":[24,60,61,156,62,26],"158":[24,60,61,156,62,26],"159":[24,60,61,156,62,26],"162":[24,60,61,156,62,26],"164":[24,60,61,156,62,26],"174":[24,60,61,156,62,26],"179":[24,60,61,156,62,26],"186":[24,60,61,156,62,26],"204":[24,60,61,156,62,26],"216":[24,60,61,156,62,26],"230":[24,60,61,156,62,26],"243":[24,60,61,156,62,26],"250":[24,60,61,156,62,26],"272":[24,60,61,156,62,26],"325":[24,60,61,156,62,26],"342":[24,60,61,156,62,26],"346":[24,60,61,156,62,26],"352":[24,60,61,156,62,26],"353":[24,60,61,156,62,26],"397":[24,60,61,156,62,26],"423":[24,60,61,156,62,26]},"packages/@n8n/instance-ai/src/runtime/liveness-policy.ts":{"28":[24],"56":[24],"58":[24],"59":[24],"62":[24],"93":[24]},"packages/@n8n/instance-ai/src/runtime/memory-task-registry.ts":{"11":[24,60,61,62,26],"43":[24,60,61,62,26],"47":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/runtime/orchestrator-identity.ts":{"6":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/runtime/orchestrator-run-control.ts":{"20":[24,61,25,62,26],"26":[24,61,25,62,26],"29":[24,61,25,62,26],"32":[24,61,25,62,26],"38":[24,61,25,62,26],"44":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/runtime/resumable-stream-executor.ts":{"91":[24,61,25,62,26],"99":[24,61,25,62,26],"107":[24,61,25,62,26],"111":[24,61,25,62,26],"115":[24,61,25,62,26],"125":[24,61,25,62,26],"135":[24,61,25,62,26],"167":[24,61,25,62,26],"180":[24,61,25,62,26],"198":[24,61,25,62,26],"218":[24,61,25,62,26],"252":[24,61,25,62,26],"316":[24,61,25,62,26],"456":[24,61,25,62,26],"568":[24,61,25,62,26],"579":[24,61,25,62,26],"589":[24,61,25,62,26],"593":[24,61,25,62,26],"608":[24,61,25,62,26],"609":[24,61,25,62,26],"630":[24,61,25,62,26],"638":[24,61,25,62,26],"649":[24,61,25,62,26],"663":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/runtime/run-state-registry.ts":{"135":[24,60,61,25,62,26],"173":[24,60,61,25,62,26],"183":[24,60,61,25,62,26],"196":[24,60,61,25,62,26],"197":[24,60,61,25,62,26],"209":[24,60,61,25,62,26],"213":[24,60,61,25,62,26],"217":[24,60,61,25,62,26],"221":[24,60,61,25,62,26],"225":[24,60,61,25,62,26],"234":[24,60,61,25,62,26],"235":[24,60,61,25,62,26],"240":[24,60,61,25,62,26],"244":[24,60,61,25,62,26],"249":[24,60,61,25,62,26],"253":[24,60,61,25,62,26],"257":[24,60,61,25,62,26],"261":[24,60,61,25,62,26],"272":[24,60,61,25,62,26],"276":[24,60,61,25,62,26],"284":[24,60,61,25,62,26],"298":[24,60,61,25,62,26],"305":[24,60,61,25,62,26],"313":[24,60,61,25,62,26],"337":[24,60,61,25,62,26],"345":[24,60,61,25,62,26],"349":[24,60,61,25,62,26],"357":[24,60,61,25,62,26],"364":[24,60,61,25,62,26],"371":[24,60,61,25,62,26],"378":[24,60,61,25,62,26],"391":[24,60,61,25,62,26],"413":[24,60,61,25,62,26],"417":[24,60,61,25,62,26],"421":[24,60,61,25,62,26],"445":[24,60,61,25,62,26],"544":[24,60,61,25,62,26],"553":[24,60,61,25,62,26],"562":[24,60,61,25,62,26],"603":[24,60,61,25,62,26],"611":[24,60,61,25,62,26]},"packages/@n8n/instance-ai/src/runtime/stream-runner.ts":{"50":[24,61,25,62,26],"62":[24,61,25,62,26],"74":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/runtime/terminal-response-guard.ts":{"45":[24,61,25,62,26],"49":[24,61,25,62,26],"61":[24,61,25,62,26],"66":[24,61,25,62,26],"68":[24,61,25,62,26],"165":[24,61,25,62,26],"207":[24,61,25,62,26],"214":[24,61,25,62,26],"217":[24,61,25,62,26],"220":[24,61,25,62,26],"222":[24,61,25,62,26],"227":[24,61,25,62,26],"232":[24,61,25,62,26],"238":[24,61,25,62,26],"258":[24,61,25,62,26],"278":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/skills/materialize-runtime-skills.ts":{"95":[24,61,25,62,26],"99":[24,61,25,62,26],"108":[24,61,25,62,26],"111":[24,61,25,62,26],"114":[24,61,25,62,26],"133":[24,61,25,62,26],"137":[24,61,25,62,26],"170":[24,61,25,62,26],"182":[24,61,25,62,26],"185":[24,61,25,62,26],"194":[24,61,25,62,26],"197":[24,61,25,62,26],"205":[24,61,25,62,26],"208":[24,61,25,62,26],"213":[24,61,25,62,26],"225":[24,61,25,62,26],"243":[24,61,25,62,26],"278":[24,61,25,62,26],"286":[24,61,25,62,26],"302":[24,61,25,62,26],"314":[24,61,25,62,26],"333":[24,61,25,62,26],"355":[24,61,25,62,26],"382":[24,61,25,62,26],"390":[24,61,25,62,26],"401":[24,61,25,62,26],"402":[24,61,25,62,26],"405":[24,61,25,62,26],"422":[24,61,25,62,26],"434":[24,61,25,62,26],"458":[24,61,25,62,26],"521":[24,61,25,62,26],"533":[24,61,25,62,26],"535":[24,61,25,62,26],"543":[24,61,25,62,26],"553":[24,61,25,62,26],"566":[24,61,25,62,26],"569":[24,61,25,62,26],"572":[24,61,25,62,26],"580":[24,61,25,62,26],"583":[24,61,25,62,26],"594":[24,61,25,62,26],"602":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/skills/runtime-skills.ts":{"11":[24,61,62,26],"18":[24,61,62,26]},"packages/@n8n/instance-ai/src/storage/index.ts":{"2":[24,60,61,62,26],"11":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/storage/iteration-log.ts":{"30":[24,60,61,62,26],"33":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/storage/planned-task-storage.ts":{"38":[24,60,61,25,62,26],"44":[24,60,61,25,62,26],"46":[24,60,61,25,62,26],"52":[24,60,61,25,62,26],"55":[24,60,61,25,62,26],"68":[24,60,61,25,62,26],"76":[24,60,61,25,62,26],"96":[24,60,61,25,62,26],"99":[24,60,61,25,62,26]},"packages/@n8n/instance-ai/src/storage/terminal-outcome-storage.ts":{"26":[24,60,61,62,26],"28":[24,60,61,62,26],"31":[24,60,61,62,26],"46":[24,60,61,62,26],"49":[24,60,61,62,26],"70":[24,60,61,62,26],"73":[24,60,61,62,26],"77":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/storage/thread-iteration-log-storage.ts":{"12":[24,60,61,62,26],"14":[24,60,61,62,26],"17":[24,60,61,62,26],"34":[24,60,61,62,26],"42":[24,60,61,62,26],"45":[24,60,61,62,26],"53":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/storage/thread-patch.ts":{"21":[24,60,61,62,26],"30":[24,60,61,62,26],"37":[24,60,61,62,26],"44":[24,60,61,62,26],"53":[24,60,61,62,26],"64":[24,60,61,62,26],"90":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/storage/thread-task-storage.ts":{"10":[24,60,61,25,62,26],"12":[24,60,61,25,62,26],"19":[24,60,61,25,62,26],"22":[24,60,61,25,62,26]},"packages/@n8n/instance-ai/src/storage/workflow-loop-storage.ts":{"35":[24,60,61,62,26],"43":[24,60,61,62,26],"52":[24,60,61,62,26],"59":[24,60,61,62,26],"61":[24,60,61,62,26],"69":[24,60,61,62,26],"77":[24,60,61,62,26],"90":[24,60,61,62,26],"100":[24,60,61,62,26],"105":[24,60,61,62,26],"113":[24,60,61,62,26],"139":[24,60,61,62,26],"148":[24,60,61,62,26],"175":[24,60,61,62,26],"182":[24,60,61,62,26],"202":[24,60,61,62,26],"208":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/stream/consume-with-hitl.ts":{"52":[24,61,62,26],"77":[24,61,62,26],"102":[24,61,62,26],"163":[24,61,62,26]},"packages/@n8n/instance-ai/src/stream/map-chunk.ts":{"22":[24,61,25,62,26],"27":[24,61,25,62,26],"35":[24,61,25,62,26],"43":[24,61,25,62,26],"47":[24,61,25,62,26],"49":[24,61,25,62,26],"59":[24,61,25,62,26],"63":[24,61,25,62,26],"109":[24,61,25,62,26],"120":[24,61,25,62,26],"169":[24,61,25,62,26],"173":[24,61,25,62,26],"176":[24,61,25,62,26],"177":[24,61,25,62,26],"178":[24,61,25,62,26],"182":[24,61,25,62,26],"188":[24,61,25,62,26],"194":[24,61,25,62,26],"209":[24,61,25,62,26],"216":[24,61,25,62,26],"225":[24,61,25,62,26],"240":[24,61,25,62,26],"259":[24,61,25,62,26],"324":[24,61,25,62,26],"337":[24,61,25,62,26],"354":[24,61,25,62,26],"365":[24,61,25,62,26],"371":[24,61,25,62,26],"376":[24,61,25,62,26],"393":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/stream/output-redaction.ts":{"75":[24,61,25,62,26],"87":[24,61,25,62,26],"103":[24,61,25,62,26],"110":[24,61,25,62,26],"133":[24,61,25,62,26],"139":[24,61,25,62,26],"149":[24,61,25,62,26],"184":[24,61,25,62,26],"188":[24,61,25,62,26],"191":[24,61,25,62,26],"197":[24,61,25,62,26],"205":[24,61,25,62,26],"224":[24,61,25,62,26],"230":[24,61,25,62,26],"235":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/stream/usage-accumulator.ts":{"82":[24,61,62,26],"111":[24,61,62,26],"116":[24,61,62,26]},"packages/@n8n/instance-ai/src/stream/work-summary-accumulator.ts":{"37":[24,61,62,26],"75":[24,61,62,26],"76":[24,61,62,26],"80":[24,61,62,26]},"packages/@n8n/instance-ai/src/tool-registry.ts":{"5":[24,61,62,26],"11":[24,61,62,26],"19":[24,61,62,26],"32":[24,61,62,26],"45":[24,61,62,26],"49":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/agent-target-binding.ts":{"24":[24,61,62,26],"29":[24,61,62,26],"50":[24,61,62,26],"61":[24,61,62,26],"69":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/build-agent.tool.ts":{"26":[24,61,62,26],"30":[24,61,62,26],"44":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/config-helpers.ts":{"21":[24,61,62,26],"32":[24,61,62,26],"43":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/config-tools.ts":{"46":[24,61,62,26],"78":[24,61,62,26],"87":[24,61,62,26],"132":[24,61,62,26],"149":[24,61,62,26],"182":[24,61,62,26],"191":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/configure-channel.tool.ts":{"40":[24,61,62,26],"61":[24,61,62,26],"79":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/create-agent.tool.ts":{"15":[24,61,62,26],"34":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/creation-tools.ts":{"20":[24,61,62,26],"37":[24,61,62,26],"52":[24,61,62,26],"56":[24,61,62,26],"78":[24,61,62,26],"95":[24,61,62,26],"117":[24,61,62,26],"135":[24,61,62,26],"149":[24,61,62,26],"168":[24,61,62,26],"178":[24,61,62,26],"186":[24,61,62,26],"194":[24,61,62,26],"202":[24,61,62,26],"211":[24,61,62,26],"219":[24,61,62,26],"236":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/index.ts":{"30":[24,61,62,26],"38":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/mcp-tools.ts":{"13":[24,61,62,26],"25":[24,61,62,26],"32":[24,61,62,26],"72":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/node-tools.ts":{"24":[24,61,62,26],"39":[24,61,62,26],"46":[24,61,62,26],"54":[24,61,62,26],"60":[24,61,62,26],"93":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/resolve-llm.tool.ts":{"16":[24,61,62,26],"19":[24,61,62,26],"23":[24,61,62,26],"38":[24,61,62,26],"66":[24,61,62,26],"70":[24,61,62,26],"83":[24,61,62,26],"98":[24,61,62,26],"104":[24,61,62,26],"113":[24,61,62,26],"117":[24,61,62,26],"131":[24,61,62,26],"149":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/agent-builder/router.ts":{"59":[24,61,62,26],"63":[24,61,62,26],"64":[24,61,62,26],"65":[24,61,62,26],"78":[24,61,62,26],"89":[24,61,62,26],"112":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/credentials.tool.ts":{"161":[24,61,62,26],"165":[24,61,62,26],"168":[24,61,62,26],"170":[24,61,62,26],"201":[24,61,62,26],"205":[24,61,62,26],"206":[24,61,62,26],"213":[24,61,62,26],"257":[24,61,62,26],"263":[24,61,62,26],"275":[24,61,62,26],"286":[24,61,62,26],"290":[24,61,62,26],"322":[24,61,62,26],"333":[24,61,62,26],"338":[24,61,62,26],"358":[24,61,62,26],"366":[24,61,62,26],"374":[24,61,62,26],"423":[24,61,62,26],"436":[24,61,62,26],"447":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/data-tables.tool.ts":{"66":[24,61,62,26],"84":[24,61,62,26],"261":[24,61,62,26],"284":[24,61,62,26],"292":[24,61,62,26],"303":[24,61,62,26],"329":[24,61,62,26],"381":[24,61,62,26],"413":[24,61,62,26],"449":[24,61,62,26],"483":[24,61,62,26],"517":[24,61,62,26],"550":[24,61,62,26],"583":[24,61,62,26],"600":[24,61,62,26],"634":[24,61,62,26],"645":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/analyze-agent-input-columns.service.ts":{"12":[24,61,62,26],"16":[24,61,62,26],"22":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/apply-pin-data.service.ts":{"14":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/column-ref-utils.ts":{"6":[24,61,62,26],"7":[24,61,62,26],"10":[24,61,62,26],"14":[24,61,62,26],"18":[24,61,62,26],"29":[24,61,62,26],"33":[24,61,62,26],"37":[24,61,62,26],"43":[24,61,62,26],"54":[24,61,62,26],"80":[24,61,62,26],"106":[24,61,62,26],"128":[24,61,62,26],"136":[24,61,62,26],"145":[24,61,62,26],"152":[24,61,62,26],"156":[24,61,62,26],"160":[24,61,62,26],"164":[24,61,62,26],"204":[24,61,62,26],"219":[24,61,62,26],"235":[24,61,62,26],"250":[24,61,62,26],"262":[24,61,62,26],"270":[24,61,62,26],"286":[24,61,62,26],"297":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/describe-metric-for-workflow.service.ts":{"14":[24,61,62,26],"34":[24,61,62,26],"43":[24,61,62,26],"62":[24,61,62,26],"68":[24,61,62,26],"75":[24,61,62,26],"84":[24,61,62,26],"121":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/detect-agent-named-refs.service.ts":{"24":[24,61,62,26],"34":[24,61,62,26],"35":[24,61,62,26],"42":[24,61,62,26],"50":[24,61,62,26],"79":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/detect-ai-nodes.ts":{"60":[24,61,62,26],"64":[24,61,62,26],"71":[24,61,62,26],"74":[24,61,62,26],"77":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/detect-tool-refs.service.ts":{"26":[24,61,62,26],"57":[24,61,62,26],"58":[24,61,62,26],"67":[24,61,62,26],"76":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/ensure-eval-data-table.service.ts":{"14":[24,61,62,26],"18":[24,61,62,26],"30":[24,61,62,26],"35":[24,61,62,26],"54":[24,61,62,26],"58":[24,61,62,26],"92":[24,61,62,26],"99":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/eval-data-requirements.service.ts":{"38":[24,61,62,26],"45":[24,61,62,26],"55":[24,61,62,26],"63":[24,61,62,26],"65":[24,61,62,26],"67":[24,61,62,26],"76":[24,61,62,26],"91":[24,61,62,26],"92":[24,61,62,26],"95":[24,61,62,26],"99":[24,61,62,26],"102":[24,61,62,26],"106":[24,61,62,26],"108":[24,61,62,26],"118":[24,61,62,26],"120":[24,61,62,26],"128":[24,61,62,26],"137":[24,61,62,26],"148":[24,61,62,26],"162":[24,61,62,26],"168":[24,61,62,26],"173":[24,61,62,26],"178":[24,61,62,26],"185":[24,61,62,26],"190":[24,61,62,26],"193":[24,61,62,26],"195":[24,61,62,26],"202":[24,61,62,26],"208":[24,61,62,26],"213":[24,61,62,26],"215":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/evals.tool.ts":{"158":[24,61,62,26],"172":[24,61,62,26],"173":[24,61,62,26],"175":[24,61,62,26],"187":[24,61,62,26],"192":[24,61,62,26],"196":[24,61,62,26],"200":[24,61,62,26],"207":[24,61,62,26],"214":[24,61,62,26],"218":[24,61,62,26],"226":[24,61,62,26],"234":[24,61,62,26],"257":[24,61,62,26],"261":[24,61,62,26],"268":[24,61,62,26],"297":[24,61,62,26],"306":[24,61,62,26],"310":[24,61,62,26],"319":[24,61,62,26],"329":[24,61,62,26],"346":[24,61,62,26],"379":[24,61,62,26],"393":[24,61,62,26],"432":[24,61,62,26],"456":[24,61,62,26],"465":[24,61,62,26],"466":[24,61,62,26],"490":[24,61,62,26],"538":[24,61,62,26],"540":[24,61,62,26],"550":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/extract-rows-from-history.service.ts":{"27":[24,61,62,26],"45":[24,61,62,26],"72":[24,61,62,26],"76":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/format-eval-setup-task.ts":{"28":[24,61,62,26],"32":[24,61,62,26],"36":[24,61,62,26],"60":[24,61,62,26],"87":[24,61,62,26],"99":[24,61,62,26],"100":[24,61,62,26],"117":[24,61,62,26],"149":[24,61,62,26],"158":[24,61,62,26],"162":[24,61,62,26],"173":[24,61,62,26],"176":[24,61,62,26],"183":[24,61,62,26],"188":[24,61,62,26],"189":[24,61,62,26],"191":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/generate-sample-rows.service.ts":{"63":[24,61,62,26],"67":[24,61,62,26],"70":[24,61,62,26],"86":[24,61,62,26],"92":[24,61,62,26],"99":[24,61,62,26],"101":[24,61,62,26],"108":[24,61,62,26],"112":[24,61,62,26],"126":[24,61,62,26],"130":[24,61,62,26],"151":[24,61,62,26],"168":[24,61,62,26],"188":[24,61,62,26],"214":[24,61,62,26],"232":[24,61,62,26],"235":[24,61,62,26],"269":[24,61,62,26],"289":[24,61,62,26],"302":[24,61,62,26],"303":[24,61,62,26],"306":[24,61,62,26],"314":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/generate-tool-ref-pin-data.service.ts":{"37":[24,61,62,26],"53":[24,61,62,26],"61":[24,61,62,26],"77":[24,61,62,26],"89":[24,61,62,26],"92":[24,61,62,26],"104":[24,61,62,26],"113":[24,61,62,26],"121":[24,61,62,26],"133":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/evals/metric-catalog.ts":{"70":[24,61,62,26],"74":[24,61,62,26],"75":[24,61,62,26],"78":[24,61,62,26],"94":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/executions.tool.ts":{"154":[24,61,25,62,26],"163":[24,61,25,62,26],"167":[24,61,25,62,26],"171":[24,61,25,62,26],"185":[24,61,25,62,26],"193":[24,61,25,62,26],"200":[24,61,25,62,26],"226":[24,61,25,62,26],"229":[24,61,25,62,26],"230":[24,61,25,62,26],"298":[24,61,25,62,26],"302":[24,61,25,62,26],"312":[24,61,25,62,26],"326":[24,61,25,62,26],"332":[24,61,25,62,26],"343":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/tools/filesystem/create-tools-from-mcp-server.ts":{"23":[24,61,62,26],"81":[24,61,62,26],"87":[24,61,62,26],"100":[24,61,62,26],"112":[24,61,62,26],"117":[24,61,62,26],"118":[24,61,62,26],"154":[24,61,62,26],"178":[24,61,62,26],"202":[24,61,62,26],"206":[24,61,62,26],"212":[24,61,62,26],"224":[24,61,62,26],"225":[24,61,62,26],"239":[24,61,62,26],"240":[24,61,62,26],"266":[24,61,62,26],"328":[24,61,62,26],"368":[24,61,62,26],"375":[24,61,62,26],"387":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/index.ts":{"9":[24,61,62,26],"11":[24,61,62,26],"15":[24,61,62,26],"18":[24,61,62,26],"21":[24,61,62,26],"24":[24,61,62,26],"27":[24,61,62,26],"29":[24,61,62,26],"31":[24,61,62,26],"34":[24,61,62,26],"38":[24,61,62,26],"42":[24,61,62,26],"46":[24,61,62,26],"49":[24,61,62,26],"53":[24,61,62,26],"57":[24,61,62,26],"60":[24,61,62,26],"63":[24,61,62,26],"66":[24,61,62,26],"70":[24,61,62,26],"74":[24,61,62,26],"77":[24,61,62,26],"84":[24,61,62,26],"111":[24,61,62,26],"137":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/n8n-docs/ranking.ts":{"24":[24,61,62,26],"32":[24,61,62,26],"35":[24,61,62,26],"53":[24,61,62,26],"71":[24,61,62,26],"75":[24,61,62,26],"76":[24,61,62,26],"79":[24,61,62,26],"85":[24,61,62,26],"90":[24,61,62,26],"94":[24,61,62,26],"98":[24,61,62,26],"102":[24,61,62,26],"113":[24,61,62,26],"203":[24,61,62,26],"210":[24,61,62,26],"211":[24,61,62,26],"212":[24,61,62,26],"215":[24,61,62,26],"221":[24,61,62,26],"226":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/n8n-docs/registry.ts":{"50":[24,61,62,26],"65":[24,61,62,26],"69":[24,61,62,26],"84":[24,61,62,26],"89":[24,61,62,26],"114":[24,61,62,26],"134":[24,61,62,26],"138":[24,61,62,26],"167":[24,61,62,26],"172":[24,61,62,26],"210":[24,61,62,26],"225":[24,61,62,26],"252":[24,61,62,26],"269":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/n8n-docs.tool.ts":{"53":[24,61,62,26],"58":[24,61,62,26],"67":[24,61,62,26],"83":[24,61,62,26],"100":[24,61,62,26],"116":[24,61,62,26],"132":[24,61,62,26],"145":[24,61,62,26],"160":[24,61,62,26],"161":[24,61,62,26],"187":[24,61,62,26],"193":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/nodes/node-search-engine.ts":{"49":[24,61,62,26],"61":[24,61,62,26],"66":[24,61,62,26],"70":[24,61,62,26],"71":[24,61,62,26],"78":[24,61,62,26],"84":[24,61,62,26],"101":[24,61,62,26],"103":[24,61,62,26],"121":[24,61,62,26],"126":[24,61,62,26],"134":[24,61,62,26],"138":[24,61,62,26],"168":[24,61,62,26],"177":[24,61,62,26],"183":[24,61,62,26],"212":[24,61,62,26],"230":[24,61,62,26],"236":[24,61,62,26],"243":[24,61,62,26],"247":[24,61,62,26],"255":[24,61,62,26],"259":[24,61,62,26],"275":[24,61,62,26],"282":[24,61,62,26],"295":[24,61,62,26],"306":[24,61,62,26],"310":[24,61,62,26],"317":[24,61,62,26],"319":[24,61,62,26],"325":[24,61,62,26],"329":[24,61,62,26],"331":[24,61,62,26],"345":[24,61,62,26],"393":[24,61,62,26],"407":[24,61,62,26],"421":[24,61,62,26],"448":[24,61,62,26],"449":[24,61,62,26],"458":[24,61,62,26],"481":[24,61,62,26],"489":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/nodes/preferred-chat-model.ts":{"19":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/nodes.tool.ts":{"140":[24,61,62,26,82],"150":[24,61,62,26,82],"175":[24,61,62,26,82],"186":[24,61,62,26,82],"187":[24,61,62,26,82],"199":[24,61,62,26,82],"203":[24,61,62,26,82],"218":[24,61,62,26,82],"244":[24,61,62,26,82],"250":[24,61,62,26,82],"259":[24,61,62,26,82],"293":[24,61,62,26,82],"307":[24,61,62,26,82],"316":[24,61,62,26,82],"342":[24,61,62,26,82],"370":[24,61,62,26,82],"412":[24,61,62,26,82],"428":[24,61,62,26,82]},"packages/@n8n/instance-ai/src/tools/orchestration/agent-persistence.ts":{"7":[24,61,62,26],"11":[24,61,62,26],"21":[24,61,62,26],"31":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/complete-checkpoint.tool.ts":{"40":[24,61,62,26],"45":[24,61,62,26],"50":[24,61,62,26],"57":[24,61,62,26],"62":[24,61,62,26],"63":[24,61,62,26],"64":[24,61,62,26],"65":[24,61,62,26],"82":[24,61,62,26],"85":[24,61,62,26],"86":[24,61,62,26],"110":[24,61,62,26],"120":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/display-utils.ts":{"2":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/eval-data-agent.tool.ts":{"12":[24,61,62,26],"26":[24,61,62,26],"27":[24,61,62,26],"74":[24,61,62,26],"79":[24,61,62,26],"80":[24,61,62,26],"89":[24,61,62,26],"102":[24,61,62,26],"108":[24,61,62,26],"111":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/eval-setup-agent.tool.ts":{"48":[24,61,62,26],"94":[24,61,62,26],"137":[24,61,62,26],"138":[24,61,62,26],"259":[24,61,62,26],"275":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/plan.tool.ts":{"53":[24,61,25,62,26],"68":[24,61,25,62,26],"69":[24,61,25,62,26],"74":[24,61,25,62,26],"75":[24,61,25,62,26],"78":[24,61,25,62,26],"99":[24,61,25,62,26],"146":[24,61,25,62,26],"168":[24,61,25,62,26],"251":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/report-verification-verdict.tool.ts":{"74":[24,61,62,26],"107":[24,61,62,26],"120":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/tracing-utils.ts":{"27":[24,61,62,26],"50":[24,61,62,26],"57":[24,61,62,26],"61":[24,61,62,26],"90":[24,61,62,26],"137":[24,61,62,26],"150":[24,61,62,26],"162":[24,61,62,26],"173":[24,61,62,26],"182":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/verification/analyze-result.ts":{"28":[24,61,62,26],"37":[24,61,62,26],"51":[24,61,62,26],"55":[24,61,62,26],"68":[24,61,62,26],"77":[24,61,62,26],"88":[24,61,62,26],"95":[24,61,62,26],"109":[24,61,62,26],"121":[24,61,62,26],"132":[24,61,62,26],"133":[24,61,62,26],"136":[24,61,62,26],"202":[24,61,62,26],"209":[24,61,62,26],"223":[24,61,62,26],"246":[24,61,62,26],"250":[24,61,62,26],"258":[24,61,62,26],"279":[24,61,62,26],"291":[24,61,62,26],"293":[24,61,62,26],"294":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/verification/finalize-result.ts":{"21":[24,61,62,26],"84":[24,61,62,26],"135":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/verification/prepare-run.ts":{"10":[24,61,62,26],"18":[24,61,62,26],"19":[24,61,62,26],"22":[24,61,62,26],"33":[24,61,62,26],"60":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/verification/reconcile-plan.ts":{"14":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/verification/resolve-target.ts":{"29":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/orchestration/verify-built-workflow.tool.ts":{"114":[24,61,62,26],"125":[24,61,62,26],"186":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/research.tool.ts":{"20":[24,61,62,26],"33":[24,61,62,26],"87":[24,61,62,26],"141":[24,61,62,26],"218":[24,61,62,26],"246":[24,61,62,26],"254":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/shared/ask-user.tool.ts":{"41":[24,61,62,26],"85":[24,61,62,26],"106":[24,61,62,26],"108":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/task-control.tool.ts":{"41":[24,61,62,26],"56":[24,61,62,26],"67":[24,61,62,26],"94":[24,61,62,26],"98":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/web-research/sanitize-web-content.ts":{"12":[24,61,62,26],"27":[24,61,62,26],"32":[24,61,62,26],"47":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/apply-workflow-credentials.tool.ts":{"23":[24,61,62,26],"37":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/build-workflow.tool.ts":{"90":[24,61,62,26],"173":[24,61,62,26],"191":[24,61,62,26],"224":[24,61,62,26],"234":[24,61,62,26],"250":[24,61,62,26],"265":[24,61,62,26],"307":[24,61,62,26],"532":[24,61,62,26],"624":[24,61,62,26],"663":[24,61,62,26],"727":[24,61,62,26],"728":[24,61,62,26],"730":[24,61,62,26],"733":[24,61,62,26],"734":[24,61,62,26],"739":[24,61,62,26],"865":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/classify-node-destructiveness.service.ts":{"173":[24,61,62,26],"185":[24,61,62,26],"201":[24,61,62,26],"209":[24,61,62,26],"284":[24,61,62,26],"313":[24,61,62,26],"344":[24,61,62,26],"351":[24,61,62,26],"359":[24,61,62,26],"370":[24,61,62,26],"383":[24,61,62,26],"393":[24,61,62,26],"400":[24,61,62,26],"436":[24,61,62,26],"437":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/credential-url-resolver.ts":{"24":[24,26],"32":[24,26],"33":[24,26],"41":[24,26],"43":[24,26],"78":[24,26],"94":[24,26]},"packages/@n8n/instance-ai/src/tools/workflows/credential-utils.ts":{"22":[24,61,62,26],"33":[24,61,62,26],"49":[24,61,62,26],"82":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/detect-array-input-collapse.ts":{"31":[24,61,62,26],"44":[24,61,62,26],"55":[24,61,62,26],"78":[24,61,62,26],"90":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/detect-wrong-kind-locator.ts":{"6":[24,61,62,26],"10":[24,61,62,26],"11":[24,61,62,26],"15":[24,61,62,26],"18":[24,61,62,26],"21":[24,61,62,26],"22":[24,61,62,26],"25":[24,61,62,26],"34":[24,61,62,26],"39":[24,61,62,26],"48":[24,61,62,26],"68":[24,61,62,26],"114":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/generate-simulation-fixtures.service.ts":{"56":[24,61,62,26],"78":[24,61,62,26],"87":[24,61,62,26],"88":[24,61,62,26],"91":[24,61,62,26],"99":[24,61,62,26],"104":[24,61,62,26],"105":[24,61,62,26],"113":[24,61,62,26],"117":[24,61,62,26],"122":[24,61,62,26],"125":[24,61,62,26],"136":[24,61,62,26],"147":[24,61,62,26],"161":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/plan-verification-simulation.ts":{"47":[24,61,62,26],"52":[24,61,62,26],"56":[24,61,62,26],"63":[24,61,62,26],"64":[24,61,62,26],"90":[24,61,62,26],"105":[24,61,62,26],"117":[24,61,62,26],"118":[24,61,62,26],"119":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/reconcile-simulation-plan.ts":{"30":[24,61,62,26],"40":[24,61,62,26],"44":[24,61,62,26],"48":[24,61,62,26],"63":[24,61,62,26],"75":[24,61,62,26],"81":[24,61,62,26],"86":[24,61,62,26],"90":[24,61,62,26],"92":[24,61,62,26],"93":[24,61,62,26],"100":[24,61,62,26],"107":[24,61,62,26],"112":[24,61,62,26],"119":[24,61,62,26],"126":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/resolve-credentials.ts":{"31":[24,61,62,26],"77":[24,61,62,26],"101":[24,61,62,26],"141":[24,61,62,26],"147":[24,61,62,26],"159":[24,61,62,26],"219":[24,61,62,26],"228":[24,61,62,26],"237":[24,61,62,26],"248":[24,61,62,26],"257":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/setup-workflow.service.ts":{"39":[24,61,62,26,82],"43":[24,61,62,26,82],"56":[24,61,62,26,82],"135":[24,61,62,26,82],"156":[24,61,62,26,82],"161":[24,61,62,26,82],"168":[24,61,62,26,82],"178":[24,61,62,26,82],"197":[24,61,62,26,82],"205":[24,61,62,26,82],"232":[24,61,62,26,82],"248":[24,61,62,26,82],"259":[24,61,62,26,82],"266":[24,61,62,26,82],"267":[24,61,62,26,82],"301":[24,61,62,26,82],"317":[24,61,62,26,82],"321":[24,61,62,26,82],"340":[24,61,62,26,82],"349":[24,61,62,26,82],"362":[24,61,62,26,82],"391":[24,61,62,26,82],"431":[24,61,62,26,82],"442":[24,61,62,26,82],"444":[24,61,62,26,82],"509":[24,61,62,26,82],"524":[24,61,62,26,82],"587":[24,61,62,26,82],"609":[24,61,62,26,82],"630":[24,61,62,26,82],"650":[24,61,62,26,82],"657":[24,61,62,26,82],"658":[24,61,62,26,82],"663":[24,61,62,26,82],"691":[24,61,62,26,82],"698":[24,61,62,26,82],"712":[24,61,62,26,82],"718":[24,61,62,26,82],"735":[24,61,62,26,82],"782":[24,61,62,26,82],"824":[24,61,62,26,82],"848":[24,61,62,26,82],"873":[24,61,62,26,82],"928":[24,61,62,26,82],"982":[24,61,62,26,82],"1002":[24,61,62,26,82],"1017":[24,61,62,26,82],"1056":[24,61,62,26,82],"1065":[24,61,62,26,82],"1079":[24,61,62,26,82],"1088":[24,61,62,26,82],"1102":[24,61,62,26,82]},"packages/@n8n/instance-ai/src/tools/workflows/summarize-workflow.ts":{"13":[24,61,62,26],"19":[24,61,62,26],"30":[24,61,62,26],"36":[24,61,62,26],"45":[24,61,62,26],"51":[24,61,62,26],"70":[24,61,62,26],"76":[24,61,62,26],"79":[24,61,62,26],"91":[24,61,62,26],"93":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/validate-workflow.service.ts":{"41":[24,61,62,26],"45":[24,61,62,26],"57":[24,61,62,26],"58":[24,61,62,26],"65":[24,61,62,26],"70":[24,61,62,26],"77":[24,61,62,26],"82":[24,61,62,26],"87":[24,61,62,26],"96":[24,61,62,26],"109":[24,61,62,26],"133":[24,61,62,26],"181":[24,61,62,26],"228":[24,61,62,26],"232":[24,61,62,26],"253":[24,61,62,26],"307":[24,61,62,26],"317":[24,61,62,26],"344":[24,61,62,26],"354":[24,61,62,26],"363":[24,61,62,26],"367":[24,61,62,26],"388":[24,61,62,26],"408":[24,61,62,26],"475":[24,61,62,26],"512":[24,61,62,26],"553":[24,61,62,26],"571":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-build-context.ts":{"10":[24,61,25,62,26],"15":[24,61,25,62,26],"26":[24,61,25,62,26],"56":[24,61,25,62,26],"96":[24,61,25,62,26],"100":[24,61,25,62,26],"101":[24,61,25,62,26],"105":[24,61,25,62,26],"112":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-build-remediation.ts":{"5":[24,61,62,26],"10":[24,61,62,26],"14":[24,61,62,26],"29":[24,61,62,26],"39":[24,61,62,26],"51":[24,61,62,26],"94":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-build-reporting.ts":{"8":[24,61,62,26],"54":[24,61,62,26],"69":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-build-routing.ts":{"15":[24,61,62,26],"24":[24,61,62,26],"43":[24,61,62,26],"54":[24,61,62,26],"96":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-build-telemetry.ts":{"15":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-file-bindings.ts":{"24":[24,61,62,26],"28":[24,61,62,26],"32":[24,61,62,26],"37":[24,61,62,26],"47":[24,61,62,26],"63":[24,61,62,26],"78":[24,61,62,26],"91":[24,61,62,26],"110":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-json-utils.ts":{"23":[24,61,25,62,26],"27":[24,61,25,62,26],"33":[24,61,25,62,26],"43":[24,61,25,62,26],"47":[24,61,25,62,26],"70":[24,61,25,62,26],"106":[24,61,25,62,26],"117":[24,61,25,62,26],"137":[24,61,25,62,26],"141":[24,61,25,62,26],"147":[24,61,25,62,26],"158":[24,61,25,62,26],"162":[24,61,25,62,26],"170":[24,61,25,62,26],"178":[24,61,25,62,26],"196":[24,61,25,62,26],"212":[24,61,25,62,26],"228":[24,61,25,62,26],"248":[24,61,25,62,26],"249":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-source-compiler.ts":{"47":[24,61,62,26],"56":[24,61,62,26],"61":[24,61,62,26],"65":[24,61,62,26],"73":[24,61,62,26],"93":[24,61,62,26],"122":[24,61,62,26],"140":[24,61,62,26],"142":[24,61,62,26],"145":[24,61,62,26],"151":[24,61,62,26],"155":[24,61,62,26],"170":[24,61,62,26],"174":[24,61,62,26],"198":[24,61,62,26],"199":[24,61,62,26],"219":[24,61,62,26],"297":[24,61,62,26],"333":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows/workflow-validation-warnings.ts":{"7":[24,61,62,26],"20":[24,61,62,26]},"packages/@n8n/instance-ai/src/tools/workflows.tool.ts":{"281":[24,61,25,62,26],"285":[24,61,25,62,26],"314":[24,61,25,62,26],"320":[24,61,25,62,26],"324":[24,61,25,62,26],"354":[24,61,25,62,26],"360":[24,61,25,62,26],"361":[24,61,25,62,26],"364":[24,61,25,62,26],"374":[24,61,25,62,26],"411":[24,61,25,62,26],"412":[24,61,25,62,26],"425":[24,61,25,62,26],"440":[24,61,25,62,26],"444":[24,61,25,62,26],"459":[24,61,25,62,26],"491":[24,61,25,62,26],"525":[24,61,25,62,26],"547":[24,61,25,62,26],"569":[24,61,25,62,26],"590":[24,61,25,62,26],"616":[24,61,25,62,26],"636":[24,61,25,62,26],"652":[24,61,25,62,26],"665":[24,61,25,62,26],"666":[24,61,25,62,26],"671":[24,61,25,62,26],"702":[24,61,25,62,26],"766":[24,61,25,62,26],"786":[24,61,25,62,26],"795":[24,61,25,62,26],"839":[24,61,25,62,26],"924":[24,61,25,62,26],"938":[24,61,25,62,26],"968":[24,61,25,62,26],"979":[24,61,25,62,26],"986":[24,61,25,62,26],"993":[24,61,25,62,26],"1030":[24,61,25,62,26],"1041":[24,61,25,62,26],"1058":[24,61,25,62,26],"1086":[24,61,25,62,26],"1134":[24,61,25,62,26],"1139":[24,61,25,62,26],"1140":[24,61,25,62,26],"1147":[24,61,25,62,26],"1162":[24,61,25,62,26],"1180":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/tools/workspace.tool.ts":{"108":[24,61,62,26],"143":[24,61,62,26],"148":[24,61,62,26],"153":[24,61,62,26],"185":[24,61,62,26],"220":[24,61,62,26],"228":[24,61,62,26],"276":[24,61,62,26],"312":[24,61,62,26],"346":[24,61,62,26],"353":[24,61,62,26],"367":[24,61,62,26]},"packages/@n8n/instance-ai/src/tracing/langsmith-tracing.ts":{"87":[24,61,25,62,26],"123":[24,61,25,62,26],"131":[24,61,25,62,26],"138":[24,61,25,62,26],"143":[24,61,25,62,26],"147":[24,61,25,62,26],"160":[24,61,25,62,26],"180":[24,61,25,62,26],"186":[24,61,25,62,26],"212":[24,61,25,62,26],"250":[24,61,25,62,26],"258":[24,61,25,62,26],"323":[24,61,25,62,26],"388":[24,61,25,62,26],"400":[24,61,25,62,26],"418":[24,61,25,62,26],"428":[24,61,25,62,26],"444":[24,61,25,62,26],"456":[24,61,25,62,26],"460":[24,61,25,62,26],"467":[24,61,25,62,26],"479":[24,61,25,62,26],"506":[24,61,25,62,26],"512":[24,61,25,62,26],"524":[24,61,25,62,26],"539":[24,61,25,62,26],"558":[24,61,25,62,26],"577":[24,61,25,62,26],"586":[24,61,25,62,26],"589":[24,61,25,62,26],"662":[24,61,25,62,26],"670":[24,61,25,62,26],"674":[24,61,25,62,26],"698":[24,61,25,62,26],"705":[24,61,25,62,26],"709":[24,61,25,62,26],"710":[24,61,25,62,26],"715":[24,61,25,62,26],"736":[24,61,25,62,26],"763":[24,61,25,62,26],"774":[24,61,25,62,26],"789":[24,61,25,62,26],"809":[24,61,25,62,26],"814":[24,61,25,62,26],"821":[24,61,25,62,26],"837":[24,61,25,62,26],"843":[24,61,25,62,26],"851":[24,61,25,62,26],"868":[24,61,25,62,26],"913":[24,61,25,62,26],"933":[24,61,25,62,26],"939":[24,61,25,62,26],"945":[24,61,25,62,26],"993":[24,61,25,62,26],"1037":[24,61,25,62,26],"1052":[24,61,25,62,26],"1091":[24,61,25,62,26],"1104":[24,61,25,62,26],"1115":[24,61,25,62,26],"1119":[24,61,25,62,26],"1138":[24,61,25,62,26],"1141":[24,61,25,62,26],"1145":[24,61,25,62,26],"1152":[24,61,25,62,26],"1162":[24,61,25,62,26],"1167":[24,61,25,62,26],"1175":[24,61,25,62,26],"1185":[24,61,25,62,26],"1199":[24,61,25,62,26],"1202":[24,61,25,62,26],"1206":[24,61,25,62,26],"1221":[24,61,25,62,26],"1230":[24,61,25,62,26],"1233":[24,61,25,62,26],"1237":[24,61,25,62,26],"1241":[24,61,25,62,26],"1266":[24,61,25,62,26],"1274":[24,61,25,62,26],"1290":[24,61,25,62,26],"1298":[24,61,25,62,26],"1310":[24,61,25,62,26],"1341":[24,61,25,62,26],"1348":[24,61,25,62,26],"1356":[24,61,25,62,26],"1401":[24,61,25,62,26],"1425":[24,61,25,62,26],"1445":[24,61,25,62,26],"1446":[24,61,25,62,26],"1447":[24,61,25,62,26],"1448":[24,61,25,62,26],"1449":[24,61,25,62,26],"1450":[24,61,25,62,26],"1451":[24,61,25,62,26],"1473":[24,61,25,62,26],"1482":[24,61,25,62,26],"1508":[24,61,25,62,26],"1509":[24,61,25,62,26],"1523":[24,61,25,62,26],"1548":[24,61,25,62,26],"1583":[24,61,25,62,26],"1592":[24,61,25,62,26],"1602":[24,61,25,62,26],"1638":[24,61,25,62,26],"1655":[24,61,25,62,26],"1674":[24,61,25,62,26],"1704":[24,61,25,62,26],"1714":[24,61,25,62,26],"1738":[24,61,25,62,26],"1760":[24,61,25,62,26],"1790":[24,61,25,62,26],"1841":[24,61,25,62,26],"1851":[24,61,25,62,26],"1900":[24,61,25,62,26],"1916":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/tracing/trace-labels.ts":{"1":[24,61,62,26],"9":[24,61,62,26],"13":[24,61,62,26],"24":[24,61,62,26],"28":[24,61,62,26]},"packages/@n8n/instance-ai/src/tracing/trace-payloads.ts":{"60":[24,61,62,26],"77":[24,61,62,26],"111":[24,61,62,26],"119":[24,61,62,26],"133":[24,61,62,26],"134":[24,61,62,26],"136":[24,61,62,26],"139":[24,61,62,26],"142":[24,61,62,26],"155":[24,61,62,26],"177":[24,61,62,26],"200":[24,61,62,26],"214":[24,61,62,26],"226":[24,61,62,26],"262":[24,61,62,26],"275":[24,61,62,26],"290":[24,61,62,26],"297":[24,61,62,26],"304":[24,61,62,26],"320":[24,61,62,26],"347":[24,61,62,26],"381":[24,61,62,26],"418":[24,61,62,26],"443":[24,61,62,26],"445":[24,61,62,26],"449":[24,61,62,26],"451":[24,61,62,26],"458":[24,61,62,26],"462":[24,61,62,26],"472":[24,61,62,26],"487":[24,61,62,26],"513":[24,61,62,26],"544":[24,61,62,26],"555":[24,61,62,26],"570":[24,61,62,26],"584":[24,61,62,26],"591":[24,61,62,26],"604":[24,61,62,26],"622":[24,61,62,26],"644":[24,61,62,26],"672":[24,61,62,26],"724":[24,61,62,26],"769":[24,61,62,26],"806":[24,61,62,26],"819":[24,61,62,26],"827":[24,61,62,26],"849":[24,61,62,26],"854":[24,61,62,26],"864":[24,61,62,26],"873":[24,61,62,26],"884":[24,61,62,26],"921":[24,61,62,26],"955":[24,61,62,26],"964":[24,61,62,26],"979":[24,61,62,26],"983":[24,61,62,26],"998":[24,61,62,26],"1025":[24,61,62,26],"1049":[24,61,62,26],"1056":[24,61,62,26],"1060":[24,61,62,26],"1068":[24,61,62,26],"1091":[24,61,62,26],"1109":[24,61,62,26],"1132":[24,61,62,26],"1159":[24,61,62,26],"1191":[24,61,62,26],"1200":[24,61,62,26],"1202":[24,61,62,26],"1217":[24,61,62,26],"1229":[24,61,62,26],"1239":[24,61,62,26],"1240":[24,61,62,26],"1246":[24,61,62,26],"1255":[24,61,62,26],"1268":[24,61,62,26],"1281":[24,61,62,26],"1303":[24,61,62,26],"1321":[24,61,62,26],"1333":[24,61,62,26],"1345":[24,61,62,26],"1358":[24,61,62,26]},"packages/@n8n/instance-ai/src/tracing/trace-replay.ts":{"45":[24,61,62,26],"61":[24,61,62,26],"76":[24,61,62,26],"96":[24,61,62,26],"137":[24,61,62,26],"152":[24,61,62,26],"158":[24,61,62,26],"162":[24,61,62,26],"200":[24,61,62,26],"224":[24,61,62,26],"240":[24,61,62,26],"262":[24,61,62,26],"267":[24,61,62,26],"275":[24,61,62,26],"279":[24,61,62,26],"303":[24,61,62,26],"312":[24,61,62,26],"328":[24,61,62,26],"346":[24,61,62,26],"364":[24,61,62,26],"368":[24,61,62,26],"369":[24,61,62,26],"377":[24,61,62,26],"383":[24,61,62,26]},"packages/@n8n/instance-ai/src/utils/agent-feature-enabled.ts":{"3":[24,61,62,26],"7":[24,61,62,26],"8":[24,61,62,26]},"packages/@n8n/instance-ai/src/utils/agent-tree.ts":{"4":[24,60,61,62,26],"12":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/utils/eval-agents.ts":{"35":[24,61,62,26],"44":[24,61,62,26],"67":[24,61,62,26],"73":[24,61,62,26],"103":[24,61,62,26],"133":[24,61,62,26]},"packages/@n8n/instance-ai/src/utils/format-timestamp.ts":{"2":[24,61,62,26]},"packages/@n8n/instance-ai/src/utils/generate-validated-json.ts":{"30":[24,61,62,26],"36":[24,61,62,26]},"packages/@n8n/instance-ai/src/utils/stream-helpers.ts":{"18":[24,61,25,62,26],"43":[24,61,25,62,26],"47":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workflow-builder/build-failure-tracker.ts":{"7":[24,61,62,26],"9":[24,61,62,26],"36":[24,61,62,26],"63":[24,61,62,26],"85":[24,61,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/guidance.ts":{"7":[24,61,62,26],"15":[24,61,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/index.ts":{"61":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/remediation.ts":{"11":[24,61,25,62,26],"22":[24,61,25,62,26],"29":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/runtime.ts":{"10":[24,61,62,26],"29":[24,61,62,26],"31":[24,61,62,26],"46":[24,61,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/setup-verification-policy.ts":{"3":[24,61,25,62,26],"9":[24,61,25,62,26],"13":[24,61,25,62,26],"22":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/verification-obligation.ts":{"36":[24,61,25,62,26],"46":[24,61,25,62,26],"54":[24,61,25,62,26],"58":[24,61,25,62,26],"69":[24,61,25,62,26],"103":[24,61,25,62,26],"112":[24,61,25,62,26],"159":[24,61,25,62,26],"163":[24,61,25,62,26],"195":[24,61,25,62,26],"207":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/workflow-loop-controller.ts":{"38":[24,61,62,26],"66":[24,61,62,26],"223":[24,61,62,26],"384":[24,61,62,26],"473":[24,61,62,26],"477":[24,61,62,26],"481":[24,61,62,26],"492":[24,61,62,26],"508":[24,61,62,26],"523":[24,61,62,26],"525":[24,61,62,26],"530":[24,61,62,26],"535":[24,61,62,26],"550":[24,61,62,26],"553":[24,61,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/workflow-loop-state.ts":{"45":[24,60,61,62,26],"55":[24,60,61,62,26],"61":[24,60,61,62,26]},"packages/@n8n/instance-ai/src/workflow-loop/workflow-task-service.ts":{"11":[24,61,62,26],"22":[24,61,62,26],"29":[24,61,62,26],"33":[24,61,62,26],"37":[24,61,62,26],"42":[24,61,62,26],"47":[24,61,62,26],"48":[24,61,62,26],"49":[24,61,62,26],"54":[24,61,62,26],"59":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/builder-templates-service.ts":{"143":[24,61,62,26],"157":[24,61,62,26],"161":[24,61,62,26],"165":[24,61,62,26],"170":[24,61,62,26],"193":[24,61,62,26],"201":[24,61,62,26],"212":[24,61,62,26],"220":[24,61,62,26],"225":[24,61,62,26],"234":[24,61,62,26],"279":[24,61,62,26],"288":[24,61,62,26],"297":[24,61,62,26],"307":[24,61,62,26],"343":[24,61,62,26],"365":[24,61,62,26],"445":[24,61,62,26],"478":[24,61,62,26],"510":[24,61,62,26],"516":[24,61,62,26],"525":[24,61,62,26],"534":[24,61,62,26],"540":[24,61,62,26],"545":[24,61,62,26],"546":[24,61,62,26],"549":[24,61,62,26],"564":[24,61,62,26],"572":[24,61,62,26],"589":[24,61,62,26],"606":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/compute-workspace-content-hash.ts":{"4":[24,61,62,26],"6":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/create-workspace.ts":{"38":[24,61,62,26],"39":[24,61,62,26],"40":[24,61,62,26],"41":[24,61,62,26],"45":[24,61,62,26],"49":[24,61,62,26],"67":[24,61,62,26],"79":[24,61,62,26],"127":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/lazy-runtime-workspace.ts":{"41":[24,61,62,26],"65":[24,61,62,26],"67":[24,61,62,26],"71":[24,61,62,26],"76":[24,61,62,26],"80":[24,61,62,26],"82":[24,61,62,26],"86":[24,61,62,26],"100":[24,61,62,26],"104":[24,61,62,26],"110":[24,61,62,26],"122":[24,61,62,26],"131":[24,61,62,26],"140":[24,61,62,26],"149":[24,61,62,26],"162":[24,61,62,26],"167":[24,61,62,26],"170":[24,61,62,26],"175":[24,61,62,26],"179":[24,61,62,26],"183":[24,61,62,26],"189":[24,61,62,26],"193":[24,61,62,26],"209":[24,61,62,26],"213":[24,61,62,26],"217":[24,61,62,26],"221":[24,61,62,26],"225":[24,61,62,26],"229":[24,61,62,26],"233":[24,61,62,26],"237":[24,61,62,26],"241":[24,61,62,26],"245":[24,61,62,26],"249":[24,61,62,26],"253":[24,61,62,26],"259":[24,61,62,26],"270":[24,61,62,26],"275":[24,61,62,26],"278":[24,61,62,26],"283":[24,61,62,26],"289":[24,61,62,26],"296":[24,61,62,26],"300":[24,61,62,26],"304":[24,61,62,26],"325":[24,61,62,26],"339":[24,61,62,26],"345":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/pack-workspace-sdk.ts":{"44":[24,61,62,26],"55":[24,61,62,26],"110":[24,61,62,26],"124":[24,61,62,26],"129":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/prebaked-workspace-bundle.ts":{"30":[24,61,25,62,26],"63":[24,61,25,62,26],"66":[24,61,25,62,26],"75":[24,61,25,62,26],"101":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workspace/sandbox-fs.ts":{"44":[24,61,62,26],"69":[24,61,62,26],"74":[24,61,62,26],"115":[24,61,62,26],"128":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/sandbox-setup.ts":{"64":[24,61,25,62,26],"69":[24,61,25,62,26],"78":[24,61,25,62,26],"91":[24,61,25,62,26],"124":[24,61,25,62,26],"140":[24,61,25,62,26],"178":[24,61,25,62,26],"185":[24,61,25,62,26],"278":[24,61,25,62,26],"295":[24,61,25,62,26],"305":[24,61,25,62,26],"311":[24,61,25,62,26],"319":[24,61,25,62,26],"333":[24,61,25,62,26],"354":[24,61,25,62,26],"373":[24,61,25,62,26],"390":[24,61,25,62,26],"395":[24,61,25,62,26],"414":[24,61,25,62,26],"420":[24,61,25,62,26],"427":[24,61,25,62,26],"445":[24,61,25,62,26],"454":[24,61,25,62,26],"472":[24,61,25,62,26],"477":[24,61,25,62,26],"486":[24,61,25,62,26],"491":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workspace/scoped-workspace.ts":{"17":[24,61,62,26],"22":[24,61,62,26],"36":[24,61,62,26],"41":[24,61,62,26],"45":[24,61,62,26],"49":[24,61,62,26],"53":[24,61,62,26],"57":[24,61,62,26],"61":[24,61,62,26],"65":[24,61,62,26],"69":[24,61,62,26],"74":[24,61,62,26],"78":[24,61,62,26],"82":[24,61,62,26],"86":[24,61,62,26],"90":[24,61,62,26],"98":[24,61,62,26],"106":[24,61,62,26],"110":[24,61,62,26],"114":[24,61,62,26],"118":[24,61,62,26],"122":[24,61,62,26],"130":[24,61,62,26],"137":[24,61,62,26],"151":[24,61,62,26],"155":[24,61,62,26],"159":[24,61,62,26],"163":[24,61,62,26],"167":[24,61,62,26],"171":[24,61,62,26],"175":[24,61,62,26],"181":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/snapshot-image-context.ts":{"18":[24,61,62,26],"30":[24,61,62,26],"48":[24,61,62,26],"62":[24,61,62,26],"68":[24,61,62,26],"78":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/snapshot-manager.ts":{"40":[24,61,62,26],"55":[24,61,62,26],"64":[24,61,62,26],"69":[24,61,62,26],"92":[24,61,62,26],"122":[24,61,62,26],"146":[24,61,62,26],"151":[24,61,62,26],"161":[24,61,62,26],"166":[24,61,62,26],"184":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/template-telemetry.ts":{"59":[24,61,62,26],"74":[24,61,62,26],"78":[24,61,62,26],"88":[24,61,62,26],"97":[24,61,62,26],"125":[24,61,62,26],"144":[24,61,62,26],"149":[24,61,62,26],"159":[24,61,62,26],"166":[24,61,62,26],"176":[24,61,62,26],"187":[24,61,62,26],"195":[24,61,62,26],"200":[24,61,62,26],"224":[24,61,62,26],"229":[24,61,62,26],"260":[24,61,62,26],"279":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/workspace-file-content.ts":{"2":[24,61,62,26],"7":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/workspace-files.ts":{"23":[24,61,62,26],"27":[24,61,62,26],"35":[24,61,62,26],"70":[24,61,62,26],"107":[24,61,62,26],"113":[24,61,62,26]},"packages/@n8n/instance-ai/src/workspace/workspace-manifest.ts":{"17":[24,61,25,62,26]},"packages/@n8n/instance-ai/src/workspace/workspace-paths.ts":{"1":[24,61,62,26],"8":[24,61,62,26],"16":[24,61,62,26],"24":[24,61,62,26]},"packages/@n8n/workflow-sdk/src/codegen/index.ts":{"54":[24,61,25,62,26],"55":[24,61,25,62,26],"57":[24,61,25,62,26],"74":[24,61,25,62,26],"101":[24,61,25,62,26]},"packages/@n8n/workflow-sdk/src/constants/node-types.ts":{"24":[24,25,26],"31":[24,25,26],"38":[24,25,26],"45":[24,25,26],"52":[24,25,26],"59":[24,25,26],"66":[24,25,26],"73":[24,25,26]},"packages/@n8n/workflow-sdk/src/index.ts":{"113":[24,61,25,62,26,82,63,148],"126":[24,61,25,62,26,82,63,148],"164":[24,61,25,62,26,82,63,148]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/chatbot.ts":{"4":[24,26],"125":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/content-generation.ts":{"4":[24,26],"111":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/data-extraction.ts":{"4":[24,26],"118":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/data-persistence.ts":{"4":[24,26],"193":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/data-transformation.ts":{"4":[24,26],"142":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/document-processing.ts":{"4":[24,26],"328":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/form-input.ts":{"4":[24,26],"169":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/notification.ts":{"4":[24,26],"131":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/scheduling.ts":{"4":[24,26],"148":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/scraping-and-research.ts":{"4":[24,26],"154":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/triage.ts":{"4":[24,26],"145":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/guides/web-app.ts":{"4":[24,26],"200":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/best-practices/index.ts":{"1":[24,26],"4":[24,26],"7":[24,26],"8":[24,26],"14":[24,26],"19":[24,26],"20":[24,26]},"packages/@n8n/workflow-sdk/src/prompts/sdk-reference/index.ts":{"3":[24,61,62,26]},"packages/@n8n/workflow-sdk/src/validation/display-options.ts":{"77":[24,26],"90":[24,26],"98":[24,26],"115":[24,26],"156":[24,26],"157":[24,26],"167":[24,26],"231":[24,26],"274":[24,26],"289":[24,26],"311":[24,26],"332":[24,26],"333":[24,26],"349":[24,26]},"packages/@n8n/workflow-sdk/src/validation/index.ts":{"67":[24,61,62,26,63,148],"94":[24,61,62,26,63,148],"142":[24,61,62,26,63,148],"207":[24,61,62,26,63,148],"270":[24,61,62,26,63,148],"290":[24,61,62,26,63,148],"308":[24,61,62,26,63,148],"373":[24,61,62,26,63,148],"385":[24,61,62,26,63,148],"476":[24,61,62,26,63,148],"544":[24,61,62,26,63,148],"601":[24,61,62,26,63,148],"634":[24,61,62,26,63,148],"697":[24,61,62,26,63,148],"705":[24,61,62,26,63,148],"706":[24,61,62,26,63,148],"728":[24,61,62,26,63,148],"741":[24,61,62,26,63,148],"755":[24,61,62,26,63,148],"777":[24,61,62,26,63,148],"862":[24,61,62,26,63,148],"903":[24,61,62,26,63,148],"938":[24,61,62,26,63,148],"950":[24,61,62,26,63,148],"974":[24,61,62,26,63,148],"1006":[24,61,62,26,63,148],"1036":[24,61,62,26,63,148],"1049":[24,61,62,26,63,148],"1056":[24,61,62,26,63,148],"1064":[24,61,62,26,63,148],"1069":[24,61,62,26,63,148],"1076":[24,61,62,26,63,148],"1101":[24,61,62,26,63,148],"1159":[24,61,62,26,63,148],"1203":[24,61,62,26,63,148],"1252":[24,61,62,26,63,148]},"packages/@n8n/workflow-sdk/src/validation/input-resolver.ts":{"16":[24,26],"31":[24,26]},"packages/@n8n/workflow-sdk/src/validation/output-resolver.ts":{"16":[24,26],"31":[24,26]},"packages/@n8n/workflow-sdk/src/validation/resolve-schema.ts":{"17":[24,26,82],"65":[24,26,82],"74":[24,26,82],"86":[24,26,82],"95":[24,26,82],"142":[24,26,82],"150":[24,26,82],"166":[24,26,82],"202":[24,26,82],"220":[24,26,82],"223":[24,26,82],"225":[24,26,82]},"packages/@n8n/workflow-sdk/src/validation/schema-helpers.ts":{"33":[24,26]},"packages/@n8n/workflow-sdk/src/validation/schema-validator.ts":{"38":[24,61,62,26,82,63,148],"46":[24,61,62,26,82,63,148],"59":[24,61,62,26,82,63,148],"75":[24,61,62,26,82,63,148],"94":[24,61,62,26,82,63,148],"120":[24,61,62,26,82,63,148],"138":[24,61,62,26,82,63,148],"151":[24,61,62,26,82,63,148],"183":[24,61,62,26,82,63,148],"192":[24,61,62,26,82,63,148],"212":[24,61,62,26,82,63,148],"256":[24,61,62,26,82,63,148],"284":[24,61,62,26,82,63,148],"300":[24,61,62,26,82,63,148],"313":[24,61,62,26,82,63,148],"335":[24,61,62,26,82,63,148],"357":[24,61,62,26,82,63,148],"389":[24,61,62,26,82,63,148],"412":[24,61,62,26,82,63,148],"420":[24,61,62,26,82,63,148],"422":[24,61,62,26,82,63,148],"469":[24,61,62,26,82,63,148],"479":[24,61,62,26,82,63,148],"482":[24,61,62,26,82,63,148],"503":[24,61,62,26,82,63,148],"515":[24,61,62,26,82,63,148],"518":[24,61,62,26,82,63,148],"520":[24,61,62,26,82,63,148],"539":[24,61,62,26,82,63,148],"548":[24,61,62,26,82,63,148],"550":[24,61,62,26,82,63,148],"558":[24,61,62,26,82,63,148],"573":[24,61,62,26,82,63,148],"588":[24,61,62,26,82,63,148],"590":[24,61,62,26,82,63,148],"611":[24,61,62,26,82,63,148],"626":[24,61,62,26,82,63,148],"627":[24,61,62,26,82,63,148],"636":[24,61,62,26,82,63,148],"653":[24,61,62,26,82,63,148],"679":[24,61,62,26,82,63,148],"680":[24,61,62,26,82,63,148]},"packages/cli/src/metrics/prometheus/instance-ai-metrics.service.ts":{"17":[24,61,62,26],"23":[24,61,62,26],"28":[24,61,62,26],"72":[24,61,62,26],"79":[24,61,62,26]},"packages/cli/src/modules/instance-ai/browser/browser-use-server.ts":{"22":[24,60,61,62,26],"24":[24,60,61,62,26],"25":[24,60,61,62,26],"28":[24,60,61,62,26],"31":[24,60,61,62,26],"43":[24,60,61,62,26],"47":[24,60,61,62,26],"52":[24,60,61,62,26],"53":[24,60,61,62,26],"64":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/browser/composite-local-mcp-server.ts":{"4":[24,61,62,26],"7":[24,61,62,26],"25":[24,61,62,26],"26":[24,61,62,26],"29":[24,61,62,26],"33":[24,61,62,26],"37":[24,61,62,26],"43":[24,61,62,26],"55":[24,61,62,26],"56":[24,61,62,26],"59":[24,61,62,26]},"packages/cli/src/modules/instance-ai/browser/instance-ai-browser-session.service.ts":{"62":[24,60,61,62,26],"74":[24,60,61,62,26],"80":[24,60,61,62,26],"92":[24,60,61,62,26],"101":[24,60,61,62,26],"110":[24,60,61,62,26],"115":[24,60,61,62,26],"119":[24,60,61,62,26],"129":[24,60,61,62,26],"144":[24,60,61,62,26],"153":[24,60,61,62,26],"154":[24,60,61,62,26],"160":[24,60,61,62,26],"161":[24,60,61,62,26],"176":[24,60,61,62,26],"198":[24,60,61,62,26],"211":[24,60,61,62,26],"229":[24,60,61,62,26],"241":[24,60,61,62,26],"256":[24,60,61,62,26],"261":[24,60,61,62,26],"273":[24,60,61,62,26],"284":[24,60,61,62,26],"300":[24,60,61,62,26],"305":[24,60,61,62,26],"309":[24,60,61,62,26],"316":[24,60,61,62,26],"319":[24,60,61,62,26],"324":[24,60,61,62,26],"327":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/eval/thread-credential-allowlist.service.ts":{"10":[24,61,62,26],"13":[24,61,62,26],"17":[24,61,62,26],"21":[24,61,62,26]},"packages/cli/src/modules/instance-ai/event-bus/in-process-event-bus.ts":{"27":[24,60,61,62,26],"42":[24,60,61,62,26],"55":[24,60,61,62,26],"59":[24,60,61,62,26],"75":[24,60,61,62,26],"88":[24,60,61,62,26],"100":[24,60,61,62,26],"108":[24,60,61,62,26],"110":[24,60,61,62,26],"114":[24,60,61,62,26],"118":[24,60,61,62,26],"121":[24,60,61,62,26],"124":[24,60,61,62,26],"127":[24,60,61,62,26],"130":[24,60,61,62,26],"134":[24,60,61,62,26],"137":[24,60,61,62,26],"142":[24,60,61,62,26],"150":[24,60,61,62,26],"157":[24,60,61,62,26],"169":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/filesystem/local-gateway-registry.ts":{"27":[24,61,62,26],"34":[24,61,62,26],"42":[24,61,62,26],"56":[24,61,62,26],"72":[24,61,62,26],"86":[24,61,62,26],"98":[24,61,62,26],"110":[24,61,62,26],"124":[24,61,62,26],"129":[24,61,62,26],"137":[24,61,62,26],"142":[24,61,62,26],"147":[24,61,62,26],"155":[24,61,62,26],"165":[24,61,62,26],"170":[24,61,62,26],"193":[24,61,62,26],"198":[24,61,62,26],"208":[24,61,62,26],"216":[24,61,62,26],"218":[24,61,62,26],"219":[24,61,62,26],"223":[24,61,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-credit.service.ts":{"15":[24,61,62,26],"48":[24,61,62,26],"71":[24,61,62,26],"209":[24,61,62,26],"225":[24,61,62,26],"244":[24,61,62,26],"275":[24,61,62,26],"301":[24,61,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-error-reporter.service.ts":{"18":[24,61,62,26],"25":[24,61,62,26],"29":[24,61,62,26],"33":[24,61,62,26],"37":[24,61,62,26],"54":[24,61,62,26],"68":[24,61,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-gateway.service.ts":{"26":[24,61,62,26],"36":[24,61,62,26],"42":[24,61,62,26],"46":[24,61,62,26],"50":[24,61,62,26],"54":[24,61,62,26],"58":[24,61,62,26],"62":[24,61,62,26],"66":[24,61,62,26],"70":[24,61,62,26],"75":[24,61,62,26],"79":[24,61,62,26],"83":[24,61,62,26],"87":[24,61,62,26],"96":[24,61,62,26],"101":[24,61,62,26],"108":[24,61,62,26],"112":[24,61,62,26],"122":[24,61,62,26],"126":[24,61,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-memory.service.ts":{"33":[24,60,61,62,26],"42":[24,60,61,62,26],"52":[24,60,61,62,26],"65":[24,60,61,62,26],"72":[24,60,61,62,26],"77":[24,60,61,62,26],"84":[24,60,61,62,26],"95":[24,60,61,62,26],"107":[24,60,61,62,26],"114":[24,60,61,62,26],"149":[24,60,61,62,26],"170":[24,60,61,62,26],"174":[24,60,61,62,26],"186":[24,60,61,62,26],"190":[24,60,61,62,26],"201":[24,60,61,62,26],"214":[24,60,61,62,26],"236":[24,60,61,62,26],"254":[24,60,61,62,26],"285":[24,60,61,62,26],"296":[24,60,61,62,26],"306":[24,60,61,62,26],"315":[24,60,61,62,26],"328":[24,60,61,62,26],"332":[24,60,61,62,26],"336":[24,60,61,62,26],"342":[24,60,61,62,26],"359":[24,60,61,62,26],"373":[24,60,61,62,26],"423":[24,60,61,62,26],"441":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-model.service.ts":{"33":[24,60,61,62,26],"40":[24,60,61,62,26],"55":[24,60,61,62,26],"59":[24,60,61,62,26],"85":[24,60,61,62,26],"91":[24,60,61,62,26],"98":[24,60,61,62,26],"120":[24,60,61,62,26],"137":[24,60,61,62,26],"146":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-run-pin-data.ts":{"28":[24,26],"90":[24,26],"94":[24,26],"99":[24,26],"140":[24,26],"164":[24,26],"179":[24,26],"194":[24,26],"231":[24,26]},"packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts":{"116":[24,60,61,25,62,26],"131":[24,60,61,25,62,26],"136":[24,60,61,25,62,26],"141":[24,60,61,25,62,26],"177":[24,60,61,25,62,26],"196":[24,60,61,25,62,26],"239":[24,60,61,25,62,26],"265":[24,60,61,25,62,26],"287":[24,60,61,25,62,26],"293":[24,60,61,25,62,26],"294":[24,60,61,25,62,26],"303":[24,60,61,25,62,26],"309":[24,60,61,25,62,26],"310":[24,60,61,25,62,26],"319":[24,60,61,25,62,26],"344":[24,60,61,25,62,26],"376":[24,60,61,25,62,26],"405":[24,60,61,25,62,26],"410":[24,60,61,25,62,26],"415":[24,60,61,25,62,26],"424":[24,60,61,25,62,26],"429":[24,60,61,25,62,26],"433":[24,60,61,25,62,26],"438":[24,60,61,25,62,26],"454":[24,60,61,25,62,26],"459":[24,60,61,25,62,26],"465":[24,60,61,25,62,26],"534":[24,60,61,25,62,26],"540":[24,60,61,25,62,26],"546":[24,60,61,25,62,26],"554":[24,60,61,25,62,26],"578":[24,60,61,25,62,26],"593":[24,60,61,25,62,26],"597":[24,60,61,25,62,26],"614":[24,60,61,25,62,26],"619":[24,60,61,25,62,26],"648":[24,60,61,25,62,26],"652":[24,60,61,25,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-temporary-workflow.service.ts":{"8":[24,61,62,26],"35":[24,61,62,26],"51":[24,61,62,26],"75":[24,61,62,26],"88":[24,61,62,26],"145":[24,61,62,26],"149":[24,61,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-terminal-outcome.service.ts":{"28":[24,60,61,25,62,26],"32":[24,60,61,25,62,26],"36":[24,60,61,25,62,26],"57":[24,60,61,25,62,26],"66":[24,60,61,25,62,26],"187":[24,60,61,25,62,26],"200":[24,60,61,25,62,26],"231":[24,60,61,25,62,26],"251":[24,60,61,25,62,26],"264":[24,60,61,25,62,26],"302":[24,60,61,25,62,26],"307":[24,60,61,25,62,26],"337":[24,60,61,25,62,26],"361":[24,60,61,25,62,26],"367":[24,60,61,25,62,26],"375":[24,60,61,25,62,26],"381":[24,60,61,25,62,26],"423":[24,60,61,25,62,26],"446":[24,60,61,25,62,26],"479":[24,60,61,25,62,26],"482":[24,60,61,25,62,26],"495":[24,60,61,25,62,26]},"packages/cli/src/modules/instance-ai/instance-ai-test.controller.ts":{"18":[24,60,61,156,62,26],"28":[24,60,61,156,62,26],"40":[24,60,61,156,62,26],"46":[24,60,61,156,62,26],"52":[24,60,61,156,62,26],"63":[24,60,61,156,62,26],"70":[24,60,61,156,62,26],"89":[24,60,61,156,62,26],"116":[24,60,61,156,62,26]},"packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts":{"145":[24,61,25,62,26,82],"196":[24,61,25,62,26,82],"201":[24,61,25,62,26,82],"205":[24,61,25,62,26,82],"211":[24,61,25,62,26,82],"250":[24,61,25,62,26,82],"255":[24,61,25,62,26,82],"303":[24,61,25,62,26,82],"312":[24,61,25,62,26,82],"323":[24,61,25,62,26,82],"338":[24,61,25,62,26,82],"346":[24,61,25,62,26,82],"350":[24,61,25,62,26,82],"353":[24,61,25,62,26,82],"357":[24,61,25,62,26,82],"364":[24,61,25,62,26,82],"370":[24,61,25,62,26,82],"383":[24,61,25,62,26,82],"403":[24,61,25,62,26,82],"408":[24,61,25,62,26,82],"421":[24,61,25,62,26,82],"423":[24,61,25,62,26,82],"435":[24,61,25,62,26,82],"447":[24,61,25,62,26,82],"455":[24,61,25,62,26,82],"463":[24,61,25,62,26,82],"474":[24,61,25,62,26,82],"493":[24,61,25,62,26,82],"518":[24,61,25,62,26,82],"524":[24,61,25,62,26,82],"534":[24,61,25,62,26,82],"542":[24,61,25,62,26,82],"554":[24,61,25,62,26,82],"579":[24,61,25,62,26,82],"614":[24,61,25,62,26,82],"690":[24,61,25,62,26,82],"767":[24,61,25,62,26,82],"780":[24,61,25,62,26,82],"793":[24,61,25,62,26,82],"813":[24,61,25,62,26,82],"825":[24,61,25,62,26,82],"843":[24,61,25,62,26,82],"855":[24,61,25,62,26,82],"873":[24,61,25,62,26,82],"882":[24,61,25,62,26,82],"904":[24,61,25,62,26,82],"945":[24,61,25,62,26,82],"957":[24,61,25,62,26,82],"973":[24,61,25,62,26,82],"1051":[24,61,25,62,26,82],"1070":[24,61,25,62,26,82],"1091":[24,61,25,62,26,82],"1092":[24,61,25,62,26,82],"1144":[24,61,25,62,26,82],"1153":[24,61,25,62,26,82],"1162":[24,61,25,62,26,82],"1186":[24,61,25,62,26,82],"1191":[24,61,25,62,26,82],"1206":[24,61,25,62,26,82],"1231":[24,61,25,62,26,82],"1244":[24,61,25,62,26,82],"1253":[24,61,25,62,26,82],"1254":[24,61,25,62,26,82],"1269":[24,61,25,62,26,82],"1272":[24,61,25,62,26,82],"1288":[24,61,25,62,26,82],"1296":[24,61,25,62,26,82],"1305":[24,61,25,62,26,82],"1309":[24,61,25,62,26,82],"1336":[24,61,25,62,26,82],"1352":[24,61,25,62,26,82],"1366":[24,61,25,62,26,82],"1378":[24,61,25,62,26,82],"1423":[24,61,25,62,26,82],"1463":[24,61,25,62,26,82],"1482":[24,61,25,62,26,82],"1496":[24,61,25,62,26,82],"1507":[24,61,25,62,26,82],"1541":[24,61,25,62,26,82],"1556":[24,61,25,62,26,82],"1576":[24,61,25,62,26,82],"1577":[24,61,25,62,26,82],"1581":[24,61,25,62,26,82],"1583":[24,61,25,62,26,82],"1600":[24,61,25,62,26,82],"1608":[24,61,25,62,26,82],"1614":[24,61,25,62,26,82],"1632":[24,61,25,62,26,82],"1642":[24,61,25,62,26,82],"1660":[24,61,25,62,26,82],"1667":[24,61,25,62,26,82],"1671":[24,61,25,62,26,82],"1678":[24,61,25,62,26,82],"1687":[24,61,25,62,26,82],"1693":[24,61,25,62,26,82],"1703":[24,61,25,62,26,82],"1712":[24,61,25,62,26,82],"1720":[24,61,25,62,26,82],"1729":[24,61,25,62,26,82],"1745":[24,61,25,62,26,82],"1755":[24,61,25,62,26,82],"1767":[24,61,25,62,26,82],"1780":[24,61,25,62,26,82],"1801":[24,61,25,62,26,82],"1822":[24,61,25,62,26,82],"1857":[24,61,25,62,26,82],"1874":[24,61,25,62,26,82],"1893":[24,61,25,62,26,82],"1925":[24,61,25,62,26,82],"1953":[24,61,25,62,26,82],"1972":[24,61,25,62,26,82],"1987":[24,61,25,62,26,82],"1999":[24,61,25,62,26,82],"2016":[24,61,25,62,26,82],"2026":[24,61,25,62,26,82],"2030":[24,61,25,62,26,82],"2033":[24,61,25,62,26,82],"2036":[24,61,25,62,26,82],"2042":[24,61,25,62,26,82],"2049":[24,61,25,62,26,82],"2053":[24,61,25,62,26,82],"2060":[24,61,25,62,26,82],"2068":[24,61,25,62,26,82],"2078":[24,61,25,62,26,82],"2081":[24,61,25,62,26,82],"2085":[24,61,25,62,26,82],"2088":[24,61,25,62,26,82],"2140":[24,61,25,62,26,82],"2144":[24,61,25,62,26,82],"2152":[24,61,25,62,26,82],"2167":[24,61,25,62,26,82],"2176":[24,61,25,62,26,82],"2179":[24,61,25,62,26,82],"2184":[24,61,25,62,26,82],"2199":[24,61,25,62,26,82],"2204":[24,61,25,62,26,82],"2219":[24,61,25,62,26,82],"2225":[24,61,25,62,26,82],"2271":[24,61,25,62,26,82],"2293":[24,61,25,62,26,82],"2361":[24,61,25,62,26,82],"2362":[24,61,25,62,26,82],"2396":[24,61,25,62,26,82],"2401":[24,61,25,62,26,82],"2412":[24,61,25,62,26,82],"2416":[24,61,25,62,26,82],"2422":[24,61,25,62,26,82],"2424":[24,61,25,62,26,82],"2433":[24,61,25,62,26,82],"2438":[24,61,25,62,26,82],"2445":[24,61,25,62,26,82],"2463":[24,61,25,62,26,82],"2475":[24,61,25,62,26,82],"2491":[24,61,25,62,26,82],"2505":[24,61,25,62,26,82],"2526":[24,61,25,62,26,82],"2531":[24,61,25,62,26,82],"2534":[24,61,25,62,26,82],"2543":[24,61,25,62,26,82],"2573":[24,61,25,62,26,82],"2652":[24,61,25,62,26,82],"2696":[24,61,25,62,26,82],"2726":[24,61,25,62,26,82],"2740":[24,61,25,62,26,82],"2748":[24,61,25,62,26,82],"2756":[24,61,25,62,26,82],"2763":[24,61,25,62,26,82],"2788":[24,61,25,62,26,82],"2826":[24,61,25,62,26,82],"2827":[24,61,25,62,26,82],"2871":[24,61,25,62,26,82],"2908":[24,61,25,62,26,82],"2939":[24,61,25,62,26,82],"2980":[24,61,25,62,26,82],"2994":[24,61,25,62,26,82],"3015":[24,61,25,62,26,82],"3017":[24,61,25,62,26,82],"3022":[24,61,25,62,26,82],"3027":[24,61,25,62,26,82],"3042":[24,61,25,62,26,82],"3070":[24,61,25,62,26,82],"3103":[24,61,25,62,26,82],"3107":[24,61,25,62,26,82],"3109":[24,61,25,62,26,82],"3155":[24,61,25,62,26,82],"3161":[24,61,25,62,26,82],"3170":[24,61,25,62,26,82],"3171":[24,61,25,62,26,82],"3176":[24,61,25,62,26,82],"3195":[24,61,25,62,26,82],"3208":[24,61,25,62,26,82],"3231":[24,61,25,62,26,82],"3245":[24,61,25,62,26,82]},"packages/cli/src/modules/instance-ai/instance-ai.controller.ts":{"70":[24,60,61,25,62,26],"80":[24,60,61,25,62,26],"88":[24,60,61,25,62,26],"100":[24,60,61,25,62,26],"122":[24,60,61,25,62,26],"128":[24,60,61,25,62,26],"138":[24,60,61,25,62,26],"148":[24,60,61,25,62,26],"165":[24,60,61,25,62,26],"172":[24,60,61,25,62,26],"202":[24,60,61,25,62,26],"234":[24,60,61,25,62,26],"250":[24,60,61,25,62,26],"261":[24,60,61,25,62,26],"267":[24,60,61,25,62,26],"277":[24,60,61,25,62,26],"402":[24,60,61,25,62,26],"410":[24,60,61,25,62,26],"433":[24,60,61,25,62,26],"442":[24,60,61,25,62,26],"456":[24,60,61,25,62,26],"462":[24,60,61,25,62,26],"476":[24,60,61,25,62,26],"493":[24,60,61,25,62,26],"502":[24,60,61,25,62,26],"508":[24,60,61,25,62,26],"545":[24,60,61,25,62,26],"551":[24,60,61,25,62,26],"565":[24,60,61,25,62,26],"571":[24,60,61,25,62,26],"577":[24,60,61,25,62,26],"584":[24,60,61,25,62,26],"617":[24,60,61,25,62,26],"631":[24,60,61,25,62,26],"648":[24,60,61,25,62,26],"691":[24,60,61,25,62,26],"704":[24,60,61,25,62,26],"717":[24,60,61,25,62,26],"736":[24,60,61,25,62,26],"754":[24,60,61,25,62,26],"774":[24,60,61,25,62,26],"818":[24,60,61,25,62,26],"827":[24,60,61,25,62,26],"840":[24,60,61,25,62,26],"863":[24,60,61,25,62,26],"867":[24,60,61,25,62,26],"873":[24,60,61,25,62,26],"879":[24,60,61,25,62,26],"885":[24,60,61,25,62,26],"905":[24,60,61,25,62,26],"936":[24,60,61,25,62,26],"953":[24,60,61,25,62,26],"974":[24,60,61,25,62,26],"987":[24,60,61,25,62,26],"1000":[24,60,61,25,62,26],"1017":[24,60,61,25,62,26],"1025":[24,60,61,25,62,26],"1033":[24,60,61,25,62,26],"1041":[24,60,61,25,62,26],"1051":[24,60,61,25,62,26],"1066":[24,60,61,25,62,26],"1077":[24,60,61,25,62,26],"1089":[24,60,61,25,62,26],"1114":[24,60,61,25,62,26],"1127":[24,60,61,25,62,26]},"packages/cli/src/modules/instance-ai/instance-ai.service.ts":{"173":[24,60,61,25,156,62,26],"185":[24,60,61,25,156,62,26],"187":[24,60,61,25,156,62,26],"207":[24,60,61,25,156,62,26],"230":[24,60,61,25,156,62,26],"254":[24,60,61,25,156,62,26],"265":[24,60,61,25,156,62,26],"269":[24,60,61,25,156,62,26],"289":[24,60,61,25,156,62,26],"293":[24,60,61,25,156,62,26],"318":[24,60,61,25,156,62,26],"359":[24,60,61,25,156,62,26],"363":[24,60,61,25,156,62,26],"451":[24,60,61,25,156,62,26],"487":[24,60,61,25,156,62,26],"522":[24,60,61,25,156,62,26],"525":[24,60,61,25,156,62,26],"554":[24,60,61,25,156,62,26],"557":[24,60,61,25,156,62,26],"575":[24,60,61,25,156,62,26],"578":[24,60,61,25,156,62,26],"589":[24,60,61,25,156,62,26],"599":[24,60,61,25,156,62,26],"612":[24,60,61,25,156,62,26],"619":[24,60,61,25,156,62,26],"632":[24,60,61,25,156,62,26],"642":[24,60,61,25,156,62,26],"658":[24,60,61,25,156,62,26],"675":[24,60,61,25,156,62,26],"680":[24,60,61,25,156,62,26],"684":[24,60,61,25,156,62,26],"688":[24,60,61,25,156,62,26],"692":[24,60,61,25,156,62,26],"701":[24,60,61,25,156,62,26],"702":[24,60,61,25,156,62,26],"733":[24,60,61,25,156,62,26],"738":[24,60,61,25,156,62,26],"748":[24,60,61,25,156,62,26],"752":[24,60,61,25,156,62,26],"780":[24,60,61,25,156,62,26],"808":[24,60,61,25,156,62,26],"812":[24,60,61,25,156,62,26],"813":[24,60,61,25,156,62,26],"823":[24,60,61,25,156,62,26],"827":[24,60,61,25,156,62,26],"836":[24,60,61,25,156,62,26],"878":[24,60,61,25,156,62,26],"889":[24,60,61,25,156,62,26],"897":[24,60,61,25,156,62,26],"902":[24,60,61,25,156,62,26],"906":[24,60,61,25,156,62,26],"921":[24,60,61,25,156,62,26],"964":[24,60,61,25,156,62,26],"973":[24,60,61,25,156,62,26],"988":[24,60,61,25,156,62,26],"1015":[24,60,61,25,156,62,26],"1019":[24,60,61,25,156,62,26],"1032":[24,60,61,25,156,62,26],"1047":[24,60,61,25,156,62,26],"1061":[24,60,61,25,156,62,26],"1068":[24,60,61,25,156,62,26],"1072":[24,60,61,25,156,62,26],"1076":[24,60,61,25,156,62,26],"1080":[24,60,61,25,156,62,26],"1088":[24,60,61,25,156,62,26],"1107":[24,60,61,25,156,62,26],"1115":[24,60,61,25,156,62,26],"1187":[24,60,61,25,156,62,26],"1188":[24,60,61,25,156,62,26],"1189":[24,60,61,25,156,62,26],"1191":[24,60,61,25,156,62,26],"1203":[24,60,61,25,156,62,26],"1238":[24,60,61,25,156,62,26],"1246":[24,60,61,25,156,62,26],"1250":[24,60,61,25,156,62,26],"1254":[24,60,61,25,156,62,26],"1265":[24,60,61,25,156,62,26],"1269":[24,60,61,25,156,62,26],"1277":[24,60,61,25,156,62,26],"1322":[24,60,61,25,156,62,26],"1419":[24,60,61,25,156,62,26],"1426":[24,60,61,25,156,62,26],"1432":[24,60,61,25,156,62,26],"1434":[24,60,61,25,156,62,26],"1450":[24,60,61,25,156,62,26],"1451":[24,60,61,25,156,62,26],"1462":[24,60,61,25,156,62,26],"1467":[24,60,61,25,156,62,26],"1480":[24,60,61,25,156,62,26],"1484":[24,60,61,25,156,62,26],"1488":[24,60,61,25,156,62,26],"1489":[24,60,61,25,156,62,26],"1492":[24,60,61,25,156,62,26],"1509":[24,60,61,25,156,62,26],"1539":[24,60,61,25,156,62,26],"1562":[24,60,61,25,156,62,26],"1565":[24,60,61,25,156,62,26],"1579":[24,60,61,25,156,62,26],"1601":[24,60,61,25,156,62,26],"1610":[24,60,61,25,156,62,26],"1615":[24,60,61,25,156,62,26],"1618":[24,60,61,25,156,62,26],"1623":[24,60,61,25,156,62,26],"1628":[24,60,61,25,156,62,26],"1632":[24,60,61,25,156,62,26],"1633":[24,60,61,25,156,62,26],"1635":[24,60,61,25,156,62,26],"1640":[24,60,61,25,156,62,26],"1673":[24,60,61,25,156,62,26],"1683":[24,60,61,25,156,62,26],"1706":[24,60,61,25,156,62,26],"1707":[24,60,61,25,156,62,26],"1738":[24,60,61,25,156,62,26],"1755":[24,60,61,25,156,62,26],"1768":[24,60,61,25,156,62,26],"1775":[24,60,61,25,156,62,26],"1793":[24,60,61,25,156,62,26],"1815":[24,60,61,25,156,62,26],"1885":[24,60,61,25,156,62,26],"1902":[24,60,61,25,156,62,26],"1985":[24,60,61,25,156,62,26],"1992":[24,60,61,25,156,62,26],"1995":[24,60,61,25,156,62,26],"2002":[24,60,61,25,156,62,26],"2006":[24,60,61,25,156,62,26],"2020":[24,60,61,25,156,62,26],"2026":[24,60,61,25,156,62,26],"2041":[24,60,61,25,156,62,26],"2058":[24,60,61,25,156,62,26],"2071":[24,60,61,25,156,62,26],"2073":[24,60,61,25,156,62,26],"2094":[24,60,61,25,156,62,26],"2099":[24,60,61,25,156,62,26],"2100":[24,60,61,25,156,62,26],"2102":[24,60,61,25,156,62,26],"2103":[24,60,61,25,156,62,26],"2105":[24,60,61,25,156,62,26],"2107":[24,60,61,25,156,62,26],"2131":[24,60,61,25,156,62,26],"2155":[24,60,61,25,156,62,26],"2184":[24,60,61,25,156,62,26],"2196":[24,60,61,25,156,62,26],"2208":[24,60,61,25,156,62,26],"2219":[24,60,61,25,156,62,26],"2270":[24,60,61,25,156,62,26],"2302":[24,60,61,25,156,62,26],"2356":[24,60,61,25,156,62,26],"2366":[24,60,61,25,156,62,26],"2375":[24,60,61,25,156,62,26],"2403":[24,60,61,25,156,62,26],"2407":[24,60,61,25,156,62,26],"2447":[24,60,61,25,156,62,26],"2504":[24,60,61,25,156,62,26],"2508":[24,60,61,25,156,62,26],"2518":[24,60,61,25,156,62,26],"2531":[24,60,61,25,156,62,26],"2544":[24,60,61,25,156,62,26],"2556":[24,60,61,25,156,62,26],"2609":[24,60,61,25,156,62,26],"2612":[24,60,61,25,156,62,26],"2617":[24,60,61,25,156,62,26],"2636":[24,60,61,25,156,62,26],"2638":[24,60,61,25,156,62,26],"2642":[24,60,61,25,156,62,26],"2644":[24,60,61,25,156,62,26],"2648":[24,60,61,25,156,62,26],"2650":[24,60,61,25,156,62,26],"2664":[24,60,61,25,156,62,26],"2666":[24,60,61,25,156,62,26],"2677":[24,60,61,25,156,62,26],"2692":[24,60,61,25,156,62,26],"2703":[24,60,61,25,156,62,26],"2722":[24,60,61,25,156,62,26],"2736":[24,60,61,25,156,62,26],"2738":[24,60,61,25,156,62,26],"2746":[24,60,61,25,156,62,26],"2763":[24,60,61,25,156,62,26],"2765":[24,60,61,25,156,62,26],"2767":[24,60,61,25,156,62,26],"2774":[24,60,61,25,156,62,26],"2791":[24,60,61,25,156,62,26],"2836":[24,60,61,25,156,62,26],"2870":[24,60,61,25,156,62,26],"2890":[24,60,61,25,156,62,26],"2893":[24,60,61,25,156,62,26],"2913":[24,60,61,25,156,62,26],"3049":[24,60,61,25,156,62,26],"3072":[24,60,61,25,156,62,26],"3091":[24,60,61,25,156,62,26],"3094":[24,60,61,25,156,62,26],"3125":[24,60,61,25,156,62,26],"3128":[24,60,61,25,156,62,26],"3173":[24,60,61,25,156,62,26],"3231":[24,60,61,25,156,62,26],"3245":[24,60,61,25,156,62,26],"3253":[24,60,61,25,156,62,26],"3265":[24,60,61,25,156,62,26],"3646":[24,60,61,25,156,62,26],"3662":[24,60,61,25,156,62,26],"3692":[24,60,61,25,156,62,26],"3701":[24,60,61,25,156,62,26],"3743":[24,60,61,25,156,62,26],"3755":[24,60,61,25,156,62,26],"3772":[24,60,61,25,156,62,26],"3780":[24,60,61,25,156,62,26],"3798":[24,60,61,25,156,62,26],"3826":[24,60,61,25,156,62,26],"3834":[24,60,61,25,156,62,26],"3866":[24,60,61,25,156,62,26],"3941":[24,60,61,25,156,62,26],"3960":[24,60,61,25,156,62,26],"3966":[24,60,61,25,156,62,26],"3999":[24,60,61,25,156,62,26],"4046":[24,60,61,25,156,62,26],"4115":[24,60,61,25,156,62,26],"4123":[24,60,61,25,156,62,26],"4134":[24,60,61,25,156,62,26],"4167":[24,60,61,25,156,62,26],"4312":[24,60,61,25,156,62,26],"4366":[24,60,61,25,156,62,26],"4369":[24,60,61,25,156,62,26],"4378":[24,60,61,25,156,62,26],"4391":[24,60,61,25,156,62,26],"4750":[24,60,61,25,156,62,26],"4770":[24,60,61,25,156,62,26],"4795":[24,60,61,25,156,62,26],"4809":[24,60,61,25,156,62,26],"4836":[24,60,61,25,156,62,26],"4994":[24,60,61,25,156,62,26],"4999":[24,60,61,25,156,62,26],"5005":[24,60,61,25,156,62,26],"5053":[24,60,61,25,156,62,26],"5105":[24,60,61,25,156,62,26],"5138":[24,60,61,25,156,62,26],"5168":[24,60,61,25,156,62,26],"5190":[24,60,61,25,156,62,26],"5249":[24,60,61,25,156,62,26],"5276":[24,60,61,25,156,62,26],"5298":[24,60,61,25,156,62,26],"5301":[24,60,61,25,156,62,26],"5310":[24,60,61,25,156,62,26],"5366":[24,60,61,25,156,62,26],"5369":[24,60,61,25,156,62,26],"5375":[24,60,61,25,156,62,26]},"packages/cli/src/modules/instance-ai/internal-messages.ts":{"48":[24,61,62,26],"57":[24,61,62,26],"75":[24,61,62,26]},"packages/cli/src/modules/instance-ai/liveness/instance-ai-liveness.service.ts":{"17":[24,60,61,62,26],"106":[24,60,61,62,26],"108":[24,60,61,62,26],"112":[24,60,61,62,26],"115":[24,60,61,62,26],"120":[24,60,61,62,26],"129":[24,60,61,62,26],"133":[24,60,61,62,26],"137":[24,60,61,62,26],"143":[24,60,61,62,26],"152":[24,60,61,62,26],"156":[24,60,61,62,26],"197":[24,60,61,62,26],"216":[24,60,61,62,26],"226":[24,60,61,62,26],"235":[24,60,61,62,26],"239":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts":{"54":[24,61,62,26],"59":[24,61,62,26],"63":[24,61,62,26],"68":[24,61,62,26],"72":[24,61,62,26],"77":[24,61,62,26],"88":[24,61,62,26],"100":[24,61,62,26],"105":[24,61,62,26],"108":[24,61,62,26],"127":[24,61,62,26],"132":[24,61,62,26],"144":[24,61,62,26],"159":[24,61,62,26],"163":[24,61,62,26],"223":[24,61,62,26],"236":[24,61,62,26],"254":[24,61,62,26],"302":[24,61,62,26],"304":[24,61,62,26],"314":[24,61,62,26],"320":[24,61,62,26],"321":[24,61,62,26],"323":[24,61,62,26],"396":[24,61,62,26],"422":[24,61,62,26],"440":[24,61,62,26],"454":[24,61,62,26],"507":[24,61,62,26],"528":[24,61,62,26],"559":[24,61,62,26]},"packages/cli/src/modules/instance-ai/node-definition-resolver.ts":{"15":[24,61,62,26],"16":[24,61,62,26],"19":[24,61,62,26],"46":[24,61,62,26],"72":[24,61,62,26],"91":[24,61,62,26],"119":[24,61,62,26],"129":[24,61,62,26],"134":[24,61,62,26],"135":[24,61,62,26],"172":[24,61,62,26],"173":[24,61,62,26],"181":[24,61,62,26],"192":[24,61,62,26],"196":[24,61,62,26],"219":[24,61,62,26],"247":[24,61,62,26],"248":[24,61,62,26],"250":[24,61,62,26],"251":[24,61,62,26],"293":[24,61,62,26],"316":[24,61,62,26],"320":[24,61,62,26],"324":[24,61,62,26],"325":[24,61,62,26],"335":[24,61,62,26],"341":[24,61,62,26],"373":[24,61,62,26],"396":[24,61,62,26]},"packages/cli/src/modules/instance-ai/output-redaction-config.ts":{"12":[24,61,62,26],"17":[24,61,62,26],"18":[24,61,62,26]},"packages/cli/src/modules/instance-ai/planned-task-action-runner.ts":{"94":[24,61,25,62,26],"96":[24,61,25,62,26],"115":[24,61,25,62,26],"131":[24,61,25,62,26],"157":[24,61,25,62,26],"169":[24,61,25,62,26],"194":[24,61,25,62,26],"212":[24,61,25,62,26],"234":[24,61,25,62,26],"252":[24,61,25,62,26]},"packages/cli/src/modules/instance-ai/repositories/instance-ai-pending-confirmation.repository.ts":{"8":[24,61,25,62,26],"21":[24,61,25,62,26],"25":[24,61,25,62,26],"48":[24,61,25,62,26],"53":[24,61,25,62,26],"58":[24,61,25,62,26],"63":[24,61,25,62,26],"76":[24,61,25,62,26],"81":[24,61,25,62,26],"87":[24,61,25,62,26],"96":[24,61,25,62,26]},"packages/cli/src/modules/instance-ai/repositories/instance-ai-thread-grant.repository.ts":{"8":[24,61,62,26],"16":[24,61,62,26],"25":[24,61,62,26],"30":[24,61,62,26]},"packages/cli/src/modules/instance-ai/run-trace-metadata.ts":{"33":[24,61,62,26],"40":[24,61,62,26],"48":[24,61,62,26],"77":[24,61,62,26],"89":[24,61,62,26]},"packages/cli/src/modules/instance-ai/sandbox/instance-ai-sandbox.service.ts":{"35":[24,61,62,26],"43":[24,61,62,26],"51":[24,61,62,26],"55":[24,61,62,26],"68":[24,61,62,26],"81":[24,61,62,26],"158":[24,61,62,26],"160":[24,61,62,26],"164":[24,61,62,26],"168":[24,61,62,26],"225":[24,61,62,26],"238":[24,61,62,26],"265":[24,61,62,26],"292":[24,61,62,26],"302":[24,61,62,26],"309":[24,61,62,26],"312":[24,61,62,26],"319":[24,61,62,26],"356":[24,61,62,26],"367":[24,61,62,26],"383":[24,61,62,26],"387":[24,61,62,26],"391":[24,61,62,26],"395":[24,61,62,26],"401":[24,61,62,26],"409":[24,61,62,26],"416":[24,61,62,26],"428":[24,61,62,26]},"packages/cli/src/modules/instance-ai/sandbox-provider.ts":{"6":[24,61,62,26],"14":[24,61,62,26]},"packages/cli/src/modules/instance-ai/storage/db-snapshot-storage.ts":{"14":[24,60,61,62,26],"37":[24,60,61,62,26],"39":[24,60,61,62,26],"76":[24,60,61,62,26],"99":[24,60,61,62,26],"165":[24,60,61,62,26],"175":[24,60,61,62,26],"180":[24,60,61,62,26],"199":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/storage/typeorm-agent-checkpoint-store.ts":{"13":[24,61,25,62,26],"15":[24,61,25,62,26],"45":[24,61,25,62,26],"54":[24,61,25,62,26],"62":[24,61,25,62,26],"78":[24,61,25,62,26],"87":[24,61,25,62,26],"101":[24,61,25,62,26],"113":[24,61,25,62,26],"120":[24,61,25,62,26]},"packages/cli/src/modules/instance-ai/storage/typeorm-agent-memory.ts":{"45":[24,60,61,62,26],"53":[24,60,61,62,26],"63":[24,60,61,62,26],"74":[24,60,61,62,26],"78":[24,60,61,62,26],"84":[24,60,61,62,26],"89":[24,60,61,62,26],"109":[24,60,61,62,26],"117":[24,60,61,62,26],"124":[24,60,61,62,26],"129":[24,60,61,62,26],"135":[24,60,61,62,26],"141":[24,60,61,62,26],"157":[24,60,61,62,26],"164":[24,60,61,62,26],"185":[24,60,61,62,26],"200":[24,60,61,62,26],"206":[24,60,61,62,26],"214":[24,60,61,62,26],"219":[24,60,61,62,26],"244":[24,60,61,62,26],"245":[24,60,61,62,26],"273":[24,60,61,62,26],"291":[24,60,61,62,26],"295":[24,60,61,62,26],"322":[24,60,61,62,26],"326":[24,60,61,62,26],"340":[24,60,61,62,26],"344":[24,60,61,62,26],"349":[24,60,61,62,26],"355":[24,60,61,62,26],"356":[24,60,61,62,26],"360":[24,60,61,62,26],"373":[24,60,61,62,26],"382":[24,60,61,62,26],"389":[24,60,61,62,26],"409":[24,60,61,62,26],"422":[24,60,61,62,26],"428":[24,60,61,62,26],"443":[24,60,61,62,26],"450":[24,60,61,62,26],"457":[24,60,61,62,26],"474":[24,60,61,62,26],"479":[24,60,61,62,26],"488":[24,60,61,62,26],"509":[24,60,61,62,26],"515":[24,60,61,62,26],"521":[24,60,61,62,26],"525":[24,60,61,62,26],"532":[24,60,61,62,26],"536":[24,60,61,62,26],"540":[24,60,61,62,26],"547":[24,60,61,62,26],"551":[24,60,61,62,26],"555":[24,60,61,62,26],"567":[24,60,61,62,26],"571":[24,60,61,62,26],"576":[24,60,61,62,26],"588":[24,60,61,62,26]},"packages/cli/src/modules/instance-ai/storage/typeorm-observation-log-store.ts":{"30":[24,61,62,26],"47":[24,61,62,26],"55":[24,61,62,26],"60":[24,61,62,26],"74":[24,61,62,26],"77":[24,61,62,26],"83":[24,61,62,26],"98":[24,61,62,26],"101":[24,61,62,26],"125":[24,61,62,26],"132":[24,61,62,26],"138":[24,61,62,26],"144":[24,61,62,26],"148":[24,61,62,26],"160":[24,61,62,26],"166":[24,61,62,26],"205":[24,61,62,26],"206":[24,61,62,26],"211":[24,61,62,26],"224":[24,61,62,26],"239":[24,61,62,26],"290":[24,61,62,26]},"packages/cli/src/modules/instance-ai/suspended-thread-persistence.service.ts":{"7":[24,61,25,62,26],"50":[24,61,25,62,26],"56":[24,61,25,62,26],"71":[24,61,25,62,26],"82":[24,61,25,62,26],"118":[24,61,25,62,26],"129":[24,61,25,62,26]},"packages/cli/src/modules/instance-ai/trace-replay-state.ts":{"11":[24,61,156,62,26],"18":[24,61,156,62,26],"22":[24,61,156,62,26],"27":[24,61,156,62,26],"31":[24,61,156,62,26],"62":[24,61,156,62,26],"80":[24,61,156,62,26],"84":[24,61,156,62,26],"89":[24,61,156,62,26],"93":[24,61,156,62,26],"97":[24,61,156,62,26],"117":[24,61,156,62,26],"127":[24,61,156,62,26],"153":[24,61,156,62,26],"158":[24,61,156,62,26]},"packages/cli/src/modules/instance-ai/tracing/instance-ai-tracing.service.ts":{"34":[24,60,61,25,156,62,26],"111":[24,60,61,25,156,62,26],"119":[24,60,61,25,156,62,26],"145":[24,60,61,25,156,62,26],"149":[24,60,61,25,156,62,26],"153":[24,60,61,25,156,62,26],"154":[24,60,61,25,156,62,26],"157":[24,60,61,25,156,62,26],"161":[24,60,61,25,156,62,26],"170":[24,60,61,25,156,62,26],"172":[24,60,61,25,156,62,26],"175":[24,60,61,25,156,62,26],"220":[24,60,61,25,156,62,26],"224":[24,60,61,25,156,62,26],"264":[24,60,61,25,156,62,26],"270":[24,60,61,25,156,62,26],"292":[24,60,61,25,156,62,26],"307":[24,60,61,25,156,62,26],"324":[24,60,61,25,156,62,26],"333":[24,60,61,25,156,62,26],"340":[24,60,61,25,156,62,26],"391":[24,60,61,25,156,62,26],"427":[24,60,61,25,156,62,26],"447":[24,60,61,25,156,62,26],"468":[24,60,61,25,156,62,26],"473":[24,60,61,25,156,62,26],"516":[24,60,61,25,156,62,26],"520":[24,60,61,25,156,62,26],"524":[24,60,61,25,156,62,26],"528":[24,60,61,25,156,62,26]},"packages/cli/src/modules/instance-ai/trigger-run-data.ts":{"10":[24],"14":[24]},"packages/cli/src/modules/instance-ai/workflow-verification-obligation-service.ts":{"19":[24,25,26],"27":[24,25,26],"29":[24,25,26],"33":[24,25,26],"39":[24,25,26],"49":[24,25,26],"57":[24,25,26],"71":[24,25,26],"82":[24,25,26]},"packages/cli/src/modules/instance-ai/workflow-verification-task-projector.ts":{"43":[24,61,25,62,26],"48":[24,61,25,62,26],"52":[24,61,25,62,26],"60":[24,61,25,62,26],"65":[24,61,25,62,26],"85":[24,61,25,62,26],"100":[24,61,25,62,26],"115":[24,61,25,62,26],"127":[24,61,25,62,26],"145":[24,61,25,62,26],"161":[24,61,25,62,26],"170":[24,61,25,62,26],"178":[24,61,25,62,26],"188":[24,61,25,62,26],"197":[24,61,25,62,26],"214":[24,61,25,62,26],"222":[24,61,25,62,26],"240":[24,61,25,62,26],"281":[24,61,25,62,26],"289":[24,61,25,62,26],"314":[24,61,25,62,26],"336":[24,61,25,62,26],"382":[24,61,25,62,26],"392":[24,61,25,62,26],"398":[24,61,25,62,26]},"packages/cli/src/node-catalog/node-catalog.service.ts":{"24":[8,24,61,62,26,82,28,63,148],"25":[8,24,61,62,26,82,28,63,148],"27":[8,24,61,62,26,82,28,63,148],"33":[8,24,61,62,26,82,28,63,148],"36":[8,24,61,62,26,82,28,63,148],"44":[8,24,61,62,26,82,28,63,148],"82":[8,24,61,62,26,82,28,63,148],"85":[8,24,61,62,26,82,28,63,148],"142":[8,24,61,62,26,82,28,63,148],"146":[8,24,61,62,26,82,28,63,148],"149":[8,24,61,62,26,82,28,63,148],"154":[8,24,61,62,26,82,28,63,148],"161":[8,24,61,62,26,82,28,63,148],"175":[8,24,61,62,26,82,28,63,148],"193":[8,24,61,62,26,82,28,63,148],"195":[8,24,61,62,26,82,28,63,148],"207":[8,24,61,62,26,82,28,63,148],"209":[8,24,61,62,26,82,28,63,148],"242":[8,24,61,62,26,82,28,63,148],"256":[8,24,61,62,26,82,28,63,148],"274":[8,24,61,62,26,82,28,63,148],"279":[8,24,61,62,26,82,28,63,148],"285":[8,24,61,62,26,82,28,63,148],"286":[8,24,61,62,26,82,28,63,148],"287":[8,24,61,62,26,82,28,63,148],"304":[8,24,61,62,26,82,28,63,148],"307":[8,24,61,62,26,82,28,63,148],"323":[8,24,61,62,26,82,28,63,148],"335":[8,24,61,62,26,82,28,63,148],"347":[8,24,61,62,26,82,28,63,148],"350":[8,24,61,62,26,82,28,63,148],"378":[8,24,61,62,26,82,28,63,148],"424":[8,24,61,62,26,82,28,63,148],"430":[8,24,61,62,26,82,28,63,148],"433":[8,24,61,62,26,82,28,63,148],"438":[8,24,61,62,26,82,28,63,148],"443":[8,24,61,62,26,82,28,63,148],"447":[8,24,61,62,26,82,28,63,148]},"packages/cli/src/telemetry/index.ts":{"112":[24,60,61,62,26,63,148],"124":[24,60,61,62,26,63,148],"169":[24,60,61,62,26,63,148],"181":[24,60,61,62,26,63,148],"199":[24,60,61,62,26,63,148],"208":[24,60,61,62,26,63,148],"210":[24,60,61,62,26,63,148],"217":[24,60,61,62,26,63,148],"261":[24,60,61,62,26,63,148],"262":[24,60,61,62,26,63,148],"286":[24,60,61,62,26,63,148],"290":[24,60,61,62,26,63,148],"291":[24,60,61,62,26,63,148],"311":[24,60,61,62,26,63,148],"320":[24,60,61,62,26,63,148],"325":[24,60,61,62,26,63,148],"326":[24,60,61,62,26,63,148],"328":[24,60,61,62,26,63,148],"331":[24,60,61,62,26,63,148],"332":[24,60,61,62,26,63,148],"352":[24,60,61,62,26,63,148],"399":[24,60,61,62,26,63,148],"412":[24,60,61,62,26,63,148],"438":[24,60,61,62,26,63,148],"466":[24,60,61,62,26,63,148],"490":[24,60,61,62,26,63,148],"497":[24,60,61,62,26,63,148],"527":[24,60,61,62,26,63,148],"552":[24,60,61,62,26,63,148],"594":[24,60,61,62,26,63,148],"598":[24,60,61,62,26,63,148],"602":[24,60,61,62,26,63,148],"606":[24,60,61,62,26,63,148]},"packages/cli/src/utils/ai-proxy-fetch.ts":{"15":[8,24,61,62,26],"34":[8,24,61,62,26],"52":[8,24,61,62,26]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/character-text-splitter.svg":{"11":[0,7]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/default-data-loader.svg":{"11":[0,7,129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/question-and-answer-chain.svg":{"11":[7,129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/simple-vector-store.svg":{"11":[0,7,29,129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/vector-store-retriever.svg":{"11":[7,129]},"packages/localhost-37719/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[7]},"packages/localhost-37719/assets/chunk-CC9Q-vWm.js":{"8":[7],"9":[7],"10":[7],"19":[7],"23":[7],"29":[7],"33":[7],"34":[7]},"packages/@n8n/ai-workflow-builder.ee/src/agents/planner.agent.ts":{"62":[8],"64":[8],"109":[8],"136":[8]},"packages/@n8n/ai-workflow-builder.ee/src/agents/responder.agent.ts":{"78":[8],"104":[8],"108":[8],"112":[8],"121":[8],"186":[8],"231":[8],"269":[8]},"packages/@n8n/ai-workflow-builder.ee/src/agents/supervisor.agent.ts":{"23":[8],"66":[8],"74":[8],"122":[8]},"packages/@n8n/ai-workflow-builder.ee/src/ai-workflow-builder-agent.service.ts":{"39":[8],"64":[8],"69":[8],"90":[8],"106":[8],"163":[8],"171":[8],"175":[8],"184":[8],"190":[8],"200":[8],"237":[8],"248":[8],"271":[8],"330":[8],"367":[8],"369":[8],"376":[8],"378":[8],"383":[8],"384":[8],"389":[8],"404":[8],"427":[8],"433":[8],"451":[8],"470":[8],"486":[8],"505":[8],"545":[8]},"packages/@n8n/ai-workflow-builder.ee/src/chains/workflow-name.ts":{"7":[8]},"packages/@n8n/ai-workflow-builder.ee/src/index.ts":{"7":[8,63,148],"43":[8,63,148]},"packages/@n8n/ai-workflow-builder.ee/src/llm-config.ts":{"23":[8],"24":[8],"38":[8],"39":[8],"57":[8],"58":[8],"81":[8],"82":[8],"101":[8],"102":[8],"131":[8],"132":[8],"133":[8],"228":[8]},"packages/@n8n/ai-workflow-builder.ee/src/multi-agent-workflow-subgraphs.ts":{"56":[8],"73":[8],"113":[8],"118":[8],"187":[8],"194":[8],"211":[8],"252":[8],"275":[8],"286":[8],"353":[8],"379":[8],"391":[8],"392":[8],"402":[8],"403":[8],"406":[8],"433":[8],"444":[8],"452":[8],"506":[8],"525":[8],"527":[8],"536":[8],"544":[8]},"packages/@n8n/ai-workflow-builder.ee/src/parent-graph-state.ts":{"23":[8],"28":[8],"29":[8],"34":[8],"39":[8],"40":[8],"45":[8],"46":[8],"51":[8],"52":[8],"57":[8],"58":[8],"63":[8],"64":[8],"70":[8],"77":[8],"82":[8],"83":[8],"88":[8],"89":[8],"94":[8],"95":[8],"100":[8],"101":[8],"106":[8],"107":[8],"113":[8],"114":[8],"118":[8],"119":[8],"124":[8],"125":[8],"130":[8],"131":[8],"136":[8],"137":[8]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/agents/discovery.prompt.ts":{"30":[8],"32":[8],"36":[8],"38":[8],"347":[8],"358":[8],"368":[8],"372":[8]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/agents/planner.prompt.ts":{"73":[8],"98":[8],"109":[8],"122":[8],"129":[8],"130":[8]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/agents/responder.prompt.ts":{"168":[8],"178":[8],"188":[8],"200":[8],"205":[8],"226":[8],"232":[8],"244":[8]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/builder/prompt-builder.ts":{"17":[8],"30":[8],"44":[8],"55":[8],"79":[8],"116":[8],"129":[8],"149":[8],"175":[8],"197":[8],"228":[8],"252":[8],"268":[8],"282":[8],"302":[8],"330":[8],"357":[8]},"packages/@n8n/ai-workflow-builder.ee/src/prompts/index.ts":{"31":[8],"45":[8],"47":[8]},"packages/@n8n/ai-workflow-builder.ee/src/session-manager.service.ts":{"36":[8],"54":[8],"62":[8],"72":[8],"83":[8],"87":[8],"96":[8],"104":[8],"118":[8],"132":[8],"160":[8],"166":[8],"174":[8],"180":[8],"185":[8],"200":[8],"222":[8],"270":[8],"275":[8],"279":[8],"283":[8],"300":[8],"312":[8],"335":[8],"363":[8],"378":[8],"427":[8],"440":[8],"532":[8],"564":[8],"583":[8],"666":[8],"674":[8]},"packages/@n8n/ai-workflow-builder.ee/src/subgraphs/discovery.subgraph.ts":{"103":[8],"104":[8],"109":[8],"110":[8],"115":[8],"116":[8],"121":[8],"122":[8],"127":[8],"128":[8],"133":[8],"134":[8],"139":[8],"140":[8],"145":[8],"146":[8],"151":[8],"152":[8],"175":[8],"176":[8],"181":[8],"187":[8],"193":[8],"199":[8],"200":[8],"205":[8],"206":[8],"211":[8],"212":[8],"217":[8],"218":[8],"223":[8],"224":[8],"229":[8],"230":[8],"237":[8],"238":[8],"276":[8],"304":[8],"307":[8],"351":[8],"377":[8],"396":[8],"440":[8],"447":[8],"494":[8],"501":[8],"561":[8],"563":[8],"591":[8],"659":[8],"670":[8],"709":[8],"721":[8],"769":[8],"795":[8]},"packages/@n8n/ai-workflow-builder.ee/src/tools/get-documentation.tool.ts":{"60":[8],"81":[8],"88":[8],"113":[8],"115":[8],"136":[8],"146":[8]},"packages/@n8n/ai-workflow-builder.ee/src/tools/node-search.tool.ts":{"46":[8],"91":[8],"105":[8],"121":[8],"123":[8],"170":[8]},"packages/@n8n/ai-workflow-builder.ee/src/tools/utils/ssrf-guard.ts":{"28":[8],"38":[8],"40":[8],"41":[8],"43":[8],"53":[8],"63":[8]},"packages/@n8n/ai-workflow-builder.ee/src/tools/utils/web-fetch-security.ts":{"35":[8],"48":[8],"55":[8],"61":[8],"64":[8],"67":[8],"70":[8],"111":[8],"112":[8],"120":[8],"121":[8],"122":[8],"123":[8],"127":[8],"131":[8],"144":[8],"146":[8],"163":[8],"167":[8]},"packages/@n8n/ai-workflow-builder.ee/src/tools/web-fetch.tool.ts":{"30":[8],"69":[8],"83":[8],"86":[8]},"packages/@n8n/ai-workflow-builder.ee/src/utils/cleanup-dangling-tool-call-messages.ts":{"10":[8],"13":[8],"19":[8],"23":[8]},"packages/@n8n/ai-workflow-builder.ee/src/utils/state-modifier.ts":{"34":[8],"56":[8],"72":[8],"84":[8],"118":[8],"144":[8],"155":[8],"165":[8],"192":[8],"201":[8],"227":[8],"231":[8],"261":[8],"274":[8]},"packages/@n8n/ai-workflow-builder.ee/src/utils/stream-processor.ts":{"87":[8],"88":[8],"92":[8],"97":[8],"102":[8],"108":[8],"111":[8],"118":[8],"123":[8],"132":[8],"141":[8],"142":[8],"159":[8],"184":[8],"188":[8],"193":[8],"198":[8],"208":[8],"234":[8],"269":[8],"282":[8],"295":[8],"314":[8],"334":[8],"375":[8],"388":[8],"415":[8],"423":[8],"442":[8],"466":[8],"474":[8],"477":[8],"485":[8],"494":[8],"503":[8],"546":[8],"548":[8],"552":[8],"560":[8],"578":[8],"631":[8],"654":[8],"658":[8],"659":[8],"665":[8],"687":[8]},"packages/@n8n/ai-workflow-builder.ee/src/utils/thread-id.ts":{"7":[8]},"packages/@n8n/ai-workflow-builder.ee/src/utils/token-usage.ts":{"27":[8],"29":[8],"43":[8],"44":[8],"50":[8],"67":[8],"71":[8]},"packages/@n8n/ai-workflow-builder.ee/src/workflow-builder-agent.ts":{"166":[8],"184":[8],"196":[8],"204":[8],"213":[8],"234":[8],"315":[8],"344":[8],"362":[8],"392":[8],"410":[8],"441":[8],"463":[8],"476":[8],"515":[8],"587":[8],"602":[8],"618":[8],"668":[8],"686":[8],"690":[8]},"packages/@n8n/api-types/src/dto/ai/ai-build-request.dto.ts":{"41":[8],"51":[8],"61":[8],"63":[8],"72":[8],"75":[8],"86":[8],"95":[8]},"packages/cli/src/controllers/ai.controller.ts":{"43":[8],"52":[8],"72":[8],"81":[8],"155":[8],"160":[8],"169":[8],"194":[8],"208":[8],"226":[8],"258":[8],"278":[8],"289":[8],"300":[8],"315":[8],"329":[8],"350":[8],"366":[8]},"packages/cli/src/modules/workflow-builder/workflow-builder-session.repository.ts":{"22":[8],"26":[8],"46":[8],"73":[8],"78":[8]},"packages/cli/src/services/ai-workflow-builder.service.ts":{"44":[8,82,28,63,148],"62":[8,82,28,63,148],"70":[8,82,28,63,148],"77":[8,82,28,63,148],"85":[8,82,28,63,148],"101":[8,82,28,63,148],"107":[8,82,28,63,148],"121":[8,82,28,63,148],"126":[8,82,28,63,148],"127":[8,82,28,63,148],"188":[8,82,28,63,148],"205":[8,82,28,63,148],"210":[8,82,28,63,148],"216":[8,82,28,63,148],"221":[8,82,28,63,148],"226":[8,82,28,63,148]},"packages/@n8n/design-system/src/components/CanvasPill/CanvasPill.vue":{"8":[4,8],"9":[4,8]},"packages/@n8n/design-system/src/components/CanvasThinkingPill/CanvasThinkingPill.vue":{"17":[4,8],"23":[4,8],"27":[4,8],"30":[4,8]},"packages/frontend/editor-ui/src/features/ai/assistant/assistant.types.ts":{"422":[4,8],"439":[4],"458":[4,8],"464":[4,8],"468":[4],"492":[4],"505":[4],"511":[4],"523":[4],"529":[4],"535":[4],"545":[4],"551":[4],"555":[4],"561":[4],"573":[4,8],"579":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/builder.utils.ts":{"19":[4,8],"23":[4,8],"27":[4,8],"130":[4,8],"141":[4,8]},"packages/frontend/editor-ui/src/features/ai/assistant/components/HubSwitcher.vue":{"12":[4,8],"22":[4,8],"29":[4,8],"36":[4,8]},"packages/frontend/editor-ui/src/features/workflows/canvas/components/elements/nodes/render-types/CanvasNodeChoicePrompt.vue":{"21":[4,57,8],"30":[4,57,8],"41":[4,57,8],"44":[4,57,8],"46":[4,57,8],"50":[57],"61":[57],"65":[4,57,8],"75":[57],"83":[4,57,8],"87":[4,57,8],"112":[57]},"packages/localhost-40177/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[8]},"packages/localhost-40177/assets/chunk-CC9Q-vWm.js":{"8":[8],"9":[8],"10":[8],"19":[8],"23":[8],"29":[8],"33":[8],"34":[8]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/merge.svg":{"11":[68,110,120,128]},"packages/localhost-45601/assets/shield-alt-DX72YG8n.js":{"8":[68,128]},"packages/cli/src/errors/credential-not-found.error.ts":{"4":[77]},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenu.utils.ts":{"28":[77]},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenuSearch.vue":{"18":[77],"43":[77],"48":[77]},"packages/@n8n/design-system/src/components/N8nDropdownMenu/DropdownMenuSearchableContent.vue":{"18":[77],"60":[77],"96":[77],"123":[77],"132":[77],"137":[77],"175":[77],"181":[77],"186":[77],"188":[77],"236":[77],"237":[77],"240":[77],"251":[77],"259":[77]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatProviderAvatar.vue":{"13":[77],"23":[77]},"packages/localhost-45505/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[77]},"packages/localhost-45505/assets/chunk-CC9Q-vWm.js":{"8":[77],"9":[77],"10":[77],"19":[77],"23":[77],"29":[77],"33":[77],"34":[77]},"packages/@n8n/backend-network/src/http/client-request-error.ts":{"13":[21,119,129,56],"31":[21,119,129,56],"42":[21,119,129,56],"73":[21,119,129,56],"89":[21,119,129,56]},"packages/localhost-36363/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[21]},"packages/localhost-36363/assets/chunk-CC9Q-vWm.js":{"8":[21],"9":[21],"10":[21],"19":[21],"23":[21],"29":[21],"33":[21],"34":[21]},"packages/cli/src/modules/instance-ai/message-parser.ts":{"76":[60,61,62],"82":[60,61,62],"88":[60,61,62],"90":[60,61,62],"97":[60,61,62],"99":[60,61,62],"106":[60,61,62],"111":[60,61,62],"115":[60,61,62],"121":[60,61,62],"155":[60,61,62],"158":[60,61,62],"165":[60,61,62],"183":[60,61,62],"229":[60,61,62],"240":[60,61,62],"259":[60,61,62],"280":[60,61,62],"293":[60,61,62],"297":[60,61,62],"301":[60,61,62],"305":[60,61,62],"316":[60,61,62],"340":[60,61,62],"348":[60,61,62],"362":[60,61,62],"371":[60,61,62],"384":[60,61,62],"565":[60,61,62],"575":[60,61,62],"605":[60,61,62],"614":[60,61,62],"618":[60,61,62],"635":[60,61,62],"641":[60,61,62],"653":[60,61,62]},"packages/cli/src/modules/instance-ai/repositories/instance-ai-checkpoint.repository.ts":{"8":[60,61,62],"21":[60,61,62],"34":[60,61,62]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/MessageRating.vue":{"15":[4,24,60,61,25,62,26,82],"62":[4,24,60,61,25,62,26,82]},"packages/@n8n/design-system/src/components/N8nAiActivityStep/AiActivityStep.vue":{"33":[24,61,25,62,26,82],"40":[24,61,25,62,26,82],"49":[24,61,25,62,26,82],"51":[24,61,25,62,26,82],"64":[24,61,25,62,26,82]},"packages/@n8n/design-system/src/components/N8nAiActivityStepButton/AiActivityStepButton.vue":{"4":[24,60,61,25,62,26,82],"28":[24,60,61,25,62,26,82],"38":[24,60,61,25,62,82]},"packages/@n8n/design-system/src/components/N8nAiActivityStepChevron/AiActivityStepChevron.vue":{"10":[24,60,61,25,62,26,82]},"packages/@n8n/design-system/src/components/N8nAnimatedCollapsibleContent/AnimatedCollapsibleContent.vue":{"6":[24,60,61,25,62,26,82],"7":[25]},"packages/@n8n/design-system/src/components/N8nChatInput/useChatInputAutoFocus.ts":{"36":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/app/components/WorkflowCanvasHost.vue":{"9":[24,25,26,82],"35":[24,25,26,82],"45":[24,25,26,82],"50":[24,25,26,82],"60":[24,25,26,82]},"packages/frontend/editor-ui/src/app/components/WorkflowCanvasHostBody.vue":{"20":[24,25,26,82],"53":[24,25,26,82],"71":[24,25,26,82],"89":[24,25,26,82],"99":[24,25,26,82],"101":[26],"106":[24,82],"120":[24,25,26,82],"126":[24,25,26,82],"127":[24,25,26,82]},"packages/frontend/editor-ui/src/app/layouts/InstanceAiLayout.vue":{"9":[24,60,61,25,62,26,82],"20":[24,60,61,25,62,26,82],"22":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiBrowserUse/useInstanceAiBrowserUseExperiment.ts":{"9":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiComputerUse/useInstanceAiComputerUseExperiment.ts":{"6":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiMcpConnections/useInstanceAiMcpConnectionsExperiment.ts":{"6":[24,60,61,25,62,26,82],"9":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/profileOverride.ts":{"60":[24,61,25,62,26,82],"73":[24,61,25,62,26,82],"106":[24,61,25,62,26,82],"114":[24,61,25,62,26,82],"130":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/useInstanceAiPersonalizedPromptSuggestionsExperiment.ts":{"8":[24,61,25,62,26,82],"11":[24,61,25,62,26,82],"14":[24,61,25,62,26,82],"29":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiProactiveAgent/useInstanceAiProactiveAgentExperiment.ts":{"6":[24,61,25,62,26,82],"9":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiPromptSuggestionsV2/useInstanceAiPromptSuggestionsV2Experiment.ts":{"6":[24,61,25,62,26,82],"9":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiSplitEmptyState/useInstanceAiSplitEmptyStateExperiment.ts":{"5":[24,61,25,62,26,82],"7":[24,61,25,62,26,82],"10":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiTemplateExamples/instanceAiTemplateExamples.store.ts":{"14":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiTemplateExamples/useInstanceAiTemplateExamplesExperiment.ts":{"6":[24,61,25,62,26,82],"9":[24,61,25,62,26,82],"13":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiWorkflowPreviewSuggestions/components/WorkflowPreviewSuggestions.vue":{"9":[24,61,25,62,26,82],"34":[24,61,25,62,26,82],"51":[24,61,25,62,26,82],"100":[24,61,25,62,26,82],"106":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/experiments/instanceAiWorkflowPreviewSuggestions/useInstanceAiWorkflowPreviewSuggestionsExperiment.ts":{"4":[24,61,25,62,26,82],"5":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/InstanceAiEmptyView.vue":{"121":[24,61,25,62,26,82],"126":[24,61,25,62,26,82],"150":[24,61,25,62,26,82],"154":[24,61,25,62,26,82],"157":[24,61,25,62,26,82],"165":[24,61,25,62,26,82],"180":[24,61,25,62,26,82],"207":[24,61,25,62,26,82],"241":[24,61,25,62,26,82],"248":[24,61,25,62,26,82],"272":[24,61,25,62,26,82],"288":[24,61,25,62,26,82],"352":[24,61,25,62,26,82],"405":[24,61,25,62,26,82],"425":[24,61,25,62,26,82],"429":[24,61,25,62,26,82],"430":[24,61,25,62,26,82],"435":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/InstanceAiThreadView.vue":{"82":[24,60,61,25,62,26,82],"90":[24,60,61,25,62,26,82],"91":[24,60,61,25,62,26,82],"95":[24,60,61,25,62,26,82],"102":[24,60,61,25,62,26,82],"107":[24,60,61,25,62,26,82],"119":[24,60,61,25,62,26,82],"134":[24,60,61,25,62,26,82],"135":[24,60,61,25,62,26,82],"139":[24,60,61,25,62,26,82],"158":[24,60,61,25,62,26,82],"169":[24,60,61,25,62,26,82],"170":[24,60,61,25,62,26,82],"176":[24,60,61,25,62,26,82],"179":[24,60,61,25,62,26,82],"184":[24,60,61,25,62,26,82],"191":[24,60,61,25,62,26,82],"198":[24,60,61,25,62,26,82],"202":[24,26,82],"236":[24,60,61,25,62,26,82],"241":[60,61,62],"251":[24,60,61,25,62,26,82],"254":[24,60,61,25,62,26,82],"257":[24,60,61,25,62,26,82],"260":[24,60,61,25,62,26,82],"264":[24,60,61,25,62,26,82],"267":[24,60,61,25,62,26,82],"275":[24,60,61,25,62,26,82],"278":[24,60,61,25,62,26,82],"281":[24,60,61,25,62,26,82],"284":[24,60,61,25,62,26,82],"291":[24,60,61,25,62,26,82],"292":[24,60,61,25,62,26,82],"302":[24,60,61,25,62,26,82],"312":[24,25,26,82],"320":[24],"326":[24,25,26,82],"342":[24,60,61,25,62,26,82],"356":[60,61,62],"364":[25,62,26],"372":[24,60,61,25,62,26,82],"381":[24,60,61,25,62,26,82],"382":[60,61,62],"397":[24,60,61,25,62,26,82],"408":[24,60,61,25,62,26,82],"409":[24,60,61,25,62,26,82],"415":[24,60,61,25,62,26,82],"430":[24,60,61,25,62,26,82],"434":[24,60,61,25,62,26,82],"448":[24,60,61,25,62,26,82],"462":[24,60,61,25,62,26,82],"469":[24,60,61,25,62,26,82],"479":[60,61,62],"483":[60,61,62],"484":[60,61,62],"506":[24,60,61,25,62,26,82],"513":[24,60,61,25,62,26,82],"522":[24,60,61,25,62,26,82],"528":[62],"622":[24,60,61,25,62,26,82],"628":[24,61,25,62,26,82],"643":[24,60,61,25,62,26,82],"660":[24,60,61,25,62,26,82],"680":[24,60,61,25,62,26,82],"713":[24,60,61,25,62,26,82],"716":[24,60,61,25,62,26,82],"727":[60],"739":[24,60,61,25,62,26,82],"764":[24,60,61,25,62,26,82],"794":[24,60,61,25,62,26,82],"829":[24,60,61,25,62,26,82],"859":[24,60,61,25,62,26,82],"878":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/InstanceAiView.vue":{"33":[62],"63":[62],"79":[24,60,61,25,62,26,82],"90":[24,60,61,25,62,26,82],"92":[24,60,61,25,62,26,82],"105":[24,60,61,25,62,26,82],"133":[24,60,61,25,62,26,82],"143":[62]},"packages/frontend/editor-ui/src/features/ai/instanceAi/agentTimeline.utils.ts":{"26":[24,60,61,25,62,26,82],"54":[24,60,61,25,62,26,82],"71":[24,60,25,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/builderAgents.ts":{"4":[24,60,61,25,62,26,82],"9":[24,60,61,25,62,26,82],"20":[24,60,61,25,62,26,82],"58":[24,60,61,25,62,26,82],"60":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/canvasPreview.utils.ts":{"48":[24,60,61,25,62,26,82],"71":[24,60,25,26,82],"83":[24,60,61,25,62,26,82],"107":[24,60,61,25,62,26,82],"145":[24,60,61,25,62,26,82],"195":[24,25,26,82],"287":[24,60,61,25,62,26,82],"311":[24,60,61,25,62,26,82],"342":[24,25,26,82],"350":[24,25,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/AgentActivityTree.vue":{"13":[24,60,61,25,62,26,82],"28":[24,60,61,25,62,26,82],"31":[24,60,61,25,62,26,82],"39":[24,25,82],"42":[24,60,61,25,62,26,82],"50":[24,60,61,25,62,26,82],"61":[24,25,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/AgentTimeline.vue":{"33":[24,60,61,25,62,26,82],"102":[24,60,61,25,62,26,82],"105":[24,60,61,25,62,26,82],"113":[25],"122":[25],"138":[25],"149":[25],"157":[24,60,61,25,62,26,82],"170":[24,60,61,25,62,26,82],"171":[24,60,61,25,62,26,82],"176":[25],"254":[24,60,61,25,62,26,82],"300":[25]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/ArtifactCard.vue":{"6":[24,25,82],"28":[24,25,82],"47":[24,25,82],"58":[24,25,82],"61":[24,25,82],"65":[24,25,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/ConnectionsCard.vue":{"32":[24,60,61,25,62,26,82],"45":[24,60,61,25,62,26,82],"56":[24,60,61,25,62,26,82],"160":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiArtifactsPanel.vue":{"14":[24,60,61,25,62,26,82],"18":[24,60,61,25,62,26,82],"19":[24,60,61,25,62,26,82],"41":[24],"56":[24,60,61,25,62,26,82],"57":[24,60,61,25,62,26,82],"58":[24,60,61,25,62,26,82],"72":[24,60,61,25,62,26,82],"87":[24,25,26,82],"97":[24,25,26,82],"99":[24,60,61,25,62,26,82],"109":[24,60,61,25,62,26,82],"127":[24,60,61,25,62,26,82],"133":[24,25,26,82],"139":[24],"164":[25],"170":[25]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiConfirmationPanel.vue":{"36":[24,60,61,25,62,26,82],"44":[25,26],"52":[25,26],"104":[24,60,61,25,62,26,82],"121":[25,26],"134":[25,26],"156":[25,26],"167":[25,26],"195":[25,26],"217":[25],"251":[26],"398":[24,60,61,25,62,26,82],"588":[25,26],"595":[25,26]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiEmptyState.vue":{"5":[24,61,25,62,26,82],"22":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiInput.vue":{"108":[24,60,61,25,62,26,82],"111":[24,60,61,25,62,26,82],"120":[24,60,61,25,62,26,82],"121":[24,60,61,25,62,26,82],"142":[24,61,25,62,26,82],"163":[24,61,25,62,26,82],"166":[24,60,61,25,62,26,82],"168":[24,60,61,25,62,26,82],"169":[24,60,61,25,62,26,82],"171":[24,61,25,62,26,82],"172":[24,60,61,25,62,26,82],"175":[24,60,61,25,62,26,82],"176":[24,60,61,25,62,26,82],"184":[24,61,25,62,26,82],"187":[24,60,61,25,62,26,82],"191":[24,60,61,25,62,26,82],"193":[24,60,61,25,62,26,82],"222":[24,60,61,25,62,26,82],"239":[24,61,25,62,26,82],"245":[24,60,61,25,62,26,82],"255":[24,61,25,62,26,82],"260":[24,61,25,62,26,82],"265":[24,61,25,62,26,82],"269":[24,61,25,62,26,82],"288":[24,61,25,62,26,82],"344":[24,61,25,62,26,82],"357":[24,61,25,62,26,82],"417":[24,60,61,25,62,26,82],"427":[24,60,61,25,62,26,82],"449":[24,60,61,25,62,26,82],"493":[24,60,61,25,62,26,82],"500":[24,61,25,62,26,82],"504":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiMarkdown.vue":{"6":[24,60,61,25,62,26,82],"48":[24,25,82],"65":[24,60,61,25,62,26,82],"67":[24,25,82],"79":[24,25,26,82],"121":[24,25,26,82],"152":[24,60,61,25,62,26,82],"158":[24,25,26,82],"163":[24,25,26,82],"184":[24,25,82],"194":[24,60,61,25,62,26,82],"223":[24,25,82],"234":[24,25,82],"252":[24,25,82],"270":[24,60,61,25,62,26,82],"291":[24,25,82],"368":[24,61,25,62,26,82],"375":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiMessage.vue":{"12":[24,60,61,25,62,26,82],"21":[24,60,61,25,62,26,82],"22":[24,60,61,25,62,26,82],"23":[24,60,61,25,62,26,82],"25":[24,60,61,25,62,26,82],"31":[26],"37":[26],"40":[24,60,61,25,62,26,82],"54":[26],"61":[26],"71":[24,61,25,62,26,82],"74":[24,60,61,25,62,26,82],"80":[24,60,61,25,62,26,82],"82":[24,60,61,25,62,26,82],"89":[24,60,61,25,62,26,82],"102":[24,60,61,25,62,26,82],"132":[26],"144":[26]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiPreviewTabBar.vue":{"19":[24,60,61,25,62,26,82],"41":[24,60,61,25,62,26,82],"47":[24,25,26,82],"53":[24,25,26,82],"57":[24,25,26,82],"84":[24,60,61,25,62,26,82],"85":[24,25,26,82],"88":[24,25,26,82],"114":[24,60,61,25,62,26,82],"134":[24,60,61,25,62,26,82],"136":[24,25,26,82],"138":[24,25,26,82],"140":[24,25,26,82],"141":[24,25,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiStatusBar.vue":{"10":[24,60,61,25,62,26,82],"21":[24,60,61,25,62,26,82],"27":[24,60,61,25,62,26,82],"37":[60],"49":[24,25,26,82],"58":[24,60,61,25,62,26,82],"67":[24,60,61,25,62,26,82],"71":[24,60,61,25,62,26,82],"79":[24,60,61,25,62,26,82],"81":[24,60,61,25,62,26,82],"88":[24,60,61,25,62,26,82],"91":[24,61,25,62,26,82],"102":[62],"107":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiViewHeader.vue":{"12":[24,60,61,25,62,26,82],"19":[24,60,61,25,62,26,82],"31":[24,60,61,25,62,26,82],"36":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiWorkflowPreview.vue":{"31":[24,25,26,82],"48":[24,25,26,82],"105":[24,25,26,82],"106":[24,25,26,82],"124":[24,25,26,82],"139":[24,25,26,82],"167":[24,25,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/ReasoningBlock.vue":{"11":[24,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/ResponseGroup.vue":{"9":[24,60,61,25,62,26,82],"18":[60,25,26,82],"56":[24,60,61,25,62,26,82],"57":[24,60,61,25,62,26,82],"59":[24,25,26,82],"65":[24,60,61,25,62,26,82],"66":[24,60,61,25,62,26,82],"68":[60],"74":[24,60,61,25,62,26,82],"77":[24,60,61,25,62,26,82],"84":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/TimelineTextSegment.vue":{"10":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/composables/useCreditWarningBanner.ts":{"9":[24,60,61,25,62,26,82],"12":[24,60,61,25,62,26,82],"23":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/composables/useInstanceAiWorkflowPreviewExecution.ts":{"17":[25],"21":[25],"41":[24,25,26,82],"53":[25],"68":[24,25,26,82],"72":[25],"87":[24,25,26,82],"95":[24,25,26,82],"119":[24,25,26,82],"132":[24,25,26,82],"159":[24,25,26,82],"167":[24,25,26,82],"168":[24,25,26,82],"175":[24,25,26,82],"182":[24,25,26,82],"188":[24,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.api.ts":{"18":[24,61,25,62,26,82],"41":[24,61,25,62,26,82],"98":[25,26],"115":[24,60,61,25,62,26,82],"172":[24,60,61,25,62,26,82],"194":[61,25,62,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.memory.api.ts":{"12":[24,60,61,25,62,26,82],"18":[62],"22":[62],"42":[60,61,62],"59":[60,61,25,62,26]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.reducer.ts":{"53":[24,60,61,25,62,26,82],"60":[24,60,61,25,62,26,82],"65":[24,60,61,25,62,26,82],"110":[24,61,25,62,26,82],"119":[24,60,61,25,62,26,82],"127":[24,61,25,62,26,82],"144":[24,61,25,62,26,82],"149":[24,60,61,25,62,26,82],"177":[24,60,61,25,62,26,82],"191":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.settings.api.ts":{"11":[24,60,61,25,62,26,82],"24":[24,60,61,25,62,26,82],"37":[24,60,61,25,62,26,82],"43":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.threadRuntime.ts":{"97":[24,60,61,25,62,26,82],"135":[24,61,25,62,26,82],"153":[24,60,61,25,62,26,82],"244":[60,61,62],"276":[24,60,61,25,62,26,82],"314":[24,25,26,82],"328":[26,82],"335":[24,25,26,82],"338":[24,25,82],"355":[24,60,61,25,62,26,82],"356":[24,60,61,25,62,26,82],"357":[24,60,61,25,62,26,82],"358":[24,60,61,25,62,26,82],"360":[24,60,61,25,62,26,82],"361":[24,25,26,82],"362":[24,60,61,25,62,26,82],"376":[24,60,61,25,62,26,82],"387":[24,60,61,25,62,26,82],"399":[24,60,61,25,62,26,82],"400":[24,25,26,82],"427":[24,61,25,62,26,82],"430":[24,61,25,62,26,82],"437":[24,60,61,25,62,26,82],"439":[24,60,61,25,62,26,82],"446":[24,60,61,25,62,26,82],"463":[24,60,61,25,62,26,82],"466":[24,60,61,25,62,26,82],"472":[60],"483":[24,60,61,25,62,26,82],"493":[24,60,61,25,62,26,82],"495":[25,26],"512":[25,26],"527":[26],"542":[26],"568":[24,60,61,25,62,26,82],"608":[24,60,61,25,62,26,82],"677":[24,60,61,25,62,26,82],"697":[24,60,61,25,62,26,82],"702":[60],"759":[24,60,61,25,62,26,82],"777":[24,60,61,25,62,26,82],"782":[24,60,61,25,62,26,82],"789":[24,60,61,25,62,26,82],"794":[60,61],"806":[62],"815":[62],"833":[62],"838":[60,61,62],"849":[60,61,62],"864":[60,61,62],"865":[60,61,62],"889":[60,61,25,62,26],"911":[24,61,25,62,26,82],"922":[24,61,25,62,26,82],"946":[24,61,25,62,26,82],"954":[24,61,25,62,26,82],"995":[24,61,25,62,26,82],"1066":[24,61,25,62,26,82],"1074":[25,26]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAiMcp.store.ts":{"22":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAiMcp.telemetry.ts":{"3":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAiPromptSuggestions.telemetry.ts":{"45":[24,61,25,62,26,82],"48":[24,61,25,62,26,82],"63":[24,60,61,25,62,26,82],"68":[24,61,25,62,26,82],"117":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/module.descriptor.ts":{"10":[24,60,61,25,62,26,82],"11":[24,61,25,62,26,82],"12":[24,60,61,25,62,26,82],"105":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/toolLabels.ts":{"132":[24,60,61,25,62,26,82],"135":[24,25,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/useCanvasPreview.ts":{"33":[24,60,61,25,62,26,82],"38":[24,60,61,25,62,26,82],"56":[24,60,61,25,62,26,82],"57":[24,25,26,82],"61":[24,60,61,25,62,26,82],"62":[24,25,26,82],"71":[24,25,26,82],"82":[24,25,26,82],"89":[24,60,61,25,62,26,82],"95":[24,60,61,25,62,26,82],"102":[24,60,61,25,62,26,82],"117":[26],"121":[24,82],"130":[24],"151":[24,25,26,82],"153":[24,25,26,82],"163":[24,60,61,25,62,26,82],"183":[24,60,61,25,62,26,82],"184":[24,25,26,82],"202":[24,60,61,25,62,26,82],"213":[24,60,61,25,62,26,82],"228":[24,60,61,25,62,26,82],"239":[24,60,61,25,62,26,82],"259":[24,60,61,25,62,26,82],"270":[24,60,61,25,62,26,82],"286":[24,60,61,25,62,26,82],"297":[24,60,61,25,62,26,82],"311":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/useResourceRegistry.ts":{"37":[24,25,26,82],"53":[24,25,26,82],"82":[25,26],"86":[25,26],"116":[24,25,26,82],"260":[24,60,61,25,62,26,82],"270":[24,60,61,25,62,26,82],"285":[24,60,61,25,62,26,82],"296":[24,60,61,25,62,26,82],"333":[24,60,61,25,62,26,82],"348":[24,60,61,25,62,26,82],"375":[24,60,61,25,62,26,82],"388":[24,60,61,25,62,26,82],"406":[24,25,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/useResponseFeedback.ts":{"11":[24,60,61,25,62,26,82],"13":[60],"16":[24,60,61,25,62,26,82],"17":[24,25,26,82],"18":[60],"21":[24,60,61,25,62,26,82],"22":[24,25,26,82],"24":[60],"47":[24,60,61,25,62,26,82],"72":[24,60,61,25,62,26,82],"161":[62]},"packages/frontend/editor-ui/src/features/ai/instanceAi/useTimelineGrouping.ts":{"14":[24,25,26,82],"58":[24,60,61,25,62,26,82],"61":[24,60,61,25,62,26,82],"71":[24,60,61,25,62,26,82],"79":[24,60,61,25,62,26,82],"93":[24,60,25,26,82],"127":[24,25,26,82],"152":[60],"173":[24,60,61,25,62,26,82],"184":[24,60,61,25,62,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/useTransitionGate.ts":{"3":[24,60,61,25,62,26,82],"7":[24,60,61,25,62,26,82],"9":[24,60,61,25,62,26,82],"10":[24,60,61,25,62,26,82],"18":[60,61,62],"23":[60,61,62]},"packages/frontend/editor-ui/src/features/ai/shared/components/ChatInputBase.vue":{"46":[24,60,61,25,62,26,82],"87":[24,61,25,62,26,82],"117":[24,61,25,62,26,82],"162":[24,61,25,62,26,82],"165":[24,61,25,62,26,82],"166":[24,61,25,62,26,82],"168":[24,60,61,25,62,26,82],"171":[24,60,61,25,62,26,82],"179":[24,60,61,25,62,26,82]},"packages/localhost-33259/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[24,25,82]},"packages/localhost-33259/assets/chunk-CC9Q-vWm.js":{"8":[24,25,82],"9":[24,25,82],"10":[24,25,82],"19":[24,25,82],"23":[24,25,82],"29":[24,25,82],"33":[24,25,82],"34":[24,25,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/composables/useInstanceAiHandoff.ts":{"38":[60,61,62],"67":[60,61,62]},"packages/frontend/editor-ui/src/features/ai/instanceAi/instanceAi.liveRunState.ts":{"9":[60,61,25,62,26],"44":[25,26],"61":[25,26],"73":[60,25,26],"89":[25,26]},"packages/localhost-46101/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[61,26]},"packages/localhost-46101/assets/chunk-CC9Q-vWm.js":{"8":[61,26],"9":[61,26],"10":[61,26],"19":[61,26],"23":[61,26],"29":[61,26],"33":[61,26],"34":[61,26]},"packages/@n8n/workflow-sdk/src/codegen/code-generator.ts":{"84":[25,26],"92":[25,26],"141":[25,26],"170":[25,26],"181":[25,26],"205":[25,26],"209":[25,26],"251":[25,26],"282":[25,26],"331":[25,26],"360":[25,26],"371":[25,26],"395":[25,26],"410":[25,26],"456":[25,26],"462":[25,26],"478":[25,26],"512":[25,26],"527":[25,26],"563":[25,26],"606":[25,26],"646":[25,26],"667":[25,26],"693":[25,26],"708":[25,26],"728":[25,26],"735":[25,26],"743":[25,26],"754":[25,26],"788":[25,26],"801":[25,26],"816":[25,26],"821":[25,26],"836":[25,26],"841":[25,26],"857":[25,26],"876":[25,26],"891":[25,26],"946":[25,26],"954":[25,26],"964":[25,26],"982":[25,26],"992":[25,26],"1020":[25,26],"1047":[25,26],"1075":[25,26],"1157":[25,26],"1169":[25,26],"1179":[25,26],"1187":[25,26],"1201":[25,26],"1217":[25,26],"1273":[25,26],"1328":[25,26],"1457":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/composite-builder.ts":{"50":[25,26],"77":[25,26],"144":[25,26],"185":[25,26],"328":[25,26],"355":[25,26],"387":[25,26],"454":[25,26],"491":[25,26],"528":[25,26],"586":[25,26],"701":[25,26],"814":[25,26],"969":[25,26],"1067":[25,26],"1162":[25,26],"1196":[25,26],"1275":[25,26],"1284":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/composite-handlers/build-utils.ts":{"19":[25,26],"42":[25,26],"53":[25,26],"65":[25,26],"75":[25,26],"82":[25,26],"89":[25,26],"103":[25,26],"134":[25,26],"142":[25,26],"146":[25,26],"157":[25,26],"166":[25,26],"171":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/execution-status.ts":{"17":[25,26],"46":[25,26],"61":[25,26],"63":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/expression-annotator.ts":{"11":[25,26],"35":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/graph-annotator.ts":{"16":[25,26],"20":[25,26],"79":[25,26],"104":[25,26],"114":[25,26],"141":[25,26],"157":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/node-type-utils.ts":{"10":[25,26],"17":[25,26],"24":[25,26],"32":[25,26],"39":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/output-utils.ts":{"24":[25,26],"41":[25,26],"62":[25,26],"75":[25,26],"92":[25,26],"107":[25,26],"114":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/semantic-graph.ts":{"20":[25,26],"44":[25,26],"52":[25,26],"60":[25,26],"98":[25,26],"139":[25,26],"148":[25,26],"151":[25,26],"168":[25,26],"206":[25,26],"240":[25,26],"329":[25,26],"352":[25,26],"384":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/semantic-registry.ts":{"42":[25,26],"48":[25,26],"57":[25,26],"60":[25,26],"76":[25,26],"85":[25,26],"105":[25,26],"137":[25,26],"158":[25,26],"169":[25,26],"199":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/string-utils.ts":{"9":[25,26],"24":[25,26],"32":[25,26],"39":[25,26],"47":[25,26],"55":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/subnode-generator.ts":{"28":[25,26],"36":[25,26],"76":[25,26],"94":[25,26],"101":[25,26],"104":[25,26],"114":[25,26],"142":[25,26],"147":[25,26],"156":[25,26],"165":[25,26],"178":[25,26],"187":[25,26],"199":[25,26],"208":[25,26],"251":[25,26],"281":[25,26],"300":[25,26],"326":[25,26],"335":[25,26],"356":[25,26],"378":[25,26],"387":[25,26]},"packages/@n8n/workflow-sdk/src/codegen/variable-names.ts":{"102":[25,26],"115":[25,26],"120":[25,26],"151":[25,26],"162":[25,26]},"packages/@n8n/workflow-sdk/src/types/base.ts":{"168":[25,26],"199":[25,26],"238":[25,26],"285":[25,26],"638":[25,26],"654":[25,26]},"packages/@n8n/workflow-sdk/src/utils/trigger-detection.ts":{"30":[25,26]},"packages/cli/src/modules/instance-ai/observability.ts":{"16":[26]},"packages/@n8n/design-system/src/components/N8nAiActivityStepGroup/AiActivityStepGroup.vue":{"26":[60,25,26,82],"27":[60,25,82],"32":[60,25,26,82],"34":[60,25,26,82]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/ApprovalOptionList.vue":{"23":[25,26],"32":[25,26],"39":[25,26],"59":[25,26],"89":[25,26],"90":[25]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/ConfirmationFooter.vue":{"15":[25,26]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/ConfirmationPreview.vue":{"2":[25,26]},"packages/frontend/editor-ui/src/features/ai/instanceAi/confirmationKinds.ts":{"16":[25,26]},"packages/localhost-34401/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[26]},"packages/localhost-34401/assets/chunk-CC9Q-vWm.js":{"8":[26],"9":[26],"10":[26],"19":[26],"23":[26],"29":[26],"33":[26],"34":[26]},"packages/localhost-38809/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[26]},"packages/localhost-38809/assets/chunk-CC9Q-vWm.js":{"8":[26],"9":[26],"10":[26],"19":[26],"23":[26],"29":[26],"33":[26],"34":[26]},"packages/cli/src/controllers/security-settings.controller.ts":{"30":[43],"42":[43],"73":[43],"156":[43],"160":[43],"165":[43],"171":[43]},"packages/cli/src/errors/response-errors/scope-forbidden.error.ts":{"4":[43]},"packages/cli/src/errors/response-errors/unprocessable.error.ts":{"4":[43]},"packages/cli/src/modules/redaction/executions/strategies/full-item-redaction.strategy.ts":{"17":[43],"20":[43],"25":[43],"64":[43],"77":[43],"95":[43]},"packages/cli/src/modules/redaction/redaction-policy.ts":{"37":[43],"48":[43]},"packages/cli/src/services/security-settings.service.ts":{"19":[43],"27":[43],"47":[43],"54":[43],"57":[43],"66":[43],"70":[43],"74":[43]},"packages/@n8n/design-system/src/components/N8nAlertDialog/AlertDialog.vue":{"74":[59,43],"87":[43],"94":[59,43],"99":[59,43],"102":[43],"103":[43]},"packages/@n8n/design-system/src/components/N8nDialog/Dialog.vue":{"95":[59,43,106],"99":[59,43,106],"108":[59,43,106]},"packages/@n8n/design-system/src/components/N8nDialog/DialogContent.vue":{"59":[59,43,106],"81":[59,43,106],"84":[43],"85":[43],"101":[59,43,106],"112":[43],"113":[43],"114":[43]},"packages/@n8n/design-system/src/components/N8nDialog/DialogDescription.vue":{"15":[43],"16":[43]},"packages/@n8n/design-system/src/components/N8nDialog/DialogFooter.vue":{"6":[43]},"packages/@n8n/design-system/src/components/N8nDialog/DialogHeader.vue":{"6":[43]},"packages/@n8n/design-system/src/components/N8nDialog/DialogOverlay.vue":{"15":[59,43,106]},"packages/@n8n/design-system/src/components/N8nDialog/DialogTitle.vue":{"15":[43],"16":[43]},"packages/frontend/editor-ui/src/app/components/RedactionMembersModal.vue":{"9":[43,106],"24":[43,106],"26":[43,106],"41":[43,106]},"packages/frontend/editor-ui/src/app/components/WorkflowSettings/WorkflowSettings.vue":{"72":[43,106],"213":[43,106],"220":[43,106],"223":[43,106],"226":[43,106],"227":[43,106],"228":[43,106],"229":[43,106],"232":[43,106],"237":[43,106],"239":[43],"241":[43],"247":[43,106],"251":[43,106],"253":[43,106],"257":[43,106],"262":[43,106],"277":[43,106],"281":[43,106],"285":[43,106],"286":[43,106],"294":[43,106],"313":[43,106],"329":[43,106],"333":[43],"345":[43,106],"349":[43],"360":[43],"379":[43,106],"381":[43,106],"386":[43,106],"390":[43,106],"401":[43,106],"415":[43,106],"424":[43],"440":[43,106],"470":[43,106],"494":[43,106],"518":[43,106],"541":[43,106],"564":[43,106],"591":[43,106],"647":[43,106],"671":[43],"757":[43],"835":[43,106],"989":[43],"993":[43,106],"1008":[43,106],"1016":[43,106],"1019":[43,106],"1027":[43,106],"1030":[43,106],"1034":[43,106],"1045":[43,106],"1046":[43,106],"1050":[43,106],"1055":[43,106],"1065":[43,106],"1067":[43,106],"1072":[43,106],"1147":[43,106],"1151":[43,106],"1157":[43,106],"1163":[43,106],"1165":[43,106],"1198":[43,106],"1202":[43,106],"1207":[43,106],"1214":[43,106],"1216":[43,106],"1227":[43,106],"1231":[43,106],"1236":[43,106],"1243":[43,106],"1245":[43,106],"1256":[43,106],"1260":[43,106],"1265":[43,106],"1272":[43,106],"1274":[43,106],"1285":[43,106],"1289":[43,106],"1294":[43,106],"1301":[43,106],"1303":[43,106],"1314":[43,106],"1318":[43,106],"1323":[43,106],"1330":[43,106],"1332":[43,106],"1343":[43,106],"1346":[43,106],"1369":[106],"1383":[43,106],"1393":[43,106],"1399":[43],"1410":[43,106],"1426":[43,106],"1428":[43,106],"1450":[43,106],"1475":[106],"1489":[43,106],"1499":[43,106],"1508":[43],"1524":[43,106],"1538":[43,106],"1540":[43,106],"1553":[43,106],"1557":[43,106],"1562":[43,106],"1652":[43,106],"1657":[43,106],"1663":[43,106],"1671":[43,106],"1673":[43,106],"1684":[43,106],"1774":[43,106]},"packages/frontend/editor-ui/src/app/stores/workflows.ee.store.ts":{"13":[43,103,105,106,55],"18":[43,106],"19":[43,106],"34":[105],"43":[105],"49":[105]},"packages/frontend/editor-ui/src/features/ndv/panel/components/RedactedDataState.vue":{"24":[43],"26":[43],"33":[43],"49":[43]},"packages/frontend/editor-ui/src/features/settings/security/DataRedactionSection.vue":{"40":[43],"59":[43],"64":[43],"65":[43],"74":[43],"78":[43],"79":[43],"87":[43],"96":[43],"123":[43],"141":[43],"154":[43],"172":[43],"178":[43],"184":[43],"228":[43],"274":[43],"277":[43]},"packages/frontend/editor-ui/src/features/settings/security/SecuritySettings.vue":{"42":[43],"46":[43],"50":[43],"78":[43],"92":[43],"99":[43],"133":[43],"155":[43],"176":[43],"192":[43],"195":[43],"208":[43],"219":[43],"237":[43],"271":[43],"279":[43],"285":[43],"324":[43],"327":[43],"336":[43],"342":[43],"381":[43],"384":[43]},"packages/localhost-38899/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[43]},"packages/localhost-38899/assets/chunk-CC9Q-vWm.js":{"8":[43],"9":[43],"10":[43],"19":[43],"23":[43],"29":[43],"33":[43],"34":[43]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/ChainLlm.node.ts":{"23":[67,128],"67":[67,128],"87":[67,128],"93":[67,128],"119":[67,128],"137":[67,128]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/chainExecutor.ts":{"19":[67,128],"34":[67,128],"45":[67,128],"60":[67,128],"69":[67,128],"95":[67,128],"118":[67,128],"126":[67,128],"140":[67,128]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/config.ts":{"21":[67,128]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/imageUtils.ts":{"15":[67,128],"27":[67,128],"82":[67,128]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/index.ts":{"1":[67,128]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/processItem.ts":{"11":[67,128],"33":[67,128]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/promptUtils.ts":{"23":[67,128],"34":[67,128],"44":[67,128],"50":[67,128],"66":[67,128],"75":[67,128],"120":[67,128],"149":[67,128],"153":[67,128],"158":[67,128],"159":[67,128],"168":[67,128]},"packages/@n8n/nodes-langchain/nodes/chains/ChainLLM/methods/responseFormatter.ts":{"6":[67,128]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.ts":{"73":[6,91,128],"742":[6,91,128]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/common.ts":{"15":[6,91,128],"18":[6,91,128],"21":[6,91,128],"24":[6,91,128],"27":[6,91,128],"30":[6,91,128],"86":[6,91,128]},"packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/methods/loadModels.ts":{"9":[6,91,128],"27":[6,91,128],"36":[6,91,128],"37":[6,91,128]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryRedisChat/MemoryRedisChat.node.ts":{"26":[6,128],"114":[6,128],"148":[6,128],"178":[6,128]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/error-handling.ts":{"11":[6,67,91,106,128],"15":[6,67,91,106,128],"19":[6,67,91,106,128],"36":[6,67,91,106,128]},"packages/@n8n/instance-ai/src/planned-tasks/planned-task-permissions.ts":{"39":[25]},"packages/@n8n/design-system/src/components/N8nIcon/custom/grip-lines-vertical.svg":{"9":[6,67,28,128,129]},"packages/@n8n/design-system/src/components/N8nIcon/custom/vector-square.svg":{"9":[6,67,28,128,129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/basic-llm-chain.svg":{"11":[67,128,129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/model-selector.svg":{"11":[6,67,128]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/simple-memory.svg":{"11":[6,128]},"packages/@n8n/db/src/repositories/workflow-publication-outbox.repository.ts":{"15":[11],"26":[11],"31":[11],"47":[11],"60":[11],"78":[11],"99":[11],"108":[11],"122":[11],"145":[11],"153":[11],"195":[11],"198":[11],"216":[11],"223":[11],"254":[11],"267":[11],"278":[11],"294":[11],"310":[11],"330":[11],"355":[11],"364":[11],"386":[11],"395":[11],"407":[11],"417":[11],"429":[11]},"packages/@n8n/db/src/repositories/workflow-publication-trigger-status.repository.ts":{"15":[11],"20":[11],"25":[11],"30":[11],"36":[11]},"packages/@n8n/db/src/repositories/workflow-published-version.repository.ts":{"31":[11],"35":[11],"39":[11],"43":[11],"56":[11],"68":[11]},"packages/cli/src/workflows/publication/publication-status-reporter.ts":{"28":[11],"39":[11],"79":[11],"110":[11],"115":[11],"122":[11],"125":[11],"140":[11],"150":[11],"154":[11],"163":[11],"165":[11],"172":[11],"183":[11],"187":[11],"200":[11]},"packages/cli/src/workflows/publication/trigger-diff.ts":{"21":[11]},"packages/cli/src/workflows/publication/workflow-publication-applier.ts":{"37":[11],"69":[11],"94":[11],"120":[11],"127":[11],"184":[11],"192":[11],"212":[11],"221":[11],"234":[11],"238":[11],"239":[11],"255":[11],"259":[11],"272":[11],"297":[11]},"packages/cli/src/workflows/publication/workflow-publication-lifecycle-lock.ts":{"27":[11],"31":[11],"36":[11],"41":[11],"55":[11],"76":[11],"85":[11],"92":[11],"96":[11],"108":[11],"115":[11],"122":[11],"129":[11]},"packages/cli/src/workflows/publication/workflow-publication-notifier.ts":{"13":[11],"26":[11],"33":[11],"46":[11],"47":[11]},"packages/cli/src/workflows/publication/workflow-publication-outbox-consumer.ts":{"39":[11],"54":[11],"62":[11],"71":[11],"82":[11],"96":[11],"106":[11],"110":[11],"121":[11],"139":[11],"151":[11],"159":[11],"164":[11],"174":[11],"175":[11],"183":[11],"193":[11],"210":[11],"221":[11],"222":[11],"287":[11]},"packages/cli/src/workflows/triggers/non-webhook-trigger-registrar.ts":{"45":[11],"57":[11],"58":[11],"65":[11],"72":[11],"111":[11],"133":[11],"153":[11],"163":[11]},"packages/cli/src/workflows/triggers/trigger-activation-retry.ts":{"9":[11],"19":[11]},"packages/cli/src/workflows/triggers/trigger-count.service.ts":{"13":[11],"14":[11],"17":[11],"27":[11]},"packages/cli/src/workflows/triggers/webhook-trigger-registrar.ts":{"20":[11],"26":[11],"47":[11],"67":[11],"74":[11],"86":[11],"133":[11],"143":[11],"160":[11],"174":[11],"187":[11],"194":[11],"223":[11],"239":[11],"243":[11],"258":[11]},"packages/cli/src/workflows/triggers/workflow-trigger-activator.ts":{"67":[11],"95":[11],"108":[11],"123":[11],"144":[11],"148":[11],"171":[11],"181":[11],"195":[11],"216":[11],"230":[11],"288":[11],"307":[11],"321":[11],"334":[11],"353":[11],"360":[11],"385":[11],"397":[11],"418":[11],"424":[11],"445":[11],"454":[11],"469":[11],"478":[11],"499":[11],"522":[11],"535":[11],"553":[11],"560":[11],"570":[11],"586":[11],"600":[11],"603":[11],"629":[11],"636":[11],"645":[11],"650":[11],"653":[11],"656":[11],"657":[11],"661":[11],"662":[11],"673":[11],"709":[11]},"packages/cli/src/workflows/workflow-published-data.service.ts":{"22":[11],"26":[11],"39":[11],"50":[11],"64":[11],"84":[11],"93":[11]},"packages/core/src/observability/tracing/noop-tracing.ts":{"4":[11],"11":[11],"15":[11],"19":[11],"23":[11],"27":[11],"31":[11],"35":[11],"39":[11],"43":[11],"47":[11],"51":[11],"59":[11],"62":[11],"66":[11]},"packages/workflow/src/workflow-diff.ts":{"28":[11],"42":[11],"54":[11],"59":[11],"64":[11],"94":[11],"98":[11],"116":[11],"128":[11],"141":[11],"148":[11],"150":[11],"166":[11],"180":[11],"184":[11],"193":[11],"201":[11],"209":[11],"223":[11],"224":[11],"234":[11],"235":[11],"247":[11],"249":[11],"250":[11],"252":[11],"269":[11],"298":[11],"306":[11],"310":[11],"316":[11],"317":[11],"320":[11],"374":[11],"403":[11],"404":[11]},"packages/localhost-46825/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[69,71,29,39,124]},"packages/localhost-46825/assets/chunk-CC9Q-vWm.js":{"8":[69,71,29,39,124],"9":[69,71,29,39,124],"10":[69,71,29,39,124],"19":[69,71,29,39,124],"23":[69,71,29,39,124],"29":[69,71,29,39,124],"33":[69,71,29,39,124],"34":[69,71,29,39,124]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/AgentSection.vue":{"14":[60],"20":[60],"23":[60],"25":[60],"33":[60],"43":[60],"51":[60],"57":[60],"58":[60],"59":[60],"61":[60]},"packages/localhost-38573/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[60]},"packages/localhost-38573/assets/chunk-CC9Q-vWm.js":{"8":[60],"9":[60],"10":[60],"19":[60],"23":[60],"29":[60],"33":[60],"34":[60]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/PlanReviewPanel.vue":{"32":[25],"56":[25],"62":[25],"68":[25],"78":[25],"82":[25],"84":[25],"88":[25],"92":[25],"104":[25],"121":[25],"133":[25],"139":[25],"186":[25],"193":[25],"196":[25],"208":[25],"215":[25],"221":[25],"231":[25],"240":[25]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/OpenTemplateItem.vue":{"14":[29,39],"23":[29,39],"27":[39]},"packages/@n8n/api-types/src/schemas/folder.schema.ts":{"10":[39,40]},"packages/cli/src/controllers/folder.controller.ts":{"36":[39,40,41,42],"43":[39,40,41,42],"61":[39,40,41,42],"82":[39,40,41,42],"102":[39,40,41,42],"126":[39,40,41,42],"148":[39,40,41,42],"170":[39,40,41,42],"185":[39,40,41,42],"207":[39,40,41,42]},"packages/@n8n/chat/src/components/GetStarted.vue":{"5":[39]},"packages/@n8n/chat/src/utils/streamingHandlers.ts":{"11":[39],"55":[39],"64":[39],"78":[39],"98":[39]},"packages/@n8n/utils/src/files/sanitize-filename.ts":{"55":[39]},"packages/frontend/editor-ui/src/app/components/ConsumedTokensDetails.vue":{"7":[39],"13":[39],"24":[39]},"packages/frontend/editor-ui/src/app/components/DuplicateWorkflowDialog.vue":{"20":[39],"58":[39],"64":[39],"72":[39],"76":[39],"150":[39],"159":[39],"164":[39],"175":[39],"195":[39]},"packages/frontend/editor-ui/src/app/components/IntersectionObserved.vue":{"6":[39,96,135,138,143],"19":[39,96,135,138,143],"29":[39,138],"34":[39,96,135,138,143]},"packages/frontend/editor-ui/src/app/components/MainHeader/utils.ts":{"1":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/builderCreditsUpdated.ts":{"4":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/executionRecovered.ts":{"14":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/nodeDescriptionUpdated.ts":{"10":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/reloadNodeType.ts":{"9":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/removeNodeType.ts":{"10":[39],"17":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/sendWorkerStatusMessage.ts":{"8":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/testWebhookDeleted.ts":{"8":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowActivated.ts":{"10":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowAutoDeactivated.ts":{"10":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowDeactivated.ts":{"9":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowFailedToActivate.ts":{"10":[39],"46":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowPartiallyActivated.ts":{"12":[39],"48":[39]},"packages/frontend/editor-ui/src/app/composables/usePushConnection/handlers/workflowSettingsUpdated.ts":{"8":[39]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/AskAssistantFloatingButton.vue":{"14":[1,2,39],"25":[1,2,39],"39":[39],"43":[39],"63":[1,2,39],"75":[39],"80":[1,2,39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatFloatingMenu.vue":{"10":[39],"26":[39],"27":[39],"32":[39],"34":[39],"43":[39],"75":[39],"108":[39],"120":[39],"133":[39],"148":[39],"149":[39],"154":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatFloatingWindow.vue":{"23":[39],"28":[39],"37":[39],"46":[39],"58":[39],"59":[39],"62":[39],"66":[39],"70":[39],"78":[39],"90":[39],"92":[39],"100":[39],"105":[39],"122":[39],"125":[39],"130":[39],"140":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatHubPanel.vue":{"30":[39],"50":[39],"51":[39],"61":[39],"62":[39],"63":[39],"66":[39],"72":[39],"100":[39],"101":[39],"136":[39],"138":[39],"144":[39],"150":[39],"159":[39],"164":[39],"174":[39],"175":[39],"181":[39],"196":[39],"200":[39],"214":[39],"218":[39],"222":[39],"243":[39],"254":[39],"266":[39],"278":[39],"279":[39],"280":[39],"281":[39],"282":[39],"294":[39],"308":[39],"312":[39],"322":[39],"324":[39],"334":[39],"336":[39],"361":[39],"372":[39],"382":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatOverlay.vue":{"9":[39],"18":[39],"19":[39],"26":[39],"31":[39],"39":[39],"42":[39],"51":[39],"59":[39],"60":[39],"68":[39],"72":[39],"76":[39],"81":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/CanvasChatSessionDropdown.vue":{"19":[39],"32":[39],"33":[39],"40":[39],"42":[39],"51":[39],"52":[39],"54":[39],"67":[39],"72":[39],"77":[39],"78":[39],"91":[39],"99":[39],"100":[39],"103":[39],"112":[39],"117":[39],"129":[39],"131":[39],"137":[39],"150":[39],"156":[39],"161":[39],"164":[39],"167":[39],"168":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatButtons.vue":{"11":[39],"14":[39],"27":[39],"33":[39],"40":[39],"41":[39]},"packages/frontend/editor-ui/src/features/ai/chatHub/components/ChatMarkdownChunk.vue":{"33":[39],"38":[39],"47":[39],"84":[39],"91":[39]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/components/Paywall/EvaluationsPaywall.vue":{"7":[39],"10":[39],"17":[39]},"packages/frontend/editor-ui/src/features/core/folders/components/FolderCard.vue":{"68":[39,40],"72":[40],"74":[39,40],"98":[39,40],"106":[39,40],"119":[39,40],"130":[39,40],"134":[39,40],"145":[40],"165":[40],"169":[39,40],"180":[39,40],"213":[39,40],"220":[39,40],"221":[39,40],"230":[39,40],"233":[39,40],"240":[39,40],"248":[39],"259":[39,40],"271":[39,40],"280":[39,40],"286":[39,40],"287":[39,40],"299":[40],"329":[39,40],"339":[39,40],"360":[39,40]},"packages/frontend/editor-ui/src/features/core/folders/folders.api.ts":{"11":[40],"23":[39,40],"57":[41,42],"100":[39]},"packages/frontend/editor-ui/src/features/execution/executions/composables/useExecutionDebugging.ts":{"39":[39,119],"43":[39,119],"54":[39,119],"55":[39,119],"62":[39,119],"72":[39,119],"89":[39,119],"108":[39,119],"114":[39,119],"118":[39,119],"162":[39,119],"168":[39]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeDetails.vue":{"19":[30,39],"28":[39],"30":[39],"39":[30,39],"41":[39],"43":[39],"74":[39],"79":[39],"97":[30,39],"115":[39],"118":[39]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeDocsLink.vue":{"9":[30,39],"11":[39],"14":[30,39],"23":[30,39]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeInfo.vue":{"17":[30,39],"29":[30,39],"33":[30,39],"41":[30,39],"43":[39],"48":[30,39],"65":[39],"101":[39],"109":[30,39],"114":[30,39],"119":[30,39],"130":[39],"132":[39],"138":[39],"144":[39],"145":[30,39],"148":[30,39],"156":[39],"163":[39],"168":[39],"169":[39],"172":[39]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeInstallHint.vue":{"10":[39],"11":[39]},"packages/frontend/editor-ui/src/features/settings/orchestration.ee/orchestration.store.ts":{"26":[39,102],"34":[39],"47":[39],"56":[39,102],"59":[39],"65":[39],"71":[39],"74":[39],"77":[39]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/CommunityNodeItem.vue":{"11":[30,39]},"packages/frontend/editor-ui/src/features/shared/nodeCreator/components/ItemTypes/LinkItem.vue":{"13":[39,129]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsDropdown.vue":{"64":[138,55],"65":[138,55],"70":[138,55],"71":[138,55],"74":[138,55],"78":[39,138,55],"87":[138,55],"88":[138],"96":[138,55],"104":[138],"122":[138,55],"126":[138],"131":[138,55],"133":[138,55],"136":[138],"152":[138,55],"153":[138,55],"154":[138,55],"163":[138,55],"172":[138,55],"183":[138],"190":[138,55],"199":[138],"200":[138],"206":[138,55],"240":[138],"247":[39,138,55],"255":[138,55],"265":[39,138,55]},"packages/frontend/editor-ui/src/features/shared/tags/useTagPermissions.ts":{"4":[138,55],"6":[138,55],"7":[138],"8":[138],"11":[39,138,55]},"packages/localhost-33587/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[64]},"packages/localhost-33587/assets/chunk-CC9Q-vWm.js":{"8":[64],"9":[64],"10":[64],"19":[64],"23":[64],"29":[64],"33":[64],"34":[64]},"packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.ts":{"31":[46,48],"81":[46,48],"116":[46,48],"125":[46,48],"130":[46,48],"142":[46,48],"170":[46,48],"171":[46,48],"188":[46,48],"206":[46,48],"265":[46,48],"299":[46,48],"315":[46,48]},"packages/localhost-41939/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[46]},"packages/localhost-41939/assets/chunk-CC9Q-vWm.js":{"8":[46],"9":[46],"10":[46],"19":[46],"23":[46],"29":[46],"33":[46],"34":[46]},"packages/workflow/src/extensions/array-extensions.ts":{"17":[124],"21":[124],"25":[124],"29":[124],"33":[124],"40":[124],"43":[124],"44":[124],"59":[124],"64":[124],"65":[124],"67":[124],"74":[124],"77":[124],"78":[124],"83":[124],"86":[124],"97":[124],"101":[124],"113":[124],"117":[124],"129":[124],"140":[124],"142":[124],"147":[124],"155":[124],"163":[124],"173":[124],"187":[124],"193":[124],"200":[124],"213":[124],"233":[124],"238":[124],"267":[124],"274":[124],"281":[124],"290":[124],"297":[124],"306":[124],"311":[124],"318":[124],"322":[124],"326":[124],"330":[124],"334":[124],"338":[124]},"packages/workflow/src/extensions/string-extensions.ts":{"126":[124],"157":[124],"161":[124],"165":[124],"169":[124],"173":[124],"215":[124],"219":[124],"232":[124],"254":[124],"262":[124],"270":[124],"281":[124],"295":[124],"305":[124],"312":[124],"318":[124],"322":[124],"326":[124],"337":[124],"341":[124],"345":[124],"368":[124],"375":[124],"383":[124],"401":[124],"409":[124],"418":[124],"429":[124],"435":[124],"439":[124]},"packages/frontend/editor-ui/src/app/utils/telemetryUtils.ts":{"5":[45,122,123,124,129,132,133],"13":[45,122,123,124,129,133],"14":[45,122,123,124,133],"21":[45,122,123,124,133],"27":[122,123,133],"28":[122,123,133],"71":[45,122,123,124,133]},"packages/@n8n/config/src/configs/ai.config.ts":{"6":[6],"34":[6]},"packages/@n8n/nodes-langchain/nodes/tools/ToolCalculator/ToolCalculator.node.ts":{"15":[6],"21":[6],"55":[6],"61":[6]},"packages/@n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts":{"46":[6,23,35],"72":[6,23,35],"92":[6,23,35],"176":[6,23,35],"329":[6,23,35],"334":[6,23,35]},"packages/@n8n/nodes-langchain/nodes/tools/ToolWikipedia/ToolWikipedia.node.ts":{"15":[6,129],"23":[6,129],"56":[6,129],"62":[6,129]},"packages/cli/src/controllers/password-reset.controller.ts":{"44":[155],"70":[155],"114":[155],"170":[155],"198":[155],"229":[155]},"packages/cli/src/middlewares/jitter.ts":{"14":[155],"18":[155],"21":[155]},"packages/cli/src/user-management/email/node-mailer.ts":{"19":[155],"48":[155],"84":[155]},"packages/@n8n/ai-utilities/src/node-catalog/discriminator-utils.ts":{"44":[82,63,148],"55":[82,63,148],"70":[82,63,148],"81":[82,63,148],"117":[82,63,148],"128":[82,63,148],"139":[82,63,148],"151":[82,63,148],"161":[82,63,148],"178":[82,63,148]},"packages/@n8n/ai-utilities/src/node-catalog/get.ts":{"17":[82],"44":[82],"57":[82],"59":[82],"73":[82],"97":[82],"110":[82],"120":[82],"157":[82],"186":[82],"223":[82],"248":[82],"258":[82],"261":[82],"262":[82],"311":[82],"312":[82],"329":[82],"339":[82],"341":[82],"346":[82],"389":[82],"489":[82],"503":[82],"531":[82],"601":[82]},"packages/@n8n/ai-utilities/src/node-catalog/lean-node-type.ts":{"62":[82,63,148],"66":[82,63,148],"88":[82,63,148]},"packages/@n8n/ai-utilities/src/node-catalog/node-type-parser.ts":{"39":[82,63,148],"48":[82,63,148],"64":[82,63,148],"80":[82,63,148],"87":[82,63,148],"109":[82,63,148],"118":[82,63,148],"126":[82,63,148],"145":[82,63,148]},"packages/@n8n/ai-utilities/src/node-catalog/resource-operation-extractor.ts":{"56":[82,63,148],"82":[82,63,148],"87":[82,63,148],"98":[82,63,148],"122":[82,63,148],"127":[82,63,148],"152":[82,63,148],"171":[82,63,148],"198":[82,63,148],"216":[82,63,148],"250":[82,63,148],"288":[82,63,148],"295":[82,63,148],"305":[82,63,148]},"packages/@n8n/ai-utilities/src/node-catalog/search-engine.ts":{"20":[82,63,148],"27":[82,63,148],"60":[82,63,148],"71":[82,63,148],"94":[82,63,148],"98":[82,63,148],"103":[82,63,148],"106":[82,63,148],"113":[82,63,148],"115":[82,63,148],"144":[82,63,148],"145":[82,63,148],"161":[82,63,148],"167":[82,63,148],"196":[82,63,148],"217":[82,63,148],"223":[82,63,148],"230":[82,63,148],"234":[82,63,148],"242":[82,63,148],"246":[82,63,148],"263":[82,63,148],"269":[82,63,148],"275":[82,63,148],"305":[82,63,148],"312":[82,63,148],"316":[82,63,148],"323":[82,63,148],"325":[82,63,148],"344":[82,63,148],"350":[82,63,148],"352":[82,63,148],"378":[82,63,148],"426":[82,63,148],"439":[82,63,148],"453":[82,63,148],"480":[82,63,148],"481":[82,63,148],"490":[82,63,148],"516":[82,63,148],"524":[82,63,148],"526":[82,63,148]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/item-list-output-parser.svg":{"11":[6]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/structured-output-parser.svg":{"11":[6,129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/vector-store-question-answer-tool.svg":{"11":[6]},"packages/localhost-45199/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[6,67]},"packages/localhost-45199/assets/chunk-CC9Q-vWm.js":{"8":[6,67],"9":[6,67],"10":[6,67],"19":[6,67],"23":[6,67],"29":[6,67],"33":[6,67],"34":[6,67]},"packages/localhost-45199/assets/shield-alt-DX72YG8n.js":{"8":[6,67]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/chat-memory-manager.svg":{"11":[67,110]},"packages/localhost-43571/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[17,48,102,52,143,144]},"packages/localhost-43571/assets/chunk-CC9Q-vWm.js":{"8":[17,48,102,52,143,144],"9":[17,48,102,52,143,144],"10":[17,48,102,52,143,144],"19":[17,48,102,52,143,144],"23":[17,48,102,52,143,144],"29":[17,48,102,52,143,144],"33":[17,48,102,52,143,144],"34":[17,48,102,52,143,144]},"packages/localhost-43571/assets/shield-alt-DX72YG8n.js":{"8":[17]},"packages/frontend/editor-ui/src/features/ai/instanceAi/components/InstanceAiThreadList.vue":{"28":[62],"54":[62],"72":[62],"78":[62],"95":[62],"98":[62],"104":[62],"107":[62],"119":[62],"126":[62],"136":[62],"143":[62],"158":[62],"177":[62],"178":[62],"180":[62],"183":[62],"192":[62],"195":[62],"197":[62],"207":[62],"208":[62],"215":[62],"216":[62],"218":[62],"232":[62]},"packages/localhost-38793/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[62]},"packages/localhost-38793/assets/chunk-CC9Q-vWm.js":{"8":[62],"9":[62],"10":[62],"19":[62],"23":[62],"29":[62],"33":[62],"34":[62]},"packages/@n8n/ai-workflow-builder.ee/src/code-builder/index.ts":{"14":[63,148],"21":[63,148],"22":[63,148],"24":[63,148]},"packages/cli/src/modules/data-table/data-table-proxy.service.ts":{"44":[63,148],"50":[63,148],"60":[63,148],"69":[63,148],"75":[63,148],"80":[63,148],"91":[63,148],"103":[63,148],"110":[63,148],"113":[63,148],"115":[63,148],"119":[63,148],"124":[63,148],"131":[63,148],"137":[63,148],"147":[63,148],"153":[63,148],"159":[63,148],"171":[63,148],"178":[63,148],"188":[63,148],"199":[63,148],"211":[63,148],"227":[63,148],"235":[63,148],"238":[63,148],"242":[63,148],"250":[63,148],"254":[63,148],"260":[63,148],"268":[63,148],"272":[63,148],"277":[63,148],"281":[63,148],"285":[63,148],"289":[63,148],"294":[63,148],"298":[63,148],"305":[63,148],"315":[63,148],"325":[63,148],"335":[63,148]},"packages/cli/src/modules/mcp/mcp-api-key.service.ts":{"24":[148],"30":[148],"53":[148],"68":[148],"102":[148],"111":[148],"124":[148],"140":[148],"141":[148]},"packages/cli/src/modules/mcp/mcp-server-middleware.service.ts":{"27":[63,148],"39":[63,148],"66":[63,148],"67":[63,148],"108":[63,148],"121":[63,148],"130":[63,148]},"packages/cli/src/modules/mcp/mcp.controller.ts":{"25":[63,148],"31":[63,148],"40":[63,148],"67":[63,148],"83":[63,148],"116":[63,148],"194":[63,148],"200":[63,148],"207":[63,148],"215":[63,148]},"packages/cli/src/modules/mcp/mcp.errors.ts":{"13":[148],"30":[148]},"packages/cli/src/modules/mcp/mcp.service.ts":{"113":[63,148],"147":[63,148],"166":[63,148],"205":[63,148],"206":[63,148],"444":[63,148],"508":[63,148],"606":[63,148],"628":[63,148],"636":[63,148],"651":[63,148],"665":[63,148],"676":[63,148],"699":[63,148],"714":[63,148]},"packages/cli/src/modules/mcp/mcp.settings.controller.ts":{"20":[23,63,148],"31":[23,63,148],"53":[23,63,148],"59":[23,63,148],"65":[23,63,148],"72":[23,63,148],"82":[23,63,148],"106":[23,63,148]},"packages/cli/src/modules/mcp/mcp.settings.service.ts":{"47":[23,63,148],"57":[23,63,148],"73":[23,63,148],"82":[23,63,148],"98":[23,63,148],"107":[23,63,148],"147":[23,63,148],"207":[23,63,148],"231":[23,63,148],"236":[23,63,148],"252":[23,63,148],"255":[23,63,148],"275":[23,63,148],"290":[23,63,148]},"packages/cli/src/modules/mcp/mcp.typeguards.ts":{"22":[63,148],"45":[63,148],"56":[63,148],"74":[63,148]},"packages/cli/src/modules/mcp/mcp.utils.ts":{"13":[63,148],"26":[63,148],"43":[63,148],"65":[63,148],"73":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/add-data-table-column.tool.ts":{"29":[63,148],"47":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/add-data-table-rows.tool.ts":{"30":[63,148],"49":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/create-data-table.tool.ts":{"35":[63,148],"54":[63,148],"72":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/delete-data-table-column.tool.ts":{"19":[63,148],"38":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/index.ts":{"1":[63,148],"2":[63,148],"3":[63,148],"5":[63,148],"6":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/rename-data-table-column.tool.ts":{"28":[63,148],"46":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/rename-data-table.tool.ts":{"19":[63,148],"37":[63,148]},"packages/cli/src/modules/mcp/tools/data-table/search-data-tables.tool.ts":{"28":[63,148],"47":[63,148],"73":[63,148],"79":[63,148]},"packages/cli/src/modules/mcp/tools/execute-workflow.tool.ts":{"98":[63,148],"121":[63,148],"197":[63,148],"234":[63,148],"277":[63,148],"355":[63,148],"373":[63,148],"426":[63,148],"453":[63,148],"464":[63,148],"488":[63,148]},"packages/cli/src/modules/mcp/tools/get-execution.tool.ts":{"65":[63,148],"85":[63,148],"207":[63,148],"240":[63,148],"244":[63,148]},"packages/cli/src/modules/mcp/tools/get-workflow-details.tool.ts":{"31":[63,148],"56":[63,148],"106":[63,148],"137":[63,148],"146":[63,148],"171":[63,148]},"packages/cli/src/modules/mcp/tools/get-workflow-history.tool.ts":{"61":[63,148],"81":[63,148],"136":[63,148],"147":[63,148]},"packages/cli/src/modules/mcp/tools/get-workflow-version.tool.ts":{"69":[63,148],"89":[63,148],"151":[63,148],"162":[63,148]},"packages/cli/src/modules/mcp/tools/list-credentials.tool.ts":{"90":[63,148],"109":[63,148],"163":[63,148],"193":[63,148]},"packages/cli/src/modules/mcp/tools/list-tags.tool.ts":{"60":[63,148],"78":[63,148],"113":[63,148],"120":[63,148]},"packages/cli/src/modules/mcp/tools/prepare-workflow-pin-data.tool.ts":{"57":[63,148],"79":[63,148],"137":[63,148],"147":[63,148],"150":[63,148],"223":[63,148]},"packages/cli/src/modules/mcp/tools/publish-workflow.tool.ts":{"40":[63,148],"61":[63,148],"78":[63,148]},"packages/cli/src/modules/mcp/tools/schemas.ts":{"12":[63,148],"17":[63,148],"18":[63,148],"21":[63,148],"25":[63,148],"50":[63,148]},"packages/cli/src/modules/mcp/tools/search-executions.tool.ts":{"64":[63,148],"84":[63,148],"134":[63,148]},"packages/cli/src/modules/mcp/tools/search-folders.tool.ts":{"35":[63,148],"55":[63,148],"93":[63,148]},"packages/cli/src/modules/mcp/tools/search-projects.tool.ts":{"62":[63,148],"82":[63,148],"114":[63,148],"115":[63,148],"119":[63,148],"127":[63,148],"135":[63,148],"142":[63,148]},"packages/cli/src/modules/mcp/tools/search-workflows.tool.ts":{"80":[63,148],"100":[63,148],"155":[63,148],"161":[63,148],"194":[63,148]},"packages/cli/src/modules/mcp/tools/test-workflow.tool.ts":{"58":[63,148],"81":[63,148],"150":[63,148],"183":[63,148],"184":[63,148],"254":[63,148]},"packages/cli/src/modules/mcp/tools/unpublish-workflow.tool.ts":{"32":[63,148],"53":[63,148],"69":[63,148]},"packages/cli/src/modules/mcp/tools/webhook-utils.ts":{"41":[148],"47":[148],"110":[148],"116":[148],"125":[148],"131":[148],"141":[148],"147":[148],"161":[148],"172":[148],"188":[148],"224":[148],"227":[148],"232":[148],"242":[148],"258":[148],"288":[148],"303":[148],"323":[148]},"packages/cli/src/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.ts":{"32":[63,148],"150":[63,148],"174":[63,148],"223":[63,148],"241":[63,148],"337":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/delete-workflow.tool.ts":{"27":[63,148],"47":[63,148],"65":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/explore-node-resources.tool.ts":{"80":[63,148],"101":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.ts":{"49":[63,148],"50":[63,148],"56":[63,148],"63":[63,148],"79":[63,148],"104":[63,148],"122":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.ts":{"38":[63,148],"57":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.ts":{"40":[63,148],"58":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/mcp-instructions.ts":{"22":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.ts":{"49":[63,148],"71":[63,148],"111":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.ts":{"30":[63,148],"49":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/update-workflow.tool.ts":{"166":[63,148],"171":[63,148],"185":[63,148],"187":[63,148],"283":[63,148],"346":[63,148],"390":[63,148],"395":[63,148],"396":[63,148],"411":[63,148],"435":[63,148],"465":[63,148],"486":[63,148],"496":[63,148],"539":[63,148],"564":[63,148],"585":[63,148],"594":[63,148],"604":[63,148],"608":[63,148],"636":[63,148],"670":[63,148],"683":[63,148],"698":[63,148],"701":[63,148],"703":[63,148],"704":[63,148],"710":[63,148],"732":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/validate-node.tool.ts":{"80":[63,148],"98":[63,148],"106":[63,148],"108":[63,148],"125":[63,148],"126":[63,148],"127":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.ts":{"51":[63,148],"70":[63,148],"78":[63,148],"91":[63,148]},"packages/cli/src/modules/mcp/tools/workflow-validation.utils.ts":{"20":[148],"51":[148]},"packages/cli/src/modules/source-control.ee/source-control-export.service.ee.ts":{"70":[65],"94":[65],"98":[65],"102":[65],"106":[65],"114":[65],"116":[65],"123":[65],"130":[65],"152":[65],"155":[65],"164":[65],"175":[65],"208":[65],"219":[65],"232":[65],"257":[65],"273":[65],"324":[65],"346":[65],"347":[65],"380":[65],"414":[65],"419":[65],"455":[65],"486":[65],"488":[65],"497":[65],"515":[65],"518":[65],"525":[65],"527":[65],"531":[65],"546":[65],"587":[65],"606":[65],"610":[65],"617":[65],"631":[65],"647":[65]},"packages/cli/src/modules/source-control.ee/source-control-git.service.ee.ts":{"46":[65],"56":[65],"79":[65],"116":[65],"129":[65],"133":[65],"186":[65],"190":[65],"205":[65],"212":[65],"227":[65],"283":[65],"298":[65],"314":[65],"347":[65],"355":[65],"364":[65],"365":[65],"379":[65],"388":[65],"399":[65],"411":[65],"423":[65],"431":[65],"443":[65],"460":[65],"474":[65],"488":[65],"495":[65],"509":[65],"524":[65],"525":[65],"533":[65]},"packages/cli/src/modules/source-control.ee/source-control-helper.ee.ts":{"42":[65],"66":[65],"74":[65],"97":[65],"124":[65],"154":[65],"158":[65],"162":[65],"169":[65],"173":[65],"177":[65],"181":[65],"185":[65],"203":[65],"212":[65],"225":[65],"245":[65],"257":[65],"263":[65],"280":[65],"285":[65],"286":[65],"325":[65],"334":[65],"338":[65],"339":[65],"343":[65],"351":[65],"355":[65],"357":[65],"361":[65],"368":[65],"370":[65],"372":[65],"374":[65],"376":[65],"380":[65],"387":[65],"388":[65],"390":[65],"392":[65],"402":[65],"419":[65],"456":[65],"471":[65],"479":[65],"480":[65],"482":[65],"499":[65],"518":[65],"522":[65],"537":[65]},"packages/cli/src/modules/source-control.ee/source-control-preferences.service.ee.ts":{"33":[65],"45":[65],"53":[65],"60":[65],"68":[65],"78":[65],"86":[65],"94":[65],"106":[65],"115":[65],"130":[65],"138":[65],"164":[65],"178":[65],"192":[65],"205":[65],"233":[65],"237":[65],"241":[65],"245":[65],"249":[65],"253":[65],"272":[65],"324":[65],"326":[65],"332":[65]},"packages/cli/src/modules/source-control.ee/source-control.controller.ee.ts":{"32":[65],"41":[65],"68":[65],"133":[65],"178":[65],"188":[65],"197":[65],"228":[65],"244":[65],"253":[65],"270":[65],"287":[65],"301":[65]},"packages/cli/src/modules/source-control.ee/source-control.service.ee.ts":{"70":[65],"87":[65],"102":[65],"111":[65],"124":[65],"147":[65],"156":[65],"186":[65],"217":[65],"266":[65],"275":[65],"288":[65],"289":[65],"292":[65],"308":[65],"317":[65],"321":[65],"337":[65],"364":[65],"365":[65],"376":[65],"395":[65],"396":[65],"415":[65],"418":[65],"485":[65],"510":[65],"515":[65],"519":[65],"533":[65],"548":[65],"579":[65],"646":[65],"647":[65],"653":[65]},"packages/@n8n/design-system/src/components/N8nColorPicker/ColorPicker.vue":{"21":[65],"34":[65],"59":[65]},"packages/frontend/editor-ui/src/features/integrations/sourceControl.ee/views/SettingsSourceControl.vue":{"43":[65],"44":[65],"55":[65],"86":[65],"115":[65],"133":[65],"144":[65],"153":[65],"174":[65],"178":[65],"206":[65],"284":[65],"285":[65],"335":[65],"345":[65],"349":[65],"426":[65],"444":[65],"449":[65],"450":[65],"467":[65],"489":[65],"496":[65],"515":[65],"517":[65],"536":[65]},"packages/localhost-34895/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[65]},"packages/localhost-34895/assets/chunk-CC9Q-vWm.js":{"8":[65],"9":[65],"10":[65],"19":[65],"23":[65],"29":[65],"33":[65],"34":[65]},"packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination-sentry.ee.ts":{"16":[48],"36":[48],"56":[48],"95":[48],"105":[48],"119":[48],"123":[48]},"packages/cli/src/controllers/orchestration.controller.ts":{"9":[102],"20":[102]},"packages/cli/src/scaling/worker-status.service.ee.ts":{"16":[102],"23":[102],"33":[102],"48":[102],"59":[102],"91":[102],"92":[102],"102":[102]},"packages/frontend/editor-ui/src/features/settings/orchestration.ee/components/WorkerList.vue":{"25":[102],"35":[102],"39":[102],"41":[102],"49":[102],"60":[102]},"packages/frontend/editor-ui/src/features/settings/orchestration.ee/views/WorkerView.vue":{"30":[102],"33":[102]},"packages/core/src/execution-engine/node-execution-context/utils/construct-execution-metadata.ts":{"8":[34,52,127],"13":[34,52,127]},"packages/nodes-base/nodes/HackerNews/GenericFunctions.ts":{"16":[91,52,122,123],"42":[91,52,122,123]},"packages/nodes-base/nodes/HackerNews/HackerNews.node.ts":{"264":[91,52,122,123]},"packages/@n8n/design-system/src/components/N8nIcon/custom/node-dirty.svg":{"11":"b:AAAAAEAAEAAAAABBAAAQACoCAAAA"},"packages/@n8n/design-system/src/components/N8nIcon/custom/triangle.svg":{"8":"b:BAAAAEAAEAAAAAABAACQACoCAAAA"},"packages/frontend/editor-ui/src/app/utils/json-schema.ts":{"5":[52],"9":[52],"12":[52],"25":[52],"32":[52],"35":[52]},"packages/nodes-base/nodes/Google/GenericFunctions.ts":{"75":[79,130,143],"129":[79,130,143]},"packages/nodes-base/nodes/Google/Sheet/GoogleSheets.node.ts":{"8":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v1/GenericFunctions.ts":{"20":[132,143],"72":[132,143],"96":[132,143],"99":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheet.ts":{"48":[132,143],"66":[132,143],"78":[132,143],"97":[132,143],"119":[132,143],"138":[132,143],"156":[132,143],"175":[132,143],"194":[132,143],"218":[132,143],"250":[132,143],"270":[132,143],"286":[132,143],"300":[132,143],"386":[132,143],"470":[132,143],"542":[132,143],"574":[132,143],"576":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v1/GoogleSheetsV1.node.ts":{"32":[132,143],"42":[132,143],"68":[132,143],"96":[132,143],"125":[132,143],"227":[132,143],"299":[132,143],"413":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/GoogleSheetsV2.node.ts":{"15":[132,143],"29":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts":{"9":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/append.operation.ts":{"213":[132,143],"326":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.ts":{"264":[132,143],"365":[132,143],"374":[132,143],"392":[132,143],"424":[132,143],"447":[132,143],"521":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/clear.operation.ts":{"160":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/create.operation.ts":{"77":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/delete.operation.ts":{"114":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/read.operation.ts":{"170":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/remove.operation.ts":{"7":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts":{"253":[132,143],"345":[132,143],"354":[132,143],"371":[132,143],"403":[132,143],"430":[132,143],"496":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/create.operation.ts":{"118":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/spreadsheet/delete.operation.ts":{"68":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/actions/utils/readOperation.ts":{"12":[132,143],"110":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts":{"39":[132,143],"47":[132,143],"58":[132,143],"74":[132,143],"93":[132,143],"117":[132,143],"136":[132,143],"149":[132,143],"165":[132,143],"178":[132,143],"186":[132,143],"204":[132,143],"220":[132,143],"264":[132,143],"287":[132,143],"333":[132,143],"367":[132,143],"380":[132,143],"394":[132,143],"411":[132,143],"441":[132,143],"446":[132,143],"461":[132,143],"480":[132,143],"494":[132,143],"545":[132,143],"627":[132,143],"675":[132,143],"803":[132,143],"833":[132,143],"835":[132,143],"857":[132,143],"880":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.ts":{"24":[132,143],"50":[132,143],"56":[132,143],"69":[132,143],"79":[132,143],"82":[132,143],"99":[132,143],"101":[132,143],"106":[132,143],"108":[132,143],"115":[132,143],"117":[132,143],"120":[132,143],"128":[132,143],"134":[132,143],"135":[132,143],"146":[132,143],"149":[132,143],"151":[132,143],"156":[132,143],"161":[132,143],"162":[132,143],"166":[132,143],"199":[132,143],"206":[132,143],"208":[132,143],"211":[132,143],"238":[132,143],"272":[132,143],"281":[132,143],"282":[132,143],"305":[132,143],"310":[132,143],"311":[132,143],"326":[132,143],"334":[132,143],"336":[132,143],"351":[132,143],"358":[132,143],"364":[132,143],"368":[132,143],"369":[132,143],"371":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/credentialTest.ts":{"9":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/listSearch.ts":{"13":[132,143],"42":[132,143],"51":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/loadOptions.ts":{"8":[132,143],"39":[132,143],"83":[132,143],"92":[132,143],"95":[132,143],"99":[132,143],"109":[132,143],"113":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/methods/resourceMapping.ts":{"12":[132,143],"52":[132,143],"54":[132,143]},"packages/nodes-base/nodes/Google/Sheet/v2/transport/index.ts":{"16":[132,143],"84":[132,143]},"packages/nodes-base/nodes/Hubspot/HubspotTrigger.node.ts":{"17":[143,144],"320":[143,144],"323":[143,144],"326":[143,144],"329":[143,144],"337":[143,144],"384":[143,144],"418":[143,144],"447":[143,144]},"packages/nodes-base/nodes/Hubspot/V1/GenericFunctions.ts":{"15":[143],"78":[143],"123":[143],"144":[143],"155":[143],"1953":[143],"1955":[143],"1960":[143],"1963":[143],"1978":[143],"1987":[143],"1997":[143],"2008":[143],"2024":[143]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/switch.svg":{"11":[85,90,110,115,127,130,143]},"packages/frontend/editor-ui/src/app/components/ImportWorkflowUrlModal.vue":{"10":[115,143],"16":[115,143],"20":[115,143],"24":[143],"29":[115,143],"32":[115,143],"45":[115,143],"60":[115,143],"68":[115,143],"76":[115,143]},"packages/core/src/execution-engine/node-execution-context/hook-context.ts":{"21":[144],"34":[144],"38":[144],"42":[144],"54":[144],"61":[144]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/edit-image.svg":{"11":[144]},"packages/@n8n/design-system/src/utils/markdown.ts":{"36":[144]},"packages/frontend/editor-ui/src/app/components/CollectionWorkflowCard.vue":{"12":[144],"13":[144],"17":[144]},"packages/frontend/editor-ui/src/app/components/WorkflowPreviewHost.vue":{"45":[118,144],"50":[118,144],"61":[118,144],"76":[118,144],"90":[118,144],"122":[118,144],"124":[118,144],"128":[118,144]},"packages/frontend/editor-ui/src/app/views/WorkflowOnboardingView.vue":{"17":[144],"55":[144]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplateFilters.vue":{"15":[144],"34":[144],"38":[144],"43":[144],"44":[144],"52":[144],"60":[144],"68":[144],"69":[144],"80":[144],"81":[144],"91":[144],"108":[144],"118":[144]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplatesInfoCard.vue":{"21":[144],"29":[144]},"packages/frontend/editor-ui/src/features/workflows/templates/components/TemplatesInfoCarousel.vue":{"11":[144],"37":[144],"64":[144],"65":[144],"67":[144],"73":[144],"74":[144],"76":[144],"82":[144],"95":[144],"101":[144],"112":[144],"113":[144],"115":[144]},"packages/frontend/editor-ui/src/features/workflows/templates/recommendations/components/RecommendedTemplateCard.vue":{"35":[144],"38":[144],"43":[144],"46":[144],"71":[144],"82":[144],"101":[144],"109":[144],"121":[144],"137":[144],"148":[144],"177":[144],"187":[144]},"packages/frontend/editor-ui/src/features/workflows/templates/views/TemplatesSearchView.vue":{"51":[144],"54":[144],"61":[144],"65":[144],"69":[144],"73":[144],"87":[144],"105":[144],"106":[144],"110":[144],"115":[144],"125":[144],"129":[144],"137":[144],"149":[144],"156":[144],"166":[144],"173":[144],"178":[144],"192":[144],"196":[144],"206":[144],"220":[144],"258":[144],"277":[144],"285":[144],"297":[144],"310":[144],"319":[144],"330":[144],"379":[144],"386":[144],"410":[144]},"packages/frontend/editor-ui/src/features/workflows/templates/views/TemplatesWorkflowView.vue":{"36":[144],"40":[144],"42":[144],"55":[144],"65":[144],"66":[144],"77":[144],"99":[144],"123":[144],"130":[144],"143":[144],"169":[144],"174":[144]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/n8n-trigger.svg":{"11":[84]},"packages/localhost-45789/assets/shield-alt-DX72YG8n.js":{"8":[16,84,106]},"packages/frontend/editor-ui/src/app/api/workflows.ee.ts":{"7":[57,105],"20":[57,41,42],"28":[57]},"packages/frontend/editor-ui/src/app/components/NodeExecutionErrorMessage.vue":{"4":[57],"5":[57]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/evaluation.api.ts":{"65":[57],"69":[57],"74":[57],"87":[57],"113":[57],"129":[57],"137":[57],"141":[57],"156":[57],"172":[57],"180":[57],"194":[57],"207":[57],"222":[57],"237":[57]},"packages/frontend/editor-ui/src/features/settings/environments.ee/environments.api.ts":{"10":[57,98,119,125,127,132],"21":[57,98],"28":[57,98],"40":[57,98]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalCanvasNodeSettings.vue":{"21":[57,96,112],"31":[57,96,112],"32":[57,96,112],"35":[57,96,112],"36":[57,96,112],"41":[57,96,112],"43":[57],"49":[57],"70":[57,96,112],"92":[57],"94":[57]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNdvActions.vue":{"6":[57]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNodeDetails.vue":{"25":[57],"28":[57],"34":[57],"35":[57],"43":[57],"56":[57],"62":[57],"66":[57],"70":[57],"78":[57],"81":[57],"107":[57],"119":[57],"122":[57]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/composables/useExpressionResolveCtx.ts":{"7":[4,57,96,112],"12":[4,57,96,112],"21":[4,57,96,112]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/experimentalNdv.utils.ts":{"5":[57],"25":[57],"26":[57]},"packages/@n8n/client-oauth2/src/client-oauth2-token.ts":{"27":[147,150,132],"42":[147,150,132],"74":[147,150,132],"131":[147,150,132]},"packages/@n8n/client-oauth2/src/credential-options.ts":{"22":[147,132]},"packages/@n8n/decorators/src/credential-resolver/errors.ts":{"5":[147],"16":[147],"27":[147]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-metadata-http-client.ts":{"31":[147],"51":[147],"64":[147]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-userinfo-identifier.ts":{"46":[147],"52":[147],"75":[147],"106":[147],"117":[147],"128":[147],"137":[147]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-utils.ts":{"11":[147]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/oauth-credential-resolver.ts":{"39":[147],"125":[147],"154":[147],"175":[147],"185":[147],"189":[147],"202":[147],"207":[147],"218":[147],"226":[147]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/storage/dynamic-credential-entry-storage.ts":{"10":[147],"14":[147],"31":[147],"53":[147],"66":[147]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers.controller.ts":{"39":[147,151],"43":[147,151],"53":[147,151],"64":[147,151],"67":[147,151],"78":[147,151],"110":[147,151],"131":[147,151],"151":[147,151],"189":[147,151]},"packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts":{"33":[147,23],"47":[147,23],"73":[147,23],"101":[147,23],"113":[147,23],"143":[147,23],"155":[147,23],"214":[147,23],"264":[147,23]},"packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.ts":{"33":[147],"49":[147],"59":[147],"93":[147],"130":[147],"134":[147],"138":[147],"154":[147],"212":[147],"238":[147],"253":[147],"266":[147]},"packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver.service.ts":{"48":[147,151],"64":[147,151],"89":[147,151],"92":[147,151],"97":[147,151],"100":[147,151],"107":[147,151],"112":[147,151],"113":[147,151],"121":[147,151],"134":[147,151],"192":[147,151],"206":[147,151],"220":[147,151],"251":[147,151],"279":[147,151],"286":[147,151],"300":[147,151]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-cors.service.ts":{"12":[147],"30":[147],"31":[147],"53":[147],"61":[147]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.ts":{"25":[147],"34":[147],"119":[147],"125":[147]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.ts":{"16":[147],"35":[147],"37":[147],"54":[147]},"packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential.service.ts":{"40":[147,150],"61":[147,150],"172":[147,150],"179":[147,150],"210":[147,150],"256":[147,150],"271":[147,150],"288":[147,150],"301":[147,150],"304":[147,150],"324":[147,150]},"packages/cli/src/modules/dynamic-credentials.ee/services/resolver-config-expression.service.ts":{"16":[147],"23":[147]},"packages/cli/src/modules/dynamic-credentials.ee/services/shared-fields.ts":{"19":[147],"38":[147],"60":[147],"67":[147]},"packages/cli/src/modules/dynamic-credentials.ee/workflow-status.controller.ts":{"24":[147],"39":[147],"60":[147],"86":[147],"94":[147]},"packages/workflow/src/node-parameters/node-parameter-value-type-guard.ts":{"13":[147],"27":[147],"38":[147],"54":[147],"66":[147],"84":[147],"120":[147]},"packages/cli/src/modules/dynamic-credentials.ee/context-establishment-hooks/bearer-token-extractor.ts":{"29":[150],"37":[150],"41":[150]},"packages/cli/src/modules/dynamic-credentials.ee/context-establishment-hooks/http-header-extractor.ts":{"24":[150],"32":[150],"53":[150],"75":[150],"101":[150],"105":[150]},"packages/core/src/execution-engine/node-execution-context/utils/request-helpers/oauth.ts":{"45":[150,132],"49":[150,132],"70":[150,132],"99":[150,132],"110":[150,132],"116":[150,132],"132":[150,132],"152":[150,132],"287":[150,132],"301":[150,132],"307":[150,132],"315":[150,132],"427":[150,132],"442":[150,132],"444":[150,132],"452":[150,132],"464":[150,132],"467":[150,132],"475":[150,132],"499":[150,132],"541":[150,132],"547":[150,132]},"packages/workflow/src/trigger-identity.ts":{"29":[150],"47":[150]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/McpServer.ts":{"72":[23,35,109],"84":[23,35,109],"93":[23,35,109],"106":[23,35,109],"115":[23,35,109],"116":[23,35,109],"119":[23,35,109],"134":[23,35,109],"150":[23,35,109],"210":[23,35,109],"237":[23,35,109],"261":[23,35,109],"265":[23,35,109],"275":[23,35,109],"291":[23,35,109],"309":[23,35,109],"361":[23,35,109],"366":[23,35,109],"371":[23,35,109],"375":[23,35,109],"379":[23,35,109],"383":[23,35,109],"385":[23,35,109],"391":[23,35,109],"398":[23,35,109],"416":[23,35,109],"420":[23,35,109],"423":[23,35,109],"426":[23,35,109],"430":[23,35,109],"434":[23,35,109],"438":[23,35,109],"442":[23,35,109],"446":[23,35,109],"457":[23,35,109],"466":[23,35,109],"482":[23,35,109],"499":[23,35,109],"509":[23,35,109],"512":[23,35,109],"519":[23,35,109],"531":[23,35,109],"547":[23,35,109],"604":[23,35,109],"607":[23,35,109]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/McpTrigger.node.ts":{"21":[23,35],"169":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/DirectExecutionStrategy.ts":{"6":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/ExecutionCoordinator.ts":{"10":[23,35],"14":[23,35],"22":[23,35],"26":[23,35],"30":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/execution/PendingCallsManager.ts":{"10":[23,35],"12":[23,35],"15":[23,35],"21":[23,35],"22":[23,35],"38":[23,35],"49":[23,35],"60":[23,35],"64":[23,35],"68":[23,35],"69":[23,35],"72":[23,35],"76":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/n8n-oauth2-auth.ts":{"3":[23,35],"7":[23,35],"16":[23,35],"31":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/protocol/MessageFormatter.ts":{"6":[23,35],"40":[23,35],"56":[23,35],"69":[23,35],"70":[23,35],"74":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/protocol/MessageParser.ts":{"11":[23,35],"20":[23,35],"30":[23,35],"40":[23,35],"49":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/session/InMemorySessionStore.ts":{"5":[23,35],"11":[23,35],"16":[23,35],"21":[23,35],"26":[23,35],"30":[23,35],"34":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/session/SessionManager.ts":{"18":[23,35,109],"20":[23,35,109],"35":[23,35,109],"43":[23,35,109],"45":[23,35,109],"46":[23,35,109],"49":[23,35,109],"53":[23,35,109],"56":[23,35,109],"60":[23,35,109],"64":[23,35,109],"68":[23,35,109],"72":[23,35,109],"76":[23,35,109],"80":[23,35,109],"84":[23,35,109]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/transport/StreamableHttpTransport.ts":{"17":[23,35],"32":[23,35],"37":[23,35],"49":[23,35],"54":[23,35]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/transport/TransportFactory.ts":{"13":[23,35],"17":[23,35],"23":[23,35],"30":[23,35],"35":[23,35]},"packages/@n8n/nodes-langchain/utils/schemaParsing.ts":{"9":[23,35],"10":[23,35],"36":[23,35],"51":[23,35],"55":[23,35]},"packages/cli/src/modules/dynamic-credentials.ee/context-establishment-hooks/n8n-oauth/n8n-oauth-extractor.ts":{"18":[23],"31":[23],"37":[23]},"packages/cli/src/modules/dynamic-credentials.ee/context-establishment-hooks/n8n-oauth/n8n-oauth-seeder.ts":{"11":[23],"18":[23]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/n8n-identifier.ts":{"47":[23],"52":[23],"56":[23]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/n8n-credential-resolver.ts":{"22":[23],"40":[23],"68":[23],"88":[23],"102":[23],"106":[23],"110":[23],"121":[23],"128":[23]},"packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/storage/dynamic-credential-user-entry-storage.ts":{"14":[23],"26":[23],"52":[23],"81":[23],"100":[23]},"packages/cli/src/modules/dynamic-credentials.ee/services/authorize-intent.service.ts":{"31":[23],"33":[23],"42":[23],"46":[23]},"packages/cli/src/modules/dynamic-credentials.ee/services/credential-check-proxy.service.ts":{"19":[23],"28":[23],"46":[23],"67":[23],"79":[23]},"packages/cli/src/modules/mcp/mcp-protected-resource.ts":{"47":[23,63],"52":[23,63],"57":[23,63],"63":[23,63],"67":[23,63]},"packages/cli/src/modules/oauth-server/oauth-authorization-code.service.ts":{"17":[23,63],"23":[23,63],"53":[23,63],"81":[23,63],"109":[23,63],"136":[23,63],"150":[23,63]},"packages/cli/src/modules/oauth-server/oauth-consent.controller.ts":{"13":[23,63],"20":[23,63],"62":[23,63],"101":[23,63],"108":[23,63],"115":[23,63]},"packages/cli/src/modules/oauth-server/oauth-consent.service.ts":{"26":[23,63],"40":[23,63],"92":[23,63]},"packages/cli/src/modules/oauth-server/oauth-server.service.ts":{"42":[23,63],"53":[23,63],"55":[23,63],"82":[23,63],"105":[23,63],"110":[23,63],"128":[23,63],"141":[23,63],"176":[23,63],"192":[23,63],"209":[23,63],"213":[23,63],"272":[23,63],"282":[23,63],"343":[23,63],"357":[23,63],"364":[23,63],"376":[23,63],"384":[23,63],"412":[23,63],"419":[23,63],"429":[23,63],"460":[23,63]},"packages/cli/src/modules/oauth-server/oauth-session.service.ts":{"24":[23,63],"29":[23,63],"45":[23,63],"52":[23,63],"59":[23,63]},"packages/cli/src/modules/oauth-server/oauth-token.service.ts":{"40":[23,63],"49":[23,63],"53":[23,63],"84":[23,63],"90":[23,63],"106":[23,63],"111":[23,63],"171":[23,63],"178":[23,63],"214":[23,63],"275":[23,63],"290":[23,63],"314":[23,63],"326":[23,63],"340":[23,63],"351":[23,63],"370":[23,63]},"packages/cli/src/modules/oauth-server/oauth.controller.ts":{"42":[23,63],"67":[23,63],"114":[23,63],"120":[23,63],"137":[23,63],"156":[23,63],"187":[23,63],"202":[23,63]},"packages/cli/src/modules/oauth-server/oauth.helpers.ts":{"13":[23,63],"34":[23,63]},"packages/cli/src/modules/oauth-server/protected-resource-resolvers/utils.ts":{"8":[23,63],"15":[23,63],"35":[23,63]},"packages/cli/src/modules/oauth-server/protected-resource-resolvers/workflow-mcp-trigger-resource.resolver.ts":{"20":[23,63],"32":[23,63],"41":[23,63],"84":[23,63],"102":[23,63],"103":[23,63],"106":[23,63]},"packages/cli/src/services/oauth-token-verifier-proxy.service.ts":{"54":[23,63],"57":[23,63],"61":[23,63]},"packages/cli/src/services/protected-resource.registry.ts":{"97":[23,63],"110":[23,63],"112":[23,63],"116":[23,63],"120":[23,63],"125":[23,63],"142":[23,63],"172":[23,63],"178":[23,63],"183":[23,63],"199":[23,63],"208":[23,63]},"packages/cli/src/services/trigger-auth-identity-seeder-proxy.service.ts":{"12":[23],"14":[23],"18":[23]},"packages/cli/src/modules/oauth-server/oauth.errors.ts":{"8":[63],"20":[63],"28":[63],"35":[63]},"packages/cli/src/modules/oauth-server/protected-resource-resolvers/workflow-mcp-test-trigger-resource.resolver.ts":{"20":[63],"31":[63],"40":[63],"65":[63],"83":[63],"84":[63],"87":[63]},"packages/community-packages.controller.ts":{"9":[30],"13":[30],"21":[30],"27":[30],"35":[30]},"packages/community-packages.lifecycle.service.ts":{"35":[30],"37":[30],"49":[30],"60":[30],"66":[30],"110":[30],"209":[30],"225":[30],"233":[30],"251":[30],"286":[30],"296":[30],"311":[30],"318":[30],"337":[30],"374":[30],"388":[30]},"packages/core/src/errors/index.ts":{"5":[30],"8":[30],"12":[30]},"packages/core/src/errors/unrecognized-node-type.error.ts":{"4":[30]},"packages/frontend/editor-ui/src/features/settings/communityNodes/communityNodes.utils.ts":{"10":[30]},"packages/frontend/editor-ui/src/features/settings/communityNodes/components/nodeCreator/CommunityNodeFooter.vue":{"15":[30],"32":[30],"52":[30],"57":[30],"72":[30],"73":[30],"79":[30],"80":[30]},"packages/localhost-41017/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[30,32,88,93,96,118,129]},"packages/localhost-41017/assets/chunk-CC9Q-vWm.js":{"8":[30,32,88,93,96,118,129],"9":[30,32,88,93,96,118,129],"10":[30,32,88,93,96,118,129],"19":[30,32,88,93,96,118,129],"23":[30,32,88,93,96,118,129],"29":[30,32,88,93,96,118,129],"33":[30,32,88,93,96,118,129],"34":[30,32,88,93,96,118,129]},"packages/nodes-base/nodes/EmailSend/EmailSend.node.ts":{"8":[31]},"packages/nodes-base/nodes/EmailSend/v1/EmailSendV1.node.ts":{"135":[31],"142":[31]},"packages/nodes-base/nodes/EmailSend/v2/EmailSendV2.node.ts":{"88":[31],"101":[31]},"packages/nodes-base/nodes/EmailSend/v2/send.operation.ts":{"185":[31]},"packages/nodes-base/nodes/EmailSend/v2/sendAndWait.operation.ts":{"27":[31]},"packages/nodes-base/nodes/EmailSend/v2/utils.ts":{"20":[31],"51":[31]},"packages/nodes-base/utils/binary.ts":{"32":[31,36,38],"82":[31,36,38],"134":[31,36,38],"150":[31,36,38],"170":[31,36,38],"174":[31,36,38],"184":[31,36,38],"213":[31,36,38],"216":[31,36,38]},"packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataPaginationBar.vue":{"12":[88,125,127],"16":[88,125,127],"28":[88],"39":[88,125,127],"40":[88,125,127]},"packages/frontend/editor-ui/src/app/components/FocusPanel.vue":{"57":[96,112],"89":[96,112],"93":[96,112],"113":[96,112],"129":[96,112],"137":[96,112],"140":[96,112],"142":[96,112],"196":[96,112],"202":[96,112],"213":[96,112],"215":[96,112],"233":[96,112],"235":[112],"241":[112],"369":[96,112],"373":[96,112],"374":[96,112],"395":[96,112],"601":[112],"604":[112]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue":{"19":[4,96,112],"39":[4,96,112],"43":[4,96,112],"45":[112],"54":[112],"80":[4,96,112],"87":[96,112],"96":[4,96,112],"111":[112]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalFocusPanelHeader.vue":{"18":[96,112],"27":[96,112],"28":[96,112],"32":[96,112]},"packages/frontend/editor-ui/src/features/workflows/canvas/experimental/components/ExperimentalNodeDetailsDrawer.vue":{"21":[96,112],"26":[96,112],"27":[96],"33":[96,112],"36":[96,112],"37":[96],"46":[96,112],"51":[96],"53":[96],"58":[96]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryContent.vue":{"40":[118],"55":[118],"70":[118],"81":[118],"84":[118],"97":[118],"101":[118],"107":[118],"129":[118],"130":[118],"135":[118],"150":[118],"152":[118],"172":[118]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryList.vue":{"22":[118],"49":[118],"61":[118],"73":[118],"82":[118],"86":[118],"92":[118],"119":[118],"151":[118],"179":[118],"184":[118]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryListItem.vue":{"26":[118],"58":[118],"63":[118],"74":[118],"83":[118],"99":[118],"165":[118],"172":[118],"203":[118],"211":[118],"214":[118]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/views/WorkflowHistory.vue":{"61":[118],"78":[118],"81":[118],"92":[118],"93":[118],"100":[118],"101":[118],"106":[118],"112":[118],"117":[118],"127":[118],"128":[118],"143":[118],"154":[118],"169":[118],"177":[118],"181":[118],"199":[118],"228":[118],"572":[118],"587":[118],"624":[118],"643":[118]},"packages/@n8n/nodes-langchain/nodes/embeddings/EmbeddingsHuggingFaceInference/EmbeddingsHuggingFaceInference.node.ts":{"15":[129],"85":[129],"93":[129],"119":[129]},"packages/@n8n/nodes-langchain/nodes/memory/MemoryXata/MemoryXata.node.ts":{"23":[129],"105":[129]},"packages/@n8n/nodes-langchain/nodes/output_parser/OutputParserStructured/OutputParserStructured.node.ts":{"30":[129],"196":[129]},"packages/@n8n/nodes-langchain/nodes/text_splitters/TextSplitterTokenSplitter/TextSplitterTokenSplitter.node.ts":{"13":[129],"62":[129]},"packages/@n8n/nodes-langchain/nodes/text_splitters/TextSplitterTokenSplitter/TokenTextSplitter.ts":{"16":[129],"28":[129],"36":[129]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreQdrant/Qdrant.utils.ts":{"9":[129],"28":[129]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreSupabase/VectorStoreSupabase.node.ts":{"67":[129],"84":[129]},"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts":{"22":[129],"68":[129],"127":[129]},"packages/@n8n/nodes-langchain/nodes/vector_store/shared/methods/listSearch.ts":{"10":[129],"19":[129],"27":[129],"58":[129],"65":[129],"73":[129],"87":[129],"95":[129],"102":[129]},"packages/nodes-base/credentials/NotionApi.credentials.ts":{"33":[129]},"packages/nodes-base/nodes/E2eTest/E2eTest.node.ts":{"175":[129,132,133],"180":[129,132,133],"188":[129,132,133],"201":[129,132,133],"207":[129,132,133]},"packages/nodes-base/nodes/E2eTest/mock.ts":{"66":[129,132,133]},"packages/localhost-33687/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[31]},"packages/localhost-33687/assets/chunk-CC9Q-vWm.js":{"8":[31],"9":[31],"10":[31],"19":[31],"23":[31],"29":[31],"33":[31],"34":[31]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/contextual-compression-retriever.svg":{"11":[129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/guardrails.svg":{"11":[129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/multiquery-retriever.svg":{"11":[129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/sentiment-analysis.svg":{"11":[129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/summarization-chain.svg":{"11":[129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/text-classifier.svg":{"11":[129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/token-splitter.svg":{"11":[129]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/workflow-retriever.svg":{"11":[129]},"packages/localhost-41017/assets/shield-alt-DX72YG8n.js":{"8":[129]},"packages/cli/src/modules/mcp-registry/mcp-registry-node-loader.ts":{"52":[28],"57":[28],"61":[28],"71":[28],"109":[28],"115":[28],"121":[28],"129":[28],"134":[28],"138":[28],"142":[28]},"packages/cli/src/modules/mcp-registry/mcp-registry-test.controller.ts":{"17":[28],"23":[28],"29":[28],"38":[28]},"packages/cli/src/modules/mcp-registry/node-description-transform.ts":{"30":[28],"37":[28],"45":[28],"58":[28],"73":[28],"93":[28],"127":[28],"140":[28],"152":[28],"163":[28],"181":[28],"202":[28],"205":[28],"208":[28],"226":[28],"228":[28],"238":[28],"239":[28],"240":[28],"250":[28],"255":[28],"265":[28],"282":[28]},"packages/cli/src/modules/mcp-registry/registry/mcp-registry.service.ts":{"35":[28],"47":[28],"60":[28],"67":[28],"72":[28],"78":[28],"85":[28],"94":[28],"99":[28],"104":[28],"113":[28],"117":[28],"122":[28],"131":[28],"136":[28],"150":[28],"180":[28],"185":[28],"186":[28],"188":[28],"189":[28],"191":[28],"192":[28],"206":[28],"217":[28],"229":[28],"253":[28],"257":[28],"261":[28]},"packages/cli/src/modules/mcp-registry/registry/mcp-registry.types.ts":{"80":[28],"97":[28]},"packages/localhost-39619/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[28]},"packages/localhost-39619/assets/chunk-CC9Q-vWm.js":{"8":[28],"9":[28],"10":[28],"19":[28],"23":[28],"29":[28],"33":[28],"34":[28]},"packages/localhost-39619/assets/shield-alt-DX72YG8n.js":{"8":[28]},"packages/@n8n/nodes-langchain/nodes/mcp/McpTrigger/transport/SSETransport.ts":{"10":[35],"17":[35],"22":[35]},"packages/cli/src/errors/response-errors/webhook-not-found.error.ts":{"3":[145,35],"36":[145,35]},"packages/@n8n/backend-common/src/utils/fs.ts":{"3":[0,9,149,76,38],"13":[0,9,149,76,38]},"packages/nodes-base/nodes/Files/ConvertToFile/ConvertToFile.node.ts":{"107":[38]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/iCall.operation.ts":{"16":[38]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/spreadsheet.operation.ts":{"94":[38]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/toBinary.operation.ts":{"105":[38]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/toJson.operation.ts":{"90":[38],"102":[38]},"packages/nodes-base/nodes/Files/ConvertToFile/actions/toText.operation.ts":{"78":[38]},"packages/nodes-base/nodes/ICalendar/createEvent.operation.ts":{"275":[38]},"packages/nodes-base/nodes/RespondToWebhook/RespondToWebhook.node.ts":{"359":[146,149,38,159,139],"367":[146,149,38,159,139],"391":[146,149,38,159,139],"471":[146,149,38,159,139],"537":[146,149,38,159,139]},"packages/nodes-base/nodes/RespondToWebhook/utils/binary.ts":{"5":[146,38,159,139],"16":[146,38,159,139]},"packages/nodes-base/nodes/RespondToWebhook/utils/outputs.ts":{"1":[146,38,159,139]},"packages/localhost-42177/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[38,90,105,109,120,122,140]},"packages/localhost-42177/assets/chunk-CC9Q-vWm.js":{"8":[38,90,105,109,120,122,140],"9":[38,90,105,109,120,122,140],"10":[38,90,105,109,120,122,140],"19":[38,90,105,109,120,122,140],"23":[38,90,105,109,120,122,140],"29":[38,90,105,109,120,122,140],"33":[38,90,105,109,120,122,140],"34":[38,90,105,109,120,122,140]},"packages/localhost-42177/assets/shield-alt-DX72YG8n.js":{"8":[38,109]},"packages/frontend/editor-ui/src/app/components/WorkflowShareModal.ee.vue":{"42":[103,105,55],"60":[103,105,55],"63":[103,105,55],"64":[103,105,55],"65":[105,55],"68":[103,105,55],"71":[103,105,55],"74":[103,105,55],"86":[103,105,55],"90":[103,105,55],"92":[103,105,55],"111":[103,105,55],"115":[103,105,55],"127":[105,55],"130":[103],"132":[103,105,55],"137":[103,105,55],"138":[103,105,55],"154":[105],"161":[105],"175":[105],"182":[105],"217":[105],"241":[103,105,55],"256":[103,105,55],"261":[105],"267":[103,105,55],"279":[103,105,55],"323":[103],"324":[103],"327":[103],"360":[103,105,55],"372":[103,105,55],"374":[103,105,55],"377":[103],"386":[105,55]},"packages/@n8n/db/src/repositories/test-run.repository.ee.ts":{"18":[106],"22":[106],"45":[106],"53":[106],"57":[106],"62":[106],"71":[106],"82":[106],"89":[106],"97":[106],"101":[106],"120":[106],"133":[106],"145":[106],"155":[106],"170":[106],"180":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/OpenAi.node.ts":{"12":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/binary-data.ts":{"11":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/description.ts":{"3":[106],"20":[106],"38":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/modelFiltering.ts":{"9":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/polling.ts":{"4":[106],"34":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/utils.ts":{"17":[106],"27":[106],"39":[106],"50":[106],"58":[106],"66":[106],"88":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/methods/listSearch.ts":{"13":[106],"36":[106],"45":[106],"46":[106],"49":[106],"63":[106],"69":[106],"75":[106],"82":[106],"85":[106],"89":[106],"92":[106],"96":[106],"121":[106],"126":[106],"130":[106],"173":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/methods/loadOptions.ts":{"5":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/transport/index.ts":{"15":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/OpenAiV1.node.ts":{"22":[106],"82":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/create.operation.ts":{"176":[106],"185":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/deleteAssistant.operation.ts":{"18":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/list.operation.ts":{"25":[106],"62":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/message.operation.ts":{"157":[106],"164":[106],"224":[106],"231":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/assistant/update.operation.ts":{"120":[106],"126":[106],"132":[106],"207":[106],"213":[106],"214":[106],"217":[106],"223":[106],"224":[106],"228":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/audio/generate.operation.ts":{"134":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/audio/transcribe.operation.ts":{"58":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/audio/translate.operation.ts":{"50":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/descriptions.ts":{"3":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/file/deleteFile.operation.ts":{"51":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/file/list.operation.ts":{"53":[106],"63":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/file/upload.operation.ts":{"57":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/image/analyze.operation.ts":{"131":[106],"158":[106],"172":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/image/generate.operation.ts":{"255":[106],"291":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/router.ts":{"16":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/text/classify.operation.ts":{"53":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v1/actions/text/message.operation.ts":{"240":[106],"244":[106],"360":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/OpenAiV2.node.ts":{"23":[106],"92":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/audio/generate.operation.ts":{"134":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/audio/transcribe.operation.ts":{"58":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/audio/translate.operation.ts":{"50":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/create.operation.ts":{"82":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/get.operation.ts":{"27":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/remove.operation.ts":{"27":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/conversation/update.operation.ts":{"34":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/descriptions.ts":{"3":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/file/deleteFile.operation.ts":{"51":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/file/list.operation.ts":{"62":[106],"72":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/file/upload.operation.ts":{"65":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/image/analyze.operation.ts":{"133":[106],"157":[106],"169":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/image/edit.operation.ts":{"584":[106],"618":[106],"695":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/image/generate.operation.ts":{"73":[106],"118":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/router.ts":{"17":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/text/classify.operation.ts":{"58":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/text/helpers/responses.ts":{"14":[106],"16":[106],"19":[106],"22":[106],"25":[106],"31":[106],"106":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/text/response.operation.ts":{"583":[106],"587":[106],"629":[106],"632":[106],"652":[106],"659":[106],"717":[106],"719":[106],"736":[106]},"packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/v2/actions/video/generate.operation.ts":{"92":[106],"132":[106],"135":[106]},"packages/cli/src/evaluation.ee/test-runs.controller.ee.ts":{"19":[106],"27":[106],"50":[106],"68":[106],"77":[106],"90":[106],"99":[106],"113":[106],"132":[106],"154":[106]},"packages/cli/src/execution-lifecycle/save-execution-progress.ts":{"8":[120]},"packages/nodes-base/nodes/Filter/Filter.node.ts":{"8":[87,120]},"packages/nodes-base/nodes/Filter/V1/FilterV1.node.ts":{"17":[87,120],"310":[87,120]},"packages/nodes-base/nodes/Filter/V1/GenericFunctions.ts":{"5":[87,120],"8":[87,120],"13":[87,120],"14":[87,120],"15":[87,120],"17":[87,120],"19":[87,120],"21":[87,120],"23":[87,120],"24":[87,120],"25":[87,120],"26":[87,120],"28":[87,120],"30":[87,120],"32":[87,120],"34":[87,120],"36":[87,120],"42":[87,120],"50":[87,120],"64":[87,120],"81":[87,120]},"packages/nodes-base/nodes/Filter/V2/FilterV2.node.ts":{"20":[87,120],"95":[87,120],"99":[87,120]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/filter.svg":{"11":[87,120]},"packages/nodes-base/nodes/StopAndError/StopAndError.node.ts":{"82":[1,2]},"packages/nodes-base/nodes/StopAndError/utils.ts":{"14":[1,2],"18":[1,2]},"packages/@n8n/design-system/src/components/AskAssistantButton/AskAssistantButton.vue":{"8":[1,2],"26":[1,2]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/CodeDiffMessage.vue":{"19":[2],"20":[2],"32":[2],"40":[2],"41":[2]},"packages/@n8n/design-system/src/components/CodeDiff/CodeDiff.vue":{"10":[2],"43":[2],"48":[2],"85":[2],"93":[2],"120":[2],"121":[2],"137":[2],"138":[2]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/stop-and-error.svg":{"11":[1,2]},"packages/frontend/editor-ui/src/app/utils/forceParse.ts":{"9":[2,116,123]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useCodeDiff.ts":{"31":[2],"41":[2],"43":[2],"64":[2],"68":[2],"74":[2],"87":[2],"133":[2]},"packages/localhost-37029/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[2,12,75,80,91,135]},"packages/localhost-37029/assets/chunk-CC9Q-vWm.js":{"8":[2,12,75,80,91,135],"9":[2,12,75,80,91,135],"10":[2,12,75,80,91,135],"19":[2,12,75,80,91,135],"23":[2,12,75,80,91,135],"29":[2,12,75,80,91,135],"33":[2,12,75,80,91,135],"34":[2,12,75,80,91,135]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/composables/useWorkflowEvaluationState.ts":{"25":[106],"26":[106],"51":[106]},"packages/frontend/editor-ui/src/features/ai/evaluation.ee/views/EvaluationsRootView.vue":{"44":[106],"101":[106],"118":[106]},"packages/core/src/utils/serialized-buffer.ts":{"10":[0,9,149],"14":[0,9,149]},"packages/frontend/editor-ui/src/app/components/Badge.vue":{"8":[12],"17":[12]},"packages/frontend/editor-ui/src/app/components/VersionCard.vue":{"13":[12],"17":[12]},"packages/frontend/editor-ui/src/features/shared/editors/components/CodeNodeEditor/completer.ts":{"23":[75],"27":[75]},"packages/localhost-37029/assets/shield-alt-DX72YG8n.js":{"8":[75]},"packages/@n8n/api-types/src/dto/data-table/delete-data-table-rows.dto.ts":{"7":[80],"52":[80]},"packages/@n8n/api-types/src/dto/data-table/update-data-table-row.dto.ts":{"10":[80],"18":[80]},"packages/frontend/editor-ui/src/app/components/common/SelectedItemsInfo.vue":{"17":[80],"24":[80],"28":[80],"32":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/ElDatePickerCellEditor.vue":{"7":[80],"24":[80],"30":[80],"36":[80],"43":[80],"45":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/components/dataGrid/NullEmptyCellRenderer.vue":{"2":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/composables/useDatePickerCommon.ts":{"11":[80],"17":[80],"22":[80],"35":[80],"60":[80],"67":[80],"84":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/utils/typeUtils.ts":{"13":[80],"49":[80]},"packages/frontend/editor-ui/src/features/core/dataTable/utils.ts":{"1":[80],"6":[80]},"packages/@n8n/api-types/src/dto/folders/list-folder-query.dto.ts":{"46":[41,42],"74":[41,42],"75":[41,42],"83":[41,42],"84":[41,42],"93":[41,42],"102":[41,42]},"packages/cli/src/services/workflow-loader.service.ts":{"7":[42,137],"9":[42,137]},"packages/core/src/execution-engine/node-execution-context/local-load-options-context.ts":{"16":[42,137],"23":[42,137],"42":[42,137],"69":[42,137]},"packages/core/src/execution-engine/node-execution-context/workflow-node-context.ts":{"16":[42,137],"22":[42,137]},"packages/workflow/src/node-parameters/path-utils.ts":{"10":[42,137]},"packages/@n8n/design-system/src/components/N8nIcon/svgContentDirective.ts":{"13":[42],"21":[42]},"packages/@n8n/design-system/src/components/N8nIconPicker/IconColorPicker.vue":{"15":[42],"63":[42],"65":[42],"81":[42],"92":[42],"100":[42]},"packages/@n8n/design-system/src/components/N8nIconPicker/SkinTonePicker.vue":{"10":[42],"29":[42],"39":[42],"50":[42],"58":[42]},"packages/@n8n/design-system/src/components/N8nIconPicker/useIconPickerVirtualRows.ts":{"30":[42],"40":[42],"60":[42],"79":[42]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectIcon.vue":{"35":[42]},"packages/frontend/editor-ui/src/features/core/folders/components/MoveToFolderDropdown.vue":{"40":[41,42],"41":[41,42],"42":[41,42],"54":[41,42],"94":[41,42],"95":[41,42],"105":[41,42],"109":[41,42],"128":[41,42],"130":[41,42],"132":[41,42],"137":[41,42],"141":[41,42]},"packages/frontend/editor-ui/src/features/core/folders/components/MoveToFolderModal.vue":{"65":[41,42],"81":[41,42],"84":[41,42],"90":[41,42],"100":[41,42],"101":[41,42],"105":[42],"108":[41,42],"109":[42],"127":[41,42],"130":[41,42],"134":[41,42],"143":[41,42],"153":[41,42],"167":[41,42],"168":[41,42],"174":[41,42],"175":[41,42],"182":[41,42],"186":[41],"192":[41,42],"200":[41,42],"379":[41,42],"381":[41,42],"386":[41,42],"390":[41,42],"417":[41,42],"427":[41,42],"436":[41,42],"438":[41,42],"452":[41,42],"457":[41,42],"478":[41,42],"497":[42],"506":[42],"532":[42],"556":[41,42]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/ResourceMapper.vue":{"51":[42,132,133,137],"91":[133],"111":[42,132,133,137],"113":[133],"131":[133],"143":[42,132,133,137],"145":[133],"157":[42,132,133,137],"193":[133],"233":[133],"237":[42,132,133,137],"244":[42,132,133,137],"248":[42,132,133,137],"252":[42,132,133,137],"256":[42,132,133,137],"264":[42,132,133,137],"274":[133],"284":[133],"300":[42,132,133,137],"303":[133],"311":[42,137],"318":[42,132,133,137],"343":[42,132,133,137],"368":[42,132,133,137],"391":[42,132,133,137],"399":[133],"400":[133],"433":[42,132,133,137],"436":[133],"456":[42,132,133,137],"469":[42,132,133,137],"475":[133],"486":[133],"506":[133],"512":[133],"520":[133],"521":[133],"538":[133],"585":[42,132,133,137],"597":[42,132,133,137],"603":[133],"614":[42,132,133,137],"647":[133],"650":[42,137],"683":[42,137]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/WorkflowSelectorParameterInput/WorkflowSelectorParameterInput.vue":{"59":[42,137],"96":[42,137],"120":[42,137],"130":[42,137],"144":[42,137],"156":[42,137],"164":[42,137],"168":[42,137],"175":[137],"203":[42],"208":[42],"229":[42,137],"245":[42,137],"252":[137],"256":[42,137],"266":[42,137],"267":[42,137],"279":[42,137],"283":[42],"288":[42],"321":[42,137],"367":[42,137],"385":[42,137],"387":[42,137],"393":[42,137],"410":[42,137],"446":[42,137],"470":[42,137]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useWorkflowResourceLocatorDropdown.ts":{"4":[42,137],"11":[42],"19":[42],"23":[42]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useWorkflowResourceLocatorModes.ts":{"12":[42,137],"19":[42,137],"32":[42,137],"33":[42,137],"52":[42,137]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useWorkflowResourcesLocator.ts":{"13":[42,137],"17":[42],"29":[42,137],"31":[42,137],"40":[137],"48":[42],"56":[42,137],"61":[42,137],"71":[42,137],"107":[42,137],"118":[42]},"packages/localhost-36713/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[42]},"packages/localhost-36713/assets/chunk-CC9Q-vWm.js":{"8":[42],"9":[42],"10":[42],"19":[42],"23":[42],"29":[42],"33":[42],"34":[42]},"packages/localhost-36713/assets/shield-alt-DX72YG8n.js":{"8":[42]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/AgentTool.node.ts":{"8":[91]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V2/AgentToolV2.node.ts":{"19":[91],"99":[91]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V2/utils.ts":{"11":[91],"23":[91],"26":[91],"86":[91],"89":[91]},"packages/@n8n/nodes-langchain/nodes/agents/Agent/V3/AgentToolV3.node.ts":{"22":[91],"101":[91]},"packages/cli/src/errors/response-errors/bad-request.error.ts":{"4":[145,79,159,139],"8":[145,79,159,139]},"packages/cli/src/errors/response-errors/workflow-activation-bad-request.error.ts":{"8":[159]},"packages/cli/src/errors/response-errors/workflow-validation.error.ts":{"9":[159]},"packages/@n8n/permissions/src/schemas.ee.ts":{"23":[53],"50":[53],"73":[53]},"packages/@n8n/design-system/src/components/N8nUserStack/UserStack.vue":{"9":[53],"23":[53],"35":[53],"39":[53],"49":[53],"55":[53],"59":[53],"62":[53],"73":[53],"83":[53],"85":[53],"92":[53],"96":[53]},"packages/localhost-41421/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[53]},"packages/localhost-41421/assets/chunk-CC9Q-vWm.js":{"8":[53],"9":[53],"10":[53],"19":[53],"23":[53],"29":[53],"33":[53],"34":[53]},"packages/nodes-base/nodes/Linear/GenericFunctions.ts":{"16":[14],"66":[14],"70":[14],"100":[14],"126":[14]},"packages/nodes-base/nodes/Linear/Linear.node.ts":{"109":[14],"119":[14],"136":[14],"154":[14],"172":[14],"220":[14]},"packages/nodes-base/nodes/Linear/Queries.ts":{"2":[14],"15":[14],"28":[14],"41":[14],"95":[14],"102":[14],"138":[14],"147":[14],"189":[14],"245":[14],"255":[14]},"packages/localhost-44613/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA"},"packages/localhost-44613/assets/chunk-CC9Q-vWm.js":{"8":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA","9":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA","10":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA","19":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA","23":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA","29":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA","33":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA","34":"b:AEAEAAAAAAAAgIAABBCAoBAAAAAA"},"packages/localhost-44613/assets/shield-alt-DX72YG8n.js":{"8":[14,79]},"packages/@n8n/design-system/src/components/N8nIcon/custom/status-warning.svg":{"8":[58]},"packages/frontend/editor-ui/src/app/components/VersionUpdateCTA.vue":{"13":[58],"30":[58]},"packages/localhost-44461/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA"},"packages/localhost-44461/assets/chunk-CC9Q-vWm.js":{"8":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA","9":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA","10":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA","19":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA","23":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA","29":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA","33":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA","34":"b:AAAAAAIAgAQAAAAAAEAAAkgKAAAA"},"packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts":{"30":[79,130],"146":[79,130],"209":[79,130],"233":[79,130],"255":[79,130],"278":[79,130],"286":[79,130],"340":[79,130],"397":[79,130],"405":[79,130],"425":[79,130],"465":[79,130],"498":[79,130],"499":[79,130],"509":[79,130],"514":[79,130],"518":[79,130],"520":[79,130],"527":[79,130],"539":[79,130],"556":[79,130]},"packages/nodes-base/nodes/Google/Gmail/Gmail.node.ts":{"8":[79,130]},"packages/nodes-base/nodes/Google/Gmail/utils/replyToEmail.ts":{"15":[79,130],"70":[79,130],"75":[79,130],"92":[79,130],"102":[79,130]},"packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts":{"134":[79,130],"147":[79,130],"260":[79,130],"267":[79,130],"275":[79,130],"347":[79,130],"354":[79,130],"362":[79,130],"417":[79,130],"421":[79,130],"587":[79,130],"595":[79,130],"603":[79,130]},"packages/nodes-base/nodes/Google/Gmail/v2/GmailV2.node.ts":{"157":[79,130],"174":[79,130]},"packages/nodes-base/nodes/Google/Gmail/v2/loadOptions.ts":{"5":[79,130],"29":[79,130]},"packages/nodes-base/nodes/Google/Gmail/v2/utils/draft.ts":{"7":[79,130],"14":[79,130],"21":[79,130],"32":[79,130]},"packages/nodes-base/nodes/Pipedrive/PipedriveTrigger.node.ts":{"16":[79],"280":[79],"314":[79],"362":[79],"386":[79]},"packages/nodes-base/nodes/Pipedrive/v1/GenericFunctions.ts":{"31":[79,131],"103":[79,131],"142":[79,131],"187":[79,131],"195":[79,131],"210":[79,131],"230":[79,131],"278":[79,131],"292":[79,131],"293":[79,131],"302":[79,131],"305":[79,131]},"packages/nodes-base/nodes/Slack/Slack.node.ts":{"8":[4,79,83]},"packages/nodes-base/nodes/Slack/V1/GenericFunctions.ts":{"16":[4,79,83],"19":[4,79,83],"20":[4,79,83],"26":[4,79,83],"27":[4,79,83],"33":[4,79,83],"104":[4,79,83],"140":[4,79,83]},"packages/nodes-base/nodes/Slack/V1/SlackV1.node.ts":{"76":[4,79,83],"190":[4,79,83],"202":[4,79,83],"216":[4,79,83],"236":[4,79,83],"250":[4,79,83],"268":[4,79,83],"476":[4,79,83],"486":[4,79,83]},"packages/nodes-base/nodes/Slack/V2/GenericFunctions.ts":{"34":[4,79,83],"41":[4,79,83],"44":[4,79,83],"45":[4,79,83],"51":[4,79,83],"52":[4,79,83],"58":[4,79,83],"153":[4,79,83],"166":[4,79,83],"202":[4,79,83],"264":[4,79,83],"296":[4,79,83],"371":[4,79,83],"381":[4,79,83],"408":[4,79,83],"424":[4,79,83],"456":[4,79,83]},"packages/nodes-base/nodes/Slack/V2/SlackV2.node.ts":{"59":[4,79,83],"174":[4,79,83],"191":[4,79,83],"211":[4,79,83],"216":[4,79,83],"221":[4,79,83],"228":[4,79,83],"236":[4,79,83],"241":[4,79,83],"246":[4,79,83],"257":[4,79,83],"269":[4,79,83],"283":[4,79,83],"303":[4,79,83],"317":[4,79,83],"336":[4,79,83],"350":[4,79,83],"370":[4,79,83],"594":[4,79,83],"657":[4,79,83],"667":[4,79,83],"1565":[4,79,83],"1610":[4,79,83],"1638":[4,79,83]},"packages/nodes-base/nodes/Trello/GenericFunctions.ts":{"14":[79],"46":[79]},"packages/nodes-base/nodes/Trello/Trello.node.ts":{"138":[79],"161":[79],"169":[79],"192":[79],"203":[79]},"packages/nodes-base/nodes/Discourse/Discourse.node.ts":{"93":[87],"107":[87]},"packages/nodes-base/nodes/Discourse/GenericFunctions.ts":{"11":[87],"40":[87]},"packages/workflow/src/extensions/date-extensions.ts":{"85":[87],"89":[87],"99":[87],"104":[87],"114":[87],"120":[87],"145":[87],"153":[87],"176":[87],"183":[87],"195":[87],"200":[87],"221":[87],"242":[87],"251":[87],"256":[87],"270":[87],"275":[87],"284":[87],"289":[87],"293":[87]},"packages/cli/src/environments.ee/variables/variables.controller.ee.ts":{"19":[98],"22":[98],"32":[98],"50":[98],"60":[98],"80":[98]},"packages/@n8n/design-system/src/components/N8nDatatable/Datatable.vue":{"23":[98],"37":[98],"45":[98],"76":[98],"80":[98],"89":[98],"99":[98],"133":[98],"134":[98],"135":[98]},"packages/@n8n/design-system/src/components/TableBase/TableBase.vue":{"4":[98]},"packages/frontend/editor-ui/src/features/collaboration/projects/views/ProjectVariables.vue":{"68":[98],"78":[98],"82":[98],"87":[98],"91":[98],"93":[98],"94":[98],"109":[98],"114":[98],"150":[98],"184":[98],"193":[98],"197":[98],"216":[98],"222":[98],"269":[98],"281":[98],"290":[98],"314":[98],"400":[98],"434":[98],"435":[98],"451":[98],"452":[98],"463":[98]},"packages/frontend/editor-ui/src/features/settings/environments.ee/components/VariableModal.vue":{"65":[98],"70":[98],"94":[98],"98":[98],"117":[98],"132":[98],"133":[98],"136":[98],"149":[98],"175":[98],"176":[98],"193":[98],"194":[98],"198":[98],"203":[98],"207":[98],"243":[98],"248":[98],"265":[98],"278":[98],"291":[98],"298":[98],"321":[98],"326":[98],"332":[98],"339":[98],"341":[98],"347":[98],"361":[98]},"packages/frontend/editor-ui/src/app/utils/rbac/checks/isEnterpriseFeatureEnabled.ts":{"4":[119],"15":[119]},"packages/frontend/editor-ui/src/app/utils/rbac/middleware/enterprise.ts":{"6":[119]},"packages/cli/src/modules/provisioning.ee/role-mapping-rule.service.ee.ts":{"46":[13],"52":[13],"79":[13],"83":[13],"112":[13],"150":[13],"168":[13],"192":[13],"242":[13],"259":[13],"265":[13],"288":[13],"294":[13],"304":[13],"307":[13],"324":[13],"334":[13],"336":[13],"339":[13],"355":[13],"362":[13],"369":[13]},"packages/cli/src/modules/sso-oidc/oidc.controller.ee.ts":{"23":[13],"36":[13],"47":[13],"65":[13],"87":[13],"108":[13]},"packages/cli/src/modules/sso-oidc/oidc.service.ee.ts":{"72":[13],"91":[13],"105":[13],"114":[13],"116":[13],"120":[13],"124":[13],"132":[13],"144":[13],"179":[13],"187":[13],"220":[13],"258":[13],"353":[13],"386":[13],"426":[13],"492":[13],"493":[13],"505":[13],"527":[13],"529":[13],"537":[13],"568":[13],"601":[13],"611":[13],"673":[13],"701":[13],"735":[13]},"packages/frontend/editor-ui/src/app/utils/stringUtils.ts":{"8":[125,127],"16":[125,127],"21":[125,127],"22":[125,127]},"packages/nodes-base/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.ts":{"119":[127]},"packages/nodes-base/nodes/Switch/Switch.node.ts":{"9":[110,127,130]},"packages/nodes-base/nodes/Switch/V1/SwitchV1.node.ts":{"15":[110,127,130],"523":[110,127,130],"538":[110,127,130],"540":[110,127,130],"542":[110,127,130],"544":[110,127,130],"546":[110,127,130],"548":[110,127,130],"550":[110,127,130],"551":[110,127,130],"552":[110,127,130],"554":[110,127,130],"556":[110,127,130],"558":[110,127,130],"560":[110,127,130],"562":[110,127,130],"564":[110,127,130],"578":[110,127,130],"595":[110,127,130],"616":[110,127,130]},"packages/nodes-base/nodes/Switch/V2/SwitchV2.node.ts":{"17":[110,127,130],"521":[110,127,130],"523":[110,127,130],"538":[110,127,130],"553":[110,127,130],"555":[110,127,130],"557":[110,127,130],"559":[110,127,130],"561":[110,127,130],"563":[110,127,130],"565":[110,127,130],"566":[110,127,130],"567":[110,127,130],"569":[110,127,130],"571":[110,127,130],"573":[110,127,130],"575":[110,127,130],"577":[110,127,130],"579":[110,127,130],"593":[110,127,130],"610":[110,127,130],"631":[110,127,130],"652":[110,127,130],"662":[110,127,130]},"packages/nodes-base/nodes/Switch/V3/SwitchV3.node.ts":{"21":[110,127,130],"25":[110,127,130],"31":[110,127,130],"51":[110,127,130],"347":[110,127,130],"377":[110,127,130],"383":[110,127,130],"409":[110,127,130],"422":[110,127,130]},"packages/nodes-base/nodes/Transform/Sort/Sort.node.ts":{"164":[127,130],"221":[127,130],"226":[127,130]},"packages/nodes-base/nodes/Transform/Sort/utils.ts":{"8":[127,130]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/sort.svg":{"11":[127,130]},"packages/nodes-base/nodes/Github/GenericFunctions.ts":{"16":[132],"75":[132],"96":[132],"121":[132],"126":[132]},"packages/nodes-base/nodes/Github/GithubTrigger.node.ts":{"474":[132],"506":[132],"598":[132],"634":[132]},"packages/nodes-base/nodes/Github/GithubTriggerHelpers.ts":{"15":[132]},"packages/nodes-base/nodes/Github/SearchFunctions.ts":{"33":[132],"58":[132],"69":[132],"95":[132],"106":[132],"126":[132],"136":[132],"178":[132]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/MappingModeSelect.vue":{"20":[132,133],"54":[132,133],"61":[132,133],"103":[132,133],"113":[132,133],"121":[132,133],"123":[132,133],"128":[132,133],"140":[132,133],"150":[132,133],"153":[132,133]},"packages/frontend/editor-ui/src/features/ndv/parameters/composables/useNodeSpecificationValues.ts":{"5":[132,133],"6":[132,133],"10":[132,133],"16":[133],"20":[132,133],"24":[133]},"packages/localhost-33295/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[13]},"packages/localhost-33295/assets/chunk-CC9Q-vWm.js":{"8":[13],"9":[13],"10":[13],"19":[13],"23":[13],"29":[13],"33":[13],"34":[13]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/Condition.vue":{"43":[85,110],"63":[85,110],"67":[85,110],"79":[85,110],"97":[85,110],"110":[85,110],"120":[85,110],"131":[85,110],"143":[85],"145":[85],"166":[85],"170":[85],"215":[85,110],"221":[85,110],"250":[85,110],"269":[85,110],"278":[85,110],"306":[85,110],"316":[85]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/FilterConditions.vue":{"39":[85,110],"62":[85,110],"71":[85],"75":[85,110],"78":[85,110],"90":[85],"94":[85,110],"96":[85],"100":[85,110],"105":[85,110],"134":[85,110],"135":[85,110],"144":[85,110],"145":[85,110],"152":[85,110],"160":[85],"164":[85],"172":[85],"176":[85,110],"178":[85,110],"210":[85,110],"232":[85],"233":[85]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/OperatorSelect.vue":{"19":[85,110],"30":[85,110],"31":[85,110],"34":[85,110],"36":[85,110],"38":[85,110],"41":[85,110],"42":[85,110],"55":[85,110],"73":[85,110],"86":[85,110],"88":[85,110]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/utils.ts":{"19":[85,110],"81":[85,110],"124":[85,110],"145":[85,110]},"packages/localhost-44461/assets/shield-alt-DX72YG8n.js":{"8":[110,131,134,139,55]},"packages/nodes-base/nodes/Pipedrive/Pipedrive.node.ts":{"8":[131]},"packages/nodes-base/nodes/Pipedrive/v1/PipedriveV1.node.ts":{"37":[131],"2256":[131],"2393":[131],"3809":[131],"3820":[131],"3834":[131],"3862":[131],"3876":[131],"3900":[131],"3904":[131],"3908":[131],"3912":[131],"3916":[131],"3926":[131],"3930":[131],"3944":[131],"3962":[131],"3978":[131],"3994":[131],"4023":[131],"4053":[131],"4058":[131],"4063":[131],"4068":[131],"4073":[131],"4103":[131],"4949":[131]},"packages/nodes-base/nodes/Pipedrive/v2/PipedriveV2.node.ts":{"16":[131],"28":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/create.operation.ts":{"119":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/get.operation.ts":{"34":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/getAll.operation.ts":{"126":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/activity/update.operation.ts":{"140":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/create.operation.ts":{"222":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/duplicate.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/get.operation.ts":{"34":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/getAll.operation.ts":{"124":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/search.operation.ts":{"138":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/deal/update.operation.ts":{"179":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/add.operation.ts":{"117":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/getAll.operation.ts":{"54":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/remove.operation.ts":{"40":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/dealProduct/update.operation.ts":{"116":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/create.operation.ts":{"87":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/download.operation.ts":{"34":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/get.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/file/update.operation.ts":{"54":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/create.operation.ts":{"148":[131],"175":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/get.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/getAll.operation.ts":{"100":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/lead/update.operation.ts":{"105":[131],"132":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/create.operation.ts":{"96":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/get.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/getAll.operation.ts":{"143":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/note/update.operation.ts":{"103":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/create.operation.ts":{"71":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/get.operation.ts":{"34":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/getAll.operation.ts":{"81":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/search.operation.ts":{"98":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/organization/update.operation.ts":{"78":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/create.operation.ts":{"164":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/get.operation.ts":{"34":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/getAll.operation.ts":{"80":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/search.operation.ts":{"117":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/person/update.operation.ts":{"171":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/create.operation.ts":{"126":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/delete.operation.ts":{"31":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/get.operation.ts":{"34":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/getAll.operation.ts":{"53":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/search.operation.ts":{"101":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/product/update.operation.ts":{"133":[131]},"packages/nodes-base/nodes/Pipedrive/v2/actions/router.ts":{"15":[131]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/customFields.ts":{"24":[131],"36":[131],"58":[131],"59":[131],"61":[131],"69":[131],"97":[131],"130":[131],"142":[131],"143":[131]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/fields.ts":{"10":[131]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/index.ts":{"3":[131],"7":[131]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/searchResponse.ts":{"9":[131],"14":[131],"25":[131]},"packages/nodes-base/nodes/Pipedrive/v2/helpers/typeCoercion.ts":{"4":[131],"18":[131],"32":[131],"55":[131]},"packages/nodes-base/nodes/Pipedrive/v2/methods/loadOptions.ts":{"9":[131],"34":[131],"65":[131],"83":[131],"117":[131],"120":[131],"127":[131],"130":[131],"137":[131],"143":[131],"150":[131],"162":[131],"187":[131],"193":[131],"203":[131],"206":[131],"213":[131],"223":[131],"226":[131]},"packages/nodes-base/nodes/Pipedrive/v2/transport/pipedrive.api.ts":{"30":[131],"96":[131],"126":[131],"170":[131],"229":[131],"232":[131]},"packages/frontend/editor-ui/src/app/components/WorkflowExtractionNameModal.vue":{"21":[137],"31":[137],"37":[137],"57":[137],"59":[137],"64":[137],"79":[137],"90":[137]},"packages/cli/src/errors/response-errors/conflict.error.ts":{"4":[139]},"packages/cli/src/middlewares/list-query/dtos/base.select.dto.ts":{"7":[55],"12":[55]},"packages/cli/src/middlewares/list-query/dtos/workflow.select.dto.ts":{"4":[55],"22":[55]},"packages/@n8n/design-system/src/components/N8nCommandBar/CommandBarItem.vue":{"6":[55],"17":[55],"21":[55],"27":[55]},"packages/frontend/editor-ui/src/features/shared/commandBar/components/CommandBarItemTitle.vue":{"23":[55]},"packages/frontend/editor-ui/src/features/shared/tags/components/WorkflowTagsDropdown.vue":{"35":[138,55],"36":[138,55],"39":[138,55],"40":[138,55],"41":[138,55],"43":[138,55],"44":[138,55],"46":[138],"50":[138],"58":[138,55]},"packages/frontend/editor-ui/src/features/workflows/workflowHistory/components/WorkflowHistoryVersionUnpublishModal.vue":{"15":[55],"36":[55],"42":[55],"45":[55],"49":[55],"51":[55],"58":[55],"62":[55],"70":[55],"73":[55],"76":[55]},"packages/@n8n/api-types/src/dto/binary-data/binary-data-query.dto.ts":{"8":[9],"12":[9]},"packages/cli/src/controllers/binary-data.controller.ts":{"16":[9],"19":[9],"36":[9],"50":[9],"74":[9]},"packages/frontend/editor-ui/src/features/settings/apiKeys/apiKeys.store.ts":{"18":[59],"24":[59]},"packages/frontend/editor-ui/src/features/settings/apiKeys/components/ApiKeyScopesModal.vue":{"7":[59],"18":[59],"27":[59]},"packages/frontend/editor-ui/src/features/settings/apiKeys/components/RevokeApiKeyConfirmModal.vue":{"23":[59],"31":[59],"43":[59]},"packages/frontend/editor-ui/src/features/settings/apiKeys/components/RotateApiKeyConfirmModal.vue":{"7":[59],"21":[59],"28":[59]},"packages/frontend/editor-ui/src/features/settings/apiKeys/views/SettingsApiView.vue":{"199":[59],"296":[59]},"packages/frontend/editor-ui/src/features/shared/banners/components/banners/BaseBanner.vue":{"18":[59],"34":[59],"44":[59],"59":[59]},"packages/frontend/editor-ui/src/features/shared/banners/components/banners/TrialBanner.vue":{"73":[59],"80":[59],"81":[59],"82":[59],"90":[59],"93":[59],"99":[59],"104":[59],"106":[59],"120":[59],"130":[59],"135":[59],"143":[59],"148":[59],"166":[59],"178":[59],"194":[59],"198":[59],"204":[59],"212":[59]},"packages/localhost-37811/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[59]},"packages/localhost-37811/assets/chunk-CC9Q-vWm.js":{"8":[59],"9":[59],"10":[59],"19":[59],"23":[59],"29":[59],"33":[59],"34":[59]},"packages/@n8n/backend-common/src/utils/path-util.ts":{"9":[36],"27":[36],"40":[36],"46":[36],"55":[36],"63":[36]},"packages/nodes-base/nodes/Files/ExtractFromFile/ExtractFromFile.node.ts":{"117":[36]},"packages/nodes-base/nodes/Files/ExtractFromFile/actions/moveTo.operation.ts":{"105":[36]},"packages/nodes-base/nodes/Files/ExtractFromFile/actions/pdf.operation.ts":{"83":[36]},"packages/nodes-base/nodes/Files/ExtractFromFile/actions/spreadsheet.operation.ts":{"8":[36],"9":[36],"18":[36],"58":[36]},"packages/nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.ts":{"60":[36]},"packages/nodes-base/nodes/Files/ReadWriteFile/actions/read.operation.ts":{"78":[36]},"packages/nodes-base/nodes/Files/ReadWriteFile/actions/write.operation.ts":{"62":[36]},"packages/nodes-base/nodes/Files/ReadWriteFile/helpers/utils.ts":{"5":[36],"37":[36],"44":[36]},"packages/nodes-base/nodes/SpreadsheetFile/v2/fromFile.operation.ts":{"85":[36],"126":[36],"129":[36],"136":[36],"144":[36],"154":[36]},"packages/@n8n/design-system/src/components/N8nIcon/nodes/read-write-files-from-disk.svg":{"11":[85,36]},"packages/localhost-33907/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[36,86,104,115,130,138]},"packages/localhost-33907/assets/chunk-CC9Q-vWm.js":{"8":[36,86,104,115,130,138],"9":[36,86,104,115,130,138],"10":[36,86,104,115,130,138],"19":[36,86,104,115,130,138],"23":[36,86,104,115,130,138],"29":[36,86,104,115,130,138],"33":[36,86,104,115,130,138],"34":[36,86,104,115,130,138]},"packages/frontend/editor-ui/src/app/utils/formatters/textFormatter.ts":{"8":[86]},"packages/cli/src/modules/instance-registry/instance-registry.controller.ts":{"9":[115],"16":[115],"24":[115],"39":[115]},"packages/nodes-base/nodes/Notion/NotionTrigger.node.ts":{"181":[115],"276":[115],"285":[115],"288":[115]},"packages/frontend/editor-ui/src/app/components/AboutModal.vue":{"16":[115],"24":[115],"28":[115],"57":[115],"68":[115],"72":[115],"75":[115],"80":[115],"83":[115],"88":[115],"91":[115],"92":[115],"98":[115],"101":[115],"102":[115],"108":[115],"111":[115],"116":[115],"119":[115],"120":[115],"127":[115]},"packages/localhost-33907/assets/shield-alt-DX72YG8n.js":{"8":[115]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/NoTagsView.vue":{"21":[138],"22":[138],"27":[138],"31":[138],"41":[138]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsManager.vue":{"31":[138],"44":[138],"48":[138],"50":[138],"51":[138],"53":[138],"57":[138],"61":[138],"65":[138],"69":[138],"119":[138],"120":[138],"132":[138],"135":[138],"150":[138],"163":[138],"189":[138]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsView/TagsTable.vue":{"33":[138],"42":[138],"46":[138],"73":[138],"84":[138],"88":[138],"92":[138],"93":[138],"100":[138],"101":[138],"109":[138],"118":[138],"119":[138],"127":[138],"132":[138],"145":[138],"147":[138],"148":[138],"150":[138],"169":[138],"171":[138],"181":[138],"183":[138],"235":[138]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsView/TagsTableHeader.vue":{"21":[138],"30":[138],"36":[138],"41":[138],"42":[138],"50":[138],"56":[138]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/TagsView/TagsView.vue":{"12":[138],"35":[138],"48":[138],"52":[138],"53":[138],"60":[138],"61":[138],"76":[138],"85":[138],"112":[138],"116":[138],"120":[138],"122":[138],"132":[138],"137":[138],"142":[138],"145":[138],"156":[138],"177":[138]},"packages/frontend/editor-ui/src/features/shared/tags/components/TagsManager/WorkflowTagsManager.vue":{"11":[138],"16":[138],"17":[138],"19":[138],"29":[138],"64":[138],"85":[138]},"packages/@n8n/ai-utilities/src/utils/loaders/n8n-pdf-loader.ts":{"22":[0],"27":[0],"31":[0],"35":[0],"44":[0],"58":[0],"74":[0],"83":[0]},"packages/@n8n/ai-utilities/src/utils/n8n-binary-loader.ts":{"33":[0],"40":[0],"54":[0],"60":[0],"86":[0],"104":[0],"151":[0],"158":[0],"166":[0],"174":[0],"198":[0],"227":[0]},"packages/localhost-32831/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[0,4,85,89,103]},"packages/localhost-32831/assets/chunk-CC9Q-vWm.js":{"8":[0,4,85,89,103],"9":[0,4,85,89,103],"10":[0,4,85,89,103],"19":[0,4,85,89,103],"23":[0,4,85,89,103],"29":[0,4,85,89,103],"33":[0,4,85,89,103],"34":[0,4,85,89,103]},"packages/nodes-base/nodes/Telegram/TelegramTrigger.node.ts":{"205":[4],"216":[4],"242":[4],"257":[4],"293":[4],"311":[4]},"packages/nodes-base/nodes/Telegram/util/triggerUtils.ts":{"11":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/BuilderSetupCard.vue":{"30":[4],"55":[4],"59":[4],"61":[4],"84":[4],"91":[4],"97":[4],"101":[4],"105":[4],"106":[4],"107":[4],"111":[4],"112":[4],"113":[4],"114":[4],"116":[4],"122":[4],"140":[4],"153":[4],"186":[4],"191":[4],"193":[4],"209":[4],"210":[4],"213":[4],"222":[4],"223":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/BuilderSetupWizard.vue":{"14":[4],"39":[4],"43":[4],"47":[4],"51":[4],"55":[4],"59":[4],"75":[4],"86":[4],"91":[4],"96":[4],"102":[4],"104":[4],"107":[4],"115":[4],"122":[4],"131":[4],"140":[4],"162":[4],"175":[4],"187":[4],"210":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/ChatVersionCard.vue":{"14":[4],"44":[4],"60":[4],"110":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/CreditsSettingsDropdown.vue":{"9":[4],"32":[4],"99":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Agent/ExecuteMessage.vue":{"34":[4],"51":[4],"58":[4],"87":[4],"136":[4],"146":[4],"191":[4],"223":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderExecution.ts":{"21":[4],"53":[4]},"packages/frontend/editor-ui/src/features/ai/assistant/composables/useBuilderSetupCards.ts":{"10":[4],"21":[4],"26":[4],"30":[4],"45":[4],"59":[4],"60":[4],"65":[4],"67":[4],"71":[4],"74":[4],"77":[4],"89":[4],"90":[4],"104":[4],"110":[4],"157":[4]},"packages/frontend/editor-ui/src/features/credentials/composables/useCredentialTestInBackground.ts":{"4":[4],"12":[4],"28":[4]},"packages/frontend/editor-ui/src/features/setupPanel/components/TriggerExecuteButton.vue":{"6":[4],"18":[4],"22":[4],"30":[4]},"packages/frontend/editor-ui/src/features/setupPanel/components/cards/SetupCardBody.vue":{"22":[4],"57":[4],"61":[4],"63":[4],"70":[4],"77":[4],"94":[4],"97":[4],"106":[4],"110":[4],"111":[4],"113":[4],"124":[4],"135":[4],"136":[4],"143":[4],"183":[4],"197":[4],"200":[4],"206":[4]},"packages/frontend/editor-ui/src/features/setupPanel/components/cards/SetupCardSection.vue":{"9":[4],"13":[4],"16":[4]},"packages/frontend/editor-ui/src/features/setupPanel/composables/groupSetupCards.ts":{"20":[4],"81":[4]},"packages/frontend/editor-ui/src/features/setupPanel/composables/useTriggerExecution.ts":{"18":[4],"38":[4],"40":[4],"46":[4],"70":[4],"77":[4],"81":[4],"87":[4],"91":[4]},"packages/frontend/editor-ui/src/features/setupPanel/composables/useWebhookUrls.ts":{"21":[4],"25":[4],"27":[4],"33":[4],"35":[4],"83":[4]},"packages/frontend/editor-ui/src/features/setupPanel/composables/useWorkflowSetupState.ts":{"50":[4],"67":[4],"74":[4],"121":[4],"124":[4],"160":[4],"198":[4],"226":[4],"231":[4],"297":[4],"299":[4],"300":[4],"306":[4],"330":[4],"353":[4],"354":[4],"361":[4],"362":[4],"365":[4],"366":[4],"376":[4],"390":[4],"404":[4],"417":[4],"434":[4],"435":[4],"437":[4],"441":[4],"449":[4],"468":[4],"471":[4],"477":[4],"478":[4],"513":[4],"622":[4],"638":[4],"641":[4],"664":[4],"665":[4],"667":[4],"669":[4],"700":[4],"703":[4],"714":[4],"718":[4],"730":[4],"800":[4],"811":[4],"837":[4]},"packages/frontend/editor-ui/src/features/setupPanel/setupPanel.utils.ts":{"7":[4],"25":[4],"50":[4],"103":[4],"136":[4],"227":[4],"267":[4],"310":[4],"318":[4]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/FilterConditions/CombinatorSelect.vue":{"14":[85],"22":[85],"31":[85],"32":[85]},"packages/localhost-32831/assets/shield-alt-DX72YG8n.js":{"8":[85,103]},"packages/nodes-base/nodes/Kafka/Kafka.node.ts":{"222":[34],"230":[34],"270":[34],"298":[34]},"packages/nodes-base/nodes/Kafka/KafkaTrigger.node.ts":{"389":[34],"417":[34],"426":[34],"450":[34],"487":[34],"495":[34],"519":[34]},"packages/nodes-base/nodes/Kafka/utils.ts":{"95":[34],"119":[34],"154":[34],"157":[34],"190":[34],"241":[34],"247":[34],"283":[34],"313":[34],"337":[34],"342":[34],"345":[34],"348":[34],"353":[34],"357":[34],"360":[34],"363":[34],"366":[34],"369":[34],"398":[34],"401":[34],"416":[34],"436":[34],"440":[34],"484":[34],"539":[34],"566":[34],"587":[34],"596":[34],"621":[34],"627":[34],"628":[34],"664":[34],"686":[34],"694":[34]},"packages/localhost-34867/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[34]},"packages/localhost-34867/assets/chunk-CC9Q-vWm.js":{"8":[34],"9":[34],"10":[34],"19":[34],"23":[34],"29":[34],"33":[34],"34":[34]},"packages/nodes-base/nodes/N8nTrigger/N8nTrigger.node.ts":{"63":[160],"86":[160]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMoveResourceModal.vue":{"42":[41],"68":[41],"75":[41],"92":[41],"96":[41],"99":[41],"100":[41],"102":[41],"108":[41],"111":[41],"121":[41],"124":[41],"129":[41],"133":[41],"182":[41],"198":[41],"201":[41],"203":[41],"211":[41],"215":[41],"216":[41],"222":[41],"223":[41],"231":[41],"249":[41],"254":[41],"346":[41],"349":[41],"357":[41]},"packages/frontend/editor-ui/src/features/collaboration/projects/components/ProjectMoveSuccessToastMessage.vue":{"19":[41],"20":[41],"21":[41],"24":[41]},"packages/frontend/editor-ui/src/features/collaboration/projects/composables/useMoveResourceToProjectToast.ts":{"26":[41]},"packages/localhost-42531/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[41]},"packages/localhost-42531/assets/chunk-CC9Q-vWm.js":{"8":[41],"9":[41],"10":[41],"19":[41],"23":[41],"29":[41],"33":[41],"34":[41]},"packages/cli/src/modules/external-secrets.ee/external-secrets-provider-connection-manager.ee.ts":{"15":[157,45],"24":[157,45],"40":[157,45],"57":[157,45],"60":[157,45],"64":[157,45],"73":[157,45],"101":[157,45],"131":[157,45],"149":[157,45],"167":[157,45],"187":[157,45]},"packages/cli/src/modules/external-secrets.ee/external-secrets.controller.ee.ts":{"13":[157],"22":[157],"34":[157],"40":[157],"47":[157],"60":[157],"68":[157],"76":[157],"90":[157]},"packages/cli/src/modules/external-secrets.ee/external-secrets.service.ee.ts":{"10":[157],"15":[157],"30":[157],"31":[157],"44":[157],"50":[157],"54":[157],"61":[157],"66":[157],"70":[157],"77":[157]},"packages/cli/src/modules/external-secrets.ee/provider-lifecycle.service.ts":{"25":[157,45],"36":[157,45],"78":[157,45],"112":[157,45],"127":[157,45]},"packages/cli/src/modules/external-secrets.ee/redaction.service.ee.ts":{"15":[157],"19":[157],"20":[157],"42":[157],"53":[157],"62":[157]},"packages/cli/src/modules/external-secrets.ee/retry-manager.service.ts":{"27":[157,45],"30":[157,45],"31":[157,45],"42":[157,45],"62":[157,45],"70":[157,45],"97":[157,45],"112":[157,45],"123":[157,45],"130":[157,45]},"packages/cli/src/modules/external-secrets.ee/secrets-cache.service.ts":{"16":[157,45],"26":[157,45],"30":[157,45],"39":[157,45],"55":[157,45],"57":[157,45],"58":[157,45],"79":[157,45],"87":[157,45],"95":[157,45],"103":[157,45]},"packages/cli/src/modules/external-secrets.ee/settings-store.service.ts":{"18":[157],"26":[157],"38":[157],"54":[157],"61":[157],"80":[157],"108":[157],"116":[157],"127":[157],"142":[157]},"packages/cli/src/modules/external-secrets.ee/errors/secrets-provider-errors.ts":{"24":[45],"59":[45],"79":[45],"96":[45]},"packages/cli/src/modules/external-secrets.ee/secret-provider-access-check.service.ee.ts":{"17":[45],"24":[45],"34":[45],"77":[45],"98":[45],"100":[45]},"packages/frontend/editor-ui/src/features/integrations/externalSecrets.ee/assets/images/aws-secrets-manager.svg":{"8":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/DeleteSecretsProviderModal.ee.vue":{"28":[45],"41":[45],"43":[45],"47":[45],"54":[45],"64":[45],"74":[45],"90":[45],"128":[45],"142":[45],"145":[45],"157":[45],"162":[45],"163":[45],"179":[45],"190":[45],"195":[45],"198":[45],"206":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProviderConnectionCard.ee.vue":{"49":[45],"57":[45],"61":[45],"63":[45],"74":[45],"85":[45],"87":[45],"95":[45],"115":[45],"156":[45],"167":[45],"180":[45],"183":[45],"205":[45],"231":[45],"237":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProviderConnectionModal.ee.vue":{"43":[45],"75":[45],"76":[45],"77":[45],"78":[45],"92":[45],"93":[45],"103":[45],"120":[45],"130":[45],"146":[45],"150":[45],"151":[45],"157":[45],"166":[45],"171":[45],"175":[45],"179":[45],"183":[45],"208":[45],"228":[45],"235":[45],"248":[45],"264":[45],"270":[45],"303":[45],"308":[45],"313":[45],"344":[45],"418":[45],"439":[45],"441":[45],"451":[45],"460":[45],"477":[45],"481":[45],"490":[45],"502":[45],"505":[45],"510":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProviderImage.ee.vue":{"17":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/components/SecretsProvidersEmptyState.ee.vue":{"8":[45],"16":[45],"45":[45],"56":[45],"62":[45],"64":[45],"73":[45],"95":[45],"101":[45],"108":[45],"112":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/composables/useConnectionModal.ee.ts":{"31":[45],"35":[45],"60":[45],"66":[45],"92":[45],"118":[45],"138":[45],"142":[45],"151":[45],"159":[45],"164":[45],"166":[45],"167":[45],"173":[45],"174":[45],"181":[45],"187":[45],"194":[45],"199":[45],"200":[45],"207":[45],"208":[45],"212":[45],"213":[45],"215":[45],"225":[45],"233":[45],"239":[45],"257":[45],"276":[45],"281":[45],"283":[45],"291":[45],"298":[45],"306":[45],"307":[45],"357":[45],"401":[45],"442":[45],"450":[45],"478":[45],"516":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/composables/useSecretsProviderConnection.ee.ts":{"34":[45],"39":[45],"62":[45],"79":[45],"100":[45]},"packages/frontend/editor-ui/src/features/integrations/secretsProviders.ee/views/SettingsSecretsProviders.ee.vue":{"47":[45],"49":[45],"52":[45],"97":[45],"101":[45],"105":[45],"137":[45],"138":[45],"141":[45],"154":[45],"193":[45],"194":[45],"205":[45],"212":[45],"237":[45],"243":[45],"251":[45],"266":[45],"269":[45],"285":[45],"298":[45],"310":[45]},"packages/localhost-35609/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[45]},"packages/localhost-35609/assets/chunk-CC9Q-vWm.js":{"8":[45],"9":[45],"10":[45],"19":[45],"23":[45],"29":[45],"33":[45],"34":[45]},"packages/localhost-35365/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[19]},"packages/localhost-35365/assets/chunk-CC9Q-vWm.js":{"8":[19],"9":[19],"10":[19],"19":[19],"23":[19],"29":[19],"33":[19],"34":[19]},"packages/@n8n/design-system/src/components/AskAssistantChat/messages/EventMessage.vue":{"24":[1],"40":[1],"44":[1]},"packages/frontend/editor-ui/src/features/ai/assistant/components/Chat/NewAssistantSessionModal.vue":{"14":[1],"27":[1],"31":[1],"44":[1],"56":[1],"62":[1],"65":[1],"68":[1],"72":[1]},"packages/localhost-40219/assets/_plugin-vue_export-helper-Da88TEg1.js":{"2":[1,83,40,94,112,116,123,133]},"packages/localhost-40219/assets/chunk-CC9Q-vWm.js":{"8":[1,83,40,94,112,116,123,133],"9":[1,83,40,94,112,116,123,133],"10":[1,83,40,94,112,116,123,133],"19":[1,83,40,94,112,116,123,133],"23":[1,83,40,94,112,116,123,133],"29":[1,83,40,94,112,116,123,133],"33":[1,83,40,94,112,116,123,133],"34":[1,83,40,94,112,116,123,133]},"packages/@n8n/design-system/src/components/N8nCircleLoader/CircleLoader.vue":{"3":[116],"15":[116],"16":[116],"18":[116],"22":[116],"23":[116],"24":[116],"28":[116]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/completions.ts":{"19":[116],"30":[116]},"packages/frontend/editor-ui/src/features/shared/editors/plugins/codemirror/typescript/client/linter.ts":{"4":[116],"8":[116]},"packages/localhost-40219/assets/shield-alt-DX72YG8n.js":{"8":[116]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ExpressionEditorModal/ExpressionEditorModalInput.vue":{"27":[123],"39":[123],"49":[123],"57":[123],"65":[123],"66":[123],"72":[123],"79":[123],"85":[123],"90":[123],"93":[123]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/MappingFields.vue":{"49":[133],"74":[133],"83":[133],"85":[133],"86":[133],"101":[133],"104":[133],"117":[133],"118":[133],"121":[133],"122":[133],"131":[133],"132":[133],"134":[133],"161":[133],"164":[133],"178":[133],"182":[133],"186":[133],"196":[133],"204":[133],"214":[133],"238":[133],"252":[133],"267":[133],"279":[133],"283":[133],"287":[133],"295":[133],"314":[133],"327":[133],"365":[133],"396":[133],"441":[133]},"packages/frontend/editor-ui/src/features/ndv/parameters/components/ResourceMapper/MatchingColumnsSelect.vue":{"27":[133],"39":[133],"50":[133],"51":[133],"62":[133],"63":[133],"69":[133],"84":[133],"103":[133],"117":[133],"130":[133],"156":[133],"169":[133],"182":[133],"191":[133],"200":[133],"202":[133],"206":[133],"211":[133]},"packages/@n8n/imap/src/errors.ts":{"5":[56],"18":[56],"24":[56]},"packages/@n8n/imap/src/helpers/get-message.ts":{"13":[56],"17":[56],"21":[56],"24":[56],"29":[56],"41":[56],"45":[56]},"packages/@n8n/imap/src/imap-simple.ts":{"12":[56],"16":[56],"21":[56],"27":[56],"35":[56],"39":[56],"57":[56],"65":[56],"66":[56],"87":[56],"94":[56],"98":[56],"104":[56],"111":[56],"122":[56],"128":[56],"134":[56],"148":[56],"154":[56],"159":[56],"169":[56],"175":[56],"176":[56],"181":[56],"182":[56],"183":[56],"188":[56],"192":[56],"193":[56],"198":[56],"202":[56],"203":[56]},"packages/@n8n/imap/src/index.ts":{"12":[56],"18":[56],"19":[56],"26":[56],"31":[56],"40":[56],"45":[56],"81":[56]},"packages/@n8n/imap/src/part-data.ts":{"8":[56],"10":[56],"14":[56],"41":[56],"47":[56],"55":[56],"59":[56],"65":[56],"72":[56],"78":[56]},"packages/@n8n/imap/src/uudecode.ts":{"9":[56]},"packages/cli/src/controllers/oauth/oauth1-credential.controller.ts":{"13":[56],"22":[56],"37":[56]},"packages/nodes-base/nodes/EmailReadImap/EmailReadImap.node.ts":{"8":[56]},"packages/nodes-base/nodes/EmailReadImap/v1/EmailReadImapV1.node.ts":{"24":[56],"222":[56],"231":[56],"271":[56],"285":[56],"290":[56],"310":[56],"320":[56],"329":[56],"344":[56],"441":[56],"500":[56],"510":[56],"529":[56],"561":[56],"585":[56],"586":[56],"617":[56],"628":[56]},"packages/nodes-base/nodes/EmailReadImap/v2/EmailReadImapV2.node.ts":{"200":[56],"209":[56],"261":[56],"291":[56],"300":[56],"320":[56],"331":[56],"334":[56],"347":[56],"365":[56],"384":[56],"430":[56],"442":[56],"448":[56],"469":[56],"472":[56],"488":[56],"507":[56],"530":[56]},"packages/nodes-base/nodes/EmailReadImap/v2/utils.ts":{"19":[56],"57":[56],"105":[56],"194":[56]},"packages/nodes-base/nodes/NextCloud/GenericFunctions.ts":{"14":[56]},"packages/nodes-base/nodes/NextCloud/NextCloud.node.ts":{"872":[56],"1103":[56],"1190":[56],"1198":[56],"1284":[56],"1292":[56],"1326":[56],"1334":[56],"1364":[56],"1372":[56],"1392":[56],"1397":[56],"1405":[56]}}} \ No newline at end of file diff --git a/.github/workflows/ci-pull-requests.yml b/.github/workflows/ci-pull-requests.yml index 53d07837923..747a1ed6599 100644 --- a/.github/workflows/ci-pull-requests.yml +++ b/.github/workflows/ci-pull-requests.yml @@ -411,7 +411,9 @@ jobs: post-qa-metrics-comment: name: QA Metrics needs: [required-checks, e2e-performance] - if: always() + # Only post when the perf suite actually measured this PR, otherwise the + # comment fires on trivial PRs and flags master drift/noise that isn't theirs. + if: always() && needs.e2e-performance.result == 'success' uses: ./.github/workflows/util-qa-metrics-comment-reusable.yml with: metrics: memory-heap-used-baseline,memory-rss-baseline,instance-ai-heap-used-baseline,instance-ai-rss-baseline,agents-heap-used-baseline,agents-rss-baseline,docker-image-size-n8n,docker-image-size-runners,canvas-cold-load-S-ms,canvas-cold-load-M-ms,canvas-cold-load-L-ms,canvas-server-heap-M-mb,canvas-server-heap-L-mb,canvas-browser-heap-M-mb,canvas-browser-heap-L-mb,canvas-pan-frame-p95-M-ms,canvas-pan-frame-p95-L-ms,canvas-tidy-up-M-ms,canvas-tidy-up-L-ms,canvas-exec-heavy-M-ms,canvas-exec-heavy-L-ms diff --git a/AGENTS.md b/AGENTS.md index 0310108cb21..c20b85e2751 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -265,6 +265,18 @@ titles, test descriptions, and Linear URLs. - **Linear references:** Never include the URL slug (e.g. `.../N8N-1234/fix-ssrf-vulnerability`). +### Customer Confidentiality + +**This is a public repository.** Never mention customer names in any +public-facing artifact — not all customers have agreed to be named publicly, +and naming them can reveal security-relevant details about their setup. + +This applies to PR titles and descriptions, branch names, commit messages, +code, code comments, test names and test data, and fixtures. When implementing +a customer request, describe the use case neutrally (e.g. "a customer with a +large multi-main setup", not the company name) and use generic placeholder +names (e.g. `Acme Corp`) in tests and examples. + ## Github Guidelines - When creating a PR, use the conventions in `.github/pull_request_template.md` and diff --git a/docs/generated/postgres-schema/README.md b/docs/generated/postgres-schema/README.md index 037a9ea6806..87397680967 100644 --- a/docs/generated/postgres-schema/README.md +++ b/docs/generated/postgres-schema/README.md @@ -92,7 +92,7 @@ Auto-generated from the PostgreSQL migrations in @n8n/db. Do not edit by hand. | [public.role_mapping_rule](public.role_mapping_rule.md) | 7 | | BASE TABLE | | [public.role_mapping_rule_project](public.role_mapping_rule_project.md) | 2 | | BASE TABLE | | [public.role_scope](public.role_scope.md) | 2 | | BASE TABLE | -| [public.scheduled_job](public.scheduled_job.md) | 17 | | BASE TABLE | +| [public.scheduled_job](public.scheduled_job.md) | 19 | | BASE TABLE | | [public.scheduled_task](public.scheduled_task.md) | 16 | | BASE TABLE | | [public.scope](public.scope.md) | 3 | | BASE TABLE | | [public.secrets_provider_connection](public.secrets_provider_connection.md) | 7 | | BASE TABLE | @@ -1109,6 +1109,8 @@ erDiagram timestamp_3__with_time_zone nextRunAt varchar_36_ nodeId json payload + integer recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone timestamp_3__with_time_zone updatedAt diff --git a/docs/generated/postgres-schema/public.scheduled_job.md b/docs/generated/postgres-schema/public.scheduled_job.md index 1679487f913..c4e133b80cb 100644 --- a/docs/generated/postgres-schema/public.scheduled_job.md +++ b/docs/generated/postgres-schema/public.scheduled_job.md @@ -5,7 +5,7 @@ | Name | Type | Default | Nullable | Children | Parents | Comment | | ---- | ---- | ------- | -------- | -------- | ------- | ------- | | createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | | -| cronExpression | varchar(255) | | true | | | Cron expression driving recurrence; set only when kind is 'cron'. | +| cronExpression | varchar(255) | | true | | | Cron expression. For kind 'cron' it is the schedule; for 'recurring_cron' it lists the candidate run times that the every-N-periods filter then keeps every Nth of. | | enabled | boolean | true | false | | | Whether the scheduler considers this job for firing. | | fireAt | timestamp(3) with time zone | | true | | | Absolute time the job fires once; set only when kind is 'one_off'. | | id | integer | | false | [public.scheduled_task](public.scheduled_task.md) | | | @@ -17,6 +17,8 @@ | nextRunAt | timestamp(3) with time zone | | true | | | Next time an occurrence is due; the scheduler sweep reads this to find work. NULL once disabled or a one-off has fired. | | nodeId | varchar(36) | | true | | | Trigger node within the workflow that owns this job; NULL for non-trigger jobs. | | payload | json | '{}'::json | false | | | Input passed to the task handler when an occurrence runs. | +| recurrenceSize | integer | | true | | | The N in a recurring_cron schedule's every-N-periods filter, e.g. 3 for every 3 weeks; at least 2. Set only when kind is 'recurring_cron'. | +| recurrenceUnit | varchar(16) | | true | | | Calendar period counted by a recurring_cron schedule's every-N-periods filter (hours, days, weeks, months). Set only when kind is 'recurring_cron'. | | taskType | varchar(128) | | false | | | Selects which registered handler runs the task. | | timezone | varchar(64) | | true | | | IANA timezone the cron expression is evaluated in; NULL uses the instance default. | | updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | | @@ -29,7 +31,10 @@ | CHK_scheduled_job_cron_expression | CHECK | CHECK ((((kind)::text <> 'cron'::text) OR ("cronExpression" IS NOT NULL))) | | CHK_scheduled_job_fire_at | CHECK | CHECK ((((kind)::text <> 'one_off'::text) OR ("fireAt" IS NOT NULL))) | | CHK_scheduled_job_interval_seconds | CHECK | CHECK ((((kind)::text <> 'interval'::text) OR ("intervalSeconds" IS NOT NULL))) | -| CHK_scheduled_job_kind | CHECK | CHECK (((kind)::text = ANY ((ARRAY['cron'::character varying, 'interval'::character varying, 'one_off'::character varying])::text[]))) | +| CHK_scheduled_job_kind | CHECK | CHECK (((kind)::text = ANY ((ARRAY['cron'::character varying, 'interval'::character varying, 'one_off'::character varying, 'recurring_cron'::character varying])::text[]))) | +| CHK_scheduled_job_recurrence_size | CHECK | CHECK (("recurrenceSize" >= 2)) | +| CHK_scheduled_job_recurrence_unit | CHECK | CHECK ((("recurrenceUnit")::text = ANY ((ARRAY['hours'::character varying, 'days'::character varying, 'weeks'::character varying, 'months'::character varying])::text[]))) | +| CHK_scheduled_job_recurring_cron | CHECK | CHECK ((((kind)::text <> 'recurring_cron'::text) OR (("cronExpression" IS NOT NULL) AND ("recurrenceUnit" IS NOT NULL) AND ("recurrenceSize" IS NOT NULL)))) | | FK_scheduled_job_workflowId | FOREIGN KEY | FOREIGN KEY ("workflowId") REFERENCES workflow_published_version("workflowId") ON DELETE CASCADE | | PK_893185383f029ca8d57bb781fa8 | PRIMARY KEY | PRIMARY KEY (id) | | scheduled_job_createdAt_not_null | n | NOT NULL "createdAt" | @@ -73,6 +78,8 @@ erDiagram timestamp_3__with_time_zone nextRunAt varchar_36_ nodeId json payload + integer recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone timestamp_3__with_time_zone updatedAt diff --git a/docs/generated/postgres-schema/public.scheduled_task.md b/docs/generated/postgres-schema/public.scheduled_task.md index 5bec8bf9682..bed25a7835e 100644 --- a/docs/generated/postgres-schema/public.scheduled_task.md +++ b/docs/generated/postgres-schema/public.scheduled_task.md @@ -90,6 +90,8 @@ erDiagram timestamp_3__with_time_zone nextRunAt varchar_36_ nodeId json payload + integer recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone timestamp_3__with_time_zone updatedAt diff --git a/docs/generated/postgres-schema/public.workflow_published_version.md b/docs/generated/postgres-schema/public.workflow_published_version.md index 2c110c801cc..a8ae6e9756a 100644 --- a/docs/generated/postgres-schema/public.workflow_published_version.md +++ b/docs/generated/postgres-schema/public.workflow_published_version.md @@ -91,6 +91,8 @@ erDiagram timestamp_3__with_time_zone nextRunAt varchar_36_ nodeId json payload + integer recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone timestamp_3__with_time_zone updatedAt diff --git a/docs/generated/sqlite-schema/README.md b/docs/generated/sqlite-schema/README.md index 6f0e71b8a8e..15fe8e4a84f 100644 --- a/docs/generated/sqlite-schema/README.md +++ b/docs/generated/sqlite-schema/README.md @@ -92,7 +92,7 @@ Auto-generated from the SQLite migrations in @n8n/db. Do not edit by hand. | [role_mapping_rule](role_mapping_rule.md) | 7 | | table | | [role_mapping_rule_project](role_mapping_rule_project.md) | 2 | | table | | [role_scope](role_scope.md) | 2 | | table | -| [scheduled_job](scheduled_job.md) | 17 | | table | +| [scheduled_job](scheduled_job.md) | 19 | | table | | [scheduled_task](scheduled_task.md) | 16 | | table | | [scope](scope.md) | 3 | | table | | [secrets_provider_connection](secrets_provider_connection.md) | 7 | | table | @@ -1096,6 +1096,8 @@ erDiagram datetime_3_ nextRunAt varchar_36_ nodeId TEXT payload + INT recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone datetime_3_ updatedAt diff --git a/docs/generated/sqlite-schema/scheduled_job.md b/docs/generated/sqlite-schema/scheduled_job.md index f2d8d275505..af855f92ca5 100644 --- a/docs/generated/sqlite-schema/scheduled_job.md +++ b/docs/generated/sqlite-schema/scheduled_job.md @@ -6,7 +6,7 @@ Table Definition ```sql -CREATE TABLE "scheduled_job" ("id" integer PRIMARY KEY NOT NULL, "name" varchar(255) NOT NULL, "workflowId" varchar(36), "nodeId" varchar(36), "taskType" varchar(128) NOT NULL, "payload" text NOT NULL DEFAULT ('{}'), "kind" varchar(16) NOT NULL, "cronExpression" varchar(255), "timezone" varchar(64), "intervalSeconds" integer, "fireAt" datetime(3), "enabled" boolean NOT NULL DEFAULT (true), "nextRunAt" datetime(3), "lastFiredAt" datetime(3), "maxAttempts" integer NOT NULL DEFAULT (1), "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "CHK_scheduled_job_cron_expression" CHECK ("kind" <> 'cron' OR "cronExpression" IS NOT NULL), CONSTRAINT "CHK_scheduled_job_interval_seconds" CHECK ("kind" <> 'interval' OR "intervalSeconds" IS NOT NULL), CONSTRAINT "CHK_scheduled_job_fire_at" CHECK ("kind" <> 'one_off' OR "fireAt" IS NOT NULL), CONSTRAINT "CHK_scheduled_job_kind" CHECK ("kind" IN ('cron', 'interval', 'one_off')), CONSTRAINT "FK_scheduled_job_workflowId" FOREIGN KEY ("workflowId") REFERENCES "workflow_published_version" ("workflowId") ON DELETE CASCADE) +CREATE TABLE "scheduled_job" ("id" integer PRIMARY KEY NOT NULL, "name" varchar(255) NOT NULL, "workflowId" varchar(36), "nodeId" varchar(36), "taskType" varchar(128) NOT NULL, "payload" text NOT NULL DEFAULT ('{}'), "kind" varchar(16) NOT NULL, "cronExpression" varchar(255), "timezone" varchar(64), "intervalSeconds" integer, "fireAt" datetime(3), "enabled" boolean NOT NULL DEFAULT (true), "nextRunAt" datetime(3), "lastFiredAt" datetime(3), "maxAttempts" integer NOT NULL DEFAULT (1), "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "recurrenceUnit" varchar(16), "recurrenceSize" int, CONSTRAINT "CHK_scheduled_job_recurrence_unit" CHECK (("recurrenceUnit" IN ('hours', 'days', 'weeks', 'months'))), CONSTRAINT "CHK_scheduled_job_recurrence_size" CHECK (("recurrenceSize" >= 2)), CONSTRAINT "CHK_scheduled_job_cron_expression" CHECK (("kind" <> 'cron' OR "cronExpression" IS NOT NULL)), CONSTRAINT "CHK_scheduled_job_interval_seconds" CHECK (("kind" <> 'interval' OR "intervalSeconds" IS NOT NULL)), CONSTRAINT "CHK_scheduled_job_fire_at" CHECK (("kind" <> 'one_off' OR "fireAt" IS NOT NULL)), CONSTRAINT "CHK_scheduled_job_kind" CHECK ("kind" IN ('cron', 'interval', 'one_off', 'recurring_cron')), CONSTRAINT "CHK_scheduled_job_recurring_cron" CHECK ("kind" <> 'recurring_cron' OR ("cronExpression" IS NOT NULL AND "recurrenceUnit" IS NOT NULL AND "recurrenceSize" IS NOT NULL)), CONSTRAINT "FK_scheduled_job_workflowId" FOREIGN KEY ("workflowId") REFERENCES "workflow_published_version" ("workflowId") ON DELETE CASCADE ON UPDATE NO ACTION) ``` @@ -28,6 +28,8 @@ CREATE TABLE "scheduled_job" ("id" integer PRIMARY KEY NOT NULL, "name" varchar( | nextRunAt | datetime(3) | | true | | | | | nodeId | varchar(36) | | true | | | | | payload | TEXT | '{}' | false | | | | +| recurrenceSize | INT | | true | | | | +| recurrenceUnit | varchar(16) | | true | | | | | taskType | varchar(128) | | false | | | | | timezone | varchar(64) | | true | | | | | updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | | @@ -37,10 +39,13 @@ CREATE TABLE "scheduled_job" ("id" integer PRIMARY KEY NOT NULL, "name" varchar( | Name | Type | Definition | | ---- | ---- | ---------- | -| - | CHECK | CHECK ("kind" <> 'cron' OR "cronExpression" IS NOT NULL) | -| - | CHECK | CHECK ("kind" <> 'interval' OR "intervalSeconds" IS NOT NULL) | -| - | CHECK | CHECK ("kind" <> 'one_off' OR "fireAt" IS NOT NULL) | -| - | CHECK | CHECK ("kind" IN ('cron', 'interval', 'one_off')) | +| - | CHECK | CHECK (("recurrenceUnit" IN ('hours', 'days', 'weeks', 'months'))) | +| - | CHECK | CHECK (("recurrenceSize" >= 2)) | +| - | CHECK | CHECK (("kind" <> 'cron' OR "cronExpression" IS NOT NULL)) | +| - | CHECK | CHECK (("kind" <> 'interval' OR "intervalSeconds" IS NOT NULL)) | +| - | CHECK | CHECK (("kind" <> 'one_off' OR "fireAt" IS NOT NULL)) | +| - | CHECK | CHECK ("kind" IN ('cron', 'interval', 'one_off', 'recurring_cron')) | +| - | CHECK | CHECK ("kind" <> 'recurring_cron' OR ("cronExpression" IS NOT NULL AND "recurrenceUnit" IS NOT NULL AND "recurrenceSize" IS NOT NULL)) | | - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (workflowId) REFERENCES workflow_published_version (workflowId) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE | | id | PRIMARY KEY | PRIMARY KEY (id) | @@ -74,6 +79,8 @@ erDiagram datetime_3_ nextRunAt varchar_36_ nodeId TEXT payload + INT recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone datetime_3_ updatedAt diff --git a/docs/generated/sqlite-schema/scheduled_task.md b/docs/generated/sqlite-schema/scheduled_task.md index 2404b24028a..b7033d7d768 100644 --- a/docs/generated/sqlite-schema/scheduled_task.md +++ b/docs/generated/sqlite-schema/scheduled_task.md @@ -89,6 +89,8 @@ erDiagram datetime_3_ nextRunAt varchar_36_ nodeId TEXT payload + INT recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone datetime_3_ updatedAt diff --git a/docs/generated/sqlite-schema/workflow_published_version.md b/docs/generated/sqlite-schema/workflow_published_version.md index 28f81bf20e1..a041baf8f8d 100644 --- a/docs/generated/sqlite-schema/workflow_published_version.md +++ b/docs/generated/sqlite-schema/workflow_published_version.md @@ -103,6 +103,8 @@ erDiagram datetime_3_ nextRunAt varchar_36_ nodeId TEXT payload + INT recurrenceSize + varchar_16_ recurrenceUnit varchar_128_ taskType varchar_64_ timezone datetime_3_ updatedAt diff --git a/packages/@n8n/api-types/src/dto/packages/__tests__/import-package-request.dto.test.ts b/packages/@n8n/api-types/src/dto/packages/__tests__/import-package-request.dto.test.ts index ba44a61a318..fbaa0669598 100644 --- a/packages/@n8n/api-types/src/dto/packages/__tests__/import-package-request.dto.test.ts +++ b/packages/@n8n/api-types/src/dto/packages/__tests__/import-package-request.dto.test.ts @@ -12,6 +12,7 @@ describe('ImportPackageRequestDto', () => { workflowConflictPolicy: 'fail', workflowPublishingPolicy: 'preserve-published-state', workflowIdPolicy: 'new', + folderConflictPolicy: 'merge', }); } }); @@ -31,6 +32,7 @@ describe('ImportPackageRequestDto', () => { workflowConflictPolicy: 'fail', workflowPublishingPolicy: 'preserve-published-state', workflowIdPolicy: 'new', + folderConflictPolicy: 'merge', }); } }); @@ -52,6 +54,7 @@ describe('ImportPackageRequestDto', () => { workflowConflictPolicy: 'new-version', workflowPublishingPolicy: 'preserve-published-state', workflowIdPolicy: 'new', + folderConflictPolicy: 'merge', }); } }); @@ -72,6 +75,7 @@ describe('ImportPackageRequestDto', () => { workflowConflictPolicy: 'skip', workflowPublishingPolicy: 'preserve-published-state', workflowIdPolicy: 'new', + folderConflictPolicy: 'merge', }); } }); diff --git a/packages/@n8n/api-types/src/dto/packages/import-package-request.dto.ts b/packages/@n8n/api-types/src/dto/packages/import-package-request.dto.ts index 2344fbeb9ff..3a91f39782f 100644 --- a/packages/@n8n/api-types/src/dto/packages/import-package-request.dto.ts +++ b/packages/@n8n/api-types/src/dto/packages/import-package-request.dto.ts @@ -12,6 +12,7 @@ export const IMPORT_PACKAGE_REQUEST_FORM_FIELDS = [ 'workflowConflictPolicy', 'workflowPublishingPolicy', 'workflowIdPolicy', + 'folderConflictPolicy', ] as const; /** Multipart text fields: empty / whitespace-only values become `undefined`. */ @@ -72,4 +73,5 @@ export class ImportPackageRequestDto extends Z.class({ .optional() .default('preserve-published-state'), workflowIdPolicy: z.enum(['new', 'source']).optional().default('new'), + folderConflictPolicy: z.enum(['merge', 'fail']).optional().default('merge'), }) {} diff --git a/packages/@n8n/api-types/src/schemas/__tests__/agent-run-reducer.test.ts b/packages/@n8n/api-types/src/schemas/__tests__/agent-run-reducer.test.ts index 6d02b65cca5..a0ae7f642af 100644 --- a/packages/@n8n/api-types/src/schemas/__tests__/agent-run-reducer.test.ts +++ b/packages/@n8n/api-types/src/schemas/__tests__/agent-run-reducer.test.ts @@ -41,8 +41,15 @@ function makeTextDelta( runId: string, agentId: string, text: string, + responseId?: string, ): Extract { - return { type: 'text-delta', runId, agentId, payload: { text } }; + return { + type: 'text-delta', + runId, + agentId, + ...(responseId ? { responseId } : {}), + payload: { text }, + }; } function makeReasoningDelta( @@ -1197,4 +1204,225 @@ describe('agent-run-reducer', () => { expect(child.timeline).toEqual([{ type: 'reasoning', content: 'Child reasoning' }]); }); }); + describe('durable-log replay (block replace semantics + interrupted facts)', () => { + const RUN = 'run-dl'; + const AGENT = 'orchestrator-run-dl'; + + function makeTextBlock( + text: string, + responseId?: string, + ): Extract { + return { + type: 'text-block', + runId: RUN, + agentId: AGENT, + ...(responseId ? { responseId } : {}), + payload: { text }, + }; + } + + function makeReasoningBlock( + text: string, + responseId?: string, + ): Extract { + return { + type: 'reasoning-block', + runId: RUN, + agentId: AGENT, + ...(responseId ? { responseId } : {}), + payload: { text }, + }; + } + + it('text-block REPLACES the open streamed segment with the same responseId', () => { + // Mid-block reconnect: the client saw partial deltas live, then the + // replayed block carries the segment's full text. + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeTextDelta(RUN, AGENT, 'AAA', 'msg-open')); + state = reduceEvent(state, makeTextDelta(RUN, AGENT, 'BBB', 'msg-open')); + state = reduceEvent(state, makeTextBlock('AAABBBCCC', 'msg-open')); + + const agent = findAgent(state, AGENT)!; + expect(agent.textContent).toBe('AAABBBCCC'); + expect(agent.timeline.filter((e) => e.type === 'text')).toEqual([ + { type: 'text', content: 'AAABBBCCC', responseId: 'msg-open' }, + ]); + }); + + it('reasoning-block strips exactly the open segment before appending the full text', () => { + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + // A previously closed reasoning segment must be preserved verbatim. + state = reduceEvent(state, makeReasoningDelta(RUN, AGENT, 'first thoughts. ', 'msg-1')); + state = reduceEvent(state, makeReasoningBlock('first thoughts. ', 'msg-1')); + // Open segment: two partial deltas, then the replayed block. + state = reduceEvent(state, makeReasoningDelta(RUN, AGENT, 'sec', 'msg-2')); + state = reduceEvent(state, makeReasoningDelta(RUN, AGENT, 'ond', 'msg-2')); + state = reduceEvent(state, makeReasoningBlock('second thoughts.', 'msg-2')); + + const agent = findAgent(state, AGENT)!; + expect(agent.reasoning).toBe('first thoughts. second thoughts.'); + expect(agent.timeline.filter((e) => e.type === 'reasoning')).toEqual([ + { type: 'reasoning', content: 'first thoughts. ', responseId: 'msg-1' }, + { type: 'reasoning', content: 'second thoughts.', responseId: 'msg-2' }, + ]); + }); + + it('mid-block reconnect deep-equals the never-disconnected state (text)', () => { + // Never disconnected: the full delta stream, then the closing block. + let live = createInitialState(AGENT); + live = reduceEvent(live, makeRunStart(RUN, AGENT)); + for (const text of ['AAA', 'BBB', 'CCC']) { + live = reduceEvent(live, makeTextDelta(RUN, AGENT, text, 'msg-open')); + } + live = reduceEvent(live, makeTextBlock('AAABBBCCC', 'msg-open')); + + // Reconnected mid-block: partial deltas seen live, then the replayed + // block (deltas are never persisted, so the tail is never re-sent). + let reconnected = createInitialState(AGENT); + reconnected = reduceEvent(reconnected, makeRunStart(RUN, AGENT)); + for (const text of ['AAA', 'BBB']) { + reconnected = reduceEvent(reconnected, makeTextDelta(RUN, AGENT, text, 'msg-open')); + } + reconnected = reduceEvent(reconnected, makeTextBlock('AAABBBCCC', 'msg-open')); + + expect(reconnected).toEqual(live); + }); + + it('mid-block reconnect deep-equals the never-disconnected state (reasoning)', () => { + let live = createInitialState(AGENT); + live = reduceEvent(live, makeRunStart(RUN, AGENT)); + for (const text of ['deep ', 'thoughts', '...']) { + live = reduceEvent(live, makeReasoningDelta(RUN, AGENT, text, 'msg-open')); + } + live = reduceEvent(live, makeReasoningBlock('deep thoughts...', 'msg-open')); + + let reconnected = createInitialState(AGENT); + reconnected = reduceEvent(reconnected, makeRunStart(RUN, AGENT)); + for (const text of ['deep ', 'thoughts']) { + reconnected = reduceEvent(reconnected, makeReasoningDelta(RUN, AGENT, text, 'msg-open')); + } + reconnected = reduceEvent(reconnected, makeReasoningBlock('deep thoughts...', 'msg-open')); + + expect(reconnected).toEqual(live); + }); + + it('a block with a DIFFERENT responseId appends instead of replacing', () => { + // Pure replay (no live deltas seen): every block appends. + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeTextBlock('first segment. ', 'msg-1')); + state = reduceEvent(state, makeTextBlock('second segment.', 'msg-2')); + + const agent = findAgent(state, AGENT)!; + expect(agent.textContent).toBe('first segment. second segment.'); + expect(agent.timeline.filter((e) => e.type === 'text')).toHaveLength(2); + }); + + it('adjacent id-less blocks append — undefined ids never match as one segment', () => { + // Synthetic blocks (crash-resume markers, correction lines) carry no + // responseId; the second must not overwrite the first. + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeTextBlock('first line. ')); + state = reduceEvent(state, makeTextBlock('second line.')); + + const agent = findAgent(state, AGENT)!; + expect(agent.textContent).toBe('first line. second line.'); + // Same-key adjacency merges into one display entry — but never drops text. + expect(agent.timeline.filter((e) => e.type === 'text')).toEqual([ + { type: 'text', content: 'first line. second line.' }, + ]); + }); + + it('an id-less block never replaces, even when it textually extends the previous one', () => { + // Id-less blocks have no identity to match on, so text alone must + // never decide a replace: a block that merely happens to start with + // the previous block's text would silently overwrite it. Stream + // segments are stamped with responseIds, so the replace path never + // needs the id-less case. + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeTextBlock('Hello. ')); + state = reduceEvent(state, makeTextBlock('Hello. World.')); + + const agent = findAgent(state, AGENT)!; + // Nothing dropped: both blocks' text present, in order. + expect(agent.textContent).toBe('Hello. Hello. World.'); + expect(agent.timeline.filter((e) => e.type === 'text')).toEqual([ + { type: 'text', content: 'Hello. Hello. World.' }, + ]); + }); + + it('a block reusing a responseId with unrelated text appends', () => { + // Same id but not a textual extension of the open entry: this is a new + // message, not the completion of the partial one. + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeTextBlock('Task one finished. ', 'bg-outcome:run-dl')); + state = reduceEvent(state, makeTextBlock('Task two failed.', 'bg-outcome:run-dl')); + + const agent = findAgent(state, AGENT)!; + expect(agent.textContent).toBe('Task one finished. Task two failed.'); + expect(agent.timeline.filter((e) => e.type === 'text')).toEqual([ + { + type: 'text', + content: 'Task one finished. Task two failed.', + responseId: 'bg-outcome:run-dl', + }, + ]); + }); + + it('adjacent id-less reasoning-blocks append — undefined ids never match as one segment', () => { + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeReasoningBlock('first thoughts. ')); + state = reduceEvent(state, makeReasoningBlock('second thoughts.')); + + const agent = findAgent(state, AGENT)!; + expect(agent.reasoning).toBe('first thoughts. second thoughts.'); + expect(agent.timeline.filter((e) => e.type === 'reasoning')).toEqual([ + { type: 'reasoning', content: 'first thoughts. second thoughts.' }, + ]); + }); + + it('an id-less reasoning-block never replaces, even when it textually extends the previous one', () => { + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeReasoningBlock('so far. ')); + state = reduceEvent(state, makeReasoningBlock('so far. and further.')); + + const agent = findAgent(state, AGENT)!; + expect(agent.reasoning).toBe('so far. so far. and further.'); + expect(agent.timeline.filter((e) => e.type === 'reasoning')).toEqual([ + { type: 'reasoning', content: 'so far. so far. and further.' }, + ]); + }); + + it('tool-interrupted resolves the call terminally and run-finish{interrupted} folds to cancelled', () => { + let state = createInitialState(AGENT); + state = reduceEvent(state, makeRunStart(RUN, AGENT)); + state = reduceEvent(state, makeToolCall(RUN, AGENT, 'tc-1', 'update-workflow')); + state = reduceEvent(state, { + type: 'tool-interrupted', + runId: RUN, + agentId: AGENT, + payload: { toolCallId: 'tc-1', error: 'Interrupted by a process restart' }, + }); + state = reduceEvent(state, { + type: 'run-finish', + runId: RUN, + agentId: AGENT, + payload: { status: 'interrupted', reason: 'crash_interrupted' }, + }); + + const tc = state.toolCallsById['tc-1']; + expect(tc.isLoading).toBe(false); + expect(tc.error).toContain('Interrupted'); + expect(state.status).toBe('cancelled'); + const agent = findAgent(state, AGENT)!; + expect(agent.cancellationReason).toBe('interrupted'); + }); + }); }); diff --git a/packages/@n8n/api-types/src/schemas/agent-run-reducer.ts b/packages/@n8n/api-types/src/schemas/agent-run-reducer.ts index 8cf2966a069..9f1e9b50d40 100644 --- a/packages/@n8n/api-types/src/schemas/agent-run-reducer.ts +++ b/packages/@n8n/api-types/src/schemas/agent-run-reducer.ts @@ -35,6 +35,7 @@ function categorizeCancellation( if (reason === 'timeout') return 'timeout'; if (reason === 'service_shutdown') return 'shutdown'; if (reason === 'user_cancelled') return 'user'; + if (reason === 'crash_interrupted') return 'interrupted'; return undefined; } @@ -240,6 +241,67 @@ export function reduceEvent(state: AgentRunState, event: InstanceAiEvent): Agent break; } + case 'text-block': { + // Coalesced segment from the durable log (replay path). When the last + // timeline entry is this segment's streamed deltas (mid-block reconnect: + // the client saw part of the text live), REPLACE it instead of appending + // so no text renders twice. The log flushes a block immediately before + // the segment's next structural fact, so on replay the partial deltas + // are always the last text entry when this event arrives. + // Replace requires a PRESENT, matching responseId: id-less blocks + // (synthetic markers, backfill) have no identity to match on, so they + // always append — two of them can never overwrite each other. The + // block must also textually extend the entry (deltas stream in order, + // so a genuine partial is always a prefix); the same id reused with + // unrelated text is a new message, not the open segment. + const agent = ensureAgent(state, event.agentId); + if (agent) { + const last = agent.timeline.at(-1); + const isOpenSegment = + last?.type === 'text' && + event.responseId !== undefined && + last.responseId === event.responseId && + event.payload.text.startsWith(last.content); + if (isOpenSegment && agent.textContent.endsWith(last.content)) { + agent.textContent = + agent.textContent.slice(0, agent.textContent.length - last.content.length) + + event.payload.text; + last.content = event.payload.text; + } else { + agent.textContent += event.payload.text; + appendTimelineText(agent.timeline, event.payload.text, event.responseId); + } + } + break; + } + + case 'reasoning-block': { + // Coalesced reasoning segment from the durable log (replay path). Same + // replace semantics as text-block (present matching responseId plus + // textual extension): the segment's open streamed deltas are its + // timeline entry, so REPLACE that entry and strip the partial text + // from the aggregate — no text renders twice. + const agent = ensureAgent(state, event.agentId); + if (agent) { + const last = agent.timeline.at(-1); + const isOpenSegment = + last?.type === 'reasoning' && + event.responseId !== undefined && + last.responseId === event.responseId && + event.payload.text.startsWith(last.content); + if (isOpenSegment && agent.reasoning.endsWith(last.content)) { + agent.reasoning = + agent.reasoning.slice(0, agent.reasoning.length - last.content.length) + + event.payload.text; + last.content = event.payload.text; + } else { + agent.reasoning += event.payload.text; + appendTimelineReasoning(agent.timeline, event.payload.text, event.responseId); + } + } + break; + } + case 'tool-call': { if (!isSafeObjectKey(event.payload.toolCallId)) break; const agent = ensureAgent(state, event.agentId); @@ -285,6 +347,19 @@ export function reduceEvent(state: AgentRunState, event: InstanceAiEvent): Agent break; } + case 'tool-interrupted': { + // Durable fact for a tool call in flight when the process died: + // terminal like tool-error, effect unverified, never blind-retried. + if (!isSafeObjectKey(event.payload.toolCallId)) break; + const tc = state.toolCallsById[event.payload.toolCallId]; + if (tc) { + tc.error = event.payload.error; + tc.isLoading = false; + tc.completedAt = new Date().toISOString(); + } + break; + } + case 'agent-spawned': { if (!isSafeObjectKey(event.agentId) || !isSafeObjectKey(event.payload.parentId)) break; // Idempotency guard: a replayed agent-spawned for an existing agent @@ -393,8 +468,14 @@ export function reduceEvent(state: AgentRunState, event: InstanceAiEvent): Agent case 'run-finish': { const { status } = event.payload; + // 'interrupted' renders as a cancellation whose reason attributes the + // crash — no dedicated FE state needed. state.status = - status === 'completed' ? 'completed' : status === 'cancelled' ? 'cancelled' : 'error'; + status === 'completed' + ? 'completed' + : status === 'cancelled' || status === 'interrupted' + ? 'cancelled' + : 'error'; const root = state.agentsById[state.rootAgentId]; if (root) { root.status = state.status; diff --git a/packages/@n8n/api-types/src/schemas/favorites.schema.ts b/packages/@n8n/api-types/src/schemas/favorites.schema.ts index 3d3e48e2d7c..5280ae2f1be 100644 --- a/packages/@n8n/api-types/src/schemas/favorites.schema.ts +++ b/packages/@n8n/api-types/src/schemas/favorites.schema.ts @@ -1,2 +1,8 @@ -export type FavoriteResourceType = 'workflow' | 'project' | 'dataTable' | 'folder'; -export const FAVORITE_RESOURCE_TYPES = ['workflow', 'project', 'dataTable', 'folder'] as const; +export type FavoriteResourceType = 'workflow' | 'project' | 'dataTable' | 'folder' | 'agent'; +export const FAVORITE_RESOURCE_TYPES = [ + 'workflow', + 'project', + 'dataTable', + 'folder', + 'agent', +] as const; diff --git a/packages/@n8n/api-types/src/schemas/instance-ai.schema.ts b/packages/@n8n/api-types/src/schemas/instance-ai.schema.ts index dae032c5e29..62e3c4cb38f 100644 --- a/packages/@n8n/api-types/src/schemas/instance-ai.schema.ts +++ b/packages/@n8n/api-types/src/schemas/instance-ai.schema.ts @@ -102,9 +102,12 @@ export const instanceAiEventTypeSchema = z.enum([ 'agent-completed', 'text-delta', 'reasoning-delta', + 'text-block', + 'reasoning-block', 'tool-call', 'tool-result', 'tool-error', + 'tool-interrupted', 'confirmation-request', 'tasks-update', 'filesystem-request', @@ -118,7 +121,10 @@ export type InstanceAiEventType = z.infer; // Run status // --------------------------------------------------------------------------- -export const instanceAiRunStatusSchema = z.enum(['completed', 'cancelled', 'error']); +// 'interrupted' (durable-log RFC, resilience phase): appended by the +// interrupted-run sweep for a run whose process died mid-flight — the fold +// renders every in-flight item as terminated, no walk-and-mutate. +export const instanceAiRunStatusSchema = z.enum(['completed', 'cancelled', 'error', 'interrupted']); export type InstanceAiRunStatus = z.infer; // --------------------------------------------------------------------------- @@ -712,9 +718,27 @@ export const instanceAiEventSchema = z.discriminatedUnion('type', [ ...eventBase, payload: reasoningDeltaPayloadSchema, }), + // Coalesced full text/reasoning of one streamed segment, produced by the + // durable event log (deltas are live-only and never persisted). On replay the + // reducer REPLACES the segment's streamed deltas, so a client that reconnects + // mid-block cannot see partial text twice. + z.object({ type: z.literal('text-block'), ...eventBase, payload: textDeltaPayloadSchema }), + z.object({ + type: z.literal('reasoning-block'), + ...eventBase, + payload: reasoningDeltaPayloadSchema, + }), z.object({ type: z.literal('tool-call'), ...eventBase, payload: toolCallPayloadSchema }), z.object({ type: z.literal('tool-result'), ...eventBase, payload: toolResultPayloadSchema }), z.object({ type: z.literal('tool-error'), ...eventBase, payload: toolErrorPayloadSchema }), + // Durable-log RFC (resilience phase): appended by the interrupted-run sweep + // for a tool call that was in flight when the process died. Same payload + // shape as tool-error; the effect is unverified, never re-executed blindly. + z.object({ + type: z.literal('tool-interrupted'), + ...eventBase, + payload: toolErrorPayloadSchema, + }), z.object({ type: z.literal('confirmation-request'), ...eventBase, @@ -965,7 +989,7 @@ export interface InstanceAiAgentNode { } /** Semantic cause of a cancelled run, mapped from the backend's run-finish reason. */ -export type InstanceAiCancellationReason = 'user' | 'timeout' | 'shutdown'; +export type InstanceAiCancellationReason = 'user' | 'timeout' | 'shutdown' | 'interrupted'; export interface InstanceAiMessage { id: string; diff --git a/packages/@n8n/cli/docs/commands/package.md b/packages/@n8n/cli/docs/commands/package.md index 718511c93c2..3cd999bb136 100644 --- a/packages/@n8n/cli/docs/commands/package.md +++ b/packages/@n8n/cli/docs/commands/package.md @@ -47,6 +47,7 @@ n8n-cli package import --file=export.n8np --conflict-policy=fail --bindings='{"c | `--project` | Target project ID. Defaults to your personal project. | | `--folder` | Target folder ID within the project. Defaults to the project root. | | `--workflow-id-policy` | Whether imported workflows keep their source ID (`source`) or receive a new one (`new`). | +| `--folder-conflict-policy` | What to do when a package folder already exists in the target project: `merge` (default, reuse the existing folder and merge the package's children into it) or `fail`. Requires a folders-enabled license when the package contains folders. | | `--credential-matching-mode` | How credential references are matched on the target instance: `id-only` (default, match by id), `name-and-type` (match by exact name and type), or `type-only` (match by type). For `name-and-type` and `type-only`, candidates are ranked by scope — owned by the target project, then shared into it, then global — and ties within a scope use the most recently updated credential. | | `--credential-missing-mode` | What to do when a referenced credential cannot be resolved. `create-stub` (instance default) creates empty placeholder credentials in the target project; `must-preexist` requires every referenced credential to already exist. | | `--bindings` | Explicit source→target id bindings as a JSON object keyed by entity type, e.g. `{"credentials":{"":""}}`. Only `credentials` is honoured today; these bindings are applied before `--credential-matching-mode` resolution runs. | diff --git a/packages/@n8n/cli/src/client.ts b/packages/@n8n/cli/src/client.ts index 2ddf28b327f..161feca9678 100644 --- a/packages/@n8n/cli/src/client.ts +++ b/packages/@n8n/cli/src/client.ts @@ -17,6 +17,7 @@ export interface ImportPackageFields { bindings?: string; workflowConflictPolicy: string; workflowIdPolicy?: string; + folderConflictPolicy?: string; } export class ApiError extends Error { diff --git a/packages/@n8n/cli/src/commands/package/import.ts b/packages/@n8n/cli/src/commands/package/import.ts index cf093678532..528583664ea 100644 --- a/packages/@n8n/cli/src/commands/package/import.ts +++ b/packages/@n8n/cli/src/commands/package/import.ts @@ -35,6 +35,11 @@ export default class PackageImport extends BaseCommand { options: ['new', 'source'], aliases: ['workflow-id-policy'], }), + folderConflictPolicy: Flags.string({ + description: 'What to do when a package folder already exists in the target project', + options: ['merge', 'fail'], + aliases: ['folder-conflict-policy'], + }), credentialMatchingMode: Flags.string({ description: 'How credential references are matched on the target instance', options: ['id-only', 'name-and-type', 'type-only'], @@ -71,6 +76,7 @@ export default class PackageImport extends BaseCommand { folderId: flags.folder, workflowConflictPolicy: flags.conflictPolicy, workflowIdPolicy: flags.workflowIdPolicy, + folderConflictPolicy: flags.folderConflictPolicy, credentialMatchingMode: flags.credentialMatchingMode, credentialMissingMode: flags.credentialMissingMode, bindings: flags.bindings, diff --git a/packages/@n8n/constants/src/scheduler.ts b/packages/@n8n/constants/src/scheduler.ts index a9e52f5ee80..e6b2fe1c7d0 100644 --- a/packages/@n8n/constants/src/scheduler.ts +++ b/packages/@n8n/constants/src/scheduler.ts @@ -8,13 +8,17 @@ */ /** - * Recurrence kind of a scheduled job. - * It selects which schedule columns apply. + * How a scheduled job decides when to fire: + * - on a cron expression + * - on a fixed interval + * - just once + * - or on a cron repeated every N periods. */ export const ScheduledJobKind = { Cron: 'cron', Interval: 'interval', OneOff: 'one_off', + RecurringCron: 'recurring_cron', } as const; export type ScheduledJobKind = (typeof ScheduledJobKind)[keyof typeof ScheduledJobKind]; @@ -22,6 +26,28 @@ export type ScheduledJobKind = (typeof ScheduledJobKind)[keyof typeof ScheduledJ /** All recurrence kinds as a runtime list. */ export const ScheduledJobKindList = Object.values(ScheduledJobKind); +/** + * The unit of recurrence for a `recurring_cron` schedule: a cron expression + * repeated every N of these. For example: + * - `weeks` for "every 3 weeks" + * - `hours` for "every 5 hours" + * + * Only these coarse units are supported here. + * Finer cadences (every N seconds or minutes) are expressed as a different schedule instead + * (a plain `interval`, or a stepped cron expression, see {@link ScheduledJobKind}), + * so they never go through this recurrence step. + */ +export const RecurringCronUnit = { + Hours: 'hours', + Days: 'days', + Weeks: 'weeks', + Months: 'months', +} as const; + +export type RecurringCronUnit = (typeof RecurringCronUnit)[keyof typeof RecurringCronUnit]; + +export const RecurringCronUnitList = Object.values(RecurringCronUnit); + /** * Where a scheduled task is in its lifecycle, from waiting to run to a final outcome. */ diff --git a/packages/@n8n/db/src/entities/scheduled-job.ts b/packages/@n8n/db/src/entities/scheduled-job.ts index 4132f7f8a44..ae7b594d46f 100644 --- a/packages/@n8n/db/src/entities/scheduled-job.ts +++ b/packages/@n8n/db/src/entities/scheduled-job.ts @@ -1,4 +1,4 @@ -import type { ScheduledJobKind } from '@n8n/constants'; +import type { ScheduledJobKind, RecurringCronUnit } from '@n8n/constants'; import { Column, Entity, Index, PrimaryGeneratedColumn } from '@n8n/typeorm'; import { DateTimeColumn, JsonColumn, WithTimestamps } from './abstract-entity'; @@ -77,7 +77,7 @@ export class ScheduledJob extends WithTimestamps { /** * Cron expression driving recurrence. - * Set only when {@link kind} is `cron`. + * Set when {@link kind} is `cron` or `recurring_cron`. */ @Column({ type: 'varchar', length: 255, nullable: true }) cronExpression: string | null; @@ -103,6 +103,21 @@ export class ScheduledJob extends WithTimestamps { @DateTimeColumn({ nullable: true }) fireAt: Date | null; + /** + * Calendar period the every-Nth-period recurrence gate counts in. + * Set only when {@link kind} is `recurring_cron`. + */ + @Column({ type: 'varchar', length: 16, nullable: true }) + recurrenceUnit: RecurringCronUnit | null; + + /** + * How many periods between fires, e.g. 3 for "every 3 weeks". + * At least 2: a stride of 1 keeps every fire, which is just a plain `cron`. + * Set only when {@link kind} is `recurring_cron`. + */ + @Column({ type: 'int', nullable: true }) + recurrenceSize: number | null; + @Column({ default: true }) enabled: boolean; diff --git a/packages/@n8n/db/src/migrations/common/1784000000045-AddRecurringCronScheduleKind.ts b/packages/@n8n/db/src/migrations/common/1784000000045-AddRecurringCronScheduleKind.ts new file mode 100644 index 00000000000..97e6359a4f8 --- /dev/null +++ b/packages/@n8n/db/src/migrations/common/1784000000045-AddRecurringCronScheduleKind.ts @@ -0,0 +1,154 @@ +import { TableCheck } from '@n8n/typeorm'; + +import type { MigrationContext, ReversibleMigration } from '../migration-types'; + +const table = 'scheduled_job'; +const taskTable = 'scheduled_task'; +const kindColumn = 'kind'; +const kindValuesBefore = ['cron', 'interval', 'one_off']; +const kindValues = [...kindValuesBefore, 'recurring_cron']; +const recurrenceUnitValues = ['hours', 'days', 'weeks', 'months']; + +/** + * Adds the `recurring_cron` schedule kind and its two supporting columns. + * + * A `recurring_cron` schedule pairs a cron expression with an "every N periods" + * filter, so it can express schedules a cron expression cannot on its own, e.g. + * "every 3 weeks on Mon and Wed" or "every 5 hours". The cron expression lists + * the candidate run times (reusing the existing `cronExpression` / `timezone` + * columns); the filter then keeps only every Nth of them. The N and the period + * it counts live in the two new columns: + * - `recurrenceUnit`: the calendar period counted (hours, days, weeks, months) + * - `recurrenceSize`: the N, e.g. 3 for "every 3 weeks" (at least 2) + */ +export class AddRecurringCronScheduleKind1784000000045 implements ReversibleMigration { + async up(context: MigrationContext) { + await this.addRecurrenceColumns(context); + + // `addRecurrenceColumns` adds the two columns via raw `ALTER TABLE ADD + // COLUMN`, which TypeORM doesn't observe, so its cached `Table` metadata is + // stale. On SQLite the next steps rebuild the whole table from that cache + // (see `widenKindCheck` / `addRecurringCronPresenceCheck`); without this + // refresh the rebuild would silently drop the two new columns. + // `getTable()` reloads the real schema from PRAGMA table_info. + if (context.isSqlite) { + await context.queryRunner.getTable(`${context.tablePrefix}${table}`); + } + + await this.widenKindCheck(context); + await this.addRecurringCronPresenceCheck(context); + if (context.isPostgres) { + await this.commentColumns(context); + } + } + + async down(context: MigrationContext) { + const { escape, queryRunner, tablePrefix, schemaBuilder } = context; + const jobTable = escape.tableName(table); + const kind = escape.columnName(kindColumn); + + // recurring_cron rows cannot exist under the narrowed kind CHECK. Their + // queued occurrences are removed explicitly rather than via the job -> + // task CASCADE, which is off while SQLite runs with FKs disabled. + await context.runQuery( + `DELETE FROM ${escape.tableName(taskTable)} WHERE ${escape.columnName('jobId')} IN ` + + `(SELECT ${escape.columnName('id')} FROM ${jobTable} WHERE ${kind} = 'recurring_cron')`, + ); + await context.runQuery(`DELETE FROM ${jobTable} WHERE ${kind} = 'recurring_cron'`); + + await queryRunner.dropCheckConstraint( + `${tablePrefix}${table}`, + `CHK_${tablePrefix}scheduled_job_recurring_cron`, + ); + + await schemaBuilder.dropEnumCheck(table, kindColumn, { recreatesOnSqlite: true }); + await schemaBuilder.addEnumCheck(table, kindColumn, kindValuesBefore, { + recreatesOnSqlite: true, + }); + + // The columns' own CHECK constraints must go before the columns: TypeORM's + // SQLite table rebuild keeps checks referencing dropped columns, and SQLite + // then reads `"recurrenceUnit"` as a string literal, failing every row copy. + await queryRunner.dropCheckConstraint( + `${tablePrefix}${table}`, + `CHK_${tablePrefix}scheduled_job_recurrence_unit`, + ); + await queryRunner.dropCheckConstraint( + `${tablePrefix}${table}`, + `CHK_${tablePrefix}scheduled_job_recurrence_size`, + ); + + await schemaBuilder.dropColumns(table, ['recurrenceUnit', 'recurrenceSize'], { + recreatesOnSqlite: true, + }); + + if (context.isPostgres) { + // Restore the comment `up()` overwrote (wording from CreateSchedulerTables). + await context.runQuery( + `COMMENT ON COLUMN ${jobTable}.${escape.columnName('cronExpression')} IS ` + + "'Cron expression driving recurrence; set only when kind is ''cron''.'", + ); + } + } + + /** + * Adds the two columns with raw `ADD COLUMN` rather than the schema builder's + * `addColumns`, so SQLite doesn't rebuild the whole table just to add two + * nullable columns. Each column carries a CHECK on its own value (valid unit, + * size >= 2). Enforcing that both are set together on `recurring_cron` rows is + * a separate constraint, see `addRecurringCronPresenceCheck`. + */ + private async addRecurrenceColumns({ runQuery, escape, tablePrefix }: MigrationContext) { + const jobTable = escape.tableName(table); + const recurrenceUnit = escape.columnName('recurrenceUnit'); + const recurrenceSize = escape.columnName('recurrenceSize'); + + const unitValues = recurrenceUnitValues.map((value) => `'${value}'`).join(', '); + await runQuery( + `ALTER TABLE ${jobTable} ADD COLUMN ${recurrenceUnit} varchar(16) ` + + `CONSTRAINT "CHK_${tablePrefix}scheduled_job_recurrence_unit" CHECK (${recurrenceUnit} IN (${unitValues}))`, + ); + await runQuery( + `ALTER TABLE ${jobTable} ADD COLUMN ${recurrenceSize} int ` + + `CONSTRAINT "CHK_${tablePrefix}scheduled_job_recurrence_size" CHECK (${recurrenceSize} >= 2)`, + ); + } + + /** + * Adds `recurring_cron` to the values the `kind` CHECK constraint accepts + * (recreates the table on SQLite). Drops then re-adds the constraint: the + * original was created by the schema builder's `withEnumCheck`, so + * `dropEnumCheck` finds it by its deterministic name. + */ + private async widenKindCheck({ schemaBuilder }: MigrationContext) { + await schemaBuilder.dropEnumCheck(table, kindColumn, { recreatesOnSqlite: true }); + await schemaBuilder.addEnumCheck(table, kindColumn, kindValues, { recreatesOnSqlite: true }); + } + + private async addRecurringCronPresenceCheck({ queryRunner, tablePrefix }: MigrationContext) { + await queryRunner.createCheckConstraint( + `${tablePrefix}${table}`, + new TableCheck({ + name: `CHK_${tablePrefix}scheduled_job_recurring_cron`, + expression: + '"kind" <> \'recurring_cron\' OR ("cronExpression" IS NOT NULL AND "recurrenceUnit" IS NOT NULL AND "recurrenceSize" IS NOT NULL)', + }), + ); + } + + private async commentColumns({ runQuery, escape }: MigrationContext) { + const jobTable = escape.tableName(table); + await runQuery( + `COMMENT ON COLUMN ${jobTable}.${escape.columnName('recurrenceUnit')} IS ` + + "'Calendar period counted by a recurring_cron schedule''s every-N-periods filter (hours, days, weeks, months). Set only when kind is ''recurring_cron''.'", + ); + await runQuery( + `COMMENT ON COLUMN ${jobTable}.${escape.columnName('recurrenceSize')} IS ` + + "'The N in a recurring_cron schedule''s every-N-periods filter, e.g. 3 for every 3 weeks; at least 2. Set only when kind is ''recurring_cron''.'", + ); + await runQuery( + `COMMENT ON COLUMN ${jobTable}.${escape.columnName('cronExpression')} IS ` + + "'Cron expression. For kind ''cron'' it is the schedule; for ''recurring_cron'' it lists the candidate run times that the every-N-periods filter then keeps every Nth of.'", + ); + } +} diff --git a/packages/@n8n/db/src/migrations/postgresdb/index.ts b/packages/@n8n/db/src/migrations/postgresdb/index.ts index 7761fbbe405..b77178507b8 100644 --- a/packages/@n8n/db/src/migrations/postgresdb/index.ts +++ b/packages/@n8n/db/src/migrations/postgresdb/index.ts @@ -218,6 +218,7 @@ import { CreateWorkflowPublicationTriggerStatusTable1784000000040 } from '../com import { AddUsedPrivateCredentialsToExecutionEntity1784000000041 } from '../common/1784000000041-AddUsedPrivateCredentialsToExecutionEntity'; import { CreateSchedulerTables1784000000042 } from '../common/1784000000042-CreateSchedulerTables'; import { AddPartialIndexForGlobalCredentials1784000000044 } from '../common/1784000000044-AddPartialIndexForGlobalCredentials'; +import { AddRecurringCronScheduleKind1784000000045 } from '../common/1784000000045-AddRecurringCronScheduleKind'; import type { Migration } from '../migration-types'; export const postgresMigrations: Migration[] = [ @@ -441,4 +442,5 @@ export const postgresMigrations: Migration[] = [ CreateSchedulerTables1784000000042, CreateWorkflowStatisticsDeltaTable1784000000043, AddPartialIndexForGlobalCredentials1784000000044, + AddRecurringCronScheduleKind1784000000045, ]; diff --git a/packages/@n8n/db/src/migrations/sqlite/1784000000045-AddRecurringCronScheduleKind.ts b/packages/@n8n/db/src/migrations/sqlite/1784000000045-AddRecurringCronScheduleKind.ts new file mode 100644 index 00000000000..aea59ef1769 --- /dev/null +++ b/packages/@n8n/db/src/migrations/sqlite/1784000000045-AddRecurringCronScheduleKind.ts @@ -0,0 +1,12 @@ +import { AddRecurringCronScheduleKind1784000000045 as BaseMigration } from '../common/1784000000045-AddRecurringCronScheduleKind'; + +/** + * On SQLite, changing the CHECK constraints (both directions) and dropping the + * recurrence columns recreate the whole `scheduled_job` table. `scheduled_task` + * references it with ON DELETE CASCADE, so the recreate's DROP would cascade and + * wipe queued tasks. Disable foreign keys for the migration so the drop stays + * local to `scheduled_job`. + */ +export class AddRecurringCronScheduleKind1784000000045 extends BaseMigration { + withFKsDisabled = true as const; +} diff --git a/packages/@n8n/db/src/migrations/sqlite/index.ts b/packages/@n8n/db/src/migrations/sqlite/index.ts index dcab99730f1..692865e3bb1 100644 --- a/packages/@n8n/db/src/migrations/sqlite/index.ts +++ b/packages/@n8n/db/src/migrations/sqlite/index.ts @@ -57,6 +57,7 @@ import { AddScopeColumnToOAuthTables1784000000026 } from './1784000000026-AddSco import { AddProjectIdToInstanceAiThread1784000000028 } from './1784000000028-AddProjectIdToInstanceAiThread'; import { AllowAzureStoredAt1784000000034 } from './1784000000034-AllowAzureStoredAt'; import { DropAgentDescriptionFromAgents1784000000037 } from './1784000000037-DropAgentDescriptionFromAgents'; +import { AddRecurringCronScheduleKind1784000000045 } from './1784000000045-AddRecurringCronScheduleKind'; import { UniqueWorkflowNames1620821879465 } from '../common/1620821879465-UniqueWorkflowNames'; import { UpdateWorkflowCredentials1630330987096 } from '../common/1630330987096-UpdateWorkflowCredentials'; import { AddNodeIds1658930531669 } from '../common/1658930531669-AddNodeIds'; @@ -423,6 +424,7 @@ const sqliteMigrations: Migration[] = [ AddUsedPrivateCredentialsToExecutionEntity1784000000041, CreateSchedulerTables1784000000042, AddPartialIndexForGlobalCredentials1784000000044, + AddRecurringCronScheduleKind1784000000045, ]; export { sqliteMigrations }; diff --git a/packages/@n8n/db/src/repositories/__tests__/scheduled-job.repository.test.ts b/packages/@n8n/db/src/repositories/__tests__/scheduled-job.repository.test.ts new file mode 100644 index 00000000000..7d67e708828 --- /dev/null +++ b/packages/@n8n/db/src/repositories/__tests__/scheduled-job.repository.test.ts @@ -0,0 +1,213 @@ +import type { DatabaseConfig } from '@n8n/config'; +import { Container } from '@n8n/di'; +import type { DataSource, EntityManager } from '@n8n/typeorm'; +import { In } from '@n8n/typeorm'; +import { UnexpectedError } from 'n8n-workflow'; +import { mock } from 'vitest-mock-extended'; + +import { ScheduledJob } from '../../entities'; +import { mockEntityManager } from '../../utils/test-utils/mock-entity-manager'; +import type { NewScheduledJob, ScheduledJobDefinitionUpdate } from '../scheduled-job.repository'; +import { ScheduledJobRepository } from '../scheduled-job.repository'; + +const CLOCK = new Date('2026-01-05T09:00:00.000Z'); + +const newJob = (name: string): NewScheduledJob => ({ + name, + workflowId: 'wf', + nodeId: 'node', + taskType: 'schedule-trigger', + payload: {}, + kind: 'cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: null, + fireAt: null, + nextRunAt: CLOCK, +}); + +/** A chainable insert query-builder mock; `execute` is set per test. */ +const insertQb = () => ({ + insert: vi.fn().mockReturnThis(), + into: vi.fn().mockReturnThis(), + values: vi.fn().mockReturnThis(), + orIgnore: vi.fn().mockReturnThis(), + returning: vi.fn().mockReturnThis(), + execute: vi.fn(), +}); + +describe('ScheduledJobRepository', () => { + const entityManager = mockEntityManager(ScheduledJob); + // Default DI instance resolves DatabaseConfig to its sqlite default (isPostgres = false). + const repository = Container.get(ScheduledJobRepository); + // Postgres shares the same mocked manager; only the dialect flag differs. + const postgresRepository = new ScheduledJobRepository( + entityManager.connection as unknown as DataSource, + mock({ type: 'postgresdb' }), + ); + + beforeEach(() => { + vi.resetAllMocks(); + }); + + describe('findManyByWorkflowNode', () => { + it('returns the jobs owned by the workflow node', async () => { + const rows = [mock({ id: 1 }), mock({ id: 2 })]; + entityManager.findBy.mockResolvedValueOnce(rows); + + const result = await repository.findManyByWorkflowNode(entityManager, 'wf', 'node'); + + expect(entityManager.findBy).toHaveBeenCalledWith(ScheduledJob, { + workflowId: 'wf', + nodeId: 'node', + }); + expect(result).toBe(rows); + }); + }); + + describe('insertMany', () => { + it('throws when not run inside a transaction', async () => { + const noTx = mock({ queryRunner: undefined }); + + await expect(repository.insertMany(noTx, [newJob('wf:node:0')])).rejects.toThrow( + UnexpectedError, + ); + }); + + it('returns an empty array without touching the manager when there are no jobs', async () => { + const result = await repository.insertMany(entityManager, []); + + expect(result).toEqual([]); + expect(entityManager.createQueryBuilder).not.toHaveBeenCalled(); + }); + + it('inserts with orIgnore and reads ids back by name, in input order', async () => { + const jobs = [newJob('wf:node:0'), newJob('wf:node:1')]; + const qb = insertQb(); + qb.execute.mockResolvedValue(undefined); + entityManager.createQueryBuilder.mockReturnValue(qb as never); + // Read-back deliberately out of input order to prove the result is reordered. + entityManager.find.mockResolvedValueOnce([ + { id: 20, name: 'wf:node:1' } as ScheduledJob, + { id: 10, name: 'wf:node:0' } as ScheduledJob, + ]); + + const ids = await repository.insertMany(entityManager, jobs); + + expect(qb.values).toHaveBeenCalledWith(jobs); + expect(qb.orIgnore).toHaveBeenCalled(); + expect(qb.returning).not.toHaveBeenCalled(); + expect(entityManager.find).toHaveBeenCalledWith(ScheduledJob, { + where: { name: In(['wf:node:0', 'wf:node:1']) }, + select: { id: true, name: true }, + }); + expect(ids).toEqual([10, 20]); + }); + + it('reads ids back by name on Postgres too, without RETURNING', async () => { + const jobs = [newJob('wf:node:0'), newJob('wf:node:1')]; + const qb = insertQb(); + qb.execute.mockResolvedValue(undefined); + entityManager.createQueryBuilder.mockReturnValue(qb as never); + entityManager.find.mockResolvedValueOnce([ + { id: 10, name: 'wf:node:0' } as ScheduledJob, + { id: 20, name: 'wf:node:1' } as ScheduledJob, + ]); + + const ids = await postgresRepository.insertMany(entityManager, jobs); + + expect(qb.returning).not.toHaveBeenCalled(); + expect(entityManager.find).toHaveBeenCalledWith(ScheduledJob, { + where: { name: In(['wf:node:0', 'wf:node:1']) }, + select: { id: true, name: true }, + }); + expect(ids).toEqual([10, 20]); + }); + + it('returns the id of a name a concurrent writer already held', async () => { + const jobs = [newJob('wf:node:0'), newJob('wf:node:1')]; + const qb = insertQb(); + qb.execute.mockResolvedValue(undefined); + entityManager.createQueryBuilder.mockReturnValue(qb as never); + // `wf:node:1` was already held by another writer; orIgnore skipped our row, + // but the read-back still finds every input name (id 99 is the other writer's). + entityManager.find.mockResolvedValueOnce([ + { id: 10, name: 'wf:node:0' } as ScheduledJob, + { id: 99, name: 'wf:node:1' } as ScheduledJob, + ]); + + const ids = await repository.insertMany(entityManager, jobs); + + expect(ids).toEqual([10, 99]); + }); + + it('throws when a name has no row after insert', async () => { + const jobs = [newJob('wf:node:0'), newJob('wf:node:1')]; + const qb = insertQb(); + qb.execute.mockResolvedValue(undefined); + entityManager.createQueryBuilder.mockReturnValue(qb as never); + // A name unexpectedly missing from the read-back must fail loud rather than + // return a short array that would misalign the caller's index-based zip. + entityManager.find.mockResolvedValueOnce([{ id: 10, name: 'wf:node:0' } as ScheduledJob]); + + await expect(repository.insertMany(entityManager, jobs)).rejects.toThrow(UnexpectedError); + }); + }); + + describe('updateDefinition', () => { + it('rewrites the job schedule in place, keeping its id', async () => { + const update: ScheduledJobDefinitionUpdate = { + kind: 'cron', + cronExpression: '0 0 18 * * *', + timezone: 'UTC', + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: null, + fireAt: null, + nextRunAt: CLOCK, + }; + + await repository.updateDefinition(entityManager, 10, update); + + expect(entityManager.update).toHaveBeenCalledWith(ScheduledJob, { id: 10 }, update); + }); + }); + + describe('deleteManyByIds', () => { + it('deletes the given ids', async () => { + await repository.deleteManyByIds(entityManager, [1, 2]); + + expect(entityManager.delete).toHaveBeenCalledWith(ScheduledJob, [1, 2]); + }); + + it('is a no-op when there are no ids', async () => { + await repository.deleteManyByIds(entityManager, []); + + expect(entityManager.delete).not.toHaveBeenCalled(); + }); + }); + + describe('deleteByWorkflowNode', () => { + it('deletes the node jobs and returns the affected count', async () => { + entityManager.delete.mockResolvedValueOnce({ affected: 3, raw: [] }); + + const removed = await repository.deleteByWorkflowNode(entityManager, 'wf', 'node'); + + expect(entityManager.delete).toHaveBeenCalledWith(ScheduledJob, { + workflowId: 'wf', + nodeId: 'node', + }); + expect(removed).toBe(3); + }); + + it('returns 0 when the driver does not report an affected count', async () => { + entityManager.delete.mockResolvedValueOnce({ affected: null, raw: [] }); + + const removed = await repository.deleteByWorkflowNode(entityManager, 'wf', 'node'); + + expect(removed).toBe(0); + }); + }); +}); diff --git a/packages/@n8n/db/src/repositories/__tests__/scheduled-task.repository.test.ts b/packages/@n8n/db/src/repositories/__tests__/scheduled-task.repository.test.ts new file mode 100644 index 00000000000..19615eb9dcb --- /dev/null +++ b/packages/@n8n/db/src/repositories/__tests__/scheduled-task.repository.test.ts @@ -0,0 +1,36 @@ +import { Container } from '@n8n/di'; +import { In } from '@n8n/typeorm'; + +import { ScheduledTask, ScheduledTaskStatus } from '../../entities'; +import { mockEntityManager } from '../../utils/test-utils/mock-entity-manager'; +import { ScheduledTaskRepository } from '../scheduled-task.repository'; + +describe('ScheduledTaskRepository', () => { + const entityManager = mockEntityManager(ScheduledTask); + // The constructor escapes identifiers through the driver; the mock has none, so stub it. + (entityManager.connection as unknown as { driver: { escape: (id: string) => string } }).driver = { + escape: (identifier) => `"${identifier}"`, + }; + const repository = Container.get(ScheduledTaskRepository); + + beforeEach(() => { + vi.resetAllMocks(); + }); + + describe('deletePendingByJobIds', () => { + it('deletes only the pending tasks of the given jobs', async () => { + await repository.deletePendingByJobIds(entityManager, [1, 2]); + + expect(entityManager.delete).toHaveBeenCalledWith(ScheduledTask, { + jobId: In([1, 2]), + status: ScheduledTaskStatus.Pending, + }); + }); + + it('is a no-op when there are no job ids', async () => { + await repository.deletePendingByJobIds(entityManager, []); + + expect(entityManager.delete).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/packages/@n8n/db/src/repositories/index.ts b/packages/@n8n/db/src/repositories/index.ts index f64de31627a..8053cb1e374 100644 --- a/packages/@n8n/db/src/repositories/index.ts +++ b/packages/@n8n/db/src/repositories/index.ts @@ -36,6 +36,10 @@ export { ProjectRepository, type ProjectListOptions } from './project.repository export { RoleRepository } from './role.repository'; export { RoleMappingRuleRepository } from './role-mapping-rule.repository'; export { ScheduledJobRepository } from './scheduled-job.repository'; +export type { + NewScheduledJob, + ScheduledJobDefinitionUpdate, +} from './scheduled-job.repository'; export { ScheduledTaskRepository } from './scheduled-task.repository'; export type { ClaimDueTasksOptions, diff --git a/packages/@n8n/db/src/repositories/scheduled-job.repository.ts b/packages/@n8n/db/src/repositories/scheduled-job.repository.ts index e12c068c653..594f272af4b 100644 --- a/packages/@n8n/db/src/repositories/scheduled-job.repository.ts +++ b/packages/@n8n/db/src/repositories/scheduled-job.repository.ts @@ -1,7 +1,9 @@ import { DatabaseConfig } from '@n8n/config'; import { Service } from '@n8n/di'; -import { DataSource, Repository } from '@n8n/typeorm'; +import { DataSource, In, Repository } from '@n8n/typeorm'; import type { EntityManager } from '@n8n/typeorm'; +import type { QueryDeepPartialEntity } from '@n8n/typeorm/query-builder/QueryPartialEntity'; +import { UnexpectedError } from 'n8n-workflow'; import { ScheduledJob } from '../entities/scheduled-job'; import { dbNowLiteral, parseDbTime } from '../utils/dialect-time'; @@ -13,6 +15,37 @@ export interface JobAdvance { lastFiredAt: Date | null; } +/** A job row to insert; bookkeeping columns take their schema defaults. */ +export type NewScheduledJob = Pick< + ScheduledJob, + | 'name' + | 'workflowId' + | 'nodeId' + | 'taskType' + | 'payload' + | 'kind' + | 'cronExpression' + | 'timezone' + | 'recurrenceUnit' + | 'recurrenceSize' + | 'intervalSeconds' + | 'fireAt' + | 'nextRunAt' +>; + +/** A changed schedule definition, plus the fresh clock it restarts from. */ +export type ScheduledJobDefinitionUpdate = Pick< + ScheduledJob, + | 'kind' + | 'cronExpression' + | 'timezone' + | 'recurrenceUnit' + | 'recurrenceSize' + | 'intervalSeconds' + | 'fireAt' + | 'nextRunAt' +>; + @Service() export class ScheduledJobRepository extends Repository { private readonly isPostgres: boolean; @@ -64,6 +97,86 @@ export class ScheduledJobRepository extends Repository { }; } + /** All jobs owned by one trigger node */ + async findManyByWorkflowNode( + manager: EntityManager, + workflowId: string, + nodeId: string, + ): Promise { + return await manager.findBy(ScheduledJob, { workflowId, nodeId }); + } + + /** + * Insert new job rows and return one id per input job, in the same order as + * `jobs`, so the caller can zip the ids back to the jobs by index. + * Must run inside a transaction. + * + * `orIgnore` emits `ON CONFLICT DO NOTHING` (Postgres) / `INSERT OR IGNORE` + * (SQLite): a name already taken is left as-is rather than erroring, so two mains + * activating the same node at once converge on one set of rows (the first + * writer's, clock intact) instead of the second failing on the unique index. + * + * The ids are read back by name rather than from `RETURNING`: `RETURNING` omits + * the rows `orIgnore` skipped, so a name a concurrent writer already inserted + * would come back without an id. `name` is unique and every input job has a row + * once the insert returns (ours, or the concurrent writer's), so the read-back + * yields exactly one id per job. + */ + async insertMany(manager: EntityManager, jobs: NewScheduledJob[]): Promise { + if (manager.queryRunner === undefined) { + throw new UnexpectedError('insertMany must run within a transaction'); + } + if (jobs.length === 0) { + return []; + } + // `payload` is a free-form JSON column, which TypeORM's QueryDeepPartialEntity can't express, + // so the well-typed rows are cast at this boundary. + await manager + .createQueryBuilder() + .insert() + .into(ScheduledJob) + .values(jobs as Array>) + .orIgnore() + .execute(); + + const rows = await manager.find(ScheduledJob, { + where: { name: In(jobs.map((job) => job.name)) }, + select: { id: true, name: true }, + }); + return orderIdsByName(rows, jobs); + } + + /** + * Rewrite a job's schedule in place, + * keeping its id so queued tasks stay attributable. + */ + async updateDefinition( + manager: EntityManager, + id: number, + update: ScheduledJobDefinitionUpdate, + ): Promise { + await manager.update(ScheduledJob, { id }, update); + } + + async deleteManyByIds(manager: EntityManager, ids: number[]): Promise { + if (ids.length > 0) { + await manager.delete(ScheduledJob, ids); + } + } + + /** + * Delete all jobs owned by one trigger node; their tasks cascade away. + * @returns how many jobs were deleted (0 when the driver can't report it). + */ + async deleteByWorkflowNode( + manager: EntityManager, + workflowId: string, + nodeId: string, + ): Promise { + const result = await manager.delete(ScheduledJob, { workflowId, nodeId }); + return result.affected ?? 0; + } + /** * Advance many jobs' clocks, a statement per chunk. * Callers pass distinct ids (a batch of claimed jobs). @@ -107,3 +220,22 @@ export class ScheduledJobRepository extends Repository { .execute(); } } + +/** + * Ids for `jobs`, in input order, from rows carrying their `{ id, name }`. + * Throws on a name with no row: the caller zips the result back to `jobs` by + * index, so a gap would misalign every id after it. + */ +function orderIdsByName( + rows: Array<{ id: number; name: string }>, + jobs: NewScheduledJob[], +): number[] { + const idByName = new Map(rows.map((row) => [row.name, row.id])); + return jobs.map((job) => { + const id = idByName.get(job.name); + if (id === undefined) { + throw new UnexpectedError(`No row found for scheduled job "${job.name}" after insert`); + } + return id; + }); +} diff --git a/packages/@n8n/db/src/repositories/scheduled-task.repository.ts b/packages/@n8n/db/src/repositories/scheduled-task.repository.ts index 1d66190d963..93c28f881f3 100644 --- a/packages/@n8n/db/src/repositories/scheduled-task.repository.ts +++ b/packages/@n8n/db/src/repositories/scheduled-task.repository.ts @@ -69,6 +69,24 @@ export interface NewOccurrence { maxAttempts: number; } +/** Identity of a row {@link ScheduledTaskRepository.insertIgnoringDuplicates} just created. */ +export interface RecordedOccurrence { + id: string; + jobId: number; + taskType: string; +} + +export interface InsertOccurrencesResult { + /** How many rows were actually inserted (skipped duplicates excluded). */ + recorded: number; + /** + * The newly inserted rows' identity, for per-row tracing. Only Postgres can + * return this (`RETURNING`); elsewhere it is empty even though `recorded` is + * still accurate. + */ + created: RecordedOccurrence[]; +} + /** * Point-in-time queue health, read at Prometheus scrape time * (see {@link ScheduledTaskRepository.getMetricSnapshot}). @@ -110,7 +128,8 @@ export class ScheduledTaskRepository extends Repository { * * Must run inside a transaction! * - * @returns how many rows were actually inserted (skipped duplicates excluded) + * @returns how many rows were recorded, and (Postgres only) the identity of + * each newly created row, for per-row tracing */ async insertIgnoringDuplicates( manager: EntityManager, @@ -118,7 +137,7 @@ export class ScheduledTaskRepository extends Repository { // Chunked so a large batch stays under the driver's bind-parameter ceiling // (Postgres 65535, SQLite 32766); the default leaves headroom for the widest row. chunkSize = 1000, - ): Promise { + ): Promise { const { queryRunner } = manager; if (queryRunner === undefined) { throw new UnexpectedError('insertIgnoringDuplicates must run within a transaction'); @@ -129,20 +148,51 @@ export class ScheduledTaskRepository extends Repository { ); let recorded = 0; + const created: RecordedOccurrence[] = []; for (const chunk of chunks) { - const [sql, parameters] = manager + const query = manager .createQueryBuilder() .insert() .into(ScheduledTask) // `payload` is a free-form JSON column, which TypeORM's QueryDeepPartialEntity // can't express, so the well-typed rows are cast at this boundary. .values(chunk as Array>) - .orIgnore() - .getQueryAndParameters(); + .orIgnore(); + + // Only Postgres's driver surfaces RETURNING rows from a raw query + // (SQLite's `run()` callback gives back a change count, never rows), so row + // identity for tracing is a Postgres-only capability; `recorded` stays accurate + // everywhere via `affected`. + if (this.isPostgres) { + query.returning('"id", "jobId", "taskType"'); + } + + const [sql, parameters] = query.getQueryAndParameters(); const result = await queryRunner.query(sql, parameters, true); recorded += result.affected ?? 0; + if (this.isPostgres) { + for (const row of (result.records ?? []) as Array<{ + id: string | number; + jobId: number; + taskType: string; + }>) { + created.push({ id: String(row.id), jobId: row.jobId, taskType: row.taskType }); + } + } + } + return { recorded, created }; + } + + /** + * Delete the still-pending occurrences of the given job ids. + */ + async deletePendingByJobIds(manager: EntityManager, jobIds: number[]): Promise { + if (jobIds.length > 0) { + await manager.delete(ScheduledTask, { + jobId: In(jobIds), + status: ScheduledTaskStatus.Pending, + }); } - return recorded; } /** diff --git a/packages/@n8n/eslint-plugin-community-nodes/README.md b/packages/@n8n/eslint-plugin-community-nodes/README.md index 6d2e0b49de5..57d51e0162a 100644 --- a/packages/@n8n/eslint-plugin-community-nodes/README.md +++ b/packages/@n8n/eslint-plugin-community-nodes/README.md @@ -44,57 +44,44 @@ export default [ 💡 Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).\ ❌ Deprecated. -| Name                                  | Description | 💼 | ⚠️ | 🔧 | 💡 | ❌ | -| :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- | :--- | :- | :- | :- | -| [ai-node-package-json](docs/rules/ai-node-package-json.md) | Enforce consistency between n8n.aiNodeSdkVersion and ai-node-sdk peer dependency in community node packages | ✅ ☑️ | | | | | -| [cred-class-field-icon-missing](docs/rules/cred-class-field-icon-missing.md) | Credential class must have an `icon` property defined | ✅ ☑️ | | | 💡 | | -| [cred-class-name-field-conventions](docs/rules/cred-class-name-field-conventions.md) | Credential `name` field must end with `Api` and start with a lowercase letter | ✅ ☑️ | | 🔧 | | | -| [cred-class-name-suffix](docs/rules/cred-class-name-suffix.md) | Credential class names must be suffixed with `Api` | ✅ ☑️ | | 🔧 | | | -| [cred-class-oauth2-naming](docs/rules/cred-class-oauth2-naming.md) | OAuth2 credentials must include `OAuth2` in the class name, `name`, and `displayName` | ✅ ☑️ | | 🔧 | | | -| [cred-filename-against-convention](docs/rules/cred-filename-against-convention.md) | Credential filename must match the credential class name | ✅ ☑️ | | | | | -| [credential-documentation-url](docs/rules/credential-documentation-url.md) | Enforce valid credential documentationUrl format (URL or lowercase alphanumeric slug) | ✅ ☑️ | | 🔧 | | | -| [credential-password-field](docs/rules/credential-password-field.md) | Ensure credential fields with sensitive names have typeOptions.password = true | ✅ ☑️ | | 🔧 | | | -| [credential-test-required](docs/rules/credential-test-required.md) | Ensure credentials have a credential test | ✅ ☑️ | | | 💡 | | -| [icon-prefer-themed-variants](docs/rules/icon-prefer-themed-variants.md) | Encourage node and credential icons to provide light/dark variants instead of a single icon file | | ✅ ☑️ | | | | -| [icon-validation](docs/rules/icon-validation.md) | Validate node and credential icon files exist, use the file: protocol, and that light/dark icons are different | ✅ ☑️ | | | 💡 | | -| [missing-paired-item](docs/rules/missing-paired-item.md) | Require pairedItem on INodeExecutionData objects in execute() methods to preserve item linking. | ✅ ☑️ | | | | | -| [n8n-object-validation](docs/rules/n8n-object-validation.md) | Validate the structure of the "n8n" object in community node package.json (required keys, types, and dist/ paths) | ✅ ☑️ | | | | | -| [no-asterisk-in-option-names](docs/rules/no-asterisk-in-option-names.md) | Disallow asterisk characters in node option name values | | ✅ ☑️ | | 💡 | | -| [no-builder-hint-leakage](docs/rules/no-builder-hint-leakage.md) | Disallow wire-format expression syntax (={{...}}) and NodeConnectionType string literals in builderHint texts and AI-builder prompts. Use expr() and SDK-canonical references instead. | ✅ ☑️ | | | | | -| [no-credential-reuse](docs/rules/no-credential-reuse.md) | Prevent credential re-use security issues by ensuring nodes only reference credentials from the same package | ✅ ☑️ | | | 💡 | | -| [no-dangerous-functions](docs/rules/no-dangerous-functions.md) | Disallow `eval`, the `Function` constructor, and `child_process` process-spawning functions (`exec`, `spawn`, etc.) in community nodes. | ✅ ☑️ | | | | | -| [no-deprecated-workflow-functions](docs/rules/no-deprecated-workflow-functions.md) | Disallow usage of deprecated functions and types from n8n-workflow package | ✅ ☑️ | | | 💡 | | -| [no-duplicate-param-options](docs/rules/no-duplicate-param-options.md) | Disallow duplicate option names or values within a single node parameter | | ✅ ☑️ | | | | -| [no-emoji-in-options](docs/rules/no-emoji-in-options.md) | Disallow emoji characters in node option name and displayName values | ✅ ☑️ | | | | | -| [no-forbidden-lifecycle-scripts](docs/rules/no-forbidden-lifecycle-scripts.md) | Ban lifecycle scripts (prepare, preinstall, postinstall, etc.) in community node packages | ✅ ☑️ | | | | | -| [no-http-request-with-manual-auth](docs/rules/no-http-request-with-manual-auth.md) | Disallow this.helpers.httpRequest() in functions that call this.getCredentials(). Use this.helpers.httpRequestWithAuthentication() instead. | ✅ ☑️ | | | | | -| [no-overrides-field](docs/rules/no-overrides-field.md) | Ban the "overrides" field in community node package.json | ✅ ☑️ | | | | | -| [no-restricted-globals](docs/rules/no-restricted-globals.md) | Disallow usage of restricted global variables in community nodes. | ✅ | | | | | -| [no-restricted-imports](docs/rules/no-restricted-imports.md) | Disallow usage of restricted imports in community nodes. | ✅ | | | | | -| [no-runtime-dependencies](docs/rules/no-runtime-dependencies.md) | Disallow non-empty "dependencies" in community node package.json | ✅ ☑️ | | | | | -| [no-template-placeholders](docs/rules/no-template-placeholders.md) | Disallow unresolved template placeholders in package.json | ✅ ☑️ | | | | | -| [node-class-description-icon-missing](docs/rules/node-class-description-icon-missing.md) | Node class description must have an `icon` property defined. Deprecated: use `require-node-description-fields` instead. | | | | 💡 | ❌ | -| [node-class-description-name-camelcase](docs/rules/node-class-description-name-camelcase.md) | Node class `description.name` must be camelCase | ✅ ☑️ | | 🔧 | | | -| [node-connection-type-literal](docs/rules/node-connection-type-literal.md) | Disallow string literals in node description `inputs`/`outputs` — use `NodeConnectionTypes` enum instead | ✅ ☑️ | | 🔧 | | | -| [node-filename-against-convention](docs/rules/node-filename-against-convention.md) | Node filename must match the node `description.name` | ✅ ☑️ | | | | | -| [node-operation-error-itemindex](docs/rules/node-operation-error-itemindex.md) | Require { itemIndex } in NodeOperationError / NodeApiError options inside item loops | ✅ ☑️ | | | | | -| [node-registration-complete](docs/rules/node-registration-complete.md) | Ensure every `.node.ts` file in the `nodes/` directory is registered in the "n8n.nodes" array of package.json | | ✅ ☑️ | | | | -| [node-usable-as-tool](docs/rules/node-usable-as-tool.md) | Ensure node classes have usableAsTool property | ✅ ☑️ | | 🔧 | | | -| [options-sorted-alphabetically](docs/rules/options-sorted-alphabetically.md) | Enforce alphabetical ordering of options arrays in n8n node properties | | ✅ ☑️ | | | | -| [package-name-convention](docs/rules/package-name-convention.md) | Enforce correct package naming convention for n8n community nodes | ✅ ☑️ | | | 💡 | | -| [require-community-node-keyword](docs/rules/require-community-node-keyword.md) | Require the "n8n-community-node-package" keyword in community node package.json | | ✅ ☑️ | 🔧 | | | -| [require-continue-on-fail](docs/rules/require-continue-on-fail.md) | Require continueOnFail() handling in execute() methods of node classes | ✅ ☑️ | | | | | -| [require-mit-license](docs/rules/require-mit-license.md) | Require the "license" field in community node package.json to be "MIT" | ✅ ☑️ | | 🔧 | | | -| [require-node-api-error](docs/rules/require-node-api-error.md) | Require NodeApiError or NodeOperationError for error wrapping in catch blocks. Raw errors lose HTTP context in the n8n UI. | ✅ ☑️ | | | | | -| [require-node-description-fields](docs/rules/require-node-description-fields.md) | Node class description must define all required fields: icon, subtitle | ✅ ☑️ | | | | | -| [require-param-default](docs/rules/require-param-default.md) | Require every node parameter to declare a default value. | ✅ ☑️ | | | | | -| [require-version](docs/rules/require-version.md) | Require a valid "version" field in community node package.json | ✅ ☑️ | | | | | -| [resource-operation-pattern](docs/rules/resource-operation-pattern.md) | Enforce proper resource/operation pattern for better UX in n8n nodes | | ✅ ☑️ | | | | -| [trigger-node-conventions](docs/rules/trigger-node-conventions.md) | Trigger nodes (class name ends with `Trigger`) must label themselves consistently as triggers | ✅ ☑️ | | | | | -| [valid-author](docs/rules/valid-author.md) | Require a non-empty author name and email in package.json | ✅ ☑️ | | | | | -| [valid-credential-references](docs/rules/valid-credential-references.md) | Ensure credentials referenced in node descriptions exist as credential classes in the package | ✅ ☑️ | | | 💡 | | -| [valid-description](docs/rules/valid-description.md) | Require a non-empty "description" field in community node package.json | ✅ ☑️ | | | | | -| [valid-peer-dependencies](docs/rules/valid-peer-dependencies.md) | Require community node package.json peerDependencies to contain only "n8n-workflow": "*" (and optionally "@n8n/ai-node-sdk") | ✅ ☑️ | | 🔧 | | | -| [webhook-lifecycle-complete](docs/rules/webhook-lifecycle-complete.md) | Require webhook trigger nodes to implement the complete webhookMethods lifecycle (checkExists, create, delete) | ✅ ☑️ | | | | | +| Name                                | Description | 💼 | ⚠️ | 🔧 | 💡 | ❌ | +| :--------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- | :--- | :- | :- | :- | +| [ai-node-package-json](docs/rules/ai-node-package-json.md) | Enforce consistency between n8n.aiNodeSdkVersion and ai-node-sdk peer dependency in community node packages | ✅ ☑️ | | | | | +| [cred-class-field-icon-missing](docs/rules/cred-class-field-icon-missing.md) | Credential class must have an `icon` property defined | ✅ ☑️ | | | 💡 | | +| [cred-class-oauth2-naming](docs/rules/cred-class-oauth2-naming.md) | OAuth2 credentials must include `OAuth2` in the class name, `name`, and `displayName` | ✅ ☑️ | | 🔧 | | | +| [credential-documentation-url](docs/rules/credential-documentation-url.md) | Enforce valid credential documentationUrl format (URL or lowercase alphanumeric slug) | ✅ ☑️ | | 🔧 | | | +| [credential-password-field](docs/rules/credential-password-field.md) | Ensure credential fields with sensitive names have typeOptions.password = true | ✅ ☑️ | | 🔧 | | | +| [credential-test-required](docs/rules/credential-test-required.md) | Ensure credentials have a credential test | ✅ ☑️ | | | 💡 | | +| [icon-prefer-themed-variants](docs/rules/icon-prefer-themed-variants.md) | Encourage node and credential icons to provide light/dark variants instead of a single icon file | | ✅ ☑️ | | | | +| [icon-validation](docs/rules/icon-validation.md) | Validate node and credential icon files exist, use the file: protocol, and that light/dark icons are different | ✅ ☑️ | | | 💡 | | +| [missing-paired-item](docs/rules/missing-paired-item.md) | Require pairedItem on INodeExecutionData objects in execute() methods to preserve item linking. | ✅ ☑️ | | | | | +| [n8n-object-validation](docs/rules/n8n-object-validation.md) | Validate the structure of the "n8n" object in community node package.json (required keys, types, and dist/ paths) | ✅ ☑️ | | | | | +| [no-builder-hint-leakage](docs/rules/no-builder-hint-leakage.md) | Disallow wire-format expression syntax (={{...}}) and NodeConnectionType string literals in builderHint texts and AI-builder prompts. Use expr() and SDK-canonical references instead. | ✅ ☑️ | | | | | +| [no-credential-reuse](docs/rules/no-credential-reuse.md) | Prevent credential re-use security issues by ensuring nodes only reference credentials from the same package | ✅ ☑️ | | | 💡 | | +| [no-dangerous-functions](docs/rules/no-dangerous-functions.md) | Disallow `eval`, the `Function` constructor, and `child_process` process-spawning functions (`exec`, `spawn`, etc.) in community nodes. | ✅ ☑️ | | | | | +| [no-deprecated-workflow-functions](docs/rules/no-deprecated-workflow-functions.md) | Disallow usage of deprecated functions and types from n8n-workflow package | ✅ ☑️ | | | 💡 | | +| [no-emoji-in-options](docs/rules/no-emoji-in-options.md) | Disallow emoji characters in node option name and displayName values | ✅ ☑️ | | | | | +| [no-forbidden-lifecycle-scripts](docs/rules/no-forbidden-lifecycle-scripts.md) | Ban lifecycle scripts (prepare, preinstall, postinstall, etc.) in community node packages | ✅ ☑️ | | | | | +| [no-http-request-with-manual-auth](docs/rules/no-http-request-with-manual-auth.md) | Disallow this.helpers.httpRequest() in functions that call this.getCredentials(). Use this.helpers.httpRequestWithAuthentication() instead. | ✅ ☑️ | | | | | +| [no-overrides-field](docs/rules/no-overrides-field.md) | Ban the "overrides" field in community node package.json | ✅ ☑️ | | | | | +| [no-restricted-globals](docs/rules/no-restricted-globals.md) | Disallow usage of restricted global variables in community nodes. | ✅ | | | | | +| [no-restricted-imports](docs/rules/no-restricted-imports.md) | Disallow usage of restricted imports in community nodes. | ✅ | | | | | +| [no-runtime-dependencies](docs/rules/no-runtime-dependencies.md) | Disallow non-empty "dependencies" in community node package.json | ✅ ☑️ | | | | | +| [no-template-placeholders](docs/rules/no-template-placeholders.md) | Disallow unresolved template placeholders in package.json | ✅ ☑️ | | | | | +| [node-class-description-icon-missing](docs/rules/node-class-description-icon-missing.md) | Node class description must have an `icon` property defined. Deprecated: use `require-node-description-fields` instead. | | | | 💡 | ❌ | +| [node-connection-type-literal](docs/rules/node-connection-type-literal.md) | Disallow string literals in node description `inputs`/`outputs` — use `NodeConnectionTypes` enum instead | ✅ ☑️ | | 🔧 | | | +| [node-registration-complete](docs/rules/node-registration-complete.md) | Ensure every `.node.ts` file in the `nodes/` directory is registered in the "n8n.nodes" array of package.json | | ✅ ☑️ | | | | +| [node-usable-as-tool](docs/rules/node-usable-as-tool.md) | Ensure node classes have usableAsTool property | ✅ ☑️ | | 🔧 | | | +| [package-name-convention](docs/rules/package-name-convention.md) | Enforce correct package naming convention for n8n community nodes | ✅ ☑️ | | | 💡 | | +| [require-node-api-error](docs/rules/require-node-api-error.md) | Require NodeApiError or NodeOperationError for error wrapping in catch blocks. Raw errors lose HTTP context in the n8n UI. | ✅ ☑️ | | | | | +| [require-node-description-fields](docs/rules/require-node-description-fields.md) | Node class description must define all required fields: icon, subtitle | ✅ ☑️ | | | | | +| [require-version](docs/rules/require-version.md) | Require a valid "version" field in community node package.json | ✅ ☑️ | | | | | +| [resource-operation-pattern](docs/rules/resource-operation-pattern.md) | Enforce proper resource/operation pattern for better UX in n8n nodes | | ✅ ☑️ | | | | +| [trigger-node-conventions](docs/rules/trigger-node-conventions.md) | Trigger nodes (class name ends with `Trigger`) must label themselves consistently as triggers | ✅ ☑️ | | | | | +| [valid-author](docs/rules/valid-author.md) | Require a non-empty author name and email in package.json | ✅ ☑️ | | | | | +| [valid-credential-references](docs/rules/valid-credential-references.md) | Ensure credentials referenced in node descriptions exist as credential classes in the package | ✅ ☑️ | | | 💡 | | +| [valid-description](docs/rules/valid-description.md) | Require a non-empty "description" field in community node package.json | ✅ ☑️ | | | | | +| [valid-peer-dependencies](docs/rules/valid-peer-dependencies.md) | Require community node package.json peerDependencies to contain only "n8n-workflow": "*" (and optionally "@n8n/ai-node-sdk") | ✅ ☑️ | | 🔧 | | | +| [webhook-lifecycle-complete](docs/rules/webhook-lifecycle-complete.md) | Require webhook trigger nodes to implement the complete webhookMethods lifecycle (checkExists, create, delete) | ✅ ☑️ | | | | | diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-class-name-field-conventions.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-class-name-field-conventions.md deleted file mode 100644 index 26509876d15..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-class-name-field-conventions.md +++ /dev/null @@ -1,38 +0,0 @@ -# Credential `name` field must end with `Api` and start with a lowercase letter (`@n8n/community-nodes/cred-class-name-field-conventions`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - -🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). - - - -## Rule Details - -The `name` field of a credential class (those implementing `ICredentialType` in `*.credentials.ts` files) is the internal identifier referenced by nodes and stored in the credential registry. n8n convention requires this identifier to: - -- End with `Api` (e.g. `githubApi`), so credentials are easily recognisable across the codebase. -- Start with a lowercase letter (camelCase), since it is an identifier value rather than a class name. - -Both checks are automatically fixable. - -## Examples - -### ❌ Incorrect - -```typescript -export class GithubApi implements ICredentialType { - name = 'Github'; - displayName = 'GitHub API'; - properties: INodeProperties[] = []; -} -``` - -### ✅ Correct - -```typescript -export class GithubApi implements ICredentialType { - name = 'githubApi'; - displayName = 'GitHub API'; - properties: INodeProperties[] = []; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-class-name-suffix.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-class-name-suffix.md deleted file mode 100644 index a6a6848f367..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-class-name-suffix.md +++ /dev/null @@ -1,46 +0,0 @@ -# Credential class names must be suffixed with `Api` (`@n8n/community-nodes/cred-class-name-suffix`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - -🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). - - - -## Rule Details - -Credential classes (those implementing `ICredentialType` in `*.credentials.ts` files) must have a class name ending in `Api`. This is the n8n convention so credentials are easily recognisable in code, in import statements, and across the credential registry. - -For OAuth2 credentials extending the OAuth2 base, see the sibling rule `cred-class-oauth2-naming` which enforces the more specific `OAuth2Api` suffix. - -## Opt-out - -For legitimate exceptions (for example credentials representing custom auth headers where the `Api` suffix would be misleading), disable the rule for the specific class with a standard ESLint comment: - -```typescript -// eslint-disable-next-line @n8n/community-nodes/cred-class-name-suffix -export class CustomAuthHeader implements ICredentialType { - // ... -} -``` - -## Examples - -### ❌ Incorrect - -```typescript -export class MyService implements ICredentialType { - name = 'myServiceApi'; - displayName = 'My Service API'; - properties: INodeProperties[] = []; -} -``` - -### ✅ Correct - -```typescript -export class MyServiceApi implements ICredentialType { - name = 'myServiceApi'; - displayName = 'My Service API'; - properties: INodeProperties[] = []; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-filename-against-convention.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-filename-against-convention.md deleted file mode 100644 index 160fbd0a1c3..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/cred-filename-against-convention.md +++ /dev/null @@ -1,42 +0,0 @@ -# Credential filename must match the credential class name (`@n8n/community-nodes/cred-filename-against-convention`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - - - -## Rule Details - -This rule enforces that the basename of a `*.credentials.ts` file (without the -`.credentials.ts` extension) matches the name of the credential class it -contains. The class name is the source of truth. - -Keeping filenames in sync with class names makes credentials predictable to -locate and matches the convention used throughout n8n's built-in credentials. - -## Examples - -### Incorrect - -```typescript -// File: GithubApi.credentials.ts -import type { ICredentialType, INodeProperties } from 'n8n-workflow'; - -export class GitlabApi implements ICredentialType { - name = 'gitlabApi'; - displayName = 'GitLab API'; - properties: INodeProperties[] = []; -} -``` - -### Correct - -```typescript -// File: GithubApi.credentials.ts -import type { ICredentialType, INodeProperties } from 'n8n-workflow'; - -export class GithubApi implements ICredentialType { - name = 'githubApi'; - displayName = 'GitHub API'; - properties: INodeProperties[] = []; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/no-asterisk-in-option-names.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/no-asterisk-in-option-names.md deleted file mode 100644 index d8e83ab476f..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/no-asterisk-in-option-names.md +++ /dev/null @@ -1,61 +0,0 @@ -# Disallow asterisk characters in node option name values (`@n8n/community-nodes/no-asterisk-in-option-names`) - -⚠️ This rule _warns_ in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - -💡 This rule is manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions). - - - -## Rule Details - -The `name` of each entry in an `options` array is rendered directly in the n8n -editor. An asterisk (`*`) in these labels renders ambiguously — it reads like a -markdown bullet or emphasis marker rather than literal text. This rule flags any -option `name` containing `*` and suggests replacing it with bracketed notation -such as `[All]`. - -The rule only inspects `name` values inside `options` arrays (including nested -`collection` and `fixedCollection` options); asterisks elsewhere are not -reported. - -## Examples - -### Incorrect - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Node', - name: 'myNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [{ name: '* All', value: 'all' }], - default: 'all', - }, - ], - }; -} -``` - -### Correct - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Node', - name: 'myNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [{ name: '[All]', value: 'all' }], - default: 'all', - }, - ], - }; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/no-duplicate-param-options.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/no-duplicate-param-options.md deleted file mode 100644 index cff8bbab877..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/no-duplicate-param-options.md +++ /dev/null @@ -1,46 +0,0 @@ -# Disallow duplicate option names or values within a single node parameter (`@n8n/community-nodes/no-duplicate-param-options`) - -⚠️ This rule _warns_ in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - - - -## Rule Details - -Within an `options`- or `multiOptions`-typed node parameter, each option must -have a unique `name` and a unique `value`. Duplicate names confuse users in the -dropdown, and duplicate values make selections ambiguous and break value-based -logic downstream. - -## Examples - -### Incorrect - -```typescript -{ - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'Contact', value: 'contact' }, - { name: 'Contact', value: 'person' }, // duplicate name - { name: 'User', value: 'contact' }, // duplicate value - ], - default: 'contact', -} -``` - -### Correct - -```typescript -{ - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'Contact', value: 'contact' }, - { name: 'Person', value: 'person' }, - { name: 'User', value: 'user' }, - ], - default: 'contact', -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-class-description-name-camelcase.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-class-description-name-camelcase.md deleted file mode 100644 index 4104fc77c6b..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-class-description-name-camelcase.md +++ /dev/null @@ -1,41 +0,0 @@ -# Node class `description.name` must be camelCase (`@n8n/community-nodes/node-class-description-name-camelcase`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - -🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). - - - -## Rule Details - -The `name` field inside a node class `description` (those implementing `INodeType` or extending `Node` in `*.node.ts` files) is the internal identifier used to register and reference the node. n8n convention requires this identifier to be camelCase: it must start with a lowercase letter and contain only letters and digits, with no spaces, hyphens, underscores, or other separators. - -The value must match `^[a-z][a-zA-Z0-9]*$`. - -The rule is automatically fixable: separators are removed, each subsequent word is upper-cased, and the first character is lower-cased (e.g. `My Node` → `myNode`). Names that cannot be repaired into a valid identifier (for example, those starting with a digit) are reported without an autofix. - -## Examples - -### ❌ Incorrect - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Node', - name: 'My Node', - // ... - }; -} -``` - -### ✅ Correct - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Node', - name: 'myNode', - // ... - }; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-filename-against-convention.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-filename-against-convention.md deleted file mode 100644 index 31469b594a4..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-filename-against-convention.md +++ /dev/null @@ -1,50 +0,0 @@ -# Node filename must match the node `description.name` (`@n8n/community-nodes/node-filename-against-convention`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - - - -## Rule Details - -Every `*.node.ts` file must be named after its node's `description.name`, with the -first character upper-cased. The source of truth is `description.name` — **not** -the class name. Keeping the filename in sync with the registered node name makes -nodes predictable to locate and matches the convention n8n tooling expects. - -A trailing version suffix (`V2`, `V3`, …) is allowed, so versioned implementations -such as `GithubV2.node.ts` are accepted for a node whose `description.name` is -`github`. - -The comparison is case-sensitive: a node named `github` must live in -`Github.node.ts`, not `github.node.ts` or `GitHub.node.ts`. - -This rule is not auto-fixable because ESLint cannot rename files. Rename the file -to the reported name. - -## Examples - -### ❌ Incorrect - -```typescript -// File: Gitlab.node.ts -export class Github implements INodeType { - description: INodeTypeDescription = { - displayName: 'GitHub', - name: 'github', // expected file to be named "Github.node.ts" - // ... - }; -} -``` - -### ✅ Correct - -```typescript -// File: Github.node.ts (or GithubV2.node.ts) -export class Github implements INodeType { - description: INodeTypeDescription = { - displayName: 'GitHub', - name: 'github', - // ... - }; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-operation-error-itemindex.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-operation-error-itemindex.md deleted file mode 100644 index 6358d03c9c7..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/node-operation-error-itemindex.md +++ /dev/null @@ -1,81 +0,0 @@ -# Require { itemIndex } in NodeOperationError / NodeApiError options inside item loops (`@n8n/community-nodes/node-operation-error-itemindex`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - - - -## Rule Details - -When throwing `NodeOperationError` or `NodeApiError` inside the item-processing loop of an `execute()` method, the options object (third argument) must contain an `itemIndex` property. Without it, n8n cannot associate the error with the specific item that caused it, which breaks per-item error reporting and `continueOnFail` behaviour. - -The rule only fires inside **item loops** — `for` or `for...of` statements that iterate over the result of `this.getInputData()`. Errors thrown outside such loops (e.g. in webhook handlers, trigger setup, or credential testing helpers) are not flagged. - -## Examples - -### ❌ Incorrect - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { /* ... */ }; - - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - - for (let i = 0; i < items.length; i++) { - try { - // ... - } catch (error) { - // Missing { itemIndex } — n8n cannot map this error back to item i - throw new NodeOperationError(this.getNode(), error); - } - } - - return [returnData]; - } -} -``` - -### ✅ Correct - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { /* ... */ }; - - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - - for (let i = 0; i < items.length; i++) { - try { - // ... - } catch (error) { - throw new NodeOperationError(this.getNode(), error, { itemIndex: i }); - } - } - - return [returnData]; - } -} -``` - -Using `for...of` with a named loop variable: - -```typescript -async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - let itemIndex = 0; - - for (const item of items) { - try { - // ... - } catch (error) { - throw new NodeApiError(this.getNode(), error, { itemIndex }); - } - itemIndex++; - } - - return [returnData]; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/options-sorted-alphabetically.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/options-sorted-alphabetically.md deleted file mode 100644 index dde81acf100..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/options-sorted-alphabetically.md +++ /dev/null @@ -1,63 +0,0 @@ -# Enforce alphabetical ordering of options arrays in n8n node properties (`@n8n/community-nodes/options-sorted-alphabetically`) - -⚠️ This rule _warns_ in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - - - -## Rule Details - -Warns when an `options`-type parameter has its options array not sorted alphabetically by name. Applies to all `type: 'options'` parameters — including `resource`, `operation`, and any other dropdowns. - -Alphabetical ordering is an [official n8n UI design requirement](https://docs.n8n.io/integrations/creating-nodes/plan/node-ui-design/#lists) and the most frequently flagged issue in community node reviews. - -Comparison is case-insensitive and locale-aware (handles non-ASCII names such as Spanish or Portuguese labels). - -## Examples - -### ❌ Incorrect - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Service', - name: 'myService', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - { name: 'Contact', value: 'contact' }, // out of order - { name: 'Project', value: 'project' }, - ], - default: 'user', - }, - ], - }; -} -``` - -### ✅ Correct - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Service', - name: 'myService', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'Contact', value: 'contact' }, - { name: 'Project', value: 'project' }, - { name: 'User', value: 'user' }, - ], - default: 'contact', - }, - ], - }; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-community-node-keyword.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-community-node-keyword.md deleted file mode 100644 index 805241f5816..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-community-node-keyword.md +++ /dev/null @@ -1,45 +0,0 @@ -# Require the "n8n-community-node-package" keyword in community node package.json (`@n8n/community-nodes/require-community-node-keyword`) - -⚠️ This rule _warns_ in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - -🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). - - - -## Rule Details - -Validates that the `package.json` of a community node package includes `"n8n-community-node-package"` in its `keywords` array. This keyword is required for n8n to discover and list community node packages. - -## Examples - -### ❌ Incorrect - -```json -{ - "name": "n8n-nodes-my-service", - "version": "1.0.0" -} -``` - -```json -{ - "name": "n8n-nodes-my-service", - "keywords": ["n8n", "automation"] -} -``` - -### ✅ Correct - -```json -{ - "name": "n8n-nodes-my-service", - "keywords": ["n8n-community-node-package"] -} -``` - -```json -{ - "name": "n8n-nodes-my-service", - "keywords": ["n8n", "automation", "n8n-community-node-package"] -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-continue-on-fail.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-continue-on-fail.md deleted file mode 100644 index a51e40d77f3..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-continue-on-fail.md +++ /dev/null @@ -1,56 +0,0 @@ -# Require continueOnFail() handling in execute() methods of node classes (`@n8n/community-nodes/require-continue-on-fail`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - - - -## Rule Details - -Ensures that `execute()` methods in node classes include a `this.continueOnFail()` check. Without this, a single item error will abort the entire workflow instead of allowing execution to continue past the failing item. - -## Examples - -### ❌ Incorrect - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { /* ... */ }; - - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - for (let i = 0; i < items.length; i++) { - // No error handling — one bad item kills the whole workflow - const result = await someApiCall(items[i]); - returnData.push({ json: result }); - } - return [returnData]; - } -} -``` - -### ✅ Correct - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { /* ... */ }; - - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - for (let i = 0; i < items.length; i++) { - try { - const result = await someApiCall(items[i]); - returnData.push({ json: result }); - } catch (error) { - if (this.continueOnFail()) { - returnData.push({ json: { error: error.message }, pairedItem: { item: i } }); - continue; - } - throw error; - } - } - return [returnData]; - } -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-mit-license.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-mit-license.md deleted file mode 100644 index d0e59af94d7..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-mit-license.md +++ /dev/null @@ -1,38 +0,0 @@ -# Require the "license" field in community node package.json to be "MIT" (`@n8n/community-nodes/require-mit-license`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - -🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). - - - -## Rule Details - -Validates that the `package.json` of a community node package declares its `license` as `"MIT"`. Community node packages must be MIT licensed to be distributed through n8n. - -## Examples - -### ❌ Incorrect - -```json -{ - "name": "n8n-nodes-my-service", - "version": "1.0.0" -} -``` - -```json -{ - "name": "n8n-nodes-my-service", - "license": "Apache-2.0" -} -``` - -### ✅ Correct - -```json -{ - "name": "n8n-nodes-my-service", - "license": "MIT" -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-param-default.md b/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-param-default.md deleted file mode 100644 index 8e580f8ab18..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/docs/rules/require-param-default.md +++ /dev/null @@ -1,60 +0,0 @@ -# Require every node parameter to declare a default value (`@n8n/community-nodes/require-param-default`) - -💼 This rule is enabled in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`. - - - -## Rule Details - -Every node parameter must declare a `default` property. A parameter is detected -by its shape: an object inside the node's `description` with `displayName`, -`name`, and `type` all set to string literals — the shape every -`INodeProperties` entry has. Entries in an `options` array (which carry -`name`/`value` but no `displayName`/`type`) are not treated as parameters. - -Without a `default`, n8n cannot reliably initialise the parameter's value. This -leads to inconsistent behaviour in the editor (empty or `undefined` fields) and -at execution time. Even non-input types such as `notice` are expected to declare -`default: ''`. - -This rule also checks parameters nested inside `options` of `collection` and -`fixedCollection` parameters. - -## Examples - -### Incorrect - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Node', - name: 'myNode', - properties: [ - { - displayName: 'Field', - name: 'field', - type: 'string', - }, - ], - }; -} -``` - -### Correct - -```typescript -export class MyNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'My Node', - name: 'myNode', - properties: [ - { - displayName: 'Field', - name: 'field', - type: 'string', - default: '', - }, - ], - }; -} -``` diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/plugin.ts b/packages/@n8n/eslint-plugin-community-nodes/src/plugin.ts index 761c0d494d7..e797390b465 100644 --- a/packages/@n8n/eslint-plugin-community-nodes/src/plugin.ts +++ b/packages/@n8n/eslint-plugin-community-nodes/src/plugin.ts @@ -27,8 +27,6 @@ const configs = { '@n8n/community-nodes/n8n-object-validation': 'error', '@n8n/community-nodes/no-deprecated-workflow-functions': 'error', '@n8n/community-nodes/no-emoji-in-options': 'error', - '@n8n/community-nodes/no-asterisk-in-option-names': 'warn', - '@n8n/community-nodes/no-duplicate-param-options': 'warn', '@n8n/community-nodes/node-usable-as-tool': 'error', '@n8n/community-nodes/package-name-convention': 'error', '@n8n/community-nodes/credential-test-required': 'error', @@ -41,28 +39,17 @@ const configs = { '@n8n/community-nodes/no-template-placeholders': 'error', '@n8n/community-nodes/icon-validation': 'error', '@n8n/community-nodes/icon-prefer-themed-variants': 'warn', - '@n8n/community-nodes/options-sorted-alphabetically': 'warn', '@n8n/community-nodes/resource-operation-pattern': 'warn', '@n8n/community-nodes/trigger-node-conventions': 'error', '@n8n/community-nodes/credential-documentation-url': 'error', '@n8n/community-nodes/cred-class-field-icon-missing': 'error', - '@n8n/community-nodes/cred-class-name-field-conventions': 'error', - '@n8n/community-nodes/cred-class-name-suffix': 'error', '@n8n/community-nodes/cred-class-oauth2-naming': 'error', - '@n8n/community-nodes/cred-filename-against-convention': 'error', '@n8n/community-nodes/node-connection-type-literal': 'error', - '@n8n/community-nodes/node-class-description-name-camelcase': 'error', - '@n8n/community-nodes/node-filename-against-convention': 'error', '@n8n/community-nodes/missing-paired-item': 'error', '@n8n/community-nodes/no-builder-hint-leakage': 'error', - '@n8n/community-nodes/node-operation-error-itemindex': 'error', '@n8n/community-nodes/node-registration-complete': 'warn', - '@n8n/community-nodes/require-community-node-keyword': 'warn', - '@n8n/community-nodes/require-continue-on-fail': 'error', - '@n8n/community-nodes/require-mit-license': 'error', '@n8n/community-nodes/require-node-api-error': 'error', '@n8n/community-nodes/require-node-description-fields': 'error', - '@n8n/community-nodes/require-param-default': 'error', '@n8n/community-nodes/require-version': 'error', '@n8n/community-nodes/valid-author': 'error', '@n8n/community-nodes/valid-credential-references': 'error', @@ -82,8 +69,6 @@ const configs = { '@n8n/community-nodes/n8n-object-validation': 'error', '@n8n/community-nodes/no-deprecated-workflow-functions': 'error', '@n8n/community-nodes/no-emoji-in-options': 'error', - '@n8n/community-nodes/no-asterisk-in-option-names': 'warn', - '@n8n/community-nodes/no-duplicate-param-options': 'warn', '@n8n/community-nodes/node-usable-as-tool': 'error', '@n8n/community-nodes/package-name-convention': 'error', '@n8n/community-nodes/credential-test-required': 'error', @@ -96,28 +81,17 @@ const configs = { '@n8n/community-nodes/no-template-placeholders': 'error', '@n8n/community-nodes/icon-validation': 'error', '@n8n/community-nodes/icon-prefer-themed-variants': 'warn', - '@n8n/community-nodes/options-sorted-alphabetically': 'warn', '@n8n/community-nodes/credential-documentation-url': 'error', '@n8n/community-nodes/resource-operation-pattern': 'warn', '@n8n/community-nodes/trigger-node-conventions': 'error', '@n8n/community-nodes/cred-class-field-icon-missing': 'error', - '@n8n/community-nodes/cred-class-name-field-conventions': 'error', - '@n8n/community-nodes/cred-class-name-suffix': 'error', '@n8n/community-nodes/cred-class-oauth2-naming': 'error', - '@n8n/community-nodes/cred-filename-against-convention': 'error', '@n8n/community-nodes/node-connection-type-literal': 'error', - '@n8n/community-nodes/node-class-description-name-camelcase': 'error', - '@n8n/community-nodes/node-filename-against-convention': 'error', '@n8n/community-nodes/missing-paired-item': 'error', '@n8n/community-nodes/no-builder-hint-leakage': 'error', - '@n8n/community-nodes/node-operation-error-itemindex': 'error', '@n8n/community-nodes/node-registration-complete': 'warn', - '@n8n/community-nodes/require-community-node-keyword': 'warn', - '@n8n/community-nodes/require-continue-on-fail': 'error', - '@n8n/community-nodes/require-mit-license': 'error', '@n8n/community-nodes/require-node-api-error': 'error', '@n8n/community-nodes/require-node-description-fields': 'error', - '@n8n/community-nodes/require-param-default': 'error', '@n8n/community-nodes/require-version': 'error', '@n8n/community-nodes/valid-author': 'error', '@n8n/community-nodes/valid-credential-references': 'error', diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-field-conventions.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-field-conventions.test.ts deleted file mode 100644 index 0c0fb96a65c..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-field-conventions.test.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { CredClassNameFieldConventionsRule } from './cred-class-name-field-conventions.js'; - -const ruleTester = new RuleTester(); - -const credFilePath = '/tmp/TestCredential.credentials.ts'; -const nonCredFilePath = '/tmp/SomeHelper.ts'; - -function createCredentialCode(name: string): string { - return ` -import type { ICredentialType, INodeProperties } from 'n8n-workflow'; - -export class TestApi implements ICredentialType { - name = '${name}'; - displayName = 'Test API'; - properties: INodeProperties[] = []; -}`; -} - -function createRegularClass(name: string): string { - return ` -export class SomeHelper { - name = '${name}'; -}`; -} - -// Embeds the raw literal text (including its quotes) verbatim, so tests can -// exercise names containing quote characters that need escaping. -function createCredentialCodeWithLiteral(literal: string): string { - return ` -import type { ICredentialType, INodeProperties } from 'n8n-workflow'; - -export class TestApi implements ICredentialType { - name = ${literal}; - displayName = 'Test API'; - properties: INodeProperties[] = []; -}`; -} - -ruleTester.run('cred-class-name-field-conventions', CredClassNameFieldConventionsRule, { - valid: [ - { - name: 'name field with Api suffix and lowercase first char', - filename: credFilePath, - code: createCredentialCode('githubApi'), - }, - { - name: 'OAuth2 name field is also valid', - filename: credFilePath, - code: createCredentialCode('githubOAuth2Api'), - }, - { - name: 'class not implementing ICredentialType is ignored', - filename: credFilePath, - code: createRegularClass('Github'), - }, - { - name: 'non-.credentials.ts file is ignored', - filename: nonCredFilePath, - code: createCredentialCode('Github'), - }, - ], - invalid: [ - { - name: 'name field missing Api suffix', - filename: credFilePath, - code: createCredentialCode('github'), - errors: [{ messageId: 'missingSuffix', data: { value: 'github' } }], - output: createCredentialCode('githubApi'), - }, - { - name: 'name field with uppercase first char', - filename: credFilePath, - code: createCredentialCode('GithubApi'), - errors: [{ messageId: 'uppercaseFirstChar', data: { value: 'GithubApi' } }], - output: createCredentialCode('githubApi'), - }, - { - name: 'name field with both uppercase first char and missing suffix', - filename: credFilePath, - code: createCredentialCode('Github'), - errors: [ - { messageId: 'uppercaseFirstChar', data: { value: 'Github' } }, - { messageId: 'missingSuffix', data: { value: 'Github' } }, - ], - output: createCredentialCode('githubApi'), - }, - { - name: 'name field ending in Ap', - filename: credFilePath, - code: createCredentialCode('githubAp'), - errors: [{ messageId: 'missingSuffix', data: { value: 'githubAp' } }], - output: createCredentialCode('githubApi'), - }, - { - name: 'name field ending in A', - filename: credFilePath, - code: createCredentialCode('githubA'), - errors: [{ messageId: 'missingSuffix', data: { value: 'githubA' } }], - output: createCredentialCode('githubApi'), - }, - { - name: 'autofix escapes single quotes in the name value', - filename: credFilePath, - code: createCredentialCodeWithLiteral("'git\\'hub'"), - errors: [{ messageId: 'missingSuffix', data: { value: "git'hub" } }], - output: createCredentialCodeWithLiteral("'git\\'hubApi'"), - }, - { - name: 'autofix preserves double quotes and escapes them in the name value', - filename: credFilePath, - code: createCredentialCodeWithLiteral('"Git\\"hub"'), - errors: [ - { messageId: 'uppercaseFirstChar', data: { value: 'Git"hub' } }, - { messageId: 'missingSuffix', data: { value: 'Git"hub' } }, - ], - output: createCredentialCodeWithLiteral('"git\\"hubApi"'), - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-field-conventions.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-field-conventions.ts deleted file mode 100644 index 657281ad824..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-field-conventions.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { - createRule, - findClassProperty, - getStringLiteralValue, - isCredentialTypeClass, - isFileType, -} from '../utils/index.js'; - -function lowercaseFirstChar(name: string): string { - return name.charAt(0).toLowerCase() + name.slice(1); -} - -function addApiSuffix(name: string): string { - if (name.endsWith('Api')) return name; - if (name.endsWith('Ap')) return `${name}i`; - if (name.endsWith('A')) return `${name}pi`; - return `${name}Api`; -} - -// Serialize a value as a string literal using the original quote character, -// escaping any characters that would otherwise break the literal so the -// autofix never emits invalid code (e.g. names containing quotes). -function toStringLiteral(value: string, quote: string): string { - const escaped = value - .replace(/\\/g, '\\\\') - .replace(/\n/g, '\\n') - .replace(/\r/g, '\\r') - .split(quote) - .join(`\\${quote}`); - return `${quote}${escaped}${quote}`; -} - -export const CredClassNameFieldConventionsRule = createRule({ - name: 'cred-class-name-field-conventions', - meta: { - type: 'problem', - docs: { - description: 'Credential `name` field must end with `Api` and start with a lowercase letter', - }, - messages: { - missingSuffix: "Credential `name` field '{{value}}' must end with 'Api'", - uppercaseFirstChar: "Credential `name` field '{{value}}' must start with a lowercase letter", - }, - fixable: 'code', - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.credentials.ts')) { - return {}; - } - - return { - ClassDeclaration(node) { - if (!isCredentialTypeClass(node)) { - return; - } - - const nameProperty = findClassProperty(node, 'name'); - if (!nameProperty?.value) { - return; - } - - const nameValue = getStringLiteralValue(nameProperty.value); - if (nameValue === null) { - return; - } - - const startsLowercase = !/^[A-Z]/.test(nameValue); - const endsWithApi = nameValue.endsWith('Api'); - if (startsLowercase && endsWithApi) { - return; - } - - // Compute the fully-corrected value once so each fix yields the - // same result in a single pass, regardless of which one applies. - const fixedValue = addApiSuffix(lowercaseFirstChar(nameValue)); - const valueNode = nameProperty.value; - const quote = context.sourceCode.getText(valueNode).charAt(0); - const replacement = toStringLiteral(fixedValue, quote); - - if (!startsLowercase) { - context.report({ - node: valueNode, - messageId: 'uppercaseFirstChar', - data: { value: nameValue }, - fix: (fixer) => fixer.replaceText(valueNode, replacement), - }); - } - - if (!endsWithApi) { - context.report({ - node: valueNode, - messageId: 'missingSuffix', - data: { value: nameValue }, - fix: (fixer) => fixer.replaceText(valueNode, replacement), - }); - } - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-suffix.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-suffix.test.ts deleted file mode 100644 index 5dd175f5e67..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-suffix.test.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { CredClassNameSuffixRule } from './cred-class-name-suffix.js'; - -const ruleTester = new RuleTester(); - -const credFilePath = '/tmp/TestCredential.credentials.ts'; -const nonCredFilePath = '/tmp/SomeHelper.ts'; - -function createCredentialCode(className: string): string { - return ` -import type { ICredentialType, INodeProperties } from 'n8n-workflow'; - -export class ${className} implements ICredentialType { - name = 'testApi'; - displayName = 'Test API'; - properties: INodeProperties[] = []; -}`; -} - -function createRegularClass(className: string): string { - return ` -export class ${className} { - name = 'test'; -}`; -} - -ruleTester.run('cred-class-name-suffix', CredClassNameSuffixRule, { - valid: [ - { - name: 'credential class with Api suffix', - filename: credFilePath, - code: createCredentialCode('TestApi'), - }, - { - name: 'credential class with OAuth2Api suffix', - filename: credFilePath, - code: createCredentialCode('TestOAuth2Api'), - }, - { - name: 'class not implementing ICredentialType is ignored', - filename: credFilePath, - code: createRegularClass('SomeHelper'), - }, - { - name: 'non-.credentials.ts file is ignored', - filename: nonCredFilePath, - code: createCredentialCode('TestCredential'), - }, - ], - invalid: [ - { - name: 'credential class missing Api suffix', - filename: credFilePath, - code: createCredentialCode('TestCredential'), - errors: [{ messageId: 'missingSuffix', data: { name: 'TestCredential' } }], - output: createCredentialCode('TestCredentialApi'), - }, - { - name: 'credential class name ending in Ap', - filename: credFilePath, - code: createCredentialCode('TestAp'), - errors: [{ messageId: 'missingSuffix', data: { name: 'TestAp' } }], - output: createCredentialCode('TestApi'), - }, - { - name: 'credential class name ending in A', - filename: credFilePath, - code: createCredentialCode('TestA'), - errors: [{ messageId: 'missingSuffix', data: { name: 'TestA' } }], - output: createCredentialCode('TestApi'), - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-suffix.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-suffix.ts deleted file mode 100644 index 23e533571ff..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-class-name-suffix.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { isCredentialTypeClass, isFileType, createRule } from '../utils/index.js'; - -function addApiSuffix(name: string): string { - if (name.endsWith('Ap')) return `${name}i`; - if (name.endsWith('A')) return `${name}pi`; - return `${name}Api`; -} - -export const CredClassNameSuffixRule = createRule({ - name: 'cred-class-name-suffix', - meta: { - type: 'problem', - docs: { - description: 'Credential class names must be suffixed with `Api`', - }, - messages: { - missingSuffix: "Credential class name '{{name}}' must end with 'Api'", - }, - fixable: 'code', - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.credentials.ts')) { - return {}; - } - - return { - ClassDeclaration(node) { - if (!isCredentialTypeClass(node)) { - return; - } - - const classNameNode = node.id; - if (!classNameNode) { - return; - } - - const className = classNameNode.name; - if (className.endsWith('Api')) { - return; - } - - const fixedName = addApiSuffix(className); - - context.report({ - node: classNameNode, - messageId: 'missingSuffix', - data: { name: className }, - fix(fixer) { - return fixer.replaceText(classNameNode, fixedName); - }, - }); - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-filename-against-convention.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-filename-against-convention.test.ts deleted file mode 100644 index 8d71fd65cff..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-filename-against-convention.test.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { CredFilenameAgainstConventionRule } from './cred-filename-against-convention.js'; - -const ruleTester = new RuleTester(); - -function createCredentialCode(className: string): string { - return ` -import type { ICredentialType, INodeProperties } from 'n8n-workflow'; - -export class ${className} implements ICredentialType { - name = '${className.charAt(0).toLowerCase() + className.slice(1)}'; - displayName = '${className}'; - properties: INodeProperties[] = []; -}`; -} - -function createRegularClass(): string { - return ` -export class SomeHelper { - name = 'githubApi'; -}`; -} - -ruleTester.run('cred-filename-against-convention', CredFilenameAgainstConventionRule, { - valid: [ - { - name: 'filename matches credential class name', - filename: '/tmp/GithubApi.credentials.ts', - code: createCredentialCode('GithubApi'), - }, - { - name: 'multi-word class name matches filename', - filename: '/tmp/GoogleSheetsOAuth2Api.credentials.ts', - code: createCredentialCode('GoogleSheetsOAuth2Api'), - }, - { - name: 'class not implementing ICredentialType is ignored', - filename: '/tmp/Github.credentials.ts', - code: createRegularClass(), - }, - { - name: 'non-.credentials.ts file is ignored', - filename: '/tmp/GithubApi.ts', - code: createCredentialCode('Mismatch'), - }, - ], - invalid: [ - { - name: 'filename does not match class name', - filename: '/tmp/GithubApi.credentials.ts', - code: createCredentialCode('GitlabApi'), - errors: [ - { - messageId: 'renameFile', - data: { className: 'GitlabApi', expected: 'GitlabApi.credentials.ts' }, - }, - ], - }, - { - name: 'filename has wrong casing', - filename: '/tmp/githubApi.credentials.ts', - code: createCredentialCode('GithubApi'), - errors: [ - { - messageId: 'renameFile', - data: { className: 'GithubApi', expected: 'GithubApi.credentials.ts' }, - }, - ], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-filename-against-convention.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-filename-against-convention.ts deleted file mode 100644 index 751ebb93a20..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/cred-filename-against-convention.ts +++ /dev/null @@ -1,48 +0,0 @@ -import * as path from 'node:path'; - -import { isCredentialTypeClass, isFileType, createRule } from '../utils/index.js'; - -export const CredFilenameAgainstConventionRule = createRule({ - name: 'cred-filename-against-convention', - meta: { - type: 'problem', - docs: { - description: 'Credential filename must match the credential class name', - }, - messages: { - renameFile: - 'Credential filename must match the class name "{{className}}". Rename file to "{{expected}}".', - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.credentials.ts')) { - return {}; - } - - return { - ClassDeclaration(node) { - if (!isCredentialTypeClass(node)) { - return; - } - - const classNameNode = node.id; - if (!classNameNode) { - return; - } - - const className = classNameNode.name; - const actualBaseName = path.basename(context.filename, '.credentials.ts'); - - if (actualBaseName !== className) { - context.report({ - node: classNameNode, - messageId: 'renameFile', - data: { className, expected: `${className}.credentials.ts` }, - }); - } - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/index.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/index.ts index f027815cc22..a3bd8b5c158 100644 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/index.ts +++ b/packages/@n8n/eslint-plugin-community-nodes/src/rules/index.ts @@ -2,10 +2,7 @@ import type { AnyRuleModule } from '@typescript-eslint/utils/ts-eslint'; import { AiNodePackageJsonRule } from './ai-node-package-json.js'; import { CredClassFieldIconMissingRule } from './cred-class-field-icon-missing.js'; -import { CredClassNameFieldConventionsRule } from './cred-class-name-field-conventions.js'; -import { CredClassNameSuffixRule } from './cred-class-name-suffix.js'; import { CredClassOAuth2NamingRule } from './cred-class-oauth2-naming.js'; -import { CredFilenameAgainstConventionRule } from './cred-filename-against-convention.js'; import { CredentialDocumentationUrlRule } from './credential-documentation-url.js'; import { CredentialPasswordFieldRule } from './credential-password-field.js'; import { CredentialTestRequiredRule } from './credential-test-required.js'; @@ -13,12 +10,10 @@ import { IconPreferThemedVariantsRule } from './icon-prefer-themed-variants.js'; import { IconValidationRule } from './icon-validation.js'; import { MissingPairedItemRule } from './missing-paired-item.js'; import { N8nObjectValidationRule } from './n8n-object-validation.js'; -import { NoAsteriskInOptionNamesRule } from './no-asterisk-in-option-names.js'; import { NoBuilderHintLeakageRule } from './no-builder-hint-leakage.js'; import { NoCredentialReuseRule } from './no-credential-reuse.js'; import { NoDangerousFunctionsRule } from './no-dangerous-functions.js'; import { NoDeprecatedWorkflowFunctionsRule } from './no-deprecated-workflow-functions.js'; -import { NoDuplicateParamOptionsRule } from './no-duplicate-param-options.js'; import { NoEmojiInOptionsRule } from './no-emoji-in-options.js'; import { NoForbiddenLifecycleScriptsRule } from './no-forbidden-lifecycle-scripts.js'; import { NoHttpRequestWithManualAuthRule } from './no-http-request-with-manual-auth.js'; @@ -28,20 +23,12 @@ import { NoRestrictedImportsRule } from './no-restricted-imports.js'; import { NoRuntimeDependenciesRule } from './no-runtime-dependencies.js'; import { NoTemplatePlaceholdersRule } from './no-template-placeholders.js'; import { NodeClassDescriptionIconMissingRule } from './node-class-description-icon-missing.js'; -import { NodeClassDescriptionNameCamelCaseRule } from './node-class-description-name-camelcase.js'; import { NodeConnectionTypeLiteralRule } from './node-connection-type-literal.js'; -import { NodeFilenameAgainstConventionRule } from './node-filename-against-convention.js'; -import { NodeOperationErrorItemIndexRule } from './node-operation-error-itemindex.js'; import { NodeRegistrationCompleteRule } from './node-registration-complete.js'; import { NodeUsableAsToolRule } from './node-usable-as-tool.js'; -import { OptionsSortedAlphabeticallyRule } from './options-sorted-alphabetically.js'; import { PackageNameConventionRule } from './package-name-convention.js'; -import { RequireCommunityNodeKeywordRule } from './require-community-node-keyword.js'; -import { RequireContinueOnFailRule } from './require-continue-on-fail.js'; -import { RequireMitLicenseRule } from './require-mit-license.js'; import { RequireNodeApiErrorRule } from './require-node-api-error.js'; import { RequireNodeDescriptionFieldsRule } from './require-node-description-fields.js'; -import { RequireParamDefaultRule } from './require-param-default.js'; import { RequireVersionRule } from './require-version.js'; import { ResourceOperationPatternRule } from './resource-operation-pattern.js'; import { TriggerNodeConventionsRule } from './trigger-node-conventions.js'; @@ -58,10 +45,7 @@ export const rules = { 'credential-password-field': CredentialPasswordFieldRule, 'no-deprecated-workflow-functions': NoDeprecatedWorkflowFunctionsRule, 'no-emoji-in-options': NoEmojiInOptionsRule, - 'no-asterisk-in-option-names': NoAsteriskInOptionNamesRule, - 'no-duplicate-param-options': NoDuplicateParamOptionsRule, 'node-usable-as-tool': NodeUsableAsToolRule, - 'options-sorted-alphabetically': OptionsSortedAlphabeticallyRule, 'package-name-convention': PackageNameConventionRule, 'credential-test-required': CredentialTestRequiredRule, 'no-credential-reuse': NoCredentialReuseRule, @@ -77,25 +61,15 @@ export const rules = { 'trigger-node-conventions': TriggerNodeConventionsRule, 'credential-documentation-url': CredentialDocumentationUrlRule, 'node-class-description-icon-missing': NodeClassDescriptionIconMissingRule, - 'node-class-description-name-camelcase': NodeClassDescriptionNameCamelCaseRule, 'cred-class-field-icon-missing': CredClassFieldIconMissingRule, - 'cred-class-name-field-conventions': CredClassNameFieldConventionsRule, - 'cred-class-name-suffix': CredClassNameSuffixRule, 'cred-class-oauth2-naming': CredClassOAuth2NamingRule, - 'cred-filename-against-convention': CredFilenameAgainstConventionRule, 'node-connection-type-literal': NodeConnectionTypeLiteralRule, - 'node-filename-against-convention': NodeFilenameAgainstConventionRule, - 'node-operation-error-itemindex': NodeOperationErrorItemIndexRule, 'node-registration-complete': NodeRegistrationCompleteRule, 'missing-paired-item': MissingPairedItemRule, 'no-builder-hint-leakage': NoBuilderHintLeakageRule, 'n8n-object-validation': N8nObjectValidationRule, - 'require-community-node-keyword': RequireCommunityNodeKeywordRule, - 'require-continue-on-fail': RequireContinueOnFailRule, - 'require-mit-license': RequireMitLicenseRule, 'require-node-api-error': RequireNodeApiErrorRule, 'require-node-description-fields': RequireNodeDescriptionFieldsRule, - 'require-param-default': RequireParamDefaultRule, 'require-version': RequireVersionRule, 'valid-author': ValidAuthorRule, 'valid-credential-references': ValidCredentialReferencesRule, diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-asterisk-in-option-names.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-asterisk-in-option-names.test.ts deleted file mode 100644 index 3ceef0ec2a3..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-asterisk-in-option-names.test.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { NoAsteriskInOptionNamesRule } from './no-asterisk-in-option-names.js'; - -const ruleTester = new RuleTester(); - -function createNodeCode(body: string): string { - return ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - ${body} - }; - } - `; -} - -ruleTester.run('no-asterisk-in-option-names', NoAsteriskInOptionNamesRule, { - valid: [ - { - name: 'class that does not implement INodeType', - filename: '/tmp/TestNode.node.ts', - code: ` - export class NotANode { - description = { - properties: [ - { options: [{ name: '* All', value: 'all' }] }, - ], - }; - } - `, - }, - { - name: 'non .node.ts file is ignored', - filename: '/tmp/helper.ts', - code: ` - export class TestNode { - description = { - properties: [ - { options: [{ name: '* All', value: 'all' }] }, - ], - }; - } - `, - }, - { - name: 'option names without asterisk', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - options: [ - { name: 'Create', value: 'create' }, - { name: '[All]', value: 'all' }, - ], - default: 'create', - }, - ], - `), - }, - { - name: 'asterisk in displayName outside options is ignored', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - displayName: 'Test * Node', - name: 'testNode', - properties: [ - { displayName: 'Field *', name: 'field', type: 'string', default: '' }, - ], - `), - }, - ], - invalid: [ - { - name: 'asterisk in option name within options array', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: '* All', value: 'all' }, - { name: 'User', value: 'user' }, - ], - default: 'all', - }, - ], - `), - errors: [ - { - messageId: 'asteriskInOptionName', - data: { name: '* All' }, - suggestions: [ - { - messageId: 'replaceAsterisk', - output: createNodeCode(` - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: '[All] All', value: 'all' }, - { name: 'User', value: 'user' }, - ], - default: 'all', - }, - ], - `), - }, - ], - }, - ], - }, - { - name: 'asterisk in nested collection options', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Filters', - name: 'filters', - type: 'collection', - default: {}, - options: [ - { - displayName: 'Status', - name: 'status', - type: 'options', - options: [{ name: '*', value: 'any' }], - default: 'any', - }, - ], - }, - ], - `), - errors: [ - { - messageId: 'asteriskInOptionName', - data: { name: '*' }, - suggestions: [ - { - messageId: 'replaceAsterisk', - output: createNodeCode(` - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Filters', - name: 'filters', - type: 'collection', - default: {}, - options: [ - { - displayName: 'Status', - name: 'status', - type: 'options', - options: [{ name: '[All]', value: 'any' }], - default: 'any', - }, - ], - }, - ], - `), - }, - ], - }, - ], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-asterisk-in-option-names.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-asterisk-in-option-names.ts deleted file mode 100644 index e8a899e4aa7..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-asterisk-in-option-names.ts +++ /dev/null @@ -1,111 +0,0 @@ -import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; - -import { - isNodeTypeClass, - findClassProperty, - findObjectProperty, - getStringLiteralValue, - isFileType, - createRule, -} from '../utils/index.js'; - -export const NoAsteriskInOptionNamesRule = createRule({ - name: 'no-asterisk-in-option-names', - meta: { - type: 'suggestion', - docs: { - description: 'Disallow asterisk characters in node option name values', - }, - hasSuggestions: true, - messages: { - asteriskInOptionName: - 'Option name "{{ name }}" contains "*", which renders ambiguously in the n8n UI. Use bracketed notation like "[All]" instead.', - replaceAsterisk: 'Replace "*" with "[All]".', - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.node.ts')) { - return {}; - } - - // Check every object that is a direct element of an `options` array. - const checkOptionsArray = (optionsArray: TSESTree.ArrayExpression): void => { - for (const option of optionsArray.elements) { - if (!option || option.type !== AST_NODE_TYPES.ObjectExpression) { - continue; - } - - const valueNode = findObjectProperty(option, 'name')?.value; - if (!valueNode) { - continue; - } - - const name = getStringLiteralValue(valueNode); - if (!name?.includes('*')) { - continue; - } - - context.report({ - node: valueNode, - messageId: 'asteriskInOptionName', - data: { name }, - suggest: [ - { - messageId: 'replaceAsterisk', - fix(fixer) { - const quote = context.sourceCode.getText(valueNode).at(0) ?? "'"; - return fixer.replaceText( - valueNode, - `${quote}${name.replaceAll('*', '[All]')}${quote}`, - ); - }, - }, - ], - }); - } - }; - - const traverse = (node: TSESTree.Node): void => { - if (node.type === AST_NODE_TYPES.ObjectExpression) { - const optionsProperty = findObjectProperty(node, 'options'); - if (optionsProperty?.value.type === AST_NODE_TYPES.ArrayExpression) { - checkOptionsArray(optionsProperty.value); - } - } - - for (const key in node) { - if (key === 'parent') { - continue; - } - const child = node[key as keyof TSESTree.Node] as unknown; - if (Array.isArray(child)) { - for (const item of child) { - if (item && typeof item === 'object' && 'type' in item) { - traverse(item as TSESTree.Node); - } - } - } else if (child && typeof child === 'object' && 'type' in child) { - traverse(child as TSESTree.Node); - } - } - }; - - return { - ClassDeclaration(node) { - if (!isNodeTypeClass(node)) { - return; - } - - const descriptionProperty = findClassProperty(node, 'description'); - if (!descriptionProperty?.value) { - return; - } - - traverse(descriptionProperty.value); - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-duplicate-param-options.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-duplicate-param-options.test.ts deleted file mode 100644 index c13c9dd0a44..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-duplicate-param-options.test.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { NoDuplicateParamOptionsRule } from './no-duplicate-param-options.js'; - -const ruleTester = new RuleTester(); - -function nodeCode(options: string, type = 'options'): string { - return ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: '${type}', - options: [${options}], - default: '', - }, - ], - }; - } - `; -} - -ruleTester.run('no-duplicate-param-options', NoDuplicateParamOptionsRule, { - valid: [ - { - name: 'non-INodeType class is skipped', - filename: '/tmp/TestNode.node.ts', - code: 'export class Foo {}', - }, - { - name: 'unique names and values', - filename: '/tmp/TestNode.node.ts', - code: nodeCode(` - { name: 'Create', value: 'create' }, - { name: 'Delete', value: 'delete' }, - `), - }, - { - name: 'unique numeric values', - filename: '/tmp/TestNode.node.ts', - code: nodeCode(` - { name: 'One', value: 1 }, - { name: 'Two', value: 2 }, - `), - }, - { - name: 'multiOptions with unique options', - filename: '/tmp/TestNode.node.ts', - code: nodeCode( - ` - { name: 'A', value: 'a' }, - { name: 'B', value: 'b' }, - `, - 'multiOptions', - ), - }, - { - name: 'non-node.ts file is skipped', - filename: '/tmp/TestNode.ts', - code: nodeCode(` - { name: 'Dup', value: 'a' }, - { name: 'Dup', value: 'b' }, - `), - }, - ], - invalid: [ - { - name: 'duplicate name', - filename: '/tmp/TestNode.node.ts', - code: nodeCode(` - { name: 'Create', value: 'create' }, - { name: 'Create', value: 'create2' }, - `), - errors: [{ messageId: 'duplicateName', data: { value: 'Create', displayName: 'Resource' } }], - }, - { - name: 'duplicate value', - filename: '/tmp/TestNode.node.ts', - code: nodeCode(` - { name: 'Create', value: 'create' }, - { name: 'Make', value: 'create' }, - `), - errors: [{ messageId: 'duplicateValue', data: { value: 'create', displayName: 'Resource' } }], - }, - { - name: 'duplicate numeric value', - filename: '/tmp/TestNode.node.ts', - code: nodeCode(` - { name: 'One', value: 1 }, - { name: 'Uno', value: 1 }, - `), - errors: [{ messageId: 'duplicateValue', data: { value: '1', displayName: 'Resource' } }], - }, - { - name: 'duplicate name and value reported separately', - filename: '/tmp/TestNode.node.ts', - code: nodeCode(` - { name: 'Create', value: 'create' }, - { name: 'Create', value: 'create' }, - `), - errors: [ - { messageId: 'duplicateName', data: { value: 'Create', displayName: 'Resource' } }, - { messageId: 'duplicateValue', data: { value: 'create', displayName: 'Resource' } }, - ], - }, - { - name: 'duplicate in multiOptions', - filename: '/tmp/TestNode.node.ts', - code: nodeCode( - ` - { name: 'A', value: 'a' }, - { name: 'A', value: 'b' }, - `, - 'multiOptions', - ), - errors: [{ messageId: 'duplicateName', data: { value: 'A', displayName: 'Resource' } }], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-duplicate-param-options.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-duplicate-param-options.ts deleted file mode 100644 index 2cabe95032a..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/no-duplicate-param-options.ts +++ /dev/null @@ -1,125 +0,0 @@ -import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; - -import { - isNodeTypeClass, - findClassProperty, - findObjectProperty, - getStringLiteralValue, - getLiteralValue, - isFileType, - createRule, -} from '../utils/index.js'; - -export const NoDuplicateParamOptionsRule = createRule({ - name: 'no-duplicate-param-options', - meta: { - type: 'problem', - docs: { - description: 'Disallow duplicate option names or values within a single node parameter', - }, - messages: { - duplicateName: 'Duplicate option name "{{ value }}" in parameter "{{ displayName }}".', - duplicateValue: 'Duplicate option value "{{ value }}" in parameter "{{ displayName }}".', - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.node.ts')) { - return {}; - } - - const checkProperty = (property: TSESTree.ObjectExpression): void => { - const typeProperty = findObjectProperty(property, 'type'); - const type = typeProperty ? getStringLiteralValue(typeProperty.value) : null; - if (type !== 'options' && type !== 'multiOptions') { - return; - } - - const optionsProperty = findObjectProperty(property, 'options'); - if ( - !optionsProperty?.value || - optionsProperty.value.type !== AST_NODE_TYPES.ArrayExpression - ) { - return; - } - - const displayNameProperty = findObjectProperty(property, 'displayName'); - const displayName = - (displayNameProperty ? getStringLiteralValue(displayNameProperty.value) : null) ?? - 'unknown'; - - const seenNames = new Set(); - const seenValues = new Set(); - - for (const option of optionsProperty.value.elements) { - if (!option || option.type !== AST_NODE_TYPES.ObjectExpression) { - continue; - } - - const nameProperty = findObjectProperty(option, 'name'); - const name = nameProperty ? getStringLiteralValue(nameProperty.value) : null; - if (name !== null) { - if (seenNames.has(name)) { - context.report({ - node: nameProperty!.value, - messageId: 'duplicateName', - data: { value: name, displayName }, - }); - } - seenNames.add(name); - } - - const valueProperty = findObjectProperty(option, 'value'); - const value = valueProperty ? getLiteralValue(valueProperty.value) : null; - if (value !== null) { - if (seenValues.has(value)) { - context.report({ - node: valueProperty!.value, - messageId: 'duplicateValue', - data: { value: String(value), displayName }, - }); - } - seenValues.add(value); - } - } - }; - - const analyzeNodeDescription = (descriptionValue: TSESTree.Expression | null): void => { - if (!descriptionValue || descriptionValue.type !== AST_NODE_TYPES.ObjectExpression) { - return; - } - - const propertiesProperty = findObjectProperty(descriptionValue, 'properties'); - if ( - !propertiesProperty?.value || - propertiesProperty.value.type !== AST_NODE_TYPES.ArrayExpression - ) { - return; - } - - for (const property of propertiesProperty.value.elements) { - if (!property || property.type !== AST_NODE_TYPES.ObjectExpression) { - continue; - } - checkProperty(property); - } - }; - - return { - ClassDeclaration(node) { - if (!isNodeTypeClass(node)) { - return; - } - - const descriptionProperty = findClassProperty(node, 'description'); - if (!descriptionProperty) { - return; - } - - analyzeNodeDescription(descriptionProperty.value); - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-class-description-name-camelcase.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-class-description-name-camelcase.test.ts deleted file mode 100644 index 54cbcdbd086..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-class-description-name-camelcase.test.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { NodeClassDescriptionNameCamelCaseRule } from './node-class-description-name-camelcase.js'; - -const ruleTester = new RuleTester(); - -function createNodeCode(name: string): string { - return ` -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: '${name}', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: [], - outputs: [], - properties: [], - }; -}`; -} - -function createNodeCodeWithoutName(): string { - return ` -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: [], - outputs: [], - properties: [], - }; -}`; -} - -function createRegularClass(): string { - return ` -export class SomeHelper { - name = 'My Helper'; -}`; -} - -ruleTester.run('node-class-description-name-camelcase', NodeClassDescriptionNameCamelCaseRule, { - valid: [ - { - name: 'single lowercase word', - filename: '/tmp/Github.node.ts', - code: createNodeCode('github'), - }, - { - name: 'camelCase multi-word name', - filename: '/tmp/GoogleSheets.node.ts', - code: createNodeCode('googleSheets'), - }, - { - name: 'camelCase name with digits', - filename: '/tmp/Oauth2.node.ts', - code: createNodeCode('myNode2'), - }, - { - name: 'class not implementing INodeType is ignored', - filename: '/tmp/Github.node.ts', - code: createRegularClass(), - }, - { - name: 'non-.node.ts file is ignored', - filename: '/tmp/Github.ts', - code: createNodeCode('My Node'), - }, - { - name: 'missing description.name is ignored', - filename: '/tmp/Github.node.ts', - code: createNodeCodeWithoutName(), - }, - ], - invalid: [ - { - name: 'PascalCase first letter is lowercased', - filename: '/tmp/Github.node.ts', - code: createNodeCode('MyNode'), - errors: [{ messageId: 'notCamelCase', data: { value: 'MyNode' } }], - output: createNodeCode('myNode'), - }, - { - name: 'spaces are removed and camelCased', - filename: '/tmp/Github.node.ts', - code: createNodeCode('My Node'), - errors: [{ messageId: 'notCamelCase', data: { value: 'My Node' } }], - output: createNodeCode('myNode'), - }, - { - name: 'hyphen separators are removed and camelCased', - filename: '/tmp/Github.node.ts', - code: createNodeCode('my-node'), - errors: [{ messageId: 'notCamelCase', data: { value: 'my-node' } }], - output: createNodeCode('myNode'), - }, - { - name: 'underscore separators are removed and camelCased', - filename: '/tmp/Github.node.ts', - code: createNodeCode('my_cool_node'), - errors: [{ messageId: 'notCamelCase', data: { value: 'my_cool_node' } }], - output: createNodeCode('myCoolNode'), - }, - { - name: 'names starting with a digit are reported without an autofix', - filename: '/tmp/Github.node.ts', - code: createNodeCode('123node'), - errors: [{ messageId: 'notCamelCase', data: { value: '123node' } }], - output: null, - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-class-description-name-camelcase.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-class-description-name-camelcase.ts deleted file mode 100644 index cd71eb2333e..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-class-description-name-camelcase.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { TSESTree } from '@typescript-eslint/utils'; - -import { - isNodeTypeClass, - findClassProperty, - findObjectProperty, - getStringLiteralValue, - isFileType, - createRule, -} from '../utils/index.js'; - -// `description.name` must be camelCase: a lowercase letter followed by -// letters/digits, with no separators. -const CAMEL_CASE_PATTERN = /^[a-z][a-zA-Z0-9]*$/; - -/** - * Converts an arbitrary node name to camelCase by splitting on any - * non-alphanumeric separators, upper-casing the first character of each - * subsequent segment, and lower-casing the very first character. - * Examples: `My Node` -> `myNode`, `my-node` -> `myNode`, `GitHub` -> `gitHub`. - */ -function toCamelCase(value: string): string { - const segments = value.split(/[^a-zA-Z0-9]+/).filter(Boolean); - if (segments.length === 0) { - return value; - } - - const joined = segments - .map((segment, index) => - index === 0 ? segment : segment.charAt(0).toUpperCase() + segment.slice(1), - ) - .join(''); - - return joined.charAt(0).toLowerCase() + joined.slice(1); -} - -// Serialize a value as a string literal using the original quote character, -// escaping any characters that would otherwise break the literal so the -// autofix never emits invalid code. -function toStringLiteral(value: string, quote: string): string { - const escaped = value - .replace(/\\/g, '\\\\') - .replace(/\n/g, '\\n') - .replace(/\r/g, '\\r') - .split(quote) - .join(`\\${quote}`); - return `${quote}${escaped}${quote}`; -} - -export const NodeClassDescriptionNameCamelCaseRule = createRule({ - name: 'node-class-description-name-camelcase', - meta: { - type: 'problem', - docs: { - description: 'Node class `description.name` must be camelCase', - }, - messages: { - notCamelCase: "Node `description.name` '{{value}}' must be camelCase", - }, - fixable: 'code', - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.node.ts')) { - return {}; - } - - return { - ClassDeclaration(node) { - if (!isNodeTypeClass(node)) { - return; - } - - const descriptionProperty = findClassProperty(node, 'description'); - if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) { - return; - } - - const nameProperty = findObjectProperty(descriptionProperty.value, 'name'); - if (!nameProperty) { - return; - } - - const nameValue = getStringLiteralValue(nameProperty.value); - if (nameValue === null) { - return; - } - - if (CAMEL_CASE_PATTERN.test(nameValue)) { - return; - } - - const valueNode = nameProperty.value; - const fixedValue = toCamelCase(nameValue); - // Only offer an autofix when it actually yields a valid camelCase - // value (e.g. names starting with a digit cannot be repaired). - const canFix = fixedValue !== nameValue && CAMEL_CASE_PATTERN.test(fixedValue); - - context.report({ - node: valueNode, - messageId: 'notCamelCase', - data: { value: nameValue }, - fix: canFix - ? (fixer) => { - const quote = context.sourceCode.getText(valueNode).charAt(0); - return fixer.replaceText(valueNode, toStringLiteral(fixedValue, quote)); - } - : undefined, - }); - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-filename-against-convention.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-filename-against-convention.test.ts deleted file mode 100644 index 8ed785ef49a..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-filename-against-convention.test.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { NodeFilenameAgainstConventionRule } from './node-filename-against-convention.js'; - -const ruleTester = new RuleTester(); - -function createNodeCode(name: string): string { - return ` -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: '${name}', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: [], - outputs: [], - properties: [], - }; -}`; -} - -function createNodeCodeWithoutName(): string { - return ` -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: [], - outputs: [], - properties: [], - }; -}`; -} - -function createRegularClass(): string { - return ` -export class SomeHelper { - name = 'github'; -}`; -} - -ruleTester.run('node-filename-against-convention', NodeFilenameAgainstConventionRule, { - valid: [ - { - name: 'filename matches PascalCased description.name', - filename: '/tmp/Github.node.ts', - code: createNodeCode('github'), - }, - { - name: 'filename with version suffix is accepted', - filename: '/tmp/GithubV2.node.ts', - code: createNodeCode('github'), - }, - { - name: 'filename with multi-digit version suffix is accepted', - filename: '/tmp/GithubV10.node.ts', - code: createNodeCode('github'), - }, - { - name: 'multi-word camelCase name maps to PascalCase filename', - filename: '/tmp/GoogleSheets.node.ts', - code: createNodeCode('googleSheets'), - }, - { - name: 'class not implementing INodeType is ignored', - filename: '/tmp/Github.node.ts', - code: createRegularClass(), - }, - { - name: 'non-.node.ts file is ignored', - filename: '/tmp/Github.ts', - code: createNodeCode('mismatch'), - }, - { - name: 'missing description.name is ignored', - filename: '/tmp/Github.node.ts', - code: createNodeCodeWithoutName(), - }, - ], - invalid: [ - { - name: 'filename does not match description.name', - filename: '/tmp/Github.node.ts', - code: createNodeCode('gitlab'), - errors: [{ messageId: 'renameFile', data: { expected: 'Gitlab.node.ts' } }], - }, - { - name: 'filename is lowercased', - filename: '/tmp/github.node.ts', - code: createNodeCode('github'), - errors: [{ messageId: 'renameFile', data: { expected: 'Github.node.ts' } }], - }, - { - name: 'filename has wrong internal casing', - filename: '/tmp/GitHub.node.ts', - code: createNodeCode('github'), - errors: [{ messageId: 'renameFile', data: { expected: 'Github.node.ts' } }], - }, - { - name: 'version suffix does not excuse a mismatched base name', - filename: '/tmp/GitlabV2.node.ts', - code: createNodeCode('github'), - errors: [{ messageId: 'renameFile', data: { expected: 'Github.node.ts' } }], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-filename-against-convention.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-filename-against-convention.ts deleted file mode 100644 index a70179b76a9..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-filename-against-convention.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { TSESTree } from '@typescript-eslint/utils'; -import * as path from 'node:path'; - -import { - isNodeTypeClass, - findClassProperty, - findObjectProperty, - getStringLiteralValue, - isFileType, - createRule, -} from '../utils/index.js'; - -/** - * Converts a `description.name` to the expected node file basename by - * upper-casing the first character. The source of truth is `description.name`, - * not the class name. Example: `github` -> `Github`. - */ -function toExpectedBaseName(name: string): string { - return name.charAt(0).toUpperCase() + name.slice(1); -} - -export const NodeFilenameAgainstConventionRule = createRule({ - name: 'node-filename-against-convention', - meta: { - type: 'problem', - docs: { - description: 'Node filename must match the node `description.name`', - }, - messages: { - renameFile: 'Node filename must match `description.name`. Rename file to "{{expected}}".', - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.node.ts')) { - return {}; - } - - return { - ClassDeclaration(node) { - if (!isNodeTypeClass(node)) { - return; - } - - const descriptionProperty = findClassProperty(node, 'description'); - if (descriptionProperty?.value?.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) { - return; - } - - const nameProperty = findObjectProperty(descriptionProperty.value, 'name'); - if (!nameProperty) { - return; - } - - const name = getStringLiteralValue(nameProperty.value); - if (!name) { - return; - } - - const expectedBaseName = toExpectedBaseName(name); - // Strip the `.node.ts` extension and any trailing `V` version - // suffix so versioned files (e.g. `GithubV2.node.ts`) are accepted. - const actualBaseName = path.basename(context.filename, '.node.ts').replace(/V\d+$/, ''); - - if (actualBaseName !== expectedBaseName) { - context.report({ - node: nameProperty.value, - messageId: 'renameFile', - data: { expected: `${expectedBaseName}.node.ts` }, - }); - } - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-operation-error-itemindex.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-operation-error-itemindex.test.ts deleted file mode 100644 index 4224b331016..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-operation-error-itemindex.test.ts +++ /dev/null @@ -1,280 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { NodeOperationErrorItemIndexRule } from './node-operation-error-itemindex.js'; - -const ruleTester = new RuleTester(); - -const NODE_FILENAME = 'TestNode.node.ts'; - -function createNodeWithExecute(executeBody: string): { filename: string; code: string } { - return { - filename: NODE_FILENAME, - code: ` -import type { INodeType, INodeTypeDescription, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow'; -import { NodeOperationError, NodeApiError } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: ['main'], - outputs: ['main'], - properties: [], - }; - - async execute(this: IExecuteFunctions): Promise { - ${executeBody} - } -}`, - }; -} - -ruleTester.run('node-operation-error-itemindex', NodeOperationErrorItemIndexRule, { - valid: [ - { - name: 'non-node class is ignored', - filename: NODE_FILENAME, - code: ` -export class RegularClass { - async execute() { - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'error'); - } - } -}`, - }, - { - name: 'NodeOperationError outside any loop is allowed', - ...createNodeWithExecute(` - throw new NodeOperationError(this.getNode(), 'some error'); - `), - }, - { - name: 'NodeOperationError in a non-item loop is allowed', - ...createNodeWithExecute(` - const settings = ['a', 'b', 'c']; - for (let i = 0; i < settings.length; i++) { - throw new NodeOperationError(this.getNode(), 'error'); - } - `), - }, - { - name: 'NodeOperationError with itemIndex in C-style for loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'error', { itemIndex: i }); - } - `), - }, - { - name: 'NodeOperationError with itemIndex shorthand in C-style for loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { - throw new NodeOperationError(this.getNode(), 'error', { itemIndex }); - } - `), - }, - { - name: 'NodeApiError with itemIndex in C-style for loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeApiError(this.getNode(), error, { itemIndex: i }); - } - `), - }, - { - name: 'NodeOperationError with itemIndex in for...of loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (const [i, item] of items.entries()) { - throw new NodeOperationError(this.getNode(), 'error', { itemIndex: i }); - } - `), - }, - { - name: 'NodeOperationError with itemIndex in for...of directly over getInputData()', - ...createNodeWithExecute(` - let i = 0; - for (const item of this.getInputData()) { - throw new NodeOperationError(this.getNode(), 'error', { itemIndex: i++ }); - } - `), - }, - { - name: 'NodeOperationError with variable as 3rd arg (cannot statically verify — skip)', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - const opts = { itemIndex: i }; - throw new NodeOperationError(this.getNode(), 'error', opts); - } - `), - }, - { - name: 'NodeOperationError with spread plus explicit itemIndex in options', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'error', { ...opts, itemIndex: i }); - } - `), - }, - { - name: 'NodeOperationError outside execute() method is not flagged', - filename: NODE_FILENAME, - code: ` -import type { INodeType, INodeTypeDescription, IWebhookFunctions, IWebhookResponseData } from 'n8n-workflow'; -import { NodeOperationError } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - group: ['trigger'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: [], - outputs: ['main'], - webhooks: [{ name: 'default', httpMethod: 'POST', responseMode: 'onReceived', path: 'webhook' }], - properties: [], - }; - - async webhook(this: IWebhookFunctions): Promise { - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'webhook error'); - } - return { workflowData: [[]] }; - } -}`, - }, - { - name: 'NodeOperationError in nested non-item for loop inside item loop is allowed', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - const options = ['a', 'b']; - for (let j = 0; j < options.length; j++) { - throw new NodeOperationError(this.getNode(), 'error', { itemIndex: i }); - } - } - `), - }, - ], - invalid: [ - { - name: 'NodeOperationError without any options in C-style for loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'error'); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - { - name: 'NodeOperationError with empty options object in C-style for loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'error', {}); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - { - name: 'NodeOperationError with options but missing itemIndex in C-style for loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'error', { description: 'something' }); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - { - name: 'NodeApiError without itemIndex in C-style for loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeApiError(this.getNode(), error); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeApiError' } }], - }, - { - name: 'NodeOperationError without itemIndex in for...of over items variable', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (const item of items) { - throw new NodeOperationError(this.getNode(), 'error'); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - { - name: 'NodeOperationError without itemIndex in for...of directly over getInputData()', - ...createNodeWithExecute(` - for (const item of this.getInputData()) { - throw new NodeOperationError(this.getNode(), 'error'); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - { - name: 'multiple errors in the same item loop', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - if (someCondition) { - throw new NodeOperationError(this.getNode(), 'error A'); - } - throw new NodeApiError(this.getNode(), error); - } - `), - errors: [ - { messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }, - { messageId: 'missingItemIndex', data: { errorClass: 'NodeApiError' } }, - ], - }, - { - name: 'NodeOperationError without itemIndex when loop variable is named itemIndex', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { - throw new NodeOperationError(this.getNode(), 'error', { description: 'oops' }); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - { - name: 'NodeOperationError with spread-only options (spread does not guarantee itemIndex)', - ...createNodeWithExecute(` - const items = this.getInputData(); - for (let i = 0; i < items.length; i++) { - throw new NodeOperationError(this.getNode(), 'error', { ...opts }); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - { - name: 'NodeOperationError without itemIndex with non-standard items variable name', - ...createNodeWithExecute(` - const inputItems = this.getInputData(); - for (let i = 0; i < inputItems.length; i++) { - throw new NodeOperationError(this.getNode(), 'error'); - } - `), - errors: [{ messageId: 'missingItemIndex', data: { errorClass: 'NodeOperationError' } }], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-operation-error-itemindex.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-operation-error-itemindex.ts deleted file mode 100644 index 8740d1a4d42..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/node-operation-error-itemindex.ts +++ /dev/null @@ -1,223 +0,0 @@ -/** - * Flags `new NodeOperationError(...)` or `new NodeApiError(...)` inside item - * loops in `execute()` methods that omit `{ itemIndex }` from the options - * argument. Without it, n8n cannot associate the error with the specific item - * that caused it, breaking per-item error reporting and `continueOnFail`. - * - * "Item loop" means a `for` or `for...of` that iterates over the result of - * `this.getInputData()` (or a variable initialised from it). Errors outside - * such loops — e.g. in webhook handlers or trigger setup — are not flagged. - */ - -import { AST_NODE_TYPES, type TSESTree } from '@typescript-eslint/utils'; - -import { createRule, findObjectProperty, isFileType, isNodeTypeClass } from '../utils/index.js'; - -const ITEM_ERROR_CLASSES = new Set(['NodeOperationError', 'NodeApiError']); - -/** Returns true when `node` is a bare `this.getInputData(...)` call. */ -function isGetInputDataCall(node: TSESTree.CallExpression): boolean { - return ( - node.callee.type === AST_NODE_TYPES.MemberExpression && - node.callee.object.type === AST_NODE_TYPES.ThisExpression && - node.callee.property.type === AST_NODE_TYPES.Identifier && - node.callee.property.name === 'getInputData' - ); -} - -/** Returns true when `node` is `.length` for any name in `varNames`. */ -function isLengthAccessOnVariable(node: TSESTree.Node, varNames: Set): boolean { - return ( - node.type === AST_NODE_TYPES.MemberExpression && - !node.computed && - node.property.type === AST_NODE_TYPES.Identifier && - node.property.name === 'length' && - node.object.type === AST_NODE_TYPES.Identifier && - varNames.has(node.object.name) - ); -} - -/** - * Returns true when the `for` test condition references `.length`, - * indicating that the loop iterates over an items array. - */ -function isItemForLoop(node: TSESTree.ForStatement, itemVarNames: Set): boolean { - if (!node.test || node.test.type !== AST_NODE_TYPES.BinaryExpression) return false; - - const { left, right } = node.test; - return ( - isLengthAccessOnVariable(left, itemVarNames) || isLengthAccessOnVariable(right, itemVarNames) - ); -} - -/** - * Returns true when the `for...of` iterable is an items variable or a direct - * `this.getInputData()` call. - */ -function isItemForOfLoop(node: TSESTree.ForOfStatement, itemVarNames: Set): boolean { - const { right } = node; - - if (right.type === AST_NODE_TYPES.Identifier && itemVarNames.has(right.name)) { - return true; - } - - return right.type === AST_NODE_TYPES.CallExpression && isGetInputDataCall(right); -} - -/** - * Returns true when the `NodeOperationError` / `NodeApiError` constructor call - * already has an `{ itemIndex }` property in its options argument, or when the - * options argument cannot be statically inspected (variable / spread) — in - * which case we give the benefit of the doubt. - */ -function hasItemIndexOption(node: TSESTree.NewExpression): boolean { - const { arguments: args } = node; - - if (args.length < 3) return false; - - const optionsArg = args[2]; - - // Non-object-literal (bare variable reference) — can't statically check, assume OK. - if (!optionsArg || optionsArg.type !== AST_NODE_TYPES.ObjectExpression) { - return true; - } - - // itemIndex must be an explicit own property of the options object. - // Spread elements (e.g. { ...opts }) are not sufficient — they may not - // include itemIndex and would silently bypass this requirement. - return findObjectProperty(optionsArg, 'itemIndex') !== null; -} - -export const NodeOperationErrorItemIndexRule = createRule({ - name: 'node-operation-error-itemindex', - meta: { - type: 'problem', - docs: { - description: - 'Require { itemIndex } in NodeOperationError / NodeApiError options inside item loops', - }, - messages: { - missingItemIndex: - '`new {{ errorClass }}(...)` inside an item loop must include `{ itemIndex }` as the ' + - 'third argument so n8n can associate the error with the failing item.', - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.node.ts')) { - return {}; - } - - let inNodeTypeClass = false; - let inExecuteMethod = false; - - /** Names of variables initialised from `this.getInputData()` in the current execute() scope. */ - const itemVariableNames = new Set(); - - /** AST nodes for loops that are confirmed item loops. */ - const itemLoopNodes = new Set(); - - /** Number of currently open item loops (supports nested loops). */ - let itemLoopDepth = 0; - - function resetExecuteState() { - inExecuteMethod = false; - itemVariableNames.clear(); - itemLoopNodes.clear(); - itemLoopDepth = 0; - } - - return { - ClassDeclaration(node) { - if (isNodeTypeClass(node)) { - inNodeTypeClass = true; - } - }, - - 'ClassDeclaration:exit'() { - inNodeTypeClass = false; - resetExecuteState(); - }, - - MethodDefinition(node: TSESTree.MethodDefinition) { - if ( - inNodeTypeClass && - node.key.type === AST_NODE_TYPES.Identifier && - node.key.name === 'execute' - ) { - inExecuteMethod = true; - } - }, - - 'MethodDefinition:exit'(node: TSESTree.MethodDefinition) { - if ( - inExecuteMethod && - node.key.type === AST_NODE_TYPES.Identifier && - node.key.name === 'execute' - ) { - resetExecuteState(); - } - }, - - VariableDeclarator(node: TSESTree.VariableDeclarator) { - if (!inExecuteMethod) return; - if (!node.init) return; - if (node.id.type !== AST_NODE_TYPES.Identifier) return; - - if (node.init.type === AST_NODE_TYPES.CallExpression && isGetInputDataCall(node.init)) { - itemVariableNames.add(node.id.name); - } - }, - - ForStatement(node: TSESTree.ForStatement) { - if (!inExecuteMethod) return; - if (isItemForLoop(node, itemVariableNames)) { - itemLoopNodes.add(node); - itemLoopDepth++; - } - }, - - 'ForStatement:exit'(node: TSESTree.ForStatement) { - if (itemLoopNodes.has(node)) { - itemLoopNodes.delete(node); - itemLoopDepth--; - } - }, - - ForOfStatement(node: TSESTree.ForOfStatement) { - if (!inExecuteMethod) return; - if (isItemForOfLoop(node, itemVariableNames)) { - itemLoopNodes.add(node); - itemLoopDepth++; - } - }, - - 'ForOfStatement:exit'(node: TSESTree.ForOfStatement) { - if (itemLoopNodes.has(node)) { - itemLoopNodes.delete(node); - itemLoopDepth--; - } - }, - - NewExpression(node: TSESTree.NewExpression) { - if (itemLoopDepth === 0) return; - - if ( - node.callee.type !== AST_NODE_TYPES.Identifier || - !ITEM_ERROR_CLASSES.has(node.callee.name) - ) { - return; - } - - if (!hasItemIndexOption(node)) { - context.report({ - node, - messageId: 'missingItemIndex', - data: { errorClass: node.callee.name }, - }); - } - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/options-sorted-alphabetically.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/options-sorted-alphabetically.test.ts deleted file mode 100644 index a10cd1abd5c..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/options-sorted-alphabetically.test.ts +++ /dev/null @@ -1,468 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { OptionsSortedAlphabeticallyRule } from './options-sorted-alphabetically.js'; - -const ruleTester = new RuleTester(); - -ruleTester.run('options-sorted-alphabetically', OptionsSortedAlphabeticallyRule, { - valid: [ - { - name: 'resource options already sorted alphabetically', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'Contact', value: 'contact' }, - { name: 'Project', value: 'project' }, - { name: 'User', value: 'user' }, - ], - default: 'contact', - }, - ], - }; - } - `, - }, - { - name: 'operation options already sorted alphabetically', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - options: [ - { name: 'Create', value: 'create' }, - { name: 'Delete', value: 'delete' }, - { name: 'Get', value: 'get' }, - { name: 'Update', value: 'update' }, - ], - default: 'get', - }, - ], - }; - } - `, - }, - { - name: 'non-ASCII names sorted correctly via localeCompare', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'Árbol', value: 'arbol' }, - { name: 'Empresa', value: 'empresa' }, - { name: 'Usuario', value: 'usuario' }, - ], - default: 'arbol', - }, - ], - }; - } - `, - }, - { - name: 'single option is trivially sorted', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - ], - default: 'user', - }, - ], - }; - } - `, - }, - { - name: 'non-options type parameter is ignored', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - }, - ], - }; - } - `, - }, - { - name: 'non-node class is ignored', - filename: '/tmp/TestNode.node.ts', - code: ` - export class NotANode { - description = { - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - { name: 'Contact', value: 'contact' }, - ], - default: 'user', - }, - ], - }; - } - `, - }, - { - name: 'non-.node.ts file is ignored', - filename: '/tmp/TestHelper.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - { name: 'Contact', value: 'contact' }, - ], - default: 'user', - }, - ], - }; - } - `, - }, - { - name: 'description assigned from a variable is skipped', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - const desc: INodeTypeDescription = {} as INodeTypeDescription; - - export class TestNode implements INodeType { - description = desc; - } - `, - }, - { - name: 'node with no properties array is skipped', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - }; - } - `, - }, - { - name: 'spread element in properties array is skipped gracefully', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - const extraProps = [{ displayName: 'Extra', name: 'extra', type: 'string', default: '' }]; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - ...extraProps, - ], - }; - } - `, - }, - { - name: 'options with a spread element are skipped (dynamic options)', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - const extraOption = { name: 'Extra', value: 'extra' }; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - ...([extraOption]), - ], - default: 'user', - }, - ], - }; - } - `, - }, - { - name: 'options with a dynamic name value are skipped', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - const dynamicName = 'Dynamic'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: dynamicName, value: 'dynamic' }, - { name: 'User', value: 'user' }, - ], - default: 'user', - }, - ], - }; - } - `, - }, - ], - invalid: [ - { - name: 'resource options not sorted alphabetically', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - { name: 'Contact', value: 'contact' }, - { name: 'Project', value: 'project' }, - ], - default: 'user', - }, - ], - }; - } - `, - errors: [ - { - messageId: 'optionsNotSorted', - data: { displayName: 'Resource', expectedOrder: 'Contact, Project, User' }, - }, - ], - }, - { - name: 'operation options not sorted alphabetically', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - options: [ - { name: 'Update', value: 'update' }, - { name: 'Create', value: 'create' }, - { name: 'Delete', value: 'delete' }, - { name: 'Get', value: 'get' }, - ], - default: 'get', - }, - ], - }; - } - `, - errors: [ - { - messageId: 'optionsNotSorted', - data: { displayName: 'Operation', expectedOrder: 'Create, Delete, Get, Update' }, - }, - ], - }, - { - name: 'other options-type parameter not sorted alphabetically', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Model', - name: 'model', - type: 'options', - options: [ - { name: 'GPT-4', value: 'gpt-4' }, - { name: 'Claude', value: 'claude' }, - { name: 'Gemini', value: 'gemini' }, - ], - default: 'gpt-4', - }, - ], - }; - } - `, - errors: [ - { - messageId: 'optionsNotSorted', - data: { displayName: 'Model', expectedOrder: 'Claude, Gemini, GPT-4' }, - }, - ], - }, - { - name: 'options-type parameter without displayName falls back to "unknown"', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - { name: 'Contact', value: 'contact' }, - ], - default: 'user', - }, - ], - }; - } - `, - errors: [ - { - messageId: 'optionsNotSorted', - data: { displayName: 'unknown', expectedOrder: 'Contact, User' }, - }, - ], - }, - { - name: 'multiple unsorted parameters each report an error', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [ - { - displayName: 'Resource', - name: 'resource', - type: 'options', - options: [ - { name: 'User', value: 'user' }, - { name: 'Contact', value: 'contact' }, - ], - default: 'user', - }, - { - displayName: 'Operation', - name: 'operation', - type: 'options', - options: [ - { name: 'Update', value: 'update' }, - { name: 'Create', value: 'create' }, - ], - default: 'create', - }, - ], - }; - } - `, - errors: [ - { - messageId: 'optionsNotSorted', - data: { displayName: 'Resource', expectedOrder: 'Contact, User' }, - }, - { - messageId: 'optionsNotSorted', - data: { displayName: 'Operation', expectedOrder: 'Create, Update' }, - }, - ], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/options-sorted-alphabetically.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/options-sorted-alphabetically.ts deleted file mode 100644 index 8755a672b3c..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/options-sorted-alphabetically.ts +++ /dev/null @@ -1,129 +0,0 @@ -import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; - -import { - isNodeTypeClass, - findClassProperty, - findObjectProperty, - getStringLiteralValue, - isFileType, - createRule, -} from '../utils/index.js'; - -export const OptionsSortedAlphabeticallyRule = createRule({ - name: 'options-sorted-alphabetically', - meta: { - type: 'suggestion', - docs: { - description: 'Enforce alphabetical ordering of options arrays in n8n node properties', - }, - messages: { - optionsNotSorted: - 'Options in "{{ displayName }}" are not sorted alphabetically. Expected order: {{ expectedOrder }}.', - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.node.ts')) { - return {}; - } - - const analyzeNodeDescription = (descriptionValue: TSESTree.Expression | null): void => { - if (!descriptionValue || descriptionValue.type !== AST_NODE_TYPES.ObjectExpression) { - return; - } - - const propertiesProperty = findObjectProperty(descriptionValue, 'properties'); - if ( - !propertiesProperty?.value || - propertiesProperty.value.type !== AST_NODE_TYPES.ArrayExpression - ) { - return; - } - - for (const property of propertiesProperty.value.elements) { - if (!property || property.type !== AST_NODE_TYPES.ObjectExpression) { - continue; - } - - const typeProperty = findObjectProperty(property, 'type'); - const type = typeProperty ? getStringLiteralValue(typeProperty.value) : null; - - if (type !== 'options') { - continue; - } - - const optionsProperty = findObjectProperty(property, 'options'); - if ( - !optionsProperty?.value || - optionsProperty.value.type !== AST_NODE_TYPES.ArrayExpression - ) { - continue; - } - - const optionsArray = optionsProperty.value; - - // Extract all option names; skip if any name is non-literal (dynamic options) - const names: string[] = []; - let hasDynamicName = false; - - for (const option of optionsArray.elements) { - if (!option || option.type !== AST_NODE_TYPES.ObjectExpression) { - hasDynamicName = true; - break; - } - const nameProperty = findObjectProperty(option, 'name'); - const name = nameProperty ? getStringLiteralValue(nameProperty.value) : null; - if (name === null) { - hasDynamicName = true; - break; - } - names.push(name); - } - - if (hasDynamicName || names.length <= 1) { - continue; - } - - const sorted = [...names].sort((a, b) => - a.localeCompare(b, undefined, { sensitivity: 'base' }), - ); - - const isSorted = names.every((name, i) => name === sorted[i]); - if (isSorted) { - continue; - } - - const displayNameProperty = findObjectProperty(property, 'displayName'); - const displayName = - (displayNameProperty ? getStringLiteralValue(displayNameProperty.value) : null) ?? - 'unknown'; - - context.report({ - node: optionsArray, - messageId: 'optionsNotSorted', - data: { - displayName, - expectedOrder: sorted.join(', '), - }, - }); - } - }; - - return { - ClassDeclaration(node) { - if (!isNodeTypeClass(node)) { - return; - } - - const descriptionProperty = findClassProperty(node, 'description'); - if (!descriptionProperty) { - return; - } - - analyzeNodeDescription(descriptionProperty.value); - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-community-node-keyword.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-community-node-keyword.test.ts deleted file mode 100644 index e1ab0f28c5d..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-community-node-keyword.test.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { RequireCommunityNodeKeywordRule } from './require-community-node-keyword.js'; - -const ruleTester = new RuleTester(); - -ruleTester.run('require-community-node-keyword', RequireCommunityNodeKeywordRule, { - valid: [ - { - name: 'keywords array contains required keyword', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "keywords": ["n8n-community-node-package"] }', - }, - { - name: 'keywords array contains required keyword among others', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "keywords": ["n8n", "automation", "n8n-community-node-package", "workflow"] }', - }, - { - name: 'non-package.json file is ignored', - filename: 'some-config.json', - code: '{ "name": "n8n-nodes-example" }', - }, - { - name: 'nested objects are not checked', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "keywords": ["n8n-community-node-package"], "config": { "nested": "value" } }', - }, - { - name: 'objects inside arrays (e.g. contributors) are not flagged', - filename: 'package.json', - code: `{ - "name": "n8n-nodes-example", - "keywords": ["n8n-community-node-package"], - "contributors": [ - { "name": "Alice", "email": "alice@example.com" }, - { "name": "Bob", "email": "bob@example.com" } - ] - }`, - }, - ], - invalid: [ - { - name: 'missing keywords array entirely', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "version": "1.0.0" }', - output: - '{ "name": "n8n-nodes-example", "version": "1.0.0", "keywords": ["n8n-community-node-package"] }', - errors: [{ messageId: 'missingKeywordsArray' }], - }, - { - name: 'empty keywords array', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "keywords": [] }', - output: '{ "name": "n8n-nodes-example", "keywords": ["n8n-community-node-package"] }', - errors: [{ messageId: 'missingKeyword' }], - }, - { - name: 'keywords array without the required keyword', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "keywords": ["n8n", "automation"] }', - output: - '{ "name": "n8n-nodes-example", "keywords": ["n8n", "automation", "n8n-community-node-package"] }', - errors: [{ messageId: 'missingKeyword' }], - }, - { - name: 'keywords array with similar but incorrect keyword', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "keywords": ["n8n-community-node"] }', - output: - '{ "name": "n8n-nodes-example", "keywords": ["n8n-community-node", "n8n-community-node-package"] }', - errors: [{ messageId: 'missingKeyword' }], - }, - { - name: 'empty package.json object', - filename: 'package.json', - code: '{}', - output: '{ "keywords": ["n8n-community-node-package"] }', - errors: [{ messageId: 'missingKeywordsArray' }], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-community-node-keyword.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-community-node-keyword.ts deleted file mode 100644 index 5076469b799..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-community-node-keyword.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; - -import { createRule, findJsonProperty } from '../utils/index.js'; - -const REQUIRED_KEYWORD = 'n8n-community-node-package'; - -export const RequireCommunityNodeKeywordRule = createRule({ - name: 'require-community-node-keyword', - meta: { - type: 'problem', - docs: { - description: - 'Require the "n8n-community-node-package" keyword in community node package.json', - }, - fixable: 'code', - messages: { - missingKeyword: `The "keywords" array must include "${REQUIRED_KEYWORD}". This keyword is required for n8n to discover community node packages.`, - missingKeywordsArray: `The package.json must have a "keywords" array containing "${REQUIRED_KEYWORD}".`, - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!context.filename.endsWith('package.json')) { - return {}; - } - - return { - ObjectExpression(node: TSESTree.ObjectExpression) { - if (node.parent?.type !== AST_NODE_TYPES.ExpressionStatement) { - return; - } - - const keywordsProp = findJsonProperty(node, 'keywords'); - - if (!keywordsProp) { - context.report({ - node, - messageId: 'missingKeywordsArray', - fix(fixer) { - const lastProp = node.properties[node.properties.length - 1]; - if (!lastProp) { - return fixer.replaceText(node, `{ "keywords": ["${REQUIRED_KEYWORD}"] }`); - } - return fixer.insertTextAfter(lastProp, `, "keywords": ["${REQUIRED_KEYWORD}"]`); - }, - }); - return; - } - - if (keywordsProp.value.type !== AST_NODE_TYPES.ArrayExpression) { - return; - } - - const keywordsArray = keywordsProp.value; - const hasRequiredKeyword = keywordsArray.elements.some( - (element) => - element?.type === AST_NODE_TYPES.Literal && element.value === REQUIRED_KEYWORD, - ); - - if (!hasRequiredKeyword) { - context.report({ - node: keywordsProp, - messageId: 'missingKeyword', - fix(fixer) { - const lastElement = keywordsArray.elements[keywordsArray.elements.length - 1]; - if (!lastElement) { - return fixer.replaceText(keywordsArray, `["${REQUIRED_KEYWORD}"]`); - } - return fixer.insertTextAfter(lastElement, `, "${REQUIRED_KEYWORD}"`); - }, - }); - } - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-continue-on-fail.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-continue-on-fail.test.ts deleted file mode 100644 index 75ecdb54722..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-continue-on-fail.test.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { RequireContinueOnFailRule } from './require-continue-on-fail.js'; - -const ruleTester = new RuleTester(); - -function createNodeWithExecute(executeBody: string): string { - return ` -import type { INodeType, INodeTypeDescription, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: ['main'], - outputs: ['main'], - properties: [], - }; - - async execute(this: IExecuteFunctions): Promise { - ${executeBody} - } -}`; -} - -ruleTester.run('require-continue-on-fail', RequireContinueOnFailRule, { - valid: [ - { - name: 'node with continueOnFail in catch block', - code: createNodeWithExecute(` - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - for (let i = 0; i < items.length; i++) { - try { - returnData.push({ json: { result: true } }); - } catch (error) { - if (this.continueOnFail()) { - returnData.push({ json: { error: error.message } }); - continue; - } - throw error; - } - } - return [returnData]; - `), - }, - { - name: 'non-node class with execute method (should be ignored)', - code: ` -export class RegularClass { - async execute() { - return [[]]; - } -}`, - }, - { - name: 'node class without execute method (should be ignored)', - code: ` -import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - -export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: ['main'], - outputs: ['main'], - properties: [], - }; -}`, - }, - { - name: 'node extending Node base class with continueOnFail', - code: ` -import { Node } from 'n8n-workflow'; - -export class TestNode extends Node { - async execute() { - try { - // do work - } catch (error) { - if (this.continueOnFail()) { - return [[]]; - } - throw error; - } - return [[]]; - } -}`, - }, - ], - invalid: [ - { - name: 'node with execute but no continueOnFail', - code: createNodeWithExecute(` - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - for (let i = 0; i < items.length; i++) { - returnData.push({ json: { result: true } }); - } - return [returnData]; - `), - errors: [{ messageId: 'missingContinueOnFail' }], - }, - { - name: 'node with try/catch but no continueOnFail check', - code: createNodeWithExecute(` - const items = this.getInputData(); - const returnData: INodeExecutionData[] = []; - for (let i = 0; i < items.length; i++) { - try { - returnData.push({ json: { result: true } }); - } catch (error) { - throw error; - } - } - return [returnData]; - `), - errors: [{ messageId: 'missingContinueOnFail' }], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-continue-on-fail.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-continue-on-fail.ts deleted file mode 100644 index 5030369d6dc..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-continue-on-fail.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { AST_NODE_TYPES, type TSESTree } from '@typescript-eslint/utils'; - -import { isNodeTypeClass } from '../utils/index.js'; -import { createRule } from '../utils/rule-creator.js'; - -/** Keys that are not child AST nodes (back-references, metadata). */ -const NON_CHILD_KEYS = new Set(['parent', 'loc', 'range', 'start', 'end', 'tokens', 'comments']); - -/** - * Recursively checks whether any descendant of the given AST node is a - * `this.continueOnFail()` call expression. - */ -function containsContinueOnFailCall(node: TSESTree.Node): boolean { - if ( - node.type === AST_NODE_TYPES.CallExpression && - node.callee.type === AST_NODE_TYPES.MemberExpression && - node.callee.object.type === AST_NODE_TYPES.ThisExpression && - node.callee.property.type === AST_NODE_TYPES.Identifier && - node.callee.property.name === 'continueOnFail' - ) { - return true; - } - - for (const key of Object.keys(node)) { - if (NON_CHILD_KEYS.has(key)) continue; - - const value = (node as unknown as Record)[key]; - - if (Array.isArray(value)) { - for (const child of value) { - if (child && typeof child === 'object' && 'type' in child) { - if (containsContinueOnFailCall(child as TSESTree.Node)) { - return true; - } - } - } - } else if (value && typeof value === 'object' && 'type' in value) { - if (containsContinueOnFailCall(value as TSESTree.Node)) { - return true; - } - } - } - - return false; -} - -export const RequireContinueOnFailRule = createRule({ - name: 'require-continue-on-fail', - meta: { - type: 'problem', - docs: { - description: 'Require continueOnFail() handling in execute() methods of node classes', - }, - messages: { - missingContinueOnFail: - 'execute() method must handle this.continueOnFail() for proper error handling. ' + - 'Wrap item processing in a try/catch and check this.continueOnFail() in the catch block.', - }, - schema: [], - }, - defaultOptions: [], - create(context) { - return { - ClassDeclaration(node) { - if (!isNodeTypeClass(node)) { - return; - } - - for (const member of node.body.body) { - if ( - member.type !== AST_NODE_TYPES.MethodDefinition || - member.key.type !== AST_NODE_TYPES.Identifier || - member.key.name !== 'execute' - ) { - continue; - } - - if (member.value.body && !containsContinueOnFailCall(member.value.body)) { - context.report({ - node: member.key, - messageId: 'missingContinueOnFail', - }); - } - } - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-mit-license.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-mit-license.test.ts deleted file mode 100644 index b6a5b46e578..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-mit-license.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { RequireMitLicenseRule } from './require-mit-license.js'; - -const ruleTester = new RuleTester(); - -ruleTester.run('require-mit-license', RequireMitLicenseRule, { - valid: [ - { - name: 'license is MIT', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "license": "MIT" }', - }, - { - name: 'non-package.json file is ignored', - filename: 'some-config.json', - code: '{ "name": "n8n-nodes-example", "license": "Apache-2.0" }', - }, - { - name: 'nested objects are not checked', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "license": "MIT", "config": { "license": "Apache-2.0" } }', - }, - { - name: 'objects inside arrays are not flagged', - filename: 'package.json', - code: `{ - "name": "n8n-nodes-example", - "license": "MIT", - "contributors": [ - { "name": "Alice" }, - { "name": "Bob" } - ] - }`, - }, - ], - invalid: [ - { - name: 'missing license field', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "version": "1.0.0" }', - output: '{ "name": "n8n-nodes-example", "version": "1.0.0", "license": "MIT" }', - errors: [{ messageId: 'missingLicense' }], - }, - { - name: 'empty package.json object', - filename: 'package.json', - code: '{}', - output: '{ "license": "MIT" }', - errors: [{ messageId: 'missingLicense' }], - }, - { - name: 'wrong license value', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "license": "Apache-2.0" }', - output: '{ "name": "n8n-nodes-example", "license": "MIT" }', - errors: [{ messageId: 'wrongLicense' }], - }, - { - name: 'case-mismatched license value', - filename: 'package.json', - code: '{ "name": "n8n-nodes-example", "license": "mit" }', - output: '{ "name": "n8n-nodes-example", "license": "MIT" }', - errors: [{ messageId: 'wrongLicense' }], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-mit-license.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-mit-license.ts deleted file mode 100644 index 36105180134..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-mit-license.ts +++ /dev/null @@ -1,65 +0,0 @@ -import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; - -import { createRule, findJsonProperty, getStringLiteralValue } from '../utils/index.js'; - -const REQUIRED_LICENSE = 'MIT'; - -export const RequireMitLicenseRule = createRule({ - name: 'require-mit-license', - meta: { - type: 'problem', - docs: { - description: 'Require the "license" field in community node package.json to be "MIT"', - }, - fixable: 'code', - messages: { - missingLicense: `The package.json must have a "license" field set to "${REQUIRED_LICENSE}".`, - wrongLicense: `The "license" field must be "${REQUIRED_LICENSE}".`, - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!context.filename.endsWith('package.json')) { - return {}; - } - - return { - ObjectExpression(node: TSESTree.ObjectExpression) { - if (node.parent?.type !== AST_NODE_TYPES.ExpressionStatement) { - return; - } - - const licenseProp = findJsonProperty(node, 'license'); - - if (!licenseProp) { - context.report({ - node, - messageId: 'missingLicense', - fix(fixer) { - const lastProp = node.properties[node.properties.length - 1]; - if (!lastProp) { - return fixer.replaceText(node, `{ "license": "${REQUIRED_LICENSE}" }`); - } - return fixer.insertTextAfter(lastProp, `, "license": "${REQUIRED_LICENSE}"`); - }, - }); - return; - } - - if (getStringLiteralValue(licenseProp.value) === REQUIRED_LICENSE) { - return; - } - - context.report({ - node: licenseProp.value, - messageId: 'wrongLicense', - fix(fixer) { - return fixer.replaceText(licenseProp.value, `"${REQUIRED_LICENSE}"`); - }, - }); - }, - }; - }, -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-param-default.test.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-param-default.test.ts deleted file mode 100644 index 3a57b01460a..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-param-default.test.ts +++ /dev/null @@ -1,227 +0,0 @@ -import { RuleTester } from '@typescript-eslint/rule-tester'; - -import { RequireParamDefaultRule } from './require-param-default.js'; - -const ruleTester = new RuleTester(); - -function createNodeCode(properties: string): string { - return ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - group: ['input'], - version: 1, - description: 'A test node', - defaults: { name: 'Test Node' }, - inputs: [], - outputs: [], - properties: [ - ${properties} - ], - }; - } - `; -} - -ruleTester.run('require-param-default', RequireParamDefaultRule, { - valid: [ - { - name: 'class that does not implement INodeType', - filename: '/tmp/TestNode.node.ts', - code: ` - export class NotANode { - description = { - properties: [{ displayName: 'Field', name: 'field', type: 'string' }], - }; - } - `, - }, - { - name: 'param-shaped object outside description (e.g. in a method) is ignored', - filename: '/tmp/TestNode.node.ts', - code: ` - import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; - - export class TestNode implements INodeType { - description: INodeTypeDescription = { - displayName: 'Test Node', - name: 'testNode', - properties: [], - }; - - methods = { - loadOptions: { - async getThings() { - const config = { displayName: 'X', name: 'x', type: 'string' }; - return [config]; - }, - }, - }; - } - `, - }, - { - name: 'non .node.ts file is ignored', - filename: '/tmp/helper.ts', - code: ` - export class TestNode { - description = { - properties: [{ displayName: 'Field', name: 'field', type: 'string' }], - }; - } - `, - }, - { - name: 'string parameter with default', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Field', - name: 'field', - type: 'string', - default: '', - }, - `), - }, - { - name: 'options parameter with default', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Operation', - name: 'operation', - type: 'options', - options: [{ name: 'Create', value: 'create' }], - default: 'create', - }, - `), - }, - { - name: 'notice parameter with empty default', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Some notice', - name: 'notice', - type: 'notice', - default: '', - }, - `), - }, - { - name: 'options-array entries (name/value, no displayName) are not parameters', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Operation', - name: 'operation', - type: 'options', - options: [{ name: 'Create', value: 'create', type: 'whatever' }], - default: 'create', - }, - `), - }, - { - name: 'object with name and type but no displayName is not a parameter', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Routing', - name: 'routing', - type: 'string', - default: '', - routing: { request: { method: 'GET', name: 'x', type: 'y' } }, - }, - `), - }, - { - name: 'nested collection options all have defaults', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - default: {}, - options: [ - { - displayName: 'Limit', - name: 'limit', - type: 'number', - default: 50, - }, - ], - }, - `), - }, - ], - invalid: [ - { - name: 'string parameter missing default', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Field', - name: 'field', - type: 'string', - }, - `), - errors: [{ messageId: 'missingDefault', data: { name: 'field' } }], - }, - { - name: 'notice parameter missing default', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Some notice', - name: 'notice', - type: 'notice', - }, - `), - errors: [{ messageId: 'missingDefault', data: { name: 'notice' } }], - }, - { - name: 'nested collection option missing default', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - default: {}, - options: [ - { - displayName: 'Limit', - name: 'limit', - type: 'number', - }, - ], - }, - `), - errors: [{ messageId: 'missingDefault', data: { name: 'limit' } }], - }, - { - name: 'multiple parameters missing defaults', - filename: '/tmp/TestNode.node.ts', - code: createNodeCode(` - { - displayName: 'First', - name: 'first', - type: 'string', - }, - { - displayName: 'Second', - name: 'second', - type: 'boolean', - }, - `), - errors: [ - { messageId: 'missingDefault', data: { name: 'first' } }, - { messageId: 'missingDefault', data: { name: 'second' } }, - ], - }, - ], -}); diff --git a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-param-default.ts b/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-param-default.ts deleted file mode 100644 index c537f63c227..00000000000 --- a/packages/@n8n/eslint-plugin-community-nodes/src/rules/require-param-default.ts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Requires every node parameter to declare a `default` property. - * - * A parameter is detected structurally: an object literal inside a node's - * `description` with `displayName`, `name`, and `type` all set to string - * literals — the shape every `INodeProperties` entry has. This avoids - * hardcoding the `NodePropertyTypes` union (which would silently go stale as - * new types are added) and naturally excludes `options`-array entries, which - * carry `name`/`value` but no `displayName`/`type`. - * - * Without a `default`, n8n cannot reliably initialise the parameter's value, - * which leads to inconsistent runtime behaviour in the editor and on execution. - */ - -import { simpleTraverse } from '@typescript-eslint/typescript-estree'; -import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; - -import { - createRule, - findClassProperty, - findObjectProperty, - getStringLiteralValue, - isFileType, - isNodeTypeClass, -} from '../utils/index.js'; - -/** Property keys an `INodeProperties` parameter always carries as string literals. */ -const REQUIRED_PARAM_KEYS = ['displayName', 'name', 'type'] as const; - -/** Returns true when the object literal has the shape of a node parameter. */ -function isNodeParameter(node: TSESTree.ObjectExpression): boolean { - return REQUIRED_PARAM_KEYS.every((key) => { - const property = findObjectProperty(node, key); - return property !== null && getStringLiteralValue(property.value) !== null; - }); -} - -export const RequireParamDefaultRule = createRule({ - name: 'require-param-default', - meta: { - type: 'problem', - docs: { - description: 'Require every node parameter to declare a default value.', - }, - messages: { - missingDefault: - "Node parameter '{{ name }}' is missing a `default` value. Add a `default` property so the parameter initialises consistently.", - }, - schema: [], - }, - defaultOptions: [], - create(context) { - if (!isFileType(context.filename, '.node.ts')) { - return {}; - } - - const reportIfMissingDefault = (node: TSESTree.ObjectExpression): void => { - if (!isNodeParameter(node) || findObjectProperty(node, 'default') !== null) { - return; - } - const nameProperty = findObjectProperty(node, 'name'); - context.report({ - node, - messageId: 'missingDefault', - data: { name: getStringLiteralValue(nameProperty?.value ?? null) ?? '' }, - }); - }; - - return { - // Scope to an INodeType class's `description`, then walk only that - // subtree, so helper classes and object literals elsewhere in the file - // (e.g. in method bodies) that share the parameter shape are ignored. - ClassDeclaration(node) { - if (!isNodeTypeClass(node)) return; - const description = findClassProperty(node, 'description'); - if (description?.value?.type !== AST_NODE_TYPES.ObjectExpression) return; - - simpleTraverse(description.value, { - enter(child) { - if (child.type === AST_NODE_TYPES.ObjectExpression) { - reportIfMissingDefault(child); - } - }, - }); - }, - }; - }, -}); diff --git a/packages/@n8n/instance-ai/docs/tools.md b/packages/@n8n/instance-ai/docs/tools.md index dfb2c8d5874..fa951c7f75b 100644 --- a/packages/@n8n/instance-ai/docs/tools.md +++ b/packages/@n8n/instance-ai/docs/tools.md @@ -14,7 +14,8 @@ them. Some are conditional on context availability. Persist a dependency-aware task plan for detached multi-step execution. For initial plan-worthy work, the orchestrator loads the `planning` skill, performs -discovery with normal domain tools, then calls `create-tasks` with +discovery with normal domain tools, loads `create-tasks` via `load_tool`, then +calls `create-tasks` with `planningContext.source: "planning-skill"`. For `` turns, use `planningContext.source: "replan"` when multiple dependent tasks still need @@ -723,6 +724,8 @@ only the domain tools wired into that agent. | Tool Category | Orchestrator | Specialized background agents | |---------------|:---:|:---:| | Orchestration tools (`create-tasks`, etc.) | ✅ | ❌ | +| Docs search (`n8n-docs`) | ✅ (search/load) | ❌ | +| Eval tools (`evals`) | ✅ (search/load) | ❌ | | Workflow tools | ✅ | ✅ (eval-setup) | | Execution tools | ✅ | ❌ | | Credential tools | ✅ | ✅ (eval-setup — setup only) | diff --git a/packages/@n8n/instance-ai/evaluations/README.md b/packages/@n8n/instance-ai/evaluations/README.md index 6b18aa27b22..1cc4367ebfd 100644 --- a/packages/@n8n/instance-ai/evaluations/README.md +++ b/packages/@n8n/instance-ai/evaluations/README.md @@ -206,7 +206,7 @@ Every run produces: After every successful build, the eval grades the workflow JSON against the binary-check rubric in `binaryChecks/checks/`. Each named check is yes/no with a structured N/A for "no subject to evaluate in this workflow" (e.g. an agent-only check on a workflow with no agent). -The 28 checks are grouped into 7 WHAT-side rubric dimensions (the 8th, `execution_outcome`, is served by the existing execution verifier): +The 28 checks are grouped into 8 WHAT-side rubric dimensions (the 9th, `execution_outcome`, is served by the existing execution verifier): | Dimension | Checks | |---|---| @@ -214,8 +214,9 @@ The 28 checks are grouped into 7 WHAT-side rubric dimensions (the 8th, `executio | `connection_topology` | 4 — graph reachability, branch wiring, multi-item handling | | `parameter_correctness` | 8 — node config, expressions, field references | | `intent_match` | 1 — workflow fulfills the user's request | +| `communication` | 1 — agent narration honestly describes the changes made | | `ai_nodes` | 6 — agent / memory / vector-store / tool wiring | -| `nodes_craftsmanship` | 3 — naming, no-code preference, response honesty | +| `nodes_craftsmanship` | 2 — naming, no-code preference | | `security` | 2 — hardcoded credentials, inbound auth defaults | The signal surfaces in: @@ -228,7 +229,7 @@ Operational details: - Checks run **once per built workflow**, not per scenario — every scenario row in LangSmith carries the same outcomes for its build. - Failures don't flip `scenario_pass`; they're independent signals per the rubric design. -- LLM checks (`fulfills_user_request`, `valid_data_flow`, `correct_node_operations`, `handles_multiple_items`, `descriptive_node_names`, `response_matches_workflow_changes`) reuse the same Sonnet model as the verifier — auto-skipped (N/A) when no Anthropic key is set. +- LLM checks (`fulfills_user_request`, `valid_data_flow`, `correct_node_operations`, `handles_multiple_items`, `descriptive_node_names`, `response_describes_changes_accurately`) reuse the same Sonnet model as the verifier — auto-skipped (N/A) when no Anthropic key is set. ### Build expectations (per test case) diff --git a/packages/@n8n/instance-ai/evaluations/__tests__/conversation-text.test.ts b/packages/@n8n/instance-ai/evaluations/__tests__/conversation-text.test.ts index d75c2b14294..90efbb46737 100644 --- a/packages/@n8n/instance-ai/evaluations/__tests__/conversation-text.test.ts +++ b/packages/@n8n/instance-ai/evaluations/__tests__/conversation-text.test.ts @@ -1,5 +1,6 @@ import type { ConversationTurn, TranscriptTurn } from '../types'; import { + agentTurnsAsText, conversationUserTurnsAsText, lastAgentText, perTurnToolCallCounts, @@ -30,6 +31,35 @@ describe('userTurnsAsText', () => { }); }); +describe('agentTurnsAsText', () => { + it('returns empty string on empty transcript', () => { + expect(agentTurnsAsText([])).toBe(''); + }); + + it('returns the lone narration as plain text when only one turn narrates', () => { + const transcript: TranscriptTurn[] = [ + { userMessage: 'build a webhook', steps: [{ kind: 'agent-text', text: 'Added a webhook.' }] }, + ]; + expect(agentTurnsAsText(transcript)).toBe('Added a webhook.'); + }); + + it('numbers narration by conversation turn, dropping turns with no agent text', () => { + const transcript: TranscriptTurn[] = [ + { userMessage: 'build it', steps: [{ kind: 'agent-text', text: 'Added a webhook.' }] }, + { + userMessage: 'tweak', + steps: [{ kind: 'tool-call', toolName: 'build-workflow', args: {} }], + }, + { userMessage: 'add a filter', steps: [{ kind: 'agent-text', text: 'Added a filter.' }] }, + ]; + // Turn 2 has no narration, so it's skipped — but turn 3 keeps its turn number + // so each claim still aligns with the user turn that prompted it. + expect(agentTurnsAsText(transcript)).toBe( + 'Turn 1: Added a webhook.\n\nTurn 3: Added a filter.', + ); + }); +}); + describe('conversationUserTurnsAsText', () => { it('returns empty string on empty conversation', () => { expect(conversationUserTurnsAsText([])).toBe(''); diff --git a/packages/@n8n/instance-ai/evaluations/__tests__/effective-timeout.test.ts b/packages/@n8n/instance-ai/evaluations/__tests__/effective-timeout.test.ts new file mode 100644 index 00000000000..faa96862223 --- /dev/null +++ b/packages/@n8n/instance-ai/evaluations/__tests__/effective-timeout.test.ts @@ -0,0 +1,16 @@ +import { effectiveTimeoutMs } from '../harness/runner'; + +describe('effectiveTimeoutMs', () => { + it('gives complex cases 1.5x the base budget', () => { + expect(effectiveTimeoutMs('complex', 900_000)).toBe(1_350_000); + }); + + it('keeps the base budget for simple and medium cases', () => { + expect(effectiveTimeoutMs('simple', 900_000)).toBe(900_000); + expect(effectiveTimeoutMs('medium', 900_000)).toBe(900_000); + }); + + it('keeps the base budget when complexity is missing', () => { + expect(effectiveTimeoutMs(undefined, 900_000)).toBe(900_000); + }); +}); diff --git a/packages/@n8n/instance-ai/evaluations/__tests__/langtracer-push.test.ts b/packages/@n8n/instance-ai/evaluations/__tests__/langtracer-push.test.ts index d77e4597073..22acf1d5a0a 100644 --- a/packages/@n8n/instance-ai/evaluations/__tests__/langtracer-push.test.ts +++ b/packages/@n8n/instance-ai/evaluations/__tests__/langtracer-push.test.ts @@ -1,5 +1,6 @@ import type { WorkflowTestCaseWithFile } from '../data/workflows'; -import { planPush } from '../langtracer/push'; +import { planPush, toUpdatePatch } from '../langtracer/push'; +import type { LangTracerCreateCaseBody } from '../langtracer/to-exported'; function item(fileSlug: string, overrides: Record = {}): WorkflowTestCaseWithFile { return { @@ -61,7 +62,7 @@ describe('planPush', () => { expect(plan.toCreate).toEqual([]); }); - it('treats a scenario-only difference as unchanged so re-runs converge', () => { + it('treats a scenario-only difference as an update (PATCH reconciles scenarios by name)', () => { const plan = planPush( [ item('c', { @@ -79,6 +80,32 @@ describe('planPush', () => { }, { c: 5 }, ); + expect(plan.toUpdate).toHaveLength(1); + expect(plan.toUpdate[0].id).toBe(5); + expect(plan.unchanged).toEqual([]); + }); + + it('treats removed scenarios as an update (disk case went process/outcome-only)', () => { + const plan = planPush( + [item('c')], + { + 'c.json': body({ + executionScenarios: [{ name: 'a', dataSetup: 's', successCriteria: 'ok' }], + }), + }, + { c: 5 }, + ); + expect(plan.toUpdate).toHaveLength(1); + expect(plan.unchanged).toEqual([]); + }); + + it('treats identical scenarios as unchanged so re-pushes converge', () => { + const scenarios = [{ name: 'a', description: 'd', dataSetup: 's', successCriteria: 'ok' }]; + const plan = planPush( + [item('c', { executionScenarios: scenarios })], + { 'c.json': body({ executionScenarios: scenarios }) }, + { c: 5 }, + ); expect(plan.unchanged.map((c) => c.fileSlug)).toEqual(['c']); expect(plan.toUpdate).toEqual([]); }); @@ -135,3 +162,38 @@ describe('planPush', () => { expect(plan.toUpdate).toEqual([]); }); }); + +describe('toUpdatePatch', () => { + function createBody(overrides: Partial = {}): LangTracerCreateCaseBody { + return { + name: 'c', + setKind: 'regression', + synthetic: true, + suiteId: 7, + evalComplexity: 'simple', + evalTags: ['build'], + ...overrides, + }; + } + + it('drops the create-only fields', () => { + const patch = toUpdatePatch(createBody()); + expect(patch).not.toHaveProperty('suiteId'); + expect(patch).not.toHaveProperty('synthetic'); + expect(patch.name).toBe('c'); + }); + + it('sends an explicit empty scenarios list when the case has none, so a PATCH deletes stale rows', () => { + // A case converted to process/outcome-only has no scenarios key; a partial + // PATCH without it would leave the server's old scenario rows in place and + // every later push would re-detect the same drift. + const patch = toUpdatePatch(createBody()); + expect(patch.scenarios).toEqual([]); + }); + + it('keeps the mapped scenarios when the case has them', () => { + const scenarios = [{ name: 'a', successCriteria: 'ok' }]; + const patch = toUpdatePatch(createBody({ scenarios })); + expect(patch.scenarios).toEqual(scenarios); + }); +}); diff --git a/packages/@n8n/instance-ai/evaluations/__tests__/verification-artifact.test.ts b/packages/@n8n/instance-ai/evaluations/__tests__/verification-artifact.test.ts index 1aa289a0c1a..f2d5b70e8f7 100644 --- a/packages/@n8n/instance-ai/evaluations/__tests__/verification-artifact.test.ts +++ b/packages/@n8n/instance-ai/evaluations/__tests__/verification-artifact.test.ts @@ -216,6 +216,120 @@ describe('buildVerificationArtifact', () => { expect(logger.info).not.toHaveBeenCalled(); }); + it('routes to the entry point when the build saved a sub-workflow first', () => { + // Sub-workflow tool-result arrives first → build.workflowId is the sub. + // Executing it directly starts once with an empty payload; the caller's + // entry point is the trigger-bearing sibling. + const logger = { info: vi.fn() }; + const sub: WorkflowResponse = { + id: 'process-order-sub', + name: 'Process Order', + active: false, + versionId: 'v1', + nodes: [ + { + id: 'a', + name: 'Execute Workflow Trigger', + type: 'n8n-nodes-base.executeWorkflowTrigger', + typeVersion: 1, + position: [0, 0], + parameters: {}, + }, + ], + connections: {}, + }; + const main: WorkflowResponse = { + id: 'orders-main', + name: 'Order Intake', + active: false, + versionId: 'v1', + nodes: [ + { + id: 'b', + name: 'Webhook', + type: 'n8n-nodes-base.webhook', + typeVersion: 1, + position: [0, 0], + parameters: {}, + }, + { + id: 'c', + name: 'Run Process Order', + type: 'n8n-nodes-base.executeWorkflow', + typeVersion: 1, + position: [0, 0], + parameters: { workflowId: { value: 'process-order-sub' } }, + }, + ], + connections: {}, + }; + + const selected = selectScenarioWorkflowId( + { ...scenario, name: 'three-orders-three-runs', dataSetup: 'Process Order runs three times' }, + 'process-order-sub', + [sub, main], + logger as never, + ); + + expect(selected).toBe('orders-main'); + expect(logger.info).toHaveBeenCalledWith(expect.stringContaining('orders-main')); + }); + + it('demotes executeWorkflow-referenced candidates even when scenario tokens favor the sub', () => { + const logger = { info: vi.fn() }; + const sub: WorkflowResponse = { + id: 'sub-with-own-trigger', + name: 'Process Order', + active: false, + versionId: 'v1', + nodes: [ + { + id: 'a', + name: 'Process Order Webhook', + type: 'n8n-nodes-base.webhook', + typeVersion: 1, + position: [0, 0], + parameters: {}, + }, + ], + connections: {}, + }; + const main: WorkflowResponse = { + id: 'orders-main', + name: 'Order Intake', + active: false, + versionId: 'v1', + nodes: [ + { + id: 'b', + name: 'Webhook', + type: 'n8n-nodes-base.webhook', + typeVersion: 1, + position: [0, 0], + parameters: {}, + }, + { + id: 'c', + name: 'Run Sub', + type: 'n8n-nodes-base.executeWorkflow', + typeVersion: 1, + position: [0, 0], + parameters: { workflowId: 'sub-with-own-trigger' }, + }, + ], + connections: {}, + }; + + const selected = selectScenarioWorkflowId( + { ...scenario, name: 'process-order-runs', dataSetup: 'Process Order handles each order' }, + 'orders-main', + [main, sub], + logger as never, + ); + + expect(selected).toBe('orders-main'); + }); + it('labels Filter branches with downstream node names so verifier can tell where items went', () => { const wf: WorkflowResponse = { id: 'w1', diff --git a/packages/@n8n/instance-ai/evaluations/__tests__/workflow-checks-feedback.test.ts b/packages/@n8n/instance-ai/evaluations/__tests__/workflow-checks-feedback.test.ts index f0e1d811b2e..5b560911fac 100644 --- a/packages/@n8n/instance-ai/evaluations/__tests__/workflow-checks-feedback.test.ts +++ b/packages/@n8n/instance-ai/evaluations/__tests__/workflow-checks-feedback.test.ts @@ -79,12 +79,12 @@ describe('CheckOutcome → LangSmith Feedback projection', () => { it('drops N/A even when comment is present', () => { const single: CheckOutcome[] = [ { - name: 'response_matches_workflow_changes', + name: 'response_describes_changes_accurately', description: 'LLM check', kind: 'llm', - dimension: 'nodes_craftsmanship', + dimension: 'communication', status: 'n_a', - comment: 'Skipped: no agent text response', + comment: 'Skipped: no agent narration available', }, ]; expect(extractCheckFeedback(single)).toEqual([]); diff --git a/packages/@n8n/instance-ai/evaluations/__tests__/workflow-discovery.test.ts b/packages/@n8n/instance-ai/evaluations/__tests__/workflow-discovery.test.ts index 63e2870063b..17c40907cf3 100644 --- a/packages/@n8n/instance-ai/evaluations/__tests__/workflow-discovery.test.ts +++ b/packages/@n8n/instance-ai/evaluations/__tests__/workflow-discovery.test.ts @@ -1,6 +1,6 @@ import type { Mock } from 'vitest'; -import type { N8nClient, WorkflowResponse } from '../clients/n8n-client'; +import { N8nApiError, type N8nClient, type WorkflowResponse } from '../clients/n8n-client'; import { buildAgentOutcome } from '../outcome/workflow-discovery'; import type { EventOutcome } from '../types'; @@ -101,3 +101,82 @@ describe('buildAgentOutcome', () => { expect(listWorkflows).not.toHaveBeenCalled(); }); }); + +describe('buildAgentOutcome phantom-id handling', () => { + /** Client whose getWorkflow resolves per id: a WorkflowResponse, or a thrown error. */ + function clientWith(byId: Record): N8nClient { + return { + getWorkflow: vi.fn(async (id: string) => { + const entry = byId[id]; + if (entry === undefined) throw new N8nApiError(`Workflow ${id} not found`, 404); + if (entry instanceof Error) throw entry; + return await Promise.resolve(entry); + }), + listExecutions: vi.fn().mockResolvedValue([]), + } as unknown as N8nClient; + } + + function outcomeWithIds(workflowIds: string[]): EventOutcome { + return { ...emptyEventOutcome, workflowIds }; + } + + it('drops phantom ids (404) so a real workflow becomes workflowsCreated[0]', async () => { + // An agent-invented id echoed by a failed build-workflow bind, then the real save. + const client = clientWith({ 'real-id': workflow('real-id') }); + + const outcome = await buildAgentOutcome(client, outcomeWithIds(['pokemon-digest', 'real-id'])); + + expect(outcome.workflowsCreated.map((wf) => wf.id)).toEqual(['real-id']); + expect(outcome.workflowJsons.map((wf) => wf.id)).toEqual(['real-id']); + }); + + it('drops inaccessible ids (403)', async () => { + const client = clientWith({ + forbidden: new N8nApiError('Workflow forbidden not accessible', 403), + 'real-id': workflow('real-id'), + }); + + const outcome = await buildAgentOutcome(client, outcomeWithIds(['forbidden', 'real-id'])); + + expect(outcome.workflowsCreated.map((wf) => wf.id)).toEqual(['real-id']); + }); + + it('keeps a stub for transport-level fetch failures, ordered after real workflows', async () => { + const client = clientWith({ + flaky: new TypeError('fetch failed'), + 'real-id': workflow('real-id'), + }); + + const outcome = await buildAgentOutcome(client, outcomeWithIds(['flaky', 'real-id'])); + + expect(outcome.workflowsCreated.map((wf) => wf.id)).toEqual(['real-id', 'flaky']); + expect(outcome.workflowsCreated[1].name).toBe('(fetch failed)'); + expect(outcome.workflowJsons.map((wf) => wf.id)).toEqual(['real-id']); + }); + + it('returns no workflows when every candidate id is phantom', async () => { + const outcome = await buildAgentOutcome( + clientWith({}), + outcomeWithIds(['made-up', 'also-fake']), + ); + + expect(outcome.workflowsCreated).toEqual([]); + }); + + it('logs dropped phantom ids when a logger is provided', async () => { + const logger = { warn: vi.fn() }; + const client = clientWith({ 'real-id': workflow('real-id') }); + + await buildAgentOutcome( + client, + outcomeWithIds(['phantom-slug', 'real-id']), + undefined, + undefined, + { + logger, + }, + ); + + expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('phantom-slug')); + }); +}); diff --git a/packages/@n8n/instance-ai/evaluations/__tests__/workspace-tool-contract.test.ts b/packages/@n8n/instance-ai/evaluations/__tests__/workspace-tool-contract.test.ts index dcc43617696..a35e28abc47 100644 --- a/packages/@n8n/instance-ai/evaluations/__tests__/workspace-tool-contract.test.ts +++ b/packages/@n8n/instance-ai/evaluations/__tests__/workspace-tool-contract.test.ts @@ -1,5 +1,6 @@ import { createWorkspaceTools } from '@n8n/agents'; +import { INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST } from '../../src/workspace/lazy-runtime-workspace'; import { IGNORED_WORKSPACE_TOOLS, REPLAYED_WORKSPACE_TOOL_ARGS } from '../harness/langsmith-seed'; // The seed reconstructor replays @n8n/agents workspace file ops by matching tool @@ -32,4 +33,43 @@ describe('workspace tool contract (@n8n/agents drift guard)', () => { } } }); + + it('exposes only the Instance AI allowlisted tools to agents', () => { + const liveTools = createWorkspaceTools({ + filesystem: {}, + sandbox: { + executeCommand: vi.fn().mockResolvedValue({ + success: true, + exitCode: 0, + stdout: '', + stderr: '', + executionTimeMs: 0, + }), + }, + } as unknown as Parameters[0]); + const liveNames = new Set(liveTools.map((tool) => tool.name)); + + for (const name of INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST) { + expect(liveNames.has(name), name).toBe(true); + } + expect(liveNames.size).toBeGreaterThanOrEqual(INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST.size); + }); + + it('does not expose removed filesystem helpers via the allowlist', () => { + const removed = [ + 'workspace_append_file', + 'workspace_list_files', + 'workspace_file_stat', + 'workspace_mkdir', + 'workspace_rmdir', + 'workspace_delete_file', + 'workspace_copy_file', + 'workspace_move_file', + ]; + for (const name of removed) { + expect(INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST.has(name)).toBe(false); + // Historical seeds may still replay these — they remain in @n8n/agents. + expect(liveByName.has(name), `${name} should still exist for seed replay`).toBe(true); + } + }); }); diff --git a/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/create-llm-check.ts b/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/create-llm-check.ts index f7f4c8adf37..bc4ba5d85ff 100644 --- a/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/create-llm-check.ts +++ b/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/create-llm-check.ts @@ -5,7 +5,8 @@ import type { WorkflowResponse } from '../../clients/n8n-client'; import { parseJudgeVerdict, REASONING_FIRST_SUFFIX } from '../../utils/llm-judge'; import type { BinaryCheck, BinaryCheckContext, CheckDimension } from '../types'; -const DEFAULT_TIMEOUT_MS = 30_000; +// Headroom for the multi-turn honesty check, which reasons over every claim across all turns. +const DEFAULT_TIMEOUT_MS = 60_000; function isLlmCheckTimeout(error: unknown, checkName: string): error is Error { return ( @@ -73,7 +74,7 @@ export function createLlmCheck(options: LlmCheckOptions): BinaryCheck { .replace('{agentTextResponse}', ctx.agentTextResponse ?? '') .replace( '{workflowBefore}', - ctx.existingWorkflow ? JSON.stringify(ctx.existingWorkflow, null, 2) : '{}', + ctx.workflowBefore ? JSON.stringify(ctx.workflowBefore, null, 2) : '{}', ); const agent = getOrCreateAgent(options.name, ctx.modelId, systemPrompt); diff --git a/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/index.ts b/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/index.ts index ac014fb9a80..04dc5d25ac0 100644 --- a/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/index.ts +++ b/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/index.ts @@ -32,7 +32,7 @@ import { noHardcodedCredentials } from './no-hardcoded-credentials'; import { noInvalidFromAi } from './no-invalid-from-ai'; import { noUnnecessaryCodeNodes } from './no-unnecessary-code-nodes'; import { noUnreachableNodes } from './no-unreachable-nodes'; -import { responseMatchesWorkflowChanges } from './response-matches-workflow-changes'; +import { responseDescribesChangesAccurately } from './response-describes-changes-accurately'; import { switchFallbackOutputEnabled } from './switch-fallback-output-enabled'; import { toolsHaveParameters } from './tools-have-parameters'; import { validDataFlow } from './valid-data-flow'; @@ -71,6 +71,8 @@ export const PARAMETER_CORRECTNESS_CHECKS: BinaryCheck[] = [ export const INTENT_MATCH_CHECKS: BinaryCheck[] = [fulfillsUserRequest]; +export const COMMUNICATION_CHECKS: BinaryCheck[] = [responseDescribesChangesAccurately]; + export const AI_NODES_CHECKS: BinaryCheck[] = [ agentHasDynamicPrompt, agentHasLanguageModel, @@ -84,7 +86,6 @@ export const NODES_CRAFTSMANSHIP_CHECKS: BinaryCheck[] = [ noUnnecessaryCodeNodes, codeNodeNoHttpRequests, descriptiveNodeNames, - responseMatchesWorkflowChanges, ]; export const EFFICIENCY_CHECKS: BinaryCheck[] = [noExcessiveBuildFailures]; @@ -96,6 +97,7 @@ export const ALL_CHECKS: BinaryCheck[] = [ ...CONNECTION_TOPOLOGY_CHECKS, ...PARAMETER_CORRECTNESS_CHECKS, ...INTENT_MATCH_CHECKS, + ...COMMUNICATION_CHECKS, ...AI_NODES_CHECKS, ...NODES_CRAFTSMANSHIP_CHECKS, ...EFFICIENCY_CHECKS, diff --git a/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/response-describes-changes-accurately.ts b/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/response-describes-changes-accurately.ts new file mode 100644 index 00000000000..7a66bef37d0 --- /dev/null +++ b/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/response-describes-changes-accurately.ts @@ -0,0 +1,53 @@ +import { createLlmCheck } from './create-llm-check'; + +// Communication/honesty check: does the agent's narration over-claim relative to +// what it actually built? Fails only on false/overstated claims — never on +// omissions (agents reasonably summarize). Completeness is a separate concern, +// covered by `fulfills_user_request`. +export const responseDescribesChangesAccurately = createLlmCheck({ + name: 'response_describes_changes_accurately', + description: + "Agent's narration makes no false or overstated claims about the changes it actually made (over-claiming only — unmentioned changes are fine; completeness is covered by fulfills_user_request)", + dimension: 'communication', + systemPrompt: `You are a strict evaluator checking whether an AI assistant's narration honestly describes the changes it made to an n8n workflow. + +The narration may span multiple conversation turns (numbered "Turn N:"). You are given: +- The workflow at the START of the conversation (often empty — a brand-new workflow built over the conversation) +- The FINAL workflow after the conversation +- The agent's narration across the whole conversation + +Your task: +1. Read the agent's narration and identify every specific claim about workflow changes (e.g., "I added a Slack node", "I configured the HTTP Request node to use POST", "I connected the trigger to the filter node"). +2. Determine what actually changed between the START and FINAL workflows. When START is empty, every node and connection in FINAL is something the agent added. +3. Verify each claim against the actual net change. Reason across turns: a node added in one turn and removed in a later turn is correctly absent from FINAL — judge claims against the net effect of the whole conversation, not any single turn. +4. Pass ONLY if every specific claim is reflected in the actual changes. + +Rules: +- If the agent claims to have added a node, that node must be in the FINAL workflow. +- If the agent claims a specific configuration, verify the FINAL node has it. +- If the agent claims connections between nodes, verify they exist in the FINAL workflow. +- Treat "added", "configured", "set up", and "updated" claims as accurate as long as the FINAL workflow reflects them. START may be empty, so do not penalize "updated" wording just because the node appears new. +- Do NOT penalize the agent for changes it made but did not mention. Omissions are fine; this check fails only on claims that are false or overstated. +- Ignore vague statements that make no specific claim (e.g., "I built a workflow for you"). +- Treat SDK helper claims such as \`nodeJson(sourceNode, 'field.path')\` as equivalent to the generated workflow expression \`$('Source Node').item.json.field.path\` when the referenced node and JSON path match semantically. +- If the narration contains NO specific claims about workflow changes, pass (nothing to verify). +- A single verifiably false claim means fail.`, + humanTemplate: `User Request: {userPrompt} + +Agent's narration (across the conversation): +{agentTextResponse} + +Workflow at the START of the conversation: +{workflowBefore} + +Final workflow: +{generatedWorkflow} + +Verify each specific claim in the narration against the net change from START to FINAL. If there are no specific claims, pass.`, + skipIf: (_workflow, ctx) => { + if (!ctx.agentTextResponse) { + return 'Skipped: no agent narration available'; + } + return undefined; + }, +}); diff --git a/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/response-matches-workflow-changes.ts b/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/response-matches-workflow-changes.ts deleted file mode 100644 index f3a4cddf23d..00000000000 --- a/packages/@n8n/instance-ai/evaluations/binaryChecks/checks/response-matches-workflow-changes.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { createLlmCheck } from './create-llm-check'; - -// Scores agent communication honesty rather than workflow craft; revisit -// its dimension when conversation-side rubric checks land. -export const responseMatchesWorkflowChanges = createLlmCheck({ - name: 'response_matches_workflow_changes', - description: "Agent's text response accurately describes the actual workflow changes", - dimension: 'nodes_craftsmanship', - systemPrompt: `You are a strict evaluator checking whether an AI assistant's text response accurately describes the changes it made to an n8n workflow. - -You are given: -- The workflow BEFORE the agent's turn (may be empty for new workflows) -- The workflow AFTER the agent's turn -- The agent's text response describing what it did - -Your task: -1. Read the agent's text response and identify all claims about workflow changes (e.g., "I added a Slack node", "I configured the HTTP Request node to use POST method", "I connected the trigger to the filter node"). -2. Compare the before and after workflow JSONs to determine what actually changed. -3. Verify each claim against the actual diff between before and after workflows. -4. Pass ONLY if every claim the agent makes is reflected in the actual changes. - -Rules: -- If the agent claims to have added a node, that node must be in the AFTER workflow but NOT in the BEFORE workflow (or be newly configured). -- If the agent claims a specific configuration change, verify it differs between before and after. -- If the agent claims connections between nodes, verify those connections exist in the AFTER workflow. -- Ignore general/vague statements that don't make specific claims (e.g., "I built a workflow for you"). -- Treat SDK helper claims such as \`nodeJson(sourceNode, 'field.path')\` as equivalent to the generated workflow expression \`$('Source Node').item.json.field.path\` when the referenced node and JSON path match semantically. -- If the agent's response contains NO specific claims about workflow changes, pass (nothing to verify). -- A single verifiably false claim means fail.`, - humanTemplate: `User Request: {userPrompt} - -Agent's Text Response: -{agentTextResponse} - -Workflow BEFORE agent's turn: -{workflowBefore} - -Workflow AFTER agent's turn: -{generatedWorkflow} - -Compare the before and after workflows, then verify each specific claim the agent makes. If there are no specific claims, pass.`, - skipIf: (_workflow, ctx) => { - if (!ctx.agentTextResponse) { - return 'Skipped: no agent text response available'; - } - return undefined; - }, -}); diff --git a/packages/@n8n/instance-ai/evaluations/binaryChecks/types.ts b/packages/@n8n/instance-ai/evaluations/binaryChecks/types.ts index a10a4afece8..ad096c0336e 100644 --- a/packages/@n8n/instance-ai/evaluations/binaryChecks/types.ts +++ b/packages/@n8n/instance-ai/evaluations/binaryChecks/types.ts @@ -38,10 +38,14 @@ export interface BinaryCheckContext { modelId?: string; /** Timeout in ms for LLM checks. Defaults to 30_000. */ timeoutMs?: number; - /** The agent's text response (used by response-matches-workflow-changes check) */ + /** The agent's narration across the conversation (used by the response_describes_changes_accurately check) */ agentTextResponse?: string; - /** The workflow before the agent's turn (used by response-matches-workflow-changes check) */ - existingWorkflow?: WorkflowResponse; + /** + * The workflow at the start of the conversation, before the agent's changes + * (used by response_describes_changes_accurately). Empty for from-scratch + * builds — set only when a conversation starts from an existing workflow. + */ + workflowBefore?: WorkflowResponse; /** Per-test-case annotations forwarded from fixtures. Used by checks that opt into fixture-side overrides. */ annotations?: Record; /** @@ -63,6 +67,7 @@ export const CHECK_DIMENSIONS = [ 'connection_topology', 'parameter_correctness', 'intent_match', + 'communication', 'ai_nodes', 'nodes_craftsmanship', 'efficiency', diff --git a/packages/@n8n/instance-ai/evaluations/cli/index.ts b/packages/@n8n/instance-ai/evaluations/cli/index.ts index 839ee17c2f6..fa9c29d7093 100644 --- a/packages/@n8n/instance-ai/evaluations/cli/index.ts +++ b/packages/@n8n/instance-ai/evaluations/cli/index.ts @@ -72,6 +72,7 @@ import { executeScenario, cleanupBuild, runWorkflowChecks, + effectiveTimeoutMs, runWorkflowTestCase, runWithConcurrency, type BuildResult, @@ -499,6 +500,7 @@ async function runWithLangSmith(config: RunConfig): Promise<{ return { evaluation: { totalRuns: 0, testCases: [] }, experimentName: '', + experimentUrl: undefined, outcome: { kind: 'no_baseline' }, slugByTestCase: new Map(), }; @@ -549,7 +551,7 @@ async function runWithLangSmith(config: RunConfig): Promise<{ | 'seedFile' | 'priorConversation' | 'seedThread' - >; + > & { timeoutMs: number }; interface LaneState { runner: Lane; activeBuilds: number; @@ -560,6 +562,7 @@ async function runWithLangSmith(config: RunConfig): Promise<{ scenario: ExecutionScenario; workflowJsons: BuildResult['workflowJsons']; buildTrace?: BuildResult['buildTrace']; + timeoutMs: number; }) => Promise>>; } @@ -581,7 +584,7 @@ async function runWithLangSmith(config: RunConfig): Promise<{ priorConversation: buildArgs.priorConversation, seedThread: buildArgs.seedThread, createdCredentialIds: lane.createdCredentialIds, - timeoutMs: args.timeoutMs, + timeoutMs: buildArgs.timeoutMs, preRunWorkflowIds: lane.preRunWorkflowIds, claimedWorkflowIds: lane.claimedWorkflowIds, logger, @@ -600,6 +603,7 @@ async function runWithLangSmith(config: RunConfig): Promise<{ scenario: ExecutionScenario; workflowJsons: BuildResult['workflowJsons']; buildTrace?: BuildResult['buildTrace']; + timeoutMs: number; }) => await executeScenario( lane.client, @@ -607,7 +611,7 @@ async function runWithLangSmith(config: RunConfig): Promise<{ execArgs.scenario, execArgs.workflowJsons, logger, - args.timeoutMs, + execArgs.timeoutMs, undefined, execArgs.buildTrace, args.pinAiRoots, @@ -725,6 +729,12 @@ async function runWithLangSmith(config: RunConfig): Promise<{ if (!entry) throw new Error(`No conversation found for fileSlug=${fileSlug}`); try { const start = Date.now(); + const timeoutMs = effectiveTimeoutMs(entry.complexity, args.timeoutMs); + if (timeoutMs !== args.timeoutMs) { + logger.info( + ` Complex case: per-iteration budget ${String(Math.round(timeoutMs / 1000))}s [${fileSlug}]`, + ); + } const build = await lane.tracedBuild({ conversation: entry.conversation, messageBudget: entry.messageBudget, @@ -732,6 +742,7 @@ async function runWithLangSmith(config: RunConfig): Promise<{ seedFile: entry.seedFile, priorConversation: entry.priorConversation, seedThread: entry.seedThread, + timeoutMs, }); const buildDurationMs = Date.now() - start; buildDurations.set(key, buildDurationMs); @@ -877,6 +888,10 @@ async function runWithLangSmith(config: RunConfig): Promise<{ scenario, workflowJsons: build.workflowJsons, buildTrace: build.buildTrace, + timeoutMs: effectiveTimeoutMs( + testCaseByFileSlug.get(inputs.testCaseFile)?.complexity, + args.timeoutMs, + ), }); break; } catch (error: unknown) { diff --git a/packages/@n8n/instance-ai/evaluations/cli/langtracer-push.ts b/packages/@n8n/instance-ai/evaluations/cli/langtracer-push.ts index 0d90e3924b6..f56420d350b 100644 --- a/packages/@n8n/instance-ai/evaluations/cli/langtracer-push.ts +++ b/packages/@n8n/instance-ai/evaluations/cli/langtracer-push.ts @@ -11,13 +11,10 @@ import { execFileSync } from 'node:child_process'; import { basename } from 'node:path'; import { loadWorkflowTestCasesWithFiles } from '../data/workflows'; -import { LangTracerClient, type LangTracerUpdateCaseBody } from '../langtracer/client'; +import { LangTracerClient } from '../langtracer/client'; import { resolveLangTracerConfig } from '../langtracer/config'; -import { planPush } from '../langtracer/push'; -import { - diskCaseToLangTracerCreate, - type LangTracerCreateCaseBody, -} from '../langtracer/to-exported'; +import { planPush, toUpdatePatch } from '../langtracer/push'; +import { diskCaseToLangTracerCreate } from '../langtracer/to-exported'; interface CliArgs { suite: string; @@ -154,16 +151,6 @@ function gitChangedSlugs(): string[] { return slugs; } -/** Drop the create-only fields `PATCH /cases/:id` rejects, leaving the patchable set. */ -function toUpdatePatch({ - suiteId, - synthetic, - scenarios, - ...patch -}: LangTracerCreateCaseBody): LangTracerUpdateCaseBody { - return patch; -} - async function main() { const parsed = parseArgs(process.argv.slice(2)); if (parsed.helpRequested) { diff --git a/packages/@n8n/instance-ai/evaluations/data/workflows/flight-status-change-alert.json b/packages/@n8n/instance-ai/evaluations/data/workflows/flight-status-change-alert.json index e555f61bd82..b832b127461 100644 --- a/packages/@n8n/instance-ai/evaluations/data/workflows/flight-status-change-alert.json +++ b/packages/@n8n/instance-ai/evaluations/data/workflows/flight-status-change-alert.json @@ -1,5 +1,5 @@ { - "description": "Vague monitoring request with an unspecified data source. The agent should ask where to get the flight status from before building; the user answers 'scrape FlightAware'. Outcome/scenario assertions are grounded in a real build run (schedule → scrape FlightAware → compare against stored last-seen status → alert only on change).", + "description": "Vague monitoring request with an unspecified data source. The agent should ask where to get the flight status from before building; the user answers 'scrape FlightAware' and pins storage to a Data Table (builds that keep last-seen state in $getWorkflowStaticData are unverifiable — eval executions start with empty static data, so the stateful scenarios can only be graded against a seedable store). Outcome/scenario assertions are grounded in a real build run (schedule → scrape FlightAware → compare against stored last-seen status → alert only on change).", "conversation": [ { "role": "user", @@ -11,7 +11,7 @@ }, { "role": "user", - "text": "[Don't mention the data source unless the agent asks where to get the flight status from; then say 'Scrape it from FlightAware.']" + "text": "[Don't mention the data source unless the agent asks where to get the flight status from; then say 'Scrape it from FlightAware, and keep the last seen status in an n8n Data Table so each run can compare against it.']" } ], "messageBudget": 4, diff --git a/packages/@n8n/instance-ai/evaluations/data/workflows/trading-bot-http-array-normalization.json b/packages/@n8n/instance-ai/evaluations/data/workflows/trading-bot-http-array-normalization.json index bab976a4e0f..1117ba14ebd 100644 --- a/packages/@n8n/instance-ai/evaluations/data/workflows/trading-bot-http-array-normalization.json +++ b/packages/@n8n/instance-ai/evaluations/data/workflows/trading-bot-http-array-normalization.json @@ -10,7 +10,7 @@ }, { "role": "user", - "text": "Pull OHLCV candles from the Binance klines REST API (GET https://api.binance.com/api/v3/klines) via an HTTP Request node, normalize them, compute indicators, and send the final signal to Telegram. Binance returns a JSON array of candle rows, so the normalize step has to handle every candle, not just the first one." + "text": "Pull OHLCV candles from the Binance klines REST API (GET https://api.binance.com/api/v3/klines) via an HTTP Request node, normalize them, compute indicators, and send the final signal to Telegram. Binance returns a JSON array of candle rows, so the normalize step has to handle every candle, not just the first one. One symbol is plenty — no need to track several — and a couple of momentum indicators are enough for the signal." } ], "complexity": "complex", diff --git a/packages/@n8n/instance-ai/evaluations/data/workflows/weekly-social-content-scheduler.json b/packages/@n8n/instance-ai/evaluations/data/workflows/weekly-social-content-scheduler.json index c00ebe0218d..30cda266a81 100644 --- a/packages/@n8n/instance-ai/evaluations/data/workflows/weekly-social-content-scheduler.json +++ b/packages/@n8n/instance-ai/evaluations/data/workflows/weekly-social-content-scheduler.json @@ -12,7 +12,7 @@ { "role": "user", "text": [ - "Scrape the top trending topics from Hacker News, and read the 'Content Ideas' tab in my Marketing spreadsheet. Use Gemini to tailor the copy per platform — concise with hashtags for X, professional for LinkedIn, a discussion-style post for Reddit. Stagger them across the week: X on Monday 9am, LinkedIn on Wednesday 2pm, Reddit on Friday 11am.", + "Scrape the top trending topics from Hacker News — the top 5 titles are plenty — and read the 'Content Ideas' tab in my Marketing spreadsheet. Use Gemini to tailor the copy per platform — concise with hashtags for X, professional for LinkedIn, a discussion-style post for Reddit — one post per platform is enough. Stagger them across the week: X on Monday 9am, LinkedIn on Wednesday 2pm, Reddit on Friday 11am.", "For every HITL step during the build — keep the run moving without stalling. Allow all permissions. Use any of the existing credentials or skip." ] }, diff --git a/packages/@n8n/instance-ai/evaluations/harness/runner.ts b/packages/@n8n/instance-ai/evaluations/harness/runner.ts index 31bdbf7e967..b3d4a8b010e 100644 --- a/packages/@n8n/instance-ai/evaluations/harness/runner.ts +++ b/packages/@n8n/instance-ai/evaluations/harness/runner.ts @@ -7,6 +7,7 @@ // --------------------------------------------------------------------------- import type { InstanceAiConfirmRequest, InstanceAiEvalExecutionResult } from '@n8n/api-types'; +import { isRecord } from '@n8n/utils/is-record'; import crypto from 'node:crypto'; import { mkdir, writeFile } from 'node:fs/promises'; import path from 'node:path'; @@ -70,6 +71,7 @@ import type { WorkflowTestCaseResult, } from '../types'; import { + agentTurnsAsText, conversationUserTurnsAsText, failedBuildsPerTurn, lastAgentText, @@ -92,6 +94,23 @@ import { UserProxyLlm, type ProxyDecisionStats } from '../utils/user-proxy'; const DEFAULT_TIMEOUT_MS = 900_000; const EVAL_DATA_DIR = path.join(__dirname, '..', '..', '.data'); +/** + * Per-case budget: `complex` cases get 1.5× the base timeout. The heaviest + * builds (multi-agent fan-outs, 5-integration pipelines) legitimately run at + * the shared default's cap — observed 777–900s with 4/10 builds timing out on + * weekly-social-content-scheduler in run 29012884140 — while the default must + * NOT rise globally (see the comment above: a generous default lets starved + * scenarios amplify the contention that starved them). Keyed off the authored + * `complexity` field so the budget travels with the case (incl. through the + * lang-tracer mirror) instead of a bespoke per-case knob. + */ +export function effectiveTimeoutMs( + complexity: WorkflowTestCase['complexity'] | undefined, + baseMs: number, +): number { + return complexity === 'complex' ? Math.round(baseMs * 1.5) : baseMs; +} + function getMaxConcurrentScenarios(): number { const raw = process.env.N8N_EVAL_MAX_CONCURRENT_SCENARIOS; const parsed = raw ? Number.parseInt(raw, 10) : 4; @@ -251,7 +270,11 @@ export async function runWorkflowTestCase( config: WorkflowTestCaseConfig, ): Promise { const { client, testCase, logger } = config; - const timeoutMs = config.timeoutMs > 0 ? config.timeoutMs : DEFAULT_TIMEOUT_MS; + const baseTimeoutMs = config.timeoutMs > 0 ? config.timeoutMs : DEFAULT_TIMEOUT_MS; + const timeoutMs = effectiveTimeoutMs(testCase.complexity, baseTimeoutMs); + if (timeoutMs !== baseTimeoutMs) { + logger.info(` Complex case: per-iteration budget ${String(Math.round(timeoutMs / 1000))}s`); + } const result: WorkflowTestCaseResult = { testCase, @@ -744,7 +767,7 @@ export async function buildWorkflow(config: BuildWorkflowConfig): Promise { ); } +/** Workflow ids referenced by enabled Execute Workflow nodes (database source, + * plain string or resource-locator value) — those targets are dependencies of + * this workflow, not entry points. */ +function executeWorkflowReferences(wf: WorkflowResponse): string[] { + const ids: string[] = []; + for (const node of wf.nodes) { + if (node.disabled || node.type !== 'n8n-nodes-base.executeWorkflow') continue; + const params = node.parameters ?? {}; + if (typeof params.source === 'string' && params.source !== 'database') continue; + const raw = isRecord(params.workflowId) ? params.workflowId.value : params.workflowId; + if (typeof raw === 'string' && raw.trim() !== '' && !raw.startsWith('=')) ids.push(raw.trim()); + } + return ids; +} + /** * Compositional builds split the system across multiple workflows (SKILL.md * endorses this), but execution historically always ran `build.workflowId` — @@ -921,7 +959,11 @@ function scenarioMatchTokens(text: string): Set { * while the expectations judge (which sees every workflowJson) passed the * same build. Mirror reality instead: a caller hits the specific endpoint, so * route the scenario to the workflow whose trigger-bearing content best - * matches it. Single-workflow builds and ties keep the original id. + * matches it. Sub-workflows referenced by another candidate's Execute Workflow + * node are dependencies, not entry points — executing one directly starts it + * once with an empty payload, so they're demoted whenever an entry point + * remains. A single-candidate pool routes to that candidate: `workflowId` + * itself may be a sub-workflow (whichever the agent happened to save first). */ export function selectScenarioWorkflowId( scenario: ExecutionScenario, @@ -933,15 +975,26 @@ export function selectScenarioWorkflowId( (wf) => wf?.id && Array.isArray(wf.nodes) && wf.nodes.some((n) => isMockableTriggerNodeType(n.type)), ); - if (candidates.length <= 1) return workflowId; + if (candidates.length === 0) return workflowId; + const referencedIds = new Set(candidates.flatMap(executeWorkflowReferences)); + const entryPoints = candidates.filter((wf) => !referencedIds.has(wf.id)); + const pool = entryPoints.length > 0 ? entryPoints : candidates; + const fallbackId = pool.some((wf) => wf.id === workflowId) ? workflowId : pool[0].id; const scenarioTokens = scenarioMatchTokens(`${scenario.name} ${scenario.dataSetup}`); - if (scenarioTokens.size === 0) return workflowId; + if (pool.length === 1 || scenarioTokens.size === 0) { + if (fallbackId !== workflowId) { + logger.info( + ` [${scenario.name}] multi-workflow build: routing to entry point ${fallbackId}`, + ); + } + return fallbackId; + } - let bestId = workflowId; + let bestId = fallbackId; let bestScore = -1; let tied = false; - for (const wf of candidates) { + for (const wf of pool) { const haystackParts: string[] = [wf.name ?? '']; for (const node of wf.nodes) { haystackParts.push(String(node.name ?? '')); @@ -963,7 +1016,7 @@ export function selectScenarioWorkflowId( } } - if (tied || bestScore <= 0) return workflowId; + if (tied || bestScore <= 0) bestId = fallbackId; if (bestId !== workflowId) { logger.info( ` [${scenario.name}] multi-workflow build: routing to workflow ${bestId} (score ${String(bestScore)})`, diff --git a/packages/@n8n/instance-ai/evaluations/langtracer/client.ts b/packages/@n8n/instance-ai/evaluations/langtracer/client.ts index 025245059fe..8391faccda3 100644 --- a/packages/@n8n/instance-ai/evaluations/langtracer/client.ts +++ b/packages/@n8n/instance-ai/evaluations/langtracer/client.ts @@ -32,10 +32,12 @@ export type LangTracerSuiteSummary = z.infer; export type ExportedSuite = z.infer; export type LangTracerCaseRef = z.infer; -/** Fields patchable via `PATCH /cases/:id` — a create body minus what that route - * rejects (`suiteId`/`synthetic` handled elsewhere, `scenarios` are sidecar rows). */ +/** Fields patchable via `PATCH /cases/:id` — a create body minus the create-only + * keys (`suiteId`/`synthetic`). `scenarios` are sidecar rows the server reconciles + * by name on PATCH (upsert + delete missing); a server predating lang-tracer #48 + * strips the key silently, leaving the old scenarios in place. */ export type LangTracerUpdateCaseBody = Partial< - Omit + Omit >; export class LangTracerClient { diff --git a/packages/@n8n/instance-ai/evaluations/langtracer/push.ts b/packages/@n8n/instance-ai/evaluations/langtracer/push.ts index c8c8efe6472..c147b7c71cb 100644 --- a/packages/@n8n/instance-ai/evaluations/langtracer/push.ts +++ b/packages/@n8n/instance-ai/evaluations/langtracer/push.ts @@ -3,8 +3,9 @@ // seeding). Pure — no network — so the create/update/unchanged partitioning is // unit-testable against in-memory suite state. +import type { LangTracerUpdateCaseBody } from './client'; import { normalizeExportedCase } from './normalize'; -import { unsupportedPushReason } from './to-exported'; +import { unsupportedPushReason, type LangTracerCreateCaseBody } from './to-exported'; import type { WorkflowTestCaseWithFile } from '../data/workflows'; export interface PushPlan { @@ -14,9 +15,8 @@ export interface PushPlan { skipped: Array<{ fileSlug: string; reason: string }>; } -/** Disk fields compared to decide create-vs-update. Deliberately EXCLUDES three +/** Disk fields compared to decide create-vs-update. Deliberately EXCLUDES two * fields that would make a re-push never converge (always "update"): - * - `executionScenarios`: sidecar rows `PATCH /cases/:id` can't update — written on create only. * - `tags` and `datasets`: the lang-tracer suite export does not round-trip these * (tags come back empty, default `datasets` comes back null/omitted), so a diff * on them always fires. They're still SENT on create so new cases carry them; @@ -30,8 +30,24 @@ const COMPARED_KEYS = [ 'outcomeExpectations', 'messageBudget', 'credentials', + // Round-trips faithfully: PATCH /cases/:id reconciles scenario rows by name + // (lang-tracer #48) and the export emits them back in disk shape. + 'executionScenarios', ] as const; +/** Drop the create-only fields, leaving the patchable set (`scenarios` included — + * `PATCH /cases/:id` reconciles them by name since lang-tracer #48). An absent + * `scenarios` is sent as an explicit `[]`: a partial PATCH leaves missing keys + * untouched, so omitting it would keep the server's old scenario rows alive + * forever after a disk case drops its `executionScenarios`. */ +export function toUpdatePatch({ + suiteId, + synthetic, + ...patch +}: LangTracerCreateCaseBody): LangTracerUpdateCaseBody { + return { scenarios: [], ...patch }; +} + /** `existingBodies`: `.json` → exported (disk-shape) body from `GET /suites/:id/export`. * `existingIdsByName`: case name → id from `GET /suites/:id` (authoritative membership). */ export function planPush( diff --git a/packages/@n8n/instance-ai/evaluations/outcome/workflow-discovery.ts b/packages/@n8n/instance-ai/evaluations/outcome/workflow-discovery.ts index aac0f7cdcbc..85557afe278 100644 --- a/packages/@n8n/instance-ai/evaluations/outcome/workflow-discovery.ts +++ b/packages/@n8n/instance-ai/evaluations/outcome/workflow-discovery.ts @@ -5,7 +5,7 @@ import type { InstanceAiAgentNode, InstanceAiMessage } from '@n8n/api-types'; import { isRecord } from '@n8n/utils/is-record'; -import type { N8nClient, WorkflowResponse } from '../clients/n8n-client'; +import { N8nApiError, type N8nClient, type WorkflowResponse } from '../clients/n8n-client'; import type { AgentOutcome, EventOutcome, ExecutionSummary, WorkflowSummary } from '../types'; // --------------------------------------------------------------------------- @@ -38,6 +38,8 @@ export interface BuildAgentOutcomeOptions { * run can create a workflow while the current thread produces no IDs. */ allowListDiffFallback?: boolean; + /** Logs discovery decisions (dropped phantom ids, deferred fetch-failure stubs). */ + logger?: { warn(message: string): void }; } export async function buildAgentOutcome( @@ -83,7 +85,13 @@ export async function buildAgentOutcome( } } - // Fetch workflow details + // Fetch workflow details. Candidate ids come from tool results and agent + // trees, which echo agent-INVENTED ids too (e.g. a failed build-workflow + // bind to a made-up id) — a 404/403 means no workflow ever carried the id, + // so drop it instead of recording a stub: a stub at index 0 becomes + // build.workflowId and every scenario then executes a nonexistent workflow. + // Transport-level fetch failures keep a stub, ordered after real workflows. + const fetchFailedStubs: WorkflowSummary[] = []; for (const wfId of knownWfIds) { try { const wf = await client.getWorkflow(wfId); @@ -94,9 +102,14 @@ export async function buildAgentOutcome( active: wf.active, }); workflowJsons.push(wf); - } catch { - // Workflow may have been deleted or is inaccessible - workflowsCreated.push({ + } catch (error) { + if (error instanceof N8nApiError && (error.status === 404 || error.status === 403)) { + options.logger?.warn( + ` Discovery: dropping phantom workflow id "${wfId}" (fetch returned ${String(error.status)})`, + ); + continue; + } + fetchFailedStubs.push({ id: wfId, name: '(fetch failed)', nodeCount: 0, @@ -104,6 +117,7 @@ export async function buildAgentOutcome( }); } } + workflowsCreated.push(...fetchFailedStubs); // Fetch execution details (one listing for all ids) if (eventOutcome.executionIds.length > 0) { diff --git a/packages/@n8n/instance-ai/evaluations/system-prompts/mock-execution-verify.ts b/packages/@n8n/instance-ai/evaluations/system-prompts/mock-execution-verify.ts index 027865bc25b..18de16ece02 100644 --- a/packages/@n8n/instance-ai/evaluations/system-prompts/mock-execution-verify.ts +++ b/packages/@n8n/instance-ai/evaluations/system-prompts/mock-execution-verify.ts @@ -10,6 +10,7 @@ This is a test environment. No real credentials or API connections exist. ALL HT IMPORTANT: Nodes receiving mock responses instead of real API responses is EXPECTED. Missing or mock credentials is EXPECTED. Don't flag these as issues — they are the testing mechanism itself. IMPORTANT: When an AI root node such as an AI Agent is pinned, its connected AI subnodes (language model, memory, tools, retrievers, parsers) often do not run. This is expected. Evaluate those subnodes from the saved workflow structure, connections, and all-node configs instead of failing only because the subnode did not execute. +IMPORTANT: AI root output shapes differ by node type, and pinned outputs follow the REAL node behavior. An Agent root wraps its result in \`{ "output": ... }\`. A Basic LLM Chain (\`chainLlm\`) does NOT: with a structured output parser attached it emits the parsed fields FLAT at the top level of \`json\` (the parser unwraps any \`output\` envelope); without a parser it emits \`{ "text": "..." }\`. A downstream expression reading \`$json.output.*\` from a chainLlm root can never resolve against the real node either — that is a builder_issue (wrong expression for the node type), NOT a mock/pin issue. Do not claim the pin "should have had an output wrapper" for chainLlm. Credential ID values in the workflow JSON (real, placeholder strings, or stale references) never cause execution failures. When a credential ID cannot be resolved, the framework substitutes a mock credential and execution proceeds. Do not cite credential ID values as a root cause of failure under any circumstance. @@ -71,10 +72,9 @@ Each branch's items are capped at 10 for artifact size. The full untruncated tot ## Failure categories When a checklist item fails, categorize the root cause: -- **builder_issue**: The AI agent that built the workflow misconfigured a node (missing parameters, wrong settings, incomplete config, wrong routing logic, missing nodes). Evidence: configIssues flags, nodes crashing before making HTTP requests, Switch/IF nodes missing required options, workflow structure doesn't match what the prompt asked for. Also applies when the configured identifier could never resolve against any faithful API response (wrong-kind resource-locator value, e.g. "Sheet with ID Reservas not found" — see the lookup bullet in step 3). Also applies when a node's HTTP request was recorded WITHOUT a URL (an intercepted request showing "GET (no URL)" — "GET undefined" in older captures — or a 400 error stating "the node sent an HTTP request without a URL"): the node's routing produced an empty request because the selected resource/operation does not exist on that node type — the workflow could never work against the real API either. This is node misconfiguration, NOT a mock or framework problem. Also applies when a Code node receives correct input data but its connected downstream branch produces wrong output — that's wrong node logic. **For Filter / IF / Switch: an item appearing in the unmatched branch is NOT wrong output — it's correctly routed there by the predicate. Only flag a builder_issue when items that should have matched the predicate end up in the wrong branch.** When judging whether items matched, evaluate against the scenario's stated data values — if the mock's values contradict the scenario and that is why the predicate routed unexpectedly, it is a mock_issue, not a builder_issue. **Also applies when the builder produced an empty or trivial workflow (0 nodes, or only a trigger and no action nodes) — even if the build phase appears to have completed.** A "No trigger or start node found" execution error caused by zero nodes in the saved workflow is a builder failure, not a framework failure: the builder is responsible for committing at least a trigger. +- **builder_issue**: The AI agent that built the workflow misconfigured a node (missing parameters, wrong settings, incomplete config, wrong routing logic, missing nodes). Evidence: configIssues flags, nodes crashing before making HTTP requests, Switch/IF nodes missing required options, workflow structure doesn't match what the prompt asked for. Also applies when the configured identifier could never resolve against any faithful API response (wrong-kind resource-locator value, e.g. "Sheet with ID Reservas not found" — see the lookup bullet in step 3). Also applies when a node's HTTP request was recorded WITHOUT a URL (an intercepted request showing "GET (no URL)" — "GET undefined" in older captures — or a 400 error stating "the node sent an HTTP request without a URL"): the node's routing produced an empty request because the selected resource/operation does not exist on that node type — the workflow could never work against the real API either. This is node misconfiguration, NOT a mock or framework problem. Also applies when a Code node receives correct input data but its connected downstream branch produces wrong output — that's wrong node logic. **For Filter / IF / Switch: an item appearing in the unmatched branch is NOT wrong output — it's correctly routed there by the predicate. Only flag a builder_issue when items that should have matched the predicate end up in the wrong branch.** When judging whether items matched, evaluate against the scenario's stated data values — if the mock's values contradict the scenario and that is why the predicate routed unexpectedly, it is a mock_issue, not a builder_issue. **Also applies when the builder produced an empty or trivial workflow (0 nodes, or only a trigger and no action nodes) — even if the build phase appears to have completed.** A "No trigger or start node found" execution error caused by zero nodes in the saved workflow is a builder failure, not a framework failure: the builder is responsible for committing at least a trigger. Also applies when an Execute Workflow node crashes BEFORE invoking its sub-workflow because its own input mapping is invalid — \`workflowInputs.mappingMode: "defineBelow"\` with \`workflowInputs.value: null\` produces "Cannot convert undefined or null to object" at iteration 0. That saved config could never work against real n8n either. Do NOT rationalize this crash as the sub-workflow "not existing in the test environment" — the referenced sub-workflow was created by the same build; the crash happens in the parent's mapping code before any lookup. - **mock_issue**: The LLM mock handler returned incorrect or missing data. Evidence: _evalMockError in responses, mock response shape doesn't match what the node expects, mock data missing fields that downstream nodes reference. IMPORTANT: Trace the data flow carefully — if the mock returned correct data but a downstream filter or code node transformed it incorrectly, that is a builder_issue, not a mock_issue. Also applies when the mock returned values that contradict the scenario's stated Data setup (wrong magnitude, percentage, or item count), causing a correctly-built gate, filter, or aggregation to produce an unexpected result. -- **legitimate_failure**: The workflow genuinely doesn't meet the success criteria and neither the builder nor mock is at fault. The test is working as designed — for example, the workflow lacks error handling that the scenario tests for. -- **framework_issue**: The evaluation framework itself failed delivering input to an otherwise-built workflow. Evidence: a built workflow with at least a trigger node exists, but Phase 1 returned an error or the trigger output is empty (empty JSON object), causing cascading failures. Pre-analysis flags starting with "FRAMEWORK ISSUE", "Phase 1 error" warnings. DOES NOT apply when the workflow is empty (0 nodes) — that is a builder_issue, see above. +- **framework_issue**: The evaluation framework itself failed delivering input to an otherwise-built workflow. Evidence: a built workflow with at least a trigger node exists, but Phase 1 returned an error or the trigger output is empty (empty JSON object), causing cascading failures. Pre-analysis flags starting with "FRAMEWORK ISSUE", "Phase 1 error" warnings. Also applies when the test environment cannot express the scenario's premise: the scenario presumes state left behind by earlier production runs (e.g. \`$getWorkflowStaticData\` holding a "previous" value — eval executions always start with empty static data), or the execution suspended at a node that models the passage of real time or an external callback the harness cannot deliver. Categorize these framework_issue consistently — not builder_issue — regardless of which scenario branch the empty state routed to. DOES NOT apply when the workflow is empty (0 nodes) — that is a builder_issue, see above. A workflow that runs as built but doesn't meet the success criteria is a builder_issue — the builder owns satisfying the scenario as written; there is no separate "legitimate failure" category. - **verification_gap**: You don't have enough information in the artifact to make a determination. NOT failure categories: diff --git a/packages/@n8n/instance-ai/evaluations/utils/conversation-text.ts b/packages/@n8n/instance-ai/evaluations/utils/conversation-text.ts index c013aac01bd..86aeee291a7 100644 --- a/packages/@n8n/instance-ai/evaluations/utils/conversation-text.ts +++ b/packages/@n8n/instance-ai/evaluations/utils/conversation-text.ts @@ -74,6 +74,21 @@ export function agentTextOf(turn: TranscriptTurn): string { return turn.steps.flatMap((s) => (s.kind === 'agent-text' ? [s.text] : [])).join(''); } +/** + * Agent-side narration across a captured transcript, flattened as a text block + * for honesty checks. Single narrating turn → plain text; multi-turn → numbered + * by conversation turn so each claim aligns with the user turn that prompted it. + */ +export function agentTurnsAsText(transcript: TranscriptTurn[]): string { + const narrations = transcript + .map((turn, i) => ({ turn: i + 1, text: agentTextOf(turn) })) + .filter((n) => n.text.length > 0); + + if (narrations.length === 0) return ''; + if (narrations.length === 1) return narrations[0].text; + return narrations.map((n) => `Turn ${String(n.turn)}: ${n.text}`).join('\n\n'); +} + /** The most recent turn's agent narration — a finalText fallback for seeded * conversations whose live turn produced no text-delta events. */ export function lastAgentText(transcript: TranscriptTurn[]): string { diff --git a/packages/@n8n/instance-ai/skills/n8n-docs-assistant/SKILL.md b/packages/@n8n/instance-ai/skills/n8n-docs-assistant/SKILL.md index c5295bbda77..e0c2d691ecd 100644 --- a/packages/@n8n/instance-ai/skills/n8n-docs-assistant/SKILL.md +++ b/packages/@n8n/instance-ai/skills/n8n-docs-assistant/SKILL.md @@ -16,11 +16,14 @@ recommended_tools: Use this skill when the user asks how to configure, set up, troubleshoot, or understand n8n behavior and the answer should come from current n8n docs. +Before calling `n8n-docs`, load it via `load_tool` (search "n8n docs" if it is +not visible). + ## Default Procedure -1. Call `n8n-docs(action="lookup")` first for credential setup and direct n8n - docs questions. Use `search` then `read` only when you need tighter control - over candidate pages. +1. Load `n8n-docs` via `load_tool` if needed, then call `n8n-docs(action="lookup")` + first for credential setup and direct n8n docs questions. Use `search` then + `read` only when you need tighter control over candidate pages. 2. For credential setup, pass `intent: "credential-setup"` and all available context fields: `credentialType`, `credentialDisplayName`, `documentationUrl`, `oauthRedirectUrl`, and `nodeType`. diff --git a/packages/@n8n/instance-ai/skills/planned-task-runtime/SKILL.md b/packages/@n8n/instance-ai/skills/planned-task-runtime/SKILL.md index 96f1d63d2f3..00d7a528a36 100644 --- a/packages/@n8n/instance-ai/skills/planned-task-runtime/SKILL.md +++ b/packages/@n8n/instance-ai/skills/planned-task-runtime/SKILL.md @@ -19,7 +19,8 @@ recommended_tools: Load this skill when the current message contains ``, ``, ``, or immediately after calling -`create-tasks`. +`create-tasks`. Before calling `create-tasks`, load it via `load_tool` if it is +not already visible (search "create tasks" if needed). ## Silence after spawning tasks @@ -76,7 +77,8 @@ create another plan. When `` is present, a planned task failed and the graph is in `awaiting_replan`. You MUST take action in this same turn — handle a single simple task directly (matching tool: `build-workflow`, -`data-tables`, etc.), call `create-tasks` with +`data-tables`, etc.), load `create-tasks` via `load_tool` if needed and call +`create-tasks` with `planningContext.source: "replan"` for multiple dependent tasks, or explain the blocker to the user if nothing sensible remains. Do NOT reply with an acknowledgement or status update alone — the scheduler will not fire another @@ -86,7 +88,8 @@ Replan routing (do not re-plan from scratch): - One simple task remains (single data-table op, credential setup, single-workflow patch) → handle directly with the matching tool. -- Multiple dependent tasks still need scheduling → `create-tasks` with +- Multiple dependent tasks still need scheduling → load `create-tasks` via + `load_tool` if needed, then call `create-tasks` with `planningContext.source: "replan"`. - Nothing sensible remains → explain the blocker to the user. diff --git a/packages/@n8n/instance-ai/skills/planning/SKILL.md b/packages/@n8n/instance-ai/skills/planning/SKILL.md index b552bc762aa..0405ce9d42d 100644 --- a/packages/@n8n/instance-ai/skills/planning/SKILL.md +++ b/packages/@n8n/instance-ai/skills/planning/SKILL.md @@ -23,6 +23,9 @@ Use this skill to design a dependency-aware task graph in the orchestrator and submit it with `create-tasks`. Do not spawn another agent and do not use incremental plan item tools. +Before calling `create-tasks`, load it via `load_tool` (search "create tasks" if +it is not visible). + ## When NOT to use this skill Stop and use `workflow-builder` + `build-workflow` instead when the request is: @@ -69,7 +72,8 @@ with direct `data-tables` and `parse-file` calls. artifact shared across tasks. 6. Add checkpoint tasks only for exceptional semantic checks that normal workflow verification cannot cover. -7. Call `create-tasks` with `planningContext.source: "planning-skill"`, +7. Load `create-tasks` via `load_tool` if needed, then call `create-tasks` with + `planningContext.source: "planning-skill"`, a concise `summary`, optional `assumptions`, `postBuildRunRequested: true` only when the user explicitly asked to run, execute, or test a workflow after building it, and the final task graph. @@ -167,8 +171,9 @@ Do not add checkpoints for routine verification-only work. ## Revisions -If the user rejects the plan with requested changes, revise surgically and call -`create-tasks` again in the same orchestrator run with +If the user rejects the plan with requested changes, revise surgically, load +`create-tasks` via `load_tool` if needed, and call `create-tasks` again in the +same orchestrator run with `planningContext.source: "planning-skill"`. If the user denies the plan outright, stop. Do not call `create-tasks` again in diff --git a/packages/@n8n/instance-ai/src/agent/__tests__/instance-agent.test.ts b/packages/@n8n/instance-ai/src/agent/__tests__/instance-agent.test.ts index d55b1edbd5c..82d49b9330c 100644 --- a/packages/@n8n/instance-ai/src/agent/__tests__/instance-agent.test.ts +++ b/packages/@n8n/instance-ai/src/agent/__tests__/instance-agent.test.ts @@ -179,8 +179,12 @@ describe('createInstanceAgent', () => { expect(Agent).toHaveBeenCalledTimes(2); const attachedTools = getAttachedTools(); + const deferredTools = getDeferredTools(); const secondRunAttachedTools = getAttachedTools(1); - expect(attachedTools['create-tasks-run-1']).toMatchObject({ name: 'create-tasks-run-1' }); + expect(attachedTools['create-tasks-run-1']).toBeUndefined(); + expect(deferredTools['create-tasks-run-1']).toMatchObject({ name: 'create-tasks-run-1' }); + expect(attachedTools['evals-run-1']).toBeUndefined(); + expect(deferredTools['evals-run-1']).toMatchObject({ name: 'evals-run-1' }); expect(attachedTools['plan-run-1']).toBeUndefined(); expect(attachedTools['research-run-1']).toMatchObject({ name: 'research-run-1' }); expect(attachedTools['build-workflow-run-1']).toMatchObject({ @@ -555,7 +559,7 @@ describe('createInstanceAgent', () => { expect(mcpContextTools.get('github_workflows')).toMatchObject({ marker: 'github-workflows' }); }); - it('keeps evals always loaded so user-requested eval setup can route directly', async () => { + it('defers evals behind tool search so the first prompt stays smaller', async () => { const memoryConfig = {} as never; await createInstanceAgent({ @@ -576,10 +580,10 @@ describe('createInstanceAgent', () => { const attachedTools = getAttachedTools(); const deferredTools = getDeferredTools(); - expect(attachedTools['evals-evals-test']).toMatchObject({ + expect(attachedTools['evals-evals-test']).toBeUndefined(); + expect(deferredTools['evals-evals-test']).toMatchObject({ name: 'evals-evals-test', }); - expect(deferredTools['evals-evals-test']).toBeUndefined(); }); it('configures observational memory on the Memory builder when provided', async () => { diff --git a/packages/@n8n/instance-ai/src/agent/__tests__/system-prompt.test.ts b/packages/@n8n/instance-ai/src/agent/__tests__/system-prompt.test.ts index b474cf48d2d..9881287180f 100644 --- a/packages/@n8n/instance-ai/src/agent/__tests__/system-prompt.test.ts +++ b/packages/@n8n/instance-ai/src/agent/__tests__/system-prompt.test.ts @@ -67,9 +67,10 @@ describe('getSystemPrompt', () => { expect(prompt).toContain('## Tool Discovery'); expect(prompt).toContain('additional tools available beyond the ones listed above'); - expect(prompt).toContain('search "credential" for the credentials tool'); expect(prompt).toContain('search "file" for filesystem tools'); - expect(prompt).toContain('search "workflow" for workflow management'); + expect(prompt).toContain('search "n8n docs" for `n8n-docs`'); + expect(prompt).toContain('search "create tasks" for `create-tasks`'); + expect(prompt).toContain('search "eval" for `evals`'); expect(prompt).not.toContain('connected service or MCP integration'); expect(prompt).not.toContain('connected MCP integrations'); }); @@ -96,7 +97,7 @@ describe('getSystemPrompt', () => { expect(prompt).toContain( 'search "notion page" or "linear issue" for the corresponding MCP tool', ); - expect(prompt).toContain('search "credential" for the credentials tool'); + expect(prompt).toContain('search "n8n docs" for `n8n-docs`'); }); it('omits Tool Discovery guidance when deferred tool search is disabled even if MCP tools exist', () => { @@ -194,6 +195,7 @@ describe('getSystemPrompt', () => { expect(prompt).toContain('`build-workflow`'); expect(prompt).toContain('**Multi-workflow or coordinated architecture**'); expect(prompt).toContain('`planning`'); + expect(prompt).toContain('load `create-tasks` via `load_tool`'); expect(prompt).toContain('planningContext.source: "planning-skill"'); expect(prompt).toContain('multiple durable artifacts'); expect(prompt).toContain('shared data-table schema/migration'); @@ -228,6 +230,10 @@ describe('getSystemPrompt', () => { expect(prompt).toContain( 'Never call `data-tables` or `parse-file` without loading `data-table-manager` first', ); + expect(prompt).toContain( + 'never call `create-tasks` without loading it via `load_tool` first', + ); + expect(prompt).toContain('never call `n8n-docs` without loading it via `load_tool` first'); expect(prompt).toContain('Do not call `create-tasks`'); }); @@ -282,6 +288,7 @@ describe('getSystemPrompt', () => { expect(prompt).toContain('**n8n docs/product guidance**'); expect(prompt).toContain('credential setup'); expect(prompt).toContain('`n8n-docs-assistant`'); + expect(prompt).toContain('load `n8n-docs` via `load_tool`'); expect(prompt).toContain('`n8n-docs`'); }); @@ -324,6 +331,8 @@ describe('getSystemPrompt', () => { expect(prompt).toContain('knowledge-base/reference/index.json'); expect(prompt).not.toContain('knowledge-base/templates/index.txt'); expect(prompt).toContain('workspace_execute_command'); + expect(prompt).not.toContain('workspace_list_files'); + expect(prompt).toContain('mkdir -p'); expect(prompt).toContain('Consult the knowledge base before planning or building'); expect(prompt).not.toContain('knowledge-base/best-practices/*.md'); }); diff --git a/packages/@n8n/instance-ai/src/agent/shared-prompts.ts b/packages/@n8n/instance-ai/src/agent/shared-prompts.ts index 25aa369f62d..6447e9cc6d1 100644 --- a/packages/@n8n/instance-ai/src/agent/shared-prompts.ts +++ b/packages/@n8n/instance-ai/src/agent/shared-prompts.ts @@ -28,18 +28,20 @@ function substituteWorkspaceRoot(text: string, workspaceRoot?: string): string { export function getSandboxWorkspaceSection(workspaceRoot?: string): string { const pathHint = workspaceRoot - ? `\nWorkspace root: \`${workspaceRoot}\`. Paths below are under this root — pass them to \`workspace_read_file\`, \`workspace_list_files\`, and \`workspace_execute_command\` as shown (relative paths like \`knowledge-base/...\` also work).\n` + ? `\nWorkspace root: \`${workspaceRoot}\`. Paths below are under this root — pass them to \`workspace_read_file\` and \`workspace_execute_command\` as shown (relative paths like \`knowledge-base/...\` also work).\n` : ''; const section = `## Sandbox workspace ${pathHint} -A thread-scoped sandbox workspace is available via \`workspace_read_file\`, \`workspace_list_files\`, and \`workspace_execute_command\` (use \`grep\` or \`rg\` to search). The workspace is created on first use and includes baked-in reference material: +A thread-scoped sandbox workspace is available via \`workspace_read_file\`, \`workspace_write_file\`, \`workspace_str_replace_file\`, \`workspace_batch_str_replace_file\`, and \`workspace_execute_command\`. The workspace is created on first use and includes baked-in reference material: - \`/knowledge-base/index.json\` — catalog of workflow technique guides (\`/knowledge-base/best-practices/index.json\`; read the linked \`.md\` files) and orchestration reference docs (\`/knowledge-base/reference/index.json\`, e.g. trigger \`inputData\` shapes for verification) -- \`/knowledge-base/templates/\` — curated SDK workflow examples: \`grep\` or \`rg\` this folder to find matches, then read only the relevant \`.ts\` files — never load \`templates/index.json\` wholesale +- \`/knowledge-base/templates/\` — curated SDK workflow examples: use \`workspace_execute_command\` with \`rg\` or \`find\` to locate matches, then read only the relevant \`.ts\` files — never load \`templates/index.json\` wholesale - \`/node-types/index.txt\` — searchable catalog of available n8n nodes - \`/workflows/*.json\` — existing workflows on this instance (when synced) +For directory listing, file metadata, mkdir, copy, move, or delete, use \`workspace_execute_command\` with standard shell commands (\`ls\`, \`find\`, \`stat\`, \`mkdir -p\`, \`cp\`, \`mv\`, \`rm\`). Do not expect dedicated tools for these operations. + **Consult the knowledge base before planning or building.** Read the relevant \`.md\` guides and templates for each technique the request involves. Skip only for trivial mechanical edits you have already reviewed in this thread.`; return substituteWorkspaceRoot(section, workspaceRoot); diff --git a/packages/@n8n/instance-ai/src/agent/system-prompt.ts b/packages/@n8n/instance-ai/src/agent/system-prompt.ts index 4f5ade9f7a6..4ff962f683d 100644 --- a/packages/@n8n/instance-ai/src/agent/system-prompt.ts +++ b/packages/@n8n/instance-ai/src/agent/system-prompt.ts @@ -132,16 +132,16 @@ ${workspaceRoot ? `\n${getSandboxWorkspaceSection(workspaceRoot)}\n` : ''} You have access to workflow, execution, and credential tools plus runtime skills (see the skill catalog), and may have access to MCP tools for extended capabilities. ${getProjectScopeSection(projectId)} -Match the user's request against skill descriptions in the catalog. Call \`load_skill\` before acting on a matched skill's guidance. Never call \`data-tables\` or \`parse-file\` without loading \`data-table-manager\` first, and never call \`build-workflow\` without loading \`workflow-builder\` first. A single turn may need more than one skill when routing requires it (e.g. \`data-table-manager\` then \`workflow-builder\`). +Match the user's request against skill descriptions in the catalog. Call \`load_skill\` before acting on a matched skill's guidance. Never call \`data-tables\` or \`parse-file\` without loading \`data-table-manager\` first, never call \`build-workflow\` without loading \`workflow-builder\` first, never call \`create-tasks\` without loading it via \`load_tool\` first (search "create tasks" if it is not visible), and never call \`n8n-docs\` without loading it via \`load_tool\` first (search "n8n docs" if it is not visible). A single turn may need more than one skill when routing requires it (e.g. \`data-table-manager\` then \`workflow-builder\`). ${INTENT_HINT} - **Single workflow build or edit** (new workflow, add/remove/rewire nodes, expression/credential/schedule/Code fixes, including workflows that create or write to Data Tables) → \`data-table-manager\` when tables are involved, then \`workflow-builder\` → \`build-workflow\` (pass the source as \`sourceCode\`). When the needed node types are already obvious from the request, batch \`nodes(action="type-definition")\` — object form with resource/operation or mode discriminators — together with the \`load_skill\` call in your first action turn (each extra sequential turn resends the whole context); when unsure which nodes to use, load the skill first and follow its research process. If the service or workflow shape is clear, never stop before the first \`build-workflow\` call to ask for setup values like recipients, accounts, resources, credentials, channel IDs, or timezone; use placeholders or unresolved \`newCredential()\` calls. After every successful direct \`build-workflow\` result, if the tool output contains \`postBuildFlow.required: true\`, follow the inlined \`postBuildFlow.instructions\` (do not load \`post-build-flow\` separately) before verification, setup, error-workflow follow-up, publishing, testing, or any final user-visible summary. Do not create a plan just for verification. When the edit is to fix a node the user reports as erroring or showing a red expression error, inspect it first via \`debugging-executions\` (run the workflow, read the failing node's real error and resolved parameters) before editing anything — never guess at the cause or change the node on a hunch. -- **Multi-workflow or coordinated architecture** (dependencies between workflows, shared data-table schema/migration, multiple durable artifacts, broad research, ambiguous business process, user asks to review a plan) → \`data-table-manager\` first when shared tables are involved → \`planning\` → \`create-tasks\` with \`planningContext.source: "planning-skill"\`. +- **Multi-workflow or coordinated architecture** (dependencies between workflows, shared data-table schema/migration, multiple durable artifacts, broad research, ambiguous business process, user asks to review a plan) → \`data-table-manager\` first when shared tables are involved → \`planning\` → load \`create-tasks\` via \`load_tool\` → call \`create-tasks\` with \`planningContext.source: "planning-skill"\`. - **Non-build workflow ops** (rename, toggle active, duplicate, move, describe, list executions, publish, delete) → direct \`workflows\` / \`executions\` tools. Do not run the builder. - **Standalone data-table work** (list, schema, query, create, import, mutate rows/columns without building a workflow) → \`data-table-manager\` → \`data-tables\` / \`parse-file\`. Natural requests like "what data tables do I have?", "show/list my tables", and "what columns are in this table?" count as standalone data-table work. Do not call \`create-tasks\`. - **Execution debugging** (failed runs, wrong/empty node output, a node reported as erroring or showing a red expression error) → \`debugging-executions\`. Inspect the real failure via \`executions\` before editing — never edit a reported-erroring node on a hunch. -- **n8n docs/product guidance** (credential setup, how to configure n8n features, hosting/API/node docs questions) → \`n8n-docs-assistant\` → \`n8n-docs\`. +- **n8n docs/product guidance** (credential setup, how to configure n8n features, hosting/API/node docs questions) → \`n8n-docs-assistant\` → load \`n8n-docs\` via \`load_tool\` → call \`n8n-docs\`. - **Browser credential setup** when \`credentials(action="setup")\` returns \`needsBrowserSetup=true\` → \`credential-setup-with-computer-use\`, then use Computer Use \`browser_*\` tools directly. - **Agent build or edit** (create an agent, change its instructions/tools/model, connect channels) → after intent-recognition classifies the request as *agent*, call \`build-agent\` right away and let the builder gather requirements — do not run your own requirement-gathering round first. The builder cannot see this conversation: its only knowledge is what you pass in \`message\`, so when the conversation already contains requirements, constraints, or answers to questions you asked, include ALL of them in the first \`message\` (plus \`name\` for a new agent or \`agentId\` for an existing one, and \`workflowContext\` for workflows built this session). While an agent build is in progress in this conversation, forward each user follow-up to \`build-agent\` near-verbatim and relay its \`builderReply\` back — do not re-ask questions the builder asks, and do not summarize away its questions. When the agent needs a capability that is a workflow, build the workflow first (\`workflow-builder\` flow), then pass it in \`workflowContext\`. @@ -160,7 +160,7 @@ After calling \`create-tasks\`, load \`planned-task-runtime\` guidance for silen ## Tool conventions - **Include entity names** — when a tool accepts an optional name parameter (e.g. \`workflowName\`, \`folderName\`, \`credentialName\`), always pass it. The name is shown to the user in confirmation dialogs. -- **Web research** — use \`research\` directly for most questions. Load \`planning\` and \`create-tasks\` only for broad detached synthesis across many sources. +- **Web research** — use \`research\` directly for most questions. Load \`planning\` and load \`create-tasks\` via \`load_tool\` only for broad detached synthesis across many sources. ${SECRET_ASK_GUARDRAIL} @@ -168,7 +168,7 @@ ${ toolSearchEnabled ? `## Tool Discovery -You have additional tools available beyond the ones listed above — including credential management, workflow operations, node browsing, data tables, filesystem access${mcpToolSearchEnabled ? ', and connected MCP integrations' : ''}. +You have additional tools available beyond the ones listed above — including filesystem access, task planning, n8n docs search, evals, and orchestration helpers${mcpToolSearchEnabled ? ', plus connected MCP integrations' : ''}. ${ mcpToolSearchEnabled @@ -176,9 +176,9 @@ ${ ` : '' -}When the visible tools do not cover the user's request, use \`search_tools\` with keyword queries to find relevant tools, then \`load_tool\` to activate them. Loaded tools persist for the rest of the conversation. +}When the visible tools do not cover the user's request, use \`search_tools\` with keyword queries to find relevant tools, then \`load_tool\` to activate them. Loaded tools persist for the rest of the conversation. When a loaded skill names a tool you do not see, search for that tool name and load it before proceeding. -Examples: ${mcpToolSearchEnabled ? 'search "notion page" or "linear issue" for the corresponding MCP tool, ' : ''}search "credential" for the credentials tool, search "file" for filesystem tools, search "workflow" for workflow management. +Examples: ${mcpToolSearchEnabled ? 'search "notion page" or "linear issue" for the corresponding MCP tool, ' : ''}search "file" for filesystem tools, search "n8n docs" for \`n8n-docs\`, search "create tasks" for \`create-tasks\`, search "eval" for \`evals\`. ` : '' diff --git a/packages/@n8n/instance-ai/src/errors/workflow-save-conflict.error.ts b/packages/@n8n/instance-ai/src/errors/workflow-save-conflict.error.ts new file mode 100644 index 00000000000..fc4b48692d7 --- /dev/null +++ b/packages/@n8n/instance-ai/src/errors/workflow-save-conflict.error.ts @@ -0,0 +1,13 @@ +import { OperationalError } from 'n8n-workflow'; + +/** + * Thrown when an Instance AI workflow save loses optimistic-concurrency: + * the workflow was modified outside the builder's last-known snapshot. + */ +export class WorkflowSaveConflictError extends OperationalError { + constructor(workflowId: string) { + super(`Workflow ${workflowId} was modified outside this conversation since the last save.`, { + level: 'warning', + }); + } +} diff --git a/packages/@n8n/instance-ai/src/index.ts b/packages/@n8n/instance-ai/src/index.ts index 30abd6ffd27..8e3eb6ff04a 100644 --- a/packages/@n8n/instance-ai/src/index.ts +++ b/packages/@n8n/instance-ai/src/index.ts @@ -174,6 +174,7 @@ const loadValidateAttachments = lazyModule( ); export { MAX_STEPS } from './constants/max-steps'; +export { WorkflowSaveConflictError } from './errors/workflow-save-conflict.error'; export { LEGACY_PLANNED_TASK_KINDS, PLANNED_TASK_KINDS, diff --git a/packages/@n8n/instance-ai/src/skills/__tests__/runtime-skills.test.ts b/packages/@n8n/instance-ai/src/skills/__tests__/runtime-skills.test.ts index f57fe68cca5..21a7e687554 100644 --- a/packages/@n8n/instance-ai/src/skills/__tests__/runtime-skills.test.ts +++ b/packages/@n8n/instance-ai/src/skills/__tests__/runtime-skills.test.ts @@ -139,6 +139,7 @@ describe('Instance AI runtime skills', () => { expect(skill?.linkedFiles.references).toEqual([]); const loaded = await source.loadSkill('n8n-docs-assistant'); + expect(loaded?.instructions).toContain('Before calling `n8n-docs`, load it via `load_tool`'); expect(loaded?.instructions).toContain('n8n-docs(action="lookup")'); expect(loaded?.instructions).toContain('intent: "credential-setup"'); expect(loaded?.instructions).toContain('oauthRedirectUrl'); @@ -221,6 +222,9 @@ describe('Instance AI runtime skills', () => { const loaded = await source.loadSkill('planning'); expect(loaded?.instructions).toContain('## When NOT to use this skill'); + expect(loaded?.instructions).toContain( + 'Before calling `create-tasks`, load it via `load_tool`', + ); expect(loaded?.instructions).toContain('Do not call `create-tasks` just to get approval'); expect(loaded?.instructions).toContain('planningContext.source: "planning-skill"'); expect(loaded?.instructions).toContain('Do not spawn another agent'); @@ -315,7 +319,10 @@ describe('Instance AI runtime skills', () => { expect(skill?.description).toContain('planned-task-follow-up'); const loaded = await source.loadSkill('planned-task-runtime'); - expect(loaded?.instructions).toContain(''); + expect(loaded?.instructions).toContain( + 'Before calling `create-tasks`, load it via `load_tool`', + ); + expect(loaded?.instructions).toContain('load `create-tasks` via `load_tool` if needed'); expect(loaded?.instructions).toContain('You MUST take action in this same turn'); expect(loaded?.instructions).toContain('awaiting_replan'); expect(loaded?.instructions).toMatch(/Do NOT reply with an\s+acknowledgement/); diff --git a/packages/@n8n/instance-ai/src/tools/__tests__/workflows.tool.test.ts b/packages/@n8n/instance-ai/src/tools/__tests__/workflows.tool.test.ts index 7843fa5c502..0a27a9e8545 100644 --- a/packages/@n8n/instance-ai/src/tools/__tests__/workflows.tool.test.ts +++ b/packages/@n8n/instance-ai/src/tools/__tests__/workflows.tool.test.ts @@ -10,6 +10,10 @@ import { buildCompletedReport, } from '../workflows/setup-workflow.service'; import { STRUCTURE_ONLY_NOTE } from '../workflows/summarize-workflow'; +import { + getWorkflowSourceFileBinding, + saveWorkflowSourceFileBinding, +} from '../workflows/workflow-file-bindings'; import { createWorkflowsTool, type WorkflowAction } from '../workflows.tool'; // Mock the setup-workflow.service module to avoid pulling in heavy dependencies @@ -643,6 +647,118 @@ describe('workflows tool', () => { }); }); + describe('workflow source binding refresh', () => { + it('refreshes bound checksum after current-version get-as-code', async () => { + const context = createMockContext(); + (context.workflowService.get as Mock).mockResolvedValue({ + id: 'wf1', + name: 'Test WF', + versionId: 'v-current', + checksum: 'checksum-current', + activeVersionId: null, + isArchived: false, + createdAt: '2024-01-01', + updatedAt: '2024-01-01', + nodes: [], + connections: {}, + }); + + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/main.workflow.ts', + workflowId: 'wf1', + workflowVersionId: 'v-stale', + workflowChecksum: 'checksum-stale', + }); + + const tool = createWorkflowsTool(context, 'full'); + await executeTool(tool, { action: 'get-as-code', workflowId: 'wf1' }, {} as never); + + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'wf1', + workflowVersionId: 'v-current', + workflowChecksum: 'checksum-current', + }); + }); + + it('does not refresh bound checksum for historical get-as-code reads', async () => { + const context = createMockContext(); + + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/main.workflow.ts', + workflowId: 'wf1', + workflowVersionId: 'v-stale', + workflowChecksum: 'checksum-stale', + }); + + const tool = createWorkflowsTool(context, 'full'); + await executeTool( + tool, + { action: 'get-as-code', workflowId: 'wf1', versionId: 'v7' }, + {} as never, + ); + + expect(context.workflowService.get).not.toHaveBeenCalled(); + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'wf1', + workflowVersionId: 'v-stale', + workflowChecksum: 'checksum-stale', + }); + }); + + it('refreshes bound checksum after update', async () => { + const context = createMockContext({ + permissions: { updateWorkflow: 'always_allow' }, + }); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf1', + versionId: 'v-updated', + checksum: 'checksum-updated', + }); + (context.workflowService.get as Mock).mockResolvedValue({ + id: 'wf1', + name: 'Test WF', + versionId: 'v-updated', + checksum: 'checksum-updated', + activeVersionId: null, + isArchived: false, + createdAt: '2024-01-01', + updatedAt: '2024-01-01', + nodes: [], + connections: {}, + }); + + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/main.workflow.ts', + workflowId: 'wf1', + workflowVersionId: 'v-stale', + workflowChecksum: 'checksum-stale', + }); + + const tool = createWorkflowsTool(context, 'full'); + await executeTool( + tool, + { + action: 'update', + workflowId: 'wf1', + workflow: { name: 'Updated WF', nodes: [], connections: {} }, + }, + { resumeData: { approved: true } } as never, + ); + + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'wf1', + workflowVersionId: 'v-updated', + workflowChecksum: 'checksum-updated', + }); + }); + }); + describe('delete action', () => { it('should return denied when permission is blocked', async () => { const context = createMockContext({ @@ -921,6 +1037,7 @@ describe('workflows tool', () => { id: workflowId, name: workflowId, versionId: `${workflowId}-draft`, + checksum: `${workflowId}-checksum`, activeVersionId: workflowId === 'sub-a' ? 'sub-a-previous' : null, isArchived: false, createdAt: '2024-01-01', @@ -933,6 +1050,19 @@ describe('workflows tool', () => { return { activeVersionId: `${workflowId}-active` }; }); + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/sub-a.workflow.ts', + workflowId: 'sub-a', + workflowVersionId: 'sub-a-previous', + workflowChecksum: 'sub-a-previous-checksum', + }); + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/sub-b.workflow.ts', + workflowId: 'sub-b', + workflowVersionId: 'sub-b-previous', + workflowChecksum: 'sub-b-previous-checksum', + }); + const tool = createWorkflowsTool(context, 'full'); const result = await executeTool(tool, { action: 'publish', workflowId: 'wf1' }, { resumeData: { approved: true }, @@ -952,6 +1082,20 @@ describe('workflows tool', () => { error: 'Main publish failed', rolledBackWorkflowIds: ['sub-b', 'sub-a'], }); + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/sub-a.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'sub-a', + workflowVersionId: 'sub-a-draft', + workflowChecksum: 'sub-a-checksum', + }); + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/sub-b.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'sub-b', + workflowVersionId: 'sub-b-draft', + workflowChecksum: 'sub-b-checksum', + }); }); it('should suspend for confirmation using the looked-up workflow name', async () => { diff --git a/packages/@n8n/instance-ai/src/tools/evals/__tests__/evals.tool.test.ts b/packages/@n8n/instance-ai/src/tools/evals/__tests__/evals.tool.test.ts index 1c8437ddd6b..e65dac5c7a5 100644 --- a/packages/@n8n/instance-ai/src/tools/evals/__tests__/evals.tool.test.ts +++ b/packages/@n8n/instance-ai/src/tools/evals/__tests__/evals.tool.test.ts @@ -219,7 +219,11 @@ function makeCtx( userId: 'u1', workflowService: { getAsWorkflowJSON: vi.fn().mockResolvedValue(wf), - updateFromWorkflowJSON: vi.fn().mockResolvedValue(undefined), + updateFromWorkflowJSON: vi.fn().mockResolvedValue({ + id: 'w1', + versionId: 'v-1', + checksum: 'checksum-1', + }), }, dataTableService: { create: vi.fn().mockResolvedValue({ diff --git a/packages/@n8n/instance-ai/src/tools/evals/evals.tool.ts b/packages/@n8n/instance-ai/src/tools/evals/evals.tool.ts index 2c6ef361ad7..4fdf9eb5151 100644 --- a/packages/@n8n/instance-ai/src/tools/evals/evals.tool.ts +++ b/packages/@n8n/instance-ai/src/tools/evals/evals.tool.ts @@ -26,6 +26,7 @@ import { } from './metric-catalog'; import { sanitizeInputSchema } from '../../agent/sanitize-mcp-schemas'; import type { InstanceAiContext } from '../../types'; +import { refreshWorkflowSourceFileBindingFromSave } from '../workflows/workflow-file-bindings'; // ── Action input schemas ─────────────────────────────────────────────────── @@ -528,8 +529,16 @@ async function executePropose(context: InstanceAiContext, input: z.infer, input: N8n export function createN8nDocsTool(context: Pick) { return new Tool(N8N_DOCS_TOOL_ID) .description( - `Search and read current n8n documentation from docs.n8n.io. Use for n8n product, setup, credential, node, hosting, API, and troubleshooting questions. ${SOURCE_ATTRIBUTION_INSTRUCTION}`, + `Search and read current n8n documentation from docs.n8n.io. Load via \`load_tool\` before calling (search "n8n docs" if not visible). Use for n8n product, setup, credential, node, hosting, API, and troubleshooting questions. ${SOURCE_ATTRIBUTION_INSTRUCTION}`, ) .input(n8nDocsToolInputSchema) .handler(async (input) => { diff --git a/packages/@n8n/instance-ai/src/tools/orchestration/__tests__/plan.tool.test.ts b/packages/@n8n/instance-ai/src/tools/orchestration/__tests__/plan.tool.test.ts index cd40bfe36b4..3d6a044c37e 100644 --- a/packages/@n8n/instance-ai/src/tools/orchestration/__tests__/plan.tool.test.ts +++ b/packages/@n8n/instance-ai/src/tools/orchestration/__tests__/plan.tool.test.ts @@ -260,7 +260,7 @@ describe('createPlanTool — planning context guard', () => { expect(out.taskCount).toBe(0); expect(out.result).toContain( - 'must call `create-tasks` with `planningContext.source: "replan"`', + 'must load `create-tasks` via `load_tool` if needed, then call `create-tasks`', ); expect(context.plannedTaskService!.createPlan).not.toHaveBeenCalled(); }); diff --git a/packages/@n8n/instance-ai/src/tools/orchestration/plan.tool.ts b/packages/@n8n/instance-ai/src/tools/orchestration/plan.tool.ts index 0408ad1fb43..d9d0644cf20 100644 --- a/packages/@n8n/instance-ai/src/tools/orchestration/plan.tool.ts +++ b/packages/@n8n/instance-ai/src/tools/orchestration/plan.tool.ts @@ -108,8 +108,9 @@ function validatePlanningContext( }); return ( 'Error: `create-tasks` requires `planningContext`. For initial plan-worthy work, load the ' + - '`planning` skill first, perform discovery with normal tools, then call `create-tasks` with ' + - '`planningContext.source: "planning-skill"`. For planned-task replan follow-ups, use ' + + '`planning` skill first, perform discovery with normal tools, load `create-tasks` via ' + + '`load_tool`, then call `create-tasks` with `planningContext.source: "planning-skill"`. ' + + 'For planned-task replan follow-ups, load `create-tasks` if needed, then use ' + '`planningContext.source: "replan"`.' ); } @@ -121,8 +122,9 @@ function validatePlanningContext( source: planningContext.source, }); return ( - 'Error: `` turns must call `create-tasks` with ' + - '`planningContext.source: "replan"` when scheduling multiple dependent tasks.' + 'Error: `` turns must load `create-tasks` via ' + + '`load_tool` if needed, then call `create-tasks` with `planningContext.source: "replan"` ' + + 'when scheduling multiple dependent tasks.' ); } return undefined; @@ -136,7 +138,8 @@ function validatePlanningContext( return ( 'Error: `planningContext.source: "replan"` is only valid in planned-task replan follow-up turns. ' + 'For initial plan-worthy work, load the `planning` skill, perform discovery with normal tools, ' + - 'then call `create-tasks` with `planningContext.source: "planning-skill"`.' + 'load `create-tasks` via `load_tool`, then call `create-tasks` with ' + + '`planningContext.source: "planning-skill"`.' ); } @@ -147,6 +150,7 @@ export function createPlanTool(context: OrchestrationContext) { return new Tool('create-tasks') .description( 'Submit a dependency-aware task graph for detached multi-step execution. ' + + 'Load via `load_tool` before calling (search "create tasks" if not visible). ' + 'Use after loading the `planning` skill for initial plan-worthy work, or during ' + '`` when multiple dependent tasks still need scheduling. ' + 'Requires `planningContext.source` to be `planning-skill` or `replan` as appropriate. ' + @@ -324,7 +328,7 @@ export function createPlanTool(context: OrchestrationContext) { // graph cannot dispatch, and the next `create-tasks` call overwrites // it with the revised graph. return { - result: `User requested changes: ${resumeData.userInput ?? 'No feedback provided'}. Revise the tasks and call create-tasks again.`, + result: `User requested changes: ${resumeData.userInput ?? 'No feedback provided'}. Revise the tasks, load create-tasks via load_tool if needed, and call create-tasks again.`, taskCount: 0, }; }) diff --git a/packages/@n8n/instance-ai/src/tools/tool-ids.ts b/packages/@n8n/instance-ai/src/tools/tool-ids.ts index cb3fb8b1003..4001491e74c 100644 --- a/packages/@n8n/instance-ai/src/tools/tool-ids.ts +++ b/packages/@n8n/instance-ai/src/tools/tool-ids.ts @@ -45,7 +45,6 @@ export const N8N_DOCS_TOOL_ID = DOMAIN_TOOL_IDS.N8N_DOCS; export const ORCHESTRATION_TOOL_NAMES = new Set(Object.values(ORCHESTRATION_TOOL_IDS)); export const ALWAYS_LOADED_TOOL_NAMES = new Set([ - ORCHESTRATION_TOOL_IDS.CREATE_TASKS, DOMAIN_TOOL_IDS.ASK_USER, DOMAIN_TOOL_IDS.CREDENTIALS, DOMAIN_TOOL_IDS.WORKFLOWS, @@ -54,10 +53,8 @@ export const ALWAYS_LOADED_TOOL_NAMES = new Set([ DOMAIN_TOOL_IDS.PARSE_FILE, DOMAIN_TOOL_IDS.BUILD_WORKFLOW, DOMAIN_TOOL_IDS.NODES, - DOMAIN_TOOL_IDS.N8N_DOCS, ORCHESTRATION_TOOL_IDS.VERIFY_BUILT_WORKFLOW, DOMAIN_TOOL_IDS.RESEARCH, - DOMAIN_TOOL_IDS.EVALS, 'web-search', 'fetch-url', ]); diff --git a/packages/@n8n/instance-ai/src/tools/workflows.tool.ts b/packages/@n8n/instance-ai/src/tools/workflows.tool.ts index 60773def34d..152ef039220 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows.tool.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows.tool.ts @@ -24,6 +24,7 @@ import { summarizeWorkflowStructure, } from './workflows/summarize-workflow'; import { validateWorkflowConfig } from './workflows/validate-workflow.service'; +import { refreshWorkflowSourceFileBindingFromWorkflow } from './workflows/workflow-file-bindings'; import { getReferencedWorkflowIds } from './workflows/workflow-json-utils'; // ── Action schemas ────────────────────────────────────────────────────────── @@ -445,6 +446,10 @@ async function handleGetAsCode( try { const json = await context.workflowService.getAsWorkflowJSON(input.workflowId, input.versionId); const code = generateWorkflowCode(json); + // Historical reads must not advance the optimistic-concurrency lock. + if (!input.versionId) { + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); + } return { workflowId: input.workflowId, name: json.name, code }; } catch (error) { return { @@ -485,6 +490,7 @@ async function handleDelete( } await context.workflowService.archive(input.workflowId); + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); return { success: true }; } @@ -515,6 +521,7 @@ async function handleUnarchive( } await context.workflowService.unarchive(input.workflowId); + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); return { success: true }; } @@ -738,6 +745,7 @@ async function handleSetup( if (!resumeData.approved) { if (state.preTestSnapshot) { await context.workflowService.updateFromWorkflowJSON(input.workflowId, state.preTestSnapshot); + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); state.preTestSnapshot = null; } return { @@ -827,6 +835,7 @@ async function handleUpdate( try { await context.workflowService.updateFromWorkflowJSON(input.workflowId, input.workflow); + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); return { success: true, workflowId: input.workflowId }; } catch (error) { return { @@ -882,6 +891,7 @@ async function handlePublish( try { for (const supportingWorkflowId of supportingWorkflowIds) { await context.workflowService.publish(supportingWorkflowId); + await refreshWorkflowSourceFileBindingFromWorkflow(context, supportingWorkflowId); publishedSupportingWorkflowIds.push(supportingWorkflowId); publishedWorkflowIds.push(supportingWorkflowId); } @@ -896,6 +906,7 @@ async function handlePublish( : {}), }); publishedWorkflowIds.push(input.workflowId); + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); return { success: true, @@ -953,6 +964,7 @@ async function rollbackPublishedWorkflows( } else { await context.workflowService.unpublish(workflowId); } + await refreshWorkflowSourceFileBindingFromWorkflow(context, workflowId); result.rolledBackWorkflowIds.push(workflowId); } catch (error) { result.rollbackErrors.push({ @@ -1018,6 +1030,7 @@ async function handleUnpublish( try { await context.workflowService.unpublish(input.workflowId); + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); return { success: true }; } catch (error) { return { @@ -1074,6 +1087,7 @@ async function handleRestoreVersion( try { await context.workflowService.restoreVersion!(input.workflowId, input.versionId); + await refreshWorkflowSourceFileBindingFromWorkflow(context, input.workflowId); return { success: true }; } catch (error) { return { diff --git a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/apply-workflow-credentials.tool.test.ts b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/apply-workflow-credentials.tool.test.ts index a11a66984fb..764a9285e1d 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/apply-workflow-credentials.tool.test.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/apply-workflow-credentials.tool.test.ts @@ -29,7 +29,11 @@ function makeContext(options: MakeContextOptions = {}): OrchestrationContext { userId: 'user-1', workflowService: { getAsWorkflowJSON: vi.fn().mockResolvedValue(workflowJson), - updateFromWorkflowJSON: vi.fn().mockResolvedValue(undefined), + updateFromWorkflowJSON: vi.fn().mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }), } as never, credentialService: { get: vi.fn().mockResolvedValue({ id: 'cred-1', name: 'My Key' }), diff --git a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/build-workflow.tool.test.ts b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/build-workflow.tool.test.ts index 75d9af0f2dd..332be9a1ecf 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/build-workflow.tool.test.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/build-workflow.tool.test.ts @@ -1,4 +1,5 @@ import { executeTool } from '../../../__tests__/tool-test-utils'; +import { WorkflowSaveConflictError } from '../../../errors/workflow-save-conflict.error'; import { emitTraceOnlyChildRun } from '../../../tracing/langsmith-tracing'; import type { InstanceAiContext } from '../../../types'; import type { WorkflowBuildOutcome } from '../../../workflow-loop/workflow-loop-state'; @@ -131,11 +132,24 @@ function makeContext(input: { runId: 'run-1', workflowService: { createFromWorkflowJSON: vi.fn( - async () => await Promise.resolve({ id: 'wf-1', versionId: 'v-1' }), + async () => + await Promise.resolve({ id: 'wf-1', versionId: 'v-1', checksum: 'checksum-create' }), ), updateFromWorkflowJSON: vi.fn( async (workflowId: string) => - await Promise.resolve({ id: workflowId, versionId: 'v-next' }), + await Promise.resolve({ + id: workflowId, + versionId: 'v-next', + checksum: 'checksum-update', + }), + ), + get: vi.fn( + async (workflowId: string) => + await Promise.resolve({ + id: workflowId, + versionId: 'v-current', + checksum: 'checksum-current', + }), ), getAsWorkflowJSON: vi.fn(async () => await Promise.resolve({ name: 'Target workflow' })), clearAiTemporary: vi.fn(async () => await Promise.resolve()), @@ -430,12 +444,22 @@ describe('createBuildWorkflowTool', () => { expect(first).toMatchObject({ success: true, workflowId: 'wf-bound' }); expect(second).toMatchObject({ success: true, workflowId: 'wf-bound' }); expect(context.workflowService.updateFromWorkflowJSON).toHaveBeenCalledTimes(2); - expect(context.workflowService.updateFromWorkflowJSON).toHaveBeenCalledWith( + expect(context.workflowService.updateFromWorkflowJSON).toHaveBeenNthCalledWith( + 1, 'wf-bound', expect.any(Object), - undefined, + { expectedChecksum: 'checksum-current' }, + ); + expect(context.workflowService.updateFromWorkflowJSON).toHaveBeenNthCalledWith( + 2, + 'wf-bound', + expect.any(Object), + { expectedChecksum: 'checksum-update' }, ); expect(context.workflowService.createFromWorkflowJSON).not.toHaveBeenCalled(); + await expect(getWorkflowSourceFileBinding(context, filePath)).resolves.toMatchObject({ + workflowChecksum: 'checksum-update', + }); expect(trackTelemetry).toHaveBeenCalledWith( 'instance_ai_workflow_source_build', expect.objectContaining({ @@ -450,6 +474,46 @@ describe('createBuildWorkflowTool', () => { ); }); + it('returns conflict remediation when the workflow changed outside the conversation', async () => { + const { context, filePath, trackTelemetry } = makeContext({ source: 'workflow source' }); + const tool = createBuildWorkflowTool(context); + + await executeTool(tool, { + filePath, + workflowId: 'wf-bound', + }); + + vi.mocked(context.workflowService.updateFromWorkflowJSON).mockRejectedValueOnce( + new WorkflowSaveConflictError('wf-bound'), + ); + + const result = await executeTool(tool, { filePath }); + + expect(result).toMatchObject({ + success: false, + filePath, + workflowId: 'wf-bound', + remediation: { + category: 'code_fixable', + shouldEdit: true, + reason: 'workflow_modified_externally', + }, + }); + expect(context.workflowService.updateFromWorkflowJSON).toHaveBeenLastCalledWith( + 'wf-bound', + expect.any(Object), + { expectedChecksum: 'checksum-update' }, + ); + expect(trackTelemetry).toHaveBeenCalledWith( + 'instance_ai_workflow_source_build', + expect.objectContaining({ + result: 'failure', + stage: 'conflict', + target_workflow_id: 'wf-bound', + }), + ); + }); + it('preserves setup-applied placeholder values before updating an existing workflow', async () => { const rebuiltWorkflow = { name: 'Daily Berlin Rain Alert', @@ -524,6 +588,14 @@ describe('createBuildWorkflowTool', () => { async (workflowId: string) => await Promise.resolve({ id: workflowId, versionId: 'v-next' }), ), + get: vi.fn( + async (workflowId: string) => + await Promise.resolve({ + id: workflowId, + versionId: 'v-current', + checksum: 'checksum-current', + }), + ), getAsWorkflowJSON: vi.fn(async () => await Promise.resolve(existingWorkflow)), clearAiTemporary: vi.fn(async () => await Promise.resolve()), } as unknown as InstanceAiContext['workflowService'], @@ -538,7 +610,7 @@ describe('createBuildWorkflowTool', () => { expect(context.workflowService.updateFromWorkflowJSON).toHaveBeenCalledWith( 'wf-existing', expect.any(Object), - undefined, + { expectedChecksum: 'checksum-current' }, ); const savedWorkflow = vi.mocked(context.workflowService.updateFromWorkflowJSON).mock .calls[0]?.[1]; @@ -601,7 +673,7 @@ describe('createBuildWorkflowTool', () => { expect(context.workflowService.updateFromWorkflowJSON).toHaveBeenCalledWith( 'wf-existing', workflowJson, - undefined, + { expectedChecksum: 'checksum-current' }, ); expect(context.workflowService.createFromWorkflowJSON).not.toHaveBeenCalled(); }); diff --git a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/setup-workflow.service.test.ts b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/setup-workflow.service.test.ts index 7a06c456666..3db2755e1a8 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/setup-workflow.service.test.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/setup-workflow.service.test.ts @@ -27,7 +27,11 @@ function createMockContext(overrides?: Partial): InstanceAiCo getWorkflowHead: vi.fn(), getWorkflowSnapshot: vi.fn(), createFromWorkflowJSON: vi.fn(), - updateFromWorkflowJSON: vi.fn(), + updateFromWorkflowJSON: vi.fn().mockResolvedValue({ + id: 'wf-1', + versionId: 'v-next', + checksum: 'checksum-next', + }), archive: vi.fn(), unarchive: vi.fn(), publish: vi.fn(), @@ -1037,7 +1041,11 @@ describe('applyNodeChanges', () => { (context.credentialService.get as Mock).mockImplementation( async (id: string) => await Promise.resolve({ id, name: `Cred ${id}` }), ); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); const result = await applyNodeChanges( context, @@ -1057,7 +1065,11 @@ describe('applyNodeChanges', () => { const wfJson = makeWorkflowJSON([makeNode({ name: 'Slack', id: 'n1' })]); (context.workflowService.getAsWorkflowJSON as Mock).mockResolvedValue(wfJson); (context.credentialService.get as Mock).mockResolvedValue(undefined); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); const result = await applyNodeChanges(context, 'wf-1', { Slack: { slackApi: 'nonexistent' }, @@ -1106,7 +1118,11 @@ describe('applyNodeChanges', () => { }, ], }); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); await applyNodeChanges(context, 'wf-1'); @@ -1135,7 +1151,11 @@ describe('applyNodeChanges', () => { id: 'cred-1', name: 'My Header Auth', }); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); await applyNodeChanges(context, 'wf-1', { 'HTTP Request': { httpHeaderAuth: 'cred-1' }, @@ -1155,7 +1175,11 @@ describe('applyNodeChanges', () => { const node = makeNode({ name: 'Gemini', type: 'n8n-nodes-base.lmChatGoogleGemini' }); const wfJson = makeWorkflowJSON([node]); (context.workflowService.getAsWorkflowJSON as Mock).mockResolvedValue(wfJson); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); const result = await applyNodeChanges(context, 'wf-1', { Gemini: { googlePalmApi: AI_GATEWAY_MANAGED_TAG }, @@ -1184,7 +1208,11 @@ describe('applyNodeChanges', () => { group: [], credentials: [], }); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); const result = await applyNodeChanges(context, 'wf-1', undefined, { 'HTTP Request': { url: 'https://example.com/api' }, @@ -1220,7 +1248,11 @@ describe('applyNodeChanges', () => { group: [], credentials: [], }); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); const result = await applyNodeChanges(context, 'wf-1', undefined, { channelId: { __rl: true, mode: 'name', value: '#berlin-weather-rain' }, @@ -1260,7 +1292,11 @@ describe('applyNodeChanges', () => { group: [], credentials: [], }); - (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue(undefined); + (context.workflowService.updateFromWorkflowJSON as Mock).mockResolvedValue({ + id: 'wf-1', + versionId: 'v-1', + checksum: 'checksum-1', + }); await applyNodeChanges(context, 'wf-1'); diff --git a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/workflow-build-remediation.test.ts b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/workflow-build-remediation.test.ts new file mode 100644 index 00000000000..55ce991083a --- /dev/null +++ b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/workflow-build-remediation.test.ts @@ -0,0 +1,15 @@ +import { WorkflowSaveConflictError } from '../../../errors/workflow-save-conflict.error'; +import { createSaveFailureRemediation } from '../workflow-build-remediation'; + +describe('createSaveFailureRemediation', () => { + it('returns workflow_modified_externally remediation for save conflicts', () => { + const remediation = createSaveFailureRemediation(new WorkflowSaveConflictError('wf-1'), true); + + expect(remediation).toMatchObject({ + category: 'code_fixable', + shouldEdit: true, + reason: 'workflow_modified_externally', + }); + expect(remediation.guidance).toContain('get-as-code'); + }); +}); diff --git a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/workflow-file-bindings.test.ts b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/workflow-file-bindings.test.ts index 55e3bf304e6..0733d35b13a 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/__tests__/workflow-file-bindings.test.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/__tests__/workflow-file-bindings.test.ts @@ -1,6 +1,9 @@ import type { InstanceAiContext } from '../../../types'; import { + bindSourceFileToExistingWorkflow, getWorkflowSourceFileBinding, + refreshWorkflowSourceFileBindingFromSave, + refreshWorkflowSourceFileBindingFromWorkflow, saveWorkflowSourceFileBinding, } from '../workflow-file-bindings'; @@ -34,4 +37,114 @@ describe('workflow source file bindings', () => { workflowId: 'wf-1', }); }); + + it('refreshes checksum and version for bindings tied to a workflow id', async () => { + const context = { + logger: { debug: vi.fn(), warn: vi.fn() }, + } as unknown as InstanceAiContext; + + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/main.workflow.ts', + workflowId: 'wf-1', + workflowVersionId: 'v-old', + workflowChecksum: 'checksum-old', + }); + + await refreshWorkflowSourceFileBindingFromSave(context, 'wf-1', { + versionId: 'v-new', + checksum: 'checksum-new', + }); + + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'wf-1', + workflowVersionId: 'v-new', + workflowChecksum: 'checksum-new', + }); + }); + + it('clears workflowChecksum when refresh receives no checksum', async () => { + const context = { + logger: { debug: vi.fn(), warn: vi.fn() }, + } as unknown as InstanceAiContext; + + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/main.workflow.ts', + workflowId: 'wf-1', + workflowVersionId: 'v-old', + workflowChecksum: 'checksum-old', + }); + + await refreshWorkflowSourceFileBindingFromSave(context, 'wf-1', { + versionId: 'v-new', + }); + + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'wf-1', + workflowVersionId: 'v-new', + }); + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.not.toHaveProperty('workflowChecksum'); + }); + + it('seeds version and checksum when binding a source file to an existing workflow', async () => { + const context = { + workflowService: { + get: vi.fn().mockResolvedValue({ + id: 'wf-1', + versionId: 'v-current', + checksum: 'checksum-current', + }), + }, + logger: { debug: vi.fn(), warn: vi.fn() }, + } as unknown as InstanceAiContext; + + await bindSourceFileToExistingWorkflow( + context, + { filePath: 'src/workflows/main.workflow.ts' }, + 'wf-1', + ); + + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'wf-1', + workflowVersionId: 'v-current', + workflowChecksum: 'checksum-current', + }); + }); + + it('refreshes bindings from the current workflow record', async () => { + const context = { + workflowService: { + get: vi.fn().mockResolvedValue({ + id: 'wf-1', + versionId: 'v-current', + checksum: 'checksum-current', + }), + }, + logger: { debug: vi.fn(), warn: vi.fn() }, + } as unknown as InstanceAiContext; + + await saveWorkflowSourceFileBinding(context, { + filePath: 'src/workflows/main.workflow.ts', + workflowId: 'wf-1', + workflowVersionId: 'v-stale', + workflowChecksum: 'checksum-stale', + }); + + await refreshWorkflowSourceFileBindingFromWorkflow(context, 'wf-1'); + + await expect( + getWorkflowSourceFileBinding(context, 'src/workflows/main.workflow.ts'), + ).resolves.toMatchObject({ + workflowId: 'wf-1', + workflowVersionId: 'v-current', + workflowChecksum: 'checksum-current', + }); + }); }); diff --git a/packages/@n8n/instance-ai/src/tools/workflows/apply-workflow-credentials.tool.ts b/packages/@n8n/instance-ai/src/tools/workflows/apply-workflow-credentials.tool.ts index a6ef5c5441c..3802ec18260 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/apply-workflow-credentials.tool.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/apply-workflow-credentials.tool.ts @@ -12,6 +12,7 @@ import { z } from 'zod'; import { assignCredentialToNode, resolveCredentialForApply } from './credential-utils'; import { reconcileSimulationPlan } from './reconcile-simulation-plan'; import { buildCredentialMap } from './resolve-credentials'; +import { refreshWorkflowSourceFileBindingFromSave } from './workflow-file-bindings'; import type { OrchestrationContext } from '../../types'; export const applyWorkflowCredentialsInputSchema = z.object({ @@ -84,7 +85,11 @@ export function createApplyWorkflowCredentialsTool(context: OrchestrationContext // Save the workflow with applied credentials try { - await workflowService.updateFromWorkflowJSON(input.workflowId, json); + const saved = await workflowService.updateFromWorkflowJSON(input.workflowId, json); + await refreshWorkflowSourceFileBindingFromSave(context.domainContext, input.workflowId, { + versionId: saved.versionId, + checksum: saved.checksum, + }); } catch (error) { return { success: false, diff --git a/packages/@n8n/instance-ai/src/tools/workflows/build-workflow.tool.ts b/packages/@n8n/instance-ai/src/tools/workflows/build-workflow.tool.ts index aa50b80624c..25fea6abdf3 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/build-workflow.tool.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/build-workflow.tool.ts @@ -28,6 +28,7 @@ import { createCodeFixableRemediation, createSaveFailureRemediation, createSourceCompileRemediation, + createWorkflowModifiedExternallyRemediation, } from './workflow-build-remediation'; import { promoteMainWorkflow, @@ -37,6 +38,7 @@ import { import { withDeterministicRouting } from './workflow-build-routing'; import { trackWorkflowSourceBuild } from './workflow-build-telemetry'; import { + bindSourceFileToExistingWorkflow, getWorkflowSourceFileBinding, hashWorkflowSource, normalizeWorkflowSourceFilePath, @@ -51,15 +53,16 @@ import { preserveExistingSetupValues, } from './workflow-json-utils'; import { compileWorkflowSource } from './workflow-source-compiler'; -import { emitTraceOnlyChildRun } from '../../tracing/langsmith-tracing'; -import { COMPILED_WORKFLOW_TRACE_RUN_NAME } from '../tool-ids'; import { partitionWarnings, type ValidationWarning } from './workflow-validation-warnings'; +import { WorkflowSaveConflictError } from '../../errors/workflow-save-conflict.error'; import { INSTANCE_AI_SKILLS_DIR } from '../../skills/runtime-skills'; +import { emitTraceOnlyChildRun } from '../../tracing/langsmith-tracing'; import type { InstanceAiContext } from '../../types'; import { BuildFailureTracker } from '../../workflow-builder/build-failure-tracker'; import { createRemediation } from '../../workflow-loop/remediation'; import { remediationMetadataSchema } from '../../workflow-loop/workflow-loop-state'; import { writeWorkspaceFile } from '../../workspace/workspace-files'; +import { COMPILED_WORKFLOW_TRACE_RUN_NAME } from '../tool-ids'; /** Over this serialized length only a `truncated` marker is emitted; the seed * consumer falls back to source replay. */ @@ -336,10 +339,7 @@ export function createBuildWorkflowTool(context: InstanceAiContext) { } if (input.workflowId && !binding.workflowId) { - binding = await saveWorkflowSourceFileBinding(context, { - ...binding, - workflowId: input.workflowId, - }); + binding = await bindSourceFileToExistingWorkflow(context, binding, input.workflowId); } const targetWorkflowId = binding.workflowId; @@ -732,7 +732,7 @@ export function createBuildWorkflowTool(context: InstanceAiContext) { ); const hasPlaceholders = (json.nodes ?? []).some((n) => hasPlaceholderDeep(n.parameters)); const createSuccessResponse = async ( - saved: { id: string; versionId: string }, + saved: { id: string; versionId: string; checksum?: string }, operation: 'create' | 'update', ) => { const setupRequests = await analyzeWorkflow(context, saved.id); @@ -751,6 +751,7 @@ export function createBuildWorkflowTool(context: InstanceAiContext) { ...binding, workflowId: saved.id, workflowVersionId: saved.versionId, + ...(saved.checksum ? { workflowChecksum: saved.checksum } : {}), sourceHash, }); // Trace-only compiled-JSON event for eval seed reconstruction — never part @@ -867,10 +868,18 @@ export function createBuildWorkflowTool(context: InstanceAiContext) { }; if (targetWorkflowId) { + const updateOptions = projectId + ? { + projectId, + ...(binding.workflowChecksum ? { expectedChecksum: binding.workflowChecksum } : {}), + } + : binding.workflowChecksum + ? { expectedChecksum: binding.workflowChecksum } + : undefined; const updated = await context.workflowService.updateFromWorkflowJSON( targetWorkflowId, json, - projectId ? { projectId } : undefined, + updateOptions, ); return await createSuccessResponse(updated, 'update'); } @@ -883,6 +892,44 @@ export function createBuildWorkflowTool(context: InstanceAiContext) { return await createSuccessResponse(created, 'create'); } catch (error) { const message = error instanceof Error ? error.message : 'Unknown error'; + + if (error instanceof WorkflowSaveConflictError) { + const remediation = createWorkflowModifiedExternallyRemediation(); + binding = await markSourceBuildFailed(context, binding, sourceHash); + await reportFailedWorkflowBuildOutcome(context, { + targetWorkflowId, + sourceFilePath: filePath, + workItemId: resolvedWorkItemId, + taskId: resolvedTaskId, + plannedTaskId, + owner, + remediation, + errors: [message], + summary: 'Workflow save conflict — the workflow changed outside this conversation.', + storeOnRunContext: !isAuxiliarySupportingWorkflow, + }); + trackWorkflowSourceBuild(context, { + result: 'failure', + stage: 'conflict', + binding, + targetWorkflowId, + saveOperation: 'update', + isSupportingWorkflow, + isAuxiliarySupportingWorkflow, + remediation, + errorCount: 1, + }); + return { + success: false, + ...sourceResponseBase(binding), + workflowId: targetWorkflowId, + workflowName: json.name || undefined, + workItemId: resolvedWorkItemId, + errors: [message], + remediation, + }; + } + const remediation = createSaveFailureRemediation(error, Boolean(binding.workflowId)); binding = await markSourceBuildFailed(context, binding, sourceHash); await reportFailedWorkflowBuildOutcome(context, { diff --git a/packages/@n8n/instance-ai/src/tools/workflows/setup-workflow.service.ts b/packages/@n8n/instance-ai/src/tools/workflows/setup-workflow.service.ts index d3448c5f688..338f3c826e0 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/setup-workflow.service.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/setup-workflow.service.ts @@ -21,6 +21,7 @@ import { } from './credential-utils'; import { coerceWrongKindListModeParams } from './detect-wrong-kind-locator'; import type { SetupRequest } from './setup-workflow.schema'; +import { refreshWorkflowSourceFileBindingFromSave } from './workflow-file-bindings'; import type { InstanceAiContext } from '../../types'; // ── Credential cache ──────────────────────────────────────────────────────── @@ -765,7 +766,11 @@ export async function applyNodeCredentials( } try { - await context.workflowService.updateFromWorkflowJSON(workflowId, workflowJson); + const saved = await context.workflowService.updateFromWorkflowJSON(workflowId, workflowJson); + await refreshWorkflowSourceFileBindingFromSave(context, workflowId, { + versionId: saved.versionId, + checksum: saved.checksum, + }); } catch (error) { // If the final save fails, mark all previously-applied nodes as failed const saveError = `Failed to save workflow after credential apply: ${error instanceof Error ? error.message : 'Unknown error'}`; @@ -808,7 +813,11 @@ export async function applyNodeParameters( } try { - await context.workflowService.updateFromWorkflowJSON(workflowId, workflowJson); + const saved = await context.workflowService.updateFromWorkflowJSON(workflowId, workflowJson); + await refreshWorkflowSourceFileBindingFromSave(context, workflowId, { + versionId: saved.versionId, + checksum: saved.checksum, + }); } catch (error) { const saveError = `Failed to save workflow after parameter apply: ${error instanceof Error ? error.message : 'Unknown error'}`; for (const nodeName of result.applied) { @@ -909,7 +918,11 @@ export async function applyNodeChanges( // Single save for all changes try { - await context.workflowService.updateFromWorkflowJSON(workflowId, workflowJson); + const saved = await context.workflowService.updateFromWorkflowJSON(workflowId, workflowJson); + await refreshWorkflowSourceFileBindingFromSave(context, workflowId, { + versionId: saved.versionId, + checksum: saved.checksum, + }); result.applied = [...appliedNodes]; } catch (error) { const saveError = `Failed to save workflow: ${error instanceof Error ? error.message : 'Unknown error'}`; diff --git a/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-remediation.ts b/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-remediation.ts index 9e09b5d1bb9..4c7a54177f8 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-remediation.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-remediation.ts @@ -1,4 +1,5 @@ import type { WorkflowSourceCompileFailureReason } from './workflow-source-compiler'; +import { WorkflowSaveConflictError } from '../../errors/workflow-save-conflict.error'; import { createRemediation } from '../../workflow-loop/remediation'; import type { RemediationMetadata } from '../../workflow-loop/workflow-loop-state'; @@ -48,10 +49,22 @@ export function createCodeFixableRemediation(input: { }); } +export function createWorkflowModifiedExternallyRemediation(): RemediationMetadata { + return createCodeFixableRemediation({ + reason: 'workflow_modified_externally', + guidance: + 'The workflow was modified outside this conversation since your last save (canvas edit, setup, credential change, or version revert). Call workflows(action="get-as-code", workflowId), re-apply your intended change to the returned code, write it to the same filePath, then call build-workflow again with the same filePath.', + }); +} + export function createSaveFailureRemediation( error: unknown, hasBoundWorkflowId: boolean, ): RemediationMetadata { + if (error instanceof WorkflowSaveConflictError) { + return createWorkflowModifiedExternallyRemediation(); + } + const text = getFailureText(error); if (isCredentialSaveFailure(text)) { diff --git a/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-telemetry.ts b/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-telemetry.ts index 67e134b255a..1bc7ef237ea 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-telemetry.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/workflow-build-telemetry.ts @@ -10,7 +10,8 @@ export type BuildTelemetryStage = | 'parse' | 'validation' | 'name' - | 'save'; + | 'save' + | 'conflict'; export function trackWorkflowSourceBuild( context: InstanceAiContext, diff --git a/packages/@n8n/instance-ai/src/tools/workflows/workflow-file-bindings.ts b/packages/@n8n/instance-ai/src/tools/workflows/workflow-file-bindings.ts index 2a12e1792ab..4215089caaf 100644 --- a/packages/@n8n/instance-ai/src/tools/workflows/workflow-file-bindings.ts +++ b/packages/@n8n/instance-ai/src/tools/workflows/workflow-file-bindings.ts @@ -12,6 +12,7 @@ const workflowSourceFileBindingSchema = z.object({ filePath: z.string(), workflowId: z.string().optional(), workflowVersionId: z.string().optional(), + workflowChecksum: z.string().optional(), sourceHash: z.string().optional(), }); @@ -107,6 +108,71 @@ export async function saveWorkflowSourceFileBinding( return normalizedBinding; } +/** Bind a source file to an existing workflow, seeding version/checksum for stale-save detection. */ +export async function bindSourceFileToExistingWorkflow( + context: InstanceAiContext, + binding: WorkflowSourceFileBinding, + workflowId: string, +): Promise { + const workflow = await context.workflowService.get(workflowId); + return await saveWorkflowSourceFileBinding(context, { + ...binding, + workflowId, + workflowVersionId: workflow.versionId, + ...(workflow.checksum ? { workflowChecksum: workflow.checksum } : {}), + }); +} + +/** Refresh binding checksum/version from the workflow's current DB state. */ +export async function refreshWorkflowSourceFileBindingFromWorkflow( + context: InstanceAiContext, + workflowId: string, +): Promise { + const workflow = await context.workflowService.get(workflowId); + await refreshWorkflowSourceFileBindingFromSave(context, workflowId, { + versionId: workflow.versionId, + checksum: workflow.checksum, + }); +} + +/** Refresh the binding checksum/version after an agent-side DB patch outside build-workflow. */ +export async function refreshWorkflowSourceFileBindingFromSave( + context: InstanceAiContext, + workflowId: string, + saved: { versionId: string; checksum?: string }, +): Promise { + const threadBindings = await readThreadBindings(context); + const fallback = getFallbackBindings(context); + const entries: WorkflowSourceFileBinding[] = []; + + if (threadBindings) { + for (const binding of Object.values(threadBindings)) { + if (binding.workflowId === workflowId) entries.push(binding); + } + } + for (const binding of fallback.values()) { + if ( + binding.workflowId === workflowId && + !entries.some((e) => e.filePath === binding.filePath) + ) { + entries.push(binding); + } + } + + for (const binding of entries) { + const nextBinding: WorkflowSourceFileBinding = { + ...binding, + workflowVersionId: saved.versionId, + }; + if (saved.checksum !== undefined) { + nextBinding.workflowChecksum = saved.checksum; + } else { + delete nextBinding.workflowChecksum; + } + await saveWorkflowSourceFileBinding(context, nextBinding); + } +} + export async function readWorkflowSourceFile( context: InstanceAiContext, filePath: string, diff --git a/packages/@n8n/instance-ai/src/types.ts b/packages/@n8n/instance-ai/src/types.ts index 483d54eb7a4..65179e733d3 100644 --- a/packages/@n8n/instance-ai/src/types.ts +++ b/packages/@n8n/instance-ai/src/types.ts @@ -68,6 +68,8 @@ export interface WorkflowDetail extends WorkflowSummary { nodes: WorkflowNode[]; connections: Record; settings?: Record; + /** SHA-256 checksum of workflow content fields — used for optimistic-concurrency saves. */ + checksum?: string; } export interface WorkflowNode { @@ -294,7 +296,7 @@ export interface InstanceAiWorkflowService { updateFromWorkflowJSON( workflowId: string, json: WorkflowJSON, - options?: { projectId?: string }, + options?: { projectId?: string; expectedChecksum?: string }, ): Promise; archive(workflowId: string): Promise; unarchive(workflowId: string): Promise; diff --git a/packages/@n8n/instance-ai/src/workspace/__tests__/lazy-runtime-workspace.test.ts b/packages/@n8n/instance-ai/src/workspace/__tests__/lazy-runtime-workspace.test.ts index aa5e3e3e7e0..ae394aad926 100644 --- a/packages/@n8n/instance-ai/src/workspace/__tests__/lazy-runtime-workspace.test.ts +++ b/packages/@n8n/instance-ai/src/workspace/__tests__/lazy-runtime-workspace.test.ts @@ -5,7 +5,10 @@ import { type WorkspaceSandbox, } from '@n8n/agents'; -import { createLazyRuntimeWorkspace } from '../lazy-runtime-workspace'; +import { + INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST, + createLazyRuntimeWorkspace, +} from '../lazy-runtime-workspace'; function createMockWorkspace() { const executeCommand = vi.fn< @@ -88,8 +91,11 @@ describe('createLazyRuntimeWorkspace', () => { lazyWorkspace.getInstructions(); expect(ensureWorkspace).not.toHaveBeenCalled(); - expect(tools.some((tool) => tool.name === 'workspace_read_file')).toBe(true); - expect(tools.some((tool) => tool.name === 'workspace_execute_command')).toBe(true); + expect(tools.map((tool) => tool.name).sort()).toEqual( + [...INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST].sort(), + ); + expect(tools.some((tool) => tool.name === 'workspace_list_files')).toBe(false); + expect(tools.some((tool) => tool.name === 'workspace_append_file')).toBe(false); const readFile = tools.find((tool) => tool.name === 'workspace_read_file'); await readFile?.handler?.({ path: '/workspace/report.md' }, {}); diff --git a/packages/@n8n/instance-ai/src/workspace/lazy-runtime-workspace.ts b/packages/@n8n/instance-ai/src/workspace/lazy-runtime-workspace.ts index e16367ea845..8f320b1fa18 100644 --- a/packages/@n8n/instance-ai/src/workspace/lazy-runtime-workspace.ts +++ b/packages/@n8n/instance-ai/src/workspace/lazy-runtime-workspace.ts @@ -19,6 +19,15 @@ import { export type RuntimeWorkspaceResolver = () => Promise; +/** Workspace tools exposed to Instance AI agents — read/write/replace/execute only. */ +export const INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST = new Set([ + 'workspace_read_file', + 'workspace_write_file', + 'workspace_str_replace_file', + 'workspace_batch_str_replace_file', + 'workspace_execute_command', +]); + export interface LazyRuntimeWorkspaceOptions { ensureWorkspace: RuntimeWorkspaceResolver; id?: string; @@ -47,12 +56,18 @@ export function createLazyRuntimeWorkspace({ }: LazyRuntimeWorkspaceOptions): Workspace { const resolver = new LazyRuntimeWorkspaceResolver(ensureWorkspace); - return new Workspace({ + const workspace = new Workspace({ id, name, filesystem: new LazyRuntimeFilesystem(resolver, filesystemInstructions), sandbox: new LazyRuntimeSandbox(resolver, sandboxInstructions), }); + + const baseGetTools = workspace.getTools.bind(workspace); + workspace.getTools = () => + baseGetTools().filter((tool) => INSTANCE_AI_WORKSPACE_TOOL_ALLOWLIST.has(tool.name)); + + return workspace; } class LazyRuntimeWorkspaceResolver { diff --git a/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/__tests__/microsoft-utils.test.ts b/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/__tests__/microsoft-utils.test.ts index 2d82bff566a..c87bcb34d53 100644 --- a/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/__tests__/microsoft-utils.test.ts +++ b/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/__tests__/microsoft-utils.test.ts @@ -74,6 +74,9 @@ vi.mock('@microsoft/agents-a365-observability', () => ({ })); vi.mock('@microsoft/agents-a365-runtime', () => ({ + AgenticAuthenticationService: { + GetAgenticUserToken: vi.fn().mockResolvedValue('per-audience-token'), + }, getMcpPlatformAuthenticationScope: vi.fn().mockReturnValue('mcp-scope'), getObservabilityAuthenticationScope: vi.fn().mockReturnValue('observability-scope'), Utility: { @@ -81,16 +84,23 @@ vi.mock('@microsoft/agents-a365-runtime', () => ({ }, })); +vi.mock('@n8n/ai-utilities', () => ({ + proxyFetch: vi.fn(), +})); + vi.mock('@microsoft/agents-a365-tooling', () => ({ McpToolServerConfigurationService: vi.fn().mockImplementation(function () { return { listToolServers: vi.fn().mockResolvedValue([]) }; }), + resolveTokenScopeForServer: vi.fn().mockReturnValue('mcp-scope'), Utility: { ValidateAuthToken: vi.fn(), + GetToolRequestHeaders: vi.fn().mockReturnValue({}), }, defaultToolingConfigurationProvider: { getConfiguration: vi.fn().mockReturnValue({ mcpPlatformAuthenticationScope: 'mcp-scope', + mcpPlatformEndpoint: 'https://agent365.svc.cloud.microsoft', }), }, })); @@ -109,7 +119,12 @@ vi.mock('uuid', () => ({ })); import { MemoryStorage, AgentApplication, CloudAdapter } from '@microsoft/agents-hosting'; -import { McpToolServerConfigurationService } from '@microsoft/agents-a365-tooling'; +import { + McpToolServerConfigurationService, + Utility as MicrosoftToolingUtility, +} from '@microsoft/agents-a365-tooling'; +import { AgenticAuthenticationService } from '@microsoft/agents-a365-runtime'; +import { proxyFetch } from '@n8n/ai-utilities'; describe('microsoft-utils', () => { beforeAll(async () => { @@ -698,6 +713,131 @@ describe('microsoft-utils', () => { }); }); + test('should prefer per-server authorization headers for tool calls', async () => { + const mockServers = [ + { + mcpServerName: 'mcp_CalendarTools', + url: 'http://calendar-server', + headers: { + authorization: 'Bearer per-server-token', + 'x-ms-custom-header': 'custom-value', + }, + }, + ]; + + (MicrosoftToolingUtility.GetToolRequestHeaders as Mock).mockReturnValueOnce({ + Authorization: 'Bearer shared-token', + 'x-ms-channel-id': 'msteams', + }); + mockConfigService.listToolServers.mockResolvedValue(mockServers); + + const mockClient = { close: vi.fn() }; + (connectMcpClient as Mock).mockResolvedValue({ + ok: true, + result: mockClient, + }); + + (getAllTools as Mock).mockResolvedValue([]); + + await getMicrosoftMcpTools(mockTurnContext, mockAuthorization, 'test-token', undefined); + + expect(connectMcpClient).toHaveBeenCalledWith( + expect.objectContaining({ + headers: { + Authorization: 'Bearer per-server-token', + 'x-ms-channel-id': 'msteams', + 'x-ms-custom-header': 'custom-value', + 'x-ms-tenant-id': 'test-tenant-id', + }, + }), + ); + }); + + test('should fallback to filtered server discovery before per-server token exchange', async () => { + mockConfigService.listToolServers.mockRejectedValue(new Error('insufficient permissions')); + (proxyFetch as Mock).mockResolvedValueOnce({ + ok: true, + json: vi.fn().mockResolvedValue({ + mcpServers: [ + { + mcpServerName: 'mcp_CalendarTools', + url: 'http://calendar-server', + scope: 'McpServers.DataverseCustom.All', + }, + { + mcpServerName: 'mcp_MailTools', + url: 'http://mail-server', + audience: 'mail-audience', + }, + ], + }), + }); + (AgenticAuthenticationService.GetAgenticUserToken as Mock).mockResolvedValueOnce( + 'calendar-audience-token', + ); + + const mockClient = { close: vi.fn() }; + (connectMcpClient as Mock).mockResolvedValue({ + ok: true, + result: mockClient, + }); + (getAllTools as Mock).mockResolvedValue([]); + + await getMicrosoftMcpTools(mockTurnContext, mockAuthorization, 'test-token', [ + 'mcp_CalendarTools', + ]); + + expect(proxyFetch).toHaveBeenCalledWith( + 'https://agent365.svc.cloud.microsoft/agents/v2/agent-identity/mcpServers', + expect.any(Object), + ); + // mcp_CalendarTools has no audience → V1 server → uses shared token directly, + // no OBO exchange needed + expect(AgenticAuthenticationService.GetAgenticUserToken).not.toHaveBeenCalled(); + expect(connectMcpClient).toHaveBeenCalledTimes(1); + expect(connectMcpClient).toHaveBeenCalledWith( + expect.objectContaining({ + endpointUrl: 'http://calendar-server', + headers: expect.objectContaining({ + Authorization: 'Bearer test-token', + }), + }), + ); + }); + + test('should log only the payload type, not the raw body, when discovery returns an unexpected shape', async () => { + mockConfigService.listToolServers.mockRejectedValue(new Error('insufficient permissions')); + // Untrusted discovery response with an unrecognized shape carrying a token-like value + (proxyFetch as Mock).mockResolvedValueOnce({ + ok: true, + json: vi.fn().mockResolvedValue({ + error: 'unauthorized', + accessToken: 'tok_secret_123', + }), + }); + + const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); + const consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); + + try { + await expect( + getMicrosoftMcpTools(mockTurnContext, mockAuthorization, 'test-token', undefined), + ).rejects.toThrow( + 'Failed to read MCP servers from endpoint: response is not a server list', + ); + + expect(consoleErrorSpy).toHaveBeenCalledWith( + 'Microsoft MCP server discovery returned an unsupported payload shape', + { payloadType: 'object' }, + ); + // The untrusted response body must never reach the logs + expect(JSON.stringify(consoleErrorSpy.mock.calls)).not.toContain('tok_secret_123'); + } finally { + consoleErrorSpy.mockRestore(); + consoleWarnSpy.mockRestore(); + } + }); + test('should handle connection errors gracefully', async () => { const mockServers = [ { mcpServerName: 'mcp_CalendarTools', url: 'http://calendar-server' }, @@ -718,13 +858,13 @@ describe('microsoft-utils', () => { (getAllTools as Mock).mockResolvedValue([]); - const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); + const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); try { await getMicrosoftMcpTools(mockTurnContext, mockAuthorization, 'test-token', undefined); expect(consoleSpy).toHaveBeenCalledWith( - 'Failed to connect to MCP server mcp_CalendarTools:', + 'Skipping MCP server mcp_CalendarTools: failed to connect', 'Connection failed', ); } finally { diff --git a/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/microsoft-utils.ts b/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/microsoft-utils.ts index e6a6fcb6654..a3799a59692 100644 --- a/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/microsoft-utils.ts +++ b/packages/@n8n/nodes-langchain/nodes/vendors/Microsoft/microsoft-utils.ts @@ -16,25 +16,30 @@ import { } from 'n8n-workflow'; import { - ExecutionType, - type InvokeAgentDetails, InvokeAgentScope, - type TenantDetails, BaggageBuilder, ObservabilityManager, type Builder, defaultObservabilityConfigurationProvider, } from '@microsoft/agents-a365-observability'; import { type Activity, ActivityTypes } from '@microsoft/agents-activity'; -import { v4 as uuid } from 'uuid'; import { invokeAgent } from './langchain-utils'; import { McpToolServerConfigurationService, defaultToolingConfigurationProvider, + resolveTokenScopeForServer, + Utility as MicrosoftToolingUtility, + type MCPServerConfig, + type ToolOptions, } from '@microsoft/agents-a365-tooling'; +import { + AgenticAuthenticationService, + Utility as MicrosoftRuntimeUtility, +} from '@microsoft/agents-a365-runtime'; import type { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StructuredToolkit } from 'n8n-core'; +import { proxyFetch } from '@n8n/ai-utilities'; import { connectMcpClient, getAllTools } from '../../mcp/shared/utils'; import { buildMcpToolName, @@ -131,6 +136,198 @@ export const microsoftMcpServers: INodePropertyOptions[] = [ ]; const MS_TENANT_ID_HEADER = 'x-ms-tenant-id'; +const MICROSOFT_TOOL_OPTIONS: ToolOptions = { orchestratorName: 'LangChain' }; + +function hasAuthorizationHeader(headers: Record) { + return Object.keys(headers).some((headerName) => headerName.toLowerCase() === 'authorization'); +} + +function getAuthorizationHeader(headers: Record | undefined) { + if (!headers) return undefined; + + for (const [headerName, headerValue] of Object.entries(headers)) { + if (headerName.toLowerCase() === 'authorization') { + return headerValue; + } + } + + return undefined; +} + +function isRecord(value: unknown): value is Record { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + +function getStringProperty(value: Record, key: string) { + const property = value[key]; + return typeof property === 'string' ? property : undefined; +} + +function getHeadersProperty(value: Record) { + const headers = value.headers; + if (!isRecord(headers)) return undefined; + + const result: Record = {}; + for (const [headerName, headerValue] of Object.entries(headers)) { + if (typeof headerValue === 'string') { + result[headerName] = headerValue; + } + } + + return result; +} + +function getRawMcpServers(payload: unknown) { + if (Array.isArray(payload)) return payload; + if (!isRecord(payload)) return undefined; + + const mcpServers = payload.mcpServers; + if (Array.isArray(mcpServers)) return mcpServers; + + const value = payload.value; + if (Array.isArray(value)) return value; + + return undefined; +} + +function getMcpPlatformBaseUrl() { + return defaultToolingConfigurationProvider.getConfiguration().mcpPlatformEndpoint; +} + +function getToolingGatewayUrl(agenticAppId: string) { + return `${getMcpPlatformBaseUrl()}/agents/v2/${agenticAppId}/mcpServers`; +} + +function getMcpServerUrl(mcpServerName: string) { + return `${getMcpPlatformBaseUrl()}/agents/servers/${mcpServerName}/`; +} + +function normalizeMcpServerConfig(rawServer: unknown): MCPServerConfig | undefined { + if (!isRecord(rawServer)) return undefined; + + const mcpServerName = + getStringProperty(rawServer, 'mcpServerName') ?? + getStringProperty(rawServer, 'mcpServerUniqueName'); + if (!mcpServerName) return undefined; + + return { + mcpServerName, + url: getStringProperty(rawServer, 'url') ?? getMcpServerUrl(mcpServerName), + headers: getHeadersProperty(rawServer), + audience: getStringProperty(rawServer, 'audience'), + scope: getStringProperty(rawServer, 'scope'), + publisher: getStringProperty(rawServer, 'publisher'), + }; +} + +async function getMcpServerConfigsWithoutAudienceTokens( + turnContext: TurnContext, + mcpAuthToken: string, +) { + MicrosoftToolingUtility.ValidateAuthToken(mcpAuthToken); + + const agenticAppId = MicrosoftRuntimeUtility.ResolveAgentIdentity(turnContext, mcpAuthToken); + const endpoint = getToolingGatewayUrl(agenticAppId); + const response = await proxyFetch(endpoint, { + headers: MicrosoftToolingUtility.GetToolRequestHeaders( + mcpAuthToken, + turnContext, + MICROSOFT_TOOL_OPTIONS, + ), + }); + + if (!response.ok) { + throw new Error(`Failed to read MCP servers from endpoint: ${response.status}`); + } + + const payload: unknown = await response.json(); + const rawServers = getRawMcpServers(payload); + if (!rawServers) { + // Log only the payload type, never the raw body: it's an untrusted external + // response that may carry sensitive values. + console.error('Microsoft MCP server discovery returned an unsupported payload shape', { + payloadType: Array.isArray(payload) ? 'array' : typeof payload, + }); + throw new Error('Failed to read MCP servers from endpoint: response is not a server list'); + } + + const servers = rawServers + .map((rawServer) => normalizeMcpServerConfig(rawServer)) + .filter((server): server is MCPServerConfig => server !== undefined); + + console.warn(`Microsoft MCP server discovery completed: ${servers.length} servers found`); + + return servers; +} + +async function attachMcpServerAuthorization( + server: MCPServerConfig, + turnContext: TurnContext, + authorization: Authorization, + mcpAuthToken: string, +) { + const sharedScope = + defaultToolingConfigurationProvider.getConfiguration().mcpPlatformAuthenticationScope; + const scope = resolveTokenScopeForServer(server, sharedScope); + + if (scope === sharedScope && hasAuthorizationHeader(server.headers ?? {})) return server; + + const token = + scope === sharedScope + ? mcpAuthToken + : await AgenticAuthenticationService.GetAgenticUserToken( + authorization, + 'agentic', + turnContext, + [scope], + ); + + if (!token) { + throw new Error(`Failed to obtain token for MCP server '${server.mcpServerName}'`); + } + + return { + ...server, + headers: { + ...server.headers, + Authorization: `Bearer ${token}`, + }, + }; +} + +function getMcpServerHeaders( + server: MCPServerConfig, + turnContext: TurnContext, + mcpAuthToken: string, + tenantId: string | undefined, +) { + const headers: Record = { + ...MicrosoftToolingUtility.GetToolRequestHeaders( + mcpAuthToken, + turnContext, + MICROSOFT_TOOL_OPTIONS, + ), + }; + + for (const [headerName, headerValue] of Object.entries(server.headers ?? {})) { + if (headerName.toLowerCase() !== 'authorization') { + headers[headerName] = headerValue; + } + } + + const serverAuthorization = getAuthorizationHeader(server.headers); + if (serverAuthorization) { + headers.Authorization = serverAuthorization; + } else if (mcpAuthToken && !hasAuthorizationHeader(headers)) { + headers.Authorization = `Bearer ${mcpAuthToken}`; + } + + if (tenantId) { + headers[MS_TENANT_ID_HEADER] = tenantId; + } + + return headers; +} function isMicrosoftObservabilityEnabled(): boolean { return ( @@ -167,12 +364,21 @@ export async function getMicrosoftMcpTools( ) { const configService: McpToolServerConfigurationService = new McpToolServerConfigurationService(); - let servers = await configService.listToolServers( - turnContext, - authorization, - 'agentic', - mcpAuthToken, - ); + let shouldAttachServerAuthorization = false; + let servers: MCPServerConfig[]; + try { + servers = await configService.listToolServers( + turnContext, + authorization, + 'agentic', + mcpAuthToken, + MICROSOFT_TOOL_OPTIONS, + ); + } catch (error) { + console.warn('Microsoft SDK listToolServers failed, falling back to direct discovery'); + servers = await getMcpServerConfigsWithoutAudienceTokens(turnContext, mcpAuthToken); + shouldAttachServerAuthorization = true; + } if (servers.length === 0) return undefined; @@ -189,24 +395,36 @@ export async function getMicrosoftMcpTools( const timeout = 60000; for (const server of servers) { - const headers: Record = {}; - if (mcpAuthToken) { - headers['Authorization'] = `Bearer ${mcpAuthToken}`; - } - if (tenantId) { - headers[MS_TENANT_ID_HEADER] = tenantId; + let authorizedServer = server; + if (shouldAttachServerAuthorization) { + try { + authorizedServer = await attachMcpServerAuthorization( + server, + turnContext, + authorization, + mcpAuthToken, + ); + } catch (error) { + console.warn(`Skipping MCP server ${server.mcpServerName}: failed to authorize`, error); + continue; + } } + const headers = getMcpServerHeaders(authorizedServer, turnContext, mcpAuthToken, tenantId); + const clientResult = await connectMcpClient({ serverTransport: 'httpStreamable', // Microsoft servers use HTTP - endpointUrl: server.url, + endpointUrl: authorizedServer.url, headers, name: 'Microsoft-Agent-365', version: 1, }); if (!clientResult.ok) { - console.error(`Failed to connect to MCP server ${server.mcpServerName}:`, clientResult.error); + console.warn( + `Skipping MCP server ${server.mcpServerName}: failed to connect`, + clientResult.error, + ); continue; } @@ -217,7 +435,7 @@ export async function getMicrosoftMcpTools( try { mcpTools = await getAllTools(client); } catch (error) { - console.error(`Failed to get tools from MCP server ${server.mcpServerName}:`, error); + console.warn(`Skipping MCP server ${server.mcpServerName}: failed to list tools`, error); continue; } @@ -279,7 +497,7 @@ export const configureActivityCallback = ( return async (turnContext: TurnContext) => { const agentId = turnContext.activity.recipient?.agenticAppId ?? clientId; const agentName = turnContext.activity.recipient?.name ?? 'Microsoft Agent 365'; - const tenantDetails: TenantDetails = { + const tenantDetails = { tenantId: turnContext.activity.recipient?.tenantId ?? tenantId ?? '', }; const conversationId = turnContext.activity.conversation?.id; @@ -288,24 +506,26 @@ export const configureActivityCallback = ( const baggageScope = new BaggageBuilder() .tenantId(tenantDetails.tenantId) .agentId(agentId) - .correlationId(uuid()) .agentName(agentName) .conversationId(conversationId) .build(); await baggageScope.run(async () => { - const invokeAgentDetails: InvokeAgentDetails = { - agentId, - agentName, + const request = { + content: inputText || 'Unknown text', + sessionId: conversationId, conversationId, - request: { - content: inputText || 'Unknown text', - executionType: ExecutionType.HumanToAgent, - sessionId: conversationId, - }, }; - const invokeAgentScope = InvokeAgentScope.start(invokeAgentDetails, tenantDetails); + const invokeScopeDetails = {}; + + const agentDetails = { + agentId, + agentName, + tenantId: tenantDetails.tenantId, + }; + + const invokeAgentScope = InvokeAgentScope.start(request, invokeScopeDetails, agentDetails); await invokeAgentScope.withActiveSpanAsync(async () => { invokeAgentScope.recordInputMessages([inputText || 'Unknown text']); @@ -345,7 +565,7 @@ export const configureActivityCallback = ( mcpLogs = result?.logs; } } catch (error) { - console.log('Error retrieving MCP tools'); + console.error('Error retrieving MCP tools:', error); } } @@ -436,8 +656,20 @@ export function configureAdapterProcessCallback( ], }); mcpTokenRef.token = tokenResult.token; + // The exchange can succeed yet return no token (e.g. the agent's Entra identity + // blueprint lacks inheritable permissions for the tooling scope). Surface it, since + // otherwise Work IQ tools are silently unavailable with no signal. + if (!mcpTokenRef.token) { + nodeContext.logger.warn( + 'Microsoft Agent 365: no agentic tooling token was issued; Work IQ (MCP) tools are unavailable for this turn', + ); + } } catch (error) { - console.error('Error getting MCP token'); + nodeContext.logger.warn( + `Microsoft Agent 365: failed to obtain agentic tooling token; Work IQ (MCP) tools are unavailable for this turn: ${ + error instanceof Error ? error.message : String(error) + }`, + ); } try { diff --git a/packages/@n8n/nodes-langchain/package.json b/packages/@n8n/nodes-langchain/package.json index 61f5af501e3..ed0fb69d802 100644 --- a/packages/@n8n/nodes-langchain/package.json +++ b/packages/@n8n/nodes-langchain/package.json @@ -265,13 +265,13 @@ "@langchain/redis": "1.0.1", "@langchain/textsplitters": "1.0.1", "@langchain/weaviate": "1.0.1", - "@microsoft/agents-a365-notifications": "0.1.0-preview.113", - "@microsoft/agents-a365-observability": "0.1.0-preview.113", - "@microsoft/agents-a365-runtime": "0.1.0-preview.113", - "@microsoft/agents-a365-tooling": "0.1.0-preview.113", - "@microsoft/agents-a365-tooling-extensions-langchain": "0.1.0-preview.113", - "@microsoft/agents-activity": "1.2.3", - "@microsoft/agents-hosting": "1.2.3", + "@microsoft/agents-a365-notifications": "1.0.0", + "@microsoft/agents-a365-observability": "1.0.0", + "@microsoft/agents-a365-runtime": "1.0.0", + "@microsoft/agents-a365-tooling": "1.0.0", + "@microsoft/agents-a365-tooling-extensions-langchain": "1.0.0", + "@microsoft/agents-activity": "1.6.1", + "@microsoft/agents-hosting": "1.6.1", "@mistralai/mistralai": "^1.10.0", "@modelcontextprotocol/sdk": "catalog:", "@mozilla/readability": "catalog:", diff --git a/packages/@n8n/scheduler/README.md b/packages/@n8n/scheduler/README.md index 7c3561d4567..cefcd4d2700 100644 --- a/packages/@n8n/scheduler/README.md +++ b/packages/@n8n/scheduler/README.md @@ -25,6 +25,39 @@ incidents. In n8n that host is the cli's `DurableScheduler` (`packages/cli/src/scheduling/`), which wires DI, config and instance identity, and routes events to the logger. +## Schedule kinds + +A scheduled job says *when* something should run. There are four kinds: + +| Kind | Meaning | Example | +|---|---|---| +| `cron` | Fires at fixed clock times, written as a cron expression. | `0 0 9 * * 1` = every Monday at 09:00 | +| `interval` | Fires every N seconds of elapsed time. | every 3600s = once an hour | +| `one_off` | Fires once, at a single instant, then never again. | fire at 2026-01-01 00:00 | +| `recurring_cron` | A cron *anchor* thinned by an "every N periods" gate, for cadences plain cron cannot express. | every 3 weeks on Monday | + +### Why `recurring_cron`? + +Plain cron can say "every Monday", but not "every *third* Monday". +`recurring_cron` builds that from two parts: + +- an **anchor**: a normal cron that lists candidate dates (often too many), +- a **gate**: keeps a candidate only once at least `recurrenceSize` periods of + `recurrenceUnit` (`hours` / `days` / `weeks` / `months`) have passed since the + last kept fire. + +"Every 3 weeks on Monday" = anchor "every Monday" + gate "1 per 3 weeks": + +``` +Anchor (every Monday): M M M M M M M +Gate (1 per 3 weeks): ✓ ✗ ✗ ✓ ✗ ✗ ✓ +Fires: M M M +``` + +The gate looks only at the previous fire, with no stored counter. So any +instance in the cluster can compute the next run, and a restart never loses the +cadence. + ## Status Early foundation. The algorithms, schedule math and composition surface are in diff --git a/packages/@n8n/scheduler/RECURRING_CRON_DEVIATIONS.md b/packages/@n8n/scheduler/RECURRING_CRON_DEVIATIONS.md new file mode 100644 index 00000000000..3a2f94fb24e --- /dev/null +++ b/packages/@n8n/scheduler/RECURRING_CRON_DEVIATIONS.md @@ -0,0 +1,87 @@ +# `recurring_cron`: deliberate behavioral deviations + +> **Temporary review document.** This file exists to make the behavioral deviations of the +> `recurring_cron` schedule kind explicit for review of the `recurrence-in-scheduler` branch. +> It is not long-lived documentation and should be deleted once project is completed and documented. + +The `recurring_cron` kind reproduces the legacy Schedule Trigger recurrence semantics +(`recurrenceCheck` in `packages/nodes-base/nodes/Schedule/GenericFunctions.ts`): a cron anchor +thinned by an every-Nth-period gate that passes when `elapsedPeriods === 0` (same-period +multi-anchor) or `elapsedPeriods >= size` (catch-up, no permanent skip). Within that contract, +the following points deviate on purpose, either from the legacy node or from the C2 branch's +first implementation. + +## 1. Legacy arithmetic bugs are fixed, not reproduced + +The legacy gate stores period *labels* and compares them with modular arithmetic. The domain +math uses real calendar diffs instead (`src/core/recurrence/periods.ts`). Consequences: + +| Legacy formula | Bug | New behavior | +|---|---|---| +| `(dayOfYear - last + 365) % 365` | Day 366 of a leap year collides with Jan 1; Dec-to-Jan spans in leap years are off by one | Calendar-day diff in the schedule timezone; pinned by `counts correctly across a leap-year boundary` (periods.test.ts) | +| `(hour - last + 24) % 24` | Cannot represent a gap of 24h or more; a 27-hour gap reads as 3 | Unbounded wall-clock hour count; pinned by `does not wrap at a day boundary (27 hours later reads 27, not 3)` (periods.test.ts) | +| `(week - last + 52) % 52` | Week 53 squashed at year boundaries | Sunday-start calendar-week diff; pinned by `counts week boundaries across a year boundary` (periods.test.ts) | +| `month === (size + last) % 12` (historical) | "Every 12 months" never fired again | Absolute month count (`year*12 + month`), already fixed on legacy HEAD and reproduced here; pinned by `counts absolutely across year boundaries, so sizes of 12 and beyond work` (periods.test.ts) | + +A schedule that legacy misfired (or permanently stalled) around these edges fires correctly +under `recurring_cron`. That is a behavior change for the affected instants, by design. + +## 2. Week boundaries are pinned to Sunday-start + +Legacy used moment's `.week()`, which is locale-dependent. On the default en locale weeks start +on Sunday, and `recurring_cron` pins that definition explicitly (`startOfSundayWeek` in +`periods.ts`). An instance that ran moment with a Monday-start locale would have had its +week boundaries one day later; such setups see the boundary shift. One documented definition +replaces an implicit locale-dependent one. + +## 3. The same-period pass (`elapsed === 0`) applies to all units + +Legacy allowed a same-period refire only for weeks (`week === lastExecution`, so "every 2 weeks +on Mon AND Wed" fires both days of a fire-week). The domain gate applies `elapsed === 0` to +hours, days, weeks, and months uniformly. + +For node-generated schedules this is unobservable: only the weeks unit produces anchors with +more than one position per period (a weekday set). Hours/days/months anchors fire at most once +per period, so the branch never triggers. A hand-written domain schedule with a multi-position +anchor (say two times of day with a days gate) would fire all its positions on a fire-day. This +is the sensible generalization of the weeks rule, but it is a semantic superset of legacy. + +## 4. Hours count wall-clock steps, not elapsed physical time + +Deviation from the C2 branch's cadence math, which counted real elapsed hours. `recurring_cron` +counts clock-label steps in the schedule timezone (23:30 to 01:30 is 2 hours regardless of DST). + +Why: the node keeps a `*/N` step cron AND an active gate for divisible hour strides (24 % N == 0). +Across spring-forward, the anchor's 00:30-to-06:30 gap is only 5 physical hours; a real-elapsed +size-6 gate would wrongly skip that candidate. Wall-clock counting matches the legacy label +semantics and keeps the redundant case correct. The flip side: "every 5 hours" can be 4 or 6 +physical hours across a DST transition. Pinned by the two `redundant divisible hours` tests and +`every 5 hours on an hourly expression: five clock hours apart` (next-run.test.ts), plus the +spring-forward/fall-back cases in periods.test.ts. Safe on fall-back because cron-parser fires a +repeated local time once. + +## 5. A stride of 1 is rejected + +`recurrenceSize` must be an integer >= 2 (`src/core/recurrence/validate.ts`). A size-1 gate is +the anchor's own cadence, i.e. a plain `cron`, and the node never activates recurrence for +N == 1 (nor does the C2 registrar persist it). Rejecting it keeps one representation per +schedule. Pinned by `rejects a stride of 1 (that is a plain cron) and other non-strides` +(validate.test.ts). C2 allowed size 1 through as a keep-everything gate. + +## 6. Pathological anchor/gate pairings error instead of spinning + +`computeNextRunAt` scans at most 10,000 anchor candidates for one on-cadence fire, then throws +`InvalidScheduleError` (an every-second anchor gated to every 3 weeks would otherwise scan +~1.8M candidates per advance). Not reachable from node-generated schedules; a domain-level +safety bound. Pinned by `throws when no candidate lands on cadence within the scan bound` +(next-run.test.ts). + +## Non-deviations worth stating + +- First fire of a fresh rule is ungated (next anchor instant), exactly like legacy + `lastExecution === undefined`. The domain exposes this as `computeFirstRunAt`, the one + seeding API, so job writers cannot gate the first fire by accident. +- Catch-up after downtime (`elapsed >= size` passes) matches legacy HEAD's self-healing + comparison; there is no permanent skip and no reliance on workflow staticData. +- The gate is an elapsed-period gate, not a keep-1-of-N candidate counter, which is what keeps + the redundant divisible cases (`*/6` hours, `*/3` months with an active gate) correct. diff --git a/packages/@n8n/scheduler/eslint.config.mjs b/packages/@n8n/scheduler/eslint.config.mjs index 1fae2ba0e77..800012c2fbc 100644 --- a/packages/@n8n/scheduler/eslint.config.mjs +++ b/packages/@n8n/scheduler/eslint.config.mjs @@ -1,7 +1,12 @@ -import { defineConfig } from 'eslint/config'; +import { defineConfig, globalIgnores } from 'eslint/config'; import { baseConfig } from '@n8n/eslint-config/base'; export default defineConfig( + // Stryker-only config, not part of any tsconfig project (like the shared + // base's own vite.config.ts / vitest.config.ts ignores). `.stryker-tmp` is + // ignored too: an interrupted mutation run leaves a sandbox behind that + // would otherwise fail `pnpm lint` with parsing errors. + globalIgnores(['stryker.config.mjs', 'vitest.stryker.config.ts', '.stryker-tmp/**']), baseConfig, { rules: { diff --git a/packages/@n8n/scheduler/package.json b/packages/@n8n/scheduler/package.json index c6088eab243..8d63143dc4d 100644 --- a/packages/@n8n/scheduler/package.json +++ b/packages/@n8n/scheduler/package.json @@ -11,6 +11,7 @@ "format:check": "biome ci .", "lint": "eslint . --quiet", "lint:fix": "eslint . --fix", + "mutate": "node ../../../scripts/mutation-health/mutate.mjs --package-dir packages/@n8n/scheduler", "watch": "tsc -p tsconfig.build.json --watch", "test": "vitest run --passWithNoTests", "test:unit": "vitest run --passWithNoTests", @@ -38,8 +39,11 @@ "devDependencies": { "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", + "@stryker-mutator/core": "catalog:", + "@stryker-mutator/vitest-runner": "catalog:", "@types/luxon": "catalog:", "@vitest/coverage-v8": "catalog:", + "fast-check": "catalog:", "typescript": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:" diff --git a/packages/@n8n/scheduler/src/core/__tests__/factory.test.ts b/packages/@n8n/scheduler/src/core/__tests__/factory.test.ts index 962ad321054..70fcc5181d9 100644 --- a/packages/@n8n/scheduler/src/core/__tests__/factory.test.ts +++ b/packages/@n8n/scheduler/src/core/__tests__/factory.test.ts @@ -1,14 +1,38 @@ import { ScheduledTaskStatus } from '@n8n/constants'; +import { ensureError } from '@n8n/utils/errors/ensure-error'; import { mock } from 'vitest-mock-extended'; +import { SCHEDULER_ATTRIBUTES, SCHEDULER_FIRE_OUTCOME } from '../../observability/attributes'; import type { SchedulerMetrics } from '../../observability/metrics'; +import { SpanStatus, type Span, type Tracer } from '../../observability/tracer'; import { InvalidLifecycleOptionsError } from '../errors'; import { createScheduler } from '../factory'; import type { SchedulerDeps, SchedulerTaskStore } from '../factory'; +import { PASS_TIMED_OUT } from '../lifecycle'; import type { MaterializerTransaction, RunInTransaction } from '../materializer'; import { DEFAULT_RETENTION_OPTIONS } from '../retention'; import type { ClaimedTask, ScheduledJob } from '../types'; +/** + * A shared span (each tracing test drives a single pass, so one span suffices) + * behind a tracer that honours the port's contract: a throw from `run` marks the + * span errored and propagates, exactly as the concrete (Sentry) tracer does. This + * matters for the materializer, whose abort path throws rather than returning. + */ +const makeTracer = () => { + const span: Span = { setAttribute: vi.fn(), setStatus: vi.fn() }; + const tracer = mock(); + tracer.startSpan.mockImplementation(async (_options, run) => { + try { + return await run(span); + } catch (error) { + span.setStatus({ code: SpanStatus.error, message: ensureError(error).message }); + throw error; + } + }); + return { span, tracer }; +}; + /** Compose a scheduler over mocks, with non-default retention windows. */ function makeScheduler(deps: Partial = {}) { const taskStore = mock(); @@ -259,6 +283,8 @@ describe('createScheduler materialize', () => { timezone: null, intervalSeconds: null, fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, nextRunAt: new Date('2026-01-01T00:00:00.000Z'), lastFiredAt: null, maxAttempts: 3, @@ -268,13 +294,13 @@ describe('createScheduler materialize', () => { now: new Date('2026-01-01T00:00:00.000Z'), jobs: [corrupt], }); - tx.recordOccurrences.mockResolvedValue(0); + tx.recordOccurrences.mockResolvedValue({ recorded: 0, created: [] }); const materializerTransaction: RunInTransaction = async (work) => await work(tx); const { scheduler, onEvent } = makeScheduler({ materializerTransaction }); const summary = await scheduler.materialize(); - expect(summary).toEqual({ claimedJobs: 1, occurrences: 0, deferredJobs: 1 }); + expect(summary).toEqual({ claimedJobs: 1, occurrences: 0, created: [], deferredJobs: 1 }); expect(onEvent).toHaveBeenCalledWith({ level: 'error', message: 'Scheduler could not plan a job schedule; deferred for retry', @@ -292,6 +318,8 @@ describe('createScheduler materialize', () => { timezone: null, intervalSeconds: 10, fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, nextRunAt: new Date('2026-01-01T00:00:00.000Z'), lastFiredAt: null, maxAttempts: 3, @@ -302,7 +330,7 @@ describe('createScheduler materialize', () => { jobs: [due], }); // The one planned occurrence already exists (recorded by a concurrent pass). - tx.recordOccurrences.mockResolvedValue(0); + tx.recordOccurrences.mockResolvedValue({ recorded: 0, created: [] }); const materializerTransaction: RunInTransaction = async (work) => await work(tx); // windowSeconds: 0 keeps the plan to the single due fire. const { scheduler, onEvent } = makeScheduler({ @@ -762,6 +790,332 @@ describe('createScheduler reap', () => { }); }); +describe('createScheduler tracing', () => { + it('opens a materialize span carrying the summary counts, with ok status', async () => { + const due: ScheduledJob = { + id: 7, + taskType: 'test-task', + payload: {}, + kind: 'interval', + cronExpression: null, + timezone: null, + intervalSeconds: 10, + fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, + nextRunAt: new Date('2026-01-01T00:00:00.000Z'), + lastFiredAt: null, + maxAttempts: 3, + }; + const tx = mock(); + tx.claimDueJobs.mockResolvedValue({ now: new Date('2026-01-01T00:00:00.000Z'), jobs: [due] }); + // Distinct counts (claimed 1, occurrences 2, deferred 0) so that recording a + // count under the wrong attribute key cannot slip past these assertions. + tx.recordOccurrences.mockResolvedValue({ recorded: 2, created: [] }); + const materializerTransaction: RunInTransaction = async (work) => await work(tx); + const { span, tracer } = makeTracer(); + const { scheduler } = makeScheduler({ + materializerTransaction, + materializer: { windowSeconds: 0 }, + tracer, + }); + + const summary = await scheduler.materialize(); + + expect(summary).toEqual({ claimedJobs: 1, occurrences: 2, created: [], deferredJobs: 0 }); + expect(tracer.startSpan).toHaveBeenCalledWith( + expect.objectContaining({ name: 'Scheduler materialize', op: 'scheduler.materialize' }), + expect.any(Function), + ); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.claimedJobs, 1); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.occurrences, 2); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.deferredJobs, 0); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('emits one creation span per newly recorded row', async () => { + const due: ScheduledJob = { + id: 7, + taskType: 'test-task', + payload: {}, + kind: 'interval', + cronExpression: null, + timezone: null, + intervalSeconds: 10, + fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, + nextRunAt: new Date('2026-01-01T00:00:00.000Z'), + lastFiredAt: null, + maxAttempts: 3, + }; + const tx = mock(); + tx.claimDueJobs.mockResolvedValue({ now: new Date('2026-01-01T00:00:00.000Z'), jobs: [due] }); + tx.recordOccurrences.mockResolvedValue({ + recorded: 1, + created: [{ id: '99', jobId: 7, taskType: 'test-task' }], + }); + const materializerTransaction: RunInTransaction = async (work) => await work(tx); + const { tracer } = makeTracer(); + const { scheduler } = makeScheduler({ + materializerTransaction, + materializer: { windowSeconds: 0 }, + tracer, + }); + + await scheduler.materialize(); + + expect(tracer.startSpan).toHaveBeenCalledWith( + expect.objectContaining({ + name: 'Scheduler task created', + op: 'scheduler.task.create', + attributes: { + [SCHEDULER_ATTRIBUTES.taskId]: '99', + [SCHEDULER_ATTRIBUTES.jobId]: 7, + [SCHEDULER_ATTRIBUTES.taskType]: 'test-task', + }, + }), + expect.any(Function), + ); + }); + + it('opens a claim span carrying the claimed count and host, with ok status', async () => { + const { span, tracer } = makeTracer(); + const { scheduler, taskStore } = makeScheduler({ tracer }); + scheduler.registerTaskHandler('test-task', { execute: vi.fn() }); + taskStore.claimDueTasks.mockResolvedValue([claimedTask()]); + + const tasks = await scheduler.execute(); + + expect(tracer.startSpan).toHaveBeenCalledWith( + expect.objectContaining({ + name: 'Scheduler claim', + op: 'scheduler.claim', + attributes: { [SCHEDULER_ATTRIBUTES.host]: 'main-test' }, + }), + expect.any(Function), + ); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.claimedCount, tasks.length); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('wraps a detached fire in a fire span with a nested handoff span around the handler', async () => { + // A span per `op`, so the claim, fire and handoff spans record to separate + // spies and their statuses can be told apart. + const spans = new Map(); + const spanFor = (op: string): Span => { + let span = spans.get(op); + if (span === undefined) { + span = { setAttribute: vi.fn(), setStatus: vi.fn() }; + spans.set(op, span); + } + return span; + }; + const tracer = mock(); + tracer.startSpan.mockImplementation(async (options, run) => { + const span = spanFor(options.op ?? options.name); + try { + return await run(span); + } catch (error) { + span.setStatus({ code: SpanStatus.error, message: ensureError(error).message }); + throw error; + } + }); + const { scheduler, taskStore } = makeScheduler({ tracer }); + scheduler.registerTaskHandler('test-task', { execute: vi.fn().mockResolvedValue(undefined) }); + taskStore.claimDueTasks.mockResolvedValue([claimedTask()]); + taskStore.markStarted.mockResolvedValue(1); + taskStore.completeTask.mockResolvedValue(1); + + await scheduler.execute(); + + // The fire is detached from the claim: wait for the timer to deliver it. + await vi.waitFor(() => { + expect(spanFor('scheduler.fire').setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + expect(tracer.startSpan).toHaveBeenCalledWith( + expect.objectContaining({ name: 'Scheduler fire', op: 'scheduler.fire' }), + expect.any(Function), + ); + expect(spanFor('scheduler.fire').setAttribute).toHaveBeenCalledWith( + SCHEDULER_ATTRIBUTES.outcome, + SCHEDULER_FIRE_OUTCOME.completed, + ); + expect(tracer.startSpan).toHaveBeenCalledWith( + expect.objectContaining({ name: 'Scheduler handoff', op: 'scheduler.handoff' }), + expect.any(Function), + ); + expect(spanFor('scheduler.handoff').setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('opens a reap span carrying the reclaimed and dead-lettered counts, with ok status', async () => { + const { span, tracer } = makeTracer(); + const { scheduler, taskStore } = makeScheduler({ tracer }); + // Distinct counts (reclaimed 2, dead-lettered 1) so recording a count under + // the wrong attribute key cannot slip past these assertions: two leases with + // attempts left are reclaimed, one out of attempts is dead-lettered. + taskStore.findExpiredLeases.mockResolvedValue([ + { id: '7', attempts: 0, maxAttempts: 3, leaseEpoch: 1 }, + { id: '8', attempts: 0, maxAttempts: 3, leaseEpoch: 1 }, + { id: '9', attempts: 2, maxAttempts: 3, leaseEpoch: 1 }, + ]); + taskStore.reclaimExpired.mockResolvedValue(1); + taskStore.deadLetterExpired.mockResolvedValue(1); + + const result = await scheduler.reap(); + + expect(result).toEqual({ reclaimed: 2, deadLettered: 1 }); + expect(tracer.startSpan).toHaveBeenCalledWith( + expect.objectContaining({ name: 'Scheduler reap', op: 'scheduler.reap' }), + expect.any(Function), + ); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.reclaimed, 2); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.deadLettered, 1); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('opens a retention span carrying the deleted count and drained flag, with ok status', async () => { + const { span, tracer } = makeTracer(); + const { scheduler, taskStore } = makeScheduler({ tracer }); + taskStore.deleteFinishedOlderThan.mockResolvedValueOnce(5).mockResolvedValue(0); + + const summary = await scheduler.prune(); + + expect(tracer.startSpan).toHaveBeenCalledWith( + expect.objectContaining({ name: 'Scheduler retention', op: 'scheduler.retention' }), + expect.any(Function), + ); + expect(span.setAttribute).toHaveBeenCalledWith( + SCHEDULER_ATTRIBUTES.retentionDeleted, + summary.deleted, + ); + expect(span.setAttribute).toHaveBeenCalledWith( + SCHEDULER_ATTRIBUTES.retentionDrained, + summary.drained, + ); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('records error on the claim span when the executor pass is abandoned by its loop timeout', async () => { + const { span, tracer } = makeTracer(); + const { scheduler, taskStore } = makeScheduler({ tracer }); + taskStore.claimDueTasks.mockResolvedValue([]); + const controller = new AbortController(); + controller.abort(PASS_TIMED_OUT); + + await scheduler.execute(controller.signal); + + expect(span.setStatus).toHaveBeenCalledWith({ + code: SpanStatus.error, + message: 'Scheduler pass timed out', + }); + expect(span.setStatus).not.toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('records error on the reap span when the reaper pass is abandoned by its loop timeout', async () => { + const { span, tracer } = makeTracer(); + const { scheduler, taskStore } = makeScheduler({ tracer }); + taskStore.findExpiredLeases.mockResolvedValue([]); + const controller = new AbortController(); + controller.abort(PASS_TIMED_OUT); + + await scheduler.reap(controller.signal); + + expect(span.setStatus).toHaveBeenCalledWith({ + code: SpanStatus.error, + message: 'Scheduler pass timed out', + }); + expect(span.setStatus).not.toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('records error on the retention span when the retention pass is abandoned by its loop timeout', async () => { + const { span, tracer } = makeTracer(); + const { scheduler } = makeScheduler({ tracer }); + const controller = new AbortController(); + controller.abort(PASS_TIMED_OUT); + + await scheduler.prune(controller.signal); + + expect(span.setStatus).toHaveBeenCalledWith({ + code: SpanStatus.error, + message: 'Scheduler pass timed out', + }); + expect(span.setStatus).not.toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('records error on the materialize span when the materializer pass is abandoned by its loop timeout', async () => { + const { span, tracer } = makeTracer(); + const { scheduler } = makeScheduler({ tracer }); + const controller = new AbortController(); + controller.abort(PASS_TIMED_OUT); + + // The materializer aborts by throwing (throwIfAborted); a timeout is a real + // fault, so the pass boundary lets it propagate and the tracer errors the + // span, rather than settlePassSpan closing it. + await expect(scheduler.materialize(controller.signal)).rejects.toBeDefined(); + + expect(span.setStatus).toHaveBeenCalledWith( + expect.objectContaining({ code: SpanStatus.error }), + ); + expect(span.setStatus).not.toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('records ok on the materialize span when aborted by a graceful stop, not a timeout', async () => { + const { span, tracer } = makeTracer(); + const { scheduler } = makeScheduler({ tracer }); + // A graceful stop aborts with the default reason, not PASS_TIMED_OUT. + const controller = new AbortController(); + controller.abort(); + + // Unlike the timeout case, the materializer's throw-to-roll-back is caught + // at the pass boundary and reported as a no-op summary, not rethrown. + const summary = await scheduler.materialize(controller.signal); + + expect(summary).toEqual({ claimedJobs: 0, occurrences: 0, created: [], deferredJobs: 0 }); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + expect(span.setStatus).not.toHaveBeenCalledWith( + expect.objectContaining({ code: SpanStatus.error }), + ); + }); + + it('still errors the materialize span when a real failure races a graceful stop', async () => { + const { span, tracer } = makeTracer(); + const controller = new AbortController(); + const dbError = new Error('connection reset'); + // Simulates a shutdown (aborts the signal) landing at the same instant as + // an unrelated transaction failure — the signal is aborted, but this + // error is not `signal.reason`, so it must not be read as the abort. + const materializerTransaction: RunInTransaction = () => { + controller.abort(); + throw dbError; + }; + const { scheduler } = makeScheduler({ tracer, materializerTransaction }); + + await expect(scheduler.materialize(controller.signal)).rejects.toBe(dbError); + + expect(span.setStatus).toHaveBeenCalledWith( + expect.objectContaining({ code: SpanStatus.error }), + ); + expect(span.setStatus).not.toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('records ok on a pass drained by a graceful stop, not a timeout', async () => { + const { span, tracer } = makeTracer(); + const { scheduler, taskStore } = makeScheduler({ tracer }); + taskStore.claimDueTasks.mockResolvedValue([]); + // A graceful stop aborts with the default reason, not PASS_TIMED_OUT. + const controller = new AbortController(); + controller.abort(); + + await scheduler.execute(controller.signal); + + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + expect(span.setStatus).not.toHaveBeenCalledWith( + expect.objectContaining({ code: SpanStatus.error }), + ); + }); +}); + describe('createScheduler metrics', () => { it('records the materialization outcome from the pass summary', async () => { const metrics = mock(); @@ -774,6 +1128,8 @@ describe('createScheduler metrics', () => { timezone: null, intervalSeconds: null, fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, nextRunAt: new Date('2026-01-01T00:00:00.000Z'), lastFiredAt: null, maxAttempts: 3, @@ -783,7 +1139,7 @@ describe('createScheduler metrics', () => { now: new Date('2026-01-01T00:00:00.000Z'), jobs: [corrupt], }); - tx.recordOccurrences.mockResolvedValue(0); + tx.recordOccurrences.mockResolvedValue({ recorded: 0, created: [] }); const materializerTransaction: RunInTransaction = async (work) => await work(tx); const { scheduler } = makeScheduler({ materializerTransaction, metrics }); diff --git a/packages/@n8n/scheduler/src/core/executor/__tests__/backoff.property.test.ts b/packages/@n8n/scheduler/src/core/executor/__tests__/backoff.property.test.ts new file mode 100644 index 00000000000..4d445f3e969 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/executor/__tests__/backoff.property.test.ts @@ -0,0 +1,42 @@ +import fc from 'fast-check'; + +import { backoff } from '../backoff'; + +/** + * Invariants the retry-backoff curve must hold for any attempt number and any + * option set, complementing the worked examples in `backoff.test.ts`. + */ +describe('backoff (fast-check)', () => { + const arbOpts = fc.record({ + baseMs: fc.integer({ min: 1, max: 60_000 }), + // factor >= 1 so the curve never shrinks between attempts. + factor: fc.double({ min: 1, max: 4, noNaN: true }), + maxMs: fc.integer({ min: 1, max: 3_600_000 }), + }); + + it('stays within [0, maxMs] for any attempt', () => { + fc.assert( + fc.property(fc.integer({ min: -5, max: 100 }), arbOpts, (attempts, opts) => { + const delay = backoff(attempts, opts); + expect(delay).toBeGreaterThanOrEqual(0); + expect(delay).toBeLessThanOrEqual(opts.maxMs); + }), + ); + }); + + it('is zero for any non-positive attempt', () => { + fc.assert( + fc.property(fc.integer({ min: -100, max: 0 }), arbOpts, (attempts, opts) => { + expect(backoff(attempts, opts)).toBe(0); + }), + ); + }); + + it('never decreases as the attempt number grows', () => { + fc.assert( + fc.property(fc.integer({ min: 1, max: 40 }), arbOpts, (attempts, opts) => { + expect(backoff(attempts + 1, opts)).toBeGreaterThanOrEqual(backoff(attempts, opts)); + }), + ); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/executor/__tests__/executor.property.test.ts b/packages/@n8n/scheduler/src/core/executor/__tests__/executor.property.test.ts new file mode 100644 index 00000000000..51a3e4500ac --- /dev/null +++ b/packages/@n8n/scheduler/src/core/executor/__tests__/executor.property.test.ts @@ -0,0 +1,88 @@ +import fc from 'fast-check'; +import { mock } from 'vitest-mock-extended'; + +import type { ClaimedTask } from '../../types'; +import { Executor } from '../executor'; +import type { PrecisionTimer } from '../precision-timer'; +import type { ExecutorTaskStore } from '../store'; +import type { TaskHandler, TaskHandlerRegistry } from '../task-handler'; + +const HOST = 'main-property'; +const TASK_TYPE = 'property-test-task'; + +const claimedTask = (id: string): ClaimedTask => ({ + id, + jobId: 1, + taskType: TASK_TYPE, + payload: {}, + scheduledFor: new Date('2026-01-01T00:00:00.000Z'), + runAt: new Date('2026-01-01T00:00:00.000Z'), + status: 'running', + attempts: 0, + maxAttempts: 1, + leaseEpoch: 1, +}); + +/** + * The claim/dispatch exactly-once invariant, fuzzed over randomised batches: + * every claimed task dispatches to its handler at most once, and a task whose + * `markStarted` guard finds nothing to start (already reclaimed or deleted) is + * never dispatched. Store, registry and timer are all mocked, and each fire + * callback is invoked by hand, so the detached-fire path stays deterministic. + */ +describe('Executor claim/dispatch (fast-check)', () => { + it('dispatches each claimed task at most once, and never dispatches one whose markStarted found nothing to start', async () => { + await fc.assert( + fc.asyncProperty( + fc.uniqueArray( + fc.record({ id: fc.string({ minLength: 1, maxLength: 8 }), started: fc.boolean() }), + { minLength: 1, maxLength: 20, selector: (entry) => entry.id }, + ), + async (entries) => { + const store = mock(); + const registry = mock(); + const timer = mock(); + const tasks = entries.map((entry) => claimedTask(entry.id)); + const executeCalls: string[] = []; + const handlerExecute = vi.fn().mockResolvedValue(undefined); + const handler: TaskHandler = { execute: handlerExecute }; + + registry.registeredTypes.mockReturnValue([TASK_TYPE]); + registry.resolve.mockReturnValue(handler); + store.claimDueTasks.mockResolvedValue(tasks); + // One resolved value per task, in claim order. `claimAndSchedule` schedules + // them in that order, and each callback below calls `markStarted` + // synchronously before its first await, so the queued values line up. + for (const entry of entries) { + store.markStarted.mockResolvedValueOnce(entry.started ? 1 : 0); + } + store.completeTask.mockResolvedValue(1); + + const executor = new Executor(store, registry, timer, { + leaseSeconds: 60, + lookaheadSeconds: 5, + batchSize: 100, + }); + + await executor.claimAndSchedule(HOST); + const fireCallbacks = timer.schedule.mock.calls.map(([, fireCallback]) => fireCallback); + for (const fireCallback of fireCallbacks) fireCallback(); + // Let every detached `fire()` settle, including its awaited store calls. + await new Promise((resolve) => setImmediate(resolve)); + await new Promise((resolve) => setImmediate(resolve)); + + for (const call of handlerExecute.mock.calls) { + executeCalls.push((call[0] as ClaimedTask).id); + } + + for (const entry of entries) { + const dispatchCount = executeCalls.filter((id) => id === entry.id).length; + // Exactly once: the setup is deterministic (handler registered, store + // mocked), so a started task must dispatch, not just "at most once". + expect(dispatchCount).toBe(entry.started ? 1 : 0); + } + }, + ), + ); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/executor/__tests__/executor.test.ts b/packages/@n8n/scheduler/src/core/executor/__tests__/executor.test.ts index e4d1628e486..4ec4d4213ef 100644 --- a/packages/@n8n/scheduler/src/core/executor/__tests__/executor.test.ts +++ b/packages/@n8n/scheduler/src/core/executor/__tests__/executor.test.ts @@ -2,11 +2,13 @@ import { mock } from 'vitest-mock-extended'; import type { ClaimedTask } from '../../types'; import { backoff } from '../backoff'; -import { Executor, type ExecutorHooks } from '../executor'; +import { Executor } from '../executor'; +import type { ExecutorHooks } from '../executor'; import type { ExecutorOptions } from '../options'; import type { PrecisionTimer } from '../precision-timer'; import type { ExecutorTaskStore } from '../store'; import type { TaskHandler, TaskHandlerRegistry } from '../task-handler'; +import type { ExecutorTracing, FireResult } from '../tracing'; const HOST = 'main-abc'; @@ -37,14 +39,24 @@ const setup = (options?: Partial) => { onFire: vi.fn(), onRetry: vi.fn(), } satisfies ExecutorHooks; + // A see-through tracing hook that records its calls and just runs the fire. + // The executor's only obligation is to route every fire through this hook; + // how spans are built from the result is tested in + // observability/__tests__/executor-tracing.test.ts. + const tracing = { + fire: vi.fn( + async (_host: string, _task: ClaimedTask, run: () => Promise) => await run(), + ), + } satisfies ExecutorTracing; const executor = new Executor( store, registry, timer, { leaseSeconds: 60, lookaheadSeconds: 5, batchSize: 100, ...options }, hooks, + tracing, ); - return { store, registry, timer, hooks, executor }; + return { store, registry, timer, hooks, tracing, executor }; }; describe('Executor construction', () => { @@ -183,8 +195,9 @@ describe('Executor.fire', () => { registry.resolve.mockReturnValue(handler); store.markStarted.mockResolvedValue(0); - await executor.fire(HOST, claimedTask()); + const result = await executor.fire(HOST, claimedTask()); + expect(result).toEqual({ outcome: 'skipped-not-owned' }); expect(handler.execute).not.toHaveBeenCalled(); expect(store.completeTask).not.toHaveBeenCalled(); expect(store.failTaskTerminal).not.toHaveBeenCalled(); @@ -194,11 +207,13 @@ describe('Executor.fire', () => { const { store, registry, executor } = setup(); const handler: TaskHandler = { execute: vi.fn().mockResolvedValue(undefined) }; store.markStarted.mockResolvedValue(1); + store.completeTask.mockResolvedValue(1); registry.resolve.mockReturnValue(handler); const task = claimedTask(); - await executor.fire(HOST, task); + const result = await executor.fire(HOST, task); + expect(result).toEqual({ outcome: 'completed' }); expect(handler.execute).toHaveBeenCalledWith(task); expect(store.completeTask).toHaveBeenCalledWith({ host: HOST, @@ -249,11 +264,13 @@ describe('Executor.fire', () => { const { store, registry, executor } = setup(); const handler: TaskHandler = { execute: vi.fn().mockRejectedValue(new Error('boom')) }; store.markStarted.mockResolvedValue(1); + store.rescheduleTask.mockResolvedValue(1); registry.resolve.mockReturnValue(handler); const task = claimedTask({ attempts: 0, maxAttempts: 3, leaseEpoch: 7 }); - await executor.fire(HOST, task); + const result = await executor.fire(HOST, task); + expect(result).toEqual({ outcome: 'rescheduled', errorMessage: 'boom' }); // nextAttempt = 1 -> backoff(1) = 5000ms (asserted as a literal to decouple the oracle). expect(store.rescheduleTask).toHaveBeenCalledWith( { host: HOST, id: task.id, claimedEpoch: 7 }, @@ -285,11 +302,13 @@ describe('Executor.fire', () => { const { store, registry, executor } = setup(); const handler: TaskHandler = { execute: vi.fn().mockRejectedValue(new Error('boom')) }; store.markStarted.mockResolvedValue(1); + store.failTaskTerminal.mockResolvedValue(1); registry.resolve.mockReturnValue(handler); const task = claimedTask({ attempts: 0, maxAttempts: 1, leaseEpoch: 7 }); - await executor.fire(HOST, task); + const result = await executor.fire(HOST, task); + expect(result).toEqual({ outcome: 'dead-lettered', errorMessage: 'boom' }); expect(store.failTaskTerminal).toHaveBeenCalledWith( { host: HOST, id: task.id, claimedEpoch: 7 }, 'boom', @@ -320,8 +339,9 @@ describe('Executor.fire', () => { registry.resolve.mockReturnValue(undefined); const task = claimedTask({ taskType: 'gone', leaseEpoch: 7 }); - await executor.fire(HOST, task); + const result = await executor.fire(HOST, task); + expect(result).toEqual({ outcome: 'skipped-no-handler' }); // Resolved before markStarted, so a task with no handler is never marked started. expect(store.markStarted).not.toHaveBeenCalled(); expect(store.releaseClaim).toHaveBeenCalledWith({ @@ -340,10 +360,39 @@ describe('Executor.fire', () => { store.releaseClaim.mockRejectedValue(failure); const task = claimedTask({ taskType: 'gone' }); - await expect(executor.fire(HOST, task)).resolves.toBeUndefined(); + await expect(executor.fire(HOST, task)).resolves.toEqual({ outcome: 'skipped-no-handler' }); expect(hooks.onReleaseError).toHaveBeenCalledWith(task.id, failure); }); + + it('routes the fire through the tracing hook with the host and task, resolving with its result', async () => { + const { store, registry, tracing, executor } = setup(); + const handler: TaskHandler = { execute: vi.fn().mockResolvedValue(undefined) }; + store.markStarted.mockResolvedValue(1); + store.completeTask.mockResolvedValue(1); + registry.resolve.mockReturnValue(handler); + const task = claimedTask(); + + const result = await executor.fire(HOST, task); + + expect(tracing.fire).toHaveBeenCalledTimes(1); + expect(tracing.fire).toHaveBeenCalledWith(HOST, task, expect.any(Function)); + expect(result).toEqual({ outcome: 'completed' }); + }); + + it('lets a throw from the fire reach the tracing hook instead of turning it into an outcome', async () => { + const { store, registry, tracing, executor } = setup(); + const handler: TaskHandler = { execute: vi.fn().mockResolvedValue(undefined) }; + store.markStarted.mockResolvedValue(1); + registry.resolve.mockReturnValue(handler); + // Recording the outcome fails after the handler already succeeded, so there + // is no result to return; the error must propagate as-is. + store.completeTask.mockRejectedValue(new Error('db down')); + + await expect(executor.fire(HOST, claimedTask())).rejects.toThrow('db down'); + + await expect(tracing.fire.mock.results[0].value).rejects.toThrow('db down'); + }); }); describe('Executor.fire metrics hooks', () => { @@ -447,7 +496,7 @@ describe('Executor.fire metrics hooks', () => { expect(hooks.onRetry).not.toHaveBeenCalled(); }); - it('calls no outcome hook when a terminal write affects no row (reclaimed on lease overrun)', async () => { + it('calls no outcome hook and reports the fire as skipped when a terminal write affects no row (reclaimed on lease overrun)', async () => { const { store, registry, hooks, executor } = setup(); store.markStarted.mockResolvedValue(1); registry.resolve.mockReturnValue({ execute: vi.fn().mockResolvedValue(undefined) }); @@ -457,24 +506,29 @@ describe('Executor.fire metrics hooks', () => { store.rescheduleTask.mockResolvedValue(0); // Success path with a 0-row complete. - await executor.fire(HOST, claimedTask()); + const completedResult = await executor.fire(HOST, claimedTask()); + expect(completedResult).toEqual({ outcome: 'skipped-not-owned' }); expect(hooks.onFire).not.toHaveBeenCalled(); - // Retry path with a 0-row reschedule. + // Retry path with a 0-row reschedule. The handler did fail, so the result + // keeps its error message even though the failure was not recorded. registry.resolve.mockReturnValue({ execute: vi.fn().mockRejectedValue(new Error('boom')) }); - await executor.fire(HOST, claimedTask({ attempts: 0, maxAttempts: 3 })); + const retryResult = await executor.fire(HOST, claimedTask({ attempts: 0, maxAttempts: 3 })); + expect(retryResult).toEqual({ outcome: 'skipped-not-owned', errorMessage: 'boom' }); expect(hooks.onRetry).not.toHaveBeenCalled(); // Terminal-failure path with a 0-row failTaskTerminal. - await executor.fire(HOST, claimedTask({ attempts: 0, maxAttempts: 1 })); + const terminalResult = await executor.fire(HOST, claimedTask({ attempts: 0, maxAttempts: 1 })); + expect(terminalResult).toEqual({ outcome: 'skipped-not-owned', errorMessage: 'boom' }); expect(hooks.onFire).not.toHaveBeenCalled(); }); - it('defaults to a safe no-op when no hooks are supplied', async () => { + it('defaults to no-op hooks and pass-through tracing when neither is supplied', async () => { const store = mock(); const registry = mock(); const timer = mock(); store.markStarted.mockResolvedValue(1); + store.completeTask.mockResolvedValue(1); registry.resolve.mockReturnValue({ execute: vi.fn().mockResolvedValue(undefined) }); // No hooks: the optional calls must not throw. const executor = new Executor(store, registry, timer, { @@ -483,7 +537,7 @@ describe('Executor.fire metrics hooks', () => { batchSize: 100, }); - await expect(executor.fire(HOST, claimedTask())).resolves.toBeUndefined(); + await expect(executor.fire(HOST, claimedTask())).resolves.toEqual({ outcome: 'completed' }); }); }); diff --git a/packages/@n8n/scheduler/src/core/executor/executor.ts b/packages/@n8n/scheduler/src/core/executor/executor.ts index 6ea441b4abe..45573178688 100644 --- a/packages/@n8n/scheduler/src/core/executor/executor.ts +++ b/packages/@n8n/scheduler/src/core/executor/executor.ts @@ -6,6 +6,8 @@ import { DEFAULT_EXECUTOR_OPTIONS, type ExecutorOptions } from './options'; import type { PrecisionTimer } from './precision-timer'; import type { ClaimedTaskRef, ClaimDueTasksBatch, ExecutorTaskStore } from './store'; import type { TaskHandlerRegistry } from './task-handler'; +import { noopExecutorTracing } from './tracing'; +import type { ExecutorTracing, FireResult } from './tracing'; import type { ClaimedTask } from '../types'; type ClaimedEntry = { host: string; task: ClaimedTask }; @@ -90,6 +92,7 @@ export class Executor { private readonly timer: PrecisionTimer, private readonly options: ExecutorOptions = DEFAULT_EXECUTOR_OPTIONS, private readonly hooks: ExecutorHooks = {}, + private readonly tracing: ExecutorTracing = noopExecutorTracing, ) { this.leaseMs = options.leaseSeconds * Time.seconds.toMilliseconds; // Claim one driver tick ahead so a task due before the next tick fires precisely @@ -183,9 +186,16 @@ export class Executor { /** * Fire one claimed task: confirm it is still ours, dispatch to its handler, then * record the outcome. A row that vanished (cascade-delete) or was reclaimed after - * a lease expiry is a benign no-op at every step, never an error. + * a lease expiry is skipped quietly at every step, never treated as an error. + * + * @returns How the fire ended; see {@link FireResult}. */ - async fire(host: string, task: ClaimedTask): Promise { + async fire(host: string, task: ClaimedTask): Promise { + return await this.tracing.fire(host, task, async () => await this.runFire(host, task)); + } + + /** The actual fire logic. {@link fire} wraps it in the tracing hook. */ + private async runFire(host: string, task: ClaimedTask): Promise { const claim: ClaimedTaskRef = { host, id: task.id, claimedEpoch: task.leaseEpoch }; // Resolve the handler before marking the task started: don't mark a task started @@ -196,13 +206,15 @@ export class Executor { if (handler === undefined) { this.hooks.onMissingHandler?.(task); await this.releaseClaimBestEffort(claim); - return; + return { outcome: 'skipped-no-handler' }; } // Guard + set `startedAt` in one write. 0 rows => deleted or reclaimed; don't // dispatch an execution for work that is gone or no longer ours. const started = await this.store.markStarted(claim); - if (started === 0) return; + if (started === 0) { + return { outcome: 'skipped-not-owned' }; + } // Now that the task is confirmed ours and started, it is genuinely being dispatched. // Lag is measured against `runAt` (the effective fire time, pushed forward by retry @@ -220,22 +232,39 @@ export class Executor { try { await handler.execute(task); } catch (error) { - const message = ensureError(error).message; + const errorMessage = ensureError(error).message; const nextAttempts = task.attempts + 1; if (nextAttempts >= task.maxAttempts) { - // Guard the metric on rows affected: the write resolves 0 (not rejects) when the - // row was reclaimed by the reaper on lease overrun, so don't count that as ours. - const rowsAffected = await this.store.failTaskTerminal(claim, message); - if (rowsAffected > 0) this.hooks.onFire?.(task.taskType, 'failure'); - } else { - const rowsAffected = await this.store.rescheduleTask(claim, backoff(nextAttempts), message); - if (rowsAffected > 0) this.hooks.onRetry?.(task.taskType); + // A terminal write resolves 0 (it does not reject) when the row was + // reclaimed by the reaper after a lease overrun. The result is then no + // longer ours to record: report the fire as skipped, not as a state + // transition we did not make, and count no metric. Same on every + // terminal write below. + const rowsAffected = await this.store.failTaskTerminal(claim, errorMessage); + if (rowsAffected > 0) { + this.hooks.onFire?.(task.taskType, 'failure'); + return { outcome: 'dead-lettered', errorMessage }; + } + return { outcome: 'skipped-not-owned', errorMessage }; } - return; + const rowsAffected = await this.store.rescheduleTask( + claim, + backoff(nextAttempts), + errorMessage, + ); + if (rowsAffected > 0) { + this.hooks.onRetry?.(task.taskType); + return { outcome: 'rescheduled', errorMessage }; + } + return { outcome: 'skipped-not-owned', errorMessage }; } const rowsAffected = await this.store.completeTask(claim); - if (rowsAffected > 0) this.hooks.onFire?.(task.taskType, 'success'); + if (rowsAffected > 0) { + this.hooks.onFire?.(task.taskType, 'success'); + return { outcome: 'completed' }; + } + return { outcome: 'skipped-not-owned' }; } /** Release a claim, reporting but swallowing failures: the reaper still recovers the row. */ diff --git a/packages/@n8n/scheduler/src/core/executor/index.ts b/packages/@n8n/scheduler/src/core/executor/index.ts index f0251c2fb82..ce94ebd12e2 100644 --- a/packages/@n8n/scheduler/src/core/executor/index.ts +++ b/packages/@n8n/scheduler/src/core/executor/index.ts @@ -1,4 +1,6 @@ export { Executor, type ExecutorHooks } from './executor'; +export { noopExecutorTracing } from './tracing'; +export type { ExecutorTracing, FireResult } from './tracing'; export { DEFAULT_EXECUTOR_OPTIONS, type ExecutorOptions } from './options'; export type { ClaimedTaskRef, ClaimDueTasksBatch, ExecutorTaskStore } from './store'; export { TaskHandlerRegistry, type TaskHandler } from './task-handler'; diff --git a/packages/@n8n/scheduler/src/core/executor/tracing.ts b/packages/@n8n/scheduler/src/core/executor/tracing.ts new file mode 100644 index 00000000000..7c594ace5ca --- /dev/null +++ b/packages/@n8n/scheduler/src/core/executor/tracing.ts @@ -0,0 +1,45 @@ +import type { ClaimedTask } from '../types'; + +/** + * How firing one claimed task ended. + * + * - `completed`: the handler ran successfully and the task was marked done. + * - `rescheduled`: the handler failed; the task will be retried later. + * - `dead-lettered`: the handler failed on its last allowed attempt; the task + * is now permanently failed. + * - `skipped-no-handler`: no handler is registered for the task's type; the + * claim was released so another instance can pick the task up. + * - `skipped-not-owned`: the task row was deleted or taken over by another + * instance. Either nothing ran, or the handler did run but this instance no + * longer owned the task when it tried to record the result. + * + * `errorMessage` is present whenever the handler ran and failed, including a + * `skipped-not-owned` fire whose failure could not be recorded. + */ +export type FireResult = + | { outcome: 'completed' | 'skipped-no-handler' | 'skipped-not-owned' } + | { outcome: 'rescheduled' | 'dead-lettered' | 'skipped-not-owned'; errorMessage: string }; + +/** + * Lets an observer wrap the execution of one fire, typically to record a + * tracing span around it (see `createExecutorTracing` in `observability/`). + * + * An implementation must call `run()` (which performs the actual fire), + * return its result unchanged, and let any error thrown by `run()` propagate. + */ +export interface ExecutorTracing { + /** + * Called once per fired task. + * + * @param host - Identity of the instance firing the task. + * @param task - The claimed task being fired. + * @param run - Performs the fire and resolves with its result. + * @returns The result `run` resolved with, unchanged. + */ + fire(host: string, task: ClaimedTask, run: () => Promise): Promise; +} + +/** Default implementation: runs the fire and records nothing. */ +export const noopExecutorTracing: ExecutorTracing = { + fire: async (_host, _task, run) => await run(), +}; diff --git a/packages/@n8n/scheduler/src/core/factory.ts b/packages/@n8n/scheduler/src/core/factory.ts index fef4bd487ca..bc0901b7c24 100644 --- a/packages/@n8n/scheduler/src/core/factory.ts +++ b/packages/@n8n/scheduler/src/core/factory.ts @@ -9,7 +9,7 @@ import { TaskHandlerRegistry, } from './executor'; import type { ExecutorOptions, ExecutorTaskStore } from './executor'; -import { DEFAULT_LIFECYCLE_OPTIONS, Loop } from './lifecycle'; +import { DEFAULT_LIFECYCLE_OPTIONS, Loop, PASS_TIMED_OUT } from './lifecycle'; import type { LifecycleOptions } from './lifecycle'; import { DEFAULT_MATERIALIZER_OPTIONS, materialize } from './materializer'; import type { MaterializerOptions, RunInTransaction } from './materializer'; @@ -18,7 +18,12 @@ import type { ReaperOptions, ReaperTaskStore } from './reaper'; import { DEFAULT_RETENTION_OPTIONS, prune } from './retention'; import type { RetentionOptions, RetentionStore } from './retention'; import type { Scheduler, SchedulerPasses } from './scheduler'; +import { SCHEDULER_ATTRIBUTES } from '../observability/attributes'; +import { createExecutorTracing, withHandoffTracing } from '../observability/executor-tracing'; +import { traceCreatedTasks } from '../observability/materializer-tracing'; import { noopMetrics, type SchedulerMetrics } from '../observability/metrics'; +import { tracePass } from '../observability/pass-tracing'; +import { noopTracer, type Tracer } from '../observability/tracer'; export type SchedulerEventLevel = 'debug' | 'info' | 'warn' | 'error'; @@ -61,6 +66,9 @@ export interface SchedulerDeps { onEvent?: (event: SchedulerEvent) => void; + /** Host tracer; defaults to a no-op. */ + tracer?: Tracer; + /** Host metrics; defaults to a no-op. */ metrics?: SchedulerMetrics; } @@ -90,6 +98,7 @@ function withDefaults(defaults: T, overrides: Partial = {}) */ export function createScheduler(deps: SchedulerDeps): Scheduler & SchedulerPasses { const { hostId, materializerTransaction, taskStore, onEvent } = deps; + const tracer = deps.tracer ?? noopTracer; const metrics = deps.metrics ?? noopMetrics; const materializerOptions = withDefaults(DEFAULT_MATERIALIZER_OPTIONS, deps.materializer); const executorOptions = withDefaults(DEFAULT_EXECUTOR_OPTIONS, deps.executor); @@ -165,45 +174,52 @@ export function createScheduler(deps: SchedulerDeps): Scheduler & SchedulerPasse }; const registry = new TaskHandlerRegistry(); - const executor = new Executor(taskStore, registry, new PrecisionTimer(), executorOptions, { - onLeaseShorterThanLookahead: (context) => { - emit( - 'warn', - 'Scheduler executor lookahead reaches or exceeds the lease; claimed tasks may lose their lease before firing', - { ...context }, - ); + const executor = new Executor( + taskStore, + registry, + new PrecisionTimer(), + executorOptions, + { + onLeaseShorterThanLookahead: (context) => { + emit( + 'warn', + 'Scheduler executor lookahead reaches or exceeds the lease; claimed tasks may lose their lease before firing', + { ...context }, + ); + }, + onMissingHandler: (task) => { + emit('warn', 'Scheduler claimed a task with no registered handler; claim released', { + taskId: task.id, + taskType: task.taskType, + }); + }, + onFireError: (task, error) => { + emit('error', 'Scheduler could not record a task outcome; left for the reaper', { + taskId: task.id, + error: described(error), + }); + }, + onReleaseError: (taskId, error) => { + emit('error', 'Scheduler failed to release a claimed task; left for the reaper', { + taskId, + error: described(error), + }); + }, + onDispatch: (taskType, lagSeconds) => + recordMetric(() => { + metrics.recordDispatch(taskType); + metrics.observeDispatchLagSeconds(taskType, lagSeconds); + }), + onFire: (taskType, result) => + recordMetric(() => { + metrics.recordFireOutcome(taskType, result); + // An executor terminal failure (attempts exhausted) is a permanent failure = a dead-letter. + if (result === 'failure') metrics.recordDeadLettered(); + }), + onRetry: (taskType) => recordMetric(() => metrics.recordRetry(taskType)), }, - onMissingHandler: (task) => { - emit('warn', 'Scheduler claimed a task with no registered handler; claim released', { - taskId: task.id, - taskType: task.taskType, - }); - }, - onFireError: (task, error) => { - emit('error', 'Scheduler could not record a task outcome; left for the reaper', { - taskId: task.id, - error: described(error), - }); - }, - onReleaseError: (taskId, error) => { - emit('error', 'Scheduler failed to release a claimed task; left for the reaper', { - taskId, - error: described(error), - }); - }, - onDispatch: (taskType, lagSeconds) => - recordMetric(() => { - metrics.recordDispatch(taskType); - metrics.observeDispatchLagSeconds(taskType, lagSeconds); - }), - onFire: (taskType, result) => - recordMetric(() => { - metrics.recordFireOutcome(taskType, result); - // An executor terminal failure (attempts exhausted) is a permanent failure = a dead-letter. - if (result === 'failure') metrics.recordDeadLettered(); - }), - onRetry: (taskType) => recordMetric(() => metrics.recordRetry(taskType)), - }); + createExecutorTracing(tracer), + ); if (retentionOptions.failedRetentionSeconds < retentionOptions.retentionSeconds) { emit( @@ -216,71 +232,127 @@ export function createScheduler(deps: SchedulerDeps): Scheduler & SchedulerPasse ); } - const runMaterialize = async (signal?: AbortSignal) => { - const summary = await materialize( - materializerTransaction, - materializerOptions, - { - onPlanError: (job, error) => { - emit('error', 'Scheduler could not plan a job schedule; deferred for retry', { - jobId: job.id, - error: described(error), - }); - }, - onSkippedDuplicates: (context) => { - emit('debug', 'Scheduler materializer skipped occurrences that were already recorded', { - ...context, - }); - }, - }, - signal, - ); - recordMetric(() => metrics.recordMaterialized(summary.occurrences, summary.deferredJobs)); - return summary; - }; - - const runExecute = async (signal?: AbortSignal) => - await executor.claimAndSchedule(hostId, signal); - - const runReap = async (signal?: AbortSignal) => { - const result = await reap( - taskStore, - reaperOptions, - { - onRowError: (taskId, error) => { - emit( - 'error', - 'Scheduler could not recover an expired task; skipped until the next sweep', - { - taskId, - error: described(error), + // Unlike the other passes, the materializer must throw on an observed abort + // rather than returning early: it is one open transaction, and only a throw + // out of `runInTransaction`'s callback rolls it back. A timeout is a real + // fault (the span stays errored, same as any other pass timing out); a plain + // shutdown abort is expected and rolled back cleanly, so it is reported the + // same way the other passes report one: a no-op summary, span ok. + const runMaterialize = tracePass( + tracer, + { name: 'Scheduler materialize', op: 'scheduler.materialize' }, + async (signal) => { + try { + const summary = await materialize( + materializerTransaction, + materializerOptions, + { + onPlanError: (job, error) => { + emit('error', 'Scheduler could not plan a job schedule; deferred for retry', { + jobId: job.id, + error: described(error), + }); }, - ); - }, - onDeadLetter: (task) => { - emit('warn', 'Scheduler dead-lettered a task; its last attempt lost its lease', { - ...task, - }); - }, - }, - signal, - ); - recordMetric(() => metrics.recordReaped(result.reclaimed, result.deadLettered)); - return result; - }; + onSkippedDuplicates: (context) => { + emit( + 'debug', + 'Scheduler materializer skipped occurrences that were already recorded', + { ...context }, + ); + }, + }, + signal, + ); + await traceCreatedTasks(tracer, summary.created); + recordMetric(() => metrics.recordMaterialized(summary.occurrences, summary.deferredJobs)); + return summary; + } catch (error) { + // `throwIfAborted` always throws `signal.reason` itself, so this only + // swallows the abort: a real storage failure that happens to race a + // shutdown throws its own error, not `signal.reason`, and still propagates. + if ( + signal?.aborted === true && + signal.reason !== PASS_TIMED_OUT && + error === signal.reason + ) { + return { claimedJobs: 0, occurrences: 0, created: [], deferredJobs: 0 }; + } + throw error; + } + }, + (summary) => ({ + [SCHEDULER_ATTRIBUTES.claimedJobs]: summary.claimedJobs, + [SCHEDULER_ATTRIBUTES.occurrences]: summary.occurrences, + [SCHEDULER_ATTRIBUTES.deferredJobs]: summary.deferredJobs, + }), + ); - const runPrune = async (signal?: AbortSignal) => { - const summary = await prune(taskStore, retentionOptions, signal); - if (!summary.drained && signal?.aborted !== true) { - emit('warn', 'Scheduler retention pass hit its batch budget; backlog remains', { - ...summary, - }); - } else if (summary.drained && summary.deleted > 0) { - emit('debug', 'Scheduler retention deleted finished tasks', { ...summary }); - } - recordMetric(() => metrics.recordPruned(summary.deleted)); - return summary; - }; + const runExecute = tracePass( + tracer, + { + name: 'Scheduler claim', + op: 'scheduler.claim', + attributes: { [SCHEDULER_ATTRIBUTES.host]: hostId }, + }, + async (signal) => await executor.claimAndSchedule(hostId, signal), + (tasks) => ({ [SCHEDULER_ATTRIBUTES.claimedCount]: tasks.length }), + ); + + const runReap = tracePass( + tracer, + { name: 'Scheduler reap', op: 'scheduler.reap' }, + async (signal) => { + const result = await reap( + taskStore, + reaperOptions, + { + onRowError: (taskId, error) => { + emit( + 'error', + 'Scheduler could not recover an expired task; skipped until the next sweep', + { + taskId, + error: described(error), + }, + ); + }, + onDeadLetter: (task) => { + emit('warn', 'Scheduler dead-lettered a task; its last attempt lost its lease', { + ...task, + }); + }, + }, + signal, + ); + recordMetric(() => metrics.recordReaped(result.reclaimed, result.deadLettered)); + return result; + }, + (result) => ({ + [SCHEDULER_ATTRIBUTES.reclaimed]: result.reclaimed, + [SCHEDULER_ATTRIBUTES.deadLettered]: result.deadLettered, + }), + ); + + const runPrune = tracePass( + tracer, + { name: 'Scheduler retention', op: 'scheduler.retention' }, + async (signal) => { + const summary = await prune(taskStore, retentionOptions, signal); + if (!summary.drained && signal?.aborted !== true) { + emit('warn', 'Scheduler retention pass hit its batch budget; backlog remains', { + ...summary, + }); + } else if (summary.drained && summary.deleted > 0) { + emit('debug', 'Scheduler retention deleted finished tasks', { ...summary }); + } + recordMetric(() => metrics.recordPruned(summary.deleted)); + return summary; + }, + (summary) => ({ + [SCHEDULER_ATTRIBUTES.retentionDeleted]: summary.deleted, + [SCHEDULER_ATTRIBUTES.retentionDrained]: summary.drained, + }), + ); const loopOver = ( pass: string, @@ -352,7 +424,9 @@ export function createScheduler(deps: SchedulerDeps): Scheduler & SchedulerPasse return { registerTaskHandler(taskType, handler) { - registry.register(taskType, handler); + // Wrapped here, at registration, so the executor calls handlers without + // knowing a tracing span surrounds each run. + registry.register(taskType, withHandoffTracing(tracer, handler)); }, materialize: runMaterialize, diff --git a/packages/@n8n/scheduler/src/core/index.ts b/packages/@n8n/scheduler/src/core/index.ts index 15f0739dc11..1fccb590cd1 100644 --- a/packages/@n8n/scheduler/src/core/index.ts +++ b/packages/@n8n/scheduler/src/core/index.ts @@ -7,7 +7,35 @@ export type { SchedulerTaskStore, } from './factory'; -export type { ClaimedTask } from './types'; +export type { + ClaimedTask, + CronSchedule, + IntervalSchedule, + OneOffSchedule, + RecurringCronSchedule, + Schedule, +} from './types'; +export { computeFirstRunAt, computeNextRunAt } from './recurrence/next-run'; +export { validateSchedule } from './recurrence/validate'; + +export { provision, deprovision, createJobProvisioner } from './provisioning'; +export type { + JobProvisioner, + JobProvisionerDeps, + ProvisionTransaction, + RunInProvisionTransaction, + DeprovisionTransaction, + RunInDeprovisionTransaction, + ScheduleDefinition, + CronDefinition, + RecurringCronDefinition, + IntervalDefinition, + OneOffDefinition, + DesiredJob, + ExistingJob, + ProvisionedJob, + ProvisionSummary, +} from './provisioning'; export type { ExecutorOptions, TaskHandler } from './executor'; export type { MaterializerOptions, @@ -20,5 +48,7 @@ export type { ConcurrencyMode, LifecycleOptions } from './lifecycle'; export type { ReaperOptions, ReapResult } from './reaper'; export type { RetentionOptions, RetentionSummary } from './retention'; +export { SpanStatus, noopTracer } from '../observability/tracer'; +export type { Tracer, Span, SpanOptions } from '../observability/tracer'; export { noopMetrics } from '../observability/metrics'; export type { SchedulerMetrics } from '../observability/metrics'; diff --git a/packages/@n8n/scheduler/src/core/lifecycle/index.ts b/packages/@n8n/scheduler/src/core/lifecycle/index.ts index 08feff9bc6c..a5f1caf0807 100644 --- a/packages/@n8n/scheduler/src/core/lifecycle/index.ts +++ b/packages/@n8n/scheduler/src/core/lifecycle/index.ts @@ -1,4 +1,4 @@ -export { Loop } from './loop'; +export { Loop, PASS_TIMED_OUT } from './loop'; export type { ConcurrencyMode, LoopHooks, LoopOptions } from './loop'; export { executorLookaheadSeconds } from './lookahead'; export { DEFAULT_LIFECYCLE_OPTIONS } from './options'; diff --git a/packages/@n8n/scheduler/src/core/lifecycle/loop.ts b/packages/@n8n/scheduler/src/core/lifecycle/loop.ts index bbc55f5de97..34853855a0c 100644 --- a/packages/@n8n/scheduler/src/core/lifecycle/loop.ts +++ b/packages/@n8n/scheduler/src/core/lifecycle/loop.ts @@ -4,6 +4,13 @@ import { Timeline } from './timeline'; /** Race sentinel: a pass can resolve to anything, so the timeout resolves to a symbol no pass can produce. */ const TIMED_OUT = Symbol('pass timed out'); +/** + * Abort reason a loop uses when it abandons a timed-out pass, distinct from the + * default reason a graceful {@link Loop.stop} aborts with. A pass can read + * `signal.reason === PASS_TIMED_OUT` to tell a timeout apart from a clean drain. + */ +export const PASS_TIMED_OUT = Symbol('pass aborted after timeout'); + /** * How a loop resolves a tick that would overlap in-flight passes. * @@ -165,7 +172,7 @@ export class Loop { pass.catch(() => {}); // Deliberately NOT chained: try { if ((await Promise.race([pass, timeout.timedOut])) === TIMED_OUT) { - controller.abort(); + controller.abort(PASS_TIMED_OUT); this.hooks.onTimeout({ timeoutMs: this.options.timeoutMs }); } } catch (error) { diff --git a/packages/@n8n/scheduler/src/core/materializer/__tests__/materialize.test.ts b/packages/@n8n/scheduler/src/core/materializer/__tests__/materialize.test.ts index a046578378c..45fa29b42ed 100644 --- a/packages/@n8n/scheduler/src/core/materializer/__tests__/materialize.test.ts +++ b/packages/@n8n/scheduler/src/core/materializer/__tests__/materialize.test.ts @@ -16,6 +16,8 @@ const makeJob = (id: number): ScheduledJob => ({ timezone: null, intervalSeconds: 10, fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, nextRunAt: NOW, lastFiredAt: null, maxAttempts: 1, @@ -42,7 +44,7 @@ describe('materialize', () => { const summary = await materialize(runnerWith(tx), options); - expect(summary).toEqual({ claimedJobs: 0, occurrences: 0, deferredJobs: 0 }); + expect(summary).toEqual({ claimedJobs: 0, occurrences: 0, created: [], deferredJobs: 0 }); expect(tx.recordOccurrences).not.toHaveBeenCalled(); expect(tx.advanceJobs).not.toHaveBeenCalled(); }); @@ -51,12 +53,12 @@ describe('materialize', () => { const tx = mock(); tx.claimDueJobs.mockResolvedValue({ now: NOW, jobs: [makeJob(1), makeJob(2)] }); // windowSeconds: 0 means one occurrence per job: the due fire, both newly recorded. - tx.recordOccurrences.mockResolvedValue(2); + tx.recordOccurrences.mockResolvedValue({ recorded: 2, created: [] }); const summary = await materialize(runnerWith(tx), options); // The summary reports the count `recordOccurrences` returned, not the plan's size. - expect(summary).toEqual({ claimedJobs: 2, occurrences: 2, deferredJobs: 0 }); + expect(summary).toEqual({ claimedJobs: 2, occurrences: 2, created: [], deferredJobs: 0 }); // One insert and one update for the whole batch, not a pair per job. expect(tx.recordOccurrences).toHaveBeenCalledTimes(1); @@ -97,7 +99,7 @@ describe('materialize', () => { const tx = mock(); tx.claimDueJobs.mockResolvedValue({ now: NOW, jobs: [makeJob(1), makeJob(2)] }); // Two planned, one already recorded (e.g. by a concurrent pass). - tx.recordOccurrences.mockResolvedValue(1); + tx.recordOccurrences.mockResolvedValue({ recorded: 1, created: [] }); const onSkippedDuplicates = vi.fn(() => { throw new Error('logger down'); }); @@ -105,14 +107,14 @@ describe('materialize', () => { const summary = await materialize(runnerWith(tx), options, { onSkippedDuplicates }); expect(onSkippedDuplicates).toHaveBeenCalledWith({ planned: 2, recorded: 1 }); - expect(summary).toEqual({ claimedJobs: 2, occurrences: 1, deferredJobs: 0 }); + expect(summary).toEqual({ claimedJobs: 2, occurrences: 1, created: [], deferredJobs: 0 }); expect(tx.advanceJobs).toHaveBeenCalledTimes(1); }); it('stays silent when every planned occurrence is newly recorded', async () => { const tx = mock(); tx.claimDueJobs.mockResolvedValue({ now: NOW, jobs: [makeJob(1)] }); - tx.recordOccurrences.mockResolvedValue(1); + tx.recordOccurrences.mockResolvedValue({ recorded: 1, created: [] }); const onSkippedDuplicates = vi.fn(); await materialize(runnerWith(tx), options, { onSkippedDuplicates }); @@ -131,12 +133,12 @@ describe('materialize', () => { }; const tx = mock(); tx.claimDueJobs.mockResolvedValue({ now: NOW, jobs: [good, bad] }); - tx.recordOccurrences.mockResolvedValue(1); + tx.recordOccurrences.mockResolvedValue({ recorded: 1, created: [] }); const onPlanError = vi.fn(); const summary = await materialize(runnerWith(tx), options, { onPlanError }); - expect(summary).toEqual({ claimedJobs: 2, occurrences: 1, deferredJobs: 1 }); + expect(summary).toEqual({ claimedJobs: 2, occurrences: 1, created: [], deferredJobs: 1 }); expect(onPlanError).toHaveBeenCalledTimes(1); expect(onPlanError).toHaveBeenCalledWith(bad, expect.anything()); @@ -186,7 +188,7 @@ describe('materialize', () => { tx.claimDueJobs.mockResolvedValue({ now: NOW, jobs: [makeJob(1)] }); tx.recordOccurrences.mockImplementation(async () => { controller.abort(); - return await Promise.resolve(1); + return await Promise.resolve({ recorded: 1, created: [] }); }); const onSkippedDuplicates = vi.fn(); @@ -208,7 +210,7 @@ describe('materialize', () => { }; const tx = mock(); tx.claimDueJobs.mockResolvedValue({ now: NOW, jobs: [good, bad] }); - tx.recordOccurrences.mockResolvedValue(1); + tx.recordOccurrences.mockResolvedValue({ recorded: 1, created: [] }); // The reporter is host-supplied; a broken one must not turn a deferred job // into a rolled-back pass. const onPlanError = vi.fn(() => { @@ -217,7 +219,7 @@ describe('materialize', () => { const summary = await materialize(runnerWith(tx), options, { onPlanError }); - expect(summary).toEqual({ claimedJobs: 2, occurrences: 1, deferredJobs: 1 }); + expect(summary).toEqual({ claimedJobs: 2, occurrences: 1, created: [], deferredJobs: 1 }); expect(tx.recordOccurrences).toHaveBeenCalledTimes(1); expect(tx.advanceJobs).toHaveBeenCalledTimes(1); }); diff --git a/packages/@n8n/scheduler/src/core/materializer/__tests__/plan.property.test.ts b/packages/@n8n/scheduler/src/core/materializer/__tests__/plan.property.test.ts new file mode 100644 index 00000000000..b0efb8f502e --- /dev/null +++ b/packages/@n8n/scheduler/src/core/materializer/__tests__/plan.property.test.ts @@ -0,0 +1,182 @@ +import fc from 'fast-check'; +import type { CronExpression } from 'n8n-workflow'; + +import type { ScheduledJob } from '../../types'; +import { planOccurrences } from '../plan'; + +const NOW = new Date('2026-01-01T00:00:00.000Z'); + +const makeIntervalJob = (intervalSeconds: number): ScheduledJob => ({ + id: 1, + taskType: 'test', + payload: {}, + kind: 'interval', + cronExpression: null, + timezone: null, + intervalSeconds, + fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, + nextRunAt: NOW, + lastFiredAt: null, + maxAttempts: 1, +}); + +const makeCronJob = (cronExpression: string, timezone: string): ScheduledJob => ({ + id: 2, + taskType: 'test', + payload: {}, + kind: 'cron', + cronExpression: cronExpression as CronExpression, + timezone, + intervalSeconds: null, + fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, + nextRunAt: NOW, + lastFiredAt: null, + maxAttempts: 1, +}); + +const makeOneOffJob = (fireAt: Date): ScheduledJob => ({ + id: 3, + taskType: 'test', + payload: {}, + kind: 'one_off', + cronExpression: null, + timezone: null, + intervalSeconds: null, + fireAt, + recurrenceUnit: null, + recurrenceSize: null, + // A fresh one-off job is due exactly at its fireAt: the materializer's + // index only ever surfaces it once that instant is reached. + nextRunAt: fireAt, + lastFiredAt: null, + maxAttempts: 1, +}); + +/** + * The recurring-schedule planning invariants, shared by the interval and cron + * properties: occurrences stay ordered, inside the window, bounded, start at + * the job's due instant, and the returned cursor is a faithful continuation. + */ +function assertPlanInvariants( + plan: ReturnType, + job: ScheduledJob, + windowEnd: number, + maxPerJob: number, +): void { + expect(plan.occurrences.length).toBeLessThanOrEqual(maxPerJob); + + for (let i = 1; i < plan.occurrences.length; i++) { + expect(plan.occurrences[i].getTime()).toBeGreaterThan(plan.occurrences[i - 1].getTime()); + } + for (const occurrence of plan.occurrences) { + expect(occurrence.getTime()).toBeLessThanOrEqual(windowEnd); + } + + // The first recorded occurrence is always the job's due instant (an + // occurrence can only exist when the starting cursor was non-null). + if (plan.occurrences.length > 0) { + expect(plan.occurrences[0].getTime()).toBe(job.nextRunAt!.getTime()); + } + + // lastFiredAt tracks the newest occurrence, or the prior value if none. + expect(plan.lastFiredAt).toEqual(plan.occurrences.at(-1) ?? job.lastFiredAt); + + // When the plan stopped before the cap, the cursor must be exhausted or + // genuinely past the window, i.e. nothing runnable was skipped. + if (plan.occurrences.length < maxPerJob) { + expect(plan.nextRunAt === null || plan.nextRunAt.getTime() > windowEnd).toBe(true); + } +} + +describe('planOccurrences (fast-check)', () => { + it('produces an ordered, in-window, bounded plan with a faithful cursor', () => { + fc.assert( + fc.property( + fc.integer({ min: 1, max: 3600 }), + fc.integer({ min: 0, max: 7200 }), + fc.integer({ min: 1, max: 50 }), + (intervalSeconds, windowSeconds, maxPerJob) => { + const job = makeIntervalJob(intervalSeconds); + const plan = planOccurrences(job, NOW, { + windowSeconds, + maxPerJob, + defaultTimezone: 'UTC', + }); + assertPlanInvariants(plan, job, NOW.getTime() + windowSeconds * 1000, maxPerJob); + }, + ), + ); + }); + + const arbCron = fc.constantFrom( + '0 * * * * *', + '0 0 * * * *', + '0 0 0 * * *', + '0 30 9 * * 1-5', + '0 0 0 1 * *', + ); + const arbTimezone = fc.constantFrom( + 'UTC', + 'Europe/Berlin', + 'America/New_York', + 'Asia/Kolkata', + 'Pacific/Auckland', + ); + + it('produces an ordered, in-window, bounded plan for a cron job in any supported timezone', () => { + fc.assert( + fc.property( + arbCron, + arbTimezone, + // Up to ~30 days: wide enough that a sparse monthly cron can still fire, + // capped low by maxPerJob so the loop stays cheap regardless. + fc.integer({ min: 0, max: 30 * 24 * 3600 }), + fc.integer({ min: 1, max: 20 }), + (cronExpression, timezone, windowSeconds, maxPerJob) => { + const job = makeCronJob(cronExpression, timezone); + const plan = planOccurrences(job, NOW, { + windowSeconds, + maxPerJob, + defaultTimezone: 'UTC', + }); + assertPlanInvariants(plan, job, NOW.getTime() + windowSeconds * 1000, maxPerJob); + }, + ), + ); + }); + + it('fires a one-off job at most once, only when its due instant falls within the window', () => { + fc.assert( + fc.property( + fc.integer({ min: -3600, max: 2 * 7200 }), + fc.integer({ min: 0, max: 7200 }), + (fireOffsetSeconds, windowSeconds) => { + const fireAt = new Date(NOW.getTime() + fireOffsetSeconds * 1000); + const job = makeOneOffJob(fireAt); + const plan = planOccurrences(job, NOW, { + windowSeconds, + maxPerJob: 50, + defaultTimezone: 'UTC', + }); + const windowEnd = NOW.getTime() + windowSeconds * 1000; + + expect(plan.occurrences.length).toBeLessThanOrEqual(1); + + if (fireAt.getTime() <= windowEnd) { + // Recorded, and the schedule is exhausted: no more fires to plan next. + expect(plan.occurrences).toEqual([fireAt]); + expect(plan.nextRunAt).toBeNull(); + } else { + // Past the window: nothing recorded, and the job's clock is untouched. + expect(plan.occurrences).toEqual([]); + expect(plan.nextRunAt).toEqual(fireAt); + } + }, + ), + ); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/materializer/__tests__/plan.test.ts b/packages/@n8n/scheduler/src/core/materializer/__tests__/plan.test.ts index d1fc9dcf68b..65344b322b0 100644 --- a/packages/@n8n/scheduler/src/core/materializer/__tests__/plan.test.ts +++ b/packages/@n8n/scheduler/src/core/materializer/__tests__/plan.test.ts @@ -14,6 +14,8 @@ const makeJob = (overrides: Partial = {}): ScheduledJob => ({ timezone: null, intervalSeconds: 10, fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, nextRunAt: NOW, lastFiredAt: null, maxAttempts: 1, @@ -89,6 +91,37 @@ describe('planOccurrences', () => { expect(plan.nextRunAt).toEqual(new Date('2026-01-01T08:00:00.000Z')); }); + it('thins a recurring_cron anchor by its every-Nth-period gate across a window', () => { + // "Every 2 weeks on Monday and Wednesday at midnight UTC." The anchor fires + // every Mon and Wed; the weeks gate keeps both days of an on-cadence week + // (the Monday and its same-week Wednesday) and skips the week in between. + const firstMonday = new Date('2026-01-05T00:00:00.000Z'); // first Monday of 2026 + const job = makeJob({ + kind: 'recurring_cron', + cronExpression: '0 0 0 * * 1,3', + timezone: 'UTC', + intervalSeconds: null, + recurrenceUnit: 'weeks', + recurrenceSize: 2, + nextRunAt: firstMonday, + }); + + // Window runs through the Wednesday two weeks on (the fourth recorded fire). + const windowEnd = new Date('2026-01-21T00:00:00.000Z'); + const windowSeconds = (windowEnd.getTime() - firstMonday.getTime()) / 1000; + + const plan = planOccurrences(job, firstMonday, { ...options, windowSeconds }); + + expect(plan.occurrences).toEqual([ + new Date('2026-01-05T00:00:00.000Z'), // Mon, week 1 + new Date('2026-01-07T00:00:00.000Z'), // Wed, week 1 (same-period refire) + new Date('2026-01-19T00:00:00.000Z'), // Mon, week 3 (week 2 skipped by the gate) + new Date('2026-01-21T00:00:00.000Z'), // Wed, week 3 + ]); + // Two weeks on again: week 5's Monday, with week 4 skipped. + expect(plan.nextRunAt).toEqual(new Date('2026-02-02T00:00:00.000Z')); + }); + it('does nothing when the next run is past the window', () => { const job = makeJob({ nextRunAt: secondsAfter(NOW, 120), lastFiredAt: NOW }); diff --git a/packages/@n8n/scheduler/src/core/materializer/index.ts b/packages/@n8n/scheduler/src/core/materializer/index.ts index 311c23af03c..f6d02d858c3 100644 --- a/packages/@n8n/scheduler/src/core/materializer/index.ts +++ b/packages/@n8n/scheduler/src/core/materializer/index.ts @@ -11,6 +11,8 @@ export type { DueJobs, NewOccurrence, PlannedJob, + RecordedOccurrence, + RecordOccurrencesResult, RunInTransaction, MaterializerTransaction, } from './transaction'; diff --git a/packages/@n8n/scheduler/src/core/materializer/materialize.ts b/packages/@n8n/scheduler/src/core/materializer/materialize.ts index 277f36e975d..22350e272d8 100644 --- a/packages/@n8n/scheduler/src/core/materializer/materialize.ts +++ b/packages/@n8n/scheduler/src/core/materializer/materialize.ts @@ -3,7 +3,13 @@ import { Time } from '@n8n/constants'; import type { ScheduledJob } from '../types'; import { DEFAULT_MATERIALIZER_OPTIONS, type MaterializerOptions } from './options'; import { planOccurrences } from './plan'; -import type { DueJobs, NewOccurrence, PlannedJob, RunInTransaction } from './transaction'; +import type { + DueJobs, + NewOccurrence, + PlannedJob, + RecordedOccurrence, + RunInTransaction, +} from './transaction'; export type { MaterializerOptions } from './options'; @@ -12,6 +18,12 @@ export interface MaterializerSummary { claimedJobs: number; /** How many occurrences were newly recorded (duplicates already present don't count). */ occurrences: number; + /** + * The newly recorded rows' identity, for per-row tracing at the callsite. + * Only as complete as the storage layer's `recordOccurrences` allows (e.g. + * empty on SQLite); `occurrences` is the accurate count regardless. + */ + created: RecordedOccurrence[]; /** How many claimed jobs could not be planned and were deferred (see {@link OnJobPlanError}). */ deferredJobs: number; } @@ -82,7 +94,7 @@ export async function materialize( const claimed = await tx.claimDueJobs(options.batchSize); signal?.throwIfAborted(); if (claimed === undefined) { - return { claimedJobs: 0, occurrences: 0, deferredJobs: 0 }; + return { claimedJobs: 0, occurrences: 0, created: [], deferredJobs: 0 }; } const { occurrencesPlanned, numberOfJobsDeferred } = planOrDeferJobs( claimed, @@ -90,11 +102,11 @@ export async function materialize( hooks.onPlanError, ); const rows = toNewOccurrences(occurrencesPlanned); - const occurrences = await tx.recordOccurrences(rows); + const { recorded, created } = await tx.recordOccurrences(rows); signal?.throwIfAborted(); - if (occurrences < rows.length) { + if (recorded < rows.length) { try { - hooks.onSkippedDuplicates?.({ planned: rows.length, recorded: occurrences }); + hooks.onSkippedDuplicates?.({ planned: rows.length, recorded }); } catch { // A broken reporter must not roll back the pass. } @@ -103,7 +115,8 @@ export async function materialize( return { claimedJobs: claimed.jobs.length, - occurrences, + occurrences: recorded, + created, deferredJobs: numberOfJobsDeferred, }; }); diff --git a/packages/@n8n/scheduler/src/core/materializer/plan.ts b/packages/@n8n/scheduler/src/core/materializer/plan.ts index 769bba52e4e..870bf3eb7ef 100644 --- a/packages/@n8n/scheduler/src/core/materializer/plan.ts +++ b/packages/@n8n/scheduler/src/core/materializer/plan.ts @@ -1,6 +1,6 @@ import { Time } from '@n8n/constants'; -import { computeNextRunAt } from '../recurrence/next-run'; +import { occurrencesFrom } from '../recurrence/next-run'; import { resolveSchedule } from '../recurrence/resolve'; import type { ScheduledJob } from '../types'; @@ -40,20 +40,25 @@ export function planOccurrences( const schedule = resolveSchedule(job, options.defaultTimezone); const windowEnd = now.getTime() + options.windowSeconds * Time.seconds.toMilliseconds; + if (job.nextRunAt === null) { + return { occurrences: [], nextRunAt: null, lastFiredAt: job.lastFiredAt }; + } + const occurrences: Date[] = []; - let cursor = job.nextRunAt; + const fires = occurrencesFrom(schedule, job.nextRunAt); + let fire = fires.next(); while ( - cursor !== null && - cursor.getTime() <= windowEnd && + !fire.done && + fire.value.getTime() <= windowEnd && occurrences.length < options.maxPerJob ) { - occurrences.push(cursor); - cursor = computeNextRunAt(schedule, cursor); + occurrences.push(fire.value); + fire = fires.next(); } return { occurrences, - nextRunAt: cursor, + nextRunAt: fire.done ? null : fire.value, lastFiredAt: occurrences.at(-1) ?? job.lastFiredAt, }; } diff --git a/packages/@n8n/scheduler/src/core/materializer/transaction.ts b/packages/@n8n/scheduler/src/core/materializer/transaction.ts index 5edda54740b..f0c36721d1a 100644 --- a/packages/@n8n/scheduler/src/core/materializer/transaction.ts +++ b/packages/@n8n/scheduler/src/core/materializer/transaction.ts @@ -15,6 +15,24 @@ export interface NewOccurrence { maxAttempts: number; } +/** Identity of a row {@link MaterializerTransaction.recordOccurrences} just created. */ +export interface RecordedOccurrence { + id: string; + jobId: number; + taskType: string; +} + +export interface RecordOccurrencesResult { + /** How many occurrences were actually recorded (skipped duplicates excluded). */ + recorded: number; + /** + * The newly created rows' identity, for per-row tracing. Storage layers that + * can't return inserted rows (e.g. SQLite) leave this empty; `recorded` is + * still accurate either way. + */ + created: RecordedOccurrence[]; +} + export interface DueJobs { /** * The clock's current time at the moment of claiming. @@ -42,9 +60,10 @@ export interface MaterializerTransaction { * Record every planned occurrence across all jobs in one batch, * skipping any that already exist (identity is the job and its instant). * This is the idempotent step: recording the same occurrence twice is a no-op. - * @returns how many occurrences were actually recorded + * @returns how many occurrences were recorded, and the identity of any + * newly created rows (see {@link RecordOccurrencesResult}) */ - recordOccurrences(occurrences: NewOccurrence[]): Promise; + recordOccurrences(occurrences: NewOccurrence[]): Promise; /** * Advance every job's next-run and last-fired time in one batch. diff --git a/packages/@n8n/scheduler/src/core/provisioning/__tests__/provision.test.ts b/packages/@n8n/scheduler/src/core/provisioning/__tests__/provision.test.ts new file mode 100644 index 00000000000..2042deedabf --- /dev/null +++ b/packages/@n8n/scheduler/src/core/provisioning/__tests__/provision.test.ts @@ -0,0 +1,148 @@ +import { mock } from 'vitest-mock-extended'; + +import { provision, deprovision } from '../provision'; +import type { + ProvisionTransaction, + DeprovisionTransaction, + RunInProvisionTransaction, + RunInDeprovisionTransaction, +} from '../transaction'; +import type { DesiredJob, ExistingJob, ScheduleDefinition } from '../types'; + +const cronSchedule = (cronExpression: string): ScheduleDefinition => ({ + kind: 'cron', + cronExpression, + timezone: null, +}); + +const CLOCK = new Date('2026-01-05T09:00:00.000Z'); + +const desiredJob = ( + name: string, + cronExpression: string, + firstRunAt: Date | null = CLOCK, +): DesiredJob => ({ name, schedule: cronSchedule(cronExpression), firstRunAt }); + +const existingJob = ( + id: number, + name: string, + cronExpression: string, + hasClock = true, +): ExistingJob => ({ id, name, schedule: cronSchedule(cronExpression), hasClock }); + +/** A transaction runner that hands `work` the given operations, without a real transaction. */ +const runnerWith = + (tx: ProvisionTransaction): RunInProvisionTransaction => + async (work) => + await work(tx); + +describe('provision', () => { + const withExisting = (existing: ExistingJob[]) => { + const tx = mock(); + tx.findExisting.mockResolvedValue(existing); + tx.insert.mockResolvedValue([]); + return tx; + }; + + it('inserts a desired job with no existing match and returns its new id', async () => { + const tx = withExisting([]); + tx.insert.mockResolvedValue([100]); + const desired = [desiredJob('wf:node:0', '0 0 9 * * *')]; + + const summary = await provision(runnerWith(tx), desired); + + expect(tx.insert).toHaveBeenCalledWith(desired); + expect(tx.redefine).not.toHaveBeenCalled(); + expect(tx.deleteJobs).toHaveBeenCalledWith([]); + expect(summary).toEqual({ + inserted: [{ id: 100, name: 'wf:node:0' }], + redefined: [], + unchanged: [], + removed: [], + }); + }); + + it('leaves an unchanged job untouched, reporting its preserved id', async () => { + const tx = withExisting([existingJob(10, 'wf:node:0', '0 0 9 * * *')]); + + const summary = await provision(runnerWith(tx), [desiredJob('wf:node:0', '0 0 9 * * *')]); + + expect(tx.insert).toHaveBeenCalledWith([]); + expect(tx.redefine).not.toHaveBeenCalled(); + expect(tx.deleteJobs).toHaveBeenCalledWith([]); + expect(tx.withdrawPendingTasks).toHaveBeenCalledWith([]); + expect(summary).toEqual({ + inserted: [], + redefined: [], + unchanged: [{ id: 10, name: 'wf:node:0' }], + removed: [], + }); + }); + + it('rewrites a changed job in place and withdraws its pending tasks', async () => { + const tx = withExisting([existingJob(10, 'wf:node:0', '0 0 9 * * *')]); + + const summary = await provision(runnerWith(tx), [desiredJob('wf:node:0', '0 0 18 * * *')]); + + expect(tx.redefine).toHaveBeenCalledWith(10, cronSchedule('0 0 18 * * *'), CLOCK); + expect(tx.withdrawPendingTasks).toHaveBeenCalledWith([10]); + expect(tx.insert).toHaveBeenCalledWith([]); + expect(tx.deleteJobs).toHaveBeenCalledWith([]); + expect(summary).toEqual({ + inserted: [], + redefined: [{ id: 10, name: 'wf:node:0' }], + unchanged: [], + removed: [], + }); + }); + + it('treats a job whose clock died as changed, so it is rewritten', async () => { + const tx = withExisting([existingJob(10, 'wf:node:0', '0 0 9 * * *', /* hasClock */ false)]); + + await provision(runnerWith(tx), [desiredJob('wf:node:0', '0 0 9 * * *')]); + + expect(tx.redefine).toHaveBeenCalledWith(10, cronSchedule('0 0 9 * * *'), CLOCK); + }); + + it('deletes existing jobs no longer desired', async () => { + const tx = withExisting([ + existingJob(10, 'wf:node:0', '0 0 9 * * *'), + existingJob(11, 'wf:node:1', '0 0 18 * * *'), + ]); + + const summary = await provision(runnerWith(tx), [desiredJob('wf:node:0', '0 0 9 * * *')]); + + expect(tx.deleteJobs).toHaveBeenCalledWith([11]); + expect(summary).toEqual({ + inserted: [], + redefined: [], + unchanged: [{ id: 10, name: 'wf:node:0' }], + removed: [{ id: 11, name: 'wf:node:1' }], + }); + }); + + it('clears the whole scope when nothing is desired', async () => { + const tx = withExisting([existingJob(10, 'wf:node:0', '0 0 9 * * *')]); + + const summary = await provision(runnerWith(tx), []); + + expect(tx.deleteJobs).toHaveBeenCalledWith([10]); + expect(tx.insert).toHaveBeenCalledWith([]); + expect(summary).toEqual({ + inserted: [], + redefined: [], + unchanged: [], + removed: [{ id: 10, name: 'wf:node:0' }], + }); + }); +}); + +describe('deprovision', () => { + it('deletes the whole scope and reports the count', async () => { + const tx = mock(); + tx.deleteAll.mockResolvedValue(3); + const run: RunInDeprovisionTransaction = async (work) => await work(tx); + + expect(await deprovision(run)).toEqual({ removed: 3 }); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/provisioning/__tests__/provisioner.test.ts b/packages/@n8n/scheduler/src/core/provisioning/__tests__/provisioner.test.ts new file mode 100644 index 00000000000..7e06d54607b --- /dev/null +++ b/packages/@n8n/scheduler/src/core/provisioning/__tests__/provisioner.test.ts @@ -0,0 +1,56 @@ +import { mock } from 'vitest-mock-extended'; + +import { createJobProvisioner } from '../provisioner'; +import type { + DeprovisionTransaction, + ProvisionTransaction, + RunInDeprovisionTransaction, + RunInProvisionTransaction, +} from '../transaction'; +import type { DesiredJob } from '../types'; + +describe('createJobProvisioner', () => { + const desired: DesiredJob[] = [ + { + name: 'wf:node:0', + schedule: { kind: 'cron', cronExpression: '0 0 9 * * *', timezone: null }, + firstRunAt: new Date('2026-01-05T09:00:00.000Z'), + }, + ]; + + it('provisions a scope by running that scope’s provision transaction', async () => { + const tx = mock(); + tx.findExisting.mockResolvedValue([]); + tx.insert.mockResolvedValue([1]); + const runInProvision: RunInProvisionTransaction = async (work) => await work(tx); + const provisionTransaction = vi.fn().mockReturnValue(runInProvision); + + const provisioner = createJobProvisioner({ + provisionTransaction, + deprovisionTransaction: vi.fn(), + }); + + // The scope is opaque to the package: it only hands it back to the builder. + const summary = await provisioner.provision({ ref: 'scope-a' }, desired); + + expect(provisionTransaction).toHaveBeenCalledWith({ ref: 'scope-a' }); + expect(summary.inserted).toEqual([{ id: 1, name: 'wf:node:0' }]); + }); + + it('deprovisions a scope by running that scope’s deprovision transaction', async () => { + const tx = mock(); + tx.deleteAll.mockResolvedValue(3); + const runInDeprovision: RunInDeprovisionTransaction = async (work) => await work(tx); + const deprovisionTransaction = vi.fn().mockReturnValue(runInDeprovision); + + const provisioner = createJobProvisioner({ + provisionTransaction: vi.fn(), + deprovisionTransaction, + }); + + const result = await provisioner.deprovision({ ref: 'scope-b' }); + + expect(deprovisionTransaction).toHaveBeenCalledWith({ ref: 'scope-b' }); + expect(result).toEqual({ removed: 3 }); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/provisioning/index.ts b/packages/@n8n/scheduler/src/core/provisioning/index.ts new file mode 100644 index 00000000000..89ae6598702 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/provisioning/index.ts @@ -0,0 +1,20 @@ +export { provision, deprovision } from './provision'; +export { createJobProvisioner } from './provisioner'; +export type { JobProvisioner, JobProvisionerDeps } from './provisioner'; +export type { + ProvisionTransaction, + RunInProvisionTransaction, + DeprovisionTransaction, + RunInDeprovisionTransaction, +} from './transaction'; +export type { + ScheduleDefinition, + CronDefinition, + RecurringCronDefinition, + IntervalDefinition, + OneOffDefinition, + DesiredJob, + ExistingJob, + ProvisionedJob, + ProvisionSummary, +} from './types'; diff --git a/packages/@n8n/scheduler/src/core/provisioning/provision.ts b/packages/@n8n/scheduler/src/core/provisioning/provision.ts new file mode 100644 index 00000000000..1a8be6d60a7 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/provisioning/provision.ts @@ -0,0 +1,119 @@ +import { InvalidScheduleError } from '../errors'; +import type { RunInProvisionTransaction, RunInDeprovisionTransaction } from './transaction'; +import type { + DesiredJob, + ExistingJob, + ProvisionedJob, + ProvisionSummary, + ScheduleDefinition, +} from './types'; + +/** + * Provision a scope's jobs so the stored set matches `desired`, matched by name, + * in one transaction. + * + * - A desired job with no existing match is inserted. + * - A desired job whose match already holds the same definition (and an equally + * live clock) is left untouched, so it keeps its id. That id anchors its queued + * tasks' identity and the execution dedup key, so re-registration (a + * re-published version, a leader takeover replaying active workflows) never + * double-fires instants already queued or run. + * - A desired job whose match differs is rewritten in place and its still-pending + * tasks withdrawn (they belonged to the old definition). + * - An existing job no longer desired is deleted (its tasks cascade). + * + * Passing an empty `desired` therefore clears the whole scope; {@link deprovision} + * is the direct path for that. + */ +export async function provision( + runInTransaction: RunInProvisionTransaction, + desired: DesiredJob[], +): Promise { + return await runInTransaction(async (tx) => { + const existing = await tx.findExisting(); + const existingByName = new Map(existing.map((job) => [job.name, job])); + const desiredNames = new Set(desired.map((job) => job.name)); + + const inserts: DesiredJob[] = []; + const redefined: ProvisionedJob[] = []; + const unchanged: ProvisionedJob[] = []; + + for (const job of desired) { + const current = existingByName.get(job.name); + if (current === undefined) { + inserts.push(job); + } else if (holdsDefinition(current, job)) { + unchanged.push({ id: current.id, name: current.name }); + } else { + redefined.push({ id: current.id, name: current.name }); + await tx.redefine(current.id, job.schedule, job.firstRunAt); + } + } + + const removed = existing + .filter((job) => !desiredNames.has(job.name)) + .map((job): ProvisionedJob => ({ id: job.id, name: job.name })); + + // A redefined rule's queued fires belong to its old definition. + // A removed rule's whole job goes, and its tasks cascade with it. + await tx.withdrawPendingTasks(redefined.map((job) => job.id)); + await tx.deleteJobs(removed.map((job) => job.id)); + + // `insert` returns the new ids in `inserts` order, so zip them back to names. + const insertedIds = await tx.insert(inserts); + const inserted = inserts.map( + (job, index): ProvisionedJob => ({ id: insertedIds[index], name: job.name }), + ); + + return { inserted, redefined, unchanged, removed }; + }); +} + +/** + * Clear a whole scope: delete all its jobs (their tasks cascade). + */ +export async function deprovision( + runInTransaction: RunInDeprovisionTransaction, +): Promise<{ removed: number }> { + return await runInTransaction(async (tx) => ({ removed: await tx.deleteAll() })); +} + +/** + * Whether an existing job already holds the desired definition, clock liveness + * included: a match needs nothing and, crucially, keeps its id. + */ +function holdsDefinition(current: ExistingJob, desired: DesiredJob): boolean { + return ( + sameSchedule(current.schedule, desired.schedule) && + // The clock must be as alive (or deliberately dead) as the fresh plan. + current.hasClock === (desired.firstRunAt !== null) + ); +} + +/** + * Whether two schedules are the same rule: same kind and same per-kind fields. + */ +function sameSchedule(a: ScheduleDefinition, b: ScheduleDefinition): boolean { + switch (a.kind) { + case 'cron': + return ( + b.kind === 'cron' && a.cronExpression === b.cronExpression && a.timezone === b.timezone + ); + case 'recurring_cron': + return ( + b.kind === 'recurring_cron' && + a.cronExpression === b.cronExpression && + a.timezone === b.timezone && + a.recurrenceUnit === b.recurrenceUnit && + a.recurrenceSize === b.recurrenceSize + ); + case 'interval': + return b.kind === 'interval' && a.intervalSeconds === b.intervalSeconds; + case 'one_off': + return b.kind === 'one_off' && a.fireAt.getTime() === b.fireAt.getTime(); + default: { + const exhaustive: never = a; + throw new InvalidScheduleError(`Unexpected schedule kind: ${JSON.stringify(exhaustive)}`); + } + } +} diff --git a/packages/@n8n/scheduler/src/core/provisioning/provisioner.ts b/packages/@n8n/scheduler/src/core/provisioning/provisioner.ts new file mode 100644 index 00000000000..f0cd5039c8c --- /dev/null +++ b/packages/@n8n/scheduler/src/core/provisioning/provisioner.ts @@ -0,0 +1,55 @@ +import { deprovision, provision } from './provision'; +import type { RunInDeprovisionTransaction, RunInProvisionTransaction } from './transaction'; +import type { DesiredJob, ProvisionSummary } from './types'; +import { createProvisionerTracing } from '../../observability/provisioner-tracing'; +import { noopTracer, type Tracer } from '../../observability/tracer'; + +/** + * Turn a scope's desired jobs into its stored set, and clear a scope. + * + * `PScope` / `DScope` are opaque to the package: it never inspects them, only + * hands each back to the transaction the host bound for it (see {@link createJobProvisioner}). + * + * So a host identifies a scope however it likes (here, a workflow node) + * without the scheduler package knowing its shape. + */ +export interface JobProvisioner { + /** Provision `scope`'s jobs so its stored set matches `desired`; see {@link provision}. */ + provision(scope: PScope, desired: DesiredJob[]): Promise; + /** Delete all of `scope`'s jobs; see {@link deprovision}. */ + deprovision(scope: DScope): Promise<{ removed: number }>; +} + +/** + * Ports a host binds to its storage: given a scope, run one provision transaction over that scope's jobs. + */ +export interface JobProvisionerDeps { + provisionTransaction: (scope: PScope) => RunInProvisionTransaction; + deprovisionTransaction: (scope: DScope) => RunInDeprovisionTransaction; + + /** Host tracer; defaults to a no-op. */ + tracer?: Tracer; +} + +/** + * Compose the provisioning domain operations ({@link provision} / + * {@link deprovision}) into a {@link JobProvisioner}, binding each call's scope to + * the host transaction that reads and writes it, and each call to a tracing span. + */ +export function createJobProvisioner( + deps: JobProvisionerDeps, +): JobProvisioner { + const tracing = createProvisionerTracing(deps.tracer ?? noopTracer); + return { + async provision(scope, desired) { + return await tracing.provision( + async () => await provision(deps.provisionTransaction(scope), desired), + ); + }, + async deprovision(scope) { + return await tracing.deprovision( + async () => await deprovision(deps.deprovisionTransaction(scope)), + ); + }, + }; +} diff --git a/packages/@n8n/scheduler/src/core/provisioning/transaction.ts b/packages/@n8n/scheduler/src/core/provisioning/transaction.ts new file mode 100644 index 00000000000..2f0565a685e --- /dev/null +++ b/packages/@n8n/scheduler/src/core/provisioning/transaction.ts @@ -0,0 +1,37 @@ +import type { DesiredJob, ExistingJob, ScheduleDefinition } from './types'; + +/** + * The writes one provision performs, all bound to one transaction. The storage + * layer supplies the implementation; the domain {@link provision} orchestrates + * these calls but never opens the transaction itself (mirrors the materializer's + * {@link RunInTransaction}). + */ +export interface ProvisionTransaction { + /** Every job currently in the scope, so provisioning can diff by name. */ + findExisting(): Promise; + /** + * Insert brand-new jobs (those whose name has no existing match). + * @returns their assigned ids, in the same order as `jobs`. + */ + insert(jobs: DesiredJob[]): Promise; + /** Rewrite a changed job in place, keeping its id and reseeding its clock. */ + redefine(jobId: number, schedule: ScheduleDefinition, nextRunAt: Date | null): Promise; + /** Withdraw the still-pending tasks of jobs whose definition changed. */ + withdrawPendingTasks(jobIds: number[]): Promise; + /** Delete jobs no longer desired; their tasks cascade away. */ + deleteJobs(jobIds: number[]): Promise; +} + +export type RunInProvisionTransaction = ( + work: (tx: ProvisionTransaction) => Promise, +) => Promise; + +/** The single write one deprovision performs, bound to one transaction. */ +export interface DeprovisionTransaction { + /** Delete every job in the scope; their tasks cascade. @returns how many were deleted. */ + deleteAll(): Promise; +} + +export type RunInDeprovisionTransaction = ( + work: (tx: DeprovisionTransaction) => Promise, +) => Promise; diff --git a/packages/@n8n/scheduler/src/core/provisioning/types.ts b/packages/@n8n/scheduler/src/core/provisioning/types.ts new file mode 100644 index 00000000000..8884cad31b2 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/provisioning/types.ts @@ -0,0 +1,91 @@ +import type { RecurringCronUnit } from '@n8n/constants'; + +/** + * When a job runs, minus its identity and clock: the schedule half of a scheduled job. + * Comparing two of these (plus clock liveness) is what tells provisioning whether a job's schedule changed. + */ +export type ScheduleDefinition = + | CronDefinition + | RecurringCronDefinition + | IntervalDefinition + | OneOffDefinition; + +/** A cron expression evaluated in a timezone (`null` means the instance default). */ +export interface CronDefinition { + kind: 'cron'; + cronExpression: string; + timezone: string | null; +} + +/** A cron expression gated to fire only every Nth period. */ +export interface RecurringCronDefinition { + kind: 'recurring_cron'; + cronExpression: string; + timezone: string | null; + recurrenceUnit: RecurringCronUnit; + recurrenceSize: number; +} + +/** A fixed elapsed-time cadence; no timezone by design. */ +export interface IntervalDefinition { + kind: 'interval'; + intervalSeconds: number; +} + +/** A single fire at a fixed instant, then never again. */ +export interface OneOffDefinition { + kind: 'one_off'; + fireAt: Date; +} + +/** + * A job the caller wants persisted in a scope. + * `name` is stable within that scope, so the same rule maps to the same row across re-registrations. + * That stability is what lets an unchanged job keep its id (and its queued tasks). + */ +export interface DesiredJob { + name: string; + schedule: ScheduleDefinition; + /** The seeded next run (its clock). `null` for a rule that must never fire. */ + firstRunAt: Date | null; +} + +/** + * An existing job in the scope, as provisioning needs it to diff by name. + */ +export interface ExistingJob { + id: number; + name: string; + schedule: ScheduleDefinition; + /** Whether the row carries a live clock (`nextRunAt !== null`) right now. */ + hasClock: boolean; +} + +/** + * One job a provision touched, identified by its stored id and its name. The + * name is what makes a touched job legible (an id is an opaque autoincrement), + * so a caller (or a trace) can tell which rule changed without a second lookup. + */ +export interface ProvisionedJob { + id: number; + name: string; +} + +/** + * What one provision touched, each job carried as an {@link ProvisionedJob}. + */ +export interface ProvisionSummary { + /** + * Jobs this call actually inserted: the durable flow starts here for them. + * Under a concurrent first activation of the same scope, the losing main's + * inserts are skipped, so this can be shorter than the rules planned. + * It reports the rows this call wrote, not the scope's final row count. + */ + inserted: ProvisionedJob[]; + /** Jobs rewritten in place (id kept), their still-pending tasks withdrawn. */ + redefined: ProvisionedJob[]; + /** Jobs left untouched (id kept), so their queued fires still stand. */ + unchanged: ProvisionedJob[]; + /** Jobs deleted (their tasks cascaded away). */ + removed: ProvisionedJob[]; +} diff --git a/packages/@n8n/scheduler/src/core/reaper/__tests__/reap.property.test.ts b/packages/@n8n/scheduler/src/core/reaper/__tests__/reap.property.test.ts new file mode 100644 index 00000000000..0c29018adca --- /dev/null +++ b/packages/@n8n/scheduler/src/core/reaper/__tests__/reap.property.test.ts @@ -0,0 +1,63 @@ +import fc from 'fast-check'; +import { mock } from 'vitest-mock-extended'; + +import { backoff } from '../../executor/backoff'; +import type { ExpiredLeaseRow, ReaperTaskStore } from '../reap'; +import { reap } from '../reap'; + +/** + * The reaper's per-row decision over arbitrary expired-lease batches: every row + * is either reclaimed or dead-lettered (never both, never neither), the choice + * is exactly "attempts left?", and reclaim always uses the shared backoff curve. + */ +describe('reap decision (fast-check)', () => { + const arbRows = fc + .array( + fc.record({ + attempts: fc.integer({ min: 0, max: 10 }), + maxAttempts: fc.integer({ min: 1, max: 10 }), + leaseEpoch: fc.integer({ min: 1, max: 100 }), + }), + { maxLength: 30 }, + ) + // Ids must be unique, so derive them from the position. + .map((rows) => rows.map((row, index): ExpiredLeaseRow => ({ id: `task-${index}`, ...row }))); + + it('reclaims xor dead-letters each row, split on remaining attempts', async () => { + await fc.assert( + fc.asyncProperty(arbRows, async (rows) => { + const store = mock(); + store.findExpiredLeases.mockResolvedValue(rows); + store.reclaimExpired.mockResolvedValue(1); + store.deadLetterExpired.mockResolvedValue(1); + + const result = await reap(store, { batchSize: rows.length || 1 }); + + const expectedDeadLetter = rows.filter((r) => r.attempts + 1 >= r.maxAttempts); + const expectedReclaim = rows.filter((r) => r.attempts + 1 < r.maxAttempts); + + const reclaimCalls = store.reclaimExpired.mock.calls; + const deadLetterIds = store.deadLetterExpired.mock.calls.map(([ref]) => ref.id); + + // Every row got exactly one decision, and the split is by attempts. + expect(reclaimCalls.map(([ref]) => ref.id).sort()).toEqual( + expectedReclaim.map((r) => r.id).sort(), + ); + expect([...deadLetterIds].sort()).toEqual(expectedDeadLetter.map((r) => r.id).sort()); + + // Counts reflect the decisions and cover the whole batch. + expect(result.reclaimed).toBe(expectedReclaim.length); + expect(result.deadLettered).toBe(expectedDeadLetter.length); + expect(result.reclaimed + result.deadLettered).toBe(rows.length); + + // Reclaim waits the shared backoff for the just-counted attempt, and the + // guarded update fences on the epoch read during the sweep. + for (const [ref, backoffMs] of reclaimCalls) { + const row = rows.find((r) => r.id === ref.id)!; + expect(backoffMs).toBe(backoff(row.attempts + 1)); + expect(ref.claimedEpoch).toBe(row.leaseEpoch); + } + }), + ); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/reaper/reap.ts b/packages/@n8n/scheduler/src/core/reaper/reap.ts index a08656e8511..aaa0bcf6a68 100644 --- a/packages/@n8n/scheduler/src/core/reaper/reap.ts +++ b/packages/@n8n/scheduler/src/core/reaper/reap.ts @@ -89,6 +89,8 @@ export async function reap( signal?: AbortSignal, ): Promise { const expired = await store.findExpiredLeases(options.batchSize); + // Stryker disable next-line ConditionalExpression: pure early-return optimisation; + // without it the loop below is simply empty for an empty array, same result. if (expired.length === 0) return { reclaimed: 0, deadLettered: 0 }; let reclaimed = 0; @@ -113,6 +115,8 @@ export async function reap( // race means another actor decided the row and there is nothing to report. if (affected > 0) { try { + // Stryker disable next-line OptionalChaining: the enclosing catch + // already swallows a call on an undefined hook, same as `?.` skipping it. hooks.onDeadLetter?.({ taskId: task.id, attempts: nextAttempts, @@ -131,6 +135,8 @@ export async function reap( } } catch (error) { try { + // Stryker disable next-line OptionalChaining: the enclosing catch already + // swallows a call on an undefined hook, same as `?.` skipping it. hooks.onRowError?.(task.id, error); } catch { // The remaining rows still need recovering. diff --git a/packages/@n8n/scheduler/src/core/recurrence/__tests__/next-run.property.test.ts b/packages/@n8n/scheduler/src/core/recurrence/__tests__/next-run.property.test.ts new file mode 100644 index 00000000000..a398842e179 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/__tests__/next-run.property.test.ts @@ -0,0 +1,82 @@ +import fc from 'fast-check'; +import type { CronExpression } from 'n8n-workflow'; + +import { computeNextRunAt } from '../next-run'; + +/** + * The core recurrence guarantee, over a wide range of instants and schedules: + * the next run is always strictly after `after` for unbounded schedules, an + * interval lands exactly one period on, and a one-off fires once then exhausts. + */ +describe('computeNextRunAt (fast-check)', () => { + // Bounded well inside cron-parser's supported range to avoid overflow. + const arbAfter = fc.date({ + min: new Date('2001-01-01T00:00:00.000Z'), + max: new Date('2099-01-01T00:00:00.000Z'), + }); + + it('interval: lands exactly one period after, strictly forward', () => { + fc.assert( + fc.property(arbAfter, fc.integer({ min: 1, max: 1_000_000 }), (after, intervalSeconds) => { + const next = computeNextRunAt({ kind: 'interval', intervalSeconds }, after); + expect(next).not.toBeNull(); + expect(next!.getTime()).toBe(after.getTime() + intervalSeconds * 1000); + }), + ); + }); + + it('interval: repeated application is a strictly increasing sequence', () => { + fc.assert( + fc.property(arbAfter, fc.integer({ min: 1, max: 100_000 }), (after, intervalSeconds) => { + const schedule = { kind: 'interval' as const, intervalSeconds }; + let prev = after; + for (let i = 0; i < 5; i++) { + const next = computeNextRunAt(schedule, prev)!; + expect(next.getTime()).toBeGreaterThan(prev.getTime()); + prev = next; + } + }), + ); + }); + + const arbCron = fc.constantFrom( + '0 * * * * *', + '0 0 * * * *', + '0 0 0 * * *', + '0 30 9 * * 1-5', + '0 0 0 1 * *', + ); + const arbTimezone = fc.constantFrom( + 'UTC', + 'Europe/Berlin', + 'America/New_York', + 'Asia/Kolkata', + 'Pacific/Auckland', + ); + + it('cron: next fire is strictly after `after` in any supported timezone', () => { + fc.assert( + fc.property(arbAfter, arbCron, arbTimezone, (after, cronExpression, timezone) => { + const next = computeNextRunAt( + { kind: 'cron', cronExpression: cronExpression as CronExpression, timezone }, + after, + ); + expect(next).not.toBeNull(); + expect(next!.getTime()).toBeGreaterThan(after.getTime()); + }), + ); + }); + + it('one-off: fires at `fireAt` when future, exhausts otherwise', () => { + fc.assert( + fc.property(arbAfter, arbAfter, (after, fireAt) => { + const result = computeNextRunAt({ kind: 'one_off', fireAt }, after); + if (fireAt.getTime() > after.getTime()) { + expect(result).toEqual(fireAt); + } else { + expect(result).toBeNull(); + } + }), + ); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/recurrence/__tests__/next-run.test.ts b/packages/@n8n/scheduler/src/core/recurrence/__tests__/next-run.test.ts index 354632af5d2..7701990e2a9 100644 --- a/packages/@n8n/scheduler/src/core/recurrence/__tests__/next-run.test.ts +++ b/packages/@n8n/scheduler/src/core/recurrence/__tests__/next-run.test.ts @@ -1,8 +1,8 @@ import { DateTime } from 'luxon'; import { InvalidScheduleError } from '../../errors'; -import type { CronSchedule, Schedule } from '../../types'; -import { computeNextRunAt } from '../next-run'; +import type { CronSchedule, RecurringCronSchedule, Schedule } from '../../types'; +import { computeFirstRunAt, computeNextRunAt, occurrencesFrom } from '../next-run'; /** computeNextRunAt asserting a non-null result, for the unbounded (cron/interval) cases. */ const nextOf = (schedule: Schedule, after: Date): Date => { @@ -48,9 +48,9 @@ describe('computeNextRunAt', () => { cronExpression: '0 0 0 * * *', timezone: null, }; - expect(() => computeNextRunAt(schedule, new Date('2026-01-10T12:00:00Z'))).toThrow( - InvalidScheduleError, - ); + const compute = () => computeNextRunAt(schedule, new Date('2026-01-10T12:00:00Z')); + expect(compute).toThrow(InvalidScheduleError); + expect(compute).toThrow(/timezone must be resolved to a concrete zone/); }); it('throws InvalidScheduleError on an out-of-range expression', () => { @@ -63,6 +63,20 @@ describe('computeNextRunAt', () => { InvalidScheduleError, ); }); + + // validateSchedule only checks the expression's own syntax; it never sees `after`, + // so a corrupt `after` (e.g. from a damaged nextRunAt column) reaches cron-parser's + // own evaluation and must still be wrapped as InvalidScheduleError, not thrown raw. + it('wraps a cron-parser failure caused by a corrupt `after` instant', () => { + const schedule: CronSchedule = { + kind: 'cron', + cronExpression: '0 0 0 * * *', + timezone: 'UTC', + }; + const compute = () => computeNextRunAt(schedule, new Date('nope')); + expect(compute).toThrow(InvalidScheduleError); + expect(compute).toThrow(/Failed to evaluate cron expression/); + }); }); describe('interval', () => { @@ -102,6 +116,243 @@ describe('computeNextRunAt', () => { }); }); + // The every-Nth-period gate: `after` is the previous fire, and candidate + // anchor fires are skipped until one lands on cadence, so an off-cadence + // instant is never produced at all. + describe('recurring_cron', () => { + it('every 3 weeks: skips the two in-between weekly fires', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + // Previous fire Mon 2026-01-05; Mon 01-12 and 01-19 are off cadence. + expect(nextOf(schedule, new Date('2026-01-05T09:00:00Z')).toISOString()).toBe( + '2026-01-26T09:00:00.000Z', + ); + }); + + it('every 3 weeks on Mon+Wed: still fires the Wednesday of an on-cadence week', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + // Day lists are valid cron but outside the branded template type. + cronExpression: '0 0 9 * * 1,3' as RecurringCronSchedule['cronExpression'], + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + // Mon 2026-01-05 fired; Wed of the same week passes the gate... + const wednesday = nextOf(schedule, new Date('2026-01-05T09:00:00Z')); + expect(wednesday.toISOString()).toBe('2026-01-07T09:00:00.000Z'); + // ...and the chain then jumps to the Monday three weeks after that week. + expect(nextOf(schedule, wednesday).toISOString()).toBe('2026-01-26T09:00:00.000Z'); + }); + + it('every 5 months: fires on the 15th, five calendar months apart', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 15 * *', + timezone: 'UTC', + recurrenceUnit: 'months', + recurrenceSize: 5, + }; + expect(nextOf(schedule, new Date('2026-01-15T09:00:00Z')).toISOString()).toBe( + '2026-06-15T09:00:00.000Z', + ); + expect(nextOf(schedule, new Date('2026-06-15T09:00:00Z')).toISOString()).toBe( + '2026-11-15T09:00:00.000Z', + ); + }); + + it('every 5 hours on an hourly expression: five clock hours apart', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 * * * *', + timezone: 'UTC', + recurrenceUnit: 'hours', + recurrenceSize: 5, + }; + expect(nextOf(schedule, new Date('2026-01-01T00:00:00Z')).toISOString()).toBe( + '2026-01-01T05:00:00.000Z', + ); + }); + + it('every 2 days across spring-forward: the 23-hour day still counts as a day', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 30 8 * * *', + timezone: 'America/New_York', + recurrenceUnit: 'days', + recurrenceSize: 2, + }; + // Previous fire Sat 2026-03-07 08:30 EST; DST starts on the skipped 03-08. + const next = nextOf(schedule, new Date('2026-03-07T08:30:00-05:00')); + expect(localOf(next, 'America/New_York')).toBe('2026-03-09T08:30:00-04:00'); + }); + + // The node keeps a step cron AND the gate when the stride divides the + // field range (six-hourly hours, quarterly months); the gate must then + // pass every candidate, DST included. + it('redundant divisible hours: a six-hourly anchor with a size-6 gate keeps firing across spring-forward', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 30 */6 * * *' as RecurringCronSchedule['cronExpression'], + timezone: 'America/New_York', + recurrenceUnit: 'hours', + recurrenceSize: 6, + }; + // Previous fire 00:30 EST on the spring-forward day: the next anchor + // fire 06:30 EDT is only 5 real hours later, but 6 on the clock. + const next = nextOf(schedule, new Date('2026-03-08T00:30:00-05:00')); + expect(localOf(next, 'America/New_York')).toBe('2026-03-08T06:30:00-04:00'); + }); + + it('redundant divisible hours: a six-hourly anchor with a size-6 gate keeps firing across fall-back', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 30 */6 * * *' as RecurringCronSchedule['cronExpression'], + timezone: 'America/New_York', + recurrenceUnit: 'hours', + recurrenceSize: 6, + }; + // Previous fire 00:30 EDT on the fall-back day: 06:30 EST is 7 real + // hours later but 6 on the clock — passes without skipping ahead. + const next = nextOf(schedule, new Date('2026-11-01T00:30:00-04:00')); + expect(localOf(next, 'America/New_York')).toBe('2026-11-01T06:30:00-05:00'); + }); + + it('redundant divisible months: a quarterly anchor with a size-3 gate keeps every fire', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 15 */3 *' as RecurringCronSchedule['cronExpression'], + timezone: 'UTC', + recurrenceUnit: 'months', + recurrenceSize: 3, + }; + expect(nextOf(schedule, new Date('2026-01-15T09:00:00Z')).toISOString()).toBe( + '2026-04-15T09:00:00.000Z', + ); + }); + + it('a sparse anchor overshooting the cadence still fires (elapsed >= size, not ===)', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + // Fires on the 1st of each month, gated to every 3 weeks: no fire + // lands exactly 3 weeks after another, so an equality gate would + // never fire again. + cronExpression: '0 0 9 1 * *', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + expect(nextOf(schedule, new Date('2026-01-01T09:00:00Z')).toISOString()).toBe( + '2026-02-01T09:00:00.000Z', + ); + }); + + it('replays deterministically from an old previous fire (no permanent skip after downtime)', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + // However stale the previous fire is, the chain resumes on cadence + // from it — never stalls waiting for state that downtime lost. + expect(nextOf(schedule, new Date('2025-11-03T09:00:00Z')).toISOString()).toBe( + '2025-11-24T09:00:00.000Z', + ); + }); + + it('gates from a nonexistent local anchor time (spring-forward shifts, then counts normally)', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 30 2 * * *', + timezone: 'America/New_York', + recurrenceUnit: 'days', + recurrenceSize: 2, + }; + // Previous fire Fri 03-06 02:30 EST. Sat 03-07 is 1 day (gated out); + // Sun 03-08 has no 02:30 local, shifts to 03:30 EDT, still 2 days. + const next = nextOf(schedule, new Date('2026-03-06T02:30:00-05:00')); + expect(localOf(next, 'America/New_York')).toBe('2026-03-08T03:30:00-04:00'); + }); + + it('throws when no candidate lands on cadence within the scan bound', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + // An every-second anchor produces ~1.8M candidates per 3-week + // stride — far past the bound. + cronExpression: '* * * * * *' as RecurringCronSchedule['cronExpression'], + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + // Previous fire at the end of a Sunday-week, so every scanned + // candidate sits one gated week later and none passes. + expect(() => computeNextRunAt(schedule, new Date('2026-01-10T23:59:59Z'))).toThrow( + InvalidScheduleError, + ); + }); + + it('throws when the timezone is unresolved (null)', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: null, + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + expect(() => computeNextRunAt(schedule, new Date('2026-01-05T09:00:00Z'))).toThrow( + InvalidScheduleError, + ); + }); + }); + + describe('computeFirstRunAt', () => { + it('seeds a recurring_cron at its next anchor fire, ignoring the gate', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + // Registered Sat 2026-01-03: fires this Monday, not three weeks out — + // the registration instant is not a fire, so nothing is elapsed-gated. + const first = computeFirstRunAt(schedule, new Date('2026-01-03T00:00:00Z')); + expect(first?.toISOString()).toBe('2026-01-05T09:00:00.000Z'); + }); + + it('still validates the schedule', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 1, + }; + expect(() => computeFirstRunAt(schedule, new Date('2026-01-03T00:00:00Z'))).toThrow( + InvalidScheduleError, + ); + }); + + it('coincides with computeNextRunAt for the other kinds', () => { + const from = new Date('2026-01-03T00:00:00Z'); + const cron: CronSchedule = { kind: 'cron', cronExpression: '0 0 9 * * 1', timezone: 'UTC' }; + expect(computeFirstRunAt(cron, from)).toEqual(computeNextRunAt(cron, from)); + + const interval: Schedule = { kind: 'interval', intervalSeconds: 3600 }; + expect(computeFirstRunAt(interval, from)).toEqual(computeNextRunAt(interval, from)); + + const exhausted: Schedule = { kind: 'one_off', fireAt: new Date('2026-01-01T00:00:00Z') }; + expect(computeFirstRunAt(exhausted, from)).toBeNull(); + }); + }); + // computeNextRunAt validates first, so corrupt input throws rather than // returning a wrong, past, or Invalid instant. describe('rejects malformed input', () => { @@ -181,3 +432,55 @@ describe('computeNextRunAt', () => { }); }); }); + +// The generator the materializer walks (planOccurrences); its recurring_cron +// arm chains each fire off the previous one, so it is pinned directly here. +describe('occurrencesFrom', () => { + const take = (generator: Generator, count: number): string[] => + Array.from({ length: count }, () => (generator.next().value as Date).toISOString()); + + it('yields the seed fire verbatim, then walks the gated recurring_cron chain', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1,3' as RecurringCronSchedule['cronExpression'], + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + expect(take(occurrencesFrom(schedule, new Date('2026-01-05T09:00:00Z')), 5)).toEqual([ + '2026-01-05T09:00:00.000Z', // the seed (an already-due fire), ungated + '2026-01-07T09:00:00.000Z', // Wednesday of the same on-cadence week + '2026-01-26T09:00:00.000Z', // Monday three weeks on + '2026-01-28T09:00:00.000Z', // its Wednesday + '2026-02-16T09:00:00.000Z', // Monday three weeks on again + ]); + }); + + it('surfaces the scan-bound throw mid-iteration (the path planOccurrences walks)', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + // An every-second anchor gated to every 3 weeks: no candidate within + // the scan bound passes (same setup as the computeNextRunAt case). + cronExpression: '* * * * * *' as RecurringCronSchedule['cronExpression'], + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }; + const fires = occurrencesFrom(schedule, new Date('2026-01-10T23:59:59Z')); + // The seed itself still comes out; the throw happens advancing past it. + expect((fires.next().value as Date).toISOString()).toBe('2026-01-10T23:59:59.000Z'); + expect(() => fires.next()).toThrow(InvalidScheduleError); + }); + + it('validates the schedule on first pull', () => { + const schedule: RecurringCronSchedule = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 1, + }; + const fires = occurrencesFrom(schedule, new Date('2026-01-05T09:00:00Z')); + expect(() => fires.next()).toThrow(InvalidScheduleError); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/recurrence/__tests__/periods.test.ts b/packages/@n8n/scheduler/src/core/recurrence/__tests__/periods.test.ts new file mode 100644 index 00000000000..0fe7d7b30eb --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/__tests__/periods.test.ts @@ -0,0 +1,184 @@ +import { periodsBetween } from '../periods'; + +describe('periodsBetween', () => { + describe('hours', () => { + it('counts wall-clock hour steps', () => { + expect( + periodsBetween( + new Date('2026-01-01T00:00:00Z'), + new Date('2026-01-01T05:00:00Z'), + 'hours', + 'UTC', + ), + ).toBe(5); + }); + + it('does not wrap at a day boundary (27 hours later reads 27, not 3)', () => { + expect( + periodsBetween( + new Date('2026-01-01T05:00:00Z'), + new Date('2026-01-02T08:00:00Z'), + 'hours', + 'UTC', + ), + ).toBe(27); + }); + + it('counts clock labels across spring-forward, not real elapsed time', () => { + // America/New_York springs forward 2026-03-08 02:00 -> 03:00. From 00:30 + // EST to 06:30 EDT is 5 real hours, but the clock shows a 6-hour step — + // which is what keeps a six-hourly step anchor on its size-6 gate. + expect( + periodsBetween( + new Date('2026-03-08T00:30:00-05:00'), + new Date('2026-03-08T06:30:00-04:00'), + 'hours', + 'America/New_York', + ), + ).toBe(6); + }); + + it('counts clock labels across fall-back, not real elapsed time', () => { + // America/New_York falls back 2026-11-01 02:00 -> 01:00. From Sat 22:30 + // EDT to Sun 06:30 EST is 9 real hours but an 8-hour clock step. + expect( + periodsBetween( + new Date('2026-10-31T22:30:00-04:00'), + new Date('2026-11-01T06:30:00-05:00'), + 'hours', + 'America/New_York', + ), + ).toBe(8); + }); + }); + + describe('days', () => { + it('counts calendar days, not 24h blocks', () => { + // One minute apart across midnight is still a day apart. + expect( + periodsBetween( + new Date('2026-01-01T23:59:00Z'), + new Date('2026-01-02T00:00:00Z'), + 'days', + 'UTC', + ), + ).toBe(1); + }); + + it('is not shifted by a 23-hour spring-forward day', () => { + // America/New_York springs forward 2026-03-08; that day is 23h long + // but still exactly one calendar day. + expect( + periodsBetween( + new Date('2026-03-07T08:30:00-05:00'), + new Date('2026-03-08T08:30:00-04:00'), + 'days', + 'America/New_York', + ), + ).toBe(1); + }); + + it('counts correctly across a leap-year boundary', () => { + // 2028 is a leap year: Dec 30 is day 365 of 366. A day-of-year modulus + // with a hardcoded 365 (the legacy bookkeeping) reads this 3-day span + // as 2; the calendar count does not care how long the year was. + expect( + periodsBetween( + new Date('2028-12-30T09:00:00Z'), + new Date('2029-01-02T09:00:00Z'), + 'days', + 'UTC', + ), + ).toBe(3); + }); + }); + + describe('weeks', () => { + it('weeks start on Sunday: Saturday and the next day are in different weeks', () => { + // Sat 2026-01-10 -> Sun 2026-01-11. + expect( + periodsBetween( + new Date('2026-01-10T09:00:00Z'), + new Date('2026-01-11T09:00:00Z'), + 'weeks', + 'UTC', + ), + ).toBe(1); + }); + + it('two fires in the same Sunday-started week are zero weeks apart', () => { + // Mon 2026-01-05 and Sat 2026-01-10 share the week of Sun 2026-01-04. + expect( + periodsBetween( + new Date('2026-01-05T09:00:00Z'), + new Date('2026-01-10T09:00:00Z'), + 'weeks', + 'UTC', + ), + ).toBe(0); + }); + + it('counts week boundaries across a year boundary', () => { + // Mon 2026-12-28 (week of Sun 2026-12-27) -> Mon 2027-01-18 (week of Sun 2027-01-17). + expect( + periodsBetween( + new Date('2026-12-28T09:00:00Z'), + new Date('2027-01-18T09:00:00Z'), + 'weeks', + 'UTC', + ), + ).toBe(3); + }); + + it('a week crossing spring-forward is still one week (not zero)', () => { + // America/New_York springs forward 2026-03-08. Week starts Sun 03-08 + // 00:00 EST and Sun 03-15 00:00 EDT are only 6 days 23 hours apart; + // without rounding, the raw diff would read 0.99 weeks. + expect( + periodsBetween( + new Date('2026-03-11T09:00:00-04:00'), + new Date('2026-03-18T09:00:00-04:00'), + 'weeks', + 'America/New_York', + ), + ).toBe(1); + }); + + it('a week crossing fall-back is still one week (not two)', () => { + // America/New_York falls back 2026-11-01. Week starts Sun 11-01 00:00 + // EDT and Sun 11-08 00:00 EST are 7 days 1 hour apart. + expect( + periodsBetween( + new Date('2026-11-04T09:00:00-05:00'), + new Date('2026-11-11T09:00:00-05:00'), + 'weeks', + 'America/New_York', + ), + ).toBe(1); + }); + }); + + describe('months', () => { + it('counts calendar months', () => { + expect( + periodsBetween( + new Date('2026-01-15T09:00:00Z'), + new Date('2026-06-15T09:00:00Z'), + 'months', + 'UTC', + ), + ).toBe(5); + }); + + it('counts absolutely across year boundaries, so sizes of 12 and beyond work', () => { + expect( + periodsBetween( + new Date('2026-03-01T09:00:00Z'), + new Date('2028-03-01T09:00:00Z'), + 'months', + 'UTC', + ), + ).toBe(24); + }); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/recurrence/__tests__/recurring-cron.test.ts b/packages/@n8n/scheduler/src/core/recurrence/__tests__/recurring-cron.test.ts new file mode 100644 index 00000000000..f6387ee1bd7 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/__tests__/recurring-cron.test.ts @@ -0,0 +1,61 @@ +import type { RecurringCronUnit } from '@n8n/constants'; + +import type { RecurringCronSchedule } from '../../types'; +import { isOnCadence } from '../kinds/recurring-cron'; + +const gate = (unit: RecurringCronUnit, size: number): RecurringCronSchedule => ({ + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: unit, + recurrenceSize: size, +}); + +describe('isOnCadence', () => { + const everyThreeWeeks = gate('weeks', 3); + + it("passes a fire in the previous fire's own period (multi-weekday weeks)", () => { + // Mon and Wed of the same week. + expect( + isOnCadence( + new Date('2026-01-05T09:00:00Z'), + new Date('2026-01-07T09:00:00Z'), + everyThreeWeeks, + 'UTC', + ), + ).toBe(true); + }); + + it('rejects a fire in a between-cadence period', () => { + expect( + isOnCadence( + new Date('2026-01-05T09:00:00Z'), + new Date('2026-01-12T09:00:00Z'), + everyThreeWeeks, + 'UTC', + ), + ).toBe(false); + }); + + it('passes a fire exactly one cadence later', () => { + expect( + isOnCadence( + new Date('2026-01-05T09:00:00Z'), + new Date('2026-01-26T09:00:00Z'), + everyThreeWeeks, + 'UTC', + ), + ).toBe(true); + }); + + it('passes a late fire beyond the cadence (catch-up after downtime)', () => { + expect( + isOnCadence( + new Date('2026-01-05T09:00:00Z'), + new Date('2026-03-09T09:00:00Z'), + everyThreeWeeks, + 'UTC', + ), + ).toBe(true); + }); +}); diff --git a/packages/@n8n/scheduler/src/core/recurrence/__tests__/resolve.test.ts b/packages/@n8n/scheduler/src/core/recurrence/__tests__/resolve.test.ts index f7cce3a2263..166d2e135b3 100644 --- a/packages/@n8n/scheduler/src/core/recurrence/__tests__/resolve.test.ts +++ b/packages/@n8n/scheduler/src/core/recurrence/__tests__/resolve.test.ts @@ -15,6 +15,8 @@ function makeJob(overrides: Partial = {}): ScheduledJob { timezone: null, intervalSeconds: 60, fireAt: null, + recurrenceUnit: null, + recurrenceSize: null, nextRunAt: new Date('2026-01-01T00:00:00.000Z'), lastFiredAt: null, maxAttempts: 1, @@ -59,6 +61,63 @@ describe('resolveSchedule', () => { }); }); + it('assembles a recurring_cron schedule from the flat columns', () => { + const schedule = resolveSchedule( + makeJob({ + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + intervalSeconds: null, + }), + DEFAULT_TZ, + ); + + expect(schedule).toEqual({ + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }); + }); + + it('resolves a null recurring_cron timezone to the instance default', () => { + const schedule = resolveSchedule( + makeJob({ + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: null, + recurrenceUnit: 'weeks', + recurrenceSize: 3, + intervalSeconds: null, + }), + DEFAULT_TZ, + ); + + expect(schedule).toMatchObject({ timezone: DEFAULT_TZ }); + }); + + it('throws when a recurring_cron row is missing a required column', () => { + const row = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + intervalSeconds: null, + } as const; + expect(() => resolveSchedule(makeJob({ ...row, cronExpression: null }), DEFAULT_TZ)).toThrow( + CorruptStorageRowError, + ); + expect(() => resolveSchedule(makeJob({ ...row, recurrenceUnit: null }), DEFAULT_TZ)).toThrow( + CorruptStorageRowError, + ); + expect(() => resolveSchedule(makeJob({ ...row, recurrenceSize: null }), DEFAULT_TZ)).toThrow( + CorruptStorageRowError, + ); + }); + it('assembles an interval schedule', () => { const schedule = resolveSchedule( makeJob({ kind: 'interval', intervalSeconds: 30 }), @@ -89,4 +148,9 @@ describe('resolveSchedule', () => { resolveSchedule(makeJob({ kind: 'one_off', intervalSeconds: null }), DEFAULT_TZ), ).toThrow(CorruptStorageRowError); }); + + it('throws on a kind outside the enum (a corrupt row)', () => { + const corrupt = makeJob({ kind: 'weekly' as ScheduledJob['kind'] }); + expect(() => resolveSchedule(corrupt, DEFAULT_TZ)).toThrow(CorruptStorageRowError); + }); }); diff --git a/packages/@n8n/scheduler/src/core/recurrence/__tests__/validate.test.ts b/packages/@n8n/scheduler/src/core/recurrence/__tests__/validate.test.ts index e2090970cc5..91ff308fbe4 100644 --- a/packages/@n8n/scheduler/src/core/recurrence/__tests__/validate.test.ts +++ b/packages/@n8n/scheduler/src/core/recurrence/__tests__/validate.test.ts @@ -54,6 +54,69 @@ describe('validateSchedule', () => { }); }); + describe('recurring_cron', () => { + const valid = { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + } as const; + + it('accepts a valid anchor with a gate', () => { + expect(() => validateSchedule(valid)).not.toThrow(); + }); + + it('accepts the node rule ranges (23 hours, 31 days, 13+ months)', () => { + expect(() => + validateSchedule({ ...valid, recurrenceUnit: 'hours', recurrenceSize: 23 }), + ).not.toThrow(); + expect(() => + validateSchedule({ ...valid, recurrenceUnit: 'days', recurrenceSize: 31 }), + ).not.toThrow(); + expect(() => + validateSchedule({ ...valid, recurrenceUnit: 'months', recurrenceSize: 13 }), + ).not.toThrow(); + }); + + it('rejects a stride of 1 (that is a plain cron) and other non-strides', () => { + expect(() => validateSchedule({ ...valid, recurrenceSize: 1 })).toThrow(/recurrenceSize/); + expect(() => validateSchedule({ ...valid, recurrenceSize: 0 })).toThrow(InvalidScheduleError); + expect(() => validateSchedule({ ...valid, recurrenceSize: -3 })).toThrow( + InvalidScheduleError, + ); + expect(() => validateSchedule({ ...valid, recurrenceSize: 2.5 })).toThrow( + InvalidScheduleError, + ); + }); + + it('rejects an unknown recurrence unit', () => { + expect(() => + validateSchedule({ + ...valid, + recurrenceUnit: 'fortnights' as unknown as (typeof valid)['recurrenceUnit'], + }), + ).toThrow(/recurrenceUnit/); + }); + + it('applies the cron anchor checks (field count, timezone, range)', () => { + expect(() => + validateSchedule({ + ...valid, + cronExpression: '0 9 * * 1' as unknown as CronExpression, + }), + ).toThrow(InvalidScheduleError); + expect(() => validateSchedule({ ...valid, timezone: 'Mars/Phobos' })).toThrow(/timezone/); + expect(() => + validateSchedule({ ...valid, cronExpression: '99 0 9 * * 1' as CronExpression }), + ).toThrow(InvalidScheduleError); + }); + + it('accepts a null timezone (instance default)', () => { + expect(() => validateSchedule({ ...valid, timezone: null })).not.toThrow(); + }); + }); + describe('interval', () => { it('accepts a positive intervalSeconds', () => { expect(() => validateSchedule({ kind: 'interval', intervalSeconds: 60 })).not.toThrow(); diff --git a/packages/@n8n/scheduler/src/core/recurrence/field.ts b/packages/@n8n/scheduler/src/core/recurrence/field.ts new file mode 100644 index 00000000000..ac08e0281da --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/field.ts @@ -0,0 +1,25 @@ +import { CorruptStorageRowError } from '../errors'; +import type { ScheduledJob } from '../types'; + +/** + * Reads a job field that the job's kind guarantees is set, e.g. `cronExpression` + * on a `cron` job. The resolvers use it to turn a field that is optional on the + * general job into a non-null value once the kind has been checked. + * @param job The job to read from. + * @param key The field to read. + * @returns The field value, guaranteed non-null. + * @throws {CorruptStorageRowError} When the field is unset, meaning the stored + * data is inconsistent with the job's kind. + */ +export function required( + job: ScheduledJob, + key: K, +): NonNullable { + const value = job[key]; + if (value === null || value === undefined) { + throw new CorruptStorageRowError( + `scheduled_job ${job.id} of kind '${job.kind}' is missing '${String(key)}'`, + ); + } + return value as NonNullable; +} diff --git a/packages/@n8n/scheduler/src/core/recurrence/kinds/cron.ts b/packages/@n8n/scheduler/src/core/recurrence/kinds/cron.ts new file mode 100644 index 00000000000..548ed807170 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/kinds/cron.ts @@ -0,0 +1,129 @@ +import { CronExpressionParser } from 'cron-parser'; +import { IANAZone } from 'luxon'; +import type { CronExpression } from 'n8n-workflow'; + +import { InvalidScheduleError } from '../../errors'; +import type { CronSchedule, RecurringCronSchedule, ScheduledJob } from '../../types'; +import { required } from '../field'; + +/** A cron expression must have 6 fields (the first is seconds). */ +const CRON_FIELD_COUNT = 6; + +export type CronCursor = ReturnType; + +/** + * Checks that a cron schedule is usable: a 6-field expression in a real + * timezone. Also used for `recurring_cron`, which reuses the cron expression. + * @param schedule The cron (or recurring_cron) schedule to check. + * @throws {InvalidScheduleError} When the expression or timezone is invalid. + */ +export function validateCron(schedule: CronSchedule | RecurringCronSchedule): void { + // Raw DB rows may reach here untyped, so check the runtime type before use. + const expression: unknown = schedule.cronExpression; + if (typeof expression !== 'string') { + throw new InvalidScheduleError( + `${schedule.kind}.cronExpression must be a string, got ${JSON.stringify(expression)}`, + ); + } + + const fieldCount = expression.trim().split(/\s+/).length; + if (fieldCount !== CRON_FIELD_COUNT) { + throw new InvalidScheduleError( + `Cron expression must have ${CRON_FIELD_COUNT} fields (seconds included), got ${fieldCount}: ${JSON.stringify(expression)}`, + ); + } + + // A null timezone is the instance default, resolved by the caller. + if (schedule.timezone !== null && !IANAZone.isValidZone(schedule.timezone)) { + throw new InvalidScheduleError(`Unknown IANA timezone: ${JSON.stringify(schedule.timezone)}`); + } + + try { + CronExpressionParser.parse(expression, { tz: schedule.timezone ?? 'UTC' }); + } catch (error) { + throw new InvalidScheduleError( + `Invalid cron expression ${JSON.stringify(expression)}: ${(error as Error).message}`, + ); + } +} + +/** + * The schedule's timezone as a concrete IANA zone. + * @param schedule The cron (or recurring_cron) schedule. + * @returns The resolved timezone. + * @throws {InvalidScheduleError} When the timezone is still `null` (the instance + * default should have been resolved upstream). + */ +export function resolvedTimezone(schedule: CronSchedule | RecurringCronSchedule): string { + if (schedule.timezone === null) { + throw new InvalidScheduleError( + 'Cron timezone must be resolved to a concrete zone before computing the next run, got null', + ); + } + return schedule.timezone; +} + +/** + * A cursor over the cron fires strictly after `after`, in the given IANA + * timezone. `cron-parser` resolves DST via luxon (wall-clock): a nonexistent + * local time (spring-forward) shifts forward, a repeated one (fall-back) fires + * once. + * @param cronExpression The cron expression to evaluate. + * @param after The instant the cursor starts firing after (strictly). + * @param timezone IANA zone the expression is evaluated in. + * @returns A cursor whose `next()` yields successive fires. + * @throws {InvalidScheduleError} When the expression cannot be parsed. + */ +export function parseCron( + cronExpression: CronExpression, + after: Date, + timezone: string, +): CronCursor { + try { + return CronExpressionParser.parse(cronExpression, { currentDate: after, tz: timezone }); + } catch (error) { + throw new InvalidScheduleError( + `Failed to evaluate cron expression ${JSON.stringify(cronExpression)} in timezone ${JSON.stringify(timezone)}: ${(error as Error).message}`, + ); + } +} + +/** + * The next cron fire strictly after `after`. + * @param schedule The cron schedule. A `recurring_cron` works too: its first + * fire ignores the "every N" rule (there is no previous fire to count from yet). + * @param after The instant to fire after. + * @returns The matching instant; cron is unbounded, so this is never `null`. + */ +export function cronNextRun(schedule: CronSchedule | RecurringCronSchedule, after: Date): Date { + return parseCron(schedule.cronExpression, after, resolvedTimezone(schedule)).next().toDate(); +} + +/** + * Every cron fire starting at `first`, oldest first. + * @param first The first fire to yield. + * @returns An endless generator of fire times. + */ +export function* cronOccurrences(schedule: CronSchedule, first: Date): Generator { + const cursor = parseCron(schedule.cronExpression, first, resolvedTimezone(schedule)); + yield first; + for (;;) { + yield cursor.next().toDate(); + } +} + +/** + * Builds a cron schedule from a job. + * @param job The job to build from. + * @param defaultTimezone Instance default used when the job has no timezone. + * @returns The cron schedule. + * @throws {CorruptStorageRowError} When the cron expression field is unset. + */ +export function resolveCron(job: ScheduledJob, defaultTimezone: string): CronSchedule { + return { + kind: 'cron', + // `cronExpression` is a plain string on the job, validated on write; narrow it here. + cronExpression: required(job, 'cronExpression') as CronExpression, + timezone: job.timezone ?? defaultTimezone, + }; +} diff --git a/packages/@n8n/scheduler/src/core/recurrence/kinds/interval.ts b/packages/@n8n/scheduler/src/core/recurrence/kinds/interval.ts new file mode 100644 index 00000000000..17eef89b919 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/kinds/interval.ts @@ -0,0 +1,53 @@ +import { Time } from '@n8n/constants'; + +import { InvalidScheduleError } from '../../errors'; +import type { IntervalSchedule, ScheduledJob } from '../../types'; +import { required } from '../field'; + +/** + * Checks that an interval schedule has a positive whole number of seconds. + * @param schedule The interval schedule to check. + * @throws {InvalidScheduleError} When the interval is not a positive integer. + */ +export function validateInterval(schedule: IntervalSchedule): void { + if (!Number.isInteger(schedule.intervalSeconds) || schedule.intervalSeconds <= 0) { + throw new InvalidScheduleError( + `interval.intervalSeconds must be a positive integer, got ${JSON.stringify(schedule.intervalSeconds)}`, + ); + } +} + +/** + * The next interval fire after `after`: `after` plus the interval. Counts real + * elapsed time, so daylight-saving changes never shift a fire. + * @param schedule The interval schedule. + * @param after The previous occurrence. + * @returns The next fire time. + */ +export function intervalNextRun(schedule: IntervalSchedule, after: Date): Date { + return new Date(after.getTime() + schedule.intervalSeconds * Time.seconds.toMilliseconds); +} + +/** + * Every interval fire starting at `first`, oldest first. + * @param first The first fire to yield. + * @returns An endless generator of fire times. + */ +export function* intervalOccurrences(schedule: IntervalSchedule, first: Date): Generator { + let previous = first; + yield previous; + for (;;) { + previous = intervalNextRun(schedule, previous); + yield previous; + } +} + +/** + * Builds an interval schedule from a job. + * @param job The job to build from. + * @returns The interval schedule. + * @throws {CorruptStorageRowError} When the interval field is unset. + */ +export function resolveInterval(job: ScheduledJob): IntervalSchedule { + return { kind: 'interval', intervalSeconds: required(job, 'intervalSeconds') }; +} diff --git a/packages/@n8n/scheduler/src/core/recurrence/kinds/one-off.ts b/packages/@n8n/scheduler/src/core/recurrence/kinds/one-off.ts new file mode 100644 index 00000000000..b30b103a82b --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/kinds/one-off.ts @@ -0,0 +1,44 @@ +import { InvalidScheduleError } from '../../errors'; +import type { OneOffSchedule, ScheduledJob } from '../../types'; +import { required } from '../field'; + +/** + * Checks that a one-off schedule has a valid fire time. + * @param schedule The one-off schedule to check. + * @throws {InvalidScheduleError} When `fireAt` is not a valid Date. + */ +export function validateOneOff(schedule: OneOffSchedule): void { + const fireAt: unknown = schedule.fireAt; + if (!(fireAt instanceof Date) || Number.isNaN(fireAt.getTime())) { + throw new InvalidScheduleError('one_off.fireAt must be a valid Date'); + } +} + +/** + * The one-off fire time, or `null` if it has already passed. + * @param schedule The one-off schedule. + * @param after The instant to fire after. + * @returns `fireAt` when it is still ahead of `after`, otherwise `null`. + */ +export function oneOffNextRun(schedule: OneOffSchedule, after: Date): Date | null { + return after.getTime() < schedule.fireAt.getTime() ? schedule.fireAt : null; +} + +/** + * The single fire of a one-off schedule: just `first`, then nothing. + * @param first The one-off's fire time. + * @returns A generator that yields `first` once. + */ +export function* oneOffOccurrences(first: Date): Generator { + yield first; +} + +/** + * Builds a one-off schedule from a job. + * @param job The job to build from. + * @returns The one-off schedule. + * @throws {CorruptStorageRowError} When the fire-time field is unset. + */ +export function resolveOneOff(job: ScheduledJob): OneOffSchedule { + return { kind: 'one_off', fireAt: required(job, 'fireAt') }; +} diff --git a/packages/@n8n/scheduler/src/core/recurrence/kinds/recurring-cron.ts b/packages/@n8n/scheduler/src/core/recurrence/kinds/recurring-cron.ts new file mode 100644 index 00000000000..cec53ecf5e0 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/kinds/recurring-cron.ts @@ -0,0 +1,167 @@ +import { RecurringCronUnitList } from '@n8n/constants'; +import type { CronExpression } from 'n8n-workflow'; + +import { InvalidScheduleError } from '../../errors'; +import type { RecurringCronSchedule, ScheduledJob } from '../../types'; +import { required } from '../field'; +import { periodsBetween } from '../periods'; +import { type CronCursor, cronNextRun, parseCron, resolvedTimezone, validateCron } from './cron'; + +/** + * How many cron fires an "every N periods" scan may reject before giving up. + * Real schedules stay far below this (a weekly cron kept every N weeks rejects + * at most 7×N candidates); hitting the bound means the cron fires so much more + * often than the rule keeps that the schedule is judged malformed. + */ +const MAX_RECURRENCE_CANDIDATES = 10_000; + +/** + * Checks an "every N periods" cron schedule: a valid cron expression, a known + * period unit, and N of at least 2 (N = 1 keeps every fire, which is a plain + * cron). + * @param schedule The recurring_cron schedule to check. + * @throws {InvalidScheduleError} When the cron, unit, or N is invalid. + */ +export function validateRecurringCron(schedule: RecurringCronSchedule): void { + validateCron(schedule); + + if (!RecurringCronUnitList.includes(schedule.recurrenceUnit)) { + throw new InvalidScheduleError( + `recurring_cron.recurrenceUnit must be one of ${RecurringCronUnitList.join(', ')}, got ${JSON.stringify(schedule.recurrenceUnit)}`, + ); + } + + if (!Number.isInteger(schedule.recurrenceSize) || schedule.recurrenceSize < 2) { + throw new InvalidScheduleError( + `recurring_cron.recurrenceSize must be an integer of at least 2 (a stride of 1 is a plain cron), got ${JSON.stringify(schedule.recurrenceSize)}`, + ); + } +} + +/** + * Whether a candidate fire time should actually fire, for an "every N periods" + * schedule. It only compares the candidate to the previous fire — there is no + * hidden counter — so it gives the same answer on any machine and after a + * restart. + * + * The candidate fires when either: + * - it falls in the same period as the previous fire, so a rule like "every 2 + * weeks on Monday and Wednesday" fires both days of a chosen week; or + * - at least N periods have passed since the previous fire. "At least" (rather + * than "exactly") means that after downtime it resumes at the next fire + * instead of skipping a whole cycle. + * + * @param previousFire The last time the schedule fired. + * @param candidate The fire time being considered. + * @param schedule The cron schedule plus its "every N periods" rule. + * @param timezone IANA zone the periods are counted in. + * @returns Whether the candidate should fire. + */ +export function isOnCadence( + previousFire: Date, + candidate: Date, + schedule: RecurringCronSchedule, + timezone: string, +): boolean { + const elapsed = periodsBetween(previousFire, candidate, schedule.recurrenceUnit, timezone); + return elapsed === 0 || elapsed >= schedule.recurrenceSize; +} + +/** + * The next cron fire the "every N periods" rule keeps, scanning `cursor` forward. + * @param cursor The cron cursor, advanced past each candidate it rejects. + * @param schedule The cron expression plus its "every N periods" rule. + * @param previousFire The fire the rule counts periods from; candidates too + * close to it are skipped. + * @param timezone IANA zone the period count runs in. + * @returns The next kept fire. + * @throws {InvalidScheduleError} When no fire lands on the cadence within the + * scan cap (a pathological schedule), instead of looping unbounded. + */ +function advanceToOnCadence( + cursor: CronCursor, + schedule: RecurringCronSchedule, + previousFire: Date, + timezone: string, +): Date { + for (let scanned = 0; scanned < MAX_RECURRENCE_CANDIDATES; scanned++) { + const candidate = cursor.next().toDate(); + if (isOnCadence(previousFire, candidate, schedule, timezone)) { + return candidate; + } + } + + throw new InvalidScheduleError( + `No fire of cron expression ${JSON.stringify(schedule.cronExpression)} lands on the every-${schedule.recurrenceSize}-${schedule.recurrenceUnit} cadence within ${MAX_RECURRENCE_CANDIDATES} candidates`, + ); +} + +/** + * The next fire of an "every N periods" cron schedule, strictly after `after`. + * + * The cron expression proposes candidate times; this returns the first one far + * enough from the previous fire: either within the same period (so a rule like + * "Monday and Wednesday" still fires both) or at least N periods later. + * + * @param schedule The cron expression plus its "every N periods" rule. + * @param after The previous fire; the period count is measured from here. + * @returns The next fire time. + */ +export function recurringCronNextRun(schedule: RecurringCronSchedule, after: Date): Date { + const timezone = resolvedTimezone(schedule); + const cursor = parseCron(schedule.cronExpression, after, timezone); + return advanceToOnCadence(cursor, schedule, after, timezone); +} + +/** + * The first fire of a fresh "every N periods" cron schedule after `from`. + * The "every N" rule is ignored here: there is no previous fire to count from + * yet, so applying it would delay the first fire by up to N periods. + * @param schedule The recurring_cron schedule. + * @param from The instant the job was registered. + * @returns The first fire time. + */ +export function recurringCronFirstRun(schedule: RecurringCronSchedule, from: Date): Date { + return cronNextRun(schedule, from); +} + +/** + * Every kept fire of an "every N periods" cron schedule starting at `first`, + * oldest first. + * @param first The first fire to yield. Must be a real fire (each step counts + * periods from the one before it), so seed it via {@link recurringCronNextRun}. + * @returns An endless generator of fire times. + */ +export function* recurringCronOccurrences( + schedule: RecurringCronSchedule, + first: Date, +): Generator { + const timezone = resolvedTimezone(schedule); + const cursor = parseCron(schedule.cronExpression, first, timezone); + let previous = first; + yield previous; + for (;;) { + previous = advanceToOnCadence(cursor, schedule, previous, timezone); + yield previous; + } +} + +/** + * Builds an "every N periods" cron schedule from a job. + * @param job The job to build from. + * @param defaultTimezone Instance default used when the job has no timezone. + * @returns The recurring_cron schedule. + * @throws {CorruptStorageRowError} When a required field is unset. + */ +export function resolveRecurringCron( + job: ScheduledJob, + defaultTimezone: string, +): RecurringCronSchedule { + return { + kind: 'recurring_cron', + cronExpression: required(job, 'cronExpression') as CronExpression, + timezone: job.timezone ?? defaultTimezone, + recurrenceUnit: required(job, 'recurrenceUnit'), + recurrenceSize: required(job, 'recurrenceSize'), + }; +} diff --git a/packages/@n8n/scheduler/src/core/recurrence/next-run.ts b/packages/@n8n/scheduler/src/core/recurrence/next-run.ts index b3c0bd4dc0a..584f056dbbc 100644 --- a/packages/@n8n/scheduler/src/core/recurrence/next-run.ts +++ b/packages/@n8n/scheduler/src/core/recurrence/next-run.ts @@ -1,73 +1,110 @@ -import { Time } from '@n8n/constants'; -import { CronExpressionParser } from 'cron-parser'; - import { InvalidScheduleError } from '../errors'; -import type { CronSchedule, IntervalSchedule, OneOffSchedule, Schedule } from '../types'; +import type { Schedule } from '../types'; +import { cronNextRun, cronOccurrences } from './kinds/cron'; +import { intervalNextRun, intervalOccurrences } from './kinds/interval'; +import { oneOffNextRun, oneOffOccurrences } from './kinds/one-off'; +import { + recurringCronFirstRun, + recurringCronNextRun, + recurringCronOccurrences, +} from './kinds/recurring-cron'; import { validateSchedule } from './validate'; /** - * Cron: next fire strictly after `after`, in the schedule's IANA timezone. - * `cron-parser` advances from `currentDate` with strictly-after semantics and - * resolves DST via luxon. The timezone must already be resolved to a concrete - * zone (a `null` instance default is rejected upstream). Wall-clock: a - * nonexistent local time (spring-forward) shifts forward; a repeated local time - * (fall-back) fires once. - */ -function cronNextRun(schedule: CronSchedule, after: Date, timezone: string): Date { - try { - const it = CronExpressionParser.parse(schedule.cronExpression, { - currentDate: after, - tz: timezone, - }); - return it.next().toDate(); - } catch (error) { - throw new InvalidScheduleError( - `Failed to evaluate cron expression ${JSON.stringify(schedule.cronExpression)} in timezone ${JSON.stringify(timezone)}: ${(error as Error).message}`, - ); - } -} - -/** - * Interval: advances by `intervalSeconds` of real elapsed time (UTC) from - * `after` (the prior occurrence), so the cadence is deterministic and DST never - * shifts a fire. Always strictly after `after` (intervalSeconds is positive). - */ -function intervalNextRun(schedule: IntervalSchedule, after: Date): Date { - return new Date(after.getTime() + schedule.intervalSeconds * Time.seconds.toMilliseconds); -} - -/** One-off: `fireAt` when it is strictly after `after`, otherwise `null` (exhausted). */ -function oneOffNextRun(schedule: OneOffSchedule, after: Date): Date | null { - return after.getTime() < schedule.fireAt.getTime() ? schedule.fireAt : null; -} - -/** - * Compute the next occurrence strictly after `after` (a job's current - * `nextRunAt` / last scheduled instant), as a UTC instant. This is what the - * materializer advances `next_run_at` with. + * Computes the next occurrence of a schedule, strictly after `after`, as a UTC + * instant. The materializer uses the result to advance `next_run_at`. * - * The schedule is validated first, so malformed input (non-positive interval, - * invalid `fireAt`, bad cron expression, unresolved `null` cron timezone) throws - * {@link InvalidScheduleError} rather than returning a wrong or `Invalid` instant. + * How the next fire is found depends on the kind: + * - `cron`: the next time the cron expression matches. + * - `interval`: `after` plus the interval. + * - `one_off`: the fire time, or `null` if it already passed (exhausted). + * - `recurring_cron`: the next cron fire the every-N rule keeps. * - * Returns `null` only when the schedule is exhausted (a one-off already at or - * past `after`); cron and interval schedules are unbounded. + * @param schedule The schedule to advance. Validated first, so bad input throws instead of returning a wrong instant. + * @param after The job's last scheduled fire (its current `nextRunAt`). For + * `recurring_cron` this must be the previous fire, since the rule counts periods + * from it; seed a fresh job with {@link computeFirstRunAt}, not an arbitrary + * instant. + * @returns The next occurrence, or `null` when exhausted. Only `one_off` ever + * returns `null`; the other kinds never run out. + * @throws {InvalidScheduleError} On malformed input: a non-positive interval, an + * invalid `fireAt`, or a broken cron expression. */ export function computeNextRunAt(schedule: Schedule, after: Date): Date | null { validateSchedule(schedule); switch (schedule.kind) { case 'cron': - if (schedule.timezone === null) { - throw new InvalidScheduleError( - 'Cron timezone must be resolved to a concrete zone before computing the next run, got null', - ); - } - return cronNextRun(schedule, after, schedule.timezone); + return cronNextRun(schedule, after); + case 'recurring_cron': + return recurringCronNextRun(schedule, after); case 'interval': return intervalNextRun(schedule, after); case 'one_off': return oneOffNextRun(schedule, after); + // Stryker disable all: unreachable via this function. validateSchedule above + // already exhaustively switches on `kind` and throws first for any value not + // in the union, so this default is defence-in-depth only, never exercised. + default: { + const exhaustive: never = schedule; + throw new InvalidScheduleError( + `Unknown schedule kind: ${JSON.stringify((exhaustive as Schedule).kind)}`, + ); + } + // Stryker restore all + } +} + +/** + * Computes a fresh job's first occurrence after `from` (its registration + * instant). The one seeding API for `next_run_at`. Every kind but + * `recurring_cron` has no history and matches {@link computeNextRunAt}; a + * `recurring_cron` fires at its next cron instant with the every-N rule ignored. + * @param schedule The schedule to seed. + * @param from The registration instant. + * @returns The first occurrence, or `null` for an already-passed one-off. + * @throws {InvalidScheduleError} On malformed input. + */ +export function computeFirstRunAt(schedule: Schedule, from: Date): Date | null { + if (schedule.kind === 'recurring_cron') { + validateSchedule(schedule); + return recurringCronFirstRun(schedule, from); + } + return computeNextRunAt(schedule, from); +} + +/** + * The successive occurrences of a schedule for one materialization walk, oldest + * first, beginning with `first` (a job's current `next_run_at`: an already-due + * fire) and continuing until the schedule is exhausted. Parses any cron + * expression once and advances a single cursor, so walking a wide window costs + * no repeated parsing — unlike calling {@link computeNextRunAt} in a loop. + * + * Like {@link computeNextRunAt}, `first` for a `recurring_cron` must be a real + * fire, not an arbitrary lower bound: each step counts periods from the fire + * before it, so the sequence is only correct when seeded from one (via + * {@link computeFirstRunAt}). + * @param schedule The schedule to walk. + * @param first The first occurrence to yield. + * @returns A generator of occurrences, oldest first. + * @throws {InvalidScheduleError} On malformed input. + */ +export function* occurrencesFrom(schedule: Schedule, first: Date): Generator { + validateSchedule(schedule); + + switch (schedule.kind) { + case 'cron': + yield* cronOccurrences(schedule, first); + return; + case 'recurring_cron': + yield* recurringCronOccurrences(schedule, first); + return; + case 'interval': + yield* intervalOccurrences(schedule, first); + return; + case 'one_off': + yield* oneOffOccurrences(first); + return; default: { const exhaustive: never = schedule; throw new InvalidScheduleError( diff --git a/packages/@n8n/scheduler/src/core/recurrence/periods.ts b/packages/@n8n/scheduler/src/core/recurrence/periods.ts new file mode 100644 index 00000000000..26c8a0a37e1 --- /dev/null +++ b/packages/@n8n/scheduler/src/core/recurrence/periods.ts @@ -0,0 +1,67 @@ +import { RecurringCronUnit } from '@n8n/constants'; +import { DateTime } from 'luxon'; + +/** + * How many whole periods of `unit` separate two times, counted on the calendar + * rather than by elapsed time. For example two times a minute apart but on + * either side of midnight are 1 day apart, not 0. + * + * Daylight-saving changes never affect the count. Hours are counted by the + * clock, so 23:30 to 01:30 is always 2 hours even if the real gap was 1 or 3 + * hours that night. Weeks start on Sunday. Months are counted on the calendar, + * so "every 12 months" still lines up a year later. + * + * @param from The earlier time. + * @param to The later time. + * @param unit The period to count in: hours, days, weeks or months. + * @param timezone IANA zone the calendar is read in. + * @returns The number of whole periods from `from` to `to`. + */ +export function periodsBetween( + from: Date, + to: Date, + unit: RecurringCronUnit, + timezone: string, +): number { + const start = DateTime.fromJSDate(from, { zone: timezone }); + const end = DateTime.fromJSDate(to, { zone: timezone }); + + switch (unit) { + case RecurringCronUnit.Hours: + return ( + calendarDaysBetween(start.startOf('day'), end.startOf('day')) * 24 + end.hour - start.hour + ); + case RecurringCronUnit.Days: + return calendarDaysBetween(start.startOf('day'), end.startOf('day')); + case RecurringCronUnit.Weeks: + return calendarDaysBetween(startOfSundayWeek(start), startOfSundayWeek(end)) / 7; + case RecurringCronUnit.Months: + return end.year * 12 + end.month - (start.year * 12 + start.month); + default: { + const exhaustive: never = unit; + return exhaustive; + } + } +} + +/** + * The number of whole days between two local midnights. A daylight-saving + * change can make the raw difference an hour off, so it is rounded back to a + * whole number of days. + * @param startOfFromDay Local midnight of the earlier day. + * @param startOfToDay Local midnight of the later day. + * @returns The whole-day count between them. + */ +function calendarDaysBetween(startOfFromDay: DateTime, startOfToDay: DateTime): number { + return Math.round(startOfToDay.diff(startOfFromDay, 'days').days); +} + +/** + * The local midnight of the Sunday that starts `instant`'s week. + * @param instant The time whose week start we want. + * @returns Midnight of that Sunday. + */ +function startOfSundayWeek(instant: DateTime): DateTime { + // Luxon numbers weekdays Mon=1..Sun=7, so Sunday (7 % 7 = 0) is the week start. + return instant.startOf('day').minus({ days: instant.weekday % 7 }); +} diff --git a/packages/@n8n/scheduler/src/core/recurrence/resolve.ts b/packages/@n8n/scheduler/src/core/recurrence/resolve.ts index 9d7f776de19..e7a42e9308d 100644 --- a/packages/@n8n/scheduler/src/core/recurrence/resolve.ts +++ b/packages/@n8n/scheduler/src/core/recurrence/resolve.ts @@ -1,45 +1,38 @@ -import type { CronExpression } from 'n8n-workflow'; - import { CorruptStorageRowError } from '../errors'; import type { Schedule, ScheduledJob } from '../types'; +import { resolveCron } from './kinds/cron'; +import { resolveInterval } from './kinds/interval'; +import { resolveOneOff } from './kinds/one-off'; +import { resolveRecurringCron } from './kinds/recurring-cron'; /** - * Assemble the `Schedule` union the recurrence math consumes from a job's flat - * discriminator + per-kind columns, resolving a cron job's `null` timezone to - * `defaultTimezone` (the instance default). + * Builds the schedule an in-memory job uses from its stored row, filling a + * missing timezone with the instance default. * - * Runs at plan time, under the materializer's per-job error isolation: a row - * missing a column its kind guarantees (corrupt or hand-edited) throws - * {@link CorruptStorageRowError} and defers that one job instead of failing the - * whole pass. + * Runs at plan time under the materializer's per-job error isolation: a row + * missing a column its kind needs (corrupt or hand-edited) throws + * {@link CorruptStorageRowError} and defers just that job. + * @param job The stored job row. + * @param defaultTimezone Instance default for a row with no timezone. + * @returns The schedule for that job. + * @throws {CorruptStorageRowError} On a corrupt row: an unknown kind or a + * missing column. */ export function resolveSchedule(job: ScheduledJob, defaultTimezone: string): Schedule { switch (job.kind) { case 'cron': - // The stored column is a plain varchar validated on write; narrow to the - // branded type at this boundary. - return { - kind: 'cron', - cronExpression: required(job, 'cronExpression') as CronExpression, - timezone: job.timezone ?? defaultTimezone, - }; + return resolveCron(job, defaultTimezone); + case 'recurring_cron': + return resolveRecurringCron(job, defaultTimezone); case 'interval': - return { kind: 'interval', intervalSeconds: required(job, 'intervalSeconds') }; + return resolveInterval(job); case 'one_off': - return { kind: 'one_off', fireAt: required(job, 'fireAt') }; + return resolveOneOff(job); + default: { + const exhaustive: never = job.kind; + throw new CorruptStorageRowError( + `scheduled_job ${job.id} has unknown kind '${String(exhaustive)}'`, + ); + } } } - -/** Read a column that the kind's CHECK constraint guarantees is set; a null here is a corrupt row. */ -function required( - job: ScheduledJob, - key: K, -): NonNullable { - const value = job[key]; - if (value === null || value === undefined) { - throw new CorruptStorageRowError( - `scheduled_job ${job.id} of kind '${job.kind}' is missing '${String(key)}'`, - ); - } - return value as NonNullable; -} diff --git a/packages/@n8n/scheduler/src/core/recurrence/validate.ts b/packages/@n8n/scheduler/src/core/recurrence/validate.ts index 1487ce257a1..21d7b4b9bbd 100644 --- a/packages/@n8n/scheduler/src/core/recurrence/validate.ts +++ b/packages/@n8n/scheduler/src/core/recurrence/validate.ts @@ -1,69 +1,22 @@ -import { CronExpressionParser } from 'cron-parser'; -import { IANAZone } from 'luxon'; - import { InvalidScheduleError } from '../errors'; -import type { CronSchedule, IntervalSchedule, OneOffSchedule, Schedule } from '../types'; - -/** Cron expressions are required to be 6-field (with a leading seconds field). */ -const CRON_FIELD_COUNT = 6; - -function validateCron(schedule: CronSchedule): void { - // This is the boundary for raw, possibly-untyped input (DB rows), so guard the - // runtime type before using it instead of throwing a raw TypeError. - const expression: unknown = schedule.cronExpression; - if (typeof expression !== 'string') { - throw new InvalidScheduleError( - `cron.cronExpression must be a string, got ${JSON.stringify(expression)}`, - ); - } - - const fieldCount = expression.trim().split(/\s+/).length; - if (fieldCount !== CRON_FIELD_COUNT) { - throw new InvalidScheduleError( - `Cron expression must have ${CRON_FIELD_COUNT} fields (seconds included), got ${fieldCount}: ${JSON.stringify(expression)}`, - ); - } - - // A null timezone is the instance default, resolved by the caller. - if (schedule.timezone !== null && !IANAZone.isValidZone(schedule.timezone)) { - throw new InvalidScheduleError(`Unknown IANA timezone: ${JSON.stringify(schedule.timezone)}`); - } - - try { - CronExpressionParser.parse(expression, { - tz: schedule.timezone ?? 'UTC', - }); - } catch (error) { - throw new InvalidScheduleError( - `Invalid cron expression ${JSON.stringify(expression)}: ${(error as Error).message}`, - ); - } -} - -function validateInterval(schedule: IntervalSchedule): void { - if (!Number.isInteger(schedule.intervalSeconds) || schedule.intervalSeconds <= 0) { - throw new InvalidScheduleError( - `interval.intervalSeconds must be a positive integer, got ${JSON.stringify(schedule.intervalSeconds)}`, - ); - } -} - -function validateOneOff(schedule: OneOffSchedule): void { - const fireAt: unknown = schedule.fireAt; - if (!(fireAt instanceof Date) || Number.isNaN(fireAt.getTime())) { - throw new InvalidScheduleError('one_off.fireAt must be a valid Date'); - } -} +import type { Schedule } from '../types'; +import { validateCron } from './kinds/cron'; +import { validateInterval } from './kinds/interval'; +import { validateOneOff } from './kinds/one-off'; +import { validateRecurringCron } from './kinds/recurring-cron'; /** - * Validate a schedule definition, throwing {@link InvalidScheduleError} on the - * first problem. Safe to call before persisting a schedule or computing its next - * run. + * Validates a schedule, throwing on the first problem. Safe to call before + * saving a schedule or computing its next run. + * @param schedule The schedule to validate. + * @throws {InvalidScheduleError} When the schedule is malformed. */ export function validateSchedule(schedule: Schedule): void { switch (schedule.kind) { case 'cron': return validateCron(schedule); + case 'recurring_cron': + return validateRecurringCron(schedule); case 'interval': return validateInterval(schedule); case 'one_off': diff --git a/packages/@n8n/scheduler/src/core/scheduler.ts b/packages/@n8n/scheduler/src/core/scheduler.ts index 74cd33c9425..6f3238a1de9 100644 --- a/packages/@n8n/scheduler/src/core/scheduler.ts +++ b/packages/@n8n/scheduler/src/core/scheduler.ts @@ -37,17 +37,17 @@ export interface Scheduler { */ export interface SchedulerPasses { /** One materializer pass: record upcoming occurrences of due jobs as tasks. */ - materialize(): Promise; + materialize(signal?: AbortSignal): Promise; /** * One executor tick: claim the due tasks this instance can run and schedule * each to fire at its `runAt`. Returns the claimed tasks. */ - execute(): Promise; + execute(signal?: AbortSignal): Promise; /** One reaper sweep: recover tasks stranded by an expired lease. */ - reap(): Promise; + reap(signal?: AbortSignal): Promise; /** One retention pass: delete finished tasks past their windows. */ - prune(): Promise; + prune(signal?: AbortSignal): Promise; } diff --git a/packages/@n8n/scheduler/src/core/types/schedule.ts b/packages/@n8n/scheduler/src/core/types/schedule.ts index 97d1afb9dc7..9d583fbe37e 100644 --- a/packages/@n8n/scheduler/src/core/types/schedule.ts +++ b/packages/@n8n/scheduler/src/core/types/schedule.ts @@ -1,4 +1,4 @@ -import type { ScheduledJobKind } from '@n8n/constants'; +import type { ScheduledJobKind, RecurringCronUnit } from '@n8n/constants'; import type { CronExpression } from 'n8n-workflow'; /** @@ -39,14 +39,35 @@ export interface OneOffSchedule { fireAt: Date; } -export type Schedule = CronSchedule | IntervalSchedule | OneOffSchedule; +/** + * A cron expression paired with an "every N periods" filter, for schedules a + * cron expression cannot express on its own ("every 3 weeks on Mon and Wed", + * "every 5 hours"). The cron expression proposes candidate run times; the + * filter keeps a candidate only when it falls in the same period as the + * previous fire (so "Mon and Wed" fires both days of a kept week) or at least + * `recurrenceSize` periods have elapsed since that fire. + * + * Because the filter counts from the previous fire, the next fire depends on + * it: the `after` argument to the recurrence math must be the previous fire, + * not an arbitrary instant. + */ +export interface RecurringCronSchedule { + kind: 'recurring_cron'; + cronExpression: CronExpression; + timezone: string | null; + recurrenceUnit: RecurringCronUnit; + /** The N in "every N periods"; at least 2 (N = 1 keeps every fire, which is a plain cron). */ + recurrenceSize: number; +} + +export type Schedule = CronSchedule | IntervalSchedule | OneOffSchedule | RecurringCronSchedule; export interface ScheduledJob { id: number; taskType: string; payload: Record; kind: ScheduledJobKind; - /** Set only when {@link kind} is `cron`. */ + /** Set only when {@link kind} is `cron` or `recurring_cron`. */ cronExpression: string | null; /** IANA zone a cron expression is evaluated in; `null` means the instance default. */ timezone: string | null; @@ -54,6 +75,10 @@ export interface ScheduledJob { intervalSeconds: number | null; /** Set only when {@link kind} is `one_off`. */ fireAt: Date | null; + /** Set only when {@link kind} is `recurring_cron`. */ + recurrenceUnit: RecurringCronUnit | null; + /** Set only when {@link kind} is `recurring_cron`. */ + recurrenceSize: number | null; nextRunAt: Date | null; // the next instant the materializer materializes from. lastFiredAt: Date | null; maxAttempts: number; diff --git a/packages/@n8n/scheduler/src/observability/__tests__/executor-tracing.test.ts b/packages/@n8n/scheduler/src/observability/__tests__/executor-tracing.test.ts new file mode 100644 index 00000000000..14c21de8884 --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/__tests__/executor-tracing.test.ts @@ -0,0 +1,173 @@ +import { ensureError } from '@n8n/utils/errors/ensure-error'; +import { mock } from 'vitest-mock-extended'; + +import type { FireResult, TaskHandler } from '../../core/executor'; +import type { ClaimedTask } from '../../core/types'; +import { SCHEDULER_ATTRIBUTES, SCHEDULER_FIRE_OUTCOME } from '../attributes'; +import { createExecutorTracing, withHandoffTracing } from '../executor-tracing'; +import { SpanStatus, type Span, type Tracer } from '../tracer'; + +const HOST = 'main-abc'; + +const claimedTask = (overrides: Partial = {}): ClaimedTask => ({ + id: '1', + jobId: 10, + taskType: 'workflow:schedule-trigger', + payload: {}, + scheduledFor: new Date('2026-07-01T00:00:00.000Z'), + runAt: new Date('2026-07-01T00:00:00.000Z'), + status: 'running', + attempts: 0, + maxAttempts: 1, + leaseEpoch: 1, + ...overrides, +}); + +/** + * A test tracer that behaves like the real (Sentry-backed) one: it hands a + * span to `run`, and when `run` throws it marks the span as errored and + * rethrows. + */ +const makeTracer = () => { + const span: Span = { setAttribute: vi.fn(), setStatus: vi.fn() }; + const tracer = mock(); + tracer.startSpan.mockImplementation(async (_options, run) => { + try { + return await run(span); + } catch (error) { + span.setStatus({ code: SpanStatus.error, message: ensureError(error).message }); + throw error; + } + }); + return { span, tracer }; +}; + +describe('createExecutorTracing', () => { + it('opens a scheduler.fire span around the fire, carrying the task identity and host', async () => { + const { tracer } = makeTracer(); + const tracing = createExecutorTracing(tracer); + const task = claimedTask({ attempts: 1, maxAttempts: 3 }); + + const result = await tracing.fire( + HOST, + task, + async () => await Promise.resolve({ outcome: 'completed' }), + ); + + expect(result).toEqual({ outcome: 'completed' }); + const options = tracer.startSpan.mock.calls[0][0]; + expect(options.name).toBe('Scheduler fire'); + expect(options.op).toBe('scheduler.fire'); + expect(options.attributes).toMatchObject({ + [SCHEDULER_ATTRIBUTES.taskId]: task.id, + [SCHEDULER_ATTRIBUTES.jobId]: task.jobId, + [SCHEDULER_ATTRIBUTES.taskType]: task.taskType, + [SCHEDULER_ATTRIBUTES.host]: HOST, + [SCHEDULER_ATTRIBUTES.attempts]: 1, + [SCHEDULER_ATTRIBUTES.maxAttempts]: 3, + }); + }); + + const okOutcomes: Array<[FireResult, string]> = [ + [{ outcome: 'completed' }, SCHEDULER_FIRE_OUTCOME.completed], + [{ outcome: 'skipped-no-handler' }, SCHEDULER_FIRE_OUTCOME.skippedNoHandler], + [{ outcome: 'skipped-not-owned' }, SCHEDULER_FIRE_OUTCOME.skippedNotOwned], + ]; + it.each(okOutcomes)( + 'closes the span as ok with the mapped outcome attribute for %o', + async (fireResult, attributeValue) => { + const { span, tracer } = makeTracer(); + const tracing = createExecutorTracing(tracer); + + const result = await tracing.fire( + HOST, + claimedTask(), + async () => await Promise.resolve(fireResult), + ); + + expect(result).toEqual(fireResult); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.outcome, attributeValue); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + expect(span.setStatus).not.toHaveBeenCalledWith( + expect.objectContaining({ code: SpanStatus.error }), + ); + }, + ); + + const failureOutcomes: Array<[FireResult, string]> = [ + [{ outcome: 'rescheduled', errorMessage: 'boom' }, SCHEDULER_FIRE_OUTCOME.rescheduled], + [{ outcome: 'dead-lettered', errorMessage: 'boom' }, SCHEDULER_FIRE_OUTCOME.deadLettered], + // A fire whose handler failed but whose task was no longer ours to update. + [ + { outcome: 'skipped-not-owned', errorMessage: 'boom' }, + SCHEDULER_FIRE_OUTCOME.skippedNotOwned, + ], + ]; + it.each(failureOutcomes)( + 'closes the span as errored with the handler message and the mapped outcome for %o', + async (fireResult, attributeValue) => { + const { span, tracer } = makeTracer(); + const tracing = createExecutorTracing(tracer); + + const result = await tracing.fire( + HOST, + claimedTask(), + async () => await Promise.resolve(fireResult), + ); + + expect(result).toEqual(fireResult); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.outcome, attributeValue); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.error, message: 'boom' }); + expect(span.setStatus).not.toHaveBeenCalledWith({ code: SpanStatus.ok }); + }, + ); + + it('propagates a throw from the fire and records no outcome (the tracer marks the span as errored)', async () => { + const { span, tracer } = makeTracer(); + const tracing = createExecutorTracing(tracer); + + await expect( + tracing.fire( + HOST, + claimedTask(), + async () => await Promise.reject(new Error('db down')), + ), + ).rejects.toThrow('db down'); + + expect(span.setAttribute).not.toHaveBeenCalled(); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.error, message: 'db down' }); + }); +}); + +describe('withHandoffTracing', () => { + it('runs the handler inside a scheduler.handoff span carrying the task identity, ok on success', async () => { + const { span, tracer } = makeTracer(); + const handler: TaskHandler = { execute: vi.fn().mockResolvedValue(undefined) }; + const task = claimedTask(); + + await withHandoffTracing(tracer, handler).execute(task); + + expect(handler.execute).toHaveBeenCalledWith(task); + const options = tracer.startSpan.mock.calls[0][0]; + expect(options.name).toBe('Scheduler handoff'); + expect(options.op).toBe('scheduler.handoff'); + expect(options.attributes).toEqual({ + [SCHEDULER_ATTRIBUTES.taskId]: task.id, + [SCHEDULER_ATTRIBUTES.jobId]: task.jobId, + [SCHEDULER_ATTRIBUTES.taskType]: task.taskType, + }); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); + + it('propagates a handler throw (the executor retry contract) with the span errored, never ok', async () => { + const { span, tracer } = makeTracer(); + const handler: TaskHandler = { execute: vi.fn().mockRejectedValue(new Error('boom')) }; + + await expect(withHandoffTracing(tracer, handler).execute(claimedTask())).rejects.toThrow( + 'boom', + ); + + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.error, message: 'boom' }); + expect(span.setStatus).not.toHaveBeenCalledWith({ code: SpanStatus.ok }); + }); +}); diff --git a/packages/@n8n/scheduler/src/observability/__tests__/provisioner-tracing.test.ts b/packages/@n8n/scheduler/src/observability/__tests__/provisioner-tracing.test.ts new file mode 100644 index 00000000000..435e0c7f9bd --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/__tests__/provisioner-tracing.test.ts @@ -0,0 +1,164 @@ +import { ensureError } from '@n8n/utils/errors/ensure-error'; +import { mock } from 'vitest-mock-extended'; + +import type { ProvisionSummary } from '../../core/provisioning/types'; +import { SCHEDULER_ATTRIBUTES, SCHEDULER_PROVISION_ACTION } from '../attributes'; +import { createProvisionerTracing } from '../provisioner-tracing'; +import { SpanStatus, type Span, type Tracer } from '../tracer'; + +const summary = (overrides: Partial = {}): ProvisionSummary => ({ + inserted: [], + redefined: [], + unchanged: [], + removed: [], + ...overrides, +}); + +/** + * A test tracer that behaves like the real (Sentry-backed) one: it hands a fresh + * span to `run`, and when `run` throws it marks that span as errored and rethrows. + * Every opened span is recorded so per-job child spans can be asserted. + */ +const makeTracer = () => { + const spans: Span[] = []; + const tracer = mock(); + tracer.startSpan.mockImplementation(async (_options, run) => { + const span: Span = { setAttribute: vi.fn(), setStatus: vi.fn() }; + spans.push(span); + try { + return await run(span); + } catch (error) { + span.setStatus({ code: SpanStatus.error, message: ensureError(error).message }); + throw error; + } + }); + return { spans, tracer }; +}; + +describe('createProvisionerTracing', () => { + describe('provision', () => { + it('opens a scheduler.provision span carrying the summary counts', async () => { + const { spans, tracer } = makeTracer(); + const tracing = createProvisionerTracing(tracer); + + const result = await tracing.provision( + async () => + await Promise.resolve( + summary({ + inserted: [{ id: 1, name: 'a' }], + redefined: [ + { id: 2, name: 'b' }, + { id: 3, name: 'c' }, + ], + unchanged: [{ id: 4, name: 'd' }], + removed: [{ id: 5, name: 'e' }], + }), + ), + ); + + const options = tracer.startSpan.mock.calls[0][0]; + expect(options.name).toBe('Scheduler provision'); + expect(options.op).toBe('scheduler.provision'); + + const [span] = spans; + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.provisionInserted, 1); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.provisionRedefined, 2); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.provisionUnchanged, 1); + expect(span.setAttribute).toHaveBeenCalledWith(SCHEDULER_ATTRIBUTES.provisionRemoved, 1); + expect(span.setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + expect(result.inserted).toEqual([{ id: 1, name: 'a' }]); + }); + + it('opens a per-job span for each inserted, redefined and removed job', async () => { + const { tracer } = makeTracer(); + const tracing = createProvisionerTracing(tracer); + + await tracing.provision( + async () => + await Promise.resolve( + summary({ + inserted: [{ id: 1, name: 'a' }], + redefined: [{ id: 2, name: 'b' }], + unchanged: [{ id: 9, name: 'i' }], + removed: [{ id: 3, name: 'c' }], + }), + ), + ); + + const jobSpans = tracer.startSpan.mock.calls + .map(([options]) => options) + .filter((options) => options.op === 'scheduler.job.provision'); + + expect(jobSpans).toEqual([ + expect.objectContaining({ + attributes: { + [SCHEDULER_ATTRIBUTES.jobId]: 1, + [SCHEDULER_ATTRIBUTES.jobName]: 'a', + [SCHEDULER_ATTRIBUTES.jobAction]: SCHEDULER_PROVISION_ACTION.inserted, + }, + }), + expect.objectContaining({ + attributes: { + [SCHEDULER_ATTRIBUTES.jobId]: 2, + [SCHEDULER_ATTRIBUTES.jobName]: 'b', + [SCHEDULER_ATTRIBUTES.jobAction]: SCHEDULER_PROVISION_ACTION.redefined, + }, + }), + expect.objectContaining({ + attributes: { + [SCHEDULER_ATTRIBUTES.jobId]: 3, + [SCHEDULER_ATTRIBUTES.jobName]: 'c', + [SCHEDULER_ATTRIBUTES.jobAction]: SCHEDULER_PROVISION_ACTION.removed, + }, + }), + ]); + }); + + it('opens no per-job span for an unchanged job', async () => { + const { tracer } = makeTracer(); + const tracing = createProvisionerTracing(tracer); + + await tracing.provision( + async () => await Promise.resolve(summary({ unchanged: [{ id: 9, name: 'i' }] })), + ); + + const jobSpans = tracer.startSpan.mock.calls.filter( + ([options]) => options.op === 'scheduler.job.provision', + ); + expect(jobSpans).toHaveLength(0); + }); + + it('marks the span errored and rethrows when the transaction fails', async () => { + const { spans, tracer } = makeTracer(); + const tracing = createProvisionerTracing(tracer); + + await expect( + tracing.provision(async () => await Promise.reject(new Error('tx failed'))), + ).rejects.toThrow('tx failed'); + + expect(spans[0].setStatus).toHaveBeenCalledWith({ + code: SpanStatus.error, + message: 'tx failed', + }); + }); + }); + + describe('deprovision', () => { + it('opens a scheduler.deprovision span carrying the removed count', async () => { + const { spans, tracer } = makeTracer(); + const tracing = createProvisionerTracing(tracer); + + const result = await tracing.deprovision(async () => await Promise.resolve({ removed: 4 })); + + const options = tracer.startSpan.mock.calls[0][0]; + expect(options.name).toBe('Scheduler deprovision'); + expect(options.op).toBe('scheduler.deprovision'); + expect(spans[0].setAttribute).toHaveBeenCalledWith( + SCHEDULER_ATTRIBUTES.deprovisionRemoved, + 4, + ); + expect(spans[0].setStatus).toHaveBeenCalledWith({ code: SpanStatus.ok }); + expect(result).toEqual({ removed: 4 }); + }); + }); +}); diff --git a/packages/@n8n/scheduler/src/observability/attributes.ts b/packages/@n8n/scheduler/src/observability/attributes.ts new file mode 100644 index 00000000000..ebaab8480ea --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/attributes.ts @@ -0,0 +1,82 @@ +import type { ClaimedTask } from '../core/types'; + +/** + * `n8n.scheduler.*` span attribute names, kept in one place so every scheduler + * span reports the same keys and Sentry queries stay stable. + */ +export const SCHEDULER_ATTRIBUTES = { + taskId: 'n8n.scheduler.task_id', + jobId: 'n8n.scheduler.job_id', + taskType: 'n8n.scheduler.task_type', + host: 'n8n.scheduler.host', + leaseEpoch: 'n8n.scheduler.lease_epoch', + scheduledFor: 'n8n.scheduler.scheduled_for', + runAt: 'n8n.scheduler.run_at', + attempts: 'n8n.scheduler.attempts', + maxAttempts: 'n8n.scheduler.max_attempts', + outcome: 'n8n.scheduler.outcome', + claimedCount: 'n8n.scheduler.claimed_count', + reclaimed: 'n8n.scheduler.reclaimed', + deadLettered: 'n8n.scheduler.dead_lettered', + claimedJobs: 'n8n.scheduler.claimed_jobs', + occurrences: 'n8n.scheduler.occurrences', + deferredJobs: 'n8n.scheduler.deferred_jobs', + retentionDeleted: 'n8n.scheduler.retention_deleted', + retentionDrained: 'n8n.scheduler.retention_drained', + provisionInserted: 'n8n.scheduler.provision_inserted', + provisionRedefined: 'n8n.scheduler.provision_redefined', + provisionUnchanged: 'n8n.scheduler.provision_unchanged', + provisionRemoved: 'n8n.scheduler.provision_removed', + deprovisionRemoved: 'n8n.scheduler.deprovision_removed', + jobName: 'n8n.scheduler.job_name', + jobAction: 'n8n.scheduler.job_action', +} as const; + +/** + * Values of the {@link SCHEDULER_ATTRIBUTES.jobAction} attribute on a per-job + * provision span: what one provision did to that job, so a trace tells a fresh + * insert apart from a rewrite apart from a deletion. Unchanged jobs get no span. + */ +export const SCHEDULER_PROVISION_ACTION = { + /** The job did not exist and was inserted. */ + inserted: 'inserted', + /** The job existed with a different definition and was rewritten in place. */ + redefined: 'redefined', + /** The job was no longer desired and was deleted. */ + removed: 'removed', +} as const; + +/** + * Values of the {@link SCHEDULER_ATTRIBUTES.outcome} attribute on a fire span: + * how firing one task ended, so a trace tells a retry apart from a terminal + * dead-letter and both apart from a skip. + */ +export const SCHEDULER_FIRE_OUTCOME = { + /** The handler ran and the task completed. */ + completed: 'completed', + /** The handler threw and the task was rescheduled for another attempt. */ + rescheduled: 'rescheduled', + /** The handler threw on its last attempt and the task failed terminally. */ + deadLettered: 'dead_lettered', + /** No handler was registered for the type; the claim was released. */ + skippedNoHandler: 'skipped_no_handler', + /** The row was gone or reclaimed by the time it fired; nothing dispatched. */ + skippedNotOwned: 'skipped_not_owned', +} as const; + +/** + * Per-occurrence attributes shared by the fire/handoff spans. `ClaimedTask` + * carries no workflow id, so the identity is `job_id` + `task_id` only. + */ +export function pickSchedulerTaskAttributes(task: ClaimedTask): Record { + return { + [SCHEDULER_ATTRIBUTES.taskId]: task.id, + [SCHEDULER_ATTRIBUTES.jobId]: task.jobId, + [SCHEDULER_ATTRIBUTES.taskType]: task.taskType, + [SCHEDULER_ATTRIBUTES.leaseEpoch]: task.leaseEpoch, + [SCHEDULER_ATTRIBUTES.attempts]: task.attempts, + [SCHEDULER_ATTRIBUTES.maxAttempts]: task.maxAttempts, + [SCHEDULER_ATTRIBUTES.scheduledFor]: task.scheduledFor.toISOString(), + [SCHEDULER_ATTRIBUTES.runAt]: task.runAt.toISOString(), + }; +} diff --git a/packages/@n8n/scheduler/src/observability/executor-tracing.ts b/packages/@n8n/scheduler/src/observability/executor-tracing.ts new file mode 100644 index 00000000000..a54812786de --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/executor-tracing.ts @@ -0,0 +1,104 @@ +import { + SCHEDULER_ATTRIBUTES, + SCHEDULER_FIRE_OUTCOME, + pickSchedulerTaskAttributes, +} from './attributes'; +import { SpanStatus, type Tracer } from './tracer'; +import type { ExecutorTracing, FireResult, TaskHandler } from '../core/executor'; + +/** + * Builds the tracing hook the executor runs every fire through: it opens a + * `scheduler.fire` span around the fire and closes it based on the returned + * {@link FireResult}. A failure outcome ('rescheduled', 'dead-lettered') + * closes the span as errored with the handler's message; every other outcome + * closes it as ok, since skips are expected and harmless. + * + * This is the only place that knows how a fire outcome translates to span + * attributes and status; the executor itself contains no tracing code. + * + * @param tracer - The host's tracer (or a no-op when the host traces nothing). + */ +export function createExecutorTracing(tracer: Tracer): ExecutorTracing { + return { + async fire(host, task, run) { + return await tracer.startSpan( + { + name: 'Scheduler fire', + op: 'scheduler.fire', + attributes: { ...pickSchedulerTaskAttributes(task), [SCHEDULER_ATTRIBUTES.host]: host }, + // `fire` runs from inside a timer callback armed while the claim span + // (`scheduler.claim`) was active; the async context still carries that + // span here, so without a fresh trace the fire span would be parented + // under a claim span that may already have closed and been sent. + newTrace: true, + }, + async (span) => { + // If `run` throws (e.g. writing the outcome to storage failed), the + // error propagates and the tracer marks the span as errored. + const result = await run(); + span.setAttribute(SCHEDULER_ATTRIBUTES.outcome, fireOutcomeAttribute(result.outcome)); + if ('errorMessage' in result) { + span.setStatus({ code: SpanStatus.error, message: result.errorMessage }); + } else { + span.setStatus({ code: SpanStatus.ok }); + } + return result; + }, + ); + }, + }; +} + +/** + * Wraps a task handler so every execution runs inside a `scheduler.handoff` + * span. The span becomes a child of the fire span automatically, because the + * real tracer keeps track of which span is currently active. + * + * Handlers are wrapped when they are registered (see `createScheduler`), so + * the executor calls them without knowing about the span. An error thrown by + * the handler still propagates (that is how the executor detects a failed + * attempt) and marks the span as errored. + * + * @param tracer - The host's tracer (or a no-op when the host traces nothing). + * @param handler - The task handler to wrap. + * @returns A handler with the same behavior, plus the span around each run. + */ +export function withHandoffTracing(tracer: Tracer, handler: TaskHandler): TaskHandler { + return { + async execute(task) { + await tracer.startSpan( + { + name: 'Scheduler handoff', + op: 'scheduler.handoff', + attributes: { + [SCHEDULER_ATTRIBUTES.taskId]: task.id, + [SCHEDULER_ATTRIBUTES.jobId]: task.jobId, + [SCHEDULER_ATTRIBUTES.taskType]: task.taskType, + }, + }, + async (span) => { + await handler.execute(task); + span.setStatus({ code: SpanStatus.ok }); + }, + ); + }, + }; +} + +/** + * Translates a fire outcome into the value recorded on the fire span's `outcome` attribute. + */ +function fireOutcomeAttribute(outcome: FireResult['outcome']): string { + switch (outcome) { + case 'completed': + return SCHEDULER_FIRE_OUTCOME.completed; + case 'rescheduled': + return SCHEDULER_FIRE_OUTCOME.rescheduled; + case 'dead-lettered': + return SCHEDULER_FIRE_OUTCOME.deadLettered; + case 'skipped-no-handler': + return SCHEDULER_FIRE_OUTCOME.skippedNoHandler; + case 'skipped-not-owned': + return SCHEDULER_FIRE_OUTCOME.skippedNotOwned; + } +} diff --git a/packages/@n8n/scheduler/src/observability/materializer-tracing.ts b/packages/@n8n/scheduler/src/observability/materializer-tracing.ts new file mode 100644 index 00000000000..bb280d30bb5 --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/materializer-tracing.ts @@ -0,0 +1,38 @@ +import { SCHEDULER_ATTRIBUTES } from './attributes'; +import { SpanStatus, type Tracer } from './tracer'; +import type { RecordedOccurrence } from '../core/materializer'; + +/** + * Opens one `scheduler.task.create` span per row the materializer just recorded, + * so each task's creation is traceable on its own rather than folded into the + * pass-level `occurrences` count. + * + * Row identity is only as complete as the storage layer's `recordOccurrences` + * (Postgres `RETURNING`; empty elsewhere), so this is a no-op on hosts where + * `created` is empty. + * + * @param tracer - The host's tracer (or a no-op when the host traces nothing). + * @param created - The rows newly recorded by this materialize pass. + */ +export async function traceCreatedTasks( + tracer: Tracer, + created: RecordedOccurrence[], +): Promise { + for (const task of created) { + await tracer.startSpan( + { + name: 'Scheduler task created', + op: 'scheduler.task.create', + attributes: { + [SCHEDULER_ATTRIBUTES.taskId]: task.id, + [SCHEDULER_ATTRIBUTES.jobId]: task.jobId, + [SCHEDULER_ATTRIBUTES.taskType]: task.taskType, + }, + }, + async (span) => { + span.setStatus({ code: SpanStatus.ok }); + await Promise.resolve(); + }, + ); + } +} diff --git a/packages/@n8n/scheduler/src/observability/pass-tracing.ts b/packages/@n8n/scheduler/src/observability/pass-tracing.ts new file mode 100644 index 00000000000..d74390402a0 --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/pass-tracing.ts @@ -0,0 +1,48 @@ +import { SpanStatus, type Span, type SpanOptions, type Tracer } from './tracer'; +import { PASS_TIMED_OUT } from '../core/lifecycle'; + +/** + * Wraps one scheduler pass (materialize, claim, reap, retention) in a tracing + * span, so the pass code itself contains no tracing calls. + * + * If the pass throws (e.g. the materializer when it is aborted), the error + * propagates and the tracer marks the span as errored. + * + * @param tracer - The host's tracer (or a no-op when the host traces nothing). + * @param options - Name, operation and fixed attributes of the span. + * @param run - The pass to run on every tick. + * @param attributesFrom - Picks which fields of the pass result to record on the span. + * @returns The pass wrapped in the span, with the same signature as `run`. + */ +export function tracePass( + tracer: Tracer, + options: SpanOptions, + run: (signal?: AbortSignal) => Promise, + attributesFrom: (result: T) => Record, +): (signal?: AbortSignal) => Promise { + return async (signal?: AbortSignal) => + await tracer.startSpan(options, async (span) => { + const result = await run(signal); + for (const [key, value] of Object.entries(attributesFrom(result))) { + span.setAttribute(key, value); + } + settlePassSpan(span, signal); + return result; + }); +} + +/** + * Chooses the final status of a pass span. + * + * A pass that runs past its timeout is aborted with PASS_TIMED_OUT and + * returns early instead of throwing, so without this check its span would + * close as ok while the loop reports a timeout. So: a timed-out pass records + * an error; a normal completion or a graceful shutdown records ok. + */ +function settlePassSpan(span: Span, signal?: AbortSignal): void { + if (signal?.aborted === true && signal.reason === PASS_TIMED_OUT) { + span.setStatus({ code: SpanStatus.error, message: 'Scheduler pass timed out' }); + } else { + span.setStatus({ code: SpanStatus.ok }); + } +} diff --git a/packages/@n8n/scheduler/src/observability/provisioner-tracing.ts b/packages/@n8n/scheduler/src/observability/provisioner-tracing.ts new file mode 100644 index 00000000000..578445681c9 --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/provisioner-tracing.ts @@ -0,0 +1,88 @@ +import { SCHEDULER_ATTRIBUTES, SCHEDULER_PROVISION_ACTION } from './attributes'; +import { SpanStatus, type Tracer } from './tracer'; +import type { ProvisionSummary } from '../core/provisioning/types'; + +/** + * Wraps a {@link JobProvisioner}'s `provision`/`deprovision` in tracing spans, so + * the provisioning logic itself contains no tracing calls (the same split the + * scheduler factory uses for its passes). + * + * The operation-level span records the summary counts; a per-job child span is + * then opened for each job the call actually touched (inserted, redefined or + * removed), so each job's provisioning is traceable on its own rather than folded + * into a count. Each per-job span carries the job's id and name (scopes are + * opaque to the package, but the name identifies which rule changed). + * + * @param tracer - The host's tracer (or a no-op when the host traces nothing). + */ +export interface ProvisionerTracing { + provision(run: () => Promise): Promise; + deprovision(run: () => Promise<{ removed: number }>): Promise<{ removed: number }>; +} + +export function createProvisionerTracing(tracer: Tracer): ProvisionerTracing { + return { + async provision(run) { + return await tracer.startSpan( + { name: 'Scheduler provision', op: 'scheduler.provision' }, + async (span) => { + // A throw from `run` (a failed transaction) propagates and the tracer + // marks the span errored. + const summary = await run(); + span.setAttribute(SCHEDULER_ATTRIBUTES.provisionInserted, summary.inserted.length); + span.setAttribute(SCHEDULER_ATTRIBUTES.provisionRedefined, summary.redefined.length); + span.setAttribute(SCHEDULER_ATTRIBUTES.provisionUnchanged, summary.unchanged.length); + span.setAttribute(SCHEDULER_ATTRIBUTES.provisionRemoved, summary.removed.length); + span.setStatus({ code: SpanStatus.ok }); + await traceProvisionedJobs(tracer, summary); + return summary; + }, + ); + }, + + async deprovision(run) { + return await tracer.startSpan( + { name: 'Scheduler deprovision', op: 'scheduler.deprovision' }, + async (span) => { + // `deleteAll` reports only a count, not the ids, so there is no per-job + // span to open here; the operation span carries the removed count. + const result = await run(); + span.setAttribute(SCHEDULER_ATTRIBUTES.deprovisionRemoved, result.removed); + span.setStatus({ code: SpanStatus.ok }); + return result; + }, + ); + }, + }; +} + +/** + * Opens one `scheduler.job.provision` span per job a provision touched, tagged + * with the {@link SCHEDULER_PROVISION_ACTION} that job saw. Unchanged jobs are + * omitted: nothing happened to them. Nests under the provision span, since it + * runs inside that span's active async context. + */ +async function traceProvisionedJobs(tracer: Tracer, summary: ProvisionSummary): Promise { + const touched = [ + ...summary.inserted.map((job) => [job, SCHEDULER_PROVISION_ACTION.inserted] as const), + ...summary.redefined.map((job) => [job, SCHEDULER_PROVISION_ACTION.redefined] as const), + ...summary.removed.map((job) => [job, SCHEDULER_PROVISION_ACTION.removed] as const), + ]; + for (const [job, action] of touched) { + await tracer.startSpan( + { + name: 'Scheduler job provisioned', + op: 'scheduler.job.provision', + attributes: { + [SCHEDULER_ATTRIBUTES.jobId]: job.id, + [SCHEDULER_ATTRIBUTES.jobName]: job.name, + [SCHEDULER_ATTRIBUTES.jobAction]: action, + }, + }, + async (span) => { + span.setStatus({ code: SpanStatus.ok }); + await Promise.resolve(); + }, + ); + } +} diff --git a/packages/@n8n/scheduler/src/observability/tracer.ts b/packages/@n8n/scheduler/src/observability/tracer.ts new file mode 100644 index 00000000000..16f6c8a4259 --- /dev/null +++ b/packages/@n8n/scheduler/src/observability/tracer.ts @@ -0,0 +1,48 @@ +/** + * Minimal tracing port. The scheduler stays dependency-light: it depends on this + * interface, and the host adapts its concrete (Sentry-backed) tracer to it. The + * status codes match Sentry's span status codes so the host adapter is a + * pass-through. + */ +export const SpanStatus = { ok: 1, error: 2 } as const; + +export interface SpanOptions { + name: string; + op?: string; + attributes?: Record; + /** + * Start a fresh trace instead of parenting under whatever span is active on + * the calling async context. Needed when `run` executes on a timer/callback + * scheduled from inside another span (e.g. a fire span armed from within the + * claim span's tick): without this, the async context still carries the + * claim span into the timer callback, so the fire span is parented under a + * root that may already have finished and been sent — Sentry drops children + * that close after their root is sent. + */ + newTrace?: boolean; +} + +export interface Span { + setAttribute(key: string, value: string | number | boolean): void; + setStatus(status: { code: number; message?: string }): void; +} + +export interface Tracer { + /** + * Run `run` inside a span. A throw from `run` marks the span errored (the + * concrete tracer does that) and propagates. + * + * The tracer's own machinery is trusted not to throw before invoking `run` + * (same trust model as the scheduler's loop hooks): every pass, fire and + * handler run goes through this uncaught, so a throwing host tracer would + * take the scheduler down with it. + */ + startSpan(options: SpanOptions, run: (span: Span) => Promise): Promise; +} + +/** Default tracer: runs the work, records nothing. */ +export const noopTracer: Tracer = { + async startSpan(_options, run) { + return await run({ setAttribute() {}, setStatus() {} }); + }, +}; diff --git a/packages/@n8n/scheduler/stryker.config.mjs b/packages/@n8n/scheduler/stryker.config.mjs new file mode 100644 index 00000000000..a18a3dbf47a --- /dev/null +++ b/packages/@n8n/scheduler/stryker.config.mjs @@ -0,0 +1,32 @@ +/** @type {import('@stryker-mutator/api/core').PartialStrykerOptions} */ +export default { + packageManager: 'pnpm', + testRunner: 'vitest', + plugins: ['@stryker-mutator/vitest-runner'], + // Scheduler is a pure package (no isolated-vm engine to swap out), so this + // just points at a Stryker-only vitest config for the colocated test layout. + vitest: { + configFile: 'vitest.stryker.config.ts', + }, + // No `progress` reporter: these runs are non-interactive, nobody watches the stream. + reporters: ['clear-text', 'json'], + coverageAnalysis: 'perTest', + // Cache mutant results so the property-testing edit/re-run loop only re-tests + // mutants whose covering tests changed. Keep the cache under the gitignored `reports/mutation/`. + incremental: true, + incrementalFile: 'reports/mutation/stryker-incremental.json', + // Skip module-level (static) mutants: each forces a full re-instrument. + ignoreStatic: true, + // Default empty: the `mutate` npm script always passes --mutate . + // Direct invocation with no --mutate will fail fast (allowEmpty: false). + mutate: [], + jsonReporter: { fileName: 'reports/mutation/raw.json' }, + // Cap low: a string/utils mutant running 15s+ is a spinning loop-condition mutant; fail it fast. + timeoutMS: 15_000, + // Each Stryker worker spawns vitest with one project, via vitest.stryker.config.ts. + // Default 4 is fine on CI runners; lower locally if you hit OOM during the + // initial dry run via `STRYKER_CONCURRENCY=1`. + concurrency: Number(process.env.STRYKER_CONCURRENCY ?? 4), + tempDirName: '.stryker-tmp', + cleanTempDir: true, +}; diff --git a/packages/@n8n/scheduler/vitest.stryker.config.ts b/packages/@n8n/scheduler/vitest.stryker.config.ts new file mode 100644 index 00000000000..3877efdb619 --- /dev/null +++ b/packages/@n8n/scheduler/vitest.stryker.config.ts @@ -0,0 +1,22 @@ +// Vitest config used by Stryker only — NOT by `pnpm test`, NOT by CI unit runs. +// +// Scheduler is a pure package (no isolated-vm engine to swap out), so this is +// just the package's normal vitest setup with `include` narrowed to the +// colocated `__tests__` layout under `src/`, keeping the `@ -> ./src` alias. + +import path from 'node:path'; +import { defineConfig, mergeConfig } from 'vitest/config'; +import { createVitestConfig } from '@n8n/vitest-config/node'; + +export default mergeConfig( + defineConfig({ + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, + }), + createVitestConfig({ + include: ['src/**/__tests__/*.test.ts'], + }), +); diff --git a/packages/cli/src/blob-storage/__tests__/azure-byte-store.test.ts b/packages/cli/src/blob-storage/__tests__/azure-byte-store.test.ts new file mode 100644 index 00000000000..064ba9161cb --- /dev/null +++ b/packages/cli/src/blob-storage/__tests__/azure-byte-store.test.ts @@ -0,0 +1,79 @@ +/* eslint-disable @typescript-eslint/unbound-method */ + +import type { AzureBlobService } from 'n8n-core'; +import type { Readable } from 'node:stream'; +import { mock } from 'vitest-mock-extended'; + +import { AzureByteStore } from '../azure-byte-store.ee'; +import { azureNotFoundError, azureThrottledError, body } from './mocks'; + +let azureBlob: ReturnType>; +let store: AzureByteStore; + +beforeEach(() => { + azureBlob = mock(); + store = new AzureByteStore(azureBlob); +}); + +describe('write', () => { + it('should put the bytes at the key and return the byte count', async () => { + const bytes = await store.write('a/b/blob.json', body, 'application/json'); + expect(azureBlob.put).toHaveBeenCalledWith('a/b/blob.json', body, { + mimeType: 'application/json', + }); + expect(bytes).toBe(body.length); + }); + + it('should default to a binary content type', async () => { + await store.write('a/b/blob.bin', body); + expect(azureBlob.put).toHaveBeenCalledWith('a/b/blob.bin', body, { + mimeType: 'application/octet-stream', + }); + }); +}); + +describe('read', () => { + it('should return the stored bytes', async () => { + azureBlob.get.mockResolvedValueOnce(body as unknown as Readable); + + expect(await store.read('a/b/blob.json')).toBe(body); + expect(azureBlob.get).toHaveBeenCalledWith('a/b/blob.json', { mode: 'buffer' }); + }); + + it('should return `null` when the blob is missing', async () => { + azureBlob.get.mockRejectedValueOnce(azureNotFoundError); + expect(await store.read('a/b/blob.json')).toBeNull(); + }); + + it('should rethrow a systemic error', async () => { + azureBlob.get.mockRejectedValueOnce(azureThrottledError); + await expect(store.read('a/b/blob.json')).rejects.toBe(azureThrottledError); + }); +}); + +describe('delete', () => { + it('should delete the blobs for the given keys', async () => { + await store.delete(['a/one.json', 'a/two.json']); + + expect(azureBlob.delete).toHaveBeenCalledTimes(2); + expect(azureBlob.delete).toHaveBeenCalledWith('a/one.json'); + expect(azureBlob.delete).toHaveBeenCalledWith('a/two.json'); + }); + + it('should delete in batches to cap concurrent requests', async () => { + const keys = Array.from({ length: 120 }, (_, i) => `a/${i}.json`); + const concurrent: number[] = []; + let inFlight = 0; + azureBlob.delete.mockImplementation(async () => { + inFlight++; + concurrent.push(inFlight); + await new Promise((resolve) => setImmediate(resolve)); + inFlight--; + }); + + await store.delete(keys); + + expect(azureBlob.delete).toHaveBeenCalledTimes(120); + expect(Math.max(...concurrent)).toBeLessThanOrEqual(50); + }); +}); diff --git a/packages/cli/src/blob-storage/__tests__/json-store.test.ts b/packages/cli/src/blob-storage/__tests__/json-store.test.ts index a5a0116c0d2..d2cdb5663de 100644 --- a/packages/cli/src/blob-storage/__tests__/json-store.test.ts +++ b/packages/cli/src/blob-storage/__tests__/json-store.test.ts @@ -61,6 +61,17 @@ describe('JsonStore', () => { expect(bundle).toEqual({ value: 'hello', version: VERSION }); }); + it('rejects a payload containing the reserved `version` key', async () => { + const fs = new InMemoryByteStore(); + const { store } = makeStore({ fs }); + const payload = { value: 'x', version: 99 } as TestPayload; + + await expect(store.write({ id: 'a' }, payload, 'fs')).rejects.toThrow( + 'reserved `version` key', + ); + expect(fs.objects.size).toBe(0); + }); + it('returns null when the bundle is missing', async () => { const { store } = makeStore({ fs: new InMemoryByteStore() }); expect(await store.read({ id: 'missing' }, 'fs')).toBeNull(); diff --git a/packages/cli/src/blob-storage/__tests__/mocks.ts b/packages/cli/src/blob-storage/__tests__/mocks.ts new file mode 100644 index 00000000000..964d87d9114 --- /dev/null +++ b/packages/cli/src/blob-storage/__tests__/mocks.ts @@ -0,0 +1,27 @@ +export const body = Buffer.from('payload-bytes', 'utf-8'); + +/** A provider SDK error as surfaced by the wrapping service (wrapped, original on `cause`). */ +const wrapProviderError = (cause: unknown) => new Error('Request to provider failed', { cause }); + +export const s3NotFoundError = wrapProviderError( + Object.assign(new Error('missing'), { name: 'NoSuchKey' }), +); + +export const s3NoSuchBucketError = wrapProviderError( + Object.assign(new Error('bucket missing'), { + name: 'NoSuchBucket', + $metadata: { httpStatusCode: 404 }, + }), +); + +export const s3ThrottledError = wrapProviderError( + Object.assign(new Error('slow down'), { name: 'ThrottlingException' }), +); + +export const azureNotFoundError = wrapProviderError( + Object.assign(new Error('missing'), { code: 'BlobNotFound' }), +); + +export const azureThrottledError = wrapProviderError( + Object.assign(new Error('slow down'), { code: 'ServerBusy' }), +); diff --git a/packages/cli/src/blob-storage/__tests__/s3-byte-store.test.ts b/packages/cli/src/blob-storage/__tests__/s3-byte-store.test.ts new file mode 100644 index 00000000000..87c63dd0ded --- /dev/null +++ b/packages/cli/src/blob-storage/__tests__/s3-byte-store.test.ts @@ -0,0 +1,72 @@ +/* eslint-disable @typescript-eslint/unbound-method */ + +import type { ObjectStoreService } from 'n8n-core'; +import type { Readable } from 'node:stream'; +import { mock } from 'vitest-mock-extended'; + +import { S3ByteStore } from '../s3-byte-store.ee'; +import { body, s3NotFoundError, s3NoSuchBucketError, s3ThrottledError } from './mocks'; + +let objectStoreService: ReturnType>; +let store: S3ByteStore; + +beforeEach(() => { + objectStoreService = mock(); + store = new S3ByteStore(objectStoreService); +}); + +describe('write', () => { + it('should put the bytes at the key and return the byte count', async () => { + const bytes = await store.write('a/b/blob.json', body, 'application/json'); + expect(objectStoreService.put).toHaveBeenCalledWith('a/b/blob.json', body, { + mimeType: 'application/json', + }); + expect(bytes).toBe(body.length); + }); + + it('should default to a binary content type', async () => { + await store.write('a/b/blob.bin', body); + expect(objectStoreService.put).toHaveBeenCalledWith('a/b/blob.bin', body, { + mimeType: 'application/octet-stream', + }); + }); +}); + +describe('read', () => { + it('should return the stored bytes', async () => { + objectStoreService.get.mockResolvedValueOnce(body as unknown as Readable); + expect(await store.read('a/b/blob.json')).toBe(body); + expect(objectStoreService.get).toHaveBeenCalledWith('a/b/blob.json', { mode: 'buffer' }); + }); + + it('should return `null` when the object is missing (NoSuchKey)', async () => { + objectStoreService.get.mockRejectedValueOnce(s3NotFoundError); + expect(await store.read('a/b/blob.json')).toBeNull(); + }); + + it('should not treat a bucket-level failure (NoSuchBucket) as a missing object', async () => { + objectStoreService.get.mockRejectedValueOnce(s3NoSuchBucketError); + + await expect(store.read('a/b/blob.json')).rejects.toBe(s3NoSuchBucketError); + }); + + it('should rethrow a systemic error (not a missing object)', async () => { + objectStoreService.get.mockRejectedValueOnce(s3ThrottledError); + + await expect(store.read('a/b/blob.json')).rejects.toBe(s3ThrottledError); + }); +}); + +describe('delete', () => { + it('should delete the objects for the given keys', async () => { + await store.delete(['a/one.json', 'a/two.json']); + + expect(objectStoreService.deleteByKeys).toHaveBeenCalledWith(['a/one.json', 'a/two.json']); + }); + + it('should not send a request for an empty array', async () => { + await store.delete([]); + + expect(objectStoreService.deleteByKeys).not.toHaveBeenCalled(); + }); +}); diff --git a/packages/cli/src/blob-storage/azure-byte-store.ee.ts b/packages/cli/src/blob-storage/azure-byte-store.ee.ts index c1bb217b6ec..b2904bb847a 100644 --- a/packages/cli/src/blob-storage/azure-byte-store.ee.ts +++ b/packages/cli/src/blob-storage/azure-byte-store.ee.ts @@ -1,13 +1,11 @@ -import { Service } from '@n8n/di'; -import chunk from 'lodash/chunk'; -import { AzureBlobService } from 'n8n-core/dist/binary-data/azure-blob/azure-blob.service.ee'; import { ensureError } from '@n8n/utils/errors/ensure-error'; +import chunk from 'lodash/chunk'; +import type { AzureBlobService } from 'n8n-core'; import type { ByteStore, ByteStoreKey } from './types'; const MAX_DELETE_CONCURRENCY = 50; -@Service() export class AzureByteStore implements ByteStore { constructor(private readonly azureBlob: AzureBlobService) {} diff --git a/packages/cli/src/blob-storage/json-store.ts b/packages/cli/src/blob-storage/json-store.ts index 5bce1fcdb3f..d5d9469b158 100644 --- a/packages/cli/src/blob-storage/json-store.ts +++ b/packages/cli/src/blob-storage/json-store.ts @@ -8,7 +8,10 @@ const CORRUPT_ENTRY = Symbol('corruptEntry'); const MAX_READ_CONCURRENCY = 50; -/** Stores JSON entries as blobs using pluggable backends. */ +/** + * Stores JSON entries as blobs using pluggable backends. + * The `version` key is reserved for the schema version: writes reject payloads that contain it. + */ export class JsonStore { private readonly byteStores = new Map(); @@ -28,6 +31,9 @@ export class JsonStore { async write(ref: Ref, payload: Payload, loc: StorageLocation) { const store = this.getByteStore(loc); + if ('version' in payload) { + throw new UnexpectedError('Payload must not contain the reserved `version` key.'); + } try { const body = Buffer.from( jsonStringify({ ...payload, version: this.options.version }), diff --git a/packages/cli/src/blob-storage/s3-byte-store.ee.ts b/packages/cli/src/blob-storage/s3-byte-store.ee.ts index d209b67f731..bf700568a09 100644 --- a/packages/cli/src/blob-storage/s3-byte-store.ee.ts +++ b/packages/cli/src/blob-storage/s3-byte-store.ee.ts @@ -1,10 +1,8 @@ -import { Service } from '@n8n/di'; -import { ObjectStoreService } from 'n8n-core/dist/binary-data/object-store/object-store.service.ee'; import { ensureError } from '@n8n/utils/errors/ensure-error'; +import type { ObjectStoreService } from 'n8n-core'; import type { ByteStore, ByteStoreKey } from './types'; -@Service() export class S3ByteStore implements ByteStore { constructor(private readonly objectStore: ObjectStoreService) {} diff --git a/packages/cli/src/commands/base-command.ts b/packages/cli/src/commands/base-command.ts index a7d222f8954..dd4901a8d3a 100644 --- a/packages/cli/src/commands/base-command.ts +++ b/packages/cli/src/commands/base-command.ts @@ -30,11 +30,11 @@ import type { AbstractServer } from '@/abstract-server'; import { N8N_VERSION, N8N_RELEASE_DATE } from '@/constants'; import * as CrashJournal from '@/crash-journal'; import { getDataDeduplicationService } from '@/deduplication'; -import { ExecutionPersistence } from '@/executions/execution-persistence'; import { TestRunCleanupService } from '@/evaluation.ee/test-runner/test-run-cleanup.service.ee'; import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; import { TelemetryEventRelay } from '@/events/relays/telemetry.event-relay'; import { WorkflowFailureNotificationEventRelay } from '@/events/relays/workflow-failure-notification.event-relay'; +import { ExecutionDataJsonStore } from '@/executions/execution-data/execution-data-json-store'; import { ExpressionObservabilityProvider } from '@/expression-observability/expression-observability.provider'; import { ExternalHooks } from '@/external-hooks'; import { License } from '@/license'; @@ -378,8 +378,11 @@ export abstract class BaseCommand { const objectStoreService = Container.get(ObjectStoreService); await objectStoreService.init(); - const { S3Store } = await import('@/executions/execution-data/s3-store.ee'); - Container.get(ExecutionPersistence).setS3Store(Container.get(S3Store)); + const { S3ByteStore } = await import('@/blob-storage/s3-byte-store.ee'); + Container.get(ExecutionDataJsonStore).registerByteStore( + 's3', + new S3ByteStore(objectStoreService), + ); return objectStoreService; } @@ -393,8 +396,11 @@ export abstract class BaseCommand { const azureBlobService = Container.get(AzureBlobService); await azureBlobService.init(); - const { AzureStore } = await import('@/executions/execution-data/azure-store.ee'); - Container.get(ExecutionPersistence).setAzStore(Container.get(AzureStore)); + const { AzureByteStore } = await import('@/blob-storage/azure-byte-store.ee'); + Container.get(ExecutionDataJsonStore).registerByteStore( + 'az', + new AzureByteStore(azureBlobService), + ); return azureBlobService; } diff --git a/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts b/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts index 007383afda7..35d20819d18 100644 --- a/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts +++ b/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts @@ -117,6 +117,12 @@ describe('TelemetryEventRelay', () => { database: { type: 'sqlite', }, + instanceAi: { + sandboxEnabled: false, + sandboxProvider: 'n8n-sandbox', + braveSearchApiKey: '', + searxngUrl: '', + }, instanceSettingsLoader: getDefaultInstanceSettingsLoaderConfig(), }); const binaryDataConfig = mock({ @@ -2732,6 +2738,44 @@ describe('TelemetryEventRelay', () => { ); }); + it('should track instance AI sandbox and search configuration on `server-started` event', async () => { + workflowRepository.findOne.mockResolvedValue(null); + Object.assign(globalConfig.instanceAi, { + sandboxEnabled: true, + sandboxProvider: 'daytona', + braveSearchApiKey: 'some-api-key', + searxngUrl: '', + }); + + eventService.emit('server-started'); + + await flushPromises(); + + const startupEvent = telemetry.track.mock.calls.find( + ([eventName]) => eventName === 'Instance started', + ); + expect(startupEvent).toBeDefined(); + expect(startupEvent?.[1]).toEqual( + expect.objectContaining({ + instance_ai: { + sandbox_enabled: true, + sandbox_provider: 'daytona', + search_brave_set: true, + search_searxng_set: false, + }, + }), + ); + // Key values must never leave the instance — only set/unset booleans + expect(JSON.stringify(startupEvent?.[1])).not.toContain('some-api-key'); + + Object.assign(globalConfig.instanceAi, { + sandboxEnabled: false, + sandboxProvider: 'n8n-sandbox', + braveSearchApiKey: '', + searxngUrl: '', + }); + }); + it('should track on `session-started` event', () => { const event: RelayEventMap['session-started'] = { pushRef: 'ref123', diff --git a/packages/cli/src/events/maps/relay.event-map.ts b/packages/cli/src/events/maps/relay.event-map.ts index e4658a9e96e..8d4fb48afd6 100644 --- a/packages/cli/src/events/maps/relay.event-map.ts +++ b/packages/cli/src/events/maps/relay.event-map.ts @@ -1035,6 +1035,12 @@ export type RelayEventMap = { // #endregion + // region Agents + 'agent-deleted': { + agentId: string; + projectId: string; + }; + // #region Instance Policies 'instance-policies-updated': { user: UserLike } & ( diff --git a/packages/cli/src/events/relays/telemetry.event-relay.ts b/packages/cli/src/events/relays/telemetry.event-relay.ts index e20d5464e10..667264e7b5e 100644 --- a/packages/cli/src/events/relays/telemetry.event-relay.ts +++ b/packages/cli/src/events/relays/telemetry.event-relay.ts @@ -1465,6 +1465,13 @@ export class TelemetryEventRelay extends EventRelay { license_tenant_id: this.globalConfig.license.tenantId, binary_data_s3: isS3Available && isS3Selected && isS3Licensed, multi_main_setup_enabled: this.globalConfig.multiMainSetup.enabled, + instance_ai: { + // Which sandbox and AIA search providers are configured (booleans/names only, never key values) + sandbox_enabled: this.globalConfig.instanceAi.sandboxEnabled, + sandbox_provider: this.globalConfig.instanceAi.sandboxProvider, + search_brave_set: this.globalConfig.instanceAi.braveSearchApiKey !== '', + search_searxng_set: this.globalConfig.instanceAi.searxngUrl !== '', + }, metrics: { metrics_enabled: this.globalConfig.endpoints.metrics.enable, metrics_category_default: this.globalConfig.endpoints.metrics.includeDefaultMetrics, diff --git a/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts b/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts index 94e9a4d818d..c888b1cd6cb 100644 --- a/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts +++ b/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts @@ -1470,6 +1470,113 @@ describe('Execution Lifecycle Hooks', () => { ); }); }); + + describe('discarding run data for unsaved successful executions', () => { + const getUpdatePayload = () => { + expect(executionPersistence.updateExistingExecution).toHaveBeenCalledTimes(1); + return executionPersistence.updateExistingExecution.mock.calls[0][1]; + }; + + beforeEach(() => { + process.env.N8N_SKIP_UNSAVED_EXECUTION_DATA_WRITES = 'true'; + }); + + afterEach(() => { + delete process.env.N8N_SKIP_UNSAVED_EXECUTION_DATA_WRITES; + workflowData.settings = {}; + }); + + it('should skip writing run data when a successful execution will be discarded', async () => { + workflowData.settings = { saveDataSuccessExecution: 'none' }; + const lifecycleHooks = createHooks('trigger'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [successfulRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeUndefined(); + expect(payload.workflowData).toBeUndefined(); + expect(payload.status).toBe('success'); + }); + + it('should write run data when the flag is not enabled', async () => { + delete process.env.N8N_SKIP_UNSAVED_EXECUTION_DATA_WRITES; + workflowData.settings = { saveDataSuccessExecution: 'none' }; + const lifecycleHooks = createHooks('trigger'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [successfulRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeDefined(); + expect(payload.workflowData).toBeDefined(); + }); + + it('should write run data when successful executions are saved', async () => { + workflowData.settings = { saveDataSuccessExecution: 'all' }; + const lifecycleHooks = createHooks('trigger'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [successfulRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeDefined(); + expect(payload.workflowData).toBeDefined(); + }); + + it('should write run data for failed executions even when successes are discarded', async () => { + workflowData.settings = { saveDataSuccessExecution: 'none' }; + const lifecycleHooks = createHooks('trigger'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [failedRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeDefined(); + expect(payload.workflowData).toBeDefined(); + }); + + it('should write run data for waiting executions', async () => { + workflowData.settings = { saveDataSuccessExecution: 'none' }; + const lifecycleHooks = createHooks('trigger'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [waitingRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeDefined(); + expect(payload.workflowData).toBeDefined(); + }); + + it('should write run data for webhook executions', async () => { + workflowData.settings = { saveDataSuccessExecution: 'none' }; + const lifecycleHooks = createHooks('webhook'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [successfulRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeDefined(); + expect(payload.workflowData).toBeDefined(); + }); + + it('should write run data for integrated executions so the parent workflow can read it', async () => { + workflowData.settings = { saveDataSuccessExecution: 'none' }; + const lifecycleHooks = createHooks('integrated'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [successfulRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeDefined(); + expect(payload.workflowData).toBeDefined(); + }); + + it('should write run data when a workflow.postExecute external hook is registered', async () => { + workflowData.settings = { saveDataSuccessExecution: 'none' }; + externalHooks.hasHook.mockReturnValueOnce(true); + const lifecycleHooks = createHooks('trigger'); + + await lifecycleHooks.runHook('workflowExecuteAfter', [successfulRun, {}]); + + const payload = getUpdatePayload(); + expect(payload.data).toBeDefined(); + expect(payload.workflowData).toBeDefined(); + }); + }); }); describe('getLifecycleHooksForSubExecutions', () => { diff --git a/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts b/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts index 810a90d84ab..bf1ff186de5 100644 --- a/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts +++ b/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts @@ -638,6 +638,8 @@ function hookFunctionsSave( }); } +const DISCARDABLE_DATA_MODES: WorkflowExecuteMode[] = ['trigger', 'cli', 'error', 'internal']; + /** * Returns hook functions to save workflow execution and call error workflow * for running with queues. Manual executions should never run on queues as @@ -645,7 +647,7 @@ function hookFunctionsSave( */ function hookFunctionsSaveWorker( hooks: ExecutionLifecycleHooks, - { pushRef, retryOf }: HooksSetupParameters, + { pushRef, retryOf, saveSettings }: HooksSetupParameters, ) { const logger = Container.get(Logger); const errorReporter = Container.get(ErrorReporter); @@ -697,12 +699,24 @@ function hookFunctionsSaveWorker( runDataUsedDynamicCredentials(resultRunData) || runDataAttemptedDynamicCredentials(resultRunData); + const mainWillDiscardData = + process.env.N8N_SKIP_UNSAVED_EXECUTION_DATA_WRITES === 'true' && + fullRunData.status === 'success' && + !saveSettings.success && + !fullRunData.waitTill && + DISCARDABLE_DATA_MODES.includes(this.mode) && + !Container.get(ExternalHooks).hasHook('workflow.postExecute'); + + const executionData = mainWillDiscardData + ? { ...fullExecutionData, data: undefined, workflowData: undefined } + : fullExecutionData; + // In scaling mode, worker saves execution without metadata // Main process will save metadata after deletion decisions to avoid FK violations await updateExistingExecution({ executionId: this.executionId, workflowId: this.workflowData.id, - executionData: fullExecutionData, + executionData, }); } finally { workflowStatisticsService.emit('workflowExecutionCompleted', { diff --git a/packages/cli/src/executions/__tests__/execution-persistence.test.ts b/packages/cli/src/executions/__tests__/execution-persistence.test.ts index f110b65370e..0240b2d6eb6 100644 --- a/packages/cli/src/executions/__tests__/execution-persistence.test.ts +++ b/packages/cli/src/executions/__tests__/execution-persistence.test.ts @@ -1,7 +1,6 @@ /* eslint-disable id-denylist */ /* eslint-disable @typescript-eslint/unbound-method */ -import type { Logger } from '@n8n/backend-common'; import type { DatabaseConfig, ExecutionsConfig } from '@n8n/config'; import { ExecutionEntity, @@ -17,21 +16,19 @@ import { mock } from 'vitest-mock-extended'; import { DuplicateExecutionError } from '@/errors/duplicate-execution.error'; import type { EventService } from '@/events/event.service'; -import type { DbStore } from '@/executions/execution-data/db-store'; -import type { FsStore } from '@/executions/execution-data/fs-store'; -import type { ExecutionDataStore } from '@/executions/execution-data/types'; import { CorruptedExecutionDataError } from '@/executions/execution-data/corrupted-execution-data.error'; +import type { DbStore } from '@/executions/execution-data/db-store'; +import type { ExecutionDataJsonStore } from '@/executions/execution-data/execution-data-json-store'; import { MissingExecutionDataError } from '@/executions/execution-data/missing-execution-data.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; describe('ExecutionPersistence', () => { const executionRepository = mock(); const binaryDataService = mock(); - const fsStore = mock(); + const jsonStore = mock(); const dbStore = mock(); const errorReporter = mock(); const eventService = mock(); - const logger = mock(); const executionsConfig = mock({ pruneData: true, pruneDataHardDeleteBuffer: 1, @@ -83,14 +80,13 @@ describe('ExecutionPersistence', () => { new ExecutionPersistence( executionRepository, binaryDataService, - fsStore, + jsonStore, dbStore, mock({ modeTag }), executionsConfig, mock({ type: dbType }), errorReporter, eventService, - logger, ); describe('create', () => { @@ -133,7 +129,7 @@ describe('ExecutionPersistence', () => { }), mockTx, ); - expect(fsStore.write).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); }); it('persists the byte size the store reports and emits it on the write event', async () => { @@ -234,12 +230,13 @@ describe('ExecutionPersistence', () => { settings: workflowData.settings, nodeGroups: workflowData.nodeGroups, }; - expect(fsStore.write).toHaveBeenCalledWith( + expect(jsonStore.write).toHaveBeenCalledWith( { workflowId: 'workflow-123', executionId: 'exec-2' }, expect.objectContaining({ workflowData: expectedWorkflowSnapshot, workflowVersionId: 'version-abc', }), + 'fs', ); }); @@ -252,7 +249,7 @@ describe('ExecutionPersistence', () => { }); const fsWriteError = new Error('Filesystem write failed'); - fsStore.write.mockRejectedValue(fsWriteError); + jsonStore.write.mockRejectedValue(fsWriteError); executionRepository.manager.transaction = createMockTx(mockTx); @@ -387,8 +384,8 @@ describe('ExecutionPersistence', () => { const workflowId = 'wf-1'; beforeEach(() => { - fsStore.write.mockReset(); - fsStore.read.mockReset(); + jsonStore.write.mockReset(); + jsonStore.read.mockReset(); dbStore.write.mockReset(); dbStore.read.mockReset(); executionRepository.findOne.mockReset(); @@ -452,8 +449,8 @@ describe('ExecutionPersistence', () => { { retrySuccessId: 'retry-1' }, ); expect(executionRepository.findOne).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); - expect(fsStore.read).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); expect(dbStore.write).not.toHaveBeenCalled(); expect(dbStore.read).not.toHaveBeenCalled(); }); @@ -539,7 +536,7 @@ describe('ExecutionPersistence', () => { ); expect(dbStore.read).not.toHaveBeenCalled(); expect(dbStore.write).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); }); it('takes the fast path on full overwrite even when the entity has no version id', async () => { @@ -658,8 +655,8 @@ describe('ExecutionPersistence', () => { expect(result).toBe(false); expect(dbStore.read).not.toHaveBeenCalled(); expect(dbStore.write).not.toHaveBeenCalled(); - expect(fsStore.read).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); }); it('should apply conditions to the outer lookup to fail fast', async () => { @@ -705,7 +702,7 @@ describe('ExecutionPersistence', () => { ); // full overwrite goes through the fast path for fs too (a write is a full replace), // skipping the read - expect(fsStore.write).toHaveBeenCalledWith( + expect(jsonStore.write).toHaveBeenCalledWith( { workflowId, executionId }, expect.objectContaining({ data: expect.any(String) as string, @@ -720,8 +717,9 @@ describe('ExecutionPersistence', () => { // from the entity row, not the incoming workflowData.versionId workflowVersionId: 'v-entity', }), + 'fs', ); - expect(fsStore.read).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); }); it('falls back to read-merge on full overwrite when the entity has no version id, preserving the bundle value', async () => { @@ -733,7 +731,7 @@ describe('ExecutionPersistence', () => { storedAt: 'fs', workflowVersionId: null, } as unknown as Awaited>); - fsStore.read.mockResolvedValue(existingBundle); // bundle still holds the real version id + jsonStore.read.mockResolvedValue(existingBundle); // bundle still holds the real version id const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -745,30 +743,32 @@ describe('ExecutionPersistence', () => { // must read the bundle (read-merge) to recover the real version id, rather than take the // no-read fast path and clobber it with the entity's null - expect(fsStore.read).toHaveBeenCalled(); - expect(fsStore.write).toHaveBeenCalledWith( + expect(jsonStore.read).toHaveBeenCalled(); + expect(jsonStore.write).toHaveBeenCalledWith( { workflowId, executionId }, expect.objectContaining({ workflowVersionId: existingBundle.workflowVersionId }), + 'fs', ); }); it('should preserve fields not supplied in a partial payload', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); await executionPersistence.updateExistingExecution(executionId, { data: runData }); - expect(fsStore.write).toHaveBeenCalledWith( + expect(jsonStore.write).toHaveBeenCalledWith( { workflowId, executionId }, expect.objectContaining({ // partial update reads & preserves both workflowData and version id from the bundle workflowData: existingBundle.workflowData, workflowVersionId: existingBundle.workflowVersionId, }), + 'fs', ); }); @@ -792,15 +792,15 @@ describe('ExecutionPersistence', () => { { id: executionId, status: 'waiting' }, { status: 'success' }, ); - expect(fsStore.read).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); }); it('should still write the bundle when the payload contains no entity fields', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); - fsStore.write.mockResolvedValue(512); + jsonStore.read.mockResolvedValue(existingBundle); + jsonStore.write.mockResolvedValue(512); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -810,7 +810,7 @@ describe('ExecutionPersistence', () => { }); expect(result).toBe(true); - expect(fsStore.write).toHaveBeenCalled(); + expect(jsonStore.write).toHaveBeenCalled(); // No caller-supplied entity columns, so the only entity-row update is the bundle size. expect(mockTx.update).toHaveBeenCalledTimes(1); expect(mockTx.update).toHaveBeenCalledWith( @@ -836,14 +836,14 @@ describe('ExecutionPersistence', () => { expect(result).toBe(false); expect(mockTx.update).not.toHaveBeenCalled(); - expect(fsStore.read).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); }); it('should take a pessimistic row lock to re-verify conditions on the data-only path (postgres)', async () => { const executionPersistence = createPersistenceService('fs', 'postgresdb'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const mockTx = createMockTransaction(); mockTx.findOne.mockResolvedValue({ id: executionId }); @@ -865,7 +865,7 @@ describe('ExecutionPersistence', () => { it('should not take a lock on the data-only path under sqlite', async () => { const executionPersistence = createPersistenceService('fs', 'sqlite'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const mockTx = createMockTransaction(); mockTx.findOne.mockResolvedValue({ id: executionId }); @@ -886,7 +886,7 @@ describe('ExecutionPersistence', () => { it('should perform the fs write on a data-only update when conditions match', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const mockTx = createMockTransaction(); mockTx.findOne.mockResolvedValue({ id: executionId }); @@ -900,16 +900,16 @@ describe('ExecutionPersistence', () => { expect(result).toBe(true); expect(mockTx.findOne).toHaveBeenCalled(); - expect(fsStore.write).toHaveBeenCalled(); + expect(jsonStore.write).toHaveBeenCalled(); }); it('should roll the transaction back if the fs write fails', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const writeError = new Error('disk full'); - fsStore.write.mockRejectedValue(writeError); + jsonStore.write.mockRejectedValue(writeError); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -925,7 +925,7 @@ describe('ExecutionPersistence', () => { it('should throw MissingExecutionDataError when the fs bundle is missing', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(null); + jsonStore.read.mockResolvedValue(null); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -934,13 +934,13 @@ describe('ExecutionPersistence', () => { executionPersistence.updateExistingExecution(executionId, { data: runData }), ).rejects.toBeInstanceOf(MissingExecutionDataError); - expect(fsStore.write).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); }); it('should apply requireNotFinished condition', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -973,14 +973,14 @@ describe('ExecutionPersistence', () => { ); expect(result).toBe(false); - expect(fsStore.read).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); + expect(jsonStore.write).not.toHaveBeenCalled(); }); it('should apply requireNotCanceled condition', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -1001,7 +1001,7 @@ describe('ExecutionPersistence', () => { it('should strip immutable fields before updating the entity', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); + jsonStore.read.mockResolvedValue(existingBundle); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -1029,8 +1029,8 @@ describe('ExecutionPersistence', () => { it('persists the size the store reports on the read-merge path and emits it', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); - fsStore.write.mockResolvedValue(2048); + jsonStore.read.mockResolvedValue(existingBundle); + jsonStore.write.mockResolvedValue(2048); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -1116,8 +1116,8 @@ describe('ExecutionPersistence', () => { it('persists the summed offloaded binary size when data is provided', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); - fsStore.write.mockResolvedValue(2048); + jsonStore.read.mockResolvedValue(existingBundle); + jsonStore.write.mockResolvedValue(2048); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -1136,8 +1136,8 @@ describe('ExecutionPersistence', () => { it('leaves binaryDataSizeBytes untouched on a workflowData-only update', async () => { const executionPersistence = createPersistenceService('fs'); mockEntity('fs'); - fsStore.read.mockResolvedValue(existingBundle); - fsStore.write.mockResolvedValue(512); + jsonStore.read.mockResolvedValue(existingBundle); + jsonStore.write.mockResolvedValue(512); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -1192,7 +1192,7 @@ describe('ExecutionPersistence', () => { executionRepository.findSingleExecution.mockReset(); executionRepository.reportInvalidExecutions.mockReset(); dbStore.read.mockReset(); - fsStore.read.mockReset(); + jsonStore.read.mockReset(); }); it('should delegate to the repository when includeData is not set', async () => { @@ -1205,7 +1205,7 @@ describe('ExecutionPersistence', () => { expect(executionRepository.findSingleExecution).toHaveBeenCalledWith(executionId, undefined); expect(executionRepository.findOne).not.toHaveBeenCalled(); expect(dbStore.read).not.toHaveBeenCalled(); - expect(fsStore.read).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); }); it('should load entity without the executionData JOIN and read data from DbStore for db-mode', async () => { @@ -1222,7 +1222,7 @@ describe('ExecutionPersistence', () => { relations: { metadata: true }, }); expect(dbStore.read).toHaveBeenCalledWith({ workflowId, executionId }); - expect(fsStore.read).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); expect(result).toMatchObject({ id: executionId, workflowId, @@ -1234,16 +1234,16 @@ describe('ExecutionPersistence', () => { }); }); - it('should read data from FsStore for fs-mode', async () => { + it('should read data from the fs location for fs-mode', async () => { const executionPersistence = createPersistenceService('fs'); executionRepository.findOne.mockResolvedValue(mockEntity('fs')); - fsStore.read.mockResolvedValue(bundle); + jsonStore.read.mockResolvedValue(bundle); const result = await executionPersistence.findSingleExecution(executionId, { includeData: true, }); - expect(fsStore.read).toHaveBeenCalledWith({ workflowId, executionId }); + expect(jsonStore.read).toHaveBeenCalledWith({ workflowId, executionId }, 'fs'); expect(dbStore.read).not.toHaveBeenCalled(); expect(result).toMatchObject({ data: bundle.data, @@ -1291,7 +1291,7 @@ describe('ExecutionPersistence', () => { expect(result).toBeUndefined(); expect(dbStore.read).not.toHaveBeenCalled(); - expect(fsStore.read).not.toHaveBeenCalled(); + expect(jsonStore.read).not.toHaveBeenCalled(); }); it('should report invalid and return undefined when db bundle is missing', async () => { @@ -1311,7 +1311,7 @@ describe('ExecutionPersistence', () => { it('should throw when fs bundle is missing', async () => { const executionPersistence = createPersistenceService('fs'); executionRepository.findOne.mockResolvedValue(mockEntity('fs')); - fsStore.read.mockResolvedValue(null); + jsonStore.read.mockResolvedValue(null); await expect( executionPersistence.findSingleExecution(executionId, { includeData: true }), @@ -1362,7 +1362,7 @@ describe('ExecutionPersistence', () => { executionRepository.findMultipleExecutions.mockReset(); executionRepository.reportInvalidExecutions.mockReset(); dbStore.readMany.mockReset(); - fsStore.readMany.mockReset(); + jsonStore.readMany.mockReset(); }); it('should delegate to the repository when includeData is not set', async () => { @@ -1399,7 +1399,7 @@ describe('ExecutionPersistence', () => { { workflowId: wf, executionId: 'a' }, { workflowId: wf, executionId: 'b' }, ]); - expect(fsStore.readMany).not.toHaveBeenCalled(); + expect(jsonStore.readMany).not.toHaveBeenCalled(); expect(result).toHaveLength(2); }); @@ -1416,7 +1416,7 @@ describe('ExecutionPersistence', () => { ['c', makeBundle('c')], ]), ); - fsStore.readMany.mockResolvedValue(new Map([['b', makeBundle('b')]])); + jsonStore.readMany.mockResolvedValue(new Map([['b', makeBundle('b')]])); const result = await executionPersistence.findMultipleExecutions({}, { includeData: true }); @@ -1424,7 +1424,9 @@ describe('ExecutionPersistence', () => { { workflowId: wf, executionId: 'a' }, { workflowId: wf, executionId: 'c' }, ]); - expect(fsStore.readMany).toHaveBeenCalledWith([{ workflowId: wf, executionId: 'b' }]); + expect(jsonStore.readMany).toHaveBeenCalledWith([ + { workflowId: wf, executionId: 'b', storedAt: 'fs' }, + ]); expect(result.map((e) => e.id)).toEqual(['a', 'b', 'c']); }); @@ -1435,7 +1437,7 @@ describe('ExecutionPersistence', () => { const fsC = makeEntity('c', 'fs'); // missing executionRepository.find.mockResolvedValue([dbA, dbB, fsC]); dbStore.readMany.mockResolvedValue(new Map([['a', makeBundle('a')]])); - fsStore.readMany.mockResolvedValue(new Map()); + jsonStore.readMany.mockResolvedValue(new Map()); const result = await executionPersistence.findMultipleExecutions({}, { includeData: true }); @@ -1566,7 +1568,7 @@ describe('ExecutionPersistence', () => { expect(result).toEqual([]); expect(dbStore.readMany).not.toHaveBeenCalled(); - expect(fsStore.readMany).not.toHaveBeenCalled(); + expect(jsonStore.readMany).not.toHaveBeenCalled(); }); }); @@ -1608,8 +1610,6 @@ describe('ExecutionPersistence', () => { it('should read data from the matching store when data is requested', async () => { const executionPersistence = createPersistenceService('db'); - const s3Store = mock(); - executionPersistence.setS3Store(s3Store); const entity = { id: 'exec-1', @@ -1619,7 +1619,7 @@ describe('ExecutionPersistence', () => { status: 'success', } as unknown as ExecutionEntity; executionRepository.find.mockResolvedValue([entity]); - s3Store.readMany.mockResolvedValue( + jsonStore.readMany.mockResolvedValue( new Map([ [ 'exec-1', @@ -1638,7 +1638,9 @@ describe('ExecutionPersistence', () => { includeData: true, }); - expect(s3Store.readMany).toHaveBeenCalledWith([{ workflowId: wf, executionId: 'exec-1' }]); + expect(jsonStore.readMany).toHaveBeenCalledWith([ + { workflowId: wf, executionId: 'exec-1', storedAt: 's3' }, + ]); expect(result).toHaveLength(1); expect(result[0].id).toBe('exec-1'); }); @@ -1648,24 +1650,24 @@ describe('ExecutionPersistence', () => { const executionPersistence = createPersistenceService('db'); const baseTarget = { workflowId: 'wf-1', executionId: 'exec-1' }; - it('should delete execution, binary data, and fs data when storedAt is fs', async () => { + it('should delete execution, binary data, and blob data when storedAt is fs', async () => { const target = { ...baseTarget, storedAt: 'fs' as const }; await executionPersistence.hardDelete(target); expect(executionRepository.deleteByIds).toHaveBeenCalledWith(['exec-1']); expect(binaryDataService.deleteMany).toHaveBeenCalledWith([{ type: 'execution', ...target }]); - expect(fsStore.delete).toHaveBeenCalledWith([target]); + expect(jsonStore.delete).toHaveBeenCalledWith([target]); }); - it('should delete execution and binary data but not fs data when storedAt is db', async () => { + it('should delete execution and binary data but no blob data when storedAt is db', async () => { const target = { ...baseTarget, storedAt: 'db' as const }; await executionPersistence.hardDelete(target); expect(executionRepository.deleteByIds).toHaveBeenCalledWith(['exec-1']); expect(binaryDataService.deleteMany).toHaveBeenCalledWith([{ type: 'execution', ...target }]); - expect(fsStore.delete).not.toHaveBeenCalled(); + expect(jsonStore.delete).toHaveBeenCalledWith([]); }); it('should handle array of targets', async () => { @@ -1681,7 +1683,7 @@ describe('ExecutionPersistence', () => { { type: 'execution', ...targets[0] }, { type: 'execution', ...targets[1] }, ]); - expect(fsStore.delete).toHaveBeenCalledWith([targets[0]]); + expect(jsonStore.delete).toHaveBeenCalledWith([targets[0]]); }); it('should skip all operations when given empty array', async () => { @@ -1689,68 +1691,20 @@ describe('ExecutionPersistence', () => { expect(executionRepository.deleteByIds).not.toHaveBeenCalled(); expect(binaryDataService.deleteMany).not.toHaveBeenCalled(); - expect(fsStore.delete).not.toHaveBeenCalled(); + expect(jsonStore.delete).not.toHaveBeenCalled(); }); - it('should delete execution, binary data, and s3 data when storedAt is s3', async () => { - const s3Store = mock(); - executionPersistence.setS3Store(s3Store); + it('should delete execution, binary data, and blob data when storedAt is s3', async () => { const target = { ...baseTarget, storedAt: 's3' as const }; await executionPersistence.hardDelete(target); expect(executionRepository.deleteByIds).toHaveBeenCalledWith(['exec-1']); expect(binaryDataService.deleteMany).toHaveBeenCalledWith([{ type: 'execution', ...target }]); - expect(s3Store.delete).toHaveBeenCalledWith([target]); - expect(fsStore.delete).not.toHaveBeenCalled(); + expect(jsonStore.delete).toHaveBeenCalledWith([target]); }); - it('should route mixed targets to their respective stores', async () => { - const s3Store = mock(); - executionPersistence.setS3Store(s3Store); - const targets = [ - { workflowId: 'wf-1', executionId: 'exec-1', storedAt: 'fs' as const }, - { workflowId: 'wf-2', executionId: 'exec-2', storedAt: 's3' as const }, - { workflowId: 'wf-3', executionId: 'exec-3', storedAt: 'db' as const }, - ]; - - await executionPersistence.hardDelete(targets); - - expect(executionRepository.deleteByIds).toHaveBeenCalledWith(['exec-1', 'exec-2', 'exec-3']); - expect(fsStore.delete).toHaveBeenCalledWith([targets[0]]); - expect(s3Store.delete).toHaveBeenCalledWith([targets[1]]); - }); - - it('should warn and still delete entities when s3 data exists but no s3 store is set', async () => { - const executionPersistenceWithoutS3 = createPersistenceService('db'); - const target = { ...baseTarget, storedAt: 's3' as const }; - - await executionPersistenceWithoutS3.hardDelete(target); - - expect(executionRepository.deleteByIds).toHaveBeenCalledWith(['exec-1']); - expect(logger.warn).toHaveBeenCalledWith(expect.any(String), { - executionIds: ['exec-1'], - }); - }); - - it('should delete execution, binary data, and az data when storedAt is az', async () => { - const azStore = mock(); - executionPersistence.setAzStore(azStore); - const target = { ...baseTarget, storedAt: 'az' as const }; - - await executionPersistence.hardDelete(target); - - expect(executionRepository.deleteByIds).toHaveBeenCalledWith(['exec-1']); - expect(binaryDataService.deleteMany).toHaveBeenCalledWith([{ type: 'execution', ...target }]); - expect(azStore.delete).toHaveBeenCalledWith([target]); - expect(fsStore.delete).not.toHaveBeenCalled(); - }); - - it('should route mixed targets including az to their respective stores', async () => { - const s3Store = mock(); - const azStore = mock(); - executionPersistence.setS3Store(s3Store); - executionPersistence.setAzStore(azStore); + it('should pass all blob-stored targets to the store, excluding db', async () => { const targets = [ { workflowId: 'wf-1', executionId: 'exec-1', storedAt: 'fs' as const }, { workflowId: 'wf-2', executionId: 'exec-2', storedAt: 's3' as const }, @@ -1760,21 +1714,13 @@ describe('ExecutionPersistence', () => { await executionPersistence.hardDelete(targets); - expect(fsStore.delete).toHaveBeenCalledWith([targets[0]]); - expect(s3Store.delete).toHaveBeenCalledWith([targets[1]]); - expect(azStore.delete).toHaveBeenCalledWith([targets[2]]); - }); - - it('should warn and still delete entities when az data exists but no az store is set', async () => { - const executionPersistenceWithoutAz = createPersistenceService('db'); - const target = { ...baseTarget, storedAt: 'az' as const }; - - await executionPersistenceWithoutAz.hardDelete(target); - - expect(executionRepository.deleteByIds).toHaveBeenCalledWith(['exec-1']); - expect(logger.warn).toHaveBeenCalledWith(expect.any(String), { - executionIds: ['exec-1'], - }); + expect(executionRepository.deleteByIds).toHaveBeenCalledWith([ + 'exec-1', + 'exec-2', + 'exec-3', + 'exec-4', + ]); + expect(jsonStore.delete).toHaveBeenCalledWith([targets[0], targets[1], targets[2]]); }); }); @@ -1786,51 +1732,7 @@ describe('ExecutionPersistence', () => { deleteConditions: { ids: ['1'] }, }; - it('should delete fs and s3 data per the refs returned by the repository', async () => { - const s3Store = mock(); - executionPersistence.setS3Store(s3Store); - const refs = [ - { workflowId: 'wf-1', executionId: 'exec-1', storedAt: 'fs' as const }, - { workflowId: 'wf-2', executionId: 'exec-2', storedAt: 's3' as const }, - { workflowId: 'wf-3', executionId: 'exec-3', storedAt: 'db' as const }, - ]; - executionRepository.deleteExecutionsByFilter.mockResolvedValue(refs); - - await executionPersistence.hardDeleteBy(criteria); - - expect(executionRepository.deleteExecutionsByFilter).toHaveBeenCalledWith(criteria); - expect(fsStore.delete).toHaveBeenCalledWith([refs[0]]); - expect(s3Store.delete).toHaveBeenCalledWith([refs[1]]); - }); - - it('should not call any store when no refs are returned', async () => { - const s3Store = mock(); - executionPersistence.setS3Store(s3Store); - executionRepository.deleteExecutionsByFilter.mockResolvedValue([]); - - await executionPersistence.hardDeleteBy(criteria); - - expect(fsStore.delete).not.toHaveBeenCalled(); - expect(s3Store.delete).not.toHaveBeenCalled(); - }); - - it('should warn and skip s3 data deletion when no s3 store is set', async () => { - const executionPersistenceWithoutS3 = createPersistenceService('db'); - const refs = [{ workflowId: 'wf-1', executionId: 'exec-1', storedAt: 's3' as const }]; - executionRepository.deleteExecutionsByFilter.mockResolvedValue(refs); - - await expect(executionPersistenceWithoutS3.hardDeleteBy(criteria)).resolves.not.toThrow(); - - expect(logger.warn).toHaveBeenCalledWith(expect.any(String), { - executionIds: ['exec-1'], - }); - }); - - it('should delete fs, s3, and az data per the refs returned by the repository', async () => { - const s3Store = mock(); - const azStore = mock(); - executionPersistence.setS3Store(s3Store); - executionPersistence.setAzStore(azStore); + it('should delete blob data per the refs returned by the repository, excluding db', async () => { const refs = [ { workflowId: 'wf-1', executionId: 'exec-1', storedAt: 'fs' as const }, { workflowId: 'wf-2', executionId: 'exec-2', storedAt: 's3' as const }, @@ -1841,21 +1743,16 @@ describe('ExecutionPersistence', () => { await executionPersistence.hardDeleteBy(criteria); - expect(fsStore.delete).toHaveBeenCalledWith([refs[0]]); - expect(s3Store.delete).toHaveBeenCalledWith([refs[1]]); - expect(azStore.delete).toHaveBeenCalledWith([refs[2]]); + expect(executionRepository.deleteExecutionsByFilter).toHaveBeenCalledWith(criteria); + expect(jsonStore.delete).toHaveBeenCalledWith([refs[0], refs[1], refs[2]]); }); - it('should warn and skip az data deletion when no az store is set', async () => { - const executionPersistenceWithoutAz = createPersistenceService('db'); - const refs = [{ workflowId: 'wf-1', executionId: 'exec-1', storedAt: 'az' as const }]; - executionRepository.deleteExecutionsByFilter.mockResolvedValue(refs); + it('should delete no blob data when no refs are returned', async () => { + executionRepository.deleteExecutionsByFilter.mockResolvedValue([]); - await expect(executionPersistenceWithoutAz.hardDeleteBy(criteria)).resolves.not.toThrow(); + await executionPersistence.hardDeleteBy(criteria); - expect(logger.warn).toHaveBeenCalledWith(expect.any(String), { - executionIds: ['exec-1'], - }); + expect(jsonStore.delete).toHaveBeenCalledWith([]); }); }); @@ -2035,7 +1932,7 @@ describe('ExecutionPersistence', () => { it('emits a failed read with one unreadable bundle when the store read reports corruption', async () => { const executionPersistence = createPersistenceService('fs'); executionRepository.findOne.mockResolvedValue(entity('fs')); - fsStore.read.mockRejectedValueOnce( + jsonStore.read.mockRejectedValueOnce( new CorruptedExecutionDataError( { workflowId: 'wf-1', executionId: 'exec-1' }, new Error('x'), @@ -2164,8 +2061,10 @@ describe('ExecutionPersistence', () => { }); }); + // s3 stands in for all external blob locations: ExecutionPersistence routes the location + // string opaquely to the JSON store, so s3 and az exercise the same code path here. describe('s3 mode', () => { - const s3Store = mock(); + const loc = 's3' as const; const createPayload: CreateExecutionPayload = { data: runData, @@ -2183,26 +2082,18 @@ describe('ExecutionPersistence', () => { version: 1 as const, }; - const s3Entity = (id = 'exec-1') => + const blobEntity = (id = 'exec-1') => ({ id, workflowId: 'wf-1', - storedAt: 's3', + storedAt: loc, metadata: [], annotation: undefined, status: 'success', }) as unknown as ExecutionEntity; - it('throws when an execution routes to s3 but no S3 store is registered', async () => { - const executionPersistence = createPersistenceService('s3'); - executionRepository.manager.transaction = createMockTx(createMockTransaction()); - - await expect(executionPersistence.create(createPayload)).rejects.toThrow(UnexpectedError); - }); - - it('writes via the registered S3 store on create with `storedAt: s3`', async () => { - const executionPersistence = createPersistenceService('s3'); - executionPersistence.setS3Store(s3Store); + it(`writes to the ${loc} location on create with \`storedAt: ${loc}\``, async () => { + const executionPersistence = createPersistenceService(loc); const mockTx = createMockTransaction(); executionRepository.manager.transaction = createMockTx(mockTx); @@ -2211,38 +2102,38 @@ describe('ExecutionPersistence', () => { expect(executionId).toBe('exec-1'); expect(mockTx.insert).toHaveBeenCalledWith( ExecutionEntity, - expect.objectContaining({ storedAt: 's3' }), + expect.objectContaining({ storedAt: loc }), ); - expect(s3Store.write).toHaveBeenCalledWith( + expect(jsonStore.write).toHaveBeenCalledWith( { workflowId: 'workflow-123', executionId: 'exec-1' }, expect.objectContaining({ workflowVersionId: 'version-abc' }), + loc, ); expect(dbStore.write).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); }); - it('reads via the registered S3 store on findSingleExecution', async () => { - const executionPersistence = createPersistenceService('s3'); - executionPersistence.setS3Store(s3Store); - executionRepository.findOne.mockResolvedValue(s3Entity()); - s3Store.read.mockResolvedValue(bundle); + it(`reads from the ${loc} location on findSingleExecution`, async () => { + const executionPersistence = createPersistenceService(loc); + executionRepository.findOne.mockResolvedValue(blobEntity()); + jsonStore.read.mockResolvedValue(bundle); const result = await executionPersistence.findSingleExecution('exec-1', { includeData: true, }); - expect(s3Store.read).toHaveBeenCalledWith({ workflowId: 'wf-1', executionId: 'exec-1' }); + expect(jsonStore.read).toHaveBeenCalledWith( + { workflowId: 'wf-1', executionId: 'exec-1' }, + loc, + ); expect(result).toMatchObject({ data: bundle.data, workflowData: bundle.workflowData }); expect(dbStore.read).not.toHaveBeenCalled(); - expect(fsStore.read).not.toHaveBeenCalled(); }); - it('hard-fails a missing s3 bundle like fs (throw), unlike db (report + undefined)', async () => { - const executionPersistence = createPersistenceService('s3'); - executionPersistence.setS3Store(s3Store); - const entity = s3Entity(); + it(`hard-fails a missing ${loc} bundle like fs (throw), unlike db (report + undefined)`, async () => { + const executionPersistence = createPersistenceService(loc); + const entity = blobEntity(); executionRepository.findOne.mockResolvedValue(entity); - s3Store.read.mockResolvedValue(null); + jsonStore.read.mockResolvedValue(null); await expect( executionPersistence.findSingleExecution('exec-1', { includeData: true }), @@ -2250,11 +2141,10 @@ describe('ExecutionPersistence', () => { expect(executionRepository.reportInvalidExecutions).not.toHaveBeenCalled(); }); - it('partitions a multi-read to the S3 store', async () => { - const executionPersistence = createPersistenceService('s3'); - executionPersistence.setS3Store(s3Store); - executionRepository.find.mockResolvedValue([s3Entity('a'), s3Entity('b')]); - s3Store.readMany.mockResolvedValue( + it(`partitions a multi-read to the ${loc} location`, async () => { + const executionPersistence = createPersistenceService(loc); + executionRepository.find.mockResolvedValue([blobEntity('a'), blobEntity('b')]); + jsonStore.readMany.mockResolvedValue( new Map([ ['a', bundle], ['b', bundle], @@ -2263,122 +2153,12 @@ describe('ExecutionPersistence', () => { const result = await executionPersistence.findMultipleExecutions({}, { includeData: true }); - expect(s3Store.readMany).toHaveBeenCalledWith([ - { workflowId: 'wf-1', executionId: 'a' }, - { workflowId: 'wf-1', executionId: 'b' }, + expect(jsonStore.readMany).toHaveBeenCalledWith([ + { workflowId: 'wf-1', executionId: 'a', storedAt: loc }, + { workflowId: 'wf-1', executionId: 'b', storedAt: loc }, ]); expect(result).toHaveLength(2); expect(dbStore.readMany).not.toHaveBeenCalled(); - expect(fsStore.readMany).not.toHaveBeenCalled(); - }); - }); - - describe('azure mode', () => { - const azStore = mock(); - - const createPayload: CreateExecutionPayload = { - data: runData, - workflowData, - mode: 'manual', - finished: false, - status: 'new', - workflowId: 'workflow-123', - }; - - const bundle = { - data: '[{"resultData":"1"},{}]', - workflowData: { id: 'wf-1', name: 's', nodes: [], connections: {}, settings: undefined }, - workflowVersionId: 'v-1', - version: 1 as const, - }; - - const azEntity = (id = 'exec-1') => - ({ - id, - workflowId: 'wf-1', - storedAt: 'az', - metadata: [], - annotation: undefined, - status: 'success', - }) as unknown as ExecutionEntity; - - it('throws when an execution routes to az but no Azure store is registered', async () => { - const executionPersistence = createPersistenceService('az'); - executionRepository.manager.transaction = createMockTx(createMockTransaction()); - - await expect(executionPersistence.create(createPayload)).rejects.toThrow(UnexpectedError); - }); - - it('writes via the registered Azure store on create with `storedAt: az`', async () => { - const executionPersistence = createPersistenceService('az'); - executionPersistence.setAzStore(azStore); - const mockTx = createMockTransaction(); - executionRepository.manager.transaction = createMockTx(mockTx); - - const executionId = await executionPersistence.create(createPayload); - - expect(executionId).toBe('exec-1'); - expect(mockTx.insert).toHaveBeenCalledWith( - ExecutionEntity, - expect.objectContaining({ storedAt: 'az' }), - ); - expect(azStore.write).toHaveBeenCalledWith( - { workflowId: 'workflow-123', executionId: 'exec-1' }, - expect.objectContaining({ workflowVersionId: 'version-abc' }), - ); - expect(dbStore.write).not.toHaveBeenCalled(); - expect(fsStore.write).not.toHaveBeenCalled(); - }); - - it('reads via the registered Azure store on findSingleExecution', async () => { - const executionPersistence = createPersistenceService('az'); - executionPersistence.setAzStore(azStore); - executionRepository.findOne.mockResolvedValue(azEntity()); - azStore.read.mockResolvedValue(bundle); - - const result = await executionPersistence.findSingleExecution('exec-1', { - includeData: true, - }); - - expect(azStore.read).toHaveBeenCalledWith({ workflowId: 'wf-1', executionId: 'exec-1' }); - expect(result).toMatchObject({ data: bundle.data, workflowData: bundle.workflowData }); - expect(dbStore.read).not.toHaveBeenCalled(); - expect(fsStore.read).not.toHaveBeenCalled(); - }); - - it('hard-fails a missing az bundle like fs (throw), unlike db (report + undefined)', async () => { - const executionPersistence = createPersistenceService('az'); - executionPersistence.setAzStore(azStore); - const entity = azEntity(); - executionRepository.findOne.mockResolvedValue(entity); - azStore.read.mockResolvedValue(null); - - await expect( - executionPersistence.findSingleExecution('exec-1', { includeData: true }), - ).rejects.toBeInstanceOf(MissingExecutionDataError); - expect(executionRepository.reportInvalidExecutions).not.toHaveBeenCalled(); - }); - - it('partitions a multi-read to the Azure store', async () => { - const executionPersistence = createPersistenceService('az'); - executionPersistence.setAzStore(azStore); - executionRepository.find.mockResolvedValue([azEntity('a'), azEntity('b')]); - azStore.readMany.mockResolvedValue( - new Map([ - ['a', bundle], - ['b', bundle], - ]), - ); - - const result = await executionPersistence.findMultipleExecutions({}, { includeData: true }); - - expect(azStore.readMany).toHaveBeenCalledWith([ - { workflowId: 'wf-1', executionId: 'a' }, - { workflowId: 'wf-1', executionId: 'b' }, - ]); - expect(result).toHaveLength(2); - expect(dbStore.readMany).not.toHaveBeenCalled(); - expect(fsStore.readMany).not.toHaveBeenCalled(); }); }); }); diff --git a/packages/cli/src/executions/__tests__/execution.service.test.ts b/packages/cli/src/executions/__tests__/execution.service.test.ts index f3097f0f44b..b73f76dd66d 100644 --- a/packages/cli/src/executions/__tests__/execution.service.test.ts +++ b/packages/cli/src/executions/__tests__/execution.service.test.ts @@ -59,7 +59,6 @@ describe('ExecutionService', () => { mock(), mock(), mock(), - mock(), executionRedactionServiceProxy, executionStopService, ); @@ -194,7 +193,6 @@ describe('ExecutionService', () => { mock(), mock(), mock(), - mock(), localExecutionRedactionProxy, executionStopService, ); @@ -279,7 +277,6 @@ describe('ExecutionService', () => { mock(), mock(), mock(), - mock(), redactionProxy, mock(), ); diff --git a/packages/cli/src/executions/execution-data/__tests__/azure-store.ee.test.ts b/packages/cli/src/executions/execution-data/__tests__/azure-store.ee.test.ts deleted file mode 100644 index aed8fffe251..00000000000 --- a/packages/cli/src/executions/execution-data/__tests__/azure-store.ee.test.ts +++ /dev/null @@ -1,176 +0,0 @@ -/* eslint-disable n8n-local-rules/no-uncaught-json-parse */ -/* eslint-disable @typescript-eslint/unbound-method */ - -import { mock } from 'vitest-mock-extended'; -import type { ErrorReporter } from 'n8n-core'; -import type { AzureBlobService } from 'n8n-core/dist/binary-data/azure-blob/azure-blob.service.ee'; -import type { Readable } from 'node:stream'; - -import { AzureStore } from '../azure-store.ee'; -import { CorruptedExecutionDataError } from '../corrupted-execution-data.error'; -import { ExecutionDataWriteError } from '../execution-data-write.error'; -import { createExecutionRef } from '../types'; -import { executionId, payload, ref, workflowId } from './mocks'; - -const keyFor = (execId: string) => - `workflows/${workflowId}/executions/${execId}/execution_data/bundle.json`; - -/** An Azure SDK error as surfaced by `AzureBlobService` (wrapped, original on `cause`). */ -const wrappedAzureError = (cause: unknown) => - new Error('Request to Azure Blob storage failed', { cause }); - -const blobNotFound = () => - wrappedAzureError(Object.assign(new Error('missing'), { code: 'BlobNotFound', statusCode: 404 })); - -const bundle = { ...payload, version: 1 as const }; - -const bufferResult = (text: string) => Buffer.from(text) as unknown as Readable; - -describe('AzureStore', () => { - let azureBlob: ReturnType>; - let errorReporter: ReturnType>; - let azureStore: AzureStore; - - beforeEach(() => { - azureBlob = mock(); - errorReporter = mock(); - azureStore = new AzureStore(azureBlob, errorReporter); - }); - - describe('write', () => { - it('should upload the versioned bundle as JSON at the execution key', async () => { - await azureStore.write(ref, payload); - - expect(azureBlob.put).toHaveBeenCalledTimes(1); - const [key, body, metadata] = azureBlob.put.mock.calls[0]; - expect(key).toBe(keyFor(executionId)); - expect(JSON.parse(body.toString('utf-8'))).toMatchObject(bundle); - expect(metadata).toEqual({ mimeType: 'application/json' }); - }); - - it('should wrap a put failure in `ExecutionDataWriteError`', async () => { - azureBlob.put.mockRejectedValueOnce(new Error('access denied')); - - await expect(azureStore.write(ref, payload)).rejects.toThrow(ExecutionDataWriteError); - }); - }); - - describe('read', () => { - it('should retrieve and parse the stored bundle', async () => { - azureBlob.get.mockResolvedValueOnce(bufferResult(JSON.stringify(bundle))); - - const result = await azureStore.read(ref); - - expect(result).toEqual(bundle); - expect(azureBlob.get).toHaveBeenCalledWith(keyFor(executionId), { mode: 'buffer' }); - }); - - it('should return `null` when the blob is missing (BlobNotFound)', async () => { - azureBlob.get.mockRejectedValueOnce(blobNotFound()); - - expect(await azureStore.read(ref)).toBeNull(); - }); - - it('should not treat a missing container (ContainerNotFound) as a missing blob', async () => { - // ContainerNotFound is also HTTP 404, but is an infra/config problem that must surface. - const containerNotFound = wrappedAzureError( - Object.assign(new Error('no container'), { - code: 'ContainerNotFound', - statusCode: 404, - }), - ); - azureBlob.get.mockRejectedValueOnce(containerNotFound); - - await expect(azureStore.read(ref)).rejects.toBe(containerNotFound); - }); - - it('should throw `CorruptedExecutionDataError` for non-parseable content', async () => { - azureBlob.get.mockResolvedValueOnce(bufferResult('invalid json{{{')); - - await expect(azureStore.read(ref)).rejects.toThrow(CorruptedExecutionDataError); - }); - - it('should rethrow a systemic error (not a missing blob)', async () => { - const throttled = wrappedAzureError( - Object.assign(new Error('slow down'), { code: 'ServerBusy' }), - ); - azureBlob.get.mockRejectedValueOnce(throttled); - - await expect(azureStore.read(ref)).rejects.toBe(throttled); - }); - }); - - describe('readMany', () => { - it('should return a map keyed by executionId, omitting missing blobs', async () => { - const present = createExecutionRef(workflowId, 'exec-1'); - const missing = createExecutionRef(workflowId, 'exec-2'); - azureBlob.get - .mockResolvedValueOnce(bufferResult(JSON.stringify(bundle))) - .mockRejectedValueOnce(blobNotFound()); - - const bundles = await azureStore.readMany([present, missing]); - - expect(bundles.size).toBe(1); - expect(bundles.get('exec-1')).toEqual(bundle); - expect(bundles.has('exec-2')).toBe(false); - }); - - it('should report and drop a corrupted bundle instead of rejecting the whole read', async () => { - const good = createExecutionRef(workflowId, 'good'); - const bad = createExecutionRef(workflowId, 'bad'); - azureBlob.get - .mockResolvedValueOnce(bufferResult(JSON.stringify(bundle))) - .mockResolvedValueOnce(bufferResult('invalid json{{{')); - - const bundles = await azureStore.readMany([good, bad]); - - expect(bundles.has('good')).toBe(true); - expect(bundles.has('bad')).toBe(false); - expect(errorReporter.error).toHaveBeenCalledWith(expect.any(CorruptedExecutionDataError)); - }); - - it('should rethrow a systemic read error instead of swallowing it', async () => { - const target = createExecutionRef(workflowId, 'exec-1'); - const throttled = wrappedAzureError( - Object.assign(new Error('slow down'), { code: 'ServerBusy' }), - ); - azureBlob.get.mockRejectedValueOnce(throttled); - - await expect(azureStore.readMany([target])).rejects.toBe(throttled); - expect(errorReporter.error).not.toHaveBeenCalled(); - }); - - it('should return an empty map for an empty array', async () => { - const bundles = await azureStore.readMany([]); - - expect(bundles.size).toBe(0); - expect(azureBlob.get).not.toHaveBeenCalled(); - }); - }); - - describe('delete', () => { - it('should delete the blob at the execution key for a single ref', async () => { - await azureStore.delete(ref); - - expect(azureBlob.delete).toHaveBeenCalledTimes(1); - expect(azureBlob.delete).toHaveBeenCalledWith(keyFor(executionId)); - }); - - it('should delete the blob for each ref in an array', async () => { - const first = createExecutionRef(workflowId, 'exec-1'); - const second = createExecutionRef(workflowId, 'exec-2'); - - await azureStore.delete([first, second]); - - expect(azureBlob.delete).toHaveBeenCalledTimes(2); - expect(azureBlob.delete).toHaveBeenCalledWith(keyFor('exec-1')); - expect(azureBlob.delete).toHaveBeenCalledWith(keyFor('exec-2')); - }); - - it('should be a no-op for an empty array', async () => { - await azureStore.delete([]); - - expect(azureBlob.delete).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/packages/cli/src/executions/execution-data/__tests__/execution-data-json-store.test.ts b/packages/cli/src/executions/execution-data/__tests__/execution-data-json-store.test.ts new file mode 100644 index 00000000000..1fcffa84772 --- /dev/null +++ b/packages/cli/src/executions/execution-data/__tests__/execution-data-json-store.test.ts @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/unbound-method */ +/* eslint-disable n8n-local-rules/no-uncaught-json-parse */ + +import type { ErrorReporter } from 'n8n-core'; +import { mock } from 'vitest-mock-extended'; + +import type { FsByteStore } from '@/blob-storage/fs-byte-store'; + +import { CorruptedExecutionDataError } from '../corrupted-execution-data.error'; +import { ExecutionDataJsonStore } from '../execution-data-json-store'; +import { ExecutionDataWriteError } from '../execution-data-write.error'; +import { createExecutionRef } from '../types'; +import { executionId, payload, ref, workflowId } from './mocks'; + +let fsByteStore: ReturnType>; +let errorReporter: ReturnType>; +let store: ExecutionDataJsonStore; + +beforeEach(() => { + fsByteStore = mock(); + errorReporter = mock(); + store = new ExecutionDataJsonStore(fsByteStore, errorReporter); +}); + +it('should serve `fs` out of the box, and `s3`/`az` only once registered at startup', () => { + expect(store.hasLocation('fs')).toBe(true); + expect(store.hasLocation('s3')).toBe(false); + expect(store.hasLocation('az')).toBe(false); +}); + +it('should write the version-1 bundle at the stable execution-data key', async () => { + await store.write(ref, payload, 'fs'); + expect(fsByteStore.write).toHaveBeenCalledWith( + `workflows/${workflowId}/executions/${executionId}/execution_data/bundle.json`, + expect.any(Buffer), + 'application/json', + ); + const [_, body] = fsByteStore.write.mock.calls[0]; + expect(JSON.parse(body.toString('utf-8'))).toEqual({ ...payload, version: 1 }); +}); + +it('should wrap a write failure in `ExecutionDataWriteError`', async () => { + fsByteStore.write.mockRejectedValueOnce(new Error('access denied')); + await expect(store.write(ref, payload, 'fs')).rejects.toThrow(ExecutionDataWriteError); +}); + +it('should surface a corrupted bundle as `CorruptedExecutionDataError`', async () => { + fsByteStore.read.mockResolvedValueOnce(Buffer.from('invalid json{{{', 'utf-8')); + await expect(store.read(ref, 'fs')).rejects.toThrow(CorruptedExecutionDataError); +}); + +it('should report corrupted bundles from a batch read to the error reporter', async () => { + const good = createExecutionRef(workflowId, 'good'); + const bad = createExecutionRef(workflowId, 'bad'); + fsByteStore.read + .mockResolvedValueOnce(Buffer.from(JSON.stringify({ ...payload, version: 1 }), 'utf-8')) + .mockResolvedValueOnce(Buffer.from('invalid json{{{', 'utf-8')); + + const bundles = await store.readMany([ + { ...good, storedAt: 'fs' }, + { ...bad, storedAt: 'fs' }, + ]); + + expect(bundles.has('good')).toBe(true); + expect(bundles.has('bad')).toBe(false); + expect(errorReporter.error).toHaveBeenCalledWith(expect.any(CorruptedExecutionDataError)); +}); diff --git a/packages/cli/src/executions/execution-data/__tests__/fs-store.integration.test.ts b/packages/cli/src/executions/execution-data/__tests__/fs-store.integration.test.ts deleted file mode 100644 index 6ad557f15c3..00000000000 --- a/packages/cli/src/executions/execution-data/__tests__/fs-store.integration.test.ts +++ /dev/null @@ -1,276 +0,0 @@ -/* eslint-disable @typescript-eslint/unbound-method */ - -import { mockInstance } from '@n8n/backend-test-utils'; -import { Container } from '@n8n/di'; -import { ErrorReporter, StorageConfig } from 'n8n-core'; -import { jsonParse } from 'n8n-workflow'; -import fs, { mkdtemp, rm } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; -import { mock } from 'vitest-mock-extended'; - -import { EXECUTION_DATA_BUNDLE_FILENAME } from '../constants'; -import { CorruptedExecutionDataError } from '../corrupted-execution-data.error'; -import { ExecutionDataWriteError } from '../execution-data-write.error'; -import { FsStore } from '../fs-store'; -import { createExecutionRef } from '../types'; -import type { ExecutionDataPayload } from '../types'; -import { executionId, payload, ref, workflowId } from './mocks'; - -vi.unmock('node:fs/promises'); - -let fsStore: FsStore; -let storagePath: string; -let errorReporter: ErrorReporter; - -beforeAll(async () => { - storagePath = await mkdtemp(join(tmpdir(), 'n8n-fs-store-test-')); - mockInstance(StorageConfig, { storagePath }); - errorReporter = mockInstance(ErrorReporter); - fsStore = Container.get(FsStore); -}); - -beforeEach(async () => { - vi.mocked(errorReporter.error).mockClear(); - const workflowsDir = join(storagePath, 'workflows'); - await rm(workflowsDir, { recursive: true, force: true }).catch(() => {}); -}); - -afterEach(() => { - vi.restoreAllMocks(); -}); - -afterAll(async () => { - await rm(storagePath, { recursive: true, force: true }); -}); - -describe('init', () => { - it('should create storage dir if absent', async () => { - const customPath = join(storagePath, 'custom-init-dir'); - const customFsStore = new FsStore( - mock({ storagePath: customPath }), - Container.get(ErrorReporter), - ); - - await customFsStore.init(); - - const stat = await fs.stat(customPath); - expect(stat.isDirectory()).toBe(true); - - await rm(customPath, { recursive: true, force: true }); - }); -}); - -describe('write', () => { - it('should store execution data as JSON file', async () => { - await fsStore.write(ref, payload); - - const filePath = join( - storagePath, - 'workflows', - workflowId, - 'executions', - executionId, - 'execution_data', - EXECUTION_DATA_BUNDLE_FILENAME, - ); - - const content = await fs.readFile(filePath, 'utf-8'); - const stored = jsonParse(content); - - expect(stored).toMatchObject({ ...payload, version: 1 }); - }); - - it('should return the byte size of the written bundle file', async () => { - const bytes = await fsStore.write(ref, payload); - - const filePath = join( - storagePath, - 'workflows', - workflowId, - 'executions', - executionId, - 'execution_data', - EXECUTION_DATA_BUNDLE_FILENAME, - ); - const onDisk = await fs.readFile(filePath, 'utf-8'); - - expect(bytes).toBe(Buffer.byteLength(onDisk, 'utf-8')); - }); - - it('should overwrite on duplicate `executionId`', async () => { - await fsStore.write(ref, payload); - - const updatedPayload: ExecutionDataPayload = { - ...payload, - data: '[[{"json":{"updated":true}},null]]', - }; - - await fsStore.write(ref, updatedPayload); - - const stored = await fsStore.read(ref); - expect(stored).toMatchObject({ ...updatedPayload, version: 1 }); - }); - - it('should throw `ExecutionDataWriteError` on write failure and clean up temp file', async () => { - vi.spyOn(fs, 'rename').mockRejectedValueOnce(new Error('EACCES: permission denied')); - - await expect(fsStore.write(ref, payload)).rejects.toThrow(ExecutionDataWriteError); - - const executionDataDir = join( - storagePath, - 'workflows', - workflowId, - 'executions', - executionId, - 'execution_data', - ); - const files = await fs.readdir(executionDataDir); - const tempFiles = files.filter((f) => f.includes('.tmp.')); - - expect(tempFiles).toHaveLength(0); - }); -}); - -describe('read', () => { - it('should retrieve stored execution data', async () => { - await fsStore.write(ref, payload); - - const stored = await fsStore.read(ref); - - expect(stored).toMatchObject({ ...payload, version: 1 }); - }); - - it('should return `null` for non-existent execution', async () => { - const result = await fsStore.read(createExecutionRef(workflowId, 'non-existent')); - - expect(result).toBeNull(); - }); - - it('should throw `CorruptedExecutionDataError` for corrupted JSON', async () => { - const bundlePath = join( - storagePath, - 'workflows', - workflowId, - 'executions', - executionId, - 'execution_data', - EXECUTION_DATA_BUNDLE_FILENAME, - ); - - await fs.mkdir( - join(storagePath, 'workflows', workflowId, 'executions', executionId, 'execution_data'), - { recursive: true }, - ); - await fs.writeFile(bundlePath, 'invalid json{{{', 'utf-8'); - - await expect(fsStore.read(ref)).rejects.toThrow(CorruptedExecutionDataError); - }); -}); - -describe('readMany', () => { - it('should return a map of bundles keyed by executionId, omitting missing ones', async () => { - const present = createExecutionRef(workflowId, 'exec-1'); - const missing = createExecutionRef(workflowId, 'exec-2'); - await fsStore.write(present, payload); - - const bundles = await fsStore.readMany([present, missing]); - - expect(bundles.size).toBe(1); - expect(bundles.get('exec-1')).toMatchObject({ ...payload, version: 1 }); - expect(bundles.has('exec-2')).toBe(false); - }); - - it('should report and drop a corrupted bundle instead of rejecting the whole read', async () => { - const good = createExecutionRef(workflowId, 'good'); - const bad = createExecutionRef(workflowId, 'bad'); - await fsStore.write(good, payload); - - const badPath = join( - storagePath, - 'workflows', - workflowId, - 'executions', - 'bad', - 'execution_data', - EXECUTION_DATA_BUNDLE_FILENAME, - ); - await fs.mkdir( - join(storagePath, 'workflows', workflowId, 'executions', 'bad', 'execution_data'), - { - recursive: true, - }, - ); - await fs.writeFile(badPath, 'invalid json{{{', 'utf-8'); - - const bundles = await fsStore.readMany([good, bad]); - - expect(bundles.has('good')).toBe(true); - expect(bundles.has('bad')).toBe(false); - expect(errorReporter.error).toHaveBeenCalledWith(expect.any(CorruptedExecutionDataError)); - }); - - it('should rethrow a systemic read error instead of swallowing it', async () => { - const target = createExecutionRef(workflowId, 'exec-1'); - await fsStore.write(target, payload); - - const eacces = Object.assign(new Error('EACCES: permission denied'), { code: 'EACCES' }); - vi.spyOn(fs, 'readFile').mockRejectedValueOnce(eacces); - - await expect(fsStore.readMany([target])).rejects.toBe(eacces); - expect(errorReporter.error).not.toHaveBeenCalled(); - }); - - it('should return an empty map for an empty array', async () => { - const bundles = await fsStore.readMany([]); - - expect(bundles.size).toBe(0); - }); -}); - -describe('delete', () => { - it('should delete execution directory', async () => { - await fsStore.write(ref, payload); - - await fsStore.delete(ref); - - const result = await fsStore.read(ref); - expect(result).toBeNull(); - - const executionDir = join(storagePath, 'workflows', workflowId, 'executions', executionId); - await expect(fs.stat(executionDir)).rejects.toThrow(); - }); - - it('should delete data for multiple executions', async () => { - const refs = [ - createExecutionRef(workflowId, 'exec-1'), - createExecutionRef(workflowId, 'exec-2'), - createExecutionRef(workflowId, 'exec-3'), - ]; - - for (const r of refs) { - await fsStore.write(r, payload); - } - - await fsStore.delete([refs[0], refs[1]]); - - expect(await fsStore.read(refs[0])).toBeNull(); - expect(await fsStore.read(refs[1])).toBeNull(); - expect(await fsStore.read(refs[2])).not.toBeNull(); - }); - - it('should skip deletion on empty array', async () => { - await fsStore.write(ref, payload); - - await fsStore.delete([]); - - const result = await fsStore.read(ref); - expect(result).not.toBeNull(); - }); - - it('should not throw on deleting a non-existent execution', async () => { - await expect( - fsStore.delete(createExecutionRef(workflowId, 'non-existent')), - ).resolves.toBeUndefined(); - }); -}); diff --git a/packages/cli/src/executions/execution-data/__tests__/s3-store.ee.test.ts b/packages/cli/src/executions/execution-data/__tests__/s3-store.ee.test.ts deleted file mode 100644 index 4dcef0a467d..00000000000 --- a/packages/cli/src/executions/execution-data/__tests__/s3-store.ee.test.ts +++ /dev/null @@ -1,178 +0,0 @@ -/* eslint-disable n8n-local-rules/no-uncaught-json-parse */ -/* eslint-disable @typescript-eslint/unbound-method */ - -import { mock } from 'vitest-mock-extended'; -import type { ErrorReporter } from 'n8n-core'; -import type { ObjectStoreService } from 'n8n-core/dist/binary-data/object-store/object-store.service.ee'; -import type { Readable } from 'node:stream'; - -import { CorruptedExecutionDataError } from '../corrupted-execution-data.error'; -import { ExecutionDataWriteError } from '../execution-data-write.error'; -import { S3Store } from '../s3-store.ee'; -import { createExecutionRef } from '../types'; -import { executionId, payload, ref, workflowId } from './mocks'; - -const keyFor = (execId: string) => - `workflows/${workflowId}/executions/${execId}/execution_data/bundle.json`; - -/** An S3 SDK error as surfaced by `ObjectStoreService` (wrapped, original on `cause`). */ -const wrappedS3Error = (cause: unknown) => new Error('Request to S3 failed', { cause }); - -const notFoundByName = () => - wrappedS3Error(Object.assign(new Error('missing'), { name: 'NoSuchKey' })); - -const bundle = { ...payload, version: 1 as const }; - -const bufferResult = (text: string) => Buffer.from(text) as unknown as Readable; - -describe('S3Store', () => { - let objectStoreService: ReturnType>; - let errorReporter: ReturnType>; - let s3Store: S3Store; - - beforeEach(() => { - objectStoreService = mock(); - errorReporter = mock(); - s3Store = new S3Store(objectStoreService, errorReporter); - }); - - describe('write', () => { - it('should put the versioned bundle as JSON at the execution key', async () => { - const sizeBytes = await s3Store.write(ref, payload); - - expect(objectStoreService.put).toHaveBeenCalledTimes(1); - const [key, body, metadata] = objectStoreService.put.mock.calls[0]; - expect(key).toBe(keyFor(executionId)); - expect(metadata).toEqual({ mimeType: 'application/json' }); - expect(JSON.parse(body.toString('utf-8'))).toMatchObject(bundle); - expect(sizeBytes).toBe(body.length); - }); - - it('should wrap a put failure in `ExecutionDataWriteError`', async () => { - objectStoreService.put.mockRejectedValueOnce(new Error('access denied')); - - await expect(s3Store.write(ref, payload)).rejects.toThrow(ExecutionDataWriteError); - }); - }); - - describe('read', () => { - it('should retrieve and parse the stored bundle', async () => { - objectStoreService.get.mockResolvedValueOnce(bufferResult(JSON.stringify(bundle))); - - const result = await s3Store.read(ref); - - expect(result).toEqual(bundle); - expect(objectStoreService.get).toHaveBeenCalledWith(keyFor(executionId), { mode: 'buffer' }); - }); - - it('should return `null` when the object is missing (NoSuchKey)', async () => { - objectStoreService.get.mockRejectedValueOnce(notFoundByName()); - - expect(await s3Store.read(ref)).toBeNull(); - }); - - it('should not treat a bucket-level failure (NoSuchBucket) as a missing object', async () => { - const noSuchBucket = wrappedS3Error( - Object.assign(new Error('bucket missing'), { - name: 'NoSuchBucket', - $metadata: { httpStatusCode: 404 }, - }), - ); - objectStoreService.get.mockRejectedValueOnce(noSuchBucket); - - await expect(s3Store.read(ref)).rejects.toBe(noSuchBucket); - }); - - it('should throw `CorruptedExecutionDataError` for non-parseable content', async () => { - objectStoreService.get.mockResolvedValueOnce(bufferResult('invalid json{{{')); - - await expect(s3Store.read(ref)).rejects.toThrow(CorruptedExecutionDataError); - }); - - it('should rethrow a systemic error (not a missing object)', async () => { - const throttled = wrappedS3Error( - Object.assign(new Error('slow down'), { name: 'ThrottlingException' }), - ); - objectStoreService.get.mockRejectedValueOnce(throttled); - - await expect(s3Store.read(ref)).rejects.toBe(throttled); - }); - }); - - describe('readMany', () => { - it('should return a map keyed by executionId, omitting missing objects', async () => { - const present = createExecutionRef(workflowId, 'exec-1'); - const missing = createExecutionRef(workflowId, 'exec-2'); - // `readMany` initiates gets in ref order, so queue results in that order. - objectStoreService.get - .mockResolvedValueOnce(bufferResult(JSON.stringify(bundle))) - .mockRejectedValueOnce(notFoundByName()); - - const bundles = await s3Store.readMany([present, missing]); - - expect(bundles.size).toBe(1); - expect(bundles.get('exec-1')).toEqual(bundle); - expect(bundles.has('exec-2')).toBe(false); - }); - - it('should report and drop a corrupted bundle instead of rejecting the whole read', async () => { - const good = createExecutionRef(workflowId, 'good'); - const bad = createExecutionRef(workflowId, 'bad'); - objectStoreService.get - .mockResolvedValueOnce(bufferResult(JSON.stringify(bundle))) - .mockResolvedValueOnce(bufferResult('invalid json{{{')); - - const bundles = await s3Store.readMany([good, bad]); - - expect(bundles.has('good')).toBe(true); - expect(bundles.has('bad')).toBe(false); - expect(errorReporter.error).toHaveBeenCalledWith(expect.any(CorruptedExecutionDataError)); - }); - - it('should rethrow a systemic read error instead of swallowing it', async () => { - const target = createExecutionRef(workflowId, 'exec-1'); - const throttled = wrappedS3Error( - Object.assign(new Error('slow down'), { name: 'ThrottlingException' }), - ); - objectStoreService.get.mockRejectedValueOnce(throttled); - - await expect(s3Store.readMany([target])).rejects.toBe(throttled); - expect(errorReporter.error).not.toHaveBeenCalled(); - }); - - it('should return an empty map for an empty array', async () => { - const bundles = await s3Store.readMany([]); - - expect(bundles.size).toBe(0); - expect(objectStoreService.get).not.toHaveBeenCalled(); - }); - }); - - describe('delete', () => { - it('should delete the bundle object for a single ref', async () => { - await s3Store.delete(ref); - - expect(objectStoreService.deleteByKeys).toHaveBeenCalledWith([keyFor(executionId)]); - }); - - it('should delete the bundle objects for multiple refs', async () => { - const refs = [ - createExecutionRef(workflowId, 'exec-1'), - createExecutionRef(workflowId, 'exec-2'), - ]; - - await s3Store.delete(refs); - - expect(objectStoreService.deleteByKeys).toHaveBeenCalledWith([ - keyFor('exec-1'), - keyFor('exec-2'), - ]); - }); - - it('should not send a request for an empty array', async () => { - await s3Store.delete([]); - - expect(objectStoreService.deleteByKeys).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/packages/cli/src/executions/execution-data/azure-store.ee.ts b/packages/cli/src/executions/execution-data/azure-store.ee.ts deleted file mode 100644 index 77ad3dabf36..00000000000 --- a/packages/cli/src/executions/execution-data/azure-store.ee.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { Service } from '@n8n/di'; -import chunk from 'lodash/chunk'; -import { ErrorReporter } from 'n8n-core'; -import { AzureBlobService } from 'n8n-core/dist/binary-data/azure-blob/azure-blob.service.ee'; -import { ensureError } from '@n8n/utils/errors/ensure-error'; -import { jsonParse, jsonStringify } from 'n8n-workflow'; - -import { EXECUTION_DATA_BUNDLE_FILENAME, EXECUTION_DATA_BUNDLE_VERSION } from './constants'; -import { CorruptedExecutionDataError } from './corrupted-execution-data.error'; -import { ExecutionDataWriteError } from './execution-data-write.error'; -import type { - ExecutionDataStore, - ExecutionRef, - ExecutionDataPayload, - ExecutionDataBundle, -} from './types'; - -const MAX_READ_CONCURRENCY = 50; -const MAX_DELETE_CONCURRENCY = 50; - -@Service() -export class AzureStore implements ExecutionDataStore { - constructor( - private readonly azureBlob: AzureBlobService, - private readonly reporter: ErrorReporter, - ) {} - - async write(ref: ExecutionRef, payload: ExecutionDataPayload): Promise { - const body = Buffer.from( - jsonStringify({ ...payload, version: EXECUTION_DATA_BUNDLE_VERSION }), - 'utf-8', - ); - - try { - await this.azureBlob.put(this.key(ref), body, { mimeType: 'application/json' }); - } catch (error) { - throw new ExecutionDataWriteError(ref, error); - } - - return body.length; - } - - async read(ref: ExecutionRef): Promise { - let content: string; - - try { - const buffer = await this.azureBlob.get(this.key(ref), { mode: 'buffer' }); - content = buffer.toString('utf-8'); - } catch (error) { - if (this.isNotFound(error)) return null; - throw error; - } - - try { - return jsonParse(content); - } catch (error) { - throw new CorruptedExecutionDataError(ref, error); - } - } - - async readMany(refs: ExecutionRef[]) { - const bundles = new Map(); - if (refs.length === 0) return bundles; - - for (const batch of chunk(refs, MAX_READ_CONCURRENCY)) { - const bundlesInBatch = await Promise.all(batch.map(async (ref) => await this.tryRead(ref))); - - for (const [idx, bundle] of bundlesInBatch.entries()) { - if (bundle) bundles.set(batch[idx].executionId, bundle); - } - } - - return bundles; - } - - async delete(ref: ExecutionRef | ExecutionRef[]) { - const refs = Array.isArray(ref) ? ref : [ref]; - if (refs.length === 0) return; - - for (const batch of chunk(refs, MAX_DELETE_CONCURRENCY)) { - // eslint-disable-next-line @typescript-eslint/promise-function-async - await Promise.all(batch.map((r) => this.azureBlob.delete(this.key(r)))); - } - } - - private key({ workflowId, executionId }: ExecutionRef) { - return [ - 'workflows', - workflowId, - 'executions', - executionId, - 'execution_data', - EXECUTION_DATA_BUNDLE_FILENAME, - ].join('/'); - } - - private async tryRead(ref: ExecutionRef): Promise { - try { - return await this.read(ref); - } catch (error) { - if (error instanceof CorruptedExecutionDataError) { - this.reporter.error(error); - return null; - } - throw error; - } - } - - private isNotFound(error: unknown): boolean { - const original = ensureError(error).cause ?? error; - if (typeof original !== 'object' || original === null) return false; - const code = 'code' in original ? original.code : undefined; - return code === 'BlobNotFound'; - } -} diff --git a/packages/cli/src/executions/execution-data/corrupted-execution-data.error.ts b/packages/cli/src/executions/execution-data/corrupted-execution-data.error.ts index d6d212838b1..0db892f7b58 100644 --- a/packages/cli/src/executions/execution-data/corrupted-execution-data.error.ts +++ b/packages/cli/src/executions/execution-data/corrupted-execution-data.error.ts @@ -3,7 +3,7 @@ import { UnexpectedError } from 'n8n-workflow'; import type { ExecutionRef } from './types'; /** - * Thrown when execution data read from the filesystem store + * Thrown when execution data read from a blob store * cannot be parsed as valid JSON. */ export class CorruptedExecutionDataError extends UnexpectedError { diff --git a/packages/cli/src/executions/execution-data/execution-data-json-store.ts b/packages/cli/src/executions/execution-data/execution-data-json-store.ts new file mode 100644 index 00000000000..3755977146c --- /dev/null +++ b/packages/cli/src/executions/execution-data/execution-data-json-store.ts @@ -0,0 +1,37 @@ +import { Service } from '@n8n/di'; +import { ErrorReporter } from 'n8n-core'; + +import { FsByteStore } from '@/blob-storage/fs-byte-store'; +import { JsonStore } from '@/blob-storage/json-store'; + +import { EXECUTION_DATA_BUNDLE_FILENAME, EXECUTION_DATA_BUNDLE_VERSION } from './constants'; +import { CorruptedExecutionDataError } from './corrupted-execution-data.error'; +import { ExecutionDataWriteError } from './execution-data-write.error'; +import type { ExecutionDataPayload, ExecutionRef } from './types'; + +/** + * Stores execution data bundles as JSON blobs. The `fs` backend is always + * available, but `s3` and `az` are registered at startup only if configured. + */ +@Service() +export class ExecutionDataJsonStore extends JsonStore { + constructor(fsByteStore: FsByteStore, errorReporter: ErrorReporter) { + super({ + byteStores: { fs: fsByteStore }, + version: EXECUTION_DATA_BUNDLE_VERSION, + key: ({ workflowId, executionId }) => + [ + 'workflows', + workflowId, + 'executions', + executionId, + 'execution_data', + EXECUTION_DATA_BUNDLE_FILENAME, + ].join('/'), + getId: (ref) => ref.executionId, + createWriteError: (ref, cause) => new ExecutionDataWriteError(ref, cause), + createCorruptedError: (ref, cause) => new CorruptedExecutionDataError(ref, cause), + reportError: (error) => errorReporter.error(error), + }); + } +} diff --git a/packages/cli/src/executions/execution-data/execution-data-write.error.ts b/packages/cli/src/executions/execution-data/execution-data-write.error.ts index 64cef0cd91d..a7602b7dc85 100644 --- a/packages/cli/src/executions/execution-data/execution-data-write.error.ts +++ b/packages/cli/src/executions/execution-data/execution-data-write.error.ts @@ -3,7 +3,7 @@ import { UnexpectedError } from 'n8n-workflow'; import type { ExecutionRef } from './types'; /** - * Thrown when the filesystem store fails to persist execution data, + * Thrown when a blob store fails to persist execution data, * e.g. due to permission issues or disk space. */ export class ExecutionDataWriteError extends UnexpectedError { diff --git a/packages/cli/src/executions/execution-data/fs-store.ts b/packages/cli/src/executions/execution-data/fs-store.ts deleted file mode 100644 index 482074d78fc..00000000000 --- a/packages/cli/src/executions/execution-data/fs-store.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { assertDir } from '@n8n/backend-common'; -import { Service } from '@n8n/di'; -import chunk from 'lodash/chunk'; -import { ErrorReporter, StorageConfig } from 'n8n-core'; -import { jsonParse, jsonStringify } from 'n8n-workflow'; -import fs from 'node:fs/promises'; -import path from 'node:path'; - -import { EXECUTION_DATA_BUNDLE_FILENAME, EXECUTION_DATA_BUNDLE_VERSION } from './constants'; -import { CorruptedExecutionDataError } from './corrupted-execution-data.error'; -import { ExecutionDataWriteError } from './execution-data-write.error'; -import type { - ExecutionDataStore, - ExecutionRef, - ExecutionDataPayload, - ExecutionDataBundle, -} from './types'; - -// Max number of bundles read concurrently, to bound open file descriptors. -const MAX_READ_CONCURRENCY = 50; - -@Service() -export class FsStore implements ExecutionDataStore { - constructor( - private readonly storageConfig: StorageConfig, - private readonly errorReporter: ErrorReporter, - ) {} - - async init() { - await assertDir(this.storageConfig.storagePath); - } - - async write(ref: ExecutionRef, payload: ExecutionDataPayload): Promise { - const writePath = this.resolveBundlePath(ref); - await assertDir(path.dirname(writePath)); - - // for atomicity, first write to temp file and then rename - const tempPath = `${writePath}.tmp.${Date.now()}`; - let success = false; - - try { - const serialized = jsonStringify({ ...payload, version: EXECUTION_DATA_BUNDLE_VERSION }); - await fs.writeFile(tempPath, serialized, 'utf-8'); - await fs.rename(tempPath, writePath); - success = true; - return Buffer.byteLength(serialized, 'utf-8'); - } catch (error) { - throw new ExecutionDataWriteError(ref, error); - } finally { - if (!success) - await fs.rm(tempPath, { force: true }).catch((e) => this.errorReporter.error(e)); - } - } - - async read(ref: ExecutionRef) { - const bundlePath = this.resolveBundlePath(ref); - - let content: string; - - try { - content = await fs.readFile(bundlePath, 'utf-8'); - } catch (error) { - if (this.isFileNotFound(error)) return null; - throw error; - } - - try { - return jsonParse(content); - } catch (error) { - throw new CorruptedExecutionDataError(ref, error); - } - } - - async readMany(refs: ExecutionRef[]) { - const bundles = new Map(); - if (refs.length === 0) return bundles; - - // Read in chunks to cap concurrent file descriptors. - for (const batch of chunk(refs, MAX_READ_CONCURRENCY)) { - const bundlesInBatch = await Promise.all(batch.map(async (ref) => await this.tryRead(ref))); - - for (const [idx, bundle] of bundlesInBatch.entries()) { - if (bundle) bundles.set(batch[idx].executionId, bundle); - } - } - - return bundles; - } - - async delete(ref: ExecutionRef | ExecutionRef[]) { - const refs = Array.isArray(ref) ? ref : [ref]; - - await Promise.all( - refs.map( - async (r) => await fs.rm(this.resolveExecutionDir(r), { recursive: true, force: true }), - ), - ); - } - - private resolveExecutionDir({ workflowId, executionId }: ExecutionRef) { - return path.join( - this.storageConfig.storagePath, - 'workflows', - workflowId, - 'executions', - executionId, - ); - } - - private resolveBundlePath(ref: ExecutionRef) { - return path.join( - this.resolveExecutionDir(ref), - 'execution_data', - EXECUTION_DATA_BUNDLE_FILENAME, - ); - } - - private isFileNotFound(error: unknown): error is NodeJS.ErrnoException { - return ( - error !== null && typeof error === 'object' && 'code' in error && error.code === 'ENOENT' - ); - } - - /** - * Read a single bundle, tolerating per-record faults so they cannot sink a whole - * {@link readMany} batch. A missing bundle returns `null` ({@link read} already maps ENOENT to - * `null`); a corrupted (non-parseable) bundle is reported and dropped. Systemic failures - * (permission denied, disk read error, broken mount) are rethrown so we don't mask them. - */ - private async tryRead(ref: ExecutionRef): Promise { - try { - return await this.read(ref); - } catch (error) { - if (error instanceof CorruptedExecutionDataError) { - this.errorReporter.error(error); - return null; - } - throw error; - } - } -} diff --git a/packages/cli/src/executions/execution-data/s3-store.ee.ts b/packages/cli/src/executions/execution-data/s3-store.ee.ts deleted file mode 100644 index 732f0b0afac..00000000000 --- a/packages/cli/src/executions/execution-data/s3-store.ee.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { Service } from '@n8n/di'; -import chunk from 'lodash/chunk'; -import { ErrorReporter } from 'n8n-core'; -import { ObjectStoreService } from 'n8n-core/dist/binary-data/object-store/object-store.service.ee'; -import { ensureError } from '@n8n/utils/errors/ensure-error'; -import { jsonParse, jsonStringify } from 'n8n-workflow'; - -import { EXECUTION_DATA_BUNDLE_FILENAME, EXECUTION_DATA_BUNDLE_VERSION } from './constants'; -import { CorruptedExecutionDataError } from './corrupted-execution-data.error'; -import { ExecutionDataWriteError } from './execution-data-write.error'; -import type { - ExecutionDataStore, - ExecutionRef, - ExecutionDataPayload, - ExecutionDataBundle, -} from './types'; - -const MAX_READ_MANY_CONCURRENCY = 50; - -@Service() -export class S3Store implements ExecutionDataStore { - constructor( - private readonly objectStore: ObjectStoreService, - private readonly reporter: ErrorReporter, - ) {} - - async write(ref: ExecutionRef, payload: ExecutionDataPayload): Promise { - const body = Buffer.from( - jsonStringify({ ...payload, version: EXECUTION_DATA_BUNDLE_VERSION }), - 'utf-8', - ); - - try { - await this.objectStore.put(this.key(ref), body, { - mimeType: 'application/json', - }); - } catch (error) { - throw new ExecutionDataWriteError(ref, error); - } - - return body.length; - } - - async read(ref: ExecutionRef) { - let content: string; - - try { - const buffer = await this.objectStore.get(this.key(ref), { mode: 'buffer' }); - content = buffer.toString('utf-8'); - } catch (error) { - if (this.isNotFound(error)) return null; - throw error; - } - - try { - return jsonParse(content); - } catch (error) { - throw new CorruptedExecutionDataError(ref, error); - } - } - - async readMany(refs: ExecutionRef[]) { - const bundles = new Map(); - - if (refs.length === 0) return bundles; - - for (const batch of chunk(refs, MAX_READ_MANY_CONCURRENCY)) { - const bundlesInBatch = await Promise.all(batch.map(async (ref) => await this.tryRead(ref))); - - for (const [idx, bundle] of bundlesInBatch.entries()) { - if (bundle) bundles.set(batch[idx].executionId, bundle); - } - } - - return bundles; - } - - async delete(ref: ExecutionRef | ExecutionRef[]) { - const refs = Array.isArray(ref) ? ref : [ref]; - if (refs.length === 0) return; - - await this.objectStore.deleteByKeys(refs.map((r) => this.key(r))); - } - - // ---------------- - // private - // ---------------- - - private key({ workflowId, executionId }: ExecutionRef) { - return [ - 'workflows', - workflowId, - 'executions', - executionId, - 'execution_data', - EXECUTION_DATA_BUNDLE_FILENAME, - ].join('/'); - } - - private isNotFound(error: unknown) { - const original = ensureError(error).cause ?? error; - if (typeof original !== 'object' || original === null) return false; - const name = 'name' in original ? original.name : undefined; - return name === 'NoSuchKey' || name === 'NotFound'; - } - - private async tryRead(ref: ExecutionRef) { - try { - return await this.read(ref); - } catch (error) { - if (error instanceof CorruptedExecutionDataError) { - this.reporter.error(error); - return null; - } - throw error; - } - } -} diff --git a/packages/cli/src/executions/execution-data/types.ts b/packages/cli/src/executions/execution-data/types.ts index b02e417295a..f5d524abf25 100644 --- a/packages/cli/src/executions/execution-data/types.ts +++ b/packages/cli/src/executions/execution-data/types.ts @@ -1,7 +1,7 @@ import type { ExecutionDataStorageLocation } from '@n8n/db'; import type { IWorkflowBase } from 'n8n-workflow'; -/** Storage locations served by {@link ExecutionDataStore} implementations. `db` is handled natively by `DbStore`. */ +/** Storage locations served by the execution-data JSON store. `db` is handled natively by `DbStore`. */ export type BlobStorageLocation = Exclude; export type ExecutionRef = { @@ -24,26 +24,8 @@ export type ExecutionDataPayload = { workflowVersionId: string | null; }; -export type ExecutionDataBundle = ExecutionDataPayload & { - version: 1; -}; - /** The workflow-snapshot part of a payload, without the run data. */ export type BundleWorkflowSnapshot = Pick< ExecutionDataPayload, 'workflowData' | 'workflowVersionId' >; - -/** - * Persistence operations for execution data bundles kept in - * blob storage (filesystem, S3, Azure Blob Storage). - */ -export interface ExecutionDataStore { - init?(): Promise; - /** Persist a bundle and return the number of bytes it occupies in this store. */ - write(ref: ExecutionRef, payload: ExecutionDataPayload): Promise; - read(ref: ExecutionRef): Promise; - /** Read multiple bundles by ref. Returns a map keyed by `executionId`; missing entries are omitted. */ - readMany(refs: ExecutionRef[]): Promise>; - delete(ref: ExecutionRef | ExecutionRef[]): Promise; -} diff --git a/packages/cli/src/executions/execution-persistence.ts b/packages/cli/src/executions/execution-persistence.ts index c0222c37c62..634871b5a8d 100644 --- a/packages/cli/src/executions/execution-persistence.ts +++ b/packages/cli/src/executions/execution-persistence.ts @@ -1,4 +1,4 @@ -import { Logger, parseFlatted } from '@n8n/backend-common'; +import { parseFlatted } from '@n8n/backend-common'; import { DatabaseConfig, ExecutionsConfig } from '@n8n/config'; import { Time } from '@n8n/constants'; import type { @@ -26,13 +26,12 @@ import { import { CorruptedExecutionDataError } from './execution-data/corrupted-execution-data.error'; import { DbStore } from './execution-data/db-store'; -import { FsStore } from './execution-data/fs-store'; +import { ExecutionDataJsonStore } from './execution-data/execution-data-json-store'; import { MissingExecutionDataError } from './execution-data/missing-execution-data.error'; import type { BlobStorageLocation, BundleWorkflowSnapshot, ExecutionDataPayload, - ExecutionDataStore, ExecutionRef, WorkflowSnapshot, } from './execution-data/types'; @@ -62,35 +61,22 @@ type UpdatableEntityColumns = Omit< */ @Service() export class ExecutionPersistence { - private s3Store: ExecutionDataStore | undefined; - - private azStore: ExecutionDataStore | undefined; - constructor( private readonly executionRepository: ExecutionRepository, private readonly binaryDataService: BinaryDataService, - private readonly fsStore: FsStore, + private readonly jsonStore: ExecutionDataJsonStore, private readonly dbStore: DbStore, private readonly storageConfig: StorageConfig, private readonly executionsConfig: ExecutionsConfig, private readonly databaseConfig: DatabaseConfig, private readonly errorReporter: ErrorReporter, private readonly eventService: EventService, - private readonly logger: Logger, ) {} - setS3Store(store: ExecutionDataStore) { - this.s3Store = store; - } - - setAzStore(store: ExecutionDataStore) { - this.azStore = store; - } - /** * Create an execution entity and persist its data to the configured storage. * - In `db` mode, we write both entity and data to the DB in a transaction. - * - In `fs` mode, we write the entity to the DB and its data to the filesystem. + * - In blob modes (`fs`, `s3`, `az`), we write the entity to the DB and its data to the blob store. */ async create(payload: CreateExecutionPayload) { const { data: rawData, workflowData, ...rest } = payload; @@ -141,7 +127,7 @@ export class ExecutionPersistence { /** * Update an existing execution and, if the payload includes data fields, its data in the configured storage. * - In `db` mode, we update both entity and data in the DB in a transaction. - * - In `fs` mode, we update the entity in the DB and write its data to the filesystem in a transaction. + * - In blob modes (`fs`, `s3`, `az`), we update the entity in the DB and write its data to the blob store. */ async updateExistingExecution( executionId: string, @@ -175,14 +161,15 @@ export class ExecutionPersistence { /** * Find a single execution by id, dispatching data reads to the store matching its `storedAt`. * - In `db` mode, we load entity, metadata, optional annotation, and data via `DbStore`. - * - In `fs` mode, we load entity, metadata, optional annotation from the DB, and data via `FsStore`. + * - In blob modes (`fs`, `s3`, `az`), we load entity, metadata, optional annotation from the DB, + * and data via the JSON store. * * A missing data bundle is handled differently per store. In `db` mode the entity and its data * share one database, so an absent data row means a known-corrupt record we report and skip - * (soft). In `fs` and `s3` modes the entity lives in the DB while its data lives out of band on - * disk or in object storage, so a missing bundle points at an out-of-band loss (deletion, - * unmounted volume, expired object) that a single-execution read should surface loudly rather - * than silently swallow (hard). + * (soft). In blob modes the entity lives in the DB while its data lives out of band on disk or + * in object storage, so a missing bundle points at an out-of-band loss (deletion, unmounted + * volume, expired object) that a single-execution read should surface loudly rather than + * silently swallow (hard). */ async findSingleExecution( id: string, @@ -287,7 +274,7 @@ export class ExecutionPersistence { * Find multiple executions matching `queryParams`. With `includeData: true`, partitions * entities by `storedAt` and batch-fetches bundles from each store to avoid n+1 reads. * - In `db` mode, we issue one `In(ids)` query against `execution_data` per batch. - * - In `fs` mode, we fan out reads across the filesystem. + * - In blob modes (`fs`, `s3`, `az`), we fan out reads across the blob store. */ async findMultipleExecutions( queryParams: FindManyOptions, @@ -375,7 +362,7 @@ export class ExecutionPersistence { const bundles = location === 'db' ? await this.dbStore.readMany(refs) - : await this.getStoreFor(location).readMany(refs); + : await this.jsonStore.readMany(refs.map((ref) => ({ ...ref, storedAt: location }))); const missing = group.filter((e) => !bundles.has(e.id)); if (missing.length > 0) this.executionRepository.reportInvalidExecutions(missing); unreadableBundles = missing.length; @@ -527,55 +514,19 @@ export class ExecutionPersistence { await Promise.all([ this.executionRepository.deleteByIds(targets.map((t) => t.executionId)), this.binaryDataService.deleteMany(targets.map((t) => ({ type: 'execution' as const, ...t }))), - this.deleteFsData(targets.filter((t) => t.storedAt === 'fs')), - this.deleteS3Data(targets.filter((t) => t.storedAt === 's3')), - this.deleteAzData(targets.filter((t) => t.storedAt === 'az')), + this.jsonStore.delete(this.toBlobRefs(targets)), ]); } async hardDeleteBy(criteria: ExecutionDeletionCriteria) { const refs = await this.executionRepository.deleteExecutionsByFilter(criteria); - await this.deleteFsData(refs.filter((r) => r.storedAt === 'fs')); - await this.deleteS3Data(refs.filter((r) => r.storedAt === 's3')); - await this.deleteAzData(refs.filter((r) => r.storedAt === 'az')); + await this.jsonStore.delete(this.toBlobRefs(refs)); } - private async deleteFsData(refs: ExecutionRef[]) { - if (refs.length === 0) return; - - await this.fsStore.delete(refs); - } - - /** - * Delete S3-stored execution data. If the S3 store is unavailable, e.g. external - * storage was unconfigured after S3-stored executions were created, we skip data - * deletion rather than block entity deletion. - */ - private async deleteS3Data(refs: ExecutionRef[]) { - if (refs.length === 0) return; - - if (!this.s3Store) { - this.logger.warn('Skipped deleting S3 execution data - S3 store is not initialized', { - executionIds: refs.map((r) => r.executionId), - }); - return; - } - - await this.s3Store.delete(refs); - } - - private async deleteAzData(refs: ExecutionRef[]) { - if (refs.length === 0) return; - - if (!this.azStore) { - this.logger.warn('Skipped deleting Azure execution data - Azure store is not initialized', { - executionIds: refs.map((r) => r.executionId), - }); - return; - } - - await this.azStore.delete(refs); + /** Narrow deletion targets to those whose data lives in a blob store, i.e. all but `db`. */ + private toBlobRefs(targets: T[]) { + return targets.filter((t): t is T & { storedAt: BlobStorageLocation } => t.storedAt !== 'db'); } private async updateEntityOnly( @@ -638,7 +589,7 @@ export class ExecutionPersistence { return mode === 'db' ? await this.dbStore.overwrite(ref, bundle, tx) - : await this.getStoreFor(mode).write(ref, bundle); + : await this.jsonStore.write(ref, bundle, mode); }); await tx.update( @@ -785,7 +736,7 @@ export class ExecutionPersistence { ): Promise { return mode === 'db' ? await this.dbStore.write(ref, payload, tx) - : await this.getStoreFor(mode).write(ref, payload); + : await this.jsonStore.write(ref, payload, mode); } /** Read execution data from `mode` storage. In `db` mode, the read participates in `tx` when given. */ @@ -794,34 +745,11 @@ export class ExecutionPersistence { ref: ExecutionRef, tx?: EntityManager, ): Promise { - if (mode !== 'db') return await this.getStoreFor(mode).read(ref); + if (mode !== 'db') return await this.jsonStore.read(ref, mode); return tx ? await this.dbStore.read(ref, tx) : await this.dbStore.read(ref); } - private getStoreFor(location: BlobStorageLocation): ExecutionDataStore { - switch (location) { - case 'fs': - return this.fsStore; - case 's3': - if (!this.s3Store) { - throw new UnexpectedError( - 'Execution data is stored on S3 but the S3 store is not initialized. Check that S3 is configured.', - ); - } - return this.s3Store; - case 'az': - if (!this.azStore) { - throw new UnexpectedError( - 'Execution data is stored on Azure Blob Storage but the Azure store is not initialized. Check that Azure is configured.', - ); - } - return this.azStore; - } - const _exhaustive: never = location; - throw new Error(`Unknown storage location: ${String(_exhaustive)}`); - } - private toWorkflowSnapshot( workflowData: NonNullable, ): WorkflowSnapshot { diff --git a/packages/cli/src/executions/execution.service.ts b/packages/cli/src/executions/execution.service.ts index df586b11901..b8663672040 100644 --- a/packages/cli/src/executions/execution.service.ts +++ b/packages/cli/src/executions/execution.service.ts @@ -1,5 +1,5 @@ import { ExecutionRedactionQueryDtoSchema } from '@n8n/api-types'; -import { LicenseState, Logger } from '@n8n/backend-common'; +import { Logger } from '@n8n/backend-common'; import { GlobalConfig } from '@n8n/config'; import type { CreateExecutionPayload, @@ -17,7 +17,7 @@ import { WorkflowRepository, } from '@n8n/db'; import { Service } from '@n8n/di'; -import { PROJECT_OWNER_ROLE_SLUG, type Scope } from '@n8n/permissions'; +import type { Scope } from '@n8n/permissions'; import { stringify } from 'flatted'; import { validate as jsonSchemaValidate } from 'jsonschema'; import type { @@ -125,7 +125,6 @@ export class ExecutionService { private readonly workflowRunner: WorkflowRunner, private readonly concurrencyControl: ConcurrencyControlService, private readonly license: License, - private readonly licenseState: LicenseState, private readonly roleService: RoleService, private readonly workflowSharingService: WorkflowSharingService, private readonly eventService: EventService, @@ -134,21 +133,16 @@ export class ExecutionService { ) {} /** - * Build sharing options for execution queries based on whether sharing is licensed. + * Build sharing options for execution queries. Visibility is resolved from + * the user's role scopes — same as the workflow list — and is deliberately + * not gated on the sharing license, which only gates sharing actions. */ async buildSharingOptions( scope: Scope, ): Promise { - if (this.licenseState.isSharingLicensed()) { - const projectRoles = await this.roleService.rolesWithScope('project', [scope]); - const workflowRoles = await this.roleService.rolesWithScope('workflow', [scope]); - return { scopes: [scope], projectRoles, workflowRoles }; - } - - return { - workflowRoles: ['workflow:owner'], - projectRoles: [PROJECT_OWNER_ROLE_SLUG], - }; + const projectRoles = await this.roleService.rolesWithScope('project', [scope]); + const workflowRoles = await this.roleService.rolesWithScope('workflow', [scope]); + return { scopes: [scope], projectRoles, workflowRoles }; } async findOne( diff --git a/packages/cli/src/executions/executions.controller.ts b/packages/cli/src/executions/executions.controller.ts index 3cb56abd2b5..eb9ecfc2d4b 100644 --- a/packages/cli/src/executions/executions.controller.ts +++ b/packages/cli/src/executions/executions.controller.ts @@ -1,6 +1,6 @@ import type { User, ExecutionSummaries } from '@n8n/db'; import { Get, Patch, Post, RestController } from '@n8n/decorators'; -import { PROJECT_OWNER_ROLE_SLUG, type Scope } from '@n8n/permissions'; +import type { Scope } from '@n8n/permissions'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; @@ -24,14 +24,7 @@ export class ExecutionsController { ) {} private async getAccessibleWorkflowIds(user: User, scope: Scope) { - if (this.license.isSharingEnabled()) { - return await this.workflowSharingService.getSharedWorkflowIds(user, { scopes: [scope] }); - } else { - return await this.workflowSharingService.getSharedWorkflowIds(user, { - workflowRoles: ['workflow:owner'], - projectRoles: [PROJECT_OWNER_ROLE_SLUG], - }); - } + return await this.workflowSharingService.getSharedWorkflowIds(user, { scopes: [scope] }); } @Get('/', { middlewares: [parseRangeQuery] }) diff --git a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts index d7b7b6fcb3b..bffa3cf7a41 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-runtime-reconstruction-integration-tools.test.ts @@ -21,6 +21,7 @@ import { mock } from 'vitest-mock-extended'; import type { ActiveExecutions } from '@/active-executions'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; +import type { EventService } from '@/events/event.service'; import type { EphemeralNodeExecutor } from '@/node-execution'; import type { OauthService } from '@/oauth/oauth.service'; import type { Publisher } from '@/scaling/pubsub/publisher.service'; @@ -287,6 +288,7 @@ describe('AgentRuntimeReconstructionService integration tools', () => { agentTestChatService, agentTaskRepository, mock(), + mock(), ); service = agentExecutionOrchestratorService; markSharedTestSetupAsUsed( diff --git a/packages/cli/src/modules/agents/__tests__/agents.service.test.ts b/packages/cli/src/modules/agents/__tests__/agents.service.test.ts index 92329f93284..dd9b0b39e21 100644 --- a/packages/cli/src/modules/agents/__tests__/agents.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agents.service.test.ts @@ -18,6 +18,7 @@ import { ChatIntegrationService } from '../integrations/chat-integration.service import type { AgentTaskRepository } from '../repositories/agent-task.repository'; import type { AgentRepository } from '../repositories/agent.repository'; import type { SubAgentCleanupService } from '../sub-agents/sub-agent-cleanup.service'; +import type { EventService } from '@/events/event.service'; const agentId = 'agent-1'; const projectId = 'project-1'; @@ -48,6 +49,7 @@ function makeService() { const agentTaskRepository = mock(); const chatIntegrationService = mock(); const subAgentCleanupService = mock(); + const eventService = mock(); agentRepository.save.mockImplementation(async (agent) => agent as Agent); agentTaskService.requestReconcile.mockResolvedValue(); @@ -66,6 +68,7 @@ function makeService() { testChatService, agentTaskRepository, subAgentCleanupService, + eventService, ); return { @@ -78,6 +81,7 @@ function makeService() { agentTaskRepository, chatIntegrationService, subAgentCleanupService, + eventService, }; } @@ -123,6 +127,7 @@ describe('AgentsService', () => { agentTaskService, chatIntegrationService, subAgentCleanupService, + eventService, } = makeService(); const agent = makeAgent({ integrations: [ @@ -156,6 +161,27 @@ describe('AgentsService', () => { expect(agentTaskService.requestReconcile).toHaveBeenCalledWith(agentId); expect(testChatService.clearAllTestChatMessages).toHaveBeenCalledWith(agentId); expect(agentKnowledgeService.destroySandbox).toHaveBeenCalledWith(projectId, agentId); + expect(eventService.emit).toHaveBeenCalledWith('agent-deleted', { agentId, projectId }); + }); + + it('emits agent-deleted only after the agent row is removed', async () => { + const { service, agentRepository, eventService } = makeService(); + agentRepository.findByIdAndProjectId.mockResolvedValue(makeAgent()); + + await service.delete(agentId, projectId); + + expect(eventService.emit).toHaveBeenCalledWith('agent-deleted', { agentId, projectId }); + expect(eventService.emit.mock.invocationCallOrder[0]).toBeGreaterThan( + agentRepository.remove.mock.invocationCallOrder[0], + ); + }); + + it('does not emit agent-deleted when the agent is missing', async () => { + const { service, agentRepository, eventService } = makeService(); + agentRepository.findByIdAndProjectId.mockResolvedValue(null); + + await expect(service.delete(agentId, projectId)).resolves.toBe(false); + expect(eventService.emit).not.toHaveBeenCalled(); }); it('still deletes the agent when best-effort cleanup fails', async () => { diff --git a/packages/cli/src/modules/agents/agents.service.ts b/packages/cli/src/modules/agents/agents.service.ts index 26beac3b11d..eb7c58910c8 100644 --- a/packages/cli/src/modules/agents/agents.service.ts +++ b/packages/cli/src/modules/agents/agents.service.ts @@ -20,6 +20,7 @@ import { ChatIntegrationService } from './integrations/chat-integration.service' import { AgentTaskRepository } from './repositories/agent-task.repository'; import { AgentRepository } from './repositories/agent.repository'; import { SubAgentCleanupService } from './sub-agents/sub-agent-cleanup.service'; +import { EventService } from '@/events/event.service'; @Service() export class AgentsService { @@ -32,6 +33,7 @@ export class AgentsService { private readonly testChatService: AgentTestChatService, private readonly agentTaskRepository: AgentTaskRepository, private readonly subAgentCleanupService: SubAgentCleanupService, + private readonly eventService: EventService, ) {} async create(projectId: string, name: string): Promise { @@ -211,6 +213,8 @@ export class AgentsService { await this.subAgentCleanupService.removeSubAgentFromParents(agentId, projectId); + this.eventService.emit('agent-deleted', { agentId, projectId }); + try { const { AgentTaskService } = await import('./agent-task.service'); await Container.get(AgentTaskService).requestReconcile(agentId); diff --git a/packages/cli/src/modules/data-table/__tests__/data-table-ddl.service.test.ts b/packages/cli/src/modules/data-table/__tests__/data-table-ddl.service.test.ts index a2317e147a3..e6fa0ee552e 100644 --- a/packages/cli/src/modules/data-table/__tests__/data-table-ddl.service.test.ts +++ b/packages/cli/src/modules/data-table/__tests__/data-table-ddl.service.test.ts @@ -10,6 +10,7 @@ import * as sqlUtils from '../utils/sql-utils'; vi.mock('../utils/sql-utils', async () => ({ ...(await vi.importActual('../utils/sql-utils')), renameColumnQuery: vi.fn(), + renameTableQuery: vi.fn(), toTableName: vi.fn(), })); @@ -49,6 +50,47 @@ describe('DataTableDDLService', () => { vi.clearAllMocks(); }); + describe('renameTable', () => { + beforeEach(() => { + (sqlUtils.toTableName as Mock).mockImplementation( + (id: string) => `n8n_data_table_user_${id}`, + ); + }); + + it('should execute the rename table query', async () => { + const expectedQuery = + 'ALTER TABLE "n8n_data_table_user_oldId1" RENAME TO "n8n_data_table_user_newId1"'; + (sqlUtils.renameTableQuery as Mock).mockReturnValue(expectedQuery); + + await ddlService.renameTable('oldId1', 'newId1', 'postgres'); + + expect(sqlUtils.renameTableQuery).toHaveBeenCalledWith( + 'n8n_data_table_user_oldId1', + 'n8n_data_table_user_newId1', + 'postgres', + ); + expect(mockEntityManager.query).toHaveBeenCalledWith(expectedQuery); + }); + + it('should reject invalid data table ids', async () => { + await expect(ddlService.renameTable('old-id!', 'newId1', 'postgres')).rejects.toThrow( + 'Invalid data table ID', + ); + expect(mockEntityManager.query).not.toHaveBeenCalled(); + }); + }); + + describe('tableExists', () => { + it('should check the physical table via the query runner', async () => { + (sqlUtils.toTableName as Mock).mockReturnValue('n8n_data_table_user_dt1'); + const hasTable = vi.fn().mockResolvedValue(true); + (mockEntityManager as any).queryRunner = { hasTable }; + + await expect(ddlService.tableExists('dt1')).resolves.toBe(true); + expect(hasTable).toHaveBeenCalledWith('n8n_data_table_user_dt1'); + }); + }); + describe('renameColumn', () => { const dataTableId = 'test-table-id'; const oldColumnName = 'old_column'; diff --git a/packages/cli/src/modules/data-table/data-table-ddl.service.ts b/packages/cli/src/modules/data-table/data-table-ddl.service.ts index 5c7016145ee..628e2da8d0b 100644 --- a/packages/cli/src/modules/data-table/data-table-ddl.service.ts +++ b/packages/cli/src/modules/data-table/data-table-ddl.service.ts @@ -7,7 +7,9 @@ import { DataTableColumn } from './data-table-column.entity'; import { addColumnQuery, deleteColumnQuery, + isValidDataTableId, renameColumnQuery, + renameTableQuery, toDslColumns, toTableName, } from './utils/sql-utils'; @@ -48,6 +50,33 @@ export class DataTableDDLService { }); } + async renameTable( + oldDataTableId: string, + newDataTableId: string, + dbType: DataSourceOptions['type'], + trx?: EntityManager, + ) { + // These ids come from git files and the local DB rather than validated + // API requests, so guard before deriving SQL identifiers from them + if (!isValidDataTableId(oldDataTableId) || !isValidDataTableId(newDataTableId)) { + throw new UnexpectedError('Invalid data table ID'); + } + await withTransaction(this.dataSource.manager, trx, async (em) => { + await em.query( + renameTableQuery(toTableName(oldDataTableId), toTableName(newDataTableId), dbType), + ); + }); + } + + async tableExists(dataTableId: string, trx?: EntityManager): Promise { + return await withTransaction(this.dataSource.manager, trx, async (em) => { + if (!em.queryRunner) { + throw new UnexpectedError('QueryRunner is not available'); + } + return await em.queryRunner.hasTable(toTableName(dataTableId)); + }); + } + async addColumn( dataTableId: string, column: DataTableColumn, diff --git a/packages/cli/src/modules/data-table/utils/sql-utils.ts b/packages/cli/src/modules/data-table/utils/sql-utils.ts index e13598ae498..176156daa31 100644 --- a/packages/cli/src/modules/data-table/utils/sql-utils.ts +++ b/packages/cli/src/modules/data-table/utils/sql-utils.ts @@ -125,6 +125,15 @@ export function renameColumnQuery( return `ALTER TABLE ${quotedTableName} RENAME COLUMN ${quotedOldName} TO ${quotedNewName}`; } +export function renameTableQuery( + oldTableName: DataTableUserTableName, + newTableName: DataTableUserTableName, + dbType: DataSourceOptions['type'], +): string { + // `ALTER TABLE ... RENAME TO` is valid on both SQLite and Postgres + return `ALTER TABLE ${quoteIdentifier(oldTableName, dbType)} RENAME TO ${quoteIdentifier(newTableName, dbType)}`; +} + export function quoteIdentifier(name: string, dbType: DataSourceOptions['type']): string { switch (dbType) { case 'postgres': diff --git a/packages/cli/src/modules/favorites/__tests__/favorites.event-relay.test.ts b/packages/cli/src/modules/favorites/__tests__/favorites.event-relay.test.ts index a28edce0743..bdef1ac966a 100644 --- a/packages/cli/src/modules/favorites/__tests__/favorites.event-relay.test.ts +++ b/packages/cli/src/modules/favorites/__tests__/favorites.event-relay.test.ts @@ -76,4 +76,19 @@ describe('FavoritesEventRelay', () => { expect(favoritesService.deleteByResource).toHaveBeenCalledWith('proj1', 'project'); }); }); + + describe('agent-deleted', () => { + it('should delete favorites for the deleted agent', async () => { + const event: RelayEventMap['agent-deleted'] = { + agentId: 'agent1', + projectId: 'proj1', + }; + + eventService.emit('agent-deleted', event); + + await new Promise(setImmediate); + + expect(favoritesService.deleteByResource).toHaveBeenCalledWith('agent1', 'agent'); + }); + }); }); diff --git a/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts b/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts index 0834388cf9f..56e9719beda 100644 --- a/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts +++ b/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts @@ -12,6 +12,7 @@ import { mock } from 'vitest-mock-extended'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { DataTableRepository } from '@/modules/data-table/data-table.repository'; +import type { AgentRepository } from '@/modules/agents/repositories/agent.repository'; import type { UserFavorite } from '../database/entities/user-favorite.entity'; import type { UserFavoriteRepository } from '../database/repositories/user-favorite.repository'; @@ -47,6 +48,7 @@ describe('FavoritesService', () => { const sharedWorkflowRepository = mock(); const dataTableRepository = mock(); const folderRepository = mock(); + const agentRepository = mock(); const service = new FavoritesService( repo, workflowRepository, @@ -54,6 +56,7 @@ describe('FavoritesService', () => { sharedWorkflowRepository, dataTableRepository, folderRepository, + agentRepository, ); afterEach(() => vi.clearAllMocks()); @@ -231,12 +234,48 @@ describe('FavoritesService', () => { expect(result).toHaveLength(0); }); + it('should enrich agent favorites with name and projectId for accessible agents', async () => { + const favorite = makeUserFavorite({ resourceId: 'agent1', resourceType: 'agent' }); + repo.findByUser.mockResolvedValue([favorite]); + projectRepository.getAccessibleProjects.mockResolvedValue([ + { id: 'proj1', name: 'Project 1' } as never, + ]); + agentRepository.find.mockResolvedValue([ + { id: 'agent1', name: 'My Agent', projectId: 'proj1' } as never, + ]); + + const result = await service.getEnrichedFavorites(makeUser()); + + expect(result).toHaveLength(1); + expect(result[0]).toMatchObject({ + resourceId: 'agent1', + resourceName: 'My Agent', + resourceProjectId: 'proj1', + }); + }); + + it('should exclude agent favorites for inaccessible projects', async () => { + const favorite = makeUserFavorite({ resourceId: 'agent1', resourceType: 'agent' }); + repo.findByUser.mockResolvedValue([favorite]); + projectRepository.getAccessibleProjects.mockResolvedValue([ + { id: 'proj1', name: 'Project 1' } as never, + ]); + agentRepository.find.mockResolvedValue([ + { id: 'agent1', name: 'My Agent', projectId: 'proj-other' } as never, + ]); + + const result = await service.getEnrichedFavorites(makeUser()); + + expect(result).toHaveLength(0); + }); + it('should handle multiple resource types in one call', async () => { repo.findByUser.mockResolvedValue([ makeUserFavorite({ id: 1, resourceId: 'wf1', resourceType: 'workflow' }), makeUserFavorite({ id: 2, resourceId: 'proj1', resourceType: 'project' }), makeUserFavorite({ id: 3, resourceId: 'dt1', resourceType: 'dataTable' }), makeUserFavorite({ id: 4, resourceId: 'folder1', resourceType: 'folder' }), + makeUserFavorite({ id: 5, resourceId: 'agent1', resourceType: 'agent' }), ]); projectRepository.getAccessibleProjects.mockResolvedValue([ { id: 'proj1', name: 'My Project' } as never, @@ -249,10 +288,13 @@ describe('FavoritesService', () => { folderRepository.find.mockResolvedValue([ { id: 'folder1', name: 'My Folder', homeProject: { id: 'proj1' } } as never, ]); + agentRepository.find.mockResolvedValue([ + { id: 'agent1', name: 'My Agent', projectId: 'proj1' } as never, + ]); const result = await service.getEnrichedFavorites(makeUser()); - expect(result).toHaveLength(4); + expect(result).toHaveLength(5); }); describe('global admin access', () => { @@ -328,6 +370,24 @@ describe('FavoritesService', () => { }); }); + it('should enrich agent favorites without explicit project membership', async () => { + const favorite = makeUserFavorite({ resourceId: 'agent1', resourceType: 'agent' }); + repo.findByUser.mockResolvedValue([favorite]); + projectRepository.getAccessibleProjects.mockResolvedValue([]); + agentRepository.find.mockResolvedValue([ + { id: 'agent1', name: 'My Agent', projectId: 'proj-other' } as never, + ]); + + const result = await service.getEnrichedFavorites(makeAdmin()); + + expect(result).toHaveLength(1); + expect(result[0]).toMatchObject({ + resourceId: 'agent1', + resourceName: 'My Agent', + resourceProjectId: 'proj-other', + }); + }); + it('should not query for additional projects when admin already has membership', async () => { const favorite = makeUserFavorite({ resourceId: 'proj1', resourceType: 'project' }); repo.findByUser.mockResolvedValue([favorite]); @@ -417,6 +477,7 @@ describe('FavoritesService', () => { { resourceType: 'project' as const, repository: 'projectRepository' }, { resourceType: 'dataTable' as const, repository: 'dataTableRepository' }, { resourceType: 'folder' as const, repository: 'folderRepository' }, + { resourceType: 'agent' as const, repository: 'agentRepository' }, ])( 'should check existence using the correct repository for $resourceType', async ({ resourceType, repository }) => { @@ -425,6 +486,7 @@ describe('FavoritesService', () => { projectRepository, dataTableRepository, folderRepository, + agentRepository, }; repo.findOne.mockResolvedValue(null); repositories[repository as keyof typeof repositories].existsBy.mockResolvedValue(false); diff --git a/packages/cli/src/modules/favorites/favorites.event-relay.ts b/packages/cli/src/modules/favorites/favorites.event-relay.ts index ca92df6ffe7..c4489511471 100644 --- a/packages/cli/src/modules/favorites/favorites.event-relay.ts +++ b/packages/cli/src/modules/favorites/favorites.event-relay.ts @@ -22,9 +22,10 @@ export class FavoritesEventRelay extends EventRelay { await this.favoritesService.deleteByResource(dataTableId, 'dataTable'), 'folder-deleted': async ({ folderId }) => await this.favoritesService.deleteByResource(folderId, 'folder'), - 'team-project-deleted': async ({ projectId }) => { - await this.favoritesService.deleteByResource(projectId, 'project'); - }, + 'team-project-deleted': async ({ projectId }) => + await this.favoritesService.deleteByResource(projectId, 'project'), + 'agent-deleted': async ({ agentId }) => + await this.favoritesService.deleteByResource(agentId, 'agent'), }); } } diff --git a/packages/cli/src/modules/favorites/favorites.service.ts b/packages/cli/src/modules/favorites/favorites.service.ts index 045957fc189..0e0c9b71025 100644 --- a/packages/cli/src/modules/favorites/favorites.service.ts +++ b/packages/cli/src/modules/favorites/favorites.service.ts @@ -17,6 +17,8 @@ import { DataTableRepository } from '@/modules/data-table/data-table.repository' import { UserFavoriteRepository } from './database/repositories/user-favorite.repository'; +import { AgentRepository } from '../agents/repositories/agent.repository'; + type ResourceMeta = { name: string; projectId: string }; type Favorite = { resourceId: string; resourceType: FavoriteResourceType }; @@ -48,6 +50,7 @@ export class FavoritesService { private readonly sharedWorkflowRepository: SharedWorkflowRepository, private readonly dataTableRepository: DataTableRepository, private readonly folderRepository: FolderRepository, + private readonly agentRepository: AgentRepository, ) {} async getEnrichedFavorites(user: User) { @@ -59,16 +62,18 @@ export class FavoritesService { project: idsOfType(favorites, 'project'), dataTable: idsOfType(favorites, 'dataTable'), folder: idsOfType(favorites, 'folder'), + agent: idsOfType(favorites, 'agent'), }; const accessibleProjects = await this.projectRepository.getAccessibleProjects(user.id); const accessibleProjectIds = new Set(accessibleProjects.map((p) => p.id)); - const [workflowNames, projectNames, dataTableMeta, folderMeta] = await Promise.all([ + const [workflowNames, projectNames, dataTableMeta, folderMeta, agentMeta] = await Promise.all([ this.enrichWorkflowFavorites(user, ids.workflow, accessibleProjectIds), this.enrichProjectFavorites(user, ids.project, accessibleProjects), this.enrichDataTableFavorites(user, ids.dataTable, accessibleProjectIds), this.enrichFolderFavorites(user, ids.folder, accessibleProjectIds), + this.enrichAgentFavorites(user, ids.agent, accessibleProjectIds), ]); return favorites.flatMap((fav) => { @@ -81,6 +86,8 @@ export class FavoritesService { return enrichWithMeta(fav, dataTableMeta.get(fav.resourceId)); case 'folder': return enrichWithMeta(fav, folderMeta.get(fav.resourceId)); + case 'agent': + return enrichWithMeta(fav, agentMeta.get(fav.resourceId)); default: return []; } @@ -183,6 +190,27 @@ export class FavoritesService { return result; } + private async enrichAgentFavorites( + user: User, + agentIds: string[], + accessibleProjectIds: Set, + ): Promise> { + const result = new Map(); + if (agentIds.length === 0) return result; + + const hasGlobalAccess = hasGlobalScope(user, 'agent:read'); + const agents = await this.agentRepository.find({ + where: { id: In(agentIds) }, + }); + + for (const agent of agents) { + if (hasGlobalAccess || accessibleProjectIds.has(agent.projectId)) { + result.set(agent.id, { name: agent.name, projectId: agent.projectId }); + } + } + return result; + } + async addFavorite(userId: string, resourceId: string, resourceType: FavoriteResourceType) { const existing = await this.userFavoriteRepository.findOne({ where: { userId, resourceId, resourceType }, @@ -220,6 +248,9 @@ export class FavoritesService { case 'folder': exists = await this.folderRepository.existsBy({ id: resourceId }); break; + case 'agent': + exists = await this.agentRepository.existsBy({ id: resourceId }); + break; } if (!exists) { diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts index 9dc1bb09375..a41ca4b4ae9 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts @@ -1,22 +1,33 @@ // Mock the barrel import so these adapter tests only exercise local formatting helpers. -vi.mock('@n8n/instance-ai', () => ({ - wrapUntrustedData(content: string, source: string, label?: string): string { - const esc = (s: string) => - s.replace(/&/g, '&').replace(/"/g, '"').replace(//g, '>'); - const safeLabel = label ? ` label="${esc(label)}"` : ''; - const safeContent = content.replace(/<\/untrusted_data/gi, '</untrusted_data'); - return `\n${safeContent}\n`; - }, - builderTemplatesOptionsFromEnv: () => ({}), - BuilderTemplatesService: class { - async getBundle() { - return { files: [], indexTxt: '', version: null }; - } - getVersion() { - return null; - } - }, -})); +vi.mock('@n8n/instance-ai', async () => { + const { WorkflowSaveConflictError } = await import( + '../../../../../@n8n/instance-ai/src/errors/workflow-save-conflict.error' + ); + return { + WorkflowSaveConflictError, + wrapUntrustedData(content: string, source: string, label?: string): string { + const esc = (s: string) => + s + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); + const safeLabel = label ? ` label="${esc(label)}"` : ''; + const safeContent = content.replace(/<\/untrusted_data/gi, '</untrusted_data'); + return `\n${safeContent}\n`; + }, + builderTemplatesOptionsFromEnv: () => ({}), + deriveCredentialHosts: vi.fn().mockReturnValue([]), + BuilderTemplatesService: class { + async getBundle() { + return { files: [], indexTxt: '', version: null }; + } + getVersion() { + return null; + } + }, + }; +}); import type { Mock, Mocked, MockInstance } from 'vitest'; @@ -1207,7 +1218,9 @@ import type { DataTableRepository } from '@/modules/data-table/data-table.reposi import type { DataTableService } from '@/modules/data-table/data-table.service'; import type { SourceControlPreferencesService } from '@/modules/source-control.ee/source-control-preferences.service.ee'; import type { WorkflowJSON } from '@n8n/workflow-sdk'; +import { WorkflowSaveConflictError } from '../../../../../@n8n/instance-ai/src/errors/workflow-save-conflict.error'; import type { WorkflowService } from '@/workflows/workflow.service'; +import { ConflictError } from '@/errors/response-errors/conflict.error'; import type { License } from '@/license'; import type { RoleService } from '@/services/role.service'; @@ -2345,6 +2358,42 @@ describe('createWorkflowAdapter', () => { expect(updateData.nodes[0].credentials).toBeUndefined(); }); + it('forwards expectedChecksum to workflowService.update', async () => { + const { adapter, mockWorkflowService } = createWorkflowAdapterForTests(); + + await adapter.updateFromWorkflowJSON('wf-new', minimalWorkflowJSON, { + expectedChecksum: 'expected-checksum', + }); + + expect(mockWorkflowService.update).toHaveBeenCalledWith( + expect.anything(), + expect.anything(), + 'wf-new', + expect.objectContaining({ expectedChecksum: 'expected-checksum', source: 'n8n-ai' }), + ); + }); + + it('throws WorkflowSaveConflictError when expectedChecksum mismatches', async () => { + const { adapter, mockWorkflowService } = createWorkflowAdapterForTests(); + mockWorkflowService.update.mockRejectedValueOnce(new ConflictError('conflict')); + + await expect( + adapter.updateFromWorkflowJSON('wf-new', minimalWorkflowJSON, { + expectedChecksum: 'stale-checksum', + }), + ).rejects.toBeInstanceOf(WorkflowSaveConflictError); + }); + + it('returns a checksum on create and update saves', async () => { + const { adapter } = createWorkflowAdapterForTests(); + + const created = await adapter.createFromWorkflowJSON(minimalWorkflowJSON); + const updated = await adapter.updateFromWorkflowJSON('wf-new', minimalWorkflowJSON); + + expect(created.checksum).toEqual(expect.any(String)); + expect(updated.checksum).toEqual(expect.any(String)); + }); + it('clears the AI-builder temporary marker when promoting the main workflow', async () => { const { adapter, mockAiBuilderTemporaryWorkflowRepository, mockWorkflowRepository } = createWorkflowAdapterForTests(); @@ -2615,42 +2664,27 @@ describe('createExecutionAdapter', () => { vi.clearAllMocks(); }); - it('passes user and sharingOptions to execution query when sharing is enabled', async () => { - const { adapter, mockExecutionRepository, mockUser } = createExecutionAdapterForTests({ - sharingEnabled: true, - }); + it.each([true, false])( + 'passes scope-based sharingOptions to execution query (sharing licensed: %s)', + async (sharingEnabled) => { + const { adapter, mockExecutionRepository, mockUser } = createExecutionAdapterForTests({ + sharingEnabled, + }); - await adapter.list(); + await adapter.list(); - expect(mockExecutionRepository.findManyByRangeQuery).toHaveBeenCalledWith( - expect.objectContaining({ - user: mockUser, - sharingOptions: { - scopes: ['workflow:read'], - projectRoles: ['project:editor'], - workflowRoles: ['workflow:owner', 'workflow:editor'], - }, - }), - ); - }); - - it('passes user and owner-only sharingOptions when sharing is disabled', async () => { - const { adapter, mockExecutionRepository, mockUser } = createExecutionAdapterForTests({ - sharingEnabled: false, - }); - - await adapter.list(); - - expect(mockExecutionRepository.findManyByRangeQuery).toHaveBeenCalledWith( - expect.objectContaining({ - user: mockUser, - sharingOptions: { - workflowRoles: ['workflow:owner'], - projectRoles: ['project:personalOwner'], - }, - }), - ); - }); + expect(mockExecutionRepository.findManyByRangeQuery).toHaveBeenCalledWith( + expect.objectContaining({ + user: mockUser, + sharingOptions: { + scopes: ['workflow:read'], + projectRoles: ['project:editor'], + workflowRoles: ['workflow:owner', 'workflow:editor'], + }, + }), + ); + }, + ); it('does not pass accessibleWorkflowIds to execution query', async () => { const { adapter, mockExecutionRepository } = createExecutionAdapterForTests({ diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts index ac600c239a2..8d6a79a0677 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts @@ -2471,6 +2471,55 @@ describe('InstanceAiService — terminal response guard wiring', () => { expect(service.eventBus.events.map((event) => event.type)).toEqual(['error', 'run-finish']); expect(service.saveAgentTreeSnapshot).toHaveBeenCalledWith('thread-a', 'run-1', {}); + // Thrown run-loop errors must reach telemetry too, not just the SSE stream + expect(service.telemetry.track).toHaveBeenCalledWith('instance_ai_run_finished', { + thread_id: 'thread-a', + run_id: 'run-1', + status: 'error', + user_id: 'user-1', + }); + expect(service.telemetry.track).toHaveBeenCalledWith('Builder generation errored', { + thread_id: 'thread-a', + run_id: 'run-1', + error_message: 'provider failed', + error_source: 'exception', + user_id: 'user-1', + }); + }); + + it('tracks "Builder generation errored" when a resumed stream reports an error', async () => { + const service = createTerminalGuardOrderService(); + const abortController = new AbortController(); + vi.mocked(resumeAgentRun).mockResolvedValueOnce({ + status: 'errored', + agentRunId: 'agent-run-1', + text: Promise.resolve(''), + error: new Error('model overloaded'), + workSummary: { toolCalls: [], totalToolCalls: 0, totalToolErrors: 0 }, + }); + + await service.processResumedStream( + {}, + {}, + { + runId: 'run-1', + agentRunId: 'agent-run-1', + threadId: 'thread-a', + user: fakeUser, + toolCallId: 'tool-call-1', + signal: abortController.signal, + abortController, + snapshotStorage: {}, + }, + ); + + expect(service.telemetry.track).toHaveBeenCalledWith('Builder generation errored', { + thread_id: 'thread-a', + run_id: 'run-1', + error_message: 'model overloaded', + error_source: 'stream', + user_id: 'user-1', + }); }); it('claims credits when a resumed run completes', async () => { diff --git a/packages/cli/src/modules/instance-ai/eval/__tests__/mock-handler.test.ts b/packages/cli/src/modules/instance-ai/eval/__tests__/mock-handler.test.ts index f74af24da9f..e0545e35a1f 100644 --- a/packages/cli/src/modules/instance-ai/eval/__tests__/mock-handler.test.ts +++ b/packages/cli/src/modules/instance-ai/eval/__tests__/mock-handler.test.ts @@ -434,6 +434,8 @@ describe('createLlmMockHandler', () => { }); it('should surface the rejection reason when a rejected spec is never resubmitted', async () => { + // One rejected submission per attempt (initial + DEFAULT_MAX_RETRIES). + llmSubmits({ type: 'text', contentType: 'text/xml' }); llmSubmits({ type: 'text', contentType: 'text/xml' }); llmSubmits({ type: 'text', contentType: 'text/xml' }); const handler = createLlmMockHandler(); diff --git a/packages/cli/src/modules/instance-ai/eval/execution.service.ts b/packages/cli/src/modules/instance-ai/eval/execution.service.ts index 513a070f6dc..5a1b751b6d1 100644 --- a/packages/cli/src/modules/instance-ai/eval/execution.service.ts +++ b/packages/cli/src/modules/instance-ai/eval/execution.service.ts @@ -345,6 +345,20 @@ export class EvalExecutionService { fillSetupPendingResourceLocators(node.parameters); } + // Time-based Wait nodes park the execution until a future timestamp + // (specificTime) or sleep away the scenario budget (timeInterval), so + // downstream nodes never run inside the eval window even when the built + // workflow is correct. Zero them — execution order and branch structure + // stay observable, and the verifier still sees the builder's original + // wait config in the workflow JSON. Webhook/form-resume waits are left + // untouched (they model an external event, not the passage of time). + for (const node of workflowEntity.nodes) { + if (node.disabled || node.type !== 'n8n-nodes-base.wait') continue; + const resume = node.parameters?.resume; + if (resume === 'webhook' || resume === 'form') continue; + node.parameters = { ...node.parameters, resume: 'timeInterval', amount: 0, unit: 'seconds' }; + } + const workflow = this.buildWorkflow(workflowEntity); // Multi-trigger workflows: Phase 1 picks the trigger the scenario targets // (firing the wrong one leaves the scenario's branch dormant and fails it). diff --git a/packages/cli/src/modules/instance-ai/eval/mock-handler.ts b/packages/cli/src/modules/instance-ai/eval/mock-handler.ts index d8a58dc6a2f..816dd5a2d05 100644 --- a/packages/cli/src/modules/instance-ai/eval/mock-handler.ts +++ b/packages/cli/src/modules/instance-ai/eval/mock-handler.ts @@ -74,7 +74,12 @@ For APIs that return empty responses on success (204/202), call submit_response // Types // --------------------------------------------------------------------------- -const DEFAULT_MAX_RETRIES = 1; +// 2 retries: worst case 120s + 300s + 300s = 720s stays inside the 900s +// scenario budget. One retry left large-payload generations (32-row klines, +// multi-entry forecasts) failing both attempts under provider contention — +// observed as _evalMockError mock_issue rows and client-side scenario aborts +// in run 29012884140 (trading-bot, weather-alert families). +const DEFAULT_MAX_RETRIES = 2; const ERROR_PREVIEW_MAX = 400; const ERROR_DETAIL_MAX = 300; diff --git a/packages/cli/src/modules/instance-ai/eval/mock-quirks.ts b/packages/cli/src/modules/instance-ai/eval/mock-quirks.ts index 58c238c1140..c39fd396f7f 100644 --- a/packages/cli/src/modules/instance-ai/eval/mock-quirks.ts +++ b/packages/cli/src/modules/instance-ai/eval/mock-quirks.ts @@ -173,6 +173,15 @@ export const MOCK_QUIRKS: MockQuirk[] = [ 'S3 mixes binary and empty responses on the same path skeleton; downstream nodes (Extract from File, image processing) expect a real file body for GET.', addedAt: '2026-05-19', }, + { + service: 'Generativelanguage', + hostnames: ['generativelanguage.googleapis.com'], + guidance: + 'Google Gemini `POST /v1beta/models/{model}:generateContent` (also `/v1/...`) → the FULL Gemini envelope: `{ "candidates": [{ "content": { "parts": [{ "text": "" }], "role": "model" }, "finishReason": "STOP", "index": 0 }], "usageMetadata": { "promptTokenCount": 10, "candidatesTokenCount": 20, "totalTokenCount": 30 } }`. The `candidates[].content.parts[].text` path is REQUIRED — the n8n Gemini node reads exactly that and yields nothing (or crashes) without it. NEVER return a bare `{ "text": ... }`, `{ "content": ... }`, or the answer object at the top level. When the request demands JSON output (`generationConfig.responseMimeType: "application/json"`, a `responseSchema`, or prompt instructions for a JSON document), the JSON goes INSIDE `parts[0].text` as a STRING — still wrapped in the full envelope.', + rationale: + 'The Gemini node parses candidates[].content.parts; bare payload objects yield empty output that downstream IF/parse nodes then misroute. Observed as mock_issue rows in run 29012884140 (whatsapp-faq-assistant, weekly-social-content-scheduler).', + addedAt: '2026-07-09', + }, ]; /** diff --git a/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts b/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts index 01744d6e835..5c9de2fb4c1 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts @@ -45,6 +45,7 @@ import { builderTemplatesOptionsFromEnv, wrapUntrustedData, deriveCredentialHosts, + WorkflowSaveConflictError, } from '@n8n/instance-ai'; import type { WorkflowJSON } from '@n8n/workflow-sdk'; import { upsertEvaluationConfigSchema } from '@n8n/api-types'; @@ -76,7 +77,7 @@ import { import { Logger, ModuleRegistry } from '@n8n/backend-common'; import { OutboundHttp, SsrfProtectionService } from '@n8n/backend-network'; import { Container, Service } from '@n8n/di'; -import { hasGlobalScope, PROJECT_OWNER_ROLE_SLUG, type Scope } from '@n8n/permissions'; +import { hasGlobalScope, type Scope } from '@n8n/permissions'; // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import import { LessThan } from '@n8n/typeorm'; import { @@ -105,9 +106,11 @@ import { UnexpectedError, jsonParse, createRunExecutionData, + calculateWorkflowChecksum, } from 'n8n-workflow'; import { ActiveExecutions } from '@/active-executions'; +import { ConflictError } from '@/errors/response-errors/conflict.error'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; import { EvaluationConfigService } from '@/evaluation.ee/evaluation-config.service'; @@ -466,7 +469,7 @@ export class InstanceAiAdapterService { throw new Error(`Workflow ${workflowId} not found or not accessible`); } - return toWorkflowDetail(workflow, { redactParameters }); + return await toWorkflowDetailWithChecksum(workflow, { redactParameters }); }, async archive(workflowId: string) { @@ -709,13 +712,13 @@ export class InstanceAiAdapterService { }); } - return toWorkflowDetail(updated, { redactParameters }); + return await toWorkflowDetailWithChecksum(updated, { redactParameters }); }, async updateFromWorkflowJSON( workflowId: string, json: WorkflowJSON, - _options?: { projectId?: string }, + options?: { projectId?: string; expectedChecksum?: string }, ) { assertNotReadOnly(); // Strip redactionPolicy if the user lacks the required directional scope — @@ -769,8 +772,12 @@ export class InstanceAiAdapterService { updated = await workflowService.update(user, updateData, workflowId, { source: 'n8n-ai', + ...(options?.expectedChecksum ? { expectedChecksum: options.expectedChecksum } : {}), }); } catch (error) { + if (error instanceof ConflictError) { + throw new WorkflowSaveConflictError(workflowId); + } logger.warn('AI-builder workflow save failed', { threadId, workflowId, @@ -786,7 +793,7 @@ export class InstanceAiAdapterService { }); } - return toWorkflowDetail(updated, { redactParameters }); + return await toWorkflowDetailWithChecksum(updated, { redactParameters }); }, async listVersions(workflowId, options) { @@ -889,7 +896,6 @@ export class InstanceAiAdapterService { executionRepository, nodeTypes, allowSendingParameterValues, - license, roleService, telemetry, logger, @@ -929,17 +935,15 @@ export class InstanceAiAdapterService { async list(options) { const scope: Scope = 'workflow:read'; - let sharingOptions: ExecutionSummaries.RangeQuery['sharingOptions']; - if (license.isSharingEnabled()) { - const projectRoles = await roleService.rolesWithScope('project', [scope]); - const workflowRoles = await roleService.rolesWithScope('workflow', [scope]); - sharingOptions = { scopes: [scope], projectRoles, workflowRoles }; - } else { - sharingOptions = { - workflowRoles: ['workflow:owner'], - projectRoles: [PROJECT_OWNER_ROLE_SLUG], - }; - } + // Visibility from role scopes, not the sharing license — mirrors + // ExecutionService.buildSharingOptions and the REST executions list. + const projectRoles = await roleService.rolesWithScope('project', [scope]); + const workflowRoles = await roleService.rolesWithScope('workflow', [scope]); + const sharingOptions: ExecutionSummaries.RangeQuery['sharingOptions'] = { + scopes: [scope], + projectRoles, + workflowRoles, + }; const query: ExecutionSummaries.RangeQuery = { kind: 'range' as const, @@ -3396,3 +3400,12 @@ function toWorkflowDetail( settings: workflow.settings as Record | undefined, }; } + +async function toWorkflowDetailWithChecksum( + workflow: WorkflowEntity, + options?: { redactParameters?: boolean }, +): Promise { + const detail = toWorkflowDetail(workflow, options); + detail.checksum = await calculateWorkflowChecksum(workflow); + return detail; +} diff --git a/packages/cli/src/modules/instance-ai/instance-ai.service.ts b/packages/cli/src/modules/instance-ai/instance-ai.service.ts index 6c66c794c09..875e72db5a5 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai.service.ts @@ -304,6 +304,14 @@ function getAbortReason(signal: AbortSignal): string { return typeof reason === 'string' ? reason : 'user_cancelled'; } +/** Error details for the 'Builder generation errored' telemetry event. */ +type RunFinishErrorInfo = { + /** Raw error message — the SSE run-finish payload carries the user-facing reason instead. */ + errorMessage?: string; + /** 'stream' = the run reported an error but terminated cleanly; 'exception' = the run loop threw. */ + errorSource?: 'stream' | 'exception'; +}; + const MAX_CONCURRENT_BACKGROUND_TASKS_PER_THREAD = 5; const TITLE_REFINE_HISTORY_LIMIT = 50; @@ -3454,6 +3462,16 @@ export class InstanceAiService { workSummary: result.workSummary, usage: result.usage, errorReason: userFacingErrorMessage, + ...(result.status === 'errored' + ? { + errorInfo: { + errorMessage: result.error + ? getErrorMessage(result.error) + : 'Instance AI stream errored', + errorSource: 'stream' as const, + }, + } + : {}), }); // Bill token usage for every terminal outcome (completed / cancelled / errored), @@ -3571,16 +3589,15 @@ export class InstanceAiService { aiCreatedWorkflowIds, this.backgroundTasks.getRunningTasks(threadId).length, ); - this.eventBus.publish(threadId, { - type: 'run-finish', + this.publishRunFinish( + threadId, runId, - agentId: orchestratorAgentId(runId), - payload: { - status: 'error', - reason: userFacingErrorMessage, - ...(archivedWorkflowIds.length > 0 ? { archivedWorkflowIds } : {}), - }, - }); + 'errored', + userFacingErrorMessage, + archivedWorkflowIds, + user.id, + { errorMessage, errorSource: 'exception' }, + ); if (activeSnapshotStorage) { await this.saveAgentTreeSnapshot(threadId, runId, activeSnapshotStorage); } @@ -4575,6 +4592,16 @@ export class InstanceAiService { workSummary: result.workSummary, usage: result.usage, errorReason: userFacingErrorMessage, + ...(result.status === 'errored' + ? { + errorInfo: { + errorMessage: result.error + ? getErrorMessage(result.error) + : 'Instance AI resumed stream errored', + errorSource: 'stream' as const, + }, + } + : {}), }); // Bill token usage for every terminal outcome, deduped per run segment. @@ -4685,16 +4712,15 @@ export class InstanceAiService { undefined, this.backgroundTasks.getRunningTasks(opts.threadId).length, ); - this.eventBus.publish(opts.threadId, { - type: 'run-finish', - runId: opts.runId, - agentId: orchestratorAgentId(opts.runId), - payload: { - status: 'error', - reason: userFacingErrorMessage, - ...(archivedWorkflowIds.length > 0 ? { archivedWorkflowIds } : {}), - }, - }); + this.publishRunFinish( + opts.threadId, + opts.runId, + 'errored', + userFacingErrorMessage, + archivedWorkflowIds, + opts.user.id, + { errorMessage, errorSource: 'exception' }, + ); await this.saveAgentTreeSnapshot(opts.threadId, opts.runId, opts.snapshotStorage); } finally { this.runState.clearActiveRun(opts.threadId); @@ -5097,6 +5123,7 @@ export class InstanceAiService { reason?: string, archivedWorkflowIds?: string[], userId?: string, + errorInfo?: RunFinishErrorInfo, ): void { const effectiveStatus = status === 'errored' ? 'error' : status; const hasArchived = archivedWorkflowIds && archivedWorkflowIds.length > 0; @@ -5121,6 +5148,15 @@ export class InstanceAiService { status: effectiveStatus, ...(userId ? { user_id: userId } : {}), }); + if (status === 'errored') { + this.telemetry.track('Builder generation errored', { + thread_id: threadId, + run_id: runId, + error_message: errorInfo?.errorMessage ?? reason ?? 'unknown', + ...(errorInfo?.errorSource ? { error_source: errorInfo.errorSource } : {}), + ...(userId ? { user_id: userId } : {}), + }); + } } private async finalizeRun( @@ -5135,6 +5171,7 @@ export class InstanceAiService { workSummary?: WorkSummary; usage?: RunTokenUsage; errorReason?: string; + errorInfo?: RunFinishErrorInfo; }, ): Promise { this.publishRunFinish( @@ -5144,6 +5181,7 @@ export class InstanceAiService { options?.errorReason, options?.archivedWorkflowIds, options?.userId, + options?.errorInfo, ); this.emitRunMetrics(threadId, status, options); await this.saveAgentTreeSnapshot(threadId, runId, snapshotStorage); diff --git a/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming-destination.service.test.ts b/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming-destination.service.test.ts index 3cda93cf39d..cf34a5bf3d4 100644 --- a/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming-destination.service.test.ts +++ b/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming-destination.service.test.ts @@ -2,6 +2,7 @@ import { Logger } from '@n8n/backend-common'; import type { OutboundHttp } from '@n8n/backend-network'; import { mockInstance } from '@n8n/backend-test-utils'; import { MessageEventBusDestinationTypeNames } from 'n8n-workflow'; +import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; @@ -11,7 +12,7 @@ import type { Publisher } from '@/scaling/pubsub/publisher.service'; import type { EventDestinationsRepository } from '../database/repositories/event-destination.repository'; import { messageEventBusDestinationFromDb } from '../destinations/message-event-bus-destination-from-db'; -import type { MessageEventBusDestinationWebhook } from '../destinations/message-event-bus-destination-webhook.ee'; +import { MessageEventBusDestinationWebhook } from '../destinations/message-event-bus-destination-webhook.ee'; import { LogStreamingDestinationService } from '../log-streaming-destination.service'; vi.mock('../destinations/message-event-bus-destination-from-db'); @@ -158,6 +159,60 @@ describe('LogStreamingDestinationService', () => { expect(publisher.publishCommand).not.toHaveBeenCalled(); }); + + // Uses a real destination (not a mock) so the actual serialize() output is what + // reaches the repository — this is the payload persisted to the DB. + it('should persist the configured circuit breaker options to the database', async () => { + const id = '12345678-1234-1234-1234-123456789abc'; + const circuitBreaker = { maxFailures: 7, failureWindow: 30000 }; + const destination = new MessageEventBusDestinationWebhook( + eventBus, + { + __type: MessageEventBusDestinationTypeNames.webhook, + id, + label: 'Test', + url: 'http://example.com', + circuitBreaker, + }, + outboundHttp, + ); + + eventDestinationsRepository.upsert.mockResolvedValue({} as any); + + await service.addDestination(destination, false); + + const data = eventDestinationsRepository.upsert.mock.calls[0][0] as { + id: string; + destination: MessageEventBusDestinationOptions; + }; + expect(data.id).toBe(id); + // Stored verbatim: exactly the configured subset, no defaults injected, no `timeout` key + expect(data.destination.circuitBreaker).toEqual(circuitBreaker); + }); + + it('should not persist circuit breaker options when none configured', async () => { + const id = '12345678-1234-1234-1234-123456789abc'; + const destination = new MessageEventBusDestinationWebhook( + eventBus, + { + __type: MessageEventBusDestinationTypeNames.webhook, + id, + label: 'Test', + url: 'http://example.com', + }, + outboundHttp, + ); + + eventDestinationsRepository.upsert.mockResolvedValue({} as any); + + await service.addDestination(destination, false); + + const data = eventDestinationsRepository.upsert.mock.calls[0][0] as { + id: string; + destination: MessageEventBusDestinationOptions; + }; + expect(data.destination.circuitBreaker).toBeUndefined(); + }); }); describe('removeDestination', () => { diff --git a/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/message-event-bus-destination.ee.test.ts b/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/message-event-bus-destination.ee.test.ts index 1d2fa8649f4..5ffe630b028 100644 --- a/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/message-event-bus-destination.ee.test.ts +++ b/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/message-event-bus-destination.ee.test.ts @@ -1,7 +1,7 @@ import { Logger } from '@n8n/backend-common'; import { mockInstance } from '@n8n/backend-test-utils'; -import { MessageEventBusDestinationTypeNames } from 'n8n-workflow'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; +import { MessageEventBusDestinationTypeNames } from 'n8n-workflow'; import { EventMessageGeneric } from '@/eventbus/event-message-classes/event-message-generic'; import type { @@ -19,7 +19,9 @@ class TestDestination extends MessageEventBusDestination { } describe('MessageEventBusDestination', () => { - mockInstance(Logger); + const logger = mockInstance(Logger); + // CircuitBreaker resolves its logger via Container.get(Logger).scoped(...) + logger.scoped.mockReturnValue(logger); const eventBus = {} as MessageEventBus; @@ -199,6 +201,32 @@ describe('MessageEventBusDestination', () => { expect(serialized.subscribedEvents).toEqual([]); expect(serialized.anonymizeAuditMessages).toBe(false); }); + + it('should serialize configured circuit breaker options verbatim', () => { + const circuitBreaker = { maxFailures: 7, failureWindow: 30000 }; + const options: MessageEventBusDestinationOptions = { + __type: MessageEventBusDestinationTypeNames.webhook, + credentials: {}, + circuitBreaker, + }; + + const destination = new TestDestination(eventBus, options); + const serialized = destination.serialize(); + + // No defaults injected (maxDuration/halfOpenRequests/...) and no `timeout` key + expect(serialized.circuitBreaker).toEqual(circuitBreaker); + }); + + it('should serialize circuit breaker as undefined when omitted', () => { + const options: MessageEventBusDestinationOptions = { + __type: MessageEventBusDestinationTypeNames.webhook, + credentials: {}, + }; + + const destination = new TestDestination(eventBus, options); + + expect(destination.serialize().circuitBreaker).toBeUndefined(); + }); }); describe('toString', () => { diff --git a/packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.ts b/packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.ts index 91dcac3f0f9..e6d29cc53b1 100644 --- a/packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.ts +++ b/packages/cli/src/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.ts @@ -42,6 +42,10 @@ export abstract class MessageEventBusDestination implements MessageEventBusDesti anonymizeAuditMessages: boolean; + // Raw configured circuit-breaker options as received, used for serializing. + // Needed to be set this way so that we do not send default settings, only what user saved. + readonly circuitBreakerOptions?: MessageEventBusDestinationOptions['circuitBreaker']; + constructor(eventBusInstance: MessageEventBus, options: MessageEventBusDestinationOptions) { // @TODO: Use DI this.logger = Container.get(Logger); @@ -64,6 +68,8 @@ export abstract class MessageEventBusDestination implements MessageEventBusDesti maxConcurrentHalfOpenRequests, }); + this.circuitBreakerOptions = options.circuitBreaker; + this.eventBusInstance = eventBusInstance; this.id = !options.id || options.id.length !== 36 ? uuid() : options.id; this.__type = options.__type ?? MessageEventBusDestinationTypeNames.abstract; @@ -97,6 +103,7 @@ export abstract class MessageEventBusDestination implements MessageEventBusDesti enabled: this.enabled, subscribedEvents: this.subscribedEvents, anonymizeAuditMessages: this.anonymizeAuditMessages, + circuitBreaker: this.circuitBreakerOptions, }; } diff --git a/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.api.test.ts b/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.api.test.ts index 5c928a22a9c..535a35cea61 100644 --- a/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.api.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.api.test.ts @@ -456,6 +456,44 @@ describe('PATCH /mcp/workflows/toggle-access', () => { expect(await readAvailableInMCP(workflowOutsideFolder.id)).toBeUndefined(); }); + test('scopes updates to all accessible workflows when allWorkflows is set', async () => { + const memberWf = await createWorkflow({ name: 'member-wf', settings: {} }, toggleMember); + const ownerWf = await createWorkflow({ name: 'owner-wf', settings: {} }, toggleOwner); + + // The member lacks global workflow:update scope, so only their own + // workflows are reached. + const memberResponse = await testServer + .authAgentFor(toggleMember) + .patch('/mcp/workflows/toggle-access') + .send({ availableInMCP: true, allWorkflows: true }); + + expect(memberResponse.statusCode).toBe(200); + expect(memberResponse.body.data).toEqual({ + updatedCount: 1, + unchangedCount: 0, + skippedCount: 0, + failedCount: 0, + }); + expect(await readAvailableInMCP(memberWf.id)).toBe(true); + expect(await readAvailableInMCP(ownerWf.id)).toBeUndefined(); + + // The owner has global workflow:update scope and reaches every workflow, + // including the member's already-exposed one (reported as unchanged). + const ownerResponse = await testServer + .authAgentFor(toggleOwner) + .patch('/mcp/workflows/toggle-access') + .send({ availableInMCP: true, allWorkflows: true }); + + expect(ownerResponse.statusCode).toBe(200); + expect(ownerResponse.body.data).toEqual({ + updatedCount: 1, + unchangedCount: 1, + skippedCount: 0, + failedCount: 0, + }); + expect(await readAvailableInMCP(ownerWf.id)).toBe(true); + }); + test('counts a shared workflow exactly once regardless of its sharings', async () => { // SharedWorkflow is keyed by (workflowId, projectId), so a workflow // shared with multiple projects would previously surface as several diff --git a/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts b/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts index 5e990a7b648..cd36fa54ebf 100644 --- a/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts @@ -205,6 +205,16 @@ describe('McpSettingsService', () => { }); await expect(service.bulkSetAvailableInMCP(user, dto)).rejects.toThrow(BadRequestError); + + const allWorkflowsDto = new UpdateWorkflowsAvailabilityDto({ + availableInMCP: true, + allWorkflows: true, + projectId: 'project-1', + }); + + await expect(service.bulkSetAvailableInMCP(user, allWorkflowsDto)).rejects.toThrow( + BadRequestError, + ); }); test('filters unauthorized ids and applies updates inside a transaction', async () => { @@ -301,6 +311,81 @@ describe('McpSettingsService', () => { ]); }); + test('computes checksums only for workflows with open editor sessions', async () => { + const stubs = setupRepository([ + { id: 'wf-open', settings: {} }, + { id: 'wf-closed', settings: {} }, + ]); + workflowFinderService.findWorkflowIdsWithScopeForUser.mockResolvedValue( + new Set(['wf-open', 'wf-closed']), + ); + collaborationService.filterOpenWorkflowIds.mockResolvedValueOnce(['wf-open']); + + const result = await service.bulkSetAvailableInMCP( + user, + new UpdateWorkflowsAvailabilityDto({ + availableInMCP: true, + workflowIds: ['wf-open', 'wf-closed'], + }), + ); + + expect(collaborationService.filterOpenWorkflowIds).toHaveBeenCalledWith([ + 'wf-open', + 'wf-closed', + ]); + // Full checksum fields are fetched only for the open workflow. + expect(stubs.find).toHaveBeenCalledTimes(2); + expect(stubs.find.mock.calls[1][1].where.id.value).toEqual(['wf-open']); + expect(stubs.update).toHaveBeenCalledTimes(2); + expect(result.changedWorkflows).toEqual([ + { + workflowId: 'wf-open', + settings: { availableInMCP: true }, + checksum: expect.stringMatching(/^[a-f0-9]{64}$/), + }, + { workflowId: 'wf-closed', settings: { availableInMCP: true } }, + ]); + }); + + test('skips the checksum fetch entirely when no changed workflows are open', async () => { + const stubs = setupRepository([{ id: 'wf-1', settings: {} }]); + workflowFinderService.findWorkflowIdsWithScopeForUser.mockResolvedValue(new Set(['wf-1'])); + collaborationService.filterOpenWorkflowIds.mockResolvedValueOnce([]); + + const result = await service.bulkSetAvailableInMCP( + user, + new UpdateWorkflowsAvailabilityDto({ availableInMCP: true, workflowIds: ['wf-1'] }), + ); + + expect(stubs.find).toHaveBeenCalledTimes(1); + expect(stubs.update).toHaveBeenCalledTimes(1); + expect(result.updatedCount).toBe(1); + expect(result.changedWorkflows).toEqual([ + { workflowId: 'wf-1', settings: { availableInMCP: true } }, + ]); + }); + + test('proceeds without checksums when resolving open workflows fails', async () => { + const stubs = setupRepository([{ id: 'wf-1', settings: {} }]); + workflowFinderService.findWorkflowIdsWithScopeForUser.mockResolvedValue(new Set(['wf-1'])); + collaborationService.filterOpenWorkflowIds.mockRejectedValueOnce(new Error('cache down')); + + const result = await service.bulkSetAvailableInMCP( + user, + new UpdateWorkflowsAvailabilityDto({ availableInMCP: true, workflowIds: ['wf-1'] }), + ); + + expect(logger.warn).toHaveBeenCalledWith( + 'Failed to resolve open workflows before bulk MCP availability update', + { cause: 'cache down' }, + ); + expect(stubs.update).toHaveBeenCalledTimes(1); + expect(result.updatedCount).toBe(1); + expect(result.changedWorkflows).toEqual([ + { workflowId: 'wf-1', settings: { availableInMCP: true } }, + ]); + }); + test('skips archived workflows and reports them as skipped', async () => { const stubs = setupRepository([ { id: 'wf-1', settings: {}, isArchived: false }, @@ -321,7 +406,7 @@ describe('McpSettingsService', () => { expect(stubs.update).toHaveBeenCalledTimes(1); expect(stubs.update).toHaveBeenCalledWith( WorkflowEntity, - { id: 'wf-1' }, + { id: 'wf-1', isArchived: false }, expect.objectContaining({ settings: expect.objectContaining({ availableInMCP: true }) }), ); expect(result).toEqual({ @@ -550,6 +635,57 @@ describe('McpSettingsService', () => { ); }); + test('resolves candidates across all accessible workflows when scoped by allWorkflows', async () => { + const stubs = setupRepository([ + { id: 'wf-1', settings: {} }, + { id: 'wf-2', settings: {} }, + ]); + workflowFinderService.findAllWorkflowIdsForUser.mockResolvedValue(['wf-1', 'wf-2']); + + const dto = new UpdateWorkflowsAvailabilityDto({ + availableInMCP: true, + allWorkflows: true, + }); + + const result = await service.bulkSetAvailableInMCP(user, dto); + + expect(workflowFinderService.findWorkflowIdsWithScopeForUser).not.toHaveBeenCalled(); + expect(workflowFinderService.hasProjectScopeForUser).not.toHaveBeenCalled(); + expect(workflowFinderService.findAllWorkflowIdsForUser).toHaveBeenCalledWith(user, [ + 'workflow:update', + ]); + expect(stubs.update).toHaveBeenCalledTimes(2); + expect(result.updatedCount).toBe(2); + }); + + test('omits workflow ids from the response when scoped by allWorkflows', async () => { + setupRepository([{ id: 'wf-1', settings: {} }]); + workflowFinderService.findAllWorkflowIdsForUser.mockResolvedValue(['wf-1']); + + const dto = new UpdateWorkflowsAvailabilityDto({ + availableInMCP: true, + allWorkflows: true, + }); + + const result = await service.bulkSetAvailableInMCP(user, dto); + + expect(result).toEqual({ + updatedCount: 1, + unchangedCount: 0, + skippedCount: 0, + failedCount: 0, + changedWorkflows: [ + { + workflowId: 'wf-1', + settings: { availableInMCP: true }, + checksum: expect.stringMatching(/^[a-f0-9]{64}$/), + }, + ], + }); + expect(result).not.toHaveProperty('updatedIds'); + expect(result).not.toHaveProperty('unchangedIds'); + }); + test('does not resolve folder-scoped workflows when folder project cannot be scoped', async () => { const stubs = setupRepository([]); workflowFinderService.findProjectIdForFolder.mockResolvedValueOnce(null); @@ -816,6 +952,18 @@ describe('McpSettingsService', () => { ); }); + test('broadcasts without a checksum when the change has none', async () => { + await service.broadcastWorkflowMCPAvailabilityChanged([ + { workflowId: 'wf-1', settings: { availableInMCP: true } }, + ]); + + expect(collaborationService.broadcastWorkflowSettingsUpdated).toHaveBeenCalledWith( + 'wf-1', + { availableInMCP: true }, + undefined, + ); + }); + test('broadcasts only changed workflows that are open', async () => { collaborationService.filterOpenWorkflowIds.mockResolvedValueOnce(['wf-2']); diff --git a/packages/cli/src/modules/mcp/dto/update-workflows-availability.dto.ts b/packages/cli/src/modules/mcp/dto/update-workflows-availability.dto.ts index f21440cfef8..e97164aaeec 100644 --- a/packages/cli/src/modules/mcp/dto/update-workflows-availability.dto.ts +++ b/packages/cli/src/modules/mcp/dto/update-workflows-availability.dto.ts @@ -6,4 +6,5 @@ export class UpdateWorkflowsAvailabilityDto extends Z.class({ workflowIds: z.array(z.string().min(1)).min(1).max(100).optional(), projectId: z.string().min(1).optional(), folderId: z.string().min(1).optional(), + allWorkflows: z.literal(true).optional(), }) {} diff --git a/packages/cli/src/modules/mcp/mcp.settings.service.ts b/packages/cli/src/modules/mcp/mcp.settings.service.ts index b1e403f2dbd..c93ccda336d 100644 --- a/packages/cli/src/modules/mcp/mcp.settings.service.ts +++ b/packages/cli/src/modules/mcp/mcp.settings.service.ts @@ -39,7 +39,8 @@ type BulkSetAvailableInMCPResult = { type WorkflowMCPAvailabilityChange = { workflowId: string; settings: Pick; - checksum: string; + /** Present only for workflows that had an open editor session when the update ran. */ + checksum?: string; }; @Service() @@ -108,17 +109,20 @@ export class McpSettingsService { user: User, dto: UpdateWorkflowsAvailabilityDto, ): Promise { - const { availableInMCP, workflowIds, projectId, folderId } = dto; + const { availableInMCP, workflowIds, projectId, folderId, allWorkflows } = dto; - const scopeCount = [workflowIds, projectId, folderId].filter(Boolean).length; + const scopeCount = [workflowIds, projectId, folderId, allWorkflows].filter(Boolean).length; if (scopeCount !== 1) { - throw new BadRequestError('Provide exactly one of workflowIds, projectId or folderId'); + throw new BadRequestError( + 'Provide exactly one of workflowIds, projectId, folderId or allWorkflows', + ); } const candidateIds = await this.resolveCandidateIds(user, { workflowIds, projectId, folderId, + allWorkflows, }); const isWorkflowIdsScope = Boolean(workflowIds); @@ -135,6 +139,21 @@ export class McpSettingsService { }; } + // Checksums are only consumed by collaboration pushes to open editors, and + // computing one requires the full workflow body. Resolve which candidates + // are open once, up front, so chunks only load bodies for those few. + let openWorkflowIds: Set; + try { + openWorkflowIds = new Set( + await this.collaborationService.filterOpenWorkflowIds(candidateIds), + ); + } catch (error) { + openWorkflowIds = new Set(); + this.logger.warn('Failed to resolve open workflows before bulk MCP availability update', { + cause: error instanceof Error ? error.message : String(error), + }); + } + const writtenIds: string[] = []; const changedWorkflows: WorkflowMCPAvailabilityChange[] = []; const noOpIds: string[] = []; @@ -173,31 +192,36 @@ export class McpSettingsService { return { written: chunkWritten, noOp: chunkNoOp }; } - const rows = await trx.find(WorkflowEntity, { - where: { id: In([...nextSettingsByWorkflowId.keys()]), isArchived: false }, - select: ['id', ...WORKFLOW_CHECKSUM_FIELDS], - }); - - for (const row of rows) { - const nextSettings = nextSettingsByWorkflowId.get(row.id); - if (nextSettings === undefined) continue; + const openIdsInChunk = [...nextSettingsByWorkflowId.keys()].filter((id) => + openWorkflowIds.has(id), + ); + const checksumRows = + openIdsInChunk.length > 0 + ? await trx.find(WorkflowEntity, { + where: { id: In(openIdsInChunk), isArchived: false }, + select: ['id', ...WORKFLOW_CHECKSUM_FIELDS], + }) + : []; + const checksumRowByWorkflowId = new Map(checksumRows.map((row) => [row.id, row])); + for (const [workflowId, nextSettings] of nextSettingsByWorkflowId) { await trx.update( WorkflowEntity, - { id: row.id }, + { id: workflowId, isArchived: false }, { settings: nextSettings, updatedAt: now }, ); + // Checksum reflects this transaction's post-commit state. // A concurrent write after commit may make it stale, which is acceptable for a settings-only toggle. - const checksum = await calculateWorkflowChecksum({ - ...row, - settings: nextSettings, - }); + const checksumRow = checksumRowByWorkflowId.get(workflowId); + const checksum = checksumRow + ? await calculateWorkflowChecksum({ ...checksumRow, settings: nextSettings }) + : undefined; chunkWritten.push({ - workflowId: row.id, + workflowId, settings: { availableInMCP }, - checksum, + ...(checksum === undefined ? {} : { checksum }), }); } @@ -278,8 +302,13 @@ export class McpSettingsService { workflowIds?: string[]; projectId?: string; folderId?: string; + allWorkflows?: boolean; }, ): Promise { + if (scope.allWorkflows) { + return await this.workflowFinderService.findAllWorkflowIdsForUser(user, ['workflow:update']); + } + if (scope.workflowIds) { const uniqueIds = [...new Set(scope.workflowIds)]; const accessibleIds = await this.workflowFinderService.findWorkflowIdsWithScopeForUser( diff --git a/packages/cli/src/modules/n8n-packages/CLAUDE.md b/packages/cli/src/modules/n8n-packages/CLAUDE.md index 60b76bd60e9..ffae117339d 100644 --- a/packages/cli/src/modules/n8n-packages/CLAUDE.md +++ b/packages/cli/src/modules/n8n-packages/CLAUDE.md @@ -18,6 +18,23 @@ flowchart LR A --> C["4. CLI
@n8n/cli"] ``` +### Importer rules +- Importers **plan and decide**; they must never touch a repository directly. All persistence and + lookups go through a **service**. +- Prefer an **existing** domain service from the main n8n codebase (`FolderService`, `ProjectService`, + `WorkflowService`, …). When the importer needs a capability the service lacks — reusing a source id, + or a fetch-by-ids for matching — **extend that existing service with a general method** rather than + reaching for the repository or spinning up an import-only service. Canonical example: + `FolderService.createFolder(dto, projectId, id?)` / `FolderService.getFoldersByIds(ids)`. +- `N8nPackagesService.importPackage` is the entry: it builds the reader, reads the manifest, and + dispatches to a package-shape importer (today only `WorkflowPackageImporter`). That manifest read is + the seam where a future **project**-shaped package would route to its own importer. +- `WorkflowPackageImporter` resolves the target scope from the request, then delegates the plan/gate/apply + work to `ImportOrchestrator` (brings folders + workflows + credential deps into one project scope). + A follow-up adds whole-**project** package import (its own shape + scope resolution) reusing the same + `ImportOrchestrator` core. Don't split folder vs workflow: they share target resolution, credential + resolution, and publishing. + ### Adding an IMPORT property 1. **Module** (here) diff --git a/packages/cli/src/modules/n8n-packages/__tests__/fixtures/package-fixtures.ts b/packages/cli/src/modules/n8n-packages/__tests__/fixtures/package-fixtures.ts index 695a9d5aaeb..d812a786da0 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/fixtures/package-fixtures.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/fixtures/package-fixtures.ts @@ -4,6 +4,8 @@ import { TarPackageWriter } from '../../io/tar/tar-package-writer'; import { FORMAT_VERSION } from '../../spec/constants'; import type { PackageManifest } from '../../spec/manifest.schema'; import type { PackageCredentialRequirement } from '../../spec/requirements.schema'; +import type { SerializedFolder } from '../../spec/serialized/folder.schema'; +import type { SerializedProject } from '../../spec/serialized/project.schema'; import type { SerializedWorkflow } from '../../spec/serialized/workflow.schema'; import { streamToBuffer } from '../utils/tar-support'; @@ -148,3 +150,96 @@ export async function buildImportPackageBuffer( return await streamToBuffer(writer.finalize()); } + +export function serializedFolder(overrides: Partial = {}): SerializedFolder { + return { id: 'folder-id', name: 'Folder', parentFolderId: null, ...overrides }; +} + +export function serializedProject(overrides: Partial = {}): SerializedProject { + return { id: 'project-id', name: 'Project', ...overrides }; +} + +export interface PackageFolderEntry { + target: string; + folder: SerializedFolder; +} + +export interface PackageProjectEntry { + target: string; + project: SerializedProject; +} + +export interface PackageWorkflowEntry { + target: string; + workflow: SerializedWorkflow; +} + +/** + * Builds a package at explicit target paths, so tests can shape the exact package layout + * (top-level folders, nested folders, project-namespaced entities). Manifest entries are + * derived from each entity's id/name and the given target. + */ +export async function buildEntityPackageBuffer(options: { + workflows?: PackageWorkflowEntry[]; + folders?: PackageFolderEntry[]; + projects?: PackageProjectEntry[]; + manifestExtras?: Partial; + sourceId?: string; +}): Promise { + const writer = new TarPackageWriter(); + const workflows = options.workflows ?? []; + const folders = options.folders ?? []; + const projects = options.projects ?? []; + + const manifest: PackageManifest = { + packageFormatVersion: FORMAT_VERSION, + exportedAt: new Date().toISOString(), + sourceN8nVersion: '1.0.0', + sourceId: options.sourceId ?? 'integration-test-source', + ...(workflows.length > 0 + ? { + workflows: workflows.map(({ target, workflow }) => ({ + id: workflow.id, + name: workflow.name, + target, + })), + } + : {}), + ...(folders.length > 0 + ? { + folders: folders.map(({ target, folder }) => ({ + id: folder.id, + name: folder.name, + target, + })), + } + : {}), + ...(projects.length > 0 + ? { + projects: projects.map(({ target, project }) => ({ + id: project.id, + name: project.name, + target, + })), + } + : {}), + ...options.manifestExtras, + }; + + // Manifest first: the reader/parser resolves it before reading any referenced file. + writer.writeFile('manifest.json', JSON.stringify(manifest)); + for (const { target, workflow } of workflows) { + writer.writeDirectory(target); + writer.writeFile(`${target}/workflow.json`, JSON.stringify(workflow)); + } + for (const { target, folder } of folders) { + writer.writeDirectory(target); + writer.writeFile(`${target}/folder.json`, JSON.stringify(folder)); + } + for (const { target, project } of projects) { + writer.writeDirectory(target); + writer.writeFile(`${target}/project.json`, JSON.stringify(project)); + } + + return await streamToBuffer(writer.finalize()); +} diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-folders.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-folders.integration.test.ts new file mode 100644 index 00000000000..47f7d311e60 --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-folders.integration.test.ts @@ -0,0 +1,382 @@ +import { LicenseState } from '@n8n/backend-common'; +import { createTeamProject, testDb, testModules } from '@n8n/backend-test-utils'; +import type { Project, User } from '@n8n/db'; +import { FolderRepository } from '@n8n/db'; +import { Container } from '@n8n/di'; + +import { ConflictError } from '@/errors/response-errors/conflict.error'; +import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; +import { createFolder } from '@test-integration/db/folders'; +import { createOwner } from '@test-integration/db/users'; +import { LicenseMocker } from '@test-integration/license'; + +import { N8nPackagesService } from '../n8n-packages.service'; +import type { FolderConflictPolicy, ImportPackageRequest } from '../n8n-packages.types'; +import { + buildEntityPackageBuffer, + credentialRequirementsFromWorkflows, + serializedFolder, + serializedWorkflowWithCredential, +} from './fixtures/package-fixtures'; + +type FolderImportParams = { + user: User; + projectId?: string; + folderId?: string; + packageBuffer: Buffer; + folderConflictPolicy?: FolderConflictPolicy; + apiKeyScopes?: string[]; +}; + +async function importFolders(params: FolderImportParams) { + const request: ImportPackageRequest = { + user: params.user, + projectId: params.projectId, + folderId: params.folderId, + packageBuffer: params.packageBuffer, + apiKeyScopes: params.apiKeyScopes, + credentialMatchingMode: 'id-only', + credentialMissingMode: 'must-preexist', + workflowConflictPolicy: 'new-version', + workflowPublishingPolicy: 'preserve-published-state', + workflowIdPolicy: 'new', + folderConflictPolicy: params.folderConflictPolicy ?? 'merge', + }; + return await Container.get(N8nPackagesService).importPackage(request); +} + +const licenseMocker = new LicenseMocker(); + +async function findFolder(id: string) { + return await Container.get(FolderRepository).findOne({ + where: { id }, + relations: { homeProject: true }, + }); +} + +beforeAll(async () => { + await testModules.loadModules(['n8n-packages']); + await testDb.init(); + licenseMocker.mockLicenseState(Container.get(LicenseState)); + licenseMocker.setDefaults({ features: ['feat:folders'] }); +}); + +afterAll(async () => { + await testDb.terminate(); +}); + +beforeEach(async () => { + await testDb.truncate(['Folder', 'Project', 'SharedWorkflow', 'WorkflowEntity']); + licenseMocker.reset(); +}); + +describe('folder shell import', () => { + let owner: User; + let project: Project; + + beforeEach(async () => { + owner = await createOwner(); + project = await createTeamProject('Target', owner); + }); + + it('creates a single empty folder at project root', async () => { + const packageBuffer = await buildEntityPackageBuffer({ + folders: [ + { + target: 'folders/to_production', + folder: serializedFolder({ id: 'F1', name: 'to_production' }), + }, + ], + }); + + const result = await importFolders({ user: owner, projectId: project.id, packageBuffer }); + + expect(result.folders).toEqual([ + { + sourceFolderId: 'F1', + localId: 'F1', + name: 'to_production', + parentFolderId: null, + status: 'created', + }, + ]); + expect(result.workflows).toEqual([]); + const persisted = await findFolder('F1'); + expect(persisted?.name).toBe('to_production'); + expect(persisted?.parentFolderId).toBeNull(); + expect(persisted?.homeProject.id).toBe(project.id); + }); + + it('creates two empty folders at project root', async () => { + const packageBuffer = await buildEntityPackageBuffer({ + folders: [ + { + target: 'folders/to_production', + folder: serializedFolder({ id: 'F1', name: 'to_production' }), + }, + { + target: 'folders/in_progress', + folder: serializedFolder({ id: 'F2', name: 'in_progress' }), + }, + ], + }); + + const result = await importFolders({ user: owner, projectId: project.id, packageBuffer }); + + expect(result.folders.map((f) => f.status)).toEqual(['created', 'created']); + expect(await findFolder('F1')).not.toBeNull(); + expect(await findFolder('F2')).not.toBeNull(); + }); + + it('recreates a nested folder under its parent', async () => { + const packageBuffer = await buildEntityPackageBuffer({ + folders: [ + { + target: 'folders/in_progress', + folder: serializedFolder({ id: 'P', name: 'in_progress' }), + }, + { + target: 'folders/in_progress/nested', + folder: serializedFolder({ id: 'C', name: 'nested', parentFolderId: 'P' }), + }, + ], + }); + + await importFolders({ user: owner, projectId: project.id, packageBuffer }); + + expect((await findFolder('C'))?.parentFolderId).toBe('P'); + }); + + it('anchors top-level folders under the request folderId', async () => { + const anchor = await createFolder(project, { name: 'anchor' }); + const packageBuffer = await buildEntityPackageBuffer({ + folders: [ + { + target: 'folders/to_production', + folder: serializedFolder({ id: 'F1', name: 'to_production' }), + }, + ], + }); + + const result = await importFolders({ + user: owner, + projectId: project.id, + folderId: anchor.id, + packageBuffer, + }); + + expect(result.folders[0].parentFolderId).toBe(anchor.id); + expect((await findFolder('F1'))?.parentFolderId).toBe(anchor.id); + }); + + it('topologically sorts a child listed before its parent', async () => { + const packageBuffer = await buildEntityPackageBuffer({ + folders: [ + { + target: 'folders/in_progress/nested', + folder: serializedFolder({ id: 'C', name: 'nested', parentFolderId: 'P' }), + }, + { + target: 'folders/in_progress', + folder: serializedFolder({ id: 'P', name: 'in_progress' }), + }, + ], + }); + + await importFolders({ user: owner, projectId: project.id, packageBuffer }); + + expect((await findFolder('P'))?.parentFolderId).toBeNull(); + expect((await findFolder('C'))?.parentFolderId).toBe('P'); + }); + + it('allows a duplicate name with a different id alongside an existing folder', async () => { + await createFolder(project, { name: 'in_progress' }); + const packageBuffer = await buildEntityPackageBuffer({ + folders: [ + { + target: 'folders/in_progress', + folder: serializedFolder({ id: 'B', name: 'in_progress' }), + }, + ], + }); + + const result = await importFolders({ user: owner, projectId: project.id, packageBuffer }); + + expect(result.folders[0]).toMatchObject({ sourceFolderId: 'B', status: 'created' }); + const inProgress = await Container.get(FolderRepository).findBy({ name: 'in_progress' }); + expect(inProgress).toHaveLength(2); + }); + + describe('re-import (matched by id)', () => { + const packageWith = async (name: string) => + await buildEntityPackageBuffer({ + folders: [{ target: 'folders/f', folder: serializedFolder({ id: 'F1', name }) }], + }); + + it('reuses the existing folder untouched under merge', async () => { + await importFolders({ + user: owner, + projectId: project.id, + packageBuffer: await packageWith('old'), + }); + const result = await importFolders({ + user: owner, + projectId: project.id, + packageBuffer: await packageWith('new'), + folderConflictPolicy: 'merge', + }); + + expect(result.folders[0].status).toBe('skipped'); + expect((await findFolder('F1'))?.name).toBe('old'); + }); + + it('blocks under fail', async () => { + await importFolders({ + user: owner, + projectId: project.id, + packageBuffer: await packageWith('old'), + }); + await expect( + importFolders({ + user: owner, + projectId: project.id, + packageBuffer: await packageWith('new'), + folderConflictPolicy: 'fail', + }), + ).rejects.toBeInstanceOf(ConflictError); + expect((await findFolder('F1'))?.name).toBe('old'); + }); + }); + + it('blocks and persists nothing when a matched folder sits under a different parent', async () => { + // First import places F1 at the project root. + await importFolders({ + user: owner, + projectId: project.id, + packageBuffer: await buildEntityPackageBuffer({ + folders: [{ target: 'folders/f', folder: serializedFolder({ id: 'F1', name: 'f' }) }], + }), + }); + const anchor = await createFolder(project, { name: 'anchor' }); + const foldersBefore = await Container.get(FolderRepository).count(); + + // Re-import anchored elsewhere: F1 would move → parent-mismatch conflict. + await expect( + importFolders({ + user: owner, + projectId: project.id, + folderId: anchor.id, + packageBuffer: await buildEntityPackageBuffer({ + folders: [ + { target: 'folders/f', folder: serializedFolder({ id: 'F1', name: 'f' }) }, + { target: 'folders/f2', folder: serializedFolder({ id: 'F2', name: 'f2' }) }, + ], + }), + }), + ).rejects.toBeInstanceOf(ConflictError); + + expect(await Container.get(FolderRepository).count()).toBe(foldersBefore); + expect(await findFolder('F2')).toBeNull(); + }); + + it('blocks when the folder id already exists in a different project', async () => { + const otherProject = await createTeamProject('Other', owner); + await importFolders({ + user: owner, + projectId: otherProject.id, + packageBuffer: await buildEntityPackageBuffer({ + folders: [{ target: 'folders/f', folder: serializedFolder({ id: 'F1', name: 'f' }) }], + }), + }); + + await expect( + importFolders({ + user: owner, + projectId: project.id, + packageBuffer: await buildEntityPackageBuffer({ + folders: [{ target: 'folders/f', folder: serializedFolder({ id: 'F1', name: 'f' }) }], + }), + }), + ).rejects.toBeInstanceOf(ConflictError); + }); + + it('rejects a package with folders when folders are not licensed', async () => { + licenseMocker.disable('feat:folders'); + const packageBuffer = await buildEntityPackageBuffer({ + folders: [{ target: 'folders/f', folder: serializedFolder({ id: 'F1', name: 'f' }) }], + }); + + await expect( + importFolders({ user: owner, projectId: project.id, packageBuffer }), + ).rejects.toBeInstanceOf(ForbiddenError); + }); + + it('rejects a folders package when the API key lacks the folder:create scope', async () => { + const packageBuffer = await buildEntityPackageBuffer({ + folders: [{ target: 'folders/f', folder: serializedFolder({ id: 'F1', name: 'f' }) }], + }); + + await expect( + importFolders({ + user: owner, + projectId: project.id, + packageBuffer, + apiKeyScopes: ['workflow:import'], + }), + ).rejects.toBeInstanceOf(ForbiddenError); + }); + + it('reports the real parent for a nested folder reused on re-import', async () => { + const pkg = async () => + await buildEntityPackageBuffer({ + folders: [ + { target: 'folders/p', folder: serializedFolder({ id: 'P', name: 'p' }) }, + { + target: 'folders/p/c', + folder: serializedFolder({ id: 'C', name: 'c', parentFolderId: 'P' }), + }, + ], + }); + + await importFolders({ user: owner, projectId: project.id, packageBuffer: await pkg() }); + const result = await importFolders({ + user: owner, + projectId: project.id, + packageBuffer: await pkg(), + folderConflictPolicy: 'merge', + }); + + expect(result.folders.find((f) => f.sourceFolderId === 'C')).toMatchObject({ + status: 'skipped', + parentFolderId: 'P', + }); + }); + + it('does not process credentials needed only by skipped nested workflows', async () => { + const nestedWorkflow = serializedWorkflowWithCredential({ + id: 'WF', + name: 'triage', + credentialId: 'missing-cred', + credentialName: 'Linear', + }); + const packageBuffer = await buildEntityPackageBuffer({ + folders: [ + { + target: 'folders/in_progress', + folder: serializedFolder({ id: 'F1', name: 'in_progress' }), + }, + ], + workflows: [{ target: 'folders/in_progress/workflows/triage', workflow: nestedWorkflow }], + manifestExtras: { + requirements: { credentials: credentialRequirementsFromWorkflows([nestedWorkflow]) }, + }, + }); + + // credentialMissingMode defaults to must-preexist here; the folder-nested workflow (and its + // missing credential) are skipped, so the import must not be blocked. + const result = await importFolders({ user: owner, projectId: project.id, packageBuffer }); + + expect(result.folders[0].status).toBe('created'); + expect(result.workflows).toEqual([]); + }); +}); diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-pipeline.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-package.integration.test.ts similarity index 81% rename from packages/cli/src/modules/n8n-packages/__tests__/import-pipeline.integration.test.ts rename to packages/cli/src/modules/n8n-packages/__tests__/import-package.integration.test.ts index 02a32d6a1fa..5d4573c223e 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-pipeline.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-package.integration.test.ts @@ -23,7 +23,11 @@ import { CredentialTypes } from '@/credential-types'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import type { RelayEventMap } from '@/events/maps/relay.event-map'; -import { affixRoleToSaveCredential, saveCredential } from '@test-integration/db/credentials'; +import { + affixRoleToSaveCredential, + saveCredential, + shareCredentialWithProjects, +} from '@test-integration/db/credentials'; import { createFolder } from '@test-integration/db/folders'; import { createMember, createOwner } from '@test-integration/db/users'; import { LicenseMocker } from '@test-integration/license'; @@ -32,6 +36,7 @@ import { initNodeTypes } from '@test-integration/utils'; import { TarPackageWriter } from '../io/tar/tar-package-writer'; import { N8nPackagesService } from '../n8n-packages.service'; import { + FolderConflictPolicy, WorkflowConflictPolicy, WorkflowIdPolicy, WorkflowPublishingPolicy, @@ -57,6 +62,7 @@ type ImportPackageParams = Omit< | 'workflowConflictPolicy' | 'workflowPublishingPolicy' | 'workflowIdPolicy' + | 'folderConflictPolicy' > & Partial< Pick< @@ -67,6 +73,7 @@ type ImportPackageParams = Omit< | 'workflowConflictPolicy' | 'workflowPublishingPolicy' | 'workflowIdPolicy' + | 'folderConflictPolicy' > >; @@ -77,6 +84,7 @@ async function importPackage(params: ImportPackageParams) { workflowConflictPolicy: WorkflowConflictPolicy.Fail, workflowPublishingPolicy: WorkflowPublishingPolicy.PreservePublishedState, workflowIdPolicy: WorkflowIdPolicy.New, + folderConflictPolicy: FolderConflictPolicy.Merge, ...params, }); } @@ -154,7 +162,7 @@ beforeEach(async () => { ]); }); -describe('ImportPipeline batch validation', () => { +describe('Package import batch validation', () => { it('rejects the package before any workflow is persisted when prepare-phase validation fails', async () => { const owner = await createOwner(); const personalProject = await Container.get(ProjectRepository).getPersonalProjectForUserOrFail( @@ -217,7 +225,7 @@ describe('ImportPipeline batch validation', () => { }); }); -describe('ImportPipeline routing matrix', () => { +describe('Package import routing matrix', () => { async function singleWorkflowPackage(): Promise { return await buildImportPackageBuffer([ serializedWorkflow({ id: 'wf-routed', name: 'Routed Workflow' }), @@ -371,7 +379,7 @@ describe('ImportPipeline routing matrix', () => { }); }); -describe('ImportPipeline workflowIdPolicy: new', () => { +describe('Package import workflowIdPolicy: new', () => { it('mints a fresh id and records the package id as sourceWorkflowId', async () => { const owner = await createOwner(); @@ -472,7 +480,7 @@ describe('ImportPipeline workflowIdPolicy: new', () => { }); }); -describe('ImportPipeline workflowIdPolicy: source', () => { +describe('Package import workflowIdPolicy: source', () => { it('creates with the source id and records it as sourceWorkflowId when the id is free', async () => { const owner = await createOwner(); @@ -759,7 +767,7 @@ describe('ImportPipeline workflowIdPolicy: source', () => { }); }); -describe('ImportPipeline workflow conflict policy', () => { +describe('Package import workflow conflict policy', () => { it.each([WorkflowConflictPolicy.NewVersion, WorkflowConflictPolicy.Skip])( '%s handles matched and fresh workflows in one package', async (workflowConflictPolicy) => { @@ -997,7 +1005,7 @@ describe('ImportPipeline workflow conflict policy', () => { }); }); -describe('ImportPipeline rejection cases', () => { +describe('Package import rejection cases', () => { async function singleWorkflowPackage(): Promise { return await buildImportPackageBuffer([serializedWorkflow({ id: 'wf-x', name: 'X' })]); } @@ -1118,7 +1126,7 @@ describe('ImportPipeline rejection cases', () => { }); }); -describe('ImportPipeline event emission', () => { +describe('Package import event emission', () => { it('emits workflow-created per workflow plus one n8n-package-imported on success', async () => { const owner = await createOwner(); const eventService = Container.get(EventService); @@ -1392,7 +1400,7 @@ describe('ImportPipeline event emission', () => { }); }); -describe('ImportPipeline credential resolution', () => { +describe('Package import credential resolution', () => { const sourceId = 'credential-resolution-test'; it('imports when credentials are accessible to the importer', async () => { @@ -1573,6 +1581,408 @@ describe('ImportPipeline credential resolution', () => { }); }); +describe('ImportPipeline credential matching modes', () => { + const sourceId = 'credential-matching-mode-test'; + const SOURCE_CRED_ID = 'src-cred'; + const MATCHING_NAME = 'QA GitHub'; + + async function setUpdatedAt(credentialId: string, iso: string) { + await Container.get(CredentialsRepository).update(credentialId, { updatedAt: new Date(iso) }); + } + + async function importWithMode(params: { + user: Awaited>; + projectId?: string; + credentialMatchingMode: ImportPackageRequest['credentialMatchingMode']; + credentialMissingMode?: ImportPackageRequest['credentialMissingMode']; + bindings?: ImportPackageRequest['bindings']; + workflowId: string; + credentialName?: string; + }) { + return await importPackage({ + user: params.user, + projectId: params.projectId, + credentialMatchingMode: params.credentialMatchingMode, + credentialMissingMode: params.credentialMissingMode ?? 'must-preexist', + bindings: params.bindings, + packageBuffer: await buildImportPackageBuffer( + [ + serializedWorkflowWithCredential({ + id: params.workflowId, + name: params.workflowId, + credentialId: SOURCE_CRED_ID, + credentialName: params.credentialName ?? 'Source GitHub', + }), + ], + { sourceId }, + ), + }); + } + + const expectNotFound = async (promise: Promise) => + await expect(promise).rejects.toMatchObject({ + meta: { + issues: expect.arrayContaining([ + expect.objectContaining({ + type: 'credential-unresolved', + kind: 'not_found', + sourceId: SOURCE_CRED_ID, + }), + ]), + }, + }); + + describe('name-and-type', () => { + it('binds to a credential with the exact same name and type owned by the target project', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + const target = await saveOwnedCredential(githubCredentialPayload({ name: MATCHING_NAME }), { + project: teamProject, + }); + + const result = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'name-and-type', + workflowId: 'wf-name-type-match', + credentialName: MATCHING_NAME, + }); + + expect(result.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: target.id }); + }); + + it('does not match when only the name is equal but the type differs', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + await saveOwnedCredential( + { ...randomCredentialPayload({ type: 'slackApi' }), name: MATCHING_NAME }, + { project: teamProject }, + ); + + await expectNotFound( + importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'name-and-type', + workflowId: 'wf-name-only', + credentialName: MATCHING_NAME, + }), + ); + expect(await Container.get(WorkflowRepository).count()).toBe(0); + }); + + it('does not match when only the type is equal but the name differs', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + await saveOwnedCredential(githubCredentialPayload({ name: 'Unrelated' }), { + project: teamProject, + }); + + await expectNotFound( + importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'name-and-type', + workflowId: 'wf-type-only', + credentialName: MATCHING_NAME, + }), + ); + expect(await Container.get(WorkflowRepository).count()).toBe(0); + }); + + it('binds to the most recently updated candidate when several share the same name and type', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + const older = await saveOwnedCredential(githubCredentialPayload({ name: MATCHING_NAME }), { + project: teamProject, + }); + const newer = await saveOwnedCredential(githubCredentialPayload({ name: MATCHING_NAME }), { + project: teamProject, + }); + await setUpdatedAt(older.id, '2024-01-01T00:00:00.000Z'); + await setUpdatedAt(newer.id, '2024-06-01T00:00:00.000Z'); + + const first = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'name-and-type', + workflowId: 'wf-tie-1', + credentialName: MATCHING_NAME, + }); + expect(first.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: newer.id }); + + // Bumping the older credential's updatedAt past the newer one flips the winner + await setUpdatedAt(older.id, '2024-12-01T00:00:00.000Z'); + const second = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'name-and-type', + workflowId: 'wf-tie-2', + credentialName: MATCHING_NAME, + }); + expect(second.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: older.id }); + }); + }); + + describe('type-only', () => { + it('binds to any credential of the required type regardless of name', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + const target = await saveOwnedCredential(githubCredentialPayload({ name: 'Random Name' }), { + project: teamProject, + }); + + const result = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + workflowId: 'wf-type-match', + credentialName: 'Totally Different Name', + }); + + expect(result.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: target.id }); + }); + + it('binds to the most recently updated candidate when several share the required type', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + const older = await saveOwnedCredential(githubCredentialPayload({ name: 'Cred Old' }), { + project: teamProject, + }); + const newer = await saveOwnedCredential(githubCredentialPayload({ name: 'Cred New' }), { + project: teamProject, + }); + await setUpdatedAt(older.id, '2024-01-01T00:00:00.000Z'); + await setUpdatedAt(newer.id, '2024-06-01T00:00:00.000Z'); + + const result = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + workflowId: 'wf-type-tie', + }); + + expect(result.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: newer.id }); + }); + + it('fails under must-preexist and stubs under create-stub when no credential of the type exists', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + + await expectNotFound( + importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + credentialMissingMode: 'must-preexist', + workflowId: 'wf-missing-preexist', + }), + ); + expect(await Container.get(CredentialsRepository).count()).toBe(0); + + const stubbed = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + credentialMissingMode: 'create-stub', + workflowId: 'wf-missing-stub', + }); + expect(stubbed.credentials.stubbed).toEqual([SOURCE_CRED_ID]); + expect(await Container.get(CredentialsRepository).count()).toBe(1); + }); + }); + + describe('scope priority (owned > shared-in > global)', () => { + it('prefers the target-project-owned credential over shared-in and global, even when it is the oldest', async () => { + const owner = await createOwner(); + const member = await createMember(); + const teamProject = await createTeamProject('Team Project', owner); + + const owned = await saveOwnedCredential(githubCredentialPayload({ name: 'Owned' }), { + project: teamProject, + }); + await setUpdatedAt(owned.id, '2024-01-01T00:00:00.000Z'); + + const shared = await saveCredential(githubCredentialPayload({ name: 'Shared' }), { + user: member, + role: 'credential:owner', + }); + await shareCredentialWithProjects(shared, [teamProject]); + await setUpdatedAt(shared.id, '2024-06-01T00:00:00.000Z'); + + const global = await saveCredential( + githubCredentialPayload({ name: 'Global', isGlobal: true }), + { user: member, role: 'credential:owner' }, + ); + await setUpdatedAt(global.id, '2024-12-01T00:00:00.000Z'); + + const result = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + workflowId: 'wf-scope-owned', + }); + + expect(result.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: owned.id }); + }); + + it('falls back to a credential shared into the target project over a newer global one when none is owned', async () => { + const owner = await createOwner(); + const member = await createMember(); + const teamProject = await createTeamProject('Team Project', owner); + + const shared = await saveCredential(githubCredentialPayload({ name: 'Shared' }), { + user: member, + role: 'credential:owner', + }); + await shareCredentialWithProjects(shared, [teamProject]); + await setUpdatedAt(shared.id, '2024-01-01T00:00:00.000Z'); + const global = await saveCredential( + githubCredentialPayload({ name: 'Global', isGlobal: true }), + { user: member, role: 'credential:owner' }, + ); + await setUpdatedAt(global.id, '2024-12-01T00:00:00.000Z'); + + const result = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + workflowId: 'wf-scope-shared', + }); + + expect(result.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: shared.id }); + }); + + it('falls back to a global credential when nothing is owned by or shared into the target project', async () => { + const owner = await createOwner(); + const member = await createMember(); + const teamProject = await createTeamProject('Team Project', owner); + + const global = await saveCredential( + githubCredentialPayload({ name: 'Global', isGlobal: true }), + { user: member, role: 'credential:owner' }, + ); + + const result = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + workflowId: 'wf-scope-global', + }); + + expect(result.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: global.id }); + }); + + it('does not match a credential that only lives in another project (importing into a team project)', async () => { + const owner = await createOwner(); + const member = await createMember(); + const teamProject = await createTeamProject('Team Project', owner); + // A matching-name/type credential owned by the member's personal project, + // neither shared into the team project nor global — out of reach for the + // team project import. + await saveCredential(githubCredentialPayload({ name: MATCHING_NAME }), { + user: member, + role: 'credential:owner', + }); + + await expectNotFound( + importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'name-and-type', + workflowId: 'wf-scope-isolated', + credentialName: MATCHING_NAME, + }), + ); + expect(await Container.get(WorkflowRepository).count()).toBe(0); + }); + }); + + describe('explicit credentialBindings', () => { + it('bypasses type-only matching and binds to the explicit target even when another credential would win the search', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + + const fuzzyWinner = await saveOwnedCredential(githubCredentialPayload({ name: 'Fuzzy' }), { + project: teamProject, + }); + await setUpdatedAt(fuzzyWinner.id, '2024-12-10T00:00:00.000Z'); + // The explicitly bound target (older, so it would lose the fuzzy search). + const explicitTarget = await saveOwnedCredential( + githubCredentialPayload({ name: 'Explicit' }), + { project: teamProject }, + ); + await setUpdatedAt(explicitTarget.id, '2024-12-05T00:00:00.000Z'); + + const result = await importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + bindings: { credentials: new Map([[SOURCE_CRED_ID, explicitTarget.id]]) }, + workflowId: 'wf-explicit-bypass', + }); + + expect(result.bindings.credentials).toEqual({ [SOURCE_CRED_ID]: explicitTarget.id }); + }); + + it('fails with a type mismatch when the explicit binding targets a wrong-type credential, without falling back to the fuzzy match', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + await saveOwnedCredential(githubCredentialPayload({ name: 'Fuzzy' }), { + project: teamProject, + }); + const wrongType = await saveOwnedCredential(randomCredentialPayload({ type: 'slackApi' }), { + project: teamProject, + }); + + await expect( + importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'type-only', + bindings: { credentials: new Map([[SOURCE_CRED_ID, wrongType.id]]) }, + workflowId: 'wf-explicit-mismatch', + }), + ).rejects.toMatchObject({ + meta: { + issues: expect.arrayContaining([ + expect.objectContaining({ + type: 'credential-unresolved', + kind: 'type_mismatch', + sourceId: SOURCE_CRED_ID, + targetId: wrongType.id, + expectedType: PACKAGE_GITHUB_CREDENTIAL_TYPE, + actualType: 'slackApi', + }), + ]), + }, + }); + expect(await Container.get(WorkflowRepository).count()).toBe(0); + }); + }); + + describe('id-only (default) is unchanged', () => { + it('does not fall back to name/type matching for a credential whose id differs', async () => { + const owner = await createOwner(); + const teamProject = await createTeamProject('Team Project', owner); + await saveOwnedCredential(githubCredentialPayload({ name: MATCHING_NAME }), { + project: teamProject, + }); + + await expectNotFound( + importWithMode({ + user: owner, + projectId: teamProject.id, + credentialMatchingMode: 'id-only', + workflowId: 'wf-id-only', + credentialName: MATCHING_NAME, + }), + ); + expect(await Container.get(WorkflowRepository).count()).toBe(0); + }); + }); +}); + describe('credential-missing-mode: create-stub', () => { const sourceId = 'create-stub-test'; @@ -1755,7 +2165,7 @@ describe('credential-missing-mode: create-stub', () => { }); }); -describe('ImportPipeline workflow publishing policy', () => { +describe('Package import workflow publishing policy', () => { // Trigger needed to be able to publish workflows const scheduleTriggerNodes = () => [ { diff --git a/packages/cli/src/modules/n8n-packages/engine/__tests__/import-blocked.error.test.ts b/packages/cli/src/modules/n8n-packages/engine/__tests__/import-blocked.error.test.ts new file mode 100644 index 00000000000..288aaecbade --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/engine/__tests__/import-blocked.error.test.ts @@ -0,0 +1,38 @@ +import { ConflictError } from '@/errors/response-errors/conflict.error'; +import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; + +import type { BlockingIssue } from '../../n8n-packages.types'; +import { toImportBlockedError } from '../import-blocked.error'; + +const folderConflict: BlockingIssue = { + type: 'folder-conflict', + kind: 'parent-mismatch', + sourceFolderId: 'f1', + name: 'in_progress', + existingParentFolderId: null, + expectedParentFolderId: 'anchor', +}; + +const credentialUnresolved: BlockingIssue = { + type: 'credential-unresolved', + kind: 'not_found', + sourceId: 'c1', + usedByWorkflows: ['w1'], +}; + +describe('toImportBlockedError', () => { + it('maps a folder-conflict to 409 Conflict', () => { + const error = toImportBlockedError([folderConflict]); + expect(error).toBeInstanceOf(ConflictError); + }); + + it('still maps credential-only blocks to 422', () => { + const error = toImportBlockedError([credentialUnresolved]); + expect(error).toBeInstanceOf(UnprocessableRequestError); + }); + + it('prefers 409 when a folder-conflict is mixed with credential issues', () => { + const error = toImportBlockedError([credentialUnresolved, folderConflict]); + expect(error).toBeInstanceOf(ConflictError); + }); +}); diff --git a/packages/cli/src/modules/n8n-packages/engine/__tests__/package-layout.test.ts b/packages/cli/src/modules/n8n-packages/engine/__tests__/package-layout.test.ts new file mode 100644 index 00000000000..817d4ee4edd --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/engine/__tests__/package-layout.test.ts @@ -0,0 +1,52 @@ +import type { ManifestEntry } from '../../spec/manifest.schema'; +import { isTopLevelTarget, topLevelFolders, topLevelWorkflows } from '../package-layout'; + +const entry = (id: string, target: string): ManifestEntry => ({ id, name: id, target }); + +describe('package-layout', () => { + describe('isTopLevelTarget', () => { + it('treats a direct child of the dir as top-level', () => { + expect(isTopLevelTarget('folders/a', 'folders')).toBe(true); + expect(isTopLevelTarget('workflows/wf', 'workflows')).toBe(true); + }); + + it('treats a nested folder tree entry as top-level (folders/ appears once per scope)', () => { + expect(isTopLevelTarget('folders/a/b', 'folders')).toBe(true); + }); + + it('rejects project-nested entries', () => { + expect(isTopLevelTarget('projects/x/folders/a', 'folders')).toBe(false); + expect(isTopLevelTarget('projects/x/workflows/wf', 'workflows')).toBe(false); + }); + + it('rejects folder-nested workflows', () => { + expect(isTopLevelTarget('folders/a/workflows/wf', 'workflows')).toBe(false); + }); + }); + + describe('topLevelFolders', () => { + it('keeps only folders/… entries and drops project-nested ones', () => { + const entries = [ + entry('a', 'folders/a'), + entry('b', 'folders/a/b'), + entry('c', 'projects/x/folders/c'), + ]; + expect(topLevelFolders(entries).map((e) => e.id)).toEqual(['a', 'b']); + }); + + it('returns [] for undefined', () => { + expect(topLevelFolders(undefined)).toEqual([]); + }); + }); + + describe('topLevelWorkflows', () => { + it('keeps only workflows/… entries and drops folder/project-nested ones', () => { + const entries = [ + entry('top', 'workflows/top'), + entry('inFolder', 'folders/a/workflows/inFolder'), + entry('inProject', 'projects/x/workflows/inProject'), + ]; + expect(topLevelWorkflows(entries).map((e) => e.id)).toEqual(['top']); + }); + }); +}); diff --git a/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts b/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts index 3b1e45092e4..e813012d07d 100644 --- a/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts +++ b/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts @@ -15,7 +15,8 @@ export function toImportBlockedError( (issue) => issue.type === 'workflow-conflict' || issue.type === 'workflow-id-conflict' || - issue.type === 'workflow-folder-conflict', + issue.type === 'workflow-folder-conflict' || + issue.type === 'folder-conflict', ) ) { return new ConflictError(message, undefined, { issues }); diff --git a/packages/cli/src/modules/n8n-packages/engine/import-orchestrator.ts b/packages/cli/src/modules/n8n-packages/engine/import-orchestrator.ts new file mode 100644 index 00000000000..d9967969500 --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/engine/import-orchestrator.ts @@ -0,0 +1,152 @@ +import { Service } from '@n8n/di'; + +import { CredentialImporter } from '../entities/credential/credential-importer'; +import { workflowsBlockedFromPublish } from '../entities/credential/credential-missing-mode'; +import type { + CredentialApplyResult, + CredentialBindingRequest, + CredentialResolution, + CredentialResolutionFailure, +} from '../entities/credential/credential.types'; +import { FolderImporter } from '../entities/folder/folder-importer'; +import type { FolderImportPlan, PreparedFolder } from '../entities/folder/folder-import.types'; +import type { + PreparedWorkflow, + WorkflowImportOutcome, + WorkflowImportPlan, +} from '../entities/workflow/workflow-import.types'; +import { WorkflowImporter } from '../entities/workflow/workflow-importer'; +import { WorkflowPublisher } from '../entities/workflow/workflow-publisher'; +import { createBindings } from '../n8n-packages.types'; +import type { + BlockingIssue, + ImportContext, + ImportedFolderSummary, + ImportFolderProperties, + ImportWorkflowProperties, + PackageImportBindings, +} from '../n8n-packages.types'; +import { toImportBlockedError } from './import-blocked.error'; + +export interface ImportOrchestrationInput { + context: ImportContext; + folders: PreparedFolder[]; + workflows: PreparedWorkflow[]; + credentialRequest: CredentialBindingRequest; + options: ImportWorkflowProperties & ImportFolderProperties; +} + +export interface ImportOrchestrationResult { + workflowOutcomes: WorkflowImportOutcome[]; + folderSummaries: ImportedFolderSummary[]; + bindings: PackageImportBindings; + credentialResult: CredentialApplyResult; +} + +/** + * Coordinates the credential, folder, and workflow importers to bring a package's + * contents into one resolved project scope + */ +@Service() +export class ImportOrchestrator { + constructor( + private readonly credentialImporter: CredentialImporter, + private readonly folderImporter: FolderImporter, + private readonly workflowImporter: WorkflowImporter, + private readonly workflowPublisher: WorkflowPublisher, + ) {} + + async import(input: ImportOrchestrationInput): Promise { + const { context, folders, workflows, credentialRequest, options } = input; + + // PublishAll requires publish scope up front; other policies are checked per workflow. + await this.workflowPublisher.assertCanPublish( + context.user, + context.projectId, + options.workflowPublishingPolicy, + ); + + const credentialPlan = await this.credentialImporter.plan(context, credentialRequest); + const workflowPlan = await this.workflowImporter.plan(context, workflows, options); + const folderContext = { ...context, folderConflictPolicy: options.folderConflictPolicy }; + const folderPlan = await this.folderImporter.plan(folderContext, folders); + + const blockingIssues = this.collectBlockingIssues( + workflowPlan, + credentialPlan, + credentialRequest, + folderPlan, + ); + + if (blockingIssues.length > 0) { + throw toImportBlockedError(blockingIssues); + } + + const folderSummaries = await this.folderImporter.apply(folderContext, folderPlan); + + const credentialResult = await this.credentialImporter.apply( + context, + credentialRequest, + credentialPlan, + ); + const publishBlockedSourceWorkflowIds = workflowsBlockedFromPublish( + credentialRequest.requirements, + new Set(credentialResult.stubbed), + ); + + const { outcomes, bindings } = await this.workflowImporter.apply( + { + ...context, + publishingPolicy: options.workflowPublishingPolicy, + publishBlockedSourceWorkflowIds, + }, + workflowPlan, + createBindings({ credentials: credentialResult.bindings }), + ); + + return { + workflowOutcomes: outcomes, + folderSummaries, + bindings, + credentialResult, + }; + } + + private collectBlockingIssues( + workflowPlan: WorkflowImportPlan, + credentialResolution: CredentialResolution, + credentialRequest: CredentialBindingRequest, + folderPlan: FolderImportPlan, + ): BlockingIssue[] { + return [ + ...workflowPlan.conflicts.map( + (conflict): BlockingIssue => ({ type: 'workflow-conflict', ...conflict }), + ), + ...workflowPlan.idConflicts.map( + (conflict): BlockingIssue => ({ type: 'workflow-id-conflict', ...conflict }), + ), + ...workflowPlan.folderConflicts.map( + (conflict): BlockingIssue => ({ type: 'workflow-folder-conflict', ...conflict }), + ), + ...folderPlan.conflicts.map( + (conflict): BlockingIssue => ({ type: 'folder-conflict', ...conflict }), + ), + ...this.credentialImporter + .blockingFailures(credentialRequest, credentialResolution) + .map(toCredentialBlockingIssue), + ]; + } +} + +function toCredentialBlockingIssue(failure: CredentialResolutionFailure): BlockingIssue { + const { kind, sourceId, targetId, expectedType, actualType, usedByWorkflows } = failure; + return { + type: 'credential-unresolved', + kind, + sourceId, + ...(targetId ? { targetId } : {}), + ...(expectedType ? { expectedType } : {}), + ...(actualType ? { actualType } : {}), + usedByWorkflows, + }; +} diff --git a/packages/cli/src/modules/n8n-packages/engine/import-pipeline.ts b/packages/cli/src/modules/n8n-packages/engine/import-pipeline.ts deleted file mode 100644 index 704258ab667..00000000000 --- a/packages/cli/src/modules/n8n-packages/engine/import-pipeline.ts +++ /dev/null @@ -1,266 +0,0 @@ -import type { Project, User } from '@n8n/db'; -import { ProjectRepository } from '@n8n/db'; -import { Service } from '@n8n/di'; -import { UserError } from 'n8n-workflow'; - -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { EventService } from '@/events/event.service'; -import { FolderService } from '@/services/folder.service'; -import { ProjectService } from '@/services/project.service.ee'; - -import { CredentialImporter } from '../entities/credential/credential-importer'; -import { workflowsBlockedFromPublish } from '../entities/credential/credential-missing-mode'; -import type { - CredentialBindingRequest, - CredentialResolution, -} from '../entities/credential/credential.types'; -import type { - WorkflowImportOutcome, - WorkflowImportPlan, -} from '../entities/workflow/workflow-import.types'; -import { WorkflowImporter } from '../entities/workflow/workflow-importer'; -import { WorkflowPublisher } from '../entities/workflow/workflow-publisher'; -import { toImportBlockedError } from './import-blocked.error'; -import { N8nPackageParser } from './n8n-package-parser'; -import { TarPackageReader } from '../io/tar/tar-package-reader'; -import { PackageImportConfig } from '../n8n-packages.config'; - -import { createBindings, serializeBindings } from '../n8n-packages.types'; -import type { - BlockingIssue, - ImportContext, - ImportCredentialSummary, - ImportPackageRequest, - ImportPackageSummary, - ImportResult, - PackageImportBindings, -} from '../n8n-packages.types'; - -@Service() -export class ImportPipeline { - constructor( - private readonly packageParser: N8nPackageParser, - private readonly credentialImporter: CredentialImporter, - private readonly packageImportConfig: PackageImportConfig, - private readonly projectRepository: ProjectRepository, - private readonly projectService: ProjectService, - private readonly folderService: FolderService, - private readonly eventService: EventService, - private readonly workflowImporter: WorkflowImporter, - private readonly workflowPublisher: WorkflowPublisher, - ) {} - - async run(request: ImportPackageRequest): Promise { - const context = await this.resolveTarget(request.user, request.projectId, request.folderId); - - // PublishAll requires publish scope up front; other policies are checked per workflow - await this.workflowPublisher.assertCanPublish( - context.user, - context.projectId, - request.workflowPublishingPolicy, - ); - - const reader = new TarPackageReader(request.packageBuffer, this.packageImportConfig); - const manifest = await this.packageParser.getManifest(reader); - const workflowsForImport = await this.packageParser.getWorkflows(reader); - - const credentialRequest: CredentialBindingRequest = { - requirements: manifest.requirements?.credentials, - matchingMode: request.credentialMatchingMode, - missingMode: request.credentialMissingMode, - credentialBindings: request.bindings?.credentials, - }; - - const credentialPlan = await this.credentialImporter.plan(context, credentialRequest); - const workflowPlan = await this.workflowImporter.plan(context, workflowsForImport, request); - - const blockingIssues = this.collectBlockingIssues( - workflowPlan, - credentialPlan, - credentialRequest, - ); - - const packageSummary: ImportPackageSummary = { - sourceN8nVersion: manifest.sourceN8nVersion, - sourceId: manifest.sourceId, - exportedAt: manifest.exportedAt, - }; - - if (blockingIssues.length > 0) { - throw toImportBlockedError(blockingIssues); - } - - const credentialApply = await this.credentialImporter.apply( - context, - credentialRequest, - credentialPlan, - ); - const publishBlockedSourceWorkflowIds = workflowsBlockedFromPublish( - credentialRequest.requirements, - new Set(credentialApply.stubbed), - ); - - const { outcomes, bindings } = await this.workflowImporter.apply( - { - ...context, - publishingPolicy: request.workflowPublishingPolicy, - publishBlockedSourceWorkflowIds, - }, - workflowPlan, - createBindings({ credentials: credentialApply.bindings }), - ); - - const imported = outcomes.filter(({ status }) => status !== 'skipped'); - const countByStatus = (status: WorkflowImportOutcome['status']) => - outcomes.filter((outcome) => outcome.status === status).length; - this.eventService.emit('n8n-package-imported', { - user: context.user, - projectId: context.projectId, - folderId: context.folderId, - workflowIds: imported.map(({ workflow }) => workflow.id), - options: { - workflowConflictPolicy: request.workflowConflictPolicy, - workflowIdPolicy: request.workflowIdPolicy, - credentialMatchingMode: request.credentialMatchingMode, - credentialMissingMode: request.credentialMissingMode, - workflowPublishingPolicy: request.workflowPublishingPolicy, - }, - packageSourceId: manifest.sourceId, - packageVersion: manifest.packageFormatVersion, - credentialIds: { - matched: credentialApply.matched.map((sourceId) => credentialApply.bindings.get(sourceId)!), - created: credentialApply.stubbed.map((sourceId) => credentialApply.bindings.get(sourceId)!), - updated: [], - }, - counts: { - workflows: { - created: countByStatus('created'), - updated: countByStatus('updated'), - skipped: countByStatus('skipped'), - }, - credentials: { - matched: credentialApply.matched.length, - created: credentialApply.stubbed.length, - requirements: credentialRequest.requirements?.length ?? 0, - }, - }, - }); - - return this.buildResult(packageSummary, context.projectId, outcomes, bindings, { - matched: credentialApply.matched, - stubbed: credentialApply.stubbed, - }); - } - - /** Folds every subsystem's blocking conditions into one uniformly-typed list. */ - private collectBlockingIssues( - workflowPlan: WorkflowImportPlan, - credentialResolution: CredentialResolution, - credentialRequest: CredentialBindingRequest, - ): BlockingIssue[] { - const workflowConflicts: BlockingIssue[] = workflowPlan.conflicts.map((conflict) => ({ - type: 'workflow-conflict', - ...conflict, - })); - - const workflowIdConflicts: BlockingIssue[] = workflowPlan.idConflicts.map((conflict) => ({ - type: 'workflow-id-conflict', - ...conflict, - })); - - const workflowFolderConflicts: BlockingIssue[] = workflowPlan.folderConflicts.map( - (conflict) => ({ - type: 'workflow-folder-conflict', - ...conflict, - }), - ); - - const credentialFailures: BlockingIssue[] = this.credentialImporter - .blockingFailures(credentialRequest, credentialResolution) - .map(({ kind, sourceId, targetId, expectedType, actualType, usedByWorkflows }) => ({ - type: 'credential-unresolved', - kind, - sourceId, - ...(targetId ? { targetId } : {}), - ...(expectedType ? { expectedType } : {}), - ...(actualType ? { actualType } : {}), - usedByWorkflows, - })); - - return [ - ...workflowConflicts, - ...workflowIdConflicts, - ...workflowFolderConflicts, - ...credentialFailures, - ]; - } - - private buildResult( - packageSummary: ImportPackageSummary, - projectId: string, - outcomes: WorkflowImportOutcome[], - bindings: PackageImportBindings, - credentials: ImportCredentialSummary, - ): ImportResult { - return { - package: packageSummary, - workflows: outcomes.map(({ workflow, sourceWorkflowId, status, publishing }) => ({ - sourceWorkflowId, - localId: workflow.id, - name: workflow.name, - projectId, - parentFolderId: workflow.parentFolder?.id ?? null, - activeVersionId: workflow.activeVersionId ?? null, - publishing, - status, - })), - bindings: serializeBindings(bindings), - credentials, - }; - } - - private async resolveTarget( - user: User, - projectId: string | undefined, - folderId: string | undefined, - ): Promise { - const project = await this.resolveImportProject(user, projectId); - await this.assertFolderExistsInProject(folderId, project.id); - - return { user, projectId: project.id, folderId: folderId ?? null }; - } - - private async resolveImportProject(user: User, projectId: string | undefined): Promise { - if (projectId === undefined) { - return await this.projectRepository.getPersonalProjectForUserOrFail(user.id); - } - - const project = await this.projectService.getProjectWithScope(user, projectId, [ - 'workflow:import', - ]); - if (project) { - return project; - } - - if (!(await this.projectRepository.existsBy({ id: projectId }))) { - throw new NotFoundError(`Project not found: ${projectId}`); - } - throw new ForbiddenError('You do not have permission to import workflows into this project.'); - } - - private async assertFolderExistsInProject( - folderId: string | undefined, - projectId: string, - ): Promise { - if (folderId === undefined) { - return; - } - - try { - await this.folderService.findFolderInProjectOrFail(folderId, projectId); - } catch (cause) { - throw new UserError(`Folder not found in target project: ${folderId}`, { cause }); - } - } -} diff --git a/packages/cli/src/modules/n8n-packages/engine/import-result.ts b/packages/cli/src/modules/n8n-packages/engine/import-result.ts new file mode 100644 index 00000000000..a42ad667c3e --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/engine/import-result.ts @@ -0,0 +1,63 @@ +import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; + +import type { WorkflowImportOutcome } from '../entities/workflow/workflow-import.types'; +import { serializeBindings } from '../n8n-packages.types'; +import type { + ImportCredentialSummary, + ImportedFolderSummary, + ImportPackageSummary, + ImportResult, + PackageImportBindings, +} from '../n8n-packages.types'; +import type { PackageManifest } from '../spec/manifest.schema'; + +export function toPackageSummary(manifest: PackageManifest): ImportPackageSummary { + return { + sourceN8nVersion: manifest.sourceN8nVersion, + sourceId: manifest.sourceId, + exportedAt: manifest.exportedAt, + }; +} + +/** Assembles the wire {@link ImportResult} from each entity importer's outcome. */ +export function buildImportResult(input: { + package: ImportPackageSummary; + projectId: string | null; + workflows: WorkflowImportOutcome[]; + folders: ImportedFolderSummary[]; + bindings: PackageImportBindings; + credentials?: ImportCredentialSummary; +}): ImportResult { + return { + package: input.package, + workflows: input.workflows.map(({ workflow, sourceWorkflowId, status, publishing }) => ({ + sourceWorkflowId, + localId: workflow.id, + name: workflow.name, + projectId: input.projectId ?? '', + parentFolderId: workflow.parentFolder?.id ?? null, + activeVersionId: workflow.activeVersionId ?? null, + publishing, + status, + })), + folders: input.folders, + bindings: serializeBindings(input.bindings), + credentials: input.credentials ?? { matched: [], stubbed: [] }, + }; +} + +/** + * Asserts the caller's API key carries the scopes the package's contents require (public API only). + * Internal callers omit `apiKeyScopes` and are authorized by user RBAC alone. + */ +export function assertPackageImportApiKeyScopes( + apiKeyScopes: string[] | undefined, + required: string[], +): void { + if (apiKeyScopes === undefined) return; + for (const scope of required) { + if (!apiKeyScopes.includes(scope)) { + throw new ForbiddenError('Forbidden'); + } + } +} diff --git a/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts b/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts index 9ad1d85199c..77c22ae0130 100644 --- a/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts +++ b/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts @@ -6,11 +6,14 @@ import { ZodError } from 'zod'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import * as WorkflowHelpers from '@/workflow-helpers'; +import { topLevelFolders, topLevelWorkflows } from './package-layout'; +import type { PreparedFolder } from '../entities/folder/folder-import.types'; import type { PreparedWorkflow } from '../entities/workflow/workflow-import.types'; import { WorkflowSerializer } from '../entities/workflow/workflow.serializer'; import type { PackageReader } from '../io/package-reader'; import type { ManifestEntry, PackageManifest } from '../spec/manifest.schema'; import { packageManifestSchema } from '../spec/manifest.schema'; +import { serializedFolderSchema } from '../spec/serialized/folder.schema'; import type { SerializedWorkflow } from '../spec/serialized/workflow.schema'; /** @@ -34,34 +37,34 @@ export class N8nPackageParser { } } + /** Reads the package's top-level workflows; those nested in a folder or project are skipped. */ async getWorkflows(reader: PackageReader): Promise { const manifest = await this.getManifest(reader); const workflows: PreparedWorkflow[] = []; - for (const entry of manifest.workflows ?? []) { + for (const entry of topLevelWorkflows(manifest.workflows)) { workflows.push(await this.readWorkflow(reader, entry)); } return workflows; } + /** Reads the package's top-level folder shells (project-nested folders are skipped). */ + async getFolders(reader: PackageReader): Promise { + const manifest = await this.getManifest(reader); + + const folders: PreparedFolder[] = []; + for (const entry of topLevelFolders(manifest.folders)) { + folders.push(await this.readFolder(reader, entry)); + } + return folders; + } + private async readWorkflow( reader: PackageReader, entry: ManifestEntry, ): Promise { const path = `${entry.target}/workflow.json`; - - let content: Buffer; - try { - content = await reader.readFile(path); - } catch (cause) { - throw new UserError(`Package manifest references a missing workflow file at ${path}.`, { - cause, - }); - } - - const wire = jsonParse(content.toString('utf-8'), { - errorMessage: `Package workflow file at ${path} is not valid JSON.`, - }); + const wire = await this.readJson(reader, path, 'workflow'); let entity: WorkflowEntity; try { @@ -80,4 +83,42 @@ export class N8nPackageParser { return { entity, sourceWorkflowId: entry.id, sourcePublished: wire.isPublished }; } + + private async readFolder(reader: PackageReader, entry: ManifestEntry): Promise { + const path = `${entry.target}/folder.json`; + const wire = await this.readJson(reader, path, 'folder'); + + try { + const folder = serializedFolderSchema.parse(wire); + return { + sourceFolderId: folder.id, + name: folder.name, + parentFolderId: folder.parentFolderId, + }; + } catch (cause) { + if (cause instanceof ZodError) { + throw new UserError(`Package folder file at ${path} failed schema validation.`, { cause }); + } + throw cause; + } + } + + private async readJson( + reader: PackageReader, + path: string, + label: string, + ): Promise { + let content: Buffer; + try { + content = await reader.readFile(path); + } catch (cause) { + throw new UserError(`Package manifest references a missing ${label} file at ${path}.`, { + cause, + }); + } + + return jsonParse(content.toString('utf-8'), { + errorMessage: `Package ${label} file at ${path} is not valid JSON.`, + }); + } } diff --git a/packages/cli/src/modules/n8n-packages/engine/package-layout.ts b/packages/cli/src/modules/n8n-packages/engine/package-layout.ts new file mode 100644 index 00000000000..13a15a43a7e --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/engine/package-layout.ts @@ -0,0 +1,23 @@ +import type { ManifestEntry } from '../spec/manifest.schema'; + +export const PACKAGE_TOP_LEVEL_DIRS = { + workflows: 'workflows', + folders: 'folders', + projects: 'projects', +} as const; + +type TopLevelDir = (typeof PACKAGE_TOP_LEVEL_DIRS)[keyof typeof PACKAGE_TOP_LEVEL_DIRS]; + +// A top-level target begins with `${dir}/`; a nested one carries its scope's prefix first +// (e.g. `projects/x/folders/a`, `folders/a/workflows/wf`). +export function isTopLevelTarget(target: string, dir: TopLevelDir): boolean { + return target.startsWith(`${dir}/`); +} + +export function topLevelFolders(entries: ManifestEntry[] | undefined): ManifestEntry[] { + return (entries ?? []).filter((entry) => isTopLevelTarget(entry.target, 'folders')); +} + +export function topLevelWorkflows(entries: ManifestEntry[] | undefined): ManifestEntry[] { + return (entries ?? []).filter((entry) => isTopLevelTarget(entry.target, 'workflows')); +} diff --git a/packages/cli/src/modules/n8n-packages/engine/workflow-package-importer.ts b/packages/cli/src/modules/n8n-packages/engine/workflow-package-importer.ts new file mode 100644 index 00000000000..d455633c87b --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/engine/workflow-package-importer.ts @@ -0,0 +1,221 @@ +import { LicenseState } from '@n8n/backend-common'; +import type { Project, User } from '@n8n/db'; +import { Service } from '@n8n/di'; +import type { Scope } from '@n8n/permissions'; +import { UserError } from 'n8n-workflow'; + +import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; +import { NotFoundError } from '@/errors/response-errors/not-found.error'; +import { EventService } from '@/events/event.service'; +import { FolderService } from '@/services/folder.service'; +import { ProjectService } from '@/services/project.service.ee'; + +import type { CredentialBindingRequest } from '../entities/credential/credential.types'; +import type { + PreparedWorkflow, + WorkflowImportOutcome, +} from '../entities/workflow/workflow-import.types'; +import type { ImportContext, ImportPackageRequest, ImportResult } from '../n8n-packages.types'; +import type { PackageReader } from '../io/package-reader'; +import type { PackageManifest } from '../spec/manifest.schema'; +import type { PackageCredentialRequirement } from '../spec/requirements.schema'; +import { ImportOrchestrator, type ImportOrchestrationResult } from './import-orchestrator'; +import { + assertPackageImportApiKeyScopes, + buildImportResult, + toPackageSummary, +} from './import-result'; +import { N8nPackageParser } from './n8n-package-parser'; + +/** + * Imports loose top-level workflows, their folder shells, and credential deps into a target project. + * Resolves the target scope from the request, then delegates plan/gate/apply to ImportOrchestrator. + */ +@Service() +export class WorkflowPackageImporter { + constructor( + private readonly packageParser: N8nPackageParser, + private readonly importOrchestrator: ImportOrchestrator, + private readonly projectService: ProjectService, + private readonly folderService: FolderService, + private readonly eventService: EventService, + private readonly licenseState: LicenseState, + ) {} + + async import( + request: ImportPackageRequest, + reader: PackageReader, + manifest: PackageManifest, + ): Promise { + const folders = await this.packageParser.getFolders(reader); + if (folders.length > 0) { + this.assertFoldersLicensed(); + assertPackageImportApiKeyScopes(request.apiKeyScopes, ['folder:create', 'folder:update']); + } + + const context = await this.findImportLocation( + request.user, + request.projectId, + request.folderId, + folders.length > 0, + ); + + const workflows = await this.packageParser.getWorkflows(reader); + const credentialRequest: CredentialBindingRequest = { + requirements: identifyRequirements(manifest.requirements?.credentials, workflows), + matchingMode: request.credentialMatchingMode, + missingMode: request.credentialMissingMode, + credentialBindings: request.bindings?.credentials, + }; + + const imported = await this.importOrchestrator.import({ + context, + folders, + workflows, + credentialRequest, + options: request, + }); + + this.emitImportedEvent(request, context, manifest, imported, credentialRequest); + + return buildImportResult({ + package: toPackageSummary(manifest), + projectId: context.projectId, + workflows: imported.workflowOutcomes, + folders: imported.folderSummaries, + bindings: imported.bindings, + credentials: { + matched: imported.credentialResult.matched, + stubbed: imported.credentialResult.stubbed, + }, + }); + } + + private assertFoldersLicensed(): void { + if (!this.licenseState.isLicensed('feat:folders')) { + throw new ForbiddenError( + 'Your license does not allow folders. Importing a package with folders requires a license that supports folders.', + ); + } + } + + private emitImportedEvent( + request: ImportPackageRequest, + context: ImportContext, + manifest: PackageManifest, + imported: ImportOrchestrationResult, + credentialRequest: CredentialBindingRequest, + ): void { + const { workflowOutcomes, credentialResult } = imported; + const importedWorkflows = workflowOutcomes.filter(({ status }) => status !== 'skipped'); + const countByStatus = (status: WorkflowImportOutcome['status']) => + workflowOutcomes.filter((outcome) => outcome.status === status).length; + + this.eventService.emit('n8n-package-imported', { + user: context.user, + projectId: context.projectId, + folderId: context.folderId, + workflowIds: importedWorkflows.map(({ workflow }) => workflow.id), + options: { + workflowConflictPolicy: request.workflowConflictPolicy, + workflowIdPolicy: request.workflowIdPolicy, + credentialMatchingMode: request.credentialMatchingMode, + credentialMissingMode: request.credentialMissingMode, + workflowPublishingPolicy: request.workflowPublishingPolicy, + }, + packageSourceId: manifest.sourceId, + packageVersion: manifest.packageFormatVersion, + credentialIds: { + matched: credentialResult.matched.map( + (sourceId) => credentialResult.bindings.get(sourceId)!, + ), + created: credentialResult.stubbed.map( + (sourceId) => credentialResult.bindings.get(sourceId)!, + ), + updated: [], + }, + counts: { + workflows: { + created: countByStatus('created'), + updated: countByStatus('updated'), + skipped: countByStatus('skipped'), + }, + credentials: { + matched: credentialResult.matched.length, + created: credentialResult.stubbed.length, + requirements: credentialRequest.requirements?.length ?? 0, + }, + }, + }); + } + + private async findImportLocation( + user: User, + projectId: string | undefined, + folderId: string | undefined, + needsFolderCreate: boolean, + ): Promise { + const scopes: Scope[] = needsFolderCreate + ? ['workflow:import', 'folder:create', 'folder:update'] + : ['workflow:import']; + const project = await this.resolveImportProject(user, projectId, scopes); + await this.assertFolderExistsInProject(folderId, project.id); + + return { user, projectId: project.id, folderId: folderId ?? null }; + } + + private async resolveImportProject( + user: User, + projectId: string | undefined, + scopes: Scope[], + ): Promise { + if (projectId === undefined) { + const personalProject = await this.projectService.getPersonalProject(user); + if (!personalProject) { + throw new NotFoundError('Personal project not found'); + } + return personalProject; + } + + const project = await this.projectService.getProjectWithScope(user, projectId, scopes); + if (project) { + return project; + } + + if (!(await this.projectService.findProject(projectId))) { + throw new NotFoundError(`Project not found: ${projectId}`); + } + throw new ForbiddenError('You do not have permission to import into this project.'); + } + + private async assertFolderExistsInProject( + folderId: string | undefined, + projectId: string, + ): Promise { + if (folderId === undefined) { + return; + } + + try { + await this.folderService.findFolderInProjectOrFail(folderId, projectId); + } catch (cause) { + throw new UserError(`Folder not found in target project: ${folderId}`, { cause }); + } + } +} + +/** Keeps only the credential requirements used by the imported workflows, trimming `usedByWorkflows` to match. */ +function identifyRequirements( + requirements: PackageCredentialRequirement[] | undefined, + workflows: PreparedWorkflow[], +): PackageCredentialRequirement[] | undefined { + if (!requirements) return undefined; + + const importedIds = new Set(workflows.map((workflow) => workflow.sourceWorkflowId)); + return requirements + .map((requirement) => ({ + ...requirement, + usedByWorkflows: requirement.usedByWorkflows.filter((id) => importedIds.has(id)), + })) + .filter((requirement) => requirement.usedByWorkflows.length > 0); +} diff --git a/packages/cli/src/modules/n8n-packages/entities/folder/__tests__/folder-conflict-policy.test.ts b/packages/cli/src/modules/n8n-packages/entities/folder/__tests__/folder-conflict-policy.test.ts new file mode 100644 index 00000000000..b686b765f02 --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/entities/folder/__tests__/folder-conflict-policy.test.ts @@ -0,0 +1,11 @@ +import { decideMatchedFolder } from '../folder-conflict-policy'; + +describe('decideMatchedFolder', () => { + it('does not block under merge', () => { + expect(decideMatchedFolder('merge')).toEqual({ blocked: false }); + }); + + it('blocks under fail', () => { + expect(decideMatchedFolder('fail')).toEqual({ blocked: true }); + }); +}); diff --git a/packages/cli/src/modules/n8n-packages/entities/folder/folder-conflict-policy.ts b/packages/cli/src/modules/n8n-packages/entities/folder/folder-conflict-policy.ts new file mode 100644 index 00000000000..9614f49f849 --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/entities/folder/folder-conflict-policy.ts @@ -0,0 +1,16 @@ +import type { FolderConflictPolicy } from '../../n8n-packages.types'; + +export interface MatchedFolderDecision { + blocked: boolean; +} + +const FOLDER_CONFLICT_POLICIES: Record = { + // Merge folders into any pre-existing parents + merge: { blocked: false }, + // Fail the import if a folder exists already + fail: { blocked: true }, +}; + +export function decideMatchedFolder(policy: FolderConflictPolicy): MatchedFolderDecision { + return FOLDER_CONFLICT_POLICIES[policy]; +} diff --git a/packages/cli/src/modules/n8n-packages/entities/folder/folder-import.types.ts b/packages/cli/src/modules/n8n-packages/entities/folder/folder-import.types.ts new file mode 100644 index 00000000000..e5deffc6d52 --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/entities/folder/folder-import.types.ts @@ -0,0 +1,25 @@ +import type { FolderConflict, FolderConflictPolicy, ImportContext } from '../../n8n-packages.types'; + +export interface PreparedFolder { + sourceFolderId: string; + name: string; + parentFolderId: string | null; +} + +export interface FolderImportContext extends ImportContext { + folderConflictPolicy: FolderConflictPolicy; +} + +export type FolderPlannedAction = 'create' | 'skip'; + +export interface FolderPlanItem { + action: FolderPlannedAction; + sourceFolderId: string; + name: string; + targetParentFolderId: string | null; +} + +export interface FolderImportPlan { + items: FolderPlanItem[]; + conflicts: FolderConflict[]; +} diff --git a/packages/cli/src/modules/n8n-packages/entities/folder/folder-importer.ts b/packages/cli/src/modules/n8n-packages/entities/folder/folder-importer.ts new file mode 100644 index 00000000000..e09d517bafc --- /dev/null +++ b/packages/cli/src/modules/n8n-packages/entities/folder/folder-importer.ts @@ -0,0 +1,177 @@ +import { Service } from '@n8n/di'; +import { UserError } from 'n8n-workflow'; + +import { FolderService } from '@/services/folder.service'; + +import { decideMatchedFolder } from './folder-conflict-policy'; +import type { + FolderImportContext, + FolderImportPlan, + FolderPlanItem, + PreparedFolder, +} from './folder-import.types'; +import type { FolderConflict, ImportedFolderSummary } from '../../n8n-packages.types'; + +interface ExistingFolder { + projectId: string; + parentFolderId: string | null; + name: string; +} + +@Service() +export class FolderImporter { + constructor(private readonly folderService: FolderService) {} + + async plan(context: FolderImportContext, folders: PreparedFolder[]): Promise { + const ordered = orderParentsFirst(folders); + const existing = await this.findExisting(ordered.map(({ sourceFolderId }) => sourceFolderId)); + + const items: FolderPlanItem[] = []; + const conflicts: FolderConflict[] = []; + + for (const folder of ordered) { + const targetParentFolderId = + folder.parentFolderId === null ? (context.folderId ?? null) : folder.parentFolderId; + + const match = existing.get(folder.sourceFolderId); + + if (!match) { + items.push({ + action: 'create', + sourceFolderId: folder.sourceFolderId, + name: folder.name, + targetParentFolderId, + }); + continue; + } + + if (match.projectId !== context.projectId) { + conflicts.push({ + kind: 'id-in-other-project', + sourceFolderId: folder.sourceFolderId, + name: folder.name, + existingProjectId: match.projectId, + }); + continue; + } + + // If this is different then it's essentially a folder "move" which we don't want. + if (match.parentFolderId !== targetParentFolderId) { + conflicts.push({ + kind: 'parent-mismatch', + sourceFolderId: folder.sourceFolderId, + name: folder.name, + existingParentFolderId: match.parentFolderId, + expectedParentFolderId: targetParentFolderId, + }); + continue; + } + + if (decideMatchedFolder(context.folderConflictPolicy).blocked) { + conflicts.push({ + kind: 'fail-policy', + sourceFolderId: folder.sourceFolderId, + name: folder.name, + }); + continue; + } + + // `merge`: reuse the existing folder untouched; its children merge in via id reuse. + items.push({ + action: 'skip', + sourceFolderId: folder.sourceFolderId, + name: folder.name, + targetParentFolderId, + }); + } + + return { items, conflicts }; + } + + async apply( + context: FolderImportContext, + plan: FolderImportPlan, + ): Promise { + const summaries: ImportedFolderSummary[] = []; + + for (const item of plan.items) { + if (item.action === 'skip') { + summaries.push(toSummary(item, 'skipped')); + continue; + } + + await this.folderService.createFolder( + { name: item.name, parentFolderId: item.targetParentFolderId ?? undefined }, + context.projectId, + item.sourceFolderId, + ); + summaries.push(toSummary(item, 'created')); + } + + return summaries; + } + + private async findExisting(folderIds: string[]): Promise> { + const folders = await this.folderService.getFoldersByIds(folderIds); + return new Map( + folders.map((folder) => [ + folder.id, + { + projectId: folder.homeProject.id, + parentFolderId: folder.parentFolderId, + name: folder.name, + }, + ]), + ); + } +} + +function toSummary( + item: FolderPlanItem, + status: ImportedFolderSummary['status'], +): ImportedFolderSummary { + return { + sourceFolderId: item.sourceFolderId, + localId: item.sourceFolderId, + name: item.name, + parentFolderId: item.targetParentFolderId, + status, + }; +} + +/** + * Orders folders from parents -> children + * @param folders + */ +function orderParentsFirst(folders: PreparedFolder[]): PreparedFolder[] { + const byId = new Map(folders.map((folder) => [folder.sourceFolderId, folder])); + const ordered: PreparedFolder[] = []; + const visited = new Set(); + const onStack = new Set(); + + const visit = (folder: PreparedFolder): void => { + if (visited.has(folder.sourceFolderId)) return; + if (onStack.has(folder.sourceFolderId)) { + throw new UserError('Package folder hierarchy contains a cycle.'); + } + onStack.add(folder.sourceFolderId); + + const parentId = folder.parentFolderId; + if (parentId !== null) { + const parent = byId.get(parentId); + if (!parent) { + throw new UserError( + `Package folder "${folder.name}" references a parent folder that is not in the package.`, + ); + } + visit(parent); + } + + onStack.delete(folder.sourceFolderId); + visited.add(folder.sourceFolderId); + ordered.push(folder); + }; + + for (const folder of folders) visit(folder); + return ordered; +} diff --git a/packages/cli/src/modules/n8n-packages/entities/folder/folder.serializer.ts b/packages/cli/src/modules/n8n-packages/entities/folder/folder.serializer.ts index 4ce71b41402..f8d7ce23e9c 100644 --- a/packages/cli/src/modules/n8n-packages/entities/folder/folder.serializer.ts +++ b/packages/cli/src/modules/n8n-packages/entities/folder/folder.serializer.ts @@ -5,12 +5,6 @@ import { serializedFolderSchema, type SerializedFolder } from '../../spec/serial @Service() export class FolderSerializer { - /** - * Serializes a folder into its package shell. The exporter passes the - * `parentFolderId` it computed relative to the exported set (null when the - * folder roots the exported forest), so we deliberately ignore the entity's - * own parent. - */ serialize(folder: Folder, parentFolderId: string | null): SerializedFolder { return serializedFolderSchema.parse({ id: folder.id, diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts index 5a67dfaec05..241c241bf9c 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts @@ -13,7 +13,7 @@ import { WorkflowPublisher } from '../workflow-publisher'; import { WorkflowPublishingPolicy } from '../workflow-publishing-policy.types'; // The publish/unpublish matrix is covered end-to-end by -// `import-pipeline.integration.test.ts`. These unit tests cover the permission +// `import-package.integration.test.ts`. These unit tests cover the permission // gate and the publish-failure fallback the integration suite can't reach (it // always runs as an authorized owner against publishable workflows). describe('WorkflowPublisher', () => { diff --git a/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts b/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts index 8a3eeb67593..127e8604ce1 100644 --- a/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts +++ b/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts @@ -5,13 +5,16 @@ import type { Readable } from 'node:stream'; import { N8N_VERSION } from '@/constants'; import { EventService } from '@/events/event.service'; -import { ImportPipeline } from './engine/import-pipeline'; +import { N8nPackageParser } from './engine/n8n-package-parser'; +import { WorkflowPackageImporter } from './engine/workflow-package-importer'; import { CredentialExporter } from './entities/credential/credential.exporter'; import { FolderExporter } from './entities/folder/folder.exporter'; import { ProjectExporter } from './entities/project/project.exporter'; import { mergeRequirements } from './entities/requirements.types'; import { WorkflowExporter } from './entities/workflow/workflow.exporter'; +import { TarPackageReader } from './io/tar/tar-package-reader'; import { TarPackageWriter } from './io/tar/tar-package-writer'; +import { PackageImportConfig } from './n8n-packages.config'; import type { ExportPackageRequest, ImportPackageRequest, @@ -28,7 +31,9 @@ export class N8nPackagesService { private readonly folderExporter: FolderExporter, private readonly credentialExporter: CredentialExporter, private readonly instanceSettings: InstanceSettings, - private readonly importPipeline: ImportPipeline, + private readonly packageParser: N8nPackageParser, + private readonly packageImportConfig: PackageImportConfig, + private readonly workflowPackageImporter: WorkflowPackageImporter, private readonly eventService: EventService, ) {} @@ -137,7 +142,9 @@ export class N8nPackagesService { } async importPackage(request: ImportPackageRequest): Promise { - return await this.importPipeline.run(request); + const reader = new TarPackageReader(request.packageBuffer, this.packageImportConfig); + const manifest = await this.packageParser.getManifest(reader); + return await this.workflowPackageImporter.import(request, reader, manifest); } filterWorkflowsAlreadyInFolders(workflowsInFolders: ManifestEntry[] = [], workflowIds: string[]) { diff --git a/packages/cli/src/modules/n8n-packages/n8n-packages.types.ts b/packages/cli/src/modules/n8n-packages/n8n-packages.types.ts index 8d328af593d..1ce5f438d30 100644 --- a/packages/cli/src/modules/n8n-packages/n8n-packages.types.ts +++ b/packages/cli/src/modules/n8n-packages/n8n-packages.types.ts @@ -1,5 +1,10 @@ import type { User } from '@n8n/db'; +import type { WorkflowIdConflict } from './entities/workflow/workflow-import-match.service'; +import type { + WorkflowConflict, + WorkflowFolderConflict, +} from './entities/workflow/workflow-import.types'; import type { WorkflowPublishingOutcome, WorkflowPublishingPolicy, @@ -30,6 +35,13 @@ export const WorkflowIdPolicy = { /** Reuses the package's own workflow id in the target instance. */ Source: 'source', } as const; + +export const FolderConflictPolicy = { + /** Reuses an already-imported folder (matched by id) as-is and merges the package's children into it; otherwise creates it. */ + Merge: 'merge', + /** Fails the import if any package folder already exists in the target project. */ + Fail: 'fail', +} as const; /* eslint-enable @typescript-eslint/naming-convention */ export type WorkflowConflictPolicy = @@ -37,6 +49,8 @@ export type WorkflowConflictPolicy = export type WorkflowIdPolicy = (typeof WorkflowIdPolicy)[keyof typeof WorkflowIdPolicy]; +export type FolderConflictPolicy = (typeof FolderConflictPolicy)[keyof typeof FolderConflictPolicy]; + export interface ExportPackageRequest { user: User; workflowIds?: string[]; @@ -50,8 +64,10 @@ export type ImportPackageRequest = { folderId?: string; packageBuffer: Buffer; bindings?: Partial; + apiKeyScopes?: string[]; } & ImportCredentialProperties & - ImportWorkflowProperties; + ImportWorkflowProperties & + ImportFolderProperties; export type ImportCredentialProperties = { credentialMatchingMode: CredentialMatchingMode; @@ -64,6 +80,10 @@ export type ImportWorkflowProperties = { workflowIdPolicy: WorkflowIdPolicy; }; +export type ImportFolderProperties = { + folderConflictPolicy: FolderConflictPolicy; +}; + /** * The actor and resolved destination an import writes into. Threaded through * each entity importer so they share one resolved target instead of re-deriving @@ -121,34 +141,23 @@ export interface ImportedWorkflowSummary { status: 'created' | 'updated' | 'skipped'; } +export interface ImportedFolderSummary { + sourceFolderId: string; + localId: string; + name: string; + parentFolderId: string | null; + status: 'created' | 'skipped'; +} + /** * A reason the import cannot proceed, produced by some policy from any subsystem. * Discriminated by `type` so new gates add a variant rather than a new throw site. * The import aborts when any are present. */ export type BlockingIssue = - | { - type: 'workflow-conflict'; - sourceWorkflowId: string; - existingWorkflowId: string; - name: string; - } - | { - type: 'workflow-id-conflict'; - sourceWorkflowId: string; - existingWorkflowId: string; - existingProjectId: string | null; - isArchived: boolean; - name: string; - } - | { - type: 'workflow-folder-conflict'; - sourceWorkflowId: string; - existingWorkflowId: string; - existingParentFolderId: string | null; - targetFolderId: string; - name: string; - } + | ({ type: 'workflow-conflict' } & WorkflowConflict) + | ({ type: 'workflow-id-conflict' } & WorkflowIdConflict) + | ({ type: 'workflow-folder-conflict' } & WorkflowFolderConflict) | { type: 'credential-unresolved'; kind: 'not_found' | 'unknown_type' | 'source_not_found' | 'type_mismatch'; @@ -159,7 +168,17 @@ export type BlockingIssue = /** For `type_mismatch`: the actual type of the resolved target credential. */ actualType?: string; usedByWorkflows: string[]; - }; + } + | ({ type: 'folder-conflict' } & FolderConflict); + +export interface FolderConflict { + kind: 'parent-mismatch' | 'id-in-other-project' | 'fail-policy'; + sourceFolderId: string; + name: string; + existingParentFolderId?: string | null; + expectedParentFolderId?: string | null; + existingProjectId?: string | null; +} /** Source id → target id mapping for one entity type within an imported package. */ export type ImportBindingMap = Map; @@ -203,10 +222,10 @@ export interface ImportCredentialSummary { stubbed: string[]; } -/** Result of an import: the workflows written to the database. */ export interface ImportResult { package: ImportPackageSummary; workflows: ImportedWorkflowSummary[]; + folders: ImportedFolderSummary[]; bindings: SerializedBindings; credentials: ImportCredentialSummary; } diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts index ab6337d373c..f396064c283 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts @@ -32,6 +32,7 @@ import { mock } from 'vitest-mock-extended'; import type { VariablesService } from '@/environments.ee/variables/variables.service.ee'; import type { DataTableColumnRepository } from '@/modules/data-table/data-table-column.repository'; import type { DataTableDDLService } from '@/modules/data-table/data-table-ddl.service'; +import type { DataTableSizeValidator } from '@/modules/data-table/data-table-size-validator.service'; import type { DataTableRepository } from '@/modules/data-table/data-table.repository'; import type { RedactionEnforcementService } from '@/modules/redaction/redaction-enforcement.service'; import type { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service'; @@ -68,6 +69,7 @@ describe('SourceControlImportService', () => { const dataTableColumnRepository = mock(); const dataTableDDLService = mock(); const redactionEnforcementService = mock(); + const dataTableSizeValidator = mock(); const globalAdminContext = new SourceControlContext( Object.assign(new User(), { role: GLOBAL_ADMIN_ROLE }), @@ -106,6 +108,7 @@ describe('SourceControlImportService', () => { dataTableColumnRepository, dataTableDDLService, redactionEnforcementService, + dataTableSizeValidator, ); const globMock = fastGlob.default as unknown as Mock<(...args: string[]) => Promise>; @@ -3018,6 +3021,55 @@ describe('SourceControlImportService', () => { }); }); + describe('resolveRemoteDataTableProjectId', () => { + it('resolves a team owner to the team id', async () => { + await expect( + service.resolveRemoteDataTableProjectId( + { type: 'team', teamId: 'team1', teamName: 'Team 1' }, + 'puller', + ), + ).resolves.toBe('team1'); + }); + + it('resolves a known personal owner to their personal project', async () => { + userRepository.findOne.mockResolvedValue({ id: 'user1' } as any); + projectRepository.getPersonalProjectForUserOrFail.mockResolvedValue({ id: 'pp1' } as any); + + await expect( + service.resolveRemoteDataTableProjectId( + { type: 'personal', personalEmail: 'owner@test.com' }, + 'puller', + ), + ).resolves.toBe('pp1'); + expect(projectRepository.getPersonalProjectForUserOrFail).toHaveBeenCalledWith('user1'); + }); + + it("falls back to the pulling user's personal project for an unknown personal owner", async () => { + userRepository.findOne.mockResolvedValue(null); + projectRepository.getPersonalProjectForUserOrFail.mockResolvedValue({ + id: 'pp-puller', + } as any); + + await expect( + service.resolveRemoteDataTableProjectId( + { type: 'personal', personalEmail: 'unknown@test.com' }, + 'puller', + ), + ).resolves.toBe('pp-puller'); + expect(projectRepository.getPersonalProjectForUserOrFail).toHaveBeenCalledWith('puller'); + }); + + it("falls back to the pulling user's personal project when there is no owner", async () => { + projectRepository.getPersonalProjectForUserOrFail.mockResolvedValue({ + id: 'pp-puller', + } as any); + + await expect(service.resolveRemoteDataTableProjectId(null, 'puller')).resolves.toBe( + 'pp-puller', + ); + }); + }); + describe('Data Tables', () => { describe('getRemoteDataTablesFromFiles', () => { it('should return data tables from individual files', async () => { @@ -3275,6 +3327,8 @@ describe('SourceControlImportService', () => { updatedAt: '2024-01-01T00:00:00.000Z', }; + let mockTransaction: { save: Mock; delete: Mock; insert: Mock }; + beforeEach(() => { projectRepository.getPersonalProjectForUserOrFail.mockResolvedValue( mockPersonalProject as any, @@ -3283,10 +3337,12 @@ describe('SourceControlImportService', () => { mockPersonalProject, { id: 'project1', type: 'team' }, ] as any); + dataTableDDLService.tableExists.mockResolvedValue(false); - const mockTransaction = { + mockTransaction = { save: vi.fn(async (_entity: any, data: any) => data), delete: vi.fn(async () => {}), + insert: vi.fn(async () => {}), }; Object.defineProperty(dataTableRepository, 'manager', { @@ -3525,9 +3581,8 @@ describe('SourceControlImportService', () => { expect(dataTableRepository.upsert).not.toHaveBeenCalled(); }); - it('should throw UserError when a data table with the same name but different ID exists locally', async () => { - // Arrange - const mockDataTable = { + describe('name collisions (same name, different id)', () => { + const incomingDataTable = { id: 'dt1', name: 'Test Table', ownedBy: { @@ -3540,20 +3595,129 @@ describe('SourceControlImportService', () => { updatedAt: '2024-01-02T00:00:00.000Z', }; - fsReadFile.mockResolvedValue(JSON.stringify(mockDataTable) as any); - projectRepository.findOne.mockResolvedValue({ id: 'project1', type: 'team' } as any); + const localColumns = [ + { id: 'lc1', name: 'Column1', type: 'string', index: 0 }, + { id: 'lc2', name: 'LocalOnly', type: 'number', index: 1 }, + ]; - // Return a different ID for the same name — simulates name collision - dataTableRepository.findOne.mockResolvedValueOnce({ id: 'dt-other' } as any); + const localTable = { + id: 'dt-old', + name: 'Test Table', + projectId: 'project1', + columns: localColumns, + createdAt: new Date('2023-01-01T00:00:00.000Z'), + updatedAt: new Date('2023-01-02T00:00:00.000Z'), + }; - // Act & Assert - await expect( - service.importDataTablesFromWorkFolder([mockCandidate], mockUser.id), - ).rejects.toThrow( - 'A data table with the name Test Table already exists locally.', - ); + beforeEach(() => { + fsReadFile.mockResolvedValue(JSON.stringify(incomingDataTable) as any); + projectRepository.findOne.mockResolvedValue({ id: 'project1', type: 'team' } as any); + // Phase 2 looks the table up by (name, project); Phase 3 by the adopted id + dataTableRepository.findOne.mockImplementation(async (opts: any) => + opts?.where?.id ? ({ id: 'dt1', columns: localColumns } as any) : (localTable as any), + ); + dataTableColumnRepository.find.mockResolvedValue([] as any); + dataTableColumnRepository.save.mockImplementation(async (col: any) => col); + }); - expect(dataTableRepository.upsert).not.toHaveBeenCalled(); + it('should adopt the incoming id on a name collision, even for a lossy merge', async () => { + // Act + const result = await service.importDataTablesFromWorkFolder([mockCandidate], mockUser.id); + + // Assert + expect(dataTableDDLService.renameTable).toHaveBeenCalledWith( + 'dt-old', + 'dt1', + 'sqlite', + mockTransaction, + ); + expect(mockTransaction.delete).toHaveBeenCalledWith(expect.anything(), { + id: 'dt-old', + }); + expect(mockTransaction.insert).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ id: 'dt1', name: 'Test Table', projectId: 'project1' }), + ); + // Matching (name, type) column adopts the incoming column id + expect(mockTransaction.insert).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ id: 'col1', name: 'Column1', dataTableId: 'dt1' }), + ); + // Non-matching local column keeps its id (dropped later by schema alignment) + expect(mockTransaction.insert).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ id: 'lc2', name: 'LocalOnly', dataTableId: 'dt1' }), + ); + expect(dataTableSizeValidator.reset).toHaveBeenCalled(); + // The regular import path still runs + expect(dataTableRepository.upsert).toHaveBeenCalledWith( + expect.objectContaining({ id: 'dt1' }), + ['id'], + ); + expect(result?.reconciliationFailures).toEqual([]); + }); + + it('should degrade a failed adoption to a per-table conflict and import the rest', async () => { + // Arrange — a second, collision-free table in the same pull; the + // colliding table's adoption fails at the physical rename + const otherDataTable = { + ...incomingDataTable, + id: 'dt2', + name: 'Other Table', + columns: [{ id: 'col9', name: 'Column9', type: 'string', index: 0 }], + }; + const otherCandidate = { + ...mockCandidate, + id: 'dt2', + name: 'Other Table', + file: '/mock/n8n/git/datatables/dt2.json', + }; + fsReadFile.mockImplementation(async (file: any) => + String(file).includes('dt2') + ? (JSON.stringify(otherDataTable) as any) + : (JSON.stringify(incomingDataTable) as any), + ); + dataTableRepository.findOne.mockImplementation(async (opts: any) => { + if (opts?.where?.id) return null; + return opts?.where?.name === 'Test Table' ? (localTable as any) : null; + }); + dataTableDDLService.renameTable.mockRejectedValue(new Error('rename failed')); + + // Act & Assert — resolves instead of rejecting; the colliding table is + // recorded as a conflict, the other table imports + await expect( + service.importDataTablesFromWorkFolder([mockCandidate, otherCandidate], mockUser.id), + ).resolves.toMatchObject({ + reconciliationFailures: [{ id: 'dt1', name: 'Test Table' }], + }); + expect(mockLogger.error).toHaveBeenCalledWith( + expect.stringContaining('Test Table'), + expect.anything(), + ); + expect(dataTableRepository.upsert).toHaveBeenCalledTimes(1); + expect(dataTableRepository.upsert).toHaveBeenCalledWith( + expect.objectContaining({ id: 'dt2' }), + ['id'], + ); + }); + + it('should complete a half-finished adoption without renaming again (idempotency)', async () => { + // Arrange — physical table already renamed, metadata still holds the old id + dataTableDDLService.tableExists.mockResolvedValue(true); + + // Act + await service.importDataTablesFromWorkFolder([mockCandidate], mockUser.id); + + // Assert — metadata swap still runs, rename is skipped + expect(dataTableDDLService.renameTable).not.toHaveBeenCalled(); + expect(mockTransaction.delete).toHaveBeenCalledWith(expect.anything(), { + id: 'dt-old', + }); + expect(mockTransaction.insert).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ id: 'dt1' }), + ); + }); }); it('should skip columns with invalid names', async () => { @@ -3623,49 +3787,6 @@ describe('SourceControlImportService', () => { // Assert expect(dataTableRepository.upsert).not.toHaveBeenCalled(); }); - - it('should not partially import when a name collision exists among multiple tables', async () => { - // Arrange — two tables: dt1 is valid, dt2 has a name collision - const validTable = { - id: 'dt1', - name: 'Valid Table', - ownedBy: { type: 'team', teamId: 'project1', teamName: 'Team Project 1' }, - columns: [{ id: 'col1', name: 'Column1', type: 'string', index: 0 }], - createdAt: '2024-01-01T00:00:00.000Z', - updatedAt: '2024-01-02T00:00:00.000Z', - }; - const collidingTable = { - id: 'dt2', - name: 'Colliding Table', - ownedBy: { type: 'team', teamId: 'project1', teamName: 'Team Project 1' }, - columns: [{ id: 'col2', name: 'Column2', type: 'string', index: 0 }], - createdAt: '2024-01-01T00:00:00.000Z', - updatedAt: '2024-01-02T00:00:00.000Z', - }; - - fsReadFile - .mockResolvedValueOnce(JSON.stringify(validTable) as any) - .mockResolvedValueOnce(JSON.stringify(collidingTable) as any); - projectRepository.findOne.mockResolvedValue({ id: 'project1', type: 'team' } as any); - - // First call (for "Valid Table") → no collision - dataTableRepository.findOne.mockResolvedValueOnce(null as any); - // Second call (for "Colliding Table") → collision with a different ID - dataTableRepository.findOne.mockResolvedValueOnce({ id: 'dt-other' } as any); - - const candidate1 = { ...mockCandidate, id: 'dt1', name: 'Valid Table' }; - const candidate2 = { ...mockCandidate, id: 'dt2', name: 'Colliding Table' }; - - // Act & Assert — the whole operation should fail - await expect( - service.importDataTablesFromWorkFolder([candidate1, candidate2], mockUser.id), - ).rejects.toThrow( - 'A data table with the name Colliding Table already exists locally.', - ); - - // No table should have been imported (no partial import) - expect(dataTableRepository.upsert).not.toHaveBeenCalled(); - }); }); }); }); diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts index 8b295f6e64c..42600224c6e 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts @@ -110,7 +110,11 @@ describe('getStatus', () => { // data tables sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([]); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([]); - gitService.getHistoricallyTrackedFiles.mockResolvedValue(new Set()); + // Mirrors the real resolution: team id for team owners, the pulling + // user's personal project otherwise + sourceControlImportService.resolveRemoteDataTableProjectId.mockImplementation( + async (ownedBy) => (ownedBy?.type === 'team' ? ownedBy.teamId : 'pulling-user-project'), + ); // repositories tagRepository.find.mockResolvedValue([]); @@ -1853,8 +1857,6 @@ describe('getStatus', () => { sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([remoteDataTable]); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([]); - // Table was previously synced, so it should be marked as deleted during push - gitService.getHistoricallyTrackedFiles.mockResolvedValue(new Set(['datatables/dt1.json'])); // ACT const result = await sourceControlStatusService.getStatus(user, { @@ -2056,8 +2058,6 @@ describe('getStatus', () => { sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue(remoteDataTables); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue(localDataTables); - // dt8 was previously synced, so it should be marked as deleted during push - gitService.getHistoricallyTrackedFiles.mockResolvedValue(new Set(['datatables/dt8.json'])); // ACT const result = await sourceControlStatusService.getStatus(user, { @@ -2512,8 +2512,8 @@ describe('getStatus', () => { }); }); - describe('git history protection', () => { - it('should not mark local-only data table as deleted during pull when never synced', async () => { + describe('git as source of truth', () => { + it('should mark local-only data table as deleted during pull', async () => { // ARRANGE const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); @@ -2529,8 +2529,6 @@ describe('getStatus', () => { sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([]); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); - // Table was never synced — no git history - gitService.getHistoricallyTrackedFiles.mockResolvedValue(new Set()); // ACT const result = await sourceControlStatusService.getStatus(user, { @@ -2539,50 +2537,19 @@ describe('getStatus', () => { preferLocalVersion: false, }); - // ASSERT + // ASSERT — a table absent from git is deleted on pull, surfaced as a + // conflict so the non-force pull requires confirmation if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); const dataTableFiles = result.filter((f) => f.type === 'datatable'); - expect(dataTableFiles).toHaveLength(0); - }); - - it('should mark local-only data table as deleted during pull when previously synced', async () => { - // ARRANGE - const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); - - const localDataTable = { - id: 'dt-was-synced', - name: 'Previously Synced Table', - ownedBy: { type: 'team' as const, projectId: 'projA', projectName: 'ProjectA' }, - filename: 'test.json', - columns: [], - createdAt: '2024-01-01T00:00:00.000Z', - updatedAt: '2024-01-01T00:00:00.000Z', - }; - - sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([]); - sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); - // Table was previously synced — exists in git history - gitService.getHistoricallyTrackedFiles.mockResolvedValue( - new Set(['datatables/dt-was-synced.json']), - ); - - // ACT - const result = await sourceControlStatusService.getStatus(user, { - direction: 'pull', - verbose: false, - preferLocalVersion: false, + expect(dataTableFiles).toHaveLength(1); + expect(dataTableFiles[0]).toMatchObject({ + id: 'dt-local-only', + status: 'deleted', + conflict: true, }); - - // ASSERT - if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); - const dataTableFile = result.find( - (f) => f.type === 'datatable' && f.id === 'dt-was-synced', - ); - expect(dataTableFile).toBeDefined(); - expect(dataTableFile?.status).toBe('deleted'); }); - it('should not mark remote-only data table as deleted during push when never synced locally', async () => { + it('should mark remote-only data table as deleted during push', async () => { // ARRANGE const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); @@ -2599,8 +2566,6 @@ describe('getStatus', () => { remoteDataTable, ]); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([]); - // Table was never synced from this instance - gitService.getHistoricallyTrackedFiles.mockResolvedValue(new Set()); // ACT const result = await sourceControlStatusService.getStatus(user, { @@ -2609,13 +2574,18 @@ describe('getStatus', () => { preferLocalVersion: false, }); - // ASSERT + // ASSERT — a table absent locally is offered as a deletion to push if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); const dataTableFiles = result.filter((f) => f.type === 'datatable'); - expect(dataTableFiles).toHaveLength(0); + expect(dataTableFiles).toHaveLength(1); + expect(dataTableFiles[0]).toMatchObject({ + id: 'dt-remote-only', + status: 'deleted', + location: 'local', + }); }); - it('should preserve local table during pull when remote has same-named table in different project', async () => { + it('should not treat same-named tables in different projects as a collision during pull', async () => { // ARRANGE const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); @@ -2642,10 +2612,6 @@ describe('getStatus', () => { remoteDataTable, ]); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); - // Only the remote table has git history — local was never pushed - gitService.getHistoricallyTrackedFiles.mockResolvedValue( - new Set(['datatables/dt-remote.json']), - ); // ACT const result = await sourceControlStatusService.getStatus(user, { @@ -2654,16 +2620,20 @@ describe('getStatus', () => { preferLocalVersion: false, }); - // ASSERT + // ASSERT — same name in DIFFERENT projects is not a collision: the + // remote table is a plain create, the local one a plain delete if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); const dataTableFiles = result.filter((f) => f.type === 'datatable'); - // Only the remote table should appear as "created", local table should be preserved (not listed) - expect(dataTableFiles).toHaveLength(1); - expect(dataTableFiles[0].id).toBe('dt-remote'); - expect(dataTableFiles[0].status).toBe('created'); + expect(dataTableFiles).toHaveLength(2); + expect(dataTableFiles).toEqual( + expect.arrayContaining([ + expect.objectContaining({ id: 'dt-remote', status: 'created' }), + expect.objectContaining({ id: 'dt-local', status: 'deleted' }), + ]), + ); }); - it('should not delete remote table from another instance during push', async () => { + it('should offer a remote-only table as a deletion during push even when a same-named local table exists in another project', async () => { // ARRANGE const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); @@ -2690,8 +2660,6 @@ describe('getStatus', () => { remoteFromInstanceA, ]); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localTable]); - // Only the local table has been synced from this instance, not Instance A's table - gitService.getHistoricallyTrackedFiles.mockResolvedValue(new Set()); // ACT const result = await sourceControlStatusService.getStatus(user, { @@ -2700,17 +2668,224 @@ describe('getStatus', () => { preferLocalVersion: false, }); + // ASSERT — different projects, so no collision: local is a plain + // create, the remote-only table an offered deletion + if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); + const dataTableFiles = result.filter((f) => f.type === 'datatable'); + expect(dataTableFiles).toHaveLength(2); + expect(dataTableFiles).toEqual( + expect.arrayContaining([ + expect.objectContaining({ id: 'dt-local', status: 'created' }), + expect.objectContaining({ id: 'dt-instance-a', status: 'deleted' }), + ]), + ); + }); + + it('should emit a single modified entry for a name collision during pull', async () => { + // ARRANGE + const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); + + const remoteDataTable = { + id: 'dt-remote', + name: 'Shared Name', + ownedBy: { type: 'team' as const, teamId: 'projA', teamName: 'ProjectA' }, + columns: [{ id: 'rc1', name: 'other', type: 'string', index: 0 }], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + const localDataTable = { + id: 'dt-local', + name: 'Shared Name', + ownedBy: { type: 'team' as const, projectId: 'projA', projectName: 'ProjectA' }, + filename: 'test.json', + columns: [{ id: 'lc1', name: 'localOnly', type: 'string', index: 0 }], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([ + remoteDataTable, + ]); + sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); + + // ACT + const result = await sourceControlStatusService.getStatus(user, { + direction: 'pull', + verbose: false, + preferLocalVersion: false, + }); + + // ASSERT — exactly ONE "modified" entry carrying the incoming id, + // flagged like any other schema modification: no "created" for the + // incoming id, no "deleted" for the old local id + if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); + const dataTableFiles = result.filter((f) => f.type === 'datatable'); + expect(dataTableFiles).toHaveLength(1); + expect(dataTableFiles[0]).toMatchObject({ + id: 'dt-remote', + name: 'Shared Name', + status: 'modified', + conflict: true, + }); + }); + + it('should emit a single modified entry for a personal-project name collision during pull', async () => { + // ARRANGE — the owner email resolves to the same local personal + // project the colliding table lives in + const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); + + const remoteDataTable = { + id: 'dt-remote', + name: 'Shared Name', + ownedBy: { type: 'personal' as const, personalEmail: 'owner@test.com' }, + columns: [{ id: 'rc1', name: 'col', type: 'string', index: 0 }], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + const localDataTable = { + id: 'dt-local', + name: 'Shared Name', + ownedBy: { type: 'personal' as const, projectId: 'pp-local', projectName: 'Owner' }, + filename: 'test.json', + columns: [{ id: 'lc1', name: 'col', type: 'string', index: 0 }], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([ + remoteDataTable, + ]); + sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); + sourceControlImportService.resolveRemoteDataTableProjectId.mockResolvedValue('pp-local'); + + // ACT + const result = await sourceControlStatusService.getStatus(user, { + direction: 'pull', + verbose: false, + preferLocalVersion: false, + }); + + // ASSERT — one "modified" entry, never a "created" + "deleted" pair + if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); + const dataTableFiles = result.filter((f) => f.type === 'datatable'); + expect(dataTableFiles).toHaveLength(1); + expect(dataTableFiles[0]).toMatchObject({ + id: 'dt-remote', + status: 'modified', + conflict: true, + }); + }); + + it('should carry the incoming id on a collision entry regardless of preferLocalVersion', async () => { + // ARRANGE + const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); + + const remoteDataTable = { + id: 'dt-remote', + name: 'Shared Name', + ownedBy: { type: 'team' as const, teamId: 'projA', teamName: 'ProjectA' }, + columns: [{ id: 'rc1', name: 'other', type: 'string', index: 0 }], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + const localDataTable = { + id: 'dt-local', + name: 'Shared Name', + ownedBy: { type: 'team' as const, projectId: 'projA', projectName: 'ProjectA' }, + filename: 'test.json', + columns: [{ id: 'lc1', name: 'localOnly', type: 'string', index: 0 }], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([ + remoteDataTable, + ]); + sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); + + // ACT — preferLocalVersion true (the UI dry-run flag) must not change + // which id the entry carries + const result = await sourceControlStatusService.getStatus(user, { + direction: 'pull', + verbose: false, + preferLocalVersion: true, + }); + // ASSERT if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); const dataTableFiles = result.filter((f) => f.type === 'datatable'); - // Local table should be "created", remote table should NOT be "deleted" expect(dataTableFiles).toHaveLength(1); - expect(dataTableFiles[0].id).toBe('dt-local'); - expect(dataTableFiles[0].status).toBe('created'); + expect(dataTableFiles[0]).toMatchObject({ + id: 'dt-remote', + status: 'modified', + conflict: true, + }); }); - it('should detect name collision during pull even when local table was never synced', async () => { - // ARRANGE + it('should detect a collision even when another project has a same-named remote table', async () => { + // ARRANGE — the other-project table is listed last so a name-only + // lookup would mask the real same-project collision + const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); + + const remoteSameProject = { + id: 'dt-remote-a', + name: 'Shared Name', + ownedBy: { type: 'team' as const, teamId: 'projA', teamName: 'ProjectA' }, + columns: [], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + const remoteOtherProject = { + id: 'dt-remote-b', + name: 'Shared Name', + ownedBy: { type: 'team' as const, teamId: 'projB', teamName: 'ProjectB' }, + columns: [], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + const localDataTable = { + id: 'dt-local', + name: 'Shared Name', + ownedBy: { type: 'team' as const, projectId: 'projA', projectName: 'ProjectA' }, + filename: 'test.json', + columns: [], + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', + }; + + sourceControlImportService.getRemoteDataTablesFromFiles.mockResolvedValue([ + remoteSameProject, + remoteOtherProject, + ]); + sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); + + // ACT + const result = await sourceControlStatusService.getStatus(user, { + direction: 'pull', + verbose: false, + preferLocalVersion: false, + }); + + // ASSERT — the same-project collision reconciles; the other-project + // table is an unrelated plain create + if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); + const dataTableFiles = result.filter((f) => f.type === 'datatable'); + expect(dataTableFiles).toHaveLength(2); + expect(dataTableFiles).toEqual( + expect.arrayContaining([ + expect.objectContaining({ id: 'dt-remote-a', status: 'modified', conflict: true }), + expect.objectContaining({ id: 'dt-remote-b', status: 'created' }), + ]), + ); + }); + + it('should keep the created + conflict entry pair for a name collision during push', async () => { + // ARRANGE — the single-entry collision shape applies to pull only const user = mock({ id: '1', role: GLOBAL_ADMIN_ROLE }); const remoteDataTable = { @@ -2736,23 +2911,26 @@ describe('getStatus', () => { remoteDataTable, ]); sourceControlImportService.getLocalDataTablesFromDb.mockResolvedValue([localDataTable]); - // Local table was never synced - gitService.getHistoricallyTrackedFiles.mockResolvedValue(new Set()); // ACT const result = await sourceControlStatusService.getStatus(user, { - direction: 'pull', + direction: 'push', verbose: false, - preferLocalVersion: false, + preferLocalVersion: true, }); - // ASSERT — collision must be flagged even though the local table was never synced + // ASSERT — the collision keeps its conflict pair; the remote-only id is + // additionally offered as a deletion (git as source of truth) if (!Array.isArray(result)) expect.fail('Expected result to be an array.'); - const collisionFile = result.find( - (f) => f.type === 'datatable' && f.status === 'modified' && f.conflict, + const dataTableFiles = result.filter((f) => f.type === 'datatable'); + expect(dataTableFiles).toHaveLength(3); + expect(dataTableFiles).toEqual( + expect.arrayContaining([ + expect.objectContaining({ id: 'dt-local', status: 'modified', conflict: true }), + expect.objectContaining({ id: 'dt-local', status: 'created' }), + expect.objectContaining({ id: 'dt-remote', status: 'deleted' }), + ]), ); - expect(collisionFile).toBeDefined(); - expect(collisionFile?.name).toBe('Shared Name'); }); }); }); diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts index 751f8aed0ca..7dbcd28290d 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts @@ -561,6 +561,85 @@ describe('SourceControlService', () => { // ASSERT expect(result).toMatchObject({ statusCode: 409, statusResult: statuses }); }); + + it('imports data tables before deleting them', async () => { + // ARRANGE — a reconciled collision emits a single "modified" entry (no + // "deleted" for the old id), so ordering is defense in depth: should a + // "deleted" entry ever coincide with an adoption again, import must run + // first so the delete no-ops instead of dropping local rows. + const user = mock(); + const statuses = [ + mock({ + status: 'modified', + location: 'remote', + type: 'datatable', + conflict: false, + id: 'dtNew', + }), + mock({ + status: 'deleted', + location: 'remote', + type: 'datatable', + conflict: false, + id: 'dtOld', + }), + ]; + mockStatusService.getStatus.mockResolvedValueOnce(statuses); + sourceControlImportService.importWorkflowFromWorkFolder.mockResolvedValue([]); + + const callOrder: string[] = []; + sourceControlImportService.importDataTablesFromWorkFolder.mockImplementation(async () => { + callOrder.push('import'); + return { imported: [], reconciliationFailures: [] }; + }); + sourceControlImportService.deleteDataTablesNotInWorkFolder.mockImplementation(async () => { + callOrder.push('delete'); + }); + + // ACT + await sourceControlService.pullWorkfolder(user, { force: true, autoPublish: 'none' }); + + // ASSERT + expect(sourceControlImportService.importDataTablesFromWorkFolder).toHaveBeenCalledWith( + [statuses[0]], + user.id, + ); + expect(sourceControlImportService.deleteDataTablesNotInWorkFolder).toHaveBeenCalledWith([ + statuses[1], + ]); + expect(callOrder).toEqual(['import', 'delete']); + }); + + it('surfaces data table conflicts discovered at import time on the pull result', async () => { + // ARRANGE + const user = mock(); + const statuses = [ + mock({ + status: 'modified', + location: 'remote', + type: 'datatable', + conflict: false, + id: 'dtNew', + }), + ]; + mockStatusService.getStatus.mockResolvedValueOnce(statuses); + sourceControlImportService.importWorkflowFromWorkFolder.mockResolvedValue([]); + sourceControlImportService.importDataTablesFromWorkFolder.mockResolvedValue({ + imported: [], + reconciliationFailures: [{ id: 'dtNew', name: 'Test Table' }], + }); + + // ACT + const result = await sourceControlService.pullWorkfolder(user, { + force: true, + autoPublish: 'none', + }); + + // ASSERT + expect(result.statusCode).toBe(200); + const dataTableEntry = result.statusResult.find((f) => f.id === 'dtNew'); + expect(dataTableEntry?.conflict).toBe(true); + }); }); describe('getStatus', () => { diff --git a/packages/cli/src/modules/source-control.ee/source-control-git.service.ee.ts b/packages/cli/src/modules/source-control.ee/source-control-git.service.ee.ts index a8f263b4c16..3946b513f25 100644 --- a/packages/cli/src/modules/source-control.ee/source-control-git.service.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control-git.service.ee.ts @@ -500,36 +500,6 @@ export class SourceControlGitService { return statusResult; } - /** - * Returns all file paths that have ever been committed under the given directory - * on the current branch. Scoped to the current branch (ancestors of HEAD) so that - * data tables pushed by other instances on different branches are not mistaken - * for previously-synced resources on this instance. - */ - async getHistoricallyTrackedFiles(directory: string): Promise> { - if (!this.git) { - throw new UnexpectedError('Git is not initialized (getHistoricallyTrackedFiles)'); - } - try { - const output = await this.git.raw([ - 'log', - '--pretty=format:', - '--name-only', - '--', - `${directory}/`, - ]); - const files = new Set( - output - .split('\n') - .map((line) => line.trim()) - .filter((line) => line.length > 0), - ); - return files; - } catch { - return new Set(); - } - } - async getFileContent(filePath: string, commit: string = 'HEAD'): Promise { try { if (!this.git) { diff --git a/packages/cli/src/modules/source-control.ee/source-control-helper.ee.ts b/packages/cli/src/modules/source-control.ee/source-control-helper.ee.ts index 23bb42afdbd..be4624887eb 100644 --- a/packages/cli/src/modules/source-control.ee/source-control-helper.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control-helper.ee.ts @@ -512,6 +512,16 @@ export function isDataTableModified( return !areDataTableColumnsEqual(localDt.columns, remoteDt.columns); } +/** + * Identity of a data table column across instances for identity adoption: + * columns matching by `(name, type)` adopt the incoming column id. + */ +export function getDataTableColumnKey( + column: Pick, +): string { + return `${column.name}:${column.type}`; +} + /** * Type guard to check if a string is a valid DataTableColumnType. */ diff --git a/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts b/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts index 3c1e5c42d92..024b7b2a94c 100644 --- a/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts @@ -25,7 +25,7 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; import { PROJECT_ADMIN_ROLE_SLUG, PROJECT_OWNER_ROLE_SLUG } from '@n8n/permissions'; -import { In } from '@n8n/typeorm'; +import { In, type DataSourceOptions } from '@n8n/typeorm'; import { QueryDeepPartialEntity } from '@n8n/typeorm/query-builder/QueryPartialEntity'; import glob from 'fast-glob'; import isEqual from 'lodash/isEqual'; @@ -41,6 +41,8 @@ import type { IWorkflowToImport } from '@/interfaces'; import { DataTableColumn } from '@/modules/data-table/data-table-column.entity'; import { DataTableColumnRepository } from '@/modules/data-table/data-table-column.repository'; import { DataTableDDLService } from '@/modules/data-table/data-table-ddl.service'; +import { DataTableSizeValidator } from '@/modules/data-table/data-table-size-validator.service'; +import { DataTable } from '@/modules/data-table/data-table.entity'; import { DataTableRepository } from '@/modules/data-table/data-table.repository'; import { isValidColumnName, isValidDataTableId } from '@/modules/data-table/utils/sql-utils'; import { RedactionEnforcementService } from '@/modules/redaction/redaction-enforcement.service'; @@ -65,6 +67,7 @@ import { import { SourceControlContextFactory } from './source-control-context.factory'; import { getCredentialExportPath, + getDataTableColumnKey, getDataTableExportPath, getProjectExportPath, getWorkflowExportPath, @@ -78,7 +81,11 @@ import type { ExportableCredential, StatusExportableCredential, } from './types/exportable-credential'; -import type { ExportableDataTable, StatusExportableDataTable } from './types/exportable-data-table'; +import type { + DataTableResourceOwner, + ExportableDataTable, + StatusExportableDataTable, +} from './types/exportable-data-table'; import type { ExportableFolder } from './types/exportable-folders'; import type { ExportableProject, ExportableProjectWithFileName } from './types/exportable-project'; import type { ExportableTags } from './types/exportable-tags'; @@ -137,6 +144,7 @@ export class SourceControlImportService { private readonly dataTableColumnRepository: DataTableColumnRepository, private readonly dataTableDDLService: DataTableDDLService, private readonly redactionEnforcementService: RedactionEnforcementService, + private readonly dataTableSizeValidator: DataTableSizeValidator, ) { this.gitFolder = path.join(instanceSettings.n8nFolder, SOURCE_CONTROL_GIT_FOLDER); this.workflowExportFolder = path.join(this.gitFolder, SOURCE_CONTROL_WORKFLOW_EXPORT_FOLDER); @@ -1273,14 +1281,16 @@ export class SourceControlImportService { // Get database type from the repository's connection const dbType = this.dataTableRepository.manager.connection.options.type; - // Get the pulling user's personal project as a fallback for personal projects - const pullingUserPersonalProject = - await this.projectRepository.getPersonalProjectForUserOrFail(userId); - - const result: { imported: string[] } = { imported: [] }; + const result: { + imported: string[]; + reconciliationFailures: Array<{ id: string; name: string }>; + } = { + imported: [], + reconciliationFailures: [], + }; // Phase 1: Parse all data table files and resolve target projects upfront - // so we can validate name collisions before any imports happen. + // so name collisions can be resolved before any imports happen. const parsedTables: Array<{ dataTable: ExportableDataTable; candidate: SourceControlledFile; @@ -1313,63 +1323,54 @@ export class SourceControlImportService { continue; } - let targetProject: Project | null = null; + let targetProjectId: string; - if (dataTable.ownedBy) { - if (dataTable.ownedBy.type === 'personal') { - const personalEmail = dataTable.ownedBy.personalEmail; - if (personalEmail) { - const user = await this.userRepository.findOne({ where: { email: personalEmail } }); - if (user) { - targetProject = await this.projectRepository.getPersonalProjectForUserOrFail(user.id); - } else { - this.logger.debug( - `User ${personalEmail} not found locally for data table ${dataTable.name}. Using pulling user's personal project as fallback.`, - ); - targetProject = pullingUserPersonalProject; - } - } - } else if (dataTable.ownedBy.type === 'team') { - targetProject = await this.projectRepository.findOne({ + if (dataTable.ownedBy?.type === 'team') { + const teamProject = + (await this.projectRepository.findOne({ where: { id: dataTable.ownedBy.teamId }, - }); - - if (!targetProject) { - targetProject = await this.createTeamProject({ - type: 'team', - teamId: dataTable.ownedBy.teamId, - teamName: dataTable.ownedBy.teamName, - }); - } - } + })) ?? + (await this.createTeamProject({ + type: 'team', + teamId: dataTable.ownedBy.teamId, + teamName: dataTable.ownedBy.teamName, + })); + targetProjectId = teamProject.id; + } else { + targetProjectId = await this.resolveRemoteDataTableProjectId(dataTable.ownedBy, userId); } - if (!targetProject) { - this.logger.debug( - `No owner specified for data table ${dataTable.name}. Using pulling user's personal project.`, - ); - targetProject = pullingUserPersonalProject; - } - - parsedTables.push({ dataTable, candidate, targetProjectId: targetProject.id }); + parsedTables.push({ dataTable, candidate, targetProjectId }); } - // Phase 2: Validate all name collisions before importing anything. - // This prevents partial imports when a collision is detected mid-way. - for (const { dataTable, targetProjectId } of parsedTables) { - const existingByName = await this.dataTableRepository.findOne({ + // Phase 2: Resolve name collisions (same (project, name), different id — + // typically a delete+recreate upstream). A same-named table in the same + // project is the same logical table: it adopts the incoming id, then the + // regular import path below aligns the schema. A failed adoption degrades + // to a per-table conflict so the rest of the pull proceeds. + const importableTables: typeof parsedTables = []; + for (const entry of parsedTables) { + const { dataTable, targetProjectId } = entry; + const localTable = await this.dataTableRepository.findOne({ where: { name: dataTable.name, projectId: targetProjectId }, - select: ['id'], + relations: ['columns'], }); - if (existingByName && existingByName.id !== dataTable.id) { - throw new UserError( - `A data table with the name ${dataTable.name} already exists locally.
Please either rename the local data table, or the remote one with the id ${dataTable.id} in the source control files.`, - ); + if (localTable && localTable.id !== dataTable.id) { + try { + await this.adoptDataTableIdentity(localTable, dataTable, dbType); + } catch (error) { + this.logger.error(`Failed to reconcile data table ${dataTable.name}`, { + error: ensureError(error), + }); + result.reconciliationFailures.push({ id: dataTable.id, name: dataTable.name }); + continue; + } } + importableTables.push(entry); } // Phase 3: Import all data tables (no name collisions at this point) - for (const { dataTable, candidate, targetProjectId } of parsedTables) { + for (const { dataTable, candidate, targetProjectId } of importableTables) { try { this.logger.debug(`Importing data table from file ${candidate.file}`); @@ -1492,6 +1493,77 @@ export class SourceControlImportService { return result; } + /** + * Resolves the local project a remote data table belongs to: the team id + * for team-owned tables, the owner's personal project for personal ones, + * falling back to the pulling user's personal project when the owner is + * unknown locally. The status service uses this for collision detection so + * the pull preview matches where the import will place the table. + */ + async resolveRemoteDataTableProjectId( + ownedBy: DataTableResourceOwner | null, + pullingUserId: string, + ): Promise { + if (ownedBy?.type === 'team') { + return ownedBy.teamId; + } + if (ownedBy?.type === 'personal' && ownedBy.personalEmail) { + const user = await this.userRepository.findOne({ + where: { email: ownedBy.personalEmail }, + }); + if (user) { + return (await this.projectRepository.getPersonalProjectForUserOrFail(user.id)).id; + } + this.logger.debug( + `User ${ownedBy.personalEmail} not found locally. Using pulling user's personal project as fallback.`, + ); + } + return (await this.projectRepository.getPersonalProjectForUserOrFail(pullingUserId)).id; + } + + /** + * Re-keys a local data table (metadata and physical rows table) to the + * incoming id, preserving its rows, so the regular import path can then + * align the schema. Local columns adopt the incoming column id where + * `(name, type)` matches, so an identical recreate imports as a no-op. + * + * Idempotent as defense in depth: a retry that finds the physical table + * already renamed skips the rename and only completes the metadata swap, + * so a half-finished adoption cannot wedge the pull. + */ + private async adoptDataTableIdentity( + localTable: DataTable, + incoming: ExportableDataTable, + dbType: DataSourceOptions['type'], + ) { + this.logger.info( + `Reconciling data table "${localTable.name}": adopting id ${incoming.id} (was ${localTable.id})`, + ); + await this.dataTableRepository.manager.transaction(async (trx) => { + const alreadyRenamed = await this.dataTableDDLService.tableExists(incoming.id, trx); + if (!alreadyRenamed) { + await this.dataTableDDLService.renameTable(localTable.id, incoming.id, dbType, trx); + } + // Spread the loaded entities so future scalar fields carry over + // automatically; only the id (and the column FK) are re-keyed. + const { columns: localColumns, ...localTableProps } = localTable; + // The delete cascades to the old data_table_column rows + await trx.delete(DataTable, { id: localTable.id }); + await trx.insert(DataTable, { ...localTableProps, id: incoming.id }); + const incomingIdByColumnKey = new Map( + incoming.columns.map((c) => [getDataTableColumnKey(c), c.id]), + ); + for (const column of localColumns) { + await trx.insert(DataTableColumn, { + ...column, + id: incomingIdByColumnKey.get(getDataTableColumnKey(column)) ?? column.id, + dataTableId: incoming.id, + }); + } + }); + this.dataTableSizeValidator.reset(); + } + /** * Reads project files candidates from the work folder and imports them into the database. * diff --git a/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts b/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts index 9c8ce6bf21f..525534d6b96 100644 --- a/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts @@ -97,35 +97,6 @@ export class SourceControlStatusService { return; } - /** - * Checks whether a local and remote data table belong to the same project. - * For team projects, compares the project/team ID. - * Returns true when both owners are null (unowned) or when neither is a team - * (conservative match to avoid suppressing real collisions). - */ - private isSameDataTableProject( - localOwner: StatusResourceOwner | null, - remoteOwner: DataTableResourceOwner | null, - ): boolean { - if (!localOwner && !remoteOwner) { - return true; - } - - if (localOwner?.type === 'team' && remoteOwner?.type === 'team') { - return localOwner.projectId === remoteOwner.teamId; - } - - // Personal projects don't have stable IDs across instances, - // so we can't reliably determine if they're the same project. - // Return false to avoid false-positive collision flags. - if (localOwner?.type === 'personal' || remoteOwner?.type === 'personal') { - return false; - } - - // Mixed (one null, one not) — different projects - return false; - } - private buildFolderPath( parentFolderId: string | null | undefined, foldersById: Map, @@ -696,19 +667,15 @@ export class SourceControlStatusService { const localById = new Map(dataTablesLocal.map((dt) => [dt.id, dt])); const remoteById = new Map(dataTablesRemote.map((dt) => [dt.id, dt])); - const remoteByName = new Map(dataTablesRemote.map((dt) => [dt.name, dt])); - - // Query git history to find data table IDs that were previously synced. - // This lets us distinguish "deleted from remote" (should delete locally on pull) - // from "never pushed" (should preserve locally on pull), and vice versa for push. - const historicallyTrackedFiles = await this.gitService.getHistoricallyTrackedFiles( - SOURCE_CONTROL_DATATABLES_EXPORT_FOLDER, - ); - const previouslySyncedIds = new Set(); - for (const filePath of historicallyTrackedFiles) { - const match = filePath.match(/([^/]+)\.json$/); - if (match) { - previouslySyncedIds.add(match[1]); + // Same-named tables may exist in several projects, so group by name and + // pick the candidate per project below. + const remotesByName = new Map(); + for (const dt of dataTablesRemote) { + const sameName = remotesByName.get(dt.name); + if (sameName) { + sameName.push(dt); + } else { + remotesByName.set(dt.name, [dt]); } } @@ -716,12 +683,37 @@ export class SourceControlStatusService { const dtMissingInRemote: StatusExportableDataTable[] = []; const dtModifiedInEither: Array = []; + // Cross-id name collisions (same (project, name), different id — typically a + // delete+recreate upstream). Computed before the remote loop because a pull + // reports a collision as ONE user-facing change: the incoming id must not + // also appear as "created", nor the old local id as "deleted". A remote + // table's project is resolved the way the import resolves it, so the + // preview matches where the pull will place the table. + const nameCollisionByLocalId = new Map(); + for (const local of dataTablesLocal) { + if (remoteById.has(local.id) || !local.ownedBy) continue; + for (const candidate of remotesByName.get(local.name) ?? []) { + if (candidate.id === local.id) continue; + const candidateProjectId = + await this.sourceControlImportService.resolveRemoteDataTableProjectId( + candidate.ownedBy, + context.user.id, + ); + if (candidateProjectId === local.ownedBy.projectId) { + nameCollisionByLocalId.set(local.id, candidate); + break; + } + } + } + const collidingRemoteIds = new Set( + [...nameCollisionByLocalId.values()].map((remote) => remote.id), + ); + for (const remote of dataTablesRemote) { if (!localById.has(remote.id)) { - // During push, a remote-only table would be marked as "deleted" from remote. - // Skip if this table was never synced from this instance (it was pushed by - // another instance and should not be deleted). - if (options.direction === 'push' && !previouslySyncedIds.has(remote.id)) { + // On pull, an id claimed by a name collision is covered by that + // collision's single "modified" entry. + if (options.direction === 'pull' && collidingRemoteIds.has(remote.id)) { continue; } @@ -746,19 +738,15 @@ export class SourceControlStatusService { const remote = remoteById.get(local.id); if (!remote) { - // Check for cross-ID name collision (different tables sharing the same name - // in the same project). This must run before the never-synced early-continue - // below, otherwise a pull would silently create a remote table that collides - // with an unsynced local one. - const nameCandidate = remoteByName.get(local.name); - const nameCollision = - nameCandidate && - nameCandidate.id !== local.id && - this.isSameDataTableProject(local.ownedBy, nameCandidate.ownedBy) - ? nameCandidate - : undefined; + const nameCollision = nameCollisionByLocalId.get(local.id); if (nameCollision) { - const modified = options.preferLocalVersion ? local : nameCollision; + const isPull = options.direction === 'pull'; + // On pull the entry carries the incoming table regardless of + // preferLocalVersion: its file is what the import consumes, and the + // dry-run (which always has preferLocalVersion=true) must preview the + // same entry the pull acts on. On push the collision surfaces on the + // local table. + const modified = isPull ? nameCollision : local; if (collectVerbose) { dtModifiedInEither.push(modified); } @@ -773,13 +761,11 @@ export class SourceControlStatusService { updatedAt: new Date().toISOString(), owner: this.convertToStatusResourceOwner(modified.ownedBy), }); - } - - // During pull, a local-only table would be marked as "deleted" locally. - // Skip if this table was never synced — it was created locally and not yet - // pushed, so it should not be deleted. - if (options.direction === 'pull' && !previouslySyncedIds.has(local.id)) { - continue; + // On pull the collision entry is the ONLY entry for this table: + // never emit a "deleted" entry for the old local id. + if (isPull) { + continue; + } } if (collectVerbose) { diff --git a/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts b/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts index b05917b9c96..b8aa1043cbd 100644 --- a/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts @@ -616,10 +616,21 @@ export class SourceControlService { const dataTableCandidates = getNonDeletedResources(statusResult, 'datatable'); if (dataTableCandidates.length > 0) { - await this.sourceControlImportService.importDataTablesFromWorkFolder( - dataTableCandidates, - user.id, - ); + const dataTableImportResult = + await this.sourceControlImportService.importDataTablesFromWorkFolder( + dataTableCandidates, + user.id, + ); + + // Surface reconciliation failures as conflicts on the pull result, not + // just in the logs + for (const failure of dataTableImportResult?.reconciliationFailures ?? []) { + for (const item of statusResult) { + if (item.type === 'datatable' && item.id === failure.id) { + item.conflict = true; + } + } + } } const dataTablesToBeDeleted = getDeletedResources(statusResult, 'datatable'); await this.sourceControlImportService.deleteDataTablesNotInWorkFolder(dataTablesToBeDeleted); diff --git a/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts b/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts index 103f3206925..548389729a6 100644 --- a/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts @@ -164,6 +164,7 @@ const n8nPackagesHandlers: N8nPackagesHandlers = { const result = await Container.get(N8nPackagesService).importPackage({ user: req.user, + apiKeyScopes: req.tokenGrant?.apiKeyScopes, projectId, folderId, credentialMatchingMode: payload.data.credentialMatchingMode, @@ -174,6 +175,7 @@ const n8nPackagesHandlers: N8nPackagesHandlers = { workflowConflictPolicy: payload.data.workflowConflictPolicy, workflowPublishingPolicy: payload.data.workflowPublishingPolicy, workflowIdPolicy: payload.data.workflowIdPolicy, + folderConflictPolicy: payload.data.folderConflictPolicy, packageBuffer: packageFile.buffer, }); return res.status(200).json(result); diff --git a/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/paths/n8n-packages.import.yml b/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/paths/n8n-packages.import.yml index 92470fb2a7d..aac8e29d9a5 100644 --- a/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/paths/n8n-packages.import.yml +++ b/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/paths/n8n-packages.import.yml @@ -128,6 +128,20 @@ post: `publish-all` publishes every imported workflow. `unpublish-all` leaves new workflows inactive and unpublishes updated workflows that were published. + folderConflictPolicy: + type: string + enum: + - merge + - fail + default: merge + description: > + Controls what happens when a package folder (matched by id in the + target project) already exists at the same position. `merge` + (default) reuses the existing folder as-is and merges the package's + children into it; `fail` rejects the import. A folder whose id exists + under a different parent, or belongs to another project, always blocks + the import. Requires the `folder:create` scope and a license that + supports folders when the package contains folders. responses: '200': description: Import succeeded; the listed workflows were written to the target project. @@ -138,6 +152,7 @@ post: required: - package - workflows + - folders - bindings - credentials properties: @@ -242,6 +257,36 @@ post: - updated - skipped description: Import outcome for this package workflow. + folders: + type: array + description: Folder shells created or skipped in the target project. + items: + type: object + required: + - sourceFolderId + - localId + - name + - parentFolderId + - status + properties: + sourceFolderId: + type: string + description: Folder id as it appeared in the package. + localId: + type: string + description: Folder id on the target instance (equal to `sourceFolderId`; folder ids are reused). + name: + type: string + parentFolderId: + type: string + nullable: true + description: Resolved parent folder on the target, or `null` at the project root. + status: + type: string + enum: + - created + - skipped + description: Import outcome for this package folder. credentials: type: object description: > @@ -289,8 +334,9 @@ post: type: string '409': description: > - Import blocked, with at least one workflow source-id conflict among the - issues. + Import blocked by at least one conflict among the issues — a workflow + source-id conflict or a folder conflict (id under a different parent, id + owned by another project, or a `fail`-policy match). content: application/json: schema: diff --git a/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/schemas/importBlockingIssue.yml b/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/schemas/importBlockingIssue.yml index 396bbc0b404..bdb86fd937b 100644 --- a/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/schemas/importBlockingIssue.yml +++ b/packages/cli/src/public-api/v1/handlers/n8n-packages/spec/schemas/importBlockingIssue.yml @@ -85,6 +85,45 @@ oneOf: description: Folder the import was requested to land in. name: type: string + - type: object + description: > + A package folder that cannot be imported as-is. `kind` distinguishes the cause: + `parent-mismatch` (a folder matched by id sits under a different parent than the + package places it), `id-in-other-project` (the folder id already exists in a + different project — ids are globally unique), or `fail-policy` (the folder already + exists and `folderConflictPolicy` is `fail`). + required: + - type + - kind + - sourceFolderId + - name + properties: + type: + type: string + enum: + - folder-conflict + kind: + type: string + enum: + - parent-mismatch + - id-in-other-project + - fail-policy + sourceFolderId: + type: string + name: + type: string + existingParentFolderId: + type: string + nullable: true + description: "For `parent-mismatch`: the matched folder's current parent in the target." + expectedParentFolderId: + type: string + nullable: true + description: 'For `parent-mismatch`: the parent the package would place the folder under.' + existingProjectId: + type: string + nullable: true + description: 'For `id-in-other-project`: the project that already owns the id.' - type: object description: A credential reference that could not be resolved in the target project. required: diff --git a/packages/cli/src/scheduling/__tests__/durable-job-provisioner.test.ts b/packages/cli/src/scheduling/__tests__/durable-job-provisioner.test.ts new file mode 100644 index 00000000000..3db5fe23772 --- /dev/null +++ b/packages/cli/src/scheduling/__tests__/durable-job-provisioner.test.ts @@ -0,0 +1,350 @@ +import type { + DataSource, + ScheduledJob, + ScheduledJobRepository, + ScheduledTaskRepository, +} from '@n8n/db'; +import type { DesiredJob, ScheduleDefinition } from '@n8n/scheduler'; +import type { EntityManager } from '@n8n/typeorm'; +import type { Tracing } from 'n8n-core'; +import { mock } from 'vitest-mock-extended'; + +import { DurableJobProvisioner } from '../durable-job-provisioner'; + +const CLOCK = new Date('2026-01-05T09:00:00.000Z'); +const FIRE_AT = new Date('2026-02-01T00:00:00.000Z'); + +const cronSchedule: ScheduleDefinition = { + kind: 'cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', +}; + +const desiredJob = ( + name: string, + schedule: ScheduleDefinition = cronSchedule, + firstRunAt: Date | null = CLOCK, +): DesiredJob => ({ name, schedule, firstRunAt }); + +/** A stored cron job row; override the fields a test cares about. */ +const jobRow = (over: Partial = {}): ScheduledJob => + mock({ + id: 10, + name: 'wf:node:0', + kind: 'cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: null, + fireAt: null, + nextRunAt: CLOCK, + ...over, + }); + +describe('DurableJobProvisioner', () => { + const manager = mock(); + const dataSource = mock(); + const jobs = mock(); + const tasks = mock(); + const tracing = mock(); + + let provisioner: DurableJobProvisioner; + + beforeEach(() => { + vi.resetAllMocks(); + // Run the callback with our manager, standing in for a real transaction. + dataSource.transaction.mockImplementation( + (async (runInTransaction: (em: EntityManager) => Promise) => + await runInTransaction(manager)) as typeof dataSource.transaction, + ); + // Run the span body, standing in for a real tracer. + tracing.startSpan.mockImplementation( + (async (_options: unknown, run: (span: unknown) => Promise) => + await run({ setAttribute() {}, setStatus() {} })) as typeof tracing.startSpan, + ); + jobs.findManyByWorkflowNode.mockResolvedValue([]); + jobs.insertMany.mockResolvedValue([]); + provisioner = new DurableJobProvisioner(dataSource, jobs, tasks, tracing); + }); + + describe('provision', () => { + it('inserts a new job, mapping the schedule and scope onto the row', async () => { + jobs.insertMany.mockResolvedValue([100]); + + const summary = await provisioner.provision( + 'wf', + 'node', + 'schedule-trigger', + { foo: 'bar' }, + [desiredJob('wf:node:0')], + ); + + expect(jobs.insertMany).toHaveBeenCalledWith(manager, [ + { + name: 'wf:node:0', + workflowId: 'wf', + nodeId: 'node', + taskType: 'schedule-trigger', + payload: { foo: 'bar' }, + kind: 'cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: null, + fireAt: null, + nextRunAt: CLOCK, + }, + ]); + expect(summary.inserted).toEqual([{ id: 100, name: 'wf:node:0' }]); + }); + + it('leaves an unchanged job untouched, keeping its id', async () => { + jobs.findManyByWorkflowNode.mockResolvedValue([jobRow()]); + + const summary = await provisioner.provision('wf', 'node', 'schedule-trigger', {}, [ + desiredJob('wf:node:0'), + ]); + + expect(jobs.insertMany).toHaveBeenCalledWith(manager, []); + expect(jobs.updateDefinition).not.toHaveBeenCalled(); + expect(tasks.deletePendingByJobIds).toHaveBeenCalledWith(manager, []); + expect(summary.unchanged).toEqual([{ id: 10, name: 'wf:node:0' }]); + }); + + it('rewrites a changed job in place and withdraws its pending tasks', async () => { + jobs.findManyByWorkflowNode.mockResolvedValue([jobRow()]); + + const summary = await provisioner.provision('wf', 'node', 'schedule-trigger', {}, [ + desiredJob('wf:node:0', { + kind: 'cron', + cronExpression: '0 0 18 * * *', + timezone: 'UTC', + }), + ]); + + expect(jobs.updateDefinition).toHaveBeenCalledWith(manager, 10, { + kind: 'cron', + cronExpression: '0 0 18 * * *', + timezone: 'UTC', + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: null, + fireAt: null, + nextRunAt: CLOCK, + }); + expect(tasks.deletePendingByJobIds).toHaveBeenCalledWith(manager, [10]); + expect(summary.redefined).toEqual([{ id: 10, name: 'wf:node:0' }]); + }); + + it('treats a job whose stored clock died as changed', async () => { + jobs.findManyByWorkflowNode.mockResolvedValue([jobRow({ nextRunAt: null })]); + + const summary = await provisioner.provision('wf', 'node', 'schedule-trigger', {}, [ + desiredJob('wf:node:0'), + ]); + + expect(jobs.updateDefinition).toHaveBeenCalledWith( + manager, + 10, + expect.objectContaining({ nextRunAt: CLOCK }), + ); + expect(summary.redefined).toEqual([{ id: 10, name: 'wf:node:0' }]); + }); + + it('deletes a job no longer desired', async () => { + jobs.findManyByWorkflowNode.mockResolvedValue([jobRow({ id: 11, name: 'wf:node:1' })]); + + const summary = await provisioner.provision('wf', 'node', 'schedule-trigger', {}, []); + + expect(jobs.deleteManyByIds).toHaveBeenCalledWith(manager, [11]); + expect(summary.removed).toEqual([{ id: 11, name: 'wf:node:1' }]); + }); + + it('runs all writes inside a single transaction', async () => { + await provisioner.provision('wf', 'node', 'schedule-trigger', {}, [desiredJob('wf:node:0')]); + + expect(dataSource.transaction).toHaveBeenCalledTimes(1); + }); + }); + + describe('schedule column mapping', () => { + it.each<{ name: string; schedule: ScheduleDefinition; columns: Partial }>([ + { + name: 'cron', + schedule: { kind: 'cron', cronExpression: '0 0 9 * * *', timezone: 'UTC' }, + columns: { cronExpression: '0 0 9 * * *', timezone: 'UTC' }, + }, + { + name: 'recurring_cron', + schedule: { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 2, + }, + columns: { + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 2, + }, + }, + { + name: 'interval', + schedule: { kind: 'interval', intervalSeconds: 300 }, + columns: { intervalSeconds: 300 }, + }, + { + name: 'one_off', + schedule: { kind: 'one_off', fireAt: FIRE_AT }, + columns: { fireAt: FIRE_AT }, + }, + ])('flattens a $name schedule onto the inserted row', async ({ name, schedule, columns }) => { + await provisioner.provision('wf', 'node', 'schedule-trigger', {}, [ + desiredJob('wf:node:0', schedule), + ]); + + expect(jobs.insertMany).toHaveBeenCalledWith(manager, [ + { + name: 'wf:node:0', + workflowId: 'wf', + nodeId: 'node', + taskType: 'schedule-trigger', + payload: {}, + kind: name, + cronExpression: null, + timezone: null, + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: null, + fireAt: null, + nextRunAt: CLOCK, + ...columns, + }, + ]); + }); + }); + + describe('reading a stored schedule back to diff it', () => { + // Rows of each kind, matching the desired schedule the test provisions against. + // `jobRow` defaults to cron, so each override clears the cron columns it doesn't use. + const cronRow = () => jobRow(); + const recurringCronRow = () => + jobRow({ + kind: 'recurring_cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 2, + }); + const intervalRow = () => + jobRow({ + kind: 'interval', + cronExpression: null, + timezone: null, + intervalSeconds: 300, + }); + const oneOffRow = () => + jobRow({ + kind: 'one_off', + cronExpression: null, + timezone: null, + fireAt: FIRE_AT, + }); + + const cases: Array<{ + name: string; + row: () => ScheduledJob; + same: ScheduleDefinition; + changed: ScheduleDefinition; + }> = [ + { + name: 'cron', + row: cronRow, + same: { kind: 'cron', cronExpression: '0 0 9 * * *', timezone: 'UTC' }, + changed: { kind: 'cron', cronExpression: '0 0 18 * * *', timezone: 'UTC' }, + }, + { + name: 'recurring_cron', + row: recurringCronRow, + same: { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 2, + }, + changed: { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * *', + timezone: 'UTC', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }, + }, + { + name: 'interval', + row: intervalRow, + same: { kind: 'interval', intervalSeconds: 300 }, + changed: { kind: 'interval', intervalSeconds: 600 }, + }, + { + name: 'one_off', + row: oneOffRow, + same: { kind: 'one_off', fireAt: FIRE_AT }, + changed: { kind: 'one_off', fireAt: new Date('2026-03-01T00:00:00.000Z') }, + }, + ]; + + it.each(cases)('leaves an unchanged $name job untouched', async ({ row, same }) => { + jobs.findManyByWorkflowNode.mockResolvedValue([row()]); + + const summary = await provisioner.provision('wf', 'node', 'schedule-trigger', {}, [ + desiredJob('wf:node:0', same), + ]); + + expect(jobs.updateDefinition).not.toHaveBeenCalled(); + expect(summary.unchanged).toEqual([{ id: 10, name: 'wf:node:0' }]); + }); + + it.each(cases)('rewrites a changed $name job in place', async ({ row, changed }) => { + jobs.findManyByWorkflowNode.mockResolvedValue([row()]); + + const summary = await provisioner.provision('wf', 'node', 'schedule-trigger', {}, [ + desiredJob('wf:node:0', changed), + ]); + + expect(jobs.updateDefinition).toHaveBeenCalledWith( + manager, + 10, + expect.objectContaining({ kind: changed.kind }), + ); + expect(summary.redefined).toEqual([{ id: 10, name: 'wf:node:0' }]); + }); + + it('throws on a stored row whose kind it does not recognise', async () => { + jobs.findManyByWorkflowNode.mockResolvedValue([ + jobRow({ kind: 'made_up' as ScheduledJob['kind'] }), + ]); + + await expect( + provisioner.provision('wf', 'node', 'schedule-trigger', {}, [desiredJob('wf:node:0')]), + ).rejects.toThrow('Unexpected scheduled job kind'); + }); + }); + + describe('deprovision', () => { + it('deletes the whole node scope inside a transaction and reports the count', async () => { + jobs.deleteByWorkflowNode.mockResolvedValue(3); + + const result = await provisioner.deprovision('wf', 'node'); + + expect(jobs.deleteByWorkflowNode).toHaveBeenCalledWith(manager, 'wf', 'node'); + expect(dataSource.transaction).toHaveBeenCalledTimes(1); + expect(result).toEqual({ removed: 3 }); + }); + }); +}); diff --git a/packages/cli/src/scheduling/__tests__/durable-scheduler.test.ts b/packages/cli/src/scheduling/__tests__/durable-scheduler.test.ts index 9632cf77b25..9519cbd53a4 100644 --- a/packages/cli/src/scheduling/__tests__/durable-scheduler.test.ts +++ b/packages/cli/src/scheduling/__tests__/durable-scheduler.test.ts @@ -3,7 +3,7 @@ import type { GlobalConfig } from '@n8n/config'; import type { DataSource, ScheduledJobRepository, ScheduledTaskRepository } from '@n8n/db'; import type { Scheduler, SchedulerPasses } from '@n8n/scheduler'; import { createScheduler } from '@n8n/scheduler'; -import type { InstanceSettings } from 'n8n-core'; +import type { InstanceSettings, Tracing } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; import type { PrometheusSchedulerMetricsService } from '@/metrics/prometheus/scheduler-metrics.service'; @@ -27,6 +27,7 @@ describe('DurableScheduler', () => { const scheduleTriggerTaskHandler = mock({ taskType: SCHEDULE_TRIGGER_TASK_TYPE, }); + const tracing = mock(); const scheduler = new DurableScheduler( logger, mock(), @@ -38,10 +39,11 @@ describe('DurableScheduler', () => { database: { type: dbType as 'sqlite' | 'postgresdb' }, scheduler: { enabled, executorIntervalSeconds: 5, jitterRatio: 0.1 }, }), + tracing, scheduleTriggerTaskHandler, mock(), ); - return { scheduler, inner, logger }; + return { scheduler, inner, logger, tracing }; } describe('composition', () => { @@ -70,6 +72,33 @@ describe('DurableScheduler', () => { }); }); + describe('tracer', () => { + // A fire span is opened from inside a timer callback armed while the claim + // span was active, so it needs a fresh trace instead of parenting under a + // (possibly already-closed) claim span; every other span parents normally. + it('routes a newTrace span through startNewTraceSpan, stripping the flag', async () => { + const { tracing } = makeScheduler(); + const deps = vi.mocked(createScheduler).mock.calls.at(-1)?.[0]; + const run = vi.fn(); + + await deps?.tracer?.startSpan({ name: 'Scheduler fire', newTrace: true }, run); + + expect(tracing.startNewTraceSpan).toHaveBeenCalledWith({ name: 'Scheduler fire' }, run); + expect(tracing.startSpan).not.toHaveBeenCalled(); + }); + + it('routes a plain span through startSpan', async () => { + const { tracing } = makeScheduler(); + const deps = vi.mocked(createScheduler).mock.calls.at(-1)?.[0]; + const run = vi.fn(); + + await deps?.tracer?.startSpan({ name: 'Scheduler materialize' }, run); + + expect(tracing.startSpan).toHaveBeenCalledWith({ name: 'Scheduler materialize' }, run); + expect(tracing.startNewTraceSpan).not.toHaveBeenCalled(); + }); + }); + describe('registerTaskHandler', () => { it('delegates to the inner scheduler when active', () => { const { scheduler, inner } = makeScheduler(); diff --git a/packages/cli/src/scheduling/durable-job-provisioner.ts b/packages/cli/src/scheduling/durable-job-provisioner.ts new file mode 100644 index 00000000000..6878020b2e8 --- /dev/null +++ b/packages/cli/src/scheduling/durable-job-provisioner.ts @@ -0,0 +1,220 @@ +import type { NewScheduledJob, ScheduledJob } from '@n8n/db'; +import { DataSource, ScheduledJobRepository, ScheduledTaskRepository } from '@n8n/db'; +import { Service } from '@n8n/di'; +import { createJobProvisioner } from '@n8n/scheduler'; +import type { + DesiredJob, + ExistingJob, + JobProvisioner, + ProvisionSummary, + RunInDeprovisionTransaction, + RunInProvisionTransaction, + ScheduleDefinition, +} from '@n8n/scheduler'; +import { Tracing } from 'n8n-core'; +import { UnexpectedError } from 'n8n-workflow'; + +import { createSchedulerTracer } from './scheduler-tracer'; + +/** Identifies one workflow node's jobs, and stamps the rows provisioning inserts. */ +interface ProvisionScope { + workflowId: string; + nodeId: string; + taskType: string; + payload: Record; +} + +/** Identifies one workflow node's jobs for deletion. */ +type DeprovisionScope = Pick; + +/** A job row's schedule columns: one `ScheduleDefinition` flattened for storage. */ +type ScheduleColumns = Pick< + ScheduledJob, + | 'kind' + | 'cronExpression' + | 'timezone' + | 'recurrenceUnit' + | 'recurrenceSize' + | 'intervalSeconds' + | 'fireAt' +>; + +/** + * The write side of the durable scheduler: persists a workflow node's scheduled + * jobs. The provisioning logic itself lives in the scheduler package (see + * {@link createJobProvisioner}); this service only binds that package's + * transaction ports to the `@n8n/db` repositories and maps between the domain + * `ScheduleDefinition` and the flat `scheduled_job` columns. + * + * The counterpart to `DurableScheduler`'s run side, deliberately a separate + * service: authoring a node's jobs must not depend on this instance running the + * scheduler loops, and the two only meet at the `scheduled_job` table. + * + * A `ScheduleDefinition` is a discriminated union (one variant per kind); the + * flat columns are a persistence detail, so the mapping between the two + * ({@link scheduleColumns} / {@link rowSchedule}) lives here at the DB boundary. + */ +@Service() +export class DurableJobProvisioner { + private readonly provisioner: JobProvisioner; + + constructor( + private readonly dataSource: DataSource, + private readonly jobs: ScheduledJobRepository, + private readonly tasks: ScheduledTaskRepository, + tracing: Tracing, + ) { + this.provisioner = createJobProvisioner({ + provisionTransaction: (scope) => this.provisionTransaction(scope), + deprovisionTransaction: (scope) => this.deprovisionTransaction(scope), + tracer: createSchedulerTracer(tracing), + }); + } + + /** + * Provision a node's jobs so the stored set matches `desired`, matched by name; + * see the package's `provision`. `taskType`/`payload` stamp the rows it inserts. + */ + async provision( + workflowId: string, + nodeId: string, + taskType: string, + payload: Record, + desired: DesiredJob[], + ): Promise { + return await this.provisioner.provision({ workflowId, nodeId, taskType, payload }, desired); + } + + /** Delete all of a node's jobs; their queued tasks cascade away. */ + async deprovision(workflowId: string, nodeId: string): Promise<{ removed: number }> { + return await this.provisioner.deprovision({ workflowId, nodeId }); + } + + private provisionTransaction({ + workflowId, + nodeId, + taskType, + payload, + }: ProvisionScope): RunInProvisionTransaction { + return async (work) => + await this.dataSource.transaction( + async (manager) => + await work({ + findExisting: async () => { + const rows = await this.jobs.findManyByWorkflowNode(manager, workflowId, nodeId); + return rows.map( + (row): ExistingJob => ({ + id: row.id, + name: row.name, + schedule: rowSchedule(row), + hasClock: row.nextRunAt !== null, + }), + ); + }, + insert: async (desired) => { + const rows = desired.map( + (job): NewScheduledJob => ({ + name: job.name, + workflowId, + nodeId, + taskType, + payload, + ...scheduleColumns(job.schedule), + nextRunAt: job.firstRunAt, + }), + ); + return await this.jobs.insertMany(manager, rows); + }, + redefine: async (jobId, schedule, nextRunAt) => + await this.jobs.updateDefinition(manager, jobId, { + ...scheduleColumns(schedule), + nextRunAt, + }), + withdrawPendingTasks: async (jobIds) => + await this.tasks.deletePendingByJobIds(manager, jobIds), + deleteJobs: async (jobIds) => await this.jobs.deleteManyByIds(manager, jobIds), + }), + ); + } + + private deprovisionTransaction({ + workflowId, + nodeId, + }: DeprovisionScope): RunInDeprovisionTransaction { + return async (work) => + await this.dataSource.transaction( + async (manager) => + await work({ + deleteAll: async () => + await this.jobs.deleteByWorkflowNode(manager, workflowId, nodeId), + }), + ); + } +} + +/** Flatten a {@link ScheduleDefinition} into the row columns it stores; absent fields are null. */ +function scheduleColumns(schedule: ScheduleDefinition): ScheduleColumns { + const empty = { + cronExpression: null, + timezone: null, + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: null, + fireAt: null, + }; + switch (schedule.kind) { + case 'cron': + return { + ...empty, + kind: schedule.kind, + cronExpression: schedule.cronExpression, + timezone: schedule.timezone, + }; + case 'recurring_cron': + return { + ...empty, + kind: schedule.kind, + cronExpression: schedule.cronExpression, + timezone: schedule.timezone, + recurrenceUnit: schedule.recurrenceUnit, + recurrenceSize: schedule.recurrenceSize, + }; + case 'interval': + return { ...empty, kind: schedule.kind, intervalSeconds: schedule.intervalSeconds }; + case 'one_off': + return { ...empty, kind: schedule.kind, fireAt: schedule.fireAt }; + } +} + +/** + * Rebuild a {@link ScheduleDefinition} from a stored row, so provisioning can + * diff it against the desired schedule. Rows are written by {@link scheduleColumns}, + * so a row of a given kind always carries that kind's columns; the coalescing only + * guards a hand-corrupted row, which then reads as changed and is rewritten. + * + * A `kind` outside the known set (a row from a newer main during a mixed-version + * deploy, a rollback, or a hand-edit) can't be diffed, so it throws rather than + * returning `undefined` and tripping a downstream `sameSchedule` on a bad value. + */ +function rowSchedule(row: ScheduledJob): ScheduleDefinition { + switch (row.kind) { + case 'cron': + return { kind: 'cron', cronExpression: row.cronExpression ?? '', timezone: row.timezone }; + case 'recurring_cron': + return { + kind: 'recurring_cron', + cronExpression: row.cronExpression ?? '', + timezone: row.timezone, + recurrenceUnit: row.recurrenceUnit ?? 'hours', + recurrenceSize: row.recurrenceSize ?? 0, + }; + case 'interval': + return { kind: 'interval', intervalSeconds: row.intervalSeconds ?? 0 }; + case 'one_off': + return { kind: 'one_off', fireAt: row.fireAt ?? new Date(0) }; + default: { + const exhaustive: never = row.kind; + throw new UnexpectedError(`Unexpected scheduled job kind: ${JSON.stringify(exhaustive)}`); + } + } +} diff --git a/packages/cli/src/scheduling/durable-scheduler.ts b/packages/cli/src/scheduling/durable-scheduler.ts index c218ad7da1e..8323820523c 100644 --- a/packages/cli/src/scheduling/durable-scheduler.ts +++ b/packages/cli/src/scheduling/durable-scheduler.ts @@ -5,17 +5,18 @@ import { OnShutdown } from '@n8n/decorators'; import { Service } from '@n8n/di'; import type { RunInTransaction, Scheduler, TaskHandler } from '@n8n/scheduler'; import { createScheduler, executorLookaheadSeconds } from '@n8n/scheduler'; -import { InstanceSettings } from 'n8n-core'; +import { InstanceSettings, Tracing } from 'n8n-core'; import { PrometheusSchedulerMetricsService } from '@/metrics/prometheus/scheduler-metrics.service'; import { ScheduleTriggerTaskHandler } from './schedule-trigger-node/schedule-trigger-task-handler'; +import { createSchedulerTracer } from './scheduler-tracer'; /** - * The database-backed {@link Scheduler} and its process lifecycle. + * The database-backed {@link Scheduler} and its process lifecycle (the run side). * - * The loops run on every main: claiming makes concurrent instances safe, - * and sharing the work across mains is the point of the durable scheduler. + * The loops run on every main: claiming makes concurrent instances safe, and + * sharing the work across mains is the point of the durable scheduler. */ @Service() export class DurableScheduler implements Scheduler { @@ -28,11 +29,13 @@ export class DurableScheduler implements Scheduler { tasks: ScheduledTaskRepository, instanceSettings: InstanceSettings, globalConfig: GlobalConfig, + tracing: Tracing, scheduleTriggerTaskHandler: ScheduleTriggerTaskHandler, metrics: PrometheusSchedulerMetricsService, ) { const config = globalConfig.scheduler; const enabled = config.enabled && instanceSettings.instanceType === 'main'; + const tracer = createSchedulerTracer(tracing); this.scheduler = enabled ? createScheduler({ hostId: instanceSettings.hostId, @@ -75,6 +78,7 @@ export class DurableScheduler implements Scheduler { maxConcurrentPasses: config.maxConcurrentPasses, }, onEvent: ({ level, message, context }) => logger[level](message, context), + tracer, }) : undefined; this.registerTaskHandler(scheduleTriggerTaskHandler.taskType, scheduleTriggerTaskHandler); diff --git a/packages/cli/src/scheduling/scheduler-tracer.ts b/packages/cli/src/scheduling/scheduler-tracer.ts new file mode 100644 index 00000000000..98ba815f25b --- /dev/null +++ b/packages/cli/src/scheduling/scheduler-tracer.ts @@ -0,0 +1,20 @@ +import type { Tracer } from '@n8n/scheduler'; +import type { Tracing } from 'n8n-core'; + +/** + * Adapts n8n's Sentry-backed {@link Tracing} to the scheduler package's minimal + * {@link Tracer} port. The `newTrace` flag routes a span to a fresh trace instead + * of parenting under whatever span is active on the calling async context (see + * `SpanOptions.newTrace`); every other span parents normally. + * + * Shared by the run side (`DurableScheduler`) and the write side + * (`DurableJobProvisioner`) so both report through the same adapter. + */ +export function createSchedulerTracer(tracing: Tracing): Tracer { + return { + startSpan: async ({ newTrace, ...options }, run) => + await (newTrace === true + ? tracing.startNewTraceSpan(options, run) + : tracing.startSpan(options, run)), + }; +} diff --git a/packages/cli/src/server.ts b/packages/cli/src/server.ts index 5199236b33f..f3643004d7e 100644 --- a/packages/cli/src/server.ts +++ b/packages/cli/src/server.ts @@ -29,6 +29,7 @@ import { isApiEnabled, loadPublicApiVersions } from '@/public-api'; import { Push } from '@/push'; import * as ResponseHelper from '@/response-helper'; import type { FrontendService } from '@/services/frontend.service'; +import { Telemetry } from '@/telemetry'; import '@/controllers/active-workflows.controller'; import '@/controllers/annotation-tags.controller.ee'; @@ -168,7 +169,12 @@ export class Server extends AbstractServer { const { frontendService } = this; if (frontendService) { - await this.externalHooks.run('frontend.settings', [await frontendService.getSettings()]); + const frontendSettings = await frontendService.getSettings(); + await this.externalHooks.run('frontend.settings', [frontendSettings]); + + if (this.globalConfig.deployment.type === 'cloud') { + Container.get(Telemetry).setUserCloudId(frontendSettings.n8nMetadata?.userId); + } } await this.postHogClient.init(); diff --git a/packages/cli/src/services/folder.service.ts b/packages/cli/src/services/folder.service.ts index 402009e43a2..5409e71d3a0 100644 --- a/packages/cli/src/services/folder.service.ts +++ b/packages/cli/src/services/folder.service.ts @@ -7,7 +7,7 @@ import type { import { Folder, FolderTagMappingRepository, FolderRepository, WorkflowRepository } from '@n8n/db'; import { Service } from '@n8n/di'; // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import -import type { EntityManager } from '@n8n/typeorm'; +import { In, type EntityManager } from '@n8n/typeorm'; import { UserError, PROJECT_ROOT } from 'n8n-workflow'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; @@ -38,13 +38,14 @@ export class FolderService { private readonly eventService: EventService, ) {} - async createFolder({ parentFolderId, name }: CreateFolderDto, projectId: string) { + async createFolder({ parentFolderId, name }: CreateFolderDto, projectId: string, id?: string) { let parentFolder = null; if (parentFolderId) { parentFolder = await this.findFolderInProjectOrFail(parentFolderId, projectId); } const folderEntity = this.folderRepository.create({ + ...(id ? { id } : {}), name, homeProject: { id: projectId }, parentFolder, @@ -55,6 +56,14 @@ export class FolderService { return folder; } + async getFoldersByIds(folderIds: string[]): Promise { + if (folderIds.length === 0) return []; + return await this.folderRepository.find({ + where: { id: In(folderIds) }, + relations: { homeProject: true }, + }); + } + async updateFolder( folderId: string, projectId: string, diff --git a/packages/cli/src/services/project.service.ee.ts b/packages/cli/src/services/project.service.ee.ts index 9e5e292d280..1a38f6aa5a1 100644 --- a/packages/cli/src/services/project.service.ee.ts +++ b/packages/cli/src/services/project.service.ee.ts @@ -778,6 +778,11 @@ export class ProjectService { }); } + /** Finds a project by id, or `null` when it does not exist. */ + async findProject(projectId: string): Promise { + return await this.projectRepository.findOne({ where: { id: projectId } }); + } + async getProjectRelations(projectId: string): Promise { return await this.projectRelationRepository.find({ where: { projectId }, diff --git a/packages/cli/src/telemetry/__tests__/telemetry.test.ts b/packages/cli/src/telemetry/__tests__/telemetry.test.ts index 9e80e57f487..6dfa49df2ab 100644 --- a/packages/cli/src/telemetry/__tests__/telemetry.test.ts +++ b/packages/cli/src/telemetry/__tests__/telemetry.test.ts @@ -999,6 +999,21 @@ describe('Telemetry', () => { ); }); + test('should call rudderStack.track() with the user_cloud_id context trait when set', () => { + telemetry.setUserCloudId('cloud-user-123'); + + telemetry.track('Test Event', { user_id: '1234' }); + + expect(mockRudderStack.track).toHaveBeenCalledWith( + expect.objectContaining({ + context: { + ip: '0.0.0.0', + traits: { user_cloud_id: 'cloud-user-123' }, + }, + }), + ); + }); + test('should include instance_id, version_cli, and user_id in track properties', () => { const eventName = 'Test Event'; const properties = { user_id: '1234', custom_prop: 'value' }; diff --git a/packages/cli/src/telemetry/index.ts b/packages/cli/src/telemetry/index.ts index bbab05728d1..e3916546448 100644 --- a/packages/cli/src/telemetry/index.ts +++ b/packages/cli/src/telemetry/index.ts @@ -99,6 +99,8 @@ interface IAgentSessionMetricsBuffer { export class Telemetry { private rudderStack?: RudderStack; + private userCloudId?: string; + private pulseIntervalReference: NodeJS.Timeout; private executionCountsBuffer: IExecutionsBuffer = {}; @@ -549,6 +551,10 @@ export class Telemetry { } } + setUserCloudId(userCloudId?: string) { + this.userCloudId = userCloudId; + } + track(eventName: string, properties: ITelemetryTrackProperties = {}) { if (!this.rudderStack) { return; @@ -567,7 +573,7 @@ export class Telemetry { userId: `${instanceId}${user_id ? `#${user_id}` : ''}`, event: eventName, properties: updatedProperties, - context: {}, + context: this.userCloudId ? { traits: { user_cloud_id: this.userCloudId } } : {}, }; // Build the actual payload that will be sent to RudderStack (with fake IP) diff --git a/packages/cli/src/webhooks/__tests__/live-webhooks.test.ts b/packages/cli/src/webhooks/__tests__/live-webhooks.test.ts index 131e8ef6cdf..28a8cd6ff82 100644 --- a/packages/cli/src/webhooks/__tests__/live-webhooks.test.ts +++ b/packages/cli/src/webhooks/__tests__/live-webhooks.test.ts @@ -110,7 +110,13 @@ describe('LiveWebhooks', () => { webhookService.getNodeWebhooks.mockReturnValue([webhookData]); (WebhookHelpers.executeWebhook as Mock).mockImplementation( - (workflow: Workflow, wd: IWebhookData, workflowData: IWorkflowBase, ...args: unknown[]) => { + // eslint-disable-next-line @typescript-eslint/require-await + async ( + workflow: Workflow, + wd: IWebhookData, + workflowData: IWorkflowBase, + ...args: unknown[] + ) => { onExecuteWebhook?.({ workflow, webhookData: wd, workflowData }); const webhookCallback = args[args.length - 1] as ( error: Error | null, @@ -263,6 +269,44 @@ describe('LiveWebhooks', () => { expect(capturedWorkflowData!.nodes[0].id).not.toBe('webhook-node-draft'); expect(capturedWorkflowData!.nodes[1].id).not.toBe('set-node-draft'); }); + + it('rejects (does not hang) when executeWebhook throws before invoking the callback', async () => { + const webhookNode: INode = { + id: 'webhook-node', + name: NODE_NAME, + type: 'n8n-nodes-base.webhook', + typeVersion: 1, + position: [0, 0], + parameters: { path: WEBHOOK_PATH, httpMethod: 'GET' }, + }; + + const activeVersion = mock({ + versionId: 'v1', + workflowId: WORKFLOW_ID, + nodes: [webhookNode], + connections: {}, + }); + + const workflowEntity = mock({ + id: WORKFLOW_ID, + name: 'Test Workflow', + active: true, + activeVersionId: activeVersion.versionId, + nodes: [webhookNode], + connections: {}, + staticData: {}, + activeVersion, + shared: [{ role: 'workflow:owner', project: { id: 'project-1', projectRelations: [] } }], + }); + + const request = setupExecuteWebhookMocks(workflowEntity); + const preCallbackError = new Error('response option expression failed'); + (WebhookHelpers.executeWebhook as Mock).mockRejectedValue(preCallbackError); + + await expect(liveWebhooks.executeWebhook(request, mock())).rejects.toBe( + preCallbackError, + ); + }); }); describe('executeWebhook (with publication service)', () => { @@ -467,7 +511,8 @@ describe('LiveWebhooks', () => { nodeTypes.getByNameAndVersion.mockReturnValue(webhookNodeType); webhookService.getNodeWebhooks.mockReturnValue([webhookData]); - (WebhookHelpers.executeWebhook as Mock).mockImplementation((...args: unknown[]) => { + // eslint-disable-next-line @typescript-eslint/require-await + (WebhookHelpers.executeWebhook as Mock).mockImplementation(async (...args: unknown[]) => { const webhookCallback = args[args.length - 1] as ( error: Error | null, data: object, diff --git a/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts b/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts index 8c91af00b98..5b8f83c9e83 100644 --- a/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts +++ b/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts @@ -583,6 +583,93 @@ describe('WaitingWebhooks', () => { expect(nodeExecutionStack[0].node.rewireOutputLogTo).toBe('ai_tool'); }); + it('rejects (does not hang) when executeWebhook throws before invoking the callback', async () => { + const executionId = 'test-execution-id'; + const lastNodeExecuted = 'WaitNode'; + + const mockExecution = mock({ + id: executionId, + status: 'waiting', + finished: false, + mode: 'manual', + data: { + executionData: { + nodeExecutionStack: [ + { + node: { + name: lastNodeExecuted, + type: 'n8n-nodes-base.wait', + typeVersion: 1, + parameters: {}, + id: 'node-id', + position: [0, 0], + disabled: false, + }, + data: {}, + source: null, + }, + ], + }, + resultData: { + runData: { + [lastNodeExecuted]: [ + { startTime: 123, executionTime: 456, executionIndex: 0, source: [] }, + ], + }, + lastNodeExecuted, + }, + }, + workflowData: { + id: 'workflow-id', + name: 'Test Workflow', + nodes: [ + { + name: lastNodeExecuted, + type: 'n8n-nodes-base.wait', + typeVersion: 1, + parameters: {}, + id: 'node-id', + position: [0, 0], + }, + ], + connections: {}, + active: true, + settings: {}, + staticData: {}, + }, + }); + mockExecution.data.resultData.error = undefined; + mockExecution.data.resumeToken = undefined; + executionPersistence.findSingleExecution.mockResolvedValue(mockExecution); + + const preCallbackError = new Error('response option expression failed'); + vi.spyOn(WebhookHelpers, 'executeWebhook').mockRejectedValue(preCallbackError); + + mockWebhookService.getNodeWebhooks.mockReturnValue([ + { + httpMethod: 'POST', + path: '', + webhookDescription: { + restartWebhook: true, + httpMethod: 'POST', + name: 'default', + path: '', + nodeType: undefined, + } as any, + }, + ] as any); + vi.spyOn(WorkflowExecuteAdditionalData, 'getBase').mockResolvedValue({} as any); + + const mockReq = mock({ + params: { path: executionId, suffix: undefined }, + method: 'POST', + }); + + await expect(waitingWebhooks.executeWebhook(mockReq, mock())).rejects.toBe( + preCallbackError, + ); + }); + it('should preserve inputOverride for nodes that have it', async () => { /** * Arrange diff --git a/packages/cli/src/webhooks/live-webhooks.ts b/packages/cli/src/webhooks/live-webhooks.ts index ad45c7aa648..12a08fdf703 100644 --- a/packages/cli/src/webhooks/live-webhooks.ts +++ b/packages/cli/src/webhooks/live-webhooks.ts @@ -161,7 +161,7 @@ export class LiveWebhooks implements IWebhookManager { return await new Promise((resolve, reject) => { const executionMode = 'webhook'; - void WebhookHelpers.executeWebhook( + WebhookHelpers.executeWebhook( workflow, webhookData, activeWorkflowData, // Use activeWorkflowData instead of workflowData @@ -180,7 +180,7 @@ export class LiveWebhooks implements IWebhookManager { await this.workflowStaticDataService.saveStaticData(workflow); resolve(data); }, - ); + ).catch(reject); // ensure the Promise settles even if executeWebhook throws }); } finally { await workflow.expression.releaseIsolate(); diff --git a/packages/cli/src/webhooks/test-webhooks.ts b/packages/cli/src/webhooks/test-webhooks.ts index 5aa16a0fc36..c5675f5965a 100644 --- a/packages/cli/src/webhooks/test-webhooks.ts +++ b/packages/cli/src/webhooks/test-webhooks.ts @@ -186,7 +186,11 @@ export class TestWebhooks implements IWebhookManager { pushRef, ); } - } catch {} + } catch (error) { + // Settle the Promise to prevent hanging the request. + // No return to ensure test-webhook cleanup. + reject(error as Error); + } /** * Multi-main setup: In a manual webhook execution, the main process that @@ -199,6 +203,9 @@ export class TestWebhooks implements IWebhookManager { command: 'clear-test-webhooks', payload: { webhookKey: key, workflowEntity, pushRef }, }); + // Response (if any) was already sent via WebhookHelpers.executeWebhook's + // callback; resolve to settle promise to be safe and avoid hanging. + resolve({ noWebhookResponse: true }); return; } diff --git a/packages/cli/src/webhooks/waiting-webhooks.ts b/packages/cli/src/webhooks/waiting-webhooks.ts index c43a9e523ce..469485d95d4 100644 --- a/packages/cli/src/webhooks/waiting-webhooks.ts +++ b/packages/cli/src/webhooks/waiting-webhooks.ts @@ -342,7 +342,7 @@ export class WaitingWebhooks implements IWebhookManager { } return await new Promise((resolve, reject) => { - void WebhookHelpers.executeWebhook( + WebhookHelpers.executeWebhook( workflow, webhookData, workflowData, @@ -360,7 +360,7 @@ export class WaitingWebhooks implements IWebhookManager { } resolve(data); }, - ); + ).catch(reject); // ensure the Promise settles even if executeWebhook throws }); } finally { await workflow.expression.releaseIsolate(); diff --git a/packages/cli/test/integration/environments/source-control-import.service.test.ts b/packages/cli/test/integration/environments/source-control-import.service.test.ts index aee3c2a8a84..0fc6408d029 100644 --- a/packages/cli/test/integration/environments/source-control-import.service.test.ts +++ b/packages/cli/test/integration/environments/source-control-import.service.test.ts @@ -123,6 +123,7 @@ describe('SourceControlImportService', () => { mock(), mock(), mock(), // redactionEnforcementService + mock(), // dataTableSizeValidator ); }); diff --git a/packages/cli/test/integration/environments/source-control.service.test.ts b/packages/cli/test/integration/environments/source-control.service.test.ts index 3f66b18c510..fc6e1de87fc 100644 --- a/packages/cli/test/integration/environments/source-control.service.test.ts +++ b/packages/cli/test/integration/environments/source-control.service.test.ts @@ -543,7 +543,6 @@ describe('SourceControlService', () => { service.sanityCheck = async () => {}; statusService['resetWorkfolder'] = async () => undefined; (statusService as any).gitService = gitService; - (gitService.getHistoricallyTrackedFiles as Mock).mockResolvedValue(new Set()); // Git mocking gitFiles = { @@ -962,10 +961,21 @@ describe('SourceControlService', () => { const dataTables = result.filter((r) => r.type === 'datatable'); + // Local in-scope tables are offered as creations, the in-scope + // remote-only table as a deletion (git holds it, the instance doesn't) expect(new Set(dataTables.map((dataTable) => dataTable.id))).toEqual( - new Set(projectAScope.dataTables.map((dataTable) => dataTable.id)), + new Set([ + ...projectAScope.dataTables.map((dataTable) => dataTable.id), + remoteInScopeDataTable.id, + ]), ); - expect(dataTables.every((dataTable) => dataTable.status === 'created')).toBe(true); + expect( + dataTables.every((dataTable) => + dataTable.id === remoteInScopeDataTable.id + ? dataTable.status === 'deleted' + : dataTable.status === 'created', + ), + ).toBe(true); expect( dataTables.some((dataTable) => projectBScope.dataTables.some((outOfScope) => outOfScope.id === dataTable.id), @@ -977,14 +987,7 @@ describe('SourceControlService', () => { describe('remote data tables', () => { describe('project:Admin user', () => { - it('should see only tracked remote data tables in correct scope', async () => { - (gitService.getHistoricallyTrackedFiles as Mock).mockResolvedValueOnce( - new Set([ - `${SOURCE_CONTROL_DATATABLES_EXPORT_FOLDER}/${remoteInScopeDataTable.id}.json`, - `${SOURCE_CONTROL_DATATABLES_EXPORT_FOLDER}/${remoteOutOfScopeDataTable.id}.json`, - ]), - ); - + it('should see only remote data tables in correct scope', async () => { const result = await service.getStatus(projectAdmin, { direction: 'push', preferLocalVersion: true, diff --git a/packages/cli/test/integration/execution.service.integration.test.ts b/packages/cli/test/integration/execution.service.integration.test.ts index 9f5e269b8a4..496ffa71a58 100644 --- a/packages/cli/test/integration/execution.service.integration.test.ts +++ b/packages/cli/test/integration/execution.service.integration.test.ts @@ -47,7 +47,6 @@ describe('ExecutionService', () => { mock(), mock(), mock(), - mock(), ); owner = await createOwner(); diff --git a/packages/cli/test/integration/executions.controller.test.ts b/packages/cli/test/integration/executions.controller.test.ts index f0455c45511..2741ec5a27f 100644 --- a/packages/cli/test/integration/executions.controller.test.ts +++ b/packages/cli/test/integration/executions.controller.test.ts @@ -48,18 +48,36 @@ beforeEach(async () => { }); describe('GET /executions', () => { - test('only returns executions of shared workflows if sharing is enabled', async () => { + test('returns executions of workflows shared with the user regardless of sharing license', async () => { const workflow = await createWorkflow({}, owner); await shareWorkflowWithUsers(workflow, [member]); await createSuccessfulExecution(workflow); - const response1 = await testServer.authAgentFor(member).get('/executions').expect(200); - expect(response1.body.data.count).toBe(0); + const responseWithoutLicense = await testServer + .authAgentFor(member) + .get('/executions') + .expect(200); + expect(responseWithoutLicense.body.data.count).toBe(1); testServer.license.enable('feat:sharing'); - const response2 = await testServer.authAgentFor(member).get('/executions').expect(200); - expect(response2.body.data.count).toBe(1); + const responseWithLicense = await testServer + .authAgentFor(member) + .get('/executions') + .expect(200); + expect(responseWithLicense.body.data.count).toBe(1); + }); + + test('project admins can list executions of project workflows without the sharing license', async () => { + const teamProject = await createTeamProject(); + await linkUserToProject(member, teamProject, 'project:admin'); + + const workflow = await createWorkflow({}, teamProject); + await createSuccessfulExecution(workflow); + + const response = await testServer.authAgentFor(member).get('/executions').expect(200); + + expect(response.body.data.count).toBe(1); }); test('should return a scopes array for each execution', async () => { @@ -75,10 +93,6 @@ describe('GET /executions', () => { describe('GET /executions/:id', () => { test('project viewers can view executions for workflows in the project', async () => { - // if sharing is not enabled, we're only returning the executions of - // personal workflows - testServer.license.enable('feat:sharing'); - const teamProject = await createTeamProject(); await linkUserToProject(member, teamProject, 'project:viewer'); @@ -91,15 +105,24 @@ describe('GET /executions/:id', () => { expect(response.body.data).toBeDefined(); }); - test('only returns executions of shared workflows if sharing is enabled', async () => { + test('project admins can view executions for workflows in the project without the sharing license', async () => { + const teamProject = await createTeamProject(); + await linkUserToProject(member, teamProject, 'project:admin'); + + const workflow = await createWorkflow({}, teamProject); + const execution = await createSuccessfulExecution(workflow); + + const response = await testServer.authAgentFor(member).get(`/executions/${execution.id}`); + + expect(response.statusCode).toBe(200); + expect(response.body.data).toBeDefined(); + }); + + test('returns executions of workflows shared with the user without the sharing license', async () => { const workflow = await createWorkflow({}, owner); await shareWorkflowWithUsers(workflow, [member]); const execution = await createSuccessfulExecution(workflow); - await testServer.authAgentFor(member).get(`/executions/${execution.id}`).expect(404); - - testServer.license.enable('feat:sharing'); - const response = await testServer .authAgentFor(member) .get(`/executions/${execution.id}`) diff --git a/packages/cli/test/integration/public-api/n8n-packages-import.test.ts b/packages/cli/test/integration/public-api/n8n-packages-import.test.ts index 3f86c20d11e..5d5fd64d103 100644 --- a/packages/cli/test/integration/public-api/n8n-packages-import.test.ts +++ b/packages/cli/test/integration/public-api/n8n-packages-import.test.ts @@ -218,6 +218,7 @@ describe('POST /n8n-packages/import', () => { status: 'created', }, ], + folders: [], bindings: { workflows: { 'wf-http-source': expect.any(String) }, credentials: {}, diff --git a/packages/cli/test/integration/scheduling/durable-scheduler-lifecycle.test.ts b/packages/cli/test/integration/scheduling/durable-scheduler-lifecycle.test.ts new file mode 100644 index 00000000000..249e22dfb1b --- /dev/null +++ b/packages/cli/test/integration/scheduling/durable-scheduler-lifecycle.test.ts @@ -0,0 +1,146 @@ +import { Logger } from '@n8n/backend-common'; +import { testDb } from '@n8n/backend-test-utils'; +import { GlobalConfig } from '@n8n/config'; +import { DataSource, ScheduledJobRepository, ScheduledTaskRepository } from '@n8n/db'; +import { Container } from '@n8n/di'; +import type { ClaimedTask } from '@n8n/scheduler'; +import type { InstanceSettings } from 'n8n-core'; +import { Tracing } from 'n8n-core'; + +import { PrometheusSchedulerMetricsService } from '@/metrics/prometheus/scheduler-metrics.service'; +import { DurableScheduler } from '@/scheduling/durable-scheduler'; +import { ScheduleTriggerTaskHandler } from '@/scheduling/schedule-trigger-node/schedule-trigger-task-handler'; + +import { retryUntil } from '../shared/retry-until'; +import { createDueJobFactory, seedDueTask } from './shared/job-factory'; + +/** + * The process lifecycle wired in `start.ts`: `DurableScheduler.start()` driving + * the real DB-backed loops on a main, and the feature-flag gate that keeps them + * off everywhere else. The unit suite exercises the gate with `createScheduler` + * mocked; this drives the real loops against a real database and asserts the + * gate by whether a seeded occurrence is picked up at all. + */ +describe('durable scheduler process lifecycle and flag gating', () => { + const TASK_TYPE = 'integration-lifecycle-test'; + + let jobRepo: ScheduledJobRepository; + let taskRepo: ScheduledTaskRepository; + let scheduler: DurableScheduler | undefined; + let createDueJob: ReturnType; + const executed: ClaimedTask[] = []; + + beforeAll(async () => { + await testDb.init(); + jobRepo = Container.get(ScheduledJobRepository); + taskRepo = Container.get(ScheduledTaskRepository); + createDueJob = createDueJobFactory(jobRepo, TASK_TYPE, 'lifecycle-job'); + }); + + beforeEach(async () => { + executed.length = 0; + await testDb.truncate(['ScheduledTask', 'ScheduledJob']); + }); + + afterEach(async () => { + await scheduler?.stop(); + scheduler = undefined; + }); + + afterAll(async () => { + await testDb.terminate(); + }); + + // Push intervals down to a second so the loops act within the test window. + const buildScheduler = (opts: { enabled: boolean; instanceType?: 'main' | 'worker' }) => { + const globalConfig = Container.get(GlobalConfig); + globalConfig.scheduler.enabled = opts.enabled; + globalConfig.scheduler.sweepIntervalSeconds = 1; + globalConfig.scheduler.executorIntervalSeconds = 1; + globalConfig.scheduler.reaperIntervalSeconds = 1; + globalConfig.scheduler.retentionIntervalSeconds = 1; + + const instanceSettings = { + instanceType: opts.instanceType ?? 'main', + hostId: 'lifecycle-host', + } as InstanceSettings; + + return new DurableScheduler( + Container.get(Logger), + Container.get(DataSource), + jobRepo, + taskRepo, + instanceSettings, + globalConfig, + Container.get(Tracing), + // The auto-registered schedule-trigger handler is harmless here: no + // schedule-trigger occurrences are seeded, so it never fires. + Container.get(ScheduleTriggerTaskHandler), + Container.get(PrometheusSchedulerMetricsService), + ); + }; + + it('runs the loops on a main and fires a due job end to end', async () => { + scheduler = buildScheduler({ enabled: true }); + scheduler.registerTaskHandler(TASK_TYPE, { + execute: async (task) => { + executed.push(task); + }, + }); + + const job = await createDueJob(); + scheduler.start(); + + // The materialize loop turns the due job into an occurrence and the executor + // loop claims and fires it; both run without any manual pass invocation. + await retryUntil( + async () => { + const task = await taskRepo.findOneBy({ jobId: job.id }); + expect(task?.status).toBe('succeeded'); + }, + { intervalMs: 100, timeoutMs: 20_000 }, + ); + expect(executed).toHaveLength(1); + }, 30_000); + + it('does nothing when the flag is off, leaving occurrences untouched', async () => { + scheduler = buildScheduler({ enabled: false }); + scheduler.registerTaskHandler(TASK_TYPE, { + execute: async (task) => { + executed.push(task); + }, + }); + + const job = await createDueJob(); + await seedDueTask(taskRepo, TASK_TYPE, job.id); + scheduler.start(); + + // No positive event to await: give the loops time to (wrongly) run, then + // assert the occurrence was never claimed. + await new Promise((resolve) => setTimeout(resolve, 3000)); + + const task = await taskRepo.findOneByOrFail({ jobId: job.id }); + expect(task.status).toBe('pending'); + expect(task.claimedBy).toBeNull(); + expect(executed).toHaveLength(0); + }, 15_000); + + it('stays disabled on a worker even with the flag on', async () => { + scheduler = buildScheduler({ enabled: true, instanceType: 'worker' }); + scheduler.registerTaskHandler(TASK_TYPE, { + execute: async (task) => { + executed.push(task); + }, + }); + + const job = await createDueJob(); + await seedDueTask(taskRepo, TASK_TYPE, job.id); + scheduler.start(); + + await new Promise((resolve) => setTimeout(resolve, 3000)); + + const task = await taskRepo.findOneByOrFail({ jobId: job.id }); + expect(task.status).toBe('pending'); + expect(executed).toHaveLength(0); + }, 15_000); +}); diff --git a/packages/cli/test/integration/scheduling/scheduled-repositories.test.ts b/packages/cli/test/integration/scheduling/scheduled-repositories.test.ts index 937ebbd8e88..b5447a411e1 100644 --- a/packages/cli/test/integration/scheduling/scheduled-repositories.test.ts +++ b/packages/cli/test/integration/scheduling/scheduled-repositories.test.ts @@ -1,5 +1,6 @@ import { testDb } from '@n8n/backend-test-utils'; import type { + NewScheduledJob, ScheduledJob as ScheduledJobEntity, ScheduledTask as ScheduledTaskEntity, TerminalTaskStatus, @@ -11,7 +12,7 @@ import { ScheduledTaskRepository, } from '@n8n/db'; import { Container } from '@n8n/di'; -import { DataSource } from '@n8n/typeorm'; +import { DataSource, In } from '@n8n/typeorm'; // SKIP LOCKED and truly parallel writes only apply on Postgres; the local sqlite driver // serializes every writer through a single lock. Tests that need real parallelism are @@ -341,12 +342,124 @@ describe('scheduled repositories', () => { }); }); + describe('ScheduledJobRepository.insertMany', () => { + /** A minimal interval job row for insertMany; bookkeeping columns take their defaults. */ + const newJobRow = ( + name: string, + overrides: Partial = {}, + ): NewScheduledJob => ({ + name, + workflowId: null, + nodeId: null, + taskType: 'scheduleTrigger', + payload: {}, + kind: 'interval', + cronExpression: null, + timezone: null, + recurrenceUnit: null, + recurrenceSize: null, + intervalSeconds: 60, + fireAt: null, + nextRunAt: secondsFromNow(-60), + ...overrides, + }); + + it('inserts new rows and returns one id per input job, in input order', async () => { + const jobs = [newJobRow('wf:node:0'), newJobRow('wf:node:1')]; + + const ids = await dataSource.transaction( + async (trx) => await jobRepository.insertMany(trx, jobs), + ); + + expect(ids).toHaveLength(2); + // The returned ids must line up with the input order by name, so the caller's + // index-based zip attributes each id to the right job. + const stored = await jobRepository.findBy({ name: In(['wf:node:0', 'wf:node:1']) }); + const idByName = new Map(stored.map((row) => [row.name, row.id])); + expect(ids).toEqual([idByName.get('wf:node:0'), idByName.get('wf:node:1')]); + }); + + it('returns the existing id for a name already taken, without duplicating the row', async () => { + // A prior writer already holds `wf:node:0`; a second provisioning run inserts it + // again alongside a fresh name. orIgnore skips the taken row, and the read-back by + // name still yields the taken row's id rather than a gap. + const [firstId] = await dataSource.transaction( + async (trx) => await jobRepository.insertMany(trx, [newJobRow('wf:node:0')]), + ); + + const ids = await dataSource.transaction( + async (trx) => + await jobRepository.insertMany(trx, [newJobRow('wf:node:0'), newJobRow('wf:node:1')]), + ); + + expect(ids[0]).toBe(firstId); + expect(ids[1]).not.toBe(firstId); + // Only one row named `wf:node:0`: the second insert converged on the first's row. + expect(await jobRepository.countBy({ name: 'wf:node:0' })).toBe(1); + expect(await jobRepository.countBy({ name: 'wf:node:1' })).toBe(1); + }); + + // Postgres only: two transactions inserting the same name at once. The unique index + // lets exactly one row win; both callers read the winner's id back by name rather than + // the loser getting a gap from the skipped RETURNING row. + // + // runnerB draws from the secondary pool so both transactions are genuinely held open at + // once (the main pool is capped at a single connection in CI). A inserts and holds the + // new row's uncommitted unique-index entry; B's insert of the same name blocks on it + // until A commits, then `orIgnore` skips and B reads A's row back by name. + it.skipIf(!isPostgres)( + 'converges on a single row when two transactions insert the same name at once', + async () => { + const runnerA = dataSource.createQueryRunner(); + const runnerB = secondaryDataSource!.createQueryRunner(); + let first: number[]; + let second: number[]; + try { + await runnerA.connect(); + await runnerB.connect(); + await runnerA.startTransaction(); + await runnerB.startTransaction(); + + first = await jobRepository.insertMany(runnerA.manager, [newJobRow('wf:node:0')]); + + // Start B's insert while A's transaction is still open; it blocks on A's + // uncommitted row, so don't await it until A has committed. + const secondPromise = jobRepository.insertMany(runnerB.manager, [newJobRow('wf:node:0')]); + await runnerA.commitTransaction(); + second = await secondPromise; + await runnerB.commitTransaction(); + } finally { + // Free the runners (runnerA holds the single main-pool connection) before the + // assertions below query through the main DataSource. + await runnerA.release(); + await runnerB.release(); + } + + expect(await jobRepository.countBy({ name: 'wf:node:0' })).toBe(1); + const stored = await jobRepository.findOneByOrFail({ name: 'wf:node:0' }); + // Neither caller came back empty; both point at the surviving row. + expect(first).toEqual([stored.id]); + expect(second).toEqual([stored.id]); + }, + ); + + it('rejects a call made outside a transaction', async () => { + // The plain DataSource manager has no queryRunner, which is how the guard detects + // a call made outside `dataSource.transaction`. + await expect( + jobRepository.insertMany(dataSource.manager, [newJobRow('wf:node:0')]), + ).rejects.toThrow('insertMany must run within a transaction'); + + expect(await jobRepository.countBy({ name: 'wf:node:0' })).toBe(0); + }); + }); + describe('ScheduledTaskRepository.insertIgnoringDuplicates', () => { it('inserts occurrences and returns how many were recorded', async () => { const job = await createJob(); const scheduledFor = secondsFromNow(-60); - const recorded = await dataSource.transaction( + const result = await dataSource.transaction( async (trx) => await taskRepository.insertIgnoringDuplicates(trx, [ { @@ -360,12 +473,41 @@ describe('scheduled repositories', () => { ]), ); - expect(recorded).toBe(1); + expect(result.recorded).toBe(1); const stored = await taskRepository.findBy({ jobId: job.id }); expect(stored).toHaveLength(1); expect(stored[0].scheduledFor.getTime()).toBe(scheduledFor.getTime()); }); + // Postgres only: SQLite's driver never surfaces RETURNING rows from a raw + // insert, so row identity for tracing is a Postgres-only capability. + it.skipIf(!isPostgres)('returns the identity of each newly created row', async () => { + const job = await createJob(); + const scheduledFor = secondsFromNow(-60); + + const result = await dataSource.transaction( + async (trx) => + await taskRepository.insertIgnoringDuplicates(trx, [ + { + jobId: job.id, + taskType: 'scheduleTrigger', + payload: {}, + scheduledFor, + runAt: scheduledFor, + maxAttempts: 1, + }, + ]), + ); + + expect(result.created).toHaveLength(1); + const stored = await taskRepository.findOneByOrFail({ jobId: job.id }); + expect(result.created[0]).toEqual({ + id: stored.id, + jobId: job.id, + taskType: 'scheduleTrigger', + }); + }); + it('is idempotent on (jobId, scheduledFor): a duplicate is skipped and not counted', async () => { const job = await createJob(); const scheduledFor = secondsFromNow(-60); @@ -385,8 +527,8 @@ describe('scheduled repositories', () => { async (trx) => await taskRepository.insertIgnoringDuplicates(trx, [occurrence]), ); - expect(first).toBe(1); - expect(second).toBe(0); + expect(first.recorded).toBe(1); + expect(second.recorded).toBe(0); expect(await taskRepository.findBy({ jobId: job.id })).toHaveLength(1); }); @@ -406,11 +548,11 @@ describe('scheduled repositories', () => { }; }); - const recorded = await dataSource.transaction( + const result = await dataSource.transaction( async (trx) => await taskRepository.insertIgnoringDuplicates(trx, occurrences), ); - expect(recorded).toBe(2500); + expect(result.recorded).toBe(2500); expect(await taskRepository.countBy({ jobId: job.id })).toBe(2500); }); @@ -439,7 +581,7 @@ describe('scheduled repositories', () => { ), ]); - expect(first + second).toBe(1); + expect(first.recorded + second.recorded).toBe(1); expect(await taskRepository.findBy({ jobId: job.id })).toHaveLength(1); }, ); diff --git a/packages/cli/test/integration/scheduling/scheduler-cascade-delete.test.ts b/packages/cli/test/integration/scheduling/scheduler-cascade-delete.test.ts new file mode 100644 index 00000000000..0fecb1fa18d --- /dev/null +++ b/packages/cli/test/integration/scheduling/scheduler-cascade-delete.test.ts @@ -0,0 +1,125 @@ +import { testDb } from '@n8n/backend-test-utils'; +import { DataSource, ScheduledJobRepository, ScheduledTaskRepository } from '@n8n/db'; +import { Container } from '@n8n/di'; +import { createScheduler } from '@n8n/scheduler'; +import type { ClaimedTask, Scheduler, SchedulerPasses } from '@n8n/scheduler'; + +import { buildMaterializerTransaction } from '@/scheduling/durable-scheduler'; + +import { createDueJobFactory } from './shared/job-factory'; + +/** + * Cascade-delete safety: a job's `scheduled_task` rows carry a real DB foreign + * key with `ON DELETE CASCADE` (`FK_scheduled_task_jobId`, see + * `CreateSchedulerTables`), so deleting a job while one of its occurrences is + * claimed removes the claimed row out from under its owner. Every guarded + * write and pass must treat that as benign, never throw. + * + * The claimed row is seeded directly (as the multi-main suite's stranded-lease + * test does) rather than raced against the executor's real fire timer: that + * keeps the scenario deterministic while still exercising the real cascade. + */ +describe('scheduler cascade-delete safety', () => { + const TASK_TYPE = 'integration-cascade-delete-test'; + const HOST = 'main-cascade-test'; + + let jobRepo: ScheduledJobRepository; + let taskRepo: ScheduledTaskRepository; + let scheduler: Scheduler & SchedulerPasses; + let createJob: ReturnType; + const executed: ClaimedTask[] = []; + + beforeAll(async () => { + await testDb.init(); + jobRepo = Container.get(ScheduledJobRepository); + taskRepo = Container.get(ScheduledTaskRepository); + createJob = createDueJobFactory(jobRepo, TASK_TYPE, 'job-cascade'); + scheduler = createScheduler({ + hostId: HOST, + materializerTransaction: buildMaterializerTransaction( + Container.get(DataSource), + jobRepo, + taskRepo, + ), + taskStore: taskRepo, + }); + scheduler.registerTaskHandler(TASK_TYPE, { + execute: async (task) => { + executed.push(task); + }, + }); + }); + + beforeEach(async () => { + executed.length = 0; + await testDb.truncate(['ScheduledTask', 'ScheduledJob']); + }); + + afterAll(async () => { + await scheduler.stop(); + await testDb.terminate(); + }); + + it('cascades a claimed task away with its job, leaving its terminal write a benign no-op', async () => { + const job = await createJob(); + const past = new Date(Date.now() - 1000); + const claimed = await taskRepo.save( + taskRepo.create({ + jobId: job.id, + taskType: TASK_TYPE, + payload: {}, + scheduledFor: past, + runAt: past, + status: 'running', + claimedBy: HOST, + leaseExpiresAt: new Date(Date.now() + 30_000), + leaseEpoch: 1, + attempts: 1, + maxAttempts: 3, + }), + ); + + // The real FK cascade: deleting the parent job removes its claimed task + // row, mid-lease, out from under its owner. + await jobRepo.delete({ id: job.id }); + + const gone = await taskRepo.findOneBy({ id: claimed.id }); + expect(gone).toBeNull(); + + // The claim's owner tries to record its outcome after the row is gone. + // The guard matches no row rather than throwing. + const staleComplete = await taskRepo.completeTask({ + id: claimed.id, + host: HOST, + claimedEpoch: 1, + }); + expect(staleComplete).toBe(0); + + // The now-empty table gives every other pass nothing to do, not an error. + expect(await scheduler.reap()).toEqual({ reclaimed: 0, deadLettered: 0 }); + expect(await scheduler.execute()).toEqual([]); + expect(executed).toHaveLength(0); + }); + + it('cascades pending, unclaimed tasks away too, and a reap sweep over the empty table is a no-op', async () => { + const job = await createJob(); + const past = new Date(Date.now() - 1000); + await taskRepo.save( + taskRepo.create({ + jobId: job.id, + taskType: TASK_TYPE, + payload: {}, + scheduledFor: past, + runAt: past, + status: 'pending', + maxAttempts: 3, + }), + ); + + await jobRepo.delete({ id: job.id }); + + expect(await taskRepo.countBy({ jobId: job.id })).toBe(0); + expect(await scheduler.reap()).toEqual({ reclaimed: 0, deadLettered: 0 }); + expect(await scheduler.execute()).toEqual([]); + }); +}); diff --git a/packages/cli/test/integration/scheduling/scheduler-concurrent-loops.test.ts b/packages/cli/test/integration/scheduling/scheduler-concurrent-loops.test.ts new file mode 100644 index 00000000000..7bea4148a01 --- /dev/null +++ b/packages/cli/test/integration/scheduling/scheduler-concurrent-loops.test.ts @@ -0,0 +1,125 @@ +import { testDb } from '@n8n/backend-test-utils'; +import { DataSource, ScheduledJobRepository, ScheduledTaskRepository } from '@n8n/db'; +import { Container } from '@n8n/di'; +import { createScheduler } from '@n8n/scheduler'; +import type { ClaimedTask, Scheduler, SchedulerPasses } from '@n8n/scheduler'; + +import { buildMaterializerTransaction } from '@/scheduling/durable-scheduler'; + +import { retryUntil } from '../shared/retry-until'; +import { createDueJobFactory } from './shared/job-factory'; + +/** + * Two mains driving materialize+execute+reap concurrently, round after round, + * against a shared backlog undersized enough to force both to participate. + * The single-pass and multi-main suites prove each pass, and the claim/execute + * race, in isolation; this repeats the claim race over several rounds: every + * occurrence still fires exactly once, on the main that persisted as its + * owner, with no task ever claimed by both. + * + * Leases are short-lived relative to the run, so reap stays a no-op here; + * lease reclaim under contention is covered by the multi-main suite. + */ +describe('scheduler loops racing across two mains', () => { + const TASK_TYPE = 'integration-concurrent-loops-test'; + + let jobRepo: ScheduledJobRepository; + let taskRepo: ScheduledTaskRepository; + let createDueJob: ReturnType; + + let mainA: Scheduler & SchedulerPasses; + let mainB: Scheduler & SchedulerPasses; + const executedA: ClaimedTask[] = []; + const executedB: ClaimedTask[] = []; + + const buildMain = (hostId: string, executed: ClaimedTask[], batchSize: number) => { + const scheduler = createScheduler({ + hostId, + materializerTransaction: buildMaterializerTransaction( + Container.get(DataSource), + jobRepo, + taskRepo, + ), + taskStore: taskRepo, + executor: { leaseSeconds: 30, lookaheadSeconds: 5, batchSize }, + }); + scheduler.registerTaskHandler(TASK_TYPE, { + execute: async (task) => { + executed.push(task); + }, + }); + return scheduler; + }; + + beforeAll(async () => { + await testDb.init(); + jobRepo = Container.get(ScheduledJobRepository); + taskRepo = Container.get(ScheduledTaskRepository); + createDueJob = createDueJobFactory(jobRepo, TASK_TYPE, 'job-loop'); + // A batch smaller than the backlog, same as the multi-main suite: a single + // claim can't sweep it all, so both mains must participate across rounds + // rather than one incidentally draining it alone. + mainA = buildMain('main-loop-a', executedA, 2); + mainB = buildMain('main-loop-b', executedB, 2); + }); + + beforeEach(async () => { + executedA.length = 0; + executedB.length = 0; + await testDb.truncate(['ScheduledTask', 'ScheduledJob']); + }); + + afterAll(async () => { + await mainA.stop(); + await mainB.stop(); + await testDb.terminate(); + }); + + it('drains a backlog of due jobs with every occurrence firing exactly once', async () => { + const total = 5; + for (let i = 0; i < total; i++) { + await createDueJob(); + } + + // A handful of rounds of every pass (materialize, execute, reap), both + // mains racing on each. The batch size (2) is smaller than the backlog (5), + // so draining it takes more than one round; the later, now-empty rounds + // prove they are harmless no-ops rather than double-firing anything. + for (let round = 0; round < 3; round++) { + await Promise.all([mainA.materialize(), mainB.materialize()]); + await Promise.all([mainA.execute(), mainB.execute()]); + await Promise.all([mainA.reap(), mainB.reap()]); + } + + await retryUntil( + async () => expect(await taskRepo.countBy({ status: 'succeeded' })).toBe(total), + { timeoutMs: 10_000 }, + ); + + const rows = await taskRepo.find(); + expect(rows).toHaveLength(total); + expect(rows.every((r) => r.status === 'succeeded')).toBe(true); + + // Exactly-once at execution: the union of what each main actually fired has + // no overlap and covers every occurrence, matching the persisted rows. + const idsA = executedA.map((t) => t.id); + const idsB = executedB.map((t) => t.id); + expect(idsA.filter((id) => idsB.includes(id))).toHaveLength(0); + const executedIds = new Set([...idsA, ...idsB]); + expect(executedIds).toEqual(new Set(rows.map((r) => r.id))); + expect(executedA.length + executedB.length).toBe(total); + // The undersized batch forced the backlog to split across both mains rather + // than one incidentally draining it alone. + expect(idsA.length).toBeGreaterThan(0); + expect(idsB.length).toBeGreaterThan(0); + + // Each occurrence's persisted owner is the main that actually fired it, not + // just some valid host. + expect( + rows.filter((r) => idsA.includes(r.id)).every((r) => r.claimedBy === 'main-loop-a'), + ).toBe(true); + expect( + rows.filter((r) => idsB.includes(r.id)).every((r) => r.claimedBy === 'main-loop-b'), + ).toBe(true); + }, 20_000); +}); diff --git a/packages/cli/test/integration/scheduling/scheduler-execute.test.ts b/packages/cli/test/integration/scheduling/scheduler-execute.test.ts index 98060cc2ddc..1c4eb4f0c7e 100644 --- a/packages/cli/test/integration/scheduling/scheduler-execute.test.ts +++ b/packages/cli/test/integration/scheduling/scheduler-execute.test.ts @@ -84,7 +84,7 @@ describe('scheduler execution over the storage bindings', () => { const job = await createJob({ payload: { answer: 42 } }); const summary = await scheduler.materialize(); - expect(summary).toEqual({ claimedJobs: 1, occurrences: 1, deferredJobs: 0 }); + expect(summary).toMatchObject({ claimedJobs: 1, occurrences: 1, deferredJobs: 0 }); // The occurrence is already due, so the claim schedules an immediate fire. const claimed = await scheduler.execute(); diff --git a/packages/cli/test/integration/scheduling/scheduler-materialize.test.ts b/packages/cli/test/integration/scheduling/scheduler-materialize.test.ts index 7d9a11ce507..183fd65776a 100644 --- a/packages/cli/test/integration/scheduling/scheduler-materialize.test.ts +++ b/packages/cli/test/integration/scheduling/scheduler-materialize.test.ts @@ -75,7 +75,7 @@ describe('scheduler materialization', () => { const summary = await runMaterialization(0); - expect(summary).toEqual({ claimedJobs: 1, occurrences: 1, deferredJobs: 0 }); + expect(summary).toMatchObject({ claimedJobs: 1, occurrences: 1, deferredJobs: 0 }); const [task] = await taskRepo.find(); expect(task.jobId).toBe(job.id); @@ -186,7 +186,7 @@ describe('scheduler materialization', () => { const summary = await runMaterialization(0); - expect(summary).toEqual({ claimedJobs: 2, occurrences: 1, deferredJobs: 1 }); + expect(summary).toMatchObject({ claimedJobs: 2, occurrences: 1, deferredJobs: 1 }); // The good job materialized normally. const [task] = await taskRepo.find(); @@ -220,7 +220,7 @@ describe('scheduler materialization', () => { const summary = await runMaterialization(0); // The repaired job materializes again with no other intervention. - expect(summary).toEqual({ claimedJobs: 1, occurrences: 1, deferredJobs: 0 }); + expect(summary).toMatchObject({ claimedJobs: 1, occurrences: 1, deferredJobs: 0 }); const resumed = await jobRepo.findOneByOrFail({ id: job.id }); expect(resumed.nextRunAt).not.toBeNull(); }); diff --git a/packages/cli/test/integration/scheduling/scheduler-multi-main.test.ts b/packages/cli/test/integration/scheduling/scheduler-multi-main.test.ts new file mode 100644 index 00000000000..40bfffdd75c --- /dev/null +++ b/packages/cli/test/integration/scheduling/scheduler-multi-main.test.ts @@ -0,0 +1,205 @@ +import { testDb } from '@n8n/backend-test-utils'; +import { DataSource, ScheduledJobRepository, ScheduledTaskRepository } from '@n8n/db'; +import { Container } from '@n8n/di'; +import { createScheduler } from '@n8n/scheduler'; +import type { ClaimedTask, Scheduler, SchedulerPasses } from '@n8n/scheduler'; + +import { buildMaterializerTransaction } from '@/scheduling/durable-scheduler'; + +import { retryUntil } from '../shared/retry-until'; +import { createDueJobFactory, seedDueTask } from './shared/job-factory'; + +/** + * Two scheduler instances sharing one database, the way two mains do in + * production. The per-instance unit suites and the single-host integration test + * prove each pass in isolation; this proves the cross-main guarantees the whole + * point of the durable scheduler rests on: a due occurrence is claimed by + * exactly one instance, a claim stranded by a dead instance is recovered by + * another without the occurrence running twice, and a stranded claim on its + * last attempt is dead-lettered rather than retried forever. + */ +describe('scheduler across two mains over one database', () => { + const TASK_TYPE = 'integration-multi-main-test'; + + let jobRepo: ScheduledJobRepository; + let taskRepo: ScheduledTaskRepository; + let createJob: ReturnType; + + let mainA: Scheduler & SchedulerPasses; + let mainB: Scheduler & SchedulerPasses; + const executedA: ClaimedTask[] = []; + const executedB: ClaimedTask[] = []; + + const buildMain = (hostId: string, executed: ClaimedTask[], batchSize: number) => { + const scheduler = createScheduler({ + hostId, + materializerTransaction: buildMaterializerTransaction( + Container.get(DataSource), + jobRepo, + taskRepo, + ), + taskStore: taskRepo, + executor: { leaseSeconds: 30, lookaheadSeconds: 5, batchSize }, + }); + scheduler.registerTaskHandler(TASK_TYPE, { + execute: async (task) => { + executed.push(task); + }, + }); + return scheduler; + }; + + beforeAll(async () => { + await testDb.init(); + jobRepo = Container.get(ScheduledJobRepository); + taskRepo = Container.get(ScheduledTaskRepository); + createJob = createDueJobFactory(jobRepo, TASK_TYPE, 'job-mm'); + // A small batch so a single claim can't sweep the whole queue: both + // instances must take part to drain it. + mainA = buildMain('main-a', executedA, 5); + mainB = buildMain('main-b', executedB, 5); + }); + + beforeEach(async () => { + executedA.length = 0; + executedB.length = 0; + await testDb.truncate(['ScheduledTask', 'ScheduledJob']); + }); + + afterAll(async () => { + await mainA.stop(); + await mainB.stop(); + await testDb.terminate(); + }); + + it('claims each due occurrence on exactly one main and fires it once', async () => { + const job = await createJob(); + const total = 10; + for (let i = 0; i < total; i++) { + await seedDueTask(taskRepo, TASK_TYPE, job.id, i); + } + + // Both mains claim at the same instant, the contended case. + const [claimedA, claimedB] = await Promise.all([mainA.execute(), mainB.execute()]); + + const idsA = claimedA.map((t) => t.id); + const idsB = claimedB.map((t) => t.id); + + // Exactly-once at claim time: no occurrence is claimed by both mains, and + // together they claim every occurrence. + expect(idsA.filter((id) => idsB.includes(id))).toHaveLength(0); + expect(new Set([...idsA, ...idsB]).size).toBe(total); + // The small batch forced the work to split across both mains. + expect(idsA.length).toBeGreaterThan(0); + expect(idsB.length).toBeGreaterThan(0); + + await retryUntil( + async () => expect(await taskRepo.countBy({ status: 'succeeded' })).toBe(total), + { timeoutMs: 10_000 }, + ); + + // Each occurrence fired once, on the main that claimed it. + expect(executedA.map((t) => t.id).sort()).toEqual([...idsA].sort()); + expect(executedB.map((t) => t.id).sort()).toEqual([...idsB].sort()); + expect(executedA.length + executedB.length).toBe(total); + + const rows = await taskRepo.findBy({ jobId: job.id }); + expect(rows.every((r) => r.status === 'succeeded')).toBe(true); + expect(rows.every((r) => r.claimedBy === 'main-a' || r.claimedBy === 'main-b')).toBe(true); + }, 15_000); + + it('recovers a claim stranded by a dead main and does not run it twice', async () => { + const job = await createJob(); + const past = new Date(Date.now() - 60_000); + // main-a claimed this occurrence, then died: the lease is expired and it + // was never completed. + const stranded = await taskRepo.save( + taskRepo.create({ + jobId: job.id, + taskType: TASK_TYPE, + payload: {}, + scheduledFor: past, + runAt: past, + status: 'running', + claimedBy: 'main-a', + leaseExpiresAt: new Date(Date.now() - 1000), + leaseEpoch: 1, + attempts: 1, + maxAttempts: 3, + }), + ); + + // main-b's reaper reclaims the expired lease back to pending, bumping the + // fencing epoch so main-a can no longer act on it. + expect(await mainB.reap()).toEqual({ reclaimed: 1, deadLettered: 0 }); + + // Reclaim pushes `runAt` out by the retry backoff; fast-forward past it so + // the recovered occurrence is due for the next claim. + await taskRepo.update({ id: stranded.id }, { runAt: new Date(Date.now() - 1000) }); + + // main-b now claims and fires the recovered occurrence. + const claimed = await mainB.execute(); + expect(claimed).toHaveLength(1); + await retryUntil( + async () => { + const task = await taskRepo.findOneByOrFail({ id: stranded.id }); + expect(task.status).toBe('succeeded'); + }, + { timeoutMs: 10_000 }, + ); + + // main-a wakes up late and tries to complete the occurrence it lost. The + // guard fences it: 0 rows, no second completion. + const staleWrite = await taskRepo.completeTask({ + id: stranded.id, + host: 'main-a', + claimedEpoch: 1, + }); + expect(staleWrite).toBe(0); + + // Ran exactly once, on main-b. + expect(executedA).toHaveLength(0); + expect(executedB).toHaveLength(1); + const done = await taskRepo.findOneByOrFail({ id: stranded.id }); + expect(done.status).toBe('succeeded'); + expect(done.claimedBy).toBe('main-b'); + }, 15_000); + + it('dead-letters a claim stranded on its last attempt instead of reclaiming it', async () => { + const job = await createJob({ maxAttempts: 3 }); + const past = new Date(Date.now() - 60_000); + // main-a claimed this occurrence for its final attempt, then died: the + // lease is expired with no attempts left, so the reaper fails it + // terminally instead of retrying. + const doomed = await taskRepo.save( + taskRepo.create({ + jobId: job.id, + taskType: TASK_TYPE, + payload: {}, + scheduledFor: past, + runAt: past, + status: 'running', + claimedBy: 'main-a', + leaseExpiresAt: new Date(Date.now() - 1000), + leaseEpoch: 1, + attempts: 2, + maxAttempts: 3, + }), + ); + + expect(await mainB.reap()).toEqual({ reclaimed: 0, deadLettered: 1 }); + + const done = await taskRepo.findOneByOrFail({ id: doomed.id }); + expect(done.status).toBe('failed'); + expect(done.attempts).toBe(3); + expect(done.errorMessage).toMatch(/lease expired/i); + + // Terminal: a further reap sweep has nothing left to do, and the dead task + // is never claimed or fired by either main. + expect(await mainB.reap()).toEqual({ reclaimed: 0, deadLettered: 0 }); + expect(await mainA.execute()).toEqual([]); + expect(await mainB.execute()).toEqual([]); + expect(executedA).toHaveLength(0); + expect(executedB).toHaveLength(0); + }, 15_000); +}); diff --git a/packages/cli/test/integration/scheduling/scheduler-trigger-handler.test.ts b/packages/cli/test/integration/scheduling/scheduler-trigger-handler.test.ts new file mode 100644 index 00000000000..c97d4e69e96 --- /dev/null +++ b/packages/cli/test/integration/scheduling/scheduler-trigger-handler.test.ts @@ -0,0 +1,216 @@ +import { testDb, createWorkflowWithHistory, setActiveVersion } from '@n8n/backend-test-utils'; +import { + DataSource, + ExecutionRepository, + ScheduledJobRepository, + ScheduledTaskRepository, + WorkflowPublishedVersionRepository, +} from '@n8n/db'; +import { Container } from '@n8n/di'; +import { createScheduler } from '@n8n/scheduler'; +import type { Scheduler, SchedulerPasses } from '@n8n/scheduler'; +import { NodeConnectionTypes } from 'n8n-workflow'; +import { v4 as uuid } from 'uuid'; + +import { buildMaterializerTransaction } from '@/scheduling/durable-scheduler'; +import { SCHEDULE_TRIGGER_TASK_TYPE } from '@/scheduling/schedule-trigger-node/schedule-trigger-task'; +import { ScheduleTriggerTaskHandler } from '@/scheduling/schedule-trigger-node/schedule-trigger-task-handler'; + +import { createOwner } from '../shared/db/users'; +import { retryUntil } from '../shared/retry-until'; +import * as utils from '../shared/utils'; +import { loadNodesFromDist } from '../shared/utils/node-types-data'; + +/** + * The whole schedule-trigger path against a real database and the real engine: + * a due occurrence materialized from a job, claimed and fired by the executor, + * handed to the real {@link ScheduleTriggerTaskHandler}, which turns it into a + * persisted workflow execution. The handler unit suite mocks the execution + * service and the context factory; this proves the seams line up at runtime and + * that the occurrence-keyed redelivery backstop actually fires against the real + * execution dedup index. + */ +describe('schedule-trigger occurrence to a real execution', () => { + let jobRepo: ScheduledJobRepository; + let taskRepo: ScheduledTaskRepository; + let executionRepo: ExecutionRepository; + let scheduler: Scheduler & SchedulerPasses; + let owner: Awaited>; + + beforeAll(async () => { + await testDb.init(); + owner = await createOwner(); + + await utils.initNodeTypes( + loadNodesFromDist(['n8n-nodes-base.scheduleTrigger', 'n8n-nodes-base.noOp']), + ); + await utils.initBinaryDataService(); + + jobRepo = Container.get(ScheduledJobRepository); + taskRepo = Container.get(ScheduledTaskRepository); + executionRepo = Container.get(ExecutionRepository); + + scheduler = createScheduler({ + hostId: 'main-trigger-handler', + materializerTransaction: buildMaterializerTransaction( + Container.get(DataSource), + jobRepo, + taskRepo, + ), + taskStore: taskRepo, + }); + scheduler.registerTaskHandler( + SCHEDULE_TRIGGER_TASK_TYPE, + Container.get(ScheduleTriggerTaskHandler), + ); + }); + + afterAll(async () => { + await scheduler.stop(); + await testDb.terminate(); + }); + + // A published workflow whose Schedule Trigger the handler fires. The published + // version mapping is what `loadPublishedWorkflowData` reads, so all three parts + // (workflow, history, mapping) must exist. + const createPublishedScheduleWorkflow = async () => { + const triggerNodeId = uuid(); + const workflow = await createWorkflowWithHistory( + { + active: true, + nodes: [ + { + id: triggerNodeId, + name: 'ScheduleTrigger', + type: 'n8n-nodes-base.scheduleTrigger', + typeVersion: 1, + position: [0, 0], + parameters: {}, + }, + { + id: uuid(), + name: 'NoOp', + type: 'n8n-nodes-base.noOp', + typeVersion: 1, + position: [200, 0], + parameters: {}, + }, + ], + connections: { + ScheduleTrigger: { + main: [[{ node: 'NoOp', type: NodeConnectionTypes.Main, index: 0 }]], + }, + }, + }, + owner, + ); + await setActiveVersion(workflow.id, workflow.versionId); + await Container.get(WorkflowPublishedVersionRepository).setPublishedVersion( + workflow.id, + workflow.versionId, + ); + return { workflow, triggerNodeId }; + }; + + let seq = 0; + const createScheduleJob = async (workflowId: string, nodeId: string) => + await jobRepo.save( + jobRepo.create({ + name: `schedule-job-${++seq}`, + taskType: SCHEDULE_TRIGGER_TASK_TYPE, + payload: { workflowId, nodeId }, + kind: 'interval', + intervalSeconds: 3600, + enabled: true, + nextRunAt: new Date(Date.now() - 1000), + maxAttempts: 3, + }), + ); + + it('materializes a due occurrence and hands it off to a real execution', async () => { + const { workflow, triggerNodeId } = await createPublishedScheduleWorkflow(); + const job = await createScheduleJob(workflow.id, triggerNodeId); + + await scheduler.materialize(); + await scheduler.execute(); + + await retryUntil( + async () => { + const task = await taskRepo.findOneByOrFail({ jobId: job.id }); + expect(task.status).toBe('succeeded'); + }, + { timeoutMs: 15_000 }, + ); + + const task = await taskRepo.findOneByOrFail({ jobId: job.id }); + const deduplicationKey = `${job.id}:${task.scheduledFor.toISOString()}`; + + await retryUntil( + async () => { + const execution = await executionRepo.findOne({ where: { deduplicationKey } }); + expect(execution?.status).toBe('success'); + }, + { timeoutMs: 15_000 }, + ); + + const execution = await executionRepo.findOne({ where: { deduplicationKey } }); + expect(execution).not.toBeNull(); + expect(execution?.status).toBe('success'); + expect(execution?.mode).toBe('trigger'); + expect(execution?.workflowId).toBe(workflow.id); + }, 30_000); + + it('treats a redelivered occurrence as a no-op via the execution dedup index', async () => { + const { workflow, triggerNodeId } = await createPublishedScheduleWorkflow(); + const job = await createScheduleJob(workflow.id, triggerNodeId); + + await scheduler.materialize(); + await scheduler.execute(); + await retryUntil( + async () => { + const task = await taskRepo.findOneByOrFail({ jobId: job.id }); + expect(task.status).toBe('succeeded'); + }, + { timeoutMs: 15_000 }, + ); + + const task = await taskRepo.findOneByOrFail({ jobId: job.id }); + const deduplicationKey = `${job.id}:${task.scheduledFor.toISOString()}`; + await retryUntil( + async () => { + const execution = await executionRepo.findOne({ where: { deduplicationKey } }); + expect(execution).not.toBeNull(); + }, + { timeoutMs: 15_000 }, + ); + + // Redeliver the same occurrence: the row goes back to pending (the way a + // reaper hands a stalled-but-actually-finished task to another instance), + // so the executor claims and fires it a second time. + await taskRepo.update( + { id: task.id }, + { + status: 'pending', + claimedBy: null, + leaseExpiresAt: null, + startedAt: null, + finishedAt: null, + runAt: new Date(Date.now() - 1000), + }, + ); + + await scheduler.execute(); + await retryUntil( + async () => { + const redelivered = await taskRepo.findOneByOrFail({ id: task.id }); + expect(redelivered.status).toBe('succeeded'); + }, + { timeoutMs: 15_000 }, + ); + + // The dedup index rejected the second handoff, so there is still exactly one + // execution for the occurrence. + const executions = await executionRepo.find({ where: { deduplicationKey } }); + expect(executions).toHaveLength(1); + }, 30_000); +}); diff --git a/packages/cli/test/integration/scheduling/shared/job-factory.ts b/packages/cli/test/integration/scheduling/shared/job-factory.ts new file mode 100644 index 00000000000..8bd88e0d8f3 --- /dev/null +++ b/packages/cli/test/integration/scheduling/shared/job-factory.ts @@ -0,0 +1,51 @@ +import type { ScheduledJob, ScheduledJobRepository, ScheduledTaskRepository } from '@n8n/db'; + +/** A due, enabled interval job. Each call gets a distinct sequential name. */ +export const createDueJobFactory = ( + jobRepo: ScheduledJobRepository, + taskType: string, + namePrefix: string, + now = Date.now, +) => { + let seq = 0; + return async (overrides: Partial = {}) => + await jobRepo.save( + jobRepo.create({ + name: `${namePrefix}-${++seq}`, + taskType, + payload: {}, + kind: 'interval', + intervalSeconds: 3600, + enabled: true, + nextRunAt: new Date(now() - 1000), + maxAttempts: 3, + ...overrides, + }), + ); +}; + +/** + * A pending, already-due occurrence, seeded directly so a test can drive the + * claim/fire path without depending on a materialize pass. `index` offsets + * `scheduledFor` so multiple occurrences of the same job get distinct + * identities (the unique key is `(jobId, scheduledFor)`). + */ +export const seedDueTask = async ( + taskRepo: ScheduledTaskRepository, + taskType: string, + jobId: number, + index = 0, +) => { + const past = new Date(Date.now() - 1000 - index * 1000); + return await taskRepo.save( + taskRepo.create({ + jobId, + taskType, + payload: {}, + scheduledFor: past, + runAt: past, + status: 'pending', + maxAttempts: 3, + }), + ); +}; diff --git a/packages/cli/test/migration/1784000000045-add-recurring-cron-schedule-kind.test.ts b/packages/cli/test/migration/1784000000045-add-recurring-cron-schedule-kind.test.ts new file mode 100644 index 00000000000..1bcd6fc8e74 --- /dev/null +++ b/packages/cli/test/migration/1784000000045-add-recurring-cron-schedule-kind.test.ts @@ -0,0 +1,306 @@ +import { + createTestMigrationContext, + initDbUpToMigration, + runSingleMigration, + undoLastSingleMigration, + type TestMigrationContext, +} from '@n8n/backend-test-utils'; +import { DbConnection } from '@n8n/db'; +import { Container } from '@n8n/di'; +import { DataSource } from '@n8n/typeorm'; +import { randomUUID } from 'node:crypto'; + +const MIGRATION_NAME = 'AddRecurringCronScheduleKind1784000000045'; + +describe('AddRecurringCronScheduleKind Migration', () => { + let dataSource: DataSource; + let seededJobId: number; + + async function insertJob( + context: TestMigrationContext, + values: Record = {}, + ): Promise { + const table = context.escape.tableName('scheduled_job'); + const now = new Date(); + const name = `job-${randomUUID()}`; + const row: Record = { + name, + taskType: 'scheduleTrigger', + kind: 'cron', + cronExpression: '0 * * * * *', + createdAt: now, + updatedAt: now, + ...values, + }; + const columns = Object.keys(row); + await context.runQuery( + `INSERT INTO ${table} (${columns.map((c) => `"${c}"`).join(', ')}) + VALUES (${columns.map((c) => `:${c}`).join(', ')})`, + row, + ); + const [inserted] = await context.runQuery>( + `SELECT "id" FROM ${table} WHERE "name" = :name`, + { name }, + ); + return inserted.id; + } + + async function getColumnNames(context: TestMigrationContext): Promise { + if (context.isSqlite) { + const rows = await context.runQuery>( + `PRAGMA table_info(${context.escape.tableName('scheduled_job')})`, + ); + return rows.map((row) => row.name); + } + const rows = await context.runQuery>( + 'SELECT column_name FROM information_schema.columns WHERE table_name = :tableName', + { tableName: `${context.tablePrefix}scheduled_job` }, + ); + return rows.map((row) => row.column_name); + } + + async function insertTask(context: TestMigrationContext, jobId: number): Promise { + const scheduledFor = new Date('2026-02-02T02:02:02.000Z'); + await context.runQuery( + `INSERT INTO ${context.escape.tableName('scheduled_task')} ("jobId", "taskType", "scheduledFor", "runAt", "createdAt") + VALUES (:jobId, :taskType, :scheduledFor, :runAt, :createdAt)`, + { + jobId, + taskType: 'scheduleTrigger', + scheduledFor, + runAt: scheduledFor, + createdAt: new Date(), + }, + ); + } + + beforeAll(async () => { + const dbConnection = Container.get(DbConnection); + await dbConnection.init(); + dataSource = Container.get(DataSource); + + let context = createTestMigrationContext(dataSource); + await context.queryRunner.clearDatabase(); + await context.queryRunner.release(); + + await initDbUpToMigration(MIGRATION_NAME); + + // Seed a job with a queued occurrence in the pre-migration schema, to + // prove the SQLite table recreation does not cascade them away. + context = createTestMigrationContext(dataSource); + seededJobId = await insertJob(context); + await insertTask(context, seededJobId); + await context.queryRunner.release(); + + await runSingleMigration(MIGRATION_NAME); + }); + + afterAll(async () => { + await Container.get(DbConnection).close(); + }); + + it('keeps pre-existing jobs and their queued occurrences', async () => { + const context = createTestMigrationContext(dataSource); + try { + const [job] = await context.runQuery< + Array<{ kind: string; recurrenceUnit: string | null; recurrenceSize: number | null }> + >( + `SELECT "kind", "recurrenceUnit", "recurrenceSize" FROM ${context.escape.tableName('scheduled_job')} WHERE "id" = :id`, + { id: seededJobId }, + ); + expect(job).toMatchObject({ kind: 'cron', recurrenceUnit: null, recurrenceSize: null }); + + const tasks = await context.runQuery( + `SELECT "id" FROM ${context.escape.tableName('scheduled_task')} WHERE "jobId" = :jobId`, + { jobId: seededJobId }, + ); + expect(tasks).toHaveLength(1); + } finally { + await context.queryRunner.release(); + } + }); + + it('accepts a recurring_cron job carrying its anchor and gate', async () => { + const context = createTestMigrationContext(dataSource); + try { + const jobId = await insertJob(context, { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }); + const [job] = await context.runQuery< + Array<{ recurrenceUnit: string; recurrenceSize: number }> + >( + `SELECT "recurrenceUnit", "recurrenceSize" FROM ${context.escape.tableName('scheduled_job')} WHERE "id" = :id`, + { id: jobId }, + ); + expect(job.recurrenceUnit).toBe('weeks'); + expect(Number(job.recurrenceSize)).toBe(3); + } finally { + await context.queryRunner.release(); + } + }); + + it('keeps the pre-existing per-kind presence checks intact', async () => { + const context = createTestMigrationContext(dataSource); + try { + await expect(insertJob(context, { kind: 'cron', cronExpression: null })).rejects.toThrow(); + await expect( + insertJob(context, { kind: 'interval', cronExpression: null }), + ).rejects.toThrow(); + } finally { + await context.queryRunner.release(); + } + }); + + it('still rejects an out-of-set kind', async () => { + const context = createTestMigrationContext(dataSource); + try { + await expect(insertJob(context, { kind: 'lunar' })).rejects.toThrow(); + } finally { + await context.queryRunner.release(); + } + }); + + it('rejects a recurring_cron job missing its gate columns', async () => { + const context = createTestMigrationContext(dataSource); + try { + await expect(insertJob(context, { kind: 'recurring_cron' })).rejects.toThrow(); + await expect( + insertJob(context, { kind: 'recurring_cron', recurrenceUnit: 'weeks' }), + ).rejects.toThrow(); + await expect( + insertJob(context, { kind: 'recurring_cron', recurrenceSize: 3 }), + ).rejects.toThrow(); + } finally { + await context.queryRunner.release(); + } + }); + + it('rejects a recurring_cron job missing its anchor cron expression', async () => { + const context = createTestMigrationContext(dataSource); + try { + await expect( + insertJob(context, { + kind: 'recurring_cron', + cronExpression: null, + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }), + ).rejects.toThrow(); + } finally { + await context.queryRunner.release(); + } + }); + + it('rejects an out-of-set recurrence unit on any row', async () => { + const context = createTestMigrationContext(dataSource); + try { + await expect( + insertJob(context, { + kind: 'recurring_cron', + recurrenceUnit: 'fortnights', + recurrenceSize: 3, + }), + ).rejects.toThrow(); + } finally { + await context.queryRunner.release(); + } + }); + + it('rejects a recurrence size below 2 on any row', async () => { + const context = createTestMigrationContext(dataSource); + try { + await expect( + insertJob(context, { + kind: 'recurring_cron', + recurrenceUnit: 'weeks', + recurrenceSize: 1, + }), + ).rejects.toThrow(); + } finally { + await context.queryRunner.release(); + } + }); + + it('keeps the job -> task CASCADE intact after the table recreation', async () => { + const context = createTestMigrationContext(dataSource); + try { + const jobId = await insertJob(context); + await insertTask(context, jobId); + + await context.runQuery( + `DELETE FROM ${context.escape.tableName('scheduled_job')} WHERE "id" = :id`, + { id: jobId }, + ); + + const tasks = await context.runQuery( + `SELECT "id" FROM ${context.escape.tableName('scheduled_task')} WHERE "jobId" = :jobId`, + { jobId }, + ); + expect(tasks).toHaveLength(0); + } finally { + await context.queryRunner.release(); + } + }); + + // Declared last: the revert would undo the schema the tests above assert on. + describe('down', () => { + it('restores the pre-migration schema, keeping other kinds and dropping recurring_cron rows', async () => { + let context = createTestMigrationContext(dataSource); + const recurringJobId = await insertJob(context, { + kind: 'recurring_cron', + cronExpression: '0 0 9 * * 1', + recurrenceUnit: 'weeks', + recurrenceSize: 3, + }); + await insertTask(context, recurringJobId); + await context.queryRunner.release(); + + await undoLastSingleMigration(); + + context = createTestMigrationContext(dataSource); + try { + const jobTable = context.escape.tableName('scheduled_job'); + const taskTable = context.escape.tableName('scheduled_task'); + + // The seeded cron job and its queued occurrence survive the revert. + const [job] = await context.runQuery>( + `SELECT "kind" FROM ${jobTable} WHERE "id" = :id`, + { id: seededJobId }, + ); + expect(job.kind).toBe('cron'); + const seededTasks = await context.runQuery( + `SELECT "id" FROM ${taskTable} WHERE "jobId" = :jobId`, + { jobId: seededJobId }, + ); + expect(seededTasks).toHaveLength(1); + + // The recurring_cron job and its occurrence are gone. + const recurringJobs = await context.runQuery( + `SELECT "id" FROM ${jobTable} WHERE "id" = :id`, + { id: recurringJobId }, + ); + expect(recurringJobs).toHaveLength(0); + const recurringTasks = await context.runQuery( + `SELECT "id" FROM ${taskTable} WHERE "jobId" = :jobId`, + { jobId: recurringJobId }, + ); + expect(recurringTasks).toHaveLength(0); + + // The kind CHECK is narrowed again and the recurrence columns are gone. + await expect(insertJob(context, { kind: 'recurring_cron' })).rejects.toThrow(); + const columns = await getColumnNames(context); + expect(columns).toContain('kind'); + expect(columns).not.toContain('recurrenceUnit'); + expect(columns).not.toContain('recurrenceSize'); + } finally { + await context.queryRunner.release(); + } + + // The revert leaves a state up() applies cleanly to again. + await runSingleMigration(MIGRATION_NAME); + }); + }); +}); diff --git a/packages/core/src/binary-data/index.ts b/packages/core/src/binary-data/index.ts index 29dce4bb4a8..cd37a0abe0b 100644 --- a/packages/core/src/binary-data/index.ts +++ b/packages/core/src/binary-data/index.ts @@ -1,4 +1,7 @@ export * from './binary-data.service'; export { BinaryDataConfig } from './binary-data.config'; export type * from './types'; +// type-only: the runtime classes stay behind dynamic imports to avoid eagerly loading the S3/Azure SDKs +export type { AzureBlobService } from './azure-blob/azure-blob.service.ee'; +export type { ObjectStoreService } from './object-store/object-store.service.ee'; export { isStoredMode as isValidNonDefaultMode, FileLocation } from './utils'; diff --git a/packages/core/src/execution-engine/__tests__/eval-mock-helpers.test.ts b/packages/core/src/execution-engine/__tests__/eval-mock-helpers.test.ts index ad6204b09db..ff077e991e6 100644 --- a/packages/core/src/execution-engine/__tests__/eval-mock-helpers.test.ts +++ b/packages/core/src/execution-engine/__tests__/eval-mock-helpers.test.ts @@ -1,4 +1,5 @@ import type { IHttpRequestOptions, INode, INodeProperties, IRequestOptions } from 'n8n-workflow'; +import { createPrivateKey, createSign } from 'node:crypto'; import { Readable } from 'node:stream'; import { mock } from 'vitest-mock-extended'; @@ -184,6 +185,22 @@ describe('eval-mock-helpers', () => { expect(result.privateKey).toEqual(expect.stringContaining('END RSA PRIVATE KEY')); }); + it('should include a privateKey that parses and RS256-signs', () => { + // PEM markers alone are not enough: service-account nodes jwt.sign() + // with this key before any HTTP request, so it must be a real key. + const result = buildEvalMockCredentials([]); + + const key = createPrivateKey(String(result.privateKey)); + expect(key.asymmetricKeyType).toBe('rsa'); + const signer = createSign('RSA-SHA256'); + signer.update('eval-mock'); + expect(signer.sign(key).length).toBeGreaterThan(0); + }); + + it('should reuse the same generated privateKey across calls', () => { + expect(buildEvalMockCredentials([]).privateKey).toBe(buildEvalMockCredentials([]).privateKey); + }); + it('should return oauthTokenData and privateKey even with empty properties array', () => { const result = buildEvalMockCredentials([]); diff --git a/packages/core/src/execution-engine/eval-mock-helpers.ts b/packages/core/src/execution-engine/eval-mock-helpers.ts index 15aa922f98a..4cb83e4f181 100644 --- a/packages/core/src/execution-engine/eval-mock-helpers.ts +++ b/packages/core/src/execution-engine/eval-mock-helpers.ts @@ -8,6 +8,7 @@ */ import type { IHttpRequestOptions, INode, INodeProperties, IRequestOptions } from 'n8n-workflow'; +import { generateKeyPairSync } from 'node:crypto'; import { Readable } from 'node:stream'; import type { EvalLlmMockHandler, EvalMockHttpResponse } from './index'; @@ -16,28 +17,20 @@ import type { EvalLlmMockHandler, EvalMockHttpResponse } from './index'; // Mock credentials // --------------------------------------------------------------------------- -// NOT A SECRET — throwaway RSA key used only in eval mode to satisfy OAuth -// signing requirements so HTTP requests reach the interception layer. This key -// has no access to any real service. It never leaves the process. The mock -// credential system needs a structurally valid key for jwt.sign() to succeed; -// without it, OAuth nodes crash before the HTTP interceptor can capture the request. -// Generated once offline via: openssl genrsa 2048 -// prettier-ignore -const EVAL_MOCK_RSA_KEY = - '-----BEGIN RSA PRIVATE KEY-----\n' + - 'MIIEpAIBAAKCAQEA0Z3VS5JJcds3xfn/ygWep4PAtGoRBh2hHiwxBgNlHOVMSMk7\n' + - 'R1ueXBOwqmLMSsGCnl1kV2QLFG6mnMBOxJBbXGLuzJsFMDPCnZGfnJBfcCnxGYCE\n' + - 'c0bO3GN/S4Lk1eTarfEDQC/k0GFyyGPMQ5rnmZxSOqX1MtVCoB5FEGnLJEMqNFDt\n' + - 'tJmYMmzxR9Lgd7bVMOYG8xDT/PYWw28GdgNZhAIPqFVHqMjUFWC76Q8rA6OF4OU0\n' + - 'S0IAejdh3LGAzMIjCMfmSBn+VaRzcBVoKBpZgN0a1YjqFCr8LpqpMIxLfm+7SIdB\n' + - 'Z6YWxEeOwKoiMIB9drmHO2lNzSTmblOKMPmqJwIDAQABAoIBAC5RgZ+hBx7xHNaM\n' + - 'pPgwGMnCd3KE2M8RMBx1bfOUEODjQx7E3fOtqqa4HNqVGz9HBfVzL4JBpYCknI1X\n' + - 'p9Dxd6hf0Ht5BPMWxPBqKGhqCSxIxwvGLShDANGKbjilSTkmhGBDrGj3U0DRXKxmU\n' + - 'i6jDP0VJwy9ZmkBqxJvYEhW0m+fQd0JJKQ5HRk2RNXoP+GBmZsBeIs4uAt14i6n4\n' + - 'kfYCR9CMSBC6DlNWxqGSAWzPrKAMPMiL5GJWGhy+A4DEXPewYQ6LpbD4xXEJN2v7\n' + - 'Tae0YYjM/B7oy3JV5UsMaQKBgQDjYKMcn8io6Ei7RDYH8sMpKLejIEjE7ksMvYCk\n' + - '1RGx/w0Q3n5FVjMP3oG3UcUx9EB7GD8NMo74J/lEJ2UsBnIP3ggOb3AE+pWHNE0K\n' + - '-----END RSA PRIVATE KEY-----'; +// NOT A SECRET — throwaway RSA key used only in eval mode to satisfy local +// JWT/OAuth signing (e.g. Google service-account nodes call jwt.sign with +// credentials.privateKey before any HTTP request) so requests reach the +// interception layer. Generated per process rather than checked in: a static +// PEM here rotted into an unparseable key, and every service-account node then +// crashed with "secretOrPrivateKey must be an asymmetric key when using RS256" +// before the interceptor could capture the request. +let evalMockRsaKey: string | undefined; +function getEvalMockRsaKey(): string { + evalMockRsaKey ??= generateKeyPairSync('rsa', { modulusLength: 2048 }) + .privateKey.export({ type: 'pkcs1', format: 'pem' }) + .toString(); + return evalMockRsaKey; +} // Name patterns that indicate a property holds a secret value (case-insensitive). const SECRET_NAME_PATTERNS = @@ -105,7 +98,7 @@ export function buildEvalMockCredentials(properties: INodeProperties[]): Record< token_type: 'Bearer', refresh_token: 'eval-mock-refresh-token', }; - mockCredentials.privateKey = EVAL_MOCK_RSA_KEY; + mockCredentials.privateKey = getEvalMockRsaKey(); return mockCredentials; } diff --git a/packages/extensions/insights/package.json b/packages/extensions/insights/package.json index 25342f9a4b1..2e5115df4ae 100644 --- a/packages/extensions/insights/package.json +++ b/packages/extensions/insights/package.json @@ -38,7 +38,7 @@ "typecheck": "vue-tsc --noEmit", "build:backend": "tsdown", "build:frontend": "vite build", - "build": "pnpm cleanup && pnpm run \"/^build:.*/\"", + "build": "pnpm cleanup && pnpm run \"/^build:(backend|frontend)$/\"", "build:unchecked": "pnpm cleanup && pnpm run build:backend && pnpm run build:frontend", "preview": "vite preview" }, diff --git a/packages/frontend/@n8n/design-system/src/components/N8nActionDropdown/ActionDropdown.vue b/packages/frontend/@n8n/design-system/src/components/N8nActionDropdown/ActionDropdown.vue index e5bf61149bc..24df26039f0 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nActionDropdown/ActionDropdown.vue +++ b/packages/frontend/@n8n/design-system/src/components/N8nActionDropdown/ActionDropdown.vue @@ -200,7 +200,7 @@ const getItemClasses = (item: ActionDropdownItem): Record => font-size: var(--font-size--2xs); line-height: 18px; padding: var(--spacing--3xs) var(--spacing--2xs); - + min-width: fit-content; &.disabled { .shortcut { opacity: 0.3; diff --git a/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.test.ts b/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.test.ts index 8a383312204..b06ccbd0c16 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.test.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.test.ts @@ -162,6 +162,29 @@ describe('N8nDataTableServer', () => { expect(queryByTestId('pagination')).not.toBeInTheDocument(); }); + it('should sync external selection model changes into row checkboxes', async () => { + const selectionItems = items.slice(0, 3); + const { container, emitted, rerender } = render(N8nDataTableServer, { + //@ts-expect-error testing-library errors due to header generics + props: { items: selectionItems, headers, itemsLength: 3, showSelect: true, selection: [] }, + }); + + const rowCheckboxes = container.querySelectorAll('tbody [role="checkbox"]'); + expect(rowCheckboxes.length).toBe(3); + + await userEvent.click(rowCheckboxes[0]); + + expect(emitted('update:selection').at(-1)).toEqual([[selectionItems[0].id]]); + expect(rowCheckboxes[0]).toHaveAttribute('aria-checked', 'true'); + + // Clearing the model from the outside must uncheck the rows + await rerender({ selection: [] }); + + await waitFor(() => { + expect(rowCheckboxes[0]).toHaveAttribute('aria-checked', 'false'); + }); + }); + it('should adjust page to highest available when page size changes and current page exceeds maximum', async () => { const { emitted, findAllByRole } = renderComponent({ props: { items, headers, itemsLength: 106, itemsPerPage: 50, page: 2 }, diff --git a/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.vue b/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.vue index e3847b4c385..ce4d34b5357 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.vue +++ b/packages/frontend/@n8n/design-system/src/components/N8nDataTableServer/N8nDataTableServer.vue @@ -41,7 +41,7 @@ import { createColumnHelper, FlexRender, getCoreRowModel, useVueTable } from '@t import { useThrottleFn } from '@vueuse/core'; import { ElOption, ElSelect, ElSkeletonItem } from 'element-plus'; import get from 'lodash/get'; -import { computed, h, ref, shallowRef, useSlots, watch } from 'vue'; +import { computed, h, shallowRef, useSlots, watch } from 'vue'; import N8nCheckbox from '@n8n/design-system/v2/components/Checkbox/Checkbox.vue'; @@ -296,21 +296,21 @@ function getRowId(originalRow: T, index: number, parent?: Row): string { } function handleRowSelectionChange(updaterOrValue: Updater) { - if (typeof updaterOrValue === 'function') { - rowSelection.value = updaterOrValue(rowSelection.value); - } else { - rowSelection.value = updaterOrValue; - } + const newValue = + typeof updaterOrValue === 'function' ? updaterOrValue(rowSelection.value) : updaterOrValue; if (props.returnObject) { - selection.value = Object.keys(rowSelection.value).map((id) => table.getRow(id).original); + selection.value = Object.keys(newValue).map((id) => table.getRow(id).original); } else { - selection.value = Object.keys(rowSelection.value); + selection.value = Object.keys(newValue); } } const selection = defineModel('selection'); -const rowSelection = ref( + +// Derived from the selection model so external writes (e.g. a parent +// clearing it) reach the row checkboxes +const rowSelection = computed(() => (selection.value ?? []).reduce((acc, item, index) => { const key = typeof item === 'string' ? item : getRowId(item, index); acc[key] = true; diff --git a/packages/frontend/@n8n/design-system/src/components/N8nFormInput/FormInput.stories.ts b/packages/frontend/@n8n/design-system/src/components/N8nFormInput/FormInput.stories.ts index e85b6d6785a..517f1cb0e37 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nFormInput/FormInput.stories.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nFormInput/FormInput.stories.ts @@ -118,6 +118,36 @@ SchemaDriven.args = { ], }; +export const SchemaDrivenSmallTags = SchemaDrivenTemplate.bind({}); +SchemaDrivenSmallTags.args = { + columnView: true, + tagSize: 'small', + inputs: [ + { + name: 'automationGoal', + properties: { + type: 'multi-select', + label: 'What are you looking to automate?', + options: [ + { + label: 'Marketing', + value: 'marketing', + }, + { + label: 'Sales', + value: 'sales', + }, + { + label: 'Other', + value: 'other', + }, + ], + }, + initialValue: ['marketing', 'other'], + }, + ], +}; + const FramedFormTemplate: StoryFn = (args) => ({ setup: () => ({ args }), components: { diff --git a/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.test.ts b/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.test.ts index 99c13657ed4..2e7369cd6cd 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.test.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.test.ts @@ -4,6 +4,7 @@ import { describe, it, expect } from 'vitest'; import type { IFormInput } from '@n8n/design-system/types'; import FormInputs from './FormInputs.vue'; +import N8nFormInput from '../N8nFormInput'; describe('FormInputs', () => { describe('dangling field removal', () => { @@ -438,4 +439,55 @@ describe('FormInputs', () => { expect(result.field1.metadata?.role).toBe('admin'); }); }); + + describe('tag size', () => { + const multiSelectInput: IFormInput = { + name: 'skills', + properties: { + type: 'multi-select', + label: 'Skills', + options: [ + { label: 'One', value: 'one' }, + { label: 'Two', value: 'two' }, + ], + }, + }; + + it('should pass tagSize down to each form input', () => { + const wrapper = mount(FormInputs, { + props: { + inputs: [multiSelectInput], + tagSize: 'small', + }, + }); + + expect(wrapper.findComponent(N8nFormInput).props('tagSize')).toBe('small'); + }); + + it('should let a per-field tagSize override the form-level one', () => { + const wrapper = mount(FormInputs, { + props: { + inputs: [ + { + ...multiSelectInput, + properties: { ...multiSelectInput.properties, tagSize: 'medium' }, + }, + ], + tagSize: 'small', + }, + }); + + expect(wrapper.findComponent(N8nFormInput).props('tagSize')).toBe('medium'); + }); + + it('should keep the form input default when no tagSize is set', () => { + const wrapper = mount(FormInputs, { + props: { + inputs: [multiSelectInput], + }, + }); + + expect(wrapper.findComponent(N8nFormInput).props('tagSize')).toBe('large'); + }); + }); }); diff --git a/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.vue b/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.vue index 28419564c6b..f741fe5f264 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.vue +++ b/packages/frontend/@n8n/design-system/src/components/N8nFormInputs/FormInputs.vue @@ -14,6 +14,7 @@ export interface FormInputsProps { columnView?: boolean; verticalSpacing?: '' | 'xs' | 's' | 'm' | 'l' | 'xl'; teleported?: boolean; + tagSize?: 'small' | 'medium' | 'large'; } const props = withDefaults(defineProps(), { @@ -170,6 +171,7 @@ onMounted(() => { v-bind="input.properties" :name="input.name" :label="input.properties.label || ''" + :tag-size="input.properties.tagSize ?? tagSize" :model-value="values[input.name]" :data-test-id="input.name" :show-validation-warnings="showValidationWarnings" diff --git a/packages/frontend/@n8n/design-system/src/components/N8nIcon/Icon.test.ts b/packages/frontend/@n8n/design-system/src/components/N8nIcon/Icon.test.ts index 0d5f8146253..e2ae8883b2d 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nIcon/Icon.test.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nIcon/Icon.test.ts @@ -2,7 +2,7 @@ import { render, waitFor } from '@testing-library/vue'; import { vi } from 'vitest'; import Icon from './Icon.vue'; -import { deprecatedIconSet, type IconName } from './icons'; +import { deprecatedIconSet, isSupportedIconName, type IconName } from './icons'; import { IconBodyLoaderKey } from '../../composables/useIconBodyLoader'; const loaderStub = vi.fn(async (iconName: string) => @@ -85,3 +85,17 @@ describe('Icon', () => { expect(loaderStub).toHaveBeenCalledWith('app-window-mac'); }); }); + +describe('isSupportedIconName', () => { + it('returns true for supported icon names', () => { + expect(isSupportedIconName('check')).toBe(true); + expect(isSupportedIconName(Object.keys(deprecatedIconSet)[0])).toBe(true); + expect(isSupportedIconName('node:ftp')).toBe(true); + }); + + it('returns false for unsupported icon names', () => { + expect(isSupportedIconName()).toBe(false); + expect(isSupportedIconName('not-a-real-icon')).toBe(false); + expect(isSupportedIconName('node:not-a-real-node-icon')).toBe(false); + }); +}); diff --git a/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts b/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts index 1c40b54a6df..647d63dd237 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts @@ -39,7 +39,7 @@ import Toolbox from './custom/toolbox.svg'; import Triangle from './custom/triangle.svg'; import VectorSquare from './custom/vector-square.svg'; import Webhook from './custom/webhook.svg'; -import type { NodeIconName } from './node-icons'; +import { nodeIconNames, type NodeIconName } from './node-icon-names'; import IconLucideAlignRight from '~icons/lucide/align-right'; import IconLucideArchive from '~icons/lucide/archive'; @@ -780,19 +780,18 @@ export const updatedIconSet = { export type IconName = keyof typeof updatedIconSet; // only new icon names should be used moving forward -export { type NodeIconName } from './node-icons'; +export { type NodeIconName } from './node-icon-names'; const NODE_ICON_PREFIX = 'node:'; +const nodeIconNameSet = new Set(nodeIconNames); export function isNodeIcon(iconName?: string): iconName is NodeIconName { return typeof iconName === 'string' && iconName.startsWith(NODE_ICON_PREFIX); } -export function isSupportedIconName(iconName?: string): iconName is IconName { +export function isSupportedIconName(iconName?: string): iconName is IconName | NodeIconName { return ( typeof iconName === 'string' && - (iconName in updatedIconSet || - iconName in deprecatedIconSet || - iconName.startsWith(NODE_ICON_PREFIX)) + (iconName in updatedIconSet || iconName in deprecatedIconSet || nodeIconNameSet.has(iconName)) ); } diff --git a/packages/frontend/@n8n/design-system/src/components/N8nIcon/index.ts b/packages/frontend/@n8n/design-system/src/components/N8nIcon/index.ts index 3e3195fdb51..81b7fdf097d 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nIcon/index.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nIcon/index.ts @@ -1,4 +1,10 @@ import N8nIcon from './Icon.vue'; export default N8nIcon; -export { type IconName, type NodeIconName, isNodeIcon, updatedIconSet } from './icons'; +export { + type IconName, + type NodeIconName, + isNodeIcon, + isSupportedIconName, + updatedIconSet, +} from './icons'; diff --git a/packages/frontend/@n8n/design-system/src/components/N8nIcon/node-icon-names.ts b/packages/frontend/@n8n/design-system/src/components/N8nIcon/node-icon-names.ts new file mode 100644 index 00000000000..729250296d5 --- /dev/null +++ b/packages/frontend/@n8n/design-system/src/components/N8nIcon/node-icon-names.ts @@ -0,0 +1,84 @@ +export const nodeIconNames = [ + 'node:aggregate', + 'node:ai-agent', + 'node:ai-transform', + 'node:basic-llm-chain', + 'node:calculator', + 'node:call-n8n-sub-workflow-tool', + 'node:character-text-splitter', + 'node:chat-memory-manager', + 'node:chat-trigger', + 'node:code', + 'node:compare-datasets', + 'node:compression', + 'node:contextual-compression-retriever', + 'node:convert-to-file', + 'node:crypto', + 'node:data-table', + 'node:date-and-time', + 'node:default-data-loader', + 'node:edit-fields', + 'node:edit-image', + 'node:email-trigger', + 'node:error-trigger', + 'node:execute-command', + 'node:execute-sub-workflow', + 'node:execution-data', + 'node:extract-from-file', + 'node:filter', + 'node:form-trigger', + 'node:ftp', + 'node:guardrails', + 'node:html', + 'node:http-request', + 'node:if', + 'node:information-extractor', + 'node:item-list-output-parser', + 'node:limit', + 'node:local-file-trigger', + 'node:loop-over-items', + 'node:manual-trigger', + 'node:markdown', + 'node:merge', + 'node:model-selector', + 'node:multiquery-retriever', + 'node:n8n', + 'node:n8n-trigger', + 'node:no-operation', + 'node:question-and-answer-chain', + 'node:read-write-files-from-disk', + 'node:recursive-character-text-splitter', + 'node:remove-duplicates', + 'node:rename-keys', + 'node:respond-to-webhook', + 'node:rss-feed-trigger', + 'node:rss-read', + 'node:schedule-trigger', + 'node:send-mail', + 'node:sentiment-analysis', + 'node:simple-memory', + 'node:simple-vector-store', + 'node:sort', + 'node:split-out', + 'node:sse-trigger', + 'node:ssh', + 'node:stop-and-error', + 'node:structured-output-parser', + 'node:sub-workflow-trigger', + 'node:summarization-chain', + 'node:summarize', + 'node:switch', + 'node:text-classifier', + 'node:think-tool', + 'node:token-splitter', + 'node:totp', + 'node:track-time-saved', + 'node:vector-store-question-answer-tool', + 'node:vector-store-retriever', + 'node:wait', + 'node:webhook', + 'node:workflow-retriever', + 'node:xml', +] as const; + +export type NodeIconName = (typeof nodeIconNames)[number]; diff --git a/packages/frontend/@n8n/design-system/src/components/N8nIcon/node-icons.ts b/packages/frontend/@n8n/design-system/src/components/N8nIcon/node-icons.ts index 3386bf16732..f0765fb8da9 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nIcon/node-icons.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nIcon/node-icons.ts @@ -1,3 +1,4 @@ +import type { NodeIconName } from './node-icon-names'; import NodeAggregate from './nodes/aggregate.svg'; import NodeAiAgent from './nodes/ai-agent.svg'; import NodeAiTransform from './nodes/ai-transform.svg'; @@ -160,6 +161,4 @@ export const nodeIconSet = { 'node:webhook': NodeWebhook, 'node:workflow-retriever': NodeWorkflowRetriever, 'node:xml': NodeXml, -} as const; - -export type NodeIconName = keyof typeof nodeIconSet; +} as const satisfies Record; diff --git a/packages/frontend/@n8n/design-system/src/components/N8nMenuItem/MenuItem.vue b/packages/frontend/@n8n/design-system/src/components/N8nMenuItem/MenuItem.vue index a3d1d93ac4d..028bdc29bd0 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nMenuItem/MenuItem.vue +++ b/packages/frontend/@n8n/design-system/src/components/N8nMenuItem/MenuItem.vue @@ -161,6 +161,9 @@ const tooltipPlacement = computed(() => { display: flex; align-items: center; justify-content: center; + // Match the height of items with icons (24px icon + 2 * 4px padding), so + // icon-less items (e.g. modal sidebar tabs) don't render shorter. + min-height: var(--spacing--xl); padding: var(--spacing--4xs); gap: var(--spacing--4xs); cursor: pointer; diff --git a/packages/frontend/@n8n/design-system/src/components/N8nNodeIcon/IconContent.vue b/packages/frontend/@n8n/design-system/src/components/N8nNodeIcon/IconContent.vue index 05977f0d22b..185de4acda6 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nNodeIcon/IconContent.vue +++ b/packages/frontend/@n8n/design-system/src/components/N8nNodeIcon/IconContent.vue @@ -3,7 +3,7 @@ import { computed } from 'vue'; import N8nNodeIcon from '.'; import N8nIcon from '../N8nIcon'; -import type { IconName } from '../N8nIcon/icons'; +import type { IconName, NodeIconName } from '../N8nIcon/icons'; import { isSupportedIconName } from '../N8nIcon/icons'; import N8nTooltip from '../N8nTooltip'; @@ -51,7 +51,7 @@ const badgeStyleData = computed((): Record => { }; }); -const supportedIconName = computed((): IconName | undefined => { +const supportedIconName = computed((): IconName | NodeIconName | undefined => { return isSupportedIconName(props.name) ? props.name : undefined; }); diff --git a/packages/frontend/@n8n/i18n/src/locales/en.json b/packages/frontend/@n8n/i18n/src/locales/en.json index 37b237de2f6..8ba4e4bbc62 100644 --- a/packages/frontend/@n8n/i18n/src/locales/en.json +++ b/packages/frontend/@n8n/i18n/src/locales/en.json @@ -2537,6 +2537,7 @@ "parameterInputList.callout.dismiss.confirm.text": "Do you want to permanently hide this?", "parameterInputList.callout.dismiss.confirm.confirmButtonText": "Confirm", "parameterInputList.callout.dismiss.confirm.cancelButtonText": "Cancel", + "parameterInputList.autoRequiresChatTriggerDescription": "Available when connected to a Chat Trigger node.", "parameterOverride.overridePanelText": "Defined automatically by the model", "parameterOverride.applyOverrideButtonTooltip": "Let the model define this parameter", "parameterOverride.descriptionTooltip": "Explain to the LLM how it should generate this value, a good, specific description would allow LLMs to produce expected results much more often", @@ -3172,6 +3173,8 @@ "settings.mcp.connectWorkflows.input.placeholder": "Search workflows to connect", "settings.mcp.connectWorkflows.confirm.label": "Enable", "settings.mcp.connectWorkflows.error": "Error fetching available workflows", + "settings.mcp.workflows.enableAccess.success.title": "MCP access enabled for {count} workflow | MCP access enabled for {count} workflows", + "settings.mcp.workflows.removeAccess.success.title": "MCP access removed for {count} workflow | MCP access removed for {count} workflows", "settings.mcp.connectWorkflows.emptyState": "No available workflows", "settings.mcp.connectPopover.tab.oauth": "OAuth", "settings.mcp.connectPopover.tab.accessToken": "Access token", @@ -3227,6 +3230,13 @@ "experiments.surfaceMcpToNewCloudUsers.emptyState.tile.badge.new": "New", "experiments.surfaceMcpToNewCloudUsers.emptyState.tile.badge.enabled": "Enabled", "experiments.surfaceMcpToNewCloudUsers.emptyState.reminder": "You can enable this later in Settings > MCP.", + "experiments.exposeAllWorkflowsToMcp.modal.title": "Expose all workflows to MCP?", + "experiments.exposeAllWorkflowsToMcp.modal.description": "This lets connected clients reach every workflow on this instance right away. You can remove MCP access for individual workflows at any time.", + "experiments.exposeAllWorkflowsToMcp.modal.notNow": "Not now", + "experiments.exposeAllWorkflowsToMcp.modal.confirm": "Expose all workflows", + "experiments.exposeAllWorkflowsToMcp.modal.success.title": "Workflows exposed to MCP", + "experiments.exposeAllWorkflowsToMcp.modal.success.message": "{count} workflow is now available to connected clients | {count} workflows are now available to connected clients", + "experiments.exposeAllWorkflowsToMcp.modal.error.title": "Error exposing workflows to MCP", "settings.chatHub": "Chat", "settings.chatHub.enabled.label": "Enable Chat", "settings.chatHub.enabled.description": "When disabled, Chat is hidden across the app and its API endpoints are turned off. You can re-enable it here at any time.", diff --git a/packages/frontend/@n8n/stores/src/constants.ts b/packages/frontend/@n8n/stores/src/constants.ts index 231fd6b5340..3bfbccb23b8 100644 --- a/packages/frontend/@n8n/stores/src/constants.ts +++ b/packages/frontend/@n8n/stores/src/constants.ts @@ -53,6 +53,7 @@ export const STORES = { EXPERIMENT_EMPTY_STATE_BUILDER_PROMPT: 'emptyStateBuilderPrompt', EXPERIMENT_CREDENTIALS_APP_SELECTION: 'credentialsAppSelection', EXPERIMENT_SURFACE_MCP_TO_NEW_CLOUD_USERS: 'surfaceMcpToNewCloudUsers', + EXPERIMENT_EXPOSE_ALL_WORKFLOWS_TO_MCP: 'exposeAllWorkflowsToMcp', SETUP_PANEL: 'setupPanel', FOCUSED_NODES: 'focusedNodes', FAVORITES: 'favorites', diff --git a/packages/frontend/editor-ui/src/__tests__/setup.ts b/packages/frontend/editor-ui/src/__tests__/setup.ts index 94b26c86352..f903afdd0e5 100644 --- a/packages/frontend/editor-ui/src/__tests__/setup.ts +++ b/packages/frontend/editor-ui/src/__tests__/setup.ts @@ -47,8 +47,15 @@ vi.mock('reka-ui', async (importOriginal) => { const context = inject<{ isOpen: { value: boolean }; setOpen: (v: boolean) => void }>( POPOVER_OPEN_KEY, ); + // Capture phase avoids Vue's "event fired before listener attached" guard + // (`e._vts <= invoker.attached`), which flakily skips a bubble-phase onClick + // when a test renders and clicks within the same millisecond. return () => - h('div', { onClick: () => context?.setOpen(!context.isOpen.value) }, slots.default?.()); + h( + 'div', + { onClickCapture: () => context?.setOpen(!context.isOpen.value) }, + slots.default?.(), + ); }, }), PopoverPortal: defineComponent({ diff --git a/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.test.ts b/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.test.ts index 49f78dd3b89..0a2552c8a6b 100644 --- a/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.test.ts +++ b/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.test.ts @@ -718,6 +718,22 @@ describe('WorkflowHeaderDraftPublishActions', () => { const { container } = renderComponent(); expect(container).toBeInTheDocument(); }); + + it('should disable the menu button when workflow is new', () => { + settingsStore.isEnterpriseFeatureEnabled = createMockEnterpriseSettings({ + [EnterpriseEditionFeature.NamedVersions]: false, + }); + + const { getByTestId } = renderComponent({ + props: { + ...defaultWorkflowProps, + isNewWorkflow: true, + }, + }); + + const versionMenuButton = getByTestId('version-menu-button'); + expect(versionMenuButton).toBeDisabled(); + }); }); describe('Publication service states (flag on)', () => { diff --git a/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.vue b/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.vue index b39f8a6b24b..fb7f1dfb136 100644 --- a/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.vue +++ b/packages/frontend/editor-ui/src/app/components/MainHeader/WorkflowHeaderDraftPublishActions.vue @@ -418,6 +418,7 @@ const versionMenuActions = computed>>( actions.push({ id: VERSION_ACTIONS.PUBLISH_TIMELINE, label: i18n.baseText('workflowHistory.action.viewTimeline'), + disabled: props.isNewWorkflow, }); actions.push({ diff --git a/packages/frontend/editor-ui/src/app/components/WhatsNewModal.test.ts b/packages/frontend/editor-ui/src/app/components/WhatsNewModal.test.ts index fc26d2d0d25..d419237595a 100644 --- a/packages/frontend/editor-ui/src/app/components/WhatsNewModal.test.ts +++ b/packages/frontend/editor-ui/src/app/components/WhatsNewModal.test.ts @@ -151,6 +151,25 @@ describe('WhatsNewModal', () => { expect(queryByTestId('whats-new-modal-next-versions-link')).not.toBeInTheDocument(); }); + it('should render a close button that dismisses the modal', async () => { + const { getByTestId, getByRole } = renderComponent({ + props: { + data: { + articleId: 1, + }, + }, + }); + + await waitFor(() => expect(getByTestId('whatsNew-modal')).toBeInTheDocument()); + + const closeButton = getByRole('button', { name: 'Close this dialog' }); + expect(closeButton).toBeInTheDocument(); + + await userEvent.click(closeButton); + + expect(uiStore.closeModal).toHaveBeenCalledWith(WHATS_NEW_MODAL_KEY); + }); + it('should render with update button enabled', async () => { versionsStore.hasVersionUpdates = true; versionsStore.nextVersions = [ diff --git a/packages/frontend/editor-ui/src/app/components/WhatsNewModal.vue b/packages/frontend/editor-ui/src/app/components/WhatsNewModal.vue index 9018b4b39d8..381dc0694ae 100644 --- a/packages/frontend/editor-ui/src/app/components/WhatsNewModal.vue +++ b/packages/frontend/editor-ui/src/app/components/WhatsNewModal.vue @@ -88,39 +88,38 @@ modalBus.on('opened', () => { :event-bus="modalBus" :name="WHATS_NEW_MODAL_KEY" :center="true" - :show-close="false" >