@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.
Files changed (535) hide show
  1. package/README.md +82 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/ExecutionTree.d.ts +2 -1
  4. package/dist/ExecutionTree.d.ts.map +1 -1
  5. package/dist/ExecutionTree.js +1 -1
  6. package/dist/ExecutionTree.js.map +1 -1
  7. package/dist/affected/affected.d.ts +45 -0
  8. package/dist/affected/affected.d.ts.map +1 -0
  9. package/dist/affected/affected.js +160 -0
  10. package/dist/affected/affected.js.map +1 -0
  11. package/dist/agent-toolbelt.d.ts +15 -0
  12. package/dist/agent-toolbelt.d.ts.map +1 -0
  13. package/dist/agent-toolbelt.js +28 -0
  14. package/dist/agent-toolbelt.js.map +1 -0
  15. package/dist/api-client.d.ts +12 -0
  16. package/dist/api-client.d.ts.map +1 -0
  17. package/dist/api-client.js +21 -0
  18. package/dist/api-client.js.map +1 -0
  19. package/dist/app-build/bundle.d.ts +15 -0
  20. package/dist/app-build/bundle.d.ts.map +1 -0
  21. package/dist/app-build/bundle.js +45 -0
  22. package/dist/app-build/bundle.js.map +1 -0
  23. package/dist/app-build/watch.d.ts +13 -0
  24. package/dist/app-build/watch.d.ts.map +1 -0
  25. package/dist/app-build/watch.js +25 -0
  26. package/dist/app-build/watch.js.map +1 -0
  27. package/dist/app-debug/app-target.d.ts +14 -0
  28. package/dist/app-debug/app-target.d.ts.map +1 -0
  29. package/dist/app-debug/app-target.js +120 -0
  30. package/dist/app-debug/app-target.js.map +1 -0
  31. package/dist/app-debug/harness.d.ts +29 -0
  32. package/dist/app-debug/harness.d.ts.map +1 -0
  33. package/dist/app-debug/harness.js +116 -0
  34. package/dist/app-debug/harness.js.map +1 -0
  35. package/dist/app-debug/index.d.ts +12 -0
  36. package/dist/app-debug/index.d.ts.map +1 -0
  37. package/dist/app-debug/index.js +9 -0
  38. package/dist/app-debug/index.js.map +1 -0
  39. package/dist/app.d.ts +38 -48
  40. package/dist/app.d.ts.map +1 -1
  41. package/dist/app.js +980 -677
  42. package/dist/app.js.map +1 -1
  43. package/dist/bash-tool.d.ts +13 -0
  44. package/dist/bash-tool.d.ts.map +1 -0
  45. package/dist/bash-tool.js +85 -0
  46. package/dist/bash-tool.js.map +1 -0
  47. package/dist/chat-codeact.d.ts +93 -0
  48. package/dist/chat-codeact.d.ts.map +1 -0
  49. package/dist/chat-codeact.js +179 -0
  50. package/dist/chat-codeact.js.map +1 -0
  51. package/dist/chat-context.d.ts +18 -0
  52. package/dist/chat-context.d.ts.map +1 -0
  53. package/dist/chat-context.js +32 -0
  54. package/dist/chat-context.js.map +1 -0
  55. package/dist/chat-media.d.ts +3 -0
  56. package/dist/chat-media.d.ts.map +1 -0
  57. package/dist/chat-media.js +46 -0
  58. package/dist/chat-media.js.map +1 -0
  59. package/dist/chat-prompts.d.ts +20 -0
  60. package/dist/chat-prompts.d.ts.map +1 -0
  61. package/dist/chat-prompts.js +42 -0
  62. package/dist/chat-prompts.js.map +1 -0
  63. package/dist/chat-sessions.d.ts +25 -0
  64. package/dist/chat-sessions.d.ts.map +1 -0
  65. package/dist/chat-sessions.js +153 -0
  66. package/dist/chat-sessions.js.map +1 -0
  67. package/dist/command-errors.d.ts +10 -0
  68. package/dist/command-errors.d.ts.map +1 -0
  69. package/dist/command-errors.js +15 -0
  70. package/dist/command-errors.js.map +1 -0
  71. package/dist/commands/__tests__/jtbd.test.d.ts +2 -0
  72. package/dist/commands/__tests__/jtbd.test.d.ts.map +1 -0
  73. package/dist/commands/__tests__/jtbd.test.js +120 -0
  74. package/dist/commands/__tests__/jtbd.test.js.map +1 -0
  75. package/dist/commands/__tests__/timeline-render-audio.test.d.ts +2 -0
  76. package/dist/commands/__tests__/timeline-render-audio.test.d.ts.map +1 -0
  77. package/dist/commands/__tests__/timeline-render-audio.test.js +53 -0
  78. package/dist/commands/__tests__/timeline-render-audio.test.js.map +1 -0
  79. package/dist/commands/__tests__/timeline-render-completeness.test.d.ts +2 -0
  80. package/dist/commands/__tests__/timeline-render-completeness.test.d.ts.map +1 -0
  81. package/dist/commands/__tests__/timeline-render-completeness.test.js +117 -0
  82. package/dist/commands/__tests__/timeline-render-completeness.test.js.map +1 -0
  83. package/dist/commands/__tests__/timeline-render.test.d.ts +2 -0
  84. package/dist/commands/__tests__/timeline-render.test.d.ts.map +1 -0
  85. package/dist/commands/__tests__/timeline-render.test.js +115 -0
  86. package/dist/commands/__tests__/timeline-render.test.js.map +1 -0
  87. package/dist/commands/__tests__/timeline-score.test.d.ts +2 -0
  88. package/dist/commands/__tests__/timeline-score.test.d.ts.map +1 -0
  89. package/dist/commands/__tests__/timeline-score.test.js +100 -0
  90. package/dist/commands/__tests__/timeline-score.test.js.map +1 -0
  91. package/dist/commands/affected.d.ts +9 -0
  92. package/dist/commands/affected.d.ts.map +1 -0
  93. package/dist/commands/affected.js +122 -0
  94. package/dist/commands/affected.js.map +1 -0
  95. package/dist/commands/agent.d.ts +26 -4
  96. package/dist/commands/agent.d.ts.map +1 -1
  97. package/dist/commands/agent.js +328 -306
  98. package/dist/commands/agent.js.map +1 -1
  99. package/dist/commands/app.d.ts +3 -0
  100. package/dist/commands/app.d.ts.map +1 -0
  101. package/dist/commands/app.js +405 -0
  102. package/dist/commands/app.js.map +1 -0
  103. package/dist/commands/apps.d.ts +15 -0
  104. package/dist/commands/apps.d.ts.map +1 -0
  105. package/dist/commands/apps.js +180 -0
  106. package/dist/commands/apps.js.map +1 -0
  107. package/dist/commands/auth.d.ts +12 -0
  108. package/dist/commands/auth.d.ts.map +1 -0
  109. package/dist/commands/auth.js +154 -0
  110. package/dist/commands/auth.js.map +1 -0
  111. package/dist/commands/collections.d.ts +10 -0
  112. package/dist/commands/collections.d.ts.map +1 -0
  113. package/dist/commands/collections.js +257 -0
  114. package/dist/commands/collections.js.map +1 -0
  115. package/dist/commands/costs.d.ts +15 -0
  116. package/dist/commands/costs.d.ts.map +1 -0
  117. package/dist/commands/costs.js +201 -0
  118. package/dist/commands/costs.js.map +1 -0
  119. package/dist/commands/db.d.ts +3 -0
  120. package/dist/commands/db.d.ts.map +1 -0
  121. package/dist/commands/db.js +176 -0
  122. package/dist/commands/db.js.map +1 -0
  123. package/dist/commands/debug-summary-output.d.ts +22 -0
  124. package/dist/commands/debug-summary-output.d.ts.map +1 -0
  125. package/dist/commands/debug-summary-output.js +28 -0
  126. package/dist/commands/debug-summary-output.js.map +1 -0
  127. package/dist/commands/debug.d.ts +13 -0
  128. package/dist/commands/debug.d.ts.map +1 -0
  129. package/dist/commands/debug.js +138 -0
  130. package/dist/commands/debug.js.map +1 -0
  131. package/dist/commands/deploy-helpers.d.ts +49 -18
  132. package/dist/commands/deploy-helpers.d.ts.map +1 -1
  133. package/dist/commands/deploy-helpers.js +10 -276
  134. package/dist/commands/deploy-helpers.js.map +1 -1
  135. package/dist/commands/deploy.d.ts +0 -1
  136. package/dist/commands/deploy.d.ts.map +1 -1
  137. package/dist/commands/deploy.js +21 -217
  138. package/dist/commands/deploy.js.map +1 -1
  139. package/dist/commands/errors.d.ts +11 -0
  140. package/dist/commands/errors.d.ts.map +1 -0
  141. package/dist/commands/errors.js +177 -0
  142. package/dist/commands/errors.js.map +1 -0
  143. package/dist/commands/eval.d.ts +152 -0
  144. package/dist/commands/eval.d.ts.map +1 -0
  145. package/dist/commands/eval.js +690 -0
  146. package/dist/commands/eval.js.map +1 -0
  147. package/dist/commands/extension.d.ts +12 -0
  148. package/dist/commands/extension.d.ts.map +1 -0
  149. package/dist/commands/extension.js +30 -0
  150. package/dist/commands/extension.js.map +1 -0
  151. package/dist/commands/game-benchmark.d.ts +34 -0
  152. package/dist/commands/game-benchmark.d.ts.map +1 -0
  153. package/dist/commands/game-benchmark.js +95 -0
  154. package/dist/commands/game-benchmark.js.map +1 -0
  155. package/dist/commands/game-smoke.d.ts +3 -0
  156. package/dist/commands/game-smoke.d.ts.map +1 -0
  157. package/dist/commands/game-smoke.js +23 -0
  158. package/dist/commands/game-smoke.js.map +1 -0
  159. package/dist/commands/game.d.ts +4 -0
  160. package/dist/commands/game.d.ts.map +1 -0
  161. package/dist/commands/game.js +624 -0
  162. package/dist/commands/game.js.map +1 -0
  163. package/dist/commands/generate.d.ts +17 -0
  164. package/dist/commands/generate.d.ts.map +1 -0
  165. package/dist/commands/generate.js +324 -0
  166. package/dist/commands/generate.js.map +1 -0
  167. package/dist/commands/generations.d.ts +17 -0
  168. package/dist/commands/generations.d.ts.map +1 -0
  169. package/dist/commands/generations.js +408 -0
  170. package/dist/commands/generations.js.map +1 -0
  171. package/dist/commands/harness.d.ts +69 -0
  172. package/dist/commands/harness.d.ts.map +1 -0
  173. package/dist/commands/harness.js +575 -0
  174. package/dist/commands/harness.js.map +1 -0
  175. package/dist/commands/js-script-validation-output.d.ts +7 -0
  176. package/dist/commands/js-script-validation-output.d.ts.map +1 -0
  177. package/dist/commands/js-script-validation-output.js +5 -0
  178. package/dist/commands/js-script-validation-output.js.map +1 -0
  179. package/dist/commands/js-script-versions.d.ts +53 -0
  180. package/dist/commands/js-script-versions.d.ts.map +1 -0
  181. package/dist/commands/js-script-versions.js +89 -0
  182. package/dist/commands/js-script-versions.js.map +1 -0
  183. package/dist/commands/js-script.d.ts +29 -0
  184. package/dist/commands/js-script.d.ts.map +1 -0
  185. package/dist/commands/js-script.js +211 -0
  186. package/dist/commands/js-script.js.map +1 -0
  187. package/dist/commands/jtbd.d.ts +38 -0
  188. package/dist/commands/jtbd.d.ts.map +1 -0
  189. package/dist/commands/jtbd.js +261 -0
  190. package/dist/commands/jtbd.js.map +1 -0
  191. package/dist/commands/local-db.d.ts +16 -0
  192. package/dist/commands/local-db.d.ts.map +1 -0
  193. package/dist/commands/local-db.js +33 -0
  194. package/dist/commands/local-db.js.map +1 -0
  195. package/dist/commands/mcp.d.ts +21 -0
  196. package/dist/commands/mcp.d.ts.map +1 -0
  197. package/dist/commands/mcp.js +164 -0
  198. package/dist/commands/mcp.js.map +1 -0
  199. package/dist/commands/migrate-code-inputs.d.ts +24 -0
  200. package/dist/commands/migrate-code-inputs.d.ts.map +1 -0
  201. package/dist/commands/migrate-code-inputs.js +120 -0
  202. package/dist/commands/migrate-code-inputs.js.map +1 -0
  203. package/dist/commands/models-hf.js +4 -4
  204. package/dist/commands/models-hf.js.map +1 -1
  205. package/dist/commands/models-recommended.d.ts.map +1 -1
  206. package/dist/commands/models-recommended.js +16 -24
  207. package/dist/commands/models-recommended.js.map +1 -1
  208. package/dist/commands/node.d.ts +10 -0
  209. package/dist/commands/node.d.ts.map +1 -0
  210. package/dist/commands/node.js +72 -0
  211. package/dist/commands/node.js.map +1 -0
  212. package/dist/commands/output.d.ts +24 -0
  213. package/dist/commands/output.d.ts.map +1 -0
  214. package/dist/commands/output.js +132 -0
  215. package/dist/commands/output.js.map +1 -0
  216. package/dist/commands/package-helpers.d.ts +1 -7
  217. package/dist/commands/package-helpers.d.ts.map +1 -1
  218. package/dist/commands/package-helpers.js +3 -26
  219. package/dist/commands/package-helpers.js.map +1 -1
  220. package/dist/commands/package.d.ts.map +1 -1
  221. package/dist/commands/package.js +14 -14
  222. package/dist/commands/package.js.map +1 -1
  223. package/dist/commands/packs.d.ts +13 -0
  224. package/dist/commands/packs.d.ts.map +1 -0
  225. package/dist/commands/packs.js +60 -0
  226. package/dist/commands/packs.js.map +1 -0
  227. package/dist/commands/reliability.d.ts +14 -0
  228. package/dist/commands/reliability.d.ts.map +1 -0
  229. package/dist/commands/reliability.js +80 -0
  230. package/dist/commands/reliability.js.map +1 -0
  231. package/dist/commands/resource-read.d.ts +28 -0
  232. package/dist/commands/resource-read.d.ts.map +1 -0
  233. package/dist/commands/resource-read.js +316 -0
  234. package/dist/commands/resource-read.js.map +1 -0
  235. package/dist/commands/runs.d.ts +7 -0
  236. package/dist/commands/runs.d.ts.map +1 -0
  237. package/dist/commands/runs.js +302 -0
  238. package/dist/commands/runs.js.map +1 -0
  239. package/dist/commands/sketch-validation-output.d.ts +7 -0
  240. package/dist/commands/sketch-validation-output.d.ts.map +1 -0
  241. package/dist/commands/sketch-validation-output.js +5 -0
  242. package/dist/commands/sketch-validation-output.js.map +1 -0
  243. package/dist/commands/sketch-versions.d.ts +66 -0
  244. package/dist/commands/sketch-versions.d.ts.map +1 -0
  245. package/dist/commands/sketch-versions.js +108 -0
  246. package/dist/commands/sketch-versions.js.map +1 -0
  247. package/dist/commands/sketch.d.ts +21 -0
  248. package/dist/commands/sketch.d.ts.map +1 -0
  249. package/dist/commands/sketch.js +101 -0
  250. package/dist/commands/sketch.js.map +1 -0
  251. package/dist/commands/storage.d.ts +24 -0
  252. package/dist/commands/storage.d.ts.map +1 -0
  253. package/dist/commands/storage.js +112 -0
  254. package/dist/commands/storage.js.map +1 -0
  255. package/dist/commands/telegram.d.ts +11 -0
  256. package/dist/commands/telegram.d.ts.map +1 -0
  257. package/dist/commands/telegram.js +66 -0
  258. package/dist/commands/telegram.js.map +1 -0
  259. package/dist/commands/timeline-render.d.ts +85 -0
  260. package/dist/commands/timeline-render.d.ts.map +1 -0
  261. package/dist/commands/timeline-render.js +474 -0
  262. package/dist/commands/timeline-render.js.map +1 -0
  263. package/dist/commands/timeline-score.d.ts +16 -0
  264. package/dist/commands/timeline-score.d.ts.map +1 -0
  265. package/dist/commands/timeline-score.js +89 -0
  266. package/dist/commands/timeline-score.js.map +1 -0
  267. package/dist/commands/timeline-validation-output.d.ts +7 -0
  268. package/dist/commands/timeline-validation-output.d.ts.map +1 -0
  269. package/dist/commands/timeline-validation-output.js +9 -0
  270. package/dist/commands/timeline-validation-output.js.map +1 -0
  271. package/dist/commands/timeline-versions.d.ts +72 -0
  272. package/dist/commands/timeline-versions.d.ts.map +1 -0
  273. package/dist/commands/timeline-versions.js +108 -0
  274. package/dist/commands/timeline-versions.js.map +1 -0
  275. package/dist/commands/timeline.d.ts +22 -0
  276. package/dist/commands/timeline.d.ts.map +1 -0
  277. package/dist/commands/timeline.js +105 -0
  278. package/dist/commands/timeline.js.map +1 -0
  279. package/dist/commands/validate.d.ts +22 -0
  280. package/dist/commands/validate.d.ts.map +1 -0
  281. package/dist/commands/validate.js +127 -0
  282. package/dist/commands/validate.js.map +1 -0
  283. package/dist/commands/validation-output.d.ts +25 -0
  284. package/dist/commands/validation-output.d.ts.map +1 -0
  285. package/dist/commands/validation-output.js +29 -0
  286. package/dist/commands/validation-output.js.map +1 -0
  287. package/dist/commands/version-commands.d.ts +94 -0
  288. package/dist/commands/version-commands.d.ts.map +1 -0
  289. package/dist/commands/version-commands.js +227 -0
  290. package/dist/commands/version-commands.js.map +1 -0
  291. package/dist/commands/worker-models.d.ts +13 -0
  292. package/dist/commands/worker-models.d.ts.map +1 -0
  293. package/dist/commands/worker-models.js +207 -0
  294. package/dist/commands/worker-models.js.map +1 -0
  295. package/dist/commands/worker.d.ts +23 -0
  296. package/dist/commands/worker.d.ts.map +1 -0
  297. package/dist/commands/worker.js +374 -0
  298. package/dist/commands/worker.js.map +1 -0
  299. package/dist/debug/browser-runner.d.ts +21 -0
  300. package/dist/debug/browser-runner.d.ts.map +1 -0
  301. package/dist/debug/browser-runner.js +196 -0
  302. package/dist/debug/browser-runner.js.map +1 -0
  303. package/dist/debug/collector.d.ts +9 -0
  304. package/dist/debug/collector.d.ts.map +1 -0
  305. package/dist/debug/collector.js +9 -0
  306. package/dist/debug/collector.js.map +1 -0
  307. package/dist/debug/diff.d.ts +48 -0
  308. package/dist/debug/diff.d.ts.map +1 -0
  309. package/dist/debug/diff.js +68 -0
  310. package/dist/debug/diff.js.map +1 -0
  311. package/dist/debug/harness.d.ts +11 -0
  312. package/dist/debug/harness.d.ts.map +1 -0
  313. package/dist/debug/harness.js +103 -0
  314. package/dist/debug/harness.js.map +1 -0
  315. package/dist/debug/index.d.ts +17 -0
  316. package/dist/debug/index.d.ts.map +1 -0
  317. package/dist/debug/index.js +16 -0
  318. package/dist/debug/index.js.map +1 -0
  319. package/dist/debug/markdown.d.ts +3 -0
  320. package/dist/debug/markdown.d.ts.map +1 -0
  321. package/dist/debug/markdown.js +127 -0
  322. package/dist/debug/markdown.js.map +1 -0
  323. package/dist/debug/server-runner.d.ts +24 -0
  324. package/dist/debug/server-runner.d.ts.map +1 -0
  325. package/dist/debug/server-runner.js +197 -0
  326. package/dist/debug/server-runner.js.map +1 -0
  327. package/dist/debug/target.d.ts +34 -0
  328. package/dist/debug/target.d.ts.map +1 -0
  329. package/dist/debug/target.js +104 -0
  330. package/dist/debug/target.js.map +1 -0
  331. package/dist/debug/trace.d.ts +30 -0
  332. package/dist/debug/trace.d.ts.map +1 -0
  333. package/dist/debug/trace.js +87 -0
  334. package/dist/debug/trace.js.map +1 -0
  335. package/dist/debug/types.d.ts +82 -0
  336. package/dist/debug/types.d.ts.map +1 -0
  337. package/dist/debug/types.js +13 -0
  338. package/dist/debug/types.js.map +1 -0
  339. package/dist/debug/verdict.d.ts +3 -0
  340. package/dist/debug/verdict.d.ts.map +1 -0
  341. package/dist/debug/verdict.js +78 -0
  342. package/dist/debug/verdict.js.map +1 -0
  343. package/dist/debug/watch.d.ts +23 -0
  344. package/dist/debug/watch.d.ts.map +1 -0
  345. package/dist/debug/watch.js +68 -0
  346. package/dist/debug/watch.js.map +1 -0
  347. package/dist/diagnose.d.ts +139 -0
  348. package/dist/diagnose.d.ts.map +1 -0
  349. package/dist/diagnose.js +418 -0
  350. package/dist/diagnose.js.map +1 -0
  351. package/dist/evals/graph-runner.d.ts +8 -0
  352. package/dist/evals/graph-runner.d.ts.map +1 -0
  353. package/dist/evals/graph-runner.js +136 -0
  354. package/dist/evals/graph-runner.js.map +1 -0
  355. package/dist/harness/capability-coverage.d.ts +161 -0
  356. package/dist/harness/capability-coverage.d.ts.map +1 -0
  357. package/dist/harness/capability-coverage.js +266 -0
  358. package/dist/harness/capability-coverage.js.map +1 -0
  359. package/dist/harness/capability-table.d.ts +17 -0
  360. package/dist/harness/capability-table.d.ts.map +1 -0
  361. package/dist/harness/capability-table.js +3844 -0
  362. package/dist/harness/capability-table.js.map +1 -0
  363. package/dist/harness/changed-files.d.ts +20 -0
  364. package/dist/harness/changed-files.d.ts.map +1 -0
  365. package/dist/harness/changed-files.js +90 -0
  366. package/dist/harness/changed-files.js.map +1 -0
  367. package/dist/harness/declared-capabilities.d.ts +12 -0
  368. package/dist/harness/declared-capabilities.d.ts.map +1 -0
  369. package/dist/harness/declared-capabilities.js +21 -0
  370. package/dist/harness/declared-capabilities.js.map +1 -0
  371. package/dist/harness/registry.d.ts +190 -0
  372. package/dist/harness/registry.d.ts.map +1 -0
  373. package/dist/harness/registry.js +2034 -0
  374. package/dist/harness/registry.js.map +1 -0
  375. package/dist/index.js +122 -131
  376. package/dist/index.js.map +1 -1
  377. package/dist/interaction-script.d.ts +40 -0
  378. package/dist/interaction-script.d.ts.map +1 -0
  379. package/dist/interaction-script.js +96 -0
  380. package/dist/interaction-script.js.map +1 -0
  381. package/dist/js-script-debug/harness.d.ts +124 -0
  382. package/dist/js-script-debug/harness.d.ts.map +1 -0
  383. package/dist/js-script-debug/harness.js +230 -0
  384. package/dist/js-script-debug/harness.js.map +1 -0
  385. package/dist/js-script-debug/index.d.ts +9 -0
  386. package/dist/js-script-debug/index.d.ts.map +1 -0
  387. package/dist/js-script-debug/index.js +9 -0
  388. package/dist/js-script-debug/index.js.map +1 -0
  389. package/dist/js-script-debug/interactions.d.ts +19 -0
  390. package/dist/js-script-debug/interactions.d.ts.map +1 -0
  391. package/dist/js-script-debug/interactions.js +17 -0
  392. package/dist/js-script-debug/interactions.js.map +1 -0
  393. package/dist/js-script-debug/target.d.ts +20 -0
  394. package/dist/js-script-debug/target.d.ts.map +1 -0
  395. package/dist/js-script-debug/target.js +78 -0
  396. package/dist/js-script-debug/target.js.map +1 -0
  397. package/dist/local-model-interfaces.d.ts +20 -0
  398. package/dist/local-model-interfaces.d.ts.map +1 -0
  399. package/dist/local-model-interfaces.js +41 -0
  400. package/dist/local-model-interfaces.js.map +1 -0
  401. package/dist/local-secrets.d.ts +3 -0
  402. package/dist/local-secrets.d.ts.map +1 -0
  403. package/dist/local-secrets.js +16 -0
  404. package/dist/local-secrets.js.map +1 -0
  405. package/dist/markdown.d.ts.map +1 -1
  406. package/dist/markdown.js +7 -2
  407. package/dist/markdown.js.map +1 -1
  408. package/dist/node/run-node.d.ts +28 -0
  409. package/dist/node/run-node.d.ts.map +1 -0
  410. package/dist/node/run-node.js +76 -0
  411. package/dist/node/run-node.js.map +1 -0
  412. package/dist/node-registry.d.ts +27 -0
  413. package/dist/node-registry.d.ts.map +1 -0
  414. package/dist/node-registry.js +33 -0
  415. package/dist/node-registry.js.map +1 -0
  416. package/dist/nodetool-main.d.ts +15 -0
  417. package/dist/nodetool-main.d.ts.map +1 -0
  418. package/dist/nodetool-main.js +1368 -0
  419. package/dist/nodetool-main.js.map +1 -0
  420. package/dist/nodetool.d.ts +0 -13
  421. package/dist/nodetool.d.ts.map +1 -1
  422. package/dist/nodetool.js +17 -1147
  423. package/dist/nodetool.js.map +1 -1
  424. package/dist/numeric-options.d.ts +22 -0
  425. package/dist/numeric-options.d.ts.map +1 -0
  426. package/dist/numeric-options.js +45 -0
  427. package/dist/numeric-options.js.map +1 -0
  428. package/dist/permission-gate.d.ts +55 -0
  429. package/dist/permission-gate.d.ts.map +1 -0
  430. package/dist/permission-gate.js +118 -0
  431. package/dist/permission-gate.js.map +1 -0
  432. package/dist/predicates.d.ts +6 -0
  433. package/dist/predicates.d.ts.map +1 -0
  434. package/dist/predicates.js +6 -0
  435. package/dist/predicates.js.map +1 -0
  436. package/dist/providers.d.ts +73 -10
  437. package/dist/providers.d.ts.map +1 -1
  438. package/dist/providers.js +339 -97
  439. package/dist/providers.js.map +1 -1
  440. package/dist/readline-input.d.ts +13 -19
  441. package/dist/readline-input.d.ts.map +1 -1
  442. package/dist/readline-input.js +201 -190
  443. package/dist/readline-input.js.map +1 -1
  444. package/dist/run-budget.d.ts +40 -0
  445. package/dist/run-budget.d.ts.map +1 -0
  446. package/dist/run-budget.js +119 -0
  447. package/dist/run-budget.js.map +1 -0
  448. package/dist/run-dsl-supervised.d.ts +11 -0
  449. package/dist/run-dsl-supervised.d.ts.map +1 -0
  450. package/dist/run-dsl-supervised.js +82 -0
  451. package/dist/run-dsl-supervised.js.map +1 -0
  452. package/dist/run-dsl.d.ts +29 -0
  453. package/dist/run-dsl.d.ts.map +1 -1
  454. package/dist/run-dsl.js +44 -10
  455. package/dist/run-dsl.js.map +1 -1
  456. package/dist/run-json.d.ts +24 -0
  457. package/dist/run-json.d.ts.map +1 -0
  458. package/dist/run-json.js +132 -0
  459. package/dist/run-json.js.map +1 -0
  460. package/dist/sandbox-catalog.d.ts +24 -0
  461. package/dist/sandbox-catalog.d.ts.map +1 -0
  462. package/dist/sandbox-catalog.js +78 -0
  463. package/dist/sandbox-catalog.js.map +1 -0
  464. package/dist/settings.d.ts +11 -10
  465. package/dist/settings.d.ts.map +1 -1
  466. package/dist/settings.js +71 -13
  467. package/dist/settings.js.map +1 -1
  468. package/dist/sketch-debug/harness.d.ts +87 -0
  469. package/dist/sketch-debug/harness.d.ts.map +1 -0
  470. package/dist/sketch-debug/harness.js +145 -0
  471. package/dist/sketch-debug/harness.js.map +1 -0
  472. package/dist/sketch-debug/index.d.ts +9 -0
  473. package/dist/sketch-debug/index.d.ts.map +1 -0
  474. package/dist/sketch-debug/index.js +9 -0
  475. package/dist/sketch-debug/index.js.map +1 -0
  476. package/dist/sketch-debug/interactions.d.ts +19 -0
  477. package/dist/sketch-debug/interactions.d.ts.map +1 -0
  478. package/dist/sketch-debug/interactions.js +17 -0
  479. package/dist/sketch-debug/interactions.js.map +1 -0
  480. package/dist/sketch-debug/target.d.ts +48 -0
  481. package/dist/sketch-debug/target.d.ts.map +1 -0
  482. package/dist/sketch-debug/target.js +138 -0
  483. package/dist/sketch-debug/target.js.map +1 -0
  484. package/dist/stdin.d.ts +18 -19
  485. package/dist/stdin.d.ts.map +1 -1
  486. package/dist/stdin.js +160 -157
  487. package/dist/stdin.js.map +1 -1
  488. package/dist/supervisor.d.ts +97 -0
  489. package/dist/supervisor.d.ts.map +1 -0
  490. package/dist/supervisor.js +194 -0
  491. package/dist/supervisor.js.map +1 -0
  492. package/dist/terminal-clipboard.d.ts +3 -0
  493. package/dist/terminal-clipboard.d.ts.map +1 -0
  494. package/dist/terminal-clipboard.js +24 -0
  495. package/dist/terminal-clipboard.js.map +1 -0
  496. package/dist/terminal-mouse.d.ts +24 -0
  497. package/dist/terminal-mouse.d.ts.map +1 -0
  498. package/dist/terminal-mouse.js +84 -0
  499. package/dist/terminal-mouse.js.map +1 -0
  500. package/dist/terminal-screen.d.ts +41 -0
  501. package/dist/terminal-screen.d.ts.map +1 -0
  502. package/dist/terminal-screen.js +228 -0
  503. package/dist/terminal-screen.js.map +1 -0
  504. package/dist/timeline-debug/harness.d.ts +79 -0
  505. package/dist/timeline-debug/harness.d.ts.map +1 -0
  506. package/dist/timeline-debug/harness.js +122 -0
  507. package/dist/timeline-debug/harness.js.map +1 -0
  508. package/dist/timeline-debug/index.d.ts +9 -0
  509. package/dist/timeline-debug/index.d.ts.map +1 -0
  510. package/dist/timeline-debug/index.js +9 -0
  511. package/dist/timeline-debug/index.js.map +1 -0
  512. package/dist/timeline-debug/interactions.d.ts +19 -0
  513. package/dist/timeline-debug/interactions.d.ts.map +1 -0
  514. package/dist/timeline-debug/interactions.js +17 -0
  515. package/dist/timeline-debug/interactions.js.map +1 -0
  516. package/dist/timeline-debug/target.d.ts +34 -0
  517. package/dist/timeline-debug/target.d.ts.map +1 -0
  518. package/dist/timeline-debug/target.js +132 -0
  519. package/dist/timeline-debug/target.js.map +1 -0
  520. package/dist/tool-format.d.ts +54 -0
  521. package/dist/tool-format.d.ts.map +1 -0
  522. package/dist/tool-format.js +360 -0
  523. package/dist/tool-format.js.map +1 -0
  524. package/dist/useExecutionState.d.ts.map +1 -1
  525. package/dist/useExecutionState.js +8 -4
  526. package/dist/useExecutionState.js.map +1 -1
  527. package/dist/validate/index.d.ts +28 -0
  528. package/dist/validate/index.d.ts.map +1 -0
  529. package/dist/validate/index.js +51 -0
  530. package/dist/validate/index.js.map +1 -0
  531. package/dist/websocket-client.d.ts +78 -15
  532. package/dist/websocket-client.d.ts.map +1 -1
  533. package/dist/websocket-client.js +497 -171
  534. package/dist/websocket-client.js.map +1 -1
  535. 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAY5C,2EAA2E;AAC3E,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAClB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAA6B;IAE7B,MAAM,OAAO,GAAG,SAAS,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;KAC/C,CAAC,CAAC;IACH,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SAC/B,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAiED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAuC,EACvC,OAA2C,EAC3C,SAAkC;IAElC,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtD,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC1D,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,QAAQ;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,gBAAgB,CAAC,IAAI,CACnB,GAAG,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,MAAM,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAC1E,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,aAAa,CAAC,IAAI,CAChB,GAAG,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,QAAQ,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAC9E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxC,iBAAiB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EACpC,CAAC,CACF,CAAC;QACF,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG;YAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO;YACP,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YACtD,SAAS;YACT,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;SACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;QAClD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;QAC/C,QAAQ;QACR,KAAK;QACL,gBAAgB;QAChB,iBAAiB;QACjB,uBAAuB;QACvB,aAAa;QACb,gBAAgB;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACjC,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAEhC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;YAAE,MAAM;QACrC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,KAAK,KAAK,CAAC;gBAAE,UAAU,GAAG,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACpE,UAAU,GAAG,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,4DAA4D;AAC5D,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,oEAAoE;AACpE,SAAS,mBAAmB,CAC1B,KAAa,EACb,OAA4B;IAE5B,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;IAChE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC;AAoBD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,MAAmC;IAEnC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAyB,EACzB,UAAkB,EAClB,YAAY,GAAsB,EAAE;IAEpC,MAAM,IAAI,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAE/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,UAAU,GAAiC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,aAAa,GACjB,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa;YAAE,SAAS;QAC7B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IACE,iBAAiB,CAAC,MAAM,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAC;YACtD,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EACpC,CAAC;YACD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EACJ,GAAG,IAAI,2DAA2D;oBAClE,oEAAoE;oBACpE,4DAA4D;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QACL,eAAe;QACf,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -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"}