@office-ai/aioncli-core 0.2.3 → 0.18.4

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 (1051) hide show
  1. package/dist/index.d.ts +16 -3
  2. package/dist/index.js +15 -3
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/agents/codebase-investigator.d.ts +46 -0
  5. package/dist/src/agents/codebase-investigator.js +132 -0
  6. package/dist/src/agents/codebase-investigator.js.map +1 -0
  7. package/dist/src/agents/codebase-investigator.test.js +35 -0
  8. package/dist/src/agents/codebase-investigator.test.js.map +1 -0
  9. package/dist/src/agents/executor.d.ts +114 -0
  10. package/dist/src/agents/executor.js +779 -0
  11. package/dist/src/agents/executor.js.map +1 -0
  12. package/dist/src/agents/executor.test.js +1362 -0
  13. package/dist/src/agents/executor.test.js.map +1 -0
  14. package/dist/src/agents/invocation.d.ts +46 -0
  15. package/dist/src/agents/invocation.js +102 -0
  16. package/dist/src/agents/invocation.js.map +1 -0
  17. package/dist/src/agents/invocation.test.js +215 -0
  18. package/dist/src/agents/invocation.test.js.map +1 -0
  19. package/dist/src/agents/registry.d.ts +40 -0
  20. package/dist/src/agents/registry.js +105 -0
  21. package/dist/src/agents/registry.js.map +1 -0
  22. package/dist/src/agents/registry.test.d.ts +6 -0
  23. package/dist/src/agents/registry.test.js +160 -0
  24. package/dist/src/agents/registry.test.js.map +1 -0
  25. package/dist/src/agents/schema-utils.d.ts +39 -0
  26. package/dist/src/agents/schema-utils.js +57 -0
  27. package/dist/src/agents/schema-utils.js.map +1 -0
  28. package/dist/src/agents/schema-utils.test.d.ts +6 -0
  29. package/dist/src/agents/schema-utils.test.js +144 -0
  30. package/dist/src/agents/schema-utils.test.js.map +1 -0
  31. package/dist/src/agents/subagent-tool-wrapper.d.ts +38 -0
  32. package/dist/src/agents/subagent-tool-wrapper.js +48 -0
  33. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
  34. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +6 -0
  35. package/dist/src/agents/subagent-tool-wrapper.test.js +110 -0
  36. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
  37. package/dist/src/agents/types.d.ts +146 -0
  38. package/dist/src/agents/types.js +19 -0
  39. package/dist/src/agents/types.js.map +1 -0
  40. package/dist/src/agents/utils.d.ts +15 -0
  41. package/dist/src/agents/utils.js +29 -0
  42. package/dist/src/agents/utils.js.map +1 -0
  43. package/dist/src/agents/utils.test.d.ts +6 -0
  44. package/dist/src/agents/utils.test.js +87 -0
  45. package/dist/src/agents/utils.test.js.map +1 -0
  46. package/dist/src/code_assist/codeAssist.d.ts +6 -3
  47. package/dist/src/code_assist/codeAssist.js +13 -1
  48. package/dist/src/code_assist/codeAssist.js.map +1 -1
  49. package/dist/src/code_assist/codeAssist.test.d.ts +6 -0
  50. package/dist/src/code_assist/codeAssist.test.js +99 -0
  51. package/dist/src/code_assist/codeAssist.test.js.map +1 -0
  52. package/dist/src/code_assist/converter.d.ts +5 -1
  53. package/dist/src/code_assist/converter.js +39 -5
  54. package/dist/src/code_assist/converter.js.map +1 -1
  55. package/dist/src/code_assist/converter.test.js +112 -0
  56. package/dist/src/code_assist/converter.test.js.map +1 -1
  57. package/dist/src/code_assist/experiments/client_metadata.d.ts +12 -0
  58. package/dist/src/code_assist/experiments/client_metadata.js +50 -0
  59. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -0
  60. package/dist/src/code_assist/experiments/client_metadata.test.d.ts +6 -0
  61. package/dist/src/code_assist/experiments/client_metadata.test.js +99 -0
  62. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -0
  63. package/dist/src/code_assist/experiments/experiments.d.ts +17 -0
  64. package/dist/src/code_assist/experiments/experiments.js +36 -0
  65. package/dist/src/code_assist/experiments/experiments.js.map +1 -0
  66. package/dist/src/code_assist/experiments/experiments.test.d.ts +6 -0
  67. package/dist/src/code_assist/experiments/experiments.test.js +92 -0
  68. package/dist/src/code_assist/experiments/experiments.test.js.map +1 -0
  69. package/dist/src/code_assist/experiments/flagNames.d.ts +13 -0
  70. package/dist/src/code_assist/experiments/flagNames.js +13 -0
  71. package/dist/src/code_assist/experiments/flagNames.js.map +1 -0
  72. package/dist/src/code_assist/experiments/types.d.ts +35 -0
  73. package/dist/src/code_assist/experiments/types.js +7 -0
  74. package/dist/src/code_assist/experiments/types.js.map +1 -0
  75. package/dist/src/code_assist/oauth-credential-storage.d.ts +25 -0
  76. package/dist/src/code_assist/oauth-credential-storage.js +110 -0
  77. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
  78. package/dist/src/code_assist/oauth-credential-storage.test.d.ts +6 -0
  79. package/dist/src/code_assist/oauth-credential-storage.test.js +198 -0
  80. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -0
  81. package/dist/src/code_assist/oauth2.d.ts +3 -3
  82. package/dist/src/code_assist/oauth2.js +252 -125
  83. package/dist/src/code_assist/oauth2.js.map +1 -1
  84. package/dist/src/code_assist/oauth2.test.js +788 -350
  85. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  86. package/dist/src/code_assist/server.d.ts +8 -6
  87. package/dist/src/code_assist/server.js +41 -10
  88. package/dist/src/code_assist/server.js.map +1 -1
  89. package/dist/src/code_assist/server.test.js +151 -28
  90. package/dist/src/code_assist/server.test.js.map +1 -1
  91. package/dist/src/code_assist/setup.d.ts +2 -2
  92. package/dist/src/code_assist/setup.js +5 -3
  93. package/dist/src/code_assist/setup.js.map +1 -1
  94. package/dist/src/code_assist/setup.test.js.map +1 -1
  95. package/dist/src/code_assist/types.d.ts +18 -3
  96. package/dist/src/code_assist/types.js.map +1 -1
  97. package/dist/src/commands/extensions.d.ts +7 -0
  98. package/dist/src/commands/extensions.js +9 -0
  99. package/dist/src/commands/extensions.js.map +1 -0
  100. package/dist/src/commands/extensions.test.d.ts +6 -0
  101. package/dist/src/commands/extensions.test.js +19 -0
  102. package/dist/src/commands/extensions.test.js.map +1 -0
  103. package/dist/src/config/config.d.ts +282 -60
  104. package/dist/src/config/config.js +677 -129
  105. package/dist/src/config/config.js.map +1 -1
  106. package/dist/src/config/config.test.js +1020 -146
  107. package/dist/src/config/config.test.js.map +1 -1
  108. package/dist/src/config/constants.d.ts +11 -0
  109. package/dist/src/config/constants.js +16 -0
  110. package/dist/src/config/constants.js.map +1 -0
  111. package/dist/src/config/defaultModelConfigs.d.ts +7 -0
  112. package/dist/src/config/defaultModelConfigs.js +185 -0
  113. package/dist/src/config/defaultModelConfigs.js.map +1 -0
  114. package/dist/src/config/models.d.ts +37 -0
  115. package/dist/src/config/models.js +72 -0
  116. package/dist/src/config/models.js.map +1 -1
  117. package/dist/src/config/models.test.d.ts +6 -0
  118. package/dist/src/config/models.test.js +116 -0
  119. package/dist/src/config/models.test.js.map +1 -0
  120. package/dist/src/config/storage.d.ts +36 -0
  121. package/dist/src/config/storage.js +115 -0
  122. package/dist/src/config/storage.js.map +1 -0
  123. package/dist/src/config/storage.test.d.ts +6 -0
  124. package/dist/src/config/storage.test.js +48 -0
  125. package/dist/src/config/storage.test.js.map +1 -0
  126. package/dist/src/confirmation-bus/index.d.ts +7 -0
  127. package/dist/src/confirmation-bus/index.js +8 -0
  128. package/dist/src/confirmation-bus/index.js.map +1 -0
  129. package/dist/src/confirmation-bus/message-bus.d.ts +18 -0
  130. package/dist/src/confirmation-bus/message-bus.js +87 -0
  131. package/dist/src/confirmation-bus/message-bus.js.map +1 -0
  132. package/dist/src/confirmation-bus/message-bus.test.d.ts +6 -0
  133. package/dist/src/confirmation-bus/message-bus.test.js +170 -0
  134. package/dist/src/confirmation-bus/message-bus.test.js.map +1 -0
  135. package/dist/src/confirmation-bus/types.d.ts +49 -0
  136. package/dist/src/confirmation-bus/types.js +16 -0
  137. package/dist/src/confirmation-bus/types.js.map +1 -0
  138. package/dist/src/core/apiKeyCredentialStorage.d.ts +17 -0
  139. package/dist/src/core/apiKeyCredentialStorage.js +64 -0
  140. package/dist/src/core/apiKeyCredentialStorage.js.map +1 -0
  141. package/dist/src/core/apiKeyCredentialStorage.test.d.ts +6 -0
  142. package/dist/src/core/apiKeyCredentialStorage.test.js +71 -0
  143. package/dist/src/core/apiKeyCredentialStorage.test.js.map +1 -0
  144. package/dist/src/core/baseLlmClient.d.ts +50 -0
  145. package/dist/src/core/baseLlmClient.js +185 -0
  146. package/dist/src/core/baseLlmClient.js.map +1 -0
  147. package/dist/src/core/baseLlmClient.test.d.ts +6 -0
  148. package/dist/src/core/baseLlmClient.test.js +311 -0
  149. package/dist/src/core/baseLlmClient.test.js.map +1 -0
  150. package/dist/src/core/client.d.ts +30 -42
  151. package/dist/src/core/client.js +178 -477
  152. package/dist/src/core/client.js.map +1 -1
  153. package/dist/src/core/client.test.js +739 -617
  154. package/dist/src/core/client.test.js.map +1 -1
  155. package/dist/src/core/contentGenerator.d.ts +7 -6
  156. package/dist/src/core/contentGenerator.js +59 -45
  157. package/dist/src/core/contentGenerator.js.map +1 -1
  158. package/dist/src/core/contentGenerator.test.js +50 -4
  159. package/dist/src/core/contentGenerator.test.js.map +1 -1
  160. package/dist/src/core/coreToolScheduler.d.ts +28 -11
  161. package/dist/src/core/coreToolScheduler.js +493 -161
  162. package/dist/src/core/coreToolScheduler.js.map +1 -1
  163. package/dist/src/core/coreToolScheduler.test.js +995 -163
  164. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  165. package/dist/src/core/fakeContentGenerator.d.ts +33 -0
  166. package/dist/src/core/fakeContentGenerator.js +58 -0
  167. package/dist/src/core/fakeContentGenerator.js.map +1 -0
  168. package/dist/src/core/fakeContentGenerator.test.d.ts +6 -0
  169. package/dist/src/core/fakeContentGenerator.test.js +127 -0
  170. package/dist/src/core/fakeContentGenerator.test.js.map +1 -0
  171. package/dist/src/core/geminiChat.d.ts +61 -55
  172. package/dist/src/core/geminiChat.js +388 -366
  173. package/dist/src/core/geminiChat.js.map +1 -1
  174. package/dist/src/core/geminiChat.test.js +1600 -355
  175. package/dist/src/core/geminiChat.test.js.map +1 -1
  176. package/dist/src/core/geminiRequest.js +1 -0
  177. package/dist/src/core/geminiRequest.js.map +1 -1
  178. package/dist/src/core/logger.d.ts +11 -4
  179. package/dist/src/core/logger.js +39 -30
  180. package/dist/src/core/logger.js.map +1 -1
  181. package/dist/src/core/logger.test.js +62 -45
  182. package/dist/src/core/logger.test.js.map +1 -1
  183. package/dist/src/core/loggingContentGenerator.d.ts +4 -3
  184. package/dist/src/core/loggingContentGenerator.js +116 -37
  185. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  186. package/dist/src/core/loggingContentGenerator.test.d.ts +6 -0
  187. package/dist/src/core/loggingContentGenerator.test.js +180 -0
  188. package/dist/src/core/loggingContentGenerator.test.js.map +1 -0
  189. package/dist/src/core/nonInteractiveToolExecutor.d.ts +4 -5
  190. package/dist/src/core/nonInteractiveToolExecutor.js +17 -120
  191. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  192. package/dist/src/core/nonInteractiveToolExecutor.test.js +168 -84
  193. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  194. package/dist/src/core/openaiContentGenerator.d.ts +4 -3
  195. package/dist/src/core/openaiContentGenerator.js +49 -19
  196. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  197. package/dist/src/core/openaiContentGenerator.test.js +1 -0
  198. package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
  199. package/dist/src/core/prompts.d.ts +7 -1
  200. package/dist/src/core/prompts.js +198 -195
  201. package/dist/src/core/prompts.js.map +1 -1
  202. package/dist/src/core/prompts.test.js +172 -104
  203. package/dist/src/core/prompts.test.js.map +1 -1
  204. package/dist/src/core/recordingContentGenerator.d.ts +18 -0
  205. package/dist/src/core/recordingContentGenerator.js +77 -0
  206. package/dist/src/core/recordingContentGenerator.js.map +1 -0
  207. package/dist/src/core/recordingContentGenerator.test.d.ts +6 -0
  208. package/dist/src/core/recordingContentGenerator.test.js +101 -0
  209. package/dist/src/core/recordingContentGenerator.test.js.map +1 -0
  210. package/dist/src/core/subagent.d.ts +24 -18
  211. package/dist/src/core/subagent.js +125 -90
  212. package/dist/src/core/subagent.js.map +1 -1
  213. package/dist/src/core/subagent.test.js +59 -44
  214. package/dist/src/core/subagent.test.js.map +1 -1
  215. package/dist/src/core/tokenLimits.test.d.ts +6 -0
  216. package/dist/src/core/tokenLimits.test.js +26 -0
  217. package/dist/src/core/tokenLimits.test.js.map +1 -0
  218. package/dist/src/core/turn.d.ts +57 -13
  219. package/dist/src/core/turn.js +79 -35
  220. package/dist/src/core/turn.js.map +1 -1
  221. package/dist/src/core/turn.test.js +373 -120
  222. package/dist/src/core/turn.test.js.map +1 -1
  223. package/dist/src/fallback/handler.d.ts +7 -0
  224. package/dist/src/fallback/handler.js +181 -0
  225. package/dist/src/fallback/handler.js.map +1 -0
  226. package/dist/src/fallback/handler.test.d.ts +6 -0
  227. package/dist/src/fallback/handler.test.js +245 -0
  228. package/dist/src/fallback/handler.test.js.map +1 -0
  229. package/dist/src/fallback/types.d.ts +14 -0
  230. package/dist/src/fallback/types.js +7 -0
  231. package/dist/src/fallback/types.js.map +1 -0
  232. package/dist/src/generated/git-commit.d.ts +2 -2
  233. package/dist/src/generated/git-commit.js +2 -2
  234. package/dist/src/generated/git-commit.js.map +1 -1
  235. package/dist/src/hooks/hookAggregator.d.ts +68 -0
  236. package/dist/src/hooks/hookAggregator.js +262 -0
  237. package/dist/src/hooks/hookAggregator.js.map +1 -0
  238. package/dist/src/hooks/hookAggregator.test.d.ts +6 -0
  239. package/dist/src/hooks/hookAggregator.test.js +387 -0
  240. package/dist/src/hooks/hookAggregator.test.js.map +1 -0
  241. package/dist/src/hooks/hookPlanner.d.ts +46 -0
  242. package/dist/src/hooks/hookPlanner.js +108 -0
  243. package/dist/src/hooks/hookPlanner.js.map +1 -0
  244. package/dist/src/hooks/hookPlanner.test.d.ts +6 -0
  245. package/dist/src/hooks/hookPlanner.test.js +255 -0
  246. package/dist/src/hooks/hookPlanner.test.js.map +1 -0
  247. package/dist/src/hooks/hookRegistry.d.ts +87 -0
  248. package/dist/src/hooks/hookRegistry.js +198 -0
  249. package/dist/src/hooks/hookRegistry.js.map +1 -0
  250. package/dist/src/hooks/hookRegistry.test.d.ts +6 -0
  251. package/dist/src/hooks/hookRegistry.test.js +341 -0
  252. package/dist/src/hooks/hookRegistry.test.js.map +1 -0
  253. package/dist/src/hooks/hookRunner.d.ts +42 -0
  254. package/dist/src/hooks/hookRunner.js +272 -0
  255. package/dist/src/hooks/hookRunner.js.map +1 -0
  256. package/dist/src/hooks/hookRunner.test.d.ts +6 -0
  257. package/dist/src/hooks/hookRunner.test.js +468 -0
  258. package/dist/src/hooks/hookRunner.test.js.map +1 -0
  259. package/dist/src/hooks/hookTranslator.d.ts +113 -0
  260. package/dist/src/hooks/hookTranslator.js +232 -0
  261. package/dist/src/hooks/hookTranslator.js.map +1 -0
  262. package/dist/src/hooks/hookTranslator.test.d.ts +6 -0
  263. package/dist/src/hooks/hookTranslator.test.js +192 -0
  264. package/dist/src/hooks/hookTranslator.test.js.map +1 -0
  265. package/dist/src/hooks/types.d.ts +384 -0
  266. package/dist/src/hooks/types.js +284 -0
  267. package/dist/src/hooks/types.js.map +1 -0
  268. package/dist/src/hooks/types.test.d.ts +6 -0
  269. package/dist/src/hooks/types.test.js +313 -0
  270. package/dist/src/hooks/types.test.js.map +1 -0
  271. package/dist/src/ide/constants.d.ts +3 -0
  272. package/dist/src/ide/constants.js +3 -0
  273. package/dist/src/ide/constants.js.map +1 -1
  274. package/dist/src/ide/detect-ide.d.ts +52 -12
  275. package/dist/src/ide/detect-ide.js +51 -65
  276. package/dist/src/ide/detect-ide.js.map +1 -1
  277. package/dist/src/ide/detect-ide.test.js +95 -52
  278. package/dist/src/ide/detect-ide.test.js.map +1 -1
  279. package/dist/src/ide/ide-client.d.ts +72 -24
  280. package/dist/src/ide/ide-client.js +380 -84
  281. package/dist/src/ide/ide-client.js.map +1 -1
  282. package/dist/src/ide/ide-client.test.js +539 -35
  283. package/dist/src/ide/ide-client.test.js.map +1 -1
  284. package/dist/src/ide/ide-installer.d.ts +2 -2
  285. package/dist/src/ide/ide-installer.js +93 -35
  286. package/dist/src/ide/ide-installer.js.map +1 -1
  287. package/dist/src/ide/ide-installer.test.js +157 -26
  288. package/dist/src/ide/ide-installer.test.js.map +1 -1
  289. package/dist/src/ide/ideContext.d.ts +35 -365
  290. package/dist/src/ide/ideContext.js +60 -106
  291. package/dist/src/ide/ideContext.js.map +1 -1
  292. package/dist/src/ide/ideContext.test.js +152 -24
  293. package/dist/src/ide/ideContext.test.js.map +1 -1
  294. package/dist/src/ide/process-utils.d.ts +7 -5
  295. package/dist/src/ide/process-utils.js +108 -67
  296. package/dist/src/ide/process-utils.js.map +1 -1
  297. package/dist/src/ide/process-utils.test.d.ts +6 -0
  298. package/dist/src/ide/process-utils.test.js +151 -0
  299. package/dist/src/ide/process-utils.test.js.map +1 -0
  300. package/dist/src/ide/types.d.ts +486 -0
  301. package/dist/src/ide/types.js +138 -0
  302. package/dist/src/ide/types.js.map +1 -0
  303. package/dist/src/index.d.ts +41 -2
  304. package/dist/src/index.js +44 -2
  305. package/dist/src/index.js.map +1 -1
  306. package/dist/src/mcp/google-auth-provider.d.ts +5 -3
  307. package/dist/src/mcp/google-auth-provider.js +21 -3
  308. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  309. package/dist/src/mcp/google-auth-provider.test.js +42 -9
  310. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  311. package/dist/src/mcp/oauth-provider.d.ts +25 -18
  312. package/dist/src/mcp/oauth-provider.js +194 -97
  313. package/dist/src/mcp/oauth-provider.js.map +1 -1
  314. package/dist/src/mcp/oauth-provider.test.js +581 -39
  315. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  316. package/dist/src/mcp/oauth-token-storage.d.ts +14 -32
  317. package/dist/src/mcp/oauth-token-storage.js +58 -28
  318. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  319. package/dist/src/mcp/oauth-token-storage.test.js +262 -162
  320. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  321. package/dist/src/mcp/oauth-utils.d.ts +16 -1
  322. package/dist/src/mcp/oauth-utils.js +68 -33
  323. package/dist/src/mcp/oauth-utils.js.map +1 -1
  324. package/dist/src/mcp/oauth-utils.test.js +86 -3
  325. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  326. package/dist/src/mcp/sa-impersonation-provider.d.ts +27 -0
  327. package/dist/src/mcp/sa-impersonation-provider.js +113 -0
  328. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  329. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
  330. package/dist/src/mcp/sa-impersonation-provider.test.js +117 -0
  331. package/dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
  332. package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  333. package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
  334. package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  335. package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
  336. package/dist/src/mcp/token-storage/base-token-storage.test.js +151 -0
  337. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
  338. package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
  339. package/dist/src/mcp/token-storage/file-token-storage.js +145 -0
  340. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
  341. package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +6 -0
  342. package/dist/src/mcp/token-storage/file-token-storage.test.js +238 -0
  343. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -0
  344. package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
  345. package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
  346. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
  347. package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +6 -0
  348. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +193 -0
  349. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -0
  350. package/dist/src/mcp/token-storage/index.d.ts +11 -0
  351. package/dist/src/mcp/token-storage/index.js +12 -0
  352. package/dist/src/mcp/token-storage/index.js.map +1 -0
  353. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +35 -0
  354. package/dist/src/mcp/token-storage/keychain-token-storage.js +246 -0
  355. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
  356. package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +6 -0
  357. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +305 -0
  358. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -0
  359. package/dist/src/mcp/token-storage/types.d.ts +44 -0
  360. package/dist/src/mcp/token-storage/types.js +11 -0
  361. package/dist/src/mcp/token-storage/types.js.map +1 -0
  362. package/dist/src/output/json-formatter.d.ts +11 -0
  363. package/dist/src/output/json-formatter.js +30 -0
  364. package/dist/src/output/json-formatter.js.map +1 -0
  365. package/dist/src/output/json-formatter.test.d.ts +6 -0
  366. package/dist/src/output/json-formatter.test.js +266 -0
  367. package/dist/src/output/json-formatter.test.js.map +1 -0
  368. package/dist/src/output/stream-json-formatter.d.ts +32 -0
  369. package/dist/src/output/stream-json-formatter.js +52 -0
  370. package/dist/src/output/stream-json-formatter.js.map +1 -0
  371. package/dist/src/output/stream-json-formatter.test.d.ts +6 -0
  372. package/dist/src/output/stream-json-formatter.test.js +479 -0
  373. package/dist/src/output/stream-json-formatter.test.js.map +1 -0
  374. package/dist/src/output/types.d.ts +82 -0
  375. package/dist/src/output/types.js +22 -0
  376. package/dist/src/output/types.js.map +1 -0
  377. package/dist/src/policy/config.d.ts +31 -0
  378. package/dist/src/policy/config.js +199 -0
  379. package/dist/src/policy/config.js.map +1 -0
  380. package/dist/src/policy/config.test.d.ts +6 -0
  381. package/dist/src/policy/config.test.js +538 -0
  382. package/dist/src/policy/config.test.js.map +1 -0
  383. package/dist/src/policy/index.d.ts +9 -0
  384. package/dist/src/policy/index.js +10 -0
  385. package/dist/src/policy/index.js.map +1 -0
  386. package/dist/src/policy/policies/discovered.toml +8 -0
  387. package/dist/src/policy/policies/read-only.toml +56 -0
  388. package/dist/src/policy/policies/write.toml +73 -0
  389. package/dist/src/policy/policies/yolo.toml +31 -0
  390. package/dist/src/policy/policy-engine.d.ts +39 -0
  391. package/dist/src/policy/policy-engine.js +158 -0
  392. package/dist/src/policy/policy-engine.js.map +1 -0
  393. package/dist/src/policy/policy-engine.test.d.ts +6 -0
  394. package/dist/src/policy/policy-engine.test.js +899 -0
  395. package/dist/src/policy/policy-engine.test.js.map +1 -0
  396. package/dist/src/policy/stable-stringify.d.ts +58 -0
  397. package/dist/src/policy/stable-stringify.js +122 -0
  398. package/dist/src/policy/stable-stringify.js.map +1 -0
  399. package/dist/src/policy/toml-loader.d.ts +47 -0
  400. package/dist/src/policy/toml-loader.js +411 -0
  401. package/dist/src/policy/toml-loader.js.map +1 -0
  402. package/dist/src/policy/toml-loader.test.d.ts +6 -0
  403. package/dist/src/policy/toml-loader.test.js +376 -0
  404. package/dist/src/policy/toml-loader.test.js.map +1 -0
  405. package/dist/src/policy/types.d.ts +130 -0
  406. package/dist/src/policy/types.js +22 -0
  407. package/dist/src/policy/types.js.map +1 -0
  408. package/dist/src/prompts/mcp-prompts.d.ts +2 -2
  409. package/dist/src/prompts/mcp-prompts.test.d.ts +6 -0
  410. package/dist/src/prompts/mcp-prompts.test.js +39 -0
  411. package/dist/src/prompts/mcp-prompts.test.js.map +1 -0
  412. package/dist/src/prompts/prompt-registry.d.ts +1 -1
  413. package/dist/src/prompts/prompt-registry.js +2 -1
  414. package/dist/src/prompts/prompt-registry.js.map +1 -1
  415. package/dist/src/prompts/prompt-registry.test.d.ts +6 -0
  416. package/dist/src/prompts/prompt-registry.test.js +96 -0
  417. package/dist/src/prompts/prompt-registry.test.js.map +1 -0
  418. package/dist/src/routing/modelRouterService.d.ts +23 -0
  419. package/dist/src/routing/modelRouterService.js +85 -0
  420. package/dist/src/routing/modelRouterService.js.map +1 -0
  421. package/dist/src/routing/modelRouterService.test.d.ts +6 -0
  422. package/dist/src/routing/modelRouterService.test.js +160 -0
  423. package/dist/src/routing/modelRouterService.test.js.map +1 -0
  424. package/dist/src/routing/routingStrategy.d.ts +62 -0
  425. package/dist/src/routing/routingStrategy.js +7 -0
  426. package/dist/src/routing/routingStrategy.js.map +1 -0
  427. package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
  428. package/dist/src/routing/strategies/classifierStrategy.js +166 -0
  429. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
  430. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +6 -0
  431. package/dist/src/routing/strategies/classifierStrategy.test.js +196 -0
  432. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -0
  433. package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
  434. package/dist/src/routing/strategies/compositeStrategy.js +68 -0
  435. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
  436. package/dist/src/routing/strategies/compositeStrategy.test.d.ts +6 -0
  437. package/dist/src/routing/strategies/compositeStrategy.test.js +123 -0
  438. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -0
  439. package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
  440. package/dist/src/routing/strategies/defaultStrategy.js +20 -0
  441. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
  442. package/dist/src/routing/strategies/defaultStrategy.test.d.ts +6 -0
  443. package/dist/src/routing/strategies/defaultStrategy.test.js +26 -0
  444. package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -0
  445. package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
  446. package/dist/src/routing/strategies/fallbackStrategy.js +25 -0
  447. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
  448. package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +6 -0
  449. package/dist/src/routing/strategies/fallbackStrategy.test.js +59 -0
  450. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -0
  451. package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
  452. package/dist/src/routing/strategies/overrideStrategy.js +28 -0
  453. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
  454. package/dist/src/routing/strategies/overrideStrategy.test.d.ts +6 -0
  455. package/dist/src/routing/strategies/overrideStrategy.test.js +45 -0
  456. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -0
  457. package/dist/src/safety/built-in.d.ts +21 -0
  458. package/dist/src/safety/built-in.js +106 -0
  459. package/dist/src/safety/built-in.js.map +1 -0
  460. package/dist/src/safety/built-in.test.d.ts +6 -0
  461. package/dist/src/safety/built-in.test.js +199 -0
  462. package/dist/src/safety/built-in.test.js.map +1 -0
  463. package/dist/src/safety/checker-runner.d.ts +48 -0
  464. package/dist/src/safety/checker-runner.js +208 -0
  465. package/dist/src/safety/checker-runner.js.map +1 -0
  466. package/dist/src/safety/checker-runner.test.d.ts +6 -0
  467. package/dist/src/safety/checker-runner.test.js +238 -0
  468. package/dist/src/safety/checker-runner.test.js.map +1 -0
  469. package/dist/src/safety/context-builder.d.ts +23 -0
  470. package/dist/src/safety/context-builder.js +47 -0
  471. package/dist/src/safety/context-builder.js.map +1 -0
  472. package/dist/src/safety/context-builder.test.d.ts +6 -0
  473. package/dist/src/safety/context-builder.test.js +49 -0
  474. package/dist/src/safety/context-builder.test.js.map +1 -0
  475. package/dist/src/safety/protocol.d.ts +88 -0
  476. package/dist/src/safety/protocol.js +15 -0
  477. package/dist/src/safety/protocol.js.map +1 -0
  478. package/dist/src/safety/registry.d.ts +26 -0
  479. package/dist/src/safety/registry.js +65 -0
  480. package/dist/src/safety/registry.js.map +1 -0
  481. package/dist/src/safety/registry.test.d.ts +6 -0
  482. package/dist/src/safety/registry.test.js +31 -0
  483. package/dist/src/safety/registry.test.js.map +1 -0
  484. package/dist/src/services/chatCompressionService.d.ts +32 -0
  485. package/dist/src/services/chatCompressionService.js +162 -0
  486. package/dist/src/services/chatCompressionService.js.map +1 -0
  487. package/dist/src/services/chatCompressionService.test.d.ts +6 -0
  488. package/dist/src/services/chatCompressionService.test.js +210 -0
  489. package/dist/src/services/chatCompressionService.test.js.map +1 -0
  490. package/dist/src/services/chatRecordingService.d.ts +10 -15
  491. package/dist/src/services/chatRecordingService.js +43 -29
  492. package/dist/src/services/chatRecordingService.js.map +1 -1
  493. package/dist/src/services/chatRecordingService.test.js +69 -25
  494. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  495. package/dist/src/services/fileDiscoveryService.d.ts +8 -10
  496. package/dist/src/services/fileDiscoveryService.js +31 -53
  497. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  498. package/dist/src/services/fileDiscoveryService.test.js +94 -14
  499. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  500. package/dist/src/services/fileSystemService.d.ts +9 -0
  501. package/dist/src/services/fileSystemService.js +12 -1
  502. package/dist/src/services/fileSystemService.js.map +1 -1
  503. package/dist/src/services/fileSystemService.test.js +1 -1
  504. package/dist/src/services/fileSystemService.test.js.map +1 -1
  505. package/dist/src/services/gitService.d.ts +3 -1
  506. package/dist/src/services/gitService.js +30 -24
  507. package/dist/src/services/gitService.js.map +1 -1
  508. package/dist/src/services/gitService.test.js +30 -37
  509. package/dist/src/services/gitService.test.js.map +1 -1
  510. package/dist/src/services/loopDetectionService.d.ts +12 -3
  511. package/dist/src/services/loopDetectionService.js +148 -55
  512. package/dist/src/services/loopDetectionService.js.map +1 -1
  513. package/dist/src/services/loopDetectionService.test.js +280 -21
  514. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  515. package/dist/src/services/modelConfig.golden.test.d.ts +6 -0
  516. package/dist/src/services/modelConfig.golden.test.js +42 -0
  517. package/dist/src/services/modelConfig.golden.test.js.map +1 -0
  518. package/dist/src/services/modelConfig.integration.test.d.ts +6 -0
  519. package/dist/src/services/modelConfig.integration.test.js +247 -0
  520. package/dist/src/services/modelConfig.integration.test.js.map +1 -0
  521. package/dist/src/services/modelConfigService.d.ts +48 -0
  522. package/dist/src/services/modelConfigService.js +151 -0
  523. package/dist/src/services/modelConfigService.js.map +1 -0
  524. package/dist/src/services/modelConfigService.test.d.ts +6 -0
  525. package/dist/src/services/modelConfigService.test.js +531 -0
  526. package/dist/src/services/modelConfigService.test.js.map +1 -0
  527. package/dist/src/services/shellExecutionService.d.ts +37 -2
  528. package/dist/src/services/shellExecutionService.js +361 -67
  529. package/dist/src/services/shellExecutionService.js.map +1 -1
  530. package/dist/src/services/shellExecutionService.test.js +333 -71
  531. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  532. package/dist/src/services/test-data/resolved-aliases.golden.json +202 -0
  533. package/dist/src/telemetry/activity-detector.d.ts +41 -0
  534. package/dist/src/telemetry/activity-detector.js +61 -0
  535. package/dist/src/telemetry/activity-detector.js.map +1 -0
  536. package/dist/src/telemetry/activity-detector.test.d.ts +6 -0
  537. package/dist/src/telemetry/activity-detector.test.js +136 -0
  538. package/dist/src/telemetry/activity-detector.test.js.map +1 -0
  539. package/dist/src/telemetry/activity-monitor.d.ts +116 -0
  540. package/dist/src/telemetry/activity-monitor.js +209 -0
  541. package/dist/src/telemetry/activity-monitor.js.map +1 -0
  542. package/dist/src/telemetry/activity-monitor.test.d.ts +6 -0
  543. package/dist/src/telemetry/activity-monitor.test.js +251 -0
  544. package/dist/src/telemetry/activity-monitor.test.js.map +1 -0
  545. package/dist/src/telemetry/activity-types.d.ts +19 -0
  546. package/dist/src/telemetry/activity-types.js +21 -0
  547. package/dist/src/telemetry/activity-types.js.map +1 -0
  548. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +53 -5
  549. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +581 -56
  550. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  551. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +2 -0
  552. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +467 -31
  553. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  554. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +75 -4
  555. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +182 -6
  556. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  557. package/dist/src/telemetry/config.d.ts +31 -0
  558. package/dist/src/telemetry/config.js +76 -0
  559. package/dist/src/telemetry/config.js.map +1 -0
  560. package/dist/src/telemetry/config.test.d.ts +6 -0
  561. package/dist/src/telemetry/config.test.js +124 -0
  562. package/dist/src/telemetry/config.test.js.map +1 -0
  563. package/dist/src/telemetry/constants.d.ts +0 -18
  564. package/dist/src/telemetry/constants.js +0 -18
  565. package/dist/src/telemetry/constants.js.map +1 -1
  566. package/dist/src/telemetry/file-exporters.d.ts +5 -4
  567. package/dist/src/telemetry/file-exporters.js +1 -1
  568. package/dist/src/telemetry/file-exporters.js.map +1 -1
  569. package/dist/src/telemetry/gcp-exporters.d.ts +34 -0
  570. package/dist/src/telemetry/gcp-exporters.js +116 -0
  571. package/dist/src/telemetry/gcp-exporters.js.map +1 -0
  572. package/dist/src/telemetry/gcp-exporters.test.d.ts +6 -0
  573. package/dist/src/telemetry/gcp-exporters.test.js +318 -0
  574. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -0
  575. package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
  576. package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
  577. package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
  578. package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +6 -0
  579. package/dist/src/telemetry/high-water-mark-tracker.test.js +152 -0
  580. package/dist/src/telemetry/high-water-mark-tracker.test.js.map +1 -0
  581. package/dist/src/telemetry/index.d.ts +16 -2
  582. package/dist/src/telemetry/index.js +25 -2
  583. package/dist/src/telemetry/index.js.map +1 -1
  584. package/dist/src/telemetry/loggers.d.ts +25 -3
  585. package/dist/src/telemetry/loggers.js +333 -154
  586. package/dist/src/telemetry/loggers.js.map +1 -1
  587. package/dist/src/telemetry/loggers.test.circular.js +3 -4
  588. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  589. package/dist/src/telemetry/loggers.test.js +868 -63
  590. package/dist/src/telemetry/loggers.test.js.map +1 -1
  591. package/dist/src/telemetry/memory-monitor.d.ts +149 -0
  592. package/dist/src/telemetry/memory-monitor.js +335 -0
  593. package/dist/src/telemetry/memory-monitor.js.map +1 -0
  594. package/dist/src/telemetry/memory-monitor.test.d.ts +6 -0
  595. package/dist/src/telemetry/memory-monitor.test.js +472 -0
  596. package/dist/src/telemetry/memory-monitor.test.js.map +1 -0
  597. package/dist/src/telemetry/metrics.d.ts +498 -11
  598. package/dist/src/telemetry/metrics.js +729 -84
  599. package/dist/src/telemetry/metrics.js.map +1 -1
  600. package/dist/src/telemetry/metrics.test.js +964 -101
  601. package/dist/src/telemetry/metrics.test.js.map +1 -1
  602. package/dist/src/telemetry/rate-limiter.d.ts +48 -0
  603. package/dist/src/telemetry/rate-limiter.js +100 -0
  604. package/dist/src/telemetry/rate-limiter.js.map +1 -0
  605. package/dist/src/telemetry/rate-limiter.test.d.ts +6 -0
  606. package/dist/src/telemetry/rate-limiter.test.js +207 -0
  607. package/dist/src/telemetry/rate-limiter.test.js.map +1 -0
  608. package/dist/src/telemetry/sdk.d.ts +1 -1
  609. package/dist/src/telemetry/sdk.js +23 -4
  610. package/dist/src/telemetry/sdk.js.map +1 -1
  611. package/dist/src/telemetry/sdk.test.js +108 -0
  612. package/dist/src/telemetry/sdk.test.js.map +1 -1
  613. package/dist/src/telemetry/semantic.d.ts +82 -0
  614. package/dist/src/telemetry/semantic.js +269 -0
  615. package/dist/src/telemetry/semantic.js.map +1 -0
  616. package/dist/src/telemetry/semantic.test.d.ts +6 -0
  617. package/dist/src/telemetry/semantic.test.js +387 -0
  618. package/dist/src/telemetry/semantic.test.js.map +1 -0
  619. package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
  620. package/dist/src/telemetry/telemetry-utils.js +14 -0
  621. package/dist/src/telemetry/telemetry-utils.js.map +1 -0
  622. package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
  623. package/dist/src/telemetry/telemetry-utils.test.js +41 -0
  624. package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
  625. package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
  626. package/dist/src/telemetry/telemetryAttributes.js +19 -0
  627. package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
  628. package/dist/src/telemetry/trace.d.ts +46 -0
  629. package/dist/src/telemetry/trace.js +121 -0
  630. package/dist/src/telemetry/trace.js.map +1 -0
  631. package/dist/src/telemetry/types.d.ts +351 -25
  632. package/dist/src/telemetry/types.js +1071 -63
  633. package/dist/src/telemetry/types.js.map +1 -1
  634. package/dist/src/telemetry/uiTelemetry.d.ts +4 -4
  635. package/dist/src/telemetry/uiTelemetry.js +14 -15
  636. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  637. package/dist/src/telemetry/uiTelemetry.test.js +122 -96
  638. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  639. package/dist/src/test-utils/config.d.ts +3 -2
  640. package/dist/src/test-utils/config.js +1 -1
  641. package/dist/src/test-utils/config.js.map +1 -1
  642. package/dist/src/test-utils/index.d.ts +6 -0
  643. package/dist/src/test-utils/index.js +7 -0
  644. package/dist/src/test-utils/index.js.map +1 -0
  645. package/dist/src/test-utils/mock-tool.d.ts +66 -0
  646. package/dist/src/test-utils/{tools.js → mock-tool.js} +45 -29
  647. package/dist/src/test-utils/mock-tool.js.map +1 -0
  648. package/dist/src/test-utils/mockWorkspaceContext.d.ts +1 -1
  649. package/dist/src/tools/base-tool-invocation.test.d.ts +6 -0
  650. package/dist/src/tools/base-tool-invocation.test.js +85 -0
  651. package/dist/src/tools/base-tool-invocation.test.js.map +1 -0
  652. package/dist/src/tools/diffOptions.d.ts +1 -1
  653. package/dist/src/tools/diffOptions.js +21 -13
  654. package/dist/src/tools/diffOptions.js.map +1 -1
  655. package/dist/src/tools/diffOptions.test.js +58 -22
  656. package/dist/src/tools/diffOptions.test.js.map +1 -1
  657. package/dist/src/tools/edit.d.ts +10 -8
  658. package/dist/src/tools/edit.js +100 -79
  659. package/dist/src/tools/edit.js.map +1 -1
  660. package/dist/src/tools/edit.test.js +429 -163
  661. package/dist/src/tools/edit.test.js.map +1 -1
  662. package/dist/src/tools/glob.d.ts +11 -5
  663. package/dist/src/tools/glob.js +58 -42
  664. package/dist/src/tools/glob.js.map +1 -1
  665. package/dist/src/tools/glob.test.js +249 -166
  666. package/dist/src/tools/glob.test.js.map +1 -1
  667. package/dist/src/tools/grep.d.ts +7 -5
  668. package/dist/src/tools/grep.js +66 -40
  669. package/dist/src/tools/grep.js.map +1 -1
  670. package/dist/src/tools/grep.test.js +41 -15
  671. package/dist/src/tools/grep.test.js.map +1 -1
  672. package/dist/src/tools/ls.d.ts +7 -5
  673. package/dist/src/tools/ls.js +54 -68
  674. package/dist/src/tools/ls.js.map +1 -1
  675. package/dist/src/tools/ls.test.js +150 -293
  676. package/dist/src/tools/ls.test.js.map +1 -1
  677. package/dist/src/tools/mcp-client-manager.d.ts +52 -12
  678. package/dist/src/tools/mcp-client-manager.js +196 -27
  679. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  680. package/dist/src/tools/mcp-client-manager.test.js +139 -13
  681. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  682. package/dist/src/tools/mcp-client.d.ts +28 -24
  683. package/dist/src/tools/mcp-client.js +338 -351
  684. package/dist/src/tools/mcp-client.js.map +1 -1
  685. package/dist/src/tools/mcp-client.test.js +380 -193
  686. package/dist/src/tools/mcp-client.test.js.map +1 -1
  687. package/dist/src/tools/mcp-tool.d.ts +11 -5
  688. package/dist/src/tools/mcp-tool.js +66 -17
  689. package/dist/src/tools/mcp-tool.js.map +1 -1
  690. package/dist/src/tools/mcp-tool.test.js +278 -211
  691. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  692. package/dist/src/tools/memoryTool.d.ts +10 -7
  693. package/dist/src/tools/memoryTool.js +28 -49
  694. package/dist/src/tools/memoryTool.js.map +1 -1
  695. package/dist/src/tools/memoryTool.test.js +26 -13
  696. package/dist/src/tools/memoryTool.test.js.map +1 -1
  697. package/dist/src/tools/message-bus-integration.test.d.ts +6 -0
  698. package/dist/src/tools/message-bus-integration.test.js +196 -0
  699. package/dist/src/tools/message-bus-integration.test.js.map +1 -0
  700. package/dist/src/tools/modifiable-tool.d.ts +7 -3
  701. package/dist/src/tools/modifiable-tool.js +41 -19
  702. package/dist/src/tools/modifiable-tool.js.map +1 -1
  703. package/dist/src/tools/modifiable-tool.test.js +70 -35
  704. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  705. package/dist/src/tools/read-file.d.ts +9 -7
  706. package/dist/src/tools/read-file.js +39 -60
  707. package/dist/src/tools/read-file.js.map +1 -1
  708. package/dist/src/tools/read-file.test.js +103 -36
  709. package/dist/src/tools/read-file.test.js.map +1 -1
  710. package/dist/src/tools/read-many-files.d.ts +9 -14
  711. package/dist/src/tools/read-many-files.js +71 -155
  712. package/dist/src/tools/read-many-files.js.map +1 -1
  713. package/dist/src/tools/read-many-files.test.js +98 -44
  714. package/dist/src/tools/read-many-files.test.js.map +1 -1
  715. package/dist/src/tools/ripGrep.d.ts +73 -0
  716. package/dist/src/tools/ripGrep.js +395 -0
  717. package/dist/src/tools/ripGrep.js.map +1 -0
  718. package/dist/src/tools/ripGrep.test.d.ts +6 -0
  719. package/dist/src/tools/ripGrep.test.js +1305 -0
  720. package/dist/src/tools/ripGrep.test.js.map +1 -0
  721. package/dist/src/tools/shell.d.ts +19 -6
  722. package/dist/src/tools/shell.js +92 -56
  723. package/dist/src/tools/shell.js.map +1 -1
  724. package/dist/src/tools/shell.test.js +176 -103
  725. package/dist/src/tools/shell.test.js.map +1 -1
  726. package/dist/src/tools/smart-edit.d.ts +78 -0
  727. package/dist/src/tools/smart-edit.js +717 -0
  728. package/dist/src/tools/smart-edit.js.map +1 -0
  729. package/dist/src/tools/smart-edit.test.d.ts +6 -0
  730. package/dist/src/tools/smart-edit.test.js +592 -0
  731. package/dist/src/tools/smart-edit.test.js.map +1 -0
  732. package/dist/src/tools/tool-error.d.ts +39 -1
  733. package/dist/src/tools/tool-error.js +54 -0
  734. package/dist/src/tools/tool-error.js.map +1 -1
  735. package/dist/src/tools/tool-names.d.ts +17 -0
  736. package/dist/src/tools/tool-names.js +21 -0
  737. package/dist/src/tools/tool-names.js.map +1 -0
  738. package/dist/src/tools/tool-registry.d.ts +38 -20
  739. package/dist/src/tools/tool-registry.js +134 -77
  740. package/dist/src/tools/tool-registry.js.map +1 -1
  741. package/dist/src/tools/tool-registry.test.js +218 -58
  742. package/dist/src/tools/tool-registry.test.js.map +1 -1
  743. package/dist/src/tools/tools.d.ts +49 -17
  744. package/dist/src/tools/tools.js +150 -8
  745. package/dist/src/tools/tools.js.map +1 -1
  746. package/dist/src/tools/tools.test.js +1 -2
  747. package/dist/src/tools/tools.test.js.map +1 -1
  748. package/dist/src/tools/web-fetch.d.ts +14 -5
  749. package/dist/src/tools/web-fetch.js +90 -44
  750. package/dist/src/tools/web-fetch.js.map +1 -1
  751. package/dist/src/tools/web-fetch.test.js +388 -20
  752. package/dist/src/tools/web-fetch.test.js.map +1 -1
  753. package/dist/src/tools/web-search.d.ts +8 -6
  754. package/dist/src/tools/web-search.js +40 -15
  755. package/dist/src/tools/web-search.js.map +1 -1
  756. package/dist/src/tools/web-search.test.js +75 -1
  757. package/dist/src/tools/web-search.test.js.map +1 -1
  758. package/dist/src/tools/write-file.d.ts +7 -5
  759. package/dist/src/tools/write-file.js +54 -54
  760. package/dist/src/tools/write-file.js.map +1 -1
  761. package/dist/src/tools/write-file.test.js +237 -146
  762. package/dist/src/tools/write-file.test.js.map +1 -1
  763. package/dist/src/tools/write-todos.d.ts +50 -0
  764. package/dist/src/tools/write-todos.js +193 -0
  765. package/dist/src/tools/write-todos.js.map +1 -0
  766. package/dist/src/tools/write-todos.test.d.ts +6 -0
  767. package/dist/src/tools/write-todos.test.js +89 -0
  768. package/dist/src/tools/write-todos.test.js.map +1 -0
  769. package/dist/src/utils/bfsFileSearch.d.ts +2 -2
  770. package/dist/src/utils/bfsFileSearch.js +16 -9
  771. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  772. package/dist/src/utils/bfsFileSearch.test.js +3 -3
  773. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  774. package/dist/src/utils/channel.d.ts +19 -0
  775. package/dist/src/utils/channel.js +49 -0
  776. package/dist/src/utils/channel.js.map +1 -0
  777. package/dist/src/utils/channel.test.d.ts +6 -0
  778. package/dist/src/utils/channel.test.js +170 -0
  779. package/dist/src/utils/channel.test.js.map +1 -0
  780. package/dist/src/utils/debugLogger.d.ts +25 -0
  781. package/dist/src/utils/debugLogger.js +33 -0
  782. package/dist/src/utils/debugLogger.js.map +1 -0
  783. package/dist/src/utils/debugLogger.test.d.ts +6 -0
  784. package/dist/src/utils/debugLogger.test.js +69 -0
  785. package/dist/src/utils/debugLogger.test.js.map +1 -0
  786. package/dist/src/utils/delay.d.ts +16 -0
  787. package/dist/src/utils/delay.js +43 -0
  788. package/dist/src/utils/delay.js.map +1 -0
  789. package/dist/src/utils/delay.test.d.ts +6 -0
  790. package/dist/src/utils/delay.test.js +88 -0
  791. package/dist/src/utils/delay.test.js.map +1 -0
  792. package/dist/src/utils/editCorrector.d.ts +9 -8
  793. package/dist/src/utils/editCorrector.js +62 -34
  794. package/dist/src/utils/editCorrector.js.map +1 -1
  795. package/dist/src/utils/editCorrector.test.js +52 -87
  796. package/dist/src/utils/editCorrector.test.js.map +1 -1
  797. package/dist/src/utils/editor.d.ts +4 -2
  798. package/dist/src/utils/editor.js +56 -55
  799. package/dist/src/utils/editor.js.map +1 -1
  800. package/dist/src/utils/editor.test.js +47 -88
  801. package/dist/src/utils/editor.test.js.map +1 -1
  802. package/dist/src/utils/environmentContext.d.ts +3 -2
  803. package/dist/src/utils/environmentContext.js +20 -33
  804. package/dist/src/utils/environmentContext.js.map +1 -1
  805. package/dist/src/utils/environmentContext.test.js +6 -34
  806. package/dist/src/utils/environmentContext.test.js.map +1 -1
  807. package/dist/src/utils/errorParsing.d.ts +1 -1
  808. package/dist/src/utils/errorParsing.js +5 -33
  809. package/dist/src/utils/errorParsing.js.map +1 -1
  810. package/dist/src/utils/errorParsing.test.js +0 -88
  811. package/dist/src/utils/errorParsing.test.js.map +1 -1
  812. package/dist/src/utils/errorReporting.d.ts +1 -1
  813. package/dist/src/utils/errors.d.ts +28 -0
  814. package/dist/src/utils/errors.js +48 -0
  815. package/dist/src/utils/errors.js.map +1 -1
  816. package/dist/src/utils/events.d.ts +121 -0
  817. package/dist/src/utils/events.js +84 -0
  818. package/dist/src/utils/events.js.map +1 -0
  819. package/dist/src/utils/events.test.d.ts +6 -0
  820. package/dist/src/utils/events.test.js +212 -0
  821. package/dist/src/utils/events.test.js.map +1 -0
  822. package/dist/src/utils/extensionLoader.d.ts +86 -0
  823. package/dist/src/utils/extensionLoader.js +208 -0
  824. package/dist/src/utils/extensionLoader.js.map +1 -0
  825. package/dist/src/utils/extensionLoader.test.d.ts +6 -0
  826. package/dist/src/utils/extensionLoader.test.js +154 -0
  827. package/dist/src/utils/extensionLoader.test.js.map +1 -0
  828. package/dist/src/utils/fetch.d.ts +1 -0
  829. package/dist/src/utils/fetch.js +5 -1
  830. package/dist/src/utils/fetch.js.map +1 -1
  831. package/dist/src/utils/fileUtils.d.ts +28 -12
  832. package/dist/src/utils/fileUtils.js +204 -81
  833. package/dist/src/utils/fileUtils.js.map +1 -1
  834. package/dist/src/utils/fileUtils.test.js +426 -82
  835. package/dist/src/utils/fileUtils.test.js.map +1 -1
  836. package/dist/src/utils/filesearch/crawler.d.ts +1 -1
  837. package/dist/src/utils/filesearch/crawler.test.js +2 -2
  838. package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
  839. package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
  840. package/dist/src/utils/filesearch/fileSearch.js +14 -9
  841. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  842. package/dist/src/utils/filesearch/fileSearch.test.js +90 -0
  843. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  844. package/dist/src/utils/flashFallback.test.d.ts +6 -0
  845. package/dist/src/utils/flashFallback.test.js +103 -0
  846. package/dist/src/utils/flashFallback.test.js.map +1 -0
  847. package/dist/src/utils/formatters.d.ts +1 -0
  848. package/dist/src/utils/formatters.js +2 -1
  849. package/dist/src/utils/formatters.js.map +1 -1
  850. package/dist/src/utils/formatters.test.d.ts +6 -0
  851. package/dist/src/utils/formatters.test.js +26 -0
  852. package/dist/src/utils/formatters.test.js.map +1 -0
  853. package/dist/src/utils/geminiIgnoreParser.d.ts +18 -0
  854. package/dist/src/utils/geminiIgnoreParser.js +61 -0
  855. package/dist/src/utils/geminiIgnoreParser.js.map +1 -0
  856. package/dist/src/utils/geminiIgnoreParser.test.d.ts +6 -0
  857. package/dist/src/utils/geminiIgnoreParser.test.js +50 -0
  858. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -0
  859. package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -2
  860. package/dist/src/utils/generateContentResponseUtilities.js +1 -13
  861. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  862. package/dist/src/utils/generateContentResponseUtilities.test.js +2 -40
  863. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  864. package/dist/src/utils/getFolderStructure.d.ts +2 -2
  865. package/dist/src/utils/getFolderStructure.js +12 -20
  866. package/dist/src/utils/getFolderStructure.js.map +1 -1
  867. package/dist/src/utils/getFolderStructure.test.js +11 -10
  868. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  869. package/dist/src/utils/gitIgnoreParser.d.ts +7 -8
  870. package/dist/src/utils/gitIgnoreParser.js +145 -36
  871. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  872. package/dist/src/utils/gitIgnoreParser.test.js +127 -38
  873. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  874. package/dist/src/utils/gitUtils.js +2 -2
  875. package/dist/src/utils/gitUtils.js.map +1 -1
  876. package/dist/src/utils/googleErrors.d.ts +104 -0
  877. package/dist/src/utils/googleErrors.js +152 -0
  878. package/dist/src/utils/googleErrors.js.map +1 -0
  879. package/dist/src/utils/googleErrors.test.d.ts +6 -0
  880. package/dist/src/utils/googleErrors.test.js +301 -0
  881. package/dist/src/utils/googleErrors.test.js.map +1 -0
  882. package/dist/src/utils/googleQuotaErrors.d.ts +37 -0
  883. package/dist/src/utils/googleQuotaErrors.js +157 -0
  884. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  885. package/dist/src/utils/googleQuotaErrors.test.d.ts +6 -0
  886. package/dist/src/utils/googleQuotaErrors.test.js +311 -0
  887. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -0
  888. package/dist/src/utils/httpErrors.d.ts +18 -0
  889. package/dist/src/utils/httpErrors.js +36 -0
  890. package/dist/src/utils/httpErrors.js.map +1 -0
  891. package/dist/src/utils/ignorePatterns.d.ts +103 -0
  892. package/dist/src/utils/ignorePatterns.js +220 -0
  893. package/dist/src/utils/ignorePatterns.js.map +1 -0
  894. package/dist/src/utils/ignorePatterns.test.d.ts +6 -0
  895. package/dist/src/utils/ignorePatterns.test.js +246 -0
  896. package/dist/src/utils/ignorePatterns.test.js.map +1 -0
  897. package/dist/src/utils/installationManager.d.ts +16 -0
  898. package/dist/src/utils/installationManager.js +51 -0
  899. package/dist/src/utils/installationManager.js.map +1 -0
  900. package/dist/src/utils/installationManager.test.d.ts +6 -0
  901. package/dist/src/utils/installationManager.test.js +85 -0
  902. package/dist/src/utils/installationManager.test.js.map +1 -0
  903. package/dist/src/utils/language-detection.d.ts +6 -0
  904. package/dist/src/utils/language-detection.js +101 -0
  905. package/dist/src/utils/language-detection.js.map +1 -0
  906. package/dist/src/utils/llm-edit-fixer.d.ts +26 -0
  907. package/dist/src/utils/llm-edit-fixer.js +155 -0
  908. package/dist/src/utils/llm-edit-fixer.js.map +1 -0
  909. package/dist/src/utils/llm-edit-fixer.test.d.ts +6 -0
  910. package/dist/src/utils/llm-edit-fixer.test.js +223 -0
  911. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -0
  912. package/dist/src/utils/memoryDiscovery.d.ts +26 -6
  913. package/dist/src/utils/memoryDiscovery.js +239 -40
  914. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  915. package/dist/src/utils/memoryDiscovery.test.js +365 -44
  916. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  917. package/dist/src/utils/memoryImportProcessor.js +19 -25
  918. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  919. package/dist/src/utils/memoryImportProcessor.test.js +24 -155
  920. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  921. package/dist/src/utils/messageInspectors.d.ts +1 -1
  922. package/dist/src/utils/nextSpeakerChecker.d.ts +3 -3
  923. package/dist/src/utils/nextSpeakerChecker.js +10 -4
  924. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  925. package/dist/src/utils/nextSpeakerChecker.test.js +85 -66
  926. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  927. package/dist/src/utils/package.d.ts +12 -0
  928. package/dist/src/utils/package.js +15 -0
  929. package/dist/src/utils/package.js.map +1 -0
  930. package/dist/src/utils/partUtils.d.ts +22 -1
  931. package/dist/src/utils/partUtils.js +68 -0
  932. package/dist/src/utils/partUtils.js.map +1 -1
  933. package/dist/src/utils/partUtils.test.js +112 -1
  934. package/dist/src/utils/partUtils.test.js.map +1 -1
  935. package/dist/src/utils/pathCorrector.d.ts +25 -0
  936. package/dist/src/utils/pathCorrector.js +33 -0
  937. package/dist/src/utils/pathCorrector.js.map +1 -0
  938. package/dist/src/utils/pathCorrector.test.d.ts +6 -0
  939. package/dist/src/utils/pathCorrector.test.js +83 -0
  940. package/dist/src/utils/pathCorrector.test.js.map +1 -0
  941. package/dist/src/utils/pathReader.d.ts +17 -0
  942. package/dist/src/utils/pathReader.js +92 -0
  943. package/dist/src/utils/pathReader.js.map +1 -0
  944. package/dist/src/utils/pathReader.test.d.ts +6 -0
  945. package/dist/src/utils/pathReader.test.js +406 -0
  946. package/dist/src/utils/pathReader.test.js.map +1 -0
  947. package/dist/src/utils/paths.d.ts +1 -18
  948. package/dist/src/utils/paths.js +133 -57
  949. package/dist/src/utils/paths.js.map +1 -1
  950. package/dist/src/utils/paths.test.js +200 -68
  951. package/dist/src/utils/paths.test.js.map +1 -1
  952. package/dist/src/utils/promptIdContext.d.ts +7 -0
  953. package/dist/src/utils/promptIdContext.js +8 -0
  954. package/dist/src/utils/promptIdContext.js.map +1 -0
  955. package/dist/src/utils/quotaErrorDetection.d.ts +1 -3
  956. package/dist/src/utils/quotaErrorDetection.js +0 -46
  957. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  958. package/dist/src/utils/retry.d.ts +5 -10
  959. package/dist/src/utils/retry.js +114 -197
  960. package/dist/src/utils/retry.js.map +1 -1
  961. package/dist/src/utils/retry.test.js +196 -130
  962. package/dist/src/utils/retry.test.js.map +1 -1
  963. package/dist/src/utils/safeJsonStringify.d.ts +4 -4
  964. package/dist/src/utils/safeJsonStringify.js +31 -7
  965. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  966. package/dist/src/utils/schemaValidator.js +15 -1
  967. package/dist/src/utils/schemaValidator.js.map +1 -1
  968. package/dist/src/utils/schemaValidator.test.d.ts +6 -0
  969. package/dist/src/utils/schemaValidator.test.js +113 -0
  970. package/dist/src/utils/schemaValidator.test.js.map +1 -0
  971. package/dist/src/utils/session.js +1 -1
  972. package/dist/src/utils/session.js.map +1 -1
  973. package/dist/src/utils/shell-utils.d.ts +21 -3
  974. package/dist/src/utils/shell-utils.js +427 -159
  975. package/dist/src/utils/shell-utils.js.map +1 -1
  976. package/dist/src/utils/shell-utils.test.js +250 -59
  977. package/dist/src/utils/shell-utils.test.js.map +1 -1
  978. package/dist/src/utils/stdio.d.ts +32 -0
  979. package/dist/src/utils/stdio.js +85 -0
  980. package/dist/src/utils/stdio.js.map +1 -0
  981. package/dist/src/utils/stdio.test.d.ts +6 -0
  982. package/dist/src/utils/stdio.test.js +47 -0
  983. package/dist/src/utils/stdio.test.js.map +1 -0
  984. package/dist/src/utils/summarizer.d.ts +6 -4
  985. package/dist/src/utils/summarizer.js +8 -9
  986. package/dist/src/utils/summarizer.js.map +1 -1
  987. package/dist/src/utils/summarizer.test.js +32 -12
  988. package/dist/src/utils/summarizer.test.js.map +1 -1
  989. package/dist/src/utils/systemEncoding.js +7 -6
  990. package/dist/src/utils/systemEncoding.js.map +1 -1
  991. package/dist/src/utils/systemEncoding.test.js +4 -3
  992. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  993. package/dist/src/utils/terminal.d.ts +14 -0
  994. package/dist/src/utils/terminal.js +38 -0
  995. package/dist/src/utils/terminal.js.map +1 -0
  996. package/dist/src/utils/terminalSerializer.d.ts +25 -0
  997. package/dist/src/utils/terminalSerializer.js +432 -0
  998. package/dist/src/utils/terminalSerializer.js.map +1 -0
  999. package/dist/src/utils/terminalSerializer.test.d.ts +6 -0
  1000. package/dist/src/utils/terminalSerializer.test.js +176 -0
  1001. package/dist/src/utils/terminalSerializer.test.js.map +1 -0
  1002. package/dist/src/utils/textUtils.d.ts +5 -0
  1003. package/dist/src/utils/textUtils.js +14 -0
  1004. package/dist/src/utils/textUtils.js.map +1 -1
  1005. package/dist/src/utils/textUtils.test.d.ts +6 -0
  1006. package/dist/src/utils/textUtils.test.js +59 -0
  1007. package/dist/src/utils/textUtils.test.js.map +1 -0
  1008. package/dist/src/utils/thoughtUtils.d.ts +21 -0
  1009. package/dist/src/utils/thoughtUtils.js +39 -0
  1010. package/dist/src/utils/thoughtUtils.js.map +1 -0
  1011. package/dist/src/utils/thoughtUtils.test.d.ts +6 -0
  1012. package/dist/src/utils/thoughtUtils.test.js +78 -0
  1013. package/dist/src/utils/thoughtUtils.test.js.map +1 -0
  1014. package/dist/src/utils/tool-utils.d.ts +19 -0
  1015. package/dist/src/utils/tool-utils.js +67 -0
  1016. package/dist/src/utils/tool-utils.js.map +1 -0
  1017. package/dist/src/utils/tool-utils.test.d.ts +6 -0
  1018. package/dist/src/utils/tool-utils.test.js +69 -0
  1019. package/dist/src/utils/tool-utils.test.js.map +1 -0
  1020. package/dist/src/utils/userAccountManager.d.ts +20 -0
  1021. package/dist/src/utils/userAccountManager.js +115 -0
  1022. package/dist/src/utils/userAccountManager.js.map +1 -0
  1023. package/dist/src/utils/userAccountManager.test.d.ts +6 -0
  1024. package/dist/src/utils/{user_account.test.js → userAccountManager.test.js} +41 -36
  1025. package/dist/src/utils/userAccountManager.test.js.map +1 -0
  1026. package/dist/src/utils/workspaceContext.d.ts +4 -3
  1027. package/dist/src/utils/workspaceContext.js +23 -17
  1028. package/dist/src/utils/workspaceContext.js.map +1 -1
  1029. package/dist/src/utils/workspaceContext.test.js +45 -19
  1030. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  1031. package/dist/tsconfig.tsbuildinfo +1 -1
  1032. package/package.json +24 -10
  1033. package/dist/src/core/modelCheck.d.ts +0 -14
  1034. package/dist/src/core/modelCheck.js +0 -62
  1035. package/dist/src/core/modelCheck.js.map +0 -1
  1036. package/dist/src/test-utils/tools.d.ts +0 -44
  1037. package/dist/src/test-utils/tools.js.map +0 -1
  1038. package/dist/src/utils/flashFallback.integration.test.js +0 -118
  1039. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  1040. package/dist/src/utils/user_account.d.ts +0 -9
  1041. package/dist/src/utils/user_account.js +0 -109
  1042. package/dist/src/utils/user_account.js.map +0 -1
  1043. package/dist/src/utils/user_account.test.js.map +0 -1
  1044. package/dist/src/utils/user_id.d.ts +0 -11
  1045. package/dist/src/utils/user_id.js +0 -49
  1046. package/dist/src/utils/user_id.js.map +0 -1
  1047. package/dist/src/utils/user_id.test.js +0 -21
  1048. package/dist/src/utils/user_id.test.js.map +0 -1
  1049. /package/dist/src/{utils/flashFallback.integration.test.d.ts → agents/codebase-investigator.test.d.ts} +0 -0
  1050. /package/dist/src/{utils/user_account.test.d.ts → agents/executor.test.d.ts} +0 -0
  1051. /package/dist/src/{utils/user_id.test.d.ts → agents/invocation.test.d.ts} +0 -0
