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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/README.md +79 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/ExecutionTree.d.ts +2 -1
  4. package/dist/ExecutionTree.d.ts.map +1 -1
  5. package/dist/ExecutionTree.js +1 -1
  6. package/dist/ExecutionTree.js.map +1 -1
  7. package/dist/affected/affected.d.ts +50 -0
  8. package/dist/affected/affected.d.ts.map +1 -0
  9. package/dist/affected/affected.js +118 -0
  10. package/dist/affected/affected.js.map +1 -0
  11. package/dist/agent-toolbelt.d.ts +15 -0
  12. package/dist/agent-toolbelt.d.ts.map +1 -0
  13. package/dist/agent-toolbelt.js +28 -0
  14. package/dist/agent-toolbelt.js.map +1 -0
  15. package/dist/api-client.d.ts +12 -0
  16. package/dist/api-client.d.ts.map +1 -0
  17. package/dist/api-client.js +21 -0
  18. package/dist/api-client.js.map +1 -0
  19. package/dist/app-build/bundle.d.ts +15 -0
  20. package/dist/app-build/bundle.d.ts.map +1 -0
  21. package/dist/app-build/bundle.js +45 -0
  22. package/dist/app-build/bundle.js.map +1 -0
  23. package/dist/app-build/watch.d.ts +13 -0
  24. package/dist/app-build/watch.d.ts.map +1 -0
  25. package/dist/app-build/watch.js +25 -0
  26. package/dist/app-build/watch.js.map +1 -0
  27. package/dist/app-debug/app-target.d.ts +14 -0
  28. package/dist/app-debug/app-target.d.ts.map +1 -0
  29. package/dist/app-debug/app-target.js +120 -0
  30. package/dist/app-debug/app-target.js.map +1 -0
  31. package/dist/app-debug/harness.d.ts +27 -0
  32. package/dist/app-debug/harness.d.ts.map +1 -0
  33. package/dist/app-debug/harness.js +93 -0
  34. package/dist/app-debug/harness.js.map +1 -0
  35. package/dist/app-debug/index.d.ts +12 -0
  36. package/dist/app-debug/index.d.ts.map +1 -0
  37. package/dist/app-debug/index.js +9 -0
  38. package/dist/app-debug/index.js.map +1 -0
  39. package/dist/app.d.ts +38 -48
  40. package/dist/app.d.ts.map +1 -1
  41. package/dist/app.js +979 -677
  42. package/dist/app.js.map +1 -1
  43. package/dist/bash-tool.d.ts +13 -0
  44. package/dist/bash-tool.d.ts.map +1 -0
  45. package/dist/bash-tool.js +85 -0
  46. package/dist/bash-tool.js.map +1 -0
  47. package/dist/chat-codeact.d.ts +85 -0
  48. package/dist/chat-codeact.d.ts.map +1 -0
  49. package/dist/chat-codeact.js +141 -0
  50. package/dist/chat-codeact.js.map +1 -0
  51. package/dist/chat-context.d.ts +18 -0
  52. package/dist/chat-context.d.ts.map +1 -0
  53. package/dist/chat-context.js +27 -0
  54. package/dist/chat-context.js.map +1 -0
  55. package/dist/chat-media.d.ts +3 -0
  56. package/dist/chat-media.d.ts.map +1 -0
  57. package/dist/chat-media.js +46 -0
  58. package/dist/chat-media.js.map +1 -0
  59. package/dist/chat-prompts.d.ts +20 -0
  60. package/dist/chat-prompts.d.ts.map +1 -0
  61. package/dist/chat-prompts.js +42 -0
  62. package/dist/chat-prompts.js.map +1 -0
  63. package/dist/chat-sessions.d.ts +25 -0
  64. package/dist/chat-sessions.d.ts.map +1 -0
  65. package/dist/chat-sessions.js +153 -0
  66. package/dist/chat-sessions.js.map +1 -0
  67. package/dist/command-errors.d.ts +10 -0
  68. package/dist/command-errors.d.ts.map +1 -0
  69. package/dist/command-errors.js +15 -0
  70. package/dist/command-errors.js.map +1 -0
  71. package/dist/commands/__tests__/jtbd.test.d.ts +2 -0
  72. package/dist/commands/__tests__/jtbd.test.d.ts.map +1 -0
  73. package/dist/commands/__tests__/jtbd.test.js +120 -0
  74. package/dist/commands/__tests__/jtbd.test.js.map +1 -0
  75. package/dist/commands/__tests__/timeline-render-audio.test.d.ts +2 -0
  76. package/dist/commands/__tests__/timeline-render-audio.test.d.ts.map +1 -0
  77. package/dist/commands/__tests__/timeline-render-audio.test.js +53 -0
  78. package/dist/commands/__tests__/timeline-render-audio.test.js.map +1 -0
  79. package/dist/commands/__tests__/timeline-render.test.d.ts +2 -0
  80. package/dist/commands/__tests__/timeline-render.test.d.ts.map +1 -0
  81. package/dist/commands/__tests__/timeline-render.test.js +115 -0
  82. package/dist/commands/__tests__/timeline-render.test.js.map +1 -0
  83. package/dist/commands/affected.d.ts +9 -0
  84. package/dist/commands/affected.d.ts.map +1 -0
  85. package/dist/commands/affected.js +122 -0
  86. package/dist/commands/affected.js.map +1 -0
  87. package/dist/commands/agent.d.ts +26 -4
  88. package/dist/commands/agent.d.ts.map +1 -1
  89. package/dist/commands/agent.js +327 -306
  90. package/dist/commands/agent.js.map +1 -1
  91. package/dist/commands/app.d.ts +3 -0
  92. package/dist/commands/app.d.ts.map +1 -0
  93. package/dist/commands/app.js +381 -0
  94. package/dist/commands/app.js.map +1 -0
  95. package/dist/commands/apps.d.ts +15 -0
  96. package/dist/commands/apps.d.ts.map +1 -0
  97. package/dist/commands/apps.js +180 -0
  98. package/dist/commands/apps.js.map +1 -0
  99. package/dist/commands/auth.d.ts +12 -0
  100. package/dist/commands/auth.d.ts.map +1 -0
  101. package/dist/commands/auth.js +154 -0
  102. package/dist/commands/auth.js.map +1 -0
  103. package/dist/commands/collections.d.ts +10 -0
  104. package/dist/commands/collections.d.ts.map +1 -0
  105. package/dist/commands/collections.js +257 -0
  106. package/dist/commands/collections.js.map +1 -0
  107. package/dist/commands/costs.d.ts +15 -0
  108. package/dist/commands/costs.d.ts.map +1 -0
  109. package/dist/commands/costs.js +201 -0
  110. package/dist/commands/costs.js.map +1 -0
  111. package/dist/commands/db.d.ts +3 -0
  112. package/dist/commands/db.d.ts.map +1 -0
  113. package/dist/commands/db.js +176 -0
  114. package/dist/commands/db.js.map +1 -0
  115. package/dist/commands/debug.d.ts +13 -0
  116. package/dist/commands/debug.d.ts.map +1 -0
  117. package/dist/commands/debug.js +138 -0
  118. package/dist/commands/debug.js.map +1 -0
  119. package/dist/commands/deploy-helpers.d.ts +49 -18
  120. package/dist/commands/deploy-helpers.d.ts.map +1 -1
  121. package/dist/commands/deploy-helpers.js +10 -276
  122. package/dist/commands/deploy-helpers.js.map +1 -1
  123. package/dist/commands/deploy.d.ts +0 -1
  124. package/dist/commands/deploy.d.ts.map +1 -1
  125. package/dist/commands/deploy.js +21 -217
  126. package/dist/commands/deploy.js.map +1 -1
  127. package/dist/commands/eval.d.ts +152 -0
  128. package/dist/commands/eval.d.ts.map +1 -0
  129. package/dist/commands/eval.js +688 -0
  130. package/dist/commands/eval.js.map +1 -0
  131. package/dist/commands/game.d.ts +4 -0
  132. package/dist/commands/game.d.ts.map +1 -0
  133. package/dist/commands/game.js +395 -0
  134. package/dist/commands/game.js.map +1 -0
  135. package/dist/commands/generate.d.ts +17 -0
  136. package/dist/commands/generate.d.ts.map +1 -0
  137. package/dist/commands/generate.js +324 -0
  138. package/dist/commands/generate.js.map +1 -0
  139. package/dist/commands/generations.d.ts +17 -0
  140. package/dist/commands/generations.d.ts.map +1 -0
  141. package/dist/commands/generations.js +408 -0
  142. package/dist/commands/generations.js.map +1 -0
  143. package/dist/commands/harness.d.ts +19 -0
  144. package/dist/commands/harness.d.ts.map +1 -0
  145. package/dist/commands/harness.js +361 -0
  146. package/dist/commands/harness.js.map +1 -0
  147. package/dist/commands/js-script-validation-output.d.ts +7 -0
  148. package/dist/commands/js-script-validation-output.d.ts.map +1 -0
  149. package/dist/commands/js-script-validation-output.js +5 -0
  150. package/dist/commands/js-script-validation-output.js.map +1 -0
  151. package/dist/commands/js-script-versions.d.ts +53 -0
  152. package/dist/commands/js-script-versions.d.ts.map +1 -0
  153. package/dist/commands/js-script-versions.js +89 -0
  154. package/dist/commands/js-script-versions.js.map +1 -0
  155. package/dist/commands/js-script.d.ts +29 -0
  156. package/dist/commands/js-script.d.ts.map +1 -0
  157. package/dist/commands/js-script.js +227 -0
  158. package/dist/commands/js-script.js.map +1 -0
  159. package/dist/commands/jtbd.d.ts +38 -0
  160. package/dist/commands/jtbd.d.ts.map +1 -0
  161. package/dist/commands/jtbd.js +261 -0
  162. package/dist/commands/jtbd.js.map +1 -0
  163. package/dist/commands/local-db.d.ts +16 -0
  164. package/dist/commands/local-db.d.ts.map +1 -0
  165. package/dist/commands/local-db.js +33 -0
  166. package/dist/commands/local-db.js.map +1 -0
  167. package/dist/commands/migrate-code-inputs.d.ts +24 -0
  168. package/dist/commands/migrate-code-inputs.d.ts.map +1 -0
  169. package/dist/commands/migrate-code-inputs.js +120 -0
  170. package/dist/commands/migrate-code-inputs.js.map +1 -0
  171. package/dist/commands/models-hf.js +4 -4
  172. package/dist/commands/models-hf.js.map +1 -1
  173. package/dist/commands/models-recommended.d.ts.map +1 -1
  174. package/dist/commands/models-recommended.js +16 -24
  175. package/dist/commands/models-recommended.js.map +1 -1
  176. package/dist/commands/node.d.ts +10 -0
  177. package/dist/commands/node.d.ts.map +1 -0
  178. package/dist/commands/node.js +72 -0
  179. package/dist/commands/node.js.map +1 -0
  180. package/dist/commands/output.d.ts +24 -0
  181. package/dist/commands/output.d.ts.map +1 -0
  182. package/dist/commands/output.js +132 -0
  183. package/dist/commands/output.js.map +1 -0
  184. package/dist/commands/package-helpers.d.ts +1 -7
  185. package/dist/commands/package-helpers.d.ts.map +1 -1
  186. package/dist/commands/package-helpers.js +3 -26
  187. package/dist/commands/package-helpers.js.map +1 -1
  188. package/dist/commands/package.js +2 -2
  189. package/dist/commands/package.js.map +1 -1
  190. package/dist/commands/packs.d.ts +13 -0
  191. package/dist/commands/packs.d.ts.map +1 -0
  192. package/dist/commands/packs.js +60 -0
  193. package/dist/commands/packs.js.map +1 -0
  194. package/dist/commands/reliability.d.ts +14 -0
  195. package/dist/commands/reliability.d.ts.map +1 -0
  196. package/dist/commands/reliability.js +80 -0
  197. package/dist/commands/reliability.js.map +1 -0
  198. package/dist/commands/resource-read.d.ts +28 -0
  199. package/dist/commands/resource-read.d.ts.map +1 -0
  200. package/dist/commands/resource-read.js +316 -0
  201. package/dist/commands/resource-read.js.map +1 -0
  202. package/dist/commands/sketch-validation-output.d.ts +7 -0
  203. package/dist/commands/sketch-validation-output.d.ts.map +1 -0
  204. package/dist/commands/sketch-validation-output.js +5 -0
  205. package/dist/commands/sketch-validation-output.js.map +1 -0
  206. package/dist/commands/sketch-versions.d.ts +66 -0
  207. package/dist/commands/sketch-versions.d.ts.map +1 -0
  208. package/dist/commands/sketch-versions.js +108 -0
  209. package/dist/commands/sketch-versions.js.map +1 -0
  210. package/dist/commands/sketch.d.ts +21 -0
  211. package/dist/commands/sketch.d.ts.map +1 -0
  212. package/dist/commands/sketch.js +117 -0
  213. package/dist/commands/sketch.js.map +1 -0
  214. package/dist/commands/storage.d.ts +24 -0
  215. package/dist/commands/storage.d.ts.map +1 -0
  216. package/dist/commands/storage.js +112 -0
  217. package/dist/commands/storage.js.map +1 -0
  218. package/dist/commands/telegram.d.ts +11 -0
  219. package/dist/commands/telegram.d.ts.map +1 -0
  220. package/dist/commands/telegram.js +66 -0
  221. package/dist/commands/telegram.js.map +1 -0
  222. package/dist/commands/timeline-render.d.ts +80 -0
  223. package/dist/commands/timeline-render.d.ts.map +1 -0
  224. package/dist/commands/timeline-render.js +465 -0
  225. package/dist/commands/timeline-render.js.map +1 -0
  226. package/dist/commands/timeline-validation-output.d.ts +7 -0
  227. package/dist/commands/timeline-validation-output.d.ts.map +1 -0
  228. package/dist/commands/timeline-validation-output.js +9 -0
  229. package/dist/commands/timeline-validation-output.js.map +1 -0
  230. package/dist/commands/timeline-versions.d.ts +72 -0
  231. package/dist/commands/timeline-versions.d.ts.map +1 -0
  232. package/dist/commands/timeline-versions.js +108 -0
  233. package/dist/commands/timeline-versions.js.map +1 -0
  234. package/dist/commands/timeline.d.ts +22 -0
  235. package/dist/commands/timeline.d.ts.map +1 -0
  236. package/dist/commands/timeline.js +119 -0
  237. package/dist/commands/timeline.js.map +1 -0
  238. package/dist/commands/validate.d.ts +22 -0
  239. package/dist/commands/validate.d.ts.map +1 -0
  240. package/dist/commands/validate.js +127 -0
  241. package/dist/commands/validate.js.map +1 -0
  242. package/dist/commands/validation-output.d.ts +25 -0
  243. package/dist/commands/validation-output.d.ts.map +1 -0
  244. package/dist/commands/validation-output.js +29 -0
  245. package/dist/commands/validation-output.js.map +1 -0
  246. package/dist/commands/version-commands.d.ts +94 -0
  247. package/dist/commands/version-commands.d.ts.map +1 -0
  248. package/dist/commands/version-commands.js +227 -0
  249. package/dist/commands/version-commands.js.map +1 -0
  250. package/dist/commands/worker-models.d.ts +13 -0
  251. package/dist/commands/worker-models.d.ts.map +1 -0
  252. package/dist/commands/worker-models.js +207 -0
  253. package/dist/commands/worker-models.js.map +1 -0
  254. package/dist/commands/worker.d.ts +23 -0
  255. package/dist/commands/worker.d.ts.map +1 -0
  256. package/dist/commands/worker.js +374 -0
  257. package/dist/commands/worker.js.map +1 -0
  258. package/dist/debug/browser-runner.d.ts +21 -0
  259. package/dist/debug/browser-runner.d.ts.map +1 -0
  260. package/dist/debug/browser-runner.js +196 -0
  261. package/dist/debug/browser-runner.js.map +1 -0
  262. package/dist/debug/collector.d.ts +9 -0
  263. package/dist/debug/collector.d.ts.map +1 -0
  264. package/dist/debug/collector.js +9 -0
  265. package/dist/debug/collector.js.map +1 -0
  266. package/dist/debug/diff.d.ts +48 -0
  267. package/dist/debug/diff.d.ts.map +1 -0
  268. package/dist/debug/diff.js +68 -0
  269. package/dist/debug/diff.js.map +1 -0
  270. package/dist/debug/harness.d.ts +11 -0
  271. package/dist/debug/harness.d.ts.map +1 -0
  272. package/dist/debug/harness.js +103 -0
  273. package/dist/debug/harness.js.map +1 -0
  274. package/dist/debug/index.d.ts +17 -0
  275. package/dist/debug/index.d.ts.map +1 -0
  276. package/dist/debug/index.js +16 -0
  277. package/dist/debug/index.js.map +1 -0
  278. package/dist/debug/markdown.d.ts +3 -0
  279. package/dist/debug/markdown.d.ts.map +1 -0
  280. package/dist/debug/markdown.js +127 -0
  281. package/dist/debug/markdown.js.map +1 -0
  282. package/dist/debug/server-runner.d.ts +22 -0
  283. package/dist/debug/server-runner.d.ts.map +1 -0
  284. package/dist/debug/server-runner.js +164 -0
  285. package/dist/debug/server-runner.js.map +1 -0
  286. package/dist/debug/target.d.ts +34 -0
  287. package/dist/debug/target.d.ts.map +1 -0
  288. package/dist/debug/target.js +104 -0
  289. package/dist/debug/target.js.map +1 -0
  290. package/dist/debug/trace.d.ts +30 -0
  291. package/dist/debug/trace.d.ts.map +1 -0
  292. package/dist/debug/trace.js +87 -0
  293. package/dist/debug/trace.js.map +1 -0
  294. package/dist/debug/types.d.ts +82 -0
  295. package/dist/debug/types.d.ts.map +1 -0
  296. package/dist/debug/types.js +13 -0
  297. package/dist/debug/types.js.map +1 -0
  298. package/dist/debug/verdict.d.ts +3 -0
  299. package/dist/debug/verdict.d.ts.map +1 -0
  300. package/dist/debug/verdict.js +78 -0
  301. package/dist/debug/verdict.js.map +1 -0
  302. package/dist/debug/watch.d.ts +23 -0
  303. package/dist/debug/watch.d.ts.map +1 -0
  304. package/dist/debug/watch.js +68 -0
  305. package/dist/debug/watch.js.map +1 -0
  306. package/dist/diagnose.d.ts +139 -0
  307. package/dist/diagnose.d.ts.map +1 -0
  308. package/dist/diagnose.js +418 -0
  309. package/dist/diagnose.js.map +1 -0
  310. package/dist/evals/graph-runner.d.ts +8 -0
  311. package/dist/evals/graph-runner.d.ts.map +1 -0
  312. package/dist/evals/graph-runner.js +136 -0
  313. package/dist/evals/graph-runner.js.map +1 -0
  314. package/dist/harness/capability-coverage.d.ts +161 -0
  315. package/dist/harness/capability-coverage.d.ts.map +1 -0
  316. package/dist/harness/capability-coverage.js +266 -0
  317. package/dist/harness/capability-coverage.js.map +1 -0
  318. package/dist/harness/capability-table.d.ts +17 -0
  319. package/dist/harness/capability-table.d.ts.map +1 -0
  320. package/dist/harness/capability-table.js +3576 -0
  321. package/dist/harness/capability-table.js.map +1 -0
  322. package/dist/harness/changed-files.d.ts +18 -0
  323. package/dist/harness/changed-files.d.ts.map +1 -0
  324. package/dist/harness/changed-files.js +76 -0
  325. package/dist/harness/changed-files.js.map +1 -0
  326. package/dist/harness/declared-capabilities.d.ts +12 -0
  327. package/dist/harness/declared-capabilities.d.ts.map +1 -0
  328. package/dist/harness/declared-capabilities.js +21 -0
  329. package/dist/harness/declared-capabilities.js.map +1 -0
  330. package/dist/harness/registry.d.ts +162 -0
  331. package/dist/harness/registry.d.ts.map +1 -0
  332. package/dist/harness/registry.js +1738 -0
  333. package/dist/harness/registry.js.map +1 -0
  334. package/dist/index.js +121 -130
  335. package/dist/index.js.map +1 -1
  336. package/dist/interaction-script.d.ts +17 -0
  337. package/dist/interaction-script.d.ts.map +1 -0
  338. package/dist/interaction-script.js +47 -0
  339. package/dist/interaction-script.js.map +1 -0
  340. package/dist/js-script-debug/harness.d.ts +114 -0
  341. package/dist/js-script-debug/harness.d.ts.map +1 -0
  342. package/dist/js-script-debug/harness.js +252 -0
  343. package/dist/js-script-debug/harness.js.map +1 -0
  344. package/dist/js-script-debug/index.d.ts +9 -0
  345. package/dist/js-script-debug/index.d.ts.map +1 -0
  346. package/dist/js-script-debug/index.js +9 -0
  347. package/dist/js-script-debug/index.js.map +1 -0
  348. package/dist/js-script-debug/interactions.d.ts +19 -0
  349. package/dist/js-script-debug/interactions.d.ts.map +1 -0
  350. package/dist/js-script-debug/interactions.js +17 -0
  351. package/dist/js-script-debug/interactions.js.map +1 -0
  352. package/dist/js-script-debug/target.d.ts +20 -0
  353. package/dist/js-script-debug/target.d.ts.map +1 -0
  354. package/dist/js-script-debug/target.js +78 -0
  355. package/dist/js-script-debug/target.js.map +1 -0
  356. package/dist/local-model-interfaces.d.ts +20 -0
  357. package/dist/local-model-interfaces.d.ts.map +1 -0
  358. package/dist/local-model-interfaces.js +64 -0
  359. package/dist/local-model-interfaces.js.map +1 -0
  360. package/dist/local-secrets.d.ts +3 -0
  361. package/dist/local-secrets.d.ts.map +1 -0
  362. package/dist/local-secrets.js +16 -0
  363. package/dist/local-secrets.js.map +1 -0
  364. package/dist/markdown.d.ts.map +1 -1
  365. package/dist/markdown.js +7 -2
  366. package/dist/markdown.js.map +1 -1
  367. package/dist/node/run-node.d.ts +28 -0
  368. package/dist/node/run-node.d.ts.map +1 -0
  369. package/dist/node/run-node.js +76 -0
  370. package/dist/node/run-node.js.map +1 -0
  371. package/dist/node-registry.d.ts +13 -0
  372. package/dist/node-registry.d.ts.map +1 -0
  373. package/dist/node-registry.js +36 -0
  374. package/dist/node-registry.js.map +1 -0
  375. package/dist/nodetool.js +845 -309
  376. package/dist/nodetool.js.map +1 -1
  377. package/dist/numeric-options.d.ts +22 -0
  378. package/dist/numeric-options.d.ts.map +1 -0
  379. package/dist/numeric-options.js +45 -0
  380. package/dist/numeric-options.js.map +1 -0
  381. package/dist/permission-gate.d.ts +55 -0
  382. package/dist/permission-gate.d.ts.map +1 -0
  383. package/dist/permission-gate.js +118 -0
  384. package/dist/permission-gate.js.map +1 -0
  385. package/dist/predicates.d.ts +6 -0
  386. package/dist/predicates.d.ts.map +1 -0
  387. package/dist/predicates.js +6 -0
  388. package/dist/predicates.js.map +1 -0
  389. package/dist/providers.d.ts +73 -10
  390. package/dist/providers.d.ts.map +1 -1
  391. package/dist/providers.js +329 -97
  392. package/dist/providers.js.map +1 -1
  393. package/dist/readline-input.d.ts +13 -19
  394. package/dist/readline-input.d.ts.map +1 -1
  395. package/dist/readline-input.js +201 -190
  396. package/dist/readline-input.js.map +1 -1
  397. package/dist/run-budget.d.ts +40 -0
  398. package/dist/run-budget.d.ts.map +1 -0
  399. package/dist/run-budget.js +119 -0
  400. package/dist/run-budget.js.map +1 -0
  401. package/dist/run-dsl-supervised.d.ts +11 -0
  402. package/dist/run-dsl-supervised.d.ts.map +1 -0
  403. package/dist/run-dsl-supervised.js +82 -0
  404. package/dist/run-dsl-supervised.js.map +1 -0
  405. package/dist/run-dsl.d.ts +23 -0
  406. package/dist/run-dsl.d.ts.map +1 -1
  407. package/dist/run-dsl.js +40 -9
  408. package/dist/run-dsl.js.map +1 -1
  409. package/dist/run-json.d.ts +24 -0
  410. package/dist/run-json.d.ts.map +1 -0
  411. package/dist/run-json.js +132 -0
  412. package/dist/run-json.js.map +1 -0
  413. package/dist/sandbox-catalog.d.ts +12 -0
  414. package/dist/sandbox-catalog.d.ts.map +1 -0
  415. package/dist/sandbox-catalog.js +27 -0
  416. package/dist/sandbox-catalog.js.map +1 -0
  417. package/dist/settings.d.ts +11 -10
  418. package/dist/settings.d.ts.map +1 -1
  419. package/dist/settings.js +71 -13
  420. package/dist/settings.js.map +1 -1
  421. package/dist/sketch-debug/harness.d.ts +87 -0
  422. package/dist/sketch-debug/harness.d.ts.map +1 -0
  423. package/dist/sketch-debug/harness.js +178 -0
  424. package/dist/sketch-debug/harness.js.map +1 -0
  425. package/dist/sketch-debug/index.d.ts +9 -0
  426. package/dist/sketch-debug/index.d.ts.map +1 -0
  427. package/dist/sketch-debug/index.js +9 -0
  428. package/dist/sketch-debug/index.js.map +1 -0
  429. package/dist/sketch-debug/interactions.d.ts +19 -0
  430. package/dist/sketch-debug/interactions.d.ts.map +1 -0
  431. package/dist/sketch-debug/interactions.js +17 -0
  432. package/dist/sketch-debug/interactions.js.map +1 -0
  433. package/dist/sketch-debug/target.d.ts +48 -0
  434. package/dist/sketch-debug/target.d.ts.map +1 -0
  435. package/dist/sketch-debug/target.js +138 -0
  436. package/dist/sketch-debug/target.js.map +1 -0
  437. package/dist/stdin.d.ts +18 -19
  438. package/dist/stdin.d.ts.map +1 -1
  439. package/dist/stdin.js +159 -157
  440. package/dist/stdin.js.map +1 -1
  441. package/dist/supervisor.d.ts +97 -0
  442. package/dist/supervisor.d.ts.map +1 -0
  443. package/dist/supervisor.js +194 -0
  444. package/dist/supervisor.js.map +1 -0
  445. package/dist/terminal-clipboard.d.ts +3 -0
  446. package/dist/terminal-clipboard.d.ts.map +1 -0
  447. package/dist/terminal-clipboard.js +24 -0
  448. package/dist/terminal-clipboard.js.map +1 -0
  449. package/dist/terminal-mouse.d.ts +24 -0
  450. package/dist/terminal-mouse.d.ts.map +1 -0
  451. package/dist/terminal-mouse.js +84 -0
  452. package/dist/terminal-mouse.js.map +1 -0
  453. package/dist/terminal-screen.d.ts +41 -0
  454. package/dist/terminal-screen.d.ts.map +1 -0
  455. package/dist/terminal-screen.js +228 -0
  456. package/dist/terminal-screen.js.map +1 -0
  457. package/dist/timeline-debug/harness.d.ts +79 -0
  458. package/dist/timeline-debug/harness.d.ts.map +1 -0
  459. package/dist/timeline-debug/harness.js +155 -0
  460. package/dist/timeline-debug/harness.js.map +1 -0
  461. package/dist/timeline-debug/index.d.ts +9 -0
  462. package/dist/timeline-debug/index.d.ts.map +1 -0
  463. package/dist/timeline-debug/index.js +9 -0
  464. package/dist/timeline-debug/index.js.map +1 -0
  465. package/dist/timeline-debug/interactions.d.ts +19 -0
  466. package/dist/timeline-debug/interactions.d.ts.map +1 -0
  467. package/dist/timeline-debug/interactions.js +17 -0
  468. package/dist/timeline-debug/interactions.js.map +1 -0
  469. package/dist/timeline-debug/target.d.ts +34 -0
  470. package/dist/timeline-debug/target.d.ts.map +1 -0
  471. package/dist/timeline-debug/target.js +132 -0
  472. package/dist/timeline-debug/target.js.map +1 -0
  473. package/dist/tool-format.d.ts +54 -0
  474. package/dist/tool-format.d.ts.map +1 -0
  475. package/dist/tool-format.js +360 -0
  476. package/dist/tool-format.js.map +1 -0
  477. package/dist/useExecutionState.d.ts.map +1 -1
  478. package/dist/useExecutionState.js +8 -4
  479. package/dist/useExecutionState.js.map +1 -1
  480. package/dist/validate/index.d.ts +28 -0
  481. package/dist/validate/index.d.ts.map +1 -0
  482. package/dist/validate/index.js +51 -0
  483. package/dist/validate/index.js.map +1 -0
  484. package/dist/websocket-client.d.ts +78 -15
  485. package/dist/websocket-client.d.ts.map +1 -1
  486. package/dist/websocket-client.js +497 -171
  487. package/dist/websocket-client.js.map +1 -1
  488. package/package.json +62 -31
