@defai.digital/ax-cli 4.4.7 → 4.4.10

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 (802) hide show
  1. package/bin/ax-cli +1 -5
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +158 -9
  4. package/dist/index.js.map +1 -1
  5. package/dist/setup.d.ts +27 -0
  6. package/dist/setup.d.ts.map +1 -0
  7. package/dist/setup.js +591 -0
  8. package/dist/setup.js.map +1 -0
  9. package/package.json +43 -135
  10. package/LICENSE +0 -22
  11. package/README.md +0 -420
  12. package/config-defaults/messages.yaml +0 -75
  13. package/config-defaults/models.yaml +0 -57
  14. package/config-defaults/prompts.yaml +0 -948
  15. package/config-defaults/settings.yaml +0 -157
  16. package/dist/agent/agent-executor.d.ts +0 -61
  17. package/dist/agent/agent-executor.js +0 -194
  18. package/dist/agent/agent-executor.js.map +0 -1
  19. package/dist/agent/agent-router.d.ts +0 -68
  20. package/dist/agent/agent-router.js +0 -242
  21. package/dist/agent/agent-router.js.map +0 -1
  22. package/dist/agent/context-manager.d.ts +0 -122
  23. package/dist/agent/context-manager.js +0 -406
  24. package/dist/agent/context-manager.js.map +0 -1
  25. package/dist/agent/core/index.d.ts +0 -8
  26. package/dist/agent/core/index.js +0 -9
  27. package/dist/agent/core/index.js.map +0 -1
  28. package/dist/agent/core/types.d.ts +0 -92
  29. package/dist/agent/core/types.js +0 -11
  30. package/dist/agent/core/types.js.map +0 -1
  31. package/dist/agent/dependency-resolver.d.ts +0 -90
  32. package/dist/agent/dependency-resolver.js +0 -366
  33. package/dist/agent/dependency-resolver.js.map +0 -1
  34. package/dist/agent/execution/index.d.ts +0 -9
  35. package/dist/agent/execution/index.js +0 -9
  36. package/dist/agent/execution/index.js.map +0 -1
  37. package/dist/agent/execution/tool-executor.d.ts +0 -93
  38. package/dist/agent/execution/tool-executor.js +0 -552
  39. package/dist/agent/execution/tool-executor.js.map +0 -1
  40. package/dist/agent/index.d.ts +0 -14
  41. package/dist/agent/index.js +0 -145
  42. package/dist/agent/index.js.map +0 -1
  43. package/dist/agent/llm-agent.d.ts +0 -368
  44. package/dist/agent/llm-agent.js +0 -1931
  45. package/dist/agent/llm-agent.js.map +0 -1
  46. package/dist/agent/loop-detector.d.ts +0 -72
  47. package/dist/agent/loop-detector.js +0 -335
  48. package/dist/agent/loop-detector.js.map +0 -1
  49. package/dist/agent/parallel-tools.d.ts +0 -69
  50. package/dist/agent/parallel-tools.js +0 -188
  51. package/dist/agent/parallel-tools.js.map +0 -1
  52. package/dist/agent/planning/index.d.ts +0 -9
  53. package/dist/agent/planning/index.js +0 -9
  54. package/dist/agent/planning/index.js.map +0 -1
  55. package/dist/agent/planning/plan-executor.d.ts +0 -79
  56. package/dist/agent/planning/plan-executor.js +0 -240
  57. package/dist/agent/planning/plan-executor.js.map +0 -1
  58. package/dist/agent/progress-tracker.d.ts +0 -94
  59. package/dist/agent/progress-tracker.js +0 -225
  60. package/dist/agent/progress-tracker.js.map +0 -1
  61. package/dist/agent/specialized/analysis-agent.d.ts +0 -11
  62. package/dist/agent/specialized/analysis-agent.js +0 -24
  63. package/dist/agent/specialized/analysis-agent.js.map +0 -1
  64. package/dist/agent/specialized/debug-agent.d.ts +0 -11
  65. package/dist/agent/specialized/debug-agent.js +0 -46
  66. package/dist/agent/specialized/debug-agent.js.map +0 -1
  67. package/dist/agent/specialized/documentation-agent.d.ts +0 -11
  68. package/dist/agent/specialized/documentation-agent.js +0 -24
  69. package/dist/agent/specialized/documentation-agent.js.map +0 -1
  70. package/dist/agent/specialized/index.d.ts +0 -11
  71. package/dist/agent/specialized/index.js +0 -12
  72. package/dist/agent/specialized/index.js.map +0 -1
  73. package/dist/agent/specialized/performance-agent.d.ts +0 -11
  74. package/dist/agent/specialized/performance-agent.js +0 -24
  75. package/dist/agent/specialized/performance-agent.js.map +0 -1
  76. package/dist/agent/specialized/refactoring-agent.d.ts +0 -11
  77. package/dist/agent/specialized/refactoring-agent.js +0 -24
  78. package/dist/agent/specialized/refactoring-agent.js.map +0 -1
  79. package/dist/agent/specialized/testing-agent.d.ts +0 -11
  80. package/dist/agent/specialized/testing-agent.js +0 -24
  81. package/dist/agent/specialized/testing-agent.js.map +0 -1
  82. package/dist/agent/status-reporter.d.ts +0 -114
  83. package/dist/agent/status-reporter.js +0 -335
  84. package/dist/agent/status-reporter.js.map +0 -1
  85. package/dist/agent/streaming/index.d.ts +0 -9
  86. package/dist/agent/streaming/index.js +0 -9
  87. package/dist/agent/streaming/index.js.map +0 -1
  88. package/dist/agent/streaming/stream-handler.d.ts +0 -62
  89. package/dist/agent/streaming/stream-handler.js +0 -217
  90. package/dist/agent/streaming/stream-handler.js.map +0 -1
  91. package/dist/agent/subagent-orchestrator.d.ts +0 -166
  92. package/dist/agent/subagent-orchestrator.js +0 -487
  93. package/dist/agent/subagent-orchestrator.js.map +0 -1
  94. package/dist/agent/subagent-types.d.ts +0 -261
  95. package/dist/agent/subagent-types.js +0 -257
  96. package/dist/agent/subagent-types.js.map +0 -1
  97. package/dist/agent/subagent.d.ts +0 -116
  98. package/dist/agent/subagent.js +0 -507
  99. package/dist/agent/subagent.js.map +0 -1
  100. package/dist/checkpoint/index.d.ts +0 -9
  101. package/dist/checkpoint/index.js +0 -11
  102. package/dist/checkpoint/index.js.map +0 -1
  103. package/dist/checkpoint/manager.d.ts +0 -101
  104. package/dist/checkpoint/manager.js +0 -407
  105. package/dist/checkpoint/manager.js.map +0 -1
  106. package/dist/checkpoint/storage.d.ts +0 -39
  107. package/dist/checkpoint/storage.js +0 -350
  108. package/dist/checkpoint/storage.js.map +0 -1
  109. package/dist/checkpoint/types.d.ts +0 -111
  110. package/dist/checkpoint/types.js +0 -17
  111. package/dist/checkpoint/types.js.map +0 -1
  112. package/dist/commands/cache.d.ts +0 -7
  113. package/dist/commands/cache.js +0 -284
  114. package/dist/commands/cache.js.map +0 -1
  115. package/dist/commands/custom-commands.d.ts +0 -77
  116. package/dist/commands/custom-commands.js +0 -251
  117. package/dist/commands/custom-commands.js.map +0 -1
  118. package/dist/commands/design.d.ts +0 -18
  119. package/dist/commands/design.js +0 -511
  120. package/dist/commands/design.js.map +0 -1
  121. package/dist/commands/doctor.d.ts +0 -6
  122. package/dist/commands/doctor.js +0 -773
  123. package/dist/commands/doctor.js.map +0 -1
  124. package/dist/commands/frontend.d.ts +0 -9
  125. package/dist/commands/frontend.js +0 -645
  126. package/dist/commands/frontend.js.map +0 -1
  127. package/dist/commands/init/wizard.d.ts +0 -55
  128. package/dist/commands/init/wizard.js +0 -189
  129. package/dist/commands/init/wizard.js.map +0 -1
  130. package/dist/commands/init.d.ts +0 -8
  131. package/dist/commands/init.js +0 -195
  132. package/dist/commands/init.js.map +0 -1
  133. package/dist/commands/mcp-migrate.d.ts +0 -9
  134. package/dist/commands/mcp-migrate.js +0 -175
  135. package/dist/commands/mcp-migrate.js.map +0 -1
  136. package/dist/commands/mcp.d.ts +0 -2
  137. package/dist/commands/mcp.js +0 -1292
  138. package/dist/commands/mcp.js.map +0 -1
  139. package/dist/commands/memory.d.ts +0 -6
  140. package/dist/commands/memory.js +0 -555
  141. package/dist/commands/memory.js.map +0 -1
  142. package/dist/commands/models.d.ts +0 -5
  143. package/dist/commands/models.js +0 -213
  144. package/dist/commands/models.js.map +0 -1
  145. package/dist/commands/plan.d.ts +0 -43
  146. package/dist/commands/plan.js +0 -362
  147. package/dist/commands/plan.js.map +0 -1
  148. package/dist/commands/rewind.d.ts +0 -19
  149. package/dist/commands/rewind.js +0 -221
  150. package/dist/commands/rewind.js.map +0 -1
  151. package/dist/commands/setup.d.ts +0 -14
  152. package/dist/commands/setup.js +0 -733
  153. package/dist/commands/setup.js.map +0 -1
  154. package/dist/commands/status.d.ts +0 -7
  155. package/dist/commands/status.js +0 -437
  156. package/dist/commands/status.js.map +0 -1
  157. package/dist/commands/templates.d.ts +0 -5
  158. package/dist/commands/templates.js +0 -245
  159. package/dist/commands/templates.js.map +0 -1
  160. package/dist/commands/update.d.ts +0 -49
  161. package/dist/commands/update.js +0 -366
  162. package/dist/commands/update.js.map +0 -1
  163. package/dist/commands/usage.d.ts +0 -8
  164. package/dist/commands/usage.js +0 -264
  165. package/dist/commands/usage.js.map +0 -1
  166. package/dist/commands/vscode.d.ts +0 -7
  167. package/dist/commands/vscode.js +0 -419
  168. package/dist/commands/vscode.js.map +0 -1
  169. package/dist/constants.d.ts +0 -236
  170. package/dist/constants.js +0 -288
  171. package/dist/constants.js.map +0 -1
  172. package/dist/design/figma-alias.d.ts +0 -170
  173. package/dist/design/figma-alias.js +0 -577
  174. package/dist/design/figma-alias.js.map +0 -1
  175. package/dist/design/figma-audit.d.ts +0 -40
  176. package/dist/design/figma-audit.js +0 -383
  177. package/dist/design/figma-audit.js.map +0 -1
  178. package/dist/design/figma-client.d.ts +0 -131
  179. package/dist/design/figma-client.js +0 -369
  180. package/dist/design/figma-client.js.map +0 -1
  181. package/dist/design/figma-map.d.ts +0 -29
  182. package/dist/design/figma-map.js +0 -346
  183. package/dist/design/figma-map.js.map +0 -1
  184. package/dist/design/figma-tokens.d.ts +0 -73
  185. package/dist/design/figma-tokens.js +0 -448
  186. package/dist/design/figma-tokens.js.map +0 -1
  187. package/dist/design/index.d.ts +0 -13
  188. package/dist/design/index.js +0 -20
  189. package/dist/design/index.js.map +0 -1
  190. package/dist/design/types.d.ts +0 -98
  191. package/dist/design/types.js +0 -9
  192. package/dist/design/types.js.map +0 -1
  193. package/dist/hooks/hook-runner.d.ts +0 -142
  194. package/dist/hooks/hook-runner.js +0 -436
  195. package/dist/hooks/hook-runner.js.map +0 -1
  196. package/dist/hooks/index.d.ts +0 -9
  197. package/dist/hooks/index.js +0 -10
  198. package/dist/hooks/index.js.map +0 -1
  199. package/dist/hooks/manager.d.ts +0 -84
  200. package/dist/hooks/manager.js +0 -348
  201. package/dist/hooks/manager.js.map +0 -1
  202. package/dist/hooks/types.d.ts +0 -134
  203. package/dist/hooks/types.js +0 -9
  204. package/dist/hooks/types.js.map +0 -1
  205. package/dist/index.d.ts +0 -2
  206. package/dist/ipc/index.d.ts +0 -9
  207. package/dist/ipc/index.js +0 -10
  208. package/dist/ipc/index.js.map +0 -1
  209. package/dist/ipc/vscode-client.d.ts +0 -200
  210. package/dist/ipc/vscode-client.js +0 -495
  211. package/dist/ipc/vscode-client.js.map +0 -1
  212. package/dist/llm/client.d.ts +0 -205
  213. package/dist/llm/client.js +0 -735
  214. package/dist/llm/client.js.map +0 -1
  215. package/dist/llm/tools.d.ts +0 -102
  216. package/dist/llm/tools.js +0 -275
  217. package/dist/llm/tools.js.map +0 -1
  218. package/dist/llm/types.d.ts +0 -428
  219. package/dist/llm/types.js +0 -194
  220. package/dist/llm/types.js.map +0 -1
  221. package/dist/mcp/automatosx-auto-discovery.d.ts +0 -66
  222. package/dist/mcp/automatosx-auto-discovery.js +0 -169
  223. package/dist/mcp/automatosx-auto-discovery.js.map +0 -1
  224. package/dist/mcp/automatosx-loader.d.ts +0 -99
  225. package/dist/mcp/automatosx-loader.js +0 -250
  226. package/dist/mcp/automatosx-loader.js.map +0 -1
  227. package/dist/mcp/cancellation.d.ts +0 -182
  228. package/dist/mcp/cancellation.js +0 -275
  229. package/dist/mcp/cancellation.js.map +0 -1
  230. package/dist/mcp/client-v2.d.ts +0 -500
  231. package/dist/mcp/client-v2.js +0 -1433
  232. package/dist/mcp/client-v2.js.map +0 -1
  233. package/dist/mcp/client.d.ts +0 -170
  234. package/dist/mcp/client.js +0 -232
  235. package/dist/mcp/client.js.map +0 -1
  236. package/dist/mcp/config-detector.d.ts +0 -90
  237. package/dist/mcp/config-detector.js +0 -250
  238. package/dist/mcp/config-detector.js.map +0 -1
  239. package/dist/mcp/config-migrator.d.ts +0 -68
  240. package/dist/mcp/config-migrator.js +0 -291
  241. package/dist/mcp/config-migrator.js.map +0 -1
  242. package/dist/mcp/config.d.ts +0 -24
  243. package/dist/mcp/config.js +0 -273
  244. package/dist/mcp/config.js.map +0 -1
  245. package/dist/mcp/constants.d.ts +0 -66
  246. package/dist/mcp/constants.js +0 -85
  247. package/dist/mcp/constants.js.map +0 -1
  248. package/dist/mcp/content-length-transport.d.ts +0 -106
  249. package/dist/mcp/content-length-transport.js +0 -413
  250. package/dist/mcp/content-length-transport.js.map +0 -1
  251. package/dist/mcp/debug.d.ts +0 -211
  252. package/dist/mcp/debug.js +0 -404
  253. package/dist/mcp/debug.js.map +0 -1
  254. package/dist/mcp/error-formatter.d.ts +0 -40
  255. package/dist/mcp/error-formatter.js +0 -207
  256. package/dist/mcp/error-formatter.js.map +0 -1
  257. package/dist/mcp/error-remediation.d.ts +0 -45
  258. package/dist/mcp/error-remediation.js +0 -291
  259. package/dist/mcp/error-remediation.js.map +0 -1
  260. package/dist/mcp/health.d.ts +0 -120
  261. package/dist/mcp/health.js +0 -267
  262. package/dist/mcp/health.js.map +0 -1
  263. package/dist/mcp/index.d.ts +0 -56
  264. package/dist/mcp/index.js +0 -89
  265. package/dist/mcp/index.js.map +0 -1
  266. package/dist/mcp/invariants.d.ts +0 -141
  267. package/dist/mcp/invariants.js +0 -243
  268. package/dist/mcp/invariants.js.map +0 -1
  269. package/dist/mcp/mutex-safe.d.ts +0 -151
  270. package/dist/mcp/mutex-safe.js +0 -260
  271. package/dist/mcp/mutex-safe.js.map +0 -1
  272. package/dist/mcp/progress.d.ts +0 -155
  273. package/dist/mcp/progress.js +0 -252
  274. package/dist/mcp/progress.js.map +0 -1
  275. package/dist/mcp/prompts.d.ts +0 -68
  276. package/dist/mcp/prompts.js +0 -129
  277. package/dist/mcp/prompts.js.map +0 -1
  278. package/dist/mcp/provider-mcp-loader.d.ts +0 -130
  279. package/dist/mcp/provider-mcp-loader.js +0 -292
  280. package/dist/mcp/provider-mcp-loader.js.map +0 -1
  281. package/dist/mcp/reconnection.d.ts +0 -101
  282. package/dist/mcp/reconnection.js +0 -253
  283. package/dist/mcp/reconnection.js.map +0 -1
  284. package/dist/mcp/registry.d.ts +0 -75
  285. package/dist/mcp/registry.js +0 -276
  286. package/dist/mcp/registry.js.map +0 -1
  287. package/dist/mcp/resources.d.ts +0 -58
  288. package/dist/mcp/resources.js +0 -144
  289. package/dist/mcp/resources.js.map +0 -1
  290. package/dist/mcp/schema-validator.d.ts +0 -82
  291. package/dist/mcp/schema-validator.js +0 -161
  292. package/dist/mcp/schema-validator.js.map +0 -1
  293. package/dist/mcp/ssrf-protection.d.ts +0 -86
  294. package/dist/mcp/ssrf-protection.js +0 -311
  295. package/dist/mcp/ssrf-protection.js.map +0 -1
  296. package/dist/mcp/subscriptions.d.ts +0 -168
  297. package/dist/mcp/subscriptions.js +0 -248
  298. package/dist/mcp/subscriptions.js.map +0 -1
  299. package/dist/mcp/templates.d.ts +0 -52
  300. package/dist/mcp/templates.js +0 -627
  301. package/dist/mcp/templates.js.map +0 -1
  302. package/dist/mcp/transports.d.ts +0 -80
  303. package/dist/mcp/transports.js +0 -237
  304. package/dist/mcp/transports.js.map +0 -1
  305. package/dist/mcp/type-safety.d.ts +0 -225
  306. package/dist/mcp/type-safety.js +0 -237
  307. package/dist/mcp/type-safety.js.map +0 -1
  308. package/dist/mcp/validation.d.ts +0 -29
  309. package/dist/mcp/validation.js +0 -339
  310. package/dist/mcp/validation.js.map +0 -1
  311. package/dist/mcp/zai-detector.d.ts +0 -63
  312. package/dist/mcp/zai-detector.js +0 -193
  313. package/dist/mcp/zai-detector.js.map +0 -1
  314. package/dist/mcp/zai-templates.d.ts +0 -90
  315. package/dist/mcp/zai-templates.js +0 -157
  316. package/dist/mcp/zai-templates.js.map +0 -1
  317. package/dist/memory/context-generator.d.ts +0 -84
  318. package/dist/memory/context-generator.js +0 -546
  319. package/dist/memory/context-generator.js.map +0 -1
  320. package/dist/memory/context-injector.d.ts +0 -97
  321. package/dist/memory/context-injector.js +0 -159
  322. package/dist/memory/context-injector.js.map +0 -1
  323. package/dist/memory/context-store.d.ts +0 -103
  324. package/dist/memory/context-store.js +0 -264
  325. package/dist/memory/context-store.js.map +0 -1
  326. package/dist/memory/index.d.ts +0 -43
  327. package/dist/memory/index.js +0 -49
  328. package/dist/memory/index.js.map +0 -1
  329. package/dist/memory/provider-context-store.d.ts +0 -127
  330. package/dist/memory/provider-context-store.js +0 -385
  331. package/dist/memory/provider-context-store.js.map +0 -1
  332. package/dist/memory/schemas.d.ts +0 -118
  333. package/dist/memory/schemas.js +0 -106
  334. package/dist/memory/schemas.js.map +0 -1
  335. package/dist/memory/stats-collector.d.ts +0 -73
  336. package/dist/memory/stats-collector.js +0 -170
  337. package/dist/memory/stats-collector.js.map +0 -1
  338. package/dist/memory/types.d.ts +0 -177
  339. package/dist/memory/types.js +0 -73
  340. package/dist/memory/types.js.map +0 -1
  341. package/dist/permissions/index.d.ts +0 -6
  342. package/dist/permissions/index.js +0 -7
  343. package/dist/permissions/index.js.map +0 -1
  344. package/dist/permissions/permission-manager.d.ts +0 -149
  345. package/dist/permissions/permission-manager.js +0 -410
  346. package/dist/permissions/permission-manager.js.map +0 -1
  347. package/dist/planner/dependency-resolver.d.ts +0 -72
  348. package/dist/planner/dependency-resolver.js +0 -272
  349. package/dist/planner/dependency-resolver.js.map +0 -1
  350. package/dist/planner/index.d.ts +0 -12
  351. package/dist/planner/index.js +0 -28
  352. package/dist/planner/index.js.map +0 -1
  353. package/dist/planner/plan-generator.d.ts +0 -74
  354. package/dist/planner/plan-generator.js +0 -244
  355. package/dist/planner/plan-generator.js.map +0 -1
  356. package/dist/planner/plan-storage.d.ts +0 -113
  357. package/dist/planner/plan-storage.js +0 -398
  358. package/dist/planner/plan-storage.js.map +0 -1
  359. package/dist/planner/prompts/planning-prompt.d.ts +0 -62
  360. package/dist/planner/prompts/planning-prompt.js +0 -414
  361. package/dist/planner/prompts/planning-prompt.js.map +0 -1
  362. package/dist/planner/task-planner.d.ts +0 -139
  363. package/dist/planner/task-planner.js +0 -532
  364. package/dist/planner/task-planner.js.map +0 -1
  365. package/dist/planner/token-estimator.d.ts +0 -63
  366. package/dist/planner/token-estimator.js +0 -295
  367. package/dist/planner/token-estimator.js.map +0 -1
  368. package/dist/planner/types.d.ts +0 -425
  369. package/dist/planner/types.js +0 -213
  370. package/dist/planner/types.js.map +0 -1
  371. package/dist/provider/config.d.ts +0 -227
  372. package/dist/provider/config.js +0 -430
  373. package/dist/provider/config.js.map +0 -1
  374. package/dist/schemas/api-schemas.d.ts +0 -45
  375. package/dist/schemas/api-schemas.js +0 -129
  376. package/dist/schemas/api-schemas.js.map +0 -1
  377. package/dist/schemas/confirmation-schemas.d.ts +0 -39
  378. package/dist/schemas/confirmation-schemas.js +0 -48
  379. package/dist/schemas/confirmation-schemas.js.map +0 -1
  380. package/dist/schemas/index-unified.d.ts +0 -12
  381. package/dist/schemas/index-unified.js +0 -17
  382. package/dist/schemas/index-unified.js.map +0 -1
  383. package/dist/schemas/index.d.ts +0 -83
  384. package/dist/schemas/index.js +0 -139
  385. package/dist/schemas/index.js.map +0 -1
  386. package/dist/schemas/settings-schemas.d.ts +0 -186
  387. package/dist/schemas/settings-schemas.js +0 -324
  388. package/dist/schemas/settings-schemas.js.map +0 -1
  389. package/dist/schemas/tool-schemas.d.ts +0 -127
  390. package/dist/schemas/tool-schemas.js +0 -84
  391. package/dist/schemas/tool-schemas.js.map +0 -1
  392. package/dist/schemas/yaml-schemas.d.ts +0 -231
  393. package/dist/schemas/yaml-schemas.js +0 -199
  394. package/dist/schemas/yaml-schemas.js.map +0 -1
  395. package/dist/sdk/errors.d.ts +0 -100
  396. package/dist/sdk/errors.js +0 -138
  397. package/dist/sdk/errors.js.map +0 -1
  398. package/dist/sdk/index.d.ts +0 -901
  399. package/dist/sdk/index.js +0 -1272
  400. package/dist/sdk/index.js.map +0 -1
  401. package/dist/sdk/progress-reporter.d.ts +0 -123
  402. package/dist/sdk/progress-reporter.js +0 -220
  403. package/dist/sdk/progress-reporter.js.map +0 -1
  404. package/dist/sdk/testing.d.ts +0 -427
  405. package/dist/sdk/testing.js +0 -725
  406. package/dist/sdk/testing.js.map +0 -1
  407. package/dist/sdk/tool-registry.d.ts +0 -194
  408. package/dist/sdk/tool-registry.js +0 -326
  409. package/dist/sdk/tool-registry.js.map +0 -1
  410. package/dist/sdk/types.d.ts +0 -53
  411. package/dist/sdk/types.js +0 -8
  412. package/dist/sdk/types.js.map +0 -1
  413. package/dist/sdk/unified-logger.d.ts +0 -173
  414. package/dist/sdk/unified-logger.js +0 -327
  415. package/dist/sdk/unified-logger.js.map +0 -1
  416. package/dist/sdk/version.d.ts +0 -163
  417. package/dist/sdk/version.js +0 -205
  418. package/dist/sdk/version.js.map +0 -1
  419. package/dist/tools/ask-user.d.ts +0 -126
  420. package/dist/tools/ask-user.js +0 -290
  421. package/dist/tools/ask-user.js.map +0 -1
  422. package/dist/tools/ax-agent.d.ts +0 -71
  423. package/dist/tools/ax-agent.js +0 -283
  424. package/dist/tools/ax-agent.js.map +0 -1
  425. package/dist/tools/bash-output.d.ts +0 -25
  426. package/dist/tools/bash-output.js +0 -146
  427. package/dist/tools/bash-output.js.map +0 -1
  428. package/dist/tools/bash.d.ts +0 -67
  429. package/dist/tools/bash.js +0 -522
  430. package/dist/tools/bash.js.map +0 -1
  431. package/dist/tools/confirmation-tool.d.ts +0 -16
  432. package/dist/tools/confirmation-tool.js +0 -76
  433. package/dist/tools/confirmation-tool.js.map +0 -1
  434. package/dist/tools/definitions/ask-user.d.ts +0 -8
  435. package/dist/tools/definitions/ask-user.js +0 -168
  436. package/dist/tools/definitions/ask-user.js.map +0 -1
  437. package/dist/tools/definitions/ax-agent.d.ts +0 -8
  438. package/dist/tools/definitions/ax-agent.js +0 -276
  439. package/dist/tools/definitions/ax-agent.js.map +0 -1
  440. package/dist/tools/definitions/bash-output.d.ts +0 -7
  441. package/dist/tools/definitions/bash-output.js +0 -78
  442. package/dist/tools/definitions/bash-output.js.map +0 -1
  443. package/dist/tools/definitions/bash.d.ts +0 -8
  444. package/dist/tools/definitions/bash.js +0 -152
  445. package/dist/tools/definitions/bash.js.map +0 -1
  446. package/dist/tools/definitions/create-file.d.ts +0 -7
  447. package/dist/tools/definitions/create-file.js +0 -129
  448. package/dist/tools/definitions/create-file.js.map +0 -1
  449. package/dist/tools/definitions/design.d.ts +0 -12
  450. package/dist/tools/definitions/design.js +0 -368
  451. package/dist/tools/definitions/design.js.map +0 -1
  452. package/dist/tools/definitions/index.d.ts +0 -49
  453. package/dist/tools/definitions/index.js +0 -87
  454. package/dist/tools/definitions/index.js.map +0 -1
  455. package/dist/tools/definitions/multi-edit.d.ts +0 -7
  456. package/dist/tools/definitions/multi-edit.js +0 -123
  457. package/dist/tools/definitions/multi-edit.js.map +0 -1
  458. package/dist/tools/definitions/search.d.ts +0 -7
  459. package/dist/tools/definitions/search.js +0 -159
  460. package/dist/tools/definitions/search.js.map +0 -1
  461. package/dist/tools/definitions/str-replace-editor.d.ts +0 -7
  462. package/dist/tools/definitions/str-replace-editor.js +0 -145
  463. package/dist/tools/definitions/str-replace-editor.js.map +0 -1
  464. package/dist/tools/definitions/todo.d.ts +0 -8
  465. package/dist/tools/definitions/todo.js +0 -261
  466. package/dist/tools/definitions/todo.js.map +0 -1
  467. package/dist/tools/definitions/view-file.d.ts +0 -7
  468. package/dist/tools/definitions/view-file.js +0 -111
  469. package/dist/tools/definitions/view-file.js.map +0 -1
  470. package/dist/tools/design-tool.d.ts +0 -68
  471. package/dist/tools/design-tool.js +0 -299
  472. package/dist/tools/design-tool.js.map +0 -1
  473. package/dist/tools/format-generators.d.ts +0 -62
  474. package/dist/tools/format-generators.js +0 -291
  475. package/dist/tools/format-generators.js.map +0 -1
  476. package/dist/tools/index.d.ts +0 -8
  477. package/dist/tools/index.js +0 -11
  478. package/dist/tools/index.js.map +0 -1
  479. package/dist/tools/priority-registry.d.ts +0 -124
  480. package/dist/tools/priority-registry.js +0 -401
  481. package/dist/tools/priority-registry.js.map +0 -1
  482. package/dist/tools/priority.d.ts +0 -158
  483. package/dist/tools/priority.js +0 -350
  484. package/dist/tools/priority.js.map +0 -1
  485. package/dist/tools/registry.d.ts +0 -146
  486. package/dist/tools/registry.js +0 -171
  487. package/dist/tools/registry.js.map +0 -1
  488. package/dist/tools/search.d.ts +0 -85
  489. package/dist/tools/search.js +0 -430
  490. package/dist/tools/search.js.map +0 -1
  491. package/dist/tools/text-editor.d.ts +0 -87
  492. package/dist/tools/text-editor.js +0 -1369
  493. package/dist/tools/text-editor.js.map +0 -1
  494. package/dist/tools/todo-tool.d.ts +0 -20
  495. package/dist/tools/todo-tool.js +0 -186
  496. package/dist/tools/todo-tool.js.map +0 -1
  497. package/dist/tools/types.d.ts +0 -175
  498. package/dist/tools/types.js +0 -11
  499. package/dist/tools/types.js.map +0 -1
  500. package/dist/types/index.d.ts +0 -30
  501. package/dist/types/index.js +0 -2
  502. package/dist/types/index.js.map +0 -1
  503. package/dist/types/project-analysis.d.ts +0 -84
  504. package/dist/types/project-analysis.js +0 -5
  505. package/dist/types/project-analysis.js.map +0 -1
  506. package/dist/types/template.d.ts +0 -53
  507. package/dist/types/template.js +0 -5
  508. package/dist/types/template.js.map +0 -1
  509. package/dist/ui/app.d.ts +0 -7
  510. package/dist/ui/app.js +0 -102
  511. package/dist/ui/app.js.map +0 -1
  512. package/dist/ui/components/api-key-input.d.ts +0 -7
  513. package/dist/ui/components/api-key-input.js +0 -92
  514. package/dist/ui/components/api-key-input.js.map +0 -1
  515. package/dist/ui/components/chat-history.d.ts +0 -12
  516. package/dist/ui/components/chat-history.js +0 -391
  517. package/dist/ui/components/chat-history.js.map +0 -1
  518. package/dist/ui/components/chat-input.d.ts +0 -13
  519. package/dist/ui/components/chat-input.js +0 -179
  520. package/dist/ui/components/chat-input.js.map +0 -1
  521. package/dist/ui/components/chat-interface.d.ts +0 -11
  522. package/dist/ui/components/chat-interface.js +0 -830
  523. package/dist/ui/components/chat-interface.js.map +0 -1
  524. package/dist/ui/components/collapsible-tool-result.d.ts +0 -42
  525. package/dist/ui/components/collapsible-tool-result.js +0 -216
  526. package/dist/ui/components/collapsible-tool-result.js.map +0 -1
  527. package/dist/ui/components/command-suggestions.d.ts +0 -29
  528. package/dist/ui/components/command-suggestions.js +0 -88
  529. package/dist/ui/components/command-suggestions.js.map +0 -1
  530. package/dist/ui/components/confirmation-dialog.d.ts +0 -11
  531. package/dist/ui/components/confirmation-dialog.js +0 -100
  532. package/dist/ui/components/confirmation-dialog.js.map +0 -1
  533. package/dist/ui/components/context-breakdown.d.ts +0 -23
  534. package/dist/ui/components/context-breakdown.js +0 -124
  535. package/dist/ui/components/context-breakdown.js.map +0 -1
  536. package/dist/ui/components/diff-renderer.d.ts +0 -13
  537. package/dist/ui/components/diff-renderer.js +0 -192
  538. package/dist/ui/components/diff-renderer.js.map +0 -1
  539. package/dist/ui/components/index.d.ts +0 -18
  540. package/dist/ui/components/index.js +0 -20
  541. package/dist/ui/components/index.js.map +0 -1
  542. package/dist/ui/components/keyboard-help.d.ts +0 -17
  543. package/dist/ui/components/keyboard-help.js +0 -122
  544. package/dist/ui/components/keyboard-help.js.map +0 -1
  545. package/dist/ui/components/keyboard-hints.d.ts +0 -35
  546. package/dist/ui/components/keyboard-hints.js +0 -142
  547. package/dist/ui/components/keyboard-hints.js.map +0 -1
  548. package/dist/ui/components/loading-spinner.d.ts +0 -9
  549. package/dist/ui/components/loading-spinner.js +0 -120
  550. package/dist/ui/components/loading-spinner.js.map +0 -1
  551. package/dist/ui/components/mcp-dashboard.d.ts +0 -15
  552. package/dist/ui/components/mcp-dashboard.js +0 -520
  553. package/dist/ui/components/mcp-dashboard.js.map +0 -1
  554. package/dist/ui/components/mcp-status.d.ts +0 -5
  555. package/dist/ui/components/mcp-status.js +0 -58
  556. package/dist/ui/components/mcp-status.js.map +0 -1
  557. package/dist/ui/components/model-selection.d.ts +0 -12
  558. package/dist/ui/components/model-selection.js +0 -17
  559. package/dist/ui/components/model-selection.js.map +0 -1
  560. package/dist/ui/components/phase-progress.d.ts +0 -21
  561. package/dist/ui/components/phase-progress.js +0 -185
  562. package/dist/ui/components/phase-progress.js.map +0 -1
  563. package/dist/ui/components/question-dialog.d.ts +0 -17
  564. package/dist/ui/components/question-dialog.js +0 -181
  565. package/dist/ui/components/question-dialog.js.map +0 -1
  566. package/dist/ui/components/quick-actions.d.ts +0 -12
  567. package/dist/ui/components/quick-actions.js +0 -171
  568. package/dist/ui/components/quick-actions.js.map +0 -1
  569. package/dist/ui/components/reasoning-display.d.ts +0 -36
  570. package/dist/ui/components/reasoning-display.js +0 -46
  571. package/dist/ui/components/reasoning-display.js.map +0 -1
  572. package/dist/ui/components/status-bar.d.ts +0 -47
  573. package/dist/ui/components/status-bar.js +0 -310
  574. package/dist/ui/components/status-bar.js.map +0 -1
  575. package/dist/ui/components/subagent-monitor.d.ts +0 -41
  576. package/dist/ui/components/subagent-monitor.js +0 -122
  577. package/dist/ui/components/subagent-monitor.js.map +0 -1
  578. package/dist/ui/components/toast-notification.d.ts +0 -197
  579. package/dist/ui/components/toast-notification.js +0 -190
  580. package/dist/ui/components/toast-notification.js.map +0 -1
  581. package/dist/ui/components/tool-group-display.d.ts +0 -19
  582. package/dist/ui/components/tool-group-display.js +0 -222
  583. package/dist/ui/components/tool-group-display.js.map +0 -1
  584. package/dist/ui/components/virtualized-chat-history.d.ts +0 -33
  585. package/dist/ui/components/virtualized-chat-history.js +0 -182
  586. package/dist/ui/components/virtualized-chat-history.js.map +0 -1
  587. package/dist/ui/components/welcome-panel.d.ts +0 -11
  588. package/dist/ui/components/welcome-panel.js +0 -225
  589. package/dist/ui/components/welcome-panel.js.map +0 -1
  590. package/dist/ui/hooks/use-chat-reducer.d.ts +0 -69
  591. package/dist/ui/hooks/use-chat-reducer.js +0 -118
  592. package/dist/ui/hooks/use-chat-reducer.js.map +0 -1
  593. package/dist/ui/hooks/use-enhanced-input.d.ts +0 -53
  594. package/dist/ui/hooks/use-enhanced-input.js +0 -1275
  595. package/dist/ui/hooks/use-enhanced-input.js.map +0 -1
  596. package/dist/ui/hooks/use-input-handler.d.ts +0 -79
  597. package/dist/ui/hooks/use-input-handler.js +0 -2251
  598. package/dist/ui/hooks/use-input-handler.js.map +0 -1
  599. package/dist/ui/hooks/use-input-history.d.ts +0 -9
  600. package/dist/ui/hooks/use-input-history.js +0 -168
  601. package/dist/ui/hooks/use-input-history.js.map +0 -1
  602. package/dist/ui/shared/max-sized-box.d.ts +0 -17
  603. package/dist/ui/shared/max-sized-box.js +0 -14
  604. package/dist/ui/shared/max-sized-box.js.map +0 -1
  605. package/dist/ui/themes/index.d.ts +0 -5
  606. package/dist/ui/themes/index.js +0 -5
  607. package/dist/ui/themes/index.js.map +0 -1
  608. package/dist/ui/themes/theme-registry.d.ts +0 -55
  609. package/dist/ui/themes/theme-registry.js +0 -202
  610. package/dist/ui/themes/theme-registry.js.map +0 -1
  611. package/dist/ui/utils/bracketed-paste-handler.d.ts +0 -97
  612. package/dist/ui/utils/bracketed-paste-handler.js +0 -322
  613. package/dist/ui/utils/bracketed-paste-handler.js.map +0 -1
  614. package/dist/ui/utils/change-summarizer.d.ts +0 -20
  615. package/dist/ui/utils/change-summarizer.js +0 -282
  616. package/dist/ui/utils/change-summarizer.js.map +0 -1
  617. package/dist/ui/utils/code-colorizer.d.ts +0 -9
  618. package/dist/ui/utils/code-colorizer.js +0 -13
  619. package/dist/ui/utils/code-colorizer.js.map +0 -1
  620. package/dist/ui/utils/colors.d.ts +0 -41
  621. package/dist/ui/utils/colors.js +0 -80
  622. package/dist/ui/utils/colors.js.map +0 -1
  623. package/dist/ui/utils/image-handler.d.ts +0 -29
  624. package/dist/ui/utils/image-handler.js +0 -129
  625. package/dist/ui/utils/image-handler.js.map +0 -1
  626. package/dist/ui/utils/markdown-renderer.d.ts +0 -4
  627. package/dist/ui/utils/markdown-renderer.js +0 -40
  628. package/dist/ui/utils/markdown-renderer.js.map +0 -1
  629. package/dist/ui/utils/semantic-action-detector.d.ts +0 -49
  630. package/dist/ui/utils/semantic-action-detector.js +0 -339
  631. package/dist/ui/utils/semantic-action-detector.js.map +0 -1
  632. package/dist/ui/utils/tool-grouper.d.ts +0 -94
  633. package/dist/ui/utils/tool-grouper.js +0 -618
  634. package/dist/ui/utils/tool-grouper.js.map +0 -1
  635. package/dist/utils/api-error.d.ts +0 -61
  636. package/dist/utils/api-error.js +0 -176
  637. package/dist/utils/api-error.js.map +0 -1
  638. package/dist/utils/audit-logger.d.ts +0 -206
  639. package/dist/utils/audit-logger.js +0 -286
  640. package/dist/utils/audit-logger.js.map +0 -1
  641. package/dist/utils/auto-accept-logger.d.ts +0 -175
  642. package/dist/utils/auto-accept-logger.js +0 -423
  643. package/dist/utils/auto-accept-logger.js.map +0 -1
  644. package/dist/utils/automatosx-detector.d.ts +0 -19
  645. package/dist/utils/automatosx-detector.js +0 -52
  646. package/dist/utils/automatosx-detector.js.map +0 -1
  647. package/dist/utils/background-task-manager.d.ts +0 -114
  648. package/dist/utils/background-task-manager.js +0 -470
  649. package/dist/utils/background-task-manager.js.map +0 -1
  650. package/dist/utils/cache.d.ts +0 -77
  651. package/dist/utils/cache.js +0 -180
  652. package/dist/utils/cache.js.map +0 -1
  653. package/dist/utils/command-security.d.ts +0 -85
  654. package/dist/utils/command-security.js +0 -210
  655. package/dist/utils/command-security.js.map +0 -1
  656. package/dist/utils/config-loader.d.ts +0 -190
  657. package/dist/utils/config-loader.js +0 -108
  658. package/dist/utils/config-loader.js.map +0 -1
  659. package/dist/utils/confirmation-service.d.ts +0 -51
  660. package/dist/utils/confirmation-service.js +0 -220
  661. package/dist/utils/confirmation-service.js.map +0 -1
  662. package/dist/utils/console-messenger.d.ts +0 -80
  663. package/dist/utils/console-messenger.js +0 -142
  664. package/dist/utils/console-messenger.js.map +0 -1
  665. package/dist/utils/custom-instructions.d.ts +0 -1
  666. package/dist/utils/custom-instructions.js +0 -24
  667. package/dist/utils/custom-instructions.js.map +0 -1
  668. package/dist/utils/encryption.d.ts +0 -86
  669. package/dist/utils/encryption.js +0 -236
  670. package/dist/utils/encryption.js.map +0 -1
  671. package/dist/utils/enhanced-error-messages.d.ts +0 -33
  672. package/dist/utils/enhanced-error-messages.js +0 -440
  673. package/dist/utils/enhanced-error-messages.js.map +0 -1
  674. package/dist/utils/error-handler.d.ts +0 -65
  675. package/dist/utils/error-handler.js +0 -148
  676. package/dist/utils/error-handler.js.map +0 -1
  677. package/dist/utils/error-translator.d.ts +0 -25
  678. package/dist/utils/error-translator.js +0 -203
  679. package/dist/utils/error-translator.js.map +0 -1
  680. package/dist/utils/external-editor.d.ts +0 -47
  681. package/dist/utils/external-editor.js +0 -179
  682. package/dist/utils/external-editor.js.map +0 -1
  683. package/dist/utils/file-cache.d.ts +0 -148
  684. package/dist/utils/file-cache.js +0 -413
  685. package/dist/utils/file-cache.js.map +0 -1
  686. package/dist/utils/file-lock.d.ts +0 -141
  687. package/dist/utils/file-lock.js +0 -554
  688. package/dist/utils/file-lock.js.map +0 -1
  689. package/dist/utils/file-mentions.d.ts +0 -68
  690. package/dist/utils/file-mentions.js +0 -225
  691. package/dist/utils/file-mentions.js.map +0 -1
  692. package/dist/utils/history-manager.d.ts +0 -52
  693. package/dist/utils/history-manager.js +0 -211
  694. package/dist/utils/history-manager.js.map +0 -1
  695. package/dist/utils/history-migration.d.ts +0 -9
  696. package/dist/utils/history-migration.js +0 -37
  697. package/dist/utils/history-migration.js.map +0 -1
  698. package/dist/utils/image-processor.d.ts +0 -33
  699. package/dist/utils/image-processor.js +0 -124
  700. package/dist/utils/image-processor.js.map +0 -1
  701. package/dist/utils/index.d.ts +0 -92
  702. package/dist/utils/index.js +0 -111
  703. package/dist/utils/index.js.map +0 -1
  704. package/dist/utils/init-previewer.d.ts +0 -56
  705. package/dist/utils/init-previewer.js +0 -239
  706. package/dist/utils/init-previewer.js.map +0 -1
  707. package/dist/utils/init-validator.d.ts +0 -65
  708. package/dist/utils/init-validator.js +0 -252
  709. package/dist/utils/init-validator.js.map +0 -1
  710. package/dist/utils/input-sanitizer.d.ts +0 -210
  711. package/dist/utils/input-sanitizer.js +0 -362
  712. package/dist/utils/input-sanitizer.js.map +0 -1
  713. package/dist/utils/instruction-generator.d.ts +0 -21
  714. package/dist/utils/instruction-generator.js +0 -233
  715. package/dist/utils/instruction-generator.js.map +0 -1
  716. package/dist/utils/json-utils.d.ts +0 -72
  717. package/dist/utils/json-utils.js +0 -226
  718. package/dist/utils/json-utils.js.map +0 -1
  719. package/dist/utils/llm-optimized-instruction-generator.d.ts +0 -36
  720. package/dist/utils/llm-optimized-instruction-generator.js +0 -365
  721. package/dist/utils/llm-optimized-instruction-generator.js.map +0 -1
  722. package/dist/utils/message-optimizer.d.ts +0 -100
  723. package/dist/utils/message-optimizer.js +0 -297
  724. package/dist/utils/message-optimizer.js.map +0 -1
  725. package/dist/utils/onboarding-manager.d.ts +0 -45
  726. package/dist/utils/onboarding-manager.js +0 -131
  727. package/dist/utils/onboarding-manager.js.map +0 -1
  728. package/dist/utils/parallel-analyzer.d.ts +0 -123
  729. package/dist/utils/parallel-analyzer.js +0 -241
  730. package/dist/utils/parallel-analyzer.js.map +0 -1
  731. package/dist/utils/paste-utils.d.ts +0 -99
  732. package/dist/utils/paste-utils.js +0 -295
  733. package/dist/utils/paste-utils.js.map +0 -1
  734. package/dist/utils/path-helpers.d.ts +0 -8
  735. package/dist/utils/path-helpers.js +0 -35
  736. package/dist/utils/path-helpers.js.map +0 -1
  737. package/dist/utils/path-security.d.ts +0 -92
  738. package/dist/utils/path-security.js +0 -300
  739. package/dist/utils/path-security.js.map +0 -1
  740. package/dist/utils/path-utils.d.ts +0 -83
  741. package/dist/utils/path-utils.js +0 -122
  742. package/dist/utils/path-utils.js.map +0 -1
  743. package/dist/utils/path-validator.d.ts +0 -66
  744. package/dist/utils/path-validator.js +0 -141
  745. package/dist/utils/path-validator.js.map +0 -1
  746. package/dist/utils/performance.d.ts +0 -74
  747. package/dist/utils/performance.js +0 -133
  748. package/dist/utils/performance.js.map +0 -1
  749. package/dist/utils/process-pool.d.ts +0 -109
  750. package/dist/utils/process-pool.js +0 -332
  751. package/dist/utils/process-pool.js.map +0 -1
  752. package/dist/utils/progress-tracker.d.ts +0 -51
  753. package/dist/utils/progress-tracker.js +0 -152
  754. package/dist/utils/progress-tracker.js.map +0 -1
  755. package/dist/utils/project-analyzer.d.ts +0 -49
  756. package/dist/utils/project-analyzer.js +0 -396
  757. package/dist/utils/project-analyzer.js.map +0 -1
  758. package/dist/utils/prompt-builder.d.ts +0 -14
  759. package/dist/utils/prompt-builder.js +0 -100
  760. package/dist/utils/prompt-builder.js.map +0 -1
  761. package/dist/utils/provider-context.d.ts +0 -243
  762. package/dist/utils/provider-context.js +0 -421
  763. package/dist/utils/provider-context.js.map +0 -1
  764. package/dist/utils/provider-file-cache.d.ts +0 -91
  765. package/dist/utils/provider-file-cache.js +0 -165
  766. package/dist/utils/provider-file-cache.js.map +0 -1
  767. package/dist/utils/provider-settings.d.ts +0 -181
  768. package/dist/utils/provider-settings.js +0 -450
  769. package/dist/utils/provider-settings.js.map +0 -1
  770. package/dist/utils/rate-limiter.d.ts +0 -222
  771. package/dist/utils/rate-limiter.js +0 -338
  772. package/dist/utils/rate-limiter.js.map +0 -1
  773. package/dist/utils/retry-helper.d.ts +0 -81
  774. package/dist/utils/retry-helper.js +0 -244
  775. package/dist/utils/retry-helper.js.map +0 -1
  776. package/dist/utils/safety-rules.d.ts +0 -64
  777. package/dist/utils/safety-rules.js +0 -225
  778. package/dist/utils/safety-rules.js.map +0 -1
  779. package/dist/utils/settings-manager.d.ts +0 -256
  780. package/dist/utils/settings-manager.js +0 -967
  781. package/dist/utils/settings-manager.js.map +0 -1
  782. package/dist/utils/setup-validator.d.ts +0 -47
  783. package/dist/utils/setup-validator.js +0 -304
  784. package/dist/utils/setup-validator.js.map +0 -1
  785. package/dist/utils/string-utils.d.ts +0 -19
  786. package/dist/utils/string-utils.js +0 -28
  787. package/dist/utils/string-utils.js.map +0 -1
  788. package/dist/utils/template-manager.d.ts +0 -62
  789. package/dist/utils/template-manager.js +0 -366
  790. package/dist/utils/template-manager.js.map +0 -1
  791. package/dist/utils/text-utils.d.ts +0 -82
  792. package/dist/utils/text-utils.js +0 -203
  793. package/dist/utils/text-utils.js.map +0 -1
  794. package/dist/utils/token-counter.d.ts +0 -76
  795. package/dist/utils/token-counter.js +0 -231
  796. package/dist/utils/token-counter.js.map +0 -1
  797. package/dist/utils/usage-tracker.d.ts +0 -78
  798. package/dist/utils/usage-tracker.js +0 -126
  799. package/dist/utils/usage-tracker.js.map +0 -1
  800. package/dist/utils/version.d.ts +0 -14
  801. package/dist/utils/version.js +0 -70
  802. package/dist/utils/version.js.map +0 -1
