centaurus-cli 3.0.0 → 3.1.0

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 (552) hide show
  1. package/dist/ai/types.js +0 -1
  2. package/dist/ai/types.js.map +1 -1
  3. package/dist/cli-adapter.js +5047 -5037
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/commands/CommandParser.js +372 -315
  6. package/dist/commands/CommandParser.js.map +1 -1
  7. package/dist/config/build-config.js +11 -42
  8. package/dist/config/build-config.js.map +1 -1
  9. package/dist/config/defaultConfig.js +94 -82
  10. package/dist/config/defaultConfig.js.map +1 -1
  11. package/dist/config/manager.js +144 -160
  12. package/dist/config/manager.js.map +1 -1
  13. package/dist/config/mcp-config-manager.js +411 -364
  14. package/dist/config/mcp-config-manager.js.map +1 -1
  15. package/dist/config/models.js +118 -185
  16. package/dist/config/models.js.map +1 -1
  17. package/dist/config/slash-commands.js +186 -184
  18. package/dist/config/slash-commands.js.map +1 -1
  19. package/dist/config/types.js +33 -26
  20. package/dist/config/types.js.map +1 -1
  21. package/dist/context/command-detector.js +63 -67
  22. package/dist/context/command-detector.js.map +1 -1
  23. package/dist/context/context-manager.js +533 -518
  24. package/dist/context/context-manager.js.map +1 -1
  25. package/dist/context/handlers/docker-handler.js +518 -576
  26. package/dist/context/handlers/docker-handler.js.map +1 -1
  27. package/dist/context/handlers/ssh-handler.js +1050 -1109
  28. package/dist/context/handlers/ssh-handler.js.map +1 -1
  29. package/dist/context/handlers/wsl-handler.js +558 -630
  30. package/dist/context/handlers/wsl-handler.js.map +1 -1
  31. package/dist/context/index.js +42 -6
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/subshell-handler.js +0 -4
  34. package/dist/context/subshell-handler.js.map +1 -1
  35. package/dist/context/types.js +20 -31
  36. package/dist/context/types.js.map +1 -1
  37. package/dist/hooks/useConnectivity.js +13 -10
  38. package/dist/hooks/useConnectivity.js.map +1 -1
  39. package/dist/hooks/useTerminalDimensions.js +67 -79
  40. package/dist/hooks/useTerminalDimensions.js.map +1 -1
  41. package/dist/index.js +228 -251
  42. package/dist/index.js.map +1 -1
  43. package/dist/mcp/mcp-command-handler.js +297 -260
  44. package/dist/mcp/mcp-command-handler.js.map +1 -1
  45. package/dist/mcp/mcp-server-manager.js +139 -155
  46. package/dist/mcp/mcp-server-manager.js.map +1 -1
  47. package/dist/mcp/mcp-tool-wrapper.js +74 -94
  48. package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
  49. package/dist/services/ai-autocomplete-agent.js +169 -181
  50. package/dist/services/ai-autocomplete-agent.js.map +1 -1
  51. package/dist/services/ai-context-injector.js +180 -93
  52. package/dist/services/ai-context-injector.js.map +1 -1
  53. package/dist/services/ai-service-client.js +513 -456
  54. package/dist/services/ai-service-client.js.map +1 -1
  55. package/dist/services/api-client.js +443 -441
  56. package/dist/services/api-client.js.map +1 -1
  57. package/dist/services/auth-handler.js +162 -198
  58. package/dist/services/auth-handler.js.map +1 -1
  59. package/dist/services/background-task-manager.js +258 -282
  60. package/dist/services/background-task-manager.js.map +1 -1
  61. package/dist/services/checkpoint-manager.js +1513 -973
  62. package/dist/services/checkpoint-manager.js.map +1 -1
  63. package/dist/services/clipboard-service.js +151 -200
  64. package/dist/services/clipboard-service.js.map +1 -1
  65. package/dist/services/connectivity-manager.js +63 -65
  66. package/dist/services/connectivity-manager.js.map +1 -1
  67. package/dist/services/conversation-manager.js +118 -121
  68. package/dist/services/conversation-manager.js.map +1 -1
  69. package/dist/services/environment-context-injector.js +160 -187
  70. package/dist/services/environment-context-injector.js.map +1 -1
  71. package/dist/services/fast-context-agent.js +203 -243
  72. package/dist/services/fast-context-agent.js.map +1 -1
  73. package/dist/services/input-detection-agent.js +190 -202
  74. package/dist/services/input-detection-agent.js.map +1 -1
  75. package/dist/services/input-requirement-detector.js +155 -189
  76. package/dist/services/input-requirement-detector.js.map +1 -1
  77. package/dist/services/local-chat-storage.js +342 -365
  78. package/dist/services/local-chat-storage.js.map +1 -1
  79. package/dist/services/monitored-shell-manager.js +225 -233
  80. package/dist/services/monitored-shell-manager.js.map +1 -1
  81. package/dist/services/ollama-service.js +293 -310
  82. package/dist/services/ollama-service.js.map +1 -1
  83. package/dist/services/rules-storage.js +142 -0
  84. package/dist/services/rules-storage.js.map +1 -0
  85. package/dist/services/session-quota-manager.js +219 -235
  86. package/dist/services/session-quota-manager.js.map +1 -1
  87. package/dist/services/shell-input-agent.js +299 -334
  88. package/dist/services/shell-input-agent.js.map +1 -1
  89. package/dist/services/sub-agent-manager.js +459 -501
  90. package/dist/services/sub-agent-manager.js.map +1 -1
  91. package/dist/services/warpify-detector.js +133 -183
  92. package/dist/services/warpify-detector.js.map +1 -1
  93. package/dist/services/workflow-storage.js +202 -217
  94. package/dist/services/workflow-storage.js.map +1 -1
  95. package/dist/test-ssh-handler.js +148 -193
  96. package/dist/test-ssh-handler.js.map +1 -1
  97. package/dist/tools/add-mcp.js +161 -0
  98. package/dist/tools/add-mcp.js.map +1 -0
  99. package/dist/tools/background-command.js +240 -273
  100. package/dist/tools/background-command.js.map +1 -1
  101. package/dist/tools/command.js +447 -440
  102. package/dist/tools/command.js.map +1 -1
  103. package/dist/tools/create-image.js +172 -202
  104. package/dist/tools/create-image.js.map +1 -1
  105. package/dist/tools/enter-remote-session.js +169 -215
  106. package/dist/tools/enter-remote-session.js.map +1 -1
  107. package/dist/tools/fast-context.js +60 -67
  108. package/dist/tools/fast-context.js.map +1 -1
  109. package/dist/tools/file-ops.js +605 -537
  110. package/dist/tools/file-ops.js.map +1 -1
  111. package/dist/tools/find-files.js +262 -303
  112. package/dist/tools/find-files.js.map +1 -1
  113. package/dist/tools/get-diff.js +423 -400
  114. package/dist/tools/get-diff.js.map +1 -1
  115. package/dist/tools/grep-search.js +966 -948
  116. package/dist/tools/grep-search.js.map +1 -1
  117. package/dist/tools/inspect-symbol.js +308 -323
  118. package/dist/tools/inspect-symbol.js.map +1 -1
  119. package/dist/tools/plan-mode.js +459 -503
  120. package/dist/tools/plan-mode.js.map +1 -1
  121. package/dist/tools/read-binary-file.js +160 -190
  122. package/dist/tools/read-binary-file.js.map +1 -1
  123. package/dist/tools/registry.js +100 -84
  124. package/dist/tools/registry.js.map +1 -1
  125. package/dist/tools/reproduce_issue.js +170 -151
  126. package/dist/tools/reproduce_issue.js.map +1 -1
  127. package/dist/tools/sub-agent.js +223 -228
  128. package/dist/tools/sub-agent.js.map +1 -1
  129. package/dist/tools/task-complete.js +28 -27
  130. package/dist/tools/task-complete.js.map +1 -1
  131. package/dist/tools/types.js +0 -1
  132. package/dist/tools/types.js.map +1 -1
  133. package/dist/tools/validation.js +96 -118
  134. package/dist/tools/validation.js.map +1 -1
  135. package/dist/tools/web-search.js +194 -194
  136. package/dist/tools/web-search.js.map +1 -1
  137. package/dist/tools/workflow-tool.js +77 -82
  138. package/dist/tools/workflow-tool.js.map +1 -1
  139. package/dist/types/index.js +0 -1
  140. package/dist/types/index.js.map +1 -1
  141. package/dist/types/rule.js +1 -0
  142. package/dist/types/rule.js.map +1 -0
  143. package/dist/types/workflow.js +0 -7
  144. package/dist/types/workflow.js.map +1 -1
  145. package/dist/ui/components/AgentTimer.js +24 -25
  146. package/dist/ui/components/AgentTimer.js.map +1 -1
  147. package/dist/ui/components/App.js +3266 -3249
  148. package/dist/ui/components/App.js.map +1 -1
  149. package/dist/ui/components/AuthScreen.js +22 -34
  150. package/dist/ui/components/AuthScreen.js.map +1 -1
  151. package/dist/ui/components/AuthWelcomeScreen.js +30 -24
  152. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
  153. package/dist/ui/components/Breadcrumbs.js +53 -82
  154. package/dist/ui/components/Breadcrumbs.js.map +1 -1
  155. package/dist/ui/components/CircularSelectInput.js +59 -67
  156. package/dist/ui/components/CircularSelectInput.js.map +1 -1
  157. package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
  158. package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
  159. package/dist/ui/components/CodeBlock.js +24 -42
  160. package/dist/ui/components/CodeBlock.js.map +1 -1
  161. package/dist/ui/components/ConfigViewer.js +18 -25
  162. package/dist/ui/components/ConfigViewer.js.map +1 -1
  163. package/dist/ui/components/ConfirmPrompt.js +49 -71
  164. package/dist/ui/components/ConfirmPrompt.js.map +1 -1
  165. package/dist/ui/components/ConnectionStatusMessage.js +32 -83
  166. package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
  167. package/dist/ui/components/ContextWindowIndicator.js +34 -49
  168. package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
  169. package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
  170. package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
  171. package/dist/ui/components/DiffViewer.js +68 -121
  172. package/dist/ui/components/DiffViewer.js.map +1 -1
  173. package/dist/ui/components/ErrorBoundary.js +40 -48
  174. package/dist/ui/components/ErrorBoundary.js.map +1 -1
  175. package/dist/ui/components/FileCreationPreview.js +29 -60
  176. package/dist/ui/components/FileCreationPreview.js.map +1 -1
  177. package/dist/ui/components/FileOperation.js +34 -29
  178. package/dist/ui/components/FileOperation.js.map +1 -1
  179. package/dist/ui/components/FileTagAutocomplete.js +55 -25
  180. package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
  181. package/dist/ui/components/FontRecommendation.js.map +1 -1
  182. package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
  183. package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
  184. package/dist/ui/components/InputBox.js +1620 -2150
  185. package/dist/ui/components/InputBox.js.map +1 -1
  186. package/dist/ui/components/InteractiveShell.js +234 -352
  187. package/dist/ui/components/InteractiveShell.js.map +1 -1
  188. package/dist/ui/components/KeyboardHelp.js +34 -35
  189. package/dist/ui/components/KeyboardHelp.js.map +1 -1
  190. package/dist/ui/components/LoadingIndicator.js +22 -25
  191. package/dist/ui/components/LoadingIndicator.js.map +1 -1
  192. package/dist/ui/components/MCPAddScreen.js +40 -51
  193. package/dist/ui/components/MCPAddScreen.js.map +1 -1
  194. package/dist/ui/components/MCPListScreen.js +40 -48
  195. package/dist/ui/components/MCPListScreen.js.map +1 -1
  196. package/dist/ui/components/MCPServerListScreen.js +49 -56
  197. package/dist/ui/components/MCPServerListScreen.js.map +1 -1
  198. package/dist/ui/components/MarkdownRenderer.js +69 -96
  199. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  200. package/dist/ui/components/MessageBox.js +66 -48
  201. package/dist/ui/components/MessageBox.js.map +1 -1
  202. package/dist/ui/components/MessageDisplay.js +150 -142
  203. package/dist/ui/components/MessageDisplay.js.map +1 -1
  204. package/dist/ui/components/MonitorModeAIPanel.js +46 -65
  205. package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
  206. package/dist/ui/components/MultiLineInput.js +243 -277
  207. package/dist/ui/components/MultiLineInput.js.map +1 -1
  208. package/dist/ui/components/PasswordPrompt.js +37 -18
  209. package/dist/ui/components/PasswordPrompt.js.map +1 -1
  210. package/dist/ui/components/PlanAcceptedMessage.js +27 -38
  211. package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
  212. package/dist/ui/components/PlanReviewScreen.js +46 -50
  213. package/dist/ui/components/PlanReviewScreen.js.map +1 -1
  214. package/dist/ui/components/RulesEditorScreen.js +81 -0
  215. package/dist/ui/components/RulesEditorScreen.js.map +1 -0
  216. package/dist/ui/components/SelectPrompt.js +19 -8
  217. package/dist/ui/components/SelectPrompt.js.map +1 -1
  218. package/dist/ui/components/ShimmerText.js +44 -0
  219. package/dist/ui/components/ShimmerText.js.map +1 -0
  220. package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
  221. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
  222. package/dist/ui/components/StatusBar.js +56 -87
  223. package/dist/ui/components/StatusBar.js.map +1 -1
  224. package/dist/ui/components/StreamingMessageDisplay.js +116 -99
  225. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  226. package/dist/ui/components/TaskCompletedMessage.js +28 -23
  227. package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
  228. package/dist/ui/components/TaskProgressIndicator.js +44 -70
  229. package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
  230. package/dist/ui/components/ThinkingDisplay.js +44 -41
  231. package/dist/ui/components/ThinkingDisplay.js.map +1 -1
  232. package/dist/ui/components/ToolExecutionMessage.js +772 -1326
  233. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  234. package/dist/ui/components/ToolExecutionStatus.js +53 -84
  235. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  236. package/dist/ui/components/ToolResult.js +22 -15
  237. package/dist/ui/components/ToolResult.js.map +1 -1
  238. package/dist/ui/components/VersionUpdatePrompt.js +88 -120
  239. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
  240. package/dist/ui/components/WelcomeBanner.js +176 -26
  241. package/dist/ui/components/WelcomeBanner.js.map +1 -1
  242. package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
  243. package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
  244. package/dist/utils/ansi-encoder.js +30 -61
  245. package/dist/utils/ansi-encoder.js.map +1 -1
  246. package/dist/utils/chat-formatter.js +327 -305
  247. package/dist/utils/chat-formatter.js.map +1 -1
  248. package/dist/utils/command-history.js +152 -174
  249. package/dist/utils/command-history.js.map +1 -1
  250. package/dist/utils/context-sanitizer.js +49 -112
  251. package/dist/utils/context-sanitizer.js.map +1 -1
  252. package/dist/utils/conversation-logger.js +292 -324
  253. package/dist/utils/conversation-logger.js.map +1 -1
  254. package/dist/utils/custom-commands-manager.js +126 -131
  255. package/dist/utils/custom-commands-manager.js.map +1 -1
  256. package/dist/utils/editor-utils.js +732 -837
  257. package/dist/utils/editor-utils.js.map +1 -1
  258. package/dist/utils/file.js +174 -213
  259. package/dist/utils/file.js.map +1 -1
  260. package/dist/utils/git-stats.js +169 -0
  261. package/dist/utils/git-stats.js.map +1 -0
  262. package/dist/utils/input-classifier.js +960 -482
  263. package/dist/utils/input-classifier.js.map +1 -1
  264. package/dist/utils/logger.js +48 -73
  265. package/dist/utils/logger.js.map +1 -1
  266. package/dist/utils/markdown-parser.js +277 -310
  267. package/dist/utils/markdown-parser.js.map +1 -1
  268. package/dist/utils/rule-reference-resolver.js +54 -0
  269. package/dist/utils/rule-reference-resolver.js.map +1 -0
  270. package/dist/utils/shell.js +144 -156
  271. package/dist/utils/shell.js.map +1 -1
  272. package/dist/utils/state.js +23 -22
  273. package/dist/utils/state.js.map +1 -1
  274. package/dist/utils/syntax-checker.js +279 -327
  275. package/dist/utils/syntax-checker.js.map +1 -1
  276. package/dist/utils/terminal-output.js +199 -302
  277. package/dist/utils/terminal-output.js.map +1 -1
  278. package/dist/utils/text-clipboard.js +47 -70
  279. package/dist/utils/text-clipboard.js.map +1 -1
  280. package/dist/utils/unicode-sanitizer.js +134 -197
  281. package/dist/utils/unicode-sanitizer.js.map +1 -1
  282. package/dist/utils/version-checker.js +46 -56
  283. package/dist/utils/version-checker.js.map +1 -1
  284. package/package.json +6 -4
  285. package/dist/ai/types.d.ts +0 -20
  286. package/dist/ai/types.d.ts.map +0 -1
  287. package/dist/cli-adapter.d.ts +0 -511
  288. package/dist/cli-adapter.d.ts.map +0 -1
  289. package/dist/commands/CommandParser.d.ts +0 -27
  290. package/dist/commands/CommandParser.d.ts.map +0 -1
  291. package/dist/config/build-config.d.ts +0 -42
  292. package/dist/config/build-config.d.ts.map +0 -1
  293. package/dist/config/defaultConfig.d.ts +0 -79
  294. package/dist/config/defaultConfig.d.ts.map +0 -1
  295. package/dist/config/manager.d.ts +0 -62
  296. package/dist/config/manager.d.ts.map +0 -1
  297. package/dist/config/mcp-config-manager.d.ts +0 -79
  298. package/dist/config/mcp-config-manager.d.ts.map +0 -1
  299. package/dist/config/models.d.ts +0 -83
  300. package/dist/config/models.d.ts.map +0 -1
  301. package/dist/config/slash-commands.d.ts +0 -23
  302. package/dist/config/slash-commands.d.ts.map +0 -1
  303. package/dist/config/types.d.ts +0 -35
  304. package/dist/config/types.d.ts.map +0 -1
  305. package/dist/context/command-detector.d.ts +0 -50
  306. package/dist/context/command-detector.d.ts.map +0 -1
  307. package/dist/context/context-manager.d.ts +0 -157
  308. package/dist/context/context-manager.d.ts.map +0 -1
  309. package/dist/context/handlers/docker-handler.d.ts +0 -130
  310. package/dist/context/handlers/docker-handler.d.ts.map +0 -1
  311. package/dist/context/handlers/ssh-handler.d.ts +0 -201
  312. package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
  313. package/dist/context/handlers/wsl-handler.d.ts +0 -146
  314. package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
  315. package/dist/context/index.d.ts +0 -8
  316. package/dist/context/index.d.ts.map +0 -1
  317. package/dist/context/subshell-handler.d.ts +0 -165
  318. package/dist/context/subshell-handler.d.ts.map +0 -1
  319. package/dist/context/types.d.ts +0 -70
  320. package/dist/context/types.d.ts.map +0 -1
  321. package/dist/hooks/useConnectivity.d.ts +0 -2
  322. package/dist/hooks/useConnectivity.d.ts.map +0 -1
  323. package/dist/hooks/useTerminalDimensions.d.ts +0 -41
  324. package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
  325. package/dist/index.d.ts +0 -9
  326. package/dist/index.d.ts.map +0 -1
  327. package/dist/mcp/mcp-command-handler.d.ts +0 -47
  328. package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
  329. package/dist/mcp/mcp-server-manager.d.ts +0 -30
  330. package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
  331. package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
  332. package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
  333. package/dist/services/ai-autocomplete-agent.d.ts +0 -39
  334. package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
  335. package/dist/services/ai-context-injector.d.ts +0 -41
  336. package/dist/services/ai-context-injector.d.ts.map +0 -1
  337. package/dist/services/ai-service-client.d.ts +0 -128
  338. package/dist/services/ai-service-client.d.ts.map +0 -1
  339. package/dist/services/api-client.d.ts +0 -353
  340. package/dist/services/api-client.d.ts.map +0 -1
  341. package/dist/services/auth-handler.d.ts +0 -30
  342. package/dist/services/auth-handler.d.ts.map +0 -1
  343. package/dist/services/background-task-manager.d.ts +0 -114
  344. package/dist/services/background-task-manager.d.ts.map +0 -1
  345. package/dist/services/checkpoint-manager.d.ts +0 -167
  346. package/dist/services/checkpoint-manager.d.ts.map +0 -1
  347. package/dist/services/clipboard-service.d.ts +0 -37
  348. package/dist/services/clipboard-service.d.ts.map +0 -1
  349. package/dist/services/connectivity-manager.d.ts +0 -18
  350. package/dist/services/connectivity-manager.d.ts.map +0 -1
  351. package/dist/services/conversation-manager.d.ts +0 -73
  352. package/dist/services/conversation-manager.d.ts.map +0 -1
  353. package/dist/services/environment-context-injector.d.ts +0 -69
  354. package/dist/services/environment-context-injector.d.ts.map +0 -1
  355. package/dist/services/fast-context-agent.d.ts +0 -12
  356. package/dist/services/fast-context-agent.d.ts.map +0 -1
  357. package/dist/services/input-detection-agent.d.ts +0 -40
  358. package/dist/services/input-detection-agent.d.ts.map +0 -1
  359. package/dist/services/input-requirement-detector.d.ts +0 -28
  360. package/dist/services/input-requirement-detector.d.ts.map +0 -1
  361. package/dist/services/local-chat-storage.d.ts +0 -182
  362. package/dist/services/local-chat-storage.d.ts.map +0 -1
  363. package/dist/services/monitored-shell-manager.d.ts +0 -120
  364. package/dist/services/monitored-shell-manager.d.ts.map +0 -1
  365. package/dist/services/ollama-service.d.ts +0 -197
  366. package/dist/services/ollama-service.d.ts.map +0 -1
  367. package/dist/services/session-quota-manager.d.ts +0 -101
  368. package/dist/services/session-quota-manager.d.ts.map +0 -1
  369. package/dist/services/shell-input-agent.d.ts +0 -89
  370. package/dist/services/shell-input-agent.d.ts.map +0 -1
  371. package/dist/services/sub-agent-manager.d.ts +0 -140
  372. package/dist/services/sub-agent-manager.d.ts.map +0 -1
  373. package/dist/services/warpify-detector.d.ts +0 -43
  374. package/dist/services/warpify-detector.d.ts.map +0 -1
  375. package/dist/services/workflow-storage.d.ts +0 -72
  376. package/dist/services/workflow-storage.d.ts.map +0 -1
  377. package/dist/test-ssh-handler.d.ts +0 -8
  378. package/dist/test-ssh-handler.d.ts.map +0 -1
  379. package/dist/tools/background-command.d.ts +0 -11
  380. package/dist/tools/background-command.d.ts.map +0 -1
  381. package/dist/tools/command.d.ts +0 -3
  382. package/dist/tools/command.d.ts.map +0 -1
  383. package/dist/tools/create-image.d.ts +0 -10
  384. package/dist/tools/create-image.d.ts.map +0 -1
  385. package/dist/tools/enter-remote-session.d.ts +0 -48
  386. package/dist/tools/enter-remote-session.d.ts.map +0 -1
  387. package/dist/tools/fast-context.d.ts +0 -3
  388. package/dist/tools/fast-context.d.ts.map +0 -1
  389. package/dist/tools/file-ops.d.ts +0 -7
  390. package/dist/tools/file-ops.d.ts.map +0 -1
  391. package/dist/tools/find-files.d.ts +0 -49
  392. package/dist/tools/find-files.d.ts.map +0 -1
  393. package/dist/tools/get-diff.d.ts +0 -14
  394. package/dist/tools/get-diff.d.ts.map +0 -1
  395. package/dist/tools/grep-search.d.ts +0 -155
  396. package/dist/tools/grep-search.d.ts.map +0 -1
  397. package/dist/tools/inspect-symbol.d.ts +0 -32
  398. package/dist/tools/inspect-symbol.d.ts.map +0 -1
  399. package/dist/tools/plan-mode.d.ts +0 -140
  400. package/dist/tools/plan-mode.d.ts.map +0 -1
  401. package/dist/tools/read-binary-file.d.ts +0 -10
  402. package/dist/tools/read-binary-file.d.ts.map +0 -1
  403. package/dist/tools/registry.d.ts +0 -31
  404. package/dist/tools/registry.d.ts.map +0 -1
  405. package/dist/tools/reproduce_issue.d.ts +0 -2
  406. package/dist/tools/reproduce_issue.d.ts.map +0 -1
  407. package/dist/tools/sub-agent.d.ts +0 -9
  408. package/dist/tools/sub-agent.d.ts.map +0 -1
  409. package/dist/tools/task-complete.d.ts +0 -3
  410. package/dist/tools/task-complete.d.ts.map +0 -1
  411. package/dist/tools/types.d.ts +0 -40
  412. package/dist/tools/types.d.ts.map +0 -1
  413. package/dist/tools/validation.d.ts +0 -47
  414. package/dist/tools/validation.d.ts.map +0 -1
  415. package/dist/tools/web-search.d.ts +0 -24
  416. package/dist/tools/web-search.d.ts.map +0 -1
  417. package/dist/tools/workflow-tool.d.ts +0 -11
  418. package/dist/tools/workflow-tool.d.ts.map +0 -1
  419. package/dist/types/index.d.ts +0 -123
  420. package/dist/types/index.d.ts.map +0 -1
  421. package/dist/types/workflow.d.ts +0 -110
  422. package/dist/types/workflow.d.ts.map +0 -1
  423. package/dist/ui/components/AgentTimer.d.ts +0 -7
  424. package/dist/ui/components/AgentTimer.d.ts.map +0 -1
  425. package/dist/ui/components/App.d.ts +0 -197
  426. package/dist/ui/components/App.d.ts.map +0 -1
  427. package/dist/ui/components/AuthScreen.d.ts +0 -8
  428. package/dist/ui/components/AuthScreen.d.ts.map +0 -1
  429. package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
  430. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
  431. package/dist/ui/components/Breadcrumbs.d.ts +0 -13
  432. package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
  433. package/dist/ui/components/CircularSelectInput.d.ts +0 -24
  434. package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
  435. package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
  436. package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
  437. package/dist/ui/components/CodeBlock.d.ts +0 -9
  438. package/dist/ui/components/CodeBlock.d.ts.map +0 -1
  439. package/dist/ui/components/ConfigViewer.d.ts +0 -11
  440. package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
  441. package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
  442. package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
  443. package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
  444. package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
  445. package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
  446. package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
  447. package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
  448. package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
  449. package/dist/ui/components/DiffViewer.d.ts +0 -9
  450. package/dist/ui/components/DiffViewer.d.ts.map +0 -1
  451. package/dist/ui/components/ErrorBoundary.d.ts +0 -17
  452. package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
  453. package/dist/ui/components/FileCreationPreview.d.ts +0 -8
  454. package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
  455. package/dist/ui/components/FileOperation.d.ts +0 -10
  456. package/dist/ui/components/FileOperation.d.ts.map +0 -1
  457. package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
  458. package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
  459. package/dist/ui/components/FontRecommendation.d.ts +0 -1
  460. package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
  461. package/dist/ui/components/InputBox.d.ts +0 -42
  462. package/dist/ui/components/InputBox.d.ts.map +0 -1
  463. package/dist/ui/components/InteractiveShell.d.ts +0 -30
  464. package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
  465. package/dist/ui/components/KeyboardHelp.d.ts +0 -7
  466. package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
  467. package/dist/ui/components/LoadingIndicator.d.ts +0 -3
  468. package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
  469. package/dist/ui/components/MCPAddScreen.d.ts +0 -13
  470. package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
  471. package/dist/ui/components/MCPListScreen.d.ts +0 -17
  472. package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
  473. package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
  474. package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
  475. package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
  476. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  477. package/dist/ui/components/MessageBox.d.ts +0 -10
  478. package/dist/ui/components/MessageBox.d.ts.map +0 -1
  479. package/dist/ui/components/MessageDisplay.d.ts +0 -14
  480. package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
  481. package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
  482. package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
  483. package/dist/ui/components/MultiLineInput.d.ts +0 -13
  484. package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
  485. package/dist/ui/components/PasswordPrompt.d.ts +0 -9
  486. package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
  487. package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
  488. package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
  489. package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
  490. package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
  491. package/dist/ui/components/SelectPrompt.d.ts +0 -12
  492. package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
  493. package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
  494. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
  495. package/dist/ui/components/StatusBar.d.ts +0 -14
  496. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  497. package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
  498. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
  499. package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
  500. package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
  501. package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
  502. package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
  503. package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
  504. package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
  505. package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
  506. package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
  507. package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
  508. package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
  509. package/dist/ui/components/ToolResult.d.ts +0 -10
  510. package/dist/ui/components/ToolResult.d.ts.map +0 -1
  511. package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
  512. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
  513. package/dist/ui/components/WelcomeBanner.d.ts +0 -3
  514. package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
  515. package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
  516. package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
  517. package/dist/utils/ansi-encoder.d.ts +0 -7
  518. package/dist/utils/ansi-encoder.d.ts.map +0 -1
  519. package/dist/utils/chat-formatter.d.ts +0 -12
  520. package/dist/utils/chat-formatter.d.ts.map +0 -1
  521. package/dist/utils/command-history.d.ts +0 -24
  522. package/dist/utils/command-history.d.ts.map +0 -1
  523. package/dist/utils/context-sanitizer.d.ts +0 -50
  524. package/dist/utils/context-sanitizer.d.ts.map +0 -1
  525. package/dist/utils/conversation-logger.d.ts +0 -142
  526. package/dist/utils/conversation-logger.d.ts.map +0 -1
  527. package/dist/utils/custom-commands-manager.d.ts +0 -59
  528. package/dist/utils/custom-commands-manager.d.ts.map +0 -1
  529. package/dist/utils/editor-utils.d.ts +0 -101
  530. package/dist/utils/editor-utils.d.ts.map +0 -1
  531. package/dist/utils/file.d.ts +0 -61
  532. package/dist/utils/file.d.ts.map +0 -1
  533. package/dist/utils/input-classifier.d.ts +0 -25
  534. package/dist/utils/input-classifier.d.ts.map +0 -1
  535. package/dist/utils/logger.d.ts +0 -17
  536. package/dist/utils/logger.d.ts.map +0 -1
  537. package/dist/utils/markdown-parser.d.ts +0 -60
  538. package/dist/utils/markdown-parser.d.ts.map +0 -1
  539. package/dist/utils/shell.d.ts +0 -47
  540. package/dist/utils/shell.d.ts.map +0 -1
  541. package/dist/utils/state.d.ts +0 -13
  542. package/dist/utils/state.d.ts.map +0 -1
  543. package/dist/utils/syntax-checker.d.ts +0 -24
  544. package/dist/utils/syntax-checker.d.ts.map +0 -1
  545. package/dist/utils/terminal-output.d.ts +0 -25
  546. package/dist/utils/terminal-output.d.ts.map +0 -1
  547. package/dist/utils/text-clipboard.d.ts +0 -12
  548. package/dist/utils/text-clipboard.d.ts.map +0 -1
  549. package/dist/utils/unicode-sanitizer.d.ts +0 -44
  550. package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
  551. package/dist/utils/version-checker.d.ts +0 -14
  552. package/dist/utils/version-checker.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-command-handler.js","sourceRoot":"","sources":["../../src/mcp/mcp-command-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/mcp/mcp-command-handler.ts"],"sourcesContent":["import { MCPConfigManager, MCPServerConfig } from '../config/mcp-config-manager.js';\r\nimport { MCPServerManager } from './mcp-server-manager.js';\r\nimport { createMCPToolWrappers } from './mcp-tool-wrapper.js';\r\nimport { ToolRegistry } from '../tools/registry.js';\r\nimport { logError, logWarning } from '../utils/logger.js';\r\n\r\nexport class MCPCommandHandler {\r\n private onShowMCPAddScreen?: () => void;\r\n private onShowMCPRemoveScreen?: (servers: MCPServerConfig[]) => void;\r\n private onShowMCPEnableScreen?: (servers: MCPServerConfig[]) => void;\r\n private onShowMCPDisableScreen?: (servers: MCPServerConfig[]) => void;\r\n private onShowMCPListScreen?: (servers: Array<{ name: string; enabled: boolean; status: 'connected' | 'disconnected' | 'error' | 'connecting'; tools: Array<{ name: string }> }>) => void;\r\n\r\n constructor(\r\n private mcpConfigManager: MCPConfigManager,\r\n private mcpServerManager: MCPServerManager,\r\n private toolRegistry: ToolRegistry\r\n ) { }\r\n\r\n // Callback setters for UI screens\r\n setOnShowMCPAddScreen(callback: () => void): void {\r\n this.onShowMCPAddScreen = callback;\r\n }\r\n\r\n setOnShowMCPRemoveScreen(callback: (servers: MCPServerConfig[]) => void): void {\r\n this.onShowMCPRemoveScreen = callback;\r\n }\r\n\r\n setOnShowMCPEnableScreen(callback: (servers: MCPServerConfig[]) => void): void {\r\n this.onShowMCPEnableScreen = callback;\r\n }\r\n\r\n setOnShowMCPDisableScreen(callback: (servers: MCPServerConfig[]) => void): void {\r\n this.onShowMCPDisableScreen = callback;\r\n }\r\n\r\n setOnShowMCPListScreen(callback: (servers: Array<{ name: string; enabled: boolean; status: 'connected' | 'disconnected' | 'error' | 'connecting'; tools: Array<{ name: string }> }>) => void): void {\r\n this.onShowMCPListScreen = callback;\r\n }\r\n\r\n async initializeMCP(): Promise<void> {\r\n try {\r\n // Auto-connect to configured servers\r\n const servers = this.mcpConfigManager.getServers();\r\n\r\n for (const serverConfig of servers) {\r\n try {\r\n await this.mcpServerManager.connect(serverConfig);\r\n\r\n // Register MCP tools to tool registry\r\n const tools = await this.mcpServerManager.listTools(serverConfig.name);\r\n const wrappedTools = createMCPToolWrappers(serverConfig.name, tools, this.mcpServerManager);\r\n\r\n for (const tool of wrappedTools) {\r\n this.toolRegistry.register(tool);\r\n }\r\n } catch (error) {\r\n // Silent fail - user can check status with /mcp status\r\n logWarning(`MCP server ${serverConfig.name} failed to connect during init`);\r\n }\r\n }\r\n } catch (error: any) {\r\n logError('Failed to initialize MCP', error instanceof Error ? error : new Error(error?.message || 'Unknown error'));\r\n }\r\n }\r\n\r\n async handleCommand(args: string[]): Promise<string> {\r\n const subcommand = args[0]?.toLowerCase();\r\n\r\n if (!subcommand) {\r\n return '## MCP (Model Context Protocol) Server Management\\n\\n' +\r\n 'Available subcommands:\\n\\n' +\r\n '/mcp list - List configured MCP servers and tools\\n' +\r\n '/mcp refresh - Restart all MCP servers\\n' +\r\n '/mcp add - Add a new MCP server\\n' +\r\n '/mcp remove - Remove an MCP server\\n' +\r\n '/mcp enable - Enable a disabled server\\n' +\r\n '/mcp disable - Disable an enabled server\\n\\n' +\r\n 'Type any subcommand for more details.';\r\n }\r\n\r\n switch (subcommand) {\r\n case 'list':\r\n return this.handleList();\r\n case 'refresh':\r\n return await this.handleRefresh();\r\n case 'add':\r\n if (this.onShowMCPAddScreen) {\r\n this.onShowMCPAddScreen();\r\n return ''; // UI will handle display\r\n }\r\n return '❌ MCP add screen not available. Please restart the CLI.';\r\n case 'remove':\r\n return this.handleRemove();\r\n case 'enable':\r\n return this.handleEnable();\r\n case 'disable':\r\n return this.handleDisable();\r\n default:\r\n return `❌ Unknown MCP subcommand: ${subcommand}\\nType /mcp for help.`;\r\n }\r\n }\r\n\r\n private handleList(): string {\r\n const servers = this.mcpConfigManager.getAllServers();\r\n\r\n if (servers.length === 0) {\r\n return '## No MCP Servers Configured\\n\\n' +\r\n `Configuration file: \\`${this.mcpConfigManager.getConfigPath()}\\`\\n\\n` +\r\n 'Use `/mcp add` to add your first MCP server.';\r\n }\r\n\r\n // Prepare data for the list screen\r\n const listData = servers.map(serverConfig => {\r\n const statuses = this.mcpServerManager.getStatus(serverConfig.name);\r\n const status = statuses[0];\r\n const tools = status?.tools || [];\r\n\r\n return {\r\n name: serverConfig.name,\r\n enabled: serverConfig.enabled !== false,\r\n status: serverConfig.enabled === false ? 'disconnected' as const : (status?.status || 'disconnected' as const),\r\n tools: tools.map(t => ({ name: t.name }))\r\n };\r\n });\r\n\r\n if (this.onShowMCPListScreen) {\r\n this.onShowMCPListScreen(listData);\r\n return ''; // UI will handle display\r\n }\r\n\r\n // Fallback to text output if screen not available\r\n let output = '## MCP Servers and Tools\\n\\n';\r\n\r\n for (const serverConfig of servers) {\r\n const statuses = this.mcpServerManager.getStatus(serverConfig.name);\r\n const status = statuses[0];\r\n const tools = status?.tools || [];\r\n\r\n const statusIcon = serverConfig.enabled === false ? '⏸️' :\r\n status?.status === 'connected' ? '✅' :\r\n status?.status === 'error' ? '❌' : '⚠️';\r\n\r\n const enabledLabel = serverConfig.enabled === false ? ' (disabled)' : '';\r\n\r\n output += `### ${statusIcon} ${serverConfig.name}${enabledLabel}\\n\\n`;\r\n output += `- **Command**: \\`${serverConfig.command}\\`\\n`;\r\n if (serverConfig.args && serverConfig.args.length > 0) {\r\n output += `- **Args**: \\`${serverConfig.args.join(' ')}\\`\\n`;\r\n }\r\n output += `- **Status**: ${serverConfig.enabled === false ? 'disabled' : (status?.status || 'unknown')}\\n`;\r\n output += `- **Tools**: ${tools.length}\\n\\n`;\r\n\r\n if (tools.length > 0) {\r\n for (const tool of tools) {\r\n output += ` - **${tool.name}**`;\r\n if (tool.description) {\r\n output += `: ${tool.description}`;\r\n }\r\n output += '\\n';\r\n }\r\n output += '\\n';\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n private handleRemove(): string {\r\n const servers = this.mcpConfigManager.getAllServers();\r\n\r\n if (servers.length === 0) {\r\n return '❌ No MCP servers to remove.\\n\\nUse `/mcp add` to add servers first.';\r\n }\r\n\r\n if (this.onShowMCPRemoveScreen) {\r\n this.onShowMCPRemoveScreen(servers);\r\n return ''; // UI will handle display\r\n }\r\n return '❌ MCP remove screen not available. Please restart the CLI.';\r\n }\r\n\r\n private handleEnable(): string {\r\n const disabledServers = this.mcpConfigManager.getAllServers().filter(s => s.enabled === false);\r\n\r\n if (disabledServers.length === 0) {\r\n return '✅ All MCP servers are already enabled.\\n\\nUse `/mcp list` to see all servers.';\r\n }\r\n\r\n if (this.onShowMCPEnableScreen) {\r\n this.onShowMCPEnableScreen(disabledServers);\r\n return ''; // UI will handle display\r\n }\r\n return '❌ MCP enable screen not available. Please restart the CLI.';\r\n }\r\n\r\n private handleDisable(): string {\r\n const enabledServers = this.mcpConfigManager.getAllServers().filter(s => s.enabled !== false);\r\n\r\n if (enabledServers.length === 0) {\r\n return '⚠️ All MCP servers are already disabled.\\n\\nUse `/mcp list` to see all servers.';\r\n }\r\n\r\n if (this.onShowMCPDisableScreen) {\r\n this.onShowMCPDisableScreen(enabledServers);\r\n return ''; // UI will handle display\r\n }\r\n return '❌ MCP disable screen not available. Please restart the CLI.';\r\n }\r\n\r\n private async handleRefresh(): Promise<string> {\r\n try {\r\n // Reload config from disk (updates cache)\r\n const config = this.mcpConfigManager.reload();\r\n const servers = config.servers.filter(s => s.enabled !== false);\r\n\r\n if (servers.length === 0) {\r\n return '⚠️ No enabled MCP servers in configuration.';\r\n }\r\n\r\n // Refresh servers\r\n await this.mcpServerManager.refresh(servers);\r\n\r\n // Re-register tools\r\n for (const serverConfig of servers) {\r\n try {\r\n if (this.mcpServerManager.isConnected(serverConfig.name)) {\r\n const tools = await this.mcpServerManager.listTools(serverConfig.name);\r\n const wrappedTools = createMCPToolWrappers(serverConfig.name, tools, this.mcpServerManager);\r\n\r\n for (const tool of wrappedTools) {\r\n this.toolRegistry.register(tool);\r\n }\r\n }\r\n } catch (error) {\r\n // Continue with other servers\r\n }\r\n }\r\n\r\n // Get all servers (including disabled ones) for comprehensive status\r\n const allServers = this.mcpConfigManager.getAllServers();\r\n const statuses = this.mcpServerManager.getStatus();\r\n \r\n // Create a map for quick status lookup\r\n const statusMap = new Map(statuses.map(s => [s.name, s]));\r\n \r\n // Categorize servers\r\n const connectedServers: string[] = [];\r\n const disabledServers: string[] = [];\r\n const errorServers: string[] = [];\r\n \r\n for (const server of allServers) {\r\n if (server.enabled === false) {\r\n disabledServers.push(server.name);\r\n } else {\r\n const status = statusMap.get(server.name);\r\n if (status?.status === 'connected') {\r\n connectedServers.push(server.name);\r\n } else if (status?.status === 'error') {\r\n errorServers.push(server.name);\r\n }\r\n }\r\n }\r\n\r\n let output = '✓ MCP servers refreshed!\\n\\n';\r\n \r\n // Connected & Enabled section\r\n if (connectedServers.length > 0) {\r\n output += `**Connected & Enabled** (${connectedServers.length}):\\n`;\r\n for (const name of connectedServers) {\r\n output += ` - ${name}\\n`;\r\n }\r\n output += '\\n';\r\n }\r\n \r\n // Disabled section\r\n if (disabledServers.length > 0) {\r\n output += `**Disabled** (${disabledServers.length}):\\n`;\r\n for (const name of disabledServers) {\r\n output += ` - ${name}\\n`;\r\n }\r\n output += '\\n';\r\n }\r\n \r\n // Errors section\r\n if (errorServers.length > 0) {\r\n output += `**Errors** (${errorServers.length}):\\n`;\r\n for (const name of errorServers) {\r\n output += ` - ${name}\\n`;\r\n }\r\n output += '\\n';\r\n }\r\n \r\n output += `Use \\`/mcp list\\` for details.`;\r\n \r\n return output;\r\n } catch (error: any) {\r\n return `❌ Failed to refresh MCP servers: ${error.message}`;\r\n }\r\n }\r\n\r\n /**\r\n * Programmatically add an MCP server, connect to it, register its tools, and return status.\r\n * Used by the add_mcp AI tool for automatic MCP provisioning.\r\n */\r\n async addAndConnect(config: MCPServerConfig, timeoutMs: number = 60000): Promise<{\r\n success: boolean;\r\n serverName: string;\r\n tools: string[];\r\n error?: string;\r\n logs?: string;\r\n }> {\r\n const logs: string[] = [];\r\n\r\n try {\r\n // 1. Save config to disk\r\n logs.push(`[add_mcp] Saving config for server \"${config.name}\"...`);\r\n this.mcpConfigManager.addServer(config);\r\n logs.push(`[add_mcp] Config saved to ${this.mcpConfigManager.getConfigPath()}`);\r\n\r\n // 2. Connect to the server\r\n logs.push(`[add_mcp] Connecting to MCP server \"${config.name}\" (command: ${config.command} ${(config.args || []).join(' ')})...`);\r\n await this.mcpServerManager.connect(config, timeoutMs);\r\n logs.push(`[add_mcp] Connected successfully.`);\r\n\r\n // 3. List tools from the newly connected server\r\n const mcpTools = await this.mcpServerManager.listTools(config.name);\r\n logs.push(`[add_mcp] Server \"${config.name}\" provides ${mcpTools.length} tool(s).`);\r\n\r\n // 4. Remove any previously registered tools for this server (in case of re-add)\r\n this.toolRegistry.unregisterByPrefix(`mcp_${config.name}_`);\r\n\r\n // 5. Register the new tools\r\n const wrappedTools = createMCPToolWrappers(config.name, mcpTools, this.mcpServerManager);\r\n for (const tool of wrappedTools) {\r\n this.toolRegistry.register(tool);\r\n logs.push(`[add_mcp] Registered tool: ${tool.schema.name}`);\r\n }\r\n\r\n const toolNames = mcpTools.map(t => t.name);\r\n logs.push(`[add_mcp] All tools registered. Server \"${config.name}\" is ready.`);\r\n\r\n return {\r\n success: true,\r\n serverName: config.name,\r\n tools: toolNames,\r\n logs: logs.join('\\n'),\r\n };\r\n } catch (error: any) {\r\n logs.push(`[add_mcp] ERROR: ${error.message}`);\r\n\r\n // If connection failed, remove the config we just saved so we don't leave broken entries\r\n try {\r\n this.mcpConfigManager.removeServer(config.name);\r\n logs.push(`[add_mcp] Rolled back config for \"${config.name}\" due to connection failure.`);\r\n } catch (rollbackError: any) {\r\n logs.push(`[add_mcp] Warning: Could not rollback config: ${rollbackError.message}`);\r\n }\r\n\r\n return {\r\n success: false,\r\n serverName: config.name,\r\n tools: [],\r\n error: error.message,\r\n logs: logs.join('\\n'),\r\n };\r\n }\r\n }\r\n\r\n // Server management methods (called by CLI adapter after UI interaction)\r\n addServer(config: MCPServerConfig): { success: boolean; error?: string } {\r\n try {\r\n this.mcpConfigManager.addServer(config);\r\n return { success: true };\r\n } catch (error: any) {\r\n return { success: false, error: error.message };\r\n }\r\n }\r\n\r\n removeServer(name: string): void {\r\n this.mcpConfigManager.removeServer(name);\r\n }\r\n\r\n enableServer(name: string): void {\r\n this.mcpConfigManager.enableServer(name);\r\n }\r\n\r\n disableServer(name: string): void {\r\n this.mcpConfigManager.disableServer(name);\r\n }\r\n\r\n validateServerConfig(jsonString: string): { valid: boolean; config?: MCPServerConfig; error?: string } {\r\n return this.mcpConfigManager.validateServerConfigJSON(jsonString);\r\n }\r\n\r\n getConfigManager(): MCPConfigManager {\r\n return this.mcpConfigManager;\r\n }\r\n\r\n /**\r\n * Get the names of all currently connected MCP servers.\r\n */\r\n getConnectedServerNames(): string[] {\r\n const statuses = this.mcpServerManager.getStatus();\r\n return statuses\r\n .filter(s => s.status === 'connected')\r\n .map(s => s.name);\r\n }\r\n}\r\n\r\n"],"mappings":"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","names":[]}
@@ -1,167 +1,151 @@
1
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
- import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
3
- import { logWarning } from '../utils/logger.js';
4
- export class MCPServerManager {
5
- servers = new Map();
6
- statuses = new Map();
7
- startTimes = new Map();
8
- async connect(config) {
9
- let transport;
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
3
+ import { logWarning } from "../utils/logger.js";
4
+ class MCPServerManager {
5
+ servers = /* @__PURE__ */ new Map();
6
+ statuses = /* @__PURE__ */ new Map();
7
+ startTimes = /* @__PURE__ */ new Map();
8
+ async connect(config, timeoutMs = 6e4) {
9
+ let transport;
10
+ try {
11
+ this.statuses.set(config.name, {
12
+ name: config.name,
13
+ status: "connecting",
14
+ tools: []
15
+ });
16
+ transport = new StdioClientTransport({
17
+ command: config.command,
18
+ args: config.args || [],
19
+ env: { ...process.env, ...config.env },
20
+ stderr: "ignore"
21
+ // Suppress stderr output to terminal
22
+ });
23
+ const client = new Client({
24
+ name: "centaurus-cli",
25
+ version: "1.0.0"
26
+ }, {
27
+ capabilities: {}
28
+ });
29
+ const connectPromise = client.connect(transport);
30
+ const timeoutPromise = new Promise((_, reject) => {
31
+ setTimeout(() => reject(new Error(`Connection to MCP server '${config.name}' timed out after ${timeoutMs}ms`)), timeoutMs);
32
+ });
33
+ await Promise.race([connectPromise, timeoutPromise]);
34
+ const toolsResponse = await client.listTools();
35
+ const tools = toolsResponse.tools.map((tool) => ({
36
+ name: tool.name,
37
+ description: tool.description,
38
+ inputSchema: tool.inputSchema
39
+ }));
40
+ this.servers.set(config.name, {
41
+ client,
42
+ process: transport.process,
43
+ // Access internal process for cleanup
44
+ config
45
+ });
46
+ this.startTimes.set(config.name, Date.now());
47
+ this.statuses.set(config.name, {
48
+ name: config.name,
49
+ status: "connected",
50
+ tools
51
+ });
52
+ } catch (error) {
53
+ if (transport && transport.process) {
10
54
  try {
11
- // Set status to connecting
12
- this.statuses.set(config.name, {
13
- name: config.name,
14
- status: 'connecting',
15
- tools: []
16
- });
17
- // Create transport with stderr suppressed to prevent logs in terminal
18
- transport = new StdioClientTransport({
19
- command: config.command,
20
- args: config.args || [],
21
- env: { ...process.env, ...config.env },
22
- stderr: 'ignore' // Suppress stderr output to terminal
23
- });
24
- // Create client
25
- const client = new Client({
26
- name: 'centaurus-cli',
27
- version: '1.0.0'
28
- }, {
29
- capabilities: {}
30
- });
31
- // Connect to the server with a timeout (OPS-15)
32
- const connectPromise = client.connect(transport);
33
- const timeoutPromise = new Promise((_, reject) => {
34
- setTimeout(() => reject(new Error(`Connection to MCP server '${config.name}' timed out after 10000ms`)), 10000);
35
- });
36
- await Promise.race([connectPromise, timeoutPromise]);
37
- // List available tools
38
- const toolsResponse = await client.listTools();
39
- const tools = toolsResponse.tools.map(tool => ({
40
- name: tool.name,
41
- description: tool.description,
42
- inputSchema: tool.inputSchema
43
- }));
44
- // Store client (transport manages the process internally)
45
- this.servers.set(config.name, {
46
- client,
47
- process: transport.process, // Access internal process for cleanup
48
- config
49
- });
50
- this.startTimes.set(config.name, Date.now());
51
- // Update status
52
- this.statuses.set(config.name, {
53
- name: config.name,
54
- status: 'connected',
55
- tools
56
- });
57
- }
58
- catch (error) {
59
- // Cleanup orphan process if transport was initialized (OPS-16)
60
- if (transport && transport.process) {
61
- try {
62
- transport.process.kill('SIGKILL');
63
- }
64
- catch (killError) {
65
- // Ignore process kill errors
66
- }
67
- }
68
- this.statuses.set(config.name, {
69
- name: config.name,
70
- status: 'error',
71
- tools: [],
72
- error: error.message || 'Failed to connect'
73
- });
74
- throw error;
55
+ transport.process.kill("SIGKILL");
56
+ } catch (killError) {
75
57
  }
58
+ }
59
+ this.statuses.set(config.name, {
60
+ name: config.name,
61
+ status: "error",
62
+ tools: [],
63
+ error: error.message || "Failed to connect"
64
+ });
65
+ throw error;
76
66
  }
77
- async disconnect(name) {
78
- const server = this.servers.get(name);
79
- if (!server)
80
- return;
81
- try {
82
- // Gracefully close the client
83
- await server.client.close();
84
- // Kill the process
85
- server.process.kill();
86
- // Clean up
87
- this.servers.delete(name);
88
- this.startTimes.delete(name);
89
- // Update status
90
- this.statuses.set(name, {
91
- name,
92
- status: 'disconnected',
93
- tools: []
94
- });
95
- }
96
- catch (error) {
97
- logWarning(`Error disconnecting from MCP server ${name}: ${error?.message || error}`);
98
- }
67
+ }
68
+ async disconnect(name) {
69
+ const server = this.servers.get(name);
70
+ if (!server) return;
71
+ try {
72
+ await server.client.close();
73
+ server.process.kill();
74
+ this.servers.delete(name);
75
+ this.startTimes.delete(name);
76
+ this.statuses.set(name, {
77
+ name,
78
+ status: "disconnected",
79
+ tools: []
80
+ });
81
+ } catch (error) {
82
+ logWarning(`Error disconnecting from MCP server ${name}: ${error?.message || error}`);
99
83
  }
100
- async disconnectAll() {
101
- const disconnectPromises = Array.from(this.servers.keys()).map(name => this.disconnect(name));
102
- await Promise.all(disconnectPromises);
103
- }
104
- getClient(name) {
105
- return this.servers.get(name)?.client;
106
- }
107
- getStatus(serverName) {
108
- if (serverName) {
109
- const status = this.statuses.get(serverName);
110
- return status ? [this.enrichStatus(status)] : [];
111
- }
112
- return Array.from(this.statuses.values()).map(status => this.enrichStatus(status));
84
+ }
85
+ async disconnectAll() {
86
+ const disconnectPromises = Array.from(this.servers.keys()).map(
87
+ (name) => this.disconnect(name)
88
+ );
89
+ await Promise.all(disconnectPromises);
90
+ }
91
+ getClient(name) {
92
+ return this.servers.get(name)?.client;
93
+ }
94
+ getStatus(serverName) {
95
+ if (serverName) {
96
+ const status = this.statuses.get(serverName);
97
+ return status ? [this.enrichStatus(status)] : [];
113
98
  }
114
- enrichStatus(status) {
115
- const startTime = this.startTimes.get(status.name);
116
- if (startTime && status.status === 'connected') {
117
- return {
118
- ...status,
119
- uptime: Math.floor((Date.now() - startTime) / 1000)
120
- };
121
- }
122
- return status;
99
+ return Array.from(this.statuses.values()).map((status) => this.enrichStatus(status));
100
+ }
101
+ enrichStatus(status) {
102
+ const startTime = this.startTimes.get(status.name);
103
+ if (startTime && status.status === "connected") {
104
+ return {
105
+ ...status,
106
+ uptime: Math.floor((Date.now() - startTime) / 1e3)
107
+ };
123
108
  }
124
- async listTools(serverName) {
125
- if (serverName) {
126
- const status = this.statuses.get(serverName);
127
- return status?.tools || [];
128
- }
129
- // Return tools from all connected servers
130
- const allTools = [];
131
- for (const status of this.statuses.values()) {
132
- if (status.status === 'connected') {
133
- allTools.push(...status.tools);
134
- }
135
- }
136
- return allTools;
109
+ return status;
110
+ }
111
+ async listTools(serverName) {
112
+ if (serverName) {
113
+ const status = this.statuses.get(serverName);
114
+ return status?.tools || [];
137
115
  }
138
- async callTool(serverName, toolName, args) {
139
- const server = this.servers.get(serverName);
140
- if (!server) {
141
- throw new Error(`Server ${serverName} not connected`);
142
- }
143
- try {
144
- const result = await server.client.callTool({ name: toolName, arguments: args });
145
- return result;
146
- }
147
- catch (error) {
148
- throw new Error(`Tool execution failed: ${error.message}`);
149
- }
116
+ const allTools = [];
117
+ for (const status of this.statuses.values()) {
118
+ if (status.status === "connected") {
119
+ allTools.push(...status.tools);
120
+ }
150
121
  }
151
- async refresh(configs) {
152
- // Disconnect all servers
153
- await this.disconnectAll();
154
- // Reconnect enabled servers
155
- const connectPromises = configs
156
- .filter(config => config.enabled !== false)
157
- .map(config => this.connect(config).catch(error => {
158
- logWarning(`Failed to connect to MCP server ${config.name}: ${error?.message || error}`);
159
- }));
160
- await Promise.all(connectPromises);
122
+ return allTools;
123
+ }
124
+ async callTool(serverName, toolName, args) {
125
+ const server = this.servers.get(serverName);
126
+ if (!server) {
127
+ throw new Error(`Server ${serverName} not connected`);
161
128
  }
162
- isConnected(serverName) {
163
- const status = this.statuses.get(serverName);
164
- return status?.status === 'connected';
129
+ try {
130
+ const result = await server.client.callTool({ name: toolName, arguments: args });
131
+ return result;
132
+ } catch (error) {
133
+ throw new Error(`Tool execution failed: ${error.message}`);
165
134
  }
135
+ }
136
+ async refresh(configs) {
137
+ await this.disconnectAll();
138
+ const connectPromises = configs.filter((config) => config.enabled !== false).map((config) => this.connect(config).catch((error) => {
139
+ logWarning(`Failed to connect to MCP server ${config.name}: ${error?.message || error}`);
140
+ }));
141
+ await Promise.all(connectPromises);
142
+ }
143
+ isConnected(serverName) {
144
+ const status = this.statuses.get(serverName);
145
+ return status?.status === "connected";
146
+ }
166
147
  }
148
+ export {
149
+ MCPServerManager
150
+ };
167
151
  //# sourceMappingURL=mcp-server-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-manager.js","sourceRoot":"","sources":["../../src/mcp/mcp-server-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/mcp/mcp-server-manager.ts"],"sourcesContent":["import { Client } from '@modelcontextprotocol/sdk/client/index.js';\r\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\r\nimport { spawn, ChildProcess } from 'child_process';\r\nimport { MCPServerConfig } from '../config/mcp-config-manager.js';\r\nimport { logError, logWarning } from '../utils/logger.js';\r\n\r\nexport interface MCPTool {\r\n name: string;\r\n description?: string;\r\n inputSchema?: any;\r\n}\r\n\r\nexport interface MCPServerStatus {\r\n name: string;\r\n status: 'connected' | 'disconnected' | 'error' | 'connecting';\r\n tools: MCPTool[];\r\n error?: string;\r\n uptime?: number;\r\n}\r\n\r\nexport class MCPServerManager {\r\n private servers: Map<string, { client: Client; process: ChildProcess; config: MCPServerConfig }> = new Map();\r\n private statuses: Map<string, MCPServerStatus> = new Map();\r\n private startTimes: Map<string, number> = new Map();\r\n\r\n async connect(config: MCPServerConfig, timeoutMs: number = 60000): Promise<void> {\r\n let transport: StdioClientTransport | undefined;\r\n try {\r\n // Set status to connecting\r\n this.statuses.set(config.name, {\r\n name: config.name,\r\n status: 'connecting',\r\n tools: []\r\n });\r\n\r\n // Create transport with stderr suppressed to prevent logs in terminal\r\n transport = new StdioClientTransport({\r\n command: config.command,\r\n args: config.args || [],\r\n env: { ...process.env, ...config.env },\r\n stderr: 'ignore' // Suppress stderr output to terminal\r\n });\r\n\r\n // Create client\r\n const client = new Client({\r\n name: 'centaurus-cli',\r\n version: '1.0.0'\r\n }, {\r\n capabilities: {}\r\n });\r\n\r\n // Connect to the server with a timeout (OPS-15)\r\n const connectPromise = client.connect(transport);\r\n const timeoutPromise = new Promise<void>((_, reject) => {\r\n setTimeout(() => reject(new Error(`Connection to MCP server '${config.name}' timed out after ${timeoutMs}ms`)), timeoutMs);\r\n });\r\n\r\n await Promise.race([connectPromise, timeoutPromise]);\r\n\r\n // List available tools\r\n const toolsResponse = await client.listTools();\r\n const tools: MCPTool[] = toolsResponse.tools.map(tool => ({\r\n name: tool.name,\r\n description: tool.description,\r\n inputSchema: tool.inputSchema\r\n }));\r\n\r\n // Store client (transport manages the process internally)\r\n this.servers.set(config.name, {\r\n client,\r\n process: (transport as any).process, // Access internal process for cleanup\r\n config\r\n });\r\n this.startTimes.set(config.name, Date.now());\r\n\r\n // Update status\r\n this.statuses.set(config.name, {\r\n name: config.name,\r\n status: 'connected',\r\n tools\r\n });\r\n\r\n } catch (error: any) {\r\n // Cleanup orphan process if transport was initialized (OPS-16)\r\n if (transport && (transport as any).process) {\r\n try {\r\n ((transport as any).process as ChildProcess).kill('SIGKILL');\r\n } catch (killError) {\r\n // Ignore process kill errors\r\n }\r\n }\r\n\r\n this.statuses.set(config.name, {\r\n name: config.name,\r\n status: 'error',\r\n tools: [],\r\n error: error.message || 'Failed to connect'\r\n });\r\n throw error;\r\n }\r\n }\r\n\r\n async disconnect(name: string): Promise<void> {\r\n const server = this.servers.get(name);\r\n if (!server) return;\r\n\r\n try {\r\n // Gracefully close the client\r\n await server.client.close();\r\n\r\n // Kill the process\r\n server.process.kill();\r\n\r\n // Clean up\r\n this.servers.delete(name);\r\n this.startTimes.delete(name);\r\n\r\n // Update status\r\n this.statuses.set(name, {\r\n name,\r\n status: 'disconnected',\r\n tools: []\r\n });\r\n } catch (error: any) {\r\n logWarning(`Error disconnecting from MCP server ${name}: ${error?.message || error}`);\r\n }\r\n }\r\n\r\n async disconnectAll(): Promise<void> {\r\n const disconnectPromises = Array.from(this.servers.keys()).map(name =>\r\n this.disconnect(name)\r\n );\r\n await Promise.all(disconnectPromises);\r\n }\r\n\r\n getClient(name: string): Client | undefined {\r\n return this.servers.get(name)?.client;\r\n }\r\n\r\n getStatus(serverName?: string): MCPServerStatus[] {\r\n if (serverName) {\r\n const status = this.statuses.get(serverName);\r\n return status ? [this.enrichStatus(status)] : [];\r\n }\r\n\r\n return Array.from(this.statuses.values()).map(status => this.enrichStatus(status));\r\n }\r\n\r\n private enrichStatus(status: MCPServerStatus): MCPServerStatus {\r\n const startTime = this.startTimes.get(status.name);\r\n if (startTime && status.status === 'connected') {\r\n return {\r\n ...status,\r\n uptime: Math.floor((Date.now() - startTime) / 1000)\r\n };\r\n }\r\n return status;\r\n }\r\n\r\n async listTools(serverName?: string): Promise<MCPTool[]> {\r\n if (serverName) {\r\n const status = this.statuses.get(serverName);\r\n return status?.tools || [];\r\n }\r\n\r\n // Return tools from all connected servers\r\n const allTools: MCPTool[] = [];\r\n for (const status of this.statuses.values()) {\r\n if (status.status === 'connected') {\r\n allTools.push(...status.tools);\r\n }\r\n }\r\n return allTools;\r\n }\r\n\r\n async callTool(serverName: string, toolName: string, args: any): Promise<any> {\r\n const server = this.servers.get(serverName);\r\n if (!server) {\r\n throw new Error(`Server ${serverName} not connected`);\r\n }\r\n\r\n try {\r\n const result = await server.client.callTool({ name: toolName, arguments: args });\r\n return result;\r\n } catch (error: any) {\r\n throw new Error(`Tool execution failed: ${error.message}`);\r\n }\r\n }\r\n\r\n async refresh(configs: MCPServerConfig[]): Promise<void> {\r\n // Disconnect all servers\r\n await this.disconnectAll();\r\n\r\n // Reconnect enabled servers\r\n const connectPromises = configs\r\n .filter(config => config.enabled !== false)\r\n .map(config => this.connect(config).catch(error => {\r\n logWarning(`Failed to connect to MCP server ${config.name}: ${error?.message || error}`);\r\n }));\r\n\r\n await Promise.all(connectPromises);\r\n }\r\n\r\n isConnected(serverName: string): boolean {\r\n const status = this.statuses.get(serverName);\r\n return status?.status === 'connected';\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
@@ -1,102 +1,82 @@
1
- /**
2
- * Sanitize JSON Schema for Gemini compatibility
3
- * Removes properties that Gemini doesn't support
4
- */
5
1
  function sanitizeSchemaForGemini(schema) {
6
- if (!schema || typeof schema !== 'object') {
7
- return schema;
2
+ if (!schema || typeof schema !== "object") {
3
+ return schema;
4
+ }
5
+ const sanitized = Array.isArray(schema) ? [...schema] : { ...schema };
6
+ const unsupportedProps = [
7
+ "exclusiveMinimum",
8
+ "exclusiveMaximum",
9
+ "const",
10
+ "contentMediaType",
11
+ "contentEncoding",
12
+ "examples",
13
+ "$schema",
14
+ "$id",
15
+ "$ref",
16
+ "definitions",
17
+ "$defs"
18
+ ];
19
+ for (const prop of unsupportedProps) {
20
+ delete sanitized[prop];
21
+ }
22
+ for (const key in sanitized) {
23
+ if (typeof sanitized[key] === "object" && sanitized[key] !== null) {
24
+ sanitized[key] = sanitizeSchemaForGemini(sanitized[key]);
8
25
  }
9
- // Create a copy to avoid mutating the original
10
- const sanitized = Array.isArray(schema) ? [...schema] : { ...schema };
11
- // Remove unsupported properties
12
- const unsupportedProps = [
13
- 'exclusiveMinimum',
14
- 'exclusiveMaximum',
15
- 'const',
16
- 'contentMediaType',
17
- 'contentEncoding',
18
- 'examples',
19
- '$schema',
20
- '$id',
21
- '$ref',
22
- 'definitions',
23
- '$defs'
24
- ];
25
- for (const prop of unsupportedProps) {
26
- delete sanitized[prop];
27
- }
28
- // Recursively sanitize nested objects
29
- for (const key in sanitized) {
30
- if (typeof sanitized[key] === 'object' && sanitized[key] !== null) {
31
- sanitized[key] = sanitizeSchemaForGemini(sanitized[key]);
32
- }
33
- }
34
- return sanitized;
26
+ }
27
+ return sanitized;
35
28
  }
36
- /**
37
- * Create a Tool wrapper for an MCP tool
38
- * This allows MCP tools to be registered in the Centaurus tool registry
39
- */
40
- export function createMCPToolWrapper(serverName, mcpTool, serverManager) {
41
- // Sanitize the input schema to remove Gemini-incompatible properties
42
- const sanitizedSchema = sanitizeSchemaForGemini(mcpTool.inputSchema || {
43
- type: 'object',
44
- properties: {},
45
- required: []
46
- });
47
- return {
48
- schema: {
49
- name: `mcp_${serverName}_${mcpTool.name}`,
50
- description: mcpTool.description || `${mcpTool.name} from ${serverName} MCP server`,
51
- parameters: sanitizedSchema
52
- },
53
- async execute(args, context) {
54
- try {
55
- // Check if server is still connected
56
- if (!serverManager.isConnected(serverName)) {
57
- throw new Error(`MCP server '${serverName}' is not connected`);
58
- }
59
- // Request user approval before executing MCP tools
60
- // MCP tools can have side effects so they should be treated as risky operations
61
- const toolDisplayName = `mcp_${serverName}_${mcpTool.name}`;
62
- const approved = await context.requireApproval(`Execute MCP tool: ${serverName} ${mcpTool.name}`, true // MCP tools are considered risky as they can have side effects
63
- );
64
- if (!approved || (typeof approved === 'object' && !approved.approved)) {
65
- return 'MCP tool execution cancelled by user.';
66
- }
67
- // Call the MCP tool
68
- const result = await serverManager.callTool(serverName, mcpTool.name, args);
69
- // Extract content from result
70
- if (result.content && Array.isArray(result.content)) {
71
- // MCP tools return content as an array of content items
72
- return result.content
73
- .map((item) => {
74
- if (item.type === 'text') {
75
- return item.text;
76
- }
77
- else if (item.type === 'image') {
78
- return `[Image: ${item.data}]`;
79
- }
80
- else if (item.type === 'resource') {
81
- return `[Resource: ${item.resource?.uri}]`;
82
- }
83
- return JSON.stringify(item);
84
- })
85
- .join('\n');
86
- }
87
- // Fallback: return JSON stringified result
88
- return JSON.stringify(result, null, 2);
89
- }
90
- catch (error) {
91
- throw new Error(`MCP tool execution failed: ${error.message}`);
29
+ function createMCPToolWrapper(serverName, mcpTool, serverManager) {
30
+ const sanitizedSchema = sanitizeSchemaForGemini(mcpTool.inputSchema || {
31
+ type: "object",
32
+ properties: {},
33
+ required: []
34
+ });
35
+ return {
36
+ schema: {
37
+ name: `mcp_${serverName}_${mcpTool.name}`,
38
+ description: mcpTool.description || `${mcpTool.name} from ${serverName} MCP server`,
39
+ parameters: sanitizedSchema
40
+ },
41
+ async execute(args, context) {
42
+ try {
43
+ if (!serverManager.isConnected(serverName)) {
44
+ throw new Error(`MCP server '${serverName}' is not connected`);
45
+ }
46
+ const toolDisplayName = `mcp_${serverName}_${mcpTool.name}`;
47
+ const approved = await context.requireApproval(
48
+ `Execute MCP tool: ${serverName} ${mcpTool.name}`,
49
+ true
50
+ // MCP tools are considered risky as they can have side effects
51
+ );
52
+ if (!approved || typeof approved === "object" && !approved.approved) {
53
+ return "MCP tool execution cancelled by user.";
54
+ }
55
+ const result = await serverManager.callTool(serverName, mcpTool.name, args);
56
+ if (result.content && Array.isArray(result.content)) {
57
+ return result.content.map((item) => {
58
+ if (item.type === "text") {
59
+ return item.text;
60
+ } else if (item.type === "image") {
61
+ return `[Image: ${item.data}]`;
62
+ } else if (item.type === "resource") {
63
+ return `[Resource: ${item.resource?.uri}]`;
92
64
  }
65
+ return JSON.stringify(item);
66
+ }).join("\n");
93
67
  }
94
- };
68
+ return JSON.stringify(result, null, 2);
69
+ } catch (error) {
70
+ throw new Error(`MCP tool execution failed: ${error.message}`);
71
+ }
72
+ }
73
+ };
95
74
  }
96
- /**
97
- * Create tool wrappers for all tools from an MCP server
98
- */
99
- export function createMCPToolWrappers(serverName, tools, serverManager) {
100
- return tools.map(tool => createMCPToolWrapper(serverName, tool, serverManager));
75
+ function createMCPToolWrappers(serverName, tools, serverManager) {
76
+ return tools.map((tool) => createMCPToolWrapper(serverName, tool, serverManager));
101
77
  }
78
+ export {
79
+ createMCPToolWrapper,
80
+ createMCPToolWrappers
81
+ };
102
82
  //# sourceMappingURL=mcp-tool-wrapper.js.map