@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,82 @@
1
+ /**
2
+ * `nodetool run --supervise` — the DSL file path, executed under supervision.
3
+ *
4
+ * `@nodetool-ai/dsl`'s own `run()` constructs a `WorkflowRunner` directly: one
5
+ * of the grandfathered direct-construction sites that must not gain
6
+ * supervision ad hoc (docs/workflow-supervisor-implementation-plan.md, PR 4).
7
+ * So a supervised DSL run goes through `ExecutionSession` instead, and an
8
+ * unsupervised one keeps taking the untouched `runDslFile` path.
9
+ *
10
+ * Lives in its own module because it pulls the session facade, the node
11
+ * registries, and a provider — none of which an unsupervised `nodetool run`
12
+ * should load.
13
+ */
14
+ import { getDefaultAssetsPath } from "@nodetool-ai/config";
15
+ import { ExecutionSession } from "@nodetool-ai/execution";
16
+ import { resolveLocalSecret } from "./local-secrets.js";
17
+ import { createGraphNodeTypeResolver } from "@nodetool-ai/node-sdk";
18
+ import { ProcessingContext } from "@nodetool-ai/runtime";
19
+ import { FileStorageAdapter } from "@nodetool-ai/storage";
20
+ import { buildFullRegistry } from "./node-registry.js";
21
+ import { dslWorkflowToGraph, loadDslWorkflows } from "./run-dsl.js";
22
+ import { createSupervisorHandle, printSupervisedSummary, recordSupervisorCost, streamInterventionLines } from "./supervisor.js";
23
+ export async function runDslFileSupervised(filePath, config, jsonMode) {
24
+ const workflows = await loadDslWorkflows(filePath);
25
+ const registry = buildFullRegistry();
26
+ const results = {};
27
+ const allInterventions = [];
28
+ for (const [name, workflow] of Object.entries(workflows)) {
29
+ const jobId = `dsl-${Date.now()}-${name}`;
30
+ const context = new ProcessingContext({
31
+ jobId,
32
+ workflowId: null,
33
+ userId: "1",
34
+ secretResolver: resolveLocalSecret,
35
+ storage: new FileStorageAdapter(getDefaultAssetsPath())
36
+ });
37
+ const supervisor = await createSupervisorHandle({ config, context });
38
+ console.error(`Running ${name} supervised by ${supervisor.providerId}/${supervisor.model}...`);
39
+ const session = await ExecutionSession.create({
40
+ graph: dslWorkflowToGraph(workflow),
41
+ registry,
42
+ resolveNodeType: createGraphNodeTypeResolver(registry).resolveNodeType,
43
+ jobId,
44
+ params: {},
45
+ context,
46
+ supervisor: supervisor.handle,
47
+ captureMessages: true
48
+ });
49
+ const lines = streamInterventionLines(session.messages);
50
+ const result = await session.result;
51
+ await lines;
52
+ supervisor.handle.close();
53
+ const interventions = result.interventions ?? [];
54
+ allInterventions.push(...interventions);
55
+ if (interventions.length > 0) {
56
+ await recordSupervisorCost({
57
+ interventions,
58
+ jobId,
59
+ workflowId: null,
60
+ userId: "1",
61
+ providerId: supervisor.providerId,
62
+ model: supervisor.model
63
+ });
64
+ if (!jsonMode)
65
+ printSupervisedSummary(interventions, console.error);
66
+ }
67
+ // A node error the supervisor resolved is not a run failure — unlike the
68
+ // unsupervised DSL path, which rethrows the first node error it finds.
69
+ // Only the run's own terminal status decides.
70
+ if (result.status === "failed") {
71
+ throw new Error(result.error ?? `Workflow ${name} failed`);
72
+ }
73
+ const outputs = {};
74
+ for (const [outputName, values] of Object.entries(result.outputs)) {
75
+ if (values.length > 0)
76
+ outputs[outputName] = values[values.length - 1];
77
+ }
78
+ results[name] = outputs;
79
+ }
80
+ return { results, interventions: allInterventions };
81
+ }
82
+ //# sourceMappingURL=run-dsl-supervised.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-dsl-supervised.js","sourceRoot":"","sources":["../src/run-dsl-supervised.ts"],"names":[],"mappings":"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"}
package/dist/run-dsl.d.ts CHANGED
@@ -7,5 +7,34 @@
7
7
  */