@@ -1,1292 +0,0 @@
1
- import { Command } from 'commander';
2
- import { addMCPServer, removeMCPServer, loadMCPConfig, PREDEFINED_SERVERS, getTemplate, generateConfigFromTemplate } from '../mcp/config.js';
3
- import { getTemplateNames, getTemplatesByCategory } from '../mcp/templates.js';
4
- import { getMCPManager } from '../llm/tools.js';
5
- import { MCPServerIdSchema } from '@defai.digital/ax-schemas';
6
- import chalk from 'chalk';
7
- import * as prompts from '@clack/prompts';
8
- import { ConsoleMessenger } from '../utils/console-messenger.js';
9
- import { extractErrorMessage } from '../utils/error-handler.js';
10
- import { validateServerConfig, formatValidationResult } from '../mcp/validation.js';
11
- import { listAllResources, listServerResources, searchResources } from '../mcp/resources.js';
12
- import { searchRegistry, getRegistryServer, getPopularServers, generateConfigFromRegistry, formatRegistryServer } from '../mcp/registry.js';
13
- import { MCP_CONFIG } from '../constants.js';
14
- import { ZAI_SERVER_NAMES, ZAI_MCP_TEMPLATES, generateZAIServerConfig, getAllZAIServerNames, isZAIServer, detectZAIServices, getZAIApiKey, getRecommendedServers, formatZAIStatus, } from '../mcp/index.js';
15
- const VALID_TEMPLATE_CATEGORIES = ['design', 'deployment', 'testing', 'monitoring', 'backend', 'version-control'];
16
- function isValidTemplateCategory(category) {
17
- return typeof category === 'string' && VALID_TEMPLATE_CATEGORIES.includes(category);
18
- }
19
- function getCliName() {
20
- return 'ax-cli';
21
- }
22
- function filterValidHealth(health) {
23
- return health.filter((item) => Boolean(item));
24
- }
25
- export function createMCPCommand() {
26
- const mcpCommand = new Command('mcp');
27
- mcpCommand.description('Manage MCP (Model Context Protocol) servers');
28
- // Add server command
29
- mcpCommand
30
- .command('add <name>')
31
- .description('Add an MCP server')
32
- .option('--template', 'Use pre-configured template for this server')
33
- .option('--interactive', 'Prompt for required environment variables')
34
- .option('-t, --transport <type>', 'Transport type (stdio, http, sse, streamable_http)', 'stdio')
35
- .option('-c, --command <command>', 'Command to run the server (for stdio transport)')
36
- .option('-a, --args [args...]', 'Arguments for the server command (for stdio transport)', [])
37
- .option('-u, --url <url>', 'URL for HTTP/SSE transport')
38
- .option('-h, --headers [headers...]', 'HTTP headers (key=value format)', [])
39
- .option('-e, --env [env...]', 'Environment variables (key=value format)', [])
40
- .action(async (name, options) => {
41
- try {
42
- // BUG FIX: Parse command-line --env options first to supplement process.env
43
- // This handles the case where environment variables were set in a way
44
- // that the current process doesn't see (e.g., exported in a subshell)
45
- const cliEnvVars = {};
46
- for (const envVar of options.env || []) {
47
- const eqIndex = envVar.indexOf('=');
48
- if (eqIndex > 0) {
49
- const key = envVar.slice(0, eqIndex);
50
- const value = envVar.slice(eqIndex + 1);
51
- cliEnvVars[key] = value;
52
- }
53
- }
54
- // Check if using template
55
- if (options.template) {
56
- const template = getTemplate(name);
57
- if (!template) {
58
- console.error(chalk.red(`❌ Template "${name}" not found`));
59
- console.log();
60
- console.log(chalk.blue('Available templates:'));
61
- const templateNames = getTemplateNames();
62
- templateNames.forEach(t => {
63
- const tmpl = getTemplate(t);
64
- console.log(` ${chalk.bold(t)} - ${tmpl?.description}`);
65
- });
66
- process.exit(1);
67
- }
68
- // Display template information
69
- console.log(chalk.blue(`\n📦 Setting up ${chalk.bold(template.name)} MCP server`));
70
- console.log(chalk.gray(template.description));
71
- console.log();
72
- // Check required environment variables
73
- // BUG FIX: Check both process.env AND command-line --env options
74
- const envVars = {};
75
- const missingEnvVarsList = [];
76
- for (const envVar of template.requiredEnv) {
77
- // Priority: CLI --env flag > process.env
78
- const value = cliEnvVars[envVar.name] || process.env[envVar.name];
79
- if (!value) {
80
- missingEnvVarsList.push(envVar);
81
- }
82
- else {
83
- envVars[envVar.name] = value;
84
- }
85
- }
86
- if (missingEnvVarsList.length > 0) {
87
- // BUG FIX: If --interactive flag is set, prompt for missing env vars
88
- if (options.interactive) {
89
- console.log(chalk.yellow('⚠️ Missing required environment variables. Prompting for values...\n'));
90
- for (const envVar of missingEnvVarsList) {
91
- console.log(chalk.gray(` ${envVar.description}`));
92
- if (envVar.url) {
93
- console.log(chalk.gray(` Documentation: ${envVar.url}`));
94
- }
95
- const response = await prompts.text({
96
- message: `Enter ${envVar.name}:`,
97
- placeholder: 'Paste your token here',
98
- validate: (value) => {
99
- if (!value || value.trim().length === 0) {
100
- return `${envVar.name} is required`;
101
- }
102
- return undefined;
103
- }
104
- });
105
- // Handle user cancellation (Ctrl+C)
106
- if (prompts.isCancel(response)) {
107
- console.log(chalk.yellow('\n⚠️ Setup cancelled by user.\n'));
108
- process.exit(0);
109
- }
110
- envVars[envVar.name] = response;
111
- console.log();
112
- }
113
- }
114
- else {
115
- // Not interactive mode - show error message with options
116
- console.log(chalk.yellow('⚠️ Missing required environment variables:\n'));
117
- for (const envVar of missingEnvVarsList) {
118
- console.log(chalk.yellow(` • ${chalk.bold(envVar.name)}`));
119
- console.log(chalk.gray(` ${envVar.description}`));
120
- if (envVar.url) {
121
- console.log(chalk.gray(` Documentation: ${envVar.url}`));
122
- }
123
- console.log();
124
- }
125
- console.log(chalk.red('❌ Setup cannot continue without required environment variables.\n'));
126
- // BUG FIX: Provide multiple options for setting environment variables
127
- console.log(chalk.blue('Options to provide the missing variables:\n'));
128
- // Option 1: Interactive mode (easiest)
129
- console.log(chalk.white(' Option 1: Use interactive mode (easiest):'));
130
- console.log(chalk.cyan(` ax-cli mcp add ${name} --template --interactive\n`));
131
- // Option 2: Pass directly via --env flag
132
- const envFlags = missingEnvVarsList.map(e => `--env ${e.name}=YOUR_VALUE`).join(' ');
133
- console.log(chalk.white(' Option 2: Pass directly with --env flag:'));
134
- console.log(chalk.cyan(` ax-cli mcp add ${name} --template ${envFlags}\n`));
135
- // Option 3: Export in current shell
136
- console.log(chalk.white(' Option 3: Export in current shell:'));
137
- for (const envVar of missingEnvVarsList) {
138
- console.log(chalk.cyan(` export ${envVar.name}="your_value"`));
139
- }
140
- console.log(chalk.cyan(` ax-cli mcp add ${name} --template\n`));
141
- // Option 4: Add to shell profile
142
- console.log(chalk.white(' Option 4: Add to shell profile (~/.bashrc or ~/.zshrc):'));
143
- for (const envVar of missingEnvVarsList) {
144
- console.log(chalk.cyan(` export ${envVar.name}="your_value"`));
145
- }
146
- console.log(chalk.gray(' Then restart your terminal or run: source ~/.zshrc\n'));
147
- console.log(chalk.blue('Full setup instructions:'));
148
- console.log(template.setupInstructions);
149
- process.exit(1);
150
- }
151
- }
152
- // Generate config from template
153
- const config = generateConfigFromTemplate(name, envVars);
154
- // Add to configuration
155
- addMCPServer(config);
156
- console.log(chalk.green(`✅ Configuration saved`));
157
- // Try to connect immediately
158
- console.log(chalk.blue('🔌 Connecting to server...'));
159
- const manager = getMCPManager();
160
- await manager.addServer(config);
161
- console.log(chalk.green('✅ Connected successfully'));
162
- // Show available tools
163
- const tools = manager.getTools().filter(t => t.serverName === name);
164
- console.log(chalk.blue(`\n🔧 Available tools: ${chalk.bold(tools.length.toString())}`));
165
- if (tools.length > 0 && tools.length <= 10) {
166
- tools.forEach(tool => {
167
- const displayName = tool.name.replace(`mcp__${name}__`, '');
168
- console.log(` • ${chalk.bold(displayName)}: ${tool.description || 'No description'}`);
169
- });
170
- }
171
- // Show usage examples
172
- if (template.usageExamples.length > 0) {
173
- console.log(chalk.blue('\n💡 Usage examples:'));
174
- template.usageExamples.slice(0, 3).forEach(example => {
175
- console.log(chalk.gray(` • ${example}`));
176
- });
177
- }
178
- console.log(chalk.green(`\n✨ ${name} MCP server is ready to use!`));
179
- return;
180
- }
181
- // Check if it's a predefined server (legacy support)
182
- if (PREDEFINED_SERVERS[name]) {
183
- const template = PREDEFINED_SERVERS[name];
184
- console.log(chalk.yellow(`💡 Tip: Use ${chalk.bold('--template')} flag for guided setup`));
185
- const config = template.config;
186
- addMCPServer(config);
187
- ConsoleMessenger.plain('mcp_commands.server_predefined', { name });
188
- // Try to connect immediately
189
- const manager = getMCPManager();
190
- await manager.addServer(config);
191
- ConsoleMessenger.plain('mcp_commands.server_connected', { name });
192
- const tools = manager.getTools().filter(t => t.serverName === name);
193
- ConsoleMessenger.plain('mcp_commands.tools_available', { count: tools.length });
194
- return;
195
- }
196
- // Custom server
197
- const transportType = options.transport.toLowerCase();
198
- if (transportType === 'stdio') {
199
- if (!options.command) {
200
- ConsoleMessenger.error('mcp_commands.error_command_required');
201
- process.exit(1);
202
- }
203
- }
204
- else if (transportType === 'http' || transportType === 'sse' || transportType === 'streamable_http') {
205
- if (!options.url) {
206
- ConsoleMessenger.error('mcp_commands.error_url_required', { transport: transportType });
207
- process.exit(1);
208
- }
209
- }
210
- else {
211
- ConsoleMessenger.error('mcp_commands.error_invalid_transport');
212
- process.exit(1);
213
- }
214
- // Parse environment variables (handle values with = in them)
215
- const env = {};
216
- for (const envVar of options.env || []) {
217
- const eqIndex = envVar.indexOf('=');
218
- if (eqIndex > 0) {
219
- const key = envVar.slice(0, eqIndex);
220
- const value = envVar.slice(eqIndex + 1);
221
- env[key] = value;
222
- }
223
- else {
224
- ConsoleMessenger.warning('mcp_commands.warning_invalid_env', { envVar });
225
- }
226
- }
227
- // Parse headers (handle values with = in them)
228
- const headers = {};
229
- for (const header of options.headers || []) {
230
- const eqIndex = header.indexOf('=');
231
- if (eqIndex > 0) {
232
- const key = header.slice(0, eqIndex);
233
- const value = header.slice(eqIndex + 1);
234
- headers[key] = value;
235
- }
236
- else {
237
- ConsoleMessenger.warning('mcp_commands.warning_invalid_header', { header });
238
- }
239
- }
240
- const config = {
241
- name: MCPServerIdSchema.parse(name),
242
- transport: {
243
- type: transportType,
244
- command: options.command,
245
- args: options.args || [],
246
- url: options.url,
247
- env,
248
- headers: Object.keys(headers).length > 0 ? headers : undefined
249
- }
250
- };
251
- addMCPServer(config);
252
- ConsoleMessenger.plain('mcp_commands.server_added', { name });
253
- // Try to connect immediately
254
- const manager = getMCPManager();
255
- await manager.addServer(config);
256
- ConsoleMessenger.plain('mcp_commands.server_connected', { name });
257
- const tools = manager.getTools().filter(t => t.serverName === name);
258
- ConsoleMessenger.plain('mcp_commands.tools_available', { count: tools.length });
259
- }
260
- catch (error) {
261
- ConsoleMessenger.error('mcp_commands.error_adding_server', { error: extractErrorMessage(error) });
262
- process.exit(1);
263
- }
264
- });
265
- // Add server from JSON command
266
- mcpCommand
267
- .command('add-json <name> <json>')
268
- .description('Add an MCP server from JSON configuration')
269
- .action(async (name, jsonConfig) => {
270
- try {
271
- let config;
272
- try {
273
- config = JSON.parse(jsonConfig);
274
- }
275
- catch {
276
- ConsoleMessenger.error('mcp_commands.error_invalid_json');
277
- process.exit(1);
278
- }
279
- const serverConfig = {
280
- name: MCPServerIdSchema.parse(name),
281
- transport: {
282
- type: 'stdio', // default
283
- command: config.command,
284
- args: config.args || [],
285
- env: config.env || {},
286
- url: config.url,
287
- headers: config.headers
288
- }
289
- };
290
- // Override transport type if specified
291
- if (config.transport) {
292
- if (typeof config.transport === 'string') {
293
- serverConfig.transport.type = config.transport;
294
- }
295
- else if (typeof config.transport === 'object') {
296
- serverConfig.transport = { ...serverConfig.transport, ...config.transport };
297
- }
298
- }
299
- addMCPServer(serverConfig);
300
- ConsoleMessenger.plain('mcp_commands.server_added', { name });
301
- // Try to connect immediately
302
- const manager = getMCPManager();
303
- await manager.addServer(serverConfig);
304
- ConsoleMessenger.plain('mcp_commands.server_connected', { name });
305
- const tools = manager.getTools().filter(t => t.serverName === name);
306
- ConsoleMessenger.plain('mcp_commands.tools_available', { count: tools.length });
307
- }
308
- catch (error) {
309
- ConsoleMessenger.error('mcp_commands.error_adding_server', { error: extractErrorMessage(error) });
310
- process.exit(1);
311
- }
312
- });
313
- // Remove server command
314
- mcpCommand
315
- .command('remove <name>')
316
- .description('Remove an MCP server')
317
- .action(async (name) => {
318
- const validatedName = MCPServerIdSchema.parse(name);
319
- try {
320
- // BUG FIX: Check if server exists in config before removing
321
- const config = loadMCPConfig();
322
- const serverExists = config.servers.some(s => s.name === validatedName);
323
- if (!serverExists) {
324
- ConsoleMessenger.error('mcp_commands.error_removing_server', { error: `Server "${validatedName}" not found in configuration` });
325
- process.exit(1);
326
- }
327
- // Remove from config file first (this always works)
328
- removeMCPServer(validatedName);
329
- // Try to remove from runtime manager (may fail if server not connected, which is OK)
330
- try {
331
- const manager = getMCPManager();
332
- await manager.removeServer(validatedName);
333
- }
334
- catch {
335
- // Server wasn't connected at runtime, that's fine - config was already removed
336
- }
337
- ConsoleMessenger.plain('mcp_commands.server_removed', { name: validatedName });
338
- }
339
- catch (error) {
340
- ConsoleMessenger.error('mcp_commands.error_removing_server', { error: extractErrorMessage(error) });
341
- process.exit(1);
342
- }
343
- });
344
- // List servers command
345
- mcpCommand
346
- .command('list')
347
- .description('List configured MCP servers')
348
- .option('--connect', 'Connect to servers before listing to show accurate status')
349
- .action(async (options) => {
350
- const config = loadMCPConfig();
351
- const manager = getMCPManager();
352
- if (config.servers.length === 0) {
353
- ConsoleMessenger.warning('mcp_commands.no_servers');
354
- return;
355
- }
356
- // If --connect flag is provided, try to connect to all servers first
357
- if (options.connect) {
358
- console.log(chalk.blue('Connecting to servers...'));
359
- for (const server of config.servers) {
360
- if (!manager.getServers().includes(server.name)) {
361
- try {
362
- await manager.addServer(server);
363
- }
364
- catch {
365
- // Connection failure will be shown in status
366
- }
367
- }
368
- }
369
- console.log();
370
- }
371
- ConsoleMessenger.bold('mcp_commands.list_header');
372
- console.log();
373
- for (const server of config.servers) {
374
- const isConnected = manager.getServers().includes(server.name);
375
- // BUG FIX: Show "Not Connected" instead of "Disconnected" when connection wasn't attempted
376
- // "Disconnected" implies a connection was lost, which is misleading
377
- const statusMsg = isConnected
378
- ? chalk.green('✓ Connected')
379
- : options.connect
380
- ? chalk.red('✗ Failed to connect')
381
- : chalk.yellow('○ Not connected (use --connect to test)');
382
- console.log(`${chalk.bold(server.name)}: ${statusMsg}`);
383
- // Display transport information
384
- if (server.transport) {
385
- console.log(` Transport: ${server.transport.type}`);
386
- if (server.transport.type === 'stdio') {
387
- console.log(` Command: ${server.transport.command} ${(server.transport.args || []).join(' ')}`);
388
- }
389
- else if (server.transport.type === 'http' || server.transport.type === 'sse') {
390
- console.log(` URL: ${server.transport.url}`);
391
- }
392
- }
393
- else if (server.command) {
394
- // Legacy format
395
- console.log(` Command: ${server.command} ${(server.args || []).join(' ')}`);
396
- }
397
- if (isConnected) {
398
- const transportType = manager.getTransportType(server.name);
399
- if (transportType) {
400
- console.log(` Active Transport: ${transportType}`);
401
- }
402
- const tools = manager.getTools().filter(t => t.serverName === server.name);
403
- console.log(` Tools: ${tools.length}`);
404
- if (tools.length > 0) {
405
- tools.forEach(tool => {
406
- const displayName = tool.name.replace(`mcp__${server.name}__`, '');
407
- console.log(` - ${displayName}: ${tool.description || 'No description'}`);
408
- });
409
- }
410
- }
411
- console.log();
412
- }
413
- if (!options.connect) {
414
- console.log(chalk.gray(`💡 Use --connect to test server connections: ${getCliName()} mcp list --connect`));
415
- console.log(chalk.gray(` Or test a specific server: ${getCliName()} mcp test <server-name>`));
416
- console.log();
417
- }
418
- });
419
- // Test server command
420
- mcpCommand
421
- .command('test <name>')
422
- .description('Test connection to an MCP server')
423
- .action(async (name) => {
424
- try {
425
- const config = loadMCPConfig();
426
- const serverConfig = config.servers.find(s => s.name === name);
427
- if (!serverConfig) {
428
- console.error(chalk.red(`Server ${name} not found`));
429
- process.exit(1);
430
- }
431
- console.log(chalk.blue(`Testing connection to ${name}...`));
432
- const manager = getMCPManager();
433
- await manager.addServer(serverConfig);
434
- const tools = manager.getTools().filter(t => t.serverName === name);
435
- console.log(chalk.green(`✓ Successfully connected to ${name}`));
436
- console.log(chalk.blue(` Available tools: ${tools.length}`));
437
- if (tools.length > 0) {
438
- console.log(' Tools:');
439
- tools.forEach(tool => {
440
- const displayName = tool.name.replace(`mcp__${name}__`, '');
441
- console.log(` - ${displayName}: ${tool.description || 'No description'}`);
442
- });
443
- }
444
- }
445
- catch (error) {
446
- console.error(chalk.red(`✗ Failed to connect to ${name}: ${extractErrorMessage(error)}`));
447
- process.exit(1);
448
- }
449
- });
450
- // Templates command - List available templates
451
- mcpCommand
452
- .command('templates')
453
- .description('List available MCP server templates')
454
- .option('--category <category>', 'Filter by category (design, deployment, testing, monitoring, backend, version-control)')
455
- .action((options) => {
456
- console.log(chalk.blue.bold('\n📦 Available MCP Server Templates\n'));
457
- let templates = Object.values(PREDEFINED_SERVERS);
458
- if (options.category) {
459
- if (!isValidTemplateCategory(options.category)) {
460
- console.log(chalk.red(`Invalid category "${options.category}".`));
461
- console.log(chalk.gray(`Available categories: ${VALID_TEMPLATE_CATEGORIES.join(', ')}`));
462
- return;
463
- }
464
- templates = getTemplatesByCategory(options.category);
465
- if (templates.length === 0) {
466
- console.log(chalk.yellow(`No templates found for category "${options.category}"`));
467
- console.log();
468
- console.log(chalk.blue('Available categories:'));
469
- console.log(' • design, deployment, testing, monitoring, backend, version-control');
470
- return;
471
- }
472
- console.log(chalk.gray(`Showing ${options.category} templates:\n`));
473
- }
474
- // Group by category
475
- const categories = templates.reduce((acc, template) => {
476
- if (!acc[template.category]) {
477
- acc[template.category] = [];
478
- }
479
- acc[template.category].push(template);
480
- return acc;
481
- }, {});
482
- const categoryIcons = {
483
- design: '🎨',
484
- 'version-control': '📦',
485
- deployment: '🚀',
486
- testing: '🧪',
487
- monitoring: '📊',
488
- backend: '🗄️'
489
- };
490
- for (const [category, categoryTemplates] of Object.entries(categories)) {
491
- const icon = categoryIcons[category] || '📌';
492
- console.log(chalk.bold(`${icon} ${category.toUpperCase()}`));
493
- console.log();
494
- categoryTemplates.forEach(template => {
495
- const officialBadge = template.officialServer ? chalk.green('official') : chalk.gray('community');
496
- console.log(` ${chalk.bold(template.name)} [${officialBadge}]`);
497
- console.log(chalk.gray(` ${template.description}`));
498
- if (template.requiredEnv.length > 0) {
499
- const envVarNames = template.requiredEnv.map(e => e.name).join(', ');
500
- console.log(chalk.gray(` Requires: ${envVarNames}`));
501
- }
502
- console.log(chalk.blue(` Usage: ax-cli mcp add ${template.name} --template`));
503
- console.log();
504
- });
505
- }
506
- console.log(chalk.gray('💡 Tip: Use --category to filter templates by type'));
507
- console.log(chalk.gray(`Example: ax-cli mcp templates --category design`));
508
- console.log();
509
- });
510
- // Tools command - List tools from a specific server
511
- mcpCommand
512
- .command('tools <server-name>')
513
- .description('List available tools from an MCP server')
514
- .option('--json', 'Output in JSON format')
515
- .option('--verbose', 'Show detailed tool schemas')
516
- .action(async (serverName, options) => {
517
- try {
518
- const manager = getMCPManager();
519
- // Ensure server is connected
520
- const isConnected = manager.getServers().includes(serverName);
521
- if (!isConnected) {
522
- // Try to connect
523
- const config = loadMCPConfig();
524
- const serverConfig = config.servers.find(s => s.name === serverName);
525
- if (!serverConfig) {
526
- console.error(chalk.red(`❌ Server "${serverName}" not found.`));
527
- console.log(chalk.gray('\nAdd it first with:'));
528
- console.log(chalk.blue(` ax-cli mcp add ${serverName} --template`));
529
- process.exit(1);
530
- }
531
- console.log(chalk.blue(`Connecting to ${serverName}...`));
532
- await manager.addServer(serverConfig);
533
- console.log(chalk.green('✓ Connected\n'));
534
- }
535
- const tools = manager.getTools().filter(t => t.serverName === serverName);
536
- if (tools.length === 0) {
537
- console.log(chalk.yellow('⚠️ No tools found for this server.'));
538
- console.log(chalk.gray('The server may be disconnected or have no tools available.'));
539
- return;
540
- }
541
- if (options.json) {
542
- console.log(JSON.stringify(tools, null, 2));
543
- return;
544
- }
545
- // Pretty-print with tree structure
546
- console.log(chalk.blue.bold(`\n🔧 ${serverName} Tools (${tools.length} available)\n`));
547
- tools.forEach((tool, i) => {
548
- const isLast = i === tools.length - 1;
549
- const prefix = isLast ? '└─' : '├─';
550
- const displayName = tool.name.replace(`mcp__${serverName}__`, '');
551
- console.log(chalk.bold(`${prefix} ${displayName}`));
552
- console.log(` ${chalk.gray(tool.description || 'No description available')}`);
553
- if (options.verbose && tool.inputSchema) {
554
- console.log(chalk.gray(` Schema:`));
555
- const schemaStr = JSON.stringify(tool.inputSchema, null, 2)
556
- .split('\n')
557
- .map(line => ` ${line}`)
558
- .join('\n');
559
- console.log(chalk.gray(schemaStr));
560
- }
561
- else if (tool.inputSchema?.properties) {
562
- const params = Object.keys(tool.inputSchema.properties);
563
- if (params.length > 0) {
564
- const required = tool.inputSchema.required || [];
565
- const paramList = params.map(p => required.includes(p) ? `${p}*` : p).join(', ');
566
- console.log(chalk.gray(` Parameters: ${paramList}`));
567
- }
568
- }
569
- if (!isLast)
570
- console.log(' │');
571
- });
572
- console.log();
573
- console.log(chalk.gray('💡 Tip: Use --verbose to see full parameter schemas'));
574
- console.log(chalk.gray(' Parameters marked with * are required'));
575
- console.log();
576
- }
577
- catch (error) {
578
- console.error(chalk.red(`❌ Error: ${extractErrorMessage(error)}`));
579
- process.exit(1);
580
- }
581
- });
582
- // Search command - Search tools across all servers
583
- mcpCommand
584
- .command('search <query>')
585
- .description('Search for tools across all MCP servers')
586
- .option('--json', 'Output in JSON format')
587
- .action((query, options) => {
588
- const manager = getMCPManager();
589
- const allTools = manager.getTools();
590
- const lowerQuery = query.toLowerCase();
591
- const matchingTools = allTools.filter(tool => tool.name.toLowerCase().includes(lowerQuery) ||
592
- tool.description?.toLowerCase().includes(lowerQuery));
593
- if (matchingTools.length === 0) {
594
- console.log(chalk.yellow(`\n⚠️ No tools found matching "${query}"\n`));
595
- console.log(chalk.gray('💡 Try searching for:'));
596
- console.log(chalk.gray(' • deploy, git, database, test, file'));
597
- console.log();
598
- return;
599
- }
600
- if (options.json) {
601
- console.log(JSON.stringify(matchingTools, null, 2));
602
- return;
603
- }
604
- console.log(chalk.blue.bold(`\n🔍 Found ${matchingTools.length} tools matching "${query}"\n`));
605
- // Group by server
606
- const byServer = matchingTools.reduce((acc, tool) => {
607
- if (!acc[tool.serverName]) {
608
- acc[tool.serverName] = [];
609
- }
610
- acc[tool.serverName].push(tool);
611
- return acc;
612
- }, {});
613
- for (const [serverName, serverTools] of Object.entries(byServer)) {
614
- console.log(chalk.bold(`${serverName} (${serverTools.length} tools)`));
615
- serverTools.forEach(tool => {
616
- const displayName = tool.name.replace(`mcp__${serverName}__`, '');
617
- console.log(` • ${chalk.bold(displayName)}`);
618
- if (tool.description) {
619
- console.log(chalk.gray(` ${tool.description}`));
620
- }
621
- });
622
- console.log();
623
- }
624
- console.log(chalk.gray('💡 Tip: Use "ax-cli mcp tools <server-name>" to see all tools from a server'));
625
- console.log();
626
- });
627
- // Browse command - Interactive template browser (alias for templates)
628
- mcpCommand
629
- .command('browse')
630
- .description('Browse available MCP server templates')
631
- .action(() => {
632
- console.log(chalk.blue.bold('\n🌟 MCP Server Template Browser\n'));
633
- console.log(chalk.gray('Popular templates for front-end development:\n'));
634
- const popular = ['figma', 'github', 'vercel', 'puppeteer', 'storybook', 'sentry'];
635
- popular.forEach(name => {
636
- const template = getTemplate(name);
637
- if (template) {
638
- const icon = template.category === 'design' ? '🎨' :
639
- template.category === 'version-control' ? '📦' :
640
- template.category === 'deployment' ? '🚀' :
641
- template.category === 'testing' ? '🧪' :
642
- template.category === 'monitoring' ? '📊' : '🗄️';
643
- console.log(`${icon} ${chalk.bold(template.name)}`);
644
- console.log(chalk.gray(` ${template.description}`));
645
- console.log(chalk.blue(` Quick start: ax-cli mcp add ${name} --template`));
646
- console.log();
647
- }
648
- });
649
- console.log(chalk.gray('📚 View all templates:'));
650
- console.log(chalk.blue(' ax-cli mcp templates'));
651
- console.log();
652
- console.log(chalk.gray('🔍 Search templates:'));
653
- console.log(chalk.blue(' ax-cli mcp templates --category design'));
654
- console.log();
655
- });
656
- // Health command - Check MCP server health
657
- mcpCommand
658
- .command('health [server-name]')
659
- .description('Check health status of MCP servers')
660
- .option('--json', 'Output in JSON format')
661
- .option('--watch', 'Continuously monitor health (updates every 60s)')
662
- .option('--no-connect', 'Skip connecting to servers (show config-only status)')
663
- .action(async (serverName, options) => {
664
- try {
665
- const { MCPHealthMonitor } = await import('../mcp/health.js');
666
- const manager = getMCPManager();
667
- const config = loadMCPConfig();
668
- // BUG FIX: Connect to servers before checking health
669
- // The health command should actually test connectivity, not just show config state
670
- if (options.connect !== false) {
671
- const serversToConnect = serverName
672
- ? config.servers.filter(s => s.name === serverName)
673
- : config.servers;
674
- for (const server of serversToConnect) {
675
- if (!manager.getServers().includes(server.name)) {
676
- try {
677
- await manager.addServer(server);
678
- }
679
- catch {
680
- // Connection failure will be reported in health status
681
- }
682
- }
683
- }
684
- }
685
- const healthMonitor = new MCPHealthMonitor(manager);
686
- // JSON mode - plain output
687
- if (options.json) {
688
- const health = serverName
689
- ? filterValidHealth([await healthMonitor.getServerStatus(serverName)])
690
- : await healthMonitor.getHealthReport();
691
- console.log(JSON.stringify(health, null, 2));
692
- return;
693
- }
694
- if (options.watch) {
695
- // Continuous monitoring mode
696
- prompts.intro(chalk.cyan('MCP Server Health Monitoring'));
697
- prompts.log.info('Press Ctrl+C to stop');
698
- // Start monitoring (uses configured health check interval)
699
- healthMonitor.start(MCP_CONFIG.HEALTH_CHECK_INTERVAL);
700
- // Display initial report
701
- const displayHealth = async () => {
702
- console.clear();
703
- prompts.intro(chalk.cyan('MCP Server Health Report'));
704
- prompts.log.message(`Last updated: ${new Date().toLocaleTimeString()}`);
705
- const health = serverName
706
- ? filterValidHealth([await healthMonitor.getServerStatus(serverName)])
707
- : await healthMonitor.getHealthReport();
708
- if (health.length === 0) {
709
- prompts.log.warn('No servers connected');
710
- return;
711
- }
712
- for (const server of health) {
713
- const statusIcon = server.connected ? '✓' : '✗';
714
- const statusText = server.connected ? 'Connected' : 'Disconnected';
715
- // Build server info
716
- const serverInfo = [];
717
- serverInfo.push(`Transport: MCP`);
718
- if (server.uptime) {
719
- serverInfo.push(`Uptime: ${MCPHealthMonitor.formatUptime(server.uptime)}`);
720
- }
721
- serverInfo.push(`Tools: ${server.toolCount} available`);
722
- if (server.avgLatency) {
723
- serverInfo.push(`Latency: avg ${MCPHealthMonitor.formatLatency(server.avgLatency)}, p95 ${MCPHealthMonitor.formatLatency(server.p95Latency || 0)}`);
724
- }
725
- const successRateColor = server.successRate >= 95 ? chalk.green :
726
- server.successRate >= 80 ? chalk.yellow : chalk.red;
727
- serverInfo.push(`Success Rate: ${successRateColor(`${server.successRate.toFixed(1)}%`)} (${server.successCount}/${server.successCount + server.failureCount} calls)`);
728
- if (server.lastError) {
729
- serverInfo.push(chalk.red(`Last Error: ${server.lastError}`));
730
- if (server.lastErrorAt) {
731
- const timeSinceError = Date.now() - server.lastErrorAt;
732
- serverInfo.push(` ${MCPHealthMonitor.formatUptime(timeSinceError)} ago`);
733
- }
734
- }
735
- const titleColor = server.connected ? chalk.green : chalk.red;
736
- prompts.note(serverInfo.join('\n'), titleColor(`${statusIcon} ${server.serverName} (${statusText})`));
737
- }
738
- prompts.log.message(chalk.dim(`Next update in ${MCP_CONFIG.HEALTH_CHECK_INTERVAL / 1000} seconds...`));
739
- };
740
- // Display immediately
741
- await displayHealth();
742
- // Set up interval (uses configured health check interval)
743
- // Wrap async function to handle promise rejection
744
- // Use .unref() to prevent timer from blocking process exit
745
- const watchInterval = setInterval(() => {
746
- displayHealth().catch((err) => {
747
- console.error('Health check failed:', err);
748
- });
749
- }, MCP_CONFIG.HEALTH_CHECK_INTERVAL);
750
- watchInterval.unref();
751
- // Handle Ctrl+C - use 'once' to prevent multiple handlers accumulating
752
- process.once('SIGINT', () => {
753
- clearInterval(watchInterval);
754
- healthMonitor.stop();
755
- prompts.outro(chalk.yellow('Stopped health monitoring'));
756
- process.exit(0);
757
- });
758
- }
759
- else {
760
- // One-time health check with @clack/prompts
761
- prompts.intro(chalk.cyan('MCP Server Health'));
762
- const spinner = prompts.spinner();
763
- spinner.start('Checking server health...');
764
- const health = serverName
765
- ? filterValidHealth([await healthMonitor.getServerStatus(serverName)])
766
- : await healthMonitor.getHealthReport();
767
- spinner.stop('Health check complete');
768
- if (health.length === 0) {
769
- if (serverName) {
770
- // Check if server exists in config but couldn't connect
771
- const serverInConfig = config.servers.find(s => s.name === serverName);
772
- if (serverInConfig) {
773
- prompts.log.error(`Server "${serverName}" is configured but failed to connect`);
774
- prompts.log.info(`Test connection with: ${getCliName()} mcp test ${serverName}`);
775
- }
776
- else {
777
- prompts.log.warn(`Server "${serverName}" not found in configuration`);
778
- prompts.log.info(`Add it with: ${getCliName()} mcp add ${serverName} --template`);
779
- }
780
- }
781
- else {
782
- // Check if there are configured servers that couldn't connect
783
- if (config.servers.length > 0) {
784
- prompts.log.error(`${config.servers.length} server(s) configured but none connected`);
785
- prompts.log.info(`Configured servers: ${config.servers.map(s => s.name).join(', ')}`);
786
- prompts.log.info(`Test connections with: ${getCliName()} mcp test <server-name>`);
787
- }
788
- else {
789
- prompts.log.warn('No MCP servers configured');
790
- prompts.log.info(`To add a server: ${getCliName()} mcp add figma --template`);
791
- }
792
- }
793
- prompts.outro('');
794
- return;
795
- }
796
- // Display each server's health
797
- for (const server of health) {
798
- const statusIcon = server.connected ? '✓' : '✗';
799
- const statusText = server.connected ? 'Connected' : 'Disconnected';
800
- // Build server info
801
- const serverInfo = [];
802
- serverInfo.push(`Transport: MCP`);
803
- if (server.uptime) {
804
- serverInfo.push(`Uptime: ${MCPHealthMonitor.formatUptime(server.uptime)}`);
805
- }
806
- serverInfo.push(`Tools: ${server.toolCount} available`);
807
- if (server.avgLatency) {
808
- serverInfo.push(`Latency: avg ${MCPHealthMonitor.formatLatency(server.avgLatency)}, p95 ${MCPHealthMonitor.formatLatency(server.p95Latency || 0)}`);
809
- }
810
- const successRateColor = server.successRate >= 95 ? chalk.green :
811
- server.successRate >= 80 ? chalk.yellow : chalk.red;
812
- serverInfo.push(`Success Rate: ${successRateColor(`${server.successRate.toFixed(1)}%`)} (${server.successCount}/${server.successCount + server.failureCount} calls)`);
813
- if (server.lastError) {
814
- serverInfo.push(chalk.red(`Last Error: ${server.lastError}`));
815
- if (server.lastErrorAt) {
816
- const timeSinceError = Date.now() - server.lastErrorAt;
817
- serverInfo.push(` ${MCPHealthMonitor.formatUptime(timeSinceError)} ago`);
818
- }
819
- }
820
- if (server.lastSuccess) {
821
- const timeSinceSuccess = Date.now() - server.lastSuccess;
822
- serverInfo.push(`Last Successful Call: ${MCPHealthMonitor.formatUptime(timeSinceSuccess)} ago`);
823
- }
824
- const titleColor = server.connected ? chalk.green : chalk.red;
825
- prompts.note(serverInfo.join('\n'), titleColor(`${statusIcon} ${server.serverName} (${statusText})`));
826
- }
827
- // Summary
828
- const connectedCount = health.filter(s => s.connected).length;
829
- const totalCount = health.length;
830
- if (connectedCount === totalCount) {
831
- prompts.outro(chalk.green(`All ${totalCount} server(s) healthy. Use --watch to monitor.`));
832
- }
833
- else {
834
- prompts.outro(chalk.yellow(`${connectedCount}/${totalCount} server(s) connected. Use --watch to monitor.`));
835
- }
836
- }
837
- }
838
- catch (error) {
839
- prompts.log.error(`Error: ${extractErrorMessage(error)}`);
840
- process.exit(1);
841
- }
842
- });
843
- // Validate server configuration (Phase 4)
844
- mcpCommand
845
- .command('validate <name>')
846
- .description('Validate MCP server configuration with pre-flight checks')
847
- .action(async (name) => {
848
- try {
849
- // Load configuration
850
- const config = loadMCPConfig();
851
- const serverConfig = config.servers.find(s => s.name === name);
852
- if (!serverConfig) {
853
- console.error(chalk.red(`\n❌ Server "${name}" not found in configuration\n`));
854
- console.log(chalk.gray('Available servers:'));
855
- const availableServers = config.servers.map(s => s.name);
856
- if (availableServers.length === 0) {
857
- console.log(chalk.gray(' (none configured)'));
858
- }
859
- else {
860
- availableServers.forEach(s => console.log(chalk.gray(` • ${s}`)));
861
- }
862
- console.log();
863
- process.exit(1);
864
- }
865
- console.log(chalk.blue.bold(`\n🔍 Validating "${name}" MCP server configuration...\n`));
866
- // Run validation
867
- const result = await validateServerConfig(serverConfig);
868
- // Display results
869
- console.log(formatValidationResult(result));
870
- console.log();
871
- if (!result.valid) {
872
- console.log(chalk.yellow('💡 Fix the errors above and try again'));
873
- console.log();
874
- process.exit(1);
875
- }
876
- else if (result.warnings.length > 0) {
877
- console.log(chalk.blue('💡 Configuration is valid but has warnings. Review them before connecting.'));
878
- console.log();
879
- }
880
- else {
881
- console.log(chalk.green('🚀 Ready to connect! Use: ax-cli mcp add ' + name + ' --template'));
882
- console.log();
883
- }
884
- }
885
- catch (error) {
886
- console.error(chalk.red(`\n❌ Error: ${extractErrorMessage(error)}\n`));
887
- process.exit(1);
888
- }
889
- });
890
- // List MCP resources (Phase 4)
891
- mcpCommand
892
- .command('resources [server-name]')
893
- .description('List resources exposed by MCP servers')
894
- .option('--search <query>', 'Search resources by name or URI')
895
- .option('--json', 'Output in JSON format')
896
- .action(async (serverName, options) => {
897
- try {
898
- const manager = getMCPManager();
899
- // Get resources
900
- const resources = serverName
901
- ? await listServerResources(manager, serverName)
902
- : await listAllResources(manager);
903
- // Filter by search query if provided
904
- const filteredResources = options.search
905
- ? searchResources(resources, options.search)
906
- : resources;
907
- if (options.json) {
908
- console.log(JSON.stringify(filteredResources, null, 2));
909
- return;
910
- }
911
- // Display resources
912
- if (filteredResources.length === 0) {
913
- if (serverName) {
914
- console.log(chalk.yellow(`\n⚠️ No resources found for server "${serverName}"\n`));
915
- }
916
- else {
917
- console.log(chalk.yellow('\n⚠️ No resources found from any connected server\n'));
918
- }
919
- console.log(chalk.gray('Note: Not all MCP servers expose resources.'));
920
- console.log();
921
- return;
922
- }
923
- console.log(chalk.blue.bold('\n📦 MCP Resources\n'));
924
- // Group by server
925
- const byServer = new Map();
926
- for (const resource of filteredResources) {
927
- let serverResources = byServer.get(resource.serverName);
928
- if (!serverResources) {
929
- serverResources = [];
930
- byServer.set(resource.serverName, serverResources);
931
- }
932
- serverResources.push(resource);
933
- }
934
- for (const [server, serverResources] of byServer.entries()) {
935
- console.log(chalk.bold(`${server} (${serverResources.length} resources)`));
936
- for (const resource of serverResources) {
937
- console.log(chalk.green(` ${resource.reference}`));
938
- if (resource.description) {
939
- console.log(chalk.gray(` ${resource.description}`));
940
- }
941
- if (resource.mimeType) {
942
- console.log(chalk.gray(` Type: ${resource.mimeType}`));
943
- }
944
- }
945
- console.log();
946
- }
947
- console.log(chalk.gray('💡 Use resources in chat with: "Query the @mcp:server/uri"'));
948
- console.log();
949
- }
950
- catch (error) {
951
- console.error(chalk.red(`\n❌ Error: ${extractErrorMessage(error)}\n`));
952
- process.exit(1);
953
- }
954
- });
955
- // Browse MCP Server Registry (Phase 5)
956
- mcpCommand
957
- .command('registry')
958
- .description('Browse MCP server registry')
959
- .option('--search <query>', 'Search for servers')
960
- .option('--category <category>', 'Filter by category')
961
- .option('--transport <type>', 'Filter by transport type (stdio, http, sse)')
962
- .option('--json', 'Output in JSON format')
963
- .action(async (options) => {
964
- try {
965
- console.log(chalk.blue.bold('\n📦 MCP Server Registry\n'));
966
- const searchOptions = {
967
- query: options.search,
968
- category: options.category,
969
- transport: options.transport,
970
- sortBy: 'stars',
971
- limit: 20
972
- };
973
- const servers = options.search || options.category || options.transport
974
- ? await searchRegistry(searchOptions)
975
- : await getPopularServers();
976
- if (options.json) {
977
- console.log(JSON.stringify(servers, null, 2));
978
- return;
979
- }
980
- if (servers.length === 0) {
981
- console.log(chalk.yellow('⚠️ No servers found matching your criteria\n'));
982
- console.log(chalk.gray('Try different search terms or browse all servers'));
983
- console.log();
984
- return;
985
- }
986
- console.log(chalk.gray(`Found ${servers.length} server(s)\n`));
987
- for (const server of servers) {
988
- const badge = server.verified ? chalk.green('✓ verified') : chalk.gray('community');
989
- console.log(`${chalk.bold(server.displayName)} [${badge}] ⭐ ${server.stars}`);
990
- console.log(chalk.gray(` ${server.description}`));
991
- console.log(chalk.gray(` Category: ${server.category} | Transport: ${server.transport}`));
992
- if (server.packageName) {
993
- console.log(chalk.blue(` Install: ax-cli mcp install ${server.name}`));
994
- }
995
- else {
996
- console.log(chalk.gray(` Repository: ${server.repository}`));
997
- }
998
- console.log();
999
- }
1000
- console.log(chalk.gray('💡 Use --search to find specific servers'));
1001
- console.log(chalk.gray('💡 Use --category to filter by type (design, database, api, etc.)'));
1002
- console.log();
1003
- }
1004
- catch (error) {
1005
- console.error(chalk.red(`\n❌ Error: ${extractErrorMessage(error)}\n`));
1006
- process.exit(1);
1007
- }
1008
- });
1009
- // Install MCP server from registry (Phase 5)
1010
- mcpCommand
1011
- .command('install <name>')
1012
- .description('Install MCP server from registry')
1013
- .option('--no-validate', 'Skip validation before installation')
1014
- .option('--no-connect', 'Add configuration but don\'t connect immediately')
1015
- .action(async (name, options) => {
1016
- try {
1017
- console.log(chalk.blue(`\n📦 Installing "${name}" from registry...\n`));
1018
- // Search registry
1019
- const server = await getRegistryServer(name);
1020
- if (!server) {
1021
- console.error(chalk.red(`❌ Server "${name}" not found in registry\n`));
1022
- console.log(chalk.gray('Available options:'));
1023
- console.log(chalk.gray(' • Search registry: ax-cli mcp registry --search <query>'));
1024
- console.log(chalk.gray(' • Browse all: ax-cli mcp registry'));
1025
- console.log();
1026
- process.exit(1);
1027
- }
1028
- // Display server info
1029
- console.log(formatRegistryServer(server, false));
1030
- console.log();
1031
- // Generate configuration
1032
- const config = generateConfigFromRegistry(server);
1033
- // Validate if requested
1034
- if (options.validate !== false) {
1035
- console.log(chalk.blue('🔍 Validating configuration...\n'));
1036
- const validation = await validateServerConfig(config);
1037
- if (!validation.valid) {
1038
- console.log(formatValidationResult(validation));
1039
- console.log();
1040
- console.error(chalk.red('❌ Validation failed. Fix errors and try again.\n'));
1041
- process.exit(1);
1042
- }
1043
- if (validation.warnings.length > 0) {
1044
- console.log(chalk.yellow('⚠️ Warnings:\n'));
1045
- validation.warnings.forEach(w => console.log(chalk.yellow(` • ${w}`)));
1046
- console.log();
1047
- }
1048
- }
1049
- // Add server to configuration
1050
- addMCPServer(config);
1051
- console.log(chalk.green(`✅ Server "${server.name}" added to configuration\n`));
1052
- // Connect if requested
1053
- if (options.connect !== false) {
1054
- console.log(chalk.blue('🔌 Connecting to server...\n'));
1055
- try {
1056
- const manager = getMCPManager();
1057
- await manager.addServer(config);
1058
- const tools = manager.getTools().filter(t => t.serverName === server.name);
1059
- console.log(chalk.green(`✅ Connected successfully! ${tools.length} tool(s) available\n`));
1060
- // Show available tools
1061
- if (tools.length > 0) {
1062
- console.log(chalk.gray('Available tools:'));
1063
- tools.slice(0, 5).forEach(tool => {
1064
- console.log(chalk.gray(` • ${tool.name.replace(`mcp__${server.name}__`, '')}`));
1065
- });
1066
- if (tools.length > 5) {
1067
- console.log(chalk.gray(` ... and ${tools.length - 5} more`));
1068
- }
1069
- console.log();
1070
- }
1071
- }
1072
- catch (error) {
1073
- console.error(chalk.yellow(`⚠️ Server added but connection failed: ${extractErrorMessage(error)}\n`));
1074
- console.log(chalk.gray('You can try connecting manually with: ax-cli mcp add ' + server.name + ' --template'));
1075
- console.log();
1076
- }
1077
- }
1078
- console.log(chalk.green('🎉 Installation complete!\n'));
1079
- }
1080
- catch (error) {
1081
- console.error(chalk.red(`\n❌ Error: ${extractErrorMessage(error)}\n`));
1082
- process.exit(1);
1083
- }
1084
- });
1085
- // Z.AI MCP Status command
1086
- mcpCommand
1087
- .command('status-zai')
1088
- .description('Show Z.AI MCP integration status')
1089
- .option('--json', 'Output in JSON format')
1090
- .action(async (options) => {
1091
- try {
1092
- const status = await detectZAIServices();
1093
- if (options.json) {
1094
- console.log(JSON.stringify(status, null, 2));
1095
- return;
1096
- }
1097
- console.log(formatZAIStatus(status));
1098
- console.log();
1099
- // Show recommendations
1100
- if (!status.hasApiKey) {
1101
- console.log(chalk.yellow('To get started with Z.AI MCP:'));
1102
- console.log(chalk.gray(' 1. Get an API key from https://z.ai'));
1103
- console.log(chalk.gray(' 2. Set it: ax-cli config set apiKey YOUR_API_KEY'));
1104
- console.log(chalk.gray(' 3. Enable servers: ax-cli mcp add-zai'));
1105
- console.log();
1106
- }
1107
- else if (status.enabledServers.length === 0) {
1108
- console.log(chalk.blue('API key configured. Enable Z.AI MCP servers with:'));
1109
- console.log(chalk.cyan(' ax-cli mcp add-zai'));
1110
- console.log();
1111
- }
1112
- }
1113
- catch (error) {
1114
- console.error(chalk.red(`\n❌ Error: ${extractErrorMessage(error)}\n`));
1115
- process.exit(1);
1116
- }
1117
- });
1118
- // Z.AI MCP Add command
1119
- mcpCommand
1120
- .command('add-zai')
1121
- .description('Enable Z.AI MCP servers (web-reader, web-search, vision)')
1122
- .option('--all', 'Enable all available Z.AI servers')
1123
- .option('--server <servers...>', 'Specific servers to enable (zai-web-reader, zai-web-search, zai-vision)')
1124
- .option('--api-key <key>', 'Z.AI API key (or use config/environment)')
1125
- .action(async (options) => {
1126
- try {
1127
- console.log(chalk.blue.bold('\n🚀 Setting up Z.AI MCP Servers\n'));
1128
- // Get API key
1129
- let apiKey = options.apiKey || getZAIApiKey();
1130
- if (!apiKey) {
1131
- console.error(chalk.red('❌ No Z.AI API key found\n'));
1132
- console.log(chalk.gray('Provide an API key using one of these methods:'));
1133
- console.log(chalk.gray(' • --api-key <key> flag'));
1134
- console.log(chalk.gray(' • ax-cli config set apiKey YOUR_API_KEY'));
1135
- console.log(chalk.gray(' • Set YOUR_API_KEY or Z_AI_API_KEY environment variable'));
1136
- console.log();
1137
- console.log(chalk.blue('Get your API key at: https://z.ai'));
1138
- console.log();
1139
- process.exit(1);
1140
- }
1141
- // Detect current status
1142
- const status = await detectZAIServices();
1143
- // Determine which servers to add
1144
- let serversToAdd;
1145
- if (options.server && options.server.length > 0) {
1146
- // Specific servers requested
1147
- serversToAdd = options.server.filter((s) => isZAIServer(s));
1148
- const invalidServers = options.server.filter((s) => !isZAIServer(s));
1149
- if (invalidServers.length > 0) {
1150
- console.log(chalk.yellow(`⚠️ Unknown server(s): ${invalidServers.join(', ')}`));
1151
- console.log(chalk.gray(`Available: ${getAllZAIServerNames().join(', ')}`));
1152
- console.log();
1153
- }
1154
- }
1155
- else if (options.all) {
1156
- serversToAdd = getAllZAIServerNames();
1157
- }
1158
- else {
1159
- // Default: recommended servers based on system
1160
- serversToAdd = getRecommendedServers(status);
1161
- }
1162
- // Filter out already enabled
1163
- const newServers = serversToAdd.filter(s => !status.enabledServers.includes(s));
1164
- if (newServers.length === 0) {
1165
- console.log(chalk.yellow('⚠️ All requested Z.AI servers are already configured\n'));
1166
- console.log(chalk.gray('Enabled servers:'));
1167
- status.enabledServers.forEach(s => console.log(chalk.green(` ✓ ${s}`)));
1168
- console.log();
1169
- return;
1170
- }
1171
- // Check Node.js version for vision
1172
- if (newServers.includes(ZAI_SERVER_NAMES.VISION) && !status.nodeVersionOk) {
1173
- console.log(chalk.yellow(`⚠️ Vision server requires Node.js 22+, you have v${status.nodeVersion}`));
1174
- console.log(chalk.gray(' Skipping vision server. Update Node.js to enable it.'));
1175
- const visionIndex = newServers.indexOf(ZAI_SERVER_NAMES.VISION);
1176
- if (visionIndex > -1) {
1177
- newServers.splice(visionIndex, 1);
1178
- }
1179
- console.log();
1180
- }
1181
- if (newServers.length === 0) {
1182
- console.log(chalk.yellow('No servers to add after filtering.\n'));
1183
- return;
1184
- }
1185
- // Add each server
1186
- const manager = getMCPManager();
1187
- let successCount = 0;
1188
- for (const serverName of newServers) {
1189
- const template = ZAI_MCP_TEMPLATES[serverName];
1190
- console.log(chalk.blue(`Adding ${template.displayName}...`));
1191
- console.log(chalk.gray(` ${template.description}`));
1192
- try {
1193
- const config = generateZAIServerConfig(serverName, apiKey);
1194
- // Connect first, then save config only on success
1195
- await manager.addServer(config);
1196
- addMCPServer(config);
1197
- const tools = manager.getTools().filter(t => t.serverName === serverName);
1198
- console.log(chalk.green(` ✓ Connected (${tools.length} tool${tools.length !== 1 ? 's' : ''})`));
1199
- successCount++;
1200
- }
1201
- catch (error) {
1202
- console.log(chalk.red(` ✗ Failed: ${extractErrorMessage(error)}`));
1203
- }
1204
- console.log();
1205
- }
1206
- // Summary
1207
- if (successCount > 0) {
1208
- console.log(chalk.green.bold(`✨ ${successCount} Z.AI MCP server${successCount !== 1 ? 's' : ''} enabled!\n`));
1209
- console.log(chalk.gray('Available tools:'));
1210
- const allTools = manager.getTools().filter(t => newServers.some(s => t.serverName === s));
1211
- allTools.forEach(tool => {
1212
- console.log(chalk.gray(` • ${tool.name.replace('mcp__', '').replace('__', '/')}`));
1213
- });
1214
- console.log();
1215
- }
1216
- else {
1217
- console.log(chalk.red('❌ No servers were successfully added.\n'));
1218
- process.exit(1);
1219
- }
1220
- }
1221
- catch (error) {
1222
- console.error(chalk.red(`\n❌ Error: ${extractErrorMessage(error)}\n`));
1223
- process.exit(1);
1224
- }
1225
- });
1226
- // Z.AI MCP Remove command
1227
- mcpCommand
1228
- .command('remove-zai')
1229
- .description('Disable Z.AI MCP servers')
1230
- .option('--all', 'Remove all Z.AI servers')
1231
- .option('--server <servers...>', 'Specific servers to remove')
1232
- .action(async (options) => {
1233
- try {
1234
- console.log(chalk.blue.bold('\n🗑️ Removing Z.AI MCP Servers\n'));
1235
- const status = await detectZAIServices();
1236
- if (status.enabledServers.length === 0) {
1237
- console.log(chalk.yellow('⚠️ No Z.AI MCP servers are currently configured.\n'));
1238
- return;
1239
- }
1240
- // Determine which servers to remove
1241
- let serversToRemove;
1242
- if (options.server && options.server.length > 0) {
1243
- serversToRemove = options.server.filter((s) => isZAIServer(s) && status.enabledServers.includes(s));
1244
- const notEnabled = options.server.filter((s) => isZAIServer(s) && !status.enabledServers.includes(s));
1245
- if (notEnabled.length > 0) {
1246
- console.log(chalk.yellow(`⚠️ Server(s) not enabled: ${notEnabled.join(', ')}`));
1247
- }
1248
- }
1249
- else if (options.all) {
1250
- serversToRemove = [...status.enabledServers];
1251
- }
1252
- else {
1253
- // Default: remove all
1254
- serversToRemove = [...status.enabledServers];
1255
- }
1256
- if (serversToRemove.length === 0) {
1257
- console.log(chalk.yellow('⚠️ No matching servers to remove.\n'));
1258
- return;
1259
- }
1260
- // Remove each server
1261
- const manager = getMCPManager();
1262
- let successCount = 0;
1263
- for (const serverName of serversToRemove) {
1264
- const template = ZAI_MCP_TEMPLATES[serverName];
1265
- console.log(chalk.blue(`Removing ${template.displayName}...`));
1266
- try {
1267
- await manager.removeServer(serverName);
1268
- removeMCPServer(serverName);
1269
- console.log(chalk.green(` ✓ Removed`));
1270
- successCount++;
1271
- }
1272
- catch (error) {
1273
- console.log(chalk.red(` ✗ Failed: ${extractErrorMessage(error)}`));
1274
- }
1275
- }
1276
- console.log();
1277
- if (successCount > 0) {
1278
- console.log(chalk.green(`✓ ${successCount} Z.AI MCP server${successCount !== 1 ? 's' : ''} removed.\n`));
1279
- }
1280
- else {
1281
- console.log(chalk.red('❌ No servers were successfully removed.\n'));
1282
- process.exit(1);
1283
- }
1284
- }
1285
- catch (error) {
1286
- console.error(chalk.red(`\n❌ Error: ${extractErrorMessage(error)}\n`));
1287
- process.exit(1);
1288
- }
1289
- });
1290
- return mcpCommand;
1291
- }
1292
- //# sourceMappingURL=mcp.js.map