@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
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { SketchDebugReport, SketchInteractionRecord, SketchValidation } from "@nodetool-ai/execution/sketch-debug";
|
|
2
|
+
import type { SketchInteractionStep } from "./interactions.js";
|
|
3
|
+
import { type ResolvedSketchTarget, type SketchCanvasSettings, type SketchTargetDeps } from "./target.js";
|
|
4
|
+
/** The pieces of the shared core this host calls. */
|
|
5
|
+
export interface SketchDebugCore {
|
|
6
|
+
validateSketchDocument: (raw: unknown, meta?: SketchCanvasSettings) => SketchValidation | Promise<SketchValidation>;
|
|
7
|
+
buildSketchDebugReport: (input: {
|
|
8
|
+
target: SketchDebugReport["target"];
|
|
9
|
+
document: unknown;
|
|
10
|
+
meta?: SketchCanvasSettings;
|
|
11
|
+
interactions?: SketchInteractionRecord[];
|
|
12
|
+
finalState?: unknown;
|
|
13
|
+
finalDocument?: unknown;
|
|
14
|
+
}) => SketchDebugReport | Promise<SketchDebugReport>;
|
|
15
|
+
renderSketchReportMarkdown: (report: SketchDebugReport) => string;
|
|
16
|
+
}
|
|
17
|
+
/** The bridge surface this host drives — one tool per `ui_sketch_*` name. */
|
|
18
|
+
export interface SketchBridgeTool {
|
|
19
|
+
name: string;
|
|
20
|
+
/**
|
|
21
|
+
* HOLDOUT (anti-slop/no-unknown-returns): a `ui_sketch_*` tool answers in
|
|
22
|
+
* the open tool-result domain, and the bridge that implements this lives in
|
|
23
|
+
* `@nodetool-ai/agents`.
|
|
24
|
+
*/
|
|
25
|
+
execute: (args: Record<string, unknown>) => Promise<unknown>;
|
|
26
|
+
}
|
|
27
|
+
/** One layer of the bridge's snapshot. */
|
|
28
|
+
export interface SketchBridgeLayer {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
type: "raster" | "mask" | "group";
|
|
32
|
+
visible: boolean;
|
|
33
|
+
opacity: number;
|
|
34
|
+
blendMode: string;
|
|
35
|
+
hasBinding?: boolean;
|
|
36
|
+
}
|
|
37
|
+
/** The bridge's snapshot after a session (`SketchBridgeFinalState`). */
|
|
38
|
+
export interface SketchBridgeSnapshot {
|
|
39
|
+
width?: number;
|
|
40
|
+
height?: number;
|
|
41
|
+
backgroundColor?: string;
|
|
42
|
+
activeLayerId?: string | null;
|
|
43
|
+
layers?: SketchBridgeLayer[];
|
|
44
|
+
}
|
|
45
|
+
export interface SketchBridge {
|
|
46
|
+
tools: SketchBridgeTool[];
|
|
47
|
+
finalState: () => SketchBridgeSnapshot;
|
|
48
|
+
}
|
|
49
|
+
export type CreateSketchBridge = (initial: {
|
|
50
|
+
name?: string;
|
|
51
|
+
width?: number;
|
|
52
|
+
height?: number;
|
|
53
|
+
layers?: {
|
|
54
|
+
name: string;
|
|
55
|
+
type?: "raster" | "mask";
|
|
56
|
+
}[];
|
|
57
|
+
}) => SketchBridge;
|
|
58
|
+
export interface SketchDebugDeps extends SketchTargetDeps {
|
|
59
|
+
/** Defaults to `@nodetool-ai/execution/sketch-debug`. */
|
|
60
|
+
core?: SketchDebugCore;
|
|
61
|
+
/** Defaults to `createSketchToolBridge` from `@nodetool-ai/agents`. */
|
|
62
|
+
createBridge?: CreateSketchBridge;
|
|
63
|
+
onLog?: (line: string) => void;
|
|
64
|
+
}
|
|
65
|
+
export interface SketchDebugOptions {
|
|
66
|
+
interact?: SketchInteractionStep[];
|
|
67
|
+
outDir?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface SketchValidateResult {
|
|
70
|
+
target: ResolvedSketchTarget["target"];
|
|
71
|
+
validation: SketchValidation;
|
|
72
|
+
}
|
|
73
|
+
export interface SketchDebugResult {
|
|
74
|
+
report: SketchDebugReport;
|
|
75
|
+
bundleDir: string;
|
|
76
|
+
}
|
|
77
|
+
/** Load a sketch and validate it — no bridge, no bundle. */
|
|
78
|
+
export declare function runSketchValidate(ref: string, deps: SketchDebugDeps): Promise<SketchValidateResult>;
|
|
79
|
+
/**
|
|
80
|
+
* Replay `--interact` against the headless bridge and write the bundle.
|
|
81
|
+
*
|
|
82
|
+
* A failing step is recorded and the script continues: a run that stops at the
|
|
83
|
+
* first error hides every problem behind it, and the report is what the caller
|
|
84
|
+
* came for.
|
|
85
|
+
*/
|
|
86
|
+
export declare function runSketchDebug(ref: string, options: SketchDebugOptions, deps: SketchDebugDeps): Promise<SketchDebugResult>;
|
|
87
|
+
//# sourceMappingURL=harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/sketch-debug/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sketch debug harness: the CLI host around the shared validator.
|
|
3
|
+
*
|
|
4
|
+
* `runSketchValidate` is the cheap pre-flight — load an image document, check
|
|
5
|
+
* it, report. `runSketchDebug` additionally replays a scripted edit session
|
|
6
|
+
* against the headless `ui_sketch_*` bridge (the one the tool-loop eval
|
|
7
|
+
* drives), validates the document the session left behind, and writes a
|
|
8
|
+
* self-contained bundle.
|
|
9
|
+
*
|
|
10
|
+
* Everything that could pull in a heavy package is injected with a lazy
|
|
11
|
+
* default: the validator core (`@nodetool-ai/execution/sketch-debug`) and the
|
|
12
|
+
* bridge factory (`@nodetool-ai/agents`). Tests supply their own and load
|
|
13
|
+
* neither.
|
|
14
|
+
*/
|
|
15
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
16
|
+
import { join, resolve } from "node:path";
|
|
17
|
+
import { resolveSketchTarget } from "./target.js";
|
|
18
|
+
async function loadCore() {
|
|
19
|
+
const core = await import("@nodetool-ai/execution/sketch-debug");
|
|
20
|
+
return {
|
|
21
|
+
validateSketchDocument: (raw, meta) => core.validateSketchDocument(raw, meta),
|
|
22
|
+
buildSketchDebugReport: (input) => core.buildSketchDebugReport(input),
|
|
23
|
+
renderSketchReportMarkdown: (report) => core.renderSketchReportMarkdown(report)
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async function loadBridgeFactory() {
|
|
27
|
+
const { createSketchToolBridge } = await import("@nodetool-ai/agents");
|
|
28
|
+
return (initial) =>
|
|
29
|
+
// SAFETY: the eval-surface bridge in @nodetool-ai/agents implements this
|
|
30
|
+
// exact tool list and snapshot — it is the bridge this type describes. The
|
|
31
|
+
// two packages declare the sketch document types independently, and that
|
|
32
|
+
// duplication is the only reason the structures do not line up.
|
|
33
|
+
createSketchToolBridge(initial);
|
|
34
|
+
}
|
|
35
|
+
function defaultOutDir(ref) {
|
|
36
|
+
const slug = ref
|
|
37
|
+
.replace(/[^a-zA-Z0-9_-]+/g, "-")
|
|
38
|
+
.replace(/^-+|-+$/g, "")
|
|
39
|
+
.slice(0, 40) || "sketch";
|
|
40
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
41
|
+
return resolve(`nodetool-debug/sketch-${slug}-${stamp}`);
|
|
42
|
+
}
|
|
43
|
+
/** Load a sketch and validate it — no bridge, no bundle. */
|
|
44
|
+
export async function runSketchValidate(ref, deps) {
|
|
45
|
+
const resolved = await resolveSketchTarget(ref, deps);
|
|
46
|
+
const core = deps.core ?? (await loadCore());
|
|
47
|
+
const validation = await core.validateSketchDocument(resolved.raw, resolved.meta);
|
|
48
|
+
return { target: resolved.target, validation };
|
|
49
|
+
}
|
|
50
|
+
function reconstructDocument(snapshot, resolved) {
|
|
51
|
+
const layers = (snapshot.layers ?? []).map((layer) => ({
|
|
52
|
+
id: layer.id,
|
|
53
|
+
name: layer.name,
|
|
54
|
+
type: layer.type,
|
|
55
|
+
visible: layer.visible,
|
|
56
|
+
locked: false,
|
|
57
|
+
opacity: layer.opacity,
|
|
58
|
+
blendMode: layer.blendMode,
|
|
59
|
+
data: null
|
|
60
|
+
}));
|
|
61
|
+
const activeLayerId = snapshot.activeLayerId ?? "";
|
|
62
|
+
const background = snapshot.backgroundColor ??
|
|
63
|
+
resolved.document.canvas.backgroundColor ??
|
|
64
|
+
resolved.meta.backgroundColor;
|
|
65
|
+
const canvas = {
|
|
66
|
+
width: snapshot.width ?? resolved.document.canvas.width ?? 0,
|
|
67
|
+
height: snapshot.height ?? resolved.document.canvas.height ?? 0
|
|
68
|
+
};
|
|
69
|
+
if (background !== undefined) {
|
|
70
|
+
canvas.backgroundColor = background;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
sketch: {
|
|
74
|
+
version: resolved.document.version,
|
|
75
|
+
canvas,
|
|
76
|
+
layers,
|
|
77
|
+
activeLayerId,
|
|
78
|
+
maskLayerId: null
|
|
79
|
+
},
|
|
80
|
+
layerBindings: []
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Replay `--interact` against the headless bridge and write the bundle.
|
|
85
|
+
*
|
|
86
|
+
* A failing step is recorded and the script continues: a run that stops at the
|
|
87
|
+
* first error hides every problem behind it, and the report is what the caller
|
|
88
|
+
* came for.
|
|
89
|
+
*/
|
|
90
|
+
export async function runSketchDebug(ref, options, deps) {
|
|
91
|
+
const resolved = await resolveSketchTarget(ref, deps);
|
|
92
|
+
const core = deps.core ?? (await loadCore());
|
|
93
|
+
const steps = options.interact ?? [];
|
|
94
|
+
const interactions = [];
|
|
95
|
+
let snapshot;
|
|
96
|
+
if (steps.length > 0) {
|
|
97
|
+
const createBridge = deps.createBridge ?? (await loadBridgeFactory());
|
|
98
|
+
const bridgeInit = {
|
|
99
|
+
// The bridge seeds names and types only; a group layer has no headless
|
|
100
|
+
// equivalent, so it enters the stack as a raster.
|
|
101
|
+
layers: resolved.document.layers.map((layer) => ({
|
|
102
|
+
name: layer.name,
|
|
103
|
+
type: layer.type === "mask" ? "mask" : "raster"
|
|
104
|
+
}))
|
|
105
|
+
};
|
|
106
|
+
if (resolved.target.name) {
|
|
107
|
+
bridgeInit.name = resolved.target.name;
|
|
108
|
+
}
|
|
109
|
+
if (resolved.document.canvas.width !== undefined) {
|
|
110
|
+
bridgeInit.width = resolved.document.canvas.width;
|
|
111
|
+
}
|
|
112
|
+
if (resolved.document.canvas.height !== undefined) {
|
|
113
|
+
bridgeInit.height = resolved.document.canvas.height;
|
|
114
|
+
}
|
|
115
|
+
const bridge = createBridge(bridgeInit);
|
|
116
|
+
const byName = new Map(bridge.tools.map((t) => [t.name, t]));
|
|
117
|
+
for (const step of steps) {
|
|
118
|
+
const tool = byName.get(step.tool);
|
|
119
|
+
if (!tool) {
|
|
120
|
+
const known = [...byName.keys()].sort().join(", ");
|
|
121
|
+
interactions.push({
|
|
122
|
+
tool: step.tool,
|
|
123
|
+
input: step.input,
|
|
124
|
+
ok: false,
|
|
125
|
+
error: `No sketch tool named "${step.tool}". Available: ${known}.`
|
|
126
|
+
});
|
|
127
|
+
deps.onLog?.(`✗ ${step.tool}: unknown tool`);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const result = await tool.execute(step.input);
|
|
132
|
+
interactions.push({
|
|
133
|
+
tool: step.tool,
|
|
134
|
+
input: step.input,
|
|
135
|
+
ok: true,
|
|
136
|
+
result
|
|
137
|
+
});
|
|
138
|
+
deps.onLog?.(`✓ ${step.tool}`);
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
const error = e instanceof Error ? e.message : String(e);
|
|
142
|
+
interactions.push({
|
|
143
|
+
tool: step.tool,
|
|
144
|
+
input: step.input,
|
|
145
|
+
ok: false,
|
|
146
|
+
error
|
|
147
|
+
});
|
|
148
|
+
deps.onLog?.(`✗ ${step.tool}: ${error}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
snapshot = bridge.finalState();
|
|
152
|
+
}
|
|
153
|
+
const finalDocument = snapshot
|
|
154
|
+
? reconstructDocument(snapshot, resolved)
|
|
155
|
+
: undefined;
|
|
156
|
+
const reportInput = {
|
|
157
|
+
target: resolved.target,
|
|
158
|
+
document: resolved.raw,
|
|
159
|
+
meta: resolved.meta,
|
|
160
|
+
interactions
|
|
161
|
+
};
|
|
162
|
+
if (snapshot) {
|
|
163
|
+
reportInput.finalState = snapshot;
|
|
164
|
+
}
|
|
165
|
+
if (finalDocument) {
|
|
166
|
+
reportInput.finalDocument = finalDocument;
|
|
167
|
+
}
|
|
168
|
+
const report = await core.buildSketchDebugReport(reportInput);
|
|
169
|
+
const bundleDir = options.outDir
|
|
170
|
+
? resolve(options.outDir)
|
|
171
|
+
: defaultOutDir(ref);
|
|
172
|
+
await mkdir(bundleDir, { recursive: true });
|
|
173
|
+
await writeFile(join(bundleDir, "sketch.json"), JSON.stringify(resolved.raw, null, 2), "utf8");
|
|
174
|
+
await writeFile(join(bundleDir, "report.json"), JSON.stringify(report, null, 2), "utf8");
|
|
175
|
+
await writeFile(join(bundleDir, "report.md"), core.renderSketchReportMarkdown(report), "utf8");
|
|
176
|
+
return { report, bundleDir };
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/sketch-debug/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI host for the sketch debug harness: target resolution, the
|
|
3
|
+
* `--interact` script, and the bundle writer. The rules themselves live in
|
|
4
|
+
* `@nodetool-ai/execution/sketch-debug`.
|
|
5
|
+
*/
|
|
6
|
+
export { runSketchDebug, runSketchValidate, type CreateSketchBridge, type SketchBridge, type SketchBridgeLayer, type SketchBridgeSnapshot, type SketchBridgeTool, type SketchDebugCore, type SketchDebugDeps, type SketchDebugOptions, type SketchDebugResult, type SketchValidateResult } from "./harness.js";
|
|
7
|
+
export { normalizeToolName, parseInteractionScript, type SketchInteractionStep } from "./interactions.js";
|
|
8
|
+
export { resolveSketchTarget, type ImageDocumentRecord, type ResolvedSketchTarget, type SketchCanvasSettings, type SketchDocumentView, type SketchLayerView, type SketchTargetDeps } from "./target.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sketch-debug/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI host for the sketch debug harness: target resolution, the
|
|
3
|
+
* `--interact` script, and the bundle writer. The rules themselves live in
|
|
4
|
+
* `@nodetool-ai/execution/sketch-debug`.
|
|
5
|
+
*/
|
|
6
|
+
export { runSketchDebug, runSketchValidate } from "./harness.js";
|
|
7
|
+
export { normalizeToolName, parseInteractionScript } from "./interactions.js";
|
|
8
|
+
export { resolveSketchTarget } from "./target.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sketch-debug/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,cAAc,EACd,iBAAiB,EAWlB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EAOpB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `--interact` script for `nodetool sketch debug`.
|
|
3
|
+
*
|
|
4
|
+
* A step names one sketch tool and the input to call it with:
|
|
5
|
+
*
|
|
6
|
+
* ```json
|
|
7
|
+
* [{"tool": "add_layer", "input": {"name": "Glow", "type": "raster"}},
|
|
8
|
+
* {"tool": "ui_sketch_set_layer_props",
|
|
9
|
+
* "input": {"target": "Glow", "opacity": 0.5, "blendMode": "multiply"}}]
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Both spellings resolve to the same tool: the `ui_sketch_` prefix is what the
|
|
13
|
+
* bridge and the browser call it, and typing it for every step is noise.
|
|
14
|
+
*/
|
|
15
|
+
import { type InteractionStep } from "../interaction-script.js";
|
|
16
|
+
/** One parsed step, with the tool name in its canonical `ui_sketch_*` form. */
|
|
17
|
+
export type SketchInteractionStep = InteractionStep;
|
|
18
|
+
export declare const normalizeToolName: (name: string) => string, parseInteractionScript: (json: string) => InteractionStep[];
|
|
19
|
+
//# sourceMappingURL=interactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../../src/sketch-debug/interactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAElC,+EAA+E;AAC/E,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAEpD,eAAO,MAAQ,iBAAiB,4BAAE,sBAAsB,qCAIrD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `--interact` script for `nodetool sketch debug`.
|
|
3
|
+
*
|
|
4
|
+
* A step names one sketch tool and the input to call it with:
|
|
5
|
+
*
|
|
6
|
+
* ```json
|
|
7
|
+
* [{"tool": "add_layer", "input": {"name": "Glow", "type": "raster"}},
|
|
8
|
+
* {"tool": "ui_sketch_set_layer_props",
|
|
9
|
+
* "input": {"target": "Glow", "opacity": 0.5, "blendMode": "multiply"}}]
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Both spellings resolve to the same tool: the `ui_sketch_` prefix is what the
|
|
13
|
+
* bridge and the browser call it, and typing it for every step is noise.
|
|
14
|
+
*/
|
|
15
|
+
import { createInteractionScript } from "../interaction-script.js";
|
|
16
|
+
export const { normalizeToolName, parseInteractionScript } = createInteractionScript("ui_sketch_", '{"tool":"add_layer","input":{"name":"Glow"}}');
|
|
17
|
+
//# sourceMappingURL=interactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../src/sketch-debug/interactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,uBAAuB,EAExB,MAAM,0BAA0B,CAAC;AAKlC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,GACxD,uBAAuB,CACrB,YAAY,EACZ,8CAA8C,CAC/C,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SketchDebugTarget } from "@nodetool-ai/execution/sketch-debug";
|
|
2
|
+
/** An `image_documents` row as the harness needs it. */
|
|
3
|
+
export interface ImageDocumentRecord {
|
|
4
|
+
id: string;
|
|
5
|
+
name?: string | null;
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
/** camelCase on the API response, snake_case on the row. */
|
|
9
|
+
backgroundColor?: string;
|
|
10
|
+
background_color?: string;
|
|
11
|
+
/** The stored document — a JSON string or an already-parsed object. */
|
|
12
|
+
document: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface SketchTargetDeps {
|
|
15
|
+
/** Load an image document by DB id. */
|
|
16
|
+
loadDocument: (id: string) => Promise<ImageDocumentRecord | null>;
|
|
17
|
+
}
|
|
18
|
+
/** The canvas settings the row carries beside the document. */
|
|
19
|
+
export interface SketchCanvasSettings {
|
|
20
|
+
width?: number;
|
|
21
|
+
height?: number;
|
|
22
|
+
backgroundColor?: string;
|
|
23
|
+
}
|
|
24
|
+
/** The layer stack, read down to what the headless bridge can be seeded with. */
|
|
25
|
+
export interface SketchLayerView {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
type: "raster" | "mask" | "group";
|
|
29
|
+
}
|
|
30
|
+
/** The document read as a canvas plus a layer stack. */
|
|
31
|
+
export interface SketchDocumentView {
|
|
32
|
+
version: number;
|
|
33
|
+
canvas: SketchCanvasSettings;
|
|
34
|
+
layers: SketchLayerView[];
|
|
35
|
+
activeLayerId: string;
|
|
36
|
+
maskLayerId: string | null;
|
|
37
|
+
}
|
|
38
|
+
export interface ResolvedSketchTarget {
|
|
39
|
+
target: SketchDebugTarget;
|
|
40
|
+
/** The document exactly as loaded — validation's input, unrepaired. */
|
|
41
|
+
raw: unknown;
|
|
42
|
+
/** The same document, read as a canvas + layer stack. */
|
|
43
|
+
document: SketchDocumentView;
|
|
44
|
+
meta: SketchCanvasSettings;
|
|
45
|
+
}
|
|
46
|
+
/** Resolve a sketch target: a JSON file path or an image document row id. */
|
|
47
|
+
export declare function resolveSketchTarget(ref: string, deps: SketchTargetDeps): Promise<ResolvedSketchTarget>;
|
|
48
|
+
//# sourceMappingURL=target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../src/sketch-debug/target.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAgB7E,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;CACnE;AAED,+DAA+D;AAC/D,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,uEAAuE;IACvE,GAAG,EAAE,OAAO,CAAC;IACb,yDAAyD;IACzD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AA8ED,6EAA6E;AAC7E,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAiD/B"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a sketch debug target into an image document plus its canvas
|
|
3
|
+
* settings.
|
|
4
|
+
*
|
|
5
|
+
* A sketch is named two ways, and both end up in the same shape:
|
|
6
|
+
*
|
|
7
|
+
* - a **JSON file** — either a bare `ImageDocumentData` (`sketch` +
|
|
8
|
+
* `layerBindings`) or a wrapper carrying one under `document`, as the
|
|
9
|
+
* `image_documents` row and the `sketch.get` response do;
|
|
10
|
+
* - an **image_documents row id**, read through an injected loader so this
|
|
11
|
+
* module needs no database.
|
|
12
|
+
*
|
|
13
|
+
* A path that exists on disk wins over an id, so a file named like an id is
|
|
14
|
+
* still readable.
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
17
|
+
import { isFiniteNumber, isRecord, isString } from "../predicates.js";
|
|
18
|
+
const numberOr = (value) => isFiniteNumber(value) ? value : undefined;
|
|
19
|
+
/** Read width/height/background off whatever wrapper carried the document. */
|
|
20
|
+
function settingsOf(raw) {
|
|
21
|
+
if (!isRecord(raw))
|
|
22
|
+
return {};
|
|
23
|
+
const settings = {};
|
|
24
|
+
const width = numberOr(raw.width);
|
|
25
|
+
const height = numberOr(raw.height);
|
|
26
|
+
const background = isString(raw.backgroundColor)
|
|
27
|
+
? raw.backgroundColor
|
|
28
|
+
: isString(raw.background_color)
|
|
29
|
+
? raw.background_color
|
|
30
|
+
: undefined;
|
|
31
|
+
if (width !== undefined)
|
|
32
|
+
settings.width = width;
|
|
33
|
+
if (height !== undefined)
|
|
34
|
+
settings.height = height;
|
|
35
|
+
if (background !== undefined)
|
|
36
|
+
settings.backgroundColor = background;
|
|
37
|
+
return settings;
|
|
38
|
+
}
|
|
39
|
+
/** A document is anything with a `sketch` object and a `layerBindings` array. */
|
|
40
|
+
const looksLikeDocument = (value) => isRecord(value) &&
|
|
41
|
+
isRecord(value.sketch) &&
|
|
42
|
+
Array.isArray(value.layerBindings);
|
|
43
|
+
/**
|
|
44
|
+
* The document a target carries, unwrapping a `document` field (string or
|
|
45
|
+
* object) when there is one. Never throws — an unreadable document is a
|
|
46
|
+
* validation finding, not a crash.
|
|
47
|
+
*/
|
|
48
|
+
function documentOf(raw) {
|
|
49
|
+
// SAFETY: a target is read from a JSON file or a json column, so every
|
|
50
|
+
// branch below carries decoded JSON.
|
|
51
|
+
if (!isRecord(raw))
|
|
52
|
+
return raw;
|
|
53
|
+
const inner = raw.document;
|
|
54
|
+
if (isString(inner)) {
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(inner);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return inner;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// SAFETY: same JSON provenance as the branch above.
|
|
63
|
+
if (inner !== undefined)
|
|
64
|
+
return inner;
|
|
65
|
+
return raw;
|
|
66
|
+
}
|
|
67
|
+
const layerType = (value) => value === "mask" || value === "group" ? value : "raster";
|
|
68
|
+
/** Read a document as a canvas + layer stack, defaulting what is missing. */
|
|
69
|
+
function asDocument(raw) {
|
|
70
|
+
const record = isRecord(raw) ? raw : {};
|
|
71
|
+
const sketch = isRecord(record.sketch) ? record.sketch : {};
|
|
72
|
+
const layers = [];
|
|
73
|
+
for (const entry of Array.isArray(sketch.layers) ? sketch.layers : []) {
|
|
74
|
+
if (!isRecord(entry) || !isString(entry.id))
|
|
75
|
+
continue;
|
|
76
|
+
layers.push({
|
|
77
|
+
id: entry.id,
|
|
78
|
+
name: isString(entry.name) ? entry.name : entry.id,
|
|
79
|
+
type: layerType(entry.type)
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
version: numberOr(sketch.version) ?? 1,
|
|
84
|
+
canvas: settingsOf(sketch.canvas),
|
|
85
|
+
layers,
|
|
86
|
+
activeLayerId: isString(sketch.activeLayerId) ? sketch.activeLayerId : "",
|
|
87
|
+
maskLayerId: isString(sketch.maskLayerId) ? sketch.maskLayerId : null
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/** Resolve a sketch target: a JSON file path or an image document row id. */
|
|
91
|
+
export async function resolveSketchTarget(ref, deps) {
|
|
92
|
+
if (existsSync(ref)) {
|
|
93
|
+
let parsed;
|
|
94
|
+
try {
|
|
95
|
+
parsed = JSON.parse(readFileSync(ref, "utf8"));
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
throw new Error(`${ref} is not valid JSON: ${e.message}`);
|
|
99
|
+
}
|
|
100
|
+
const raw = documentOf(parsed);
|
|
101
|
+
if (!looksLikeDocument(raw)) {
|
|
102
|
+
throw new Error(`${ref} is not an image document (no \`sketch\`/\`layerBindings\`, and no \`document\` field carrying them).`);
|
|
103
|
+
}
|
|
104
|
+
const name = isRecord(parsed) && isString(parsed.name)
|
|
105
|
+
? parsed.name
|
|
106
|
+
: undefined;
|
|
107
|
+
const document = asDocument(raw);
|
|
108
|
+
const target = { kind: "file", ref };
|
|
109
|
+
if (name) {
|
|
110
|
+
target.name = name;
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
target,
|
|
114
|
+
raw,
|
|
115
|
+
document,
|
|
116
|
+
// The wrapper's own width/height, never the canvas's: the validator
|
|
117
|
+
// compares the two, so folding one into the other hides the mismatch.
|
|
118
|
+
meta: settingsOf(parsed)
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const record = await deps.loadDocument(ref);
|
|
122
|
+
if (!record) {
|
|
123
|
+
throw new Error(`Image document not found: ${ref}`);
|
|
124
|
+
}
|
|
125
|
+
const raw = documentOf(record);
|
|
126
|
+
const document = asDocument(raw);
|
|
127
|
+
const target = { kind: "id", ref };
|
|
128
|
+
if (record.name) {
|
|
129
|
+
target.name = record.name;
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
target,
|
|
133
|
+
raw,
|
|
134
|
+
document,
|
|
135
|
+
meta: settingsOf(record)
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/sketch-debug/target.ts"],"names":[],"mappings":"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"}
|
package/dist/stdin.d.ts
CHANGED
|
@@ -12,37 +12,36 @@
|
|
|
12
12
|
* /run <workflow_id> [json_params] — run a workflow
|
|
13
13
|
* /stop — stop in-progress generation
|
|
14
14
|
* /reconnect <job_id> — reconnect to a running job
|
|
15
|
-
* /resume <job_id> — resume a paused job
|
|
16
15
|
* /cancel <job_id> — cancel a running job
|
|
17
16
|
* /status [job_id] — get job/all-jobs status
|
|
17
|
+
* /new — start a new chat session
|
|
18
|
+
* /compact [instructions] — summarize conversation into retained context
|
|
18
19
|
* /help — show available commands
|
|
19
20
|
*/
|
|
20
21
|
import type { BaseProvider } from "@nodetool-ai/runtime";
|
|
21
|
-
import type
|
|
22
|
+
import { type PermissionMode } from "@nodetool-ai/agents";
|
|
22
23
|
import type { NodeRegistry } from "@nodetool-ai/node-sdk";
|
|
23
|
-
|
|
24
|
+
interface StdinModeOptions {
|
|
24
25
|
provider: string;
|
|
25
26
|
model: string;
|
|
26
27
|
workspaceDir: string;
|
|
27
|
-
agentMode?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Which planner to use when `agentMode` is true:
|
|
30
|
-
* - `"graph"` — GraphPlanner builds a workflow DAG (default when registry available).
|
|
31
|
-
* - `"multi"` — TaskPlanner builds a parallel task DAG of LLM steps.
|
|
32
|
-
*/
|
|
33
|
-
agentPlanner?: "multi" | "graph";
|
|
34
28
|
wsUrl?: string;
|
|
35
|
-
/**
|
|
36
|
-
extraTools?: Tool[];
|
|
37
|
-
/**
|
|
38
|
-
* NodeRegistry for graph-native agent mode. When supplied AND the planner
|
|
39
|
-
* is "graph", agent mode uses MultiModeAgent + GraphPlanner so the agent
|
|
40
|
-
* can build workflows with the curated `nodetool.*` core nodes and the
|
|
41
|
-
* `find_model` tool.
|
|
42
|
-
*/
|
|
29
|
+
/** NodeRegistry — currently unused by the unified loop, kept for parity. */
|
|
43
30
|
registry?: NodeRegistry;
|
|
44
|
-
/** Configured BaseProvider instances by id
|
|
31
|
+
/** Configured BaseProvider instances by id (passed through to subtasks). */
|
|
45
32
|
agentProviders?: Record<string, BaseProvider>;
|
|
33
|
+
/**
|
|
34
|
+
* Expose the read-only `run_search` fan-out primitive alongside
|
|
35
|
+
* `run_subtask`. On by default; set `false` to remove it.
|
|
36
|
+
*/
|
|
37
|
+
enableReadOnlySearch?: boolean;
|
|
38
|
+
/** `--permission-mode`. Unset runs `auto`: stdin is the input, not a user. */
|
|
39
|
+
permissionMode?: PermissionMode;
|
|
40
|
+
/** `--cost-cap <usd>`; `0` lifts the cap. Bounds each turn, as chat's does. */
|
|
41
|
+
costCap?: string;
|
|
42
|
+
/** `--timeout <s>`; `0` leaves the turn no time at all. */
|
|
43
|
+
timeout?: string;
|
|
46
44
|
}
|
|
47
45
|
export declare function runStdinMode(opts: StdinModeOptions): Promise<void>;
|
|
46
|
+
export {};
|
|
48
47
|
//# sourceMappingURL=stdin.d.ts.map
|
package/dist/stdin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../src/stdin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../src/stdin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,sBAAsB,CAAC;AAW7E,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAW1D,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuJD,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6NxE"}
|