@compass-ai/nova 1.0.72 → 1.0.74

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 (974) hide show
  1. package/dist/acp/agent.d.ts +318 -0
  2. package/dist/acp/agent.d.ts.map +1 -0
  3. package/dist/acp/agent.js +795 -0
  4. package/dist/acp/agent.js.map +1 -0
  5. package/dist/acp/backpressure-writer.d.ts +49 -0
  6. package/dist/acp/backpressure-writer.d.ts.map +1 -0
  7. package/dist/acp/backpressure-writer.js +153 -0
  8. package/dist/acp/backpressure-writer.js.map +1 -0
  9. package/dist/acp/event-adapter.d.ts +242 -0
  10. package/dist/acp/event-adapter.d.ts.map +1 -0
  11. package/dist/acp/event-adapter.js +456 -0
  12. package/dist/acp/event-adapter.js.map +1 -0
  13. package/dist/acp/index.d.ts +30 -0
  14. package/dist/acp/index.d.ts.map +1 -0
  15. package/dist/acp/index.js +36 -0
  16. package/dist/acp/index.js.map +1 -0
  17. package/dist/acp/modes.d.ts +56 -0
  18. package/dist/acp/modes.d.ts.map +1 -0
  19. package/dist/acp/modes.js +135 -0
  20. package/dist/acp/modes.js.map +1 -0
  21. package/dist/acp/session-manager.d.ts +170 -0
  22. package/dist/acp/session-manager.d.ts.map +1 -0
  23. package/dist/acp/session-manager.js +381 -0
  24. package/dist/acp/session-manager.js.map +1 -0
  25. package/dist/acp/text-coalescer.d.ts +45 -0
  26. package/dist/acp/text-coalescer.d.ts.map +1 -0
  27. package/dist/acp/text-coalescer.js +110 -0
  28. package/dist/acp/text-coalescer.js.map +1 -0
  29. package/dist/acp/tool-bridge.d.ts +156 -0
  30. package/dist/acp/tool-bridge.d.ts.map +1 -0
  31. package/dist/acp/tool-bridge.js +381 -0
  32. package/dist/acp/tool-bridge.js.map +1 -0
  33. package/dist/acp/types.d.ts +314 -0
  34. package/dist/acp/types.d.ts.map +1 -0
  35. package/dist/acp/types.js +8 -0
  36. package/dist/acp/types.js.map +1 -0
  37. package/dist/cli.d.ts +9 -0
  38. package/dist/cli.d.ts.map +1 -0
  39. package/dist/cli.js +185 -184
  40. package/dist/cli.js.map +1 -0
  41. package/dist/commands/acp.d.ts +26 -0
  42. package/dist/commands/acp.d.ts.map +1 -0
  43. package/dist/commands/acp.js +492 -0
  44. package/dist/commands/acp.js.map +1 -0
  45. package/dist/commands/cache.d.ts +33 -0
  46. package/dist/commands/cache.d.ts.map +1 -0
  47. package/dist/commands/cache.js +537 -0
  48. package/dist/commands/cache.js.map +1 -0
  49. package/dist/commands/config.d.ts +10 -0
  50. package/dist/commands/config.d.ts.map +1 -0
  51. package/dist/commands/config.js +367 -0
  52. package/dist/commands/config.js.map +1 -0
  53. package/dist/commands/consent.d.ts +21 -0
  54. package/dist/commands/consent.d.ts.map +1 -0
  55. package/dist/commands/consent.js +334 -0
  56. package/dist/commands/consent.js.map +1 -0
  57. package/dist/commands/data.d.ts +24 -0
  58. package/dist/commands/data.d.ts.map +1 -0
  59. package/dist/commands/data.js +586 -0
  60. package/dist/commands/data.js.map +1 -0
  61. package/dist/commands/index.d.ts +145 -0
  62. package/dist/commands/index.d.ts.map +1 -0
  63. package/dist/commands/index.js +210 -0
  64. package/dist/commands/index.js.map +1 -0
  65. package/dist/commands/init.d.ts +106 -0
  66. package/dist/commands/init.d.ts.map +1 -0
  67. package/dist/commands/init.js +349 -0
  68. package/dist/commands/init.js.map +1 -0
  69. package/dist/commands/logs.d.ts +13 -0
  70. package/dist/commands/logs.d.ts.map +1 -0
  71. package/dist/commands/logs.js +359 -0
  72. package/dist/commands/logs.js.map +1 -0
  73. package/dist/commands/mcp.d.ts +20 -0
  74. package/dist/commands/mcp.d.ts.map +1 -0
  75. package/dist/commands/mcp.js +687 -0
  76. package/dist/commands/mcp.js.map +1 -0
  77. package/dist/commands/reset.d.ts +20 -0
  78. package/dist/commands/reset.d.ts.map +1 -0
  79. package/dist/commands/reset.js +372 -0
  80. package/dist/commands/reset.js.map +1 -0
  81. package/dist/commands/setup.d.ts +74 -0
  82. package/dist/commands/setup.d.ts.map +1 -0
  83. package/dist/commands/setup.js +863 -0
  84. package/dist/commands/setup.js.map +1 -0
  85. package/dist/commands/slash/agents.d.ts +40 -0
  86. package/dist/commands/slash/agents.d.ts.map +1 -0
  87. package/dist/commands/slash/agents.js +519 -0
  88. package/dist/commands/slash/agents.js.map +1 -0
  89. package/dist/commands/slash/approve.d.ts +46 -0
  90. package/dist/commands/slash/approve.d.ts.map +1 -0
  91. package/dist/commands/slash/approve.js +239 -0
  92. package/dist/commands/slash/approve.js.map +1 -0
  93. package/dist/commands/slash/attach.d.ts +70 -0
  94. package/dist/commands/slash/attach.d.ts.map +1 -0
  95. package/dist/commands/slash/attach.js +333 -0
  96. package/dist/commands/slash/attach.js.map +1 -0
  97. package/dist/commands/slash/clear.d.ts +47 -0
  98. package/dist/commands/slash/clear.d.ts.map +1 -0
  99. package/dist/commands/slash/clear.js +261 -0
  100. package/dist/commands/slash/clear.js.map +1 -0
  101. package/dist/commands/slash/commit.d.ts +40 -0
  102. package/dist/commands/slash/commit.d.ts.map +1 -0
  103. package/dist/commands/slash/commit.js +337 -0
  104. package/dist/commands/slash/commit.js.map +1 -0
  105. package/dist/commands/slash/compact.d.ts +48 -0
  106. package/dist/commands/slash/compact.d.ts.map +1 -0
  107. package/dist/commands/slash/compact.js +288 -0
  108. package/dist/commands/slash/compact.js.map +1 -0
  109. package/dist/commands/slash/config.d.ts +20 -0
  110. package/dist/commands/slash/config.d.ts.map +1 -0
  111. package/dist/commands/slash/config.js +136 -0
  112. package/dist/commands/slash/config.js.map +1 -0
  113. package/dist/commands/slash/context.d.ts +49 -0
  114. package/dist/commands/slash/context.d.ts.map +1 -0
  115. package/dist/commands/slash/context.js +430 -0
  116. package/dist/commands/slash/context.js.map +1 -0
  117. package/dist/commands/slash/cost.d.ts +34 -0
  118. package/dist/commands/slash/cost.d.ts.map +1 -0
  119. package/dist/commands/slash/cost.js +312 -0
  120. package/dist/commands/slash/cost.js.map +1 -0
  121. package/dist/commands/slash/custom.d.ts +41 -0
  122. package/dist/commands/slash/custom.d.ts.map +1 -0
  123. package/dist/commands/slash/custom.js +126 -0
  124. package/dist/commands/slash/custom.js.map +1 -0
  125. package/dist/commands/slash/exit.d.ts +25 -0
  126. package/dist/commands/slash/exit.d.ts.map +1 -0
  127. package/dist/commands/slash/exit.js +186 -0
  128. package/dist/commands/slash/exit.js.map +1 -0
  129. package/dist/commands/slash/export.d.ts +27 -0
  130. package/dist/commands/slash/export.d.ts.map +1 -0
  131. package/dist/commands/slash/export.js +318 -0
  132. package/dist/commands/slash/export.js.map +1 -0
  133. package/dist/commands/slash/files.d.ts +47 -0
  134. package/dist/commands/slash/files.d.ts.map +1 -0
  135. package/dist/commands/slash/files.js +521 -0
  136. package/dist/commands/slash/files.js.map +1 -0
  137. package/dist/commands/slash/help.d.ts +50 -0
  138. package/dist/commands/slash/help.d.ts.map +1 -0
  139. package/dist/commands/slash/help.js +282 -0
  140. package/dist/commands/slash/help.js.map +1 -0
  141. package/dist/commands/slash/index-cmd.d.ts +41 -0
  142. package/dist/commands/slash/index-cmd.d.ts.map +1 -0
  143. package/dist/commands/slash/index-cmd.js +349 -0
  144. package/dist/commands/slash/index-cmd.js.map +1 -0
  145. package/dist/commands/slash/index.d.ts +97 -0
  146. package/dist/commands/slash/index.d.ts.map +1 -0
  147. package/dist/commands/slash/index.js +251 -0
  148. package/dist/commands/slash/index.js.map +1 -0
  149. package/dist/commands/slash/login.d.ts +23 -0
  150. package/dist/commands/slash/login.d.ts.map +1 -0
  151. package/dist/commands/slash/login.js +175 -0
  152. package/dist/commands/slash/login.js.map +1 -0
  153. package/dist/commands/slash/logout.d.ts +23 -0
  154. package/dist/commands/slash/logout.d.ts.map +1 -0
  155. package/dist/commands/slash/logout.js +153 -0
  156. package/dist/commands/slash/logout.js.map +1 -0
  157. package/dist/commands/slash/logs.d.ts +29 -0
  158. package/dist/commands/slash/logs.d.ts.map +1 -0
  159. package/dist/commands/slash/logs.js +423 -0
  160. package/dist/commands/slash/logs.js.map +1 -0
  161. package/dist/commands/slash/mcp.d.ts +29 -0
  162. package/dist/commands/slash/mcp.d.ts.map +1 -0
  163. package/dist/commands/slash/mcp.js +1026 -0
  164. package/dist/commands/slash/mcp.js.map +1 -0
  165. package/dist/commands/slash/model.d.ts +60 -0
  166. package/dist/commands/slash/model.d.ts.map +1 -0
  167. package/dist/commands/slash/model.js +466 -0
  168. package/dist/commands/slash/model.js.map +1 -0
  169. package/dist/commands/slash/personality.d.ts +40 -0
  170. package/dist/commands/slash/personality.d.ts.map +1 -0
  171. package/dist/commands/slash/personality.js +272 -0
  172. package/dist/commands/slash/personality.js.map +1 -0
  173. package/dist/commands/slash/purge.d.ts +42 -0
  174. package/dist/commands/slash/purge.d.ts.map +1 -0
  175. package/dist/commands/slash/purge.js +233 -0
  176. package/dist/commands/slash/purge.js.map +1 -0
  177. package/dist/commands/slash/reset.d.ts +44 -0
  178. package/dist/commands/slash/reset.d.ts.map +1 -0
  179. package/dist/commands/slash/reset.js +326 -0
  180. package/dist/commands/slash/reset.js.map +1 -0
  181. package/dist/commands/slash/skills.d.ts +40 -0
  182. package/dist/commands/slash/skills.d.ts.map +1 -0
  183. package/dist/commands/slash/skills.js +207 -0
  184. package/dist/commands/slash/skills.js.map +1 -0
  185. package/dist/commands/slash/tokens.d.ts +34 -0
  186. package/dist/commands/slash/tokens.d.ts.map +1 -0
  187. package/dist/commands/slash/tokens.js +205 -0
  188. package/dist/commands/slash/tokens.js.map +1 -0
  189. package/dist/commands/slash/unleash.d.ts +50 -0
  190. package/dist/commands/slash/unleash.d.ts.map +1 -0
  191. package/dist/commands/slash/unleash.js +262 -0
  192. package/dist/commands/slash/unleash.js.map +1 -0
  193. package/dist/commands/slash/update.d.ts +34 -0
  194. package/dist/commands/slash/update.d.ts.map +1 -0
  195. package/dist/commands/slash/update.js +364 -0
  196. package/dist/commands/slash/update.js.map +1 -0
  197. package/dist/commands/slash/wrap.d.ts +18 -0
  198. package/dist/commands/slash/wrap.d.ts.map +1 -0
  199. package/dist/commands/slash/wrap.js +21 -0
  200. package/dist/commands/slash/wrap.js.map +1 -0
  201. package/dist/commands/tokens.d.ts +26 -0
  202. package/dist/commands/tokens.d.ts.map +1 -0
  203. package/dist/commands/tokens.js +245 -0
  204. package/dist/commands/tokens.js.map +1 -0
  205. package/dist/constants/builtin-agents.d.ts +27 -0
  206. package/dist/constants/builtin-agents.d.ts.map +1 -0
  207. package/dist/constants/builtin-agents.js +710 -0
  208. package/dist/constants/builtin-agents.js.map +1 -0
  209. package/dist/constants/builtin-skills.d.ts +32 -0
  210. package/dist/constants/builtin-skills.d.ts.map +1 -0
  211. package/dist/constants/builtin-skills.js +389 -0
  212. package/dist/constants/builtin-skills.js.map +1 -0
  213. package/dist/constants/defaults.d.ts +448 -0
  214. package/dist/constants/defaults.d.ts.map +1 -0
  215. package/dist/constants/defaults.js +829 -0
  216. package/dist/constants/defaults.js.map +1 -0
  217. package/dist/constants/index.d.ts +27 -0
  218. package/dist/constants/index.d.ts.map +1 -0
  219. package/dist/constants/index.js +85 -0
  220. package/dist/constants/index.js.map +1 -0
  221. package/dist/constants/install-hints.d.ts +7 -0
  222. package/dist/constants/install-hints.d.ts.map +1 -0
  223. package/dist/constants/install-hints.js +123 -0
  224. package/dist/constants/install-hints.js.map +1 -0
  225. package/dist/constants/models.d.ts +255 -0
  226. package/dist/constants/models.d.ts.map +1 -0
  227. package/dist/constants/models.js +596 -0
  228. package/dist/constants/models.js.map +1 -0
  229. package/dist/constants/schedule.d.ts +43 -0
  230. package/dist/constants/schedule.d.ts.map +1 -0
  231. package/dist/constants/schedule.js +110 -0
  232. package/dist/constants/schedule.js.map +1 -0
  233. package/dist/constants/system-utilities.d.ts +57 -0
  234. package/dist/constants/system-utilities.d.ts.map +1 -0
  235. package/dist/constants/system-utilities.js +421 -0
  236. package/dist/constants/system-utilities.js.map +1 -0
  237. package/dist/constants/token-limits.d.ts +102 -0
  238. package/dist/constants/token-limits.d.ts.map +1 -0
  239. package/dist/constants/token-limits.js +286 -0
  240. package/dist/constants/token-limits.js.map +1 -0
  241. package/dist/core/autocomplete.d.ts +132 -0
  242. package/dist/core/autocomplete.d.ts.map +1 -0
  243. package/dist/core/autocomplete.js +653 -0
  244. package/dist/core/autocomplete.js.map +1 -0
  245. package/dist/core/command-parser.d.ts +301 -0
  246. package/dist/core/command-parser.d.ts.map +1 -0
  247. package/dist/core/command-parser.js +526 -0
  248. package/dist/core/command-parser.js.map +1 -0
  249. package/dist/core/context-builder.d.ts +264 -0
  250. package/dist/core/context-builder.d.ts.map +1 -0
  251. package/dist/core/context-builder.js +1018 -0
  252. package/dist/core/context-builder.js.map +1 -0
  253. package/dist/core/event-emitter.d.ts +411 -0
  254. package/dist/core/event-emitter.d.ts.map +1 -0
  255. package/dist/core/event-emitter.js +138 -0
  256. package/dist/core/event-emitter.js.map +1 -0
  257. package/dist/core/history-manager.d.ts +62 -0
  258. package/dist/core/history-manager.d.ts.map +1 -0
  259. package/dist/core/history-manager.js +151 -0
  260. package/dist/core/history-manager.js.map +1 -0
  261. package/dist/core/slash-command-handler.d.ts +352 -0
  262. package/dist/core/slash-command-handler.d.ts.map +1 -0
  263. package/dist/core/slash-command-handler.js +563 -0
  264. package/dist/core/slash-command-handler.js.map +1 -0
  265. package/dist/core/task-processor.d.ts +179 -0
  266. package/dist/core/task-processor.d.ts.map +1 -0
  267. package/dist/core/task-processor.js +519 -0
  268. package/dist/core/task-processor.js.map +1 -0
  269. package/dist/index.d.ts +90 -0
  270. package/dist/index.d.ts.map +1 -0
  271. package/dist/index.js +4 -3
  272. package/dist/index.js.map +1 -0
  273. package/dist/prompts/agent-prompt-generator.d.ts +26 -0
  274. package/dist/prompts/agent-prompt-generator.d.ts.map +1 -0
  275. package/dist/prompts/agent-prompt-generator.js +244 -0
  276. package/dist/prompts/agent-prompt-generator.js.map +1 -0
  277. package/dist/prompts/commit-message.d.ts +35 -0
  278. package/dist/prompts/commit-message.d.ts.map +1 -0
  279. package/dist/prompts/commit-message.js +187 -0
  280. package/dist/prompts/commit-message.js.map +1 -0
  281. package/dist/prompts/conversation.d.ts +51 -0
  282. package/dist/prompts/conversation.d.ts.map +1 -0
  283. package/dist/prompts/conversation.js +115 -0
  284. package/dist/prompts/conversation.js.map +1 -0
  285. package/dist/prompts/index.d.ts +39 -0
  286. package/dist/prompts/index.d.ts.map +1 -0
  287. package/dist/prompts/index.js +74 -0
  288. package/dist/prompts/index.js.map +1 -0
  289. package/dist/prompts/memory.d.ts +6 -0
  290. package/dist/prompts/memory.d.ts.map +1 -0
  291. package/dist/prompts/memory.js +29 -0
  292. package/dist/prompts/memory.js.map +1 -0
  293. package/dist/prompts/personality.d.ts +77 -0
  294. package/dist/prompts/personality.d.ts.map +1 -0
  295. package/dist/prompts/personality.js +393 -0
  296. package/dist/prompts/personality.js.map +1 -0
  297. package/dist/prompts/plan-generator.d.ts +144 -0
  298. package/dist/prompts/plan-generator.d.ts.map +1 -0
  299. package/dist/prompts/plan-generator.js +553 -0
  300. package/dist/prompts/plan-generator.js.map +1 -0
  301. package/dist/prompts/system.d.ts +95 -0
  302. package/dist/prompts/system.d.ts.map +1 -0
  303. package/dist/prompts/system.js +461 -0
  304. package/dist/prompts/system.js.map +1 -0
  305. package/dist/prompts/task-processor.d.ts +94 -0
  306. package/dist/prompts/task-processor.d.ts.map +1 -0
  307. package/dist/prompts/task-processor.js +554 -0
  308. package/dist/prompts/task-processor.js.map +1 -0
  309. package/dist/prompts/unguarded.d.ts +78 -0
  310. package/dist/prompts/unguarded.d.ts.map +1 -0
  311. package/dist/prompts/unguarded.js +418 -0
  312. package/dist/prompts/unguarded.js.map +1 -0
  313. package/dist/prompts/utils.d.ts +73 -0
  314. package/dist/prompts/utils.d.ts.map +1 -0
  315. package/dist/prompts/utils.js +114 -0
  316. package/dist/prompts/utils.js.map +1 -0
  317. package/dist/prompts/workflow.d.ts +241 -0
  318. package/dist/prompts/workflow.d.ts.map +1 -0
  319. package/dist/prompts/workflow.js +608 -0
  320. package/dist/prompts/workflow.js.map +1 -0
  321. package/dist/services/action-logger.d.ts +383 -0
  322. package/dist/services/action-logger.d.ts.map +1 -0
  323. package/dist/services/action-logger.js +544 -0
  324. package/dist/services/action-logger.js.map +1 -0
  325. package/dist/services/agent-budget-allocator.d.ts +111 -0
  326. package/dist/services/agent-budget-allocator.d.ts.map +1 -0
  327. package/dist/services/agent-budget-allocator.js +278 -0
  328. package/dist/services/agent-budget-allocator.js.map +1 -0
  329. package/dist/services/agent-manager.d.ts +181 -0
  330. package/dist/services/agent-manager.d.ts.map +1 -0
  331. package/dist/services/agent-manager.js +749 -0
  332. package/dist/services/agent-manager.js.map +1 -0
  333. package/dist/services/agent-spawner.d.ts +138 -0
  334. package/dist/services/agent-spawner.d.ts.map +1 -0
  335. package/dist/services/agent-spawner.js +748 -0
  336. package/dist/services/agent-spawner.js.map +1 -0
  337. package/dist/services/agent-state-service.d.ts +145 -0
  338. package/dist/services/agent-state-service.d.ts.map +1 -0
  339. package/dist/services/agent-state-service.js +247 -0
  340. package/dist/services/agent-state-service.js.map +1 -0
  341. package/dist/services/anthropic-client.d.ts +357 -0
  342. package/dist/services/anthropic-client.d.ts.map +1 -0
  343. package/dist/services/anthropic-client.js +1451 -0
  344. package/dist/services/anthropic-client.js.map +1 -0
  345. package/dist/services/approval-manager.d.ts +385 -0
  346. package/dist/services/approval-manager.d.ts.map +1 -0
  347. package/dist/services/approval-manager.js +1044 -0
  348. package/dist/services/approval-manager.js.map +1 -0
  349. package/dist/services/audit-logger.d.ts +245 -0
  350. package/dist/services/audit-logger.d.ts.map +1 -0
  351. package/dist/services/audit-logger.js +324 -0
  352. package/dist/services/audit-logger.js.map +1 -0
  353. package/dist/services/backup-manager.d.ts +136 -0
  354. package/dist/services/backup-manager.d.ts.map +1 -0
  355. package/dist/services/backup-manager.js +260 -0
  356. package/dist/services/backup-manager.js.map +1 -0
  357. package/dist/services/cache-service.d.ts +247 -0
  358. package/dist/services/cache-service.d.ts.map +1 -0
  359. package/dist/services/cache-service.js +558 -0
  360. package/dist/services/cache-service.js.map +1 -0
  361. package/dist/services/chat-archival-service.d.ts +108 -0
  362. package/dist/services/chat-archival-service.d.ts.map +1 -0
  363. package/dist/services/chat-archival-service.js +465 -0
  364. package/dist/services/chat-archival-service.js.map +1 -0
  365. package/dist/services/codebase-indexer.d.ts +272 -0
  366. package/dist/services/codebase-indexer.d.ts.map +1 -0
  367. package/dist/services/codebase-indexer.js +863 -0
  368. package/dist/services/codebase-indexer.js.map +1 -0
  369. package/dist/services/compass-auth-service.d.ts +204 -0
  370. package/dist/services/compass-auth-service.d.ts.map +1 -0
  371. package/dist/services/compass-auth-service.js +391 -0
  372. package/dist/services/compass-auth-service.js.map +1 -0
  373. package/dist/services/complexity-classifier.d.ts +208 -0
  374. package/dist/services/complexity-classifier.d.ts.map +1 -0
  375. package/dist/services/complexity-classifier.js +1410 -0
  376. package/dist/services/complexity-classifier.js.map +1 -0
  377. package/dist/services/config-manager.d.ts +278 -0
  378. package/dist/services/config-manager.d.ts.map +1 -0
  379. package/dist/services/config-manager.js +651 -0
  380. package/dist/services/config-manager.js.map +1 -0
  381. package/dist/services/consent-manager.d.ts +239 -0
  382. package/dist/services/consent-manager.d.ts.map +1 -0
  383. package/dist/services/consent-manager.js +516 -0
  384. package/dist/services/consent-manager.js.map +1 -0
  385. package/dist/services/conversation-compactor.d.ts +223 -0
  386. package/dist/services/conversation-compactor.d.ts.map +1 -0
  387. package/dist/services/conversation-compactor.js +750 -0
  388. package/dist/services/conversation-compactor.js.map +1 -0
  389. package/dist/services/cost-tracker.d.ts +167 -0
  390. package/dist/services/cost-tracker.d.ts.map +1 -0
  391. package/dist/services/cost-tracker.js +199 -0
  392. package/dist/services/cost-tracker.js.map +1 -0
  393. package/dist/services/credential-store.d.ts +273 -0
  394. package/dist/services/credential-store.d.ts.map +1 -0
  395. package/dist/services/credential-store.js +877 -0
  396. package/dist/services/credential-store.js.map +1 -0
  397. package/dist/services/custom-command-service.d.ts +112 -0
  398. package/dist/services/custom-command-service.d.ts.map +1 -0
  399. package/dist/services/custom-command-service.js +464 -0
  400. package/dist/services/custom-command-service.js.map +1 -0
  401. package/dist/services/default-statusline-renderer.d.ts +60 -0
  402. package/dist/services/default-statusline-renderer.d.ts.map +1 -0
  403. package/dist/services/default-statusline-renderer.js +110 -0
  404. package/dist/services/default-statusline-renderer.js.map +1 -0
  405. package/dist/services/enhanced-context-gatherer.d.ts +116 -0
  406. package/dist/services/enhanced-context-gatherer.d.ts.map +1 -0
  407. package/dist/services/enhanced-context-gatherer.js +605 -0
  408. package/dist/services/enhanced-context-gatherer.js.map +1 -0
  409. package/dist/services/file-hash-tracker.d.ts +95 -0
  410. package/dist/services/file-hash-tracker.d.ts.map +1 -0
  411. package/dist/services/file-hash-tracker.js +199 -0
  412. package/dist/services/file-hash-tracker.js.map +1 -0
  413. package/dist/services/file-service.d.ts +274 -0
  414. package/dist/services/file-service.d.ts.map +1 -0
  415. package/dist/services/file-service.js +876 -0
  416. package/dist/services/file-service.js.map +1 -0
  417. package/dist/services/git-service.d.ts +536 -0
  418. package/dist/services/git-service.d.ts.map +1 -0
  419. package/dist/services/git-service.js +1215 -0
  420. package/dist/services/git-service.js.map +1 -0
  421. package/dist/services/hook-service.d.ts +148 -0
  422. package/dist/services/hook-service.d.ts.map +1 -0
  423. package/dist/services/hook-service.js +705 -0
  424. package/dist/services/hook-service.js.map +1 -0
  425. package/dist/services/ide-state-service.d.ts +114 -0
  426. package/dist/services/ide-state-service.d.ts.map +1 -0
  427. package/dist/services/ide-state-service.js +204 -0
  428. package/dist/services/ide-state-service.js.map +1 -0
  429. package/dist/services/interactive-clarifier.d.ts +90 -0
  430. package/dist/services/interactive-clarifier.d.ts.map +1 -0
  431. package/dist/services/interactive-clarifier.js +446 -0
  432. package/dist/services/interactive-clarifier.js.map +1 -0
  433. package/dist/services/iteration-scoper.d.ts +225 -0
  434. package/dist/services/iteration-scoper.d.ts.map +1 -0
  435. package/dist/services/iteration-scoper.js +387 -0
  436. package/dist/services/iteration-scoper.js.map +1 -0
  437. package/dist/services/llm-plan-generator.d.ts +44 -0
  438. package/dist/services/llm-plan-generator.d.ts.map +1 -0
  439. package/dist/services/llm-plan-generator.js +863 -0
  440. package/dist/services/llm-plan-generator.js.map +1 -0
  441. package/dist/services/llm-system-prompt-generator.d.ts +85 -0
  442. package/dist/services/llm-system-prompt-generator.d.ts.map +1 -0
  443. package/dist/services/llm-system-prompt-generator.js +257 -0
  444. package/dist/services/llm-system-prompt-generator.js.map +1 -0
  445. package/dist/services/log-interpreter.d.ts +190 -0
  446. package/dist/services/log-interpreter.d.ts.map +1 -0
  447. package/dist/services/log-interpreter.js +520 -0
  448. package/dist/services/log-interpreter.js.map +1 -0
  449. package/dist/services/mcp-config-manager.d.ts +141 -0
  450. package/dist/services/mcp-config-manager.d.ts.map +1 -0
  451. package/dist/services/mcp-config-manager.js +678 -0
  452. package/dist/services/mcp-config-manager.js.map +1 -0
  453. package/dist/services/mcp-oauth-service.d.ts +170 -0
  454. package/dist/services/mcp-oauth-service.d.ts.map +1 -0
  455. package/dist/services/mcp-oauth-service.js +892 -0
  456. package/dist/services/mcp-oauth-service.js.map +1 -0
  457. package/dist/services/mcp-plugin-support.d.ts +81 -0
  458. package/dist/services/mcp-plugin-support.d.ts.map +1 -0
  459. package/dist/services/mcp-plugin-support.js +305 -0
  460. package/dist/services/mcp-plugin-support.js.map +1 -0
  461. package/dist/services/mcp-server-manager.d.ts +134 -0
  462. package/dist/services/mcp-server-manager.d.ts.map +1 -0
  463. package/dist/services/mcp-server-manager.js +613 -0
  464. package/dist/services/mcp-server-manager.js.map +1 -0
  465. package/dist/services/mcp-tool-integration.d.ts +119 -0
  466. package/dist/services/mcp-tool-integration.d.ts.map +1 -0
  467. package/dist/services/mcp-tool-integration.js +381 -0
  468. package/dist/services/mcp-tool-integration.js.map +1 -0
  469. package/dist/services/mcp-transport.d.ts +105 -0
  470. package/dist/services/mcp-transport.d.ts.map +1 -0
  471. package/dist/services/mcp-transport.js +1316 -0
  472. package/dist/services/mcp-transport.js.map +1 -0
  473. package/dist/services/memory-service.d.ts +55 -0
  474. package/dist/services/memory-service.d.ts.map +1 -0
  475. package/dist/services/memory-service.js +251 -0
  476. package/dist/services/memory-service.js.map +1 -0
  477. package/dist/services/model-availability.d.ts +64 -0
  478. package/dist/services/model-availability.d.ts.map +1 -0
  479. package/dist/services/model-availability.js +114 -0
  480. package/dist/services/model-availability.js.map +1 -0
  481. package/dist/services/plan-generator.d.ts +98 -0
  482. package/dist/services/plan-generator.d.ts.map +1 -0
  483. package/dist/services/plan-generator.js +658 -0
  484. package/dist/services/plan-generator.js.map +1 -0
  485. package/dist/services/plan-mode-fallback.d.ts +80 -0
  486. package/dist/services/plan-mode-fallback.d.ts.map +1 -0
  487. package/dist/services/plan-mode-fallback.js +307 -0
  488. package/dist/services/plan-mode-fallback.js.map +1 -0
  489. package/dist/services/plan-mode-handler.d.ts +42 -0
  490. package/dist/services/plan-mode-handler.d.ts.map +1 -0
  491. package/dist/services/plan-mode-handler.js +388 -0
  492. package/dist/services/plan-mode-handler.js.map +1 -0
  493. package/dist/services/plan-persistence.d.ts +203 -0
  494. package/dist/services/plan-persistence.d.ts.map +1 -0
  495. package/dist/services/plan-persistence.js +538 -0
  496. package/dist/services/plan-persistence.js.map +1 -0
  497. package/dist/services/prompt-preprocessor.d.ts +73 -0
  498. package/dist/services/prompt-preprocessor.d.ts.map +1 -0
  499. package/dist/services/prompt-preprocessor.js +146 -0
  500. package/dist/services/prompt-preprocessor.js.map +1 -0
  501. package/dist/services/rating-service.d.ts +84 -0
  502. package/dist/services/rating-service.d.ts.map +1 -0
  503. package/dist/services/rating-service.js +171 -0
  504. package/dist/services/rating-service.js.map +1 -0
  505. package/dist/services/rating-state-manager.d.ts +131 -0
  506. package/dist/services/rating-state-manager.d.ts.map +1 -0
  507. package/dist/services/rating-state-manager.js +270 -0
  508. package/dist/services/rating-state-manager.js.map +1 -0
  509. package/dist/services/sdk-runner.d.ts +113 -0
  510. package/dist/services/sdk-runner.d.ts.map +1 -0
  511. package/dist/services/sdk-runner.js +1424 -0
  512. package/dist/services/sdk-runner.js.map +1 -0
  513. package/dist/services/session-manager.d.ts +528 -0
  514. package/dist/services/session-manager.d.ts.map +1 -0
  515. package/dist/services/session-manager.js +1184 -0
  516. package/dist/services/session-manager.js.map +1 -0
  517. package/dist/services/shell-executor.d.ts +337 -0
  518. package/dist/services/shell-executor.d.ts.map +1 -0
  519. package/dist/services/shell-executor.js +1201 -0
  520. package/dist/services/shell-executor.js.map +1 -0
  521. package/dist/services/skill-service.d.ts +149 -0
  522. package/dist/services/skill-service.d.ts.map +1 -0
  523. package/dist/services/skill-service.js +594 -0
  524. package/dist/services/skill-service.js.map +1 -0
  525. package/dist/services/statusline-executor.d.ts +102 -0
  526. package/dist/services/statusline-executor.d.ts.map +1 -0
  527. package/dist/services/statusline-executor.js +305 -0
  528. package/dist/services/statusline-executor.js.map +1 -0
  529. package/dist/services/step-tracker.d.ts +356 -0
  530. package/dist/services/step-tracker.d.ts.map +1 -0
  531. package/dist/services/step-tracker.js +634 -0
  532. package/dist/services/step-tracker.js.map +1 -0
  533. package/dist/services/system-event-logger.d.ts +473 -0
  534. package/dist/services/system-event-logger.d.ts.map +1 -0
  535. package/dist/services/system-event-logger.js +790 -0
  536. package/dist/services/system-event-logger.js.map +1 -0
  537. package/dist/services/system-utility-detector.d.ts +91 -0
  538. package/dist/services/system-utility-detector.d.ts.map +1 -0
  539. package/dist/services/system-utility-detector.js +238 -0
  540. package/dist/services/system-utility-detector.js.map +1 -0
  541. package/dist/services/team-context-store.d.ts +100 -0
  542. package/dist/services/team-context-store.d.ts.map +1 -0
  543. package/dist/services/team-context-store.js +513 -0
  544. package/dist/services/team-context-store.js.map +1 -0
  545. package/dist/services/temp-file-service.d.ts +164 -0
  546. package/dist/services/temp-file-service.d.ts.map +1 -0
  547. package/dist/services/temp-file-service.js +303 -0
  548. package/dist/services/temp-file-service.js.map +1 -0
  549. package/dist/services/token-limit-enforcer.d.ts +53 -0
  550. package/dist/services/token-limit-enforcer.d.ts.map +1 -0
  551. package/dist/services/token-limit-enforcer.js +90 -0
  552. package/dist/services/token-limit-enforcer.js.map +1 -0
  553. package/dist/services/token-limit-store.d.ts +105 -0
  554. package/dist/services/token-limit-store.d.ts.map +1 -0
  555. package/dist/services/token-limit-store.js +288 -0
  556. package/dist/services/token-limit-store.js.map +1 -0
  557. package/dist/services/token-tracker.d.ts +290 -0
  558. package/dist/services/token-tracker.d.ts.map +1 -0
  559. package/dist/services/token-tracker.js +751 -0
  560. package/dist/services/token-tracker.js.map +1 -0
  561. package/dist/services/tool-registry.d.ts +302 -0
  562. package/dist/services/tool-registry.d.ts.map +1 -0
  563. package/dist/services/tool-registry.js +606 -0
  564. package/dist/services/tool-registry.js.map +1 -0
  565. package/dist/services/tools-logger.d.ts +152 -0
  566. package/dist/services/tools-logger.d.ts.map +1 -0
  567. package/dist/services/tools-logger.js +222 -0
  568. package/dist/services/tools-logger.js.map +1 -0
  569. package/dist/services/update-plan-handler.d.ts +56 -0
  570. package/dist/services/update-plan-handler.d.ts.map +1 -0
  571. package/dist/services/update-plan-handler.js +372 -0
  572. package/dist/services/update-plan-handler.js.map +1 -0
  573. package/dist/services/update-service.d.ts +197 -0
  574. package/dist/services/update-service.d.ts.map +1 -0
  575. package/dist/services/update-service.js +749 -0
  576. package/dist/services/update-service.js.map +1 -0
  577. package/dist/services/verifier.d.ts +113 -0
  578. package/dist/services/verifier.d.ts.map +1 -0
  579. package/dist/services/verifier.js +541 -0
  580. package/dist/services/verifier.js.map +1 -0
  581. package/dist/services/workflow-manager.d.ts +277 -0
  582. package/dist/services/workflow-manager.d.ts.map +1 -0
  583. package/dist/services/workflow-manager.js +616 -0
  584. package/dist/services/workflow-manager.js.map +1 -0
  585. package/dist/services/workflow-orchestrator.d.ts +148 -0
  586. package/dist/services/workflow-orchestrator.d.ts.map +1 -0
  587. package/dist/services/workflow-orchestrator.js +617 -0
  588. package/dist/services/workflow-orchestrator.js.map +1 -0
  589. package/dist/services/worktree-manager.d.ts +36 -0
  590. package/dist/services/worktree-manager.d.ts.map +1 -0
  591. package/dist/services/worktree-manager.js +185 -0
  592. package/dist/services/worktree-manager.js.map +1 -0
  593. package/dist/templates/ascii-art.d.ts +136 -0
  594. package/dist/templates/ascii-art.d.ts.map +1 -0
  595. package/dist/templates/ascii-art.js +286 -0
  596. package/dist/templates/ascii-art.js.map +1 -0
  597. package/dist/templates/help.d.ts +186 -0
  598. package/dist/templates/help.d.ts.map +1 -0
  599. package/dist/templates/help.js +588 -0
  600. package/dist/templates/help.js.map +1 -0
  601. package/dist/templates/prompts/workflow-prompts.d.ts +9 -0
  602. package/dist/templates/prompts/workflow-prompts.d.ts.map +1 -0
  603. package/dist/templates/prompts/workflow-prompts.js +9 -0
  604. package/dist/templates/prompts/workflow-prompts.js.map +1 -0
  605. package/dist/tools/agent-tools.d.ts +9 -0
  606. package/dist/tools/agent-tools.d.ts.map +1 -0
  607. package/dist/tools/agent-tools.js +349 -0
  608. package/dist/tools/agent-tools.js.map +1 -0
  609. package/dist/tools/edit-replacers.d.ts +90 -0
  610. package/dist/tools/edit-replacers.d.ts.map +1 -0
  611. package/dist/tools/edit-replacers.js +553 -0
  612. package/dist/tools/edit-replacers.js.map +1 -0
  613. package/dist/tools/file-tools.d.ts +13 -0
  614. package/dist/tools/file-tools.d.ts.map +1 -0
  615. package/dist/tools/file-tools.js +954 -0
  616. package/dist/tools/file-tools.js.map +1 -0
  617. package/dist/tools/git-tools.d.ts +9 -0
  618. package/dist/tools/git-tools.d.ts.map +1 -0
  619. package/dist/tools/git-tools.js +261 -0
  620. package/dist/tools/git-tools.js.map +1 -0
  621. package/dist/tools/index.d.ts +13 -0
  622. package/dist/tools/index.d.ts.map +1 -0
  623. package/dist/tools/index.js +70 -0
  624. package/dist/tools/index.js.map +1 -0
  625. package/dist/tools/network-tools.d.ts +8 -0
  626. package/dist/tools/network-tools.d.ts.map +1 -0
  627. package/dist/tools/network-tools.js +261 -0
  628. package/dist/tools/network-tools.js.map +1 -0
  629. package/dist/tools/openai-tools.d.ts +16 -0
  630. package/dist/tools/openai-tools.d.ts.map +1 -0
  631. package/dist/tools/openai-tools.js +385 -0
  632. package/dist/tools/openai-tools.js.map +1 -0
  633. package/dist/tools/plan-tools.d.ts +9 -0
  634. package/dist/tools/plan-tools.d.ts.map +1 -0
  635. package/dist/tools/plan-tools.js +223 -0
  636. package/dist/tools/plan-tools.js.map +1 -0
  637. package/dist/tools/schedule-tools.d.ts +9 -0
  638. package/dist/tools/schedule-tools.d.ts.map +1 -0
  639. package/dist/tools/schedule-tools.js +405 -0
  640. package/dist/tools/schedule-tools.js.map +1 -0
  641. package/dist/tools/search-tools.d.ts +8 -0
  642. package/dist/tools/search-tools.d.ts.map +1 -0
  643. package/dist/tools/search-tools.js +357 -0
  644. package/dist/tools/search-tools.js.map +1 -0
  645. package/dist/tools/shared-utils.d.ts +91 -0
  646. package/dist/tools/shared-utils.d.ts.map +1 -0
  647. package/dist/tools/shared-utils.js +385 -0
  648. package/dist/tools/shared-utils.js.map +1 -0
  649. package/dist/tools/shell-tools.d.ts +9 -0
  650. package/dist/tools/shell-tools.d.ts.map +1 -0
  651. package/dist/tools/shell-tools.js +409 -0
  652. package/dist/tools/shell-tools.js.map +1 -0
  653. package/dist/tools/skill-tools.d.ts +13 -0
  654. package/dist/tools/skill-tools.d.ts.map +1 -0
  655. package/dist/tools/skill-tools.js +244 -0
  656. package/dist/tools/skill-tools.js.map +1 -0
  657. package/dist/tools/swarm-tools.d.ts +9 -0
  658. package/dist/tools/swarm-tools.d.ts.map +1 -0
  659. package/dist/tools/swarm-tools.js +422 -0
  660. package/dist/tools/swarm-tools.js.map +1 -0
  661. package/dist/tools/user-tools.d.ts +13 -0
  662. package/dist/tools/user-tools.d.ts.map +1 -0
  663. package/dist/tools/user-tools.js +232 -0
  664. package/dist/tools/user-tools.js.map +1 -0
  665. package/dist/types/agent-process.d.ts +244 -0
  666. package/dist/types/agent-process.d.ts.map +1 -0
  667. package/dist/types/agent-process.js +93 -0
  668. package/dist/types/agent-process.js.map +1 -0
  669. package/dist/types/agent.d.ts +358 -0
  670. package/dist/types/agent.d.ts.map +1 -0
  671. package/dist/types/agent.js +171 -0
  672. package/dist/types/agent.js.map +1 -0
  673. package/dist/types/anthropic.d.ts +438 -0
  674. package/dist/types/anthropic.d.ts.map +1 -0
  675. package/dist/types/anthropic.js +9 -0
  676. package/dist/types/anthropic.js.map +1 -0
  677. package/dist/types/approval.d.ts +332 -0
  678. package/dist/types/approval.d.ts.map +1 -0
  679. package/dist/types/approval.js +44 -0
  680. package/dist/types/approval.js.map +1 -0
  681. package/dist/types/autocomplete.d.ts +57 -0
  682. package/dist/types/autocomplete.d.ts.map +1 -0
  683. package/dist/types/autocomplete.js +7 -0
  684. package/dist/types/autocomplete.js.map +1 -0
  685. package/dist/types/chat-archive.d.ts +161 -0
  686. package/dist/types/chat-archive.d.ts.map +1 -0
  687. package/dist/types/chat-archive.js +36 -0
  688. package/dist/types/chat-archive.js.map +1 -0
  689. package/dist/types/config.d.ts +268 -0
  690. package/dist/types/config.d.ts.map +1 -0
  691. package/dist/types/config.js +188 -0
  692. package/dist/types/config.js.map +1 -0
  693. package/dist/types/consent.d.ts +191 -0
  694. package/dist/types/consent.d.ts.map +1 -0
  695. package/dist/types/consent.js +119 -0
  696. package/dist/types/consent.js.map +1 -0
  697. package/dist/types/custom-command.d.ts +139 -0
  698. package/dist/types/custom-command.d.ts.map +1 -0
  699. package/dist/types/custom-command.js +7 -0
  700. package/dist/types/custom-command.js.map +1 -0
  701. package/dist/types/git.d.ts +20 -0
  702. package/dist/types/git.d.ts.map +1 -0
  703. package/dist/types/git.js +2 -0
  704. package/dist/types/git.js.map +1 -0
  705. package/dist/types/hook.d.ts +342 -0
  706. package/dist/types/hook.d.ts.map +1 -0
  707. package/dist/types/hook.js +84 -0
  708. package/dist/types/hook.js.map +1 -0
  709. package/dist/types/index.d.ts +86 -0
  710. package/dist/types/index.d.ts.map +1 -0
  711. package/dist/types/index.js +71 -0
  712. package/dist/types/index.js.map +1 -0
  713. package/dist/types/mcp.d.ts +456 -0
  714. package/dist/types/mcp.d.ts.map +1 -0
  715. package/dist/types/mcp.js +94 -0
  716. package/dist/types/mcp.js.map +1 -0
  717. package/dist/types/rating.d.ts +110 -0
  718. package/dist/types/rating.d.ts.map +1 -0
  719. package/dist/types/rating.js +53 -0
  720. package/dist/types/rating.js.map +1 -0
  721. package/dist/types/schedule.d.ts +91 -0
  722. package/dist/types/schedule.d.ts.map +1 -0
  723. package/dist/types/schedule.js +8 -0
  724. package/dist/types/schedule.js.map +1 -0
  725. package/dist/types/session.d.ts +361 -0
  726. package/dist/types/session.d.ts.map +1 -0
  727. package/dist/types/session.js +9 -0
  728. package/dist/types/session.js.map +1 -0
  729. package/dist/types/skill.d.ts +258 -0
  730. package/dist/types/skill.d.ts.map +1 -0
  731. package/dist/types/skill.js +79 -0
  732. package/dist/types/skill.js.map +1 -0
  733. package/dist/types/statusline.d.ts +212 -0
  734. package/dist/types/statusline.d.ts.map +1 -0
  735. package/dist/types/statusline.js +8 -0
  736. package/dist/types/statusline.js.map +1 -0
  737. package/dist/types/stream.d.ts +61 -0
  738. package/dist/types/stream.d.ts.map +1 -0
  739. package/dist/types/stream.js +17 -0
  740. package/dist/types/stream.js.map +1 -0
  741. package/dist/types/swarm.d.ts +132 -0
  742. package/dist/types/swarm.d.ts.map +1 -0
  743. package/dist/types/swarm.js +21 -0
  744. package/dist/types/swarm.js.map +1 -0
  745. package/dist/types/token-limits.d.ts +107 -0
  746. package/dist/types/token-limits.d.ts.map +1 -0
  747. package/dist/types/token-limits.js +57 -0
  748. package/dist/types/token-limits.js.map +1 -0
  749. package/dist/types/token.d.ts +329 -0
  750. package/dist/types/token.d.ts.map +1 -0
  751. package/dist/types/token.js +9 -0
  752. package/dist/types/token.js.map +1 -0
  753. package/dist/types/update.d.ts +189 -0
  754. package/dist/types/update.d.ts.map +1 -0
  755. package/dist/types/update.js +55 -0
  756. package/dist/types/update.js.map +1 -0
  757. package/dist/types/workflow.d.ts +396 -0
  758. package/dist/types/workflow.d.ts.map +1 -0
  759. package/dist/types/workflow.js +46 -0
  760. package/dist/types/workflow.js.map +1 -0
  761. package/dist/ui/App.d.ts +62 -0
  762. package/dist/ui/App.d.ts.map +1 -0
  763. package/dist/ui/App.js +511 -0
  764. package/dist/ui/App.js.map +1 -0
  765. package/dist/ui/InteractiveSession.d.ts +34 -0
  766. package/dist/ui/InteractiveSession.d.ts.map +1 -0
  767. package/dist/ui/InteractiveSession.js +3611 -0
  768. package/dist/ui/InteractiveSession.js.map +1 -0
  769. package/dist/ui/MCPApprovalPrompt.d.ts +27 -0
  770. package/dist/ui/MCPApprovalPrompt.d.ts.map +1 -0
  771. package/dist/ui/MCPApprovalPrompt.js +51 -0
  772. package/dist/ui/MCPApprovalPrompt.js.map +1 -0
  773. package/dist/ui/SetupWizard.d.ts +26 -0
  774. package/dist/ui/SetupWizard.d.ts.map +1 -0
  775. package/dist/ui/SetupWizard.js +396 -0
  776. package/dist/ui/SetupWizard.js.map +1 -0
  777. package/dist/ui/components/AgentCreationWizard.d.ts +36 -0
  778. package/dist/ui/components/AgentCreationWizard.d.ts.map +1 -0
  779. package/dist/ui/components/AgentCreationWizard.js +619 -0
  780. package/dist/ui/components/AgentCreationWizard.js.map +1 -0
  781. package/dist/ui/components/AgentManager.d.ts +41 -0
  782. package/dist/ui/components/AgentManager.d.ts.map +1 -0
  783. package/dist/ui/components/AgentManager.js +343 -0
  784. package/dist/ui/components/AgentManager.js.map +1 -0
  785. package/dist/ui/components/ApprovalDialog.d.ts +18 -0
  786. package/dist/ui/components/ApprovalDialog.d.ts.map +1 -0
  787. package/dist/ui/components/ApprovalDialog.js +439 -0
  788. package/dist/ui/components/ApprovalDialog.js.map +1 -0
  789. package/dist/ui/components/AsciiArt.d.ts +54 -0
  790. package/dist/ui/components/AsciiArt.d.ts.map +1 -0
  791. package/dist/ui/components/AsciiArt.js +89 -0
  792. package/dist/ui/components/AsciiArt.js.map +1 -0
  793. package/dist/ui/components/ClarificationWizard.d.ts +36 -0
  794. package/dist/ui/components/ClarificationWizard.d.ts.map +1 -0
  795. package/dist/ui/components/ClarificationWizard.js +407 -0
  796. package/dist/ui/components/ClarificationWizard.js.map +1 -0
  797. package/dist/ui/components/CompassSpinner.d.ts +15 -0
  798. package/dist/ui/components/CompassSpinner.d.ts.map +1 -0
  799. package/dist/ui/components/CompassSpinner.js +50 -0
  800. package/dist/ui/components/CompassSpinner.js.map +1 -0
  801. package/dist/ui/components/ConfirmationSelector.d.ts +45 -0
  802. package/dist/ui/components/ConfirmationSelector.d.ts.map +1 -0
  803. package/dist/ui/components/ConfirmationSelector.js +106 -0
  804. package/dist/ui/components/ConfirmationSelector.js.map +1 -0
  805. package/dist/ui/components/ContextUsage.d.ts +76 -0
  806. package/dist/ui/components/ContextUsage.d.ts.map +1 -0
  807. package/dist/ui/components/ContextUsage.js +188 -0
  808. package/dist/ui/components/ContextUsage.js.map +1 -0
  809. package/dist/ui/components/DiffPreview.d.ts +13 -0
  810. package/dist/ui/components/DiffPreview.d.ts.map +1 -0
  811. package/dist/ui/components/DiffPreview.js +30 -0
  812. package/dist/ui/components/DiffPreview.js.map +1 -0
  813. package/dist/ui/components/ExecutionModeSelector.d.ts +45 -0
  814. package/dist/ui/components/ExecutionModeSelector.d.ts.map +1 -0
  815. package/dist/ui/components/ExecutionModeSelector.js +120 -0
  816. package/dist/ui/components/ExecutionModeSelector.js.map +1 -0
  817. package/dist/ui/components/FileTree.d.ts +47 -0
  818. package/dist/ui/components/FileTree.d.ts.map +1 -0
  819. package/dist/ui/components/FileTree.js +258 -0
  820. package/dist/ui/components/FileTree.js.map +1 -0
  821. package/dist/ui/components/HelpMenu.d.ts +49 -0
  822. package/dist/ui/components/HelpMenu.d.ts.map +1 -0
  823. package/dist/ui/components/HelpMenu.js +91 -0
  824. package/dist/ui/components/HelpMenu.js.map +1 -0
  825. package/dist/ui/components/InterleavedStream.d.ts +42 -0
  826. package/dist/ui/components/InterleavedStream.d.ts.map +1 -0
  827. package/dist/ui/components/InterleavedStream.js +1500 -0
  828. package/dist/ui/components/InterleavedStream.js.map +1 -0
  829. package/dist/ui/components/ModelSelector.d.ts +81 -0
  830. package/dist/ui/components/ModelSelector.d.ts.map +1 -0
  831. package/dist/ui/components/ModelSelector.js +305 -0
  832. package/dist/ui/components/ModelSelector.js.map +1 -0
  833. package/dist/ui/components/PlanApprovalDialog.d.ts +21 -0
  834. package/dist/ui/components/PlanApprovalDialog.d.ts.map +1 -0
  835. package/dist/ui/components/PlanApprovalDialog.js +189 -0
  836. package/dist/ui/components/PlanApprovalDialog.js.map +1 -0
  837. package/dist/ui/components/PlanExecutionTracker.d.ts +53 -0
  838. package/dist/ui/components/PlanExecutionTracker.d.ts.map +1 -0
  839. package/dist/ui/components/PlanExecutionTracker.js +113 -0
  840. package/dist/ui/components/PlanExecutionTracker.js.map +1 -0
  841. package/dist/ui/components/ProgressIndicator.d.ts +151 -0
  842. package/dist/ui/components/ProgressIndicator.d.ts.map +1 -0
  843. package/dist/ui/components/ProgressIndicator.js +171 -0
  844. package/dist/ui/components/ProgressIndicator.js.map +1 -0
  845. package/dist/ui/components/Prompt.d.ts +47 -0
  846. package/dist/ui/components/Prompt.d.ts.map +1 -0
  847. package/dist/ui/components/Prompt.js +632 -0
  848. package/dist/ui/components/Prompt.js.map +1 -0
  849. package/dist/ui/components/RatingPanel.d.ts +45 -0
  850. package/dist/ui/components/RatingPanel.d.ts.map +1 -0
  851. package/dist/ui/components/RatingPanel.js +119 -0
  852. package/dist/ui/components/RatingPanel.js.map +1 -0
  853. package/dist/ui/components/StatusLine.d.ts +43 -0
  854. package/dist/ui/components/StatusLine.d.ts.map +1 -0
  855. package/dist/ui/components/StatusLine.js +44 -0
  856. package/dist/ui/components/StatusLine.js.map +1 -0
  857. package/dist/ui/components/StreamingResponse.d.ts +45 -0
  858. package/dist/ui/components/StreamingResponse.d.ts.map +1 -0
  859. package/dist/ui/components/StreamingResponse.js +56 -0
  860. package/dist/ui/components/StreamingResponse.js.map +1 -0
  861. package/dist/ui/components/TokenUsage.d.ts +89 -0
  862. package/dist/ui/components/TokenUsage.d.ts.map +1 -0
  863. package/dist/ui/components/TokenUsage.js +99 -0
  864. package/dist/ui/components/TokenUsage.js.map +1 -0
  865. package/dist/ui/components/ToolSummary.d.ts +77 -0
  866. package/dist/ui/components/ToolSummary.d.ts.map +1 -0
  867. package/dist/ui/components/ToolSummary.js +162 -0
  868. package/dist/ui/components/ToolSummary.js.map +1 -0
  869. package/dist/ui/components/UpdateNotification.d.ts +65 -0
  870. package/dist/ui/components/UpdateNotification.d.ts.map +1 -0
  871. package/dist/ui/components/UpdateNotification.js +166 -0
  872. package/dist/ui/components/UpdateNotification.js.map +1 -0
  873. package/dist/ui/diff-renderer.d.ts +18 -0
  874. package/dist/ui/diff-renderer.d.ts.map +1 -0
  875. package/dist/ui/diff-renderer.js +206 -0
  876. package/dist/ui/diff-renderer.js.map +1 -0
  877. package/dist/ui/themes/markdown-theme.d.ts +48 -0
  878. package/dist/ui/themes/markdown-theme.d.ts.map +1 -0
  879. package/dist/ui/themes/markdown-theme.js +79 -0
  880. package/dist/ui/themes/markdown-theme.js.map +1 -0
  881. package/dist/ui/themes/ui-theme.d.ts +301 -0
  882. package/dist/ui/themes/ui-theme.d.ts.map +1 -0
  883. package/dist/ui/themes/ui-theme.js +204 -0
  884. package/dist/ui/themes/ui-theme.js.map +1 -0
  885. package/dist/utils/attachment-handler.d.ts +129 -0
  886. package/dist/utils/attachment-handler.d.ts.map +1 -0
  887. package/dist/utils/attachment-handler.js +280 -0
  888. package/dist/utils/attachment-handler.js.map +1 -0
  889. package/dist/utils/backup-cleanup.d.ts +28 -0
  890. package/dist/utils/backup-cleanup.d.ts.map +1 -0
  891. package/dist/utils/backup-cleanup.js +99 -0
  892. package/dist/utils/backup-cleanup.js.map +1 -0
  893. package/dist/utils/clipboard-handler.d.ts +82 -0
  894. package/dist/utils/clipboard-handler.d.ts.map +1 -0
  895. package/dist/utils/clipboard-handler.js +311 -0
  896. package/dist/utils/clipboard-handler.js.map +1 -0
  897. package/dist/utils/cloud-detection.d.ts +14 -0
  898. package/dist/utils/cloud-detection.d.ts.map +1 -0
  899. package/dist/utils/cloud-detection.js +92 -0
  900. package/dist/utils/cloud-detection.js.map +1 -0
  901. package/dist/utils/command-parser.d.ts +56 -0
  902. package/dist/utils/command-parser.d.ts.map +1 -0
  903. package/dist/utils/command-parser.js +206 -0
  904. package/dist/utils/command-parser.js.map +1 -0
  905. package/dist/utils/console-capture.d.ts +30 -0
  906. package/dist/utils/console-capture.d.ts.map +1 -0
  907. package/dist/utils/console-capture.js +88 -0
  908. package/dist/utils/console-capture.js.map +1 -0
  909. package/dist/utils/cron-parser.d.ts +52 -0
  910. package/dist/utils/cron-parser.d.ts.map +1 -0
  911. package/dist/utils/cron-parser.js +455 -0
  912. package/dist/utils/cron-parser.js.map +1 -0
  913. package/dist/utils/crypto.d.ts +351 -0
  914. package/dist/utils/crypto.d.ts.map +1 -0
  915. package/dist/utils/crypto.js +615 -0
  916. package/dist/utils/crypto.js.map +1 -0
  917. package/dist/utils/diff.d.ts +311 -0
  918. package/dist/utils/diff.d.ts.map +1 -0
  919. package/dist/utils/diff.js +566 -0
  920. package/dist/utils/diff.js.map +1 -0
  921. package/dist/utils/editor.d.ts +12 -0
  922. package/dist/utils/editor.d.ts.map +1 -0
  923. package/dist/utils/editor.js +30 -0
  924. package/dist/utils/editor.js.map +1 -0
  925. package/dist/utils/file-system.d.ts +512 -0
  926. package/dist/utils/file-system.d.ts.map +1 -0
  927. package/dist/utils/file-system.js +798 -0
  928. package/dist/utils/file-system.js.map +1 -0
  929. package/dist/utils/format.d.ts +318 -0
  930. package/dist/utils/format.d.ts.map +1 -0
  931. package/dist/utils/format.js +587 -0
  932. package/dist/utils/format.js.map +1 -0
  933. package/dist/utils/ignore-patterns.d.ts +93 -0
  934. package/dist/utils/ignore-patterns.d.ts.map +1 -0
  935. package/dist/utils/ignore-patterns.js +710 -0
  936. package/dist/utils/ignore-patterns.js.map +1 -0
  937. package/dist/utils/log-cleanup.d.ts +16 -0
  938. package/dist/utils/log-cleanup.d.ts.map +1 -0
  939. package/dist/utils/log-cleanup.js +51 -0
  940. package/dist/utils/log-cleanup.js.map +1 -0
  941. package/dist/utils/logger.d.ts +305 -0
  942. package/dist/utils/logger.d.ts.map +1 -0
  943. package/dist/utils/logger.js +447 -0
  944. package/dist/utils/logger.js.map +1 -0
  945. package/dist/utils/path.d.ts +406 -0
  946. package/dist/utils/path.d.ts.map +1 -0
  947. package/dist/utils/path.js +549 -0
  948. package/dist/utils/path.js.map +1 -0
  949. package/dist/utils/schedule-file.d.ts +63 -0
  950. package/dist/utils/schedule-file.d.ts.map +1 -0
  951. package/dist/utils/schedule-file.js +244 -0
  952. package/dist/utils/schedule-file.js.map +1 -0
  953. package/dist/utils/task-id.d.ts +29 -0
  954. package/dist/utils/task-id.d.ts.map +1 -0
  955. package/dist/utils/task-id.js +53 -0
  956. package/dist/utils/task-id.js.map +1 -0
  957. package/dist/utils/temp-cleanup.d.ts +46 -0
  958. package/dist/utils/temp-cleanup.d.ts.map +1 -0
  959. package/dist/utils/temp-cleanup.js +95 -0
  960. package/dist/utils/temp-cleanup.js.map +1 -0
  961. package/dist/utils/terminal-output.d.ts +34 -0
  962. package/dist/utils/terminal-output.d.ts.map +1 -0
  963. package/dist/utils/terminal-output.js +40 -0
  964. package/dist/utils/terminal-output.js.map +1 -0
  965. package/dist/utils/token-counter.d.ts +224 -0
  966. package/dist/utils/token-counter.d.ts.map +1 -0
  967. package/dist/utils/token-counter.js +332 -0
  968. package/dist/utils/token-counter.js.map +1 -0
  969. package/dist/utils/tool-mapper.d.ts +70 -0
  970. package/dist/utils/tool-mapper.d.ts.map +1 -0
  971. package/dist/utils/tool-mapper.js +234 -0
  972. package/dist/utils/tool-mapper.js.map +1 -0
  973. package/package.json +2 -1
  974. package/scripts/preuninstall.mjs +99 -0
