@claudetools/cli 0.13.13 → 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 +15 -4
  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,43 @@
1
+ import { runKeysList, runKeysCreate, runKeysRevoke } from '../api-keys/index.js';
2
+ import { executeCommand, requireArg, getBool } from '../lib/command-utils.js';
3
+ export async function handleKeysCommand(positionals, values) {
4
+ const subcommand = positionals[1];
5
+ switch (subcommand) {
6
+ case 'list':
7
+ await executeCommand('Keys list', () => runKeysList());
8
+ break;
9
+ case 'create': {
10
+ const keyName = requireArg(positionals, 2, 'key name', 'claudetools keys create <name>');
11
+ await executeCommand('Keys create', () => runKeysCreate(keyName));
12
+ break;
13
+ }
14
+ case 'revoke': {
15
+ const keyId = requireArg(positionals, 2, 'key ID', 'claudetools keys revoke <id>');
16
+ await executeCommand('Keys revoke', () => runKeysRevoke(keyId, { force: getBool(values, 'force') }));
17
+ break;
18
+ }
19
+ default:
20
+ console.log(`
21
+ claudetools keys - Manage API keys
22
+
23
+ Usage:
24
+ claudetools keys list List all your API keys
25
+ claudetools keys create <name> Create a new API key
26
+ claudetools keys revoke <id> Revoke an API key
27
+
28
+ Options:
29
+ -f, --force Skip confirmation prompt (with revoke)
30
+
31
+ Examples:
32
+ claudetools keys list # List all API keys
33
+ claudetools keys create "CI/CD" # Create a new key
34
+ claudetools keys revoke abc123 # Revoke a key (with prompt)
35
+ claudetools keys revoke abc123 -f # Revoke without prompt
36
+ `);
37
+ if (subcommand) {
38
+ console.error(`Unknown keys command: ${subcommand}`);
39
+ process.exit(1);
40
+ }
41
+ }
42
+ }
43
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAI9E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAqB,EACrB,MAAoB;IAEpB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAElC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACvD,MAAM;QAER,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,UAAU,CACxB,WAAW,EACX,CAAC,EACD,UAAU,EACV,gCAAgC,CACjC,CAAC;YACF,MAAM,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAClE,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,UAAU,CACtB,WAAW,EACX,CAAC,EACD,QAAQ,EACR,8BAA8B,CAC/B,CAAC;YACF,MAAM,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,CACvC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAC1D,CAAC;YACF,MAAM;QACR,CAAC;QAED;YACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;CAgBjB,CAAC,CAAC;YACG,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ type ParsedValues = Record<string, string | boolean | undefined>;
2
+ export declare function handleMcpCommand(positionals: string[], values: ParsedValues): Promise<void>;
3
+ export {};
4
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAYA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEjE,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAyEf"}
@@ -0,0 +1,43 @@
1
+ import { runMcpAdd, runMcpList, runMcpShow, runMcpRemove, runMcpEnv, runMcpSearch, runMcpSubmit, showMcpHelp, } from '../mcp/index.js';
2
+ import { executeCommand, requireArg, getBool } from '../lib/command-utils.js';
3
+ export async function handleMcpCommand(positionals, values) {
4
+ const subcommand = positionals[1];
5
+ switch (subcommand) {
6
+ case 'add': {
7
+ const serverName = requireArg(positionals, 2, 'MCP server name', 'claudetools mcp add <name>');
8
+ await executeCommand('MCP add', () => runMcpAdd(serverName));
9
+ break;
10
+ }
11
+ case 'list':
12
+ await executeCommand('MCP list', () => runMcpList({ json: getBool(values, 'json') }));
13
+ break;
14
+ case 'show': {
15
+ const serverName = requireArg(positionals, 2, 'MCP server name', 'claudetools mcp show <name>');
16
+ await executeCommand('MCP show', () => runMcpShow(serverName));
17
+ break;
18
+ }
19
+ case 'remove': {
20
+ const serverName = requireArg(positionals, 2, 'MCP server name', 'claudetools mcp remove <name>');
21
+ await executeCommand('MCP remove', () => runMcpRemove(serverName, { force: getBool(values, 'force') }));
22
+ break;
23
+ }
24
+ case 'env': {
25
+ const serverName = requireArg(positionals, 2, 'MCP server name', 'claudetools mcp env <name>');
26
+ await executeCommand('MCP env', () => runMcpEnv(serverName));
27
+ break;
28
+ }
29
+ case 'search':
30
+ await executeCommand('MCP search', () => runMcpSearch(positionals[2], { json: getBool(values, 'json') }));
31
+ break;
32
+ case 'submit':
33
+ await executeCommand('MCP submit', () => runMcpSubmit());
34
+ break;
35
+ default:
36
+ showMcpHelp();
37
+ if (subcommand) {
38
+ console.error(`Unknown mcp command: ${subcommand}`);
39
+ process.exit(1);
40
+ }
41
+ }
42
+ }
43
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAI9E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAqB,EACrB,MAAoB;IAEpB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAElC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,UAAU,GAAG,UAAU,CAC3B,WAAW,EACX,CAAC,EACD,iBAAiB,EACjB,4BAA4B,CAC7B,CAAC;YACF,MAAM,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QAED,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,CACpC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAC9C,CAAC;YACF,MAAM;QAER,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,UAAU,GAAG,UAAU,CAC3B,WAAW,EACX,CAAC,EACD,iBAAiB,EACjB,6BAA6B,CAC9B,CAAC;YACF,MAAM,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/D,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,UAAU,GAAG,UAAU,CAC3B,WAAW,EACX,CAAC,EACD,iBAAiB,EACjB,+BAA+B,CAChC,CAAC;YACF,MAAM,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,CACtC,YAAY,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAC9D,CAAC;YACF,MAAM;QACR,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,UAAU,GAAG,UAAU,CAC3B,WAAW,EACX,CAAC,EACD,iBAAiB,EACjB,4BAA4B,CAC7B,CAAC;YACF,MAAM,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QAED,KAAK,QAAQ;YACX,MAAM,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,CACtC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAChE,CAAC;YACF,MAAM;QAER,KAAK,QAAQ;YACX,MAAM,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;YACzD,MAAM;QAER;YACE,WAAW,EAAE,CAAC;YACd,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ type ParsedValues = Record<string, string | boolean | undefined>;
2
+ export declare function handleProjectCommand(positionals: string[], values: ParsedValues): Promise<void>;
3
+ export {};
4
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AASA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEjE,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CA4Ff"}
@@ -0,0 +1,68 @@
1
+ import { runProjectList, runProjectShow, runProjectAdd, runProjectUpdate, runProjectRemove, } from '../project/index.js';
2
+ import { executeCommand, requireArg, getString } from '../lib/command-utils.js';
3
+ export async function handleProjectCommand(positionals, values) {
4
+ const subcommand = positionals[1];
5
+ switch (subcommand) {
6
+ case 'list':
7
+ await executeCommand('Project list', () => runProjectList({ team: positionals[2] }));
8
+ break;
9
+ case 'show': {
10
+ const projectId = requireArg(positionals, 2, 'project name or ID', 'claudetools project show <name|id>');
11
+ await executeCommand('Project show', () => runProjectShow(projectId));
12
+ break;
13
+ }
14
+ case 'add':
15
+ await executeCommand('Project add', () => runProjectAdd(positionals[2], {
16
+ name: getString(values, 'name'),
17
+ description: getString(values, 'description'),
18
+ team: getString(values, 'team'),
19
+ }));
20
+ break;
21
+ case 'update': {
22
+ const projectId = requireArg(positionals, 2, 'project name or ID', 'claudetools project update <name|id> [options]');
23
+ const visibility = getString(values, 'visibility');
24
+ await executeCommand('Project update', () => runProjectUpdate(projectId, {
25
+ name: getString(values, 'name'),
26
+ description: getString(values, 'description'),
27
+ team: getString(values, 'team'),
28
+ visibility: visibility === 'personal' || visibility === 'team'
29
+ ? visibility
30
+ : undefined,
31
+ }));
32
+ break;
33
+ }
34
+ case 'remove': {
35
+ const projectId = requireArg(positionals, 2, 'project name or ID', 'claudetools project remove <name|id>');
36
+ await executeCommand('Project remove', () => runProjectRemove(projectId));
37
+ break;
38
+ }
39
+ default:
40
+ console.log(`
41
+ claudetools project - Manage registered projects
42
+
43
+ Usage:
44
+ claudetools project list [--team <name>] List all registered projects
45
+ claudetools project add [path] Register a project
46
+ claudetools project show <name|id> Show project details
47
+ claudetools project update <name|id> Update project metadata
48
+ claudetools project remove <name|id> Unregister a project
49
+
50
+ Options:
51
+ --name <name> Set project name
52
+ --description <desc> Set project description
53
+ --team <team> Associate with team
54
+ --visibility <type> Set visibility (personal|team)
55
+
56
+ Examples:
57
+ claudetools project add # Register current directory
58
+ claudetools project add ./my-project # Register specific path
59
+ claudetools project show "My Project" # Show project details
60
+ claudetools project update "My Project" --name "New Name"
61
+ `);
62
+ if (subcommand) {
63
+ console.error(`Unknown project command: ${subcommand}`);
64
+ process.exit(1);
65
+ }
66
+ }
67
+ }
68
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIhF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAqB,EACrB,MAAoB;IAEpB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAElC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,CACxC,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CACzC,CAAC;YACF,MAAM;QAER,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,SAAS,GAAG,UAAU,CAC1B,WAAW,EACX,CAAC,EACD,oBAAoB,EACpB,oCAAoC,CACrC,CAAC;YACF,MAAM,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;YACtE,MAAM;QACR,CAAC;QAED,KAAK,KAAK;YACR,MAAM,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,CACvC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;gBAC5B,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC/B,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;gBAC7C,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CACH,CAAC;YACF,MAAM;QAER,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,SAAS,GAAG,UAAU,CAC1B,WAAW,EACX,CAAC,EACD,oBAAoB,EACpB,gDAAgD,CACjD,CAAC;YACF,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACnD,MAAM,cAAc,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAC1C,gBAAgB,CAAC,SAAS,EAAE;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC/B,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;gBAC7C,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC/B,UAAU,EACR,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,MAAM;oBAChD,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,SAAS;aAChB,CAAC,CACH,CAAC;YACF,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,SAAS,GAAG,UAAU,CAC1B,WAAW,EACX,CAAC,EACD,oBAAoB,EACpB,sCAAsC,CACvC,CAAC;YACF,MAAM,cAAc,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,MAAM;QACR,CAAC;QAED;YACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBjB,CAAC,CAAC;YACG,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ type ParsedValues = Record<string, string | boolean | undefined>;
2
+ export declare function handleSkillCommand(positionals: string[], values: ParsedValues): Promise<void>;
3
+ export {};
4
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAUA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEjE,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
@@ -0,0 +1,37 @@
1
+ import { runSkillsList, runSkillAdd, runSkillRemove, runSkillShow, runSkillValidate, showSkillHelp, } from '../skills/index.js';
2
+ import { executeCommand, getBool } from '../lib/command-utils.js';
3
+ export async function handleSkillCommand(positionals, values) {
4
+ const subcommand = positionals[1];
5
+ switch (subcommand) {
6
+ case 'list':
7
+ await executeCommand('Skill list', () => runSkillsList({ json: getBool(values, 'json') }));
8
+ break;
9
+ case 'add': {
10
+ const reference = positionals[2];
11
+ await executeCommand('Skill add', () => runSkillAdd(reference));
12
+ break;
13
+ }
14
+ case 'remove': {
15
+ const skillName = positionals[2];
16
+ await executeCommand('Skill remove', () => runSkillRemove(skillName));
17
+ break;
18
+ }
19
+ case 'show': {
20
+ const skillName = positionals[2];
21
+ await executeCommand('Skill show', () => runSkillShow(skillName));
22
+ break;
23
+ }
24
+ case 'validate': {
25
+ const skillPath = positionals[2];
26
+ await executeCommand('Skill validate', () => runSkillValidate(skillPath));
27
+ break;
28
+ }
29
+ default:
30
+ showSkillHelp();
31
+ if (subcommand) {
32
+ console.error(`Unknown skill command: ${subcommand}`);
33
+ process.exit(1);
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIlE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAqB,EACrB,MAAoB;IAEpB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAElC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,CACtC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CACjD,CAAC;YACF,MAAM;QAER,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAChE,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;YACtE,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YAClE,MAAM;QACR,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,cAAc,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,MAAM;QACR,CAAC;QAED;YACE,aAAa,EAAE,CAAC;YAChB,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ type ParsedValues = Record<string, string | boolean | undefined>;
2
+ export declare function handleStacksCommand(positionals: string[], values: ParsedValues): Promise<void>;
3
+ export {};
4
+ //# sourceMappingURL=stacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stacks.d.ts","sourceRoot":"","sources":["../../src/commands/stacks.ts"],"names":[],"mappings":"AAiBA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEjE,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAuMf"}
@@ -0,0 +1,103 @@
1
+ import { runStacksList, runStacksCreate, runStacksShow, runStacksAdd, runStacksRemove, runStacksDelete, runStacksApply, runStacksInstall, runStacksRollback, runStacksCheck, runStacksDiff, runStacksExport, runStacksImport, } from '../stacks/index.js';
2
+ import { executeCommand, requireArg, getBool } from '../lib/command-utils.js';
3
+ export async function handleStacksCommand(positionals, values) {
4
+ const subcommand = positionals[1];
5
+ switch (subcommand) {
6
+ case 'list':
7
+ await executeCommand('Stacks list', () => runStacksList());
8
+ break;
9
+ case 'create': {
10
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks create <name>');
11
+ await executeCommand('Stacks create', () => runStacksCreate(stackName));
12
+ break;
13
+ }
14
+ case 'show': {
15
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks show <name>');
16
+ await executeCommand('Stacks show', () => runStacksShow(stackName));
17
+ break;
18
+ }
19
+ case 'add': {
20
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks add <stack> <extension>');
21
+ const extSlug = requireArg(positionals, 3, 'extension slug', 'claudetools stacks add <stack> <extension>');
22
+ await executeCommand('Stacks add', () => runStacksAdd(stackName, extSlug));
23
+ break;
24
+ }
25
+ case 'remove': {
26
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks remove <stack> <extension>');
27
+ const extSlug = requireArg(positionals, 3, 'extension slug', 'claudetools stacks remove <stack> <extension>');
28
+ await executeCommand('Stacks remove', () => runStacksRemove(stackName, extSlug));
29
+ break;
30
+ }
31
+ case 'delete': {
32
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks delete <name>');
33
+ await executeCommand('Stacks delete', () => runStacksDelete(stackName, { force: getBool(values, 'force') }));
34
+ break;
35
+ }
36
+ case 'install': {
37
+ const stackRef = requireArg(positionals, 2, 'stack reference (@owner/slug)', 'claudetools stacks install @owner/slug');
38
+ await executeCommand('Stacks install', () => runStacksInstall(stackRef));
39
+ break;
40
+ }
41
+ case 'apply': {
42
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks apply <name>');
43
+ await executeCommand('Stacks apply', () => runStacksApply(stackName, { force: getBool(values, 'force') }));
44
+ break;
45
+ }
46
+ case 'rollback': {
47
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks rollback <name>');
48
+ await executeCommand('Stacks rollback', () => runStacksRollback(stackName));
49
+ break;
50
+ }
51
+ case 'check': {
52
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks check <name>');
53
+ await executeCommand('Stacks check', () => runStacksCheck(stackName));
54
+ break;
55
+ }
56
+ case 'diff': {
57
+ const stack1 = requireArg(positionals, 2, 'stack name', 'claudetools stacks diff <stack1> [stack2]');
58
+ await executeCommand('Stacks diff', () => runStacksDiff(stack1, positionals[3], { local: !positionals[3] }));
59
+ break;
60
+ }
61
+ case 'export': {
62
+ const stackName = requireArg(positionals, 2, 'stack name', 'claudetools stacks export <name> [output.yaml]');
63
+ await executeCommand('Stacks export', () => runStacksExport(stackName, positionals[3]));
64
+ break;
65
+ }
66
+ case 'import': {
67
+ const inputFile = requireArg(positionals, 2, 'input file', 'claudetools stacks import <file.yaml> [--update]');
68
+ await executeCommand('Stacks import', () => runStacksImport(inputFile, { update: getBool(values, 'force') }));
69
+ break;
70
+ }
71
+ default:
72
+ console.log(`
73
+ claudetools stacks - Manage extension stacks
74
+
75
+ Usage:
76
+ claudetools stacks list List all your stacks
77
+ claudetools stacks create <name> Create a new stack
78
+ claudetools stacks show <name> Show stack details
79
+ claudetools stacks add <stack> <ext> Add extension to stack
80
+ claudetools stacks remove <stack> <ext> Remove extension from stack
81
+ claudetools stacks delete <name> Delete a stack
82
+ claudetools stacks install @owner/slug Install a public stack
83
+ claudetools stacks apply <name> Apply your own stack locally
84
+ claudetools stacks check <name> Check stack for conflicts
85
+ claudetools stacks diff <stack1> [stack2] Compare stacks or stack vs local
86
+ claudetools stacks export <name> [file] Export stack to YAML file
87
+ claudetools stacks import <file> Import stack from YAML file
88
+ claudetools stacks rollback <name> Rollback stack to previous version (Pro/Team)
89
+
90
+ Examples:
91
+ claudetools stacks install @claudetools/starter # Install a public stack
92
+ claudetools stacks create my-stack # Create a new stack
93
+ claudetools stacks add my-stack skill-1 # Add extension to stack
94
+ claudetools stacks apply my-stack # Install your own stack
95
+ claudetools stacks check my-stack # Check for conflicts
96
+ `);
97
+ if (subcommand) {
98
+ console.error(`Unknown stacks command: ${subcommand}`);
99
+ process.exit(1);
100
+ }
101
+ }
102
+ }
103
+ //# sourceMappingURL=stacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stacks.js","sourceRoot":"","sources":["../../src/commands/stacks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ type ParsedValues = Record<string, string | boolean | undefined>;
2
+ export declare function handleStatsCommand(_positionals: string[], values: ParsedValues): Promise<void>;
3
+ export {};
4
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEjE,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,6 @@
1
+ import { runStats } from '../gamification/index.js';
2
+ import { executeCommand, getBool } from '../lib/command-utils.js';
3
+ export async function handleStatsCommand(_positionals, values) {
4
+ await executeCommand('Stats', () => runStats({ json: getBool(values, 'json') }));
5
+ }
6
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIlE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAsB,EACtB,MAAoB;IAEpB,MAAM,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CACjC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAC5C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ type ParsedValues = Record<string, string | boolean | undefined>;
2
+ export declare function handleSyncCommand(positionals: string[], values: ParsedValues): Promise<void>;
3
+ export {};
4
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAUA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEjE,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAkEf"}
@@ -0,0 +1,60 @@
1
+ import { runSyncEngineStart, runSyncEngineStop, runSyncEngineStatus, runSyncEnginePool, runSyncEngineReload, runSyncEngineLogs, } from '../sync-engine/index.js';
2
+ import { executeCommand, getBool, getString } from '../lib/command-utils.js';
3
+ export async function handleSyncCommand(positionals, values) {
4
+ const subcommand = positionals[1];
5
+ switch (subcommand) {
6
+ case 'start':
7
+ await executeCommand('Sync start', () => runSyncEngineStart());
8
+ break;
9
+ case 'stop':
10
+ await executeCommand('Sync stop', () => runSyncEngineStop());
11
+ break;
12
+ case 'status':
13
+ await executeCommand('Sync status', () => runSyncEngineStatus());
14
+ break;
15
+ case 'pool':
16
+ await executeCommand('Sync pool', () => runSyncEnginePool());
17
+ break;
18
+ case 'reload':
19
+ await executeCommand('Sync reload', () => runSyncEngineReload());
20
+ break;
21
+ case 'logs':
22
+ await executeCommand('Sync logs', () => runSyncEngineLogs({
23
+ follow: getBool(values, 'follow'),
24
+ lines: getString(values, 'lines') ? parseInt(getString(values, 'lines'), 10) : undefined,
25
+ }));
26
+ break;
27
+ default: {
28
+ // No subcommand or unknown subcommand: fall back to legacy stack sync
29
+ if (!subcommand) {
30
+ const { runSync } = await import('../sync/index.js');
31
+ await runSync();
32
+ return;
33
+ }
34
+ console.log(`
35
+ claudetools sync - Manage the sync engine
36
+
37
+ Usage:
38
+ claudetools sync Show cloud sync status (stacks)
39
+ claudetools sync start Start the sync engine in the background
40
+ claudetools sync stop Stop the running sync engine
41
+ claudetools sync status Show sync engine status
42
+ claudetools sync pool Show MCP process pool status
43
+ claudetools sync reload Reload sync engine configuration
44
+ claudetools sync logs Tail the sync engine log file
45
+
46
+ Options (for logs):
47
+ --follow, -f Follow log output (like tail -f)
48
+ --lines <n> Number of lines to show (default: 50)
49
+
50
+ Examples:
51
+ claudetools sync start # Start the sync engine
52
+ claudetools sync pool # View active MCP processes
53
+ claudetools sync logs -f # Follow log output
54
+ `);
55
+ console.error(`Unknown sync command: ${subcommand}`);
56
+ process.exit(1);
57
+ }
58
+ }
59
+ }
60
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAI7E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAqB,EACrB,MAAoB;IAEpB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAElC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,MAAM,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAC/D,MAAM;QAER,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC7D,MAAM;QAER,KAAK,QAAQ;YACX,MAAM,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACjE,MAAM;QAER,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC7D,MAAM;QAER,KAAK,QAAQ;YACX,MAAM,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACjE,MAAM;QAER,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,CACrC,iBAAiB,CAAC;gBAChB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACjC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aAC1F,CAAC,CACH,CAAC;YACF,MAAM;QAER,OAAO,CAAC,CAAC,CAAC;YACR,sEAAsE;YACtE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACrD,MAAM,OAAO,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;CAoBjB,CAAC,CAAC;YACG,OAAO,CAAC,KAAK,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ type ParsedValues = Record<string, string | boolean | undefined>;
2
+ export declare function handleUpdateCommand(positionals: string[], values: ParsedValues, currentVersion: string): Promise<void>;
3
+ export {};
4
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AA2BA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;AAEhE,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAmEf"}
@@ -0,0 +1,63 @@
1
+ // =============================================================================
2
+ // Update Command
3
+ // =============================================================================
4
+ // claudetools update [--channel stable|beta|nightly]
5
+ //
6
+ // Checks the npm registry for the latest version on the configured release
7
+ // channel, then runs `npm install -g @claudetools/cli@<version>`.
8
+ import { execSync } from 'node:child_process';
9
+ import chalk from 'chalk';
10
+ import ora from 'ora';
11
+ import { executeCommand, getString } from '../lib/command-utils.js';
12
+ import { getChannel, setChannel, CHANNEL_DIST_TAGS, } from '../lib/channel-config.js';
13
+ import { getVersionForTag, isNewerVersion, } from '../lib/update-checker.js';
14
+ const PACKAGE_NAME = '@claudetools/cli';
15
+ const VALID_CHANNELS = ['stable', 'beta', 'nightly'];
16
+ export async function handleUpdateCommand(positionals, values, currentVersion) {
17
+ await executeCommand('Update', async () => {
18
+ // Handle --channel flag to switch channel
19
+ const channelArg = getString(values, 'channel');
20
+ if (channelArg) {
21
+ if (!VALID_CHANNELS.includes(channelArg)) {
22
+ console.error(chalk.red(`Invalid channel: ${channelArg}`));
23
+ console.log(chalk.dim(` Valid channels: ${VALID_CHANNELS.join(', ')}`));
24
+ process.exit(1);
25
+ }
26
+ setChannel(channelArg);
27
+ console.log(chalk.green(`✓ Release channel set to ${chalk.bold(channelArg)}`));
28
+ }
29
+ const channel = getChannel();
30
+ const distTag = CHANNEL_DIST_TAGS[channel];
31
+ console.log('');
32
+ console.log(chalk.bold(' ClaudeTools Update'));
33
+ console.log(chalk.dim(` Channel: ${channel} (npm dist-tag: ${distTag})`));
34
+ console.log('');
35
+ // Check registry for latest version
36
+ const spinner = ora({ text: 'Checking for updates...', indent: 2 }).start();
37
+ const targetVersion = await getVersionForTag(distTag);
38
+ if (!targetVersion) {
39
+ spinner.fail('Could not reach npm registry');
40
+ console.log(chalk.dim(' Check your network connection and try again.'));
41
+ return;
42
+ }
43
+ if (!isNewerVersion(currentVersion, targetVersion)) {
44
+ spinner.succeed(`Already on the latest version ${chalk.green(`v${currentVersion}`)} (${channel})`);
45
+ return;
46
+ }
47
+ spinner.text = `Updating v${currentVersion} → v${targetVersion}...`;
48
+ try {
49
+ execSync(`npm install -g ${PACKAGE_NAME}@${targetVersion}`, {
50
+ stdio: ['pipe', 'pipe', 'pipe'],
51
+ timeout: 60_000,
52
+ });
53
+ spinner.succeed(`Updated to ${chalk.green(`v${targetVersion}`)} (${channel})`);
54
+ console.log(chalk.dim(' Restart your terminal to use the new version.'));
55
+ }
56
+ catch {
57
+ spinner.fail('Update failed');
58
+ console.log(chalk.dim(` Try manually: npm install -g ${PACKAGE_NAME}@${targetVersion}`));
59
+ }
60
+ console.log('');
61
+ });
62
+ }
63
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}