@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,381 @@
1
+ /**
2
+ * MCP Server Management Commands
3
+ *
4
+ * Install, configure, and manage MCP servers from the ClaudeTools marketplace.
5
+ * All MCPs are curated through the marketplace for security review.
6
+ *
7
+ * Usage:
8
+ * claudetools mcp add <name> Install an MCP server
9
+ * claudetools mcp list List installed MCP servers
10
+ * claudetools mcp show <name> Show MCP server details
11
+ * claudetools mcp remove <name> Remove an MCP server
12
+ * claudetools mcp env <name> Re-configure environment variables
13
+ * claudetools mcp search [query] Search marketplace for MCPs
14
+ * claudetools mcp submit Submit an MCP for curation
15
+ */
16
+ import chalk from 'chalk';
17
+ import ora from 'ora';
18
+ import { requireAuth } from '../auth/config.js';
19
+ import { getMcpManifest, searchMcpServers, trackMcpDownload, parseSource, formatSource, isOfficialMcp, } from './api.js';
20
+ import { getMcpServer, setMcpServer, removeMcpServer, listMcpServers, hasMcpServer, buildMcpServerConfig, getSettingsPath, migrateLegacyConfig, } from './config.js';
21
+ import { setMcpSecret, deleteMcpSecrets, listMcpSecrets, } from './secrets.js';
22
+ import { promptEnvVars, promptUpdateEnvVars, confirm, showSuccess, showError, showInfo, maskSecret, } from './prompt.js';
23
+ /**
24
+ * Install an MCP server from the marketplace
25
+ */
26
+ export async function runMcpAdd(name) {
27
+ await requireAuth();
28
+ // Check for existing installation
29
+ if (hasMcpServer(name)) {
30
+ console.log();
31
+ showError(`MCP server '${name}' is already installed.`);
32
+ showInfo(`Run ${chalk.cyan(`claudetools mcp env ${name}`)} to update configuration.`);
33
+ showInfo(`Or ${chalk.cyan(`claudetools mcp remove ${name}`)} to uninstall first.`);
34
+ console.log();
35
+ return;
36
+ }
37
+ const spinner = ora(`Fetching MCP server: ${name}...`).start();
38
+ try {
39
+ // Fetch manifest from marketplace
40
+ const manifest = await getMcpManifest(name);
41
+ spinner.stop();
42
+ console.log();
43
+ console.log(chalk.bold(` Installing MCP server: ${manifest.name}`));
44
+ console.log(` ${chalk.dim('Source:')} ${formatSource(manifest.source)}`);
45
+ if (isOfficialMcp(manifest)) {
46
+ console.log(` ${chalk.green('[Official]')} Verified by Model Context Protocol`);
47
+ }
48
+ console.log();
49
+ // Prompt for environment variables
50
+ let envValues = {};
51
+ if (manifest.envTemplate && Object.keys(manifest.envTemplate).length > 0) {
52
+ envValues = await promptEnvVars(manifest.envTemplate, name);
53
+ }
54
+ // Store secrets in keychain
55
+ const secretSpinner = ora('Storing credentials securely...').start();
56
+ for (const [key, { value, isSecret }] of Object.entries(envValues)) {
57
+ if (isSecret) {
58
+ await setMcpSecret(name, key, value);
59
+ }
60
+ }
61
+ secretSpinner.succeed('Credentials stored in system keychain');
62
+ // Build and save config
63
+ const { command, args } = parseSource(manifest.source);
64
+ const config = buildMcpServerConfig(command, args, envValues, name);
65
+ setMcpServer(name, config);
66
+ console.log();
67
+ showSuccess(`Config written to ${getSettingsPath()}`);
68
+ // Track download
69
+ await trackMcpDownload(name);
70
+ console.log();
71
+ console.log(chalk.green(' Installation complete!'));
72
+ console.log();
73
+ showInfo('Restart Claude Code to activate.');
74
+ console.log();
75
+ }
76
+ catch (error) {
77
+ spinner.stop();
78
+ console.log();
79
+ showError(error instanceof Error ? error.message : 'Unknown error');
80
+ console.log();
81
+ process.exit(1);
82
+ }
83
+ }
84
+ /**
85
+ * List installed MCP servers
86
+ */
87
+ export async function runMcpList(options = {}) {
88
+ // Run migration check first
89
+ const { migrated, servers: migratedServers } = migrateLegacyConfig();
90
+ if (migrated && migratedServers.length > 0) {
91
+ console.log();
92
+ showInfo(`Migrated ${migratedServers.length} server(s) from legacy mcp.json`);
93
+ }
94
+ const servers = listMcpServers();
95
+ const serverNames = Object.keys(servers);
96
+ if (options.json) {
97
+ const output = serverNames.map((name) => ({
98
+ name,
99
+ ...servers[name],
100
+ }));
101
+ console.log(JSON.stringify(output, null, 2));
102
+ return;
103
+ }
104
+ if (serverNames.length === 0) {
105
+ console.log();
106
+ console.log(chalk.dim(' No MCP servers installed.'));
107
+ console.log();
108
+ showInfo(`Search for servers: ${chalk.cyan('claudetools mcp search <query>')}`);
109
+ showInfo(`Install a server: ${chalk.cyan('claudetools mcp add <name>')}`);
110
+ console.log();
111
+ return;
112
+ }
113
+ console.log();
114
+ console.log(chalk.bold(` Installed MCP servers (${serverNames.length}):`));
115
+ console.log();
116
+ for (const name of serverNames) {
117
+ const config = servers[name];
118
+ console.log(` ${chalk.cyan(name)}`);
119
+ console.log(` ${chalk.dim('Command:')} ${config?.command} ${config?.args?.join(' ') ?? ''}`);
120
+ // Show env vars (masked)
121
+ if (config?.env && Object.keys(config.env).length > 0) {
122
+ const envKeys = Object.keys(config.env);
123
+ console.log(` ${chalk.dim('Env:')} ${envKeys.join(', ')}`);
124
+ }
125
+ console.log();
126
+ }
127
+ showInfo(`Show details: ${chalk.cyan('claudetools mcp show <name>')}`);
128
+ showInfo(`Remove a server: ${chalk.cyan('claudetools mcp remove <name>')}`);
129
+ console.log();
130
+ }
131
+ /**
132
+ * Show MCP server details
133
+ */
134
+ export async function runMcpShow(name) {
135
+ const config = getMcpServer(name);
136
+ if (!config) {
137
+ console.log();
138
+ showError(`MCP server '${name}' is not installed.`);
139
+ showInfo(`Install with: ${chalk.cyan(`claudetools mcp add ${name}`)}`);
140
+ console.log();
141
+ return;
142
+ }
143
+ console.log();
144
+ console.log(chalk.bold(` MCP Server: ${name}`));
145
+ console.log();
146
+ console.log(` ${chalk.dim('Command:')} ${config.command}`);
147
+ if (config.args && config.args.length > 0) {
148
+ console.log(` ${chalk.dim('Args:')} ${config.args.join(' ')}`);
149
+ }
150
+ if (config.cwd) {
151
+ console.log(` ${chalk.dim('Working Dir:')} ${config.cwd}`);
152
+ }
153
+ if (config.env && Object.keys(config.env).length > 0) {
154
+ console.log();
155
+ console.log(` ${chalk.dim('Environment:')}`);
156
+ for (const [key, value] of Object.entries(config.env)) {
157
+ const isKeychainRef = value.startsWith('${keychain:');
158
+ const displayValue = isKeychainRef ? chalk.green('[keychain]') : maskSecret(value);
159
+ console.log(` ${key}: ${displayValue}`);
160
+ }
161
+ }
162
+ // List actual secrets
163
+ const secrets = await listMcpSecrets(name);
164
+ if (secrets.length > 0) {
165
+ console.log();
166
+ console.log(` ${chalk.dim('Stored secrets:')} ${secrets.join(', ')}`);
167
+ }
168
+ console.log();
169
+ showInfo(`Update config: ${chalk.cyan(`claudetools mcp env ${name}`)}`);
170
+ showInfo(`Remove: ${chalk.cyan(`claudetools mcp remove ${name}`)}`);
171
+ console.log();
172
+ }
173
+ /**
174
+ * Remove an MCP server
175
+ */
176
+ export async function runMcpRemove(name, options = {}) {
177
+ if (!hasMcpServer(name)) {
178
+ console.log();
179
+ showError(`MCP server '${name}' is not installed.`);
180
+ console.log();
181
+ return;
182
+ }
183
+ // Confirm removal
184
+ if (!options.force) {
185
+ console.log();
186
+ const confirmed = await confirm(` Remove MCP server '${name}'?`, false);
187
+ if (!confirmed) {
188
+ console.log();
189
+ showInfo('Cancelled.');
190
+ console.log();
191
+ return;
192
+ }
193
+ }
194
+ const spinner = ora('Removing MCP server...').start();
195
+ try {
196
+ // Delete secrets from keychain
197
+ await deleteMcpSecrets(name);
198
+ // Remove from config
199
+ removeMcpServer(name);
200
+ spinner.succeed(`Removed MCP server: ${name}`);
201
+ console.log();
202
+ showInfo('Restart Claude Code to apply changes.');
203
+ console.log();
204
+ }
205
+ catch (error) {
206
+ spinner.fail('Failed to remove MCP server');
207
+ showError(error instanceof Error ? error.message : 'Unknown error');
208
+ console.log();
209
+ process.exit(1);
210
+ }
211
+ }
212
+ /**
213
+ * Re-configure environment variables for an MCP server
214
+ */
215
+ export async function runMcpEnv(name) {
216
+ await requireAuth();
217
+ const config = getMcpServer(name);
218
+ if (!config) {
219
+ console.log();
220
+ showError(`MCP server '${name}' is not installed.`);
221
+ showInfo(`Install with: ${chalk.cyan(`claudetools mcp add ${name}`)}`);
222
+ console.log();
223
+ return;
224
+ }
225
+ // Fetch manifest to get env template
226
+ const spinner = ora('Fetching server configuration...').start();
227
+ try {
228
+ const manifest = await getMcpManifest(name);
229
+ spinner.stop();
230
+ if (!manifest.envTemplate || Object.keys(manifest.envTemplate).length === 0) {
231
+ console.log();
232
+ showInfo(`This MCP server has no environment variables to configure.`);
233
+ console.log();
234
+ return;
235
+ }
236
+ // Get existing secrets
237
+ const existingSecrets = await listMcpSecrets(name);
238
+ // Prompt for updates
239
+ const envValues = await promptUpdateEnvVars(manifest.envTemplate, existingSecrets, name);
240
+ if (Object.keys(envValues).length === 0) {
241
+ console.log();
242
+ showInfo('No changes made.');
243
+ console.log();
244
+ return;
245
+ }
246
+ // Update secrets
247
+ const secretSpinner = ora('Updating credentials...').start();
248
+ for (const [key, { value, isSecret }] of Object.entries(envValues)) {
249
+ if (isSecret) {
250
+ await setMcpSecret(name, key, value);
251
+ }
252
+ }
253
+ secretSpinner.succeed('Credentials updated');
254
+ // Rebuild config with new values
255
+ const { command, args } = parseSource(manifest.source);
256
+ // Merge with existing env vars
257
+ const allEnv = {};
258
+ // Add existing values (that weren't updated)
259
+ for (const secret of existingSecrets) {
260
+ if (!(secret in envValues)) {
261
+ allEnv[secret] = { value: '', isSecret: true }; // Will be referenced by keychain
262
+ }
263
+ }
264
+ // Add new/updated values
265
+ for (const [key, val] of Object.entries(envValues)) {
266
+ allEnv[key] = val;
267
+ }
268
+ const newConfig = buildMcpServerConfig(command, args, allEnv, name);
269
+ setMcpServer(name, newConfig);
270
+ console.log();
271
+ showSuccess('Configuration updated');
272
+ showInfo('Restart Claude Code to apply changes.');
273
+ console.log();
274
+ }
275
+ catch (error) {
276
+ spinner.stop();
277
+ console.log();
278
+ showError(error instanceof Error ? error.message : 'Unknown error');
279
+ console.log();
280
+ process.exit(1);
281
+ }
282
+ }
283
+ /**
284
+ * Search for MCP servers in marketplace
285
+ */
286
+ export async function runMcpSearch(query, options = {}) {
287
+ const spinner = ora('Searching MCP servers...').start();
288
+ try {
289
+ const result = await searchMcpServers(query);
290
+ spinner.stop();
291
+ if (options.json) {
292
+ console.log(JSON.stringify(result, null, 2));
293
+ return;
294
+ }
295
+ if (result.servers.length === 0) {
296
+ console.log();
297
+ console.log(chalk.dim(' No MCP servers found.'));
298
+ if (query) {
299
+ showInfo('Try a different search term.');
300
+ }
301
+ console.log();
302
+ showInfo(`Submit your own: ${chalk.cyan('claudetools mcp submit')}`);
303
+ console.log();
304
+ return;
305
+ }
306
+ console.log();
307
+ console.log(chalk.bold(` Found ${result.total} MCP server${result.total === 1 ? '' : 's'}:`));
308
+ console.log();
309
+ for (const server of result.servers) {
310
+ const verifiedBadge = isOfficialMcp(server) ? chalk.green(' [Official]') : '';
311
+ console.log(` ${chalk.cyan(server.slug)}${verifiedBadge}`);
312
+ console.log(` ${server.description}`);
313
+ console.log(` ${chalk.dim('Source:')} ${formatSource(server.source)} | ${chalk.dim('Downloads:')} ${server.downloads}`);
314
+ console.log();
315
+ }
316
+ showInfo(`Install with: ${chalk.cyan('claudetools mcp add <name>')}`);
317
+ console.log();
318
+ }
319
+ catch (error) {
320
+ spinner.stop();
321
+ console.log();
322
+ showError(error instanceof Error ? error.message : 'Unknown error');
323
+ console.log();
324
+ process.exit(1);
325
+ }
326
+ }
327
+ /**
328
+ * Submit an MCP server for curation
329
+ */
330
+ export async function runMcpSubmit() {
331
+ await requireAuth();
332
+ console.log();
333
+ console.log(chalk.bold(' Submit MCP Server for Curation'));
334
+ console.log();
335
+ console.log(chalk.dim(' All MCP servers must be reviewed before appearing in the marketplace.'));
336
+ console.log(chalk.dim(' This helps ensure security and quality for all users.'));
337
+ console.log();
338
+ // For now, we'll guide users to submit via the web interface
339
+ // A full CLI submission flow would require more complex prompting
340
+ console.log(' To submit an MCP server:');
341
+ console.log();
342
+ console.log(` 1. Ensure your server is published to ${chalk.cyan('npm')} or ${chalk.cyan('GitHub')}`);
343
+ console.log(' 2. Create a manifest file with environment variable templates');
344
+ console.log(` 3. Visit ${chalk.blue('https://claudetools.com/mcp/submit')}`);
345
+ console.log();
346
+ showInfo('We review submissions within 1-2 business days.');
347
+ console.log();
348
+ }
349
+ /**
350
+ * Display MCP help
351
+ */
352
+ export function showMcpHelp() {
353
+ console.log(`
354
+ claudetools mcp - Manage MCP servers
355
+
356
+ Usage:
357
+ claudetools mcp add <name> Install an MCP server from marketplace
358
+ claudetools mcp list List installed MCP servers
359
+ claudetools mcp show <name> Show MCP server configuration
360
+ claudetools mcp remove <name> Remove an MCP server
361
+ claudetools mcp env <name> Update environment variables
362
+ claudetools mcp search [query] Search marketplace for MCP servers
363
+ claudetools mcp submit Submit an MCP for curation
364
+
365
+ Options:
366
+ -j, --json Output in JSON format (with list, search)
367
+ -f, --force Skip confirmation prompt (with remove)
368
+
369
+ Examples:
370
+ claudetools mcp search slack # Search for Slack MCP servers
371
+ claudetools mcp add server-slack # Install server-slack
372
+ claudetools mcp show server-slack # Show configuration
373
+ claudetools mcp env server-slack # Update credentials
374
+ claudetools mcp remove server-slack -f # Remove without confirmation
375
+
376
+ All MCP servers are curated through the ClaudeTools marketplace.
377
+ Credentials are stored securely in your system keychain.
378
+ Configuration is written to ~/.claude/settings.json (Claude Code standard).
379
+ `);
380
+ }
381
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * MCP Interactive Prompting
3
+ *
4
+ * Handles interactive prompting for MCP server environment variables
5
+ * with support for masked input, optional values, and help URLs.
6
+ */
7
+ export interface EnvVarTemplate {
8
+ required: boolean;
9
+ sensitive: boolean;
10
+ description: string;
11
+ helpUrl?: string;
12
+ default?: string;
13
+ }
14
+ export interface EnvVarValue {
15
+ value: string;
16
+ isSecret: boolean;
17
+ }
18
+ export declare function promptEnvVars(envTemplate: Record<string, EnvVarTemplate>, _serverName: string): Promise<Record<string, EnvVarValue>>;
19
+ export declare function promptUpdateEnvVars(envTemplate: Record<string, EnvVarTemplate>, existingSecrets: string[], _serverName: string): Promise<Record<string, EnvVarValue>>;
20
+ export declare function confirm(message: string, defaultValue?: boolean): Promise<boolean>;
21
+ export declare function showSuccess(message: string): void;
22
+ export declare function showError(message: string): void;
23
+ export declare function showInfo(message: string): void;
24
+ export declare function maskSecret(value: string): string;
25
+ //# sourceMappingURL=prompt.clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.clean.d.ts","sourceRoot":"","sources":["../../src/mcp/prompt.clean.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAmHD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAC3C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CA2BtC;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAC3C,eAAe,EAAE,MAAM,EAAE,EACzB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAiCtC;AAmDD,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAerF;AAID,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * MCP Interactive Prompting
3
+ *
4
+ * Handles interactive prompting for MCP server environment variables
5
+ * with support for masked input, optional values, and help URLs.
6
+ */
7
+ import * as readline from 'readline';
8
+ import chalk from 'chalk';
9
+ // ============ Terminal Input ============
10
+ function createReadline() {
11
+ return readline.createInterface({
12
+ input: process.stdin,
13
+ output: process.stdout,
14
+ });
15
+ }
16
+ async function promptValue(rl, prompt, options = {}) {
17
+ return options.mask
18
+ ? promptMaskedValue(prompt, options.defaultValue)
19
+ : promptPlainValue(rl, prompt, options.defaultValue);
20
+ }
21
+ async function promptMaskedValue(prompt, defaultValue) {
22
+ return new Promise((resolve) => {
23
+ const stdin = process.stdin;
24
+ const stdout = process.stdout;
25
+ stdout.write(prompt);
26
+ let value = '';
27
+ const wasRaw = stdin.isRaw;
28
+ if (stdin.isTTY) {
29
+ stdin.setRawMode(true);
30
+ }
31
+ stdin.resume();
32
+ const onData = (char) => {
33
+ const c = char.toString('utf8');
34
+ if (isSubmitKey(c)) {
35
+ cleanupAndResolve(stdin, wasRaw, onData, value || defaultValue || '');
36
+ return;
37
+ }
38
+ if (isExitKey(c)) {
39
+ stdin.setRawMode(wasRaw ?? false);
40
+ process.exit(0);
41
+ }
42
+ if (isBackspace(c)) {
43
+ handleBackspace(value, stdout);
44
+ if (value.length > 0) {
45
+ value = value.slice(0, -1);
46
+ }
47
+ return;
48
+ }
49
+ // Add character
50
+ value += c;
51
+ stdout.write('*');
52
+ };
53
+ function cleanupAndResolve(stdin, wasRaw, onData, result) {
54
+ stdin.setRawMode(wasRaw ?? false);
55
+ stdin.pause();
56
+ stdin.removeListener('data', onData);
57
+ stdout.write('\n');
58
+ resolve(result);
59
+ }
60
+ stdin.on('data', onData);
61
+ });
62
+ }
63
+ async function promptPlainValue(rl, prompt, defaultValue) {
64
+ return new Promise((resolve) => {
65
+ const displayPrompt = defaultValue ? `${prompt} [${defaultValue}] ` : prompt;
66
+ rl.question(displayPrompt, (answer) => {
67
+ resolve(answer || defaultValue || '');
68
+ });
69
+ });
70
+ }
71
+ // ============ Key Detection Helpers ============
72
+ function isSubmitKey(char) {
73
+ return char === '\n' || char === '\r' || char === '\u0004'; // Enter, Return, Ctrl-D
74
+ }
75
+ function isExitKey(char) {
76
+ return char === '\u0003'; // Ctrl-C
77
+ }
78
+ function isBackspace(char) {
79
+ return char === '\u007F';
80
+ }
81
+ function handleBackspace(value, stdout) {
82
+ if (value.length > 0) {
83
+ stdout.write('\b \b');
84
+ }
85
+ }
86
+ // ============ Environment Variable Prompting ============
87
+ export async function promptEnvVars(envTemplate, _serverName) {
88
+ const rl = createReadline();
89
+ const values = {};
90
+ console.log();
91
+ console.log(chalk.bold(' This server requires configuration:'));
92
+ console.log();
93
+ try {
94
+ for (const [name, template] of Object.entries(envTemplate)) {
95
+ displayVariableInfo(name, template);
96
+ const value = await promptForVariable(rl, name, template);
97
+ if (value) {
98
+ values[name] = {
99
+ value,
100
+ isSecret: template.sensitive,
101
+ };
102
+ }
103
+ console.log();
104
+ }
105
+ }
106
+ finally {
107
+ rl.close();
108
+ }
109
+ return values;
110
+ }
111
+ export async function promptUpdateEnvVars(envTemplate, existingSecrets, _serverName) {
112
+ const rl = createReadline();
113
+ const values = {};
114
+ console.log();
115
+ console.log(chalk.bold(' Update environment variables:'));
116
+ console.log(chalk.dim(' (Press Enter to keep existing value)'));
117
+ console.log();
118
+ try {
119
+ for (const [name, template] of Object.entries(envTemplate)) {
120
+ const hasExisting = existingSecrets.includes(name);
121
+ displayUpdateVariableInfo(name, hasExisting);
122
+ const prompt = buildUpdatePrompt(hasExisting, template.sensitive);
123
+ const value = await promptValue(rl, prompt, {
124
+ mask: template.sensitive,
125
+ });
126
+ if (value) {
127
+ values[name] = {
128
+ value,
129
+ isSecret: template.sensitive,
130
+ };
131
+ }
132
+ console.log();
133
+ }
134
+ }
135
+ finally {
136
+ rl.close();
137
+ }
138
+ return values;
139
+ }
140
+ // ============ Display Helpers ============
141
+ function displayVariableInfo(name, template) {
142
+ const requiredLabel = template.required ? chalk.red('required') : chalk.dim('optional');
143
+ console.log(` ${chalk.cyan(name)} (${requiredLabel})`);
144
+ if (template.description) {
145
+ console.log(` ${chalk.dim(template.description)}`);
146
+ }
147
+ if (template.helpUrl) {
148
+ console.log(` ${chalk.dim('Get one at:')} ${chalk.blue(template.helpUrl)}`);
149
+ }
150
+ }
151
+ function displayUpdateVariableInfo(name, hasExisting) {
152
+ const statusLabel = hasExisting ? chalk.green('configured') : chalk.yellow('not set');
153
+ console.log(` ${chalk.cyan(name)} (${statusLabel})`);
154
+ }
155
+ function buildUpdatePrompt(hasExisting, sensitive) {
156
+ if (hasExisting) {
157
+ return ' > New value (or Enter to keep): ';
158
+ }
159
+ return sensitive ? ' > Enter value: ' : ' > ';
160
+ }
161
+ async function promptForVariable(rl, name, template) {
162
+ const prompt = template.sensitive ? ' > Enter value: ' : ' > ';
163
+ const value = await promptValue(rl, prompt, {
164
+ mask: template.sensitive,
165
+ defaultValue: template.default,
166
+ });
167
+ if (!value && template.required) {
168
+ console.log(chalk.red(` Error: ${name} is required`));
169
+ rl.close();
170
+ throw new Error(`Required value not provided: ${name}`);
171
+ }
172
+ return value;
173
+ }
174
+ // ============ User Confirmation ============
175
+ export async function confirm(message, defaultValue = false) {
176
+ const rl = createReadline();
177
+ const suffix = defaultValue ? '[Y/n]' : '[y/N]';
178
+ const prompt = `${message} ${suffix} `;
179
+ return new Promise((resolve) => {
180
+ rl.question(prompt, (answer) => {
181
+ rl.close();
182
+ const normalized = answer.toLowerCase().trim();
183
+ const result = normalized === '' ? defaultValue : normalized === 'y' || normalized === 'yes';
184
+ resolve(result);
185
+ });
186
+ });
187
+ }
188
+ // ============ Message Display ============
189
+ export function showSuccess(message) {
190
+ console.log(chalk.green(` ${message}`));
191
+ }
192
+ export function showError(message) {
193
+ console.log(chalk.red(` ${message}`));
194
+ }
195
+ export function showInfo(message) {
196
+ console.log(chalk.dim(` ${message}`));
197
+ }
198
+ // ============ Secret Masking ============
199
+ export function maskSecret(value) {
200
+ if (value.length <= 4) {
201
+ return '****';
202
+ }
203
+ const maskLength = Math.min(value.length - 4, 8);
204
+ return value.slice(0, 2) + '*'.repeat(maskLength) + value.slice(-2);
205
+ }
206
+ //# sourceMappingURL=prompt.clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.clean.js","sourceRoot":"","sources":["../../src/mcp/prompt.clean.ts"],"names":[],"mappings":"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"}