8
8
  import type { Workflow } from "@nodetool-ai/dsl";
9
9
  export declare function isWorkflow(value: unknown): value is Workflow;
10
+ /** Every exported `Workflow` in the file, keyed by export name. */
11
+ export declare function loadDslWorkflows(filePath: string): Promise<Record<string, Workflow>>;
10
12
  export declare function runDslFile(filePath: string): Promise<Record<string, Record<string, unknown>>>;
13
+ /**
14
+ * The graph shape `ExecutionSession` takes, from a DSL workflow. `run()` in
15
+ * `@nodetool-ai/dsl` builds the same descriptors against its own
16
+ * `WorkflowRunner`; supervision goes through the session facade instead
17
+ * (docs/workflow-supervisor-design.md §7), so the mapping is needed here too.
18
+ */
19
+ export declare function dslWorkflowToGraph(wf: Workflow): {
20
+ nodes: {
21
+ id: string;
22
+ type: string;
23
+ properties: Record<string, unknown>;
24
+ dynamic_outputs: Record<string, {
25
+ type: string;
26
+ type_args: never[];
27
+ }> | undefined;
28
+ output_correlation: Record<string, import("@nodetool-ai/protocol").OutputCorrelation> | undefined;
29
+ input_mode: import("@nodetool-ai/protocol").InputMode | undefined;
30
+ is_streaming_output: boolean;
31
+ is_streaming_input: boolean;
32
+ }[];
33
+ edges: {
34
+ source: string;
35
+ sourceHandle: string;
36
+ target: string;
37
+ targetHandle: string;
38
+ }[];
39
+ };
11
40
  //# sourceMappingURL=run-dsl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-dsl.d.ts","sourceRoot":"","sources":["../src/run-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAO5D;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAqBlD"}
