@claudetools/cli 0.13.12 → 0.13.15

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 (368) hide show
  1. package/dist/__tests__/factories.d.ts +173 -0
  2. package/dist/__tests__/factories.d.ts.map +1 -0
  3. package/dist/__tests__/factories.js +150 -0
  4. package/dist/__tests__/factories.js.map +1 -0
  5. package/dist/__tests__/helpers.d.ts +36 -0
  6. package/dist/__tests__/helpers.d.ts.map +1 -0
  7. package/dist/__tests__/helpers.js +52 -0
  8. package/dist/__tests__/helpers.js.map +1 -0
  9. package/dist/analytics/index.d.ts +14 -0
  10. package/dist/analytics/index.d.ts.map +1 -0
  11. package/dist/analytics/index.js +259 -0
  12. package/dist/analytics/index.js.map +1 -0
  13. package/dist/analytics/session.d.ts +17 -0
  14. package/dist/analytics/session.d.ts.map +1 -0
  15. package/dist/analytics/session.js +130 -0
  16. package/dist/analytics/session.js.map +1 -0
  17. package/dist/analytics/token-tracker.d.ts +48 -0
  18. package/dist/analytics/token-tracker.d.ts.map +1 -0
  19. package/dist/analytics/token-tracker.js +269 -0
  20. package/dist/analytics/token-tracker.js.map +1 -0
  21. package/dist/analytics/tracker.d.ts +33 -0
  22. package/dist/analytics/tracker.d.ts.map +1 -0
  23. package/dist/analytics/tracker.js +210 -0
  24. package/dist/analytics/tracker.js.map +1 -0
  25. package/dist/api-keys/index.d.ts +15 -0
  26. package/dist/api-keys/index.d.ts.map +1 -0
  27. package/dist/api-keys/index.js +228 -0
  28. package/dist/api-keys/index.js.map +1 -0
  29. package/dist/auth/config.d.ts +15 -0
  30. package/dist/auth/config.d.ts.map +1 -0
  31. package/dist/auth/config.js +67 -0
  32. package/dist/auth/config.js.map +1 -0
  33. package/dist/auth/index.d.ts +8 -0
  34. package/dist/auth/index.d.ts.map +1 -0
  35. package/dist/auth/index.js +299 -0
  36. package/dist/auth/index.js.map +1 -0
  37. package/dist/auth/keychain.d.ts +21 -0
  38. package/dist/auth/keychain.d.ts.map +1 -0
  39. package/dist/auth/keychain.js +256 -0
  40. package/dist/auth/keychain.js.map +1 -0
  41. package/dist/billing/index.d.ts +7 -0
  42. package/dist/billing/index.d.ts.map +1 -0
  43. package/dist/billing/index.js +233 -0
  44. package/dist/billing/index.js.map +1 -0
  45. package/dist/cli.js +291 -43
  46. package/dist/cli.js.map +1 -1
  47. package/dist/commands/hook.d.ts +12 -0
  48. package/dist/commands/hook.d.ts.map +1 -0
  49. package/dist/commands/hook.js +190 -0
  50. package/dist/commands/hook.js.map +1 -0
  51. package/dist/commands/keys.d.ts +4 -0
  52. package/dist/commands/keys.d.ts.map +1 -0
  53. package/dist/commands/keys.js +43 -0
  54. package/dist/commands/keys.js.map +1 -0
  55. package/dist/commands/mcp.d.ts +4 -0
  56. package/dist/commands/mcp.d.ts.map +1 -0
  57. package/dist/commands/mcp.js +43 -0
  58. package/dist/commands/mcp.js.map +1 -0
  59. package/dist/commands/project.d.ts +4 -0
  60. package/dist/commands/project.d.ts.map +1 -0
  61. package/dist/commands/project.js +68 -0
  62. package/dist/commands/project.js.map +1 -0
  63. package/dist/commands/skill.d.ts +4 -0
  64. package/dist/commands/skill.d.ts.map +1 -0
  65. package/dist/commands/skill.js +37 -0
  66. package/dist/commands/skill.js.map +1 -0
  67. package/dist/commands/stacks.d.ts +4 -0
  68. package/dist/commands/stacks.d.ts.map +1 -0
  69. package/dist/commands/stacks.js +103 -0
  70. package/dist/commands/stacks.js.map +1 -0
  71. package/dist/commands/stats.d.ts +4 -0
  72. package/dist/commands/stats.d.ts.map +1 -0
  73. package/dist/commands/stats.js +6 -0
  74. package/dist/commands/stats.js.map +1 -0
  75. package/dist/commands/sync.d.ts +4 -0
  76. package/dist/commands/sync.d.ts.map +1 -0
  77. package/dist/commands/sync.js +60 -0
  78. package/dist/commands/sync.js.map +1 -0
  79. package/dist/commands/update.d.ts +4 -0
  80. package/dist/commands/update.d.ts.map +1 -0
  81. package/dist/commands/update.js +63 -0
  82. package/dist/commands/update.js.map +1 -0
  83. package/dist/daemon/client.d.ts +107 -0
  84. package/dist/daemon/client.d.ts.map +1 -0
  85. package/dist/daemon/client.js +250 -0
  86. package/dist/daemon/client.js.map +1 -0
  87. package/dist/daemon/health.d.ts +38 -0
  88. package/dist/daemon/health.d.ts.map +1 -0
  89. package/dist/daemon/health.js +212 -0
  90. package/dist/daemon/health.js.map +1 -0
  91. package/dist/daemon/index.d.ts +34 -0
  92. package/dist/daemon/index.d.ts.map +1 -0
  93. package/dist/daemon/index.js +197 -0
  94. package/dist/daemon/index.js.map +1 -0
  95. package/dist/daemon/protocol.d.ts +144 -0
  96. package/dist/daemon/protocol.d.ts.map +1 -0
  97. package/dist/daemon/protocol.js +5 -0
  98. package/dist/daemon/protocol.js.map +1 -0
  99. package/dist/gamification/index.d.ts +13 -0
  100. package/dist/gamification/index.d.ts.map +1 -0
  101. package/dist/gamification/index.js +120 -0
  102. package/dist/gamification/index.js.map +1 -0
  103. package/dist/gamification/types.d.ts +34 -0
  104. package/dist/gamification/types.d.ts.map +1 -0
  105. package/dist/gamification/types.js +5 -0
  106. package/dist/gamification/types.js.map +1 -0
  107. package/dist/hooks/index.d.ts +65 -0
  108. package/dist/hooks/index.d.ts.map +1 -0
  109. package/dist/hooks/index.js +403 -0
  110. package/dist/hooks/index.js.map +1 -0
  111. package/dist/lib/api.d.ts +29 -0
  112. package/dist/lib/api.d.ts.map +1 -0
  113. package/dist/lib/api.js +213 -0
  114. package/dist/lib/api.js.map +1 -0
  115. package/dist/lib/browser.d.ts +6 -0
  116. package/dist/lib/browser.d.ts.map +1 -0
  117. package/dist/lib/browser.js +14 -0
  118. package/dist/lib/browser.js.map +1 -0
  119. package/dist/lib/channel-config.d.ts +10 -0
  120. package/dist/lib/channel-config.d.ts.map +1 -0
  121. package/dist/lib/channel-config.js +48 -0
  122. package/dist/lib/channel-config.js.map +1 -0
  123. package/dist/lib/command-runner.d.ts +16 -0
  124. package/dist/lib/command-runner.d.ts.map +1 -0
  125. package/dist/lib/command-runner.js +59 -0
  126. package/dist/lib/command-runner.js.map +1 -0
  127. package/dist/lib/command-utils.d.ts +22 -0
  128. package/dist/lib/command-utils.d.ts.map +1 -0
  129. package/dist/lib/command-utils.js +88 -0
  130. package/dist/lib/command-utils.js.map +1 -0
  131. package/dist/lib/error-handler.d.ts +13 -0
  132. package/dist/lib/error-handler.d.ts.map +1 -0
  133. package/dist/lib/error-handler.js +70 -0
  134. package/dist/lib/error-handler.js.map +1 -0
  135. package/dist/lib/errors.d.ts +35 -0
  136. package/dist/lib/errors.d.ts.map +1 -0
  137. package/dist/lib/errors.js +70 -0
  138. package/dist/lib/errors.js.map +1 -0
  139. package/dist/lib/exit.d.ts +10 -0
  140. package/dist/lib/exit.d.ts.map +1 -0
  141. package/dist/lib/exit.js +21 -0
  142. package/dist/lib/exit.js.map +1 -0
  143. package/dist/lib/formatters.d.ts +65 -0
  144. package/dist/lib/formatters.d.ts.map +1 -0
  145. package/dist/lib/formatters.js +180 -0
  146. package/dist/lib/formatters.js.map +1 -0
  147. package/dist/lib/hybrid-data.d.ts +47 -0
  148. package/dist/lib/hybrid-data.d.ts.map +1 -0
  149. package/dist/lib/hybrid-data.js +326 -0
  150. package/dist/lib/hybrid-data.js.map +1 -0
  151. package/dist/lib/local-store.d.ts +113 -0
  152. package/dist/lib/local-store.d.ts.map +1 -0
  153. package/dist/lib/local-store.js +220 -0
  154. package/dist/lib/local-store.js.map +1 -0
  155. package/dist/lib/machine-id.d.ts +8 -0
  156. package/dist/lib/machine-id.d.ts.map +1 -0
  157. package/dist/lib/machine-id.js +39 -0
  158. package/dist/lib/machine-id.js.map +1 -0
  159. package/dist/lib/network.d.ts +15 -0
  160. package/dist/lib/network.d.ts.map +1 -0
  161. package/dist/lib/network.js +46 -0
  162. package/dist/lib/network.js.map +1 -0
  163. package/dist/lib/theme.d.ts +77 -0
  164. package/dist/lib/theme.d.ts.map +1 -0
  165. package/dist/lib/theme.js +137 -0
  166. package/dist/lib/theme.js.map +1 -0
  167. package/dist/lib/tool-availability.d.ts +13 -0
  168. package/dist/lib/tool-availability.d.ts.map +1 -0
  169. package/dist/lib/tool-availability.js +48 -0
  170. package/dist/lib/tool-availability.js.map +1 -0
  171. package/dist/lib/update-checker.d.ts +21 -0
  172. package/dist/lib/update-checker.d.ts.map +1 -0
  173. package/dist/lib/update-checker.js +110 -0
  174. package/dist/lib/update-checker.js.map +1 -0
  175. package/dist/lib/validation.d.ts +30 -0
  176. package/dist/lib/validation.d.ts.map +1 -0
  177. package/dist/lib/validation.js +82 -0
  178. package/dist/lib/validation.js.map +1 -0
  179. package/dist/lib/validators.d.ts +18 -0
  180. package/dist/lib/validators.d.ts.map +1 -0
  181. package/dist/lib/validators.js +30 -0
  182. package/dist/lib/validators.js.map +1 -0
  183. package/dist/marketplace/api.d.ts +24 -0
  184. package/dist/marketplace/api.d.ts.map +1 -0
  185. package/dist/marketplace/api.js +92 -0
  186. package/dist/marketplace/api.js.map +1 -0
  187. package/dist/marketplace/index.d.ts +13 -0
  188. package/dist/marketplace/index.d.ts.map +1 -0
  189. package/dist/marketplace/index.js +155 -0
  190. package/dist/marketplace/index.js.map +1 -0
  191. package/dist/marketplace/installer.d.ts +18 -0
  192. package/dist/marketplace/installer.d.ts.map +1 -0
  193. package/dist/marketplace/installer.js +184 -0
  194. package/dist/marketplace/installer.js.map +1 -0
  195. package/dist/mcp/api.d.ts +93 -0
  196. package/dist/mcp/api.d.ts.map +1 -0
  197. package/dist/mcp/api.js +106 -0
  198. package/dist/mcp/api.js.map +1 -0
  199. package/dist/mcp/config.d.ts +72 -0
  200. package/dist/mcp/config.d.ts.map +1 -0
  201. package/dist/mcp/config.js +156 -0
  202. package/dist/mcp/config.js.map +1 -0
  203. package/dist/mcp/index.d.ts +54 -0
  204. package/dist/mcp/index.d.ts.map +1 -0
  205. package/dist/mcp/index.js +381 -0
  206. package/dist/mcp/index.js.map +1 -0
  207. package/dist/mcp/prompt.clean.d.ts +25 -0
  208. package/dist/mcp/prompt.clean.d.ts.map +1 -0
  209. package/dist/mcp/prompt.clean.js +206 -0
  210. package/dist/mcp/prompt.clean.js.map +1 -0
  211. package/dist/mcp/prompt.d.ts +52 -0
  212. package/dist/mcp/prompt.d.ts.map +1 -0
  213. package/dist/mcp/prompt.js +210 -0
  214. package/dist/mcp/prompt.js.map +1 -0
  215. package/dist/mcp/secrets.clean.d.ts +18 -0
  216. package/dist/mcp/secrets.clean.d.ts.map +1 -0
  217. package/dist/mcp/secrets.clean.js +357 -0
  218. package/dist/mcp/secrets.clean.js.map +1 -0
  219. package/dist/mcp/secrets.d.ts +46 -0
  220. package/dist/mcp/secrets.d.ts.map +1 -0
  221. package/dist/mcp/secrets.js +339 -0
  222. package/dist/mcp/secrets.js.map +1 -0
  223. package/dist/memory/index.d.ts +14 -0
  224. package/dist/memory/index.d.ts.map +1 -0
  225. package/dist/memory/index.js +98 -0
  226. package/dist/memory/index.js.map +1 -0
  227. package/dist/onboard/agents-md-builder.d.ts.map +1 -1
  228. package/dist/onboard/agents-md-builder.js +45 -0
  229. package/dist/onboard/agents-md-builder.js.map +1 -1
  230. package/dist/onboard/claude-inference.d.ts.map +1 -1
  231. package/dist/onboard/claude-inference.js +31 -5
  232. package/dist/onboard/claude-inference.js.map +1 -1
  233. package/dist/onboard/context7-fetcher.d.ts +1 -1
  234. package/dist/onboard/context7-fetcher.d.ts.map +1 -1
  235. package/dist/onboard/context7-fetcher.js +50 -16
  236. package/dist/onboard/context7-fetcher.js.map +1 -1
  237. package/dist/onboard/docs-builder.d.ts.map +1 -1
  238. package/dist/onboard/docs-builder.js +523 -50
  239. package/dist/onboard/docs-builder.js.map +1 -1
  240. package/dist/onboard/index.d.ts.map +1 -1
  241. package/dist/onboard/index.js +74 -25
  242. package/dist/onboard/index.js.map +1 -1
  243. package/dist/onboard/stack-detector.d.ts.map +1 -1
  244. package/dist/onboard/stack-detector.js +5 -55
  245. package/dist/onboard/stack-detector.js.map +1 -1
  246. package/dist/project/constants.d.ts +21 -0
  247. package/dist/project/constants.d.ts.map +1 -0
  248. package/dist/project/constants.js +21 -0
  249. package/dist/project/constants.js.map +1 -0
  250. package/dist/project/format.d.ts +16 -0
  251. package/dist/project/format.d.ts.map +1 -0
  252. package/dist/project/format.js +40 -0
  253. package/dist/project/format.js.map +1 -0
  254. package/dist/project/git.d.ts +28 -0
  255. package/dist/project/git.d.ts.map +1 -0
  256. package/dist/project/git.js +93 -0
  257. package/dist/project/git.js.map +1 -0
  258. package/dist/project/index.d.ts +36 -0
  259. package/dist/project/index.d.ts.map +1 -0
  260. package/dist/project/index.js +272 -0
  261. package/dist/project/index.js.map +1 -0
  262. package/dist/project/mapper.d.ts +27 -0
  263. package/dist/project/mapper.d.ts.map +1 -0
  264. package/dist/project/mapper.js +64 -0
  265. package/dist/project/mapper.js.map +1 -0
  266. package/dist/project/storage.d.ts +71 -0
  267. package/dist/project/storage.d.ts.map +1 -0
  268. package/dist/project/storage.js +274 -0
  269. package/dist/project/storage.js.map +1 -0
  270. package/dist/project/sync-bridge.d.ts +33 -0
  271. package/dist/project/sync-bridge.d.ts.map +1 -0
  272. package/dist/project/sync-bridge.js +155 -0
  273. package/dist/project/sync-bridge.js.map +1 -0
  274. package/dist/project/types.d.ts +107 -0
  275. package/dist/project/types.d.ts.map +1 -0
  276. package/dist/project/types.js +77 -0
  277. package/dist/project/types.js.map +1 -0
  278. package/dist/publish/index.d.ts +4 -0
  279. package/dist/publish/index.d.ts.map +1 -0
  280. package/dist/publish/index.js +92 -0
  281. package/dist/publish/index.js.map +1 -0
  282. package/dist/setup.d.ts.map +1 -1
  283. package/dist/setup.js +29 -10
  284. package/dist/setup.js.map +1 -1
  285. package/dist/skills/index.d.ts +51 -0
  286. package/dist/skills/index.d.ts.map +1 -0
  287. package/dist/skills/index.js +509 -0
  288. package/dist/skills/index.js.map +1 -0
  289. package/dist/stacks/check.d.ts +2 -0
  290. package/dist/stacks/check.d.ts.map +1 -0
  291. package/dist/stacks/check.js +144 -0
  292. package/dist/stacks/check.js.map +1 -0
  293. package/dist/stacks/diff.d.ts +11 -0
  294. package/dist/stacks/diff.d.ts.map +1 -0
  295. package/dist/stacks/diff.js +123 -0
  296. package/dist/stacks/diff.js.map +1 -0
  297. package/dist/stacks/index.d.ts +17 -0
  298. package/dist/stacks/index.d.ts.map +1 -0
  299. package/dist/stacks/index.js +525 -0
  300. package/dist/stacks/index.js.map +1 -0
  301. package/dist/stacks/index.refactored.d.ts.map +1 -0
  302. package/dist/stacks/index.refactored.js.map +1 -0
  303. package/dist/stacks/io.d.ts +11 -0
  304. package/dist/stacks/io.d.ts.map +1 -0
  305. package/dist/stacks/io.js +179 -0
  306. package/dist/stacks/io.js.map +1 -0
  307. package/dist/stacks/rollback.d.ts +5 -0
  308. package/dist/stacks/rollback.d.ts.map +1 -0
  309. package/dist/stacks/rollback.js +162 -0
  310. package/dist/stacks/rollback.js.map +1 -0
  311. package/dist/stacks/types.d.ts +70 -0
  312. package/dist/stacks/types.d.ts.map +1 -0
  313. package/dist/stacks/types.js +6 -0
  314. package/dist/stacks/types.js.map +1 -0
  315. package/dist/stacks/utils.d.ts +9 -0
  316. package/dist/stacks/utils.d.ts.map +1 -0
  317. package/dist/stacks/utils.js +11 -0
  318. package/dist/stacks/utils.js.map +1 -0
  319. package/dist/start/index.d.ts +23 -0
  320. package/dist/start/index.d.ts.map +1 -0
  321. package/dist/start/index.js +386 -0
  322. package/dist/start/index.js.map +1 -0
  323. package/dist/sync/index.d.ts +49 -0
  324. package/dist/sync/index.d.ts.map +1 -0
  325. package/dist/sync/index.js +207 -0
  326. package/dist/sync/index.js.map +1 -0
  327. package/dist/sync-engine/__tests__/test-helpers.d.ts +14 -0
  328. package/dist/sync-engine/__tests__/test-helpers.d.ts.map +1 -0
  329. package/dist/sync-engine/__tests__/test-helpers.js +73 -0
  330. package/dist/sync-engine/__tests__/test-helpers.js.map +1 -0
  331. package/dist/sync-engine/client.d.ts +128 -0
  332. package/dist/sync-engine/client.d.ts.map +1 -0
  333. package/dist/sync-engine/client.js +289 -0
  334. package/dist/sync-engine/client.js.map +1 -0
  335. package/dist/sync-engine/health.d.ts +38 -0
  336. package/dist/sync-engine/health.d.ts.map +1 -0
  337. package/dist/sync-engine/health.js +259 -0
  338. package/dist/sync-engine/health.js.map +1 -0
  339. package/dist/sync-engine/index.d.ts +34 -0
  340. package/dist/sync-engine/index.d.ts.map +1 -0
  341. package/dist/sync-engine/index.js +197 -0
  342. package/dist/sync-engine/index.js.map +1 -0
  343. package/dist/sync-engine/protocol.d.ts +153 -0
  344. package/dist/sync-engine/protocol.d.ts.map +1 -0
  345. package/dist/sync-engine/protocol.js +5 -0
  346. package/dist/sync-engine/protocol.js.map +1 -0
  347. package/dist/tasks/index.d.ts +14 -0
  348. package/dist/tasks/index.d.ts.map +1 -0
  349. package/dist/tasks/index.js +109 -0
  350. package/dist/tasks/index.js.map +1 -0
  351. package/dist/team/index.d.ts +12 -0
  352. package/dist/team/index.d.ts.map +1 -0
  353. package/dist/team/index.js +151 -0
  354. package/dist/team/index.js.map +1 -0
  355. package/dist/updater.d.ts +5 -5
  356. package/dist/updater.d.ts.map +1 -1
  357. package/dist/updater.js +24 -88
  358. package/dist/updater.js.map +1 -1
  359. package/dist/usage/index.d.ts +10 -0
  360. package/dist/usage/index.d.ts.map +1 -0
  361. package/dist/usage/index.js +104 -0
  362. package/dist/usage/index.js.map +1 -0
  363. package/dist/webhooks/index.d.ts +7 -0
  364. package/dist/webhooks/index.d.ts.map +1 -0
  365. package/dist/webhooks/index.js +81 -0
  366. package/dist/webhooks/index.js.map +1 -0
  367. package/package.json +26 -15
  368. package/scripts/postinstall.js +282 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;AAElF,2DAA2D;AAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/F,OAAO,GAAG,CAAC,OAAiB,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AACL,MAAM,UAAU,GAAG,mBAAmB,UAAU,EAAE,CAAC;AAgBnD,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IAEA;IAHT,YACS,IAAY,EACnB,OAAe,EACR,OAAiC;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAQ;QAEZ,YAAO,GAAP,OAAO,CAA0B;QAGxC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,UAA4B,EAAE,aAAa,EAAE,IAAI,EAAE;IAC9E,OAAO;QACL,KAAK,CAAC,GAAG,CAAI,QAAgB;YAC3B,OAAO,WAAW,CAAI,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3E,CAAC;QAED,KAAK,CAAC,IAAI,CAAI,QAAgB,EAAE,IAAa;YAC3C,OAAO,WAAW,CAAI,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,CAAC,GAAG,CAAI,QAAgB,EAAE,IAAa;YAC1C,OAAO,WAAW,CAAI,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACtE,CAAC;QAED,KAAK,CAAC,MAAM,CAAI,QAAgB;YAC9B,OAAO,WAAW,CAAI,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9E,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,QAAgB;YAC3B,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC;AACJ,CAAC;AAaD;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;IAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,eAAe,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,UAAU;aACzB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,sCAAsC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsC,CAAC;QAE1E,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAE/C,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QAEnD,mDAAmD;QACnD,MAAM,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAClD,UAAU,CAAC;YACT,cAAc,EAAE,SAAS;SAC1B,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,CAAC,6CAA6C;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;IAC5C,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;;;GAKG;AACH,SAAS,eAAe,CAAC,WAA0B,EAAE,UAAkB;IACrE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACtD,CAAC;IAED,uBAAuB;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,QAAgB,EAChB,IAAc,EACd,aAAa,GAAG,IAAI;IAEpB,qDAAqD;IACrD,IAAI,aAAa,IAAI,cAAc,EAAE,EAAE,CAAC;QACtC,MAAM,kBAAkB,EAAE,CAAC;QAC3B,yEAAyE;QACzE,sFAAsF;IACxF,CAAC;IAED,MAAM,cAAc,GAA2B;QAC7C,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,UAAU;KACzB,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,qDAAqD,CAAC,CAAC;QAC7F,CAAC;QACD,cAAc,CAAC,eAAe,CAAC,GAAG,UAAU,WAAW,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAErC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,sCAAsC;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,eAAe,CAClC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EACnC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CACrB,CAAC;YACF,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+CAA+C;IAC/C,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,8DAA8D,CAAC,CAAC;AACrG,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,QAAiB,EAAE,IAA0B,EAAE,MAAc,EAAE,UAAkB;IACtG,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,QAAQ,MAAM,KAAK,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,QAAgB,EAChB,IAAc,EACd,aAAa,GAAG,IAAI;IAEpB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAA4B,CAAC;YACjE,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAuC,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3G,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAI,UAAU,YAAY,QAAQ;gBAAE,MAAM,UAAU,CAAC;YACrD,gCAAgC;QAClC,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,MAAc,EACd,QAAgB,EAChB,IAAc,EACd,aAAa,GAAG,IAAI;IAEpB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;IAEvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAI,IAA2C,CAAC,KAAK,CAAC;QACpE,aAAa,CAAC,QAAQ,EAAE,IAAuC,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzG,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Open a URL in the user's default browser.
