langflower 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -105
- package/bin/langflower.js +15 -1
- package/dist/chunk-AO33IM2J.js +307 -0
- package/dist/chunk-CVTPGIZE.js +344 -0
- package/dist/chunk-EAZMCX37.js +44 -0
- package/dist/chunk-NIRPHJLO.js +1505 -0
- package/dist/chunk-PYLGT66P.js +126 -0
- package/dist/chunk-WV2YWHOC.js +623 -0
- package/dist/chunk-YOTMWWRH.js +2041 -0
- package/dist/index.js +80453 -1
- package/package.json +1 -8
- package/ui-dist/{chunk-UG3GFV4Y.js → chunk-BKIP5WRK.js} +1 -1
- package/ui-dist/chunk-EZTB7Q33.js +4 -0
- package/ui-dist/index.html +2 -2
- package/ui-dist/main-JJURZFKA.js +318 -0
- package/ui-dist/styles-VA3HMZK7.css +1 -0
- package/vendor/node-sdk/dist/node-factory/define-reactive-node/define-reactive-node.d.ts +1 -0
- package/vendor/node-sdk/dist/node-factory/define-reactive-node/define-reactive-node.js +1 -0
- package/vendor/node-sdk/dist/node-factory/define-reactive-node/resolve-secret.d.ts +28 -0
- package/vendor/node-sdk/dist/node-factory/define-reactive-node/resolve-secret.js +76 -0
- package/vendor/node-sdk/dist/node-factory/define-reactive-node/types.d.ts +7 -3
- package/vendor/node-sdk/dist/node-factory/define-tool-registrations/define-tool-registrations.d.ts +6 -6
- package/vendor/node-sdk/dist/node-factory/define-tool-registrations/define-tool-registrations.js +6 -6
- package/vendor/node-sdk/dist/testing/create-node-harness.d.ts +4 -0
- package/vendor/node-sdk/dist/testing/create-node-harness.js +5 -0
- package/vendor/server/skeleton/schemas/langflower-config.schema.json +5 -1
- package/vendor/server/skeleton/skills/langflower-helper/SKILL.md +46 -11
- package/vendor/server/skeleton/skills/langflower-helper/architecture.md +14 -3
- package/vendor/server/skeleton/skills/langflower-helper/layout.md +32 -29
- package/vendor/server/skeleton/skills/langflower-node-writer/SKILL.md +69 -0
- package/vendor/server/skeleton/skills/langflower-workflow-writer/SKILL.md +18 -3
- package/vendor/server/skeleton/skills/spec-architect/SKILL.md +232 -0
- package/vendor/server/skeleton/workflows/advanced-coder.json +1 -0
- package/vendor/server/skeleton/workflows/simple-coder.json +1 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -13
- package/dist/create-fake-skill-case-runner.d.ts +0 -9
- package/dist/create-fake-skill-case-runner.js +0 -73
- package/dist/create-fake-skill-case-runner.test.d.ts +0 -1
- package/dist/create-fake-skill-case-runner.test.js +0 -60
- package/dist/eval-command.d.ts +0 -2
- package/dist/eval-command.js +0 -66
- package/dist/index.d.ts +0 -1
- package/dist/start-command.d.ts +0 -5
- package/dist/start-command.js +0 -110
- package/dist/start-command.test.d.ts +0 -1
- package/dist/start-command.test.js +0 -17
- package/ui-dist/chunk-QI4IYILJ.js +0 -4
- package/ui-dist/main-ODIDCCNX.js +0 -315
- package/ui-dist/styles-2JMBAQC3.css +0 -1
- package/vendor/common-nodes/dist/ai/build-effective-system-prompt.d.ts +0 -9
- package/vendor/common-nodes/dist/ai/build-effective-system-prompt.js +0 -21
- package/vendor/common-nodes/dist/ai/chat-completion-stream.d.ts +0 -53
- package/vendor/common-nodes/dist/ai/chat-completion-stream.js +0 -1
- package/vendor/common-nodes/dist/ai/chat-input/node.d.ts +0 -25
- package/vendor/common-nodes/dist/ai/chat-input/node.js +0 -39
- package/vendor/common-nodes/dist/ai/critique/node.d.ts +0 -588
- package/vendor/common-nodes/dist/ai/critique/node.js +0 -240
- package/vendor/common-nodes/dist/ai/define-llm-node/default-llm-ports.d.ts +0 -28
- package/vendor/common-nodes/dist/ai/define-llm-node/default-llm-ports.js +0 -59
- package/vendor/common-nodes/dist/ai/define-llm-node/define-llm-node.d.ts +0 -45
- package/vendor/common-nodes/dist/ai/define-llm-node/define-llm-node.js +0 -48
- package/vendor/common-nodes/dist/ai/fake-llm/node.d.ts +0 -571
- package/vendor/common-nodes/dist/ai/fake-llm/node.js +0 -207
- package/vendor/common-nodes/dist/ai/fake-mcp-server/node.d.ts +0 -26
- package/vendor/common-nodes/dist/ai/fake-mcp-server/node.js +0 -67
- package/vendor/common-nodes/dist/ai/fake-tool-registration/node.d.ts +0 -26
- package/vendor/common-nodes/dist/ai/fake-tool-registration/node.js +0 -57
- package/vendor/common-nodes/dist/ai/features/chat-completion-stream.d.ts +0 -53
- package/vendor/common-nodes/dist/ai/features/chat-completion-stream.js +0 -1
- package/vendor/common-nodes/dist/ai/features/llm-loop/autokick-recovery.d.ts +0 -13
- package/vendor/common-nodes/dist/ai/features/llm-loop/autokick-recovery.js +0 -17
- package/vendor/common-nodes/dist/ai/features/llm-loop/classify-llm-failure.d.ts +0 -2
- package/vendor/common-nodes/dist/ai/features/llm-loop/classify-llm-failure.js +0 -113
- package/vendor/common-nodes/dist/ai/features/llm-loop/dead-loop-detector.d.ts +0 -28
- package/vendor/common-nodes/dist/ai/features/llm-loop/dead-loop-detector.js +0 -194
- package/vendor/common-nodes/dist/ai/features/llm-loop/live-get-tools.d.ts +0 -9
- package/vendor/common-nodes/dist/ai/features/llm-loop/live-get-tools.js +0 -21
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-reducer.d.ts +0 -2
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-reducer.js +0 -204
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-types.d.ts +0 -120
- package/vendor/common-nodes/dist/ai/features/llm-loop/llm-loop-types.js +0 -39
- package/vendor/common-nodes/dist/ai/features/llm-loop/normalize-llm-recovery-policy.d.ts +0 -2
- package/vendor/common-nodes/dist/ai/features/llm-loop/normalize-llm-recovery-policy.js +0 -59
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/normalize-tool-result.d.ts +0 -1
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/normalize-tool-result.js +0 -7
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/observe-provider-stream.d.ts +0 -43
- package/vendor/common-nodes/dist/ai/features/llm-loop/operators/observe-provider-stream.js +0 -96
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-agent-loop.d.ts +0 -29
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-agent-loop.js +0 -44
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-llm-loop.d.ts +0 -74
- package/vendor/common-nodes/dist/ai/features/llm-loop/run-llm-loop.js +0 -658
- package/vendor/common-nodes/dist/ai/features/llm-role-preset.d.ts +0 -69
- package/vendor/common-nodes/dist/ai/features/llm-role-preset.js +0 -265
- package/vendor/common-nodes/dist/ai/features/llm-session/llm-session-shell.d.ts +0 -141
- package/vendor/common-nodes/dist/ai/features/llm-session/llm-session-shell.js +0 -225
- package/vendor/common-nodes/dist/ai/features/llm-session/run-session-machine.d.ts +0 -32
- package/vendor/common-nodes/dist/ai/features/llm-session/run-session-machine.js +0 -118
- package/vendor/common-nodes/dist/ai/features/openai/context-length-error.d.ts +0 -14
- package/vendor/common-nodes/dist/ai/features/openai/context-length-error.js +0 -63
- package/vendor/common-nodes/dist/ai/features/openai/create-chat-completion-stream.d.ts +0 -19
- package/vendor/common-nodes/dist/ai/features/openai/create-chat-completion-stream.js +0 -182
- package/vendor/common-nodes/dist/ai/features/openai/list-provider-models.d.ts +0 -28
- package/vendor/common-nodes/dist/ai/features/openai/list-provider-models.js +0 -52
- package/vendor/common-nodes/dist/ai/features/openai/llm-context-compaction.d.ts +0 -31
- package/vendor/common-nodes/dist/ai/features/openai/llm-context-compaction.js +0 -326
- package/vendor/common-nodes/dist/ai/features/openai/normalize-compaction-params.d.ts +0 -14
- package/vendor/common-nodes/dist/ai/features/openai/normalize-compaction-params.js +0 -21
- package/vendor/common-nodes/dist/ai/features/openai/prepare-chat-completion.d.ts +0 -30
- package/vendor/common-nodes/dist/ai/features/openai/prepare-chat-completion.js +0 -132
- package/vendor/common-nodes/dist/ai/features/path-choice/control-tools.d.ts +0 -20
- package/vendor/common-nodes/dist/ai/features/path-choice/control-tools.js +0 -70
- package/vendor/common-nodes/dist/ai/features/path-choice/run-reactive-path-choice-loop.d.ts +0 -32
- package/vendor/common-nodes/dist/ai/features/path-choice/run-reactive-path-choice-loop.js +0 -93
- package/vendor/common-nodes/dist/ai/features/prompt/build-effective-system-prompt.d.ts +0 -9
- package/vendor/common-nodes/dist/ai/features/prompt/build-effective-system-prompt.js +0 -21
- package/vendor/common-nodes/dist/ai/features/prompt/normalize-max-iterations.d.ts +0 -13
- package/vendor/common-nodes/dist/ai/features/prompt/normalize-max-iterations.js +0 -23
- package/vendor/common-nodes/dist/ai/features/prompt/resolve-chat-provider-model.d.ts +0 -10
- package/vendor/common-nodes/dist/ai/features/prompt/resolve-chat-provider-model.js +0 -8
- package/vendor/common-nodes/dist/ai/features/run-host-services.d.ts +0 -64
- package/vendor/common-nodes/dist/ai/features/run-host-services.js +0 -29
- package/vendor/common-nodes/dist/ai/features/scripted-chat-completion-stream.d.ts +0 -17
- package/vendor/common-nodes/dist/ai/features/scripted-chat-completion-stream.js +0 -61
- package/vendor/common-nodes/dist/ai/features/sub-agent-protocol.d.ts +0 -40
- package/vendor/common-nodes/dist/ai/features/sub-agent-protocol.js +0 -44
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-compaction-ui-schema.d.ts +0 -14
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-compaction-ui-schema.js +0 -18
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-panel-ui-schema.d.ts +0 -80
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-panel-ui-schema.js +0 -76
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-recovery-ui-schema.d.ts +0 -113
- package/vendor/common-nodes/dist/ai/features/ui-schema/llm-recovery-ui-schema.js +0 -131
- package/vendor/common-nodes/dist/ai/features/wait-for-subagent-result.d.ts +0 -7
- package/vendor/common-nodes/dist/ai/features/wait-for-subagent-result.js +0 -31
- package/vendor/common-nodes/dist/ai/filter-enabled-registrations.d.ts +0 -9
- package/vendor/common-nodes/dist/ai/filter-enabled-registrations.js +0 -18
- package/vendor/common-nodes/dist/ai/flatten-mcp-server-configs.d.ts +0 -7
- package/vendor/common-nodes/dist/ai/flatten-mcp-server-configs.js +0 -21
- package/vendor/common-nodes/dist/ai/inventory-tool-round.d.ts +0 -33
- package/vendor/common-nodes/dist/ai/inventory-tool-round.js +0 -215
- package/vendor/common-nodes/dist/ai/llm-compaction-ui-schema.d.ts +0 -14
- package/vendor/common-nodes/dist/ai/llm-compaction-ui-schema.js +0 -18
- package/vendor/common-nodes/dist/ai/llm-loop/autokick-recovery.d.ts +0 -13
- package/vendor/common-nodes/dist/ai/llm-loop/autokick-recovery.js +0 -17
- package/vendor/common-nodes/dist/ai/llm-loop/classify-llm-failure.d.ts +0 -2
- package/vendor/common-nodes/dist/ai/llm-loop/classify-llm-failure.js +0 -113
- package/vendor/common-nodes/dist/ai/llm-loop/dead-loop-detector.d.ts +0 -28
- package/vendor/common-nodes/dist/ai/llm-loop/dead-loop-detector.js +0 -194
- package/vendor/common-nodes/dist/ai/llm-loop/llm-loop-reducer.d.ts +0 -2
- package/vendor/common-nodes/dist/ai/llm-loop/llm-loop-reducer.js +0 -216
- package/vendor/common-nodes/dist/ai/llm-loop/llm-loop-types.d.ts +0 -125
- package/vendor/common-nodes/dist/ai/llm-loop/llm-loop-types.js +0 -39
- package/vendor/common-nodes/dist/ai/llm-loop/normalize-llm-recovery-policy.d.ts +0 -2
- package/vendor/common-nodes/dist/ai/llm-loop/normalize-llm-recovery-policy.js +0 -59
- package/vendor/common-nodes/dist/ai/llm-loop/operators/normalize-tool-result.d.ts +0 -1
- package/vendor/common-nodes/dist/ai/llm-loop/operators/normalize-tool-result.js +0 -7
- package/vendor/common-nodes/dist/ai/llm-loop/operators/observe-provider-stream.d.ts +0 -43
- package/vendor/common-nodes/dist/ai/llm-loop/operators/observe-provider-stream.js +0 -96
- package/vendor/common-nodes/dist/ai/llm-loop/run-agent-loop.d.ts +0 -31
- package/vendor/common-nodes/dist/ai/llm-loop/run-agent-loop.js +0 -57
- package/vendor/common-nodes/dist/ai/llm-loop/run-llm-loop.d.ts +0 -79
- package/vendor/common-nodes/dist/ai/llm-loop/run-llm-loop.js +0 -637
- package/vendor/common-nodes/dist/ai/llm-panel-ui-schema.d.ts +0 -80
- package/vendor/common-nodes/dist/ai/llm-panel-ui-schema.js +0 -76
- package/vendor/common-nodes/dist/ai/llm-recovery-ui-schema.d.ts +0 -113
- package/vendor/common-nodes/dist/ai/llm-recovery-ui-schema.js +0 -131
- package/vendor/common-nodes/dist/ai/llm-role-preset.d.ts +0 -69
- package/vendor/common-nodes/dist/ai/llm-role-preset.js +0 -265
- package/vendor/common-nodes/dist/ai/llm-session/run-session-machine.d.ts +0 -21
- package/vendor/common-nodes/dist/ai/llm-session/run-session-machine.js +0 -118
- package/vendor/common-nodes/dist/ai/llm-session-shell.d.ts +0 -147
- package/vendor/common-nodes/dist/ai/llm-session-shell.js +0 -189
- package/vendor/common-nodes/dist/ai/mcp-server/node.d.ts +0 -26
- package/vendor/common-nodes/dist/ai/mcp-server/node.js +0 -68
- package/vendor/common-nodes/dist/ai/mcp-server-config.d.ts +0 -16
- package/vendor/common-nodes/dist/ai/mcp-server-config.js +0 -2
- package/vendor/common-nodes/dist/ai/mcp-tool-id.d.ts +0 -11
- package/vendor/common-nodes/dist/ai/mcp-tool-id.js +0 -30
- package/vendor/common-nodes/dist/ai/merge-tool-inventory.d.ts +0 -10
- package/vendor/common-nodes/dist/ai/merge-tool-inventory.js +0 -26
- package/vendor/common-nodes/dist/ai/nodes/critique/node.d.ts +0 -588
- package/vendor/common-nodes/dist/ai/nodes/critique/node.js +0 -231
- package/vendor/common-nodes/dist/ai/nodes/fake-llm/node.d.ts +0 -571
- package/vendor/common-nodes/dist/ai/nodes/fake-llm/node.js +0 -207
- package/vendor/common-nodes/dist/ai/nodes/openai-llm/node.d.ts +0 -587
- package/vendor/common-nodes/dist/ai/nodes/openai-llm/node.js +0 -88
- package/vendor/common-nodes/dist/ai/nodes/review/node.d.ts +0 -593
- package/vendor/common-nodes/dist/ai/nodes/review/node.js +0 -233
- package/vendor/common-nodes/dist/ai/nodes/sub-agent/node.d.ts +0 -630
- package/vendor/common-nodes/dist/ai/nodes/sub-agent/node.js +0 -457
- package/vendor/common-nodes/dist/ai/normalize-max-iterations.d.ts +0 -13
- package/vendor/common-nodes/dist/ai/normalize-max-iterations.js +0 -23
- package/vendor/common-nodes/dist/ai/openai/context-length-error.d.ts +0 -14
- package/vendor/common-nodes/dist/ai/openai/context-length-error.js +0 -63
- package/vendor/common-nodes/dist/ai/openai/create-chat-completion-stream.d.ts +0 -19
- package/vendor/common-nodes/dist/ai/openai/create-chat-completion-stream.js +0 -182
- package/vendor/common-nodes/dist/ai/openai/create-embedding.d.ts +0 -18
- package/vendor/common-nodes/dist/ai/openai/create-embedding.js +0 -43
- package/vendor/common-nodes/dist/ai/openai/list-provider-models.d.ts +0 -28
- package/vendor/common-nodes/dist/ai/openai/list-provider-models.js +0 -52
- package/vendor/common-nodes/dist/ai/openai/llm-context-compaction.d.ts +0 -31
- package/vendor/common-nodes/dist/ai/openai/llm-context-compaction.js +0 -326
- package/vendor/common-nodes/dist/ai/openai/normalize-compaction-params.d.ts +0 -14
- package/vendor/common-nodes/dist/ai/openai/normalize-compaction-params.js +0 -21
- package/vendor/common-nodes/dist/ai/openai/prepare-chat-completion.d.ts +0 -30
- package/vendor/common-nodes/dist/ai/openai/prepare-chat-completion.js +0 -132
- package/vendor/common-nodes/dist/ai/openai-llm/node.d.ts +0 -587
- package/vendor/common-nodes/dist/ai/openai-llm/node.js +0 -88
- package/vendor/common-nodes/dist/ai/path-choice/control-tools.d.ts +0 -20
- package/vendor/common-nodes/dist/ai/path-choice/control-tools.js +0 -70
- package/vendor/common-nodes/dist/ai/path-choice/run-path-choice-tool-loop.d.ts +0 -54
- package/vendor/common-nodes/dist/ai/path-choice/run-path-choice-tool-loop.js +0 -242
- package/vendor/common-nodes/dist/ai/path-choice/run-reactive-path-choice-loop.d.ts +0 -35
- package/vendor/common-nodes/dist/ai/path-choice/run-reactive-path-choice-loop.js +0 -106
- package/vendor/common-nodes/dist/ai/resolve-chat-provider-model.d.ts +0 -10
- package/vendor/common-nodes/dist/ai/resolve-chat-provider-model.js +0 -8
- package/vendor/common-nodes/dist/ai/resolve-mcp-inventory.d.ts +0 -8
- package/vendor/common-nodes/dist/ai/resolve-mcp-inventory.js +0 -43
- package/vendor/common-nodes/dist/ai/review/node.d.ts +0 -593
- package/vendor/common-nodes/dist/ai/review/node.js +0 -240
- package/vendor/common-nodes/dist/ai/review/review-control-tools.d.ts +0 -20
- package/vendor/common-nodes/dist/ai/review/review-control-tools.js +0 -70
- package/vendor/common-nodes/dist/ai/review/run-review-tool-loop.d.ts +0 -44
- package/vendor/common-nodes/dist/ai/review/run-review-tool-loop.js +0 -193
- package/vendor/common-nodes/dist/ai/run-host-services.d.ts +0 -32
- package/vendor/common-nodes/dist/ai/run-host-services.js +0 -11
- package/vendor/common-nodes/dist/ai/run-internal-tool-loop.d.ts +0 -39
- package/vendor/common-nodes/dist/ai/run-internal-tool-loop.js +0 -138
- package/vendor/common-nodes/dist/ai/scripted-chat-completion-stream.d.ts +0 -17
- package/vendor/common-nodes/dist/ai/scripted-chat-completion-stream.js +0 -61
- package/vendor/common-nodes/dist/ai/sub-agent/node.d.ts +0 -630
- package/vendor/common-nodes/dist/ai/sub-agent/node.js +0 -302
- package/vendor/common-nodes/dist/ai/sub-agent-protocol.d.ts +0 -39
- package/vendor/common-nodes/dist/ai/sub-agent-protocol.js +0 -43
- package/vendor/common-nodes/dist/ai/tool-handler-context.d.ts +0 -4
- package/vendor/common-nodes/dist/ai/tool-handler-context.js +0 -16
- package/vendor/common-nodes/dist/ai/tool-registration.d.ts +0 -6
- package/vendor/common-nodes/dist/ai/tool-registration.js +0 -33
- package/vendor/common-nodes/dist/ai/wait-for-subagent-result.d.ts +0 -6
- package/vendor/common-nodes/dist/ai/wait-for-subagent-result.js +0 -30
- package/vendor/common-nodes/dist/catalog.d.ts +0 -6
- package/vendor/common-nodes/dist/catalog.js +0 -95
- package/vendor/common-nodes/dist/compile-custom-nodes/node.d.ts +0 -21
- package/vendor/common-nodes/dist/compile-custom-nodes/node.js +0 -45
- package/vendor/common-nodes/dist/crawl/crawl/node.d.ts +0 -99
- package/vendor/common-nodes/dist/crawl/crawl/node.js +0 -128
- package/vendor/common-nodes/dist/crawl/crawl-tools/node.d.ts +0 -20
- package/vendor/common-nodes/dist/crawl/crawl-tools/node.js +0 -17
- package/vendor/common-nodes/dist/crawl/extract-links/node.d.ts +0 -22
- package/vendor/common-nodes/dist/crawl/extract-links/node.js +0 -45
- package/vendor/common-nodes/dist/crawl/fetch-url/node.d.ts +0 -56
- package/vendor/common-nodes/dist/crawl/fetch-url/node.js +0 -89
- package/vendor/common-nodes/dist/crawl/html/extract-links.d.ts +0 -3
- package/vendor/common-nodes/dist/crawl/html/extract-links.js +0 -36
- package/vendor/common-nodes/dist/crawl/html/html-to-text.d.ts +0 -3
- package/vendor/common-nodes/dist/crawl/html/html-to-text.js +0 -36
- package/vendor/common-nodes/dist/crawl/html/index.d.ts +0 -3
- package/vendor/common-nodes/dist/crawl/html/index.js +0 -3
- package/vendor/common-nodes/dist/crawl/save-page/node.d.ts +0 -21
- package/vendor/common-nodes/dist/crawl/save-page/node.js +0 -71
- package/vendor/common-nodes/dist/crawl/tool-defs.d.ts +0 -81
- package/vendor/common-nodes/dist/crawl/tool-defs.js +0 -56
- package/vendor/common-nodes/dist/embeddings/create-embedding.d.ts +0 -39
- package/vendor/common-nodes/dist/embeddings/create-embedding.js +0 -154
- package/vendor/common-nodes/dist/embeddings/embed-provider/node.d.ts +0 -53
- package/vendor/common-nodes/dist/embeddings/embed-provider/node.js +0 -126
- package/vendor/common-nodes/dist/embeddings/embed-similarity/node.d.ts +0 -20
- package/vendor/common-nodes/dist/embeddings/embed-similarity/node.js +0 -81
- package/vendor/common-nodes/dist/embeddings/embed-text/node.d.ts +0 -53
- package/vendor/common-nodes/dist/embeddings/embed-text/node.js +0 -91
- package/vendor/common-nodes/dist/embeddings/from-embedding.d.ts +0 -8
- package/vendor/common-nodes/dist/embeddings/from-embedding.js +0 -24
- package/vendor/common-nodes/dist/embeddings/resolve-embedding-provider-model.d.ts +0 -11
- package/vendor/common-nodes/dist/embeddings/resolve-embedding-provider-model.js +0 -8
- package/vendor/common-nodes/dist/flow/checkpoint/node.d.ts +0 -23
- package/vendor/common-nodes/dist/flow/checkpoint/node.js +0 -44
- package/vendor/common-nodes/dist/flow/delay/node.d.ts +0 -22
- package/vendor/common-nodes/dist/flow/delay/node.js +0 -46
- package/vendor/common-nodes/dist/flow/loop/node.d.ts +0 -22
- package/vendor/common-nodes/dist/flow/loop/node.js +0 -51
- package/vendor/common-nodes/dist/flow/map-collect-body.d.ts +0 -21
- package/vendor/common-nodes/dist/flow/map-collect-body.js +0 -73
- package/vendor/common-nodes/dist/flow/merge/node.d.ts +0 -17
- package/vendor/common-nodes/dist/flow/merge/node.js +0 -31
- package/vendor/common-nodes/dist/flow/repeat/node.d.ts +0 -20
- package/vendor/common-nodes/dist/flow/repeat/node.js +0 -65
- package/vendor/common-nodes/dist/flow/router/build-router-definition.d.ts +0 -20
- package/vendor/common-nodes/dist/flow/router/build-router-definition.js +0 -23
- package/vendor/common-nodes/dist/flow/router/node.d.ts +0 -17
- package/vendor/common-nodes/dist/flow/router/node.js +0 -20
- package/vendor/common-nodes/dist/flow/router/router-constants.d.ts +0 -2
- package/vendor/common-nodes/dist/flow/router/router-constants.js +0 -2
- package/vendor/common-nodes/dist/hitl/approval-choice/node.d.ts +0 -23
- package/vendor/common-nodes/dist/hitl/approval-choice/node.js +0 -71
- package/vendor/common-nodes/dist/hitl/ask-user/node.d.ts +0 -23
- package/vendor/common-nodes/dist/hitl/ask-user/node.js +0 -40
- package/vendor/common-nodes/dist/hitl/chat-input/node.d.ts +0 -20
- package/vendor/common-nodes/dist/hitl/chat-input/node.js +0 -43
- package/vendor/common-nodes/dist/hitl/hitl-required-role.d.ts +0 -38
- package/vendor/common-nodes/dist/hitl/hitl-required-role.js +0 -21
- package/vendor/common-nodes/dist/hitl/review-gate/node.d.ts +0 -17
- package/vendor/common-nodes/dist/hitl/review-gate/node.js +0 -70
- package/vendor/common-nodes/dist/kb/chunk-text.d.ts +0 -8
- package/vendor/common-nodes/dist/kb/chunk-text.js +0 -52
- package/vendor/common-nodes/dist/kb/cosine.d.ts +0 -3
- package/vendor/common-nodes/dist/kb/cosine.js +0 -21
- package/vendor/common-nodes/dist/kb/kb-apply-curation/node.d.ts +0 -25
- package/vendor/common-nodes/dist/kb/kb-apply-curation/node.js +0 -38
- package/vendor/common-nodes/dist/kb/kb-contradict/node.d.ts +0 -25
- package/vendor/common-nodes/dist/kb/kb-contradict/node.js +0 -70
- package/vendor/common-nodes/dist/kb/kb-dedupe/node.d.ts +0 -25
- package/vendor/common-nodes/dist/kb/kb-dedupe/node.js +0 -61
- package/vendor/common-nodes/dist/kb/kb-delete/node.d.ts +0 -24
- package/vendor/common-nodes/dist/kb/kb-delete/node.js +0 -60
- package/vendor/common-nodes/dist/kb/kb-embed/node.d.ts +0 -26
- package/vendor/common-nodes/dist/kb/kb-embed/node.js +0 -52
- package/vendor/common-nodes/dist/kb/kb-ingest/node.d.ts +0 -25
- package/vendor/common-nodes/dist/kb/kb-ingest/node.js +0 -68
- package/vendor/common-nodes/dist/kb/kb-list/node.d.ts +0 -24
- package/vendor/common-nodes/dist/kb/kb-list/node.js +0 -42
- package/vendor/common-nodes/dist/kb/kb-paths.d.ts +0 -8
- package/vendor/common-nodes/dist/kb/kb-paths.js +0 -19
- package/vendor/common-nodes/dist/kb/kb-search/node.d.ts +0 -24
- package/vendor/common-nodes/dist/kb/kb-search/node.js +0 -60
- package/vendor/common-nodes/dist/kb/kb-store.d.ts +0 -57
- package/vendor/common-nodes/dist/kb/kb-store.js +0 -290
- package/vendor/common-nodes/dist/kb/kb-tools/node.d.ts +0 -25
- package/vendor/common-nodes/dist/kb/kb-tools/node.js +0 -14
- package/vendor/common-nodes/dist/kb/local-embed.d.ts +0 -9
- package/vendor/common-nodes/dist/kb/local-embed.js +0 -41
- package/vendor/common-nodes/dist/kb/parse-string-list.d.ts +0 -3
- package/vendor/common-nodes/dist/kb/parse-string-list.js +0 -25
- package/vendor/common-nodes/dist/kb/tool-defs.d.ts +0 -85
- package/vendor/common-nodes/dist/kb/tool-defs.js +0 -67
- package/vendor/common-nodes/dist/langflower-tools/emit-registration-tools.d.ts +0 -18
- package/vendor/common-nodes/dist/langflower-tools/emit-registration-tools.js +0 -29
- package/vendor/common-nodes/dist/langflower-tools/node.d.ts +0 -20
- package/vendor/common-nodes/dist/langflower-tools/node.js +0 -81
- package/vendor/common-nodes/dist/logic/assert/node.d.ts +0 -20
- package/vendor/common-nodes/dist/logic/assert/node.js +0 -56
- package/vendor/common-nodes/dist/logic/compare/evaluate-compare.d.ts +0 -28
- package/vendor/common-nodes/dist/logic/compare/evaluate-compare.js +0 -60
- package/vendor/common-nodes/dist/logic/compare/node.d.ts +0 -107
- package/vendor/common-nodes/dist/logic/compare/node.js +0 -46
- package/vendor/common-nodes/dist/logic/gate/node.d.ts +0 -17
- package/vendor/common-nodes/dist/logic/gate/node.js +0 -41
- package/vendor/common-nodes/dist/logic/if/node.d.ts +0 -17
- package/vendor/common-nodes/dist/logic/if/node.js +0 -46
- package/vendor/common-nodes/dist/logic/switch/build-switch-definition.d.ts +0 -18
- package/vendor/common-nodes/dist/logic/switch/build-switch-definition.js +0 -30
- package/vendor/common-nodes/dist/logic/switch/node.d.ts +0 -87
- package/vendor/common-nodes/dist/logic/switch/node.js +0 -75
- package/vendor/common-nodes/dist/logic/switch/switch-constants.d.ts +0 -15
- package/vendor/common-nodes/dist/logic/switch/switch-constants.js +0 -24
- package/vendor/common-nodes/dist/logic/switch/switch-rules.d.ts +0 -6
- package/vendor/common-nodes/dist/logic/switch/switch-rules.js +0 -43
- package/vendor/common-nodes/dist/mcp/build-mcp-handle.d.ts +0 -13
- package/vendor/common-nodes/dist/mcp/build-mcp-handle.js +0 -65
- package/vendor/common-nodes/dist/mcp/build-mcp-transport.d.ts +0 -14
- package/vendor/common-nodes/dist/mcp/build-mcp-transport.js +0 -56
- package/vendor/common-nodes/dist/mcp/collect-mcp-tool-registrations.d.ts +0 -7
- package/vendor/common-nodes/dist/mcp/collect-mcp-tool-registrations.js +0 -19
- package/vendor/common-nodes/dist/mcp/create-system-mcp-transports.d.ts +0 -48
- package/vendor/common-nodes/dist/mcp/create-system-mcp-transports.js +0 -124
- package/vendor/common-nodes/dist/mcp/flatten-mcp-handles.d.ts +0 -6
- package/vendor/common-nodes/dist/mcp/flatten-mcp-handles.js +0 -21
- package/vendor/common-nodes/dist/mcp/flatten-mcp-server-configs.d.ts +0 -7
- package/vendor/common-nodes/dist/mcp/flatten-mcp-server-configs.js +0 -21
- package/vendor/common-nodes/dist/mcp/flatten-mcp-transports.d.ts +0 -7
- package/vendor/common-nodes/dist/mcp/flatten-mcp-transports.js +0 -22
- package/vendor/common-nodes/dist/mcp/format-mcp-connect-error.d.ts +0 -10
- package/vendor/common-nodes/dist/mcp/format-mcp-connect-error.js +0 -18
- package/vendor/common-nodes/dist/mcp/mcp-http/node.d.ts +0 -22
- package/vendor/common-nodes/dist/mcp/mcp-http/node.js +0 -104
- package/vendor/common-nodes/dist/mcp/mcp-server/node.d.ts +0 -26
- package/vendor/common-nodes/dist/mcp/mcp-server/node.js +0 -68
- package/vendor/common-nodes/dist/mcp/mcp-server-config.d.ts +0 -2
- package/vendor/common-nodes/dist/mcp/mcp-server-config.js +0 -2
- package/vendor/common-nodes/dist/mcp/mcp-stdio/node.d.ts +0 -22
- package/vendor/common-nodes/dist/mcp/mcp-stdio/node.js +0 -93
- package/vendor/common-nodes/dist/mcp/resolve-agent-mcp-inventory.d.ts +0 -13
- package/vendor/common-nodes/dist/mcp/resolve-agent-mcp-inventory.js +0 -17
- package/vendor/common-nodes/dist/mcp/resolve-mcp-inventory.d.ts +0 -8
- package/vendor/common-nodes/dist/mcp/resolve-mcp-inventory.js +0 -43
- package/vendor/common-nodes/dist/memory/memory/node.d.ts +0 -79
- package/vendor/common-nodes/dist/memory/memory/node.js +0 -76
- package/vendor/common-nodes/dist/memory/memory-tools/node.d.ts +0 -20
- package/vendor/common-nodes/dist/memory/memory-tools/node.js +0 -17
- package/vendor/common-nodes/dist/memory/tool-defs.d.ts +0 -48
- package/vendor/common-nodes/dist/memory/tool-defs.js +0 -45
- package/vendor/common-nodes/dist/obsidian/build-moc/node.d.ts +0 -26
- package/vendor/common-nodes/dist/obsidian/build-moc/node.js +0 -52
- package/vendor/common-nodes/dist/obsidian/build-moc.d.ts +0 -13
- package/vendor/common-nodes/dist/obsidian/build-moc.js +0 -57
- package/vendor/common-nodes/dist/obsidian/frontmatter/node.d.ts +0 -27
- package/vendor/common-nodes/dist/obsidian/frontmatter/node.js +0 -66
- package/vendor/common-nodes/dist/obsidian/frontmatter.d.ts +0 -26
- package/vendor/common-nodes/dist/obsidian/frontmatter.js +0 -142
- package/vendor/common-nodes/dist/obsidian/wikilink-rewrite/node.d.ts +0 -26
- package/vendor/common-nodes/dist/obsidian/wikilink-rewrite/node.js +0 -51
- package/vendor/common-nodes/dist/obsidian/wikilinks.d.ts +0 -22
- package/vendor/common-nodes/dist/obsidian/wikilinks.js +0 -84
- package/vendor/common-nodes/dist/output/finish/node.d.ts +0 -17
- package/vendor/common-nodes/dist/output/finish/node.js +0 -34
- package/vendor/common-nodes/dist/output/preview/node.d.ts +0 -17
- package/vendor/common-nodes/dist/output/preview/node.js +0 -48
- package/vendor/common-nodes/dist/primitives/boolean/node.d.ts +0 -17
- package/vendor/common-nodes/dist/primitives/boolean/node.js +0 -31
- package/vendor/common-nodes/dist/primitives/number/node.d.ts +0 -17
- package/vendor/common-nodes/dist/primitives/number/node.js +0 -31
- package/vendor/common-nodes/dist/primitives/string/node.d.ts +0 -17
- package/vendor/common-nodes/dist/primitives/string/node.js +0 -31
- package/vendor/common-nodes/dist/primitives/string-multiline/node.d.ts +0 -17
- package/vendor/common-nodes/dist/primitives/string-multiline/node.js +0 -31
- package/vendor/common-nodes/dist/resolve-workflow-node-definition.d.ts +0 -7
- package/vendor/common-nodes/dist/resolve-workflow-node-definition.js +0 -3
- package/vendor/common-nodes/dist/text/append-file/node.d.ts +0 -20
- package/vendor/common-nodes/dist/text/append-file/node.js +0 -68
- package/vendor/common-nodes/dist/text/concat/node.d.ts +0 -17
- package/vendor/common-nodes/dist/text/concat/node.js +0 -38
- package/vendor/common-nodes/dist/text/read-file/node.d.ts +0 -20
- package/vendor/common-nodes/dist/text/read-file/node.js +0 -57
- package/vendor/common-nodes/dist/text/split-paced/node.d.ts +0 -21
- package/vendor/common-nodes/dist/text/split-paced/node.js +0 -93
- package/vendor/common-nodes/dist/text/write-file/node.d.ts +0 -19
- package/vendor/common-nodes/dist/text/write-file/node.js +0 -60
- package/vendor/common-nodes/dist/tools/collect-agent-tool-handles.d.ts +0 -12
- package/vendor/common-nodes/dist/tools/collect-agent-tool-handles.js +0 -42
- package/vendor/common-nodes/dist/tools/filter-enabled-registrations.d.ts +0 -8
- package/vendor/common-nodes/dist/tools/filter-enabled-registrations.js +0 -17
- package/vendor/common-nodes/dist/tools/inventory-tool-round.d.ts +0 -20
- package/vendor/common-nodes/dist/tools/inventory-tool-round.js +0 -91
- package/vendor/common-nodes/dist/tools/merge-tool-inventory.d.ts +0 -10
- package/vendor/common-nodes/dist/tools/merge-tool-inventory.js +0 -26
- package/vendor/common-nodes/dist/tools/run-internal-tool-loop.d.ts +0 -55
- package/vendor/common-nodes/dist/tools/run-internal-tool-loop.js +0 -360
- package/vendor/common-nodes/dist/tools/tool-collection/node.d.ts +0 -20
- package/vendor/common-nodes/dist/tools/tool-collection/node.js +0 -45
- package/vendor/common-nodes/dist/tools/tool-registration.d.ts +0 -6
- package/vendor/common-nodes/dist/tools/tool-registration.js +0 -33
- package/vendor/common-nodes/package.json +0 -48
- package/vendor/compiler/dist/bundle-pack.d.ts +0 -18
- package/vendor/compiler/dist/bundle-pack.js +0 -98
- package/vendor/compiler/dist/cache-key.d.ts +0 -5
- package/vendor/compiler/dist/cache-key.js +0 -35
- package/vendor/compiler/dist/compile-project-nodes.d.ts +0 -14
- package/vendor/compiler/dist/compile-project-nodes.js +0 -143
- package/vendor/compiler/dist/compile-types.d.ts +0 -22
- package/vendor/compiler/dist/compile-types.js +0 -1
- package/vendor/compiler/dist/discover-packs.d.ts +0 -6
- package/vendor/compiler/dist/discover-packs.js +0 -93
- package/vendor/compiler/dist/format-compilation-errors.d.ts +0 -17
- package/vendor/compiler/dist/format-compilation-errors.js +0 -62
- package/vendor/compiler/dist/resolve-host-types.d.ts +0 -27
- package/vendor/compiler/dist/resolve-host-types.js +0 -185
- package/vendor/compiler/dist/typecheck-pack.d.ts +0 -20
- package/vendor/compiler/dist/typecheck-pack.js +0 -102
- package/vendor/compiler/dist/validate-default-export.d.ts +0 -9
- package/vendor/compiler/dist/validate-default-export.js +0 -40
- package/vendor/compiler/dist/write-compilation-errors.d.ts +0 -4
- package/vendor/compiler/dist/write-compilation-errors.js +0 -27
- package/vendor/compiler/package.json +0 -26
- package/vendor/eval/dist/eval-pack-types.d.ts +0 -14
- package/vendor/eval/dist/eval-pack-types.js +0 -1
- package/vendor/eval/dist/load-pack.d.ts +0 -5
- package/vendor/eval/dist/load-pack.js +0 -97
- package/vendor/eval/dist/load-skill-via-read.d.ts +0 -6
- package/vendor/eval/dist/load-skill-via-read.js +0 -14
- package/vendor/eval/dist/run-eval-suite.d.ts +0 -46
- package/vendor/eval/dist/run-eval-suite.js +0 -90
- package/vendor/eval/dist/score-case.d.ts +0 -2
- package/vendor/eval/dist/score-case.js +0 -10
- package/vendor/eval/package.json +0 -21
- package/vendor/server/dist/bootstrap/copy-force.d.ts +0 -7
- package/vendor/server/dist/bootstrap/copy-force.js +0 -18
- package/vendor/server/dist/bootstrap/copy-if-missing.d.ts +0 -7
- package/vendor/server/dist/bootstrap/copy-if-missing.js +0 -32
- package/vendor/server/dist/bootstrap/project-bootstrap.service.d.ts +0 -17
- package/vendor/server/dist/bootstrap/project-bootstrap.service.js +0 -82
- package/vendor/server/dist/bootstrap/project-bootstrap.service.test.d.ts +0 -2
- package/vendor/server/dist/bootstrap/project-bootstrap.service.test.js +0 -20
- package/vendor/server/dist/bootstrap/resolve-skeleton-root.d.ts +0 -8
- package/vendor/server/dist/bootstrap/resolve-skeleton-root.js +0 -34
- package/vendor/server/dist/bootstrap/seed-skeleton.d.ts +0 -15
- package/vendor/server/dist/bootstrap/seed-skeleton.js +0 -70
- package/vendor/server/dist/bridge/attach-langflower-bridge.d.ts +0 -19
- package/vendor/server/dist/bridge/attach-langflower-bridge.js +0 -79
- package/vendor/server/dist/bridge/bind-embed-context.d.ts +0 -7
- package/vendor/server/dist/bridge/bind-embed-context.js +0 -16
- package/vendor/server/dist/bridge/bind-llm-context.d.ts +0 -13
- package/vendor/server/dist/bridge/bind-llm-context.js +0 -30
- package/vendor/server/dist/bridge/bridge-event-log.d.ts +0 -12
- package/vendor/server/dist/bridge/bridge-event-log.js +0 -114
- package/vendor/server/dist/bridge/bridge-outbound.d.ts +0 -4
- package/vendor/server/dist/bridge/bridge-outbound.js +0 -14
- package/vendor/server/dist/bridge/build-execution-context.d.ts +0 -31
- package/vendor/server/dist/bridge/build-execution-context.js +0 -223
- package/vendor/server/dist/bridge/build-execution-context.test.d.ts +0 -2
- package/vendor/server/dist/bridge/build-execution-context.test.js +0 -126
- package/vendor/server/dist/bridge/build-langflower-config-snapshot.d.ts +0 -6
- package/vendor/server/dist/bridge/build-langflower-config-snapshot.js +0 -17
- package/vendor/server/dist/bridge/client-index.d.ts +0 -5
- package/vendor/server/dist/bridge/client-index.js +0 -16
- package/vendor/server/dist/bridge/emit-bootstrap.d.ts +0 -16
- package/vendor/server/dist/bridge/emit-bootstrap.js +0 -82
- package/vendor/server/dist/bridge/forward-runner-event.d.ts +0 -4
- package/vendor/server/dist/bridge/forward-runner-event.js +0 -12
- package/vendor/server/dist/bridge/forward-runner-event.test.d.ts +0 -2
- package/vendor/server/dist/bridge/forward-runner-event.test.js +0 -91
- package/vendor/server/dist/bridge/get-live-wired-tools.d.ts +0 -13
- package/vendor/server/dist/bridge/get-live-wired-tools.js +0 -83
- package/vendor/server/dist/bridge/inbound-guards.d.ts +0 -2
- package/vendor/server/dist/bridge/inbound-guards.js +0 -4
- package/vendor/server/dist/bridge/langflower-bridge.types.d.ts +0 -4
- package/vendor/server/dist/bridge/langflower-bridge.types.js +0 -1
- package/vendor/server/dist/bridge/langflower-tools-rpc.d.ts +0 -7
- package/vendor/server/dist/bridge/langflower-tools-rpc.js +0 -29
- package/vendor/server/dist/bridge/push-models-catalog.d.ts +0 -12
- package/vendor/server/dist/bridge/push-models-catalog.js +0 -31
- package/vendor/server/dist/bridge/same-canvas-viewport.d.ts +0 -3
- package/vendor/server/dist/bridge/same-canvas-viewport.js +0 -5
- package/vendor/server/dist/bridge/settings-draft-controller.d.ts +0 -14
- package/vendor/server/dist/bridge/settings-draft-controller.js +0 -205
- package/vendor/server/dist/bridge/wire-config-handlers.d.ts +0 -11
- package/vendor/server/dist/bridge/wire-config-handlers.js +0 -51
- package/vendor/server/dist/bridge/wire-custom-palette-handlers.d.ts +0 -5
- package/vendor/server/dist/bridge/wire-custom-palette-handlers.js +0 -8
- package/vendor/server/dist/bridge/wire-editor-handlers.d.ts +0 -12
- package/vendor/server/dist/bridge/wire-editor-handlers.js +0 -254
- package/vendor/server/dist/bridge/wire-models-handlers.d.ts +0 -5
- package/vendor/server/dist/bridge/wire-models-handlers.js +0 -23
- package/vendor/server/dist/bridge/wire-palette-handlers.d.ts +0 -4
- package/vendor/server/dist/bridge/wire-palette-handlers.js +0 -9
- package/vendor/server/dist/bridge/wire-project-bootstrap-handlers.d.ts +0 -9
- package/vendor/server/dist/bridge/wire-project-bootstrap-handlers.js +0 -63
- package/vendor/server/dist/bridge/wire-runner-handlers.d.ts +0 -10
- package/vendor/server/dist/bridge/wire-runner-handlers.js +0 -302
- package/vendor/server/dist/bridge/wire-workflow-handlers.d.ts +0 -5
- package/vendor/server/dist/bridge/wire-workflow-handlers.js +0 -245
- package/vendor/server/dist/bridge/wrap-builtin-tool-handles.d.ts +0 -10
- package/vendor/server/dist/bridge/wrap-builtin-tool-handles.js +0 -42
- package/vendor/server/dist/checkpoint/list-resumable-checkpoints.d.ts +0 -4
- package/vendor/server/dist/checkpoint/list-resumable-checkpoints.js +0 -11
- package/vendor/server/dist/checkpoint/resolve-checkpoint-boundary.d.ts +0 -11
- package/vendor/server/dist/checkpoint/resolve-checkpoint-boundary.js +0 -31
- package/vendor/server/dist/checkpoint/run-checkpoint-session.d.ts +0 -41
- package/vendor/server/dist/checkpoint/run-checkpoint-session.js +0 -170
- package/vendor/server/dist/checkpoint/workflow-checkpoint-store.d.ts +0 -23
- package/vendor/server/dist/checkpoint/workflow-checkpoint-store.js +0 -177
- package/vendor/server/dist/checkpoint/workflow-checkpoint-store.test.d.ts +0 -2
- package/vendor/server/dist/checkpoint/workflow-checkpoint-store.test.js +0 -60
- package/vendor/server/dist/config/config.service.d.ts +0 -9
- package/vendor/server/dist/config/config.service.js +0 -31
- package/vendor/server/dist/config/langflower-config.service.d.ts +0 -37
- package/vendor/server/dist/config/langflower-config.service.js +0 -390
- package/vendor/server/dist/config/langflower-config.service.test.d.ts +0 -2
- package/vendor/server/dist/config/langflower-config.service.test.js +0 -111
- package/vendor/server/dist/config/redact-langflower-config.d.ts +0 -8
- package/vendor/server/dist/config/redact-langflower-config.js +0 -42
- package/vendor/server/dist/config/redact-langflower-config.test.d.ts +0 -2
- package/vendor/server/dist/config/redact-langflower-config.test.js +0 -69
- package/vendor/server/dist/config/resolve-draft-provider-credentials.d.ts +0 -18
- package/vendor/server/dist/config/resolve-draft-provider-credentials.js +0 -60
- package/vendor/server/dist/config/resolve-global-langflower-config-path.d.ts +0 -5
- package/vendor/server/dist/config/resolve-global-langflower-config-path.js +0 -18
- package/vendor/server/dist/config/resolve-provider-credentials.d.ts +0 -20
- package/vendor/server/dist/config/resolve-provider-credentials.js +0 -59
- package/vendor/server/dist/config/resolve-provider-credentials.test.d.ts +0 -2
- package/vendor/server/dist/config/resolve-provider-credentials.test.js +0 -63
- package/vendor/server/dist/crawl/create-crawl-context.d.ts +0 -6
- package/vendor/server/dist/crawl/create-crawl-context.js +0 -33
- package/vendor/server/dist/crawl/create-crawl-context.test.d.ts +0 -2
- package/vendor/server/dist/crawl/create-crawl-context.test.js +0 -30
- package/vendor/server/dist/crawl/create-web-fetch.d.ts +0 -12
- package/vendor/server/dist/crawl/create-web-fetch.js +0 -128
- package/vendor/server/dist/crawl/create-web-fetch.test.d.ts +0 -2
- package/vendor/server/dist/crawl/create-web-fetch.test.js +0 -43
- package/vendor/server/dist/crawl/ssrf-guard.d.ts +0 -13
- package/vendor/server/dist/crawl/ssrf-guard.js +0 -117
- package/vendor/server/dist/crawl/ssrf-guard.test.d.ts +0 -2
- package/vendor/server/dist/crawl/ssrf-guard.test.js +0 -46
- package/vendor/server/dist/create-server.d.ts +0 -10
- package/vendor/server/dist/create-server.js +0 -60
- package/vendor/server/dist/harness/pending-permission-asks.d.ts +0 -14
- package/vendor/server/dist/harness/pending-permission-asks.js +0 -45
- package/vendor/server/dist/harness/permission.d.ts +0 -23
- package/vendor/server/dist/harness/permission.js +0 -31
- package/vendor/server/dist/harness/permission.test.d.ts +0 -2
- package/vendor/server/dist/harness/permission.test.js +0 -50
- package/vendor/server/dist/index.d.ts +0 -4
- package/vendor/server/dist/index.js +0 -4
- package/vendor/server/dist/kb/chunk-text.d.ts +0 -8
- package/vendor/server/dist/kb/chunk-text.js +0 -52
- package/vendor/server/dist/kb/cosine.d.ts +0 -3
- package/vendor/server/dist/kb/cosine.js +0 -21
- package/vendor/server/dist/kb/create-kb-context.d.ts +0 -6
- package/vendor/server/dist/kb/create-kb-context.js +0 -46
- package/vendor/server/dist/kb/kb-paths.d.ts +0 -8
- package/vendor/server/dist/kb/kb-paths.js +0 -19
- package/vendor/server/dist/kb/kb-store.d.ts +0 -41
- package/vendor/server/dist/kb/kb-store.js +0 -250
- package/vendor/server/dist/kb/kb-store.test.d.ts +0 -2
- package/vendor/server/dist/kb/kb-store.test.js +0 -94
- package/vendor/server/dist/kb/local-embed.d.ts +0 -8
- package/vendor/server/dist/kb/local-embed.js +0 -41
- package/vendor/server/dist/listen-http-server.d.ts +0 -6
- package/vendor/server/dist/listen-http-server.js +0 -18
- package/vendor/server/dist/llm/create-chat-completion-stream.d.ts +0 -8
- package/vendor/server/dist/llm/create-chat-completion-stream.js +0 -125
- package/vendor/server/dist/llm/create-chat-completion-stream.test.d.ts +0 -2
- package/vendor/server/dist/llm/create-chat-completion-stream.test.js +0 -72
- package/vendor/server/dist/llm/create-embedding.d.ts +0 -9
- package/vendor/server/dist/llm/create-embedding.js +0 -51
- package/vendor/server/dist/llm/list-provider-models.d.ts +0 -29
- package/vendor/server/dist/llm/list-provider-models.js +0 -55
- package/vendor/server/dist/llm/list-provider-models.test.d.ts +0 -2
- package/vendor/server/dist/llm/list-provider-models.test.js +0 -97
- package/vendor/server/dist/mcp/create-mcp-runtime.d.ts +0 -21
- package/vendor/server/dist/mcp/create-mcp-runtime.js +0 -167
- package/vendor/server/dist/mcp/create-mcp-runtime.test.d.ts +0 -2
- package/vendor/server/dist/mcp/create-mcp-runtime.test.js +0 -69
- package/vendor/server/dist/mcp/mcp-stdio-client.d.ts +0 -32
- package/vendor/server/dist/mcp/mcp-stdio-client.js +0 -183
- package/vendor/server/dist/mcp/mcp-tool-id.d.ts +0 -5
- package/vendor/server/dist/mcp/mcp-tool-id.js +0 -5
- package/vendor/server/dist/mcp/openai-mcp-tool-loop.test.d.ts +0 -2
- package/vendor/server/dist/mcp/openai-mcp-tool-loop.test.js +0 -189
- package/vendor/server/dist/mcp/wrap-harness-with-mcp.d.ts +0 -5
- package/vendor/server/dist/mcp/wrap-harness-with-mcp.js +0 -14
- package/vendor/server/dist/palette/compile-and-hot-swap-custom-nodes.d.ts +0 -10
- package/vendor/server/dist/palette/compile-and-hot-swap-custom-nodes.js +0 -23
- package/vendor/server/dist/palette/custom-node-registry.d.ts +0 -10
- package/vendor/server/dist/palette/custom-node-registry.js +0 -19
- package/vendor/server/dist/palette/custom-palette.service.d.ts +0 -12
- package/vendor/server/dist/palette/custom-palette.service.js +0 -63
- package/vendor/server/dist/palette/palette.service.d.ts +0 -13
- package/vendor/server/dist/palette/palette.service.js +0 -28
- package/vendor/server/dist/server-context.d.ts +0 -18
- package/vendor/server/dist/server-context.js +0 -29
- package/vendor/server/dist/session/build-selected-node-payload.d.ts +0 -9
- package/vendor/server/dist/session/build-selected-node-payload.js +0 -20
- package/vendor/server/dist/session/build-session-bootstrap.d.ts +0 -7
- package/vendor/server/dist/session/build-session-bootstrap.js +0 -23
- package/vendor/server/dist/session/clear-feed-while-running.test.d.ts +0 -2
- package/vendor/server/dist/session/clear-feed-while-running.test.js +0 -41
- package/vendor/server/dist/session/langflower-session.d.ts +0 -38
- package/vendor/server/dist/session/langflower-session.js +0 -92
- package/vendor/server/dist/session/reset-session-execution-feed.d.ts +0 -6
- package/vendor/server/dist/session/reset-session-execution-feed.js +0 -8
- package/vendor/server/dist/session/settings-draft-session.d.ts +0 -24
- package/vendor/server/dist/session/settings-draft-session.js +0 -82
- package/vendor/server/dist/skills/is-safe-skill-id.d.ts +0 -2
- package/vendor/server/dist/skills/is-safe-skill-id.js +0 -7
- package/vendor/server/dist/skills/list-skills.d.ts +0 -2
- package/vendor/server/dist/skills/list-skills.js +0 -36
- package/vendor/server/dist/skills/list-skills.test.d.ts +0 -2
- package/vendor/server/dist/skills/list-skills.test.js +0 -46
- package/vendor/server/dist/skills/parse-skill-markdown.d.ts +0 -7
- package/vendor/server/dist/skills/parse-skill-markdown.js +0 -50
- package/vendor/server/dist/skills/parse-skill-markdown.test.d.ts +0 -2
- package/vendor/server/dist/skills/parse-skill-markdown.test.js +0 -33
- package/vendor/server/dist/skills/read-agents-markdown.d.ts +0 -2
- package/vendor/server/dist/skills/read-agents-markdown.js +0 -13
- package/vendor/server/dist/skills/read-skill-markdown.d.ts +0 -2
- package/vendor/server/dist/skills/read-skill-markdown.js +0 -17
- package/vendor/server/dist/skills/read-skill-markdown.test.d.ts +0 -2
- package/vendor/server/dist/skills/read-skill-markdown.test.js +0 -31
- package/vendor/server/dist/skills/with-skills-catalog.d.ts +0 -3
- package/vendor/server/dist/skills/with-skills-catalog.js +0 -6
- package/vendor/server/dist/skills/with-skills-catalog.test.d.ts +0 -2
- package/vendor/server/dist/skills/with-skills-catalog.test.js +0 -40
- package/vendor/server/dist/utils/parse-jsonc.d.ts +0 -2
- package/vendor/server/dist/utils/parse-jsonc.js +0 -7
- package/vendor/server/dist/workflow/activate-workflow-in-session.d.ts +0 -26
- package/vendor/server/dist/workflow/activate-workflow-in-session.js +0 -69
- package/vendor/server/dist/workflow/apply-editor-mutation.d.ts +0 -67
- package/vendor/server/dist/workflow/apply-editor-mutation.js +0 -527
- package/vendor/server/dist/workflow/apply-editor-mutation.test.d.ts +0 -2
- package/vendor/server/dist/workflow/apply-editor-mutation.test.js +0 -397
- package/vendor/server/dist/workflow/bind-workflow-graph.d.ts +0 -11
- package/vendor/server/dist/workflow/bind-workflow-graph.js +0 -16
- package/vendor/server/dist/workflow/build-save-current-payload.d.ts +0 -3
- package/vendor/server/dist/workflow/build-save-current-payload.js +0 -17
- package/vendor/server/dist/workflow/build-save-current-payload.test.d.ts +0 -2
- package/vendor/server/dist/workflow/build-save-current-payload.test.js +0 -44
- package/vendor/server/dist/workflow/copy-workflow-to-session.d.ts +0 -8
- package/vendor/server/dist/workflow/copy-workflow-to-session.js +0 -32
- package/vendor/server/dist/workflow/copy-workflow-to-session.test.d.ts +0 -2
- package/vendor/server/dist/workflow/copy-workflow-to-session.test.js +0 -72
- package/vendor/server/dist/workflow/create-empty-workflow-in-session.d.ts +0 -4
- package/vendor/server/dist/workflow/create-empty-workflow-in-session.js +0 -34
- package/vendor/server/dist/workflow/create-empty-workflow-in-session.test.d.ts +0 -2
- package/vendor/server/dist/workflow/create-empty-workflow-in-session.test.js +0 -54
- package/vendor/server/dist/workflow/load-workflow-into-session.d.ts +0 -15
- package/vendor/server/dist/workflow/load-workflow-into-session.js +0 -43
- package/vendor/server/dist/workflow/rename-active-workflow.d.ts +0 -14
- package/vendor/server/dist/workflow/rename-active-workflow.js +0 -60
- package/vendor/server/dist/workflow/rename-active-workflow.test.d.ts +0 -2
- package/vendor/server/dist/workflow/rename-active-workflow.test.js +0 -111
- package/vendor/server/dist/workflow/repair-workflow-graph.d.ts +0 -12
- package/vendor/server/dist/workflow/repair-workflow-graph.js +0 -62
- package/vendor/server/dist/workflow/repro-bypass.test.d.ts +0 -2
- package/vendor/server/dist/workflow/repro-bypass.test.js +0 -63
- package/vendor/server/dist/workflow/workflow-document.d.ts +0 -21
- package/vendor/server/dist/workflow/workflow-document.js +0 -58
- package/vendor/server/dist/workflow/workflow-id.d.ts +0 -2
- package/vendor/server/dist/workflow/workflow-id.js +0 -19
- package/vendor/server/dist/workflow/workflow-id.test.d.ts +0 -2
- package/vendor/server/dist/workflow/workflow-id.test.js +0 -23
- package/vendor/server/dist/workflow/workflow-persisted-inputs.d.ts +0 -13
- package/vendor/server/dist/workflow/workflow-persisted-inputs.js +0 -71
- package/vendor/server/dist/workflow/workflow.service.d.ts +0 -37
- package/vendor/server/dist/workflow/workflow.service.js +0 -161
- package/vendor/server/dist/workflow/workflow.service.test.d.ts +0 -2
- package/vendor/server/dist/workflow/workflow.service.test.js +0 -57
- package/vendor/server/package.json +0 -35
- package/vendor/shared/dist/checkpoint/json-value.d.ts +0 -7
- package/vendor/shared/dist/checkpoint/json-value.js +0 -52
- package/vendor/shared/dist/checkpoint/json-value.test.d.ts +0 -1
- package/vendor/shared/dist/checkpoint/json-value.test.js +0 -22
- package/vendor/shared/dist/checkpoint/workflow-fingerprint.d.ts +0 -11
- package/vendor/shared/dist/checkpoint/workflow-fingerprint.js +0 -17
- package/vendor/shared/dist/checkpoint/workflow-fingerprint.test.d.ts +0 -1
- package/vendor/shared/dist/checkpoint/workflow-fingerprint.test.js +0 -54
- package/vendor/shared/dist/constants/defaults.d.ts +0 -16
- package/vendor/shared/dist/constants/defaults.js +0 -25
- package/vendor/shared/dist/execution/derive-run-settle-outcome.d.ts +0 -16
- package/vendor/shared/dist/execution/derive-run-settle-outcome.js +0 -48
- package/vendor/shared/dist/execution/derive-run-settle-outcome.test.d.ts +0 -1
- package/vendor/shared/dist/execution/derive-run-settle-outcome.test.js +0 -46
- package/vendor/shared/dist/langflower-bus-config.d.ts +0 -484
- package/vendor/shared/dist/langflower-bus-config.js +0 -635
- package/vendor/shared/dist/langflower-config/mcp-tool-id.d.ts +0 -23
- package/vendor/shared/dist/langflower-config/mcp-tool-id.js +0 -43
- package/vendor/shared/dist/langflower-config/merge-langflower-config-layers.d.ts +0 -6
- package/vendor/shared/dist/langflower-config/merge-langflower-config-layers.js +0 -18
- package/vendor/shared/dist/langflower-config/merge-langflower-config-layers.test.d.ts +0 -1
- package/vendor/shared/dist/langflower-config/merge-langflower-config-layers.test.js +0 -44
- package/vendor/shared/dist/langflower-config/merge-provider-model-options.d.ts +0 -7
- package/vendor/shared/dist/langflower-config/merge-provider-model-options.js +0 -17
- package/vendor/shared/dist/langflower-config/merge-provider-model-options.test.d.ts +0 -1
- package/vendor/shared/dist/langflower-config/merge-provider-model-options.test.js +0 -22
- package/vendor/shared/dist/langflower-config/parse-default-chat-model.d.ts +0 -14
- package/vendor/shared/dist/langflower-config/parse-default-chat-model.js +0 -38
- package/vendor/shared/dist/langflower-config/parse-default-chat-model.test.d.ts +0 -1
- package/vendor/shared/dist/langflower-config/parse-default-chat-model.test.js +0 -41
- package/vendor/shared/dist/langflower-config/resolve-server-logs-enabled.d.ts +0 -6
- package/vendor/shared/dist/langflower-config/resolve-server-logs-enabled.js +0 -5
- package/vendor/shared/dist/langflower-config/resolve-server-logs-enabled.test.d.ts +0 -1
- package/vendor/shared/dist/langflower-config/resolve-server-logs-enabled.test.js +0 -11
- package/vendor/shared/dist/langflower-config/resolve-ui-schema-options.d.ts +0 -18
- package/vendor/shared/dist/langflower-config/resolve-ui-schema-options.js +0 -61
- package/vendor/shared/dist/langflower-config/resolve-ui-schema-options.test.d.ts +0 -1
- package/vendor/shared/dist/langflower-config/resolve-ui-schema-options.test.js +0 -37
- package/vendor/shared/dist/langflower-config/resolve-wired-tool-options.d.ts +0 -40
- package/vendor/shared/dist/langflower-config/resolve-wired-tool-options.js +0 -139
- package/vendor/shared/dist/langflower-config/resolve-wired-tool-options.test.d.ts +0 -1
- package/vendor/shared/dist/langflower-config/resolve-wired-tool-options.test.js +0 -253
- package/vendor/shared/dist/langflower-config/settings-draft.d.ts +0 -49
- package/vendor/shared/dist/langflower-config/settings-draft.js +0 -151
- package/vendor/shared/dist/langflower-ws-waits.d.ts +0 -58
- package/vendor/shared/dist/langflower-ws-waits.js +0 -121
- package/vendor/shared/dist/langflower.d.ts +0 -30
- package/vendor/shared/dist/langflower.js +0 -13
- package/vendor/shared/dist/types/config.d.ts +0 -4
- package/vendor/shared/dist/types/config.js +0 -1
- package/vendor/shared/dist/types/langflower-bootstrap.d.ts +0 -71
- package/vendor/shared/dist/types/langflower-bootstrap.js +0 -1
- package/vendor/shared/dist/types/langflower-config.d.ts +0 -263
- package/vendor/shared/dist/types/langflower-config.js +0 -1
- package/vendor/shared/dist/types/langflower-custom-palette.d.ts +0 -21
- package/vendor/shared/dist/types/langflower-custom-palette.js +0 -1
- package/vendor/shared/dist/types/langflower-editor.d.ts +0 -96
- package/vendor/shared/dist/types/langflower-editor.js +0 -1
- package/vendor/shared/dist/types/langflower-palette.d.ts +0 -25
- package/vendor/shared/dist/types/langflower-palette.js +0 -1
- package/vendor/shared/dist/types/langflower-project-bootstrap.d.ts +0 -11
- package/vendor/shared/dist/types/langflower-project-bootstrap.js +0 -1
- package/vendor/shared/dist/types/langflower-server.d.ts +0 -4
- package/vendor/shared/dist/types/langflower-server.js +0 -1
- package/vendor/shared/dist/types/langflower-workflow.d.ts +0 -146
- package/vendor/shared/dist/types/langflower-workflow.js +0 -12
- package/vendor/shared/dist/types/workflow-checkpoint.d.ts +0 -60
- package/vendor/shared/dist/types/workflow-checkpoint.js +0 -9
- package/vendor/shared/package.json +0 -74
- package/vendor/tools/dist/builtin-schemas.d.ts +0 -10
- package/vendor/tools/dist/builtin-schemas.js +0 -144
- package/vendor/tools/dist/builtins/apply-post-process.d.ts +0 -1
- package/vendor/tools/dist/builtins/apply-post-process.js +0 -9
- package/vendor/tools/dist/builtins/args.d.ts +0 -3
- package/vendor/tools/dist/builtins/args.js +0 -14
- package/vendor/tools/dist/builtins/bash/tool.d.ts +0 -25
- package/vendor/tools/dist/builtins/bash/tool.js +0 -72
- package/vendor/tools/dist/builtins/catalog.d.ts +0 -228
- package/vendor/tools/dist/builtins/catalog.js +0 -24
- package/vendor/tools/dist/builtins/command-exists.d.ts +0 -5
- package/vendor/tools/dist/builtins/command-exists.js +0 -27
- package/vendor/tools/dist/builtins/create/tool.d.ts +0 -25
- package/vendor/tools/dist/builtins/create/tool.js +0 -56
- package/vendor/tools/dist/builtins/delete/tool.d.ts +0 -21
- package/vendor/tools/dist/builtins/delete/tool.js +0 -44
- package/vendor/tools/dist/builtins/edit/tool.d.ts +0 -29
- package/vendor/tools/dist/builtins/edit/tool.js +0 -68
- package/vendor/tools/dist/builtins/fence.d.ts +0 -4
- package/vendor/tools/dist/builtins/fence.js +0 -6
- package/vendor/tools/dist/builtins/glob/tool.d.ts +0 -33
- package/vendor/tools/dist/builtins/glob/tool.js +0 -77
- package/vendor/tools/dist/builtins/grep/search.d.ts +0 -43
- package/vendor/tools/dist/builtins/grep/search.js +0 -315
- package/vendor/tools/dist/builtins/grep/tool.d.ts +0 -36
- package/vendor/tools/dist/builtins/grep/tool.js +0 -66
- package/vendor/tools/dist/builtins/read/tool.d.ts +0 -41
- package/vendor/tools/dist/builtins/read/tool.js +0 -96
- package/vendor/tools/dist/builtins/spawn-capture.d.ts +0 -15
- package/vendor/tools/dist/builtins/spawn-capture.js +0 -42
- package/vendor/tools/dist/builtins/types.d.ts +0 -16
- package/vendor/tools/dist/builtins/types.js +0 -1
- package/vendor/tools/dist/builtins/walk-files.d.ts +0 -16
- package/vendor/tools/dist/builtins/walk-files.js +0 -100
- package/vendor/tools/dist/builtins/write/tool.d.ts +0 -25
- package/vendor/tools/dist/builtins/write/tool.js +0 -40
- package/vendor/tools/dist/create-crawl-context.d.ts +0 -22
- package/vendor/tools/dist/create-crawl-context.js +0 -34
- package/vendor/tools/dist/create-memory-context.d.ts +0 -12
- package/vendor/tools/dist/create-memory-context.js +0 -84
- package/vendor/tools/dist/create-project-files-context.d.ts +0 -19
- package/vendor/tools/dist/create-project-files-context.js +0 -75
- package/vendor/tools/dist/create-project-harness.d.ts +0 -33
- package/vendor/tools/dist/create-project-harness.js +0 -64
- package/vendor/tools/dist/create-web-fetch.d.ts +0 -27
- package/vendor/tools/dist/create-web-fetch.js +0 -164
- package/vendor/tools/dist/domain/args.d.ts +0 -3
- package/vendor/tools/dist/domain/args.js +0 -22
- package/vendor/tools/dist/domain/create-domain-handlers.d.ts +0 -22
- package/vendor/tools/dist/domain/create-domain-handlers.js +0 -223
- package/vendor/tools/dist/domain/domain-tool-configs.d.ts +0 -30
- package/vendor/tools/dist/domain/domain-tool-configs.js +0 -299
- package/vendor/tools/dist/domain/html.d.ts +0 -4
- package/vendor/tools/dist/domain/html.js +0 -68
- package/vendor/tools/dist/domain/run-bfs-crawl.d.ts +0 -57
- package/vendor/tools/dist/domain/run-bfs-crawl.js +0 -112
- package/vendor/tools/dist/gate-tool-call.d.ts +0 -17
- package/vendor/tools/dist/gate-tool-call.js +0 -35
- package/vendor/tools/dist/gitignore.d.ts +0 -4
- package/vendor/tools/dist/gitignore.js +0 -94
- package/vendor/tools/dist/handlers.d.ts +0 -16
- package/vendor/tools/dist/handlers.js +0 -367
- package/vendor/tools/dist/harness-types.d.ts +0 -33
- package/vendor/tools/dist/harness-types.js +0 -4
- package/vendor/tools/dist/kb/chunk-text.d.ts +0 -8
- package/vendor/tools/dist/kb/chunk-text.js +0 -52
- package/vendor/tools/dist/kb/cosine.d.ts +0 -3
- package/vendor/tools/dist/kb/cosine.js +0 -21
- package/vendor/tools/dist/kb/create-kb-context.d.ts +0 -62
- package/vendor/tools/dist/kb/create-kb-context.js +0 -78
- package/vendor/tools/dist/kb/kb-curation.d.ts +0 -69
- package/vendor/tools/dist/kb/kb-curation.js +0 -364
- package/vendor/tools/dist/kb/kb-paths.d.ts +0 -8
- package/vendor/tools/dist/kb/kb-paths.js +0 -19
- package/vendor/tools/dist/kb/kb-store.d.ts +0 -41
- package/vendor/tools/dist/kb/kb-store.js +0 -246
- package/vendor/tools/dist/kb/local-embed.d.ts +0 -8
- package/vendor/tools/dist/kb/local-embed.js +0 -41
- package/vendor/tools/dist/mcp/build-mcp-handle.d.ts +0 -12
- package/vendor/tools/dist/mcp/build-mcp-handle.js +0 -56
- package/vendor/tools/dist/mcp/create-mcp-runtime.d.ts +0 -29
- package/vendor/tools/dist/mcp/create-mcp-runtime.js +0 -161
- package/vendor/tools/dist/mcp/create-system-mcp-handles.d.ts +0 -52
- package/vendor/tools/dist/mcp/create-system-mcp-handles.js +0 -127
- package/vendor/tools/dist/mcp/env-with-shell-com-spec.d.ts +0 -5
- package/vendor/tools/dist/mcp/env-with-shell-com-spec.js +0 -18
- package/vendor/tools/dist/mcp/format-mcp-connect-error.d.ts +0 -9
- package/vendor/tools/dist/mcp/format-mcp-connect-error.js +0 -13
- package/vendor/tools/dist/mcp/mcp-client-types.d.ts +0 -17
- package/vendor/tools/dist/mcp/mcp-client-types.js +0 -1
- package/vendor/tools/dist/mcp/mcp-http-client.d.ts +0 -31
- package/vendor/tools/dist/mcp/mcp-http-client.js +0 -243
- package/vendor/tools/dist/mcp/mcp-stdio-client.d.ts +0 -19
- package/vendor/tools/dist/mcp/mcp-stdio-client.js +0 -186
- package/vendor/tools/dist/mcp/mcp-stdio-frame-parser.d.ts +0 -7
- package/vendor/tools/dist/mcp/mcp-stdio-frame-parser.js +0 -77
- package/vendor/tools/dist/mcp/mcp-tool-id.d.ts +0 -25
- package/vendor/tools/dist/mcp/mcp-tool-id.js +0 -45
- package/vendor/tools/dist/mcp/require-mcp-server-name.d.ts +0 -5
- package/vendor/tools/dist/mcp/require-mcp-server-name.js +0 -22
- package/vendor/tools/dist/mcp/resolve-shell-option.d.ts +0 -6
- package/vendor/tools/dist/mcp/resolve-shell-option.js +0 -19
- package/vendor/tools/dist/mcp/wrap-harness-with-mcp.d.ts +0 -5
- package/vendor/tools/dist/mcp/wrap-harness-with-mcp.js +0 -27
- package/vendor/tools/dist/memory/atomic-write.d.ts +0 -4
- package/vendor/tools/dist/memory/atomic-write.js +0 -18
- package/vendor/tools/dist/memory/create-memory-store.d.ts +0 -21
- package/vendor/tools/dist/memory/create-memory-store.js +0 -203
- package/vendor/tools/dist/memory/markdown-sections.d.ts +0 -22
- package/vendor/tools/dist/memory/markdown-sections.js +0 -69
- package/vendor/tools/dist/memory/memory-paths.d.ts +0 -9
- package/vendor/tools/dist/memory/memory-paths.js +0 -28
- package/vendor/tools/dist/path-sandbox.d.ts +0 -21
- package/vendor/tools/dist/path-sandbox.js +0 -96
- package/vendor/tools/dist/permission.d.ts +0 -75
- package/vendor/tools/dist/permission.js +0 -264
- package/vendor/tools/dist/post-process.d.ts +0 -9
- package/vendor/tools/dist/post-process.js +0 -36
- package/vendor/tools/dist/ssrf-guard.d.ts +0 -22
- package/vendor/tools/dist/ssrf-guard.js +0 -119
- package/vendor/tools/package.json +0 -74
- package/vendor/websocket-bridge/dist/bridge-codec.d.ts +0 -3
- package/vendor/websocket-bridge/dist/bridge-codec.js +0 -26
- package/vendor/websocket-bridge/dist/bridge-frame.d.ts +0 -11
- package/vendor/websocket-bridge/dist/bridge-frame.js +0 -24
- package/vendor/websocket-bridge/dist/bridge-guards.d.ts +0 -4
- package/vendor/websocket-bridge/dist/bridge-guards.js +0 -17
- package/vendor/websocket-bridge/dist/bridge-subjects.d.ts +0 -10
- package/vendor/websocket-bridge/dist/bridge-subjects.js +0 -38
- package/vendor/websocket-bridge/dist/bridge-types.d.ts +0 -102
- package/vendor/websocket-bridge/dist/bridge-types.js +0 -2
- package/vendor/websocket-bridge/dist/create-client.d.ts +0 -5
- package/vendor/websocket-bridge/dist/create-client.js +0 -152
- package/vendor/websocket-bridge/dist/create-server.d.ts +0 -8
- package/vendor/websocket-bridge/dist/create-server.js +0 -134
- package/vendor/websocket-bridge/dist/testing/expect-type.d.ts +0 -3
- package/vendor/websocket-bridge/dist/testing/expect-type.js +0 -3
- package/vendor/websocket-bridge/dist/testing/sample-diagram-ws-config.d.ts +0 -27
- package/vendor/websocket-bridge/dist/testing/sample-diagram-ws-config.js +0 -12
- package/vendor/websocket-bridge/dist/testing/sample-ping-ws-config.d.ts +0 -17
- package/vendor/websocket-bridge/dist/testing/sample-ping-ws-config.js +0 -10
- package/vendor/websocket-bridge/dist/testing/transport-test-helpers.d.ts +0 -6
- package/vendor/websocket-bridge/dist/testing/transport-test-helpers.js +0 -34
- package/vendor/websocket-bridge/package.json +0 -34
|
@@ -0,0 +1,1505 @@
|
|
|
1
|
+
import { createRequire as __lfCreateRequire } from 'node:module';
|
|
2
|
+
const require = __lfCreateRequire(import.meta.url);
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// packages/tools/dist/builtins/args.js
|
|
6
|
+
var asString = (args, key) => {
|
|
7
|
+
const value = args[key];
|
|
8
|
+
return typeof value === "string" ? value : void 0;
|
|
9
|
+
};
|
|
10
|
+
var asNumber = (args, key) => {
|
|
11
|
+
const value = args[key];
|
|
12
|
+
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
13
|
+
};
|
|
14
|
+
var asBoolean = (args, key, defaultValue) => {
|
|
15
|
+
const value = args[key];
|
|
16
|
+
return typeof value === "boolean" ? value : defaultValue;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// packages/tools/dist/builtins/ask_user/tool.js
|
|
20
|
+
var ASK_USER_ABORTED = "ask_user aborted.";
|
|
21
|
+
var invokeWithAbort = (work, signal) => {
|
|
22
|
+
if (signal === void 0) {
|
|
23
|
+
return work;
|
|
24
|
+
}
|
|
25
|
+
if (signal.aborted) {
|
|
26
|
+
return Promise.reject(new Error(ASK_USER_ABORTED));
|
|
27
|
+
}
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
const onAbort = () => {
|
|
30
|
+
signal.removeEventListener("abort", onAbort);
|
|
31
|
+
reject(new Error(ASK_USER_ABORTED));
|
|
32
|
+
};
|
|
33
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
34
|
+
void work.then((text) => {
|
|
35
|
+
signal.removeEventListener("abort", onAbort);
|
|
36
|
+
resolve(text);
|
|
37
|
+
}, (error) => {
|
|
38
|
+
signal.removeEventListener("abort", onAbort);
|
|
39
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var invoke = async (ctx, args) => {
|
|
44
|
+
const question = asString(args, "question");
|
|
45
|
+
if (question === void 0 || question.trim().length === 0) {
|
|
46
|
+
throw new Error("ask_user requires string argument \xABquestion\xBB.");
|
|
47
|
+
}
|
|
48
|
+
if (ctx.askUser === void 0) {
|
|
49
|
+
throw new Error("ask_user requires a live HITL host. No askUser hook is bound on this harness.");
|
|
50
|
+
}
|
|
51
|
+
return invokeWithAbort(ctx.askUser({ question: question.trim() }), ctx.signal);
|
|
52
|
+
};
|
|
53
|
+
var askUserTool = {
|
|
54
|
+
id: "ask_user",
|
|
55
|
+
registration: {
|
|
56
|
+
toolId: "ask_user",
|
|
57
|
+
name: "ask_user",
|
|
58
|
+
description: "Do not guess. If you are not sure, ask the user. Pauses the run so the operator can provide additional information.",
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {
|
|
62
|
+
question: {
|
|
63
|
+
type: "string",
|
|
64
|
+
description: "The question to show the operator. Be specific about what you need."
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
required: ["question"],
|
|
68
|
+
additionalProperties: false
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
invoke
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// packages/tools/dist/builtins/bash/tool.js
|
|
75
|
+
import { spawn } from "node:child_process";
|
|
76
|
+
|
|
77
|
+
// packages/tools/dist/path-sandbox.js
|
|
78
|
+
import fs from "node:fs/promises";
|
|
79
|
+
import path from "node:path";
|
|
80
|
+
var DEFAULT_DENY = [
|
|
81
|
+
".git/",
|
|
82
|
+
"node_modules/",
|
|
83
|
+
".langflower/secrets/"
|
|
84
|
+
];
|
|
85
|
+
var isUnderRoot = (absolute, root) => {
|
|
86
|
+
const relative = path.relative(path.resolve(root), absolute);
|
|
87
|
+
return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
88
|
+
};
|
|
89
|
+
var matchesDeny = (posixRelative, denyPaths) => [...denyPaths, ...DEFAULT_DENY].find((pattern) => {
|
|
90
|
+
const normalized = pattern.replace(/\\/g, "/").replace(/^\//, "");
|
|
91
|
+
return posixRelative === normalized.replace(/\/$/, "") || posixRelative.startsWith(normalized.endsWith("/") ? normalized : `${normalized}/`) || normalized.endsWith("/") && posixRelative.startsWith(normalized);
|
|
92
|
+
});
|
|
93
|
+
var resolveFenceRoot = (projectRoot, absolute, allowedRoots = []) => {
|
|
94
|
+
const project = path.resolve(projectRoot);
|
|
95
|
+
if (isUnderRoot(absolute, project)) {
|
|
96
|
+
return project;
|
|
97
|
+
}
|
|
98
|
+
for (const entry of allowedRoots) {
|
|
99
|
+
const root = path.resolve(projectRoot, entry);
|
|
100
|
+
if (isUnderRoot(absolute, root)) {
|
|
101
|
+
return root;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
};
|
|
106
|
+
var toHarnessDisplayPath = (projectRoot, absolute, allowedRoots = []) => {
|
|
107
|
+
const fence = resolveFenceRoot(projectRoot, absolute, allowedRoots);
|
|
108
|
+
const project = path.resolve(projectRoot);
|
|
109
|
+
if (fence === project) {
|
|
110
|
+
return path.relative(project, absolute).split(path.sep).join("/");
|
|
111
|
+
}
|
|
112
|
+
return absolute.split(path.sep).join("/");
|
|
113
|
+
};
|
|
114
|
+
var isPathFenceOptions = (value) => !Array.isArray(value);
|
|
115
|
+
var asPathFenceOptions = (denyOrOptions) => isPathFenceOptions(denyOrOptions) ? denyOrOptions : { denyPaths: denyOrOptions };
|
|
116
|
+
var resolveProjectPath = (projectRoot, userPath, denyOrOptions = {}) => {
|
|
117
|
+
const options = asPathFenceOptions(denyOrOptions);
|
|
118
|
+
const denyPaths = options.denyPaths ?? DEFAULT_DENY;
|
|
119
|
+
const allowedRoots = options.allowedRoots ?? [];
|
|
120
|
+
const trimmed = userPath.trim();
|
|
121
|
+
if (trimmed.length === 0) {
|
|
122
|
+
throw new Error("Path is required.");
|
|
123
|
+
}
|
|
124
|
+
const project = path.resolve(projectRoot);
|
|
125
|
+
const candidate = path.isAbsolute(trimmed) ? path.resolve(trimmed) : path.resolve(project, trimmed);
|
|
126
|
+
const fence = resolveFenceRoot(project, candidate, allowedRoots);
|
|
127
|
+
if (fence === null) {
|
|
128
|
+
throw new Error(`Path escapes project root: \xAB${userPath}\xBB. Stay under the project directory, or add the vault to harness.allowedRoots.`);
|
|
129
|
+
}
|
|
130
|
+
const posixRelative = path.relative(fence, candidate).split(path.sep).join("/");
|
|
131
|
+
const denied = matchesDeny(posixRelative, denyPaths);
|
|
132
|
+
if (denied !== void 0) {
|
|
133
|
+
throw new Error(`Path is denied by sandbox policy: \xAB${userPath}\xBB (matched \xAB${denied}\xBB).`);
|
|
134
|
+
}
|
|
135
|
+
return candidate;
|
|
136
|
+
};
|
|
137
|
+
var listSiblingHints = async (absolutePath, limit = 8) => {
|
|
138
|
+
const parent = path.dirname(absolutePath);
|
|
139
|
+
try {
|
|
140
|
+
const entries = await fs.readdir(parent);
|
|
141
|
+
return entries.slice(0, limit);
|
|
142
|
+
} catch {
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
var formatNotFound = async (absolutePath, userPath) => {
|
|
147
|
+
const siblings = await listSiblingHints(absolutePath);
|
|
148
|
+
const hint = siblings.length > 0 ? ` Nearby names: ${siblings.join(", ")}.` : "";
|
|
149
|
+
return `File not found: \xAB${userPath}\xBB.${hint}`;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// packages/tools/dist/builtins/fence.js
|
|
153
|
+
var fenceOptions = (ctx) => ({
|
|
154
|
+
denyPaths: ctx.denyPaths,
|
|
155
|
+
allowedRoots: ctx.allowedRoots
|
|
156
|
+
});
|
|
157
|
+
var displayPath = (ctx, absolute) => toHarnessDisplayPath(ctx.projectRoot, absolute, ctx.allowedRoots);
|
|
158
|
+
|
|
159
|
+
// packages/tools/dist/builtins/bash/tool.js
|
|
160
|
+
var MAX_BASH_OUTPUT = 1e5;
|
|
161
|
+
var invoke2 = async (ctx, args) => {
|
|
162
|
+
if (!ctx.bashEnabled) {
|
|
163
|
+
throw new Error("bash is disabled (default-deny). Enable bash on the project harness to run shell commands.");
|
|
164
|
+
}
|
|
165
|
+
const command = asString(args, "command");
|
|
166
|
+
if (command === void 0 || command.trim().length === 0) {
|
|
167
|
+
throw new Error("bash requires string argument \xABcommand\xBB.");
|
|
168
|
+
}
|
|
169
|
+
const cwdArg = asString(args, "cwd") ?? ".";
|
|
170
|
+
const cwd = resolveProjectPath(ctx.projectRoot, cwdArg, fenceOptions(ctx));
|
|
171
|
+
return await new Promise((resolve, reject) => {
|
|
172
|
+
const child = spawn(command, {
|
|
173
|
+
cwd,
|
|
174
|
+
shell: true,
|
|
175
|
+
windowsHide: true
|
|
176
|
+
});
|
|
177
|
+
let stdout = "";
|
|
178
|
+
let stderr = "";
|
|
179
|
+
child.stdout?.on("data", (chunk) => {
|
|
180
|
+
stdout += String(chunk);
|
|
181
|
+
if (stdout.length > MAX_BASH_OUTPUT) {
|
|
182
|
+
stdout = stdout.slice(0, MAX_BASH_OUTPUT);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
child.stderr?.on("data", (chunk) => {
|
|
186
|
+
stderr += String(chunk);
|
|
187
|
+
if (stderr.length > MAX_BASH_OUTPUT) {
|
|
188
|
+
stderr = stderr.slice(0, MAX_BASH_OUTPUT);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
child.on("error", (error) => {
|
|
192
|
+
reject(error);
|
|
193
|
+
});
|
|
194
|
+
child.on("close", (code) => {
|
|
195
|
+
const combined = [
|
|
196
|
+
`exit ${code ?? "null"}`,
|
|
197
|
+
stdout.length > 0 ? `stdout:
|
|
198
|
+
${stdout}` : "stdout: (empty)",
|
|
199
|
+
stderr.length > 0 ? `stderr:
|
|
200
|
+
${stderr}` : "stderr: (empty)"
|
|
201
|
+
].join("\n");
|
|
202
|
+
resolve(combined);
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
var bashTool = {
|
|
207
|
+
id: "bash",
|
|
208
|
+
registration: {
|
|
209
|
+
toolId: "bash",
|
|
210
|
+
name: "bash",
|
|
211
|
+
description: "Run a shell command in the project root. Disabled unless the harness enables bash (default-deny). Not read-class \u2014 no postProcess.",
|
|
212
|
+
inputSchema: {
|
|
213
|
+
type: "object",
|
|
214
|
+
properties: {
|
|
215
|
+
command: {
|
|
216
|
+
type: "string",
|
|
217
|
+
description: "Shell command to run"
|
|
218
|
+
},
|
|
219
|
+
cwd: {
|
|
220
|
+
type: "string",
|
|
221
|
+
description: "Optional subdirectory relative to project root"
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
required: ["command"],
|
|
225
|
+
additionalProperties: false
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
invoke: invoke2
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
// packages/tools/dist/builtins/create/tool.js
|
|
232
|
+
import fs2 from "node:fs/promises";
|
|
233
|
+
import path2 from "node:path";
|
|
234
|
+
var invoke3 = async (ctx, args) => {
|
|
235
|
+
const userPath = asString(args, "path");
|
|
236
|
+
const content = asString(args, "content");
|
|
237
|
+
if (userPath === void 0 || content === void 0) {
|
|
238
|
+
throw new Error("create requires string arguments \xABpath\xBB and \xABcontent\xBB.");
|
|
239
|
+
}
|
|
240
|
+
const absolute = resolveProjectPath(ctx.projectRoot, userPath, fenceOptions(ctx));
|
|
241
|
+
try {
|
|
242
|
+
await fs2.access(absolute);
|
|
243
|
+
throw new Error(`create failed: \xAB${userPath}\xBB already exists. Use write to overwrite or choose another path.`);
|
|
244
|
+
} catch (error) {
|
|
245
|
+
if (error instanceof Error && error.message.startsWith("create failed:")) {
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
const code = error !== null && typeof error === "object" && "code" in error ? String(error.code) : "";
|
|
249
|
+
if (code !== "ENOENT") {
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
await fs2.mkdir(path2.dirname(absolute), { recursive: true });
|
|
254
|
+
await fs2.writeFile(absolute, content, { encoding: "utf8", flag: "wx" });
|
|
255
|
+
return `Created \xAB${userPath}\xBB (${content.length} chars).`;
|
|
256
|
+
};
|
|
257
|
+
var createTool = {
|
|
258
|
+
id: "create",
|
|
259
|
+
registration: {
|
|
260
|
+
toolId: "create",
|
|
261
|
+
name: "create",
|
|
262
|
+
description: "Create a new file. Fails if the path already exists (use write to overwrite).",
|
|
263
|
+
inputSchema: {
|
|
264
|
+
type: "object",
|
|
265
|
+
properties: {
|
|
266
|
+
path: {
|
|
267
|
+
type: "string",
|
|
268
|
+
description: "Project-relative file path"
|
|
269
|
+
},
|
|
270
|
+
content: {
|
|
271
|
+
type: "string",
|
|
272
|
+
description: "Initial file contents"
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
required: ["path", "content"],
|
|
276
|
+
additionalProperties: false
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
invoke: invoke3
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
// packages/tools/dist/builtins/delete/tool.js
|
|
283
|
+
import fs3 from "node:fs/promises";
|
|
284
|
+
var invoke4 = async (ctx, args) => {
|
|
285
|
+
const userPath = asString(args, "path");
|
|
286
|
+
if (userPath === void 0) {
|
|
287
|
+
throw new Error("delete requires string argument \xABpath\xBB.");
|
|
288
|
+
}
|
|
289
|
+
const absolute = resolveProjectPath(ctx.projectRoot, userPath, fenceOptions(ctx));
|
|
290
|
+
try {
|
|
291
|
+
await fs3.unlink(absolute);
|
|
292
|
+
} catch (error) {
|
|
293
|
+
const code = error !== null && typeof error === "object" && "code" in error ? String(error.code) : "";
|
|
294
|
+
if (code === "ENOENT") {
|
|
295
|
+
throw new Error(await formatNotFound(absolute, userPath));
|
|
296
|
+
}
|
|
297
|
+
throw error;
|
|
298
|
+
}
|
|
299
|
+
return `Deleted \xAB${userPath}\xBB.`;
|
|
300
|
+
};
|
|
301
|
+
var deleteTool = {
|
|
302
|
+
id: "delete",
|
|
303
|
+
registration: {
|
|
304
|
+
toolId: "delete",
|
|
305
|
+
name: "delete",
|
|
306
|
+
description: "Delete a file under the project root.",
|
|
307
|
+
inputSchema: {
|
|
308
|
+
type: "object",
|
|
309
|
+
properties: {
|
|
310
|
+
path: {
|
|
311
|
+
type: "string",
|
|
312
|
+
description: "Project-relative file path"
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
required: ["path"],
|
|
316
|
+
additionalProperties: false
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
invoke: invoke4
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
// packages/tools/dist/builtins/edit/tool.js
|
|
323
|
+
import fs4 from "node:fs/promises";
|
|
324
|
+
var invoke5 = async (ctx, args) => {
|
|
325
|
+
const userPath = asString(args, "path");
|
|
326
|
+
const oldString = asString(args, "oldString");
|
|
327
|
+
const newString = asString(args, "newString");
|
|
328
|
+
if (userPath === void 0 || oldString === void 0 || newString === void 0) {
|
|
329
|
+
throw new Error("edit requires string arguments \xABpath\xBB, \xABoldString\xBB, and \xABnewString\xBB.");
|
|
330
|
+
}
|
|
331
|
+
if (oldString.length === 0) {
|
|
332
|
+
throw new Error("edit \xABoldString\xBB must not be empty.");
|
|
333
|
+
}
|
|
334
|
+
const absolute = resolveProjectPath(ctx.projectRoot, userPath, fenceOptions(ctx));
|
|
335
|
+
let content;
|
|
336
|
+
try {
|
|
337
|
+
content = await fs4.readFile(absolute, "utf8");
|
|
338
|
+
} catch (error) {
|
|
339
|
+
const code = error !== null && typeof error === "object" && "code" in error ? String(error.code) : "";
|
|
340
|
+
if (code === "ENOENT") {
|
|
341
|
+
throw new Error(await formatNotFound(absolute, userPath));
|
|
342
|
+
}
|
|
343
|
+
throw error;
|
|
344
|
+
}
|
|
345
|
+
const parts = content.split(oldString);
|
|
346
|
+
if (parts.length === 1) {
|
|
347
|
+
throw new Error(`edit: oldString not found in \xAB${userPath}\xBB. Provide an exact unique match.`);
|
|
348
|
+
}
|
|
349
|
+
if (parts.length > 2) {
|
|
350
|
+
throw new Error(`edit: oldString matched ${parts.length - 1} times in \xAB${userPath}\xBB. Provide a longer unique snippet.`);
|
|
351
|
+
}
|
|
352
|
+
await fs4.writeFile(absolute, parts.join(newString), "utf8");
|
|
353
|
+
return `Edited \xAB${userPath}\xBB (1 replacement).`;
|
|
354
|
+
};
|
|
355
|
+
var editTool = {
|
|
356
|
+
id: "edit",
|
|
357
|
+
registration: {
|
|
358
|
+
toolId: "edit",
|
|
359
|
+
name: "edit",
|
|
360
|
+
description: "Exact string replace in a file. Fails if oldString is missing or not unique.",
|
|
361
|
+
inputSchema: {
|
|
362
|
+
type: "object",
|
|
363
|
+
properties: {
|
|
364
|
+
path: {
|
|
365
|
+
type: "string",
|
|
366
|
+
description: "Project-relative file path"
|
|
367
|
+
},
|
|
368
|
+
oldString: {
|
|
369
|
+
type: "string",
|
|
370
|
+
description: "Exact text to find"
|
|
371
|
+
},
|
|
372
|
+
newString: {
|
|
373
|
+
type: "string",
|
|
374
|
+
description: "Replacement text"
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
required: ["path", "oldString", "newString"],
|
|
378
|
+
additionalProperties: false
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
invoke: invoke5
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
// packages/tools/dist/builtins/glob/tool.js
|
|
385
|
+
import path5 from "node:path";
|
|
386
|
+
|
|
387
|
+
// packages/tools/dist/post-process.js
|
|
388
|
+
import vm from "node:vm";
|
|
389
|
+
var DEFAULT_TIMEOUT_MS = 50;
|
|
390
|
+
var DEFAULT_MAX_OUTPUT_CHARS = 2e5;
|
|
391
|
+
var runReadClassPostProcess = (source, input, options = {}) => {
|
|
392
|
+
const trimmed = source.trim();
|
|
393
|
+
if (trimmed.length === 0) {
|
|
394
|
+
throw new Error("postProcess source is empty.");
|
|
395
|
+
}
|
|
396
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
397
|
+
const maxOutputChars = options.maxOutputChars ?? DEFAULT_MAX_OUTPUT_CHARS;
|
|
398
|
+
const sandbox = {
|
|
399
|
+
__input: input,
|
|
400
|
+
__result: void 0
|
|
401
|
+
};
|
|
402
|
+
try {
|
|
403
|
+
vm.runInNewContext(`__result = (${trimmed})(__input)`, sandbox, {
|
|
404
|
+
timeout: timeoutMs,
|
|
405
|
+
displayErrors: true
|
|
406
|
+
});
|
|
407
|
+
} catch (error) {
|
|
408
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
409
|
+
throw new Error(`postProcess failed: ${message}`);
|
|
410
|
+
}
|
|
411
|
+
if (typeof sandbox.__result !== "string") {
|
|
412
|
+
throw new Error(`postProcess must return a string (got ${typeof sandbox.__result}).`);
|
|
413
|
+
}
|
|
414
|
+
if (sandbox.__result.length > maxOutputChars) {
|
|
415
|
+
throw new Error(`postProcess output exceeds ${maxOutputChars} characters.`);
|
|
416
|
+
}
|
|
417
|
+
return sandbox.__result;
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
// packages/tools/dist/builtins/apply-post-process.js
|
|
421
|
+
var applyPostProcess = (args, text) => {
|
|
422
|
+
const source = asString(args, "postProcess");
|
|
423
|
+
if (source === void 0 || source.trim().length === 0) {
|
|
424
|
+
return text;
|
|
425
|
+
}
|
|
426
|
+
return runReadClassPostProcess(source, text);
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
// packages/tools/dist/builtins/walk-files.js
|
|
430
|
+
import fs6 from "node:fs/promises";
|
|
431
|
+
import path4 from "node:path";
|
|
432
|
+
|
|
433
|
+
// packages/tools/dist/gitignore.js
|
|
434
|
+
import fs5 from "node:fs/promises";
|
|
435
|
+
import path3 from "node:path";
|
|
436
|
+
var parseIgnoreLine = (line) => {
|
|
437
|
+
const trimmed = line.trim();
|
|
438
|
+
if (trimmed.length === 0 || trimmed.startsWith("#")) {
|
|
439
|
+
return void 0;
|
|
440
|
+
}
|
|
441
|
+
const negated = trimmed.startsWith("!");
|
|
442
|
+
const body = negated ? trimmed.slice(1) : trimmed;
|
|
443
|
+
const directoryOnly = body.endsWith("/");
|
|
444
|
+
const pattern = directoryOnly ? body.slice(0, -1) : body;
|
|
445
|
+
if (pattern.length === 0) {
|
|
446
|
+
return void 0;
|
|
447
|
+
}
|
|
448
|
+
return { negated, directoryOnly, pattern };
|
|
449
|
+
};
|
|
450
|
+
var matchSegmentGlob = (pattern, value) => {
|
|
451
|
+
if (pattern === "**") {
|
|
452
|
+
return true;
|
|
453
|
+
}
|
|
454
|
+
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]");
|
|
455
|
+
return new RegExp(`^${escaped}$`).test(value);
|
|
456
|
+
};
|
|
457
|
+
var matchPath = (pattern, relativePosix) => {
|
|
458
|
+
const normalizedPattern = pattern.replace(/\\/g, "/").replace(/^\//, "");
|
|
459
|
+
const target = relativePosix.replace(/^\.\//, "");
|
|
460
|
+
if (!normalizedPattern.includes("/")) {
|
|
461
|
+
const parts = target.split("/");
|
|
462
|
+
return parts.some((part) => matchSegmentGlob(normalizedPattern, part));
|
|
463
|
+
}
|
|
464
|
+
const patternParts = normalizedPattern.split("/");
|
|
465
|
+
const targetParts = target.split("/");
|
|
466
|
+
const matchFrom = (pi, ti) => {
|
|
467
|
+
if (pi >= patternParts.length) {
|
|
468
|
+
return ti >= targetParts.length;
|
|
469
|
+
}
|
|
470
|
+
const part = patternParts[pi] ?? "";
|
|
471
|
+
if (part === "**") {
|
|
472
|
+
if (pi === patternParts.length - 1) {
|
|
473
|
+
return true;
|
|
474
|
+
}
|
|
475
|
+
for (let skip = ti; skip <= targetParts.length; skip += 1) {
|
|
476
|
+
if (matchFrom(pi + 1, skip)) {
|
|
477
|
+
return true;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
return false;
|
|
481
|
+
}
|
|
482
|
+
if (ti >= targetParts.length) {
|
|
483
|
+
return false;
|
|
484
|
+
}
|
|
485
|
+
if (!matchSegmentGlob(part, targetParts[ti] ?? "")) {
|
|
486
|
+
return false;
|
|
487
|
+
}
|
|
488
|
+
return matchFrom(pi + 1, ti + 1);
|
|
489
|
+
};
|
|
490
|
+
return matchFrom(0, 0);
|
|
491
|
+
};
|
|
492
|
+
var loadGitIgnoreMatcher = async (projectRoot) => {
|
|
493
|
+
const rules = [
|
|
494
|
+
{ negated: false, directoryOnly: false, pattern: ".git" },
|
|
495
|
+
{ negated: false, directoryOnly: false, pattern: "node_modules" }
|
|
496
|
+
];
|
|
497
|
+
const gitignorePath = path3.join(projectRoot, ".gitignore");
|
|
498
|
+
try {
|
|
499
|
+
const text = await fs5.readFile(gitignorePath, "utf8");
|
|
500
|
+
for (const line of text.split(/\r?\n/)) {
|
|
501
|
+
const rule = parseIgnoreLine(line);
|
|
502
|
+
if (rule !== void 0) {
|
|
503
|
+
rules.push(rule);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
} catch {
|
|
507
|
+
}
|
|
508
|
+
return {
|
|
509
|
+
ignores: (relativePosix, isDirectory) => {
|
|
510
|
+
let ignored = false;
|
|
511
|
+
for (const rule of rules) {
|
|
512
|
+
if (rule.directoryOnly && !isDirectory) {
|
|
513
|
+
continue;
|
|
514
|
+
}
|
|
515
|
+
if (matchPath(rule.pattern, relativePosix)) {
|
|
516
|
+
ignored = !rule.negated;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return ignored;
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
};
|
|
523
|
+
|
|
524
|
+
// packages/tools/dist/builtins/walk-files.js
|
|
525
|
+
var WALK_EXCLUDE_DIR_NAMES = [
|
|
526
|
+
"node_modules",
|
|
527
|
+
"dist",
|
|
528
|
+
"build",
|
|
529
|
+
".git"
|
|
530
|
+
];
|
|
531
|
+
var globToRegExp = (pattern) => {
|
|
532
|
+
const escaped = pattern.replace(/\\/g, "/").replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*\*/g, "::DOUBLESTAR::").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]").replace(/::DOUBLESTAR::/g, ".*");
|
|
533
|
+
return new RegExp(`^${escaped}$`);
|
|
534
|
+
};
|
|
535
|
+
var normalizeOptions = (options) => typeof options === "boolean" ? { respectGitignore: options } : options;
|
|
536
|
+
var yieldEventLoop = () => new Promise((resolve) => {
|
|
537
|
+
setImmediate(resolve);
|
|
538
|
+
});
|
|
539
|
+
var throwIfAborted = (signal) => {
|
|
540
|
+
if (signal?.aborted) {
|
|
541
|
+
throw new Error("aborted");
|
|
542
|
+
}
|
|
543
|
+
};
|
|
544
|
+
var walkFiles = async (root, dir, options = true) => {
|
|
545
|
+
const opts = normalizeOptions(options);
|
|
546
|
+
const respectGitignore = opts.respectGitignore !== false;
|
|
547
|
+
const yieldEvery = opts.yieldEvery ?? 32;
|
|
548
|
+
const matcher = respectGitignore ? await loadGitIgnoreMatcher(root) : { ignores: () => false };
|
|
549
|
+
const out = [];
|
|
550
|
+
const visitedDirs = /* @__PURE__ */ new Set();
|
|
551
|
+
let steps = 0;
|
|
552
|
+
const visit = async (absoluteDir) => {
|
|
553
|
+
throwIfAborted(opts.signal);
|
|
554
|
+
let realDir;
|
|
555
|
+
try {
|
|
556
|
+
realDir = await fs6.realpath(absoluteDir);
|
|
557
|
+
} catch {
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
560
|
+
if (visitedDirs.has(realDir)) {
|
|
561
|
+
return;
|
|
562
|
+
}
|
|
563
|
+
visitedDirs.add(realDir);
|
|
564
|
+
let entries;
|
|
565
|
+
try {
|
|
566
|
+
entries = await fs6.readdir(absoluteDir, { withFileTypes: true });
|
|
567
|
+
} catch {
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
for (const entry of entries) {
|
|
571
|
+
throwIfAborted(opts.signal);
|
|
572
|
+
steps += 1;
|
|
573
|
+
if (steps % yieldEvery === 0) {
|
|
574
|
+
await yieldEventLoop();
|
|
575
|
+
throwIfAborted(opts.signal);
|
|
576
|
+
}
|
|
577
|
+
if (entry.isDirectory() && WALK_EXCLUDE_DIR_NAMES.includes(entry.name)) {
|
|
578
|
+
continue;
|
|
579
|
+
}
|
|
580
|
+
const absolute = path4.join(absoluteDir, entry.name);
|
|
581
|
+
const relative = path4.relative(root, absolute).split(path4.sep).join("/");
|
|
582
|
+
if (matcher.ignores(relative, entry.isDirectory())) {
|
|
583
|
+
continue;
|
|
584
|
+
}
|
|
585
|
+
if (entry.isSymbolicLink()) {
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
588
|
+
if (entry.isDirectory()) {
|
|
589
|
+
await visit(absolute);
|
|
590
|
+
} else if (entry.isFile()) {
|
|
591
|
+
out.push(relative);
|
|
592
|
+
if (opts.maxFiles !== void 0 && out.length >= opts.maxFiles) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
};
|
|
598
|
+
await visit(dir);
|
|
599
|
+
return out;
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
// packages/tools/dist/builtins/glob/tool.js
|
|
603
|
+
var MAX_GLOB_MATCHES = 200;
|
|
604
|
+
var invoke6 = async (ctx, args) => {
|
|
605
|
+
const pattern = asString(args, "pattern");
|
|
606
|
+
if (pattern === void 0) {
|
|
607
|
+
throw new Error("glob requires string argument \xABpattern\xBB.");
|
|
608
|
+
}
|
|
609
|
+
const cwdArg = asString(args, "cwd") ?? ".";
|
|
610
|
+
const respectGitignore = asBoolean(args, "respectGitignore", true);
|
|
611
|
+
const searchRoot = resolveProjectPath(ctx.projectRoot, cwdArg, fenceOptions(ctx));
|
|
612
|
+
const fenceRoot = resolveFenceRoot(ctx.projectRoot, searchRoot, ctx.allowedRoots) ?? path5.resolve(ctx.projectRoot);
|
|
613
|
+
const files = await walkFiles(fenceRoot, searchRoot, respectGitignore);
|
|
614
|
+
const regex = globToRegExp(pattern.replace(/\\/g, "/"));
|
|
615
|
+
const searchRel = path5.relative(fenceRoot, searchRoot).split(path5.sep).join("/");
|
|
616
|
+
const cwdPrefix = searchRel === "" ? "" : `${searchRel.replace(/\/$/, "")}/`;
|
|
617
|
+
const matches = files.filter((file) => {
|
|
618
|
+
const relativeToCwd = cwdPrefix ? file.startsWith(cwdPrefix) ? file.slice(cwdPrefix.length) : null : file;
|
|
619
|
+
return relativeToCwd !== null && regex.test(relativeToCwd);
|
|
620
|
+
}).map((file) => displayPath(ctx, path5.join(fenceRoot, file))).slice(0, MAX_GLOB_MATCHES + 1);
|
|
621
|
+
const truncated = matches.length > MAX_GLOB_MATCHES;
|
|
622
|
+
const listed = matches.slice(0, MAX_GLOB_MATCHES);
|
|
623
|
+
const body = listed.length === 0 ? "(no matches)" : listed.join("\n") + (truncated ? `
|
|
624
|
+
\u2026[truncated at ${MAX_GLOB_MATCHES}; narrow the pattern]` : "");
|
|
625
|
+
return applyPostProcess(args, body);
|
|
626
|
+
};
|
|
627
|
+
var globTool = {
|
|
628
|
+
id: "glob",
|
|
629
|
+
registration: {
|
|
630
|
+
toolId: "glob",
|
|
631
|
+
name: "glob",
|
|
632
|
+
description: "List files matching a glob under the project root (gitignore-aware by default). Optional postProcess.",
|
|
633
|
+
inputSchema: {
|
|
634
|
+
type: "object",
|
|
635
|
+
properties: {
|
|
636
|
+
pattern: {
|
|
637
|
+
type: "string",
|
|
638
|
+
description: "Glob pattern, e.g. **/*.ts"
|
|
639
|
+
},
|
|
640
|
+
cwd: {
|
|
641
|
+
type: "string",
|
|
642
|
+
description: "Optional subdirectory relative to project root"
|
|
643
|
+
},
|
|
644
|
+
respectGitignore: {
|
|
645
|
+
type: "boolean",
|
|
646
|
+
description: "Default true"
|
|
647
|
+
},
|
|
648
|
+
postProcess: {
|
|
649
|
+
type: "string",
|
|
650
|
+
description: "Optional source of (res: string) => string"
|
|
651
|
+
}
|
|
652
|
+
},
|
|
653
|
+
required: ["pattern"],
|
|
654
|
+
additionalProperties: false
|
|
655
|
+
}
|
|
656
|
+
},
|
|
657
|
+
invoke: invoke6
|
|
658
|
+
};
|
|
659
|
+
|
|
660
|
+
// packages/tools/dist/builtins/grep/tool.js
|
|
661
|
+
import fs8 from "node:fs/promises";
|
|
662
|
+
import path7 from "node:path";
|
|
663
|
+
|
|
664
|
+
// packages/tools/dist/builtins/grep/search.js
|
|
665
|
+
import fs7 from "node:fs/promises";
|
|
666
|
+
import path6 from "node:path";
|
|
667
|
+
|
|
668
|
+
// packages/tools/dist/builtins/command-exists.js
|
|
669
|
+
import { spawn as spawn2 } from "node:child_process";
|
|
670
|
+
var cache = /* @__PURE__ */ new Map();
|
|
671
|
+
var commandExists = async (cmd) => {
|
|
672
|
+
const cached = cache.get(cmd);
|
|
673
|
+
if (cached !== void 0) {
|
|
674
|
+
return cached;
|
|
675
|
+
}
|
|
676
|
+
const checkCmd = process.platform === "win32" ? "where" : "which";
|
|
677
|
+
const exists = await new Promise((resolve) => {
|
|
678
|
+
const child = spawn2(checkCmd, [cmd], {
|
|
679
|
+
stdio: "ignore",
|
|
680
|
+
windowsHide: true
|
|
681
|
+
});
|
|
682
|
+
child.on("error", () => {
|
|
683
|
+
resolve(false);
|
|
684
|
+
});
|
|
685
|
+
child.on("close", (code) => {
|
|
686
|
+
resolve(code === 0);
|
|
687
|
+
});
|
|
688
|
+
});
|
|
689
|
+
cache.set(cmd, exists);
|
|
690
|
+
return exists;
|
|
691
|
+
};
|
|
692
|
+
|
|
693
|
+
// packages/tools/dist/builtins/spawn-capture.js
|
|
694
|
+
import { spawn as spawn3 } from "node:child_process";
|
|
695
|
+
var spawnCapture = (command, args, options = {}) => {
|
|
696
|
+
const maxStdout = options.maxStdout ?? 2e6;
|
|
697
|
+
return new Promise((resolve, reject) => {
|
|
698
|
+
if (options.signal?.aborted) {
|
|
699
|
+
reject(new Error("aborted"));
|
|
700
|
+
return;
|
|
701
|
+
}
|
|
702
|
+
const child = spawn3(command, [...args], {
|
|
703
|
+
cwd: options.cwd,
|
|
704
|
+
windowsHide: true,
|
|
705
|
+
shell: false,
|
|
706
|
+
...options.signal !== void 0 ? { signal: options.signal } : {}
|
|
707
|
+
});
|
|
708
|
+
let stdout = "";
|
|
709
|
+
let stderr = "";
|
|
710
|
+
child.stdout?.on("data", (chunk) => {
|
|
711
|
+
if (stdout.length < maxStdout) {
|
|
712
|
+
stdout += String(chunk);
|
|
713
|
+
if (stdout.length > maxStdout) {
|
|
714
|
+
stdout = stdout.slice(0, maxStdout);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
child.stderr?.on("data", (chunk) => {
|
|
719
|
+
stderr += String(chunk);
|
|
720
|
+
if (stderr.length > 64e3) {
|
|
721
|
+
stderr = stderr.slice(0, 64e3);
|
|
722
|
+
}
|
|
723
|
+
});
|
|
724
|
+
child.on("error", (error) => {
|
|
725
|
+
reject(error);
|
|
726
|
+
});
|
|
727
|
+
child.on("close", (code) => {
|
|
728
|
+
resolve({ stdout, stderr, code });
|
|
729
|
+
});
|
|
730
|
+
});
|
|
731
|
+
};
|
|
732
|
+
|
|
733
|
+
// packages/tools/dist/builtins/grep/search.js
|
|
734
|
+
var MAX_GREP_MATCHES = 100;
|
|
735
|
+
var MAX_GREP_FILES_SCANNED = 5e3;
|
|
736
|
+
var MAX_GREP_FILE_BYTES = 1048576;
|
|
737
|
+
var MAX_GREP_LINE_CHARS = 8e3;
|
|
738
|
+
var SEARCH_EXCLUDE_GLOBS = [
|
|
739
|
+
"!**/node_modules/**",
|
|
740
|
+
"!**/dist/**",
|
|
741
|
+
"!**/build/**",
|
|
742
|
+
"!**/.git/**"
|
|
743
|
+
];
|
|
744
|
+
var throwIfAborted2 = (signal) => {
|
|
745
|
+
if (signal?.aborted) {
|
|
746
|
+
throw new Error("aborted");
|
|
747
|
+
}
|
|
748
|
+
};
|
|
749
|
+
var formatHits = (hits, truncated) => {
|
|
750
|
+
if (hits.length === 0) {
|
|
751
|
+
return "(no matches)";
|
|
752
|
+
}
|
|
753
|
+
const body = hits.map((hit) => `${hit.file}:${hit.line}:${hit.text}`).join("\n");
|
|
754
|
+
return truncated ? `${body}
|
|
755
|
+
\u2026[truncated at ${MAX_GREP_MATCHES}; refine pattern or path]` : body;
|
|
756
|
+
};
|
|
757
|
+
var formatGrepBody = (hits, truncated) => formatHits(hits, truncated);
|
|
758
|
+
var parseLineHits = (stdout, displayPath2, fenceRoot, maxHits) => {
|
|
759
|
+
const hits = [];
|
|
760
|
+
const lines = stdout.split(/\r?\n/);
|
|
761
|
+
for (const raw of lines) {
|
|
762
|
+
if (raw.length === 0) {
|
|
763
|
+
continue;
|
|
764
|
+
}
|
|
765
|
+
const match = /^(.+?):(\d+):(.*)$/.exec(raw);
|
|
766
|
+
if (match === null) {
|
|
767
|
+
continue;
|
|
768
|
+
}
|
|
769
|
+
const fileAbs = path6.isAbsolute(match[1] ?? "") ? match[1] ?? "" : path6.join(fenceRoot, match[1] ?? "");
|
|
770
|
+
const line = Number(match[2]);
|
|
771
|
+
const text = match[3] ?? "";
|
|
772
|
+
if (!Number.isFinite(line)) {
|
|
773
|
+
continue;
|
|
774
|
+
}
|
|
775
|
+
hits.push({
|
|
776
|
+
file: displayPath2(fileAbs),
|
|
777
|
+
line,
|
|
778
|
+
text: text.length > MAX_GREP_LINE_CHARS ? `${text.slice(0, MAX_GREP_LINE_CHARS)}\u2026` : text
|
|
779
|
+
});
|
|
780
|
+
if (hits.length >= maxHits) {
|
|
781
|
+
return { hits, truncated: true };
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
return { hits, truncated: false };
|
|
785
|
+
};
|
|
786
|
+
var isBinaryAbortError = (error) => error instanceof Error && (error.name === "AbortError" || error.message === "aborted");
|
|
787
|
+
var searchWithRipgrep = async (input, deps = {}) => {
|
|
788
|
+
const exists = deps.commandExists ?? commandExists;
|
|
789
|
+
const run = deps.spawnCapture ?? spawnCapture;
|
|
790
|
+
if (!await exists("rg")) {
|
|
791
|
+
return {
|
|
792
|
+
ok: false,
|
|
793
|
+
reason: "unavailable",
|
|
794
|
+
message: "ripgrep (rg) is not available on this system"
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
throwIfAborted2(input.signal);
|
|
798
|
+
const args = [
|
|
799
|
+
"-n",
|
|
800
|
+
"--color",
|
|
801
|
+
"never",
|
|
802
|
+
"--max-filesize",
|
|
803
|
+
`${MAX_GREP_FILE_BYTES}`,
|
|
804
|
+
...input.respectGitignore ? [] : ["--no-ignore"],
|
|
805
|
+
...SEARCH_EXCLUDE_GLOBS.flatMap((glob) => ["--glob", glob]),
|
|
806
|
+
...input.caseInsensitive ? ["-i"] : [],
|
|
807
|
+
"-e",
|
|
808
|
+
input.pattern,
|
|
809
|
+
input.searchAbsolute
|
|
810
|
+
];
|
|
811
|
+
try {
|
|
812
|
+
const result = await run("rg", args, {
|
|
813
|
+
cwd: input.fenceRoot,
|
|
814
|
+
...input.signal !== void 0 ? { signal: input.signal } : {}
|
|
815
|
+
});
|
|
816
|
+
if (result.code !== null && result.code >= 2) {
|
|
817
|
+
const detail = result.stderr.trim();
|
|
818
|
+
return {
|
|
819
|
+
ok: false,
|
|
820
|
+
reason: "error",
|
|
821
|
+
message: detail.length > 0 ? `ripgrep failed: ${detail}` : "ripgrep failed"
|
|
822
|
+
};
|
|
823
|
+
}
|
|
824
|
+
const parsed = parseLineHits(result.stdout, input.displayPath, input.fenceRoot, MAX_GREP_MATCHES);
|
|
825
|
+
return {
|
|
826
|
+
ok: true,
|
|
827
|
+
hits: parsed.hits,
|
|
828
|
+
truncated: parsed.truncated,
|
|
829
|
+
backend: "rg"
|
|
830
|
+
};
|
|
831
|
+
} catch (error) {
|
|
832
|
+
if (isBinaryAbortError(error)) {
|
|
833
|
+
throw new Error("aborted");
|
|
834
|
+
}
|
|
835
|
+
return {
|
|
836
|
+
ok: false,
|
|
837
|
+
reason: "unavailable",
|
|
838
|
+
message: error instanceof Error ? error.message : "Error executing ripgrep"
|
|
839
|
+
};
|
|
840
|
+
}
|
|
841
|
+
};
|
|
842
|
+
var searchWithGrep = async (input, deps = {}) => {
|
|
843
|
+
const exists = deps.commandExists ?? commandExists;
|
|
844
|
+
const run = deps.spawnCapture ?? spawnCapture;
|
|
845
|
+
if (!await exists("grep")) {
|
|
846
|
+
return {
|
|
847
|
+
ok: false,
|
|
848
|
+
reason: "unavailable",
|
|
849
|
+
message: "grep is not available on this system"
|
|
850
|
+
};
|
|
851
|
+
}
|
|
852
|
+
throwIfAborted2(input.signal);
|
|
853
|
+
const args = [
|
|
854
|
+
"-r",
|
|
855
|
+
"-n",
|
|
856
|
+
"-E",
|
|
857
|
+
"-I",
|
|
858
|
+
...input.caseInsensitive ? ["-i"] : [],
|
|
859
|
+
...WALK_EXCLUDE_DIR_NAMES.flatMap((name) => ["--exclude-dir", name]),
|
|
860
|
+
"-e",
|
|
861
|
+
input.pattern,
|
|
862
|
+
input.searchAbsolute
|
|
863
|
+
];
|
|
864
|
+
try {
|
|
865
|
+
const result = await run("grep", args, {
|
|
866
|
+
cwd: input.fenceRoot,
|
|
867
|
+
...input.signal !== void 0 ? { signal: input.signal } : {}
|
|
868
|
+
});
|
|
869
|
+
if (result.code !== null && result.code >= 2) {
|
|
870
|
+
const detail = result.stderr.trim();
|
|
871
|
+
return {
|
|
872
|
+
ok: false,
|
|
873
|
+
reason: "error",
|
|
874
|
+
message: detail.length > 0 ? `grep failed: ${detail}` : "grep failed"
|
|
875
|
+
};
|
|
876
|
+
}
|
|
877
|
+
const parsed = parseLineHits(result.stdout, input.displayPath, input.fenceRoot, MAX_GREP_MATCHES);
|
|
878
|
+
return {
|
|
879
|
+
ok: true,
|
|
880
|
+
hits: parsed.hits,
|
|
881
|
+
truncated: parsed.truncated,
|
|
882
|
+
backend: "grep"
|
|
883
|
+
};
|
|
884
|
+
} catch (error) {
|
|
885
|
+
if (isBinaryAbortError(error)) {
|
|
886
|
+
throw new Error("aborted");
|
|
887
|
+
}
|
|
888
|
+
return {
|
|
889
|
+
ok: false,
|
|
890
|
+
reason: "unavailable",
|
|
891
|
+
message: error instanceof Error ? error.message : "Error executing grep"
|
|
892
|
+
};
|
|
893
|
+
}
|
|
894
|
+
};
|
|
895
|
+
var looksBinary = (buf) => {
|
|
896
|
+
const sample = buf.subarray(0, Math.min(buf.length, 8192));
|
|
897
|
+
return sample.includes(0);
|
|
898
|
+
};
|
|
899
|
+
var yieldEventLoop2 = () => new Promise((resolve) => {
|
|
900
|
+
setImmediate(resolve);
|
|
901
|
+
});
|
|
902
|
+
var searchWithNodeWalk = async (input) => {
|
|
903
|
+
throwIfAborted2(input.signal);
|
|
904
|
+
let regex;
|
|
905
|
+
try {
|
|
906
|
+
regex = new RegExp(input.pattern, input.caseInsensitive ? "i" : "");
|
|
907
|
+
} catch (error) {
|
|
908
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
909
|
+
return {
|
|
910
|
+
ok: false,
|
|
911
|
+
reason: "error",
|
|
912
|
+
message: `Invalid regex \xAB${input.pattern}\xBB: ${message}. Escape special characters or simplify the pattern.`
|
|
913
|
+
};
|
|
914
|
+
}
|
|
915
|
+
const stat = await fs7.stat(input.searchAbsolute).catch(() => null);
|
|
916
|
+
if (stat === null) {
|
|
917
|
+
return {
|
|
918
|
+
ok: false,
|
|
919
|
+
reason: "error",
|
|
920
|
+
message: `Path not found: ${input.searchAbsolute}`
|
|
921
|
+
};
|
|
922
|
+
}
|
|
923
|
+
const files = stat.isFile() ? [input.searchAbsolute] : (await walkFiles(input.fenceRoot, input.searchAbsolute, {
|
|
924
|
+
respectGitignore: input.respectGitignore,
|
|
925
|
+
...input.signal !== void 0 ? { signal: input.signal } : {},
|
|
926
|
+
maxFiles: MAX_GREP_FILES_SCANNED
|
|
927
|
+
})).map((relative) => path6.join(input.fenceRoot, relative));
|
|
928
|
+
const hits = [];
|
|
929
|
+
let matchCapHit = false;
|
|
930
|
+
let scanned = 0;
|
|
931
|
+
for (const fileAbs of files) {
|
|
932
|
+
throwIfAborted2(input.signal);
|
|
933
|
+
scanned += 1;
|
|
934
|
+
if (scanned % 16 === 0) {
|
|
935
|
+
await yieldEventLoop2();
|
|
936
|
+
throwIfAborted2(input.signal);
|
|
937
|
+
}
|
|
938
|
+
if (hits.length >= MAX_GREP_MATCHES) {
|
|
939
|
+
matchCapHit = true;
|
|
940
|
+
break;
|
|
941
|
+
}
|
|
942
|
+
let buf;
|
|
943
|
+
try {
|
|
944
|
+
const handle = await fs7.open(fileAbs, "r");
|
|
945
|
+
try {
|
|
946
|
+
const st = await handle.stat();
|
|
947
|
+
if (st.size > MAX_GREP_FILE_BYTES) {
|
|
948
|
+
continue;
|
|
949
|
+
}
|
|
950
|
+
buf = Buffer.alloc(Number(st.size));
|
|
951
|
+
await handle.read(buf, 0, buf.length, 0);
|
|
952
|
+
} finally {
|
|
953
|
+
await handle.close();
|
|
954
|
+
}
|
|
955
|
+
} catch {
|
|
956
|
+
continue;
|
|
957
|
+
}
|
|
958
|
+
if (looksBinary(buf)) {
|
|
959
|
+
continue;
|
|
960
|
+
}
|
|
961
|
+
const text = buf.toString("utf8");
|
|
962
|
+
const lines = text.split(/\r?\n/);
|
|
963
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
964
|
+
let line = lines[i] ?? "";
|
|
965
|
+
if (line.length > MAX_GREP_LINE_CHARS) {
|
|
966
|
+
line = line.slice(0, MAX_GREP_LINE_CHARS);
|
|
967
|
+
}
|
|
968
|
+
if (regex.test(line)) {
|
|
969
|
+
hits.push({
|
|
970
|
+
file: input.displayPath(fileAbs),
|
|
971
|
+
line: i + 1,
|
|
972
|
+
text: line
|
|
973
|
+
});
|
|
974
|
+
if (hits.length >= MAX_GREP_MATCHES) {
|
|
975
|
+
matchCapHit = true;
|
|
976
|
+
break;
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
const fileCapHit = !stat.isFile() && files.length >= MAX_GREP_FILES_SCANNED;
|
|
982
|
+
return {
|
|
983
|
+
ok: true,
|
|
984
|
+
hits,
|
|
985
|
+
truncated: matchCapHit || fileCapHit,
|
|
986
|
+
backend: "node"
|
|
987
|
+
};
|
|
988
|
+
};
|
|
989
|
+
var runGrepCascade = async (input, deps = {}) => {
|
|
990
|
+
throwIfAborted2(input.signal);
|
|
991
|
+
const rg = await searchWithRipgrep(input, deps);
|
|
992
|
+
if (rg.ok) {
|
|
993
|
+
return {
|
|
994
|
+
body: formatGrepBody(rg.hits, rg.truncated),
|
|
995
|
+
backend: rg.backend
|
|
996
|
+
};
|
|
997
|
+
}
|
|
998
|
+
const grep = await searchWithGrep(input, deps);
|
|
999
|
+
if (grep.ok) {
|
|
1000
|
+
return {
|
|
1001
|
+
body: formatGrepBody(grep.hits, grep.truncated),
|
|
1002
|
+
backend: grep.backend
|
|
1003
|
+
};
|
|
1004
|
+
}
|
|
1005
|
+
const node = await searchWithNodeWalk(input);
|
|
1006
|
+
if (!node.ok) {
|
|
1007
|
+
throw new Error(node.message);
|
|
1008
|
+
}
|
|
1009
|
+
return {
|
|
1010
|
+
body: formatGrepBody(node.hits, node.truncated),
|
|
1011
|
+
backend: node.backend
|
|
1012
|
+
};
|
|
1013
|
+
};
|
|
1014
|
+
|
|
1015
|
+
// packages/tools/dist/builtins/grep/tool.js
|
|
1016
|
+
var invoke7 = async (ctx, args) => {
|
|
1017
|
+
const pattern = asString(args, "pattern");
|
|
1018
|
+
if (pattern === void 0) {
|
|
1019
|
+
throw new Error("grep requires string argument \xABpattern\xBB.");
|
|
1020
|
+
}
|
|
1021
|
+
const searchPath = asString(args, "path") ?? ".";
|
|
1022
|
+
const respectGitignore = asBoolean(args, "respectGitignore", true);
|
|
1023
|
+
const caseInsensitive = asBoolean(args, "caseInsensitive", false);
|
|
1024
|
+
const absolute = resolveProjectPath(ctx.projectRoot, searchPath, fenceOptions(ctx));
|
|
1025
|
+
const stat = await fs8.stat(absolute).catch(() => null);
|
|
1026
|
+
if (stat === null) {
|
|
1027
|
+
throw new Error(await formatNotFound(absolute, searchPath));
|
|
1028
|
+
}
|
|
1029
|
+
const fenceRoot = resolveFenceRoot(ctx.projectRoot, absolute, ctx.allowedRoots) ?? path7.resolve(ctx.projectRoot);
|
|
1030
|
+
const { body } = await runGrepCascade({
|
|
1031
|
+
pattern,
|
|
1032
|
+
caseInsensitive,
|
|
1033
|
+
respectGitignore,
|
|
1034
|
+
searchAbsolute: absolute,
|
|
1035
|
+
fenceRoot,
|
|
1036
|
+
displayPath: (fileAbs) => displayPath(ctx, fileAbs),
|
|
1037
|
+
...ctx.signal !== void 0 ? { signal: ctx.signal } : {}
|
|
1038
|
+
});
|
|
1039
|
+
return applyPostProcess(args, body);
|
|
1040
|
+
};
|
|
1041
|
+
var grepTool = {
|
|
1042
|
+
id: "grep",
|
|
1043
|
+
registration: {
|
|
1044
|
+
toolId: "grep",
|
|
1045
|
+
name: "grep",
|
|
1046
|
+
description: "Regex search across project files (gitignore-aware by default; ripgrep when available, else grep, else bounded Node walk). Optional postProcess.",
|
|
1047
|
+
inputSchema: {
|
|
1048
|
+
type: "object",
|
|
1049
|
+
properties: {
|
|
1050
|
+
pattern: {
|
|
1051
|
+
type: "string",
|
|
1052
|
+
description: "Regex pattern (ripgrep dialect when rg is available; JavaScript RegExp on Node fallback)"
|
|
1053
|
+
},
|
|
1054
|
+
path: {
|
|
1055
|
+
type: "string",
|
|
1056
|
+
description: "Optional subdirectory or file to search"
|
|
1057
|
+
},
|
|
1058
|
+
caseInsensitive: { type: "boolean" },
|
|
1059
|
+
respectGitignore: {
|
|
1060
|
+
type: "boolean",
|
|
1061
|
+
description: "Default true"
|
|
1062
|
+
},
|
|
1063
|
+
postProcess: {
|
|
1064
|
+
type: "string",
|
|
1065
|
+
description: "Optional source of (res: string) => string"
|
|
1066
|
+
}
|
|
1067
|
+
},
|
|
1068
|
+
required: ["pattern"],
|
|
1069
|
+
additionalProperties: false
|
|
1070
|
+
}
|
|
1071
|
+
},
|
|
1072
|
+
invoke: invoke7
|
|
1073
|
+
};
|
|
1074
|
+
|
|
1075
|
+
// packages/tools/dist/builtins/read/tool.js
|
|
1076
|
+
import fs9 from "node:fs/promises";
|
|
1077
|
+
var MAX_READ_CHARS = 2e5;
|
|
1078
|
+
var sliceLines = (content, args) => {
|
|
1079
|
+
const lines = content.split(/\r?\n/);
|
|
1080
|
+
const startLine = asNumber(args, "startLine");
|
|
1081
|
+
const endLine = asNumber(args, "endLine");
|
|
1082
|
+
const offset = asNumber(args, "offset");
|
|
1083
|
+
const limit = asNumber(args, "limit");
|
|
1084
|
+
let start = 0;
|
|
1085
|
+
let end = lines.length;
|
|
1086
|
+
if (startLine !== void 0) {
|
|
1087
|
+
start = Math.max(0, Math.floor(startLine) - 1);
|
|
1088
|
+
} else if (offset !== void 0) {
|
|
1089
|
+
start = Math.max(0, Math.floor(offset));
|
|
1090
|
+
}
|
|
1091
|
+
if (endLine !== void 0) {
|
|
1092
|
+
end = Math.min(lines.length, Math.floor(endLine));
|
|
1093
|
+
} else if (limit !== void 0) {
|
|
1094
|
+
end = Math.min(lines.length, start + Math.max(0, Math.floor(limit)));
|
|
1095
|
+
}
|
|
1096
|
+
const sliced = lines.slice(start, end).join("\n");
|
|
1097
|
+
const truncated = sliced.length > MAX_READ_CHARS ? `${sliced.slice(0, MAX_READ_CHARS)}
|
|
1098
|
+
\u2026[truncated at ${MAX_READ_CHARS} chars]` : sliced;
|
|
1099
|
+
if (end < lines.length || start > 0) {
|
|
1100
|
+
return `${truncated}
|
|
1101
|
+
|
|
1102
|
+
[lines ${start + 1}-${Math.min(end, lines.length)} of ${lines.length}; continue with startLine=${end + 1}]`;
|
|
1103
|
+
}
|
|
1104
|
+
return truncated;
|
|
1105
|
+
};
|
|
1106
|
+
var invoke8 = async (ctx, args) => {
|
|
1107
|
+
const userPath = asString(args, "path");
|
|
1108
|
+
if (userPath === void 0) {
|
|
1109
|
+
throw new Error("read requires string argument \xABpath\xBB.");
|
|
1110
|
+
}
|
|
1111
|
+
const absolute = resolveProjectPath(ctx.projectRoot, userPath, fenceOptions(ctx));
|
|
1112
|
+
let content;
|
|
1113
|
+
try {
|
|
1114
|
+
content = await fs9.readFile(absolute, "utf8");
|
|
1115
|
+
} catch (error) {
|
|
1116
|
+
const code = error !== null && typeof error === "object" && "code" in error ? String(error.code) : "";
|
|
1117
|
+
if (code === "ENOENT") {
|
|
1118
|
+
throw new Error(await formatNotFound(absolute, userPath));
|
|
1119
|
+
}
|
|
1120
|
+
throw error;
|
|
1121
|
+
}
|
|
1122
|
+
return applyPostProcess(args, sliceLines(content, args));
|
|
1123
|
+
};
|
|
1124
|
+
var readTool = {
|
|
1125
|
+
id: "read",
|
|
1126
|
+
registration: {
|
|
1127
|
+
toolId: "read",
|
|
1128
|
+
name: "read",
|
|
1129
|
+
description: "Read a file under the project root. Optional startLine/endLine (1-based) or offset/limit (byte-ish line slices). Optional postProcess: source of (res: string) => string.",
|
|
1130
|
+
inputSchema: {
|
|
1131
|
+
type: "object",
|
|
1132
|
+
properties: {
|
|
1133
|
+
path: {
|
|
1134
|
+
type: "string",
|
|
1135
|
+
description: "Project-relative file path"
|
|
1136
|
+
},
|
|
1137
|
+
startLine: {
|
|
1138
|
+
type: "number",
|
|
1139
|
+
description: "1-based start line"
|
|
1140
|
+
},
|
|
1141
|
+
endLine: {
|
|
1142
|
+
type: "number",
|
|
1143
|
+
description: "1-based end line (inclusive)"
|
|
1144
|
+
},
|
|
1145
|
+
offset: {
|
|
1146
|
+
type: "number",
|
|
1147
|
+
description: "0-based line offset"
|
|
1148
|
+
},
|
|
1149
|
+
limit: {
|
|
1150
|
+
type: "number",
|
|
1151
|
+
description: "Max lines to return"
|
|
1152
|
+
},
|
|
1153
|
+
postProcess: {
|
|
1154
|
+
type: "string",
|
|
1155
|
+
description: "Optional source of (res: string) => string applied after a successful read"
|
|
1156
|
+
}
|
|
1157
|
+
},
|
|
1158
|
+
required: ["path"],
|
|
1159
|
+
additionalProperties: false
|
|
1160
|
+
}
|
|
1161
|
+
},
|
|
1162
|
+
invoke: invoke8
|
|
1163
|
+
};
|
|
1164
|
+
|
|
1165
|
+
// packages/tools/dist/builtins/write/tool.js
|
|
1166
|
+
import fs10 from "node:fs/promises";
|
|
1167
|
+
import path8 from "node:path";
|
|
1168
|
+
var invoke9 = async (ctx, args) => {
|
|
1169
|
+
const userPath = asString(args, "path");
|
|
1170
|
+
const content = asString(args, "content");
|
|
1171
|
+
if (userPath === void 0 || content === void 0) {
|
|
1172
|
+
throw new Error("write requires string arguments \xABpath\xBB and \xABcontent\xBB.");
|
|
1173
|
+
}
|
|
1174
|
+
const absolute = resolveProjectPath(ctx.projectRoot, userPath, fenceOptions(ctx));
|
|
1175
|
+
await fs10.mkdir(path8.dirname(absolute), { recursive: true });
|
|
1176
|
+
await fs10.writeFile(absolute, content, "utf8");
|
|
1177
|
+
return `Wrote \xAB${userPath}\xBB (${content.length} chars).`;
|
|
1178
|
+
};
|
|
1179
|
+
var writeTool = {
|
|
1180
|
+
id: "write",
|
|
1181
|
+
registration: {
|
|
1182
|
+
toolId: "write",
|
|
1183
|
+
name: "write",
|
|
1184
|
+
description: "Write or overwrite a file (creates parent directories). Prefer create for new-only files.",
|
|
1185
|
+
inputSchema: {
|
|
1186
|
+
type: "object",
|
|
1187
|
+
properties: {
|
|
1188
|
+
path: {
|
|
1189
|
+
type: "string",
|
|
1190
|
+
description: "Project-relative file path"
|
|
1191
|
+
},
|
|
1192
|
+
content: {
|
|
1193
|
+
type: "string",
|
|
1194
|
+
description: "Full file contents"
|
|
1195
|
+
}
|
|
1196
|
+
},
|
|
1197
|
+
required: ["path", "content"],
|
|
1198
|
+
additionalProperties: false
|
|
1199
|
+
}
|
|
1200
|
+
},
|
|
1201
|
+
invoke: invoke9
|
|
1202
|
+
};
|
|
1203
|
+
|
|
1204
|
+
// packages/tools/dist/builtins/catalog.js
|
|
1205
|
+
var BUILTIN_TOOLS = [
|
|
1206
|
+
readTool,
|
|
1207
|
+
globTool,
|
|
1208
|
+
grepTool,
|
|
1209
|
+
editTool,
|
|
1210
|
+
writeTool,
|
|
1211
|
+
createTool,
|
|
1212
|
+
deleteTool,
|
|
1213
|
+
bashTool,
|
|
1214
|
+
askUserTool
|
|
1215
|
+
];
|
|
1216
|
+
var BUILTIN_TOOL_IDS = BUILTIN_TOOLS.map((tool) => tool.id);
|
|
1217
|
+
var BUILTIN_REGISTRATIONS = BUILTIN_TOOLS.map((tool) => tool.registration);
|
|
1218
|
+
var byId = Object.fromEntries(BUILTIN_TOOLS.map((tool) => [tool.id, tool]));
|
|
1219
|
+
var isBuiltinToolId = (toolId) => Object.hasOwn(byId, toolId);
|
|
1220
|
+
var invokeBuiltin = (toolId, ctx, args) => byId[toolId].invoke(ctx, args);
|
|
1221
|
+
|
|
1222
|
+
// packages/tools/dist/permission.js
|
|
1223
|
+
var DEFAULT_PERMISSION_CONFIG = {
|
|
1224
|
+
read: { "*": "allow" },
|
|
1225
|
+
glob: { "*": "allow" },
|
|
1226
|
+
grep: { "*": "allow" },
|
|
1227
|
+
edit: { "*": "allow" },
|
|
1228
|
+
write: { "*": "allow" },
|
|
1229
|
+
create: { "*": "allow" },
|
|
1230
|
+
delete: { "*": "allow" },
|
|
1231
|
+
bash: { "*": "allow" },
|
|
1232
|
+
ask_user: { "*": "allow" }
|
|
1233
|
+
};
|
|
1234
|
+
var DECISION_RANK = {
|
|
1235
|
+
deny: 3,
|
|
1236
|
+
ask: 2,
|
|
1237
|
+
allow: 1
|
|
1238
|
+
};
|
|
1239
|
+
var isDecision = (value) => value === "allow" || value === "ask" || value === "deny";
|
|
1240
|
+
var escapeRegExp = (text) => text.replace(/[.+^${}()|[\]\\]/g, "\\$&");
|
|
1241
|
+
var matchPermissionPattern = (pattern, detail) => {
|
|
1242
|
+
const normalizedPattern = pattern.trim();
|
|
1243
|
+
const normalizedDetail = detail;
|
|
1244
|
+
if (normalizedPattern.length === 0) {
|
|
1245
|
+
return false;
|
|
1246
|
+
}
|
|
1247
|
+
if (normalizedPattern === "*") {
|
|
1248
|
+
return true;
|
|
1249
|
+
}
|
|
1250
|
+
const pathStyle = normalizedPattern.includes("/") || normalizedPattern.includes("**");
|
|
1251
|
+
if (pathStyle) {
|
|
1252
|
+
const posixDetail = normalizedDetail.replace(/\\/g, "/");
|
|
1253
|
+
let regexSource2 = "";
|
|
1254
|
+
for (let i = 0; i < normalizedPattern.length; i += 1) {
|
|
1255
|
+
if (normalizedPattern.startsWith("**/", i)) {
|
|
1256
|
+
regexSource2 += "(?:.*/)?";
|
|
1257
|
+
i += 2;
|
|
1258
|
+
continue;
|
|
1259
|
+
}
|
|
1260
|
+
if (normalizedPattern.startsWith("**", i)) {
|
|
1261
|
+
regexSource2 += ".*";
|
|
1262
|
+
i += 1;
|
|
1263
|
+
continue;
|
|
1264
|
+
}
|
|
1265
|
+
const ch = normalizedPattern[i] ?? "";
|
|
1266
|
+
if (ch === "*") {
|
|
1267
|
+
regexSource2 += "[^/]*";
|
|
1268
|
+
continue;
|
|
1269
|
+
}
|
|
1270
|
+
regexSource2 += escapeRegExp(ch);
|
|
1271
|
+
}
|
|
1272
|
+
return new RegExp(`^${regexSource2}$`).test(posixDetail);
|
|
1273
|
+
}
|
|
1274
|
+
let regexSource = "";
|
|
1275
|
+
for (const ch of normalizedPattern) {
|
|
1276
|
+
if (ch === "*") {
|
|
1277
|
+
regexSource += "[\\s\\S]*";
|
|
1278
|
+
continue;
|
|
1279
|
+
}
|
|
1280
|
+
regexSource += escapeRegExp(ch);
|
|
1281
|
+
}
|
|
1282
|
+
return new RegExp(`^${regexSource}$`).test(normalizedDetail);
|
|
1283
|
+
};
|
|
1284
|
+
var rulesForTool = (config, toolId) => {
|
|
1285
|
+
const raw = config[toolId] ?? DEFAULT_PERMISSION_CONFIG[toolId];
|
|
1286
|
+
if (raw === void 0) {
|
|
1287
|
+
return { "*": "deny" };
|
|
1288
|
+
}
|
|
1289
|
+
if (isDecision(raw)) {
|
|
1290
|
+
return { "*": raw };
|
|
1291
|
+
}
|
|
1292
|
+
const entries = Object.entries(raw).filter((entry) => isDecision(entry[1]));
|
|
1293
|
+
if (entries.length === 0) {
|
|
1294
|
+
return { "*": "deny" };
|
|
1295
|
+
}
|
|
1296
|
+
return Object.fromEntries(entries);
|
|
1297
|
+
};
|
|
1298
|
+
var resolvePermission = (config, toolId, detail) => {
|
|
1299
|
+
const merged = {
|
|
1300
|
+
...DEFAULT_PERMISSION_CONFIG,
|
|
1301
|
+
...config ?? {}
|
|
1302
|
+
};
|
|
1303
|
+
const rules = rulesForTool(merged, toolId);
|
|
1304
|
+
const matches = Object.entries(rules).filter(([pattern]) => matchPermissionPattern(pattern, detail));
|
|
1305
|
+
if (matches.length === 0) {
|
|
1306
|
+
return "deny";
|
|
1307
|
+
}
|
|
1308
|
+
matches.sort((a, b) => {
|
|
1309
|
+
const lengthDelta = b[0].length - a[0].length;
|
|
1310
|
+
if (lengthDelta !== 0) {
|
|
1311
|
+
return lengthDelta;
|
|
1312
|
+
}
|
|
1313
|
+
return DECISION_RANK[b[1]] - DECISION_RANK[a[1]];
|
|
1314
|
+
});
|
|
1315
|
+
return matches[0]?.[1] ?? "deny";
|
|
1316
|
+
};
|
|
1317
|
+
var permissionDetailForCall = (toolId, args) => {
|
|
1318
|
+
if (toolId === "bash") {
|
|
1319
|
+
return typeof args.command === "string" ? args.command : "";
|
|
1320
|
+
}
|
|
1321
|
+
if (toolId === "ask_user") {
|
|
1322
|
+
return typeof args.question === "string" ? args.question : "";
|
|
1323
|
+
}
|
|
1324
|
+
if (typeof args.path === "string" && args.path.length > 0) {
|
|
1325
|
+
return args.path.replace(/\\/g, "/");
|
|
1326
|
+
}
|
|
1327
|
+
if (typeof args.file === "string" && args.file.length > 0) {
|
|
1328
|
+
return args.file.replace(/\\/g, "/");
|
|
1329
|
+
}
|
|
1330
|
+
if (typeof args.url === "string" && args.url.length > 0) {
|
|
1331
|
+
return args.url;
|
|
1332
|
+
}
|
|
1333
|
+
if (typeof args.key === "string" && args.key.length > 0) {
|
|
1334
|
+
return args.key;
|
|
1335
|
+
}
|
|
1336
|
+
if (typeof args.collectionId === "string" && args.collectionId.length > 0) {
|
|
1337
|
+
return args.collectionId;
|
|
1338
|
+
}
|
|
1339
|
+
return "*";
|
|
1340
|
+
};
|
|
1341
|
+
var permissionAskSummary = (toolId, detail) => {
|
|
1342
|
+
if (toolId === "bash") {
|
|
1343
|
+
return `Allow bash: ${detail.length > 0 ? detail : "(empty command)"}?`;
|
|
1344
|
+
}
|
|
1345
|
+
return `Allow ${toolId}: ${detail.length > 0 ? detail : "(no path)"}?`;
|
|
1346
|
+
};
|
|
1347
|
+
var grantKeyForCall = (toolId, detail) => `${toolId}\0${detail}`;
|
|
1348
|
+
var mergePermissionConfigs = (...layers) => layers.reduce((acc, layer) => layer === void 0 ? acc : { ...acc, ...layer }, {});
|
|
1349
|
+
var stricterPermission = (left, right) => DECISION_RANK[left] >= DECISION_RANK[right] ? left : right;
|
|
1350
|
+
var toolFloorDecision = (config, toolId) => {
|
|
1351
|
+
const merged = {
|
|
1352
|
+
...DEFAULT_PERMISSION_CONFIG,
|
|
1353
|
+
...config ?? {}
|
|
1354
|
+
};
|
|
1355
|
+
if (merged[toolId] === void 0 && DEFAULT_PERMISSION_CONFIG[toolId] === void 0) {
|
|
1356
|
+
return "allow";
|
|
1357
|
+
}
|
|
1358
|
+
const rules = rulesForTool(merged, toolId);
|
|
1359
|
+
const star = rules["*"];
|
|
1360
|
+
if (star !== void 0 && Object.keys(rules).length === 1) {
|
|
1361
|
+
return star;
|
|
1362
|
+
}
|
|
1363
|
+
const decisions = Object.values(rules);
|
|
1364
|
+
if (decisions.some((decision) => decision === "allow")) {
|
|
1365
|
+
return "allow";
|
|
1366
|
+
}
|
|
1367
|
+
if (decisions.some((decision) => decision === "ask")) {
|
|
1368
|
+
return "ask";
|
|
1369
|
+
}
|
|
1370
|
+
return "deny";
|
|
1371
|
+
};
|
|
1372
|
+
var clampToolPermission = (floor, node) => stricterPermission(floor, node);
|
|
1373
|
+
var isToolAlwaysDenied = (config, toolId) => {
|
|
1374
|
+
const merged = {
|
|
1375
|
+
...DEFAULT_PERMISSION_CONFIG,
|
|
1376
|
+
...config ?? {}
|
|
1377
|
+
};
|
|
1378
|
+
if (merged[toolId] === void 0 && DEFAULT_PERMISSION_CONFIG[toolId] === void 0) {
|
|
1379
|
+
return false;
|
|
1380
|
+
}
|
|
1381
|
+
const rules = rulesForTool(merged, toolId);
|
|
1382
|
+
const decisions = Object.values(rules);
|
|
1383
|
+
return decisions.length > 0 && decisions.every((decision) => decision === "deny");
|
|
1384
|
+
};
|
|
1385
|
+
var mergeProjectAndNodePermissions = (projectPermission, nodeToolPermissions) => {
|
|
1386
|
+
const project = {
|
|
1387
|
+
...DEFAULT_PERMISSION_CONFIG,
|
|
1388
|
+
...projectPermission ?? {}
|
|
1389
|
+
};
|
|
1390
|
+
if (nodeToolPermissions === void 0) {
|
|
1391
|
+
return projectPermission ?? {};
|
|
1392
|
+
}
|
|
1393
|
+
const nodeEntries = [];
|
|
1394
|
+
for (const [toolId, decision] of Object.entries(nodeToolPermissions)) {
|
|
1395
|
+
if (!isDecision(decision)) {
|
|
1396
|
+
continue;
|
|
1397
|
+
}
|
|
1398
|
+
const floor = toolFloorDecision(project, toolId);
|
|
1399
|
+
nodeEntries.push([toolId, clampToolPermission(floor, decision)]);
|
|
1400
|
+
}
|
|
1401
|
+
return mergePermissionConfigs(projectPermission, Object.fromEntries(nodeEntries));
|
|
1402
|
+
};
|
|
1403
|
+
var PERMISSION_DENY_HINT = "Tighten or loosen via Inspector tool permissions (within project floor) or edit permission.<tool> in .langflower/langflower.jsonc.";
|
|
1404
|
+
var formatPermissionDeniedText = (toolId, detail) => {
|
|
1405
|
+
const target = detail.length > 0 ? `${toolId} (${detail})` : toolId;
|
|
1406
|
+
return `Permission denied for ${target}. Effective policy is deny (project floor and/or node toolPermissions). ${PERMISSION_DENY_HINT}`;
|
|
1407
|
+
};
|
|
1408
|
+
|
|
1409
|
+
// packages/tools/dist/gate-tool-call.js
|
|
1410
|
+
var deniedToolResult = (toolId, detail) => ({
|
|
1411
|
+
ok: false,
|
|
1412
|
+
text: formatPermissionDeniedText(toolId, detail)
|
|
1413
|
+
});
|
|
1414
|
+
var gateToolCall = async (options) => {
|
|
1415
|
+
const { toolId, detail, grants, permission, requestPermission, whenMissingToolConfig } = options;
|
|
1416
|
+
const key = grantKeyForCall(toolId, detail);
|
|
1417
|
+
if (grants.has(key)) {
|
|
1418
|
+
return "allow";
|
|
1419
|
+
}
|
|
1420
|
+
const decision = whenMissingToolConfig !== void 0 && permission[toolId] === void 0 ? whenMissingToolConfig : resolvePermission(permission, toolId, detail);
|
|
1421
|
+
if (decision === "allow") {
|
|
1422
|
+
return "allow";
|
|
1423
|
+
}
|
|
1424
|
+
if (decision === "deny") {
|
|
1425
|
+
return "deny";
|
|
1426
|
+
}
|
|
1427
|
+
if (requestPermission === void 0) {
|
|
1428
|
+
return "deny";
|
|
1429
|
+
}
|
|
1430
|
+
const reply = await requestPermission({
|
|
1431
|
+
toolId,
|
|
1432
|
+
detail,
|
|
1433
|
+
summary: permissionAskSummary(toolId, detail)
|
|
1434
|
+
});
|
|
1435
|
+
if (reply === "allow") {
|
|
1436
|
+
grants.add(key);
|
|
1437
|
+
return "allow";
|
|
1438
|
+
}
|
|
1439
|
+
return "deny";
|
|
1440
|
+
};
|
|
1441
|
+
|
|
1442
|
+
// packages/tools/dist/create-project-harness.js
|
|
1443
|
+
var createProjectHarness = (options) => {
|
|
1444
|
+
const ctx = {
|
|
1445
|
+
projectRoot: options.projectRoot,
|
|
1446
|
+
denyPaths: options.denyPaths ?? [],
|
|
1447
|
+
allowedRoots: options.allowedRoots ?? [],
|
|
1448
|
+
bashEnabled: options.bashEnabled === true,
|
|
1449
|
+
...options.askUser !== void 0 ? { askUser: options.askUser } : {}
|
|
1450
|
+
};
|
|
1451
|
+
const permission = {
|
|
1452
|
+
...DEFAULT_PERMISSION_CONFIG,
|
|
1453
|
+
...options.permission ?? {}
|
|
1454
|
+
};
|
|
1455
|
+
const grants = /* @__PURE__ */ new Set();
|
|
1456
|
+
const gate = (toolId, detail) => gateToolCall({
|
|
1457
|
+
toolId,
|
|
1458
|
+
detail,
|
|
1459
|
+
grants,
|
|
1460
|
+
permission,
|
|
1461
|
+
...options.requestPermission !== void 0 ? { requestPermission: options.requestPermission } : {}
|
|
1462
|
+
});
|
|
1463
|
+
return {
|
|
1464
|
+
listBuiltinRegistrations: () => BUILTIN_REGISTRATIONS,
|
|
1465
|
+
authorize: async (call) => {
|
|
1466
|
+
const toolId = call.toolId.trim();
|
|
1467
|
+
const detail = permissionDetailForCall(toolId, call.args);
|
|
1468
|
+
return gate(toolId, detail);
|
|
1469
|
+
},
|
|
1470
|
+
invoke: async (call) => {
|
|
1471
|
+
const toolId = call.toolId.trim();
|
|
1472
|
+
if (!isBuiltinToolId(toolId)) {
|
|
1473
|
+
return {
|
|
1474
|
+
ok: false,
|
|
1475
|
+
text: `Unknown builtin tool \xAB${call.toolId}\xBB. Available: ${BUILTIN_TOOL_IDS.join(", ")}. Domain/custom tools must expose registration.handler (import from @langflower/tools), not harness toolId lookup.`
|
|
1476
|
+
};
|
|
1477
|
+
}
|
|
1478
|
+
const detail = permissionDetailForCall(toolId, call.args);
|
|
1479
|
+
const access = await gate(toolId, detail);
|
|
1480
|
+
if (access === "deny") {
|
|
1481
|
+
return deniedToolResult(toolId, detail);
|
|
1482
|
+
}
|
|
1483
|
+
try {
|
|
1484
|
+
const invokeCtx = call.signal === void 0 ? ctx : { ...ctx, signal: call.signal };
|
|
1485
|
+
const text = await invokeBuiltin(toolId, invokeCtx, call.args);
|
|
1486
|
+
return { ok: true, text };
|
|
1487
|
+
} catch (error) {
|
|
1488
|
+
const text = error instanceof Error ? error.message : String(error);
|
|
1489
|
+
return { ok: false, text };
|
|
1490
|
+
}
|
|
1491
|
+
}
|
|
1492
|
+
};
|
|
1493
|
+
};
|
|
1494
|
+
|
|
1495
|
+
export {
|
|
1496
|
+
DEFAULT_PERMISSION_CONFIG,
|
|
1497
|
+
isToolAlwaysDenied,
|
|
1498
|
+
mergeProjectAndNodePermissions,
|
|
1499
|
+
formatPermissionDeniedText,
|
|
1500
|
+
resolveProjectPath,
|
|
1501
|
+
formatNotFound,
|
|
1502
|
+
walkFiles,
|
|
1503
|
+
isBuiltinToolId,
|
|
1504
|
+
createProjectHarness
|
|
1505
|
+
};
|