@@ -0,0 +1,1026 @@
1
+ /**
2
+ * Slash /mcp command implementation for interactive MCP server management.
3
+ *
4
+ * This command provides an interactive interface for:
5
+ * - Viewing connected MCP servers and their status
6
+ * - Authenticating with OAuth-enabled servers
7
+ * - Managing server connections
8
+ * - Viewing available tools, resources, and prompts
9
+ *
10
+ * @example
11
+ * ```
12
+ * /mcp - Show MCP server status overview
13
+ * /mcp servers - List all configured servers
14
+ * /mcp tools - List all available MCP tools
15
+ * /mcp connect - Connect to all configured servers
16
+ * /mcp auth - Start authentication for a server
17
+ * ```
18
+ */
19
+ import chalk from 'chalk';
20
+ import { exec } from 'child_process';
21
+ import { getMCPServerManager } from '../../services/mcp-server-manager.js';
22
+ import { getMCPConfigManager } from '../../services/mcp-config-manager.js';
23
+ import { getMCPOAuthService, getProviderInfo, getFallbackConfig, checkLocalFigmaServer, } from '../../services/mcp-oauth-service.js';
24
+ import { logger } from '../../utils/logger.js';
25
+ import { registerSlashCommand, } from '../../core/slash-command-handler.js';
26
+ import { isMCPHttpConfig, isMCPSseConfig, isMCPStdioConfig, } from '../../types/mcp.js';
27
+ import { getEventEmitter } from '../../core/event-emitter.js';
28
+ /**
29
+ * Opens a URL in the user's default browser.
30
+ * Uses platform-specific commands: start (Windows), open (macOS), xdg-open (Linux)
31
+ */
32
+ function openInBrowser(url) {
33
+ return new Promise((resolve) => {
34
+ const platform = process.platform;
35
+ let command;
36
+ if (platform === 'win32') {
37
+ // Windows - use start command, wrap URL in quotes to handle special chars
38
+ command = `start "" "${url}"`;
39
+ }
40
+ else if (platform === 'darwin') {
41
+ // macOS
42
+ command = `open "${url}"`;
43
+ }
44
+ else {
45
+ // Linux and others
46
+ command = `xdg-open "${url}"`;
47
+ }
48
+ exec(command, (error) => {
49
+ if (error) {
50
+ logger.debug(`Failed to open browser: ${error.message}`);
51
+ resolve(false);
52
+ }
53
+ else {
54
+ resolve(true);
55
+ }
56
+ });
57
+ });
58
+ }
59
+ /**
60
+ * Emits output for the mcp command via the event system
61
+ * This allows the UI to capture and display the output in real-time
62
+ */
63
+ function emitOutput(message, isError = false) {
64
+ const eventEmitter = getEventEmitter();
65
+ eventEmitter.emit('slash-command-output', {
66
+ command: 'mcp',
67
+ message,
68
+ isError,
69
+ });
70
+ }
71
+ /**
72
+ * Formats server type for display.
73
+ */
74
+ function formatServerType(type) {
75
+ switch (type) {
76
+ case 'http':
77
+ return chalk.cyan('HTTP');
78
+ case 'sse':
79
+ return chalk.yellow('SSE');
80
+ case 'stdio':
81
+ return chalk.green('stdio');
82
+ default:
83
+ return chalk.gray(type);
84
+ }
85
+ }
86
+ /**
87
+ * Displays the MCP status overview.
88
+ */
89
+ async function displayStatus() {
90
+ const serverManager = getMCPServerManager();
91
+ const states = serverManager.getAllServerStates();
92
+ emitOutput('');
93
+ emitOutput(chalk.bold('MCP Server Status'));
94
+ emitOutput(chalk.dim('─'.repeat(50)));
95
+ if (states.length === 0) {
96
+ emitOutput('');
97
+ emitOutput(chalk.gray('No MCP servers configured.'));
98
+ emitOutput('');
99
+ emitOutput(chalk.gray('Add servers using:'));
100
+ emitOutput(chalk.gray(' compass mcp add --transport http <name> <url>'));
101
+ emitOutput('');
102
+ return;
103
+ }
104
+ const connected = states.filter((s) => s.status === 'connected').length;
105
+ const total = states.length;
106
+ const totalTools = serverManager.getAllTools().length;
107
+ const totalResources = serverManager.getAllResources().length;
108
+ const totalPrompts = serverManager.getAllPrompts().length;
109
+ emitOutput('');
110
+ emitOutput(`${chalk.gray('Connected:')} ${connected}/${total} servers`);
111
+ emitOutput(`${chalk.gray('Tools:')} ${totalTools}`);
112
+ emitOutput(`${chalk.gray('Resources:')} ${totalResources}`);
113
+ emitOutput(`${chalk.gray('Prompts:')} ${totalPrompts}`);
114
+ emitOutput('');
115
+ let hasUnapproved = false;
116
+ let hasAuthRequired = false;
117
+ let hasErrors = false;
118
+ for (const state of states) {
119
+ const statusIndicator = state.status === 'connected'
120
+ ? chalk.green('●')
121
+ : state.status === 'error'
122
+ ? chalk.red('●')
123
+ : chalk.gray('○');
124
+ emitOutput(`${statusIndicator} ${chalk.bold(state.config.name)} ${chalk.gray(`(${formatServerType(state.config.type)})`)}`);
125
+ if (state.status === 'connected') {
126
+ emitOutput(` ${chalk.gray('Tools:')} ${state.tools.length}, ${chalk.gray('Resources:')} ${state.resources.length}, ${chalk.gray('Prompts:')} ${state.prompts.length}`);
127
+ }
128
+ else if (state.status === 'error') {
129
+ emitOutput(` ${chalk.red(state.error || 'Unknown error')}`);
130
+ hasErrors = true;
131
+ }
132
+ else if (state.error) {
133
+ emitOutput(` ${chalk.yellow(state.error)}`);
134
+ if (state.error === 'Awaiting approval') {
135
+ hasUnapproved = true;
136
+ }
137
+ if (state.error.includes('Authentication required')) {
138
+ hasAuthRequired = true;
139
+ }
140
+ }
141
+ }
142
+ emitOutput('');
143
+ if (hasErrors) {
144
+ emitOutput(chalk.yellow('Tip: Reconnect failed servers with /mcp reconnect <server-name>'));
145
+ emitOutput('');
146
+ }
147
+ if (hasUnapproved) {
148
+ emitOutput(chalk.yellow('Tip: Approve project servers with /mcp approve <server-name>'));
149
+ emitOutput('');
150
+ }
151
+ if (hasAuthRequired) {
152
+ emitOutput(chalk.yellow('Tip: Authenticate servers with /mcp auth <server-name> <token>'));
153
+ emitOutput('');
154
+ }
155
+ emitOutput(chalk.gray('Commands: /mcp servers | /mcp tools | /mcp connect | /mcp approve'));
156
+ emitOutput('');
157
+ }
158
+ /**
159
+ * Lists all configured servers.
160
+ */
161
+ async function listServers() {
162
+ const configManager = getMCPConfigManager();
163
+ await configManager.load(process.cwd());
164
+ const servers = configManager.getAllServers(process.cwd());
165
+ emitOutput('');
166
+ emitOutput(chalk.bold('Configured MCP Servers'));
167
+ emitOutput(chalk.dim('─'.repeat(50)));
168
+ if (servers.length === 0) {
169
+ emitOutput(chalk.gray('No servers configured.'));
170
+ emitOutput('');
171
+ return;
172
+ }
173
+ for (const server of servers) {
174
+ const typeLabel = formatServerType(server.type);
175
+ const scopeLabel = chalk.gray(`[${server.scope || 'local'}]`);
176
+ emitOutput('');
177
+ emitOutput(`${chalk.bold(server.name)} ${typeLabel} ${scopeLabel}`);
178
+ if (isMCPHttpConfig(server) || isMCPSseConfig(server)) {
179
+ emitOutput(` ${chalk.gray('URL:')} ${server.url}`);
180
+ }
181
+ else if (isMCPStdioConfig(server)) {
182
+ const cmd = server.args
183
+ ? `${server.command} ${server.args.join(' ')}`
184
+ : server.command;
185
+ emitOutput(` ${chalk.gray('Command:')} ${cmd}`);
186
+ }
187
+ if (server.source === 'plugin') {
188
+ emitOutput(` ${chalk.gray('Plugin:')} ${server.pluginName}`);
189
+ }
190
+ }
191
+ emitOutput('');
192
+ }
193
+ /**
194
+ * Lists all available tools from connected servers.
195
+ */
196
+ async function listTools() {
197
+ const serverManager = getMCPServerManager();
198
+ const tools = serverManager.getAllTools();
199
+ emitOutput('');
200
+ emitOutput(chalk.bold('Available MCP Tools'));
201
+ emitOutput(chalk.dim('─'.repeat(50)));
202
+ if (tools.length === 0) {
203
+ emitOutput(chalk.gray('No tools available.'));
204
+ emitOutput(chalk.gray('Connect to MCP servers first with /mcp connect'));
205
+ emitOutput('');
206
+ return;
207
+ }
208
+ // Group tools by server
209
+ const toolsByServer = new Map();
210
+ for (const tool of tools) {
211
+ const serverName = tool.serverName || 'unknown';
212
+ if (!toolsByServer.has(serverName)) {
213
+ toolsByServer.set(serverName, []);
214
+ }
215
+ toolsByServer.get(serverName).push(tool);
216
+ }
217
+ for (const [serverName, serverTools] of toolsByServer) {
218
+ emitOutput('');
219
+ emitOutput(chalk.bold.cyan(serverName));
220
+ for (const tool of serverTools) {
221
+ emitOutput(` ${chalk.white(tool.name)}`);
222
+ if (tool.description) {
223
+ emitOutput(` ${chalk.gray(tool.description)}`);
224
+ }
225
+ }
226
+ }
227
+ emitOutput('');
228
+ emitOutput(chalk.gray(`Total: ${tools.length} tool(s)`));
229
+ emitOutput('');
230
+ }
231
+ /**
232
+ * Lists all available resources from connected servers.
233
+ */
234
+ async function listResources() {
235
+ const serverManager = getMCPServerManager();
236
+ const resources = serverManager.getAllResources();
237
+ emitOutput('');
238
+ emitOutput(chalk.bold('Available MCP Resources'));
239
+ emitOutput(chalk.dim('─'.repeat(50)));
240
+ if (resources.length === 0) {
241
+ emitOutput(chalk.gray('No resources available.'));
242
+ emitOutput('');
243
+ return;
244
+ }
245
+ for (const resource of resources) {
246
+ emitOutput(` ${chalk.white(resource.name)} ${chalk.gray(`(${resource.serverName})`)}`);
247
+ emitOutput(` ${chalk.gray('URI:')} ${resource.uri}`);
248
+ if (resource.description) {
249
+ emitOutput(` ${chalk.gray(resource.description)}`);
250
+ }
251
+ }
252
+ emitOutput('');
253
+ }
254
+ /**
255
+ * Lists all available prompts from connected servers.
256
+ */
257
+ async function listPrompts() {
258
+ const serverManager = getMCPServerManager();
259
+ const prompts = serverManager.getAllPrompts();
260
+ emitOutput('');
261
+ emitOutput(chalk.bold('Available MCP Prompts'));
262
+ emitOutput(chalk.dim('─'.repeat(50)));
263
+ if (prompts.length === 0) {
264
+ emitOutput(chalk.gray('No prompts available.'));
265
+ emitOutput('');
266
+ return;
267
+ }
268
+ for (const prompt of prompts) {
269
+ emitOutput(` ${chalk.white(prompt.name)} ${chalk.gray(`(${prompt.serverName})`)}`);
270
+ if (prompt.description) {
271
+ emitOutput(` ${chalk.gray(prompt.description)}`);
272
+ }
273
+ if (prompt.arguments && prompt.arguments.length > 0) {
274
+ const argNames = prompt.arguments
275
+ .map((a) => (a.required ? a.name : `[${a.name}]`))
276
+ .join(', ');
277
+ emitOutput(` ${chalk.gray('Args:')} ${argNames}`);
278
+ }
279
+ }
280
+ emitOutput('');
281
+ }
282
+ /**
283
+ * Connects to all configured servers.
284
+ */
285
+ async function connectServers() {
286
+ emitOutput('');
287
+ emitOutput(chalk.cyan('Connecting to MCP servers...'));
288
+ try {
289
+ const serverManager = getMCPServerManager();
290
+ await serverManager.initialize(process.cwd());
291
+ await serverManager.connectAllServers();
292
+ const connected = serverManager.getConnectedCount();
293
+ const total = serverManager.getTotalCount();
294
+ emitOutput('');
295
+ if (connected === total) {
296
+ emitOutput(chalk.green(`All ${total} server(s) connected successfully.`));
297
+ }
298
+ else {
299
+ emitOutput(chalk.yellow(`Connected ${connected}/${total} server(s).`));
300
+ emitOutput(chalk.gray('Use /mcp to see server status and errors.'));
301
+ }
302
+ emitOutput('');
303
+ }
304
+ catch (error) {
305
+ const errorMessage = error instanceof Error ? error.message : String(error);
306
+ emitOutput(chalk.red(`Failed to connect: ${errorMessage}`));
307
+ emitOutput('');
308
+ }
309
+ }
310
+ /**
311
+ * Disconnects from all servers.
312
+ */
313
+ async function disconnectServers() {
314
+ emitOutput('');
315
+ emitOutput(chalk.cyan('Disconnecting from MCP servers...'));
316
+ try {
317
+ const serverManager = getMCPServerManager();
318
+ await serverManager.disconnectAllServers();
319
+ emitOutput(chalk.green('Disconnected from all servers.'));
320
+ emitOutput('');
321
+ }
322
+ catch (error) {
323
+ const errorMessage = error instanceof Error ? error.message : String(error);
324
+ emitOutput(chalk.red(`Failed to disconnect: ${errorMessage}`));
325
+ emitOutput('');
326
+ }
327
+ }
328
+ /**
329
+ * Displays fallback server information and setup instructions.
330
+ */
331
+ async function displayFallbackInfo(serverUrl, serverName) {
332
+ const fallback = getFallbackConfig(serverUrl);
333
+ const provider = getProviderInfo(serverUrl);
334
+ if (!fallback || !provider) {
335
+ return;
336
+ }
337
+ emitOutput('');
338
+ emitOutput(chalk.yellow('━'.repeat(50)));
339
+ emitOutput(chalk.yellow.bold(`OAuth Restricted: ${provider.name}`));
340
+ emitOutput(chalk.yellow('━'.repeat(50)));
341
+ emitOutput('');
342
+ emitOutput(chalk.white(fallback.reason));
343
+ emitOutput('');
344
+ if (provider.approvedClients && provider.approvedClients.length > 0) {
345
+ emitOutput(chalk.gray('Approved clients: ') + provider.approvedClients.join(', '));
346
+ emitOutput('');
347
+ }
348
+ emitOutput(chalk.cyan.bold(`Alternative: ${fallback.name}`));
349
+ emitOutput('');
350
+ if (fallback.requirements && fallback.requirements.length > 0) {
351
+ emitOutput(chalk.white('Requirements:'));
352
+ for (const req of fallback.requirements) {
353
+ emitOutput(chalk.gray(` • ${req}`));
354
+ }
355
+ emitOutput('');
356
+ }
357
+ if (fallback.setupInstructions && fallback.setupInstructions.length > 0) {
358
+ emitOutput(chalk.white('Setup Instructions:'));
359
+ for (const instruction of fallback.setupInstructions) {
360
+ emitOutput(chalk.gray(` ${instruction}`));
361
+ }
362
+ emitOutput('');
363
+ }
364
+ // Check if local Figma server is available
365
+ if (provider.name === 'figma') {
366
+ emitOutput(chalk.cyan('Checking local Figma server availability...'));
367
+ const isAvailable = await checkLocalFigmaServer();
368
+ if (isAvailable) {
369
+ emitOutput(chalk.green('✓ Local Figma MCP server is running!'));
370
+ emitOutput('');
371
+ emitOutput(chalk.white('To use it, update your .mcp.json:'));
372
+ emitOutput('');
373
+ emitOutput(chalk.gray(' {'));
374
+ emitOutput(chalk.gray(' "mcpServers": {'));
375
+ emitOutput(chalk.gray(` "${serverName}": {`));
376
+ emitOutput(chalk.gray(' "type": "http",'));
377
+ emitOutput(chalk.gray(' "url": "http://127.0.0.1:3845/mcp",'));
378
+ emitOutput(chalk.gray(' "enabled": true'));
379
+ emitOutput(chalk.gray(' }'));
380
+ emitOutput(chalk.gray(' }'));
381
+ emitOutput(chalk.gray(' }'));
382
+ emitOutput('');
383
+ emitOutput(chalk.cyan('Then run: /mcp connect'));
384
+ }
385
+ else {
386
+ emitOutput(chalk.yellow('✗ Local Figma MCP server not detected.'));
387
+ emitOutput(chalk.gray(' Follow the setup instructions above to enable it.'));
388
+ }
389
+ emitOutput('');
390
+ }
391
+ emitOutput(chalk.gray('For more information, see: docs/mcp-authentication.md'));
392
+ emitOutput('');
393
+ }
394
+ /**
395
+ * Starts authentication for a server.
396
+ * Supports both OAuth flow and simple token-based authentication.
397
+ *
398
+ * @param serverName - The name of the server to authenticate
399
+ * @param token - Optional API token for simple token-based authentication
400
+ */
401
+ async function authenticateServer(serverName, token) {
402
+ if (!serverName) {
403
+ emitOutput('');
404
+ emitOutput(chalk.yellow('Please specify a server name: /mcp auth <server-name> [token]'));
405
+ emitOutput('');
406
+ emitOutput(chalk.gray('Examples:'));
407
+ emitOutput(chalk.gray(' /mcp auth figma - Start OAuth flow (if configured)'));
408
+ emitOutput(chalk.gray(' /mcp auth figma figd_abc123... - Set API token directly'));
409
+ emitOutput('');
410
+ return;
411
+ }
412
+ // Use server manager to get the server config - it already has all servers loaded
413
+ // and handles path normalization correctly
414
+ const serverManager = getMCPServerManager();
415
+ const serverState = serverManager.getServerState(serverName);
416
+ // If server is not in server manager, try the config manager as fallback
417
+ let server = serverState?.config;
418
+ if (!server) {
419
+ const configManager = getMCPConfigManager();
420
+ await configManager.load(process.cwd());
421
+ server = configManager.getServer(serverName, process.cwd());
422
+ }
423
+ if (!server) {
424
+ emitOutput('');
425
+ emitOutput(chalk.red(`Server not found: ${serverName}`));
426
+ emitOutput('');
427
+ return;
428
+ }
429
+ const oauthService = await getMCPOAuthService();
430
+ // If a token is provided, use simple token-based auth
431
+ if (token) {
432
+ emitOutput('');
433
+ emitOutput(chalk.cyan(`Setting API token for ${serverName}...`));
434
+ try {
435
+ await oauthService.setApiToken(serverName, token);
436
+ emitOutput(chalk.green(`✓ API token stored for '${serverName}'`));
437
+ // Try to connect with the new token
438
+ emitOutput(chalk.cyan(' Connecting...'));
439
+ const serverManager = getMCPServerManager();
440
+ const state = await serverManager.connectServer(serverName);
441
+ if (state.status === 'connected') {
442
+ emitOutput(chalk.green(`✓ Connected - ${state.tools.length} tool(s), ${state.resources.length} resource(s), ${state.prompts.length} prompt(s)`));
443
+ }
444
+ else if (state.error) {
445
+ emitOutput(chalk.yellow(`⚠ Connection issue: ${state.error}`));
446
+ if (state.error.includes('Authentication required')) {
447
+ emitOutput(chalk.gray(' The token may be invalid or expired. Try with a different token.'));
448
+ }
449
+ }
450
+ emitOutput('');
451
+ return;
452
+ }
453
+ catch (error) {
454
+ const errorMessage = error instanceof Error ? error.message : String(error);
455
+ emitOutput(chalk.red(`Failed to set token: ${errorMessage}`));
456
+ emitOutput('');
457
+ return;
458
+ }
459
+ }
460
+ // Get server URL for OAuth discovery (only for HTTP/SSE servers)
461
+ let serverUrl;
462
+ if (isMCPHttpConfig(server) || isMCPSseConfig(server)) {
463
+ serverUrl = server.url;
464
+ }
465
+ // Check if this is a provider with restricted OAuth (e.g., Figma)
466
+ // Show a proactive warning with fallback information
467
+ if (serverUrl) {
468
+ const provider = getProviderInfo(serverUrl);
469
+ if (provider?.oauthRestricted) {
470
+ emitOutput('');
471
+ emitOutput(chalk.yellow(`Note: ${provider.name} restricts OAuth to approved clients.`));
472
+ emitOutput(chalk.gray(`Approved clients: ${provider.approvedClients?.join(', ') || 'Unknown'}`));
473
+ emitOutput(chalk.gray(`Kore-CLI may not be able to authenticate with the remote server.`));
474
+ emitOutput('');
475
+ emitOutput(chalk.cyan('Attempting OAuth flow anyway...'));
476
+ }
477
+ }
478
+ // Check if we have complete OAuth config (with URLs) or partial (just credentials)
479
+ const hasCompleteOAuthConfig = server.oauth?.authorizationUrl && server.oauth?.tokenUrl;
480
+ const hasPartialOAuthConfig = server.oauth && !hasCompleteOAuthConfig;
481
+ // Try OAuth flow - either with pre-configured OAuth or via discovery
482
+ emitOutput('');
483
+ if (hasCompleteOAuthConfig) {
484
+ emitOutput(chalk.cyan(`Starting OAuth authentication for ${serverName}...`));
485
+ }
486
+ else if (serverUrl) {
487
+ if (hasPartialOAuthConfig) {
488
+ emitOutput(chalk.cyan(`Discovering OAuth endpoints for ${serverName} (using configured credentials)...`));
489
+ }
490
+ else {
491
+ emitOutput(chalk.cyan(`Discovering OAuth configuration for ${serverName}...`));
492
+ }
493
+ }
494
+ else {
495
+ // stdio server without OAuth - must use token
496
+ emitOutput(chalk.yellow(`Server '${serverName}' requires authentication.`));
497
+ emitOutput('');
498
+ emitOutput(chalk.white('To authenticate, provide your API token:'));
499
+ emitOutput('');
500
+ emitOutput(chalk.cyan(` /mcp auth ${serverName} <your-api-token>`));
501
+ emitOutput('');
502
+ emitOutput(chalk.gray('You can usually find your API token in the service\'s settings or developer portal.'));
503
+ emitOutput('');
504
+ return;
505
+ }
506
+ try {
507
+ // Start the OAuth flow - with discovery if needed
508
+ let authUrl;
509
+ let discoveredConfig;
510
+ if (hasCompleteOAuthConfig) {
511
+ // Use fully pre-configured OAuth (has URLs)
512
+ const result = await oauthService.startAuthFlow(serverName, server.oauth);
513
+ if (result.error || !result.authUrl) {
514
+ emitOutput('');
515
+ emitOutput(chalk.red(`Failed to start auth flow: ${result.error || 'Unknown error'}`));
516
+ emitOutput('');
517
+ return;
518
+ }
519
+ authUrl = result.authUrl;
520
+ }
521
+ else {
522
+ // Try OAuth discovery, merging with any partial config (clientId/clientSecret)
523
+ const result = await oauthService.startAuthFlowWithDiscovery(serverName, serverUrl, server.oauth);
524
+ if (result.error || !result.authUrl) {
525
+ // Discovery failed - fall back to token prompt
526
+ emitOutput('');
527
+ emitOutput(chalk.yellow(`Could not discover OAuth for '${serverName}'.`));
528
+ emitOutput('');
529
+ emitOutput(chalk.white('To authenticate, provide your API token:'));
530
+ emitOutput('');
531
+ emitOutput(chalk.cyan(` /mcp auth ${serverName} <your-api-token>`));
532
+ emitOutput('');
533
+ emitOutput(chalk.gray('You can usually find your API token in the service\'s settings or developer portal.'));
534
+ emitOutput('');
535
+ // Emit event for UI
536
+ const eventEmitter = getEventEmitter();
537
+ eventEmitter.emit('mcp-token-required', {
538
+ serverName,
539
+ message: `Authentication required for '${serverName}'. Provide an API token.`,
540
+ });
541
+ return;
542
+ }
543
+ authUrl = result.authUrl;
544
+ discoveredConfig = result.discoveredConfig;
545
+ }
546
+ // Open the auth URL in browser automatically
547
+ emitOutput('');
548
+ const browserOpened = await openInBrowser(authUrl);
549
+ if (browserOpened) {
550
+ emitOutput(chalk.green(' ✓ Opening browser for authentication...'));
551
+ }
552
+ else {
553
+ emitOutput(chalk.yellow(' Could not open browser automatically.'));
554
+ emitOutput(chalk.white(' Please open this URL manually:'));
555
+ emitOutput('');
556
+ emitOutput(chalk.cyan(` ${authUrl}`));
557
+ }
558
+ emitOutput('');
559
+ emitOutput(chalk.gray(' Waiting for authentication...'));
560
+ // Poll for completion (the callback server stores the code)
561
+ const maxWaitMs = 5 * 60 * 1000; // 5 minutes
562
+ const pollIntervalMs = 1000;
563
+ const startTime = Date.now();
564
+ // Use the appropriate OAuth config for completion
565
+ const oauthConfigForCompletion = server.oauth || discoveredConfig;
566
+ while (Date.now() - startTime < maxWaitMs) {
567
+ await new Promise((r) => setTimeout(r, pollIntervalMs));
568
+ const result = oauthConfigForCompletion
569
+ ? await oauthService.completeAuthFlowWithConfig(serverName, oauthConfigForCompletion)
570
+ : { success: false, error: 'No OAuth config available' };
571
+ if (result.success) {
572
+ emitOutput('');
573
+ emitOutput(chalk.green(`✓ Authentication successful for '${serverName}'!`));
574
+ // Try to reconnect
575
+ emitOutput(chalk.cyan(' Reconnecting...'));
576
+ try {
577
+ const reconnectManager = getMCPServerManager();
578
+ const state = await reconnectManager.connectServer(serverName);
579
+ if (state.status === 'connected') {
580
+ emitOutput(chalk.green(`✓ Connected - ${state.tools.length} tool(s), ${state.resources.length} resource(s), ${state.prompts.length} prompt(s)`));
581
+ }
582
+ else if (state.error) {
583
+ emitOutput(chalk.yellow(`⚠ ${state.error}`));
584
+ // Check if this is a restricted OAuth provider error
585
+ if (serverUrl && (state.error.includes('MCP remote server is not enabled') ||
586
+ state.error.includes('not enabled') ||
587
+ state.error.includes('not authorized'))) {
588
+ await displayFallbackInfo(serverUrl, serverName);
589
+ }
590
+ }
591
+ }
592
+ catch (connectError) {
593
+ logger.warn(`Failed to reconnect to '${serverName}'`, connectError);
594
+ emitOutput(chalk.yellow('⚠ Failed to reconnect. Use /mcp connect to retry.'));
595
+ }
596
+ emitOutput('');
597
+ return;
598
+ }
599
+ // If error is NOT "no pending flow", it's a real error
600
+ if (result.error && !result.error.includes('No pending OAuth flow')) {
601
+ emitOutput('');
602
+ emitOutput(chalk.red(`Authentication failed: ${result.error}`));
603
+ // Check if this is a restricted OAuth provider and show fallback
604
+ if (serverUrl && (result.error.includes('Forbidden') ||
605
+ result.error.includes('not enabled') ||
606
+ result.error.includes('not authorized') ||
607
+ result.error.includes('client not approved'))) {
608
+ await displayFallbackInfo(serverUrl, serverName);
609
+ }
610
+ emitOutput('');
611
+ return;
612
+ }
613
+ }
614
+ emitOutput('');
615
+ emitOutput(chalk.red('Authentication timed out after 5 minutes.'));
616
+ emitOutput('');
617
+ }
618
+ catch (error) {
619
+ const errorMessage = error instanceof Error ? error.message : String(error);
620
+ emitOutput(chalk.red(`Failed to authenticate: ${errorMessage}`));
621
+ // Check if this is a restricted OAuth provider and show fallback
622
+ if (serverUrl && (errorMessage.includes('Forbidden') ||
623
+ errorMessage.includes('not enabled') ||
624
+ errorMessage.includes('not authorized'))) {
625
+ await displayFallbackInfo(serverUrl, serverName);
626
+ }
627
+ emitOutput('');
628
+ }
629
+ }
630
+ /**
631
+ * Clears authentication for a server.
632
+ */
633
+ async function clearAuth(serverName) {
634
+ if (!serverName) {
635
+ emitOutput('');
636
+ emitOutput(chalk.yellow('Please specify a server name: /mcp clear-auth <server-name>'));
637
+ emitOutput('');
638
+ return;
639
+ }
640
+ try {
641
+ const oauthService = await getMCPOAuthService();
642
+ await oauthService.clearAuth(serverName);
643
+ emitOutput('');
644
+ emitOutput(chalk.green(`Cleared authentication for ${serverName}`));
645
+ emitOutput('');
646
+ }
647
+ catch (error) {
648
+ const errorMessage = error instanceof Error ? error.message : String(error);
649
+ emitOutput(chalk.red(`Failed to clear auth: ${errorMessage}`));
650
+ emitOutput('');
651
+ }
652
+ }
653
+ /**
654
+ * Refreshes a server's tools/resources/prompts.
655
+ */
656
+ async function refreshServer(serverName) {
657
+ if (!serverName) {
658
+ emitOutput('');
659
+ emitOutput(chalk.yellow('Please specify a server name: /mcp refresh <server-name>'));
660
+ emitOutput('');
661
+ return;
662
+ }
663
+ try {
664
+ const serverManager = getMCPServerManager();
665
+ await serverManager.refreshServer(serverName);
666
+ const state = serverManager.getServerState(serverName);
667
+ if (state) {
668
+ emitOutput('');
669
+ emitOutput(chalk.green(`Refreshed ${serverName}:`));
670
+ emitOutput(` ${chalk.gray('Tools:')} ${state.tools.length}`);
671
+ emitOutput(` ${chalk.gray('Resources:')} ${state.resources.length}`);
672
+ emitOutput(` ${chalk.gray('Prompts:')} ${state.prompts.length}`);
673
+ emitOutput('');
674
+ }
675
+ }
676
+ catch (error) {
677
+ const errorMessage = error instanceof Error ? error.message : String(error);
678
+ emitOutput(chalk.red(`Failed to refresh: ${errorMessage}`));
679
+ emitOutput('');
680
+ }
681
+ }
682
+ /**
683
+ * Reconnects to a specific server.
684
+ * Useful for servers that failed to connect or had a timeout.
685
+ */
686
+ async function reconnectServer(serverName) {
687
+ if (!serverName) {
688
+ emitOutput('');
689
+ emitOutput(chalk.yellow('Please specify a server name: /mcp reconnect <server-name>'));
690
+ emitOutput('');
691
+ // Show servers that might need reconnection
692
+ const serverManager = getMCPServerManager();
693
+ const states = serverManager.getAllServerStates();
694
+ const errorServers = states.filter(s => s.status === 'error');
695
+ if (errorServers.length > 0) {
696
+ emitOutput(chalk.gray('Servers with errors:'));
697
+ for (const state of errorServers) {
698
+ emitOutput(chalk.gray(` • ${state.config.name}: ${state.error || 'Unknown error'}`));
699
+ }
700
+ emitOutput('');
701
+ }
702
+ return;
703
+ }
704
+ const serverManager = getMCPServerManager();
705
+ const existingState = serverManager.getServerState(serverName);
706
+ if (!existingState) {
707
+ // Server not found in server manager - might need to load config
708
+ const configManager = getMCPConfigManager();
709
+ await configManager.load(process.cwd());
710
+ const server = configManager.getServer(serverName, process.cwd());
711
+ if (!server) {
712
+ emitOutput('');
713
+ emitOutput(chalk.red(`Server not found: ${serverName}`));
714
+ emitOutput('');
715
+ emitOutput(chalk.gray('Available servers:'));
716
+ const states = serverManager.getAllServerStates();
717
+ for (const state of states) {
718
+ emitOutput(chalk.gray(` • ${state.config.name}`));
719
+ }
720
+ emitOutput('');
721
+ return;
722
+ }
723
+ }
724
+ emitOutput('');
725
+ emitOutput(chalk.cyan(`Reconnecting to ${serverName}...`));
726
+ // Show helpful message for npx commands
727
+ const config = existingState?.config;
728
+ if (config && isMCPStdioConfig(config) && config.command === 'npx') {
729
+ emitOutput(chalk.gray('First run may take up to 60 seconds to download packages...'));
730
+ }
731
+ try {
732
+ const state = await serverManager.reconnectServer(serverName);
733
+ if (state.status === 'connected') {
734
+ emitOutput(chalk.green(`✓ Connected - ${state.tools.length} tool(s), ${state.resources.length} resource(s), ${state.prompts.length} prompt(s)`));
735
+ }
736
+ else if (state.status === 'error') {
737
+ emitOutput(chalk.red(`✗ Failed to connect: ${state.error || 'Unknown error'}`));
738
+ // Provide helpful hints based on error type
739
+ if (state.error?.includes('Port') && state.error?.includes('already in use')) {
740
+ emitOutput('');
741
+ emitOutput(chalk.yellow('Tip: A previous MCP server process may still be running.'));
742
+ emitOutput(chalk.gray(' Try waiting a few minutes for it to timeout, or:'));
743
+ emitOutput(chalk.gray(' Windows: netstat -ano | findstr <port> && taskkill /PID <pid> /F'));
744
+ emitOutput(chalk.gray(' macOS/Linux: lsof -i :<port> && kill -9 <pid>'));
745
+ }
746
+ else if (state.error?.includes('timeout')) {
747
+ emitOutput('');
748
+ emitOutput(chalk.yellow('Tip: The server took too long to respond.'));
749
+ emitOutput(chalk.gray(' Check if the remote service is available.'));
750
+ emitOutput(chalk.gray(' For npx commands, the first run downloads packages and may be slow.'));
751
+ }
752
+ else if (state.error?.includes('Authentication')) {
753
+ emitOutput('');
754
+ emitOutput(chalk.yellow('Tip: Authentication may be required.'));
755
+ emitOutput(chalk.gray(` Try: /mcp auth ${serverName}`));
756
+ }
757
+ }
758
+ else if (state.error) {
759
+ emitOutput(chalk.yellow(`⚠ ${state.error}`));
760
+ }
761
+ emitOutput('');
762
+ }
763
+ catch (error) {
764
+ const errorMessage = error instanceof Error ? error.message : String(error);
765
+ emitOutput(chalk.red(`Failed to reconnect: ${errorMessage}`));
766
+ emitOutput('');
767
+ }
768
+ }
769
+ /**
770
+ * Approves a project-scoped MCP server.
771
+ */
772
+ async function approveServer(serverName) {
773
+ if (!serverName) {
774
+ emitOutput('');
775
+ emitOutput(chalk.yellow('Please specify a server name: /mcp approve <server-name>'));
776
+ emitOutput('');
777
+ return;
778
+ }
779
+ try {
780
+ const configManager = getMCPConfigManager();
781
+ await configManager.load(process.cwd());
782
+ const server = configManager.getServer(serverName, process.cwd());
783
+ if (!server) {
784
+ emitOutput('');
785
+ emitOutput(chalk.red(`Server not found: ${serverName}`));
786
+ emitOutput('');
787
+ return;
788
+ }
789
+ if (server.scope !== 'project') {
790
+ emitOutput('');
791
+ emitOutput(chalk.yellow(`Server '${serverName}' is not a project-scoped server and doesn't require approval.`));
792
+ emitOutput('');
793
+ return;
794
+ }
795
+ // Generate config hash for change detection
796
+ const configHash = configManager.generateConfigHash(server);
797
+ await configManager.setProjectServerApproval(process.cwd(), serverName, true, configHash);
798
+ emitOutput('');
799
+ emitOutput(chalk.green(`Approved server '${serverName}'.`));
800
+ // Auto-connect to the server
801
+ try {
802
+ emitOutput(chalk.cyan('Connecting...'));
803
+ // Show helpful message for npx commands
804
+ if (isMCPStdioConfig(server) && server.command === 'npx') {
805
+ emitOutput(chalk.gray('First run may take up to 60 seconds to download packages...'));
806
+ }
807
+ const serverManager = getMCPServerManager();
808
+ const state = await serverManager.connectServer(serverName);
809
+ if (state.status === 'connected') {
810
+ emitOutput(chalk.green(`✓ Connected - ${state.tools.length} tool(s), ${state.resources.length} resource(s), ${state.prompts.length} prompt(s)`));
811
+ }
812
+ else if (state.error) {
813
+ emitOutput(chalk.yellow(`⚠ Connection issue: ${state.error}`));
814
+ emitOutput(chalk.gray('Use /mcp connect to retry.'));
815
+ }
816
+ }
817
+ catch (connectError) {
818
+ logger.warn(`Failed to auto-connect to '${serverName}'`, connectError);
819
+ emitOutput(chalk.yellow('⚠ Failed to connect. Use /mcp connect to retry.'));
820
+ }
821
+ emitOutput('');
822
+ }
823
+ catch (error) {
824
+ const errorMessage = error instanceof Error ? error.message : String(error);
825
+ emitOutput(chalk.red(`Failed to approve: ${errorMessage}`));
826
+ emitOutput('');
827
+ }
828
+ }
829
+ /**
830
+ * Shows fallback information for a server with restricted OAuth.
831
+ */
832
+ async function showFallback(serverName) {
833
+ if (!serverName) {
834
+ emitOutput('');
835
+ emitOutput(chalk.yellow('Please specify a server name: /mcp fallback <server-name>'));
836
+ emitOutput('');
837
+ return;
838
+ }
839
+ // Get server config
840
+ const serverManager = getMCPServerManager();
841
+ const serverState = serverManager.getServerState(serverName);
842
+ let server = serverState?.config;
843
+ if (!server) {
844
+ const configManager = getMCPConfigManager();
845
+ await configManager.load(process.cwd());
846
+ server = configManager.getServer(serverName, process.cwd());
847
+ }
848
+ if (!server) {
849
+ emitOutput('');
850
+ emitOutput(chalk.red(`Server not found: ${serverName}`));
851
+ emitOutput('');
852
+ return;
853
+ }
854
+ // Get server URL
855
+ let serverUrl;
856
+ if (isMCPHttpConfig(server) || isMCPSseConfig(server)) {
857
+ serverUrl = server.url;
858
+ }
859
+ if (!serverUrl) {
860
+ emitOutput('');
861
+ emitOutput(chalk.yellow(`Server '${serverName}' is not an HTTP/SSE server.`));
862
+ emitOutput(chalk.gray('Fallback information is only available for remote HTTP servers.'));
863
+ emitOutput('');
864
+ return;
865
+ }
866
+ const fallback = getFallbackConfig(serverUrl);
867
+ if (!fallback) {
868
+ emitOutput('');
869
+ emitOutput(chalk.green(`Server '${serverName}' does not have known OAuth restrictions.`));
870
+ emitOutput(chalk.gray('No fallback configuration is registered for this server.'));
871
+ emitOutput('');
872
+ return;
873
+ }
874
+ await displayFallbackInfo(serverUrl, serverName);
875
+ }
876
+ /**
877
+ * Denies a project-scoped MCP server.
878
+ */
879
+ async function denyServer(serverName) {
880
+ if (!serverName) {
881
+ emitOutput('');
882
+ emitOutput(chalk.yellow('Please specify a server name: /mcp deny <server-name>'));
883
+ emitOutput('');
884
+ return;
885
+ }
886
+ try {
887
+ const configManager = getMCPConfigManager();
888
+ await configManager.load(process.cwd());
889
+ const server = configManager.getServer(serverName, process.cwd());
890
+ if (!server) {
891
+ emitOutput('');
892
+ emitOutput(chalk.red(`Server not found: ${serverName}`));
893
+ emitOutput('');
894
+ return;
895
+ }
896
+ await configManager.setProjectServerApproval(process.cwd(), serverName, false);
897
+ emitOutput('');
898
+ emitOutput(chalk.red(`Denied server '${serverName}'.`));
899
+ emitOutput(chalk.gray('This server will not be connected.'));
900
+ emitOutput('');
901
+ }
902
+ catch (error) {
903
+ const errorMessage = error instanceof Error ? error.message : String(error);
904
+ emitOutput(chalk.red(`Failed to deny: ${errorMessage}`));
905
+ emitOutput('');
906
+ }
907
+ }
908
+ /**
909
+ * Handler function for the /mcp slash command.
910
+ */
911
+ async function mcpCommandHandler(args) {
912
+ try {
913
+ const subcommand = args[0]?.toLowerCase();
914
+ const subArgs = args.slice(1);
915
+ switch (subcommand) {
916
+ case 'servers':
917
+ case 'list':
918
+ await listServers();
919
+ break;
920
+ case 'tools':
921
+ await listTools();
922
+ break;
923
+ case 'resources':
924
+ await listResources();
925
+ break;
926
+ case 'prompts':
927
+ await listPrompts();
928
+ break;
929
+ case 'connect':
930
+ await connectServers();
931
+ break;
932
+ case 'disconnect':
933
+ await disconnectServers();
934
+ break;
935
+ case 'auth':
936
+ case 'authenticate':
937
+ // Support: /mcp auth <server-name> [token]
938
+ await authenticateServer(subArgs[0], subArgs.slice(1).join(' ') || undefined);
939
+ break;
940
+ case 'clear-auth':
941
+ await clearAuth(subArgs[0]);
942
+ break;
943
+ case 'refresh':
944
+ await refreshServer(subArgs[0]);
945
+ break;
946
+ case 'reconnect':
947
+ case 'retry':
948
+ await reconnectServer(subArgs[0]);
949
+ break;
950
+ case 'approve':
951
+ await approveServer(subArgs[0]);
952
+ break;
953
+ case 'deny':
954
+ await denyServer(subArgs[0]);
955
+ break;
956
+ case 'fallback':
957
+ await showFallback(subArgs[0]);
958
+ break;
959
+ case 'help':
960
+ displayHelp();
961
+ break;
962
+ default:
963
+ await displayStatus();
964
+ break;
965
+ }
966
+ }
967
+ catch (error) {
968
+ const errorMessage = error instanceof Error ? error.message : String(error);
969
+ logger.error('MCP command failed', error);
970
+ emitOutput('');
971
+ emitOutput(chalk.red(`Error: ${errorMessage}`));
972
+ emitOutput('');
973
+ }
974
+ }
975
+ /**
976
+ * Displays help for the /mcp command.
977
+ */
978
+ function displayHelp() {
979
+ emitOutput('');
980
+ emitOutput(chalk.bold('MCP Command Help'));
981
+ emitOutput(chalk.dim('─'.repeat(50)));
982
+ emitOutput('');
983
+ emitOutput(chalk.white('/mcp') + chalk.gray(' - Show server status overview'));
984
+ emitOutput(chalk.white('/mcp servers') + chalk.gray(' - List all configured servers'));
985
+ emitOutput(chalk.white('/mcp tools') + chalk.gray(' - List available tools'));
986
+ emitOutput(chalk.white('/mcp resources') + chalk.gray(' - List available resources'));
987
+ emitOutput(chalk.white('/mcp prompts') + chalk.gray(' - List available prompts'));
988
+ emitOutput(chalk.white('/mcp connect') + chalk.gray(' - Connect to all servers'));
989
+ emitOutput(chalk.white('/mcp reconnect <name>') + chalk.gray(' - Reconnect to a specific server'));
990
+ emitOutput(chalk.white('/mcp disconnect') + chalk.gray(' - Disconnect from all servers'));
991
+ emitOutput(chalk.white('/mcp auth <name>') + chalk.gray(' - Start OAuth flow (if configured)'));
992
+ emitOutput(chalk.white('/mcp auth <name> <token>') + chalk.gray(' - Authenticate with API token'));
993
+ emitOutput(chalk.white('/mcp clear-auth <name>') + chalk.gray(' - Clear authentication'));
994
+ emitOutput(chalk.white('/mcp refresh <name>') + chalk.gray(' - Refresh server tools/resources'));
995
+ emitOutput(chalk.white('/mcp approve <name>') + chalk.gray(' - Approve a project-scoped server'));
996
+ emitOutput(chalk.white('/mcp deny <name>') + chalk.gray(' - Deny a project-scoped server'));
997
+ emitOutput(chalk.white('/mcp fallback <name>') + chalk.gray(' - Show fallback options for restricted servers'));
998
+ emitOutput('');
999
+ }
1000
+ /**
1001
+ * Slash command definition for /mcp.
1002
+ */
1003
+ export const mcpCommand = {
1004
+ name: 'mcp',
1005
+ description: 'Manage MCP (Model Context Protocol) servers and view status',
1006
+ usage: '/mcp [subcommand]',
1007
+ examples: [
1008
+ '/mcp - Show server status overview',
1009
+ '/mcp servers - List all configured servers',
1010
+ '/mcp tools - List all available MCP tools',
1011
+ '/mcp connect - Connect to all configured servers',
1012
+ '/mcp reconnect clickup - Reconnect to a specific server',
1013
+ '/mcp auth figma - Start OAuth flow (if configured)',
1014
+ '/mcp auth figma <token> - Authenticate with API token',
1015
+ '/mcp fallback figma - Show fallback for restricted OAuth servers',
1016
+ ],
1017
+ handler: mcpCommandHandler,
1018
+ };
1019
+ /**
1020
+ * Registers the /mcp command with the slash command handler.
1021
+ */
1022
+ export function registerMCPCommand() {
1023
+ registerSlashCommand(mcpCommand);
1024
+ }
1025
+ export default mcpCommand;
1026
+ //# sourceMappingURL=mcp.js.map