3
+ * Silently fails if the 'open' package is unavailable.
4
+ */
5
+ export declare function openBrowser(url: string): Promise<void>;
6
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5D"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Open a URL in the user's default browser.
3
+ * Silently fails if the 'open' package is unavailable.
4
+ */
5
+ export async function openBrowser(url) {
6
+ try {
7
+ const openModule = await import(/* webpackIgnore: true */ 'open');
8
+ await openModule.default(url);
9
+ }
10
+ catch {
11
+ // Ignore errors if package not available
12
+ }
13
+ }
14
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAE/D,CAAC;QACF,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;IAC3C,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type ReleaseChannel = 'stable' | 'beta' | 'nightly';
2
+ /** Maps user-facing channel names to npm dist-tags */
3
+ export declare const CHANNEL_DIST_TAGS: Record<ReleaseChannel, string>;
4
+ /** Get the user's configured release channel (defaults to stable) */
5
+ export declare function getChannel(): ReleaseChannel;
6
+ /** Set the user's release channel */
7
+ export declare function setChannel(channel: ReleaseChannel): void;
8
+ /** Get the npm dist-tag for the current channel */
9
+ export declare function getDistTag(): string;
10
+ //# sourceMappingURL=channel-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-config.d.ts","sourceRoot":"","sources":["../../src/lib/channel-config.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AAE1D,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAI5D,CAAA;AAwBD,qEAAqE;AACrE,wBAAgB,UAAU,IAAI,cAAc,CAK3C;AAED,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAIxD;AAED,mDAAmD;AACnD,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -0,0 +1,48 @@
1
+ // =============================================================================
2
+ // Release Channel Configuration
3
+ // =============================================================================
4
+ // Reads/writes the user's release channel preference
5
+ // Stored in ~/.config/claudetools/config.json
6
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { homedir } from 'node:os';
9
+ /** Maps user-facing channel names to npm dist-tags */
10
+ export const CHANNEL_DIST_TAGS = {
11
+ stable: 'latest',
12
+ beta: 'beta',
13
+ nightly: 'nightly',
14
+ };
15
+ const CONFIG_DIR = join(homedir(), '.config', 'claudetools');
16
+ const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
17
+ function readConfigFile() {
18
+ try {
19
+ const raw = readFileSync(CONFIG_FILE, 'utf-8');
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ return {};
24
+ }
25
+ }
26
+ function writeConfigFile(config) {
27
+ mkdirSync(CONFIG_DIR, { recursive: true });
28
+ writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2) + '\n', 'utf-8');
29
+ }
30
+ /** Get the user's configured release channel (defaults to stable) */
31
+ export function getChannel() {
32
+ const config = readConfigFile();
33
+ const channel = config.channel;
34
+ if (channel === 'beta' || channel === 'nightly')
35
+ return channel;
36
+ return 'stable';
37
+ }
38
+ /** Set the user's release channel */
39
+ export function setChannel(channel) {
40
+ const config = readConfigFile();
41
+ config.channel = channel;
42
+ writeConfigFile(config);
43
+ }
44
+ /** Get the npm dist-tag for the current channel */
45
+ export function getDistTag() {
46
+ return CHANNEL_DIST_TAGS[getChannel()];
47
+ }
48
+ //# sourceMappingURL=channel-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-config.js","sourceRoot":"","sources":["../../src/lib/channel-config.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAChF,qDAAqD;AACrD,8CAA8C;AAE9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAIjC,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAmC;IAC/D,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;CACnB,CAAA;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;AAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAOnD,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB;IAChD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;AAC7E,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC9B,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAA;IAC/D,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,UAAU,CAAC,OAAuB;IAChD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,eAAe,CAAC,MAAM,CAAC,CAAA;AACzB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,UAAU;IACxB,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type UserConfig } from '../auth/config.js';
2
+ import { getApiClient } from './api.js';
3
+ export type ApiClient = ReturnType<typeof getApiClient>;
4
+ /**
5
+ * Wraps a command function with authentication and error handling
6
+ * @param fn Command function that receives client and config
7
+ * @returns Promise that resolves to the command result
8
+ */
9
+ export declare function runCommand<T = void>(fn: (client: ApiClient, config: UserConfig) => Promise<T>): Promise<T>;
10
+ /**
11
+ * Wraps a command function with optional authentication and error handling
12
+ * @param fn Command function that receives client
13
+ * @returns Promise that resolves to the command result
14
+ */
15
+ export declare function runUnauthenticatedCommand<T = void>(fn: (client: ApiClient) => Promise<T>): Promise<T>;
16
+ //# sourceMappingURL=command-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../src/lib/command-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAY,MAAM,UAAU,CAAC;AAGlD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,IAAI,EACvC,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GACxD,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,GAAG,IAAI,EACtD,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC,CAoBZ"}
@@ -0,0 +1,59 @@
1
+ import { requireAuth } from '../auth/config.js';
2
+ import { getApiClient, ApiError } from './api.js';
3
+ import { ValidationError } from './validators.js';
4
+ /**
5
+ * Wraps a command function with authentication and error handling
6
+ * @param fn Command function that receives client and config
7
+ * @returns Promise that resolves to the command result
8
+ */
9
+ export async function runCommand(fn) {
10
+ try {
11
+ const config = await requireAuth();
12
+ const client = getApiClient({ authenticated: true });
13
+ return await fn(client, config);
14
+ }
15
+ catch (error) {
16
+ if (error instanceof ValidationError) {
17
+ console.error(`Error: ${error.message}`);
18
+ process.exit(1);
19
+ }
20
+ if (error instanceof ApiError) {
21
+ console.error(`Error: ${error.message}`);
22
+ process.exit(1);
23
+ }
24
+ if (error instanceof Error) {
25
+ console.error(`Error: ${error.message}`);
26
+ process.exit(1);
27
+ }
28
+ console.error('An unexpected error occurred');
29
+ process.exit(1);
30
+ }
31
+ }
32
+ /**
33
+ * Wraps a command function with optional authentication and error handling
34
+ * @param fn Command function that receives client
35
+ * @returns Promise that resolves to the command result
36
+ */
37
+ export async function runUnauthenticatedCommand(fn) {
38
+ try {
39
+ const client = getApiClient({ authenticated: false });
40
+ return await fn(client);
41
+ }
42
+ catch (error) {
43
+ if (error instanceof ValidationError) {
44
+ console.error(`Error: ${error.message}`);
45
+ process.exit(1);
46
+ }
47
+ if (error instanceof ApiError) {
48
+ console.error(`Error: ${error.message}`);
49
+ process.exit(1);
50
+ }
51
+ if (error instanceof Error) {
52
+ console.error(`Error: ${error.message}`);
53
+ process.exit(1);
54
+ }
55
+ console.error('An unexpected error occurred');
56
+ process.exit(1);
57
+ }
58
+ }
59
+ //# sourceMappingURL=command-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../src/lib/command-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAyD;IAEzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,EAAqC;IAErC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Utilities for command execution
3
+ */
4
+ type ParsedValues = Record<string, string | boolean | undefined>;
5
+ /**
6
+ * Execute a command with automatic error handling and classified guidance
7
+ */
8
+ export declare function executeCommand(commandName: string, fn: () => Promise<void>): Promise<void>;
9
+ /**
10
+ * Get boolean flag from parsed values
11
+ */
12
+ export declare function getBool(values: ParsedValues, key: string): boolean | undefined;
13
+ /**
14
+ * Get string value from parsed values
15
+ */
16
+ export declare function getString(values: ParsedValues, key: string): string | undefined;
17
+ /**
18
+ * Validate required positional argument
19
+ */
20
+ export declare function requireArg(positionals: string[], index: number, name: string, usage: string): string;
21
+ export {};
22
+ //# sourceMappingURL=command-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-utils.d.ts","sourceRoot":"","sources":["../../src/lib/command-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AA8DjE;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE9E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,MAAM,CAOR"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Utilities for command execution
3
+ */
4
+ /**
5
+ * Classify an error into a category for user-facing guidance
6
+ */
7
+ function classifyError(error) {
8
+ if (error instanceof Error) {
9
+ const msg = error.message.toLowerCase();
10
+ const name = error.name.toLowerCase();
11
+ // Auth errors
12
+ if (name === 'apierror' && 'code' in error &&
13
+ error.code === 'AUTH_REQUIRED') {
14
+ return { category: 'auth', code: 'ERR_AUTH' };
15
+ }
16
+ if (msg.includes('auth') || msg.includes('unauthorized') || msg.includes('403') || msg.includes('401') || msg.includes('session expired')) {
17
+ return { category: 'auth', code: 'ERR_AUTH' };
18
+ }
19
+ // Network errors
20
+ if (msg.includes('fetch') || msg.includes('econnrefused') ||
21
+ msg.includes('enotfound') || msg.includes('network') ||
22
+ msg.includes('timeout') || msg.includes('etimedout') ||
23
+ msg.includes('econnreset') || msg.includes('socket') ||
24
+ name === 'typeerror' && msg.includes('fetch')) {
25
+ return { category: 'network', code: 'ERR_NETWORK' };
26
+ }
27
+ // Input / validation errors
28
+ if (msg.includes('missing') || msg.includes('invalid') || msg.includes('not found') || msg.includes('required')) {
29
+ return { category: 'input', code: 'ERR_INPUT' };
30
+ }
31
+ }
32
+ return { category: 'internal', code: 'ERR_INTERNAL' };
33
+ }
34
+ /**
35
+ * Get a user-facing suggestion based on the error category
36
+ */
37
+ function getSuggestion(category) {
38
+ switch (category) {
39
+ case 'network':
40
+ return 'Check your internet connection and try again.';
41
+ case 'auth':
42
+ return 'Try running: claudetools login';
43
+ case 'input':
44
+ return 'Check the command arguments and try again. Run with --help for usage.';
45
+ case 'internal':
46
+ return 'This may be a bug. Run with --verbose for details.';
47
+ }
48
+ }
49
+ /**
50
+ * Execute a command with automatic error handling and classified guidance
51
+ */
52
+ export async function executeCommand(commandName, fn) {
53
+ try {
54
+ await fn();
55
+ }
56
+ catch (error) {
57
+ const { category, code } = classifyError(error);
58
+ const message = error instanceof Error ? error.message : String(error);
59
+ const suggestion = getSuggestion(category);
60
+ console.error(`Error [${code}]: ${commandName} failed: ${message}`);
61
+ console.error(`Suggestion: ${suggestion}`);
62
+ process.exit(1);
63
+ }
64
+ }
65
+ /**
66
+ * Get boolean flag from parsed values
67
+ */
68
+ export function getBool(values, key) {
69
+ return values[key] === true ? true : undefined;
70
+ }
71
+ /**
72
+ * Get string value from parsed values
73
+ */
74
+ export function getString(values, key) {
75
+ return typeof values[key] === 'string' ? values[key] : undefined;
76
+ }
77
+ /**
78
+ * Validate required positional argument
79
+ */
80
+ export function requireArg(positionals, index, name, usage) {
81
+ if (!positionals[index]) {
82
+ console.error(`Error: Missing ${name}`);
83
+ console.log(`Usage: ${usage}`);
84
+ process.exit(1);
85
+ }
86
+ return positionals[index];
87
+ }
88
+ //# sourceMappingURL=command-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-utils.js","sourceRoot":"","sources":["../../src/lib/command-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Handle command errors with consistent formatting and exit
3
+ */
4
+ export declare function handleCommandError(commandName: string, error: unknown): never;
5
+ /**
6
+ * Run a command with centralized error handling
7
+ *
8
+ * @param commandName - Name of the command for error messages
9
+ * @param fn - Async function to execute
10
+ * @returns Result of the function
11
+ */
12
+ export declare function runCommand<T>(commandName: string, fn: () => Promise<T>): Promise<T>;
13
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/lib/error-handler.ts"],"names":[],"mappings":"AAmDA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,CAU7E;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAMZ"}
@@ -0,0 +1,70 @@
1
+ // =============================================================================
2
+ // Centralized Error Handler
3
+ // =============================================================================
4
+ // Provides consistent error handling across all CLI commands
5
+ /**
6
+ * Classify an error into an actionable category based on its message or code.
7
+ */
8
+ function classifyError(error) {
9
+ const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();
10
+ const code = error?.code?.toLowerCase() ?? '';
11
+ if (code === 'auth_required' || message.includes('unauthorized') || message.includes('session has expired') || message.includes('authentication') || message.includes('401')) {
12
+ return 'auth';
13
+ }
14
+ if (message.includes('fetch failed') || message.includes('econnrefused') || message.includes('enotfound') || message.includes('network') || message.includes('timeout') || message.includes('offline')) {
15
+ return 'network';
16
+ }
17
+ if (code === 'not_found' || message.includes('not found') || message.includes('404')) {
18
+ return 'not_found';
19
+ }
20
+ if (code === 'rate_limit' || message.includes('rate limit') || message.includes('too many requests') || message.includes('429')) {
21
+ return 'rate_limit';
22
+ }
23
+ return 'unknown';
24
+ }
25
+ /**
26
+ * Return an actionable hint for the user based on the error category.
27
+ */
28
+ function actionableHint(category) {
29
+ switch (category) {
30
+ case 'auth':
31
+ return 'Run `claudetools login` to re-authenticate.';
32
+ case 'network':
33
+ return 'Check your internet connection or try again later.';
34
+ case 'not_found':
35
+ return 'Verify the resource name or slug is correct.';
36
+ case 'rate_limit':
37
+ return 'Wait a moment and try again.';
38
+ default:
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Handle command errors with consistent formatting and exit
44
+ */
45
+ export function handleCommandError(commandName, error) {
46
+ const message = error instanceof Error ? error.message : String(error);
47
+ const category = classifyError(error);
48
+ const hint = actionableHint(category);
49
+ console.error(`${commandName} failed: ${message}`);
50
+ if (hint) {
51
+ console.error(` ${hint}`);
52
+ }
53
+ process.exit(1);
54
+ }
55
+ /**
56
+ * Run a command with centralized error handling
57
+ *
58
+ * @param commandName - Name of the command for error messages
59
+ * @param fn - Async function to execute
60
+ * @returns Result of the function
61
+ */
62
+ export async function runCommand(commandName, fn) {
63
+ try {
64
+ return await fn();
65
+ }
66
+ catch (error) {
67
+ handleCommandError(commandName, error);
68
+ }
69
+ }
70
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/lib/error-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Base error class for CLI operations
3
+ */
4
+ export declare class CLIError extends Error {
5
+ readonly code?: string | undefined;
6
+ readonly context?: Record<string, unknown> | undefined;
7
+ constructor(message: string, code?: string | undefined, context?: Record<string, unknown> | undefined);
8
+ }
9
+ /**
10
+ * Error for invalid user input
11
+ */
12
+ export declare class ValidationError extends CLIError {
13
+ constructor(message: string, context?: Record<string, unknown>);
14
+ }
15
+ /**
16
+ * Error for system-level issues (filesystem, network, etc.)
17
+ */
18
+ export declare class SystemError extends CLIError {
19
+ constructor(message: string, context?: Record<string, unknown>);
20
+ }
21
+ /**
22
+ * Error for configuration issues
23
+ */
24
+ export declare class ConfigError extends CLIError {
25
+ constructor(message: string, context?: Record<string, unknown>);
26
+ }
27
+ /**
28
+ * Check if an error is a CLI error
29
+ */
30
+ export declare function isCLIError(error: unknown): error is CLIError;
31
+ /**
32
+ * Format error for display
33
+ */
34
+ export declare function formatError(error: unknown): string;
35
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,CAAC,EAAE,MAAM;aACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMpD;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkBlD"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Base error class for CLI operations
3
+ */
4
+ export class CLIError extends Error {
5
+ code;
6
+ context;
7
+ constructor(message, code, context) {
8
+ super(message);
9
+ this.code = code;
10
+ this.context = context;
11
+ this.name = 'CLIError';
12
+ Error.captureStackTrace?.(this, this.constructor);
13
+ }
14
+ }
15
+ /**
16
+ * Error for invalid user input
17
+ */
18
+ export class ValidationError extends CLIError {
19
+ constructor(message, context) {
20
+ super(message, 'VALIDATION_ERROR', context);
21
+ this.name = 'ValidationError';
22
+ }
23
+ }
24
+ /**
25
+ * Error for system-level issues (filesystem, network, etc.)
26
+ */
27
+ export class SystemError extends CLIError {
28
+ constructor(message, context) {
29
+ super(message, 'SYSTEM_ERROR', context);
30
+ this.name = 'SystemError';
31
+ }
32
+ }
33
+ /**
34
+ * Error for configuration issues
35
+ */
36
+ export class ConfigError extends CLIError {
37
+ constructor(message, context) {
38
+ super(message, 'CONFIG_ERROR', context);
39
+ this.name = 'ConfigError';
40
+ }
41
+ }
42
+ /**
43
+ * Check if an error is a CLI error
44
+ */
45
+ export function isCLIError(error) {
46
+ return error instanceof CLIError;
47
+ }
48
+ /**
49
+ * Format error for display
50
+ */
51
+ export function formatError(error) {
52
+ if (isCLIError(error)) {
53
+ let message = error.message;
54
+ if (error.code) {
55
+ message = `[${error.code}] ${message}`;
56
+ }
57
+ if (error.context && Object.keys(error.context).length > 0) {
58
+ const contextStr = Object.entries(error.context)
59
+ .map(([k, v]) => ` ${k}: ${v}`)
60
+ .join('\n');
61
+ message += `\n${contextStr}`;
62
+ }
63
+ return message;
64
+ }
65
+ if (error instanceof Error) {
66
+ return error.message;
67
+ }
68
+ return String(error);
69
+ }
70
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IACA;IAHlB,YACE,OAAe,EACC,IAAa,EACb,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAS;QACb,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,QAAQ,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;iBAC7C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC/B,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Exit with an error message
3
+ * Provides consistent error output formatting across the CLI
4
+ */
5
+ export declare function exitWithError(message: string, exitCode?: number): never;
6
+ /**
7
+ * Exit with error from caught exception
8
+ */
9
+ export declare function exitFromError(error: unknown, context?: string): never;
10
+ //# sourceMappingURL=exit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../src/lib/exit.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,KAAK,CAGlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAIrE"}
@@ -0,0 +1,21 @@
1
+ // =============================================================================
2
+ // Exit Utilities
3
+ // =============================================================================
4
+ // Consistent error handling and process exit
5
+ /**
6
+ * Exit with an error message
7
+ * Provides consistent error output formatting across the CLI
8
+ */
9
+ export function exitWithError(message, exitCode = 1) {
10
+ console.error(`Error: ${message}`);
11
+ process.exit(exitCode);
12
+ }
13
+ /**
14
+ * Exit with error from caught exception
15
+ */
16
+ export function exitFromError(error, context) {
17
+ const message = error instanceof Error ? error.message : String(error);
18
+ const fullMessage = context ? `${context}: ${message}` : message;
19
+ exitWithError(fullMessage);
20
+ }
21
+ //# sourceMappingURL=exit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/lib/exit.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAChF,6CAA6C;AAE7C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAQ,GAAG,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,OAAgB;IAC5D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,aAAa,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Prints a formatted list of items
3
+ * @param title List title
4
+ * @param items Array of items to render
5
+ * @param renderFn Function to render each item
6
+ * @param emptyMessage Message to show when list is empty
7
+ * @param emptyHint Optional hint to show when list is empty
8
+ */
9
+ export declare function formatList<T>(title: string, items: T[], renderFn: (item: T) => void, emptyMessage: string, emptyHint?: string): void;
10
+ /**
11
+ * Prints a professional table with borders and colors
12
+ * @param headers Column headers
13
+ * @param rows Array of row data (each row is an array of cell values)
14
+ * @param options Optional table configuration
15
+ */
16
+ export declare function formatTable(headers: string[], rows: string[][], options?: {
17
+ style?: 'default' | 'compact' | 'markdown';
18
+ colors?: boolean;
19
+ }): void;
20
+ /**
21
+ * Prints an empty state message with optional hint
22
+ * @param message Main message
23
+ * @param hint Optional hint or suggestion
24
+ */
25
+ export declare function emptyState(message: string, hint?: string): void;
26
+ /**
27
+ * Prints a bar chart for percentages
28
+ * @param items Array of {label, percentage, color} objects
29
+ * @param width Maximum bar width in characters (adapts to terminal width)
30
+ */
31
+ export declare function formatBarChart(items: Array<{
32
+ label: string;
33
+ percentage: number;
34
+ color?: (s: string) => string;
35
+ }>, width?: number): void;
36
+ /**
37
+ * Prints a quota display (used/limit)
38
+ * @param title Quota title
39
+ * @param used Used count
40
+ * @param limit Limit count
41
+ */
42
+ export declare function formatQuota(title: string, used: number, limit: number): void;
43
+ /**
44
+ * Displays a boxed message for important announcements
45
+ * @param message Main message text
46
+ * @param options Boxen options
47
+ */
48
+ export declare function formatBox(message: string, options?: {
49
+ title?: string;
50
+ borderColor?: 'green' | 'red' | 'yellow' | 'blue' | 'magenta' | 'cyan';
51
+ padding?: number;
52
+ }): void;
53
+ /**
54
+ * Format a section header with divider
55
+ */
56
+ export declare function formatSection(title: string): void;
57
+ /**
58
+ * Format a command summary footer
59
+ */
60
+ export declare function formatSummary(items: Array<{
61
+ label: string;
62
+ value: string | number;
63
+ status?: 'success' | 'error' | 'warning';
64
+ }>): void;
65
+ //# sourceMappingURL=formatters.d.ts.map