@n8n/instance-ai 1.7.2 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/instance-agent.d.ts +1 -1
- package/dist/agent/instance-agent.js +88 -75
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/mcp-tool-name-validation.d.ts +4 -2
- package/dist/agent/mcp-tool-name-validation.js +2 -2
- package/dist/agent/mcp-tool-name-validation.js.map +1 -1
- package/dist/agent/runtime-workspace.d.ts +6 -0
- package/dist/agent/runtime-workspace.js +14 -0
- package/dist/agent/runtime-workspace.js.map +1 -0
- package/dist/agent/sanitize-mcp-schemas.d.ts +4 -3
- package/dist/agent/sanitize-mcp-schemas.js +53 -24
- package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
- package/dist/agent/sub-agent-debriefing.d.ts +2 -2
- package/dist/agent/sub-agent-factory.d.ts +7 -4
- package/dist/agent/sub-agent-factory.js +24 -13
- package/dist/agent/sub-agent-factory.js.map +1 -1
- package/dist/agent/system-prompt.js +18 -15
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/constants/max-steps.d.ts +1 -1
- package/dist/constants/max-steps.js +1 -1
- package/dist/constants/max-steps.js.map +1 -1
- package/dist/domain-access/domain-gating.d.ts +2 -2
- package/dist/error-formatting.d.ts +1 -0
- package/dist/error-formatting.js +159 -0
- package/dist/error-formatting.js.map +1 -0
- package/dist/index.d.ts +65 -24
- package/dist/index.js +96 -52
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-client-manager.d.ts +5 -4
- package/dist/mcp/mcp-client-manager.js +42 -17
- package/dist/mcp/mcp-client-manager.js.map +1 -1
- package/dist/memory/title-utils.d.ts +4 -1
- package/dist/memory/title-utils.js +10 -2
- package/dist/memory/title-utils.js.map +1 -1
- package/dist/parsers/structured-file-parser.d.ts +5 -2
- package/dist/parsers/structured-file-parser.js +9 -2
- package/dist/parsers/structured-file-parser.js.map +1 -1
- package/dist/planned-tasks/planned-task-permissions.js +3 -5
- package/dist/planned-tasks/planned-task-permissions.js.map +1 -1
- package/dist/planned-tasks/planned-task-service.d.ts +1 -0
- package/dist/planned-tasks/planned-task-service.js +8 -0
- package/dist/planned-tasks/planned-task-service.js.map +1 -1
- package/dist/runtime/background-task-manager.d.ts +9 -2
- package/dist/runtime/background-task-manager.js +7 -2
- package/dist/runtime/background-task-manager.js.map +1 -1
- package/dist/runtime/liveness-policy.js +4 -3
- package/dist/runtime/liveness-policy.js.map +1 -1
- package/dist/runtime/resumable-stream-executor.d.ts +4 -24
- package/dist/runtime/resumable-stream-executor.js +103 -1318
- package/dist/runtime/resumable-stream-executor.js.map +1 -1
- package/dist/runtime/run-state-registry.d.ts +8 -2
- package/dist/runtime/run-state-registry.js +19 -1
- package/dist/runtime/run-state-registry.js.map +1 -1
- package/dist/runtime/stream-runner.d.ts +4 -4
- package/dist/runtime/stream-runner.js +11 -25
- package/dist/runtime/stream-runner.js.map +1 -1
- package/dist/skills/materialize-runtime-skills.d.ts +62 -0
- package/dist/skills/materialize-runtime-skills.js +467 -0
- package/dist/skills/materialize-runtime-skills.js.map +1 -0
- package/dist/skills/runtime-skills.d.ts +4 -0
- package/dist/skills/runtime-skills.js +17 -0
- package/dist/skills/runtime-skills.js.map +1 -0
- package/dist/source-map-filter.d.ts +17 -0
- package/dist/source-map-filter.js +39 -0
- package/dist/source-map-filter.js.map +1 -0
- package/dist/storage/agent-tree-snapshot.d.ts +2 -0
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.js +8 -7
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/planned-task-storage.d.ts +3 -3
- package/dist/storage/planned-task-storage.js +3 -8
- package/dist/storage/planned-task-storage.js.map +1 -1
- package/dist/storage/terminal-outcome-storage.d.ts +4 -4
- package/dist/storage/terminal-outcome-storage.js +1 -1
- package/dist/storage/terminal-outcome-storage.js.map +1 -1
- package/dist/storage/{mastra-iteration-log-storage.d.ts → thread-iteration-log-storage.d.ts} +3 -3
- package/dist/storage/{mastra-iteration-log-storage.js → thread-iteration-log-storage.js} +5 -5
- package/dist/storage/thread-iteration-log-storage.js.map +1 -0
- package/dist/storage/thread-patch.d.ts +16 -10
- package/dist/storage/thread-patch.js +37 -36
- package/dist/storage/thread-patch.js.map +1 -1
- package/dist/storage/{mastra-task-storage.d.ts → thread-task-storage.d.ts} +3 -3
- package/dist/storage/{mastra-task-storage.js → thread-task-storage.js} +5 -5
- package/dist/storage/thread-task-storage.js.map +1 -0
- package/dist/storage/workflow-loop-storage.d.ts +28 -28
- package/dist/storage/workflow-loop-storage.js +1 -1
- package/dist/storage/workflow-loop-storage.js.map +1 -1
- package/dist/stream/consume-with-hitl.d.ts +11 -11
- package/dist/stream/consume-with-hitl.js +27 -15
- package/dist/stream/consume-with-hitl.js.map +1 -1
- package/dist/stream/map-chunk.d.ts +1 -1
- package/dist/stream/map-chunk.js +153 -36
- package/dist/stream/map-chunk.js.map +1 -1
- package/dist/tool-registry.d.ts +8 -0
- package/dist/tool-registry.js +45 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/attachments/parse-file.tool.d.ts +42 -45
- package/dist/tools/attachments/parse-file.tool.js +140 -97
- package/dist/tools/attachments/parse-file.tool.js.map +1 -1
- package/dist/tools/credentials.tool.d.ts +5 -5
- package/dist/tools/credentials.tool.js +31 -34
- package/dist/tools/credentials.tool.js.map +1 -1
- package/dist/tools/data-tables.tool.d.ts +3 -2
- package/dist/tools/data-tables.tool.js +99 -100
- package/dist/tools/data-tables.tool.js.map +1 -1
- package/dist/tools/evals/apply-pin-data.service.d.ts +3 -0
- package/dist/tools/evals/apply-pin-data.service.js +19 -0
- package/dist/tools/evals/apply-pin-data.service.js.map +1 -0
- package/dist/tools/evals/column-ref-utils.d.ts +3 -0
- package/dist/tools/evals/column-ref-utils.js +205 -48
- package/dist/tools/evals/column-ref-utils.js.map +1 -1
- package/dist/tools/evals/detect-agent-named-refs.service.js +20 -4
- package/dist/tools/evals/detect-agent-named-refs.service.js.map +1 -1
- package/dist/tools/evals/ensure-eval-data-table.service.d.ts +15 -0
- package/dist/tools/evals/ensure-eval-data-table.service.js +83 -0
- package/dist/tools/evals/ensure-eval-data-table.service.js.map +1 -0
- package/dist/tools/evals/eval-data-requirements.service.d.ts +1 -0
- package/dist/tools/evals/eval-data-requirements.service.js +23 -4
- package/dist/tools/evals/eval-data-requirements.service.js.map +1 -1
- package/dist/tools/evals/evals.tool.d.ts +2 -0
- package/dist/tools/evals/evals.tool.js +452 -0
- package/dist/tools/evals/evals.tool.js.map +1 -0
- package/dist/tools/evals/extract-rows-from-history.service.d.ts +17 -0
- package/dist/tools/evals/extract-rows-from-history.service.js +103 -0
- package/dist/tools/evals/extract-rows-from-history.service.js.map +1 -0
- package/dist/tools/evals/format-eval-setup-task.d.ts +16 -0
- package/dist/tools/evals/format-eval-setup-task.js +167 -0
- package/dist/tools/evals/format-eval-setup-task.js.map +1 -0
- package/dist/tools/evals/generate-sample-rows.service.d.ts +35 -0
- package/dist/tools/evals/generate-sample-rows.service.js +278 -0
- package/dist/tools/evals/generate-sample-rows.service.js.map +1 -0
- package/dist/tools/evals/generate-tool-ref-pin-data.service.d.ts +11 -0
- package/dist/tools/evals/generate-tool-ref-pin-data.service.js +125 -0
- package/dist/tools/evals/generate-tool-ref-pin-data.service.js.map +1 -0
- package/dist/tools/evals/metric-catalog.d.ts +10 -4
- package/dist/tools/evals/metric-catalog.js.map +1 -1
- package/dist/tools/executions.tool.d.ts +1 -1
- package/dist/tools/executions.tool.js +25 -34
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/filesystem/create-tools-from-mcp-server.d.ts +2 -3
- package/dist/tools/filesystem/create-tools-from-mcp-server.js +129 -67
- package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
- package/dist/tools/index.d.ts +4 -16
- package/dist/tools/index.js +102 -92
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/nodes.tool.d.ts +1 -1
- package/dist/tools/nodes.tool.js +31 -33
- package/dist/tools/nodes.tool.js.map +1 -1
- package/dist/tools/orchestration/add-plan-item.tool.d.ts +2 -2
- package/dist/tools/orchestration/add-plan-item.tool.js +45 -49
- package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -1
- package/dist/tools/orchestration/agent-persistence.d.ts +14 -0
- package/dist/tools/orchestration/agent-persistence.js +43 -0
- package/dist/tools/orchestration/agent-persistence.js.map +1 -0
- package/dist/tools/orchestration/blueprint-accumulator.d.ts +4 -8
- package/dist/tools/orchestration/blueprint-accumulator.js +11 -78
- package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -1
- package/dist/tools/orchestration/blueprint.schema.d.ts +13 -147
- package/dist/tools/orchestration/blueprint.schema.js +4 -23
- package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
- package/dist/tools/orchestration/browser-credential-setup.nudge.d.ts +2 -4
- package/dist/tools/orchestration/browser-credential-setup.nudge.js +1 -1
- package/dist/tools/orchestration/browser-credential-setup.nudge.js.map +1 -1
- package/dist/tools/orchestration/browser-credential-setup.tool.d.ts +10 -2
- package/dist/tools/orchestration/browser-credential-setup.tool.js +299 -270
- package/dist/tools/orchestration/browser-credential-setup.tool.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.prompt.d.ts +7 -1
- package/dist/tools/orchestration/build-workflow-agent.prompt.js +46 -20
- package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +50 -5
- package/dist/tools/orchestration/build-workflow-agent.tool.js +748 -605
- package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/builder-memory-compaction.d.ts +6 -2
- package/dist/tools/orchestration/builder-memory-compaction.js +32 -46
- package/dist/tools/orchestration/builder-memory-compaction.js.map +1 -1
- package/dist/tools/orchestration/complete-checkpoint.tool.d.ts +1 -1
- package/dist/tools/orchestration/complete-checkpoint.tool.js +46 -47
- package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
- package/dist/tools/orchestration/delegate.tool.d.ts +1 -1
- package/dist/tools/orchestration/delegate.tool.js +170 -166
- package/dist/tools/orchestration/delegate.tool.js.map +1 -1
- package/dist/tools/orchestration/eval-data-agent.tool.d.ts +2 -0
- package/dist/tools/orchestration/eval-data-agent.tool.js +183 -0
- package/dist/tools/orchestration/eval-data-agent.tool.js.map +1 -0
- package/dist/tools/orchestration/eval-setup-agent.prompt.d.ts +1 -0
- package/dist/tools/orchestration/eval-setup-agent.prompt.js +238 -0
- package/dist/tools/orchestration/eval-setup-agent.prompt.js.map +1 -0
- package/dist/tools/orchestration/eval-setup-agent.tool.d.ts +31 -0
- package/dist/tools/orchestration/eval-setup-agent.tool.js +204 -0
- package/dist/tools/orchestration/eval-setup-agent.tool.js.map +1 -0
- package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -1
- package/dist/tools/orchestration/plan-agent-prompt.js +9 -9
- package/dist/tools/orchestration/plan-with-agent.tool.d.ts +1 -1
- package/dist/tools/orchestration/plan-with-agent.tool.js +210 -179
- package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/plan.tool.d.ts +5 -2
- package/dist/tools/orchestration/plan.tool.js +125 -105
- package/dist/tools/orchestration/plan.tool.js.map +1 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +3 -3
- package/dist/tools/orchestration/report-verification-verdict.tool.js +65 -66
- package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
- package/dist/tools/orchestration/submit-plan.tool.d.ts +1 -1
- package/dist/tools/orchestration/submit-plan.tool.js +83 -66
- package/dist/tools/orchestration/submit-plan.tool.js.map +1 -1
- package/dist/tools/orchestration/tracing-utils.d.ts +3 -2
- package/dist/tools/orchestration/tracing-utils.js +58 -39
- package/dist/tools/orchestration/tracing-utils.js.map +1 -1
- package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +5 -5
- package/dist/tools/orchestration/verify-built-workflow.tool.js +166 -166
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/research.tool.d.ts +1 -1
- package/dist/tools/research.tool.js +59 -27
- package/dist/tools/research.tool.js.map +1 -1
- package/dist/tools/shared/ask-user.tool.d.ts +3 -2
- package/dist/tools/shared/ask-user.tool.js +61 -63
- package/dist/tools/shared/ask-user.tool.js.map +1 -1
- package/dist/tools/task-control.tool.d.ts +1 -1
- package/dist/tools/task-control.tool.js +15 -16
- package/dist/tools/task-control.tool.js.map +1 -1
- package/dist/tools/templates.tool.d.ts +1 -1
- package/dist/tools/templates.tool.js +6 -7
- package/dist/tools/templates.tool.js.map +1 -1
- package/dist/tools/tool-ids.d.ts +40 -0
- package/dist/tools/tool-ids.js +62 -0
- package/dist/tools/tool-ids.js.map +1 -0
- package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +3 -3
- package/dist/tools/workflows/apply-workflow-credentials.tool.js +72 -73
- package/dist/tools/workflows/apply-workflow-credentials.tool.js.map +1 -1
- package/dist/tools/workflows/build-workflow.tool.d.ts +3 -3
- package/dist/tools/workflows/build-workflow.tool.js +113 -114
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/materialize-node-type.tool.d.ts +6 -6
- package/dist/tools/workflows/materialize-node-type.tool.js +64 -65
- package/dist/tools/workflows/materialize-node-type.tool.js.map +1 -1
- package/dist/tools/workflows/resolve-credentials.d.ts +3 -5
- package/dist/tools/workflows/resolve-credentials.js +15 -6
- package/dist/tools/workflows/resolve-credentials.js.map +1 -1
- package/dist/tools/workflows/setup-workflow.schema.d.ts +2 -2
- package/dist/tools/workflows/submit-workflow-identity.d.ts +8 -9
- package/dist/tools/workflows/submit-workflow-identity.js +41 -27
- package/dist/tools/workflows/submit-workflow-identity.js.map +1 -1
- package/dist/tools/workflows/submit-workflow.tool.d.ts +10 -7
- package/dist/tools/workflows/submit-workflow.tool.js +224 -191
- package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/validate-workflow.service.d.ts +15 -0
- package/dist/tools/workflows/validate-workflow.service.js +289 -0
- package/dist/tools/workflows/validate-workflow.service.js.map +1 -0
- package/dist/tools/workflows/write-sandbox-file.tool.d.ts +2 -2
- package/dist/tools/workflows/write-sandbox-file.tool.js +29 -30
- package/dist/tools/workflows/write-sandbox-file.tool.js.map +1 -1
- package/dist/tools/workflows.tool.d.ts +5 -2
- package/dist/tools/workflows.tool.js +184 -85
- package/dist/tools/workflows.tool.js.map +1 -1
- package/dist/tools/workspace.tool.d.ts +1 -1
- package/dist/tools/workspace.tool.js +49 -65
- package/dist/tools/workspace.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.d.ts +17 -18
- package/dist/tracing/langsmith-tracing.js +941 -677
- package/dist/tracing/langsmith-tracing.js.map +1 -1
- package/dist/tracing/trace-labels.d.ts +5 -0
- package/dist/tracing/trace-labels.js +36 -0
- package/dist/tracing/trace-labels.js.map +1 -0
- package/dist/tracing/trace-payloads.d.ts +23 -0
- package/dist/tracing/trace-payloads.js +1008 -0
- package/dist/tracing/trace-payloads.js.map +1 -0
- package/dist/types.d.ts +57 -25
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/eval-agents.js +1 -1
- package/dist/utils/eval-agents.js.map +1 -1
- package/dist/utils/scrub-secrets.js +1 -1
- package/dist/utils/scrub-secrets.js.map +1 -1
- package/dist/utils/stream-helpers.d.ts +2 -5
- package/dist/utils/stream-helpers.js +12 -1
- package/dist/utils/stream-helpers.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +18 -18
- package/dist/workspace/builder-templates-service.d.ts +54 -0
- package/dist/workspace/builder-templates-service.js +442 -0
- package/dist/workspace/builder-templates-service.js.map +1 -0
- package/dist/workspace/create-workspace.d.ts +16 -3
- package/dist/workspace/create-workspace.js +45 -21
- package/dist/workspace/create-workspace.js.map +1 -1
- package/dist/workspace/daytona-auth-manager.d.ts +26 -0
- package/dist/workspace/daytona-auth-manager.js +90 -0
- package/dist/workspace/daytona-auth-manager.js.map +1 -0
- package/dist/workspace/daytona-filesystem.d.ts +5 -4
- package/dist/workspace/daytona-filesystem.js +25 -15
- package/dist/workspace/daytona-filesystem.js.map +1 -1
- package/dist/workspace/daytona-sandbox.d.ts +65 -0
- package/dist/workspace/daytona-sandbox.js +314 -0
- package/dist/workspace/daytona-sandbox.js.map +1 -0
- package/dist/workspace/lazy-daytona.d.ts +2 -0
- package/dist/workspace/lazy-daytona.js +12 -0
- package/dist/workspace/lazy-daytona.js.map +1 -0
- package/dist/workspace/lazy-runtime-workspace.d.ts +8 -0
- package/dist/workspace/lazy-runtime-workspace.js +246 -0
- package/dist/workspace/lazy-runtime-workspace.js.map +1 -0
- package/dist/workspace/local-filesystem.d.ts +48 -0
- package/dist/workspace/local-filesystem.js +250 -0
- package/dist/workspace/local-filesystem.js.map +1 -0
- package/dist/workspace/local-sandbox.d.ts +28 -0
- package/dist/workspace/local-sandbox.js +121 -0
- package/dist/workspace/local-sandbox.js.map +1 -0
- package/dist/workspace/n8n-sandbox-filesystem.d.ts +3 -3
- package/dist/workspace/n8n-sandbox-filesystem.js +3 -3
- package/dist/workspace/n8n-sandbox-filesystem.js.map +1 -1
- package/dist/workspace/n8n-sandbox-sandbox.d.ts +12 -3
- package/dist/workspace/n8n-sandbox-sandbox.js +54 -10
- package/dist/workspace/n8n-sandbox-sandbox.js.map +1 -1
- package/dist/workspace/sandbox-fs.d.ts +35 -4
- package/dist/workspace/sandbox-fs.js +1 -1
- package/dist/workspace/sandbox-fs.js.map +1 -1
- package/dist/workspace/sandbox-setup.d.ts +13 -4
- package/dist/workspace/sandbox-setup.js +250 -36
- package/dist/workspace/sandbox-setup.js.map +1 -1
- package/dist/workspace/scoped-workspace.d.ts +2 -0
- package/dist/workspace/scoped-workspace.js +141 -0
- package/dist/workspace/scoped-workspace.js.map +1 -0
- package/dist/workspace/snapshot-manager.d.ts +11 -5
- package/dist/workspace/snapshot-manager.js +64 -17
- package/dist/workspace/snapshot-manager.js.map +1 -1
- package/dist/workspace/template-telemetry.d.ts +4 -4
- package/dist/workspace/template-telemetry.js +18 -6
- package/dist/workspace/template-telemetry.js.map +1 -1
- package/package.json +12 -15
- package/skills/data-table-manager/SKILL.md +119 -0
- package/skills/data-table-manager/references/data-table-playbook.md +212 -0
- package/dist/agent/register-with-mastra.d.ts +0 -3
- package/dist/agent/register-with-mastra.js +0 -15
- package/dist/agent/register-with-mastra.js.map +0 -1
- package/dist/compaction/compaction-helper.d.ts +0 -9
- package/dist/compaction/compaction-helper.js +0 -58
- package/dist/compaction/compaction-helper.js.map +0 -1
- package/dist/compaction/index.d.ts +0 -2
- package/dist/compaction/index.js +0 -6
- package/dist/compaction/index.js.map +0 -1
- package/dist/memory/memory-config.d.ts +0 -3
- package/dist/memory/memory-config.js +0 -27
- package/dist/memory/memory-config.js.map +0 -1
- package/dist/runtime/builder-sandbox-session-registry.d.ts +0 -47
- package/dist/runtime/builder-sandbox-session-registry.js +0 -166
- package/dist/runtime/builder-sandbox-session-registry.js.map +0 -1
- package/dist/storage/mastra-iteration-log-storage.js.map +0 -1
- package/dist/storage/mastra-task-storage.js.map +0 -1
- package/dist/tools/orchestration/data-table-agent.prompt.d.ts +0 -1
- package/dist/tools/orchestration/data-table-agent.prompt.js +0 -47
- package/dist/tools/orchestration/data-table-agent.prompt.js.map +0 -1
- package/dist/tools/orchestration/data-table-agent.tool.d.ts +0 -26
- package/dist/tools/orchestration/data-table-agent.tool.js +0 -174
- package/dist/tools/orchestration/data-table-agent.tool.js.map +0 -1
- package/dist/tools/orchestration/research-agent-prompt.d.ts +0 -1
- package/dist/tools/orchestration/research-agent-prompt.js +0 -26
- package/dist/tools/orchestration/research-agent-prompt.js.map +0 -1
- package/dist/tools/orchestration/research-with-agent.tool.d.ts +0 -30
- package/dist/tools/orchestration/research-with-agent.tool.js +0 -179
- package/dist/tools/orchestration/research-with-agent.tool.js.map +0 -1
- package/dist/workspace/builder-sandbox-factory.d.ts +0 -30
- package/dist/workspace/builder-sandbox-factory.js +0 -289
- package/dist/workspace/builder-sandbox-factory.js.map +0 -1
- package/dist/workspace/guarded-filesystem.d.ts +0 -10
- package/dist/workspace/guarded-filesystem.js +0 -136
- package/dist/workspace/guarded-filesystem.js.map +0 -1
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.BuilderTemplatesService = void 0;
|
|
40
|
+
exports.builderTemplatesOptionsFromEnv = builderTemplatesOptionsFromEnv;
|
|
41
|
+
const package_json_1 = __importDefault(require("@n8n/workflow-sdk/package.json"));
|
|
42
|
+
const node_crypto_1 = require("node:crypto");
|
|
43
|
+
const fsp = __importStar(require("node:fs/promises"));
|
|
44
|
+
const os = __importStar(require("node:os"));
|
|
45
|
+
const path = __importStar(require("node:path"));
|
|
46
|
+
const DEFAULT_CDN_BASE_URL = 'https://sdk-templates.n8n.io';
|
|
47
|
+
const WORKFLOW_SDK_VERSION = package_json_1.default.version;
|
|
48
|
+
const DEFAULT_REFRESH_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
49
|
+
const DEFAULT_FETCH_TIMEOUT_MS = 30_000;
|
|
50
|
+
const DEFAULT_MAX_ATTEMPTS = 3;
|
|
51
|
+
const DEFAULT_RETRY_BACKOFF_BASE_MS = 1_000;
|
|
52
|
+
const DEFAULT_FAILURE_RETRY_INTERVAL_MS = 5 * 60 * 1000;
|
|
53
|
+
const RETRY_BACKOFF_CAP_MS = 5_000;
|
|
54
|
+
const DEFAULT_CACHE_SUBDIR = 'n8n-sdk-templates';
|
|
55
|
+
const ARCHIVE_FILENAME = 'templates.tar.gz';
|
|
56
|
+
const ETAG_FILENAME = 'etag.txt';
|
|
57
|
+
const SHA256_FILENAME = 'templates.tar.gz.sha256';
|
|
58
|
+
const CHANNEL_FILENAME = 'channel.txt';
|
|
59
|
+
const EMPTY_BUNDLE = { archive: null, version: null };
|
|
60
|
+
class BuilderTemplatesService {
|
|
61
|
+
cdnBase;
|
|
62
|
+
versionPrefix;
|
|
63
|
+
sdkVersion;
|
|
64
|
+
cacheDir;
|
|
65
|
+
refreshIntervalMs;
|
|
66
|
+
fetchTimeoutMs;
|
|
67
|
+
maxAttempts;
|
|
68
|
+
retryBackoffBaseMs;
|
|
69
|
+
failureRetryIntervalMs;
|
|
70
|
+
disabled;
|
|
71
|
+
logger;
|
|
72
|
+
state = null;
|
|
73
|
+
hydratePromise = null;
|
|
74
|
+
backgroundRefresh = null;
|
|
75
|
+
lastHydrateFailureAt = null;
|
|
76
|
+
constructor(opts = {}) {
|
|
77
|
+
this.cdnBase = (opts.cdnBaseUrl ?? DEFAULT_CDN_BASE_URL).replace(/\/+$/, '');
|
|
78
|
+
this.sdkVersion = opts.sdkVersion ?? WORKFLOW_SDK_VERSION;
|
|
79
|
+
this.versionPrefix = sdkVersionToPrefix(this.sdkVersion);
|
|
80
|
+
this.cacheDir = opts.cacheDir ?? path.join(os.homedir(), '.n8n', DEFAULT_CACHE_SUBDIR);
|
|
81
|
+
this.refreshIntervalMs = opts.refreshIntervalMs ?? DEFAULT_REFRESH_INTERVAL_MS;
|
|
82
|
+
this.fetchTimeoutMs = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
|
|
83
|
+
this.maxAttempts = opts.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
84
|
+
this.retryBackoffBaseMs = opts.retryBackoffBaseMs ?? DEFAULT_RETRY_BACKOFF_BASE_MS;
|
|
85
|
+
this.failureRetryIntervalMs = opts.failureRetryIntervalMs ?? DEFAULT_FAILURE_RETRY_INTERVAL_MS;
|
|
86
|
+
this.disabled = opts.disabled ?? false;
|
|
87
|
+
this.logger = opts.logger;
|
|
88
|
+
}
|
|
89
|
+
channelPrefix(channel) {
|
|
90
|
+
return channel === 'exact' ? this.versionPrefix : 'latest';
|
|
91
|
+
}
|
|
92
|
+
archiveUrlFor(channel) {
|
|
93
|
+
return `${this.cdnBase}/${this.channelPrefix(channel)}/${ARCHIVE_FILENAME}`;
|
|
94
|
+
}
|
|
95
|
+
sha256UrlFor(channel) {
|
|
96
|
+
return `${this.cdnBase}/${this.channelPrefix(channel)}/${SHA256_FILENAME}`;
|
|
97
|
+
}
|
|
98
|
+
async getBundle() {
|
|
99
|
+
if (this.disabled)
|
|
100
|
+
return EMPTY_BUNDLE;
|
|
101
|
+
if (!this.state) {
|
|
102
|
+
if (!this.hydratePromise) {
|
|
103
|
+
if (this.isWithinHydrateFailureCooldown())
|
|
104
|
+
return EMPTY_BUNDLE;
|
|
105
|
+
this.hydratePromise = this.hydrate();
|
|
106
|
+
}
|
|
107
|
+
await this.hydratePromise;
|
|
108
|
+
if (this.state) {
|
|
109
|
+
this.lastHydrateFailureAt = null;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.lastHydrateFailureAt = Date.now();
|
|
113
|
+
this.hydratePromise = null;
|
|
114
|
+
return EMPTY_BUNDLE;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const state = this.state;
|
|
118
|
+
if (!state)
|
|
119
|
+
return EMPTY_BUNDLE;
|
|
120
|
+
if (Date.now() - state.lastFetched > this.refreshIntervalMs && !this.backgroundRefresh) {
|
|
121
|
+
this.backgroundRefresh = this.refresh({ isInitial: false }).finally(() => {
|
|
122
|
+
this.backgroundRefresh = null;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return state.bundle;
|
|
126
|
+
}
|
|
127
|
+
isWithinHydrateFailureCooldown() {
|
|
128
|
+
if (this.lastHydrateFailureAt === null)
|
|
129
|
+
return false;
|
|
130
|
+
return Date.now() - this.lastHydrateFailureAt < this.failureRetryIntervalMs;
|
|
131
|
+
}
|
|
132
|
+
getVersion() {
|
|
133
|
+
const state = this.state;
|
|
134
|
+
const raw = state?.bundle.version ?? null;
|
|
135
|
+
if (!raw || !state)
|
|
136
|
+
return null;
|
|
137
|
+
const normalised = raw.replace(/^W\//, '').replace(/^"|"$/g, '');
|
|
138
|
+
return `${this.channelPrefix(state.channel)}:${normalised}`;
|
|
139
|
+
}
|
|
140
|
+
async hydrate() {
|
|
141
|
+
const fromDisk = await this.loadFromDisk();
|
|
142
|
+
if (fromDisk) {
|
|
143
|
+
this.state = fromDisk;
|
|
144
|
+
if (Date.now() - fromDisk.lastFetched > this.refreshIntervalMs) {
|
|
145
|
+
this.backgroundRefresh = this.refresh({ isInitial: false }).finally(() => {
|
|
146
|
+
this.backgroundRefresh = null;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
await this.refresh({ isInitial: true });
|
|
152
|
+
}
|
|
153
|
+
async loadFromDisk() {
|
|
154
|
+
const archivePath = path.join(this.cacheDir, ARCHIVE_FILENAME);
|
|
155
|
+
try {
|
|
156
|
+
const stat = await fsp.stat(archivePath);
|
|
157
|
+
const buffer = await fsp.readFile(archivePath);
|
|
158
|
+
const actualSha = sha256Hex(buffer);
|
|
159
|
+
const expectedSha = await this.readSha256FromDisk();
|
|
160
|
+
if (expectedSha && expectedSha !== actualSha) {
|
|
161
|
+
this.logger?.warn('[builder-templates] disk cache sha256 mismatch, dropping cache', {
|
|
162
|
+
expected: expectedSha,
|
|
163
|
+
actual: actualSha,
|
|
164
|
+
});
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
const channel = await this.readChannelFromDisk();
|
|
168
|
+
if (!channel) {
|
|
169
|
+
this.logger?.debug('[builder-templates] disk cache missing channel.txt, treating as legacy and refetching');
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
const etag = await this.readEtagFromDisk();
|
|
173
|
+
return {
|
|
174
|
+
bundle: { archive: buffer, version: etag },
|
|
175
|
+
lastFetched: stat.mtimeMs,
|
|
176
|
+
sha256: actualSha,
|
|
177
|
+
channel,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error.code !== 'ENOENT') {
|
|
182
|
+
this.logger?.warn('[builder-templates] failed to load disk cache', {
|
|
183
|
+
error: error instanceof Error ? error.message : String(error),
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async readEtagFromDisk() {
|
|
190
|
+
try {
|
|
191
|
+
const raw = await fsp.readFile(path.join(this.cacheDir, ETAG_FILENAME), 'utf-8');
|
|
192
|
+
return raw.trim() || null;
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async readSha256FromDisk() {
|
|
199
|
+
try {
|
|
200
|
+
const raw = await fsp.readFile(path.join(this.cacheDir, SHA256_FILENAME), 'utf-8');
|
|
201
|
+
return parseSha256(raw);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
async readChannelFromDisk() {
|
|
208
|
+
try {
|
|
209
|
+
const raw = (await fsp.readFile(path.join(this.cacheDir, CHANNEL_FILENAME), 'utf-8')).trim();
|
|
210
|
+
if (raw === 'exact' || raw === 'latest')
|
|
211
|
+
return raw;
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
async refresh({ isInitial }) {
|
|
219
|
+
try {
|
|
220
|
+
const maxAttempts = isInitial ? this.maxAttempts : 1;
|
|
221
|
+
let outcome = await this.fetchBundleWithRetries('exact', maxAttempts);
|
|
222
|
+
let channel = 'exact';
|
|
223
|
+
if (outcome.kind === 'not-found') {
|
|
224
|
+
this.logger?.warn('[builder-templates] no archive at /v<minor>/, falling back to /latest/', { sdkVersion: this.sdkVersion });
|
|
225
|
+
outcome = await this.fetchBundleWithRetries('latest', maxAttempts);
|
|
226
|
+
channel = 'latest';
|
|
227
|
+
}
|
|
228
|
+
if (outcome.kind !== 'fetched')
|
|
229
|
+
return;
|
|
230
|
+
await this.persist(outcome.bundle.bundle.archive, outcome.bundle.bundle.version, outcome.bundle.sha256, channel);
|
|
231
|
+
this.state = {
|
|
232
|
+
bundle: outcome.bundle.bundle,
|
|
233
|
+
lastFetched: Date.now(),
|
|
234
|
+
sha256: outcome.bundle.sha256,
|
|
235
|
+
channel,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
this.logger?.warn('[builder-templates] refresh failed', {
|
|
240
|
+
error: error instanceof Error ? error.message : String(error),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
async fetchBundleWithRetries(channel, maxAttempts) {
|
|
245
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
246
|
+
const outcome = await this.tryFetchBundleOnce(channel);
|
|
247
|
+
if (outcome.kind === 'fetched')
|
|
248
|
+
return outcome;
|
|
249
|
+
if (outcome.kind === 'not-modified')
|
|
250
|
+
return outcome;
|
|
251
|
+
if (outcome.kind === 'not-found')
|
|
252
|
+
return outcome;
|
|
253
|
+
if (!outcome.retryable || attempt === maxAttempts)
|
|
254
|
+
return { kind: 'failed' };
|
|
255
|
+
const delay = Math.min(this.retryBackoffBaseMs * 2 ** (attempt - 1), RETRY_BACKOFF_CAP_MS);
|
|
256
|
+
await sleep(delay);
|
|
257
|
+
}
|
|
258
|
+
return { kind: 'failed' };
|
|
259
|
+
}
|
|
260
|
+
async tryFetchBundleOnce(channel) {
|
|
261
|
+
const archiveUrl = this.archiveUrlFor(channel);
|
|
262
|
+
const headers = {};
|
|
263
|
+
const cachedEtag = this.state?.channel === channel ? (this.state.bundle.version ?? null) : null;
|
|
264
|
+
if (cachedEtag)
|
|
265
|
+
headers['If-None-Match'] = cachedEtag;
|
|
266
|
+
let response;
|
|
267
|
+
try {
|
|
268
|
+
response = await fetch(archiveUrl, {
|
|
269
|
+
headers,
|
|
270
|
+
signal: AbortSignal.timeout(this.fetchTimeoutMs),
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
this.logger?.warn('[builder-templates] archive fetch threw', {
|
|
275
|
+
error: error instanceof Error ? error.message : String(error),
|
|
276
|
+
url: archiveUrl,
|
|
277
|
+
});
|
|
278
|
+
return { kind: 'failed', retryable: true };
|
|
279
|
+
}
|
|
280
|
+
if (response.status === 304 && this.state?.channel === channel) {
|
|
281
|
+
await touchArchiveFile(path.join(this.cacheDir, ARCHIVE_FILENAME));
|
|
282
|
+
this.state = { ...this.state, lastFetched: Date.now() };
|
|
283
|
+
return { kind: 'not-modified' };
|
|
284
|
+
}
|
|
285
|
+
if (response.status === 404) {
|
|
286
|
+
return { kind: 'not-found' };
|
|
287
|
+
}
|
|
288
|
+
if (!response.ok) {
|
|
289
|
+
this.logger?.warn('[builder-templates] archive fetch returned non-OK', {
|
|
290
|
+
status: response.status,
|
|
291
|
+
url: archiveUrl,
|
|
292
|
+
});
|
|
293
|
+
return { kind: 'failed', retryable: isRetryableStatus(response.status) };
|
|
294
|
+
}
|
|
295
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
296
|
+
const actualSha = sha256Hex(buffer);
|
|
297
|
+
const expectedSha = await this.fetchSha256Sidecar(channel);
|
|
298
|
+
if (expectedSha && expectedSha !== actualSha) {
|
|
299
|
+
this.logger?.warn('[builder-templates] sha256 mismatch on downloaded archive, rejecting', {
|
|
300
|
+
expected: expectedSha,
|
|
301
|
+
actual: actualSha,
|
|
302
|
+
url: archiveUrl,
|
|
303
|
+
});
|
|
304
|
+
return { kind: 'failed', retryable: false };
|
|
305
|
+
}
|
|
306
|
+
const etag = normaliseEtag(response.headers.get('etag'));
|
|
307
|
+
return {
|
|
308
|
+
kind: 'fetched',
|
|
309
|
+
bundle: {
|
|
310
|
+
bundle: { archive: buffer, version: etag },
|
|
311
|
+
sha256: actualSha,
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
async fetchSha256Sidecar(channel) {
|
|
316
|
+
const sha256Url = this.sha256UrlFor(channel);
|
|
317
|
+
try {
|
|
318
|
+
const response = await fetch(sha256Url, {
|
|
319
|
+
signal: AbortSignal.timeout(this.fetchTimeoutMs),
|
|
320
|
+
});
|
|
321
|
+
if (response.status === 404) {
|
|
322
|
+
this.logger?.warn('[builder-templates] sha256 sidecar missing — proceeding without integrity check', { url: sha256Url });
|
|
323
|
+
return null;
|
|
324
|
+
}
|
|
325
|
+
if (!response.ok) {
|
|
326
|
+
this.logger?.warn('[builder-templates] sha256 sidecar fetch returned non-OK — proceeding without integrity check', { status: response.status, url: sha256Url });
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
return parseSha256(await response.text());
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
this.logger?.warn('[builder-templates] sha256 sidecar fetch threw — proceeding without integrity check', {
|
|
333
|
+
error: error instanceof Error ? error.message : String(error),
|
|
334
|
+
url: sha256Url,
|
|
335
|
+
});
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
async persist(buffer, etag, sha256, channel) {
|
|
340
|
+
if (!buffer)
|
|
341
|
+
return;
|
|
342
|
+
await fsp.mkdir(this.cacheDir, { recursive: true });
|
|
343
|
+
if (etag) {
|
|
344
|
+
await atomicWriteFile(path.join(this.cacheDir, ETAG_FILENAME), etag);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
await unlinkIfExists(path.join(this.cacheDir, ETAG_FILENAME));
|
|
348
|
+
}
|
|
349
|
+
if (sha256) {
|
|
350
|
+
await atomicWriteFile(path.join(this.cacheDir, SHA256_FILENAME), sha256);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
await unlinkIfExists(path.join(this.cacheDir, SHA256_FILENAME));
|
|
354
|
+
}
|
|
355
|
+
await atomicWriteFile(path.join(this.cacheDir, CHANNEL_FILENAME), channel);
|
|
356
|
+
await atomicWriteFile(path.join(this.cacheDir, ARCHIVE_FILENAME), buffer);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
exports.BuilderTemplatesService = BuilderTemplatesService;
|
|
360
|
+
function sdkVersionToPrefix(sdkVersion) {
|
|
361
|
+
const match = sdkVersion.match(/^(\d+)\.(\d+)/);
|
|
362
|
+
if (!match)
|
|
363
|
+
return 'latest';
|
|
364
|
+
return `v${match[1]}.${match[2]}`;
|
|
365
|
+
}
|
|
366
|
+
function normaliseEtag(raw) {
|
|
367
|
+
if (!raw)
|
|
368
|
+
return null;
|
|
369
|
+
const trimmed = raw.trim();
|
|
370
|
+
if (!trimmed)
|
|
371
|
+
return null;
|
|
372
|
+
return trimmed;
|
|
373
|
+
}
|
|
374
|
+
function sha256Hex(buffer) {
|
|
375
|
+
return (0, node_crypto_1.createHash)('sha256').update(buffer).digest('hex');
|
|
376
|
+
}
|
|
377
|
+
function parseSha256(raw) {
|
|
378
|
+
const first = raw.trim().split(/\s+/, 1)[0];
|
|
379
|
+
if (!first || !/^[0-9a-fA-F]{64}$/.test(first))
|
|
380
|
+
return null;
|
|
381
|
+
return first.toLowerCase();
|
|
382
|
+
}
|
|
383
|
+
function isRetryableStatus(status) {
|
|
384
|
+
if (status >= 500)
|
|
385
|
+
return true;
|
|
386
|
+
return status === 408 || status === 429;
|
|
387
|
+
}
|
|
388
|
+
async function sleep(ms) {
|
|
389
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
390
|
+
}
|
|
391
|
+
async function atomicWriteFile(target, contents) {
|
|
392
|
+
const tmp = `${target}.tmp-${process.pid}-${Date.now()}`;
|
|
393
|
+
try {
|
|
394
|
+
await fsp.writeFile(tmp, contents);
|
|
395
|
+
await fsp.rename(tmp, target);
|
|
396
|
+
}
|
|
397
|
+
catch (error) {
|
|
398
|
+
try {
|
|
399
|
+
await fsp.unlink(tmp);
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
}
|
|
403
|
+
throw error;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
async function unlinkIfExists(target) {
|
|
407
|
+
try {
|
|
408
|
+
await fsp.unlink(target);
|
|
409
|
+
}
|
|
410
|
+
catch {
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
async function touchArchiveFile(target) {
|
|
414
|
+
const now = new Date();
|
|
415
|
+
try {
|
|
416
|
+
await fsp.utimes(target, now, now);
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
function builderTemplatesOptionsFromEnv({ logger, } = {}) {
|
|
422
|
+
const url = process.env.N8N_INSTANCE_AI_TEMPLATES_URL;
|
|
423
|
+
const hoursRaw = process.env.N8N_INSTANCE_AI_TEMPLATES_REFRESH_HOURS;
|
|
424
|
+
const disabled = process.env.N8N_INSTANCE_AI_TEMPLATES_DISABLED;
|
|
425
|
+
const refreshIntervalMs = parseRefreshHoursMs(hoursRaw, logger);
|
|
426
|
+
return {
|
|
427
|
+
...(url ? { cdnBaseUrl: url } : {}),
|
|
428
|
+
...(refreshIntervalMs !== null ? { refreshIntervalMs } : {}),
|
|
429
|
+
disabled: disabled === '1' || disabled?.toLowerCase() === 'true',
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
function parseRefreshHoursMs(raw, logger) {
|
|
433
|
+
if (raw === undefined || raw === '')
|
|
434
|
+
return null;
|
|
435
|
+
const hours = Number(raw);
|
|
436
|
+
if (!Number.isFinite(hours) || hours <= 0) {
|
|
437
|
+
logger?.warn('[builder-templates] ignoring invalid N8N_INSTANCE_AI_TEMPLATES_REFRESH_HOURS, using default', { value: raw });
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
return hours * 60 * 60 * 1000;
|
|
441
|
+
}
|
|
442
|
+
//# sourceMappingURL=builder-templates-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder-templates-service.js","sourceRoot":"","sources":["../../src/workspace/builder-templates-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { Workspace
|
|
2
|
-
import {
|
|
1
|
+
import { Workspace } from '@n8n/agents';
|
|
2
|
+
import type { ErrorReporter, Logger } from '../logger';
|
|
3
|
+
import { DaytonaSandbox } from './daytona-sandbox';
|
|
4
|
+
import { LocalSandbox } from './local-sandbox';
|
|
3
5
|
import { N8nSandboxServiceSandbox } from './n8n-sandbox-sandbox';
|
|
4
6
|
export type SandboxProvider = 'daytona' | 'local' | 'n8n-sandbox';
|
|
5
7
|
interface SandboxConfigBase {
|
|
@@ -12,12 +14,18 @@ interface DisabledSandboxConfig extends SandboxConfigBase {
|
|
|
12
14
|
interface DaytonaSandboxConfig extends SandboxConfigBase {
|
|
13
15
|
enabled: true;
|
|
14
16
|
provider: 'daytona';
|
|
17
|
+
id?: string;
|
|
18
|
+
name?: string;
|
|
19
|
+
labels?: Record<string, string>;
|
|
15
20
|
daytonaApiUrl?: string;
|
|
16
21
|
daytonaApiKey?: string;
|
|
17
22
|
image?: string;
|
|
18
23
|
n8nVersion?: string;
|
|
24
|
+
namePrefix?: string;
|
|
19
25
|
createTimeoutSeconds?: number;
|
|
20
26
|
getAuthToken?: () => Promise<string>;
|
|
27
|
+
refreshSkewMs?: number;
|
|
28
|
+
logger?: Logger;
|
|
21
29
|
}
|
|
22
30
|
interface LocalSandboxConfig extends SandboxConfigBase {
|
|
23
31
|
enabled: true;
|
|
@@ -30,6 +38,11 @@ interface N8nSandboxConfig extends SandboxConfigBase {
|
|
|
30
38
|
apiKey?: string;
|
|
31
39
|
}
|
|
32
40
|
export type SandboxConfig = DisabledSandboxConfig | DaytonaSandboxConfig | LocalSandboxConfig | N8nSandboxConfig;
|
|
33
|
-
export
|
|
41
|
+
export interface CreateSandboxOptions {
|
|
42
|
+
logger?: Logger;
|
|
43
|
+
errorReporter?: ErrorReporter;
|
|
44
|
+
useSnapshotFallback?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare function createSandbox(config: SandboxConfig, options?: CreateSandboxOptions): Promise<DaytonaSandbox | LocalSandbox | N8nSandboxServiceSandbox | undefined>;
|
|
34
47
|
export declare function createWorkspace(sandbox: DaytonaSandbox | LocalSandbox | N8nSandboxServiceSandbox | undefined): Workspace | undefined;
|
|
35
48
|
export {};
|
|
@@ -2,22 +2,54 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createSandbox = createSandbox;
|
|
4
4
|
exports.createWorkspace = createWorkspace;
|
|
5
|
-
const
|
|
6
|
-
const daytona_1 = require("@mastra/daytona");
|
|
5
|
+
const agents_1 = require("@n8n/agents");
|
|
7
6
|
const daytona_filesystem_1 = require("./daytona-filesystem");
|
|
7
|
+
const daytona_sandbox_1 = require("./daytona-sandbox");
|
|
8
|
+
const lazy_daytona_1 = require("./lazy-daytona");
|
|
9
|
+
const local_filesystem_1 = require("./local-filesystem");
|
|
10
|
+
const local_sandbox_1 = require("./local-sandbox");
|
|
8
11
|
const n8n_sandbox_filesystem_1 = require("./n8n-sandbox-filesystem");
|
|
9
12
|
const n8n_sandbox_sandbox_1 = require("./n8n-sandbox-sandbox");
|
|
10
|
-
|
|
13
|
+
const snapshot_manager_1 = require("./snapshot-manager");
|
|
14
|
+
const NOOP_LOGGER = {
|
|
15
|
+
info: () => { },
|
|
16
|
+
warn: () => { },
|
|
17
|
+
error: () => { },
|
|
18
|
+
debug: () => { },
|
|
19
|
+
};
|
|
20
|
+
async function createSandbox(config, options = {}) {
|
|
11
21
|
if (!config.enabled)
|
|
12
22
|
return undefined;
|
|
13
23
|
if (config.provider === 'daytona') {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
24
|
+
const mode = config.getAuthToken ? 'proxy' : 'direct';
|
|
25
|
+
const logger = options.logger ?? config.logger;
|
|
26
|
+
const snapshotManager = options.useSnapshotFallback
|
|
27
|
+
? new snapshot_manager_1.SnapshotManager(config.image, logger ?? NOOP_LOGGER, config.n8nVersion, options.errorReporter)
|
|
28
|
+
: undefined;
|
|
29
|
+
const snapshot = snapshotManager && mode === 'direct'
|
|
30
|
+
? await snapshotManager.ensureSnapshot(new ((0, lazy_daytona_1.loadDaytona)().Daytona)({
|
|
31
|
+
apiKey: config.daytonaApiKey,
|
|
32
|
+
apiUrl: config.daytonaApiUrl,
|
|
33
|
+
}), mode)
|
|
34
|
+
: await snapshotManager?.ensureSnapshot(undefined, mode);
|
|
35
|
+
const image = snapshotManager ? await snapshotManager.ensureImage() : config.image;
|
|
36
|
+
return new daytona_sandbox_1.DaytonaSandbox({
|
|
37
|
+
id: config.id,
|
|
38
|
+
name: config.name,
|
|
39
|
+
apiKey: config.getAuthToken ? undefined : config.daytonaApiKey,
|
|
40
|
+
getAuthToken: config.getAuthToken,
|
|
41
|
+
refreshSkewMs: config.refreshSkewMs,
|
|
42
|
+
logger,
|
|
17
43
|
apiUrl: config.daytonaApiUrl,
|
|
18
|
-
|
|
44
|
+
labels: config.labels,
|
|
45
|
+
...(image ? { image } : {}),
|
|
46
|
+
...(snapshot ? { snapshot } : {}),
|
|
47
|
+
ephemeral: true,
|
|
19
48
|
language: 'typescript',
|
|
20
49
|
timeout: config.timeout ?? 300_000,
|
|
50
|
+
createTimeoutSeconds: config.createTimeoutSeconds ?? 300,
|
|
51
|
+
errorReporter: options.errorReporter,
|
|
52
|
+
createStrategyMode: mode,
|
|
21
53
|
});
|
|
22
54
|
}
|
|
23
55
|
if (config.provider === 'n8n-sandbox') {
|
|
@@ -30,28 +62,20 @@ async function createSandbox(config) {
|
|
|
30
62
|
if (process.env.NODE_ENV === 'production') {
|
|
31
63
|
throw new Error('LocalSandbox (provider: "local") is not allowed in production. Use "daytona" provider for isolated sandbox execution.');
|
|
32
64
|
}
|
|
33
|
-
return new
|
|
65
|
+
return new local_sandbox_1.LocalSandbox({
|
|
34
66
|
workingDirectory: './workspace',
|
|
35
67
|
});
|
|
36
68
|
}
|
|
37
69
|
function createWorkspace(sandbox) {
|
|
38
70
|
if (!sandbox)
|
|
39
71
|
return undefined;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
filesystem: new workspace_1.LocalFilesystem({ basePath: './workspace' }),
|
|
44
|
-
});
|
|
72
|
+
const createWorkspaceWithFilesystem = (filesystem) => new agents_1.Workspace({ sandbox, filesystem });
|
|
73
|
+
if (sandbox instanceof local_sandbox_1.LocalSandbox) {
|
|
74
|
+
return createWorkspaceWithFilesystem(new local_filesystem_1.LocalFilesystem({ basePath: './workspace' }));
|
|
45
75
|
}
|
|
46
76
|
if (sandbox instanceof n8n_sandbox_sandbox_1.N8nSandboxServiceSandbox) {
|
|
47
|
-
return new
|
|
48
|
-
sandbox,
|
|
49
|
-
filesystem: new n8n_sandbox_filesystem_1.N8nSandboxFilesystem(sandbox),
|
|
50
|
-
});
|
|
77
|
+
return createWorkspaceWithFilesystem(new n8n_sandbox_filesystem_1.N8nSandboxFilesystem(sandbox));
|
|
51
78
|
}
|
|
52
|
-
return new
|
|
53
|
-
sandbox,
|
|
54
|
-
filesystem: new daytona_filesystem_1.DaytonaFilesystem(sandbox),
|
|
55
|
-
});
|
|
79
|
+
return createWorkspaceWithFilesystem(new daytona_filesystem_1.DaytonaFilesystem(sandbox));
|
|
56
80
|
}
|
|
57
81
|
//# sourceMappingURL=create-workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-workspace.js","sourceRoot":"","sources":["../../src/workspace/create-workspace.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"create-workspace.js","sourceRoot":"","sources":["../../src/workspace/create-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Daytona } from '@daytonaio/sdk';
|
|
2
|
+
import type { Logger } from '../logger';
|
|
3
|
+
export interface DaytonaAuthManagerOptions {
|
|
4
|
+
apiUrl?: string;
|
|
5
|
+
target?: string;
|
|
6
|
+
staticApiKey?: string;
|
|
7
|
+
getAuthToken?: () => Promise<string>;
|
|
8
|
+
refreshSkewMs?: number;
|
|
9
|
+
logger?: Logger;
|
|
10
|
+
sandboxName?: string;
|
|
11
|
+
now?: () => number;
|
|
12
|
+
}
|
|
13
|
+
export declare class DaytonaAuthManager {
|
|
14
|
+
private readonly options;
|
|
15
|
+
private readonly now;
|
|
16
|
+
private readonly refreshSkewMs;
|
|
17
|
+
private client?;
|
|
18
|
+
private expiresAt;
|
|
19
|
+
private pendingRefresh?;
|
|
20
|
+
private generation;
|
|
21
|
+
constructor(options: DaytonaAuthManagerOptions);
|
|
22
|
+
getClient(): Promise<Daytona>;
|
|
23
|
+
getGeneration(): number;
|
|
24
|
+
private refresh;
|
|
25
|
+
private doRefresh;
|
|
26
|
+
}
|