@nodetool-ai/cli 0.7.0-rc.22 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/README.md +79 -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 +50 -0
  8. package/dist/affected/affected.d.ts.map +1 -0
  9. package/dist/affected/affected.js +118 -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 +27 -0
  32. package/dist/app-debug/harness.d.ts.map +1 -0
  33. package/dist/app-debug/harness.js +93 -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 +979 -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 +85 -0
  48. package/dist/chat-codeact.d.ts.map +1 -0
  49. package/dist/chat-codeact.js +141 -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 +27 -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.test.d.ts +2 -0
  80. package/dist/commands/__tests__/timeline-render.test.d.ts.map +1 -0
  81. package/dist/commands/__tests__/timeline-render.test.js +115 -0
  82. package/dist/commands/__tests__/timeline-render.test.js.map +1 -0
  83. package/dist/commands/affected.d.ts +9 -0
  84. package/dist/commands/affected.d.ts.map +1 -0
  85. package/dist/commands/affected.js +122 -0
  86. package/dist/commands/affected.js.map +1 -0
  87. package/dist/commands/agent.d.ts +26 -4
  88. package/dist/commands/agent.d.ts.map +1 -1
  89. package/dist/commands/agent.js +327 -306
  90. package/dist/commands/agent.js.map +1 -1
  91. package/dist/commands/app.d.ts +3 -0
  92. package/dist/commands/app.d.ts.map +1 -0
  93. package/dist/commands/app.js +381 -0
  94. package/dist/commands/app.js.map +1 -0
  95. package/dist/commands/apps.d.ts +15 -0
  96. package/dist/commands/apps.d.ts.map +1 -0
  97. package/dist/commands/apps.js +180 -0
  98. package/dist/commands/apps.js.map +1 -0
  99. package/dist/commands/auth.d.ts +12 -0
  100. package/dist/commands/auth.d.ts.map +1 -0
  101. package/dist/commands/auth.js +154 -0
  102. package/dist/commands/auth.js.map +1 -0
  103. package/dist/commands/collections.d.ts +10 -0
  104. package/dist/commands/collections.d.ts.map +1 -0
  105. package/dist/commands/collections.js +257 -0
  106. package/dist/commands/collections.js.map +1 -0
  107. package/dist/commands/costs.d.ts +15 -0
  108. package/dist/commands/costs.d.ts.map +1 -0
  109. package/dist/commands/costs.js +201 -0
  110. package/dist/commands/costs.js.map +1 -0
  111. package/dist/commands/db.d.ts +3 -0
  112. package/dist/commands/db.d.ts.map +1 -0
  113. package/dist/commands/db.js +176 -0
  114. package/dist/commands/db.js.map +1 -0
  115. package/dist/commands/debug.d.ts +13 -0
  116. package/dist/commands/debug.d.ts.map +1 -0
  117. package/dist/commands/debug.js +138 -0
  118. package/dist/commands/debug.js.map +1 -0
  119. package/dist/commands/deploy-helpers.d.ts +49 -18
  120. package/dist/commands/deploy-helpers.d.ts.map +1 -1
  121. package/dist/commands/deploy-helpers.js +10 -276
  122. package/dist/commands/deploy-helpers.js.map +1 -1
  123. package/dist/commands/deploy.d.ts +0 -1
  124. package/dist/commands/deploy.d.ts.map +1 -1
  125. package/dist/commands/deploy.js +21 -217
  126. package/dist/commands/deploy.js.map +1 -1
  127. package/dist/commands/eval.d.ts +152 -0
  128. package/dist/commands/eval.d.ts.map +1 -0
  129. package/dist/commands/eval.js +688 -0
  130. package/dist/commands/eval.js.map +1 -0
  131. package/dist/commands/game.d.ts +4 -0
  132. package/dist/commands/game.d.ts.map +1 -0
  133. package/dist/commands/game.js +395 -0
  134. package/dist/commands/game.js.map +1 -0
  135. package/dist/commands/generate.d.ts +17 -0
  136. package/dist/commands/generate.d.ts.map +1 -0
  137. package/dist/commands/generate.js +324 -0
  138. package/dist/commands/generate.js.map +1 -0
  139. package/dist/commands/generations.d.ts +17 -0
  140. package/dist/commands/generations.d.ts.map +1 -0
  141. package/dist/commands/generations.js +408 -0
  142. package/dist/commands/generations.js.map +1 -0
  143. package/dist/commands/harness.d.ts +19 -0
  144. package/dist/commands/harness.d.ts.map +1 -0
  145. package/dist/commands/harness.js +361 -0
  146. package/dist/commands/harness.js.map +1 -0
  147. package/dist/commands/js-script-validation-output.d.ts +7 -0
  148. package/dist/commands/js-script-validation-output.d.ts.map +1 -0
  149. package/dist/commands/js-script-validation-output.js +5 -0
  150. package/dist/commands/js-script-validation-output.js.map +1 -0
  151. package/dist/commands/js-script-versions.d.ts +53 -0
  152. package/dist/commands/js-script-versions.d.ts.map +1 -0
  153. package/dist/commands/js-script-versions.js +89 -0
  154. package/dist/commands/js-script-versions.js.map +1 -0
  155. package/dist/commands/js-script.d.ts +29 -0
  156. package/dist/commands/js-script.d.ts.map +1 -0
  157. package/dist/commands/js-script.js +227 -0
  158. package/dist/commands/js-script.js.map +1 -0
  159. package/dist/commands/jtbd.d.ts +38 -0
  160. package/dist/commands/jtbd.d.ts.map +1 -0
  161. package/dist/commands/jtbd.js +261 -0
  162. package/dist/commands/jtbd.js.map +1 -0
  163. package/dist/commands/local-db.d.ts +16 -0
  164. package/dist/commands/local-db.d.ts.map +1 -0
  165. package/dist/commands/local-db.js +33 -0
  166. package/dist/commands/local-db.js.map +1 -0
  167. package/dist/commands/migrate-code-inputs.d.ts +24 -0
  168. package/dist/commands/migrate-code-inputs.d.ts.map +1 -0
  169. package/dist/commands/migrate-code-inputs.js +120 -0
  170. package/dist/commands/migrate-code-inputs.js.map +1 -0
  171. package/dist/commands/models-hf.js +4 -4
  172. package/dist/commands/models-hf.js.map +1 -1
  173. package/dist/commands/models-recommended.d.ts.map +1 -1
  174. package/dist/commands/models-recommended.js +16 -24
  175. package/dist/commands/models-recommended.js.map +1 -1
  176. package/dist/commands/node.d.ts +10 -0
  177. package/dist/commands/node.d.ts.map +1 -0
  178. package/dist/commands/node.js +72 -0
  179. package/dist/commands/node.js.map +1 -0
  180. package/dist/commands/output.d.ts +24 -0
  181. package/dist/commands/output.d.ts.map +1 -0
  182. package/dist/commands/output.js +132 -0
  183. package/dist/commands/output.js.map +1 -0
  184. package/dist/commands/package-helpers.d.ts +1 -7
  185. package/dist/commands/package-helpers.d.ts.map +1 -1
  186. package/dist/commands/package-helpers.js +3 -26
  187. package/dist/commands/package-helpers.js.map +1 -1
  188. package/dist/commands/package.js +2 -2
  189. package/dist/commands/package.js.map +1 -1
  190. package/dist/commands/packs.d.ts +13 -0
  191. package/dist/commands/packs.d.ts.map +1 -0
  192. package/dist/commands/packs.js +60 -0
  193. package/dist/commands/packs.js.map +1 -0
  194. package/dist/commands/reliability.d.ts +14 -0
  195. package/dist/commands/reliability.d.ts.map +1 -0
  196. package/dist/commands/reliability.js +80 -0
  197. package/dist/commands/reliability.js.map +1 -0
  198. package/dist/commands/resource-read.d.ts +28 -0
  199. package/dist/commands/resource-read.d.ts.map +1 -0
  200. package/dist/commands/resource-read.js +316 -0
  201. package/dist/commands/resource-read.js.map +1 -0
  202. package/dist/commands/sketch-validation-output.d.ts +7 -0
  203. package/dist/commands/sketch-validation-output.d.ts.map +1 -0
  204. package/dist/commands/sketch-validation-output.js +5 -0
  205. package/dist/commands/sketch-validation-output.js.map +1 -0
  206. package/dist/commands/sketch-versions.d.ts +66 -0
  207. package/dist/commands/sketch-versions.d.ts.map +1 -0
  208. package/dist/commands/sketch-versions.js +108 -0
  209. package/dist/commands/sketch-versions.js.map +1 -0
  210. package/dist/commands/sketch.d.ts +21 -0
  211. package/dist/commands/sketch.d.ts.map +1 -0
  212. package/dist/commands/sketch.js +117 -0
  213. package/dist/commands/sketch.js.map +1 -0
  214. package/dist/commands/storage.d.ts +24 -0
  215. package/dist/commands/storage.d.ts.map +1 -0
  216. package/dist/commands/storage.js +112 -0
  217. package/dist/commands/storage.js.map +1 -0
  218. package/dist/commands/telegram.d.ts +11 -0
  219. package/dist/commands/telegram.d.ts.map +1 -0
  220. package/dist/commands/telegram.js +66 -0
  221. package/dist/commands/telegram.js.map +1 -0
  222. package/dist/commands/timeline-render.d.ts +80 -0
  223. package/dist/commands/timeline-render.d.ts.map +1 -0
  224. package/dist/commands/timeline-render.js +465 -0
  225. package/dist/commands/timeline-render.js.map +1 -0
  226. package/dist/commands/timeline-validation-output.d.ts +7 -0
  227. package/dist/commands/timeline-validation-output.d.ts.map +1 -0
  228. package/dist/commands/timeline-validation-output.js +9 -0
  229. package/dist/commands/timeline-validation-output.js.map +1 -0
  230. package/dist/commands/timeline-versions.d.ts +72 -0
  231. package/dist/commands/timeline-versions.d.ts.map +1 -0
  232. package/dist/commands/timeline-versions.js +108 -0
  233. package/dist/commands/timeline-versions.js.map +1 -0
  234. package/dist/commands/timeline.d.ts +22 -0
  235. package/dist/commands/timeline.d.ts.map +1 -0
  236. package/dist/commands/timeline.js +119 -0
  237. package/dist/commands/timeline.js.map +1 -0
  238. package/dist/commands/validate.d.ts +22 -0
  239. package/dist/commands/validate.d.ts.map +1 -0
  240. package/dist/commands/validate.js +127 -0
  241. package/dist/commands/validate.js.map +1 -0
  242. package/dist/commands/validation-output.d.ts +25 -0
  243. package/dist/commands/validation-output.d.ts.map +1 -0
  244. package/dist/commands/validation-output.js +29 -0
  245. package/dist/commands/validation-output.js.map +1 -0
  246. package/dist/commands/version-commands.d.ts +94 -0
  247. package/dist/commands/version-commands.d.ts.map +1 -0
  248. package/dist/commands/version-commands.js +227 -0
  249. package/dist/commands/version-commands.js.map +1 -0
  250. package/dist/commands/worker-models.d.ts +13 -0
  251. package/dist/commands/worker-models.d.ts.map +1 -0
  252. package/dist/commands/worker-models.js +207 -0
  253. package/dist/commands/worker-models.js.map +1 -0
  254. package/dist/commands/worker.d.ts +23 -0
  255. package/dist/commands/worker.d.ts.map +1 -0
  256. package/dist/commands/worker.js +374 -0
  257. package/dist/commands/worker.js.map +1 -0
  258. package/dist/debug/browser-runner.d.ts +21 -0
  259. package/dist/debug/browser-runner.d.ts.map +1 -0
  260. package/dist/debug/browser-runner.js +196 -0
  261. package/dist/debug/browser-runner.js.map +1 -0
  262. package/dist/debug/collector.d.ts +9 -0
  263. package/dist/debug/collector.d.ts.map +1 -0
  264. package/dist/debug/collector.js +9 -0
  265. package/dist/debug/collector.js.map +1 -0
  266. package/dist/debug/diff.d.ts +48 -0
  267. package/dist/debug/diff.d.ts.map +1 -0
  268. package/dist/debug/diff.js +68 -0
  269. package/dist/debug/diff.js.map +1 -0
  270. package/dist/debug/harness.d.ts +11 -0
  271. package/dist/debug/harness.d.ts.map +1 -0
  272. package/dist/debug/harness.js +103 -0
  273. package/dist/debug/harness.js.map +1 -0
  274. package/dist/debug/index.d.ts +17 -0
  275. package/dist/debug/index.d.ts.map +1 -0
  276. package/dist/debug/index.js +16 -0
  277. package/dist/debug/index.js.map +1 -0
  278. package/dist/debug/markdown.d.ts +3 -0
  279. package/dist/debug/markdown.d.ts.map +1 -0
  280. package/dist/debug/markdown.js +127 -0
  281. package/dist/debug/markdown.js.map +1 -0
  282. package/dist/debug/server-runner.d.ts +22 -0
  283. package/dist/debug/server-runner.d.ts.map +1 -0
  284. package/dist/debug/server-runner.js +164 -0
  285. package/dist/debug/server-runner.js.map +1 -0
  286. package/dist/debug/target.d.ts +34 -0
  287. package/dist/debug/target.d.ts.map +1 -0
  288. package/dist/debug/target.js +104 -0
  289. package/dist/debug/target.js.map +1 -0
  290. package/dist/debug/trace.d.ts +30 -0
  291. package/dist/debug/trace.d.ts.map +1 -0
  292. package/dist/debug/trace.js +87 -0
  293. package/dist/debug/trace.js.map +1 -0
  294. package/dist/debug/types.d.ts +82 -0
  295. package/dist/debug/types.d.ts.map +1 -0
  296. package/dist/debug/types.js +13 -0
  297. package/dist/debug/types.js.map +1 -0
  298. package/dist/debug/verdict.d.ts +3 -0
  299. package/dist/debug/verdict.d.ts.map +1 -0
  300. package/dist/debug/verdict.js +78 -0
  301. package/dist/debug/verdict.js.map +1 -0
  302. package/dist/debug/watch.d.ts +23 -0
  303. package/dist/debug/watch.d.ts.map +1 -0
  304. package/dist/debug/watch.js +68 -0
  305. package/dist/debug/watch.js.map +1 -0
  306. package/dist/diagnose.d.ts +139 -0
  307. package/dist/diagnose.d.ts.map +1 -0
  308. package/dist/diagnose.js +418 -0
  309. package/dist/diagnose.js.map +1 -0
  310. package/dist/evals/graph-runner.d.ts +8 -0
  311. package/dist/evals/graph-runner.d.ts.map +1 -0
  312. package/dist/evals/graph-runner.js +136 -0
  313. package/dist/evals/graph-runner.js.map +1 -0
  314. package/dist/harness/capability-coverage.d.ts +161 -0
  315. package/dist/harness/capability-coverage.d.ts.map +1 -0
  316. package/dist/harness/capability-coverage.js +266 -0
  317. package/dist/harness/capability-coverage.js.map +1 -0
  318. package/dist/harness/capability-table.d.ts +17 -0
  319. package/dist/harness/capability-table.d.ts.map +1 -0
  320. package/dist/harness/capability-table.js +3576 -0
  321. package/dist/harness/capability-table.js.map +1 -0
  322. package/dist/harness/changed-files.d.ts +18 -0
  323. package/dist/harness/changed-files.d.ts.map +1 -0
  324. package/dist/harness/changed-files.js +76 -0
  325. package/dist/harness/changed-files.js.map +1 -0
  326. package/dist/harness/declared-capabilities.d.ts +12 -0
  327. package/dist/harness/declared-capabilities.d.ts.map +1 -0
  328. package/dist/harness/declared-capabilities.js +21 -0
  329. package/dist/harness/declared-capabilities.js.map +1 -0
  330. package/dist/harness/registry.d.ts +162 -0
  331. package/dist/harness/registry.d.ts.map +1 -0
  332. package/dist/harness/registry.js +1738 -0
  333. package/dist/harness/registry.js.map +1 -0
  334. package/dist/index.js +121 -130
  335. package/dist/index.js.map +1 -1
  336. package/dist/interaction-script.d.ts +17 -0
  337. package/dist/interaction-script.d.ts.map +1 -0
  338. package/dist/interaction-script.js +47 -0
  339. package/dist/interaction-script.js.map +1 -0
  340. package/dist/js-script-debug/harness.d.ts +114 -0
  341. package/dist/js-script-debug/harness.d.ts.map +1 -0
  342. package/dist/js-script-debug/harness.js +252 -0
  343. package/dist/js-script-debug/harness.js.map +1 -0
  344. package/dist/js-script-debug/index.d.ts +9 -0
  345. package/dist/js-script-debug/index.d.ts.map +1 -0
  346. package/dist/js-script-debug/index.js +9 -0
  347. package/dist/js-script-debug/index.js.map +1 -0
  348. package/dist/js-script-debug/interactions.d.ts +19 -0
  349. package/dist/js-script-debug/interactions.d.ts.map +1 -0
  350. package/dist/js-script-debug/interactions.js +17 -0
  351. package/dist/js-script-debug/interactions.js.map +1 -0
  352. package/dist/js-script-debug/target.d.ts +20 -0
  353. package/dist/js-script-debug/target.d.ts.map +1 -0
  354. package/dist/js-script-debug/target.js +78 -0
  355. package/dist/js-script-debug/target.js.map +1 -0
  356. package/dist/local-model-interfaces.d.ts +20 -0
  357. package/dist/local-model-interfaces.d.ts.map +1 -0
  358. package/dist/local-model-interfaces.js +64 -0
  359. package/dist/local-model-interfaces.js.map +1 -0
  360. package/dist/local-secrets.d.ts +3 -0
  361. package/dist/local-secrets.d.ts.map +1 -0
  362. package/dist/local-secrets.js +16 -0
  363. package/dist/local-secrets.js.map +1 -0
  364. package/dist/markdown.d.ts.map +1 -1
  365. package/dist/markdown.js +7 -2
  366. package/dist/markdown.js.map +1 -1
  367. package/dist/node/run-node.d.ts +28 -0
  368. package/dist/node/run-node.d.ts.map +1 -0
  369. package/dist/node/run-node.js +76 -0
  370. package/dist/node/run-node.js.map +1 -0
  371. package/dist/node-registry.d.ts +13 -0
  372. package/dist/node-registry.d.ts.map +1 -0
  373. package/dist/node-registry.js +36 -0
  374. package/dist/node-registry.js.map +1 -0
  375. package/dist/nodetool.js +845 -309
  376. package/dist/nodetool.js.map +1 -1
  377. package/dist/numeric-options.d.ts +22 -0
  378. package/dist/numeric-options.d.ts.map +1 -0
  379. package/dist/numeric-options.js +45 -0
  380. package/dist/numeric-options.js.map +1 -0
  381. package/dist/permission-gate.d.ts +55 -0
  382. package/dist/permission-gate.d.ts.map +1 -0
  383. package/dist/permission-gate.js +118 -0
  384. package/dist/permission-gate.js.map +1 -0
  385. package/dist/predicates.d.ts +6 -0
  386. package/dist/predicates.d.ts.map +1 -0
  387. package/dist/predicates.js +6 -0
  388. package/dist/predicates.js.map +1 -0
  389. package/dist/providers.d.ts +73 -10
  390. package/dist/providers.d.ts.map +1 -1
  391. package/dist/providers.js +329 -97
  392. package/dist/providers.js.map +1 -1
  393. package/dist/readline-input.d.ts +13 -19
  394. package/dist/readline-input.d.ts.map +1 -1
  395. package/dist/readline-input.js +201 -190
  396. package/dist/readline-input.js.map +1 -1
  397. package/dist/run-budget.d.ts +40 -0
  398. package/dist/run-budget.d.ts.map +1 -0
  399. package/dist/run-budget.js +119 -0
  400. package/dist/run-budget.js.map +1 -0
  401. package/dist/run-dsl-supervised.d.ts +11 -0
  402. package/dist/run-dsl-supervised.d.ts.map +1 -0
  403. package/dist/run-dsl-supervised.js +82 -0
  404. package/dist/run-dsl-supervised.js.map +1 -0
  405. package/dist/run-dsl.d.ts +23 -0
  406. package/dist/run-dsl.d.ts.map +1 -1
  407. package/dist/run-dsl.js +40 -9
  408. package/dist/run-dsl.js.map +1 -1
  409. package/dist/run-json.d.ts +24 -0
  410. package/dist/run-json.d.ts.map +1 -0
  411. package/dist/run-json.js +132 -0
  412. package/dist/run-json.js.map +1 -0
  413. package/dist/sandbox-catalog.d.ts +12 -0
  414. package/dist/sandbox-catalog.d.ts.map +1 -0
  415. package/dist/sandbox-catalog.js +27 -0
  416. package/dist/sandbox-catalog.js.map +1 -0
  417. package/dist/settings.d.ts +11 -10
  418. package/dist/settings.d.ts.map +1 -1
  419. package/dist/settings.js +71 -13
  420. package/dist/settings.js.map +1 -1
  421. package/dist/sketch-debug/harness.d.ts +87 -0
  422. package/dist/sketch-debug/harness.d.ts.map +1 -0
  423. package/dist/sketch-debug/harness.js +178 -0
  424. package/dist/sketch-debug/harness.js.map +1 -0
  425. package/dist/sketch-debug/index.d.ts +9 -0
  426. package/dist/sketch-debug/index.d.ts.map +1 -0
  427. package/dist/sketch-debug/index.js +9 -0
  428. package/dist/sketch-debug/index.js.map +1 -0
  429. package/dist/sketch-debug/interactions.d.ts +19 -0
  430. package/dist/sketch-debug/interactions.d.ts.map +1 -0
  431. package/dist/sketch-debug/interactions.js +17 -0
  432. package/dist/sketch-debug/interactions.js.map +1 -0
  433. package/dist/sketch-debug/target.d.ts +48 -0
  434. package/dist/sketch-debug/target.d.ts.map +1 -0
  435. package/dist/sketch-debug/target.js +138 -0
  436. package/dist/sketch-debug/target.js.map +1 -0
  437. package/dist/stdin.d.ts +18 -19
  438. package/dist/stdin.d.ts.map +1 -1
  439. package/dist/stdin.js +159 -157
  440. package/dist/stdin.js.map +1 -1
  441. package/dist/supervisor.d.ts +97 -0
  442. package/dist/supervisor.d.ts.map +1 -0
  443. package/dist/supervisor.js +194 -0
  444. package/dist/supervisor.js.map +1 -0
  445. package/dist/terminal-clipboard.d.ts +3 -0
  446. package/dist/terminal-clipboard.d.ts.map +1 -0
  447. package/dist/terminal-clipboard.js +24 -0
  448. package/dist/terminal-clipboard.js.map +1 -0
  449. package/dist/terminal-mouse.d.ts +24 -0
  450. package/dist/terminal-mouse.d.ts.map +1 -0
  451. package/dist/terminal-mouse.js +84 -0
  452. package/dist/terminal-mouse.js.map +1 -0
  453. package/dist/terminal-screen.d.ts +41 -0
  454. package/dist/terminal-screen.d.ts.map +1 -0
  455. package/dist/terminal-screen.js +228 -0
  456. package/dist/terminal-screen.js.map +1 -0
  457. package/dist/timeline-debug/harness.d.ts +79 -0
  458. package/dist/timeline-debug/harness.d.ts.map +1 -0
  459. package/dist/timeline-debug/harness.js +155 -0
  460. package/dist/timeline-debug/harness.js.map +1 -0
  461. package/dist/timeline-debug/index.d.ts +9 -0
  462. package/dist/timeline-debug/index.d.ts.map +1 -0
  463. package/dist/timeline-debug/index.js +9 -0
  464. package/dist/timeline-debug/index.js.map +1 -0
  465. package/dist/timeline-debug/interactions.d.ts +19 -0
  466. package/dist/timeline-debug/interactions.d.ts.map +1 -0
  467. package/dist/timeline-debug/interactions.js +17 -0
  468. package/dist/timeline-debug/interactions.js.map +1 -0
  469. package/dist/timeline-debug/target.d.ts +34 -0
  470. package/dist/timeline-debug/target.d.ts.map +1 -0
  471. package/dist/timeline-debug/target.js +132 -0
  472. package/dist/timeline-debug/target.js.map +1 -0
  473. package/dist/tool-format.d.ts +54 -0
  474. package/dist/tool-format.d.ts.map +1 -0
  475. package/dist/tool-format.js +360 -0
  476. package/dist/tool-format.js.map +1 -0
  477. package/dist/useExecutionState.d.ts.map +1 -1
  478. package/dist/useExecutionState.js +8 -4
  479. package/dist/useExecutionState.js.map +1 -1
  480. package/dist/validate/index.d.ts +28 -0
  481. package/dist/validate/index.d.ts.map +1 -0
  482. package/dist/validate/index.js +51 -0
  483. package/dist/validate/index.js.map +1 -0
  484. package/dist/websocket-client.d.ts +78 -15
  485. package/dist/websocket-client.d.ts.map +1 -1
  486. package/dist/websocket-client.js +497 -171
  487. package/dist/websocket-client.js.map +1 -1
  488. package/package.json +62 -31
