@namzu/cli 0.0.2 → 0.1.0

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 (365) hide show
  1. package/LICENSE.md +110 -0
  2. package/dist/bin.js +4 -32
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.d.ts +14 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +124 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/cli.test.d.ts +2 -0
  9. package/dist/cli.test.d.ts.map +1 -0
  10. package/dist/cli.test.js +94 -0
  11. package/dist/cli.test.js.map +1 -0
  12. package/dist/commands/doctor.d.ts +6 -0
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +10 -0
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/providers.d.ts +17 -0
  17. package/dist/commands/providers.d.ts.map +1 -0
  18. package/dist/commands/providers.js +274 -0
  19. package/dist/commands/providers.js.map +1 -0
  20. package/dist/commands/registry.d.ts +11 -0
  21. package/dist/commands/registry.d.ts.map +1 -0
  22. package/dist/commands/registry.js +28 -0
  23. package/dist/commands/registry.js.map +1 -0
  24. package/dist/commands/run.d.ts +14 -0
  25. package/dist/commands/run.d.ts.map +1 -0
  26. package/dist/commands/run.js +73 -0
  27. package/dist/commands/run.js.map +1 -0
  28. package/dist/commands/stubs.d.ts +12 -0
  29. package/dist/commands/stubs.d.ts.map +1 -0
  30. package/dist/commands/stubs.js +32 -0
  31. package/dist/commands/stubs.js.map +1 -0
  32. package/dist/commands/tools.d.ts +16 -0
  33. package/dist/commands/tools.d.ts.map +1 -0
  34. package/dist/commands/tools.js +161 -0
  35. package/dist/commands/tools.js.map +1 -0
  36. package/dist/commands/types.d.ts +25 -0
  37. package/dist/commands/types.d.ts.map +1 -0
  38. package/dist/commands/types.js +2 -0
  39. package/dist/commands/types.js.map +1 -0
  40. package/dist/config/load.d.ts +25 -0
  41. package/dist/config/load.d.ts.map +1 -0
  42. package/dist/config/load.js +92 -0
  43. package/dist/config/load.js.map +1 -0
  44. package/dist/config/load.test.d.ts +2 -0
  45. package/dist/config/load.test.d.ts.map +1 -0
  46. package/dist/config/load.test.js +57 -0
  47. package/dist/config/load.test.js.map +1 -0
  48. package/dist/config/schema.d.ts +29 -0
  49. package/dist/config/schema.d.ts.map +1 -0
  50. package/dist/config/schema.js +13 -0
  51. package/dist/config/schema.js.map +1 -0
  52. package/dist/doctor/registry.d.ts.map +1 -1
  53. package/dist/doctor/registry.js +3 -1
  54. package/dist/doctor/registry.js.map +1 -1
  55. package/dist/doctor/registry.test.js +4 -1
  56. package/dist/doctor/registry.test.js.map +1 -1
  57. package/dist/index.d.ts +6 -0
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +7 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/integrations/clawtool/agents.d.ts +31 -0
  62. package/dist/integrations/clawtool/agents.d.ts.map +1 -0
  63. package/dist/integrations/clawtool/agents.js +30 -0
  64. package/dist/integrations/clawtool/agents.js.map +1 -0
  65. package/dist/integrations/clawtool/agents.test.d.ts +2 -0
  66. package/dist/integrations/clawtool/agents.test.d.ts.map +1 -0
  67. package/dist/integrations/clawtool/agents.test.js +79 -0
  68. package/dist/integrations/clawtool/agents.test.js.map +1 -0
  69. package/dist/integrations/clawtool/auth.d.ts +26 -0
  70. package/dist/integrations/clawtool/auth.d.ts.map +1 -0
  71. package/dist/integrations/clawtool/auth.js +56 -0
  72. package/dist/integrations/clawtool/auth.js.map +1 -0
  73. package/dist/integrations/clawtool/auth.test.d.ts +2 -0
  74. package/dist/integrations/clawtool/auth.test.d.ts.map +1 -0
  75. package/dist/integrations/clawtool/auth.test.js +40 -0
  76. package/dist/integrations/clawtool/auth.test.js.map +1 -0
  77. package/dist/integrations/clawtool/binary.d.ts +25 -0
  78. package/dist/integrations/clawtool/binary.d.ts.map +1 -0
  79. package/dist/integrations/clawtool/binary.js +50 -0
  80. package/dist/integrations/clawtool/binary.js.map +1 -0
  81. package/dist/integrations/clawtool/binary.test.d.ts +2 -0
  82. package/dist/integrations/clawtool/binary.test.d.ts.map +1 -0
  83. package/dist/integrations/clawtool/binary.test.js +42 -0
  84. package/dist/integrations/clawtool/binary.test.js.map +1 -0
  85. package/dist/integrations/clawtool/daemon.d.ts +37 -0
  86. package/dist/integrations/clawtool/daemon.d.ts.map +1 -0
  87. package/dist/integrations/clawtool/daemon.js +109 -0
  88. package/dist/integrations/clawtool/daemon.js.map +1 -0
  89. package/dist/integrations/clawtool/daemon.test.d.ts +11 -0
  90. package/dist/integrations/clawtool/daemon.test.d.ts.map +1 -0
  91. package/dist/integrations/clawtool/daemon.test.js +118 -0
  92. package/dist/integrations/clawtool/daemon.test.js.map +1 -0
  93. package/dist/integrations/clawtool/dispatch.d.ts +33 -0
  94. package/dist/integrations/clawtool/dispatch.d.ts.map +1 -0
  95. package/dist/integrations/clawtool/dispatch.js +155 -0
  96. package/dist/integrations/clawtool/dispatch.js.map +1 -0
  97. package/dist/integrations/clawtool/dispatch.test.d.ts +2 -0
  98. package/dist/integrations/clawtool/dispatch.test.d.ts.map +1 -0
  99. package/dist/integrations/clawtool/dispatch.test.js +138 -0
  100. package/dist/integrations/clawtool/dispatch.test.js.map +1 -0
  101. package/dist/integrations/clawtool/index.d.ts +11 -0
  102. package/dist/integrations/clawtool/index.d.ts.map +1 -0
  103. package/dist/integrations/clawtool/index.js +10 -0
  104. package/dist/integrations/clawtool/index.js.map +1 -0
  105. package/dist/integrations/clawtool/mcp.d.ts +51 -0
  106. package/dist/integrations/clawtool/mcp.d.ts.map +1 -0
  107. package/dist/integrations/clawtool/mcp.js +156 -0
  108. package/dist/integrations/clawtool/mcp.js.map +1 -0
  109. package/dist/integrations/clawtool/mcp.test.d.ts +2 -0
  110. package/dist/integrations/clawtool/mcp.test.d.ts.map +1 -0
  111. package/dist/integrations/clawtool/mcp.test.js +126 -0
  112. package/dist/integrations/clawtool/mcp.test.js.map +1 -0
  113. package/dist/integrations/clawtool/paths.d.ts +8 -0
  114. package/dist/integrations/clawtool/paths.d.ts.map +1 -0
  115. package/dist/integrations/clawtool/paths.js +19 -0
  116. package/dist/integrations/clawtool/paths.js.map +1 -0
  117. package/dist/integrations/clawtool/peers.d.ts +67 -0
  118. package/dist/integrations/clawtool/peers.d.ts.map +1 -0
  119. package/dist/integrations/clawtool/peers.js +150 -0
  120. package/dist/integrations/clawtool/peers.js.map +1 -0
  121. package/dist/integrations/clawtool/plugin.d.ts +42 -0
  122. package/dist/integrations/clawtool/plugin.d.ts.map +1 -0
  123. package/dist/integrations/clawtool/plugin.js +38 -0
  124. package/dist/integrations/clawtool/plugin.js.map +1 -0
  125. package/dist/integrations/clawtool/state.d.ts +11 -0
  126. package/dist/integrations/clawtool/state.d.ts.map +1 -0
  127. package/dist/integrations/clawtool/state.js +41 -0
  128. package/dist/integrations/clawtool/state.js.map +1 -0
  129. package/dist/integrations/clawtool/state.test.d.ts +2 -0
  130. package/dist/integrations/clawtool/state.test.d.ts.map +1 -0
  131. package/dist/integrations/clawtool/state.test.js +38 -0
  132. package/dist/integrations/clawtool/state.test.js.map +1 -0
  133. package/dist/integrations/clawtool/tooling.d.ts +50 -0
  134. package/dist/integrations/clawtool/tooling.d.ts.map +1 -0
  135. package/dist/integrations/clawtool/tooling.js +89 -0
  136. package/dist/integrations/clawtool/tooling.js.map +1 -0
  137. package/dist/integrations/clawtool/tooling.test.d.ts +2 -0
  138. package/dist/integrations/clawtool/tooling.test.d.ts.map +1 -0
  139. package/dist/integrations/clawtool/tooling.test.js +58 -0
  140. package/dist/integrations/clawtool/tooling.test.js.map +1 -0
  141. package/dist/integrations/clawtool/types.d.ts +41 -0
  142. package/dist/integrations/clawtool/types.d.ts.map +1 -0
  143. package/dist/integrations/clawtool/types.js +9 -0
  144. package/dist/integrations/clawtool/types.js.map +1 -0
  145. package/dist/integrations/clipboard/image.d.ts +18 -0
  146. package/dist/integrations/clipboard/image.d.ts.map +1 -0
  147. package/dist/integrations/clipboard/image.js +88 -0
  148. package/dist/integrations/clipboard/image.js.map +1 -0
  149. package/dist/integrations/providers/discover.d.ts +68 -0
  150. package/dist/integrations/providers/discover.d.ts.map +1 -0
  151. package/dist/integrations/providers/discover.js +108 -0
  152. package/dist/integrations/providers/discover.js.map +1 -0
  153. package/dist/integrations/providers/discover.test.d.ts +2 -0
  154. package/dist/integrations/providers/discover.test.d.ts.map +1 -0
  155. package/dist/integrations/providers/discover.test.js +120 -0
  156. package/dist/integrations/providers/discover.test.js.map +1 -0
  157. package/dist/integrations/providers/index.d.ts +10 -0
  158. package/dist/integrations/providers/index.d.ts.map +1 -0
  159. package/dist/integrations/providers/index.js +12 -0
  160. package/dist/integrations/providers/index.js.map +1 -0
  161. package/dist/integrations/providers/keychain.d.ts +44 -0
  162. package/dist/integrations/providers/keychain.d.ts.map +1 -0
  163. package/dist/integrations/providers/keychain.js +154 -0
  164. package/dist/integrations/providers/keychain.js.map +1 -0
  165. package/dist/integrations/providers/keychain.test.d.ts +2 -0
  166. package/dist/integrations/providers/keychain.test.d.ts.map +1 -0
  167. package/dist/integrations/providers/keychain.test.js +21 -0
  168. package/dist/integrations/providers/keychain.test.js.map +1 -0
  169. package/dist/integrations/providers/mask.d.ts +7 -0
  170. package/dist/integrations/providers/mask.d.ts.map +1 -0
  171. package/dist/integrations/providers/mask.js +14 -0
  172. package/dist/integrations/providers/mask.js.map +1 -0
  173. package/dist/integrations/providers/mask.test.d.ts +2 -0
  174. package/dist/integrations/providers/mask.test.d.ts.map +1 -0
  175. package/dist/integrations/providers/mask.test.js +20 -0
  176. package/dist/integrations/providers/mask.test.js.map +1 -0
  177. package/dist/integrations/providers/oauth.d.ts +28 -0
  178. package/dist/integrations/providers/oauth.d.ts.map +1 -0
  179. package/dist/integrations/providers/oauth.js +65 -0
  180. package/dist/integrations/providers/oauth.js.map +1 -0
  181. package/dist/integrations/providers/oauth.test.d.ts +2 -0
  182. package/dist/integrations/providers/oauth.test.d.ts.map +1 -0
  183. package/dist/integrations/providers/oauth.test.js +86 -0
  184. package/dist/integrations/providers/oauth.test.js.map +1 -0
  185. package/dist/integrations/providers/preferences.d.ts +43 -0
  186. package/dist/integrations/providers/preferences.d.ts.map +1 -0
  187. package/dist/integrations/providers/preferences.js +111 -0
  188. package/dist/integrations/providers/preferences.js.map +1 -0
  189. package/dist/integrations/providers/preferences.test.d.ts +2 -0
  190. package/dist/integrations/providers/preferences.test.d.ts.map +1 -0
  191. package/dist/integrations/providers/preferences.test.js +68 -0
  192. package/dist/integrations/providers/preferences.test.js.map +1 -0
  193. package/dist/integrations/providers/registry.d.ts +31 -0
  194. package/dist/integrations/providers/registry.d.ts.map +1 -0
  195. package/dist/integrations/providers/registry.js +79 -0
  196. package/dist/integrations/providers/registry.js.map +1 -0
  197. package/dist/integrations/providers/schema.d.ts +73 -0
  198. package/dist/integrations/providers/schema.d.ts.map +1 -0
  199. package/dist/integrations/providers/schema.js +70 -0
  200. package/dist/integrations/providers/schema.js.map +1 -0
  201. package/dist/integrations/providers/schema.test.d.ts +2 -0
  202. package/dist/integrations/providers/schema.test.d.ts.map +1 -0
  203. package/dist/integrations/providers/schema.test.js +43 -0
  204. package/dist/integrations/providers/schema.test.js.map +1 -0
  205. package/dist/integrations/providers/secrets.d.ts +37 -0
  206. package/dist/integrations/providers/secrets.d.ts.map +1 -0
  207. package/dist/integrations/providers/secrets.js +69 -0
  208. package/dist/integrations/providers/secrets.js.map +1 -0
  209. package/dist/integrations/providers/store.d.ts +32 -0
  210. package/dist/integrations/providers/store.d.ts.map +1 -0
  211. package/dist/integrations/providers/store.js +133 -0
  212. package/dist/integrations/providers/store.js.map +1 -0
  213. package/dist/integrations/providers/store.test.d.ts +2 -0
  214. package/dist/integrations/providers/store.test.d.ts.map +1 -0
  215. package/dist/integrations/providers/store.test.js +127 -0
  216. package/dist/integrations/providers/store.test.js.map +1 -0
  217. package/dist/integrations/sessions/store.d.ts +40 -0
  218. package/dist/integrations/sessions/store.d.ts.map +1 -0
  219. package/dist/integrations/sessions/store.js +90 -0
  220. package/dist/integrations/sessions/store.js.map +1 -0
  221. package/dist/integrations/subagents/runtime.d.ts +37 -0
  222. package/dist/integrations/subagents/runtime.d.ts.map +1 -0
  223. package/dist/integrations/subagents/runtime.js +183 -0
  224. package/dist/integrations/subagents/runtime.js.map +1 -0
  225. package/dist/integrations/trust/store.d.ts +16 -0
  226. package/dist/integrations/trust/store.d.ts.map +1 -0
  227. package/dist/integrations/trust/store.js +59 -0
  228. package/dist/integrations/trust/store.js.map +1 -0
  229. package/dist/integrations/trust/store.test.d.ts +2 -0
  230. package/dist/integrations/trust/store.test.d.ts.map +1 -0
  231. package/dist/integrations/trust/store.test.js +50 -0
  232. package/dist/integrations/trust/store.test.js.map +1 -0
  233. package/dist/integrations/updates.d.ts +27 -0
  234. package/dist/integrations/updates.d.ts.map +1 -0
  235. package/dist/integrations/updates.js +99 -0
  236. package/dist/integrations/updates.js.map +1 -0
  237. package/dist/memory/store.d.ts +29 -0
  238. package/dist/memory/store.d.ts.map +1 -0
  239. package/dist/memory/store.js +74 -0
  240. package/dist/memory/store.js.map +1 -0
  241. package/dist/memory/store.test.d.ts +2 -0
  242. package/dist/memory/store.test.d.ts.map +1 -0
  243. package/dist/memory/store.test.js +63 -0
  244. package/dist/memory/store.test.js.map +1 -0
  245. package/dist/output/formatter.d.ts +30 -0
  246. package/dist/output/formatter.d.ts.map +1 -0
  247. package/dist/output/formatter.js +16 -0
  248. package/dist/output/formatter.js.map +1 -0
  249. package/dist/output/formatter.test.d.ts +2 -0
  250. package/dist/output/formatter.test.d.ts.map +1 -0
  251. package/dist/output/formatter.test.js +88 -0
  252. package/dist/output/formatter.test.js.map +1 -0
  253. package/dist/output/index.d.ts +5 -0
  254. package/dist/output/index.d.ts.map +1 -0
  255. package/dist/output/index.js +22 -0
  256. package/dist/output/index.js.map +1 -0
  257. package/dist/output/json.d.ts +13 -0
  258. package/dist/output/json.d.ts.map +1 -0
  259. package/dist/output/json.js +51 -0
  260. package/dist/output/json.js.map +1 -0
  261. package/dist/output/text.d.ts +13 -0
  262. package/dist/output/text.d.ts.map +1 -0
  263. package/dist/output/text.js +36 -0
  264. package/dist/output/text.js.map +1 -0
  265. package/dist/output/yaml.d.ts +13 -0
  266. package/dist/output/yaml.d.ts.map +1 -0
  267. package/dist/output/yaml.js +26 -0
  268. package/dist/output/yaml.js.map +1 -0
  269. package/dist/skills/store.d.ts +49 -0
  270. package/dist/skills/store.d.ts.map +1 -0
  271. package/dist/skills/store.js +109 -0
  272. package/dist/skills/store.js.map +1 -0
  273. package/dist/skills/store.test.d.ts +2 -0
  274. package/dist/skills/store.test.d.ts.map +1 -0
  275. package/dist/skills/store.test.js +80 -0
  276. package/dist/skills/store.test.js.map +1 -0
  277. package/dist/tui/App.d.ts +18 -0
  278. package/dist/tui/App.d.ts.map +1 -0
  279. package/dist/tui/App.js +742 -0
  280. package/dist/tui/App.js.map +1 -0
  281. package/dist/tui/Composer.d.ts +17 -0
  282. package/dist/tui/Composer.d.ts.map +1 -0
  283. package/dist/tui/Composer.js +123 -0
  284. package/dist/tui/Composer.js.map +1 -0
  285. package/dist/tui/LiveActivity.d.ts +22 -0
  286. package/dist/tui/LiveActivity.d.ts.map +1 -0
  287. package/dist/tui/LiveActivity.js +46 -0
  288. package/dist/tui/LiveActivity.js.map +1 -0
  289. package/dist/tui/Markdown.d.ts +18 -0
  290. package/dist/tui/Markdown.d.ts.map +1 -0
  291. package/dist/tui/Markdown.js +68 -0
  292. package/dist/tui/Markdown.js.map +1 -0
  293. package/dist/tui/PermissionOverlay.d.ts +14 -0
  294. package/dist/tui/PermissionOverlay.d.ts.map +1 -0
  295. package/dist/tui/PermissionOverlay.js +22 -0
  296. package/dist/tui/PermissionOverlay.js.map +1 -0
  297. package/dist/tui/Picker.d.ts +20 -0
  298. package/dist/tui/Picker.d.ts.map +1 -0
  299. package/dist/tui/Picker.js +72 -0
  300. package/dist/tui/Picker.js.map +1 -0
  301. package/dist/tui/ResumePicker.d.ts +12 -0
  302. package/dist/tui/ResumePicker.d.ts.map +1 -0
  303. package/dist/tui/ResumePicker.js +26 -0
  304. package/dist/tui/ResumePicker.js.map +1 -0
  305. package/dist/tui/StatusBar.d.ts +22 -0
  306. package/dist/tui/StatusBar.d.ts.map +1 -0
  307. package/dist/tui/StatusBar.js +73 -0
  308. package/dist/tui/StatusBar.js.map +1 -0
  309. package/dist/tui/Transcript.d.ts +29 -0
  310. package/dist/tui/Transcript.d.ts.map +1 -0
  311. package/dist/tui/Transcript.js +105 -0
  312. package/dist/tui/Transcript.js.map +1 -0
  313. package/dist/tui/TrustPrompt.d.ts +11 -0
  314. package/dist/tui/TrustPrompt.d.ts.map +1 -0
  315. package/dist/tui/TrustPrompt.js +13 -0
  316. package/dist/tui/TrustPrompt.js.map +1 -0
  317. package/dist/tui/agent.d.ts +163 -0
  318. package/dist/tui/agent.d.ts.map +1 -0
  319. package/dist/tui/agent.js +684 -0
  320. package/dist/tui/agent.js.map +1 -0
  321. package/dist/tui/agent.test.d.ts +2 -0
  322. package/dist/tui/agent.test.d.ts.map +1 -0
  323. package/dist/tui/agent.test.js +225 -0
  324. package/dist/tui/agent.test.js.map +1 -0
  325. package/dist/tui/index.d.ts +7 -0
  326. package/dist/tui/index.d.ts.map +1 -0
  327. package/dist/tui/index.js +29 -0
  328. package/dist/tui/index.js.map +1 -0
  329. package/dist/tui/logo.d.ts +23 -0
  330. package/dist/tui/logo.d.ts.map +1 -0
  331. package/dist/tui/logo.js +35 -0
  332. package/dist/tui/logo.js.map +1 -0
  333. package/dist/tui/markdownParser.d.ts +45 -0
  334. package/dist/tui/markdownParser.d.ts.map +1 -0
  335. package/dist/tui/markdownParser.js +127 -0
  336. package/dist/tui/markdownParser.js.map +1 -0
  337. package/dist/tui/markdownParser.test.d.ts +2 -0
  338. package/dist/tui/markdownParser.test.d.ts.map +1 -0
  339. package/dist/tui/markdownParser.test.js +90 -0
  340. package/dist/tui/markdownParser.test.js.map +1 -0
  341. package/dist/tui/mentions.d.ts +22 -0
  342. package/dist/tui/mentions.d.ts.map +1 -0
  343. package/dist/tui/mentions.js +59 -0
  344. package/dist/tui/mentions.js.map +1 -0
  345. package/dist/tui/mentions.test.d.ts +2 -0
  346. package/dist/tui/mentions.test.d.ts.map +1 -0
  347. package/dist/tui/mentions.test.js +35 -0
  348. package/dist/tui/mentions.test.js.map +1 -0
  349. package/dist/tui/slashCommands.d.ts +64 -0
  350. package/dist/tui/slashCommands.d.ts.map +1 -0
  351. package/dist/tui/slashCommands.js +153 -0
  352. package/dist/tui/slashCommands.js.map +1 -0
  353. package/dist/tui/slashCommands.test.d.ts +2 -0
  354. package/dist/tui/slashCommands.test.d.ts.map +1 -0
  355. package/dist/tui/slashCommands.test.js +114 -0
  356. package/dist/tui/slashCommands.test.js.map +1 -0
  357. package/dist/tui/theme.d.ts +34 -0
  358. package/dist/tui/theme.d.ts.map +1 -0
  359. package/dist/tui/theme.js +32 -0
  360. package/dist/tui/theme.js.map +1 -0
  361. package/dist/tui/types.d.ts +27 -0
  362. package/dist/tui/types.d.ts.map +1 -0
  363. package/dist/tui/types.js +7 -0
  364. package/dist/tui/types.js.map +1 -0
  365. package/package.json +67 -57
