@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,180 @@
1
+ /**
2
+ * `nodetool apps` — application (mini app) bundles from the local database.
3
+ *
4
+ * An ApplicationBundle is one JSON file carrying an app together with the full
5
+ * graph of every workflow its operations bind, so an app ships as a single
6
+ * artifact. Inside the file an operation's `workflowId` is a bundle-local key;
7
+ * importing creates the workflows and rewrites the keys to the new ids.
8
+ *
9
+ * These commands talk to the local DB directly, like `workflows export-bundle`
10
+ * — no running server. The bundle logic itself is pure and lives in
11
+ * `@nodetool-ai/app-runtime`; only the row writing is here.
12
+ */
13
+ import { applyBundle, bundleFromApplication, parseApplicationBundle, serializeApplicationBundle } from "@nodetool-ai/app-runtime";
14
+ import { Application, Workflow, createStableUuid, createTimeOrderedUuid, releasedApplicationRelease } from "@nodetool-ai/models";
15
+ import { asJson, printTable } from "./output.js";
16
+ import { setupLocalDb, LOCAL_USER_ID } from "./local-db.js";
17
+ function fail(e) {
18
+ console.error(String(e instanceof Error ? e.message : e));
19
+ process.exit(1);
20
+ }
21
+ async function loadApp(id) {
22
+ const app = await Application.findById(id);
23
+ if (!app || app.user_id !== LOCAL_USER_ID) {
24
+ throw new Error(`Application not found: ${id}`);
25
+ }
26
+ return app;
27
+ }
28
+ /** Keep a bundle's default filename from escaping the working directory. */
29
+ function safeFileName(name) {
30
+ return name.replace(/[^A-Za-z0-9._-]+/g, "_").replace(/^[._]+/, "") || "app";
31
+ }
32
+ export function registerAppsCommands(program) {
33
+ const apps = program
34
+ .command("apps")
35
+ .description("Mini app (application) management");
36
+ apps
37
+ .command("list")
38
+ .description("List applications in the local database")
39
+ .option("--json", "Output as JSON")
40
+ .action(async (opts) => {
41
+ try {
42
+ await setupLocalDb();
43
+ const rows = (await Application.listByUser(LOCAL_USER_ID)).map((a) => ({
44
+ id: a.id,
45
+ name: a.name,
46
+ operations: a.toDocument().operations.length,
47
+ updated_at: a.updated_at
48
+ }));
49
+ if (opts.json) {
50
+ asJson(rows);
51
+ return;
52
+ }
53
+ printTable(rows, ["id", "name", "operations", "updated_at"]);
54
+ }
55
+ catch (e) {
56
+ fail(e);
57
+ }
58
+ });
59
+ apps
60
+ .command("export-bundle <application_id>")
61
+ .description("Export an application as a portable bundle: the app document plus the " +
62
+ "full graph of every workflow it binds, in a single JSON file")
63
+ .option("-o, --output <file>", "Output path (default: <name>.app.json)")
64
+ .option("--released", "Export the released snapshot and the graphs it pinned, not the draft")
65
+ .action(async (id, opts) => {
66
+ try {
67
+ const { writeFile } = await import("node:fs/promises");
68
+ await setupLocalDb();
69
+ const app = await loadApp(id);
70
+ const release = opts.released
71
+ ? await releasedApplicationRelease(id)
72
+ : null;
73
+ if (opts.released && !release) {
74
+ throw new Error(`Application ${id} has no released version`);
75
+ }
76
+ const document = release ? release.document : app.toDocument();
77
+ const pinned = new Map((release?.workflows ?? []).map((entry) => [entry.workflowId, entry]));
78
+ const sources = [];
79
+ const seen = new Set();
80
+ for (const operation of document.operations) {
81
+ if (seen.has(operation.workflowId))
82
+ continue;
83
+ seen.add(operation.workflowId);
84
+ const pin = pinned.get(operation.workflowId);
85
+ const workflow = await Workflow.find(LOCAL_USER_ID, operation.workflowId);
86
+ const graph = pin?.graph ?? workflow?.getGraph();
87
+ if (!graph) {
88
+ console.error(` warning: operation '${operation.id}' binds missing workflow ` +
89
+ `${operation.workflowId} (left unresolved in the bundle)`);
90
+ continue;
91
+ }
92
+ sources.push({
93
+ workflowId: operation.workflowId,
94
+ name: workflow?.name ?? operation.name,
95
+ description: workflow?.description ?? "",
96
+ graph,
97
+ version: pin?.version ?? null,
98
+ graphHash: pin?.graphHash ?? null
99
+ });
100
+ }
101
+ const bundle = bundleFromApplication({ name: app.name, description: app.description, document }, sources);
102
+ const outPath = opts.output ?? `${safeFileName(app.name)}.app.json`;
103
+ await writeFile(outPath, serializeApplicationBundle(bundle), "utf8");
104
+ console.error(` bundled ${bundle.workflows.length} workflow(s) with app '${app.name}'`);
105
+ console.log(outPath);
106
+ }
107
+ catch (e) {
108
+ fail(e);
109
+ }
110
+ });
111
+ apps
112
+ .command("import-bundle <bundle_file>")
113
+ .description("Import an application bundle into the local library: create its " +
114
+ "workflows and the app, with operations rewired to the new ids")
115
+ .option("--json", "Output the created application as JSON")
116
+ .option("--project <id>", "Project to create the app in", "default")
117
+ .action(async (bundleFile, opts) => {
118
+ try {
119
+ const { readFile } = await import("node:fs/promises");
120
+ await setupLocalDb();
121
+ const bundle = parseApplicationBundle(JSON.parse(await readFile(bundleFile, "utf8")));
122
+ if (!bundle) {
123
+ throw new Error(`Not a valid application bundle: ${bundleFile}`);
124
+ }
125
+ // A workflow carrying a `sourceId` gets a row id derived from it, so
126
+ // importing two bundles that ship the same workflow — two example
127
+ // apps binding one template — reuses the row instead of duplicating
128
+ // it. Without a `sourceId` every import creates fresh workflows.
129
+ const result = applyBundle(bundle, {
130
+ newWorkflowId: (workflow) => workflow.sourceId
131
+ ? createStableUuid(LOCAL_USER_ID, workflow.sourceId)
132
+ : createTimeOrderedUuid()
133
+ });
134
+ // Workflows first, so the app never references a row that does not
135
+ // exist yet.
136
+ let reused = 0;
137
+ for (const workflow of result.workflows) {
138
+ if (workflow.sourceId &&
139
+ (await Workflow.find(LOCAL_USER_ID, workflow.id))) {
140
+ reused += 1;
141
+ continue;
142
+ }
143
+ await Workflow.create({
144
+ id: workflow.id,
145
+ user_id: LOCAL_USER_ID,
146
+ name: workflow.name,
147
+ description: workflow.description ?? "",
148
+ access: "private",
149
+ graph: workflow.graph
150
+ });
151
+ }
152
+ const app = await Application.create({
153
+ user_id: LOCAL_USER_ID,
154
+ project_id: opts.project ?? "default",
155
+ name: result.app.name,
156
+ description: result.app.description,
157
+ document: JSON.stringify(result.app.document)
158
+ });
159
+ console.error(` imported app '${app.name}' with ${result.workflows.length} workflow(s)` +
160
+ (reused > 0 ? ` (${reused} already present, reused)` : ""));
161
+ if (opts.json) {
162
+ asJson({
163
+ id: app.id,
164
+ name: app.name,
165
+ workflows: result.workflows.map((w) => ({
166
+ id: w.id,
167
+ name: w.name
168
+ }))
169
+ });
170
+ }
171
+ else {
172
+ console.log(app.id);
173
+ }
174
+ }
175
+ catch (e) {
176
+ fail(e);
177
+ }
178
+ });
179
+ }
180
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `nodetool auth claude` — sign in with a Claude subscription for the Claude
3
+ * Agent provider.
4
+ *
5
+ * Runs the same OAuth flow the `claude` CLI does and writes the tokens to the
6
+ * Claude Agent SDK's credential file (`~/.claude/.credentials.json`), so a
7
+ * NodeTool login and a `claude login` are interchangeable. No database, no
8
+ * server — the SDK reads that file directly.
9
+ */
10
+ import type { Command } from "commander";
11
+ export declare function registerAuthCommands(program: Command): void;
12
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2I3D"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * `nodetool auth claude` — sign in with a Claude subscription for the Claude
3
+ * Agent provider.
4
+ *
5
+ * Runs the same OAuth flow the `claude` CLI does and writes the tokens to the
6
+ * Claude Agent SDK's credential file (`~/.claude/.credentials.json`), so a
7
+ * NodeTool login and a `claude login` are interchangeable. No database, no
8
+ * server — the SDK reads that file directly.
9
+ */
10
+ import { createInterface } from "node:readline";
11
+ import { ClaudeCodeLogin, DefaultBrowserLauncher } from "@nodetool-ai/runtime/oauth";
12
+ import { asJson, printKv } from "./output.js";
13
+ function fail(e) {
14
+ console.error(String(e instanceof Error ? e.message : e));
15
+ process.exit(1);
16
+ }
17
+ /** Read one line from stdin, prompting on stderr so `--json` stays pipeable. */
18
+ async function prompt(question) {
19
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
20
+ try {
21
+ return await new Promise((resolve) => {
22
+ process.stderr.write(question);
23
+ rl.question("", resolve);
24
+ });
25
+ }
26
+ finally {
27
+ rl.close();
28
+ }
29
+ }
30
+ function describeExpiry(expiresAt) {
31
+ if (expiresAt == null)
32
+ return "never";
33
+ return new Date(expiresAt).toISOString();
34
+ }
35
+ export function registerAuthCommands(program) {
36
+ const auth = program
37
+ .command("auth")
38
+ .description("Sign in to providers that use an account instead of an API key");
39
+ const claude = auth
40
+ .command("claude")
41
+ .description("Claude subscription login for the Claude Agent provider");
42
+ claude
43
+ .command("login")
44
+ .description("Sign in with a Claude subscription and store the credentials")
45
+ .option("--console", "Sign in with a Console (API-billed) account")
46
+ .option("--manual", "Skip the loopback listener and paste the code shown in the browser")
47
+ .option("--no-browser", "Print the URL instead of opening a browser")
48
+ .option("--json", "Output as JSON")
49
+ .action(async (opts) => {
50
+ const login = new ClaudeCodeLogin();
51
+ try {
52
+ const pending = await login.begin({
53
+ loginMethod: opts.console ? "console" : "claude-ai",
54
+ manualOnly: opts.manual
55
+ });
56
+ const url = pending.authUrl ?? pending.manualAuthUrl;
57
+ if (opts.browser !== false) {
58
+ await new DefaultBrowserLauncher().open(url).catch(() => {
59
+ // No browser on this host — the printed URL is the fallback.
60
+ });
61
+ }
62
+ process.stderr.write(`\nOpen this URL to sign in:\n\n ${url}\n\n`);
63
+ let credentials;
64
+ if (pending.authUrl) {
65
+ process.stderr.write("Waiting for the browser to redirect back (Ctrl-C to cancel)...\n");
66
+ credentials = await pending.waitForRedirect();
67
+ }
68
+ else {
69
+ const code = await prompt("Paste the code shown in the browser > ");
70
+ credentials = await pending.completeWithPastedCode(code);
71
+ }
72
+ const summary = {
73
+ connected: true,
74
+ subscription_type: credentials.subscriptionType,
75
+ scopes: credentials.scopes.join(" "),
76
+ expires_at: describeExpiry(credentials.expiresAt),
77
+ credentials_path: login.credentialsPath
78
+ };
79
+ if (opts.json) {
80
+ asJson(summary);
81
+ return;
82
+ }
83
+ console.log("\nSigned in to Claude.");
84
+ printKv(summary);
85
+ }
86
+ catch (e) {
87
+ fail(e);
88
+ }
89
+ });
90
+ claude
91
+ .command("status")
92
+ .description("Show whether Claude subscription credentials are stored")
93
+ .option("--json", "Output as JSON")
94
+ .action(async (opts) => {
95
+ try {
96
+ const status = await new ClaudeCodeLogin().status();
97
+ const summary = {
98
+ connected: status.connected,
99
+ expired: status.expired,
100
+ subscription_type: status.subscriptionType,
101
+ rate_limit_tier: status.rateLimitTier,
102
+ scopes: status.scopes.join(" "),
103
+ expires_at: describeExpiry(status.expiresAt),
104
+ credentials_path: status.credentialsPath
105
+ };
106
+ if (opts.json) {
107
+ asJson(summary);
108
+ return;
109
+ }
110
+ if (!status.connected) {
111
+ console.log(`Not signed in. Run 'nodetool auth claude login'. (${status.credentialsPath})`);
112
+ return;
113
+ }
114
+ printKv(summary);
115
+ }
116
+ catch (e) {
117
+ fail(e);
118
+ }
119
+ });
120
+ claude
121
+ .command("refresh")
122
+ .description("Refresh the stored access token")
123
+ .option("--force", "Refresh even when the current token is still valid")
124
+ .option("--json", "Output as JSON")
125
+ .action(async (opts) => {
126
+ try {
127
+ const credentials = await new ClaudeCodeLogin().refresh({
128
+ force: opts.force
129
+ });
130
+ const summary = { expires_at: describeExpiry(credentials.expiresAt) };
131
+ if (opts.json) {
132
+ asJson(summary);
133
+ return;
134
+ }
135
+ printKv(summary);
136
+ }
137
+ catch (e) {
138
+ fail(e);
139
+ }
140
+ });
141
+ claude
142
+ .command("logout")
143
+ .description("Remove the stored Claude subscription credentials")
144
+ .action(async () => {
145
+ try {
146
+ const removed = await new ClaudeCodeLogin().logout();
147
+ console.log(removed ? "Signed out of Claude." : "No stored Claude credentials.");
148
+ }
149
+ catch (e) {
150
+ fail(e);
151
+ }
152
+ });
153
+ }
154
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `nodetool collections` — manage RAG vector-store collections.
3
+ *
4
+ * Runs in-process against the default vector provider (sqlite-vec unless
5
+ * NODETOOL_VECTOR_PROVIDER points elsewhere), so it works without a running
6
+ * server. Indexing chunks documents with the same splitter the server uses.
7
+ */
8
+ import type { Command } from "commander";
9
+ export declare function registerCollectionCommands(program: Command): void;
10
+ //# sourceMappingURL=collections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/commands/collections.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoPjE"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * `nodetool collections` — manage RAG vector-store collections.
3
+ *
4
+ * Runs in-process against the default vector provider (sqlite-vec unless
5
+ * NODETOOL_VECTOR_PROVIDER points elsewhere), so it works without a running
6
+ * server. Indexing chunks documents with the same splitter the server uses.
7
+ */
8
+ import { readFile } from "node:fs/promises";
9
+ import { basename } from "node:path";
10
+ import { getDefaultVectorProvider, splitDocument, CollectionNotFoundError } from "@nodetool-ai/vectorstore";
11
+ import { Workflow } from "@nodetool-ai/models";
12
+ import { asJson, printTable, printKv, confirm } from "./output.js";
13
+ import { setupLocalDb } from "./local-db.js";
14
+ import { isNonEmptyString } from "../predicates.js";
15
+ function fail(e) {
16
+ if (e instanceof CollectionNotFoundError) {
17
+ console.error(e.message);
18
+ process.exit(1);
19
+ }
20
+ console.error(String(e instanceof Error ? e.message : e));
21
+ process.exit(1);
22
+ }
23
+ /** Resolve a workflow's name from an id, forgivingly (null on any failure). */
24
+ async function workflowName(id) {
25
+ if (!isNonEmptyString(id)) {
26
+ return null;
27
+ }
28
+ try {
29
+ const wf = (await Workflow.get(id));
30
+ return wf?.name ?? null;
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ export function registerCollectionCommands(program) {
37
+ const collections = program
38
+ .command("collections")
39
+ .description("Manage RAG vector-store collections");
40
+ collections
41
+ .command("list")
42
+ .description("List collections with document counts")
43
+ .option("--json", "Output as JSON")
44
+ .action(async (opts) => {
45
+ try {
46
+ await setupLocalDb();
47
+ const provider = getDefaultVectorProvider();
48
+ const infos = await provider.listCollections();
49
+ const rows = [];
50
+ for (const info of infos) {
51
+ try {
52
+ const collection = await provider.getCollection({ name: info.name });
53
+ const count = await collection.count();
54
+ const metadata = info.metadata ?? {};
55
+ rows.push({
56
+ name: info.name,
57
+ count,
58
+ embedding_model: metadata["embedding_model"] ?? "",
59
+ workflow: (await workflowName(metadata["workflow"])) ?? ""
60
+ });
61
+ }
62
+ catch (err) {
63
+ // A collection can race a delete between listCollections() and
64
+ // getCollection(); skip only that. Surface anything else (corrupt
65
+ // collection, provider failure) instead of hiding it.
66
+ if (!(err instanceof CollectionNotFoundError)) {
67
+ throw err;
68
+ }
69
+ }
70
+ }
71
+ if (opts.json) {
72
+ asJson(rows);
73
+ return;
74
+ }
75
+ printTable(rows);
76
+ }
77
+ catch (e) {
78
+ fail(e);
79
+ }
80
+ });
81
+ collections
82
+ .command("get <name>")
83
+ .description("Show a collection's metadata and document count")
84
+ .option("--json", "Output as JSON")
85
+ .action(async (name, opts) => {
86
+ try {
87
+ await setupLocalDb();
88
+ const collection = await getDefaultVectorProvider().getCollection({
89
+ name
90
+ });
91
+ const count = await collection.count();
92
+ const metadata = collection.metadata ?? {};
93
+ if (opts.json) {
94
+ asJson({ name: collection.name, count, metadata });
95
+ return;
96
+ }
97
+ printKv({ name: collection.name, count, ...metadata });
98
+ }
99
+ catch (e) {
100
+ fail(e);
101
+ }
102
+ });
103
+ collections
104
+ .command("create <name>")
105
+ .description("Create a collection")
106
+ .option("--embedding-model <model>", "Embedding model id")
107
+ .option("--embedding-provider <provider>", "Embedding provider id")
108
+ .option("--json", "Output as JSON")
109
+ .action(async (name, opts) => {
110
+ try {
111
+ await setupLocalDb();
112
+ const metadata = {};
113
+ if (opts.embeddingModel) {
114
+ metadata["embedding_model"] = opts.embeddingModel;
115
+ }
116
+ if (opts.embeddingProvider) {
117
+ metadata["embedding_provider"] = opts.embeddingProvider;
118
+ }
119
+ const collection = await getDefaultVectorProvider().createCollection({
120
+ name,
121
+ metadata
122
+ });
123
+ if (opts.json) {
124
+ asJson({ name: collection.name, metadata: collection.metadata });
125
+ return;
126
+ }
127
+ console.log(`Created collection '${collection.name}'.`);
128
+ }
129
+ catch (e) {
130
+ fail(e);
131
+ }
132
+ });
133
+ collections
134
+ .command("delete <name>")
135
+ .description("Delete a collection and all its documents")
136
+ .option("-y, --yes", "Skip the confirmation prompt")
137
+ .option("--json", "Output as JSON")
138
+ .action(async (name, opts) => {
139
+ try {
140
+ const ok = await confirm(`Delete collection '${name}' and all its documents?`, { force: opts.yes });
141
+ if (!ok) {
142
+ if (opts.json) {
143
+ asJson({ deleted: false, aborted: true });
144
+ }
145
+ else {
146
+ console.error("Aborted.");
147
+ }
148
+ process.exit(1);
149
+ }
150
+ await setupLocalDb();
151
+ await getDefaultVectorProvider().deleteCollection(name);
152
+ const message = `Collection ${name} deleted successfully`;
153
+ if (opts.json) {
154
+ asJson({ message });
155
+ return;
156
+ }
157
+ console.log(message);
158
+ }
159
+ catch (e) {
160
+ fail(e);
161
+ }
162
+ });
163
+ collections
164
+ .command("query <name> <text...>")
165
+ .description("Semantic search over a collection")
166
+ .option("-n, --n-results <n>", "Number of results", "10")
167
+ .option("--json", "Output as JSON")
168
+ .action(async (name, text, opts) => {
169
+ const nResults = Number.parseInt(opts.nResults, 10);
170
+ if (!Number.isFinite(nResults) || nResults <= 0) {
171
+ console.error(`Invalid --n-results value: ${opts.nResults}`);
172
+ process.exit(1);
173
+ }
174
+ try {
175
+ await setupLocalDb();
176
+ const collection = await getDefaultVectorProvider().getCollection({
177
+ name
178
+ });
179
+ const matches = await collection.query({
180
+ text: text.join(" "),
181
+ topK: nResults
182
+ });
183
+ if (opts.json) {
184
+ asJson(matches);
185
+ return;
186
+ }
187
+ if (matches.length === 0) {
188
+ console.log("(no matches)");
189
+ return;
190
+ }
191
+ printTable(matches.map((m) => ({
192
+ id: m.id,
193
+ distance: m.distance?.toFixed(4) ?? "",
194
+ document: (m.document ?? "").replace(/\s+/g, " ").slice(0, 80)
195
+ })));
196
+ }
197
+ catch (e) {
198
+ fail(e);
199
+ }
200
+ });
201
+ collections
202
+ .command("index <name> <file...>")
203
+ .description("Chunk and index one or more text documents into a collection")
204
+ .option("--json", "Output as JSON")
205
+ .action(async (name, files, opts) => {
206
+ try {
207
+ await setupLocalDb();
208
+ const collection = await getDefaultVectorProvider().getCollection({
209
+ name
210
+ });
211
+ const results = [];
212
+ for (const file of files) {
213
+ try {
214
+ const text = await readFile(file, "utf8");
215
+ const fileName = basename(file);
216
+ const chunks = splitDocument(text, fileName);
217
+ if (chunks.length > 0) {
218
+ // Derive the record-id prefix from the full path (sanitized) so
219
+ // two files with the same basename (a/foo.txt, b/foo.txt) don't
220
+ // collide and overwrite each other's chunks. Re-indexing the same
221
+ // path stays idempotent.
222
+ const idPrefix = file.replace(/[^A-Za-z0-9._-]+/g, "_");
223
+ await collection.upsert(chunks.map((c, i) => ({
224
+ id: `${idPrefix}#${i}`,
225
+ document: c.text,
226
+ metadata: {
227
+ source: file,
228
+ start_index: String(c.start_index)
229
+ }
230
+ })));
231
+ }
232
+ results.push({ file, chunks: chunks.length, error: "" });
233
+ }
234
+ catch (e) {
235
+ results.push({
236
+ file,
237
+ chunks: 0,
238
+ error: String(e instanceof Error ? e.message : e)
239
+ });
240
+ }
241
+ }
242
+ if (opts.json) {
243
+ asJson(results);
244
+ }
245
+ else {
246
+ printTable(results);
247
+ }
248
+ if (results.some((r) => r.error)) {
249
+ process.exit(1);
250
+ }
251
+ }
252
+ catch (e) {
253
+ fail(e);
254
+ }
255
+ });
256
+ }
257
+ //# sourceMappingURL=collections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../src/commands/collections.ts"],"names":[],"mappings":"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"}