@@ -0,0 +1,227 @@
1
+ import { printCommandError } from "../command-errors.js";
2
+ import { renderJsScriptValidation } from "./js-script-validation-output.js";
3
+ import { registerJsScriptVersionsCommands } from "./js-script-versions.js";
4
+ import { isRecord } from "../predicates.js";
5
+ export { renderJsScriptValidation };
6
+ /** Read a `js_scripts` row through the local database. */
7
+ async function scriptLoader() {
8
+ const { initDb, JsScript } = await import("@nodetool-ai/models");
9
+ const { getDefaultDbPath } = await import("@nodetool-ai/config");
10
+ let ready = false;
11
+ return async (id) => {
12
+ if (!ready) {
13
+ initDb(getDefaultDbPath());
14
+ ready = true;
15
+ }
16
+ const row = await JsScript.findById(id);
17
+ return row ? { id: row.id, name: row.name, document: row.document } : null;
18
+ };
19
+ }
20
+ /** `--inputs` is a JSON object; anything else names itself in the error. */
21
+ export function parseInputsOption(raw) {
22
+ let parsed;
23
+ try {
24
+ parsed = JSON.parse(raw);
25
+ }
26
+ catch (e) {
27
+ throw new Error(`--inputs is not valid JSON: ${e.message}`);
28
+ }
29
+ if (!isRecord(parsed)) {
30
+ throw new Error("--inputs must be a JSON object, e.g. '{\"a\":1}'");
31
+ }
32
+ return parsed;
33
+ }
34
+ /**
35
+ * `--input-streams` stages items per handle for a body that reads `stream`:
36
+ * a JSON object whose every value is an array.
37
+ */
38
+ export function parseInputStreamsOption(raw) {
39
+ let parsed;
40
+ try {
41
+ parsed = JSON.parse(raw);
42
+ }
43
+ catch (e) {
44
+ throw new Error(`--input-streams is not valid JSON: ${e.message}`);
45
+ }
46
+ if (!isRecord(parsed)) {
47
+ throw new Error("--input-streams must be a JSON object of arrays, e.g. '{\"nums\":[1,2,3]}'");
48
+ }
49
+ const staged = {};
50
+ for (const [handle, items] of Object.entries(parsed)) {
51
+ if (!Array.isArray(items)) {
52
+ throw new Error(`--input-streams entry "${handle}" is not an array`);
53
+ }
54
+ staged[handle] = items;
55
+ }
56
+ return staged;
57
+ }
58
+ export function registerJsScriptCommands(program) {
59
+ const jsscript = program
60
+ .command("jsscript")
61
+ .description("Work with JS script documents");
62
+ jsscript
63
+ .command("validate <script_id_or_file>")
64
+ .description("Validate a JS script without running it: body syntax, imports against the declared packages, undeclared inputs, outputs nothing emits, tests naming ports the script lacks. Takes a script JSON file or a js_scripts row id")
65
+ .option("--json", "Print the full JsScriptValidation as JSON")
66
+ .option("--warnings-as-errors", "Exit non-zero when there are warnings (not just errors)")
67
+ .action(async (ref, opts) => {
68
+ try {
69
+ const { runJsScriptValidate } = await import("../js-script-debug/index.js");
70
+ const { target, validation } = await runJsScriptValidate(ref, {
71
+ loadScript: await scriptLoader()
72
+ });
73
+ if (opts.json) {
74
+ console.log(JSON.stringify({ target, validation }, null, 2));
75
+ }
76
+ else {
77
+ console.log(renderJsScriptValidation(validation).join("\n"));
78
+ }
79
+ const failed = !validation.ok ||
80
+ (opts.warningsAsErrors === true && validation.warnings.length > 0);
81
+ process.exit(failed ? 1 : 0);
82
+ }
83
+ catch (e) {
84
+ printCommandError(e, opts.json);
85
+ process.exit(1);
86
+ }
87
+ });
88
+ jsscript
89
+ .command("run <script_id_or_file>")
90
+ .description("Run a JS script once in the QuickJS sandbox and print its outputs, streamed emits, logs and error")
91
+ .option("--inputs <json>", "Input values, e.g. '{\"a\":1}'")
92
+ .option("--input-streams <json>", "Items staged per handle for a body that reads `stream`, e.g. '{\"nums\":[1,2,3]}'")
93
+ .option("--json", "Print the run result as JSON")
94
+ .action(async (ref, opts) => {
95
+ let ok = false;
96
+ try {
97
+ const { runJsScriptOnce } = await import("../js-script-debug/index.js");
98
+ const inputs = opts.inputs ? parseInputsOption(opts.inputs) : {};
99
+ const inputStreams = opts.inputStreams
100
+ ? parseInputStreamsOption(opts.inputStreams)
101
+ : undefined;
102
+ const { result } = await runJsScriptOnce(ref, inputs, { loadScript: await scriptLoader() }, inputStreams);
103
+ if (opts.json) {
104
+ // process.exit below drops what a pipe has not taken yet, so a
105
+ // result past the pipe buffer (64 KB) arrived cut off.
106
+ await new Promise((resolve) => process.stdout.write(`${JSON.stringify(result, null, 2)}\n`, () => resolve()));
107
+ }
108
+ else {
109
+ printRunResult(result);
110
+ }
111
+ ok = result.ok;
112
+ }
113
+ catch (e) {
114
+ printCommandError(e, opts.json);
115
+ process.exit(1);
116
+ }
117
+ process.exit(ok ? 0 : 1);
118
+ });
119
+ jsscript
120
+ .command("test <script_id_or_file>")
121
+ .description("Run a JS script's saved test cases and grade each one. Exits non-zero when any case fails")
122
+ .option("--json", "Print the grade report as JSON")
123
+ .action(async (ref, opts) => {
124
+ let ok = false;
125
+ try {
126
+ const { runJsScriptTests } = await import("../js-script-debug/index.js");
127
+ const { report } = await runJsScriptTests(ref, {
128
+ loadScript: await scriptLoader()
129
+ });
130
+ if (opts.json) {
131
+ console.log(JSON.stringify(report, null, 2));
132
+ }
133
+ else {
134
+ printTestReport(report);
135
+ }
136
+ ok = report.ok;
137
+ }
138
+ catch (e) {
139
+ printCommandError(e, opts.json);
140
+ process.exit(1);
141
+ }
142
+ process.exit(ok ? 0 : 1);
143
+ });
144
+ jsscript
145
+ .command("debug <script_id_or_file>")
146
+ .description("Replay a scripted editing session against a JS script headlessly and collect a debug bundle (the document, the report, every step's result)")
147
+ .option("--interact <json>", 'Scripted steps: [{"tool":"set_code","input":{"code":"..."}}] — the ui_jsscript_ prefix is optional')
148
+ .option("--out <dir>", "Bundle output directory (default: nodetool-debug/jsscript-<id>-<timestamp>)")
149
+ .option("--json", "Print the full JsScriptDebugReport as JSON to stdout")
150
+ .action(async (ref, opts) => {
151
+ try {
152
+ const { parseInteractionScript, runJsScriptDebug } = await import("../js-script-debug/index.js");
153
+ const interact = opts.interact
154
+ ? parseInteractionScript(opts.interact)
155
+ : undefined;
156
+ const debugOptions = {};
157
+ if (interact) {
158
+ debugOptions.interact = interact;
159
+ }
160
+ if (opts.out) {
161
+ debugOptions.outDir = opts.out;
162
+ }
163
+ const { report, bundleDir } = await runJsScriptDebug(ref, debugOptions, {
164
+ loadScript: await scriptLoader(),
165
+ onLog: (line) => console.error(line)
166
+ });
167
+ if (opts.json) {
168
+ console.log(JSON.stringify(report, null, 2));
169
+ }
170
+ else {
171
+ printJsScriptSummary(report, bundleDir);
172
+ }
173
+ process.exit(report.verdict.ok ? 0 : 1);
174
+ }
175
+ catch (e) {
176
+ printCommandError(e, opts.json);
177
+ process.exit(1);
178
+ }
179
+ });
180
+ registerJsScriptVersionsCommands(jsscript);
181
+ }
182
+ function printRunResult(result) {
183
+ console.log(`\n${result.ok ? "✅" : "❌"} ${result.ok ? "ran" : "failed"} in ${result.duration_ms}ms`);
184
+ if (result.error)
185
+ console.log(` error: ${result.error}`);
186
+ if (result.outputs) {
187
+ console.log(` outputs: ${JSON.stringify(result.outputs)}`);
188
+ }
189
+ if (result.streamed && result.streamed.length > 0) {
190
+ console.log(` streamed: ${JSON.stringify(result.streamed)}`);
191
+ }
192
+ for (const line of result.logs)
193
+ console.log(` log: ${line}`);
194
+ }
195
+ function printTestReport(report) {
196
+ console.log(`\n${report.ok ? "✅" : "❌"} ${report.passed} passed, ${report.failed} failed`);
197
+ for (const testCase of report.results) {
198
+ console.log(` ${testCase.ok ? "✓" : "✗"} ${testCase.name}`);
199
+ if (testCase.error)
200
+ console.log(` error: ${testCase.error}`);
201
+ for (const mismatch of testCase.mismatches) {
202
+ console.log(` ${mismatch.output}: expected ${JSON.stringify(mismatch.expected)}, got ${JSON.stringify(mismatch.actual)}`);
203
+ }
204
+ }
205
+ }
206
+ function printJsScriptSummary(report, bundleDir) {
207
+ const mark = report.verdict.ok ? "✅" : "❌";
208
+ console.log(`\n${mark} ${report.verdict.headline}`);
209
+ console.log(` script: ${report.meta.inputCount} input(s), ${report.meta.outputCount} output(s), ${report.meta.testCount} test(s)`);
210
+ const failed = report.interactions.filter((i) => !i.ok).length;
211
+ if (report.interactions.length > 0) {
212
+ console.log(` session: ${report.interactions.length} step(s), ${failed} failed`);
213
+ }
214
+ if (report.verdict.issues.length > 0) {
215
+ console.log("\nIssues:");
216
+ for (const issue of report.verdict.issues)
217
+ console.log(` - ${issue}`);
218
+ }
219
+ if (report.verdict.warnings && report.verdict.warnings.length > 0) {
220
+ console.log("\nWarnings:");
221
+ for (const warning of report.verdict.warnings)
222
+ console.log(` - ${warning}`);
223
+ }
224
+ console.log(`\nDebug bundle: ${bundleDir}`);
225
+ console.log(" report.md / report.json · jsscript.json");
226
+ }
227
+ //# sourceMappingURL=js-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-script.js","sourceRoot":"","sources":["../../src/commands/js-script.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * `nodetool jtbd` — run the jobs an agent is asked to get done, and review how
3
+ * the runs went.
4
+ *
5
+ * Three subcommands, one loop:
6
+ *
7
+ * list what jobs exist, what they cross, how hard they are meant to be
8
+ * run drive a model through them and write a bundle per run
9
+ * optimize read those bundles back and propose a fix per run
10
+ *
11
+ * `run` and `optimize` are separate commands rather than one flag because the
12
+ * bundle is the handoff. A run costs model time and produces a record worth
13
+ * keeping; reviewing it is a different model, a different prompt, and often a
14
+ * different day. Splitting them means a bundle can be re-reviewed with a better
15
+ * optimizer without paying for the runs again — and that a human can read the
16
+ * transcript before any model proposes anything.
17
+ *
18
+ * `optimize` writes proposals into the bundle. It changes no prompt and no
19
+ * tool; see `packages/agents/src/jtbd/optimize.ts` for why.
20
+ */
21
+ import type { Command } from "commander";
22
+ type InitializeSecrets = () => Promise<void>;
23
+ /**
24
+ * The collaborators these subcommands reach for, behind loaders.
25
+ *
26
+ * `@nodetool-ai/agents` is heavy and `nodetool jtbd list` must not pay for it,
27
+ * so production still resolves both lazily through `import()`. Passing them in
28
+ * is what lets a test supply fakes without mocking modules: `typeof import(…)`
29
+ * is a type position, so naming the modules here loads nothing, and `Pick`
30
+ * keeps a double down to the members this file actually calls.
31
+ */
32
+ export interface JtbdDeps {
33
+ loadAgents: () => Promise<Pick<typeof import("@nodetool-ai/agents"), "JOBS_TO_BE_DONE" | "runJobSuite" | "optimizeFromRun" | "renderRunForReview">>;
34
+ loadProviders: () => Promise<Pick<typeof import("../providers.js"), "createProviderStrict" | "buildConfiguredProviders">>;
35
+ }
36
+ export declare function registerJtbdCommand(program: Command, initializeSecrets: InitializeSecrets, deps?: JtbdDeps): void;
37
+ export {};
38
+ //# sourceMappingURL=jtbd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jtbd.d.ts","sourceRoot":"","sources":["../../src/commands/jtbd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,KAAK,iBAAiB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,OAAO,CACvB,IAAI,CACF,cAAc,qBAAqB,CAAC,EACpC,iBAAiB,GAAG,aAAa,GAAG,iBAAiB,GAAG,oBAAoB,CAC7E,CACF,CAAC;IACF,aAAa,EAAE,MAAM,OAAO,CAC1B,IAAI,CACF,cAAc,iBAAiB,CAAC,EAChC,sBAAsB,GAAG,0BAA0B,CACpD,CACF,CAAC;CACH;AAyQD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,GAAE,QAAsB,GAC3B,IAAI,CA0CN"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * `nodetool jtbd` — run the jobs an agent is asked to get done, and review how
3
+ * the runs went.
4
+ *
5
+ * Three subcommands, one loop:
6
+ *
7
+ * list what jobs exist, what they cross, how hard they are meant to be
8
+ * run drive a model through them and write a bundle per run
9
+ * optimize read those bundles back and propose a fix per run
10
+ *
11
+ * `run` and `optimize` are separate commands rather than one flag because the
12
+ * bundle is the handoff. A run costs model time and produces a record worth
13
+ * keeping; reviewing it is a different model, a different prompt, and often a
14
+ * different day. Splitting them means a bundle can be re-reviewed with a better
15
+ * optimizer without paying for the runs again — and that a human can read the
16
+ * transcript before any model proposes anything.
17
+ *
18
+ * `optimize` writes proposals into the bundle. It changes no prompt and no
19
+ * tool; see `packages/agents/src/jtbd/optimize.ts` for why.
20
+ */
21
+ import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
22
+ import { join, resolve } from "node:path";
23
+ import { parseNumericOption } from "../numeric-options.js";
24
+ const DEFAULT_OUT = "nodetool-debug/jtbd";
25
+ const defaultDeps = {
26
+ loadAgents: () => import("@nodetool-ai/agents"),
27
+ loadProviders: () => import("../providers.js")
28
+ };
29
+ const slug = (text) => text.replace(/[^a-zA-Z0-9_-]+/g, "-").replace(/^-|-$/g, "");
30
+ async function listJobs(opts, deps) {
31
+ const { JOBS_TO_BE_DONE } = await deps.loadAgents();
32
+ if (opts.json) {
33
+ console.log(JSON.stringify(JOBS_TO_BE_DONE.map((job) => ({
34
+ id: job.id,
35
+ statement: job.statement,
36
+ surfaces: job.surfaces,
37
+ difficulty: job.difficulty,
38
+ objective: job.objective,
39
+ outcomes: job.outcomeNames,
40
+ expectedToolCalls: job.expectedToolCalls
41
+ })), null, 2));
42
+ return;
43
+ }
44
+ for (const job of JOBS_TO_BE_DONE) {
45
+ console.log(`${job.id} [${job.difficulty}] ${job.surfaces.join(", ")}`);
46
+ console.log(` ${job.statement}`);
47
+ console.log(` outcomes: ${job.outcomeNames.join(", ")}`);
48
+ console.log("");
49
+ }
50
+ }
51
+ /**
52
+ * One directory per run, holding the report, the transcript on its own (so a
53
+ * person can read it without wading through JSON), and the friction. The
54
+ * transcript is the artifact the whole loop exists to produce, so it gets its
55
+ * own file rather than living only as a field.
56
+ */
57
+ async function writeRunBundle(dir, report, deps) {
58
+ const runDir = join(dir, slug(report.jobId));
59
+ await mkdir(runDir, { recursive: true });
60
+ await writeFile(join(runDir, "report.json"), JSON.stringify(report, null, 2), "utf-8");
61
+ const { renderRunForReview } = await deps.loadAgents();
62
+ await writeFile(join(runDir, "review.md"), renderRunForReview(report), "utf-8");
63
+ return runDir;
64
+ }
65
+ async function runJobs(opts, initializeSecrets, deps) {
66
+ if (!opts.provider || !opts.model) {
67
+ console.error("--provider and --model are required");
68
+ process.exitCode = 1;
69
+ return;
70
+ }
71
+ await initializeSecrets();
72
+ const [agents, providersMod] = await Promise.all([
73
+ deps.loadAgents(),
74
+ deps.loadProviders()
75
+ ]);
76
+ const { JOBS_TO_BE_DONE, runJobSuite } = agents;
77
+ const ids = opts.jobs
78
+ ?.split(",")
79
+ .map((s) => s.trim())
80
+ .filter(Boolean);
81
+ const jobs = ids === undefined
82
+ ? JOBS_TO_BE_DONE
83
+ : JOBS_TO_BE_DONE.filter((job) => ids.includes(job.id));
84
+ if (jobs.length === 0) {
85
+ console.error(`No jobs matched ${ids?.join(", ") ?? "(none)"}`);
86
+ process.exitCode = 1;
87
+ return;
88
+ }
89
+ const provider = await providersMod.createProviderStrict(opts.provider);
90
+ const providers = opts.findModel === false
91
+ ? undefined
92
+ : await providersMod.buildConfiguredProviders();
93
+ const runOptions = {
94
+ provider,
95
+ model: opts.model,
96
+ jobs,
97
+ onEvent: (line) => {
98
+ if (!opts.json)
99
+ console.log(line);
100
+ }
101
+ };
102
+ if (providers !== undefined)
103
+ runOptions.providers = providers;
104
+ if (opts.maxIterations !== undefined) {
105
+ runOptions.maxIterations = parseNumericOption(opts.maxIterations, "--max-iterations", { integer: true, min: 1 });
106
+ }
107
+ const report = await runJobSuite(runOptions);
108
+ const outDir = resolve(opts.out ?? DEFAULT_OUT);
109
+ await mkdir(outDir, { recursive: true });
110
+ for (const run of report.jobs) {
111
+ if (run.skipped)
112
+ continue;
113
+ await writeRunBundle(outDir, run, deps);
114
+ }
115
+ await writeFile(join(outDir, "suite.json"), JSON.stringify(report, null, 2), "utf-8");
116
+ if (opts.json) {
117
+ console.log(JSON.stringify(report, null, 2));
118
+ }
119
+ else {
120
+ printSuite(report, outDir);
121
+ }
122
+ if (opts.minAchieved !== undefined) {
123
+ const threshold = parseNumericOption(opts.minAchieved, "--min-achieved", {
124
+ min: 0,
125
+ max: 1
126
+ });
127
+ if (report.summary.achievementRate < threshold) {
128
+ console.error(`Achievement rate ${report.summary.achievementRate.toFixed(2)} is below --min-achieved ${threshold}`);
129
+ process.exitCode = 1;
130
+ }
131
+ }
132
+ }
133
+ function printSuite(report, outDir) {
134
+ const { summary } = report;
135
+ console.log("");
136
+ console.log(`${report.provider}/${report.model}`);
137
+ for (const run of report.jobs) {
138
+ if (run.skipped) {
139
+ console.log(` ‑ ${run.jobId}: skipped (needs model providers)`);
140
+ continue;
141
+ }
142
+ const failed = run.outcomes.filter((o) => !o.passed).map((o) => o.name);
143
+ console.log(` ${run.achieved ? "✔" : "✘"} ${run.jobId}: ${run.totalToolCalls} calls` +
144
+ (failed.length > 0 ? `, missed ${failed.join(", ")}` : ""));
145
+ for (const signal of run.friction) {
146
+ console.log(` ⚠ [${signal.owner}] ${signal.summary}`);
147
+ }
148
+ }
149
+ console.log("");
150
+ console.log(`achieved ${summary.achieved}/${summary.total - summary.skipped}` +
151
+ ` (${(summary.achievementRate * 100).toFixed(0)}%)` +
152
+ ` friction: ${summary.frictionByOwner.harness} harness,` +
153
+ ` ${summary.frictionByOwner.prompt} prompt,` +
154
+ ` ${summary.frictionByOwner.unattributed} unattributed` +
155
+ ` $${summary.totalCostUsd.toFixed(4)}`);
156
+ console.log(`bundle: ${outDir}`);
157
+ }
158
+ /** Every `report.json` under the bundle directory, one per job run. */
159
+ async function loadRunReports(dir) {
160
+ const entries = await readdir(dir, { withFileTypes: true });
161
+ const reports = [];
162
+ for (const entry of entries) {
163
+ if (!entry.isDirectory())
164
+ continue;
165
+ const path = join(dir, entry.name, "report.json");
166
+ try {
167
+ reports.push(JSON.parse(await readFile(path, "utf-8")));
168
+ }
169
+ catch {
170
+ // A directory without a readable report is not a run bundle. Skipping it
171
+ // is right: the bundle dir is a normal folder a user may keep notes in.
172
+ }
173
+ }
174
+ return reports;
175
+ }
176
+ async function optimizeRuns(opts, initializeSecrets, deps) {
177
+ if (!opts.provider || !opts.model) {
178
+ console.error("--provider and --model are required");
179
+ process.exitCode = 1;
180
+ return;
181
+ }
182
+ await initializeSecrets();
183
+ const dir = resolve(opts.bundle ?? DEFAULT_OUT);
184
+ const reports = await loadRunReports(dir);
185
+ if (reports.length === 0) {
186
+ console.error(`No run bundles found under ${dir} — run \`nodetool jtbd run\` first`);
187
+ process.exitCode = 1;
188
+ return;
189
+ }
190
+ const [{ optimizeFromRun }, providersMod] = await Promise.all([
191
+ deps.loadAgents(),
192
+ deps.loadProviders()
193
+ ]);
194
+ const provider = await providersMod.createProviderStrict(opts.provider);
195
+ const selected = opts.all === true ? reports : reports.filter((r) => !r.achieved || r.friction.length > 0);
196
+ if (selected.length === 0) {
197
+ console.log("Every run was clean — nothing to review. Use --all to review anyway.");
198
+ return;
199
+ }
200
+ const results = [];
201
+ for (const report of selected) {
202
+ if (!opts.json)
203
+ console.log(`▶ reviewing ${report.jobId}`);
204
+ const optimization = await optimizeFromRun(report, {
205
+ provider,
206
+ model: opts.model
207
+ });
208
+ results.push(optimization);
209
+ await writeFile(join(dir, slug(report.jobId), "proposals.json"), JSON.stringify(optimization, null, 2), "utf-8");
210
+ if (opts.json)
211
+ continue;
212
+ if (optimization.error !== undefined) {
213
+ console.log(` ! review failed: ${optimization.error}`);
214
+ continue;
215
+ }
216
+ if (optimization.proposals.length === 0) {
217
+ console.log(" (nothing worth changing)");
218
+ }
219
+ for (const proposal of optimization.proposals) {
220
+ console.log(` [${proposal.owner}] ${proposal.target} (confidence ${proposal.confidence.toFixed(2)})`);
221
+ console.log(` ${proposal.diagnosis}`);
222
+ console.log(` → ${proposal.change}`);
223
+ }
224
+ }
225
+ if (opts.json)
226
+ console.log(JSON.stringify(results, null, 2));
227
+ else
228
+ console.log(`\nproposals written under ${dir}`);
229
+ }
230
+ export function registerJtbdCommand(program, initializeSecrets, deps = defaultDeps) {
231
+ const cmd = program
232
+ .command("jtbd")
233
+ .description("Jobs to be done: run end-to-end agent jobs, record the transcripts, and review how they went");
234
+ cmd
235
+ .command("list")
236
+ .description("List the jobs, the surfaces they cross, and their outcomes")
237
+ .option("--json", "Print as JSON")
238
+ .action((opts) => listJobs(opts, deps));
239
+ cmd
240
+ .command("run")
241
+ .description("Drive a model through the jobs and write a bundle per run")
242
+ .option("-p, --provider <id>", "Provider id (anthropic, openai, ollama, ...)")
243
+ .option("-m, --model <id>", "Model id for the provider")
244
+ .option("--jobs <ids>", "Comma-separated job ids (default: all; see list)")
245
+ .option("--out <dir>", `Bundle directory (default ${DEFAULT_OUT})`)
246
+ .option("--max-iterations <n>", "Turn cap per job when the job declares none")
247
+ .option("--min-achieved <rate>", "Exit non-zero when the achievement rate is below this threshold (0..1)")
248
+ .option("--no-find-model", "Run without configured model providers")
249
+ .option("--json", "Print the full report as JSON")
250
+ .action((opts) => runJobs(opts, initializeSecrets, deps));
251
+ cmd
252
+ .command("optimize")
253
+ .description("Review recorded runs and propose a harness or prompt fix per run (writes proposals; changes nothing)")
254
+ .option("-p, --provider <id>", "Reviewing provider — use a different one than ran the jobs")
255
+ .option("-m, --model <id>", "Reviewing model id")
256
+ .option("--bundle <dir>", `Bundle directory to review (default ${DEFAULT_OUT})`)
257
+ .option("--all", "Review clean runs too, not just failures and friction")
258
+ .option("--json", "Print the proposals as JSON")
259
+ .action((opts) => optimizeRuns(opts, initializeSecrets, deps));
260
+ }
261
+ //# sourceMappingURL=jtbd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jtbd.js","sourceRoot":"","sources":["../../src/commands/jtbd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Local single-user DB bootstrap for CLI commands that run in-process rather
3
+ * than against a running server. Mirrors the `setupDb` in nodetool.ts (secrets
4
+ * commands) without pulling in the heavy deploy stack.
5
+ */
6
+ /** Local single-user id used across the TS stack. */
7
+ export declare const LOCAL_USER_ID = "1";
8
+ /**
9
+ * Initialize the local SQLite DB and best-effort unlock the secret store
10
+ * (needed for any provider that resolves API keys, e.g. embeddings). If the
11
+ * store can't be unlocked it warns to stderr and still resolves — a command
12
+ * that then needs a secret fails at that later point, so the DB stays usable
13
+ * for commands that don't. Idempotent.
14
+ */
15
+ export declare function setupLocalDb(): Promise<void>;
16
+ //# sourceMappingURL=local-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-db.d.ts","sourceRoot":"","sources":["../../src/commands/local-db.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,qDAAqD;AACrD,eAAO,MAAM,aAAa,MAAM,CAAC;AAIjC;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAc5C"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Local single-user DB bootstrap for CLI commands that run in-process rather
3
+ * than against a running server. Mirrors the `setupDb` in nodetool.ts (secrets
4
+ * commands) without pulling in the heavy deploy stack.
5
+ */
6
+ import { initDb } from "@nodetool-ai/models";
7
+ import { initMasterKey } from "@nodetool-ai/security";
8
+ import { getDefaultDbPath } from "@nodetool-ai/config";
9
+ /** Local single-user id used across the TS stack. */
10
+ export const LOCAL_USER_ID = "1";
11
+ let ready = null;
12
+ /**
13
+ * Initialize the local SQLite DB and best-effort unlock the secret store
14
+ * (needed for any provider that resolves API keys, e.g. embeddings). If the
15
+ * store can't be unlocked it warns to stderr and still resolves — a command
16
+ * that then needs a secret fails at that later point, so the DB stays usable
17
+ * for commands that don't. Idempotent.
18
+ */
19
+ export function setupLocalDb() {
20
+ ready ??= (async () => {
21
+ initDb(getDefaultDbPath());
22
+ try {
23
+ await initMasterKey();
24
+ }
25
+ catch (err) {
26
+ const msg = err instanceof Error ? err.message : String(err);
27
+ process.stderr.write(`Could not unlock the secret store: ${msg}\n` +
28
+ `Tip: set SECRETS_MASTER_KEY or grant keychain access.\n`);
29
+ }
30
+ })();
31
+ return ready;
32
+ }
33
+ //# sourceMappingURL=local-db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-db.js","sourceRoot":"","sources":["../../src/commands/local-db.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,IAAI,KAAK,GAAyB,IAAI,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,YAAY;IAC1B,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,GAAG,IAAI;gBAC3C,yDAAyD,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,24 @@
1
+ interface MigrateCodeInputsOptions {
2
+ dryRun?: boolean;
3
+ /** Migrate this user's workflows instead of the local user's. */
4
+ userId?: string;
5
+ json?: boolean;
6
+ }
7
+ interface MigrateCodeInputsReport {
8
+ workflowsScanned: number;
9
+ codeNodesScanned: number;
10
+ nodesRewritten: number;
11
+ workflowsUpdated: number;
12
+ failed: number;
13
+ entries: Array<{
14
+ workflowId: string;
15
+ workflowName: string;
16
+ nodeId: string;
17
+ rewritten: string[];
18
+ error?: string;
19
+ }>;
20
+ }
21
+ export declare function migrateCodeInputs(options?: MigrateCodeInputsOptions): Promise<MigrateCodeInputsReport>;
22
+ export declare function formatMigrateCodeInputsReport(report: MigrateCodeInputsReport, dryRun: boolean): string;
23
+ export {};
24
+ //# sourceMappingURL=migrate-code-inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-code-inputs.d.ts","sourceRoot":"","sources":["../../src/commands/migrate-code-inputs.ts"],"names":[],"mappings":"AA2BA,UAAU,wBAAwB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAsCD,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAmElC;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,OAAO,GACd,MAAM,CAiBR"}