@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,49 +4,60 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import * as path from 'node:path';
7
+ import { inspect } from 'node:util';
7
8
  import process from 'node:process';
8
- import { AuthType, createContentGeneratorConfig, } from '../core/contentGenerator.js';
9
+ import { AuthType, createContentGenerator, createContentGeneratorConfig, } from '../core/contentGenerator.js';
9
10
  import { PromptRegistry } from '../prompts/prompt-registry.js';
10
11
  import { ToolRegistry } from '../tools/tool-registry.js';
11
12
  import { LSTool } from '../tools/ls.js';
12
13
  import { ReadFileTool } from '../tools/read-file.js';
13
14
  import { GrepTool } from '../tools/grep.js';
15
+ import { canUseRipgrep, RipGrepTool } from '../tools/ripGrep.js';
14
16
  import { GlobTool } from '../tools/glob.js';
15
17
  import { EditTool } from '../tools/edit.js';
18
+ import { SmartEditTool } from '../tools/smart-edit.js';
16
19
  import { ShellTool } from '../tools/shell.js';
17
20
  import { WriteFileTool } from '../tools/write-file.js';
18
21
  import { WebFetchTool } from '../tools/web-fetch.js';
19
- import { ReadManyFilesTool } from '../tools/read-many-files.js';
20
- import { MemoryTool, setGeminiMdFilename, GEMINI_CONFIG_DIR as GEMINI_DIR, } from '../tools/memoryTool.js';
22
+ import { MemoryTool, setGeminiMdFilename } from '../tools/memoryTool.js';
21
23
  import { WebSearchTool } from '../tools/web-search.js';
22
24
  import { GeminiClient } from '../core/client.js';
25
+ import { BaseLlmClient } from '../core/baseLlmClient.js';
23
26
  import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
24
27
  import { GitService } from '../services/gitService.js';
25
- import { getProjectTempDir } from '../utils/paths.js';
26
- import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, StartSessionEvent, } from '../telemetry/index.js';
27
- import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, } from './models.js';
28
+ import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, uiTelemetryService, } from '../telemetry/index.js';
29
+ import { coreEvents } from '../utils/events.js';
30
+ import { tokenLimit } from '../core/tokenLimits.js';
31
+ import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_THINKING_MODE, } from './models.js';
28
32
  import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
29
- import { IdeClient } from '../ide/ide-client.js';
30
- import { StandardFileSystemService, } from '../services/fileSystemService.js';
31
- import { logCliConfiguration, logIdeConnection } from '../telemetry/loggers.js';
32
- import { IdeConnectionEvent, IdeConnectionType } from '../telemetry/types.js';
33
+ import { ideContextStore } from '../ide/ideContext.js';
34
+ import { WriteTodosTool } from '../tools/write-todos.js';
35
+ import { StandardFileSystemService } from '../services/fileSystemService.js';
36
+ import { logRipgrepFallback } from '../telemetry/loggers.js';
37
+ import { RipgrepFallbackEvent } from '../telemetry/types.js';
38
+ import { ModelRouterService } from '../routing/modelRouterService.js';
39
+ import { OutputFormat } from '../output/types.js';
40
+ import { ModelConfigService } from '../services/modelConfigService.js';
41
+ import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
33
42
  import { WorkspaceContext } from '../utils/workspaceContext.js';
