@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,23 @@
1
+ /**
2
+ * `nodetool worker` CLI commands — GPU-worker provisioning, registered on a
3
+ * Commander `Command` via `registerWorkerCommands(program)`.
4
+ *
5
+ * The whole group runs against a single `WorkerManager` (from
6
+ * `@nodetool-ai/compute`), which owns the profiles→instances identity model and
7
+ * loads each target's API key from the secret store. The CLI's only job is to
8
+ * unlock the DB + master key (like the deleted `runpod-worker.ts` script did),
9
+ * parse flags, and render the manager's results.
10
+ *
11
+ * Verbs:
12
+ * worker profile add <name> --target <t> --image <img> [--gpu <g>] [--disk <gb>] [...]
13
+ * worker profile list [--json]
14
+ * worker profile rm <name>
15
+ * worker create --profile <name> [--attach]
16
+ * worker create --target <t> --image <img> [--gpu <g>] [--attach] (inline)
17
+ * worker list [--json]
18
+ * worker status <id>
19
+ * worker stop <id> | --all
20
+ */
21
+ import { Command } from "commander";
22
+ export declare function registerWorkerCommands(program: Command): void;
23
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6KpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY7D"}
@@ -0,0 +1,374 @@
1
+ /**
2
+ * `nodetool worker` CLI commands — GPU-worker provisioning, registered on a
3
+ * Commander `Command` via `registerWorkerCommands(program)`.
4
+ *
5
+ * The whole group runs against a single `WorkerManager` (from
6
+ * `@nodetool-ai/compute`), which owns the profiles→instances identity model and
7
+ * loads each target's API key from the secret store. The CLI's only job is to
8
+ * unlock the DB + master key (like the deleted `runpod-worker.ts` script did),
9
+ * parse flags, and render the manager's results.
10
+ *
11
+ * Verbs:
12
+ * worker profile add <name> --target <t> --image <img> [--gpu <g>] [--disk <gb>] [...]
13
+ * worker profile list [--json]
14
+ * worker profile rm <name>
15
+ * worker create --profile <name> [--attach]
16
+ * worker create --target <t> --image <img> [--gpu <g>] [--attach] (inline)
17
+ * worker list [--json]
18
+ * worker status <id>
19
+ * worker stop <id> | --all
20
+ */
21
+ import { readFileSync } from "node:fs";
22
+ import { resolve as resolvePath } from "node:path";
23
+ import { WorkerManager } from "@nodetool-ai/compute";
24
+ import { initDb } from "@nodetool-ai/models";
25
+ import { initMasterKey } from "@nodetool-ai/security";
26
+ import { getDefaultDbPath } from "@nodetool-ai/config";
27
+ import { registerWorkerModelsCommands } from "./worker-models.js";
28
+ import { printTable, asJson } from "./output.js";
29
+ const SUPPORTED_TARGETS = ["runpod", "vast", "verda"];
30
+ const TOKEN_POLICIES = ["generate", "fixed"];
31
+ /**
32
+ * Redact a high-entropy bearer token for human-readable output. Shows only the
33
+ * first 8 characters so the user can confirm a token exists without leaking the
34
+ * full secret to shell history, CI logs, or terminal transcripts. The full
35
+ * token is retrievable on demand via `worker token <id>`.
36
+ */
37
+ function maskToken(token) {
38
+ if (!token) {
39
+ return "(none)";
40
+ }
41
+ return `${token.slice(0, 8)}… (full token: worker token <id>)`;
42
+ }
43
+ // ---------------------------------------------------------------------------
44
+ // Manager + DB setup
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Unlock the DB + master key (so the manager can read API keys from the secret
48
+ * store) and return a fresh `WorkerManager`. Mirrors the resolution the deleted
49
+ * `runpod-worker.ts` script used: best-effort init, env fallback handled inside
50
+ * the manager.
51
+ */
52
+ async function getWorkerManager() {
53
+ try {
54
+ initDb(getDefaultDbPath());
55
+ await initMasterKey();
56
+ }
57
+ catch (err) {
58
+ const msg = err instanceof Error ? err.message : String(err);
59
+ console.error(`Could not unlock the secret store: ${msg}\n` +
60
+ `Falling back to env vars for provider API keys.`);
61
+ }
62
+ return new WorkerManager();
63
+ }
64
+ /** Unify error handling on every sub-command: print and exit non-zero. */
65
+ function runAction(fn) {
66
+ return async (...args) => {
67
+ try {
68
+ await fn(...args);
69
+ }
70
+ catch (err) {
71
+ console.error(err instanceof Error ? err.message : String(err));
72
+ process.exit(1);
73
+ }
74
+ };
75
+ }
76
+ function assertTarget(value) {
77
+ if (!SUPPORTED_TARGETS.includes(value)) {
78
+ throw new Error(`Invalid --target '${value}': expected one of ${SUPPORTED_TARGETS.join(", ")}.`);
79
+ }
80
+ return value;
81
+ }
82
+ function assertTokenPolicy(value) {
83
+ if (!TOKEN_POLICIES.includes(value)) {
84
+ throw new Error(`Invalid --token-policy '${value}': expected one of ${TOKEN_POLICIES.join(", ")}.`);
85
+ }
86
+ return value;
87
+ }
88
+ /**
89
+ * Parse an optional duration flag into a positive integer (or null when
90
+ * absent). Rejects non-numeric / zero / negative input up front so the reaper
91
+ * never gets a NaN or a negative timeout that would stop a worker immediately.
92
+ */
93
+ function parsePositiveMinutes(value, flag) {
94
+ if (value == null) {
95
+ return null;
96
+ }
97
+ const n = Number.parseInt(value, 10);
98
+ if (!Number.isInteger(n) || n <= 0) {
99
+ throw new Error(`Invalid ${flag} '${value}': expected a positive integer.`);
100
+ }
101
+ return n;
102
+ }
103
+ /**
104
+ * Parse a positive-integer flag, rejecting anything else.
105
+ *
106
+ * A silently-dropped size is worse than a rejected one: the caller believes
107
+ * they asked for 200 GB and gets the 100 GB default, which only shows up as a
108
+ * download failing partway through on a rented GPU.
109
+ */
110
+ function parsePositiveInt(value, flag) {
111
+ if (value == null) {
112
+ return undefined;
113
+ }
114
+ const n = Number.parseInt(value, 10);
115
+ if (!Number.isInteger(n) || n <= 0) {
116
+ throw new Error(`Invalid ${flag} '${value}': expected a positive integer.`);
117
+ }
118
+ return n;
119
+ }
120
+ /**
121
+ * Read an OpenSSH public key from disk.
122
+ *
123
+ * A rented worker exposes only the node-execution bridge, so diagnosing one
124
+ * means inferring its state from whether whole model loads pass or fail. The
125
+ * key travels as PUBLIC_KEY and the worker entrypoint installs it before
126
+ * starting sshd.
127
+ */
128
+ function readSshPublicKey(path) {
129
+ const key = readFileSync(resolvePath(path), "utf8").trim();
130
+ if (!key.startsWith("ssh-") && !key.startsWith("ecdsa-")) {
131
+ throw new Error(`--ssh-key ${path} is not an OpenSSH public key. ` +
132
+ "Point it at a .pub file, not a private key.");
133
+ }
134
+ if (key.includes("PRIVATE KEY")) {
135
+ throw new Error(`--ssh-key ${path} is a private key. Use the .pub file.`);
136
+ }
137
+ return key;
138
+ }
139
+ /** Build a profile `spec` JSON blob from the inline provisioning flags. */
140
+ function specFromFlags(opts) {
141
+ const spec = {};
142
+ if (opts.gpu) {
143
+ spec.gpu = opts.gpu;
144
+ }
145
+ const vcpu = parsePositiveInt(opts.vcpu, "--vcpu");
146
+ if (vcpu != null) {
147
+ spec.vcpu = vcpu;
148
+ }
149
+ const disk = parsePositiveInt(opts.disk, "--disk");
150
+ if (disk != null) {
151
+ spec.disk = disk;
152
+ }
153
+ if (opts.sshKey) {
154
+ spec.sshPublicKey = readSshPublicKey(opts.sshKey);
155
+ }
156
+ return spec;
157
+ }
158
+ // ---------------------------------------------------------------------------
159
+ // Registration
160
+ // ---------------------------------------------------------------------------
161
+ export function registerWorkerCommands(program) {
162
+ const worker = program
163
+ .command("worker")
164
+ .description("Provision, attach, and tear down GPU workers");
165
+ registerProfile(worker);
166
+ registerCreate(worker);
167
+ registerList(worker);
168
+ registerStatus(worker);
169
+ registerToken(worker);
170
+ registerStop(worker);
171
+ registerWorkerModelsCommands(worker, getWorkerManager);
172
+ }
173
+ // ---------------------------------------------------------------------------
174
+ // worker profile
175
+ // ---------------------------------------------------------------------------
176
+ function registerProfile(worker) {
177
+ const profile = worker
178
+ .command("profile")
179
+ .description("Manage reusable worker presets");
180
+ profile
181
+ .command("add <name>")
182
+ .description("Create a worker profile")
183
+ .requiredOption("--target <target>", "Provider target (runpod | vast)")
184
+ .requiredOption("--image <image>", "Worker container image")
185
+ .option("--gpu <gpu>", "GPU type (provider-specific)")
186
+ .option("--ssh-key <path>", "OpenSSH public key file; exposes 22/tcp so the worker can be debugged")
187
+ .option("--vcpu <n>", "vCPU count")
188
+ .option("--disk <gb>", "Persistent volume size in GB (holds the model cache; default 100)")
189
+ .option("--token-policy <policy>", "Token policy (generate | fixed)", "generate")
190
+ .option("--idle-timeout <minutes>", "Idle auto-stop timeout in minutes")
191
+ .option("--max-lifetime <minutes>", "Hard TTL in minutes")
192
+ .action(runAction(async (name, opts) => {
193
+ const target = assertTarget(opts.target);
194
+ const manager = await getWorkerManager();
195
+ const created = await manager.createProfile({
196
+ name,
197
+ target,
198
+ image: opts.image,
199
+ spec: specFromFlags(opts),
200
+ token_policy: assertTokenPolicy(opts.tokenPolicy),
201
+ idle_timeout_minutes: parsePositiveMinutes(opts.idleTimeout, "--idle-timeout"),
202
+ max_lifetime_minutes: parsePositiveMinutes(opts.maxLifetime, "--max-lifetime")
203
+ });
204
+ console.log(`Created worker profile '${created.name}'.`);
205
+ }));
206
+ profile
207
+ .command("list")
208
+ .description("List worker profiles")
209
+ .option("--json", "Output as JSON")
210
+ .action(runAction(async (opts) => {
211
+ const manager = await getWorkerManager();
212
+ const profiles = await manager.listProfiles();
213
+ if (opts.json) {
214
+ asJson(profiles);
215
+ return;
216
+ }
217
+ printTable(profiles.map((p) => ({
218
+ name: p.name,
219
+ target: p.target,
220
+ image: p.image,
221
+ idle: p.idle_timeout_minutes ?? "",
222
+ ttl: p.max_lifetime_minutes ?? ""
223
+ })), ["name", "target", "image", "idle", "ttl"]);
224
+ }));
225
+ profile
226
+ .command("rm <name>")
227
+ .description("Delete a worker profile")
228
+ .action(runAction(async (name) => {
229
+ const manager = await getWorkerManager();
230
+ await manager.deleteProfile(name);
231
+ console.log(`Deleted worker profile '${name}'.`);
232
+ }));
233
+ }
234
+ // ---------------------------------------------------------------------------
235
+ // worker create
236
+ // ---------------------------------------------------------------------------
237
+ function registerCreate(worker) {
238
+ worker
239
+ .command("create")
240
+ .description("Provision a worker from a profile (or inline flags)")
241
+ .option("--profile <name>", "Provision from an existing profile")
242
+ .option("--target <target>", "Inline: provider target (runpod | vast)")
243
+ .option("--image <image>", "Inline: worker container image")
244
+ .option("--gpu <gpu>", "Inline: GPU type")
245
+ .option("--ssh-key <path>", "Inline: OpenSSH public key file; exposes 22/tcp for debugging")
246
+ .option("--vcpu <n>", "Inline: vCPU count")
247
+ .option("--disk <gb>", "Inline: persistent volume size in GB (default 100)")
248
+ .option("--token-policy <policy>", "Inline: token policy (generate | fixed)", "generate")
249
+ .option("--idle-timeout <minutes>", "Inline: idle auto-stop in minutes")
250
+ .option("--max-lifetime <minutes>", "Inline: hard TTL in minutes")
251
+ .option("--attach", "Attach the new worker once it is running")
252
+ .action(runAction(async (opts) => {
253
+ const manager = await getWorkerManager();
254
+ let profileName = opts.profile;
255
+ if (!profileName) {
256
+ // Inline form: synthesise a one-off profile from the flags.
257
+ if (!opts.target || !opts.image) {
258
+ throw new Error("Provide --profile <name>, or the inline form " +
259
+ "--target <t> --image <img> [--gpu <g>].");
260
+ }
261
+ const target = assertTarget(opts.target);
262
+ profileName = `inline-${target}-${Date.now()}`;
263
+ await manager.createProfile({
264
+ name: profileName,
265
+ target,
266
+ image: opts.image,
267
+ spec: specFromFlags(opts),
268
+ token_policy: assertTokenPolicy(opts.tokenPolicy),
269
+ idle_timeout_minutes: parsePositiveMinutes(opts.idleTimeout, "--idle-timeout"),
270
+ max_lifetime_minutes: parsePositiveMinutes(opts.maxLifetime, "--max-lifetime")
271
+ });
272
+ }
273
+ const instance = await manager.provision(profileName);
274
+ console.log(`Provisioned worker '${instance.id}'.`);
275
+ console.log(` wsUrl: ${instance.ws_url}`);
276
+ console.log(` token: ${maskToken(instance.token)}`);
277
+ console.log(` status: ${instance.status}`);
278
+ if (opts.attach) {
279
+ const conn = await manager.attach(instance.id);
280
+ console.log(`Attached. Bridge target: ${conn.wsUrl}`);
281
+ console.log(`export NODETOOL_WORKER_URL=${conn.wsUrl}`);
282
+ if (conn.token) {
283
+ // Never print the raw bearer token to stdout — it would leak into
284
+ // shell history, CI logs, and terminal transcripts. Give a
285
+ // pipeable retrieval path instead (token: ${maskToken(conn.token)}).
286
+ console.log("# NODETOOL_WORKER_TOKEN was redacted; set it with:");
287
+ console.log(`# export NODETOOL_WORKER_TOKEN=$(nodetool worker token ${instance.id})`);
288
+ }
289
+ }
290
+ }));
291
+ }
292
+ // ---------------------------------------------------------------------------
293
+ // worker list
294
+ // ---------------------------------------------------------------------------
295
+ function registerList(worker) {
296
+ worker
297
+ .command("list")
298
+ .description("List worker instances")
299
+ .option("--json", "Output as JSON")
300
+ .action(runAction(async (opts) => {
301
+ const manager = await getWorkerManager();
302
+ const instances = await manager.list();
303
+ if (opts.json) {
304
+ asJson(instances);
305
+ return;
306
+ }
307
+ printTable(instances.map((i) => ({
308
+ id: i.id,
309
+ profile: i.profile_name,
310
+ target: i.target,
311
+ status: i.status,
312
+ cost: i.estimated_cost_usd ?? "",
313
+ ws_url: i.ws_url
314
+ })), ["id", "profile", "target", "status", "cost", "ws_url"]);
315
+ }));
316
+ }
317
+ // ---------------------------------------------------------------------------
318
+ // worker status
319
+ // ---------------------------------------------------------------------------
320
+ function registerStatus(worker) {
321
+ worker
322
+ .command("status <id>")
323
+ .description("Refresh a worker instance's status from its provider")
324
+ .action(runAction(async (id) => {
325
+ const manager = await getWorkerManager();
326
+ const state = await manager.status(id);
327
+ console.log(state);
328
+ }));
329
+ }
330
+ // ---------------------------------------------------------------------------
331
+ // worker token
332
+ // ---------------------------------------------------------------------------
333
+ function registerToken(worker) {
334
+ worker
335
+ .command("token <id>")
336
+ .description("Print a worker's decrypted bearer token (pipe into NODETOOL_WORKER_TOKEN)")
337
+ .action(runAction(async (id) => {
338
+ const manager = await getWorkerManager();
339
+ // getInstance decrypts on demand; bulk `list` withholds the token.
340
+ const instance = await manager.getInstance(id);
341
+ if (!instance) {
342
+ throw new Error(`Worker instance not found: ${id}`);
343
+ }
344
+ if (!instance.token) {
345
+ throw new Error(`Worker instance '${id}' has no token (open worker).`);
346
+ }
347
+ // Print ONLY the token so it pipes cleanly, e.g.
348
+ // export NODETOOL_WORKER_TOKEN=$(nodetool worker token i1)
349
+ console.log(instance.token);
350
+ }));
351
+ }
352
+ // ---------------------------------------------------------------------------
353
+ // worker stop
354
+ // ---------------------------------------------------------------------------
355
+ function registerStop(worker) {
356
+ worker
357
+ .command("stop [id]")
358
+ .description("Stop a worker by id, or every worker with --all")
359
+ .option("--all", "Stop every non-stopped worker")
360
+ .action(runAction(async (id, opts) => {
361
+ const manager = await getWorkerManager();
362
+ if (opts.all) {
363
+ await manager.stopAll();
364
+ console.log("Stopped all workers.");
365
+ return;
366
+ }
367
+ if (!id) {
368
+ throw new Error("Provide a worker id, or --all to stop everything.");
369
+ }
370
+ await manager.stop(id);
371
+ console.log(`Stopped worker '${id}'.`);
372
+ }));
373
+ }
374
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { BrowserRunReport, DebugGraph } from "./types.js";
2
+ export interface BrowserRunInput {
3
+ graph: DebugGraph;
4
+ params: Record<string, unknown>;
5
+ /** Bundle dir for the browser surface; record/screenshot/console land here. */
6
+ outDir: string;
7
+ /** Capture a screenshot at every run stage (expensive) vs. only the final frame. */
8
+ captureStages?: boolean;
9
+ timeoutMs?: number;
10
+ /** Stream the Playwright child's stdout/stderr through. */
11
+ onLog?: (line: string) => void;
12
+ }
13
+ export declare function runInBrowser(input: BrowserRunInput): Promise<BrowserRunReport>;
14
+ /**
15
+ * Fold the artifacts a Playwright debug run leaves in `outDir`
16
+ * (record.json, console-errors.log, screenshot.png) into a `BrowserRunReport`.
17
+ * Pure file IO — separated from the spawn so it's directly testable against a
18
+ * real captured bundle.
19
+ */
20
+ export declare function buildBrowserReport(outDir: string, exitCode?: number): Promise<BrowserRunReport>;
21
+ //# sourceMappingURL=browser-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-runner.d.ts","sourceRoot":"","sources":["../../src/debug/browser-runner.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAkB/D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAgED,wBAAsB,YAAY,CAChC,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAmE3B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,SAAI,GACX,OAAO,CAAC,gBAAgB,CAAC,CAsD3B"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Real-browser ("browser") debug surface: drives the `e2e_runner` harness page
3
+ * in headless Chromium via Playwright to execute the workflow end-to-end through
4
+ * the actual web stack, capturing browser console errors, a canvas screenshot,
5
+ * and the same logs / node IO / outputs the server surface reports.
6
+ *
7
+ * The heavy lifting (Vite + hermetic backend + the harness page) already exists
8
+ * in `web/`; this module just resolves the web workspace, shells out to the
9
+ * Playwright spec, and folds the resulting RunRecord into a `BrowserRunReport`.
10
+ * It degrades gracefully (an `unavailableReason`) when the web deps or browser
11
+ * binaries aren't installed.
12
+ */
13
+ import { spawn } from "node:child_process";
14
+ import { existsSync } from "node:fs";
15
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
16
+ import { dirname, join } from "node:path";
17
+ import { fileURLToPath } from "node:url";
18
+ import { collectExecutionSummary } from "./collector.js";
19
+ const CONFIG_REL = "playwright.debug-harness.config.ts";
20
+ const DEFAULT_TIMEOUT_MS = 6 * 60_000;
21
+ /** Walk up from this module to the repo root (the dir whose `web/` has our config). */
22
+ function findWebDir() {
23
+ let dir = dirname(fileURLToPath(import.meta.url));
24
+ for (let i = 0; i < 8; i++) {
25
+ const candidate = join(dir, "web");
26
+ if (existsSync(join(candidate, CONFIG_REL)))
27
+ return candidate;
28
+ const parent = dirname(dir);
29
+ if (parent === dir)
30
+ break;
31
+ dir = parent;
32
+ }
33
+ return null;
34
+ }
35
+ /** Grace period between SIGTERM and SIGKILL when tearing down the child's process group. */
36
+ const GROUP_KILL_GRACE_MS = 5_000;
37
+ /**
38
+ * Kill the Playwright child on timeout. Playwright's webServer (Vite) and the
39
+ * tsx e2e backend spawned by globalSetup are children of this process, not of
40
+ * `child` itself, so a plain `child.kill()` orphans them holding ports
41
+ * 3000/7777. On POSIX, `child` is spawned detached (its own process group), so
42
+ * we can kill the whole group via the negative pid; on win32 (no process
43
+ * groups, and no `shell: true` here) fall back to killing just the child.
44
+ */
45
+ function killChild(child) {
46
+ if (process.platform !== "win32" && child.pid !== undefined) {
47
+ const pgid = child.pid;
48
+ try {
49
+ process.kill(-pgid, "SIGTERM");
50
+ }
51
+ catch {
52
+ // Process group may already be gone.
53
+ }
54
+ setTimeout(() => {
55
+ try {
56
+ process.kill(-pgid, "SIGKILL");
57
+ }
58
+ catch {
59
+ // Process group may already be gone.
60
+ }
61
+ }, GROUP_KILL_GRACE_MS).unref();
62
+ return;
63
+ }
64
+ try {
65
+ child.kill("SIGKILL");
66
+ }
67
+ catch {
68
+ // Already exited.
69
+ }
70
+ }
71
+ function unavailable(reason) {
72
+ return {
73
+ surface: "browser",
74
+ ok: false,
75
+ status: "unavailable",
76
+ error: null,
77
+ durationMs: null,
78
+ summary: collectExecutionSummary([]),
79
+ consoleErrors: [],
80
+ unavailableReason: reason
81
+ };
82
+ }
83
+ export async function runInBrowser(input) {
84
+ const webDir = findWebDir();
85
+ if (!webDir)
86
+ return unavailable("could not locate the web workspace");
87
+ const playwrightBin = join(webDir, "node_modules", ".bin", "playwright");
88
+ if (!existsSync(playwrightBin)) {
89
+ return unavailable("web dependencies not installed (run `npm install` and `npx playwright install chromium`)");
90
+ }
91
+ await mkdir(input.outDir, { recursive: true });
92
+ const graphPath = join(input.outDir, "_graph.json");
93
+ await writeFile(graphPath, JSON.stringify({ graph: input.graph }), "utf8");
94
+ const env = {
95
+ ...process.env,
96
+ NODETOOL_DEBUG_GRAPH: graphPath,
97
+ NODETOOL_DEBUG_OUT: input.outDir,
98
+ NODETOOL_DEBUG_PARAMS: JSON.stringify(input.params ?? {})
99
+ };
100
+ if (input.captureStages) {
101
+ env.NODETOOL_DEBUG_STAGES = "1";
102
+ }
103
+ // Read by debug.spec.ts to arm the in-page run's own timeout, so the
104
+ // Playwright spec doesn't fall back to its internal RUN_TIMEOUT_MS cap.
105
+ if (input.timeoutMs) {
106
+ env.NODETOOL_DEBUG_TIMEOUT = String(input.timeoutMs);
107
+ }
108
+ // The child-kill timer below is the outer backstop; it must stay comfortably
109
+ // above the in-page timeout the spec applies, or the child gets killed
110
+ // before the harness can settle and write record.json.
111
+ const killTimeoutMs = input.timeoutMs !== undefined
112
+ ? Math.max(input.timeoutMs + 60_000, DEFAULT_TIMEOUT_MS)
113
+ : DEFAULT_TIMEOUT_MS;
114
+ const isWindows = process.platform === "win32";
115
+ const exitCode = await new Promise((resolvePromise) => {
116
+ const child = spawn(playwrightBin, ["test", "-c", CONFIG_REL], {
117
+ cwd: webDir,
118
+ env,
119
+ stdio: ["ignore", "pipe", "pipe"],
120
+ // .bin/playwright is a shell shim on win32 (no .exe), so it needs a
121
+ // shell to resolve; shell mode has no process groups, so detach only
122
+ // on POSIX where killChild can use them for whole-tree teardown.
123
+ ...(isWindows ? { shell: true } : { detached: true })
124
+ });
125
+ const onChunk = (buf) => input.onLog?.(buf.toString());
126
+ child.stdout?.on("data", onChunk);
127
+ child.stderr?.on("data", onChunk);
128
+ const timer = setTimeout(() => {
129
+ killChild(child);
130
+ resolvePromise(124);
131
+ }, killTimeoutMs);
132
+ child.on("error", () => {
133
+ clearTimeout(timer);
134
+ resolvePromise(127);
135
+ });
136
+ child.on("exit", (code) => {
137
+ clearTimeout(timer);
138
+ resolvePromise(code ?? 1);
139
+ });
140
+ });
141
+ return buildBrowserReport(input.outDir, exitCode);
142
+ }
143
+ /**
144
+ * Fold the artifacts a Playwright debug run leaves in `outDir`
145
+ * (record.json, console-errors.log, screenshot.png) into a `BrowserRunReport`.
146
+ * Pure file IO — separated from the spawn so it's directly testable against a
147
+ * real captured bundle.
148
+ */
149
+ export async function buildBrowserReport(outDir, exitCode = 0) {
150
+ const recordPath = join(outDir, "record.json");
151
+ if (!existsSync(recordPath)) {
152
+ return unavailable(`Playwright run produced no record (exit ${exitCode}); check that the web app builds and chromium is installed`);
153
+ }
154
+ let record;
155
+ try {
156
+ record = JSON.parse(await readFile(recordPath, "utf8"));
157
+ }
158
+ catch (err) {
159
+ return unavailable(`could not parse browser record: ${String(err)}`);
160
+ }
161
+ const consoleErrors = existsSync(join(outDir, "console-errors.log"))
162
+ ? (await readFile(join(outDir, "console-errors.log"), "utf8"))
163
+ .split("\n")
164
+ .filter(Boolean)
165
+ : [];
166
+ const summary = collectExecutionSummary(record.events ?? []);
167
+ const status = record.status ?? summary.status;
168
+ const report = {
169
+ surface: "browser",
170
+ ok: status === "completed",
171
+ status,
172
+ error: record.error ?? summary.error,
173
+ durationMs: record.durationMs ?? null,
174
+ summary,
175
+ consoleErrors,
176
+ recordFile: "browser/record.json"
177
+ };
178
+ if (existsSync(join(outDir, "screenshot.png"))) {
179
+ report.screenshotFile = "browser/screenshot.png";
180
+ }
181
+ if (existsSync(join(outDir, "stages.json"))) {
182
+ try {
183
+ const stages = JSON.parse(await readFile(join(outDir, "stages.json"), "utf8"));
184
+ report.stages = stages.map((s) => ({
185
+ index: s.index,
186
+ status: s.status,
187
+ file: `browser/${s.file}`
188
+ }));
189
+ }
190
+ catch {
191
+ // A malformed stages manifest just means no staged screenshots.
192
+ }
193
+ }
194
+ return report;
195
+ }
196
+ //# sourceMappingURL=browser-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-runner.js","sourceRoot":"","sources":["../../src/debug/browser-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Re-export of the shared execution-summary collector.
3
+ *
4
+ * The reducer lives in `@nodetool-ai/execution` so the CLI harness, the HTTP
5
+ * debug endpoint and the agent-facing `debug_workflow` tool all distill a run
6
+ * the same way. This module keeps the CLI's original import path.
7
+ */
8
+ export { collectExecutionSummary, previewValue } from "@nodetool-ai/execution/debug";
9
+ //# sourceMappingURL=collector.d.ts.map