@nodetool-ai/cli 0.7.0-rc.22 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/ExecutionTree.d.ts +2 -1
- package/dist/ExecutionTree.d.ts.map +1 -1
- package/dist/ExecutionTree.js +1 -1
- package/dist/ExecutionTree.js.map +1 -1
- package/dist/affected/affected.d.ts +50 -0
- package/dist/affected/affected.d.ts.map +1 -0
- package/dist/affected/affected.js +118 -0
- package/dist/affected/affected.js.map +1 -0
- package/dist/agent-toolbelt.d.ts +15 -0
- package/dist/agent-toolbelt.d.ts.map +1 -0
- package/dist/agent-toolbelt.js +28 -0
- package/dist/agent-toolbelt.js.map +1 -0
- package/dist/api-client.d.ts +12 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +21 -0
- package/dist/api-client.js.map +1 -0
- package/dist/app-build/bundle.d.ts +15 -0
- package/dist/app-build/bundle.d.ts.map +1 -0
- package/dist/app-build/bundle.js +45 -0
- package/dist/app-build/bundle.js.map +1 -0
- package/dist/app-build/watch.d.ts +13 -0
- package/dist/app-build/watch.d.ts.map +1 -0
- package/dist/app-build/watch.js +25 -0
- package/dist/app-build/watch.js.map +1 -0
- package/dist/app-debug/app-target.d.ts +14 -0
- package/dist/app-debug/app-target.d.ts.map +1 -0
- package/dist/app-debug/app-target.js +120 -0
- package/dist/app-debug/app-target.js.map +1 -0
- package/dist/app-debug/harness.d.ts +27 -0
- package/dist/app-debug/harness.d.ts.map +1 -0
- package/dist/app-debug/harness.js +93 -0
- package/dist/app-debug/harness.js.map +1 -0
- package/dist/app-debug/index.d.ts +12 -0
- package/dist/app-debug/index.d.ts.map +1 -0
- package/dist/app-debug/index.js +9 -0
- package/dist/app-debug/index.js.map +1 -0
- package/dist/app.d.ts +38 -48
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +979 -677
- package/dist/app.js.map +1 -1
- package/dist/bash-tool.d.ts +13 -0
- package/dist/bash-tool.d.ts.map +1 -0
- package/dist/bash-tool.js +85 -0
- package/dist/bash-tool.js.map +1 -0
- package/dist/chat-codeact.d.ts +85 -0
- package/dist/chat-codeact.d.ts.map +1 -0
- package/dist/chat-codeact.js +141 -0
- package/dist/chat-codeact.js.map +1 -0
- package/dist/chat-context.d.ts +18 -0
- package/dist/chat-context.d.ts.map +1 -0
- package/dist/chat-context.js +27 -0
- package/dist/chat-context.js.map +1 -0
- package/dist/chat-media.d.ts +3 -0
- package/dist/chat-media.d.ts.map +1 -0
- package/dist/chat-media.js +46 -0
- package/dist/chat-media.js.map +1 -0
- package/dist/chat-prompts.d.ts +20 -0
- package/dist/chat-prompts.d.ts.map +1 -0
- package/dist/chat-prompts.js +42 -0
- package/dist/chat-prompts.js.map +1 -0
- package/dist/chat-sessions.d.ts +25 -0
- package/dist/chat-sessions.d.ts.map +1 -0
- package/dist/chat-sessions.js +153 -0
- package/dist/chat-sessions.js.map +1 -0
- package/dist/command-errors.d.ts +10 -0
- package/dist/command-errors.d.ts.map +1 -0
- package/dist/command-errors.js +15 -0
- package/dist/command-errors.js.map +1 -0
- package/dist/commands/__tests__/jtbd.test.d.ts +2 -0
- package/dist/commands/__tests__/jtbd.test.d.ts.map +1 -0
- package/dist/commands/__tests__/jtbd.test.js +120 -0
- package/dist/commands/__tests__/jtbd.test.js.map +1 -0
- package/dist/commands/__tests__/timeline-render-audio.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-render-audio.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-render-audio.test.js +53 -0
- package/dist/commands/__tests__/timeline-render-audio.test.js.map +1 -0
- package/dist/commands/__tests__/timeline-render.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-render.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-render.test.js +115 -0
- package/dist/commands/__tests__/timeline-render.test.js.map +1 -0
- package/dist/commands/affected.d.ts +9 -0
- package/dist/commands/affected.d.ts.map +1 -0
- package/dist/commands/affected.js +122 -0
- package/dist/commands/affected.js.map +1 -0
- package/dist/commands/agent.d.ts +26 -4
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +327 -306
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/app.d.ts +3 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +381 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/apps.d.ts +15 -0
- package/dist/commands/apps.d.ts.map +1 -0
- package/dist/commands/apps.js +180 -0
- package/dist/commands/apps.js.map +1 -0
- package/dist/commands/auth.d.ts +12 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +154 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/collections.d.ts +10 -0
- package/dist/commands/collections.d.ts.map +1 -0
- package/dist/commands/collections.js +257 -0
- package/dist/commands/collections.js.map +1 -0
- package/dist/commands/costs.d.ts +15 -0
- package/dist/commands/costs.d.ts.map +1 -0
- package/dist/commands/costs.js +201 -0
- package/dist/commands/costs.js.map +1 -0
- package/dist/commands/db.d.ts +3 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +176 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/debug.d.ts +13 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +138 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/deploy-helpers.d.ts +49 -18
- package/dist/commands/deploy-helpers.d.ts.map +1 -1
- package/dist/commands/deploy-helpers.js +10 -276
- package/dist/commands/deploy-helpers.js.map +1 -1
- package/dist/commands/deploy.d.ts +0 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +21 -217
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/eval.d.ts +152 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +688 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/game.d.ts +4 -0
- package/dist/commands/game.d.ts.map +1 -0
- package/dist/commands/game.js +395 -0
- package/dist/commands/game.js.map +1 -0
- package/dist/commands/generate.d.ts +17 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +324 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/generations.d.ts +17 -0
- package/dist/commands/generations.d.ts.map +1 -0
- package/dist/commands/generations.js +408 -0
- package/dist/commands/generations.js.map +1 -0
- package/dist/commands/harness.d.ts +19 -0
- package/dist/commands/harness.d.ts.map +1 -0
- package/dist/commands/harness.js +361 -0
- package/dist/commands/harness.js.map +1 -0
- package/dist/commands/js-script-validation-output.d.ts +7 -0
- package/dist/commands/js-script-validation-output.d.ts.map +1 -0
- package/dist/commands/js-script-validation-output.js +5 -0
- package/dist/commands/js-script-validation-output.js.map +1 -0
- package/dist/commands/js-script-versions.d.ts +53 -0
- package/dist/commands/js-script-versions.d.ts.map +1 -0
- package/dist/commands/js-script-versions.js +89 -0
- package/dist/commands/js-script-versions.js.map +1 -0
- package/dist/commands/js-script.d.ts +29 -0
- package/dist/commands/js-script.d.ts.map +1 -0
- package/dist/commands/js-script.js +227 -0
- package/dist/commands/js-script.js.map +1 -0
- package/dist/commands/jtbd.d.ts +38 -0
- package/dist/commands/jtbd.d.ts.map +1 -0
- package/dist/commands/jtbd.js +261 -0
- package/dist/commands/jtbd.js.map +1 -0
- package/dist/commands/local-db.d.ts +16 -0
- package/dist/commands/local-db.d.ts.map +1 -0
- package/dist/commands/local-db.js +33 -0
- package/dist/commands/local-db.js.map +1 -0
- package/dist/commands/migrate-code-inputs.d.ts +24 -0
- package/dist/commands/migrate-code-inputs.d.ts.map +1 -0
- package/dist/commands/migrate-code-inputs.js +120 -0
- package/dist/commands/migrate-code-inputs.js.map +1 -0
- package/dist/commands/models-hf.js +4 -4
- package/dist/commands/models-hf.js.map +1 -1
- package/dist/commands/models-recommended.d.ts.map +1 -1
- package/dist/commands/models-recommended.js +16 -24
- package/dist/commands/models-recommended.js.map +1 -1
- package/dist/commands/node.d.ts +10 -0
- package/dist/commands/node.d.ts.map +1 -0
- package/dist/commands/node.js +72 -0
- package/dist/commands/node.js.map +1 -0
- package/dist/commands/output.d.ts +24 -0
- package/dist/commands/output.d.ts.map +1 -0
- package/dist/commands/output.js +132 -0
- package/dist/commands/output.js.map +1 -0
- package/dist/commands/package-helpers.d.ts +1 -7
- package/dist/commands/package-helpers.d.ts.map +1 -1
- package/dist/commands/package-helpers.js +3 -26
- package/dist/commands/package-helpers.js.map +1 -1
- package/dist/commands/package.js +2 -2
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/packs.d.ts +13 -0
- package/dist/commands/packs.d.ts.map +1 -0
- package/dist/commands/packs.js +60 -0
- package/dist/commands/packs.js.map +1 -0
- package/dist/commands/reliability.d.ts +14 -0
- package/dist/commands/reliability.d.ts.map +1 -0
- package/dist/commands/reliability.js +80 -0
- package/dist/commands/reliability.js.map +1 -0
- package/dist/commands/resource-read.d.ts +28 -0
- package/dist/commands/resource-read.d.ts.map +1 -0
- package/dist/commands/resource-read.js +316 -0
- package/dist/commands/resource-read.js.map +1 -0
- package/dist/commands/sketch-validation-output.d.ts +7 -0
- package/dist/commands/sketch-validation-output.d.ts.map +1 -0
- package/dist/commands/sketch-validation-output.js +5 -0
- package/dist/commands/sketch-validation-output.js.map +1 -0
- package/dist/commands/sketch-versions.d.ts +66 -0
- package/dist/commands/sketch-versions.d.ts.map +1 -0
- package/dist/commands/sketch-versions.js +108 -0
- package/dist/commands/sketch-versions.js.map +1 -0
- package/dist/commands/sketch.d.ts +21 -0
- package/dist/commands/sketch.d.ts.map +1 -0
- package/dist/commands/sketch.js +117 -0
- package/dist/commands/sketch.js.map +1 -0
- package/dist/commands/storage.d.ts +24 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +112 -0
- package/dist/commands/storage.js.map +1 -0
- package/dist/commands/telegram.d.ts +11 -0
- package/dist/commands/telegram.d.ts.map +1 -0
- package/dist/commands/telegram.js +66 -0
- package/dist/commands/telegram.js.map +1 -0
- package/dist/commands/timeline-render.d.ts +80 -0
- package/dist/commands/timeline-render.d.ts.map +1 -0
- package/dist/commands/timeline-render.js +465 -0
- package/dist/commands/timeline-render.js.map +1 -0
- package/dist/commands/timeline-validation-output.d.ts +7 -0
- package/dist/commands/timeline-validation-output.d.ts.map +1 -0
- package/dist/commands/timeline-validation-output.js +9 -0
- package/dist/commands/timeline-validation-output.js.map +1 -0
- package/dist/commands/timeline-versions.d.ts +72 -0
- package/dist/commands/timeline-versions.d.ts.map +1 -0
- package/dist/commands/timeline-versions.js +108 -0
- package/dist/commands/timeline-versions.js.map +1 -0
- package/dist/commands/timeline.d.ts +22 -0
- package/dist/commands/timeline.d.ts.map +1 -0
- package/dist/commands/timeline.js +119 -0
- package/dist/commands/timeline.js.map +1 -0
- package/dist/commands/validate.d.ts +22 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +127 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/validation-output.d.ts +25 -0
- package/dist/commands/validation-output.d.ts.map +1 -0
- package/dist/commands/validation-output.js +29 -0
- package/dist/commands/validation-output.js.map +1 -0
- package/dist/commands/version-commands.d.ts +94 -0
- package/dist/commands/version-commands.d.ts.map +1 -0
- package/dist/commands/version-commands.js +227 -0
- package/dist/commands/version-commands.js.map +1 -0
- package/dist/commands/worker-models.d.ts +13 -0
- package/dist/commands/worker-models.d.ts.map +1 -0
- package/dist/commands/worker-models.js +207 -0
- package/dist/commands/worker-models.js.map +1 -0
- package/dist/commands/worker.d.ts +23 -0
- package/dist/commands/worker.d.ts.map +1 -0
- package/dist/commands/worker.js +374 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/debug/browser-runner.d.ts +21 -0
- package/dist/debug/browser-runner.d.ts.map +1 -0
- package/dist/debug/browser-runner.js +196 -0
- package/dist/debug/browser-runner.js.map +1 -0
- package/dist/debug/collector.d.ts +9 -0
- package/dist/debug/collector.d.ts.map +1 -0
- package/dist/debug/collector.js +9 -0
- package/dist/debug/collector.js.map +1 -0
- package/dist/debug/diff.d.ts +48 -0
- package/dist/debug/diff.d.ts.map +1 -0
- package/dist/debug/diff.js +68 -0
- package/dist/debug/diff.js.map +1 -0
- package/dist/debug/harness.d.ts +11 -0
- package/dist/debug/harness.d.ts.map +1 -0
- package/dist/debug/harness.js +103 -0
- package/dist/debug/harness.js.map +1 -0
- package/dist/debug/index.d.ts +17 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +16 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/debug/markdown.d.ts +3 -0
- package/dist/debug/markdown.d.ts.map +1 -0
- package/dist/debug/markdown.js +127 -0
- package/dist/debug/markdown.js.map +1 -0
- package/dist/debug/server-runner.d.ts +22 -0
- package/dist/debug/server-runner.d.ts.map +1 -0
- package/dist/debug/server-runner.js +164 -0
- package/dist/debug/server-runner.js.map +1 -0
- package/dist/debug/target.d.ts +34 -0
- package/dist/debug/target.d.ts.map +1 -0
- package/dist/debug/target.js +104 -0
- package/dist/debug/target.js.map +1 -0
- package/dist/debug/trace.d.ts +30 -0
- package/dist/debug/trace.d.ts.map +1 -0
- package/dist/debug/trace.js +87 -0
- package/dist/debug/trace.js.map +1 -0
- package/dist/debug/types.d.ts +82 -0
- package/dist/debug/types.d.ts.map +1 -0
- package/dist/debug/types.js +13 -0
- package/dist/debug/types.js.map +1 -0
- package/dist/debug/verdict.d.ts +3 -0
- package/dist/debug/verdict.d.ts.map +1 -0
- package/dist/debug/verdict.js +78 -0
- package/dist/debug/verdict.js.map +1 -0
- package/dist/debug/watch.d.ts +23 -0
- package/dist/debug/watch.d.ts.map +1 -0
- package/dist/debug/watch.js +68 -0
- package/dist/debug/watch.js.map +1 -0
- package/dist/diagnose.d.ts +139 -0
- package/dist/diagnose.d.ts.map +1 -0
- package/dist/diagnose.js +418 -0
- package/dist/diagnose.js.map +1 -0
- package/dist/evals/graph-runner.d.ts +8 -0
- package/dist/evals/graph-runner.d.ts.map +1 -0
- package/dist/evals/graph-runner.js +136 -0
- package/dist/evals/graph-runner.js.map +1 -0
- package/dist/harness/capability-coverage.d.ts +161 -0
- package/dist/harness/capability-coverage.d.ts.map +1 -0
- package/dist/harness/capability-coverage.js +266 -0
- package/dist/harness/capability-coverage.js.map +1 -0
- package/dist/harness/capability-table.d.ts +17 -0
- package/dist/harness/capability-table.d.ts.map +1 -0
- package/dist/harness/capability-table.js +3576 -0
- package/dist/harness/capability-table.js.map +1 -0
- package/dist/harness/changed-files.d.ts +18 -0
- package/dist/harness/changed-files.d.ts.map +1 -0
- package/dist/harness/changed-files.js +76 -0
- package/dist/harness/changed-files.js.map +1 -0
- package/dist/harness/declared-capabilities.d.ts +12 -0
- package/dist/harness/declared-capabilities.d.ts.map +1 -0
- package/dist/harness/declared-capabilities.js +21 -0
- package/dist/harness/declared-capabilities.js.map +1 -0
- package/dist/harness/registry.d.ts +162 -0
- package/dist/harness/registry.d.ts.map +1 -0
- package/dist/harness/registry.js +1738 -0
- package/dist/harness/registry.js.map +1 -0
- package/dist/index.js +121 -130
- package/dist/index.js.map +1 -1
- package/dist/interaction-script.d.ts +17 -0
- package/dist/interaction-script.d.ts.map +1 -0
- package/dist/interaction-script.js +47 -0
- package/dist/interaction-script.js.map +1 -0
- package/dist/js-script-debug/harness.d.ts +114 -0
- package/dist/js-script-debug/harness.d.ts.map +1 -0
- package/dist/js-script-debug/harness.js +252 -0
- package/dist/js-script-debug/harness.js.map +1 -0
- package/dist/js-script-debug/index.d.ts +9 -0
- package/dist/js-script-debug/index.d.ts.map +1 -0
- package/dist/js-script-debug/index.js +9 -0
- package/dist/js-script-debug/index.js.map +1 -0
- package/dist/js-script-debug/interactions.d.ts +19 -0
- package/dist/js-script-debug/interactions.d.ts.map +1 -0
- package/dist/js-script-debug/interactions.js +17 -0
- package/dist/js-script-debug/interactions.js.map +1 -0
- package/dist/js-script-debug/target.d.ts +20 -0
- package/dist/js-script-debug/target.d.ts.map +1 -0
- package/dist/js-script-debug/target.js +78 -0
- package/dist/js-script-debug/target.js.map +1 -0
- package/dist/local-model-interfaces.d.ts +20 -0
- package/dist/local-model-interfaces.d.ts.map +1 -0
- package/dist/local-model-interfaces.js +64 -0
- package/dist/local-model-interfaces.js.map +1 -0
- package/dist/local-secrets.d.ts +3 -0
- package/dist/local-secrets.d.ts.map +1 -0
- package/dist/local-secrets.js +16 -0
- package/dist/local-secrets.js.map +1 -0
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +7 -2
- package/dist/markdown.js.map +1 -1
- package/dist/node/run-node.d.ts +28 -0
- package/dist/node/run-node.d.ts.map +1 -0
- package/dist/node/run-node.js +76 -0
- package/dist/node/run-node.js.map +1 -0
- package/dist/node-registry.d.ts +13 -0
- package/dist/node-registry.d.ts.map +1 -0
- package/dist/node-registry.js +36 -0
- package/dist/node-registry.js.map +1 -0
- package/dist/nodetool.js +845 -309
- package/dist/nodetool.js.map +1 -1
- package/dist/numeric-options.d.ts +22 -0
- package/dist/numeric-options.d.ts.map +1 -0
- package/dist/numeric-options.js +45 -0
- package/dist/numeric-options.js.map +1 -0
- package/dist/permission-gate.d.ts +55 -0
- package/dist/permission-gate.d.ts.map +1 -0
- package/dist/permission-gate.js +118 -0
- package/dist/permission-gate.js.map +1 -0
- package/dist/predicates.d.ts +6 -0
- package/dist/predicates.d.ts.map +1 -0
- package/dist/predicates.js +6 -0
- package/dist/predicates.js.map +1 -0
- package/dist/providers.d.ts +73 -10
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +329 -97
- package/dist/providers.js.map +1 -1
- package/dist/readline-input.d.ts +13 -19
- package/dist/readline-input.d.ts.map +1 -1
- package/dist/readline-input.js +201 -190
- package/dist/readline-input.js.map +1 -1
- package/dist/run-budget.d.ts +40 -0
- package/dist/run-budget.d.ts.map +1 -0
- package/dist/run-budget.js +119 -0
- package/dist/run-budget.js.map +1 -0
- package/dist/run-dsl-supervised.d.ts +11 -0
- package/dist/run-dsl-supervised.d.ts.map +1 -0
- package/dist/run-dsl-supervised.js +82 -0
- package/dist/run-dsl-supervised.js.map +1 -0
- package/dist/run-dsl.d.ts +23 -0
- package/dist/run-dsl.d.ts.map +1 -1
- package/dist/run-dsl.js +40 -9
- package/dist/run-dsl.js.map +1 -1
- package/dist/run-json.d.ts +24 -0
- package/dist/run-json.d.ts.map +1 -0
- package/dist/run-json.js +132 -0
- package/dist/run-json.js.map +1 -0
- package/dist/sandbox-catalog.d.ts +12 -0
- package/dist/sandbox-catalog.d.ts.map +1 -0
- package/dist/sandbox-catalog.js +27 -0
- package/dist/sandbox-catalog.js.map +1 -0
- package/dist/settings.d.ts +11 -10
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +71 -13
- package/dist/settings.js.map +1 -1
- package/dist/sketch-debug/harness.d.ts +87 -0
- package/dist/sketch-debug/harness.d.ts.map +1 -0
- package/dist/sketch-debug/harness.js +178 -0
- package/dist/sketch-debug/harness.js.map +1 -0
- package/dist/sketch-debug/index.d.ts +9 -0
- package/dist/sketch-debug/index.d.ts.map +1 -0
- package/dist/sketch-debug/index.js +9 -0
- package/dist/sketch-debug/index.js.map +1 -0
- package/dist/sketch-debug/interactions.d.ts +19 -0
- package/dist/sketch-debug/interactions.d.ts.map +1 -0
- package/dist/sketch-debug/interactions.js +17 -0
- package/dist/sketch-debug/interactions.js.map +1 -0
- package/dist/sketch-debug/target.d.ts +48 -0
- package/dist/sketch-debug/target.d.ts.map +1 -0
- package/dist/sketch-debug/target.js +138 -0
- package/dist/sketch-debug/target.js.map +1 -0
- package/dist/stdin.d.ts +18 -19
- package/dist/stdin.d.ts.map +1 -1
- package/dist/stdin.js +159 -157
- package/dist/stdin.js.map +1 -1
- package/dist/supervisor.d.ts +97 -0
- package/dist/supervisor.d.ts.map +1 -0
- package/dist/supervisor.js +194 -0
- package/dist/supervisor.js.map +1 -0
- package/dist/terminal-clipboard.d.ts +3 -0
- package/dist/terminal-clipboard.d.ts.map +1 -0
- package/dist/terminal-clipboard.js +24 -0
- package/dist/terminal-clipboard.js.map +1 -0
- package/dist/terminal-mouse.d.ts +24 -0
- package/dist/terminal-mouse.d.ts.map +1 -0
- package/dist/terminal-mouse.js +84 -0
- package/dist/terminal-mouse.js.map +1 -0
- package/dist/terminal-screen.d.ts +41 -0
- package/dist/terminal-screen.d.ts.map +1 -0
- package/dist/terminal-screen.js +228 -0
- package/dist/terminal-screen.js.map +1 -0
- package/dist/timeline-debug/harness.d.ts +79 -0
- package/dist/timeline-debug/harness.d.ts.map +1 -0
- package/dist/timeline-debug/harness.js +155 -0
- package/dist/timeline-debug/harness.js.map +1 -0
- package/dist/timeline-debug/index.d.ts +9 -0
- package/dist/timeline-debug/index.d.ts.map +1 -0
- package/dist/timeline-debug/index.js +9 -0
- package/dist/timeline-debug/index.js.map +1 -0
- package/dist/timeline-debug/interactions.d.ts +19 -0
- package/dist/timeline-debug/interactions.d.ts.map +1 -0
- package/dist/timeline-debug/interactions.js +17 -0
- package/dist/timeline-debug/interactions.js.map +1 -0
- package/dist/timeline-debug/target.d.ts +34 -0
- package/dist/timeline-debug/target.d.ts.map +1 -0
- package/dist/timeline-debug/target.js +132 -0
- package/dist/timeline-debug/target.js.map +1 -0
- package/dist/tool-format.d.ts +54 -0
- package/dist/tool-format.d.ts.map +1 -0
- package/dist/tool-format.js +360 -0
- package/dist/tool-format.js.map +1 -0
- package/dist/useExecutionState.d.ts.map +1 -1
- package/dist/useExecutionState.js +8 -4
- package/dist/useExecutionState.js.map +1 -1
- package/dist/validate/index.d.ts +28 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +51 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/websocket-client.d.ts +78 -15
- package/dist/websocket-client.d.ts.map +1 -1
- package/dist/websocket-client.js +497 -171
- package/dist/websocket-client.js.map +1 -1
- package/package.json +62 -31
package/dist/readline-input.js
CHANGED
|
@@ -1,199 +1,210 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
* Readline-style text input for Ink.
|
|
4
|
-
*
|
|
5
|
-
* Supports standard readline keybindings:
|
|
6
|
-
* Ctrl+A / Home — move to beginning of line
|
|
7
|
-
* Ctrl+E / End — move to end of line
|
|
8
|
-
* Ctrl+B / ← — move back one character
|
|
9
|
-
* Ctrl+F / → — move forward one character
|
|
10
|
-
* Alt+B — move back one word
|
|
11
|
-
* Alt+F — move forward one word
|
|
12
|
-
* Ctrl+W / Alt+Bksp — delete word backward
|
|
13
|
-
* Alt+D — delete word forward
|
|
14
|
-
* Ctrl+U — delete from cursor to start of line
|
|
15
|
-
* Ctrl+K — delete from cursor to end of line
|
|
16
|
-
* Ctrl+D — delete character under cursor
|
|
17
|
-
* Ctrl+H / Backspace — delete character before cursor
|
|
18
|
-
* Ctrl+T — transpose characters
|
|
19
|
-
*/
|
|
20
|
-
import { useState, useEffect, useCallback } from "react";
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
21
3
|
import { Text, useInput } from "ink";
|
|
22
4
|
import chalk from "chalk";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let i = offset;
|
|
35
|
-
// skip word chars
|
|
36
|
-
while (i < value.length && value[i] !== " ")
|
|
37
|
-
i++;
|
|
38
|
-
// skip whitespace
|
|
39
|
-
while (i < value.length && value[i] === " ")
|
|
40
|
-
i++;
|
|
41
|
-
return i;
|
|
5
|
+
import { terminalLines, terminalText } from "./terminal-screen.js";
|
|
6
|
+
const graphemes = new Intl.Segmenter(undefined, { granularity: "grapheme" });
|
|
7
|
+
function previousBoundary(value, cursor) {
|
|
8
|
+
let previous = 0;
|
|
9
|
+
for (const segment of graphemes.segment(value)) {
|
|
10
|
+
if (segment.index >= cursor) {
|
|
11
|
+
break;
|
|
12
|
+
}
|
|
13
|
+
previous = segment.index;
|
|
14
|
+
}
|
|
15
|
+
return previous;
|
|
42
16
|
}
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
setCursorOffset(value.length);
|
|
48
|
-
}, [value]);
|
|
49
|
-
const update = useCallback((nextValue, nextCursor) => {
|
|
50
|
-
const clamped = Math.max(0, Math.min(nextCursor, nextValue.length));
|
|
51
|
-
setCursorOffset(clamped);
|
|
52
|
-
if (nextValue !== value) {
|
|
53
|
-
onChange(nextValue);
|
|
54
|
-
}
|
|
55
|
-
}, [value, onChange]);
|
|
56
|
-
useInput((input, key) => {
|
|
57
|
-
// Pass through to parent: up/down arrows, Ctrl+C, tab
|
|
58
|
-
if (key.upArrow ||
|
|
59
|
-
key.downArrow ||
|
|
60
|
-
(key.ctrl && input === "c") ||
|
|
61
|
-
key.tab ||
|
|
62
|
-
(key.shift && key.tab)) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
// Submit
|
|
66
|
-
if (key.return) {
|
|
67
|
-
onSubmit?.(value);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
// --- Movement ---
|
|
71
|
-
// Ctrl+A or Home: beginning of line
|
|
72
|
-
if (key.ctrl && input === "a") {
|
|
73
|
-
setCursorOffset(0);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
// Ctrl+E or End: end of line
|
|
77
|
-
if (key.ctrl && input === "e") {
|
|
78
|
-
setCursorOffset(value.length);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
// Ctrl+B or Left: back one char
|
|
82
|
-
if (key.ctrl && input === "b") {
|
|
83
|
-
setCursorOffset((c) => Math.max(0, c - 1));
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
if (key.leftArrow) {
|
|
87
|
-
// Alt+Left / Alt+B: back one word
|
|
88
|
-
if (key.meta) {
|
|
89
|
-
setCursorOffset(findWordBoundaryLeft(value, cursorOffset));
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
setCursorOffset((c) => Math.max(0, c - 1));
|
|
93
|
-
}
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
// Ctrl+F or Right: forward one char
|
|
97
|
-
if (key.ctrl && input === "f") {
|
|
98
|
-
setCursorOffset((c) => Math.min(value.length, c + 1));
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (key.rightArrow) {
|
|
102
|
-
// Alt+Right / Alt+F: forward one word
|
|
103
|
-
if (key.meta) {
|
|
104
|
-
setCursorOffset(findWordBoundaryRight(value, cursorOffset));
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
setCursorOffset((c) => Math.min(value.length, c + 1));
|
|
108
|
-
}
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
// Alt+B: back one word (without arrow)
|
|
112
|
-
if (key.meta && input === "b") {
|
|
113
|
-
setCursorOffset(findWordBoundaryLeft(value, cursorOffset));
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
// Alt+F: forward one word (without arrow)
|
|
117
|
-
if (key.meta && input === "f") {
|
|
118
|
-
setCursorOffset(findWordBoundaryRight(value, cursorOffset));
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
// --- Deletion ---
|
|
122
|
-
// Ctrl+W: delete word backward
|
|
123
|
-
if (key.ctrl && input === "w") {
|
|
124
|
-
const boundary = findWordBoundaryLeft(value, cursorOffset);
|
|
125
|
-
update(value.slice(0, boundary) + value.slice(cursorOffset), boundary);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
// Alt+Backspace: delete word backward
|
|
129
|
-
if (key.meta && key.backspace) {
|
|
130
|
-
const boundary = findWordBoundaryLeft(value, cursorOffset);
|
|
131
|
-
update(value.slice(0, boundary) + value.slice(cursorOffset), boundary);
|
|
132
|
-
return;
|
|
17
|
+
function nextBoundary(value, cursor) {
|
|
18
|
+
for (const segment of graphemes.segment(value)) {
|
|
19
|
+
if (segment.index > cursor) {
|
|
20
|
+
return segment.index;
|
|
133
21
|
}
|
|
134
|
-
// Alt+D: delete word forward
|
|
135
|
-
if (key.meta && input === "d") {
|
|
136
|
-
const boundary = findWordBoundaryRight(value, cursorOffset);
|
|
137
|
-
update(value.slice(0, cursorOffset) + value.slice(boundary), cursorOffset);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
// Ctrl+U: delete to beginning of line
|
|
141
|
-
if (key.ctrl && input === "u") {
|
|
142
|
-
update(value.slice(cursorOffset), 0);
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
// Ctrl+K: delete to end of line
|
|
146
|
-
if (key.ctrl && input === "k") {
|
|
147
|
-
update(value.slice(0, cursorOffset), cursorOffset);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
// Ctrl+D: delete char at cursor (or noop if empty)
|
|
151
|
-
if (key.ctrl && input === "d") {
|
|
152
|
-
if (value.length > 0 && cursorOffset < value.length) {
|
|
153
|
-
update(value.slice(0, cursorOffset) + value.slice(cursorOffset + 1), cursorOffset);
|
|
154
|
-
}
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
// Ctrl+H or Backspace: delete char before cursor
|
|
158
|
-
if (key.backspace || key.delete || (key.ctrl && input === "h")) {
|
|
159
|
-
if (cursorOffset > 0) {
|
|
160
|
-
update(value.slice(0, cursorOffset - 1) + value.slice(cursorOffset), cursorOffset - 1);
|
|
161
|
-
}
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
// Ctrl+T: transpose characters
|
|
165
|
-
if (key.ctrl && input === "t") {
|
|
166
|
-
if (cursorOffset > 0 && value.length > 1) {
|
|
167
|
-
const pos = cursorOffset === value.length ? cursorOffset - 1 : cursorOffset;
|
|
168
|
-
if (pos > 0) {
|
|
169
|
-
const swapped = value.slice(0, pos - 1) +
|
|
170
|
-
value[pos] +
|
|
171
|
-
value[pos - 1] +
|
|
172
|
-
value.slice(pos + 1);
|
|
173
|
-
update(swapped, Math.min(pos + 1, swapped.length));
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
// --- Regular character input ---
|
|
179
|
-
if (!key.ctrl && !key.meta && input) {
|
|
180
|
-
update(value.slice(0, cursorOffset) + input + value.slice(cursorOffset), cursorOffset + input.length);
|
|
181
|
-
}
|
|
182
|
-
}, { isActive: focus });
|
|
183
|
-
// --- Render ---
|
|
184
|
-
if (!value && placeholder && showCursor && focus) {
|
|
185
|
-
return (_jsxs(Text, { children: [chalk.inverse(placeholder[0] ?? " "), placeholder.length > 1 ? chalk.grey(placeholder.slice(1)) : ""] }));
|
|
186
22
|
}
|
|
187
|
-
|
|
188
|
-
|
|
23
|
+
return value.length;
|
|
24
|
+
}
|
|
25
|
+
/** Pure editing boundary shared by keyboard handling and terminal tests. */
|
|
26
|
+
export function editInput(state, input, key) {
|
|
27
|
+
const { value, cursor } = state;
|
|
28
|
+
const start = value.lastIndexOf("\n", cursor - 1) + 1;
|
|
29
|
+
const newline = value.indexOf("\n", cursor);
|
|
30
|
+
const end = newline < 0 ? value.length : newline;
|
|
31
|
+
const replace = (from, to, text = "") => ({
|
|
32
|
+
value: value.slice(0, from) + text + value.slice(to),
|
|
33
|
+
cursor: from + text.length
|
|
34
|
+
});
|
|
35
|
+
const left = () => key.meta || (key.ctrl && input === "w")
|
|
36
|
+
? (value.slice(0, cursor).match(/\S+\s*$/)?.index ?? 0)
|
|
37
|
+
: previousBoundary(value, cursor);
|
|
38
|
+
const right = () => key.meta
|
|
39
|
+
? cursor +
|
|
40
|
+
(value.slice(cursor).match(/^\s*\S+\s*/)?.[0].length ??
|
|
41
|
+
value.length - cursor)
|
|
42
|
+
: nextBoundary(value, cursor);
|
|
43
|
+
if ((key.ctrl && input === "a") || key.home) {
|
|
44
|
+
return { value, cursor: start };
|
|
45
|
+
}
|
|
46
|
+
if ((key.ctrl && input === "e") || key.end) {
|
|
47
|
+
return { value, cursor: end };
|
|
48
|
+
}
|
|
49
|
+
if (key.leftArrow || ((key.ctrl || key.meta) && input === "b")) {
|
|
50
|
+
return { value, cursor: left() };
|
|
51
|
+
}
|
|
52
|
+
if (key.rightArrow || ((key.ctrl || key.meta) && input === "f")) {
|
|
53
|
+
return { value, cursor: right() };
|
|
54
|
+
}
|
|
55
|
+
if (key.upArrow) {
|
|
56
|
+
const previousEnd = start - 1;
|
|
57
|
+
const previousStart = value.lastIndexOf("\n", previousEnd - 1) + 1;
|
|
58
|
+
return {
|
|
59
|
+
value,
|
|
60
|
+
cursor: start
|
|
61
|
+
? Math.min(previousStart + cursor - start, previousEnd)
|
|
62
|
+
: cursor
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (key.downArrow) {
|
|
66
|
+
const nextStart = end + 1;
|
|
67
|
+
const nextEnd = value.indexOf("\n", nextStart);
|
|
68
|
+
return {
|
|
69
|
+
value,
|
|
70
|
+
cursor: end < value.length
|
|
71
|
+
? Math.min(nextStart + cursor - start, nextEnd < 0 ? value.length : nextEnd)
|
|
72
|
+
: cursor
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Ink 6 reports the DEL byte emitted by Backspace in most terminals as
|
|
76
|
+
// `delete`. Keep Ctrl+D as the unambiguous forward-delete shortcut.
|
|
77
|
+
if (key.backspace ||
|
|
78
|
+
key.delete ||
|
|
79
|
+
(key.ctrl && (input === "h" || input === "w"))) {
|
|
80
|
+
return replace(left(), cursor);
|
|
189
81
|
}
|
|
190
|
-
if (
|
|
191
|
-
return
|
|
82
|
+
if ((key.ctrl || key.meta) && input === "d") {
|
|
83
|
+
return replace(cursor, right());
|
|
192
84
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
85
|
+
if (key.ctrl && input === "u") {
|
|
86
|
+
return replace(start, cursor);
|
|
87
|
+
}
|
|
88
|
+
if (key.ctrl && input === "k") {
|
|
89
|
+
return replace(cursor, end === cursor ? Math.min(value.length, end + 1) : end);
|
|
90
|
+
}
|
|
91
|
+
if ((key.return && (key.meta || key.shift)) || (key.ctrl && input === "j")) {
|
|
92
|
+
return replace(cursor, cursor, "\n");
|
|
93
|
+
}
|
|
94
|
+
if (!key.ctrl &&
|
|
95
|
+
!key.meta &&
|
|
96
|
+
!key.escape &&
|
|
97
|
+
!key.tab &&
|
|
98
|
+
!key.return &&
|
|
99
|
+
input) {
|
|
100
|
+
// A paste is one insertion, never a sequence of submissions.
|
|
101
|
+
return replace(cursor, cursor, terminalText(input.replace(/\r\n?/g, "\n")));
|
|
102
|
+
}
|
|
103
|
+
return state;
|
|
104
|
+
}
|
|
105
|
+
export default function ReadlineInput({ value, onChange, onSubmit, focus = true, placeholder = "Ask NodeTool…", showCursor = true, width = 76, maxRows = 5, onHistory, onComplete }) {
|
|
106
|
+
const [editor, setEditor] = useState({
|
|
107
|
+
value,
|
|
108
|
+
cursor: value.length
|
|
109
|
+
});
|
|
110
|
+
const paste = useRef(null);
|
|
111
|
+
const current = value === editor.value ? editor : { value, cursor: value.length };
|
|
112
|
+
const handlerState = useRef({
|
|
113
|
+
current,
|
|
114
|
+
value,
|
|
115
|
+
onChange,
|
|
116
|
+
onSubmit,
|
|
117
|
+
onHistory,
|
|
118
|
+
onComplete
|
|
119
|
+
});
|
|
120
|
+
// Ink subscribes to useInput handlers in a passive effect. Keep the latest
|
|
121
|
+
// render's callbacks ready before it publishes the committed terminal frame.
|
|
122
|
+
useLayoutEffect(() => {
|
|
123
|
+
handlerState.current = {
|
|
124
|
+
current,
|
|
125
|
+
value,
|
|
126
|
+
onChange,
|
|
127
|
+
onSubmit,
|
|
128
|
+
onHistory,
|
|
129
|
+
onComplete
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
if (value !== editor.value) {
|
|
134
|
+
setEditor({ value, cursor: value.length });
|
|
135
|
+
}
|
|
136
|
+
}, [value, editor.value]);
|
|
137
|
+
const handleInput = useCallback((input, key) => {
|
|
138
|
+
const latest = handlerState.current;
|
|
139
|
+
if (input === "[200~") {
|
|
140
|
+
paste.current = "";
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (input === "[201~" && paste.current !== null) {
|
|
144
|
+
const next = editInput(latest.current, paste.current, {});
|
|
145
|
+
paste.current = null;
|
|
146
|
+
setEditor(next);
|
|
147
|
+
latest.onChange(next.value);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (paste.current !== null) {
|
|
151
|
+
paste.current += key.return
|
|
152
|
+
? "\n"
|
|
153
|
+
: key.ctrl && input === "j"
|
|
154
|
+
? "\n"
|
|
155
|
+
: key.ctrl || key.meta
|
|
156
|
+
? ""
|
|
157
|
+
: input;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (key.pageUp ||
|
|
161
|
+
key.pageDown ||
|
|
162
|
+
key.escape ||
|
|
163
|
+
(key.ctrl && (key.home || key.end))) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (latest.onComplete &&
|
|
167
|
+
(key.upArrow ||
|
|
168
|
+
key.downArrow ||
|
|
169
|
+
key.tab ||
|
|
170
|
+
(key.return && !key.meta && !key.shift))) {
|
|
171
|
+
latest.onComplete(key.upArrow
|
|
172
|
+
? "up"
|
|
173
|
+
: key.downArrow
|
|
174
|
+
? "down"
|
|
175
|
+
: key.return
|
|
176
|
+
? "submit"
|
|
177
|
+
: "accept");
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if ((key.upArrow || key.downArrow) && !latest.value.includes("\n")) {
|
|
181
|
+
latest.onHistory?.(key.upArrow ? "up" : "down");
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (key.return && !key.meta && !key.shift) {
|
|
185
|
+
latest.onSubmit?.(latest.value);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const next = editInput(latest.current, input, key);
|
|
189
|
+
setEditor(next);
|
|
190
|
+
if (next.value !== latest.value) {
|
|
191
|
+
latest.onChange(next.value);
|
|
192
|
+
}
|
|
193
|
+
}, []);
|
|
194
|
+
useInput(handleInput, { isActive: focus });
|
|
195
|
+
const cursorEnd = nextBoundary(value, current.cursor);
|
|
196
|
+
const cursorText = value.slice(current.cursor, cursorEnd);
|
|
197
|
+
const display = value
|
|
198
|
+
? value.slice(0, current.cursor) +
|
|
199
|
+
(focus && showCursor
|
|
200
|
+
? chalk.inverse(cursorText === "\n" || !cursorText ? " " : cursorText)
|
|
201
|
+
: cursorText) +
|
|
202
|
+
(cursorText === "\n" ? "\n" : "") +
|
|
203
|
+
value.slice(cursorEnd)
|
|
204
|
+
: chalk.dim(placeholder);
|
|
205
|
+
const lines = terminalLines(display, width);
|
|
206
|
+
const cursorLine = terminalLines(value.slice(0, current.cursor) + " ", width).length - 1;
|
|
207
|
+
const start = Math.max(0, cursorLine - maxRows + 1);
|
|
208
|
+
return _jsx(Text, { children: lines.slice(start, start + maxRows).join("\n") });
|
|
198
209
|
}
|
|
199
210
|
//# sourceMappingURL=readline-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readline-input.js","sourceRoot":"","sources":["../src/readline-input.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"readline-input.js","sourceRoot":"","sources":["../src/readline-input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bounds one CLI agent run shares downward.
|
|
3
|
+
*
|
|
4
|
+
* Same object, same five settings, same defaults as a chat turn on the server
|
|
5
|
+
* (`chat-turn.ts` → `createChatTurnBudget`): a run gets one {@link RunBudget}
|
|
6
|
+
* and every loop it starts — a sub-agent, an `execute_plan` DAG, an `AgentNode`
|
|
7
|
+
* reached through `run_node` — reserves against it instead of opening an
|
|
8
|
+
* allowance of its own (invariant I-2). `--cost-cap` and `--timeout` override
|
|
9
|
+
* the first two settings for one invocation; nothing else is per-run.
|
|
10
|
+
*
|
|
11
|
+
* The settings are read the way the server reads them — stored value first,
|
|
12
|
+
* then the environment variable of the same name — and the read is
|
|
13
|
+
* best-effort: an unreachable database falls back to the documented default
|
|
14
|
+
* rather than failing the run.
|
|
15
|
+
*/
|
|
16
|
+
import { type RunBudget } from "@nodetool-ai/runtime";
|
|
17
|
+
/** The two flags every CLI agent surface accepts. */
|
|
18
|
+
export interface RunBudgetFlags {
|
|
19
|
+
/** `--cost-cap <usd>`; `0` lifts the cap. */
|
|
20
|
+
costCap?: string | number;
|
|
21
|
+
/** `--timeout <s>`; `0` leaves the run no time at all. */
|
|
22
|
+
timeout?: string | number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build the run's budget: the five settings, with the two flags overriding the
|
|
26
|
+
* cost cap and the deadline.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createCliRunBudget(flags?: RunBudgetFlags): Promise<RunBudget>;
|
|
29
|
+
/**
|
|
30
|
+
* The reason a ceiling ended the run, or null when none did.
|
|
31
|
+
*
|
|
32
|
+
* A budget stop is not the model finishing its answer, and the two are
|
|
33
|
+
* indistinguishable to a caller that only sees an empty transcript
|
|
34
|
+
* (invariant I-3), so every CLI surface reports this before it reports
|
|
35
|
+
* anything else about how the run ended.
|
|
36
|
+
*/
|
|
37
|
+
export declare function budgetStopReason(budget: RunBudget): string | null;
|
|
38
|
+
/** `spent $0.0123` — what the whole run committed against the shared cap. */
|
|
39
|
+
export declare function budgetSummaryLine(budget: RunBudget): string;
|
|
40
|
+
//# sourceMappingURL=run-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-budget.d.ts","sourceRoot":"","sources":["../src/run-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAyDvE,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAUD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,GAAE,cAAmB,GACzB,OAAO,CAAC,SAAS,CAAC,CAgCpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAEjE;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAQ3D"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bounds one CLI agent run shares downward.
|
|
3
|
+
*
|
|
4
|
+
* Same object, same five settings, same defaults as a chat turn on the server
|
|
5
|
+
* (`chat-turn.ts` → `createChatTurnBudget`): a run gets one {@link RunBudget}
|
|
6
|
+
* and every loop it starts — a sub-agent, an `execute_plan` DAG, an `AgentNode`
|
|
7
|
+
* reached through `run_node` — reserves against it instead of opening an
|
|
8
|
+
* allowance of its own (invariant I-2). `--cost-cap` and `--timeout` override
|
|
9
|
+
* the first two settings for one invocation; nothing else is per-run.
|
|
10
|
+
*
|
|
11
|
+
* The settings are read the way the server reads them — stored value first,
|
|
12
|
+
* then the environment variable of the same name — and the read is
|
|
13
|
+
* best-effort: an unreachable database falls back to the documented default
|
|
14
|
+
* rather than failing the run.
|
|
15
|
+
*/
|
|
16
|
+
import { Setting } from "@nodetool-ai/models";
|
|
17
|
+
import { createRunBudget } from "@nodetool-ai/runtime";
|
|
18
|
+
import { parseNumericOption } from "./numeric-options.js";
|
|
19
|
+
/**
|
|
20
|
+
* Output-token worst case assumed when reserving a turn. No CLI loop sends a
|
|
21
|
+
* `maxTokens`, so nothing bounds the answer from this side; the reservation
|
|
22
|
+
* charges the same ceiling the chat turn does, which is what makes the dollar
|
|
23
|
+
* cap hold before the money is spent rather than after.
|
|
24
|
+
*/
|
|
25
|
+
const CLI_TURN_MAX_OUTPUT_TOKENS = 16_384;
|
|
26
|
+
/** Documented defaults for the five `NODETOOL_AGENT_*` budget settings. */
|
|
27
|
+
const AGENT_BUDGET_DEFAULTS = {
|
|
28
|
+
costCapUsd: 5,
|
|
29
|
+
deadlineMs: 1_800_000,
|
|
30
|
+
maxConcurrency: 8,
|
|
31
|
+
maxTurns: 200,
|
|
32
|
+
unpricedTokenCeiling: 400_000
|
|
33
|
+
};
|
|
34
|
+
/** Stored value, then env var, then null — the server's own lookup order. */
|
|
35
|
+
async function readBudgetSetting(key) {
|
|
36
|
+
try {
|
|
37
|
+
const setting = await Setting.find("1", key);
|
|
38
|
+
if (setting && setting.value.length > 0)
|
|
39
|
+
return setting.value;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Settings store unavailable — the environment and the defaults stand.
|
|
43
|
+
}
|
|
44
|
+
const fromEnv = process.env[key];
|
|
45
|
+
return fromEnv !== undefined && fromEnv.length > 0 ? fromEnv : null;
|
|
46
|
+
}
|
|
47
|
+
async function budgetSettingNumber(key, fallback) {
|
|
48
|
+
const raw = await readBudgetSetting(key);
|
|
49
|
+
if (raw === null)
|
|
50
|
+
return fallback;
|
|
51
|
+
const parsed = Number(raw);
|
|
52
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The run's USD ceiling, or `null` for no ceiling at all.
|
|
56
|
+
*
|
|
57
|
+
* A non-positive number means *no cap*, not a cap nothing can pass — the same
|
|
58
|
+
* rule the setting documents, so `--cost-cap 0` and a stored `0` mean the same
|
|
59
|
+
* thing. An absent setting takes the documented $5 default.
|
|
60
|
+
*/
|
|
61
|
+
async function budgetCostCapUsd() {
|
|
62
|
+
const raw = await readBudgetSetting("NODETOOL_AGENT_TURN_COST_CAP_USD");
|
|
63
|
+
if (raw === null)
|
|
64
|
+
return AGENT_BUDGET_DEFAULTS.costCapUsd;
|
|
65
|
+
const parsed = Number(raw.trim());
|
|
66
|
+
if (!Number.isFinite(parsed) || parsed <= 0)
|
|
67
|
+
return null;
|
|
68
|
+
return parsed;
|
|
69
|
+
}
|
|
70
|
+
function flagNumber(value, flag) {
|
|
71
|
+
if (value === undefined)
|
|
72
|
+
return undefined;
|
|
73
|
+
return parseNumericOption(String(value), flag, { min: 0 });
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build the run's budget: the five settings, with the two flags overriding the
|
|
77
|
+
* cost cap and the deadline.
|
|
78
|
+
*/
|
|
79
|
+
export async function createCliRunBudget(flags = {}) {
|
|
80
|
+
const capFlag = flagNumber(flags.costCap, "--cost-cap");
|
|
81
|
+
const timeoutFlag = flagNumber(flags.timeout, "--timeout");
|
|
82
|
+
const [settingCap, settingDeadlineMs, maxConcurrency, maxTurns, unpricedTokenCeiling] = await Promise.all([
|
|
83
|
+
budgetCostCapUsd(),
|
|
84
|
+
budgetSettingNumber("NODETOOL_AGENT_TURN_DEADLINE_MS", AGENT_BUDGET_DEFAULTS.deadlineMs),
|
|
85
|
+
budgetSettingNumber("NODETOOL_AGENT_MAX_CONCURRENCY", AGENT_BUDGET_DEFAULTS.maxConcurrency),
|
|
86
|
+
budgetSettingNumber("NODETOOL_AGENT_MAX_TURNS", AGENT_BUDGET_DEFAULTS.maxTurns),
|
|
87
|
+
budgetSettingNumber("NODETOOL_AGENT_UNPRICED_TOKEN_CEILING", AGENT_BUDGET_DEFAULTS.unpricedTokenCeiling)
|
|
88
|
+
]);
|
|
89
|
+
return createRunBudget({
|
|
90
|
+
capUsd: capFlag === undefined ? settingCap : capFlag > 0 ? capFlag : null,
|
|
91
|
+
maxOutputTokens: CLI_TURN_MAX_OUTPUT_TOKENS,
|
|
92
|
+
unpricedTokenCeiling,
|
|
93
|
+
deadlineMs: timeoutFlag === undefined ? settingDeadlineMs : timeoutFlag * 1000,
|
|
94
|
+
maxConcurrency,
|
|
95
|
+
maxTurns
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The reason a ceiling ended the run, or null when none did.
|
|
100
|
+
*
|
|
101
|
+
* A budget stop is not the model finishing its answer, and the two are
|
|
102
|
+
* indistinguishable to a caller that only sees an empty transcript
|
|
103
|
+
* (invariant I-3), so every CLI surface reports this before it reports
|
|
104
|
+
* anything else about how the run ended.
|
|
105
|
+
*/
|
|
106
|
+
export function budgetStopReason(budget) {
|
|
107
|
+
return budget.exhausted?.detail ?? null;
|
|
108
|
+
}
|
|
109
|
+
/** `spent $0.0123` — what the whole run committed against the shared cap. */
|
|
110
|
+
export function budgetSummaryLine(budget) {
|
|
111
|
+
const spent = `$${budget.turns.spentUsd.toFixed(4)}`;
|
|
112
|
+
const unpriced = budget.turns.unpricedTurns;
|
|
113
|
+
// A turn on a model with no catalog price adds nothing to the total, so
|
|
114
|
+
// the number is a lower bound and says so (invariant I-4).
|
|
115
|
+
return unpriced > 0
|
|
116
|
+
? `spent at least ${spent} (${unpriced} turn(s) on a model with no catalog price)`
|
|
117
|
+
: `spent ${spent}`;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=run-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-budget.js","sourceRoot":"","sources":["../src/run-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Intervention } from "@nodetool-ai/protocol";
|
|
2
|
+
import { type SupervisorRunConfig } from "./supervisor.js";
|
|
3
|
+
interface SupervisedDslRun {
|
|
4
|
+
/** Workflow outputs, keyed by export name — the unsupervised path's shape. */
|
|
5
|
+
results: Record<string, Record<string, unknown>>;
|
|
6
|
+
/** Every decision the supervisor made, across the file's workflows. */
|
|
7
|
+
interventions: Intervention[];
|
|
8
|
+
}
|
|
9
|
+
export declare function runDslFileSupervised(filePath: string, config: SupervisorRunConfig, jsonMode: boolean): Promise<SupervisedDslRun>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=run-dsl-supervised.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-dsl-supervised.d.ts","sourceRoot":"","sources":["../src/run-dsl-supervised.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAM1D,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,UAAU,gBAAgB;IACxB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,uEAAuE;IACvE,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAkE3B"}
|