@@ -0,0 +1,5 @@
1
+ import { issueLocation, renderValidation } from "./validation-output.js";
2
+ export function renderSketchValidation(validation) {
3
+ return renderValidation(validation, (issue) => issue.layerId != null ? ` [layer ${issue.layerId}]` : issueLocation(issue));
4
+ }
5
+ //# sourceMappingURL=sketch-validation-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketch-validation-output.js","sourceRoot":"","sources":["../../src/commands/sketch-validation-output.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,UAAU,sBAAsB,CAAC,UAA4B;IACjE,OAAO,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAuB,EAAE,EAAE,CAC9D,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAC3E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * `nodetool sketch versions` — the version-history half of the sketch
3
+ * commands. The commands themselves live in `version-commands.ts`; this file
4
+ * is the image document's row shapes, database seam, columns and messages.
5
+ *
6
+ * Image documents keep immutable snapshots: manual saves, autosaves the server
7
+ * writes at most every five minutes, and the pre-restore snapshot that makes a
8
+ * restore undoable. The history is read and written directly against the local
9
+ * database, so an agent can work without a server.
10
+ */
11
+ import type { Command } from "commander";
12
+ import type { SketchValidation } from "@nodetool-ai/execution/sketch-debug";
13
+ import { type JsonValue, type VersionCommandDeps, type VersionStore } from "./version-commands.js";
14
+ export { parseVersionDocument, parseVersionNumber } from "./version-commands.js";
15
+ /** An `image_documents` row as these commands need it. */
16
+ export interface ImageDocumentRow {
17
+ id: string;
18
+ user_id: string;
19
+ name?: string | null;
20
+ width: number;
21
+ height: number;
22
+ background_color: string;
23
+ updated_at: string;
24
+ document: string;
25
+ }
26
+ /** An `image_document_versions` row. */
27
+ export interface SketchVersionRow {
28
+ id: string;
29
+ image_document_id: string;
30
+ version: number;
31
+ name: string | null;
32
+ save_type: string;
33
+ width: number;
34
+ height: number;
35
+ background_color: string;
36
+ created_at: string;
37
+ document: string;
38
+ }
39
+ export type SketchVersionStore = VersionStore<ImageDocumentRow, SketchVersionRow>;
40
+ /** The list-item shape, matching the tRPC router's `sketchVersionListItem`. */
41
+ export interface SketchVersionListItem {
42
+ id: string;
43
+ version: number;
44
+ name: string | null;
45
+ saveType: string;
46
+ width: number;
47
+ height: number;
48
+ backgroundColor: string;
49
+ createdAt: string;
50
+ }
51
+ export declare function toVersionListItem(row: SketchVersionRow): SketchVersionListItem;
52
+ /** One table row per version: what it is, when it was taken, what it holds. */
53
+ export declare function versionTableRows(items: SketchVersionListItem[]): Record<string, unknown>[];
54
+ /** Layer and binding counts of whatever a version stored. */
55
+ export declare function documentCounts(document: JsonValue | undefined): {
56
+ layers: number;
57
+ bindings: number;
58
+ };
59
+ interface SketchValidateMeta {
60
+ width?: number;
61
+ height?: number;
62
+ backgroundColor?: string;
63
+ }
64
+ export type SketchVersionsDeps = VersionCommandDeps<ImageDocumentRow, SketchVersionRow, SketchValidation, SketchValidateMeta>;
65
+ export declare function registerSketchVersionsCommands(sketch: Command, deps?: SketchVersionsDeps): void;
66
+ //# sourceMappingURL=sketch-versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketch-versions.d.ts","sourceRoot":"","sources":["../../src/commands/sketch-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,kBAAkB,EAEvB,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C,gBAAgB,EAChB,gBAAgB,CACjB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,gBAAgB,GACpB,qBAAqB,CAWvB;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3B;AAaD,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS;IAI1D,MAAM;IACN,QAAQ;EAEX;AAED,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4FD,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,CACjD,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,CACnB,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,OAAO,EACf,IAAI,GAAE,kBAAuB,GAC5B,IAAI,CAKN"}
@@ -0,0 +1,108 @@
1
+ import { renderSketchValidation } from "./sketch-validation-output.js";
2
+ import { countArray, registerVersionCommands } from "./version-commands.js";
3
+ export { parseVersionDocument, parseVersionNumber } from "./version-commands.js";
4
+ export function toVersionListItem(row) {
5
+ return {
6
+ id: row.id,
7
+ version: row.version,
8
+ name: row.name ?? null,
9
+ saveType: row.save_type,
10
+ width: row.width,
11
+ height: row.height,
12
+ backgroundColor: row.background_color,
13
+ createdAt: row.created_at
14
+ };
15
+ }
16
+ /** One table row per version: what it is, when it was taken, what it holds. */
17
+ export function versionTableRows(items) {
18
+ return items.map(tableRow);
19
+ }
20
+ function tableRow(v) {
21
+ return {
22
+ version: v.version,
23
+ saveType: v.saveType,
24
+ name: v.name ?? "",
25
+ createdAt: v.createdAt,
26
+ resolution: `${v.width}x${v.height}`,
27
+ background: v.backgroundColor
28
+ };
29
+ }
30
+ /** Layer and binding counts of whatever a version stored. */
31
+ export function documentCounts(document) {
32
+ const doc = (document ?? {});
33
+ const sketch = (doc.sketch ?? {});
34
+ return {
35
+ layers: countArray(sketch.layers),
36
+ bindings: countArray(doc.layerBindings)
37
+ };
38
+ }
39
+ async function defaultValidate(document, meta) {
40
+ const { validateSketchDocument } = await import("@nodetool-ai/execution/sketch-debug");
41
+ return validateSketchDocument(document, meta);
42
+ }
43
+ async function defaultStore() {
44
+ const { initDb, ImageDocument, ImageDocumentVersion } = await import("@nodetool-ai/models");
45
+ const { getDefaultDbPath } = await import("@nodetool-ai/config");
46
+ initDb(getDefaultDbPath());
47
+ return {
48
+ load: async (id) => await ImageDocument.findById(id),
49
+ listVersions: async (imageDocumentId, opts) => await ImageDocumentVersion.listForDocument(imageDocumentId, opts),
50
+ findVersion: async (imageDocumentId, version) => await ImageDocumentVersion.findByVersion(imageDocumentId, version),
51
+ snapshot: async (doc, opts) => await ImageDocumentVersion.snapshot(doc, opts),
52
+ restore: async (doc, version) => await ImageDocument.updateFieldsIfUnchanged(doc.id, doc.updated_at, {
53
+ document: version.document,
54
+ width: version.width,
55
+ height: version.height,
56
+ background_color: version.background_color
57
+ }),
58
+ deleteVersion: async (imageDocumentId, version) => {
59
+ const row = await ImageDocumentVersion.findByVersion(imageDocumentId, version);
60
+ if (row)
61
+ await row.delete();
62
+ }
63
+ };
64
+ }
65
+ const spec = {
66
+ idArg: "image_document_id",
67
+ idKey: "imageDocumentId",
68
+ descriptions: {
69
+ group: "Inspect and restore the snapshot history of an image document (manual saves, autosaves, pre-restore snapshots)",
70
+ list: "List a sketch's versions, newest first",
71
+ show: "Print one version's metadata and the document it stored",
72
+ create: "Snapshot the sketch as it stands now (a manual save)",
73
+ restore: "Restore a version onto the sketch. The pre-restore state is snapshotted first, and the restored document is validated against the current schema — a restore whose document no longer validates exits non-zero",
74
+ delete: "Delete one version from a sketch's history",
75
+ restoreJson: "Print the restore result as JSON"
76
+ },
77
+ notFoundDocument: (id) => `Image document not found: ${id}`,
78
+ notFoundVersion: (id, version) => `Sketch version not found: ${id} v${version}`,
79
+ conflict: "Document was modified since last read",
80
+ confirmDelete: (id, version) => `Delete v${version} of sketch ${id}?`,
81
+ deleted: (id, version) => `✅ Deleted v${version} of sketch ${id}`,
82
+ toItem: toVersionListItem,
83
+ tableRow,
84
+ counts: documentCounts,
85
+ showSummary: (counts) => `\n ${counts.layers} layer(s), ${counts.bindings} binding(s)`,
86
+ restoreSummary: (id, version, counts, row) => `✅ Restored v${version} onto ${id}: ${counts.layers} layer(s), ${counts.bindings} binding(s), ${row.width}x${row.height} on ${row.background_color}`,
87
+ restoreJsonExtra: (doc) => ({
88
+ document: {
89
+ id: doc.id,
90
+ width: doc.width,
91
+ height: doc.height,
92
+ backgroundColor: doc.background_color
93
+ }
94
+ }),
95
+ validateMeta: (row) => ({
96
+ width: row.width,
97
+ height: row.height,
98
+ backgroundColor: row.background_color
99
+ }),
100
+ renderValidation: renderSketchValidation
101
+ };
102
+ export function registerSketchVersionsCommands(sketch, deps = {}) {
103
+ registerVersionCommands(sketch, spec, deps, {
104
+ store: defaultStore,
105
+ validate: defaultValidate
106
+ });
107
+ }
108
+ //# sourceMappingURL=sketch-versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketch-versions.js","sourceRoot":"","sources":["../../src/commands/sketch-versions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `nodetool sketch validate`, `debug` and `versions` — the sketch harness
3
+ * commands.
4
+ *
5
+ * `validate` checks an image document statically: layers a binding points at,
6
+ * fields a round trip through the schema would strip, canvas and layer values
7
+ * nothing can composite. `debug` additionally replays a scripted `--interact`
8
+ * edit session against the headless `ui_sketch_*` bridge and writes a bundle.
9
+ * Both take an image-document JSON file or an `image_documents` row id.
10
+ * `versions` (sketch-versions.ts) reads and restores a document's snapshot
11
+ * history.
12
+ *
13
+ * Heavy dependencies (the database, the validator core, the bridge) are
14
+ * imported lazily inside each action, so command registration stays light and
15
+ * unit-testable.
16
+ */
17
+ import type { Command } from "commander";
18
+ import { renderSketchValidation } from "./sketch-validation-output.js";
19
+ export { renderSketchValidation };
20
+ export declare function registerSketchCommands(program: Command): void;
21
+ //# sourceMappingURL=sketch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../../src/commands/sketch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAuClC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqF7D"}
@@ -0,0 +1,117 @@
1
+ import { printCommandError } from "../command-errors.js";
2
+ import { renderSketchValidation } from "./sketch-validation-output.js";
3
+ import { registerSketchVersionsCommands } from "./sketch-versions.js";
4
+ export { renderSketchValidation };
5
+ /** Read an image document row through the local database. */
6
+ async function documentLoader() {
7
+ const { initDb, ImageDocument } = await import("@nodetool-ai/models");
8
+ const { getDefaultDbPath } = await import("@nodetool-ai/config");
9
+ let ready = false;
10
+ return async (id) => {
11
+ if (!ready) {
12
+ initDb(getDefaultDbPath());
13
+ ready = true;
14
+ }
15
+ const row = await ImageDocument.findById(id);
16
+ return row
17
+ ? {
18
+ id: row.id,
19
+ name: row.name,
20
+ width: row.width,
21
+ height: row.height,
22
+ background_color: row.background_color,
23
+ document: row.document
24
+ }
25
+ : null;
26
+ };
27
+ }
28
+ export function registerSketchCommands(program) {
29
+ const sketch = program
30
+ .command("sketch")
31
+ .description("Work with sketches (image documents)");
32
+ sketch
33
+ .command("validate <sketch_id_or_file>")
34
+ .description("Validate an image document without rendering it: bindings on missing layers, fields a schema round trip would strip, canvas and layer values nothing can composite. Takes an image-document JSON file or an image_documents row id")
35
+ .option("--json", "Print the full SketchValidation as JSON")
36
+ .option("--warnings-as-errors", "Exit non-zero when there are warnings (not just errors)")
37
+ .action(async (ref, opts) => {
38
+ try {
39
+ const { runSketchValidate } = await import("../sketch-debug/index.js");
40
+ const { target, validation } = await runSketchValidate(ref, {
41
+ loadDocument: await documentLoader()
42
+ });
43
+ if (opts.json) {
44
+ console.log(JSON.stringify({ target, validation }, null, 2));
45
+ }
46
+ else {
47
+ console.log(renderSketchValidation(validation).join("\n"));
48
+ }
49
+ const failed = !validation.ok ||
50
+ (opts.warningsAsErrors === true && validation.warnings.length > 0);
51
+ process.exit(failed ? 1 : 0);
52
+ }
53
+ catch (e) {
54
+ printCommandError(e, opts.json);
55
+ process.exit(1);
56
+ }
57
+ });
58
+ sketch
59
+ .command("debug <sketch_id_or_file>")
60
+ .description("Replay a scripted edit session against a sketch headlessly and collect a debug bundle (the document, the report, every step's result)")
61
+ .option("--interact <json>", 'Scripted steps: [{"tool":"add_layer","input":{"name":"Glow"}}] — the ui_sketch_ prefix is optional')
62
+ .option("--out <dir>", "Bundle output directory (default: nodetool-debug/sketch-<id>-<timestamp>)")
63
+ .option("--json", "Print the full SketchDebugReport as JSON to stdout")
64
+ .action(async (ref, opts) => {
65
+ try {
66
+ const { parseInteractionScript, runSketchDebug } = await import("../sketch-debug/index.js");
67
+ const interact = opts.interact
68
+ ? parseInteractionScript(opts.interact)
69
+ : undefined;
70
+ const debugOptions = {};
71
+ if (interact) {
72
+ debugOptions.interact = interact;
73
+ }
74
+ if (opts.out) {
75
+ debugOptions.outDir = opts.out;
76
+ }
77
+ const { report, bundleDir } = await runSketchDebug(ref, debugOptions, {
78
+ loadDocument: await documentLoader(),
79
+ onLog: (line) => console.error(line)
80
+ });
81
+ if (opts.json) {
82
+ console.log(JSON.stringify(report, null, 2));
83
+ }
84
+ else {
85
+ printSketchSummary(report, bundleDir);
86
+ }
87
+ process.exit(report.verdict.ok ? 0 : 1);
88
+ }
89
+ catch (e) {
90
+ printCommandError(e, opts.json);
91
+ process.exit(1);
92
+ }
93
+ });
94
+ registerSketchVersionsCommands(sketch);
95
+ }
96
+ function printSketchSummary(report, bundleDir) {
97
+ const mark = report.verdict.ok ? "✅" : "❌";
98
+ console.log(`\n${mark} ${report.verdict.headline}`);
99
+ console.log(` sketch: ${report.meta.layerCount} layer(s), ${report.meta.bindingCount} binding(s), ${report.meta.width}x${report.meta.height}`);
100
+ const failed = report.interactions.filter((i) => !i.ok).length;
101
+ if (report.interactions.length > 0) {
102
+ console.log(` session: ${report.interactions.length} step(s), ${failed} failed`);
103
+ }
104
+ if (report.verdict.issues.length > 0) {
105
+ console.log("\nIssues:");
106
+ for (const issue of report.verdict.issues)
107
+ console.log(` - ${issue}`);
108
+ }
109
+ if (report.verdict.warnings && report.verdict.warnings.length > 0) {
110
+ console.log("\nWarnings:");
111
+ for (const warning of report.verdict.warnings)
112
+ console.log(` - ${warning}`);
113
+ }
114
+ console.log(`\nDebug bundle: ${bundleDir}`);
115
+ console.log(" report.md / report.json · sketch.json");
116
+ }
117
+ //# sourceMappingURL=sketch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketch.js","sourceRoot":"","sources":["../../src/commands/sketch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ interface MigrateKeysOptions {
2
+ dryRun?: boolean;
3
+ /** Migrate only this user's objects. */
4
+ userId?: string;
5
+ json?: boolean;
6
+ }
7
+ interface MigrateKeysReport {
8
+ scanned: number;
9
+ moved: number;
10
+ alreadyMigrated: number;
11
+ missing: number;
12
+ failed: number;
13
+ entries: Array<{
14
+ assetId: string;
15
+ from: string;
16
+ to: string;
17
+ status: "moved" | "already" | "missing" | "failed";
18
+ error?: string;
19
+ }>;
20
+ }
21
+ export declare function migrateStorageKeys(opts?: MigrateKeysOptions): Promise<MigrateKeysReport>;
22
+ export declare function formatMigrateKeysReport(report: MigrateKeysReport, dryRun: boolean): string;
23
+ export {};
24
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/commands/storage.ts"],"names":[],"mappings":"AAsBA,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;QACnD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AA4BD,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAkD5B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,OAAO,GACd,MAAM,CAoBR"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * `nodetool storage migrate-keys` — move asset objects from the flat
3
+ * `<assetId>.<ext>` layout under their owner's prefix, `<userId>/<assetId>.<ext>`.
4
+ *
5
+ * The owner prefix is what makes the tenant boundary enforceable outside the
6
+ * server process (a Supabase Storage RLS policy or an S3 bucket policy can
7
+ * match on it), so a deployment on a cloud backend needs this to have run.
8
+ * The local file backend keeps working without it — `/api/storage` falls back
9
+ * to the legacy path — but should be migrated too so the layouts agree.
10
+ *
11
+ * Safe to re-run: an object already at its prefixed key is left alone, and
12
+ * the legacy object is only removed once the new one reads back.
13
+ */
14
+ import { Asset } from "@nodetool-ai/models";
15
+ import { loadAssetStorageConfig } from "@nodetool-ai/config";
16
+ import { assetObjectKey, createStorageAdapter } from "@nodetool-ai/storage";
17
+ import { getAssetFileName } from "@nodetool-ai/websocket";
18
+ /** Every object belonging to an asset: the bytes plus its thumbnail. */
19
+ function fileNamesFor(assetId, contentType) {
20
+ return [getAssetFileName(assetId, contentType), `${assetId}_thumb.jpg`];
21
+ }
22
+ async function migrateOne(adapter, userId, fileName, dryRun) {
23
+ const target = assetObjectKey(userId, fileName);
24
+ if (await adapter.exists(adapter.uriForKey(target)))
25
+ return "already";
26
+ if (!(await adapter.exists(adapter.uriForKey(fileName))))
27
+ return "missing";
28
+ if (dryRun)
29
+ return "moved";
30
+ const bytes = await adapter.retrieve(adapter.uriForKey(fileName));
31
+ if (!bytes)
32
+ return "missing";
33
+ await adapter.store(target, bytes);
34
+ // Only drop the original once the copy reads back, so an interrupted run
35
+ // leaves the asset readable at one key or the other, never neither.
36
+ if (!(await adapter.exists(adapter.uriForKey(target))))
37
+ return "failed";
38
+ await adapter.delete(adapter.uriForKey(fileName));
39
+ return "moved";
40
+ }
41
+ export async function migrateStorageKeys(opts = {}) {
42
+ const adapter = createStorageAdapter(loadAssetStorageConfig());
43
+ const dryRun = opts.dryRun ?? false;
44
+ const report = {
45
+ scanned: 0,
46
+ moved: 0,
47
+ alreadyMigrated: 0,
48
+ missing: 0,
49
+ failed: 0,
50
+ entries: []
51
+ };
52
+ const assets = await Asset.allForMigration(opts.userId);
53
+ for (const asset of assets) {
54
+ if (asset.content_type === "folder")
55
+ continue;
56
+ for (const fileName of fileNamesFor(asset.id, asset.content_type)) {
57
+ report.scanned += 1;
58
+ const to = assetObjectKey(asset.user_id, fileName);
59
+ let status;
60
+ let error;
61
+ try {
62
+ status = await migrateOne(adapter, asset.user_id, fileName, dryRun);
63
+ }
64
+ catch (err) {
65
+ status = "failed";
66
+ error = err instanceof Error ? err.message : String(err);
67
+ }
68
+ if (status === "moved")
69
+ report.moved += 1;
70
+ else if (status === "already")
71
+ report.alreadyMigrated += 1;
72
+ else if (status === "missing")
73
+ report.missing += 1;
74
+ else
75
+ report.failed += 1;
76
+ // A thumbnail that was never generated is the common "missing" case and
77
+ // is not worth a line of output.
78
+ if (status !== "missing") {
79
+ const entry = {
80
+ assetId: asset.id,
81
+ from: fileName,
82
+ to,
83
+ status
84
+ };
85
+ if (error) {
86
+ entry.error = error;
87
+ }
88
+ report.entries.push(entry);
89
+ }
90
+ }
91
+ }
92
+ return report;
93
+ }
94
+ export function formatMigrateKeysReport(report, dryRun) {
95
+ const lines = [];
96
+ for (const entry of report.entries) {
97
+ if (entry.status === "failed") {
98
+ lines.push(`FAILED ${entry.from} -> ${entry.to}: ${entry.error ?? ""}`);
99
+ }
100
+ else if (entry.status === "moved") {
101
+ lines.push(`${dryRun ? "would move" : "moved"} ${entry.from} -> ${entry.to}`);
102
+ }
103
+ }
104
+ lines.push("");
105
+ lines.push(`scanned ${report.scanned}, ${dryRun ? "would move" : "moved"} ${report.moved}, ` +
106
+ `already migrated ${report.alreadyMigrated}, absent ${report.missing}, failed ${report.failed}`);
107
+ if (dryRun) {
108
+ lines.push("Dry run — nothing was written. Re-run without --dry-run.");
109
+ }
110
+ return lines.join("\n");
111
+ }
112
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/commands/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `nodetool telegram` — run the Telegram bridge, and publish its command list.
3
+ *
4
+ * Thin wrappers over `@nodetool-ai/telegram`, imported dynamically so the CLI
5
+ * pays nothing for the bridge (and its `ws` dependency) on every other
6
+ * command. Registration is deliberately its own subcommand: `setMyCommands` is
7
+ * a deploy step, not a boot step (design §12).
8
+ */
9
+ import type { Command } from "commander";
10
+ export declare function registerTelegramCommands(program: Command): void;
11
+ //# sourceMappingURL=telegram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/commands/telegram.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C/D"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * `nodetool telegram` — run the Telegram bridge, and publish its command list.
3
+ *
4
+ * Thin wrappers over `@nodetool-ai/telegram`, imported dynamically so the CLI
5
+ * pays nothing for the bridge (and its `ws` dependency) on every other
6
+ * command. Registration is deliberately its own subcommand: `setMyCommands` is
7
+ * a deploy step, not a boot step (design §12).
8
+ */
9
+ /** Config problems are the likely failure here; print them, not a stack. */
10
+ function fail(e) {
11
+ console.error(String(e instanceof Error ? e.message : e));
12
+ process.exit(1);
13
+ }
14
+ /** `loadConfig` takes the default path when `--config` is absent. */
15
+ function configOptions(path) {
16
+ const options = {};
17
+ if (path !== undefined) {
18
+ options.configPath = path;
19
+ }
20
+ return options;
21
+ }
22
+ export function registerTelegramCommands(program) {
23
+ const telegram = program
24
+ .command("telegram")
25
+ .description("Telegram bridge — private-chat turns onto the agent loop");
26
+ telegram
27
+ .command("serve")
28
+ .description("Long-poll the Bot API and run turns on each linked user's account")
29
+ .option("--config <path>", "Path to telegram-bot.json")
30
+ .action(async (opts) => {
31
+ try {
32
+ const { loadConfig, startTelegramBot } = await import("@nodetool-ai/telegram");
33
+ const config = loadConfig(configOptions(opts.config));
34
+ const handle = startTelegramBot(config);
35
+ const shutdown = () => {
36
+ void handle.stop();
37
+ };
38
+ process.on("SIGINT", shutdown);
39
+ process.on("SIGTERM", shutdown);
40
+ console.log(`Telegram bridge polling against ${config.apiUrl}`);
41
+ const reason = await handle.finished;
42
+ if (reason !== "stopped") {
43
+ process.exitCode = 1;
44
+ }
45
+ }
46
+ catch (e) {
47
+ fail(e);
48
+ }
49
+ });
50
+ telegram
51
+ .command("register-commands")
52
+ .description("Publish the bot's command list to Telegram (setMyCommands)")
53
+ .option("--config <path>", "Path to telegram-bot.json")
54
+ .action(async (opts) => {
55
+ try {
56
+ const { loadConfig, registerCommands } = await import("@nodetool-ai/telegram");
57
+ const config = loadConfig(configOptions(opts.config));
58
+ const commands = await registerCommands(config.botToken);
59
+ console.log(`Registered ${commands.length} bot commands.`);
60
+ }
61
+ catch (e) {
62
+ fail(e);
63
+ }
64
+ });
65
+ }
66
+ //# sourceMappingURL=telegram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/commands/telegram.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,4EAA4E;AAC5E,SAAS,IAAI,CAAC,CAAU;IACtB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,qEAAqE;AACrE,SAAS,aAAa,CAAC,IAAwB;IAC7C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,0DAA0D,CAAC,CAAC;IAE3E,QAAQ;SACL,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,mEAAmE,CAAC;SAChF,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,GAAS,EAAE;gBAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,QAAQ;SACL,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}