@@ -0,0 +1,274 @@
1
+ /**
2
+ * `namzu providers` — real implementation, replacing the M0 stub.
3
+ *
4
+ * Subcommands:
5
+ * - `ls` List configured profiles (mask secrets by default).
6
+ * - `add <name>` Persist a new profile.
7
+ * - `remove <name>` Drop a profile from the store.
8
+ * - `default <name>` Flip the `default` flag onto one profile.
9
+ * - `path` Print the store path (useful for env automation).
10
+ *
11
+ * Passthrough mode + inner Commander instance — same pattern as `tools`.
12
+ * Live provider instantiation (calling `ProviderRegistry.create`) is M3
13
+ * work and not done here; M2's job is purely "store + retrieve + display".
14
+ */
15
+ import { Command, CommanderError } from 'commander';
16
+ import { PROVIDER_TYPES, ProfileValidationError, ProvidersStoreError, findDefault, isProviderType, maskSecret, providersPath, readProfiles, resolveApiKey, validateProfile, writeProfiles, } from '../integrations/providers/index.js';
17
+ async function runLs(ctx, opts) {
18
+ let profiles;
19
+ try {
20
+ profiles = readProfiles();
21
+ }
22
+ catch (err) {
23
+ ctx.formatter.error({
24
+ message: err instanceof Error ? err.message : String(err),
25
+ });
26
+ return 70;
27
+ }
28
+ let filtered = profiles;
29
+ if (opts.type) {
30
+ if (!isProviderType(opts.type)) {
31
+ ctx.formatter.error({
32
+ message: `--type must be one of: ${PROVIDER_TYPES.join(', ')}`,
33
+ });
34
+ return 64;
35
+ }
36
+ filtered = profiles.filter((p) => p.type === opts.type);
37
+ }
38
+ const rows = filtered.map((p) => {
39
+ const apiKey = resolveApiKey(p);
40
+ return {
41
+ name: p.name,
42
+ type: p.type,
43
+ model: p.model ?? null,
44
+ apiKey: opts.showSecrets ? apiKey : maskSecret(apiKey),
45
+ default: p.default === true,
46
+ source: keySource(p, apiKey),
47
+ };
48
+ });
49
+ ctx.formatter.print({
50
+ path: providersPath(),
51
+ count: rows.length,
52
+ default: findDefault(profiles)?.name ?? null,
53
+ profiles: rows,
54
+ });
55
+ return 0;
56
+ }
57
+ async function runAdd(ctx, name, opts) {
58
+ if (!isProviderType(opts.type)) {
59
+ ctx.formatter.error({
60
+ message: `--type must be one of: ${PROVIDER_TYPES.join(', ')}`,
61
+ });
62
+ return 64;
63
+ }
64
+ const type = opts.type;
65
+ let candidate;
66
+ switch (type) {
67
+ case 'openai':
68
+ candidate = pruneUndefined({
69
+ name,
70
+ type,
71
+ apiKey: opts.apiKey,
72
+ baseUrl: opts.baseUrl,
73
+ model: opts.model,
74
+ organization: opts.organization,
75
+ project: opts.project,
76
+ default: opts.default,
77
+ });
78
+ break;
79
+ case 'anthropic':
80
+ case 'openrouter':
81
+ candidate = pruneUndefined({
82
+ name,
83
+ type,
84
+ apiKey: opts.apiKey,
85
+ baseUrl: opts.baseUrl,
86
+ model: opts.model,
87
+ default: opts.default,
88
+ });
89
+ break;
90
+ case 'ollama':
91
+ case 'lmstudio':
92
+ candidate = pruneUndefined({
93
+ name,
94
+ type,
95
+ host: opts.host,
96
+ model: opts.model,
97
+ default: opts.default,
98
+ });
99
+ break;
100
+ case 'bedrock':
101
+ candidate = pruneUndefined({
102
+ name,
103
+ type,
104
+ region: opts.region,
105
+ model: opts.model,
106
+ default: opts.default,
107
+ });
108
+ break;
109
+ case 'http':
110
+ if (!opts.baseUrl) {
111
+ ctx.formatter.error({ message: '--base-url is required for type=http' });
112
+ return 64;
113
+ }
114
+ candidate = pruneUndefined({
115
+ name,
116
+ type,
117
+ baseUrl: opts.baseUrl,
118
+ apiKey: opts.apiKey,
119
+ model: opts.model,
120
+ dialect: opts.dialect,
121
+ default: opts.default,
122
+ });
123
+ break;
124
+ }
125
+ let profile;
126
+ try {
127
+ profile = validateProfile(candidate);
128
+ }
129
+ catch (err) {
130
+ if (err instanceof ProfileValidationError) {
131
+ ctx.formatter.error({ message: err.message });
132
+ return 64;
133
+ }
134
+ throw err;
135
+ }
136
+ const existing = readProfiles();
137
+ if (existing.some((p) => p.name === name)) {
138
+ ctx.formatter.error({
139
+ message: `profile "${name}" already exists; use \`namzu providers remove ${name}\` first`,
140
+ });
141
+ return 64;
142
+ }
143
+ const merged = opts.default
144
+ ? [...existing.map((p) => ({ ...p, default: false })), profile]
145
+ : [...existing, profile];
146
+ try {
147
+ writeProfiles(merged);
148
+ }
149
+ catch (err) {
150
+ if (err instanceof ProvidersStoreError) {
151
+ ctx.formatter.error({ message: err.message });
152
+ return 70;
153
+ }
154
+ throw err;
155
+ }
156
+ ctx.formatter.info(`added profile "${name}" (${type})${opts.default ? ' as default' : ''}`);
157
+ return 0;
158
+ }
159
+ async function runRemove(ctx, name) {
160
+ const existing = readProfiles();
161
+ if (!existing.some((p) => p.name === name)) {
162
+ ctx.formatter.error({ message: `no profile named "${name}"` });
163
+ return 64;
164
+ }
165
+ writeProfiles(existing.filter((p) => p.name !== name));
166
+ ctx.formatter.info(`removed profile "${name}"`);
167
+ return 0;
168
+ }
169
+ async function runDefault(ctx, name) {
170
+ const existing = readProfiles();
171
+ if (!existing.some((p) => p.name === name)) {
172
+ ctx.formatter.error({ message: `no profile named "${name}"` });
173
+ return 64;
174
+ }
175
+ const updated = existing.map((p) => ({ ...p, default: p.name === name }));
176
+ writeProfiles(updated);
177
+ ctx.formatter.info(`default provider set to "${name}"`);
178
+ return 0;
179
+ }
180
+ function runPath(ctx) {
181
+ ctx.formatter.print(providersPath());
182
+ return 0;
183
+ }
184
+ function keySource(p, resolved) {
185
+ if (resolved === null)
186
+ return 'none';
187
+ const onDisk = p.apiKey;
188
+ if (onDisk && onDisk === resolved)
189
+ return 'file';
190
+ return 'env';
191
+ }
192
+ function pruneUndefined(obj) {
193
+ const out = {};
194
+ for (const [k, v] of Object.entries(obj)) {
195
+ if (v !== undefined)
196
+ out[k] = v;
197
+ }
198
+ return out;
199
+ }
200
+ export const providersCommand = {
201
+ name: 'providers',
202
+ description: 'Manage LLM provider profiles (stored at ~/.namzu/providers.json)',
203
+ passThrough: true,
204
+ async handler({ ctx, rawArgs }) {
205
+ let exitCode = 0;
206
+ const program = new Command('providers')
207
+ .description('Manage LLM provider profiles')
208
+ .exitOverride()
209
+ .helpOption('-h, --help', 'Show this help');
210
+ program
211
+ .command('ls')
212
+ .description('List configured provider profiles')
213
+ .option('--show-secrets', 'Print API keys in the clear (default: mask)')
214
+ .option('--type <type>', `Filter by provider type (${PROVIDER_TYPES.join('|')})`)
215
+ .action(async (opts) => {
216
+ exitCode = await runLs(ctx, opts);
217
+ });
218
+ program
219
+ .command('add <name>')
220
+ .description('Persist a new provider profile')
221
+ .requiredOption('--type <type>', `Provider type (${PROVIDER_TYPES.join('|')})`)
222
+ .option('--api-key <key>', 'API key (also reads NAMZU_<NAME>_API_KEY / <TYPE>_API_KEY env)')
223
+ .option('--base-url <url>', 'Override base URL (required for type=http)')
224
+ .option('--model <model>', 'Default model identifier')
225
+ .option('--organization <org>', 'OpenAI organization id')
226
+ .option('--project <proj>', 'OpenAI project id')
227
+ .option('--host <host>', 'Local server host (ollama, lmstudio)')
228
+ .option('--region <region>', 'AWS region (bedrock)')
229
+ .option('--dialect <dialect>', "HTTP shim dialect ('openai' | 'anthropic')")
230
+ .option('--default', 'Mark as the default profile (unsets any prior default)')
231
+ .action(async (name, opts) => {
232
+ exitCode = await runAdd(ctx, name, opts);
233
+ });
234
+ program
235
+ .command('remove <name>')
236
+ .description('Drop a profile from the store')
237
+ .action(async (name) => {
238
+ exitCode = await runRemove(ctx, name);
239
+ });
240
+ program
241
+ .command('default <name>')
242
+ .description('Mark a profile as the default')
243
+ .action(async (name) => {
244
+ exitCode = await runDefault(ctx, name);
245
+ });
246
+ program
247
+ .command('path')
248
+ .description('Print the profile store path')
249
+ .action(() => {
250
+ exitCode = runPath(ctx);
251
+ });
252
+ if (rawArgs.length === 0) {
253
+ program.outputHelp();
254
+ return 0;
255
+ }
256
+ try {
257
+ await program.parseAsync(rawArgs, { from: 'user' });
258
+ return exitCode;
259
+ }
260
+ catch (err) {
261
+ if (err instanceof CommanderError) {
262
+ if (err.code === 'commander.help' ||
263
+ err.code === 'commander.helpDisplayed' ||
264
+ err.code === 'commander.version') {
265
+ return 0;
266
+ }
267
+ return 64;
268
+ }
269
+ ctx.formatter.error({ message: err instanceof Error ? err.message : String(err) });
270
+ return 70;
271
+ }
272
+ },
273
+ };
274
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/commands/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Command } from 'commander';
2
+ import type { CommandContext, CommandDef } from './types.js';
3
+ export interface RegisterOptions {
4
+ /** Lazily-resolved command context — built only after global flags are parsed. */
5
+ readonly getContext: () => CommandContext;
6
+ /** Callback the registry uses to surface an action handler's return code. */
7
+ readonly setExitCode: (code: number) => void;
8
+ }
9
+ export declare function registerCommand(program: Command, def: CommandDef, opts: RegisterOptions): void;
10
+ export declare function registerAll(program: Command, defs: readonly CommandDef[], opts: RegisterOptions): void;
11
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,WAAW,eAAe;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,MAAM,cAAc,CAAA;IACzC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAsB9F;AAED,wBAAgB,WAAW,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,IAAI,EAAE,eAAe,GACnB,IAAI,CAEN"}
@@ -0,0 +1,28 @@
1
+ export function registerCommand(program, def, opts) {
2
+ const cmd = program.command(def.name).description(def.description);
3
+ if (def.passThrough) {
4
+ cmd
5
+ .helpOption(false)
6
+ .allowUnknownOption(true)
7
+ .passThroughOptions(true)
8
+ .argument('[args...]')
9
+ .action(async (args) => {
10
+ const code = await def.handler({
11
+ ctx: opts.getContext(),
12
+ rawArgs: args ?? [],
13
+ });
14
+ opts.setExitCode(code);
15
+ });
16
+ }
17
+ else {
18
+ cmd.action(async () => {
19
+ const code = await def.handler({ ctx: opts.getContext(), rawArgs: [] });
20
+ opts.setExitCode(code);
21
+ });
22
+ }
23
+ }
24
+ export function registerAll(program, defs, opts) {
25
+ for (const def of defs)
26
+ registerCommand(program, def, opts);
27
+ }
28
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,GAAe,EAAE,IAAqB;IACvF,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAElE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG;aACD,UAAU,CAAC,KAAK,CAAC;aACjB,kBAAkB,CAAC,IAAI,CAAC;aACxB,kBAAkB,CAAC,IAAI,CAAC;aACxB,QAAQ,CAAC,WAAW,CAAC;aACrB,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;gBAC9B,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;gBACtB,OAAO,EAAE,IAAI,IAAI,EAAE;aACnB,CAAC,CAAA;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;YACvE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACH,CAAC;AACF,CAAC;AAED,MAAM,UAAU,WAAW,CAC1B,OAAgB,EAChB,IAA2B,EAC3B,IAAqB;IAErB,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;AAC5D,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `namzu run "<prompt>"` — headless one-shot. Runs a single prompt through
3
+ * the same agent the TUI uses and prints the reply to stdout, for scripts
4
+ * and CI (the equivalent of claude-code's `--print`). The prompt comes from
5
+ * the arguments, or from stdin when piped. Status lines go to stderr (info,
6
+ * suppressed by `--quiet`); only the answer hits stdout.
7
+ *
8
+ * Non-interactive, so there's no approval prompt — tools auto-run, but the
9
+ * safety gate still hard-denies catastrophic commands. One-shots use an
10
+ * ephemeral session and are not added to `/resume` history.
11
+ */
12
+ import type { CommandDef } from './types.js';
13
+ export declare const runCommand: CommandDef;
14
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAc5C,eAAO,MAAM,UAAU,EAAE,UAmDxB,CAAA"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * `namzu run "<prompt>"` — headless one-shot. Runs a single prompt through
3
+ * the same agent the TUI uses and prints the reply to stdout, for scripts
4
+ * and CI (the equivalent of claude-code's `--print`). The prompt comes from
5
+ * the arguments, or from stdin when piped. Status lines go to stderr (info,
6
+ * suppressed by `--quiet`); only the answer hits stdout.
7
+ *
8
+ * Non-interactive, so there's no approval prompt — tools auto-run, but the
9
+ * safety gate still hard-denies catastrophic commands. One-shots use an
10
+ * ephemeral session and are not added to `/resume` history.
11
+ */
12
+ import { configureLogger } from '@namzu/sdk';
13
+ async function readStdin() {
14
+ if (process.stdin.isTTY)
15
+ return '';
16
+ const chunks = [];
17
+ for await (const chunk of process.stdin)
18
+ chunks.push(chunk);
19
+ return Buffer.concat(chunks).toString('utf8');
20
+ }
21
+ function defaultPrefs(detected) {
22
+ const first = detected[0];
23
+ return first ? { version: 2, provider: first.entry.id, subagents: { active: [] } } : null;
24
+ }
25
+ export const runCommand = {
26
+ name: 'run',
27
+ description: 'Run a single prompt headlessly and print the reply (for scripts/CI)',
28
+ passThrough: true,
29
+ handler: async ({ ctx, rawArgs }) => {
30
+ let prompt = rawArgs.join(' ').trim();
31
+ if (!prompt)
32
+ prompt = (await readStdin()).trim();
33
+ if (!prompt) {
34
+ ctx.formatter.error({ message: 'no prompt — pass it as an argument or pipe it via stdin' });
35
+ return 2;
36
+ }
37
+ configureLogger({ level: 'silent' });
38
+ const { probeAgentSession, createAgentSession } = await import('../tui/agent.js');
39
+ const probe = await probeAgentSession();
40
+ const prefs = probe.preferences ?? defaultPrefs(probe.detected);
41
+ if (!prefs) {
42
+ ctx.formatter.error({
43
+ message: 'no LLM provider available — set a credential (e.g. ANTHROPIC_API_KEY) or run `namzu` to pick one',
44
+ });
45
+ return 1;
46
+ }
47
+ const session = await createAgentSession(prefs, probe.detected);
48
+ if (!session.hasProvider) {
49
+ ctx.formatter.error({ message: session.errorHint ?? 'agent is not ready' });
50
+ return 1;
51
+ }
52
+ ctx.formatter.info(`namzu · ${session.providerSummary}${session.modelSummary ? ` · ${session.modelSummary}` : ''}`);
53
+ let text = '';
54
+ let failed = null;
55
+ for await (const event of session.send([
56
+ { role: 'user', content: prompt, timestamp: Date.now() },
57
+ ])) {
58
+ if (event.kind === 'delta')
59
+ text += event.text;
60
+ else if (event.kind === 'tool-start')
61
+ ctx.formatter.info(`⏺ ${event.toolName} ${event.summary}`);
62
+ else if (event.kind === 'error')
63
+ failed = event.message;
64
+ }
65
+ if (failed) {
66
+ ctx.formatter.error({ message: failed });
67
+ return 1;
68
+ }
69
+ ctx.formatter.print(ctx.formatter.name === 'json' ? { text: text.trim() } : text.trim());
70
+ return 0;
71
+ },
72
+ };
73
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Stub commands that advertise the future surface of the CLI.
3
+ *
4
+ * Each stub corresponds to a milestone in the M0→M7 plan and exits 0 after
5
+ * printing a structured marker. The implementations themselves land in
6
+ * their respective milestone sessions (see docs.local/sessions/).
7
+ */
8
+ import type { CommandDef } from './types.js';
9
+ export declare const skillsCommand: CommandDef;
10
+ export declare const serveCommand: CommandDef;
11
+ export declare const stubCommands: readonly CommandDef[];
12
+ //# sourceMappingURL=stubs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../src/commands/stubs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAA;AAa5D,eAAO,MAAM,aAAa,EAAE,UAI3B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,UAS1B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAkC,CAAA"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Stub commands that advertise the future surface of the CLI.
3
+ *
4
+ * Each stub corresponds to a milestone in the M0→M7 plan and exits 0 after
5
+ * printing a structured marker. The implementations themselves land in
6
+ * their respective milestone sessions (see docs.local/sessions/).
7
+ */
8
+ function stubHandler(milestone, what) {
9
+ return async ({ ctx }) => {
10
+ ctx.formatter.print({
11
+ stub: true,
12
+ milestone,
13
+ message: `${milestone} will implement ${what}.`,
14
+ });
15
+ return 0;
16
+ };
17
+ }
18
+ export const skillsCommand = {
19
+ name: 'skills',
20
+ description: 'Manage agentskills.io-compatible skills (M5)',
21
+ handler: stubHandler('M5', 'the skills subsystem'),
22
+ };
23
+ export const serveCommand = {
24
+ name: 'serve',
25
+ description: 'Cross-agent coordination is provided by clawtool (no separate namzu daemon)',
26
+ handler: async ({ ctx }) => {
27
+ ctx.formatter.info('namzu uses clawtool as its coordination daemon — it registers as a BIAM peer automatically. There is no separate `namzu serve`; just run `namzu`. Use /agents to see peers.');
28
+ return 0;
29
+ },
30
+ };
31
+ export const stubCommands = [skillsCommand, serveCommand];
32
+ //# sourceMappingURL=stubs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stubs.js","sourceRoot":"","sources":["../../src/commands/stubs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,SAAS,WAAW,CAAC,SAAiB,EAAE,IAAY;IACnD,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACxB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,IAAI;YACV,SAAS;YACT,OAAO,EAAE,GAAG,SAAS,mBAAmB,IAAI,GAAG;SAC/C,CAAC,CAAA;QACF,OAAO,CAAC,CAAA;IACT,CAAC,CAAA;AACF,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAe;IACxC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,8CAA8C;IAC3D,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,sBAAsB,CAAC;CAClD,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAe;IACvC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,6EAA6E;IAC1F,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAC1B,GAAG,CAAC,SAAS,CAAC,IAAI,CACjB,6KAA6K,CAC7K,CAAA;QACD,OAAO,CAAC,CAAA;IACT,CAAC;CACD,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `namzu tools` — real implementation, replacing the M0 stub.
3
+ *
4
+ * Subcommands:
5
+ * - `ls` List tools clawtool exposes (auto-spawns daemon).
6
+ * - `run <name>` Invoke a tool by name with JSON arguments.
7
+ * - `sync-types` Generate local TS stubs via `clawtool tools export-typescript`.
8
+ *
9
+ * The command runs in passThrough mode — its own Commander instance parses
10
+ * the subcommand args. This keeps the top-level shell free of vendor-tool
11
+ * coupling and lets us expand the surface later (e.g. `tools search`)
12
+ * without touching the outer registry.
13
+ */
14
+ import type { CommandDef } from './types.js';
15
+ export declare const toolsCommand: CommandDef;
16
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAA;AA4F5D,eAAO,MAAM,YAAY,EAAE,UA2D1B,CAAA"}