@@ -4,21 +4,23 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
7
+ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
7
8
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
8
- import { SSEClientTransport, } from '@modelcontextprotocol/sdk/client/sse.js';
9
- import { StreamableHTTPClientTransport, } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
10
- import { ListPromptsResultSchema, GetPromptResultSchema, ListRootsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
9
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
10
+ import { ListRootsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
11
11
  import { parse } from 'shell-quote';
12
12
  import { AuthProviderType } from '../config/config.js';
13
13
  import { GoogleCredentialProvider } from '../mcp/google-auth-provider.js';
14
+ import { ServiceAccountImpersonationProvider } from '../mcp/sa-impersonation-provider.js';
14
15
  import { DiscoveredMCPTool } from './mcp-tool.js';
15
- import { mcpToTool } from '@google/genai';
16
+ import { basename } from 'node:path';
17
+ import { pathToFileURL } from 'node:url';
16
18
  import { MCPOAuthProvider } from '../mcp/oauth-provider.js';
17
- import { OAuthUtils } from '../mcp/oauth-utils.js';
18
19
  import { MCPOAuthTokenStorage } from '../mcp/oauth-token-storage.js';
20
+ import { OAuthUtils } from '../mcp/oauth-utils.js';
19
21
  import { getErrorMessage } from '../utils/errors.js';
20
- import { basename } from 'node:path';
21
- import { pathToFileURL } from 'node:url';
22
+ import { debugLogger } from '../utils/debugLogger.js';
23
+ import { coreEvents } from '../utils/events.js';
22
24
  export const MCP_DEFAULT_TIMEOUT_MSEC = 10 * 60 * 1000; // default to 10 minutes
23
25
  /**
24
26
  * Enum representing the connection status of an MCP server
@@ -27,6 +29,8 @@ export var MCPServerStatus;
27
29
  (function (MCPServerStatus) {
28
30
  /** Server is disconnected or experiencing errors */
29
31
  MCPServerStatus["DISCONNECTED"] = "disconnected";
32
+ /** Server is actively disconnecting */
33
+ MCPServerStatus["DISCONNECTING"] = "disconnecting";
30
34
  /** Server is in the process of connecting */
31
35
  MCPServerStatus["CONNECTING"] = "connecting";
32
36
  /** Server is connected and ready to use */
@@ -60,7 +64,6 @@ export class McpClient {
60
64
  client;
61
65
  transport;
62
66
  status = MCPServerStatus.DISCONNECTED;
63
- isDisconnecting = false;
64
67
  constructor(serverName, serverConfig, toolRegistry, promptRegistry, workspaceContext, debugMode) {
65
68
  this.serverName = serverName;
66
69
  this.serverConfig = serverConfig;
@@ -68,44 +71,27 @@ export class McpClient {
68
71
  this.promptRegistry = promptRegistry;
69
72
  this.workspaceContext = workspaceContext;
70
73
  this.debugMode = debugMode;
71
- this.client = new Client({
72
- name: `gemini-cli-mcp-client-${this.serverName}`,
73
- version: '0.0.1',
74
- });
75
74
  }
76
75
  /**
77
76
  * Connects to the MCP server.
78
77
  */
79
78
  async connect() {
80
- this.isDisconnecting = false;
79
+ if (this.status !== MCPServerStatus.DISCONNECTED) {
80
+ throw new Error(`Can only connect when the client is disconnected, current state is ${this.status}`);
81
+ }
81
82
  this.updateStatus(MCPServerStatus.CONNECTING);
82
83
  try {
83
- this.transport = await this.createTransport();
84
+ this.client = await connectToMcpServer(this.serverName, this.serverConfig, this.debugMode, this.workspaceContext);
85
+ const originalOnError = this.client.onerror;
84
86
  this.client.onerror = (error) => {
85
- if (this.isDisconnecting) {
87
+ if (this.status !== MCPServerStatus.CONNECTED) {
86
88
  return;
87
89
  }
88
- console.error(`MCP ERROR (${this.serverName}):`, error.toString());
90
+ if (originalOnError)
91
+ originalOnError(error);
92
+ coreEvents.emitFeedback('error', `MCP ERROR (${this.serverName})`, error);
89
93
  this.updateStatus(MCPServerStatus.DISCONNECTED);
90
94
  };
91
- this.client.registerCapabilities({
92
- roots: {},
93
- });
94
- this.client.setRequestHandler(ListRootsRequestSchema, async () => {
95
- const roots = [];
96
- for (const dir of this.workspaceContext.getDirectories()) {
97
- roots.push({
98
- uri: pathToFileURL(dir).toString(),
99
- name: basename(dir),
100
- });
101
- }
102
- return {
103
- roots,
104
- };
105
- });
106
- await this.client.connect(this.transport, {
107
- timeout: this.serverConfig.timeout,
108
- });
109
95
  this.updateStatus(MCPServerStatus.CONNECTED);
110
96
  }
111
97
  catch (error) {
@@ -116,28 +102,36 @@ export class McpClient {
116
102
  /**
117
103
  * Discovers tools and prompts from the MCP server.
118
104
  */
119
- async discover() {
120
- if (this.status !== MCPServerStatus.CONNECTED) {
121
- throw new Error('Client is not connected.');
122
- }
105
+ async discover(cliConfig) {
106
+ this.assertConnected();
123
107
  const prompts = await this.discoverPrompts();
124
- const tools = await this.discoverTools();
108
+ const tools = await this.discoverTools(cliConfig);
125
109
  if (prompts.length === 0 && tools.length === 0) {
126
110
  throw new Error('No prompts or tools found on the server.');
127
111
  }
128
112
  for (const tool of tools) {
129
113
  this.toolRegistry.registerTool(tool);
130
114
  }
115
+ this.toolRegistry.sortTools();
131
116
  }
132
117
  /**
133
118
  * Disconnects from the MCP server.
134
119
  */
135
120
  async disconnect() {
136
- this.isDisconnecting = true;
121
+ if (this.status !== MCPServerStatus.CONNECTED) {
122
+ return;
123
+ }
124
+ this.toolRegistry.removeMcpToolsByServer(this.serverName);
125
+ this.promptRegistry.removePromptsByServer(this.serverName);
126
+ this.updateStatus(MCPServerStatus.DISCONNECTING);
127
+ const client = this.client;
128
+ this.client = undefined;
137
129
  if (this.transport) {
138
130
  await this.transport.close();
139
131
  }
140
- this.client.close();
132
+ if (client) {
133
+ await client.close();
134
+ }
141
135
  this.updateStatus(MCPServerStatus.DISCONNECTED);
142
136
  }
143
137
  /**
@@ -150,15 +144,22 @@ export class McpClient {
150
144
  this.status = status;
151
145
  updateMCPServerStatus(this.serverName, status);
152
146
  }
153
- async createTransport() {
154
- return createTransport(this.serverName, this.serverConfig, this.debugMode);
147
+ assertConnected() {
148
+ if (this.status !== MCPServerStatus.CONNECTED) {
149
+ throw new Error(`Client is not connected, must connect before interacting with the server. Current state is ${this.status}`);
150
+ }
155
151
  }
156
- async discoverTools() {
157
- return discoverTools(this.serverName, this.serverConfig, this.client);
152
+ async discoverTools(cliConfig) {
153
+ this.assertConnected();
154
+ return discoverTools(this.serverName, this.serverConfig, this.client, cliConfig, this.toolRegistry.getMessageBus());
158
155
  }
159
156
  async discoverPrompts() {
157
+ this.assertConnected();
160
158
  return discoverPrompts(this.serverName, this.client, this.promptRegistry);
161
159
  }
160
+ getServerConfig() {
161
+ return this.serverConfig;
162
+ }
162
163
  }
163
164
  /**
164
165
  * Map to track the status of each MCP server within the core package
@@ -249,27 +250,21 @@ function extractWWWAuthenticateHeader(errorString) {
249
250
  */
250
251
  async function handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthenticate) {
251
252
  try {
252
- console.log(`🔐 '${mcpServerName}' requires OAuth authentication`);
253
+ debugLogger.log(`🔐 '${mcpServerName}' requires OAuth authentication`);
253
254
  // Always try to parse the resource metadata URI from the www-authenticate header
254
255
  let oauthConfig;
255
256
  const resourceMetadataUri = OAuthUtils.parseWWWAuthenticateHeader(wwwAuthenticate);
256
257
  if (resourceMetadataUri) {
257
258
  oauthConfig = await OAuthUtils.discoverOAuthConfig(resourceMetadataUri);
258
259
  }
259
- else if (mcpServerConfig.url) {
260
- // Fallback: try to discover OAuth config from the base URL for SSE
261
- const sseUrl = new URL(mcpServerConfig.url);
262
- const baseUrl = `${sseUrl.protocol}//${sseUrl.host}`;
263
- oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
264
- }
265
- else if (mcpServerConfig.httpUrl) {
266
- // Fallback: try to discover OAuth config from the base URL for HTTP
267
- const httpUrl = new URL(mcpServerConfig.httpUrl);
268
- const baseUrl = `${httpUrl.protocol}//${httpUrl.host}`;
260
+ else if (hasNetworkTransport(mcpServerConfig)) {
261
+ // Fallback: try to discover OAuth config from the base URL
262
+ const serverUrl = new URL(mcpServerConfig.httpUrl || mcpServerConfig.url);
263
+ const baseUrl = `${serverUrl.protocol}//${serverUrl.host}`;
269
264
  oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
270
265
  }
271
266
  if (!oauthConfig) {
272
- console.error(`❌ Could not configure OAuth for '${mcpServerName}' - please authenticate manually with /mcp auth ${mcpServerName}`);
267
+ coreEvents.emitFeedback('error', `Could not configure OAuth for '${mcpServerName}' - please authenticate manually with /mcp auth ${mcpServerName}`);
273
268
  return false;
274
269
  }
275
270
  // OAuth configuration discovered - proceed with authentication
@@ -283,16 +278,61 @@ async function handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthentic
283
278
  // Perform OAuth authentication
284
279
  // Pass the server URL for proper discovery
285
280
  const serverUrl = mcpServerConfig.httpUrl || mcpServerConfig.url;
286
- console.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
287
- await MCPOAuthProvider.authenticate(mcpServerName, oauthAuthConfig, serverUrl);
288
- console.log(`OAuth authentication successful for server '${mcpServerName}'`);
281
+ debugLogger.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
282
+ const authProvider = new MCPOAuthProvider(new MCPOAuthTokenStorage());
283
+ await authProvider.authenticate(mcpServerName, oauthAuthConfig, serverUrl);
284
+ debugLogger.log(`OAuth authentication successful for server '${mcpServerName}'`);
289
285
  return true;
290
286
  }
291
287
  catch (error) {
292
- console.error(`Failed to handle automatic OAuth for server '${mcpServerName}': ${getErrorMessage(error)}`);
288
+ coreEvents.emitFeedback('error', `Failed to handle automatic OAuth for server '${mcpServerName}': ${getErrorMessage(error)}`, error);
293
289
  return false;
294
290
  }
295
291
  }
292
+ /**
293
+ * Create RequestInit for TransportOptions.
294
+ *
295
+ * @param mcpServerConfig The MCP server configuration
296
+ * @param headers Additional headers
297
+ */
298
+ function createTransportRequestInit(mcpServerConfig, headers) {
299
+ return {
300
+ headers: {
301
+ ...mcpServerConfig.headers,
302
+ ...headers,
303
+ },
304
+ };
305
+ }
306
+ /**
307
+ * Create an AuthProvider for the MCP Transport.
308
+ *
309
+ * @param mcpServerConfig The MCP server configuration
310
+ */
311
+ function createAuthProvider(mcpServerConfig) {
312
+ if (mcpServerConfig.authProviderType ===
313
+ AuthProviderType.SERVICE_ACCOUNT_IMPERSONATION) {
314
+ return new ServiceAccountImpersonationProvider(mcpServerConfig);
315
+ }
316
+ if (mcpServerConfig.authProviderType === AuthProviderType.GOOGLE_CREDENTIALS) {
317
+ return new GoogleCredentialProvider(mcpServerConfig);
318
+ }
319
+ return undefined;
320
+ }
321
+ /**
322
+ * Create a transport for URL based servers (remote servers).
323
+ *
324
+ * @param mcpServerConfig The MCP server configuration
325
+ * @param transportOptions The transport options
326
+ */
327
+ function createUrlTransport(mcpServerConfig, transportOptions) {
328
+ if (mcpServerConfig.httpUrl) {
329
+ return new StreamableHTTPClientTransport(new URL(mcpServerConfig.httpUrl), transportOptions);
330
+ }
331
+ if (mcpServerConfig.url) {
332
+ return new SSEClientTransport(new URL(mcpServerConfig.url), transportOptions);
333
+ }
334
+ throw new Error('No URL configured for MCP Server');
335
+ }
296
336
  /**
297
337
  * Create a transport with OAuth token for the given server configuration.
298
338
  *
@@ -303,33 +343,16 @@ async function handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthentic
303
343
  */
304
344
  async function createTransportWithOAuth(mcpServerName, mcpServerConfig, accessToken) {
305
345
  try {
306
- if (mcpServerConfig.httpUrl) {
307
- // Create HTTP transport with OAuth token
308
- const oauthTransportOptions = {
309
- requestInit: {
310
- headers: {
311
- ...mcpServerConfig.headers,
312
- Authorization: `Bearer ${accessToken}`,
313
- },
314
- },
315
- };
316
- return new StreamableHTTPClientTransport(new URL(mcpServerConfig.httpUrl), oauthTransportOptions);
317
- }
318
- else if (mcpServerConfig.url) {
319
- // Create SSE transport with OAuth token in Authorization header
320
- return new SSEClientTransport(new URL(mcpServerConfig.url), {
321
- requestInit: {
322
- headers: {
323
- ...mcpServerConfig.headers,
324
- Authorization: `Bearer ${accessToken}`,
325
- },
326
- },
327
- });
328
- }
329
- return null;
346
+ const headers = {
347
+ Authorization: `Bearer ${accessToken}`,
348
+ };
349
+ const transportOptions = {
350
+ requestInit: createTransportRequestInit(mcpServerConfig, headers),
351
+ };
352
+ return createUrlTransport(mcpServerConfig, transportOptions);
330
353
  }
331
354
  catch (error) {
332
- console.error(`Failed to create OAuth transport for server '${mcpServerName}': ${getErrorMessage(error)}`);
355
+ coreEvents.emitFeedback('error', `Failed to create OAuth transport for server '${mcpServerName}': ${getErrorMessage(error)}`, error);
333
356
  return null;
334
357
  }
335
358
  }
@@ -343,11 +366,11 @@ async function createTransportWithOAuth(mcpServerName, mcpServerConfig, accessTo
343
366
  * @param toolRegistry The central registry where discovered tools will be registered.
344
367
  * @returns A promise that resolves when the discovery process has been attempted for all servers.
345
368
  */
346
- export async function discoverMcpTools(mcpServers, mcpServerCommand, toolRegistry, promptRegistry, debugMode, workspaceContext) {
369
+ export async function discoverMcpTools(mcpServers, mcpServerCommand, toolRegistry, promptRegistry, debugMode, workspaceContext, cliConfig) {
347
370
  mcpDiscoveryState = MCPDiscoveryState.IN_PROGRESS;
348
371
  try {
349
372
  mcpServers = populateMcpServerCommand(mcpServers, mcpServerCommand);
350
- const discoveryPromises = Object.entries(mcpServers).map(([mcpServerName, mcpServerConfig]) => connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext));
373
+ const discoveryPromises = Object.entries(mcpServers).map(([mcpServerName, mcpServerConfig]) => connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext, cliConfig));
351
374
  await Promise.all(discoveryPromises);
352
375
  }
353
376
  finally {
@@ -380,18 +403,18 @@ export function populateMcpServerCommand(mcpServers, mcpServerCommand) {
380
403
  * @param toolRegistry The registry to register discovered tools with
381
404
  * @returns Promise that resolves when discovery is complete
382
405
  */
383
- export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext) {
406
+ export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolRegistry, promptRegistry, debugMode, workspaceContext, cliConfig) {
384
407
  updateMCPServerStatus(mcpServerName, MCPServerStatus.CONNECTING);
385
408
  let mcpClient;
386
409
  try {
387
410
  mcpClient = await connectToMcpServer(mcpServerName, mcpServerConfig, debugMode, workspaceContext);
388
411
  mcpClient.onerror = (error) => {
389
- console.error(`MCP ERROR (${mcpServerName}):`, error.toString());
412
+ coreEvents.emitFeedback('error', `MCP ERROR (${mcpServerName}):`, error);
390
413
  updateMCPServerStatus(mcpServerName, MCPServerStatus.DISCONNECTED);
391
414
  };
392
415
  // Attempt to discover both prompts and tools
393
416
  const prompts = await discoverPrompts(mcpServerName, mcpClient, promptRegistry);
394
- const tools = await discoverTools(mcpServerName, mcpServerConfig, mcpClient);
417
+ const tools = await discoverTools(mcpServerName, mcpServerConfig, mcpClient, cliConfig, toolRegistry.getMessageBus());
395
418
  // If we have neither prompts nor tools, it's a failed discovery
396
419
  if (prompts.length === 0 && tools.length === 0) {
397
420
  throw new Error('No prompts or tools found on the server.');
@@ -402,68 +425,16 @@ export async function connectAndDiscover(mcpServerName, mcpServerConfig, toolReg
402
425
  for (const tool of tools) {
403
426
  toolRegistry.registerTool(tool);
404
427
  }
428
+ toolRegistry.sortTools();
405
429
  }
406
430
  catch (error) {
407
431
  if (mcpClient) {
408
432
  mcpClient.close();
409
433
  }
410
- console.error(`Error connecting to MCP server '${mcpServerName}': ${getErrorMessage(error)}`);
434
+ coreEvents.emitFeedback('error', `Error connecting to MCP server '${mcpServerName}': ${getErrorMessage(error)}`, error);
411
435
  updateMCPServerStatus(mcpServerName, MCPServerStatus.DISCONNECTED);
412
436
  }
413
437
  }
414
- /**
415
- * Recursively validates that a JSON schema and all its nested properties and
416
- * items have a `type` defined.
417
- *
418
- * @param schema The JSON schema to validate.
419
- * @returns `true` if the schema is valid, `false` otherwise.
420
- *
421
- * @visiblefortesting
422
- */
423
- export function hasValidTypes(schema) {
424
- if (typeof schema !== 'object' || schema === null) {
425
- // Not a schema object we can validate, or not a schema at all.
426
- // Treat as valid as it has no properties to be invalid.
427
- return true;
428
- }
429
- const s = schema;
430
- if (!s['type']) {
431
- // These keywords contain an array of schemas that should be validated.
432
- //
433
- // If no top level type was given, then they must each have a type.
434
- let hasSubSchema = false;
435
- const schemaArrayKeywords = ['anyOf', 'allOf', 'oneOf'];
436
- for (const keyword of schemaArrayKeywords) {
437
- const subSchemas = s[keyword];
438
- if (Array.isArray(subSchemas)) {
439
- hasSubSchema = true;
440
- for (const subSchema of subSchemas) {
441
- if (!hasValidTypes(subSchema)) {
442
- return false;
443
- }
444
- }
445
- }
446
- }
447
- // If the node itself is missing a type and had no subschemas, then it isn't valid.
448
- if (!hasSubSchema)
449
- return false;
450
- }
451
- if (s['type'] === 'object' && s['properties']) {
452
- if (typeof s['properties'] === 'object' && s['properties'] !== null) {
453
- for (const prop of Object.values(s['properties'])) {
454
- if (!hasValidTypes(prop)) {
455
- return false;
456
- }
457
- }
458
- }
459
- }
460
- if (s['type'] === 'array' && s['items']) {
461
- if (!hasValidTypes(s['items'])) {
462
- return false;
463
- }
464
- }
465
- return true;
466
- }
467
438
  /**
468
439
  * Discovers and sanitizes tools from a connected MCP client.
469
440
  * It retrieves function declarations from the client, filters out disabled tools,
@@ -472,33 +443,29 @@ export function hasValidTypes(schema) {
472
443
  * @param mcpServerName The name of the MCP server.
473
444
  * @param mcpServerConfig The configuration for the MCP server.
474
445
  * @param mcpClient The active MCP client instance.
446
+ * @param cliConfig The CLI configuration object.
447
+ * @param messageBus Optional message bus for policy engine integration.
475
448
  * @returns A promise that resolves to an array of discovered and enabled tools.
476
449
  * @throws An error if no enabled tools are found or if the server provides invalid function declarations.
477
450
  */
478
- export async function discoverTools(mcpServerName, mcpServerConfig, mcpClient) {
451
+ export async function discoverTools(mcpServerName, mcpServerConfig, mcpClient, cliConfig, messageBus) {
479
452
  try {
480
- const mcpCallableTool = mcpToTool(mcpClient);
481
- const tool = await mcpCallableTool.tool();
482
- if (!Array.isArray(tool.functionDeclarations)) {
483
- // This is a valid case for a prompt-only server
453
+ // Only request tools if the server supports them.
454
+ if (mcpClient.getServerCapabilities()?.tools == null)
484
455
  return [];
485
- }
456
+ const response = await mcpClient.listTools({});
486
457
  const discoveredTools = [];
487
- for (const funcDecl of tool.functionDeclarations) {
458
+ for (const toolDef of response.tools) {
488
459
  try {
489
- if (!isEnabled(funcDecl, mcpServerName, mcpServerConfig)) {
460
+ if (!isEnabled(toolDef, mcpServerName, mcpServerConfig)) {
490
461
  continue;
491
462
  }
492
- if (!hasValidTypes(funcDecl.parametersJsonSchema)) {
493
- console.warn(`Skipping tool '${funcDecl.name}' from MCP server '${mcpServerName}' ` +
494
- `because it has missing types in its parameter schema. Please file an ` +
495
- `issue with the owner of the MCP server.`);
496
- continue;
497
- }
498
- discoveredTools.push(new DiscoveredMCPTool(mcpCallableTool, mcpServerName, funcDecl.name, funcDecl.description ?? '', funcDecl.parametersJsonSchema ?? { type: 'object', properties: {} }, mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC, mcpServerConfig.trust));
463
+ const mcpCallableTool = new McpCallableTool(mcpClient, toolDef, mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC);
464
+ const tool = new DiscoveredMCPTool(mcpCallableTool, mcpServerName, toolDef.name, toolDef.description ?? '', toolDef.inputSchema ?? { type: 'object', properties: {} }, mcpServerConfig.trust, undefined, cliConfig, mcpServerConfig.extension?.name, mcpServerConfig.extension?.id, messageBus);
465
+ discoveredTools.push(tool);
499
466
  }
500
467
  catch (error) {
501
- console.error(`Error discovering tool: '${funcDecl.name}' from MCP server '${mcpServerName}': ${error.message}`);
468
+ coreEvents.emitFeedback('error', `Error discovering tool: '${toolDef.name}' from MCP server '${mcpServerName}': ${error.message}`, error);
502
469
  }
503
470
  }
504
471
  return discoveredTools;
@@ -506,11 +473,69 @@ export async function discoverTools(mcpServerName, mcpServerConfig, mcpClient) {
506
473
  catch (error) {
507
474
  if (error instanceof Error &&
508
475
  !error.message?.includes('Method not found')) {
509
- console.error(`Error discovering tools from ${mcpServerName}: ${getErrorMessage(error)}`);
476
+ coreEvents.emitFeedback('error', `Error discovering tools from ${mcpServerName}: ${getErrorMessage(error)}`, error);
510
477
  }
511
478
  return [];
512
479
  }
513
480
  }
481
+ class McpCallableTool {
482
+ client;
483
+ toolDef;
484
+ timeout;
485
+ constructor(client, toolDef, timeout) {
486
+ this.client = client;
487
+ this.toolDef = toolDef;
488
+ this.timeout = timeout;
489
+ }
490
+ async tool() {
491
+ return {
492
+ functionDeclarations: [
493
+ {
494
+ name: this.toolDef.name,
495
+ description: this.toolDef.description,
496
+ parametersJsonSchema: this.toolDef.inputSchema,
497
+ },
498
+ ],
499
+ };
500
+ }
501
+ async callTool(functionCalls) {
502
+ // We only expect one function call at a time for MCP tools in this context
503
+ if (functionCalls.length !== 1) {
504
+ throw new Error('McpCallableTool only supports single function call');
505
+ }
506
+ const call = functionCalls[0];
507
+ try {
508
+ const result = await this.client.callTool({
509
+ name: call.name,
510
+ arguments: call.args,
511
+ }, undefined, { timeout: this.timeout });
512
+ return [
513
+ {
514
+ functionResponse: {
515
+ name: call.name,
516
+ response: result,
517
+ },
518
+ },
519
+ ];
520
+ }
521
+ catch (error) {
522
+ // Return error in the format expected by DiscoveredMCPTool
523
+ return [
524
+ {
525
+ functionResponse: {
526
+ name: call.name,
527
+ response: {
528
+ error: {
529
+ message: error instanceof Error ? error.message : String(error),
530
+ isError: true,
531
+ },
532
+ },
533
+ },
534
+ },
535
+ ];
536
+ }
537
+ }
538
+ }
514
539
  /**
515
540
  * Discovers and logs prompts from a connected MCP client.
516
541
  * It retrieves prompt declarations from the client and logs their names.
@@ -523,7 +548,7 @@ export async function discoverPrompts(mcpServerName, mcpClient, promptRegistry)
523
548
  // Only request prompts if the server supports them.
524
549
  if (mcpClient.getServerCapabilities()?.prompts == null)
525
550
  return [];
526
- const response = await mcpClient.request({ method: 'prompts/list', params: {} }, ListPromptsResultSchema);
551
+ const response = await mcpClient.listPrompts({});
527
552
  for (const prompt of response.prompts) {
528
553
  promptRegistry.registerPrompt({
529
554
  ...prompt,
@@ -538,7 +563,7 @@ export async function discoverPrompts(mcpServerName, mcpClient, promptRegistry)
538
563
  // Don't log an error if the method is not found, which is a common case.
539
564
  if (error instanceof Error &&
540
565
  !error.message?.includes('Method not found')) {
541
- console.error(`Error discovering prompts from ${mcpServerName}: ${getErrorMessage(error)}`);
566
+ coreEvents.emitFeedback('error', `Error discovering prompts from ${mcpServerName}: ${getErrorMessage(error)}`, error);
542
567
  }
543
568
  return [];
544
569
  }
@@ -554,23 +579,35 @@ export async function discoverPrompts(mcpServerName, mcpClient, promptRegistry)
554
579
  */
555
580
  export async function invokeMcpPrompt(mcpServerName, mcpClient, promptName, promptParams) {
556
581
  try {
557
- const response = await mcpClient.request({
558
- method: 'prompts/get',
559
- params: {
560
- name: promptName,
561
- arguments: promptParams,
562
- },
563
- }, GetPromptResultSchema);
582
+ const sanitizedParams = {};
583
+ for (const [key, value] of Object.entries(promptParams)) {
584
+ if (value !== undefined && value !== null) {
585
+ sanitizedParams[key] = String(value);
586
+ }
587
+ }
588
+ const response = await mcpClient.getPrompt({
589
+ name: promptName,
590
+ arguments: sanitizedParams,
591
+ });
564
592
  return response;
565
593
  }
566
594
  catch (error) {
567
595
  if (error instanceof Error &&
568
596
  !error.message?.includes('Method not found')) {
569
- console.error(`Error invoking prompt '${promptName}' from ${mcpServerName} ${promptParams}: ${getErrorMessage(error)}`);
597
+ coreEvents.emitFeedback('error', `Error invoking prompt '${promptName}' from ${mcpServerName} ${promptParams}: ${getErrorMessage(error)}`, error);
570
598
  }
571
599
  throw error;
572
600
  }
573
601
  }
602
+ /**
603
+ * @visiblefortesting
604
+ * Checks if the MCP server configuration has a network transport URL (SSE or HTTP).
605
+ * @param config The MCP server configuration.
606
+ * @returns True if a `url` or `httpUrl` is present, false otherwise.
607
+ */
608
+ export function hasNetworkTransport(config) {
609
+ return !!(config.url || config.httpUrl);
610
+ }
574
611
  /**
575
612
  * Creates and connects an MCP client to a server based on the provided configuration.
576
613
  * It determines the appropriate transport (Stdio, SSE, or Streamable HTTP) and
@@ -627,17 +664,6 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
627
664
  unlistenDirectories?.();
628
665
  unlistenDirectories = undefined;
629
666
  };
630
- // patch Client.callTool to use request timeout as genai McpCallTool.callTool does not do it
631
- // TODO: remove this hack once GenAI SDK does callTool with request options
632
- if ('callTool' in mcpClient) {
633
- const origCallTool = mcpClient.callTool.bind(mcpClient);
634
- mcpClient.callTool = function (params, resultSchema, options) {
635
- return origCallTool(params, resultSchema, {
636
- ...options,
637
- timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
638
- });
639
- };
640
- }
641
667
  try {
642
668
  const transport = await createTransport(mcpServerName, mcpServerConfig, debugMode);
643
669
  try {
@@ -654,26 +680,27 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
654
680
  catch (error) {
655
681
  // Check if this is a 401 error that might indicate OAuth is required
656
682
  const errorString = String(error);
657
- if (errorString.includes('401') &&
658
- (mcpServerConfig.httpUrl || mcpServerConfig.url)) {
683
+ if (errorString.includes('401') && hasNetworkTransport(mcpServerConfig)) {
659
684
  mcpServerRequiresOAuth.set(mcpServerName, true);
660
685
  // Only trigger automatic OAuth discovery for HTTP servers or when OAuth is explicitly configured
661
686
  // For SSE servers, we should not trigger new OAuth flows automatically
662
687
  const shouldTriggerOAuth = mcpServerConfig.httpUrl || mcpServerConfig.oauth?.enabled;
663
688
  if (!shouldTriggerOAuth) {
664
689
  // For SSE servers without explicit OAuth config, if a token was found but rejected, report it accurately.
665
- const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
690
+ const tokenStorage = new MCPOAuthTokenStorage();
691
+ const credentials = await tokenStorage.getCredentials(mcpServerName);
666
692
  if (credentials) {
667
- const hasStoredTokens = await MCPOAuthProvider.getValidToken(mcpServerName, {
693
+ const authProvider = new MCPOAuthProvider(tokenStorage);
694
+ const hasStoredTokens = await authProvider.getValidToken(mcpServerName, {
668
695
  // Pass client ID if available
669
696
  clientId: credentials.clientId,
670
697
  });
671
698
  if (hasStoredTokens) {
672
- console.log(`Stored OAuth token for SSE server '${mcpServerName}' was rejected. ` +
699
+ coreEvents.emitFeedback('error', `Stored OAuth token for SSE server '${mcpServerName}' was rejected. ` +
673
700
  `Please re-authenticate using: /mcp auth ${mcpServerName}`);
674
701
  }
675
702
  else {
676
- console.log(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
703
+ coreEvents.emitFeedback('error', `401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
677
704
  `Please authenticate using: /mcp auth ${mcpServerName}`);
678
705
  }
679
706
  }
@@ -683,39 +710,44 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
683
710
  // Try to extract www-authenticate header from the error
684
711
  let wwwAuthenticate = extractWWWAuthenticateHeader(errorString);
685
712
  // If we didn't get the header from the error string, try to get it from the server
686
- if (!wwwAuthenticate && mcpServerConfig.url) {
687
- console.log(`No www-authenticate header in error, trying to fetch it from server...`);
713
+ if (!wwwAuthenticate && hasNetworkTransport(mcpServerConfig)) {
714
+ debugLogger.log(`No www-authenticate header in error, trying to fetch it from server...`);
688
715
  try {
689
- const response = await fetch(mcpServerConfig.url, {
716
+ const urlToFetch = mcpServerConfig.httpUrl || mcpServerConfig.url;
717
+ const response = await fetch(urlToFetch, {
690
718
  method: 'HEAD',
691
719
  headers: {
692
- Accept: 'text/event-stream',
720
+ Accept: mcpServerConfig.httpUrl
721
+ ? 'application/json'
722
+ : 'text/event-stream',
693
723
  },
694
724
  signal: AbortSignal.timeout(5000),
695
725
  });
696
726
  if (response.status === 401) {
697
727
  wwwAuthenticate = response.headers.get('www-authenticate');
698
728
  if (wwwAuthenticate) {
699
- console.log(`Found www-authenticate header from server: ${wwwAuthenticate}`);
729
+ debugLogger.log(`Found www-authenticate header from server: ${wwwAuthenticate}`);
700
730
  }
701
731
  }
702
732
  }
703
733
  catch (fetchError) {
704
- console.debug(`Failed to fetch www-authenticate header: ${getErrorMessage(fetchError)}`);
734
+ debugLogger.debug(`Failed to fetch www-authenticate header: ${getErrorMessage(fetchError)}`);
705
735
  }
706
736
  }
707
737
  if (wwwAuthenticate) {
708
- console.log(`Received 401 with www-authenticate header: ${wwwAuthenticate}`);
738
+ debugLogger.log(`Received 401 with www-authenticate header: ${wwwAuthenticate}`);
709
739
  // Try automatic OAuth discovery and authentication
710
740
  const oauthSuccess = await handleAutomaticOAuth(mcpServerName, mcpServerConfig, wwwAuthenticate);
711
741
  if (oauthSuccess) {
712
742
  // Retry connection with OAuth token
713
- console.log(`Retrying connection to '${mcpServerName}' with OAuth token...`);
743
+ debugLogger.log(`Retrying connection to '${mcpServerName}' with OAuth token...`);
714
744
  // Get the valid token - we need to create a proper OAuth config
715
745
  // The token should already be available from the authentication process
716
- const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
746
+ const tokenStorage = new MCPOAuthTokenStorage();
747
+ const credentials = await tokenStorage.getCredentials(mcpServerName);
717
748
  if (credentials) {
718
- const accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, {
749
+ const authProvider = new MCPOAuthProvider(tokenStorage);
750
+ const accessToken = await authProvider.getValidToken(mcpServerName, {
719
751
  // Pass client ID if available
720
752
  clientId: credentials.clientId,
721
753
  });
@@ -723,35 +755,25 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
723
755
  // Create transport with OAuth token
724
756
  const oauthTransport = await createTransportWithOAuth(mcpServerName, mcpServerConfig, accessToken);
725
757
  if (oauthTransport) {
726
- try {
727
- await mcpClient.connect(oauthTransport, {
728
- timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
729
- });
730
- // Connection successful with OAuth
731
- return mcpClient;
732
- }
733
- catch (retryError) {
734
- console.error(`Failed to connect with OAuth token: ${getErrorMessage(retryError)}`);
735
- throw retryError;
736
- }
758
+ await mcpClient.connect(oauthTransport, {
759
+ timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
760
+ });
761
+ // Connection successful with OAuth
762
+ return mcpClient;
737
763
  }
738
764
  else {
739
- console.error(`Failed to create OAuth transport for server '${mcpServerName}'`);
740
765
  throw new Error(`Failed to create OAuth transport for server '${mcpServerName}'`);
741
766
  }
742
767
  }
743
768
  else {
744
- console.error(`Failed to get OAuth token for server '${mcpServerName}'`);
745
769
  throw new Error(`Failed to get OAuth token for server '${mcpServerName}'`);
746
770
  }
747
771
  }
748
772
  else {
749
- console.error(`Failed to get credentials for server '${mcpServerName}' after successful OAuth authentication`);
750
773
  throw new Error(`Failed to get credentials for server '${mcpServerName}' after successful OAuth authentication`);
751
774
  }
752
775
  }
753
776
  else {
754
- console.error(`Failed to handle automatic OAuth for server '${mcpServerName}'`);
755
777
  throw new Error(`Failed to handle automatic OAuth for server '${mcpServerName}'`);
756
778
  }
757
779
  }
@@ -761,96 +783,84 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
761
783
  // For SSE servers, we should not trigger new OAuth flows automatically
762
784
  const shouldTryDiscovery = mcpServerConfig.httpUrl || mcpServerConfig.oauth?.enabled;
763
785
  if (!shouldTryDiscovery) {
764
- const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
786
+ const tokenStorage = new MCPOAuthTokenStorage();
787
+ const credentials = await tokenStorage.getCredentials(mcpServerName);
765
788
  if (credentials) {
766
- const hasStoredTokens = await MCPOAuthProvider.getValidToken(mcpServerName, {
789
+ const authProvider = new MCPOAuthProvider(tokenStorage);
790
+ const hasStoredTokens = await authProvider.getValidToken(mcpServerName, {
767
791
  // Pass client ID if available
768
792
  clientId: credentials.clientId,
769
793
  });
770
794
  if (hasStoredTokens) {
771
- console.log(`Stored OAuth token for SSE server '${mcpServerName}' was rejected. ` +
795
+ coreEvents.emitFeedback('error', `Stored OAuth token for SSE server '${mcpServerName}' was rejected. ` +
772
796
  `Please re-authenticate using: /mcp auth ${mcpServerName}`);
773
797
  }
774
798
  else {
775
- console.log(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
799
+ coreEvents.emitFeedback('error', `401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
776
800
  `Please authenticate using: /mcp auth ${mcpServerName}`);
777
801
  }
778
802
  }
779
803
  throw new Error(`401 error received for SSE server '${mcpServerName}' without OAuth configuration. ` +
780
804
  `Please authenticate using: /mcp auth ${mcpServerName}`);
781
805
  }
782
- // For SSE servers, try to discover OAuth configuration from the base URL
783
- console.log(`🔍 Attempting OAuth discovery for '${mcpServerName}'...`);
784
- if (mcpServerConfig.url) {
785
- const sseUrl = new URL(mcpServerConfig.url);
786
- const baseUrl = `${sseUrl.protocol}//${sseUrl.host}`;
787
- try {
788
- // Try to discover OAuth configuration from the base URL
789
- const oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
790
- if (oauthConfig) {
791
- console.log(`Discovered OAuth configuration from base URL for server '${mcpServerName}'`);
792
- // Create OAuth configuration for authentication
793
- const oauthAuthConfig = {
794
- enabled: true,
795
- authorizationUrl: oauthConfig.authorizationUrl,
796
- tokenUrl: oauthConfig.tokenUrl,
797
- scopes: oauthConfig.scopes || [],
798
- };
799
- // Perform OAuth authentication
800
- // Pass the server URL for proper discovery
801
- const serverUrl = mcpServerConfig.httpUrl || mcpServerConfig.url;
802
- console.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
803
- await MCPOAuthProvider.authenticate(mcpServerName, oauthAuthConfig, serverUrl);
804
- // Retry connection with OAuth token
805
- const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
806
- if (credentials) {
807
- const accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, {
808
- // Pass client ID if available
809
- clientId: credentials.clientId,
810
- });
811
- if (accessToken) {
812
- // Create transport with OAuth token
813
- const oauthTransport = await createTransportWithOAuth(mcpServerName, mcpServerConfig, accessToken);
814
- if (oauthTransport) {
815
- try {
816
- await mcpClient.connect(oauthTransport, {
817
- timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
818
- });
819
- // Connection successful with OAuth
820
- return mcpClient;
821
- }
822
- catch (retryError) {
823
- console.error(`Failed to connect with OAuth token: ${getErrorMessage(retryError)}`);
824
- throw retryError;
825
- }
826
- }
827
- else {
828
- console.error(`Failed to create OAuth transport for server '${mcpServerName}'`);
829
- throw new Error(`Failed to create OAuth transport for server '${mcpServerName}'`);
830
- }
806
+ // For SSE/HTTP servers, try to discover OAuth configuration from the base URL
807
+ debugLogger.log(`🔍 Attempting OAuth discovery for '${mcpServerName}'...`);
808
+ if (hasNetworkTransport(mcpServerConfig)) {
809
+ const serverUrl = new URL(mcpServerConfig.httpUrl || mcpServerConfig.url);
810
+ const baseUrl = `${serverUrl.protocol}//${serverUrl.host}`;
811
+ // Try to discover OAuth configuration from the base URL
812
+ const oauthConfig = await OAuthUtils.discoverOAuthConfig(baseUrl);
813
+ if (oauthConfig) {
814
+ debugLogger.log(`Discovered OAuth configuration from base URL for server '${mcpServerName}'`);
815
+ // Create OAuth configuration for authentication
816
+ const oauthAuthConfig = {
817
+ enabled: true,
818
+ authorizationUrl: oauthConfig.authorizationUrl,
819
+ tokenUrl: oauthConfig.tokenUrl,
820
+ scopes: oauthConfig.scopes || [],
821
+ };
822
+ // Perform OAuth authentication
823
+ // Pass the server URL for proper discovery
824
+ const authServerUrl = mcpServerConfig.httpUrl || mcpServerConfig.url;
825
+ debugLogger.log(`Starting OAuth authentication for server '${mcpServerName}'...`);
826
+ const authProvider = new MCPOAuthProvider(new MCPOAuthTokenStorage());
827
+ await authProvider.authenticate(mcpServerName, oauthAuthConfig, authServerUrl);
828
+ // Retry connection with OAuth token
829
+ const tokenStorage = new MCPOAuthTokenStorage();
830
+ const credentials = await tokenStorage.getCredentials(mcpServerName);
831
+ if (credentials) {
832
+ const authProvider = new MCPOAuthProvider(tokenStorage);
833
+ const accessToken = await authProvider.getValidToken(mcpServerName, {
834
+ // Pass client ID if available
835
+ clientId: credentials.clientId,
836
+ });
837
+ if (accessToken) {
838
+ // Create transport with OAuth token
839
+ const oauthTransport = await createTransportWithOAuth(mcpServerName, mcpServerConfig, accessToken);
840
+ if (oauthTransport) {
841
+ await mcpClient.connect(oauthTransport, {
842
+ timeout: mcpServerConfig.timeout ?? MCP_DEFAULT_TIMEOUT_MSEC,
843
+ });
844
+ // Connection successful with OAuth
845
+ return mcpClient;
831
846
  }
832
847
  else {
833
- console.error(`Failed to get OAuth token for server '${mcpServerName}'`);
834
- throw new Error(`Failed to get OAuth token for server '${mcpServerName}'`);
848
+ throw new Error(`Failed to create OAuth transport for server '${mcpServerName}'`);
835
849
  }
836
850
  }
837
851
  else {
838
- console.error(`Failed to get stored credentials for server '${mcpServerName}'`);
839
- throw new Error(`Failed to get stored credentials for server '${mcpServerName}'`);
852
+ throw new Error(`Failed to get OAuth token for server '${mcpServerName}'`);
840
853
  }
841
854
  }
842
855
  else {
843
- console.error(`❌ Could not configure OAuth for '${mcpServerName}' - please authenticate manually with /mcp auth ${mcpServerName}`);
844
- throw new Error(`OAuth configuration failed for '${mcpServerName}'. Please authenticate manually with /mcp auth ${mcpServerName}`);
856
+ throw new Error(`Failed to get stored credentials for server '${mcpServerName}'`);
845
857
  }
846
858
  }
847
- catch (discoveryError) {
848
- console.error(`❌ OAuth discovery failed for '${mcpServerName}' - please authenticate manually with /mcp auth ${mcpServerName}`);
849
- throw discoveryError;
859
+ else {
860
+ throw new Error(`OAuth configuration failed for '${mcpServerName}'. Please authenticate manually with /mcp auth ${mcpServerName}`);
850
861
  }
851
862
  }
852
863
  else {
853
- console.error(`❌ '${mcpServerName}' requires authentication but no OAuth configuration found`);
854
864
  throw new Error(`MCP server '${mcpServerName}' requires authentication. Please configure OAuth or check server settings.`);
855
865
  }
856
866
  }
@@ -877,80 +887,57 @@ export async function connectToMcpServer(mcpServerName, mcpServerConfig, debugMo
877
887
  }
878
888
  /** Visible for Testing */
879
889
  export async function createTransport(mcpServerName, mcpServerConfig, debugMode) {
880
- if (mcpServerConfig.authProviderType === AuthProviderType.GOOGLE_CREDENTIALS) {
881
- const provider = new GoogleCredentialProvider(mcpServerConfig);
882
- const transportOptions = {
883
- authProvider: provider,
884
- };
885
- if (mcpServerConfig.httpUrl) {
886
- return new StreamableHTTPClientTransport(new URL(mcpServerConfig.httpUrl), transportOptions);
887
- }
888
- else if (mcpServerConfig.url) {
889
- return new SSEClientTransport(new URL(mcpServerConfig.url), transportOptions);
890
- }
891
- throw new Error('No URL configured for Google Credentials MCP server');
892
- }
893
- // Check if we have OAuth configuration or stored tokens
894
- let accessToken = null;
895
- let hasOAuthConfig = mcpServerConfig.oauth?.enabled;
896
- if (hasOAuthConfig && mcpServerConfig.oauth) {
897
- accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, mcpServerConfig.oauth);
898
- if (!accessToken) {
899
- console.error(`MCP server '${mcpServerName}' requires OAuth authentication. ` +
900
- `Please authenticate using the /mcp auth command.`);
901
- throw new Error(`MCP server '${mcpServerName}' requires OAuth authentication. ` +
902
- `Please authenticate using the /mcp auth command.`);
903
- }
904
- }
905
- else {
906
- // Check if we have stored OAuth tokens for this server (from previous authentication)
907
- const credentials = await MCPOAuthTokenStorage.getToken(mcpServerName);
908
- if (credentials) {
909
- accessToken = await MCPOAuthProvider.getValidToken(mcpServerName, {
910
- // Pass client ID if available
911
- clientId: credentials.clientId,
912
- });
913
- if (accessToken) {
914
- hasOAuthConfig = true;
915
- console.log(`Found stored OAuth token for server '${mcpServerName}'`);
890
+ const noUrl = !mcpServerConfig.url && !mcpServerConfig.httpUrl;
891
+ if (noUrl) {
892
+ if (mcpServerConfig.authProviderType === AuthProviderType.GOOGLE_CREDENTIALS) {
893
+ throw new Error(`URL must be provided in the config for Google Credentials provider`);
894
+ }
895
+ if (mcpServerConfig.authProviderType ===
896
+ AuthProviderType.SERVICE_ACCOUNT_IMPERSONATION) {
897
+ throw new Error(`No URL configured for ServiceAccountImpersonation MCP Server`);
898
+ }
899
+ }
900
+ if (mcpServerConfig.httpUrl || mcpServerConfig.url) {
901
+ const authProvider = createAuthProvider(mcpServerConfig);
902
+ const headers = {};
903
+ if (authProvider === undefined) {
904
+ // Check if we have OAuth configuration or stored tokens
905
+ let accessToken = null;
906
+ let hasOAuthConfig = mcpServerConfig.oauth?.enabled;
907
+ if (hasOAuthConfig && mcpServerConfig.oauth) {
908
+ const tokenStorage = new MCPOAuthTokenStorage();
909
+ const mcpAuthProvider = new MCPOAuthProvider(tokenStorage);
910
+ accessToken = await mcpAuthProvider.getValidToken(mcpServerName, mcpServerConfig.oauth);
911
+ if (!accessToken) {
912
+ throw new Error(`MCP server '${mcpServerName}' requires OAuth authentication. ` +
913
+ `Please authenticate using the /mcp auth command.`);
914
+ }
915
+ }
916
+ else {
917
+ // Check if we have stored OAuth tokens for this server (from previous authentication)
918
+ const tokenStorage = new MCPOAuthTokenStorage();
919
+ const credentials = await tokenStorage.getCredentials(mcpServerName);
920
+ if (credentials) {
921
+ const mcpAuthProvider = new MCPOAuthProvider(tokenStorage);
922
+ accessToken = await mcpAuthProvider.getValidToken(mcpServerName, {
923
+ // Pass client ID if available
924
+ clientId: credentials.clientId,
925
+ });
926
+ if (accessToken) {
927
+ hasOAuthConfig = true;
928
+ debugLogger.log(`Found stored OAuth token for server '${mcpServerName}'`);
929
+ }
930
+ }
931
+ }
932
+ if (hasOAuthConfig && accessToken) {
933
+ headers['Authorization'] = `Bearer ${accessToken}`;
916
934
  }
917
935
  }
918
- }
919
- if (mcpServerConfig.httpUrl) {
920
- const transportOptions = {};
921
- // Set up headers with OAuth token if available
922
- if (hasOAuthConfig && accessToken) {
923
- transportOptions.requestInit = {
924
- headers: {
925
- ...mcpServerConfig.headers,
926
- Authorization: `Bearer ${accessToken}`,
927
- },
928
- };
929
- }
930
- else if (mcpServerConfig.headers) {
931
- transportOptions.requestInit = {
932
- headers: mcpServerConfig.headers,
933
- };
934
- }
935
- return new StreamableHTTPClientTransport(new URL(mcpServerConfig.httpUrl), transportOptions);
936
- }
937
- if (mcpServerConfig.url) {
938
- const transportOptions = {};
939
- // Set up headers with OAuth token if available
940
- if (hasOAuthConfig && accessToken) {
941
- transportOptions.requestInit = {
942
- headers: {
943
- ...mcpServerConfig.headers,
944
- Authorization: `Bearer ${accessToken}`,
945
- },
946
- };
947
- }
948
- else if (mcpServerConfig.headers) {
949
- transportOptions.requestInit = {
950
- headers: mcpServerConfig.headers,
951
- };
952
- }
953
- return new SSEClientTransport(new URL(mcpServerConfig.url), transportOptions);
936
+ const transportOptions = {
937
+ requestInit: createTransportRequestInit(mcpServerConfig, headers),
938
+ authProvider,
939
+ };
940
+ return createUrlTransport(mcpServerConfig, transportOptions);
954
941
  }
955
942
  if (mcpServerConfig.command) {
956
943
  const transport = new StdioClientTransport({
@@ -966,7 +953,7 @@ export async function createTransport(mcpServerName, mcpServerConfig, debugMode)
966
953
  if (debugMode) {
967
954
  transport.stderr.on('data', (data) => {
968
955
  const stderrStr = data.toString().trim();
969
- console.debug(`[DEBUG] [MCP STDERR (${mcpServerName})]: `, stderrStr);
956
+ debugLogger.debug(`[DEBUG] [MCP STDERR (${mcpServerName})]: `, stderrStr);
970
957
  });
971
958
  }
972
959
  return transport;
@@ -976,7 +963,7 @@ export async function createTransport(mcpServerName, mcpServerConfig, debugMode)
976
963
  /** Visible for testing */
977
964
  export function isEnabled(funcDecl, mcpServerName, mcpServerConfig) {
978
965
  if (!funcDecl.name) {
979
- console.warn(`Discovered a function declaration without a name from MCP server '${mcpServerName}'. Skipping.`);
966
+ debugLogger.warn(`Discovered a function declaration without a name from MCP server '${mcpServerName}'. Skipping.`);
980
967
  return false;
981
968
  }
982
969
  const { includeTools, excludeTools } = mcpServerConfig;