1
+ {"version":3,"file":"run-dsl.d.ts","sourceRoot":"","sources":["../src/run-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAO5D;AAED,mEAAmE;AACnE,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAgBnC;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAOlD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ;IAE3C,KAAK;;;;;;;;;;;;;IAUL,KAAK;;;;;;EAOR"}
package/dist/run-dsl.js CHANGED
@@ -7,25 +7,59 @@
7
7
  */
8
8
  import { run as runWorkflow } from "@nodetool-ai/dsl";
9
9
  import { tsImport } from "tsx/esm/api";
10
+ import { pathToFileURL } from "node:url";
10
11
  export function isWorkflow(value) {
11
- return (typeof value === "object" &&
12
+ return ((typeof value === "object" || typeof value === "function") &&
12
13
  value !== null &&
13
14
  Array.isArray(value.nodes) &&
14
15
  Array.isArray(value.edges));
15
16
  }
16
- export async function runDslFile(filePath) {
17
- const mod = (await tsImport(filePath, import.meta.url));
18
- const results = {};
19
- let found = false;
17
+ /** Every exported `Workflow` in the file, keyed by export name. */
18
+ export async function loadDslWorkflows(filePath) {
19
+ const moduleUrl = pathToFileURL(filePath).href;
20
+ const mod = (await tsImport(moduleUrl, import.meta.url));
21
+ const workflows = {};
20
22
  for (const [name, value] of Object.entries(mod)) {
21
- if (isWorkflow(value)) {
22
- found = true;
23
- results[name] = await runWorkflow(value);
24
- }
23
+ if (isWorkflow(value))
24
+ workflows[name] = value;
25
25
  }
26
- if (!found) {
26
+ if (Object.keys(workflows).length === 0) {
27
27
  throw new Error(`No Workflow exports found in ${filePath}`);
28
28
  }
29
+ return workflows;
30
+ }
31
+ export async function runDslFile(filePath) {
32
+ const workflows = await loadDslWorkflows(filePath);
33
+ const results = {};
34
+ for (const [name, wf] of Object.entries(workflows)) {
35
+ results[name] = await runWorkflow(wf);
36
+ }
29
37
  return results;
30
38
  }
39
+ /**
40
+ * The graph shape `ExecutionSession` takes, from a DSL workflow. `run()` in
41
+ * `@nodetool-ai/dsl` builds the same descriptors against its own
42
+ * `WorkflowRunner`; supervision goes through the session facade instead
43
+ * (docs/workflow-supervisor-design.md §7), so the mapping is needed here too.
44
+ */
45
+ export function dslWorkflowToGraph(wf) {
46
+ return {
47
+ nodes: wf.nodes.map((n) => ({
48
+ id: n.id,
49
+ type: n.type,
50
+ properties: n.data,
51
+ dynamic_outputs: n.dynamic_outputs,
52
+ output_correlation: n.output_correlation,
53
+ input_mode: n.input_mode,
54
+ is_streaming_output: n.streaming,
55
+ is_streaming_input: n.streamingInput
56
+ })),
57
+ edges: wf.edges.map((e) => ({
58
+ source: e.source,
59
+ sourceHandle: e.sourceHandle,
60
+ target: e.target,
61
+ targetHandle: e.targetHandle
62
+ }))
63
+ };
64
+ }
31
65
  //# sourceMappingURL=run-dsl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-dsl.js","sourceRoot":"","sources":["../src/run-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,KAAK,CAAC;QACvD,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,KAAK,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAgB;IAEhB,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAGrD,CAAC;IAEF,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"run-dsl.js","sourceRoot":"","sources":["../src/run-dsl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;QAC1D,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,KAAK,CAAC;QACvD,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,KAAK,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB;IAEhB,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAGtD,CAAC;IAEF,MAAM,SAAS,GAA6B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAgB;IAEhB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY;IAC7C,OAAO;QACL,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;YACxC,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,mBAAmB,EAAE,CAAC,CAAC,SAAS;YAChC,kBAAkB,EAAE,CAAC,CAAC,cAAc;SACrC,CAAC,CAAC;QACH,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface RunJsonOptions {
2
+ /**
3
+ * Where oversized payloads are written, created on the first spill. Callers
4
+ * with a run id should scope this per run so a later run does not overwrite
5
+ * files the printed JSON still points at.
6
+ */
7
+ outputDir?: string;
8
+ /** Binary payloads of at least this many bytes go to disk instead. */
9
+ maxInlineBytes?: number;
10
+ }
11
+ /** The JSON text for a run result, plus every payload file it points at. */
12
+ export declare function formatRunJson(value: unknown, opts?: RunJsonOptions): Promise<{
13
+ json: string;
14
+ files: string[];
15
+ }>;
16
+ /** Print a run result as JSON, noting on stderr where any payloads landed. */
17
+ export declare function printRunJson(value: unknown, opts?: RunJsonOptions): Promise<void>;
18
+ /**
19
+ * One-line rendering of a value for the human-readable output. Byte arrays are
20
+ * described rather than expanded, so a 4 MB frame does not cost tens of
21
+ * megabytes of text on its way to being truncated to `maxChars`.
22
+ */
23
+ export declare function previewJson(value: unknown, maxChars?: number): string;
24
+ //# sourceMappingURL=run-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-json.d.ts","sourceRoot":"","sources":["../src/run-json.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA2FD,4EAA4E;AAC5E,wBAAsB,aAAa,CACjC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAmB5C;AAED,8EAA8E;AAC9E,wBAAsB,YAAY,CAChC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CASrE"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * JSON reporting for a finished run.
3
+ *
4
+ * A run that reaches here has already executed and been paid for, so reporting
5
+ * must not be able to fail it. Two things sit between a run result and a JSON
6
+ * string. GPU image nodes emit raw-RGBA bytes as their in-flight format so
7
+ * chained shader ops skip the codec, and every boundary that hands out a
8
+ * portable image encodes them first (`packages/runtime/src/image-codec.ts`) —
9
+ * this is that boundary for the CLI. And three 1024² frames in one
10
+ * `JSON.stringify(…, null, 2)` exceed what a single JS string can hold.
11
+ *
12
+ * So binary payloads at or over `maxInlineBytes` are written next to the run
13
+ * and replaced by a `$file` pointer, and a stringify that still overflows
14
+ * degrades to a summary instead of throwing.
15
+ */
16
+ import { mkdirSync, writeFileSync } from "node:fs";
17
+ import { dirname, join, resolve } from "node:path";
18
+ import { isRawRgbaImage } from "@nodetool-ai/protocol";
19
+ import { encodeRawImageRef } from "@nodetool-ai/runtime";
20
+ import { isFunctionValue, isObjectLike, isRecord, isString } from "./predicates.js";
21
+ /**
22
+ * Above this many bytes a payload is written to disk. A byte array in JSON is
23
+ * one number per byte, so even a modest buffer costs megabytes of text and is
24
+ * unusable to whatever reads it.
25
+ */
26
+ const DEFAULT_MAX_INLINE_BYTES = 64 * 1024;
27
+ /** The file extension for `mimeType`, or `bin` when it names nothing usable. */
28
+ function extensionFor(mimeType) {
29
+ const subtype = mimeType?.split("/")[1]?.split(";")[0]?.replace(/\+.*$/, "");
30
+ return subtype && /^[a-z0-9.-]+$/i.test(subtype) ? subtype : "bin";
31
+ }
32
+ function writeBinary(data, mimeType, spill) {
33
+ if (spill.files.length === 0) {
34
+ mkdirSync(spill.dir, { recursive: true });
35
+ }
36
+ const file = join(spill.dir, `payload-${spill.files.length}.${extensionFor(mimeType)}`);
37
+ writeFileSync(file, data);
38
+ spill.files.push(file);
39
+ const pointer = { $file: file, bytes: data.byteLength };
40
+ if (mimeType) {
41
+ pointer.mimeType = mimeType;
42
+ }
43
+ return pointer;
44
+ }
45
+ async function encodeImage(ref) {
46
+ try {
47
+ const encoded = await encodeRawImageRef(ref);
48
+ return isObjectLike(encoded) ? encoded : ref;
49
+ }
50
+ catch {
51
+ // No codec on this install (sharp missing). Keep the raw ref: its bytes
52
+ // still spill to disk below rather than being dropped.
53
+ return ref;
54
+ }
55
+ }
56
+ /**
57
+ * Walk `value`, PNG-encoding raw-RGBA images and spilling large binaries.
58
+ * `mimeType` is the one declared by the nearest enclosing object, so a ref's
59
+ * `data` is named by its own `mimeType`.
60
+ */
61
+ async function prepare(value, mimeType, spill) {
62
+ if (value instanceof Uint8Array) {
63
+ return value.byteLength >= spill.limit
64
+ ? writeBinary(value, mimeType, spill)
65
+ : value;
66
+ }
67
+ if (Array.isArray(value)) {
68
+ return Promise.all(value.map((item) => prepare(item, mimeType, spill)));
69
+ }
70
+ if (!isObjectLike(value)) {
71
+ return value;
72
+ }
73
+ // A value with its own serializer (a `Date`, say) decides its own JSON.
74
+ // Decomposing it into own enumerable properties turns a timestamp into `{}`.
75
+ if (isFunctionValue(value.toJSON)) {
76
+ return value;
77
+ }
78
+ const record = isRawRgbaImage(value) ? await encodeImage(value) : value;
79
+ const childMime = isString(record.mimeType) ? record.mimeType : mimeType;
80
+ const out = {};
81
+ for (const [key, item] of Object.entries(record)) {
82
+ out[key] = await prepare(item, childMime, spill);
83
+ }
84
+ return out;
85
+ }
86
+ /** The JSON text for a run result, plus every payload file it points at. */
87
+ export async function formatRunJson(value, opts = {}) {
88
+ const spill = {
89
+ dir: opts.outputDir ?? resolve(process.cwd(), "nodetool-output"),
90
+ limit: opts.maxInlineBytes ?? DEFAULT_MAX_INLINE_BYTES,
91
+ files: []
92
+ };
93
+ try {
94
+ const prepared = await prepare(value, undefined, spill);
95
+ return { json: JSON.stringify(prepared, null, 2), files: spill.files };
96
+ }
97
+ catch (e) {
98
+ // Whatever went wrong here, the run itself is done. Report the failure as
99
+ // JSON on the JSON channel instead of raising it over a finished run.
100
+ const summary = {
101
+ error: `Result could not be serialized as JSON: ${String(e)}`,
102
+ keys: isRecord(value) ? Object.keys(value) : [],
103
+ files: spill.files
104
+ };
105
+ return { json: JSON.stringify(summary, null, 2), files: spill.files };
106
+ }
107
+ }
108
+ /** Print a run result as JSON, noting on stderr where any payloads landed. */
109
+ export async function printRunJson(value, opts = {}) {
110
+ const { json, files } = await formatRunJson(value, opts);
111
+ console.log(json);
112
+ const first = files[0];
113
+ if (first) {
114
+ console.error(`Wrote ${files.length} payload file(s) to ${dirname(first)}`);
115
+ }
116
+ }
117
+ /**
118
+ * One-line rendering of a value for the human-readable output. Byte arrays are
119
+ * described rather than expanded, so a 4 MB frame does not cost tens of
120
+ * megabytes of text on its way to being truncated to `maxChars`.
121
+ */
122
+ export function previewJson(value, maxChars) {
123
+ // `JSON.stringify` is typed `string` but returns undefined for an undefined
124
+ // or non-serializable root.
125
+ const text = JSON.stringify(value, (_key, item) => item instanceof Uint8Array ? `<${item.byteLength} bytes>` : item);
126
+ if (text === undefined)
127
+ return "undefined";
128
+ if (maxChars === undefined || text.length <= maxChars)
129
+ return text;
130
+ return `${text.slice(0, maxChars)}…`;
131
+ }
132
+ //# sourceMappingURL=run-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-json.js","sourceRoot":"","sources":["../src/run-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Discover installed sandbox packs and make the catalog this process's default,
3
+ * so the CLI's validation and execution harnesses resolve sandbox modules
4
+ * through the same instance the server uses. Discovery executes no pack code.
5
+ * A failure leaves the CLI without a catalog rather than without a registry.
6
+ *
7
+ * This path never compiles. npm-backed modules resolve only from the cache,
8
+ * whose entries are re-verified against their inputs' current contents; a miss
9
+ * becomes the `pending-compile` diagnostic naming `nodetool packs compile`.
10
+ */
11
+ export declare function installSandboxCatalog(): void;
12
+ /**
13
+ * `specifier -> absolute path to that installed pack's shipped .d.ts`, read
14
+ * from each discovered pack's own `package.json` `types` field (a pack ships
15
+ * none by declaring no `types` field, which this simply leaves out). Used by
16
+ * `jsscript validate` to type-check a script's imports against the packs it
17
+ * actually has installed — see `@nodetool-ai/execution`'s `type-check.ts`.
18
+ * Runs discovery again rather than threading it through
19
+ * {@link installSandboxCatalog}, which only keeps the catalog; this stays a
20
+ * separate, cheap, synchronous call so a caller that does not need types
21
+ * pays nothing for them.
22
+ */
23
+ export declare function discoverPackDtsSources(): ReadonlyMap<string, string>;
24
+ //# sourceMappingURL=sandbox-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-catalog.d.ts","sourceRoot":"","sources":["../src/sandbox-catalog.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAa5C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAepE"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The CLI's sandbox pack catalog, apart from the node registry so a harness
3
+ * that runs sandbox code without node types does not load every node package.
4
+ */
5
+ import { existsSync, readFileSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ import { discoverSandboxCatalog } from "@nodetool-ai/node-sdk";
8
+ import { setProcessSandboxModuleCatalog } from "@nodetool-ai/runtime";
9
+ import { createCachedNpmLookup } from "@nodetool-ai/sandbox-compiler/cache";
10
+ import { z } from "zod";
11
+ /** The one field this module reads off a pack's `package.json`; everything else in the file is irrelevant here. */
12
+ const packageJsonTypesField = z
13
+ .object({ types: z.string().trim().min(1).optional() })
14
+ .passthrough();
15
+ /** The pack's declared `types` path, or `undefined` for any reason — missing file, invalid JSON, no `types` field. Never throws. */
16
+ function readPackageJsonTypesField(packageJsonPath) {
17
+ if (!existsSync(packageJsonPath))
18
+ return undefined;
19
+ let raw;
20
+ try {
21
+ raw = JSON.parse(readFileSync(packageJsonPath, "utf8"));
22
+ }
23
+ catch {
24
+ return undefined;
25
+ }
26
+ const parsed = packageJsonTypesField.safeParse(raw);
27
+ return parsed.success ? parsed.data.types : undefined;
28
+ }
29
+ /**
30
+ * Discover installed sandbox packs and make the catalog this process's default,
31
+ * so the CLI's validation and execution harnesses resolve sandbox modules
32
+ * through the same instance the server uses. Discovery executes no pack code.
33
+ * A failure leaves the CLI without a catalog rather than without a registry.
34
+ *
35
+ * This path never compiles. npm-backed modules resolve only from the cache,
36
+ * whose entries are re-verified against their inputs' current contents; a miss
37
+ * becomes the `pending-compile` diagnostic naming `nodetool packs compile`.
38
+ */
39
+ export function installSandboxCatalog() {
40
+ try {
41
+ setProcessSandboxModuleCatalog(discoverSandboxCatalog(undefined, { compiled: createCachedNpmLookup() })
42
+ .catalog);
43
+ }
44
+ catch (error) {
45
+ console.warn(`Sandbox module catalog unavailable: ${error instanceof Error ? error.message : String(error)}`);
46
+ }
47
+ }
48
+ /**
49
+ * `specifier -> absolute path to that installed pack's shipped .d.ts`, read
50
+ * from each discovered pack's own `package.json` `types` field (a pack ships
51
+ * none by declaring no `types` field, which this simply leaves out). Used by
52
+ * `jsscript validate` to type-check a script's imports against the packs it
53
+ * actually has installed — see `@nodetool-ai/execution`'s `type-check.ts`.
54
+ * Runs discovery again rather than threading it through
55
+ * {@link installSandboxCatalog}, which only keeps the catalog; this stays a
56
+ * separate, cheap, synchronous call so a caller that does not need types
57
+ * pays nothing for them.
58
+ */
59
+ export function discoverPackDtsSources() {
60
+ const sources = new Map();
61
+ try {
62
+ const { discoveries } = discoverSandboxCatalog();
63
+ for (const discovery of discoveries) {
64
+ const types = readPackageJsonTypesField(join(discovery.dir, "package.json"));
65
+ if (types === undefined)
66
+ continue;
67
+ const dtsPath = join(discovery.dir, types);
68
+ if (existsSync(dtsPath))
69
+ sources.set(discovery.name, dtsPath);
70
+ }
71
+ }
72
+ catch {
73
+ // Discovery failure here is the same non-fatal case installSandboxCatalog
74
+ // already warns about; a caller that wants types simply gets none.
75
+ }
76
+ return sources;
77
+ }
78
+ //# sourceMappingURL=sandbox-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-catalog.js","sourceRoot":"","sources":["../src/sandbox-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mHAAmH;AACnH,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;KACtD,WAAW,EAAE,CAAC;AAEjB,oIAAoI;AACpI,SAAS,yBAAyB,CAAC,eAAuB;IACxD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC;QACH,8BAA8B,CAC5B,sBAAsB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE,CAAC;aACrE,OAAO,CACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,uCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,GAAG,sBAAsB,EAAE,CAAC;QACjD,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;YAC7E,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,mEAAmE;IACrE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,18 +1,19 @@
1
- export interface ChatSettings {
1
+ interface ChatSettings {
2
2
  provider: string;
3
3
  model: string;
4
- agentMode: boolean;
5
- /**
6
- * Which planner to use when agent mode is on:
7
- * - "graph" — GraphPlanner builds a workflow graph (default; uses
8
- * `nodetool.*` core nodes plus the `find_model` tool).
9
- * - "multi" — TaskPlanner builds a parallel task DAG of LLM steps.
10
- */
11
- agentPlanner: "multi" | "graph";
12
4
  enabledTools: string[];
13
- workspace: string;
14
5
  }
6
+ /**
7
+ * Tools the chat turn is broken without, added to a settings file that predates
8
+ * them. The `nodetool.*` object model documents these namespaces, so a belt
9
+ * missing one turns a documented call into "tool not in this toolbelt" —
10
+ * which is what `nodetool.models.pick()` did until `find_model` landed here.
11
+ * They need no credential of their own: each resolves its provider from the
12
+ * model it is handed, or reports that none is configured.
13
+ */
14
+ export declare const ALWAYS_ENABLED_TOOLS: readonly string[];
15
15
  export declare const DEFAULT_SETTINGS: ChatSettings;
16
16
  export declare function loadSettings(): Promise<ChatSettings>;
17
17
  export declare function saveSettings(settings: Partial<ChatSettings>): Promise<void>;
18
+ export {};
18
19
  //# sourceMappingURL=settings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,EAAE,YAsC9B,CAAC;AA0BF,wBAAsB,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAO1D;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAyCjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAiC9B,CAAC;AA4CF,wBAAsB,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAQ1D;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf"}