@nodetool-ai/cli 0.7.0-rc.23 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -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 +45 -0
- package/dist/affected/affected.d.ts.map +1 -0
- package/dist/affected/affected.js +160 -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 +29 -0
- package/dist/app-debug/harness.d.ts.map +1 -0
- package/dist/app-debug/harness.js +116 -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 +980 -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 +93 -0
- package/dist/chat-codeact.d.ts.map +1 -0
- package/dist/chat-codeact.js +179 -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 +32 -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-completeness.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.js +117 -0
- package/dist/commands/__tests__/timeline-render-completeness.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/__tests__/timeline-score.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-score.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-score.test.js +100 -0
- package/dist/commands/__tests__/timeline-score.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 +328 -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 +405 -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-summary-output.d.ts +22 -0
- package/dist/commands/debug-summary-output.d.ts.map +1 -0
- package/dist/commands/debug-summary-output.js +28 -0
- package/dist/commands/debug-summary-output.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/errors.d.ts +11 -0
- package/dist/commands/errors.d.ts.map +1 -0
- package/dist/commands/errors.js +177 -0
- package/dist/commands/errors.js.map +1 -0
- package/dist/commands/eval.d.ts +152 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +690 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/extension.d.ts +12 -0
- package/dist/commands/extension.d.ts.map +1 -0
- package/dist/commands/extension.js +30 -0
- package/dist/commands/extension.js.map +1 -0
- package/dist/commands/game-benchmark.d.ts +34 -0
- package/dist/commands/game-benchmark.d.ts.map +1 -0
- package/dist/commands/game-benchmark.js +95 -0
- package/dist/commands/game-benchmark.js.map +1 -0
- package/dist/commands/game-smoke.d.ts +3 -0
- package/dist/commands/game-smoke.d.ts.map +1 -0
- package/dist/commands/game-smoke.js +23 -0
- package/dist/commands/game-smoke.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 +624 -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 +69 -0
- package/dist/commands/harness.d.ts.map +1 -0
- package/dist/commands/harness.js +575 -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 +211 -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/mcp.d.ts +21 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +164 -0
- package/dist/commands/mcp.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.d.ts.map +1 -1
- package/dist/commands/package.js +14 -14
- 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/runs.d.ts +7 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +302 -0
- package/dist/commands/runs.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 +101 -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 +85 -0
- package/dist/commands/timeline-render.d.ts.map +1 -0
- package/dist/commands/timeline-render.js +474 -0
- package/dist/commands/timeline-render.js.map +1 -0
- package/dist/commands/timeline-score.d.ts +16 -0
- package/dist/commands/timeline-score.d.ts.map +1 -0
- package/dist/commands/timeline-score.js +89 -0
- package/dist/commands/timeline-score.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 +105 -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 +24 -0
- package/dist/debug/server-runner.d.ts.map +1 -0
- package/dist/debug/server-runner.js +197 -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 +3844 -0
- package/dist/harness/capability-table.js.map +1 -0
- package/dist/harness/changed-files.d.ts +20 -0
- package/dist/harness/changed-files.d.ts.map +1 -0
- package/dist/harness/changed-files.js +90 -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 +190 -0
- package/dist/harness/registry.d.ts.map +1 -0
- package/dist/harness/registry.js +2034 -0
- package/dist/harness/registry.js.map +1 -0
- package/dist/index.js +122 -131
- package/dist/index.js.map +1 -1
- package/dist/interaction-script.d.ts +40 -0
- package/dist/interaction-script.d.ts.map +1 -0
- package/dist/interaction-script.js +96 -0
- package/dist/interaction-script.js.map +1 -0
- package/dist/js-script-debug/harness.d.ts +124 -0
- package/dist/js-script-debug/harness.d.ts.map +1 -0
- package/dist/js-script-debug/harness.js +230 -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 +41 -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 +27 -0
- package/dist/node-registry.d.ts.map +1 -0
- package/dist/node-registry.js +33 -0
- package/dist/node-registry.js.map +1 -0
- package/dist/nodetool-main.d.ts +15 -0
- package/dist/nodetool-main.d.ts.map +1 -0
- package/dist/nodetool-main.js +1368 -0
- package/dist/nodetool-main.js.map +1 -0
- package/dist/nodetool.d.ts +0 -13
- package/dist/nodetool.d.ts.map +1 -1
- package/dist/nodetool.js +17 -1147
- 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 +339 -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 +29 -0
- package/dist/run-dsl.d.ts.map +1 -1
- package/dist/run-dsl.js +44 -10
- 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 +24 -0
- package/dist/sandbox-catalog.d.ts.map +1 -0
- package/dist/sandbox-catalog.js +78 -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 +145 -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 +160 -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 +122 -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 +65 -31
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability coverage: what proves each agent capability still works.
|
|
3
|
+
*
|
|
4
|
+
* The harness registry answers the question one level up — which harness
|
|
5
|
+
* covers which product *surface* — and `SurfaceEntry.paths` is deliberately
|
|
6
|
+
* coarse: `packages/agents/` is one path, and a diff that adds a capability
|
|
7
|
+
* to it lights up the same checks a diff that renames a local variable does.
|
|
8
|
+
* That is the hole this table fills. Every exported capability is named here
|
|
9
|
+
* with the file that implements it, the checked-in suites a selfcheck runs
|
|
10
|
+
* over it, the eval cases that drive a model through it, or — when nothing
|
|
11
|
+
* does yet — a written gap note.
|
|
12
|
+
*
|
|
13
|
+
* The invariant is the registry's, one rung down: no capability without a
|
|
14
|
+
* check or a documented gap. It is enforced by `capability-coverage.test.ts`
|
|
15
|
+
* (the audit, plus the on-disk checks the pure audit cannot make) and by
|
|
16
|
+
* `nodetool harness capabilities --strict`.
|
|
17
|
+
*
|
|
18
|
+
* `contract` is a fingerprint of what the capability *declares* — its name,
|
|
19
|
+
* description, input schema, permission category, and whether it needs the
|
|
20
|
+
* caller's tool-call id. It is generated, never hand-written: run
|
|
21
|
+
* `npm run capabilities:sync` after touching a spec. It exists so the gate can
|
|
22
|
+
* tell a contract change from a refactor: `nodetool harness gate --base <ref>`
|
|
23
|
+
* demands a new or changed mapping only when a capability is added or its
|
|
24
|
+
* fingerprint moves.
|
|
25
|
+
*/
|
|
26
|
+
import type { HarnessEntry } from "./registry.js";
|
|
27
|
+
/** The fields of a spec the fingerprint is taken over. */
|
|
28
|
+
export interface CapabilityContractInput {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
inputSchema: unknown;
|
|
32
|
+
category: string;
|
|
33
|
+
needsToolCallId?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* What a capability promises its callers, as twelve hex digits: the wire name,
|
|
37
|
+
* the description a model reads, the input schema, the permission category,
|
|
38
|
+
* and whether it needs the caller's tool-call id. Everything else about an
|
|
39
|
+
* implementation can move without a caller noticing.
|
|
40
|
+
*/
|
|
41
|
+
export declare function capabilityContractFingerprint(spec: CapabilityContractInput): string;
|
|
42
|
+
/** Eval cases that drive one capability, by defining file. */
|
|
43
|
+
export interface CapabilityEvalRef {
|
|
44
|
+
/** Repo-relative file that declares the case ids. */
|
|
45
|
+
file: string;
|
|
46
|
+
/** Case ids inside that file. */
|
|
47
|
+
cases: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface CapabilityCoverageEntry {
|
|
50
|
+
/** Wire name, as a guest or a model calls it. */
|
|
51
|
+
name: string;
|
|
52
|
+
/** The capability module that owns it. */
|
|
53
|
+
module: string;
|
|
54
|
+
/** Repo-relative implementation file. */
|
|
55
|
+
impl: string;
|
|
56
|
+
/** Generated fingerprint of the declared contract. Never hand-edit. */
|
|
57
|
+
contract: string;
|
|
58
|
+
/** Harness id whose selfcheck runs {@link suites}. */
|
|
59
|
+
selfcheck?: string;
|
|
60
|
+
/** Checked-in suites that name this capability. Required with a selfcheck. */
|
|
61
|
+
suites?: string[];
|
|
62
|
+
/** Eval cases that drive a model through it. */
|
|
63
|
+
evals?: CapabilityEvalRef[];
|
|
64
|
+
/** Required when there is neither a selfcheck nor an eval case. */
|
|
65
|
+
gap?: string;
|
|
66
|
+
}
|
|
67
|
+
/** What the audit compares the table against: the live capability registry. */
|
|
68
|
+
export interface DeclaredCapability {
|
|
69
|
+
name: string;
|
|
70
|
+
module: string;
|
|
71
|
+
contract: string;
|
|
72
|
+
}
|
|
73
|
+
export interface CapabilityAuditResult {
|
|
74
|
+
rows: Array<{
|
|
75
|
+
name: string;
|
|
76
|
+
module: string;
|
|
77
|
+
covered: boolean;
|
|
78
|
+
selfcheck?: string;
|
|
79
|
+
evalCases: number;
|
|
80
|
+
gap?: string;
|
|
81
|
+
}>;
|
|
82
|
+
coveredCount: number;
|
|
83
|
+
gapCount: number;
|
|
84
|
+
/** Declared capabilities with no entry — the failure this table exists for. */
|
|
85
|
+
unmapped: string[];
|
|
86
|
+
/** Entries naming a capability no module declares any more. */
|
|
87
|
+
stale: string[];
|
|
88
|
+
/** Entries with no selfcheck, no eval case, and no gap note. */
|
|
89
|
+
undocumentedGaps: string[];
|
|
90
|
+
/** Entries whose `selfcheck` is not a harness that has one. */
|
|
91
|
+
unknownSelfchecks: string[];
|
|
92
|
+
/** Entries claiming a selfcheck but naming no suite. */
|
|
93
|
+
selfchecksWithoutSuites: string[];
|
|
94
|
+
/** Entries whose `contract` disagrees with the live spec. */
|
|
95
|
+
contractDrift: string[];
|
|
96
|
+
/** Entries whose `module` disagrees with the registry. */
|
|
97
|
+
moduleMismatches: string[];
|
|
98
|
+
/** Names appearing in the table twice. */
|
|
99
|
+
duplicates: string[];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The table against the live registry. Pure: on-disk checks (does the impl
|
|
103
|
+
* file exist, does the suite name the capability, does the eval file declare
|
|
104
|
+
* the case) live in the test, which can read the repo.
|
|
105
|
+
*/
|
|
106
|
+
export declare function auditCapabilityCoverage(declared: readonly DeclaredCapability[], entries: readonly CapabilityCoverageEntry[], harnesses: readonly HarnessEntry[]): CapabilityAuditResult;
|
|
107
|
+
/**
|
|
108
|
+
* One entry's literal text, keyed by wire name, read out of the table's
|
|
109
|
+
* source. Textual on purpose: the gate compares this file at two git refs, and
|
|
110
|
+
* `git show <ref>:<path>` hands back source, not a module it can import.
|
|
111
|
+
*
|
|
112
|
+
* The scan is structural — brace depth inside the array literal — so it does
|
|
113
|
+
* not care how the entries are wrapped, only that each carries a
|
|
114
|
+
* `name: "..."` field.
|
|
115
|
+
*/
|
|
116
|
+
export declare function extractCoverageBlocks(source: string): ReadonlyMap<string, string>;
|
|
117
|
+
export interface CapabilityMappingViolation {
|
|
118
|
+
name: string;
|
|
119
|
+
/** What moved without the mapping moving with it. */
|
|
120
|
+
reason: "contract-changed";
|
|
121
|
+
detail: string;
|
|
122
|
+
}
|
|
123
|
+
export interface CapabilityMappingGateResult {
|
|
124
|
+
/** Capabilities the diff adds to the table. */
|
|
125
|
+
added: string[];
|
|
126
|
+
/** Capabilities whose contract fingerprint moved in the diff. */
|
|
127
|
+
contractChanged: string[];
|
|
128
|
+
/** Capabilities the diff removes from the table. */
|
|
129
|
+
removed: string[];
|
|
130
|
+
/** Contract changes that left the coverage mapping untouched. */
|
|
131
|
+
violations: CapabilityMappingViolation[];
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Which commit to read the base table from: the merge base of `ref` and HEAD,
|
|
135
|
+
* not `ref`'s tip. A branch that is merely behind otherwise inherits every
|
|
136
|
+
* contract that moved on the base branch since it forked — a refactor that
|
|
137
|
+
* touched no capability at all failed on `list_entities`, `create_entity` and
|
|
138
|
+
* `update_entity`, which had gained a `project_id` field on `main` meanwhile.
|
|
139
|
+
* The changed-file half of the gate already asks `base...HEAD`; this asks the
|
|
140
|
+
* same question of one file. Falls back to `ref` when there is no merge base
|
|
141
|
+
* (a shallow clone, an unrelated ref).
|
|
142
|
+
*/
|
|
143
|
+
export declare function resolveGateBaseRef(ref: string, runGit: (command: string) => string): string;
|
|
144
|
+
/**
|
|
145
|
+
* Compare the table at two refs. A capability that is new, or whose coverage
|
|
146
|
+
* fields changed, satisfies the rule by construction; a contract that moved
|
|
147
|
+
* while the mapping stood still does not.
|
|
148
|
+
*
|
|
149
|
+
* `baseSource` is null when the file does not exist at the base ref — every
|
|
150
|
+
* entry is then new, and nothing is a violation.
|
|
151
|
+
*
|
|
152
|
+
* `changedFiles` answers the rule the other way round. The mapping's `suites`
|
|
153
|
+
* are file paths, and they do not move when a case is *added* to a file
|
|
154
|
+
* already listed — which is what covering a new contract usually looks like.
|
|
155
|
+
* Reading the diff, a contract change whose own covering suite also changed
|
|
156
|
+
* has been answered: the suite is named, and it is in the diff. Without this a
|
|
157
|
+
* one-word description edit demanded a contrived change to a generated field,
|
|
158
|
+
* and the honest fix — write the test — could not satisfy the gate.
|
|
159
|
+
*/
|
|
160
|
+
export declare function planCapabilityMappingGate(baseSource: string | null, headSource: string, changedFiles?: readonly string[]): CapabilityMappingGateResult;
|
|
161
|
+
//# sourceMappingURL=capability-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-coverage.d.ts","sourceRoot":"","sources":["../../src/harness/capability-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability coverage: what proves each agent capability still works.
|
|
3
|
+
*
|
|
4
|
+
* The harness registry answers the question one level up — which harness
|
|
5
|
+
* covers which product *surface* — and `SurfaceEntry.paths` is deliberately
|
|
6
|
+
* coarse: `packages/agents/` is one path, and a diff that adds a capability
|
|
7
|
+
* to it lights up the same checks a diff that renames a local variable does.
|
|
8
|
+
* That is the hole this table fills. Every exported capability is named here
|
|
9
|
+
* with the file that implements it, the checked-in suites a selfcheck runs
|
|
10
|
+
* over it, the eval cases that drive a model through it, or — when nothing
|
|
11
|
+
* does yet — a written gap note.
|
|
12
|
+
*
|
|
13
|
+
* The invariant is the registry's, one rung down: no capability without a
|
|
14
|
+
* check or a documented gap. It is enforced by `capability-coverage.test.ts`
|
|
15
|
+
* (the audit, plus the on-disk checks the pure audit cannot make) and by
|
|
16
|
+
* `nodetool harness capabilities --strict`.
|
|
17
|
+
*
|
|
18
|
+
* `contract` is a fingerprint of what the capability *declares* — its name,
|
|
19
|
+
* description, input schema, permission category, and whether it needs the
|
|
20
|
+
* caller's tool-call id. It is generated, never hand-written: run
|
|
21
|
+
* `npm run capabilities:sync` after touching a spec. It exists so the gate can
|
|
22
|
+
* tell a contract change from a refactor: `nodetool harness gate --base <ref>`
|
|
23
|
+
* demands a new or changed mapping only when a capability is added or its
|
|
24
|
+
* fingerprint moves.
|
|
25
|
+
*/
|
|
26
|
+
import { createHash } from "node:crypto";
|
|
27
|
+
import { isRecord } from "../predicates.js";
|
|
28
|
+
/** Key order is not part of a contract, so the payload is sorted first. */
|
|
29
|
+
function canonical(value) {
|
|
30
|
+
if (Array.isArray(value))
|
|
31
|
+
return value.map(canonical);
|
|
32
|
+
if (isRecord(value)) {
|
|
33
|
+
return Object.fromEntries(Object.entries(value)
|
|
34
|
+
.sort(([a], [b]) => (a < b ? -1 : 1))
|
|
35
|
+
.map(([key, inner]) => [key, canonical(inner)]));
|
|
36
|
+
}
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* What a capability promises its callers, as twelve hex digits: the wire name,
|
|
41
|
+
* the description a model reads, the input schema, the permission category,
|
|
42
|
+
* and whether it needs the caller's tool-call id. Everything else about an
|
|
43
|
+
* implementation can move without a caller noticing.
|
|
44
|
+
*/
|
|
45
|
+
export function capabilityContractFingerprint(spec) {
|
|
46
|
+
const payload = canonical({
|
|
47
|
+
name: spec.name,
|
|
48
|
+
description: spec.description,
|
|
49
|
+
inputSchema: spec.inputSchema,
|
|
50
|
+
category: spec.category,
|
|
51
|
+
needsToolCallId: spec.needsToolCallId ?? false
|
|
52
|
+
});
|
|
53
|
+
return createHash("sha256")
|
|
54
|
+
.update(JSON.stringify(payload))
|
|
55
|
+
.digest("hex")
|
|
56
|
+
.slice(0, 12);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The table against the live registry. Pure: on-disk checks (does the impl
|
|
60
|
+
* file exist, does the suite name the capability, does the eval file declare
|
|
61
|
+
* the case) live in the test, which can read the repo.
|
|
62
|
+
*/
|
|
63
|
+
export function auditCapabilityCoverage(declared, entries, harnesses) {
|
|
64
|
+
const selfcheckable = new Set(harnesses.filter((h) => h.selfcheck).map((h) => h.id));
|
|
65
|
+
const byName = new Map();
|
|
66
|
+
const duplicates = [];
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
if (byName.has(entry.name)) {
|
|
69
|
+
duplicates.push(entry.name);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
byName.set(entry.name, entry);
|
|
73
|
+
}
|
|
74
|
+
const declaredByName = new Map(declared.map((d) => [d.name, d]));
|
|
75
|
+
const unmapped = declared
|
|
76
|
+
.filter((d) => !byName.has(d.name))
|
|
77
|
+
.map((d) => d.name);
|
|
78
|
+
const stale = [];
|
|
79
|
+
const undocumentedGaps = [];
|
|
80
|
+
const unknownSelfchecks = [];
|
|
81
|
+
const selfchecksWithoutSuites = [];
|
|
82
|
+
const contractDrift = [];
|
|
83
|
+
const moduleMismatches = [];
|
|
84
|
+
const rows = entries.map((entry) => {
|
|
85
|
+
const live = declaredByName.get(entry.name);
|
|
86
|
+
if (!live) {
|
|
87
|
+
stale.push(entry.name);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
if (live.module !== entry.module) {
|
|
91
|
+
moduleMismatches.push(`${entry.name}: table says ${entry.module}, registry says ${live.module}`);
|
|
92
|
+
}
|
|
93
|
+
if (live.contract !== entry.contract) {
|
|
94
|
+
contractDrift.push(`${entry.name}: table says ${entry.contract}, registry says ${live.contract}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (entry.selfcheck !== undefined) {
|
|
98
|
+
if (!selfcheckable.has(entry.selfcheck)) {
|
|
99
|
+
unknownSelfchecks.push(`${entry.name} → ${entry.selfcheck}`);
|
|
100
|
+
}
|
|
101
|
+
if (!entry.suites || entry.suites.length === 0) {
|
|
102
|
+
selfchecksWithoutSuites.push(entry.name);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const evalCases = (entry.evals ?? []).reduce((sum, ref) => sum + ref.cases.length, 0);
|
|
106
|
+
const covered = entry.selfcheck !== undefined || evalCases > 0;
|
|
107
|
+
if (!covered && !entry.gap)
|
|
108
|
+
undocumentedGaps.push(entry.name);
|
|
109
|
+
return {
|
|
110
|
+
name: entry.name,
|
|
111
|
+
module: entry.module,
|
|
112
|
+
covered,
|
|
113
|
+
...(entry.selfcheck && { selfcheck: entry.selfcheck }),
|
|
114
|
+
evalCases,
|
|
115
|
+
...(entry.gap && { gap: entry.gap })
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
rows,
|
|
120
|
+
coveredCount: rows.filter((r) => r.covered).length,
|
|
121
|
+
gapCount: rows.filter((r) => !r.covered).length,
|
|
122
|
+
unmapped,
|
|
123
|
+
stale,
|
|
124
|
+
undocumentedGaps,
|
|
125
|
+
unknownSelfchecks,
|
|
126
|
+
selfchecksWithoutSuites,
|
|
127
|
+
contractDrift,
|
|
128
|
+
moduleMismatches,
|
|
129
|
+
duplicates
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// ---------------------------------------------------------------------------
|
|
133
|
+
// The gate: a contract that moved must move its mapping with it.
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
/**
|
|
136
|
+
* One entry's literal text, keyed by wire name, read out of the table's
|
|
137
|
+
* source. Textual on purpose: the gate compares this file at two git refs, and
|
|
138
|
+
* `git show <ref>:<path>` hands back source, not a module it can import.
|
|
139
|
+
*
|
|
140
|
+
* The scan is structural — brace depth inside the array literal — so it does
|
|
141
|
+
* not care how the entries are wrapped, only that each carries a
|
|
142
|
+
* `name: "..."` field.
|
|
143
|
+
*/
|
|
144
|
+
export function extractCoverageBlocks(source) {
|
|
145
|
+
const blocks = new Map();
|
|
146
|
+
const marker = source.indexOf("CAPABILITY_COVERAGE");
|
|
147
|
+
if (marker === -1)
|
|
148
|
+
return blocks;
|
|
149
|
+
// Past the type annotation — `CapabilityCoverageEntry[]` carries a bracket
|
|
150
|
+
// of its own — to the `[` that opens the array literal.
|
|
151
|
+
const assign = source.indexOf("=", marker);
|
|
152
|
+
if (assign === -1)
|
|
153
|
+
return blocks;
|
|
154
|
+
const start = source.indexOf("[", assign);
|
|
155
|
+
if (start === -1)
|
|
156
|
+
return blocks;
|
|
157
|
+
let depth = 0;
|
|
158
|
+
let blockStart = -1;
|
|
159
|
+
for (let i = start + 1; i < source.length; i += 1) {
|
|
160
|
+
const ch = source[i];
|
|
161
|
+
if (ch === "]" && depth === 0)
|
|
162
|
+
break;
|
|
163
|
+
if (ch === "{") {
|
|
164
|
+
if (depth === 0)
|
|
165
|
+
blockStart = i;
|
|
166
|
+
depth += 1;
|
|
167
|
+
}
|
|
168
|
+
else if (ch === "}") {
|
|
169
|
+
depth -= 1;
|
|
170
|
+
if (depth === 0 && blockStart !== -1) {
|
|
171
|
+
const text = source.slice(blockStart, i + 1);
|
|
172
|
+
const name = /name:\s*"([^"]+)"/.exec(text)?.[1];
|
|
173
|
+
if (name !== undefined && !blocks.has(name))
|
|
174
|
+
blocks.set(name, text);
|
|
175
|
+
blockStart = -1;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return blocks;
|
|
180
|
+
}
|
|
181
|
+
/** An entry's text with the generated fingerprint removed. */
|
|
182
|
+
function coverageSignature(block) {
|
|
183
|
+
return block.replace(/contract:\s*"[^"]*",?\s*/g, "");
|
|
184
|
+
}
|
|
185
|
+
/** Repo-relative, forward-slashed, with no leading `./`. */
|
|
186
|
+
function normalizeRepoPath(path) {
|
|
187
|
+
return path.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
188
|
+
}
|
|
189
|
+
/** Whether one of the entry's listed suite files is in the diff. */
|
|
190
|
+
function coversAChangedSuite(block, changed) {
|
|
191
|
+
if (changed.size === 0)
|
|
192
|
+
return false;
|
|
193
|
+
const suites = block.match(/"([^"]*\.test\.[cm]?tsx?)"/g) ?? [];
|
|
194
|
+
return suites.some((quoted) => changed.has(normalizeRepoPath(quoted.slice(1, -1))));
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Which commit to read the base table from: the merge base of `ref` and HEAD,
|
|
198
|
+
* not `ref`'s tip. A branch that is merely behind otherwise inherits every
|
|
199
|
+
* contract that moved on the base branch since it forked — a refactor that
|
|
200
|
+
* touched no capability at all failed on `list_entities`, `create_entity` and
|
|
201
|
+
* `update_entity`, which had gained a `project_id` field on `main` meanwhile.
|
|
202
|
+
* The changed-file half of the gate already asks `base...HEAD`; this asks the
|
|
203
|
+
* same question of one file. Falls back to `ref` when there is no merge base
|
|
204
|
+
* (a shallow clone, an unrelated ref).
|
|
205
|
+
*/
|
|
206
|
+
export function resolveGateBaseRef(ref, runGit) {
|
|
207
|
+
try {
|
|
208
|
+
return runGit(`git merge-base ${ref} HEAD`).trim() || ref;
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return ref;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Compare the table at two refs. A capability that is new, or whose coverage
|
|
216
|
+
* fields changed, satisfies the rule by construction; a contract that moved
|
|
217
|
+
* while the mapping stood still does not.
|
|
218
|
+
*
|
|
219
|
+
* `baseSource` is null when the file does not exist at the base ref — every
|
|
220
|
+
* entry is then new, and nothing is a violation.
|
|
221
|
+
*
|
|
222
|
+
* `changedFiles` answers the rule the other way round. The mapping's `suites`
|
|
223
|
+
* are file paths, and they do not move when a case is *added* to a file
|
|
224
|
+
* already listed — which is what covering a new contract usually looks like.
|
|
225
|
+
* Reading the diff, a contract change whose own covering suite also changed
|
|
226
|
+
* has been answered: the suite is named, and it is in the diff. Without this a
|
|
227
|
+
* one-word description edit demanded a contrived change to a generated field,
|
|
228
|
+
* and the honest fix — write the test — could not satisfy the gate.
|
|
229
|
+
*/
|
|
230
|
+
export function planCapabilityMappingGate(baseSource, headSource, changedFiles = []) {
|
|
231
|
+
const base = baseSource === null ? new Map() : extractCoverageBlocks(baseSource);
|
|
232
|
+
const head = extractCoverageBlocks(headSource);
|
|
233
|
+
const added = [];
|
|
234
|
+
const contractChanged = [];
|
|
235
|
+
const violations = [];
|
|
236
|
+
const changed = new Set(changedFiles.map(normalizeRepoPath));
|
|
237
|
+
for (const [name, block] of head) {
|
|
238
|
+
const before = base.get(name);
|
|
239
|
+
if (before === undefined) {
|
|
240
|
+
added.push(name);
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
const contractMoved = /contract:\s*"([^"]*)"/.exec(before)?.[1] !==
|
|
244
|
+
/contract:\s*"([^"]*)"/.exec(block)?.[1];
|
|
245
|
+
if (!contractMoved)
|
|
246
|
+
continue;
|
|
247
|
+
contractChanged.push(name);
|
|
248
|
+
if (coverageSignature(before) === coverageSignature(block) &&
|
|
249
|
+
!coversAChangedSuite(block, changed)) {
|
|
250
|
+
violations.push({
|
|
251
|
+
name,
|
|
252
|
+
reason: "contract-changed",
|
|
253
|
+
detail: `${name} changed its declared contract, but its coverage mapping ` +
|
|
254
|
+
"(selfcheck, suites, evals, gap) is unchanged — name the eval case " +
|
|
255
|
+
"or suite that covers the new contract, or write a gap note"
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return {
|
|
260
|
+
added,
|
|
261
|
+
contractChanged,
|
|
262
|
+
removed: [...base.keys()].filter((name) => !head.has(name)),
|
|
263
|
+
violations
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=capability-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-coverage.js","sourceRoot":"","sources":["../../src/harness/capability-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED — the capability coverage table. Do not hand-edit anything but a
|
|
3
|
+
* gap note; `npm run capabilities:sync` rewrites the rest.
|
|
4
|
+
*
|
|
5
|
+
* One entry per exported agent capability: the file that implements it, the
|
|
6
|
+
* checked-in suites a selfcheck runs over it, the eval cases that drive a
|
|
7
|
+
* model through it, and a written gap note where nothing does yet. The rules,
|
|
8
|
+
* the audit, and the gate live in `capability-coverage.ts`; the derivation
|
|
9
|
+
* lives in `scripts/sync-capability-coverage.mjs`.
|
|
10
|
+
*
|
|
11
|
+
* A new capability lands here with no suite and no eval case, and
|
|
12
|
+
* `npm run capabilities:check` fails until someone either writes the case or
|
|
13
|
+
* writes down why there isn't one.
|
|
14
|
+
*/
|
|
15
|
+
import type { CapabilityCoverageEntry } from "./capability-coverage.js";
|
|
16
|
+
export declare const CAPABILITY_COVERAGE: readonly CapabilityCoverageEntry[];
|
|
17
|
+
//# sourceMappingURL=capability-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-table.d.ts","sourceRoot":"","sources":["../../src/harness/capability-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,eAAO,MAAM,mBAAmB,EAAE,SAAS,uBAAuB,EAsxHjE,CAAC"}
|