34
- export var ApprovalMode;
35
- (function (ApprovalMode) {
36
- ApprovalMode["DEFAULT"] = "default";
37
- ApprovalMode["AUTO_EDIT"] = "autoEdit";
38
- ApprovalMode["YOLO"] = "yolo";
39
- })(ApprovalMode || (ApprovalMode = {}));
40
- // For memory files
41
- export const DEFAULT_MEMORY_FILE_FILTERING_OPTIONS = {
42
- respectGitIgnore: false,
43
- respectGeminiIgnore: true,
44
- };
45
- // For all other files
46
- export const DEFAULT_FILE_FILTERING_OPTIONS = {
47
- respectGitIgnore: true,
48
- respectGeminiIgnore: true,
49
- };
43
+ import { Storage } from './storage.js';
44
+ import { FileExclusions } from '../utils/ignorePatterns.js';
45
+ import { MessageBus } from '../confirmation-bus/message-bus.js';
46
+ import { PolicyEngine } from '../policy/policy-engine.js';
47
+ import { getCodeAssistServer } from '../code_assist/codeAssist.js';
48
+ import { AgentRegistry } from '../agents/registry.js';
49
+ import { setGlobalProxy } from '../utils/fetch.js';
50
+ import { SubagentToolWrapper } from '../agents/subagent-tool-wrapper.js';
51
+ import { getExperiments } from '../code_assist/experiments/experiments.js';
52
+ import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
53
+ import { debugLogger } from '../utils/debugLogger.js';
54
+ import { ApprovalMode } from '../policy/types.js';
55
+ import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from './constants.js';
56
+ import { SimpleExtensionLoader, } from '../utils/extensionLoader.js';
57
+ import { McpClientManager } from '../tools/mcp-client-manager.js';
58
+ export { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, };
59
+ export const DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD = 4_000_000;
60
+ export const DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES = 1000;
50
61
  export class MCPServerConfig {
51
62
  command;
52
63
  args;
@@ -61,9 +72,11 @@ export class MCPServerConfig {
61
72
  description;
62
73
  includeTools;
63
74
  excludeTools;
64
- extensionName;
75
+ extension;
65
76
  oauth;
66
77
  authProviderType;
78
+ targetAudience;
79
+ targetServiceAccount;
67
80
  constructor(
68
81
  // For stdio transport
69
82
  command, args, env, cwd,
@@ -76,9 +89,14 @@ export class MCPServerConfig {
76
89
  // Common
77
90
  timeout, trust,
78
91
  // Metadata
79
- description, includeTools, excludeTools, extensionName,
92
+ description, includeTools, excludeTools, extension,
80
93
  // OAuth configuration
81
- oauth, authProviderType) {
94
+ oauth, authProviderType,
95
+ // Service Account Configuration
96
+ /* targetAudience format: CLIENT_ID.apps.googleusercontent.com */
97
+ targetAudience,
98
+ /* targetServiceAccount format: <service-account-name>@<project-num>.iam.gserviceaccount.com */
99
+ targetServiceAccount) {
82
100
  this.command = command;
83
101
  this.args = args;
84
102
  this.env = env;
@@ -92,30 +110,39 @@ export class MCPServerConfig {
92
110
  this.description = description;
93
111
  this.includeTools = includeTools;
94
112
  this.excludeTools = excludeTools;
95
- this.extensionName = extensionName;
113
+ this.extension = extension;
96
114
  this.oauth = oauth;
97
115
  this.authProviderType = authProviderType;
116
+ this.targetAudience = targetAudience;
117
+ this.targetServiceAccount = targetServiceAccount;
98
118
  }
99
119
  }
100
120
  export var AuthProviderType;
101
121
  (function (AuthProviderType) {
102
122
  AuthProviderType["DYNAMIC_DISCOVERY"] = "dynamic_discovery";
103
123
  AuthProviderType["GOOGLE_CREDENTIALS"] = "google_credentials";
124
+ AuthProviderType["SERVICE_ACCOUNT_IMPERSONATION"] = "service_account_impersonation";
104
125
  })(AuthProviderType || (AuthProviderType = {}));
105
126
  export class Config {
106
127
  toolRegistry;
128
+ mcpClientManager;
129
+ allowedMcpServers;
130
+ blockedMcpServers;
107
131
  promptRegistry;
132
+ agentRegistry;
108
133
  sessionId;
109
134
  fileSystemService;
110
135
  contentGeneratorConfig;
136
+ contentGenerator;
137
+ modelConfigService;
111
138
  embeddingModel;
112
139
  sandbox;
113
140
  targetDir;
114
141
  workspaceContext;
115
142
  debugMode;
116
143
  question;
117
- fullContext;
118
144
  coreTools;
145
+ allowedTools;
119
146
  excludeTools;
120
147
  toolDiscoveryCommand;
121
148
  toolCallCommand;
@@ -123,12 +150,15 @@ export class Config {
123
150
  mcpServers;
124
151
  userMemory;
125
152
  geminiMdFileCount;
153
+ geminiMdFilePaths;
126
154
  approvalMode;
127
155
  showMemoryUsage;
128
156
  accessibility;
129
157
  telemetrySettings;
130
158
  usageStatisticsEnabled;
131
159
  geminiClient;
160
+ baseLlmClient;
161
+ modelRouterService;
132
162
  fileFiltering;
133
163
  fileDiscoveryService = null;
134
164
  gitService = undefined;
@@ -137,28 +167,65 @@ export class Config {
137
167
  cwd;
138
168
  bugCommand;
139
169
  model;
140
- extensionContextFilePaths;
170
+ previewFeatures;
141
171
  noBrowser;
142
- folderTrustFeature;
143
172
  folderTrust;
144
173
  ideMode;
145
- ideClient;
146
174
  inFallbackMode = false;
147
175
  maxSessionTurns;
176
+ listSessions;
177
+ deleteSession;
148
178
  listExtensions;
149
- _extensions;
150
- _blockedMcpServers;
151
- flashFallbackHandler;
179
+ _extensionLoader;
180
+ _enabledExtensions;
181
+ enableExtensionReloading;
182
+ fallbackModelHandler;
152
183
  quotaErrorOccurred = false;
153
184
  summarizeToolOutput;
154
185
  experimentalZedIntegration = false;
155
186
  loadMemoryFromIncludeDirectories = false;
156
- chatCompression;
187
+ importFormat;
188
+ discoveryMaxDirs;
189
+ compressionThreshold;
157
190
  interactive;
191
+ ptyInfo;
158
192
  trustedFolder;
159
- shouldUseNodePtyShell;
193
+ useRipgrep;
194
+ enableInteractiveShell;
160
195
  skipNextSpeakerCheck;
196
+ shellExecutionConfig;
197
+ extensionManagement = true;
198
+ enablePromptCompletion = false;
199
+ truncateToolOutputThreshold;
200
+ truncateToolOutputLines;
201
+ enableToolOutputTruncation;
161
202
  initialized = false;
203
+ storage;
204
+ fileExclusions;
205
+ eventEmitter;
206
+ useSmartEdit;
207
+ useWriteTodos;
208
+ messageBus;
209
+ policyEngine;
210
+ outputSettings;
211
+ useModelRouter;
212
+ initialUseModelRouter;
213
+ disableModelRouterForAuth;
214
+ enableMessageBusIntegration;
215
+ codebaseInvestigatorSettings;
216
+ continueOnFailedApiCall;
217
+ retryFetchErrors;
218
+ enableShellOutputEfficiency;
219
+ fakeResponses;
220
+ recordResponses;
221
+ disableYoloMode;
222
+ pendingIncludeDirectories;
223
+ enableHooks;
224
+ hooks;
225
+ experiments;
226
+ experimentsPromise;
227
+ previewModelFallbackMode = false;
228
+ previewModelBypassMode = false;
162
229
  constructor(params) {
163
230
  this.sessionId = params.sessionId;
164
231
  this.embeddingModel =
@@ -166,18 +233,23 @@ export class Config {
166
233
  this.fileSystemService = new StandardFileSystemService();
167
234
  this.sandbox = params.sandbox;
168
235
  this.targetDir = path.resolve(params.targetDir);
169
- this.workspaceContext = new WorkspaceContext(this.targetDir, params.includeDirectories ?? []);
236
+ this.folderTrust = params.folderTrust ?? false;
237
+ this.workspaceContext = new WorkspaceContext(this.targetDir, []);
238
+ this.pendingIncludeDirectories = params.includeDirectories ?? [];
170
239
  this.debugMode = params.debugMode;
171
240
  this.question = params.question;
172
- this.fullContext = params.fullContext ?? false;
173
241
  this.coreTools = params.coreTools;
242
+ this.allowedTools = params.allowedTools;
174
243
  this.excludeTools = params.excludeTools;
175
244
  this.toolDiscoveryCommand = params.toolDiscoveryCommand;
176
245
  this.toolCallCommand = params.toolCallCommand;
177
246
  this.mcpServerCommand = params.mcpServerCommand;
178
247
  this.mcpServers = params.mcpServers;
248
+ this.allowedMcpServers = params.allowedMcpServers ?? [];
249
+ this.blockedMcpServers = params.blockedMcpServers ?? [];
179
250
  this.userMemory = params.userMemory ?? '';
180
251
  this.geminiMdFileCount = params.geminiMdFileCount ?? 0;
252
+ this.geminiMdFilePaths = params.geminiMdFilePaths ?? [];
181
253
  this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT;
182
254
  this.showMemoryUsage = params.showMemoryUsage ?? false;
183
255
  this.accessibility = params.accessibility ?? {};
@@ -188,12 +260,16 @@ export class Config {
188
260
  otlpProtocol: params.telemetry?.otlpProtocol,
189
261
  logPrompts: params.telemetry?.logPrompts ?? true,
190
262
  outfile: params.telemetry?.outfile,
263
+ useCollector: params.telemetry?.useCollector,
191
264
  };
192
265
  this.usageStatisticsEnabled = params.usageStatisticsEnabled ?? true;
193
266
  this.fileFiltering = {
194
- respectGitIgnore: params.fileFiltering?.respectGitIgnore ?? true,
195
- respectGeminiIgnore: params.fileFiltering?.respectGeminiIgnore ?? true,
267
+ respectGitIgnore: params.fileFiltering?.respectGitIgnore ??
268
+ DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
269
+ respectGeminiIgnore: params.fileFiltering?.respectGeminiIgnore ??
270
+ DEFAULT_FILE_FILTERING_OPTIONS.respectGeminiIgnore,
196
271
  enableRecursiveFileSearch: params.fileFiltering?.enableRecursiveFileSearch ?? true,
272
+ disableFuzzySearch: params.fileFiltering?.disableFuzzySearch ?? false,
197
273
  };
198
274
  this.checkpointing = params.checkpointing ?? false;
199
275
  this.proxy = params.proxy;
@@ -201,33 +277,117 @@ export class Config {
201
277
  this.fileDiscoveryService = params.fileDiscoveryService ?? null;
202
278
  this.bugCommand = params.bugCommand;
203
279
  this.model = params.model;
204
- this.extensionContextFilePaths = params.extensionContextFilePaths ?? [];
280
+ this.previewFeatures = params.previewFeatures ?? undefined;
205
281
  this.maxSessionTurns = params.maxSessionTurns ?? -1;
206
282
  this.experimentalZedIntegration =
207
283
  params.experimentalZedIntegration ?? false;
284
+ this.listSessions = params.listSessions ?? false;
285
+ this.deleteSession = params.deleteSession;
208
286
  this.listExtensions = params.listExtensions ?? false;
209
- this._extensions = params.extensions ?? [];
210
- this._blockedMcpServers = params.blockedMcpServers ?? [];
287
+ this._extensionLoader =
288
+ params.extensionLoader ?? new SimpleExtensionLoader([]);
289
+ this._enabledExtensions = params.enabledExtensions ?? [];
211
290
  this.noBrowser = params.noBrowser ?? false;
212
291
  this.summarizeToolOutput = params.summarizeToolOutput;
213
- this.folderTrustFeature = params.folderTrustFeature ?? false;
214
292
  this.folderTrust = params.folderTrust ?? false;
215
293
  this.ideMode = params.ideMode ?? false;
216
- this.ideClient = IdeClient.getInstance();
217
294
  this.loadMemoryFromIncludeDirectories =
218
295
  params.loadMemoryFromIncludeDirectories ?? false;
219
- this.chatCompression = params.chatCompression;
296
+ this.importFormat = params.importFormat ?? 'tree';
297
+ this.discoveryMaxDirs = params.discoveryMaxDirs ?? 200;
298
+ this.compressionThreshold = params.compressionThreshold;
220
299
  this.interactive = params.interactive ?? false;
300
+ this.ptyInfo = params.ptyInfo ?? 'child_process';
221
301
  this.trustedFolder = params.trustedFolder;
222
- this.shouldUseNodePtyShell = params.shouldUseNodePtyShell ?? false;
223
- this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? false;
302
+ this.useRipgrep = params.useRipgrep ?? true;
303
+ this.enableInteractiveShell = params.enableInteractiveShell ?? false;
304
+ this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? true;
305
+ this.shellExecutionConfig = {
306
+ terminalWidth: params.shellExecutionConfig?.terminalWidth ?? 80,
307
+ terminalHeight: params.shellExecutionConfig?.terminalHeight ?? 24,
308
+ showColor: params.shellExecutionConfig?.showColor ?? false,
309
+ pager: params.shellExecutionConfig?.pager ?? 'cat',
310
+ };
311
+ this.truncateToolOutputThreshold =
312
+ params.truncateToolOutputThreshold ??
313
+ DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD;
314
+ this.truncateToolOutputLines =
315
+ params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
316
+ this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
317
+ this.useSmartEdit = params.useSmartEdit ?? true;
318
+ this.useWriteTodos = params.useWriteTodos ?? true;
319
+ this.initialUseModelRouter = params.useModelRouter ?? false;
320
+ this.useModelRouter = this.initialUseModelRouter;
321
+ this.disableModelRouterForAuth = params.disableModelRouterForAuth ?? [];
322
+ this.enableHooks = params.enableHooks ?? false;
323
+ // Enable MessageBus integration if:
324
+ // 1. Explicitly enabled via setting, OR
325
+ // 2. Hooks are enabled and hooks are configured
326
+ const hasHooks = params.hooks && Object.keys(params.hooks).length > 0;
327
+ const hooksNeedMessageBus = this.enableHooks && hasHooks;
328
+ this.enableMessageBusIntegration =
329
+ params.enableMessageBusIntegration ??
330
+ (hooksNeedMessageBus ? true : false);
331
+ this.codebaseInvestigatorSettings = {
332
+ enabled: params.codebaseInvestigatorSettings?.enabled ?? true,
333
+ maxNumTurns: params.codebaseInvestigatorSettings?.maxNumTurns ?? 10,
334
+ maxTimeMinutes: params.codebaseInvestigatorSettings?.maxTimeMinutes ?? 3,
335
+ thinkingBudget: params.codebaseInvestigatorSettings?.thinkingBudget ??
336
+ DEFAULT_THINKING_MODE,
337
+ model: params.codebaseInvestigatorSettings?.model ?? DEFAULT_GEMINI_MODEL,
338
+ };
339
+ this.continueOnFailedApiCall = params.continueOnFailedApiCall ?? true;
340
+ this.enableShellOutputEfficiency =
341
+ params.enableShellOutputEfficiency ?? true;
342
+ this.extensionManagement = params.extensionManagement ?? true;
343
+ this.enableExtensionReloading = params.enableExtensionReloading ?? false;
344
+ this.storage = new Storage(this.targetDir);
345
+ this.fakeResponses = params.fakeResponses;
346
+ this.recordResponses = params.recordResponses;
347
+ this.enablePromptCompletion = params.enablePromptCompletion ?? false;
348
+ this.fileExclusions = new FileExclusions(this);
349
+ this.eventEmitter = params.eventEmitter;
350
+ this.policyEngine = new PolicyEngine(params.policyEngineConfig);
351
+ this.messageBus = new MessageBus(this.policyEngine, this.debugMode);
352
+ this.outputSettings = {
353
+ format: params.output?.format ?? OutputFormat.TEXT,
354
+ };
355
+ this.retryFetchErrors = params.retryFetchErrors ?? false;
356
+ this.disableYoloMode = params.disableYoloMode ?? false;
357
+ this.hooks = params.hooks;
358
+ this.experiments = params.experiments;
224
359
  if (params.contextFileName) {
225
360
  setGeminiMdFilename(params.contextFileName);
226
361
  }
227
362
  if (this.telemetrySettings.enabled) {
228
363
  initializeTelemetry(this);
229
364
  }
230
- logCliConfiguration(this, new StartSessionEvent(this));
365
+ const proxy = this.getProxy();
366
+ if (proxy) {
367
+ try {
368
+ setGlobalProxy(proxy);
369
+ }
370
+ catch (error) {
371
+ coreEvents.emitFeedback('error', 'Invalid proxy configuration detected. Check debug drawer for more details (F12)', error);
372
+ }
373
+ }
374
+ this.geminiClient = new GeminiClient(this);
375
+ this.modelRouterService = new ModelRouterService(this);
376
+ // HACK: The settings loading logic doesn't currently merge the default
377
+ // generation config with the user's settings. This means if a user provides
378
+ // any `generation` settings (e.g., just `overrides`), the default `aliases`
379
+ // are lost. This hack manually merges the default aliases back in if they
380
+ // are missing from the user's config.
381
+ // TODO(12593): Fix the settings loading logic to properly merge defaults and
382
+ // remove this hack.
383
+ let modelConfigServiceConfig = params.modelConfigServiceConfig;
384
+ if (modelConfigServiceConfig && !modelConfigServiceConfig.aliases) {
385
+ modelConfigServiceConfig = {
386
+ ...modelConfigServiceConfig,
387
+ aliases: DEFAULT_MODEL_CONFIGS.aliases,
388
+ };
389
+ }
390
+ this.modelConfigService = new ModelConfigService(modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS);
231
391
  }
232
392
  /**
233
393
  * Must only be called once, throws if called again.
@@ -243,35 +403,83 @@ export class Config {
243
403
  await this.getGitService();
244
404
  }
245
405
  this.promptRegistry = new PromptRegistry();
406
+ this.agentRegistry = new AgentRegistry(this);
407
+ await this.agentRegistry.initialize();
246
408
  this.toolRegistry = await this.createToolRegistry();
409
+ this.mcpClientManager = new McpClientManager(this.toolRegistry, this, this.eventEmitter);
410
+ await Promise.all([
411
+ await this.mcpClientManager.startConfiguredMcpServers(),
412
+ await this.getExtensionLoader().start(this),
413
+ ]);
414
+ await this.geminiClient.initialize();
415
+ }
416
+ getContentGenerator() {
417
+ return this.contentGenerator;
247
418
  }
248
419
  async refreshAuth(authMethod) {
249
- // Save the current conversation history before creating a new client
250
- let existingHistory = [];
251
- if (this.geminiClient && this.geminiClient.isInitialized()) {
252
- existingHistory = this.geminiClient.getHistory();
420
+ this.useModelRouter = this.initialUseModelRouter;
421
+ if (this.disableModelRouterForAuth?.includes(authMethod)) {
422
+ this.useModelRouter = false;
423
+ if (this.model === DEFAULT_GEMINI_MODEL_AUTO) {
424
+ this.model = DEFAULT_GEMINI_MODEL;
425
+ }
253
426
  }
254
- // Create new content generator config
255
- const newContentGeneratorConfig = createContentGeneratorConfig(this, authMethod);
256
- // Create and initialize new client in local variable first
257
- const newGeminiClient = new GeminiClient(this);
258
- await newGeminiClient.initialize(newContentGeneratorConfig);
259
427
  // Vertex and Genai have incompatible encryption and sending history with
260
- // throughtSignature from Genai to Vertex will fail, we need to strip them
261
- const fromGenaiToVertex = this.contentGeneratorConfig?.authType === AuthType.USE_GEMINI &&
262
- authMethod === AuthType.LOGIN_WITH_GOOGLE;
428
+ // thoughtSignature from Genai to Vertex will fail, we need to strip them
429
+ if (this.contentGeneratorConfig?.authType === AuthType.USE_GEMINI &&
430
+ authMethod !== AuthType.USE_GEMINI) {
431
+ // Restore the conversation history to the new client
432
+ this.geminiClient.stripThoughtsFromHistory();
433
+ }
434
+ const newContentGeneratorConfig = await createContentGeneratorConfig(this, authMethod);
435
+ this.contentGenerator = await createContentGenerator(newContentGeneratorConfig, this, this.getSessionId());
263
436
  // Only assign to instance properties after successful initialization
264
437
  this.contentGeneratorConfig = newContentGeneratorConfig;
265
- this.geminiClient = newGeminiClient;
266
- // Restore the conversation history to the new client
267
- if (existingHistory.length > 0) {
268
- this.geminiClient.setHistory(existingHistory, {
269
- stripThoughts: fromGenaiToVertex,
438
+ // Initialize BaseLlmClient now that the ContentGenerator is available
439
+ this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
440
+ const previewFeatures = this.getPreviewFeatures();
441
+ const codeAssistServer = getCodeAssistServer(this);
442
+ if (codeAssistServer) {
443
+ this.experimentsPromise = getExperiments(codeAssistServer)
444
+ .then((experiments) => {
445
+ this.setExperiments(experiments);
446
+ // If preview features have not been set and the user authenticated through Google, we enable preview based on remote config only if it's true
447
+ if (previewFeatures === undefined) {
448
+ const remotePreviewFeatures = experiments.flags[ExperimentFlags.ENABLE_PREVIEW]?.boolValue;
449
+ if (remotePreviewFeatures === true) {
450
+ this.setPreviewFeatures(remotePreviewFeatures);
451
+ }
452
+ }
453
+ })
454
+ .catch((e) => {
455
+ debugLogger.error('Failed to fetch experiments', e);
270
456
  });
271
457
  }
458
+ else {
459
+ this.experiments = undefined;
460
+ this.experimentsPromise = undefined;
461
+ }
272
462
  // Reset the session flag since we're explicitly changing auth and using default model
273
463
  this.inFallbackMode = false;
274
464
  }
465
+ getUserTier() {
466
+ return this.contentGenerator?.userTier;
467
+ }
468
+ /**
469
+ * Provides access to the BaseLlmClient for stateless LLM operations.
470
+ */
471
+ getBaseLlmClient() {
472
+ if (!this.baseLlmClient) {
473
+ // Handle cases where initialization might be deferred or authentication failed
474
+ if (this.contentGenerator) {
475
+ this.baseLlmClient = new BaseLlmClient(this.getContentGenerator(), this);
476
+ }
477
+ else {
478
+ throw new Error('BaseLlmClient not initialized. Ensure authentication has occurred and ContentGenerator is ready.');
479
+ }
480
+ }
481
+ return this.baseLlmClient;
482
+ }
275
483
  getSessionId() {
276
484
  return this.sessionId;
277
485
  }
@@ -281,16 +489,24 @@ export class Config {
281
489
  shouldLoadMemoryFromIncludeDirectories() {
282
490
  return this.loadMemoryFromIncludeDirectories;
283
491
  }
492
+ getImportFormat() {
493
+ return this.importFormat;
494
+ }
495
+ getDiscoveryMaxDirs() {
496
+ return this.discoveryMaxDirs;
497
+ }
284
498
  getContentGeneratorConfig() {
285
499
  return this.contentGeneratorConfig;
286
500
  }
287
501
  getModel() {
288
- return this.contentGeneratorConfig?.model || this.model;
502
+ return this.model;
289
503
  }
290
504
  setModel(newModel) {
291
- if (this.contentGeneratorConfig) {
292
- this.contentGeneratorConfig.model = newModel;
505
+ if (this.model !== newModel || this.inFallbackMode) {
506
+ this.model = newModel;
507
+ coreEvents.emitModelChanged(newModel);
293
508
  }
509
+ this.setFallbackMode(false);
294
510
  }
295
511
  isInFallbackMode() {
296
512
  return this.inFallbackMode;
@@ -298,10 +514,23 @@ export class Config {
298
514
  setFallbackMode(active) {
299
515
  this.inFallbackMode = active;
300
516
  }
301
- setFlashFallbackHandler(handler) {
302
- console.log(`[Config] Registering flashFallbackHandler`);
303
- this.flashFallbackHandler = handler;
304
- console.log(`[Config] FlashFallbackHandler registered successfully`);
517
+ setFallbackModelHandler(handler) {
518
+ this.fallbackModelHandler = handler;
519
+ }
520
+ getFallbackModelHandler() {
521
+ return this.fallbackModelHandler;
522
+ }
523
+ isPreviewModelFallbackMode() {
524
+ return this.previewModelFallbackMode;
525
+ }
526
+ setPreviewModelFallbackMode(active) {
527
+ this.previewModelFallbackMode = active;
528
+ }
529
+ isPreviewModelBypassMode() {
530
+ return this.previewModelBypassMode;
531
+ }
532
+ setPreviewModelBypassMode(active) {
533
+ this.previewModelBypassMode = active;
305
534
  }
306
535
  getMaxSessionTurns() {
307
536
  return this.maxSessionTurns;
@@ -335,6 +564,9 @@ export class Config {
335
564
  getWorkspaceContext() {
336
565
  return this.workspaceContext;
337
566
  }
567
+ getAgentRegistry() {
568
+ return this.agentRegistry;
569
+ }
338
570
  getToolRegistry() {
339
571
  return this.toolRegistry;
340
572
  }
@@ -347,14 +579,35 @@ export class Config {
347
579
  getQuestion() {
348
580
  return this.question;
349
581
  }
350
- getFullContext() {
351
- return this.fullContext;
582
+ getPreviewFeatures() {
583
+ return this.previewFeatures;
584
+ }
585
+ setPreviewFeatures(previewFeatures) {
586
+ this.previewFeatures = previewFeatures;
352
587
  }
353
588
  getCoreTools() {
354
589
  return this.coreTools;
355
590
  }
591
+ getAllowedTools() {
592
+ return this.allowedTools;
593
+ }
594
+ /**
595
+ * All the excluded tools from static configuration, loaded extensions, or
596
+ * other sources.
597
+ *
598
+ * May change over time.
599
+ */
356
600
  getExcludeTools() {
357
- return this.excludeTools;
601
+ const excludeToolsSet = new Set([...(this.excludeTools ?? [])]);
602
+ for (const extension of this.getExtensionLoader().getExtensions()) {
603
+ if (!extension.isActive) {
604
+ continue;
605
+ }
606
+ for (const tool of extension.excludeTools || []) {
607
+ excludeToolsSet.add(tool);
608
+ }
609
+ }
610
+ return excludeToolsSet;
358
611
  }
359
612
  getToolDiscoveryCommand() {
360
613
  return this.toolDiscoveryCommand;
@@ -365,9 +618,26 @@ export class Config {
365
618
  getMcpServerCommand() {
366
619
  return this.mcpServerCommand;
367
620
  }
621
+ /**
622
+ * The user configured MCP servers (via gemini settings files).
623
+ *
624
+ * Does NOT include mcp servers configured by extensions.
625
+ */
368
626
  getMcpServers() {
369
627
  return this.mcpServers;
370
628
  }
629
+ getMcpClientManager() {
630
+ return this.mcpClientManager;
631
+ }
632
+ getAllowedMcpServers() {
633
+ return this.allowedMcpServers;
634
+ }
635
+ getBlockedMcpServers() {
636
+ return this.blockedMcpServers;
637
+ }
638
+ setMcpServers(mcpServers) {
639
+ this.mcpServers = mcpServers;
640
+ }
371
641
  getUserMemory() {
372
642
  return this.userMemory;
373
643
  }
@@ -380,12 +650,30 @@ export class Config {
380
650
  setGeminiMdFileCount(count) {
381
651
  this.geminiMdFileCount = count;
382
652
  }
653
+ getGeminiMdFilePaths() {
654
+ return this.geminiMdFilePaths;
655
+ }
656
+ setGeminiMdFilePaths(paths) {
657
+ this.geminiMdFilePaths = paths;
658
+ }
383
659
  getApprovalMode() {
384
660
  return this.approvalMode;
385
661
  }
386
662
  setApprovalMode(mode) {
663
+ if (!this.isTrustedFolder() && mode !== ApprovalMode.DEFAULT) {
664
+ throw new Error('Cannot enable privileged approval modes in an untrusted folder.');
665
+ }
387
666
  this.approvalMode = mode;
388
667
  }
668
+ isYoloModeDisabled() {
669
+ return this.disableYoloMode || !this.isTrustedFolder();
670
+ }
671
+ getPendingIncludeDirectories() {
672
+ return this.pendingIncludeDirectories;
673
+ }
674
+ clearPendingIncludeDirectories() {
675
+ this.pendingIncludeDirectories = [];
676
+ }
389
677
  getShowMemoryUsage() {
390
678
  return this.showMemoryUsage;
391
679
  }
@@ -410,18 +698,31 @@ export class Config {
410
698
  getTelemetryOutfile() {
411
699
  return this.telemetrySettings.outfile;
412
700
  }
701
+ getTelemetryUseCollector() {
702
+ return this.telemetrySettings.useCollector ?? false;
703
+ }
413
704
  getGeminiClient() {
414
705
  return this.geminiClient;
415
706
  }
416
- getGeminiDir() {
417
- return path.join(this.targetDir, GEMINI_DIR);
707
+ /**
708
+ * Updates the system instruction with the latest user memory.
709
+ * Whenever the user memory (GEMINI.md files) is updated.
710
+ */
711
+ async updateSystemInstructionIfInitialized() {
712
+ const geminiClient = this.getGeminiClient();
713
+ if (geminiClient?.isInitialized()) {
714
+ await geminiClient.updateSystemInstruction();
715
+ }
418
716
  }
419
- getProjectTempDir() {
420
- return getProjectTempDir(this.getProjectRoot());
717
+ getModelRouterService() {
718
+ return this.modelRouterService;
421
719
  }
422
720
  getEnableRecursiveFileSearch() {
423
721
  return this.fileFiltering.enableRecursiveFileSearch;
424
722
  }
723
+ getFileFilteringDisableFuzzySearch() {
724
+ return this.fileFiltering.disableFuzzySearch;
725
+ }
425
726
  getFileFilteringRespectGitIgnore() {
426
727
  return this.fileFiltering.respectGitIgnore;
427
728
  }
@@ -434,6 +735,20 @@ export class Config {
434
735
  respectGeminiIgnore: this.fileFiltering.respectGeminiIgnore,
435
736
  };
436
737
  }
738
+ /**
739
+ * Gets custom file exclusion patterns from configuration.
740
+ * TODO: This is a placeholder implementation. In the future, this could
741
+ * read from settings files, CLI arguments, or environment variables.
742
+ */
743
+ getCustomExcludes() {
744
+ // Placeholder implementation - returns empty array for now
745
+ // Future implementation could read from:
746
+ // - User settings file
747
+ // - Project-specific configuration
748
+ // - Environment variables
749
+ // - CLI arguments
750
+ return [];
751
+ }
437
752
  getCheckpointingEnabled() {
438
753
  return this.checkpointing;
439
754
  }
@@ -455,20 +770,34 @@ export class Config {
455
770
  getUsageStatisticsEnabled() {
456
771
  return this.usageStatisticsEnabled;
457
772
  }
458
- getExtensionContextFilePaths() {
459
- return this.extensionContextFilePaths;
460
- }
461
773
  getExperimentalZedIntegration() {
462
774
  return this.experimentalZedIntegration;
463
775
  }
464
776
  getListExtensions() {
465
777
  return this.listExtensions;
466
778
  }
779
+ getListSessions() {
780
+ return this.listSessions;
781
+ }
782
+ getDeleteSession() {
783
+ return this.deleteSession;
784
+ }
785
+ getExtensionManagement() {
786
+ return this.extensionManagement;
787
+ }
467
788
  getExtensions() {
468
- return this._extensions;
789
+ return this._extensionLoader.getExtensions();
469
790
  }
470
- getBlockedMcpServers() {
471
- return this._blockedMcpServers;
791
+ getExtensionLoader() {
792
+ return this._extensionLoader;
793
+ }
794
+ // The list of explicitly enabled extensions, if any were given, may contain
795
+ // the string "none".
796
+ getEnabledExtensions() {
797
+ return this._enabledExtensions;
798
+ }
799
+ getEnableExtensionReloading() {
800
+ return this.enableExtensionReloading;
472
801
  }
473
802
  getNoBrowser() {
474
803
  return this.noBrowser;
@@ -482,31 +811,36 @@ export class Config {
482
811
  getIdeMode() {
483
812
  return this.ideMode;
484
813
  }
485
- getFolderTrustFeature() {
486
- return this.folderTrustFeature;
487
- }
814
+ /**
815
+ * Returns 'true' if the folder trust feature is enabled.
816
+ */
488
817
  getFolderTrust() {
489
818
  return this.folderTrust;
490
819
  }
820
+ /**
821
+ * Returns 'true' if the workspace is considered "trusted".
822
+ * 'false' for untrusted.
823
+ */
491
824
  isTrustedFolder() {
492
- return this.trustedFolder;
825
+ // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
826
+ // when the file based trust value is unavailable, since it is mainly used
827
+ // in the initialization for trust dialogs, etc. Here we return true since
828
+ // config.isTrustedFolder() is used for the main business logic of blocking
829
+ // tool calls etc in the rest of the application.
830
+ //
831
+ // Default value is true since we load with trusted settings to avoid
832
+ // restarts in the more common path. If the user chooses to mark the folder
833
+ // as untrusted, the CLI will restart and we will have the trust value
834
+ // reloaded.
835
+ const context = ideContextStore.get();
836
+ if (context?.workspaceState?.isTrusted !== undefined) {
837
+ return context.workspaceState.isTrusted;
838
+ }
839
+ return this.trustedFolder ?? true;
493
840
  }
494
841
  setIdeMode(value) {
495
842
  this.ideMode = value;
496
843
  }
497
- async setIdeModeAndSyncConnection(value) {
498
- this.ideMode = value;
499
- if (value) {
500
- await this.ideClient.connect();
501
- logIdeConnection(this, new IdeConnectionEvent(IdeConnectionType.SESSION));
502
- }
503
- else {
504
- await this.ideClient.disconnect();
505
- }
506
- }
507
- getIdeClient() {
508
- return this.ideClient;
509
- }
510
844
  /**
511
845
  * Get the current FileSystemService
512
846
  */
@@ -519,66 +853,280 @@ export class Config {
519
853
  setFileSystemService(fileSystemService) {
520
854
  this.fileSystemService = fileSystemService;
521
855
  }
522
- getChatCompression() {
523
- return this.chatCompression;
856
+ async getCompressionThreshold() {
857
+ if (this.compressionThreshold) {
858
+ return this.compressionThreshold;
859
+ }
860
+ await this.ensureExperimentsLoaded();
861
+ const remoteThreshold = this.experiments?.flags[ExperimentFlags.CONTEXT_COMPRESSION_THRESHOLD]
862
+ ?.floatValue;
863
+ if (remoteThreshold === 0) {
864
+ return undefined;
865
+ }
866
+ return remoteThreshold;
867
+ }
868
+ async getUserCaching() {
869
+ await this.ensureExperimentsLoaded();
870
+ return this.experiments?.flags[ExperimentFlags.USER_CACHING]?.boolValue;
871
+ }
872
+ async getBannerTextNoCapacityIssues() {
873
+ await this.ensureExperimentsLoaded();
874
+ return (this.experiments?.flags[ExperimentFlags.BANNER_TEXT_NO_CAPACITY_ISSUES]
875
+ ?.stringValue ?? '');
876
+ }
877
+ async getBannerTextCapacityIssues() {
878
+ await this.ensureExperimentsLoaded();
879
+ return (this.experiments?.flags[ExperimentFlags.BANNER_TEXT_CAPACITY_ISSUES]
880
+ ?.stringValue ?? '');
881
+ }
882
+ async ensureExperimentsLoaded() {
883
+ if (!this.experimentsPromise) {
884
+ return;
885
+ }
886
+ try {
887
+ await this.experimentsPromise;
888
+ }
889
+ catch (e) {
890
+ debugLogger.debug('Failed to fetch experiments', e);
891
+ }
892
+ }
893
+ isInteractiveShellEnabled() {
894
+ return (this.interactive &&
895
+ this.ptyInfo !== 'child_process' &&
896
+ this.enableInteractiveShell);
524
897
  }
525
898
  isInteractive() {
526
899
  return this.interactive;
527
900
  }
528
- getShouldUseNodePtyShell() {
529
- return this.shouldUseNodePtyShell;
901
+ getUseRipgrep() {
902
+ return this.useRipgrep;
903
+ }
904
+ getEnableInteractiveShell() {
905
+ return this.enableInteractiveShell;
530
906
  }
531
907
  getSkipNextSpeakerCheck() {
532
908
  return this.skipNextSpeakerCheck;
533
909
  }
910
+ getContinueOnFailedApiCall() {
911
+ return this.continueOnFailedApiCall;
912
+ }
913
+ getRetryFetchErrors() {
914
+ return this.retryFetchErrors;
915
+ }
916
+ getEnableShellOutputEfficiency() {
917
+ return this.enableShellOutputEfficiency;
918
+ }
919
+ getShellExecutionConfig() {
920
+ return this.shellExecutionConfig;
921
+ }
922
+ setShellExecutionConfig(config) {
923
+ this.shellExecutionConfig = {
924
+ terminalWidth: config.terminalWidth ?? this.shellExecutionConfig.terminalWidth,
925
+ terminalHeight: config.terminalHeight ?? this.shellExecutionConfig.terminalHeight,
926
+ showColor: config.showColor ?? this.shellExecutionConfig.showColor,
927
+ pager: config.pager ?? this.shellExecutionConfig.pager,
928
+ };
929
+ }
930
+ getScreenReader() {
931
+ return this.accessibility.screenReader ?? false;
932
+ }
933
+ getEnablePromptCompletion() {
934
+ return this.enablePromptCompletion;
935
+ }
936
+ getEnableToolOutputTruncation() {
937
+ return this.enableToolOutputTruncation;
938
+ }
939
+ getTruncateToolOutputThreshold() {
940
+ return Math.min(
941
+ // Estimate remaining context window in characters (1 token ~= 4 chars).
942
+ 4 *
943
+ (tokenLimit(this.model) - uiTelemetryService.getLastPromptTokenCount()), this.truncateToolOutputThreshold);
944
+ }
945
+ getTruncateToolOutputLines() {
946
+ return this.truncateToolOutputLines;
947
+ }
948
+ getUseSmartEdit() {
949
+ return this.useSmartEdit;
950
+ }
951
+ getUseWriteTodos() {
952
+ return this.useWriteTodos;
953
+ }
954
+ getOutputFormat() {
955
+ return this.outputSettings?.format
956
+ ? this.outputSettings.format
957
+ : OutputFormat.TEXT;
958
+ }
959
+ getUseModelRouter() {
960
+ return this.useModelRouter;
961
+ }
534
962
  async getGitService() {
535
963
  if (!this.gitService) {
536
- this.gitService = new GitService(this.targetDir);
964
+ this.gitService = new GitService(this.targetDir, this.storage);
537
965
  await this.gitService.initialize();
538
966
  }
539
967
  return this.gitService;
540
968
  }
969
+ getFileExclusions() {
970
+ return this.fileExclusions;
971
+ }
972
+ getMessageBus() {
973
+ return this.messageBus;
974
+ }
975
+ getPolicyEngine() {
976
+ return this.policyEngine;
977
+ }
978
+ getEnableMessageBusIntegration() {
979
+ return this.enableMessageBusIntegration;
980
+ }
981
+ getEnableHooks() {
982
+ return this.enableHooks;
983
+ }
984
+ getCodebaseInvestigatorSettings() {
985
+ return this.codebaseInvestigatorSettings;
986
+ }
541
987
  async createToolRegistry() {
542
988
  const registry = new ToolRegistry(this);
989
+ // Set message bus on tool registry before discovery so MCP tools can access it
990
+ if (this.getEnableMessageBusIntegration()) {
991
+ registry.setMessageBus(this.messageBus);
992
+ }
543
993
  // helper to create & register core tools that are enabled
544
994
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
545
995
  const registerCoreTool = (ToolClass, ...args) => {
546
996
  const className = ToolClass.name;
547
997
  const toolName = ToolClass.Name || className;
548
998
  const coreTools = this.getCoreTools();
549
- const excludeTools = this.getExcludeTools();
550
- let isEnabled = false;
551
- if (coreTools === undefined) {
552
- isEnabled = true;
553
- }
554
- else {
555
- isEnabled = coreTools.some((tool) => tool === className ||
556
- tool === toolName ||
557
- tool.startsWith(`${className}(`) ||
558
- tool.startsWith(`${toolName}(`));
559
- }
560
- if (excludeTools?.includes(className) ||
561
- excludeTools?.includes(toolName)) {
562
- isEnabled = false;
999
+ // On some platforms, the className can be minified to _ClassName.
1000
+ const normalizedClassName = className.replace(/^_+/, '');
1001
+ let isEnabled = true; // Enabled by default if coreTools is not set.
1002
+ if (coreTools) {
1003
+ isEnabled = coreTools.some((tool) => tool === toolName ||
1004
+ tool === normalizedClassName ||
1005
+ tool.startsWith(`${toolName}(`) ||
1006
+ tool.startsWith(`${normalizedClassName}(`));
563
1007
  }
564
1008
  if (isEnabled) {
565
- registry.registerTool(new ToolClass(...args));
1009
+ // Pass message bus to tools when feature flag is enabled
1010
+ // This first implementation is only focused on the general case of
1011
+ // the tool registry.
1012
+ const messageBusEnabled = this.getEnableMessageBusIntegration();
1013
+ const toolArgs = messageBusEnabled
1014
+ ? [...args, this.getMessageBus()]
1015
+ : args;
1016
+ registry.registerTool(new ToolClass(...toolArgs));
566
1017
  }
567
1018
  };
568
1019
  registerCoreTool(LSTool, this);
569
1020
  registerCoreTool(ReadFileTool, this);
570
- registerCoreTool(GrepTool, this);
1021
+ if (this.getUseRipgrep()) {
1022
+ let useRipgrep = false;
1023
+ let errorString = undefined;
1024
+ try {
1025
+ useRipgrep = await canUseRipgrep();
1026
+ }
1027
+ catch (error) {
1028
+ errorString = String(error);
1029
+ }
1030
+ if (useRipgrep) {
1031
+ registerCoreTool(RipGrepTool, this);
1032
+ }
1033
+ else {
1034
+ logRipgrepFallback(this, new RipgrepFallbackEvent(errorString));
1035
+ registerCoreTool(GrepTool, this);
1036
+ }
1037
+ }
1038
+ else {
1039
+ registerCoreTool(GrepTool, this);
1040
+ }
571
1041
  registerCoreTool(GlobTool, this);
572
- registerCoreTool(EditTool, this);
1042
+ if (this.getUseSmartEdit()) {
1043
+ registerCoreTool(SmartEditTool, this);
1044
+ }
1045
+ else {
1046
+ registerCoreTool(EditTool, this);
1047
+ }
573
1048
  registerCoreTool(WriteFileTool, this);
574
1049
  registerCoreTool(WebFetchTool, this);
575
- registerCoreTool(ReadManyFilesTool, this);
576
1050
  registerCoreTool(ShellTool, this);
577
1051
  registerCoreTool(MemoryTool);
578
1052
  registerCoreTool(WebSearchTool, this);
1053
+ if (this.getUseWriteTodos()) {
1054
+ registerCoreTool(WriteTodosTool, this);
1055
+ }
1056
+ // Register Subagents as Tools
1057
+ if (this.getCodebaseInvestigatorSettings().enabled) {
1058
+ const definition = this.agentRegistry.getDefinition('codebase_investigator');
1059
+ if (definition) {
1060
+ // We must respect the main allowed/exclude lists for agents too.
1061
+ const allowedTools = this.getAllowedTools();
1062
+ const isAllowed = !allowedTools || allowedTools.includes(definition.name);
1063
+ if (isAllowed) {
1064
+ const messageBusEnabled = this.getEnableMessageBusIntegration();
1065
+ const wrapper = new SubagentToolWrapper(definition, this, messageBusEnabled ? this.getMessageBus() : undefined);
1066
+ registry.registerTool(wrapper);
1067
+ }
1068
+ }
1069
+ }
579
1070
  await registry.discoverAllTools();
1071
+ registry.sortTools();
580
1072
  return registry;
581
1073
  }
1074
+ /**
1075
+ * Get hooks configuration
1076
+ */
1077
+ getHooks() {
1078
+ return this.hooks;
1079
+ }
1080
+ /**
1081
+ * Get experiments configuration
1082
+ */
1083
+ getExperiments() {
1084
+ return this.experiments;
1085
+ }
1086
+ /**
1087
+ * Set experiments configuration
1088
+ */
1089
+ setExperiments(experiments) {
1090
+ this.experiments = experiments;
1091
+ const flagSummaries = Object.entries(experiments.flags ?? {})
1092
+ .sort(([a], [b]) => a.localeCompare(b))
1093
+ .map(([flagId, flag]) => {
1094
+ const summary = { flagId };
1095
+ if (flag.boolValue !== undefined) {
1096
+ summary['boolValue'] = flag.boolValue;
1097
+ }
1098
+ if (flag.floatValue !== undefined) {
1099
+ summary['floatValue'] = flag.floatValue;
1100
+ }
1101
+ if (flag.intValue !== undefined) {
1102
+ summary['intValue'] = flag.intValue;
1103
+ }
1104
+ if (flag.stringValue !== undefined) {
1105
+ summary['stringValue'] = flag.stringValue;
1106
+ }
1107
+ const int32Length = flag.int32ListValue?.values?.length ?? 0;
1108
+ if (int32Length > 0) {
1109
+ summary['int32ListLength'] = int32Length;
1110
+ }
1111
+ const stringListLength = flag.stringListValue?.values?.length ?? 0;
1112
+ if (stringListLength > 0) {
1113
+ summary['stringListLength'] = stringListLength;
1114
+ }
1115
+ return summary;
1116
+ });
1117
+ const summary = {
1118
+ experimentIds: experiments.experimentIds ?? [],
1119
+ flags: flagSummaries,
1120
+ };
1121
+ const summaryString = inspect(summary, {
1122
+ depth: null,
1123
+ maxArrayLength: null,
1124
+ maxStringLength: null,
1125
+ breakLength: 80,
1126
+ compact: false,
1127
+ });
1128
+ debugLogger.debug('Experiments loaded', summaryString);
1129
+ }
582
1130
  }
583
1131
  // Export model constants for use in CLI
584
1132
  export { DEFAULT_GEMINI_FLASH_MODEL };