@office-ai/aioncli-core 0.2.2 → 0.8.1

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 (758) hide show
  1. package/dist/index.d.ts +10 -3
  2. package/dist/index.js +10 -3
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/agents/codebase-investigator.d.ts +11 -0
  5. package/dist/src/agents/codebase-investigator.js +73 -0
  6. package/dist/src/agents/codebase-investigator.js.map +1 -0
  7. package/dist/src/agents/executor.d.ts +88 -0
  8. package/dist/src/agents/executor.js +417 -0
  9. package/dist/src/agents/executor.js.map +1 -0
  10. package/dist/src/agents/executor.test.js +419 -0
  11. package/dist/src/agents/executor.test.js.map +1 -0
  12. package/dist/src/agents/invocation.d.ts +43 -0
  13. package/dist/src/agents/invocation.js +100 -0
  14. package/dist/src/agents/invocation.js.map +1 -0
  15. package/dist/src/agents/invocation.test.js +206 -0
  16. package/dist/src/agents/invocation.test.js.map +1 -0
  17. package/dist/src/agents/registry.d.ts +35 -0
  18. package/dist/src/agents/registry.js +58 -0
  19. package/dist/src/agents/registry.js.map +1 -0
  20. package/dist/src/agents/registry.test.js +146 -0
  21. package/dist/src/agents/registry.test.js.map +1 -0
  22. package/dist/src/agents/schema-utils.d.ts +39 -0
  23. package/dist/src/agents/schema-utils.js +57 -0
  24. package/dist/src/agents/schema-utils.js.map +1 -0
  25. package/dist/src/agents/schema-utils.test.d.ts +6 -0
  26. package/dist/src/agents/schema-utils.test.js +144 -0
  27. package/dist/src/agents/schema-utils.test.js.map +1 -0
  28. package/dist/src/agents/subagent-tool-wrapper.d.ts +36 -0
  29. package/dist/src/agents/subagent-tool-wrapper.js +47 -0
  30. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
  31. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +6 -0
  32. package/dist/src/agents/subagent-tool-wrapper.test.js +105 -0
  33. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
  34. package/dist/src/agents/types.d.ts +116 -0
  35. package/dist/src/agents/types.js +17 -0
  36. package/dist/src/agents/types.js.map +1 -0
  37. package/dist/src/agents/utils.d.ts +15 -0
  38. package/dist/src/agents/utils.js +29 -0
  39. package/dist/src/agents/utils.js.map +1 -0
  40. package/dist/src/agents/utils.test.d.ts +6 -0
  41. package/dist/src/agents/utils.test.js +87 -0
  42. package/dist/src/agents/utils.test.js.map +1 -0
  43. package/dist/src/code_assist/codeAssist.d.ts +6 -3
  44. package/dist/src/code_assist/codeAssist.js +12 -0
  45. package/dist/src/code_assist/codeAssist.js.map +1 -1
  46. package/dist/src/code_assist/converter.d.ts +4 -1
  47. package/dist/src/code_assist/converter.js +38 -5
  48. package/dist/src/code_assist/converter.js.map +1 -1
  49. package/dist/src/code_assist/converter.test.js +93 -0
  50. package/dist/src/code_assist/converter.test.js.map +1 -1
  51. package/dist/src/code_assist/oauth-credential-storage.d.ts +25 -0
  52. package/dist/src/code_assist/oauth-credential-storage.js +109 -0
  53. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
  54. package/dist/src/code_assist/oauth-credential-storage.test.d.ts +6 -0
  55. package/dist/src/code_assist/oauth-credential-storage.test.js +136 -0
  56. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -0
  57. package/dist/src/code_assist/oauth2.d.ts +1 -1
  58. package/dist/src/code_assist/oauth2.js +107 -48
  59. package/dist/src/code_assist/oauth2.js.map +1 -1
  60. package/dist/src/code_assist/oauth2.test.js +735 -343
  61. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  62. package/dist/src/code_assist/server.d.ts +4 -4
  63. package/dist/src/code_assist/server.js +25 -2
  64. package/dist/src/code_assist/server.js.map +1 -1
  65. package/dist/src/code_assist/server.test.js +25 -0
  66. package/dist/src/code_assist/server.test.js.map +1 -1
  67. package/dist/src/code_assist/setup.d.ts +1 -1
  68. package/dist/src/code_assist/setup.js +1 -1
  69. package/dist/src/code_assist/setup.js.map +1 -1
  70. package/dist/src/code_assist/setup.test.js.map +1 -1
  71. package/dist/src/code_assist/types.d.ts +17 -2
  72. package/dist/src/config/config.d.ts +121 -25
  73. package/dist/src/config/config.js +298 -87
  74. package/dist/src/config/config.js.map +1 -1
  75. package/dist/src/config/config.test.js +370 -131
  76. package/dist/src/config/config.test.js.map +1 -1
  77. package/dist/src/config/constants.d.ts +11 -0
  78. package/dist/src/config/constants.js +16 -0
  79. package/dist/src/config/constants.js.map +1 -0
  80. package/dist/src/config/models.d.ts +16 -0
  81. package/dist/src/config/models.js +29 -0
  82. package/dist/src/config/models.js.map +1 -1
  83. package/dist/src/config/models.test.d.ts +6 -0
  84. package/dist/src/config/models.test.js +55 -0
  85. package/dist/src/config/models.test.js.map +1 -0
  86. package/dist/src/config/storage.d.ts +34 -0
  87. package/dist/src/config/storage.js +95 -0
  88. package/dist/src/config/storage.js.map +1 -0
  89. package/dist/src/config/storage.test.d.ts +6 -0
  90. package/dist/src/config/storage.test.js +47 -0
  91. package/dist/src/config/storage.test.js.map +1 -0
  92. package/dist/src/confirmation-bus/index.d.ts +7 -0
  93. package/dist/src/confirmation-bus/index.js +8 -0
  94. package/dist/src/confirmation-bus/index.js.map +1 -0
  95. package/dist/src/confirmation-bus/message-bus.d.ts +17 -0
  96. package/dist/src/confirmation-bus/message-bus.js +81 -0
  97. package/dist/src/confirmation-bus/message-bus.js.map +1 -0
  98. package/dist/src/confirmation-bus/message-bus.test.d.ts +6 -0
  99. package/dist/src/confirmation-bus/message-bus.test.js +164 -0
  100. package/dist/src/confirmation-bus/message-bus.test.js.map +1 -0
  101. package/dist/src/confirmation-bus/types.d.ts +38 -0
  102. package/dist/src/confirmation-bus/types.js +15 -0
  103. package/dist/src/confirmation-bus/types.js.map +1 -0
  104. package/dist/src/core/baseLlmClient.d.ts +54 -0
  105. package/dist/src/core/baseLlmClient.js +190 -0
  106. package/dist/src/core/baseLlmClient.js.map +1 -0
  107. package/dist/src/core/baseLlmClient.test.d.ts +6 -0
  108. package/dist/src/core/baseLlmClient.test.js +316 -0
  109. package/dist/src/core/baseLlmClient.test.js.map +1 -0
  110. package/dist/src/core/client.d.ts +28 -28
  111. package/dist/src/core/client.js +187 -333
  112. package/dist/src/core/client.js.map +1 -1
  113. package/dist/src/core/client.test.js +745 -500
  114. package/dist/src/core/client.test.js.map +1 -1
  115. package/dist/src/core/contentGenerator.d.ts +4 -4
  116. package/dist/src/core/contentGenerator.js +6 -7
  117. package/dist/src/core/contentGenerator.js.map +1 -1
  118. package/dist/src/core/contentGenerator.test.js +1 -3
  119. package/dist/src/core/contentGenerator.test.js.map +1 -1
  120. package/dist/src/core/coreToolScheduler.d.ts +20 -7
  121. package/dist/src/core/coreToolScheduler.js +216 -53
  122. package/dist/src/core/coreToolScheduler.js.map +1 -1
  123. package/dist/src/core/coreToolScheduler.test.js +564 -88
  124. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  125. package/dist/src/core/geminiChat.d.ts +54 -43
  126. package/dist/src/core/geminiChat.js +298 -280
  127. package/dist/src/core/geminiChat.js.map +1 -1
  128. package/dist/src/core/geminiChat.test.js +1255 -321
  129. package/dist/src/core/geminiChat.test.js.map +1 -1
  130. package/dist/src/core/geminiRequest.js +1 -0
  131. package/dist/src/core/geminiRequest.js.map +1 -1
  132. package/dist/src/core/logger.d.ts +4 -2
  133. package/dist/src/core/logger.js +4 -3
  134. package/dist/src/core/logger.js.map +1 -1
  135. package/dist/src/core/logger.test.js +17 -16
  136. package/dist/src/core/logger.test.js.map +1 -1
  137. package/dist/src/core/loggingContentGenerator.d.ts +3 -3
  138. package/dist/src/core/loggingContentGenerator.js +15 -16
  139. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  140. package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -5
  141. package/dist/src/core/nonInteractiveToolExecutor.js +14 -122
  142. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  143. package/dist/src/core/nonInteractiveToolExecutor.test.js +158 -78
  144. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  145. package/dist/src/core/openaiContentGenerator.d.ts +4 -3
  146. package/dist/src/core/openaiContentGenerator.js +21 -14
  147. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  148. package/dist/src/core/openaiContentGenerator.test.js +1 -0
  149. package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
  150. package/dist/src/core/prompts.d.ts +5 -0
  151. package/dist/src/core/prompts.js +66 -44
  152. package/dist/src/core/prompts.js.map +1 -1
  153. package/dist/src/core/prompts.test.js +130 -1
  154. package/dist/src/core/prompts.test.js.map +1 -1
  155. package/dist/src/core/subagent.d.ts +24 -18
  156. package/dist/src/core/subagent.js +125 -90
  157. package/dist/src/core/subagent.js.map +1 -1
  158. package/dist/src/core/subagent.test.js +59 -44
  159. package/dist/src/core/subagent.test.js.map +1 -1
  160. package/dist/src/core/turn.d.ts +37 -13
  161. package/dist/src/core/turn.js +63 -28
  162. package/dist/src/core/turn.js.map +1 -1
  163. package/dist/src/core/turn.test.js +359 -100
  164. package/dist/src/core/turn.test.js.map +1 -1
  165. package/dist/src/fallback/handler.d.ts +7 -0
  166. package/dist/src/fallback/handler.js +129 -0
  167. package/dist/src/fallback/handler.js.map +1 -0
  168. package/dist/src/fallback/handler.test.d.ts +6 -0
  169. package/dist/src/fallback/handler.test.js +130 -0
  170. package/dist/src/fallback/handler.test.js.map +1 -0
  171. package/dist/src/fallback/types.d.ts +14 -0
  172. package/dist/src/fallback/types.js +7 -0
  173. package/dist/src/fallback/types.js.map +1 -0
  174. package/dist/src/generated/git-commit.d.ts +1 -1
  175. package/dist/src/generated/git-commit.js +1 -1
  176. package/dist/src/ide/constants.d.ts +3 -0
  177. package/dist/src/ide/constants.js +3 -0
  178. package/dist/src/ide/constants.js.map +1 -1
  179. package/dist/src/ide/detect-ide.d.ts +48 -12
  180. package/dist/src/ide/detect-ide.js +47 -66
  181. package/dist/src/ide/detect-ide.js.map +1 -1
  182. package/dist/src/ide/detect-ide.test.js +79 -52
  183. package/dist/src/ide/detect-ide.test.js.map +1 -1
  184. package/dist/src/ide/ide-client.d.ts +69 -23
  185. package/dist/src/ide/ide-client.js +372 -78
  186. package/dist/src/ide/ide-client.js.map +1 -1
  187. package/dist/src/ide/ide-client.test.js +375 -30
  188. package/dist/src/ide/ide-client.test.js.map +1 -1
  189. package/dist/src/ide/ide-installer.d.ts +2 -2
  190. package/dist/src/ide/ide-installer.js +37 -24
  191. package/dist/src/ide/ide-installer.js.map +1 -1
  192. package/dist/src/ide/ide-installer.test.js +104 -26
  193. package/dist/src/ide/ide-installer.test.js.map +1 -1
  194. package/dist/src/ide/ideContext.d.ts +35 -365
  195. package/dist/src/ide/ideContext.js +60 -106
  196. package/dist/src/ide/ideContext.js.map +1 -1
  197. package/dist/src/ide/ideContext.test.js +152 -24
  198. package/dist/src/ide/ideContext.test.js.map +1 -1
  199. package/dist/src/ide/process-utils.d.ts +7 -5
  200. package/dist/src/ide/process-utils.js +81 -50
  201. package/dist/src/ide/process-utils.js.map +1 -1
  202. package/dist/src/ide/process-utils.test.d.ts +6 -0
  203. package/dist/src/ide/process-utils.test.js +158 -0
  204. package/dist/src/ide/process-utils.test.js.map +1 -0
  205. package/dist/src/ide/types.d.ts +486 -0
  206. package/dist/src/ide/types.js +138 -0
  207. package/dist/src/ide/types.js.map +1 -0
  208. package/dist/src/index.d.ts +20 -2
  209. package/dist/src/index.js +20 -2
  210. package/dist/src/index.js.map +1 -1
  211. package/dist/src/mcp/google-auth-provider.d.ts +3 -3
  212. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  213. package/dist/src/mcp/oauth-provider.d.ts +17 -13
  214. package/dist/src/mcp/oauth-provider.js +81 -69
  215. package/dist/src/mcp/oauth-provider.js.map +1 -1
  216. package/dist/src/mcp/oauth-provider.test.js +212 -37
  217. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  218. package/dist/src/mcp/oauth-token-storage.d.ts +14 -32
  219. package/dist/src/mcp/oauth-token-storage.js +54 -25
  220. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  221. package/dist/src/mcp/oauth-token-storage.test.js +256 -162
  222. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  223. package/dist/src/mcp/oauth-utils.d.ts +9 -1
  224. package/dist/src/mcp/oauth-utils.js +42 -27
  225. package/dist/src/mcp/oauth-utils.js.map +1 -1
  226. package/dist/src/mcp/oauth-utils.test.js +41 -1
  227. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  228. package/dist/src/mcp/sa-impersonation-provider.d.ts +33 -0
  229. package/dist/src/mcp/sa-impersonation-provider.js +130 -0
  230. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  231. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
  232. package/dist/src/mcp/sa-impersonation-provider.test.js +117 -0
  233. package/dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
  234. package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  235. package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
  236. package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  237. package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
  238. package/dist/src/mcp/token-storage/base-token-storage.test.js +160 -0
  239. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
  240. package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
  241. package/dist/src/mcp/token-storage/file-token-storage.js +144 -0
  242. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
  243. package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +6 -0
  244. package/dist/src/mcp/token-storage/file-token-storage.test.js +235 -0
  245. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -0
  246. package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
  247. package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
  248. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
  249. package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +6 -0
  250. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +193 -0
  251. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -0
  252. package/dist/src/mcp/token-storage/index.d.ts +11 -0
  253. package/dist/src/mcp/token-storage/index.js +12 -0
  254. package/dist/src/mcp/token-storage/index.js.map +1 -0
  255. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +31 -0
  256. package/dist/src/mcp/token-storage/keychain-token-storage.js +190 -0
  257. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
  258. package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +6 -0
  259. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +254 -0
  260. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -0
  261. package/dist/src/mcp/token-storage/types.d.ts +38 -0
  262. package/dist/src/mcp/token-storage/types.js +11 -0
  263. package/dist/src/mcp/token-storage/types.js.map +1 -0
  264. package/dist/src/output/json-formatter.d.ts +11 -0
  265. package/dist/src/output/json-formatter.js +30 -0
  266. package/dist/src/output/json-formatter.js.map +1 -0
  267. package/dist/src/output/json-formatter.test.d.ts +6 -0
  268. package/dist/src/output/json-formatter.test.js +266 -0
  269. package/dist/src/output/json-formatter.test.js.map +1 -0
  270. package/dist/src/output/types.d.ts +20 -0
  271. package/dist/src/output/types.js +11 -0
  272. package/dist/src/output/types.js.map +1 -0
  273. package/dist/src/policy/index.d.ts +7 -0
  274. package/dist/src/policy/index.js +8 -0
  275. package/dist/src/policy/index.js.map +1 -0
  276. package/dist/src/policy/policy-engine.d.ts +30 -0
  277. package/dist/src/policy/policy-engine.js +92 -0
  278. package/dist/src/policy/policy-engine.js.map +1 -0
  279. package/dist/src/policy/policy-engine.test.d.ts +6 -0
  280. package/dist/src/policy/policy-engine.test.js +515 -0
  281. package/dist/src/policy/policy-engine.test.js.map +1 -0
  282. package/dist/src/policy/stable-stringify.d.ts +58 -0
  283. package/dist/src/policy/stable-stringify.js +122 -0
  284. package/dist/src/policy/stable-stringify.js.map +1 -0
  285. package/dist/src/policy/types.d.ts +47 -0
  286. package/dist/src/policy/types.js +12 -0
  287. package/dist/src/policy/types.js.map +1 -0
  288. package/dist/src/prompts/mcp-prompts.d.ts +2 -2
  289. package/dist/src/prompts/prompt-registry.d.ts +1 -1
  290. package/dist/src/routing/modelRouterService.d.ts +23 -0
  291. package/dist/src/routing/modelRouterService.js +70 -0
  292. package/dist/src/routing/modelRouterService.js.map +1 -0
  293. package/dist/src/routing/modelRouterService.test.d.ts +6 -0
  294. package/dist/src/routing/modelRouterService.test.js +98 -0
  295. package/dist/src/routing/modelRouterService.test.js.map +1 -0
  296. package/dist/src/routing/routingStrategy.d.ts +62 -0
  297. package/dist/src/routing/routingStrategy.js +7 -0
  298. package/dist/src/routing/routingStrategy.js.map +1 -0
  299. package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
  300. package/dist/src/routing/strategies/classifierStrategy.js +173 -0
  301. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
  302. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +6 -0
  303. package/dist/src/routing/strategies/classifierStrategy.test.js +192 -0
  304. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -0
  305. package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
  306. package/dist/src/routing/strategies/compositeStrategy.js +68 -0
  307. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
  308. package/dist/src/routing/strategies/compositeStrategy.test.d.ts +6 -0
  309. package/dist/src/routing/strategies/compositeStrategy.test.js +123 -0
  310. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -0
  311. package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
  312. package/dist/src/routing/strategies/defaultStrategy.js +20 -0
  313. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
  314. package/dist/src/routing/strategies/defaultStrategy.test.d.ts +6 -0
  315. package/dist/src/routing/strategies/defaultStrategy.test.js +26 -0
  316. package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -0
  317. package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
  318. package/dist/src/routing/strategies/fallbackStrategy.js +25 -0
  319. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
  320. package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +6 -0
  321. package/dist/src/routing/strategies/fallbackStrategy.test.js +55 -0
  322. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -0
  323. package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
  324. package/dist/src/routing/strategies/overrideStrategy.js +28 -0
  325. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
  326. package/dist/src/routing/strategies/overrideStrategy.test.d.ts +6 -0
  327. package/dist/src/routing/strategies/overrideStrategy.test.js +42 -0
  328. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -0
  329. package/dist/src/services/chatRecordingService.d.ts +8 -14
  330. package/dist/src/services/chatRecordingService.js +33 -21
  331. package/dist/src/services/chatRecordingService.js.map +1 -1
  332. package/dist/src/services/chatRecordingService.test.js +69 -25
  333. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  334. package/dist/src/services/fileDiscoveryService.d.ts +10 -0
  335. package/dist/src/services/fileDiscoveryService.js +32 -18
  336. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  337. package/dist/src/services/fileDiscoveryService.test.js +3 -3
  338. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  339. package/dist/src/services/fileSystemService.d.ts +9 -0
  340. package/dist/src/services/fileSystemService.js +12 -1
  341. package/dist/src/services/fileSystemService.js.map +1 -1
  342. package/dist/src/services/fileSystemService.test.js +1 -1
  343. package/dist/src/services/fileSystemService.test.js.map +1 -1
  344. package/dist/src/services/gitService.d.ts +3 -1
  345. package/dist/src/services/gitService.js +30 -24
  346. package/dist/src/services/gitService.js.map +1 -1
  347. package/dist/src/services/gitService.test.js +30 -37
  348. package/dist/src/services/gitService.test.js.map +1 -1
  349. package/dist/src/services/loopDetectionService.d.ts +8 -2
  350. package/dist/src/services/loopDetectionService.js +64 -24
  351. package/dist/src/services/loopDetectionService.js.map +1 -1
  352. package/dist/src/services/loopDetectionService.test.js +64 -13
  353. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  354. package/dist/src/services/shellExecutionService.d.ts +36 -2
  355. package/dist/src/services/shellExecutionService.js +238 -47
  356. package/dist/src/services/shellExecutionService.js.map +1 -1
  357. package/dist/src/services/shellExecutionService.test.js +197 -58
  358. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  359. package/dist/src/telemetry/activity-detector.d.ts +41 -0
  360. package/dist/src/telemetry/activity-detector.js +61 -0
  361. package/dist/src/telemetry/activity-detector.js.map +1 -0
  362. package/dist/src/telemetry/activity-detector.test.d.ts +6 -0
  363. package/dist/src/telemetry/activity-detector.test.js +136 -0
  364. package/dist/src/telemetry/activity-detector.test.js.map +1 -0
  365. package/dist/src/telemetry/activity-types.d.ts +19 -0
  366. package/dist/src/telemetry/activity-types.js +21 -0
  367. package/dist/src/telemetry/activity-types.js.map +1 -0
  368. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +34 -4
  369. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +322 -15
  370. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  371. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +1 -0
  372. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +321 -11
  373. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  374. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +51 -2
  375. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +124 -2
  376. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  377. package/dist/src/telemetry/config.d.ts +31 -0
  378. package/dist/src/telemetry/config.js +76 -0
  379. package/dist/src/telemetry/config.js.map +1 -0
  380. package/dist/src/telemetry/config.test.d.ts +6 -0
  381. package/dist/src/telemetry/config.test.js +124 -0
  382. package/dist/src/telemetry/config.test.js.map +1 -0
  383. package/dist/src/telemetry/constants.d.ts +17 -7
  384. package/dist/src/telemetry/constants.js +18 -7
  385. package/dist/src/telemetry/constants.js.map +1 -1
  386. package/dist/src/telemetry/file-exporters.d.ts +5 -4
  387. package/dist/src/telemetry/file-exporters.js +1 -1
  388. package/dist/src/telemetry/file-exporters.js.map +1 -1
  389. package/dist/src/telemetry/gcp-exporters.d.ts +34 -0
  390. package/dist/src/telemetry/gcp-exporters.js +117 -0
  391. package/dist/src/telemetry/gcp-exporters.js.map +1 -0
  392. package/dist/src/telemetry/gcp-exporters.test.d.ts +6 -0
  393. package/dist/src/telemetry/gcp-exporters.test.js +318 -0
  394. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -0
  395. package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
  396. package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
  397. package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
  398. package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +6 -0
  399. package/dist/src/telemetry/high-water-mark-tracker.test.js +152 -0
  400. package/dist/src/telemetry/high-water-mark-tracker.test.js.map +1 -0
  401. package/dist/src/telemetry/index.d.ts +12 -2
  402. package/dist/src/telemetry/index.js +16 -2
  403. package/dist/src/telemetry/index.js.map +1 -1
  404. package/dist/src/telemetry/loggers.d.ts +17 -2
  405. package/dist/src/telemetry/loggers.js +316 -14
  406. package/dist/src/telemetry/loggers.js.map +1 -1
  407. package/dist/src/telemetry/loggers.test.circular.js +3 -3
  408. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  409. package/dist/src/telemetry/loggers.test.js +452 -48
  410. package/dist/src/telemetry/loggers.test.js.map +1 -1
  411. package/dist/src/telemetry/metrics.d.ts +323 -12
  412. package/dist/src/telemetry/metrics.js +464 -83
  413. package/dist/src/telemetry/metrics.js.map +1 -1
  414. package/dist/src/telemetry/metrics.test.js +583 -38
  415. package/dist/src/telemetry/metrics.test.js.map +1 -1
  416. package/dist/src/telemetry/rate-limiter.d.ts +48 -0
  417. package/dist/src/telemetry/rate-limiter.js +100 -0
  418. package/dist/src/telemetry/rate-limiter.js.map +1 -0
  419. package/dist/src/telemetry/rate-limiter.test.d.ts +6 -0
  420. package/dist/src/telemetry/rate-limiter.test.js +207 -0
  421. package/dist/src/telemetry/rate-limiter.test.js.map +1 -0
  422. package/dist/src/telemetry/sdk.d.ts +1 -1
  423. package/dist/src/telemetry/sdk.js +20 -2
  424. package/dist/src/telemetry/sdk.js.map +1 -1
  425. package/dist/src/telemetry/sdk.test.js +108 -0
  426. package/dist/src/telemetry/sdk.test.js.map +1 -1
  427. package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
  428. package/dist/src/telemetry/telemetry-utils.js +14 -0
  429. package/dist/src/telemetry/telemetry-utils.js.map +1 -0
  430. package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
  431. package/dist/src/telemetry/telemetry-utils.test.js +40 -0
  432. package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
  433. package/dist/src/telemetry/types.d.ts +136 -8
  434. package/dist/src/telemetry/types.js +233 -11
  435. package/dist/src/telemetry/types.js.map +1 -1
  436. package/dist/src/telemetry/uiTelemetry.d.ts +3 -3
  437. package/dist/src/telemetry/uiTelemetry.js +7 -8
  438. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  439. package/dist/src/telemetry/uiTelemetry.test.js +33 -29
  440. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  441. package/dist/src/test-utils/config.d.ts +2 -1
  442. package/dist/src/test-utils/config.js.map +1 -1
  443. package/dist/src/test-utils/index.d.ts +6 -0
  444. package/dist/src/test-utils/index.js +7 -0
  445. package/dist/src/test-utils/index.js.map +1 -0
  446. package/dist/src/test-utils/mock-tool.d.ts +66 -0
  447. package/dist/src/test-utils/{tools.js → mock-tool.js} +45 -29
  448. package/dist/src/test-utils/mock-tool.js.map +1 -0
  449. package/dist/src/test-utils/mockWorkspaceContext.d.ts +1 -1
  450. package/dist/src/tools/diffOptions.d.ts +1 -1
  451. package/dist/src/tools/diffOptions.js +21 -13
  452. package/dist/src/tools/diffOptions.js.map +1 -1
  453. package/dist/src/tools/diffOptions.test.js +58 -22
  454. package/dist/src/tools/diffOptions.test.js.map +1 -1
  455. package/dist/src/tools/edit.d.ts +6 -5
  456. package/dist/src/tools/edit.js +58 -40
  457. package/dist/src/tools/edit.js.map +1 -1
  458. package/dist/src/tools/edit.test.js +192 -16
  459. package/dist/src/tools/edit.test.js.map +1 -1
  460. package/dist/src/tools/glob.d.ts +7 -2
  461. package/dist/src/tools/glob.js +42 -23
  462. package/dist/src/tools/glob.js.map +1 -1
  463. package/dist/src/tools/glob.test.js +80 -4
  464. package/dist/src/tools/glob.test.js.map +1 -1
  465. package/dist/src/tools/grep.d.ts +3 -2
  466. package/dist/src/tools/grep.js +35 -15
  467. package/dist/src/tools/grep.js.map +1 -1
  468. package/dist/src/tools/grep.test.js +26 -3
  469. package/dist/src/tools/grep.test.js.map +1 -1
  470. package/dist/src/tools/ls.d.ts +3 -2
  471. package/dist/src/tools/ls.js +31 -39
  472. package/dist/src/tools/ls.js.map +1 -1
  473. package/dist/src/tools/ls.test.js +145 -280
  474. package/dist/src/tools/ls.test.js.map +1 -1
  475. package/dist/src/tools/mcp-client-manager.d.ts +8 -6
  476. package/dist/src/tools/mcp-client-manager.js +13 -4
  477. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  478. package/dist/src/tools/mcp-client-manager.test.js +20 -1
  479. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  480. package/dist/src/tools/mcp-client.d.ts +18 -21
  481. package/dist/src/tools/mcp-client.js +87 -120
  482. package/dist/src/tools/mcp-client.js.map +1 -1
  483. package/dist/src/tools/mcp-client.test.js +32 -152
  484. package/dist/src/tools/mcp-client.test.js.map +1 -1
  485. package/dist/src/tools/mcp-tool.d.ts +6 -4
  486. package/dist/src/tools/mcp-tool.js +51 -13
  487. package/dist/src/tools/mcp-tool.js.map +1 -1
  488. package/dist/src/tools/mcp-tool.test.js +166 -12
  489. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  490. package/dist/src/tools/memoryTool.d.ts +3 -2
  491. package/dist/src/tools/memoryTool.js +14 -37
  492. package/dist/src/tools/memoryTool.js.map +1 -1
  493. package/dist/src/tools/memoryTool.test.js +16 -4
  494. package/dist/src/tools/memoryTool.test.js.map +1 -1
  495. package/dist/src/tools/message-bus-integration.test.d.ts +6 -0
  496. package/dist/src/tools/message-bus-integration.test.js +183 -0
  497. package/dist/src/tools/message-bus-integration.test.js.map +1 -0
  498. package/dist/src/tools/modifiable-tool.d.ts +2 -2
  499. package/dist/src/tools/modifiable-tool.js +3 -3
  500. package/dist/src/tools/modifiable-tool.js.map +1 -1
  501. package/dist/src/tools/modifiable-tool.test.js +4 -4
  502. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  503. package/dist/src/tools/read-file.d.ts +3 -2
  504. package/dist/src/tools/read-file.js +33 -43
  505. package/dist/src/tools/read-file.js.map +1 -1
  506. package/dist/src/tools/read-file.test.js +39 -7
  507. package/dist/src/tools/read-file.test.js.map +1 -1
  508. package/dist/src/tools/read-many-files.d.ts +3 -2
  509. package/dist/src/tools/read-many-files.js +52 -107
  510. package/dist/src/tools/read-many-files.js.map +1 -1
  511. package/dist/src/tools/read-many-files.test.js +64 -11
  512. package/dist/src/tools/read-many-files.test.js.map +1 -1
  513. package/dist/src/tools/ripGrep.d.ts +55 -0
  514. package/dist/src/tools/ripGrep.js +393 -0
  515. package/dist/src/tools/ripGrep.js.map +1 -0
  516. package/dist/src/tools/ripGrep.test.d.ts +6 -0
  517. package/dist/src/tools/ripGrep.test.js +976 -0
  518. package/dist/src/tools/ripGrep.test.js.map +1 -0
  519. package/dist/src/tools/shell.d.ts +13 -2
  520. package/dist/src/tools/shell.js +42 -32
  521. package/dist/src/tools/shell.js.map +1 -1
  522. package/dist/src/tools/shell.test.js +57 -75
  523. package/dist/src/tools/shell.test.js.map +1 -1
  524. package/dist/src/tools/smart-edit.d.ts +91 -0
  525. package/dist/src/tools/smart-edit.js +702 -0
  526. package/dist/src/tools/smart-edit.js.map +1 -0
  527. package/dist/src/tools/smart-edit.test.d.ts +6 -0
  528. package/dist/src/tools/smart-edit.test.js +542 -0
  529. package/dist/src/tools/smart-edit.test.js.map +1 -0
  530. package/dist/src/tools/tool-error.d.ts +18 -1
  531. package/dist/src/tools/tool-error.js +27 -0
  532. package/dist/src/tools/tool-error.js.map +1 -1
  533. package/dist/src/tools/tool-registry.d.ts +10 -4
  534. package/dist/src/tools/tool-registry.js +20 -7
  535. package/dist/src/tools/tool-registry.js.map +1 -1
  536. package/dist/src/tools/tool-registry.test.js +93 -10
  537. package/dist/src/tools/tool-registry.test.js.map +1 -1
  538. package/dist/src/tools/tools.d.ts +33 -16
  539. package/dist/src/tools/tools.js +115 -5
  540. package/dist/src/tools/tools.js.map +1 -1
  541. package/dist/src/tools/tools.test.js +1 -2
  542. package/dist/src/tools/tools.test.js.map +1 -1
  543. package/dist/src/tools/web-fetch.d.ts +3 -2
  544. package/dist/src/tools/web-fetch.js +14 -10
  545. package/dist/src/tools/web-fetch.js.map +1 -1
  546. package/dist/src/tools/web-fetch.test.js +55 -16
  547. package/dist/src/tools/web-fetch.test.js.map +1 -1
  548. package/dist/src/tools/web-search.d.ts +4 -3
  549. package/dist/src/tools/web-search.js +31 -8
  550. package/dist/src/tools/web-search.js.map +1 -1
  551. package/dist/src/tools/web-search.test.js +69 -1
  552. package/dist/src/tools/web-search.test.js.map +1 -1
  553. package/dist/src/tools/write-file.d.ts +4 -3
  554. package/dist/src/tools/write-file.js +17 -18
  555. package/dist/src/tools/write-file.js.map +1 -1
  556. package/dist/src/tools/write-file.test.js +108 -24
  557. package/dist/src/tools/write-file.test.js.map +1 -1
  558. package/dist/src/tools/write-todos.d.ts +25 -0
  559. package/dist/src/tools/write-todos.js +150 -0
  560. package/dist/src/tools/write-todos.js.map +1 -0
  561. package/dist/src/tools/write-todos.test.d.ts +6 -0
  562. package/dist/src/tools/write-todos.test.js +89 -0
  563. package/dist/src/tools/write-todos.test.js.map +1 -0
  564. package/dist/src/utils/bfsFileSearch.d.ts +2 -2
  565. package/dist/src/utils/bfsFileSearch.js +13 -7
  566. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  567. package/dist/src/utils/bfsFileSearch.test.js +3 -3
  568. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  569. package/dist/src/utils/editCorrector.d.ts +9 -8
  570. package/dist/src/utils/editCorrector.js +62 -19
  571. package/dist/src/utils/editCorrector.js.map +1 -1
  572. package/dist/src/utils/editCorrector.test.js +33 -82
  573. package/dist/src/utils/editCorrector.test.js.map +1 -1
  574. package/dist/src/utils/editor.js +32 -45
  575. package/dist/src/utils/editor.js.map +1 -1
  576. package/dist/src/utils/editor.test.js +62 -76
  577. package/dist/src/utils/editor.test.js.map +1 -1
  578. package/dist/src/utils/environmentContext.d.ts +2 -2
  579. package/dist/src/utils/errorParsing.js +2 -2
  580. package/dist/src/utils/errorParsing.js.map +1 -1
  581. package/dist/src/utils/errorParsing.test.js +7 -7
  582. package/dist/src/utils/errorParsing.test.js.map +1 -1
  583. package/dist/src/utils/errorReporting.d.ts +1 -1
  584. package/dist/src/utils/errors.d.ts +25 -0
  585. package/dist/src/utils/errors.js +42 -0
  586. package/dist/src/utils/errors.js.map +1 -1
  587. package/dist/src/utils/fetch.js +1 -1
  588. package/dist/src/utils/fetch.js.map +1 -1
  589. package/dist/src/utils/fileUtils.d.ts +24 -12
  590. package/dist/src/utils/fileUtils.js +170 -79
  591. package/dist/src/utils/fileUtils.js.map +1 -1
  592. package/dist/src/utils/fileUtils.test.js +347 -29
  593. package/dist/src/utils/fileUtils.test.js.map +1 -1
  594. package/dist/src/utils/filesearch/crawler.d.ts +1 -1
  595. package/dist/src/utils/filesearch/crawler.test.js +2 -2
  596. package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
  597. package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
  598. package/dist/src/utils/filesearch/fileSearch.js +14 -9
  599. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  600. package/dist/src/utils/filesearch/fileSearch.test.js +90 -0
  601. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  602. package/dist/src/utils/flashFallback.test.d.ts +6 -0
  603. package/dist/src/utils/{flashFallback.integration.test.js → flashFallback.test.js} +33 -29
  604. package/dist/src/utils/flashFallback.test.js.map +1 -0
  605. package/dist/src/utils/geminiIgnoreParser.d.ts +18 -0
  606. package/dist/src/utils/geminiIgnoreParser.js +61 -0
  607. package/dist/src/utils/geminiIgnoreParser.js.map +1 -0
  608. package/dist/src/utils/geminiIgnoreParser.test.d.ts +6 -0
  609. package/dist/src/utils/geminiIgnoreParser.test.js +50 -0
  610. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -0
  611. package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -2
  612. package/dist/src/utils/generateContentResponseUtilities.js +1 -13
  613. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  614. package/dist/src/utils/generateContentResponseUtilities.test.js +2 -40
  615. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  616. package/dist/src/utils/getFolderStructure.d.ts +2 -2
  617. package/dist/src/utils/getFolderStructure.js +3 -3
  618. package/dist/src/utils/getFolderStructure.js.map +1 -1
  619. package/dist/src/utils/getFolderStructure.test.js +4 -4
  620. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  621. package/dist/src/utils/gitIgnoreParser.d.ts +3 -7
  622. package/dist/src/utils/gitIgnoreParser.js +126 -35
  623. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  624. package/dist/src/utils/gitIgnoreParser.test.js +69 -38
  625. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  626. package/dist/src/utils/gitUtils.js +2 -2
  627. package/dist/src/utils/gitUtils.js.map +1 -1
  628. package/dist/src/utils/ignorePatterns.d.ts +103 -0
  629. package/dist/src/utils/ignorePatterns.js +220 -0
  630. package/dist/src/utils/ignorePatterns.js.map +1 -0
  631. package/dist/src/utils/ignorePatterns.test.d.ts +6 -0
  632. package/dist/src/utils/ignorePatterns.test.js +250 -0
  633. package/dist/src/utils/ignorePatterns.test.js.map +1 -0
  634. package/dist/src/utils/installationManager.d.ts +16 -0
  635. package/dist/src/utils/installationManager.js +50 -0
  636. package/dist/src/utils/installationManager.js.map +1 -0
  637. package/dist/src/utils/installationManager.test.d.ts +6 -0
  638. package/dist/src/utils/installationManager.test.js +83 -0
  639. package/dist/src/utils/installationManager.test.js.map +1 -0
  640. package/dist/src/utils/language-detection.d.ts +6 -0
  641. package/dist/src/utils/language-detection.js +101 -0
  642. package/dist/src/utils/language-detection.js.map +1 -0
  643. package/dist/src/utils/llm-edit-fixer.d.ts +26 -0
  644. package/dist/src/utils/llm-edit-fixer.js +131 -0
  645. package/dist/src/utils/llm-edit-fixer.js.map +1 -0
  646. package/dist/src/utils/llm-edit-fixer.test.d.ts +6 -0
  647. package/dist/src/utils/llm-edit-fixer.test.js +186 -0
  648. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -0
  649. package/dist/src/utils/memoryDiscovery.d.ts +7 -6
  650. package/dist/src/utils/memoryDiscovery.js +68 -33
  651. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  652. package/dist/src/utils/memoryDiscovery.test.js +88 -26
  653. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  654. package/dist/src/utils/memoryImportProcessor.js +15 -22
  655. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  656. package/dist/src/utils/memoryImportProcessor.test.js +16 -141
  657. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  658. package/dist/src/utils/messageInspectors.d.ts +1 -1
  659. package/dist/src/utils/nextSpeakerChecker.d.ts +3 -3
  660. package/dist/src/utils/nextSpeakerChecker.js +8 -2
  661. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  662. package/dist/src/utils/nextSpeakerChecker.test.js +75 -64
  663. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  664. package/dist/src/utils/partUtils.d.ts +22 -1
  665. package/dist/src/utils/partUtils.js +68 -0
  666. package/dist/src/utils/partUtils.js.map +1 -1
  667. package/dist/src/utils/partUtils.test.js +112 -1
  668. package/dist/src/utils/partUtils.test.js.map +1 -1
  669. package/dist/src/utils/pathReader.d.ts +17 -0
  670. package/dist/src/utils/pathReader.js +92 -0
  671. package/dist/src/utils/pathReader.js.map +1 -0
  672. package/dist/src/utils/pathReader.test.d.ts +6 -0
  673. package/dist/src/utils/pathReader.test.js +363 -0
  674. package/dist/src/utils/pathReader.test.js.map +1 -0
  675. package/dist/src/utils/paths.d.ts +0 -17
  676. package/dist/src/utils/paths.js +2 -28
  677. package/dist/src/utils/paths.js.map +1 -1
  678. package/dist/src/utils/promptIdContext.d.ts +7 -0
  679. package/dist/src/utils/promptIdContext.js +8 -0
  680. package/dist/src/utils/promptIdContext.js.map +1 -0
  681. package/dist/src/utils/quotaErrorDetection.d.ts +1 -1
  682. package/dist/src/utils/retry.d.ts +3 -1
  683. package/dist/src/utils/retry.js +60 -5
  684. package/dist/src/utils/retry.js.map +1 -1
  685. package/dist/src/utils/retry.test.js +35 -3
  686. package/dist/src/utils/retry.test.js.map +1 -1
  687. package/dist/src/utils/schemaValidator.js +15 -1
  688. package/dist/src/utils/schemaValidator.js.map +1 -1
  689. package/dist/src/utils/schemaValidator.test.d.ts +6 -0
  690. package/dist/src/utils/schemaValidator.test.js +113 -0
  691. package/dist/src/utils/schemaValidator.test.js.map +1 -0
  692. package/dist/src/utils/session.js +1 -1
  693. package/dist/src/utils/session.js.map +1 -1
  694. package/dist/src/utils/shell-utils.d.ts +6 -1
  695. package/dist/src/utils/shell-utils.js +51 -30
  696. package/dist/src/utils/shell-utils.js.map +1 -1
  697. package/dist/src/utils/shell-utils.test.js +9 -0
  698. package/dist/src/utils/shell-utils.test.js.map +1 -1
  699. package/dist/src/utils/summarizer.d.ts +2 -2
  700. package/dist/src/utils/summarizer.test.js.map +1 -1
  701. package/dist/src/utils/systemEncoding.js +2 -2
  702. package/dist/src/utils/systemEncoding.js.map +1 -1
  703. package/dist/src/utils/systemEncoding.test.js +2 -2
  704. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  705. package/dist/src/utils/terminalSerializer.d.ts +25 -0
  706. package/dist/src/utils/terminalSerializer.js +432 -0
  707. package/dist/src/utils/terminalSerializer.js.map +1 -0
  708. package/dist/src/utils/terminalSerializer.test.d.ts +6 -0
  709. package/dist/src/utils/terminalSerializer.test.js +176 -0
  710. package/dist/src/utils/terminalSerializer.test.js.map +1 -0
  711. package/dist/src/utils/textUtils.d.ts +5 -0
  712. package/dist/src/utils/textUtils.js +14 -0
  713. package/dist/src/utils/textUtils.js.map +1 -1
  714. package/dist/src/utils/textUtils.test.d.ts +6 -0
  715. package/dist/src/utils/textUtils.test.js +59 -0
  716. package/dist/src/utils/textUtils.test.js.map +1 -0
  717. package/dist/src/utils/thoughtUtils.d.ts +21 -0
  718. package/dist/src/utils/thoughtUtils.js +39 -0
  719. package/dist/src/utils/thoughtUtils.js.map +1 -0
  720. package/dist/src/utils/thoughtUtils.test.d.ts +6 -0
  721. package/dist/src/utils/thoughtUtils.test.js +78 -0
  722. package/dist/src/utils/thoughtUtils.test.js.map +1 -0
  723. package/dist/src/utils/tool-utils.d.ts +19 -0
  724. package/dist/src/utils/tool-utils.js +58 -0
  725. package/dist/src/utils/tool-utils.js.map +1 -0
  726. package/dist/src/utils/tool-utils.test.d.ts +6 -0
  727. package/dist/src/utils/tool-utils.test.js +61 -0
  728. package/dist/src/utils/tool-utils.test.js.map +1 -0
  729. package/dist/src/utils/userAccountManager.d.ts +20 -0
  730. package/dist/src/utils/userAccountManager.js +114 -0
  731. package/dist/src/utils/userAccountManager.js.map +1 -0
  732. package/dist/src/utils/userAccountManager.test.d.ts +6 -0
  733. package/dist/src/utils/{user_account.test.js → userAccountManager.test.js} +33 -30
  734. package/dist/src/utils/userAccountManager.test.js.map +1 -0
  735. package/dist/src/utils/workspaceContext.js +13 -7
  736. package/dist/src/utils/workspaceContext.js.map +1 -1
  737. package/dist/src/utils/workspaceContext.test.js +41 -16
  738. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  739. package/dist/tsconfig.tsbuildinfo +1 -1
  740. package/package.json +18 -9
  741. package/dist/src/core/modelCheck.d.ts +0 -14
  742. package/dist/src/core/modelCheck.js +0 -62
  743. package/dist/src/core/modelCheck.js.map +0 -1
  744. package/dist/src/test-utils/tools.d.ts +0 -44
  745. package/dist/src/test-utils/tools.js.map +0 -1
  746. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  747. package/dist/src/utils/user_account.d.ts +0 -9
  748. package/dist/src/utils/user_account.js +0 -109
  749. package/dist/src/utils/user_account.js.map +0 -1
  750. package/dist/src/utils/user_account.test.js.map +0 -1
  751. package/dist/src/utils/user_id.d.ts +0 -11
  752. package/dist/src/utils/user_id.js +0 -49
  753. package/dist/src/utils/user_id.js.map +0 -1
  754. package/dist/src/utils/user_id.test.js +0 -21
  755. package/dist/src/utils/user_id.test.js.map +0 -1
  756. /package/dist/src/{utils/flashFallback.integration.test.d.ts → agents/executor.test.d.ts} +0 -0
  757. /package/dist/src/{utils/user_account.test.d.ts → agents/invocation.test.d.ts} +0 -0
  758. /package/dist/src/{utils/user_id.test.d.ts → agents/registry.test.d.ts} +0 -0
@@ -5,48 +5,54 @@
5
5
  */
6
6
  import * as path from 'node:path';
7
7
  import process from 'node:process';
8
- import { AuthType, createContentGeneratorConfig, } from '../core/contentGenerator.js';
8
+ import { AuthType, createContentGenerator, createContentGeneratorConfig, } from '../core/contentGenerator.js';
9
9
  import { PromptRegistry } from '../prompts/prompt-registry.js';
10
10
  import { ToolRegistry } from '../tools/tool-registry.js';
11
11
  import { LSTool } from '../tools/ls.js';
12
12
  import { ReadFileTool } from '../tools/read-file.js';
13
13
  import { GrepTool } from '../tools/grep.js';
14
+ import { canUseRipgrep, RipGrepTool } from '../tools/ripGrep.js';
14
15
  import { GlobTool } from '../tools/glob.js';
15
16
  import { EditTool } from '../tools/edit.js';
17
+ import { SmartEditTool } from '../tools/smart-edit.js';
16
18
  import { ShellTool } from '../tools/shell.js';
17
19
  import { WriteFileTool } from '../tools/write-file.js';
18
20
  import { WebFetchTool } from '../tools/web-fetch.js';
19
21
  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';
28
+ import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, uiTelemetryService, } from '../telemetry/index.js';
29
+ import { tokenLimit } from '../core/tokenLimits.js';
30
+ import { StartSessionEvent } from '../telemetry/index.js';
27
31
  import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, } 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 { logCliConfiguration, 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';
33
40
  import { WorkspaceContext } from '../utils/workspaceContext.js';
41
+ import { Storage } from './storage.js';
42
+ import { FileExclusions } from '../utils/ignorePatterns.js';
43
+ import { MessageBus } from '../confirmation-bus/message-bus.js';
44
+ import { PolicyEngine } from '../policy/policy-engine.js';
45
+ import { ProxyAgent, setGlobalDispatcher } from 'undici';
34
46
  export var ApprovalMode;
35
47
  (function (ApprovalMode) {
36
48
  ApprovalMode["DEFAULT"] = "default";
37
49
  ApprovalMode["AUTO_EDIT"] = "autoEdit";
38
50
  ApprovalMode["YOLO"] = "yolo";
39
51
  })(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
- };
52
+ import { DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, DEFAULT_FILE_FILTERING_OPTIONS, } from './constants.js';
53
+ export { DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, DEFAULT_FILE_FILTERING_OPTIONS, };
54
+ export const DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD = 4_000_000;
55
+ export const DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES = 1000;
50
56
  export class MCPServerConfig {
51
57
  command;
52
58
  args;
@@ -64,6 +70,8 @@ export class MCPServerConfig {
64
70
  extensionName;
65
71
  oauth;
66
72
  authProviderType;
73
+ targetAudience;
74
+ targetServiceAccount;
67
75
  constructor(
68
76
  // For stdio transport
69
77
  command, args, env, cwd,
@@ -78,7 +86,12 @@ export class MCPServerConfig {
78
86
  // Metadata
79
87
  description, includeTools, excludeTools, extensionName,
80
88
  // OAuth configuration
81
- oauth, authProviderType) {
89
+ oauth, authProviderType,
90
+ // Service Account Configuration
91
+ /* targetAudience format: CLIENT_ID.apps.googleusercontent.com */
92
+ targetAudience,
93
+ /* targetServiceAccount format: <service-account-name>@<project-num>.iam.gserviceaccount.com */
94
+ targetServiceAccount) {
82
95
  this.command = command;
83
96
  this.args = args;
84
97
  this.env = env;
@@ -95,12 +108,15 @@ export class MCPServerConfig {
95
108
  this.extensionName = extensionName;
96
109
  this.oauth = oauth;
97
110
  this.authProviderType = authProviderType;
111
+ this.targetAudience = targetAudience;
112
+ this.targetServiceAccount = targetServiceAccount;
98
113
  }
99
114
  }
100
115
  export var AuthProviderType;
101
116
  (function (AuthProviderType) {
102
117
  AuthProviderType["DYNAMIC_DISCOVERY"] = "dynamic_discovery";
103
118
  AuthProviderType["GOOGLE_CREDENTIALS"] = "google_credentials";
119
+ AuthProviderType["SERVICE_ACCOUNT_IMPERSONATION"] = "service_account_impersonation";
104
120
  })(AuthProviderType || (AuthProviderType = {}));
105
121
  export class Config {
106
122
  toolRegistry;
@@ -108,6 +124,7 @@ export class Config {
108
124
  sessionId;
109
125
  fileSystemService;
110
126
  contentGeneratorConfig;
127
+ contentGenerator;
111
128
  embeddingModel;
112
129
  sandbox;
113
130
  targetDir;
@@ -116,6 +133,7 @@ export class Config {
116
133
  question;
117
134
  fullContext;
118
135
  coreTools;
136
+ allowedTools;
119
137
  excludeTools;
120
138
  toolDiscoveryCommand;
121
139
  toolCallCommand;
@@ -129,6 +147,8 @@ export class Config {
129
147
  telemetrySettings;
130
148
  usageStatisticsEnabled;
131
149
  geminiClient;
150
+ baseLlmClient;
151
+ modelRouterService;
132
152
  fileFiltering;
133
153
  fileDiscoveryService = null;
134
154
  gitService = undefined;
@@ -142,13 +162,12 @@ export class Config {
142
162
  folderTrustFeature;
143
163
  folderTrust;
144
164
  ideMode;
145
- ideClient;
146
165
  inFallbackMode = false;
147
166
  maxSessionTurns;
148
167
  listExtensions;
149
168
  _extensions;
150
169
  _blockedMcpServers;
151
- flashFallbackHandler;
170
+ fallbackModelHandler;
152
171
  quotaErrorOccurred = false;
153
172
  summarizeToolOutput;
154
173
  experimentalZedIntegration = false;
@@ -156,9 +175,26 @@ export class Config {
156
175
  chatCompression;
157
176
  interactive;
158
177
  trustedFolder;
178
+ useRipgrep;
159
179
  shouldUseNodePtyShell;
160
180
  skipNextSpeakerCheck;
181
+ shellExecutionConfig;
182
+ extensionManagement = true;
183
+ enablePromptCompletion = false;
184
+ truncateToolOutputThreshold;
185
+ truncateToolOutputLines;
186
+ enableToolOutputTruncation;
161
187
  initialized = false;
188
+ storage;
189
+ fileExclusions;
190
+ eventEmitter;
191
+ useSmartEdit;
192
+ useWriteTodos;
193
+ messageBus;
194
+ policyEngine;
195
+ outputSettings;
196
+ useModelRouter;
197
+ enableMessageBusIntegration;
162
198
  constructor(params) {
163
199
  this.sessionId = params.sessionId;
164
200
  this.embeddingModel =
@@ -171,6 +207,7 @@ export class Config {
171
207
  this.question = params.question;
172
208
  this.fullContext = params.fullContext ?? false;
173
209
  this.coreTools = params.coreTools;
210
+ this.allowedTools = params.allowedTools;
174
211
  this.excludeTools = params.excludeTools;
175
212
  this.toolDiscoveryCommand = params.toolDiscoveryCommand;
176
213
  this.toolCallCommand = params.toolCallCommand;
@@ -188,12 +225,14 @@ export class Config {
188
225
  otlpProtocol: params.telemetry?.otlpProtocol,
189
226
  logPrompts: params.telemetry?.logPrompts ?? true,
190
227
  outfile: params.telemetry?.outfile,
228
+ useCollector: params.telemetry?.useCollector,
191
229
  };
192
230
  this.usageStatisticsEnabled = params.usageStatisticsEnabled ?? true;
193
231
  this.fileFiltering = {
194
232
  respectGitIgnore: params.fileFiltering?.respectGitIgnore ?? true,
195
233
  respectGeminiIgnore: params.fileFiltering?.respectGeminiIgnore ?? true,
196
234
  enableRecursiveFileSearch: params.fileFiltering?.enableRecursiveFileSearch ?? true,
235
+ disableFuzzySearch: params.fileFiltering?.disableFuzzySearch ?? false,
197
236
  };
198
237
  this.checkpointing = params.checkpointing ?? false;
199
238
  this.proxy = params.proxy;
@@ -213,21 +252,52 @@ export class Config {
213
252
  this.folderTrustFeature = params.folderTrustFeature ?? false;
214
253
  this.folderTrust = params.folderTrust ?? false;
215
254
  this.ideMode = params.ideMode ?? false;
216
- this.ideClient = IdeClient.getInstance();
217
255
  this.loadMemoryFromIncludeDirectories =
218
256
  params.loadMemoryFromIncludeDirectories ?? false;
219
257
  this.chatCompression = params.chatCompression;
220
258
  this.interactive = params.interactive ?? false;
221
259
  this.trustedFolder = params.trustedFolder;
260
+ this.useRipgrep = params.useRipgrep ?? true;
222
261
  this.shouldUseNodePtyShell = params.shouldUseNodePtyShell ?? false;
223
- this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? false;
262
+ this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? true;
263
+ this.shellExecutionConfig = {
264
+ terminalWidth: params.shellExecutionConfig?.terminalWidth ?? 80,
265
+ terminalHeight: params.shellExecutionConfig?.terminalHeight ?? 24,
266
+ showColor: params.shellExecutionConfig?.showColor ?? false,
267
+ pager: params.shellExecutionConfig?.pager ?? 'cat',
268
+ };
269
+ this.truncateToolOutputThreshold =
270
+ params.truncateToolOutputThreshold ??
271
+ DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD;
272
+ this.truncateToolOutputLines =
273
+ params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
274
+ this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
275
+ this.useSmartEdit = params.useSmartEdit ?? true;
276
+ this.useWriteTodos = params.useWriteTodos ?? false;
277
+ this.useModelRouter = params.useModelRouter ?? false;
278
+ this.enableMessageBusIntegration =
279
+ params.enableMessageBusIntegration ?? false;
280
+ this.extensionManagement = params.extensionManagement ?? true;
281
+ this.storage = new Storage(this.targetDir);
282
+ this.enablePromptCompletion = params.enablePromptCompletion ?? false;
283
+ this.fileExclusions = new FileExclusions(this);
284
+ this.eventEmitter = params.eventEmitter;
285
+ this.policyEngine = new PolicyEngine(params.policyEngineConfig);
286
+ this.messageBus = new MessageBus(this.policyEngine);
287
+ this.outputSettings = {
288
+ format: params.output?.format ?? OutputFormat.TEXT,
289
+ };
224
290
  if (params.contextFileName) {
225
291
  setGeminiMdFilename(params.contextFileName);
226
292
  }
227
293
  if (this.telemetrySettings.enabled) {
228
294
  initializeTelemetry(this);
229
295
  }
230
- logCliConfiguration(this, new StartSessionEvent(this));
296
+ if (this.getProxy()) {
297
+ setGlobalDispatcher(new ProxyAgent(this.getProxy()));
298
+ }
299
+ this.geminiClient = new GeminiClient(this);
300
+ this.modelRouterService = new ModelRouterService(this);
231
301
  }
232
302
  /**
233
303
  * Must only be called once, throws if called again.
@@ -244,40 +314,51 @@ export class Config {
244
314
  }
245
315
  this.promptRegistry = new PromptRegistry();
246
316
  this.toolRegistry = await this.createToolRegistry();
317
+ await this.geminiClient.initialize();
318
+ }
319
+ getContentGenerator() {
320
+ return this.contentGenerator;
247
321
  }
248
322
  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();
253
- }
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
323
  // Vertex and Genai have incompatible encryption and sending history with
260
324
  // 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;
325
+ if (this.contentGeneratorConfig?.authType === AuthType.USE_GEMINI &&
326
+ authMethod === AuthType.LOGIN_WITH_GOOGLE) {
327
+ // Restore the conversation history to the new client
328
+ this.geminiClient.stripThoughtsFromHistory();
329
+ }
330
+ const newContentGeneratorConfig = createContentGeneratorConfig(this, authMethod);
331
+ this.contentGenerator = await createContentGenerator(newContentGeneratorConfig, this, this.getSessionId());
263
332
  // Only assign to instance properties after successful initialization
264
333
  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,
270
- });
271
- }
334
+ // Initialize BaseLlmClient now that the ContentGenerator is available
335
+ this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
272
336
  // Reset the session flag since we're explicitly changing auth and using default model
273
337
  this.inFallbackMode = false;
338
+ // Logging the cli configuration here as the auth related configuration params would have been loaded by this point
339
+ logCliConfiguration(this, new StartSessionEvent(this, this.toolRegistry));
340
+ }
341
+ getUserTier() {
342
+ return this.contentGenerator?.userTier;
343
+ }
344
+ /**
345
+ * Provides access to the BaseLlmClient for stateless LLM operations.
346
+ */
347
+ getBaseLlmClient() {
348
+ if (!this.baseLlmClient) {
349
+ // Handle cases where initialization might be deferred or authentication failed
350
+ if (this.contentGenerator) {
351
+ this.baseLlmClient = new BaseLlmClient(this.getContentGenerator(), this);
352
+ }
353
+ else {
354
+ throw new Error('BaseLlmClient not initialized. Ensure authentication has occurred and ContentGenerator is ready.');
355
+ }
356
+ }
357
+ return this.baseLlmClient;
274
358
  }
275
359
  getSessionId() {
276
360
  return this.sessionId;
277
361
  }
278
- setSessionId(sessionId) {
279
- this.sessionId = sessionId;
280
- }
281
362
  shouldLoadMemoryFromIncludeDirectories() {
282
363
  return this.loadMemoryFromIncludeDirectories;
283
364
  }
@@ -285,12 +366,14 @@ export class Config {
285
366
  return this.contentGeneratorConfig;
286
367
  }
287
368
  getModel() {
288
- return this.contentGeneratorConfig?.model || this.model;
369
+ return this.model;
289
370
  }
290
371
  setModel(newModel) {
291
- if (this.contentGeneratorConfig) {
292
- this.contentGeneratorConfig.model = newModel;
372
+ // Do not allow Pro usage if the user is in fallback mode.
373
+ if (newModel.includes('pro') && this.isInFallbackMode()) {
374
+ return;
293
375
  }
376
+ this.model = newModel;
294
377
  }
295
378
  isInFallbackMode() {
296
379
  return this.inFallbackMode;
@@ -298,8 +381,8 @@ export class Config {
298
381
  setFallbackMode(active) {
299
382
  this.inFallbackMode = active;
300
383
  }
301
- setFlashFallbackHandler(handler) {
302
- this.flashFallbackHandler = handler;
384
+ setFallbackModelHandler(handler) {
385
+ this.fallbackModelHandler = handler;
303
386
  }
304
387
  getMaxSessionTurns() {
305
388
  return this.maxSessionTurns;
@@ -351,6 +434,9 @@ export class Config {
351
434
  getCoreTools() {
352
435
  return this.coreTools;
353
436
  }
437
+ getAllowedTools() {
438
+ return this.allowedTools;
439
+ }
354
440
  getExcludeTools() {
355
441
  return this.excludeTools;
356
442
  }
@@ -382,6 +468,9 @@ export class Config {
382
468
  return this.approvalMode;
383
469
  }
384
470
  setApprovalMode(mode) {
471
+ if (!this.isTrustedFolder() && mode !== ApprovalMode.DEFAULT) {
472
+ throw new Error('Cannot enable privileged approval modes in an untrusted folder.');
473
+ }
385
474
  this.approvalMode = mode;
386
475
  }
387
476
  getShowMemoryUsage() {
@@ -408,18 +497,21 @@ export class Config {
408
497
  getTelemetryOutfile() {
409
498
  return this.telemetrySettings.outfile;
410
499
  }
500
+ getTelemetryUseCollector() {
501
+ return this.telemetrySettings.useCollector ?? false;
502
+ }
411
503
  getGeminiClient() {
412
504
  return this.geminiClient;
413
505
  }
414
- getGeminiDir() {
415
- return path.join(this.targetDir, GEMINI_DIR);
416
- }
417
- getProjectTempDir() {
418
- return getProjectTempDir(this.getProjectRoot());
506
+ getModelRouterService() {
507
+ return this.modelRouterService;
419
508
  }
420
509
  getEnableRecursiveFileSearch() {
421
510
  return this.fileFiltering.enableRecursiveFileSearch;
422
511
  }
512
+ getFileFilteringDisableFuzzySearch() {
513
+ return this.fileFiltering.disableFuzzySearch;
514
+ }
423
515
  getFileFilteringRespectGitIgnore() {
424
516
  return this.fileFiltering.respectGitIgnore;
425
517
  }
@@ -432,6 +524,20 @@ export class Config {
432
524
  respectGeminiIgnore: this.fileFiltering.respectGeminiIgnore,
433
525
  };
434
526
  }
527
+ /**
528
+ * Gets custom file exclusion patterns from configuration.
529
+ * TODO: This is a placeholder implementation. In the future, this could
530
+ * read from settings files, CLI arguments, or environment variables.
531
+ */
532
+ getCustomExcludes() {
533
+ // Placeholder implementation - returns empty array for now
534
+ // Future implementation could read from:
535
+ // - User settings file
536
+ // - Project-specific configuration
537
+ // - Environment variables
538
+ // - CLI arguments
539
+ return [];
540
+ }
435
541
  getCheckpointingEnabled() {
436
542
  return this.checkpointing;
437
543
  }
@@ -462,6 +568,9 @@ export class Config {
462
568
  getListExtensions() {
463
569
  return this.listExtensions;
464
570
  }
571
+ getExtensionManagement() {
572
+ return this.extensionManagement;
573
+ }
465
574
  getExtensions() {
466
575
  return this._extensions;
467
576
  }
@@ -483,28 +592,33 @@ export class Config {
483
592
  getFolderTrustFeature() {
484
593
  return this.folderTrustFeature;
485
594
  }
595
+ /**
596
+ * Returns 'true' if the workspace is considered "trusted".
597
+ * 'false' for untrusted.
598
+ */
486
599
  getFolderTrust() {
487
600
  return this.folderTrust;
488
601
  }
489
602
  isTrustedFolder() {
490
- return this.trustedFolder;
603
+ // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
604
+ // when the file based trust value is unavailable, since it is mainly used
605
+ // in the initialization for trust dialogs, etc. Here we return true since
606
+ // config.isTrustedFolder() is used for the main business logic of blocking
607
+ // tool calls etc in the rest of the application.
608
+ //
609
+ // Default value is true since we load with trusted settings to avoid
610
+ // restarts in the more common path. If the user chooses to mark the folder
611
+ // as untrusted, the CLI will restart and we will have the trust value
612
+ // reloaded.
613
+ const context = ideContextStore.get();
614
+ if (context?.workspaceState?.isTrusted !== undefined) {
615
+ return context.workspaceState.isTrusted;
616
+ }
617
+ return this.trustedFolder ?? true;
491
618
  }
492
619
  setIdeMode(value) {
493
620
  this.ideMode = value;
494
621
  }
495
- async setIdeModeAndSyncConnection(value) {
496
- this.ideMode = value;
497
- if (value) {
498
- await this.ideClient.connect();
499
- logIdeConnection(this, new IdeConnectionEvent(IdeConnectionType.SESSION));
500
- }
501
- else {
502
- await this.ideClient.disconnect();
503
- }
504
- }
505
- getIdeClient() {
506
- return this.ideClient;
507
- }
508
622
  /**
509
623
  * Get the current FileSystemService
510
624
  */
@@ -523,57 +637,154 @@ export class Config {
523
637
  isInteractive() {
524
638
  return this.interactive;
525
639
  }
640
+ getUseRipgrep() {
641
+ return this.useRipgrep;
642
+ }
526
643
  getShouldUseNodePtyShell() {
527
644
  return this.shouldUseNodePtyShell;
528
645
  }
529
646
  getSkipNextSpeakerCheck() {
530
647
  return this.skipNextSpeakerCheck;
531
648
  }
649
+ getShellExecutionConfig() {
650
+ return this.shellExecutionConfig;
651
+ }
652
+ setShellExecutionConfig(config) {
653
+ this.shellExecutionConfig = {
654
+ terminalWidth: config.terminalWidth ?? this.shellExecutionConfig.terminalWidth,
655
+ terminalHeight: config.terminalHeight ?? this.shellExecutionConfig.terminalHeight,
656
+ showColor: config.showColor ?? this.shellExecutionConfig.showColor,
657
+ pager: config.pager ?? this.shellExecutionConfig.pager,
658
+ };
659
+ }
660
+ getScreenReader() {
661
+ return this.accessibility.screenReader ?? false;
662
+ }
663
+ getEnablePromptCompletion() {
664
+ return this.enablePromptCompletion;
665
+ }
666
+ getEnableToolOutputTruncation() {
667
+ return this.enableToolOutputTruncation;
668
+ }
669
+ getTruncateToolOutputThreshold() {
670
+ return Math.min(
671
+ // Estimate remaining context window in characters (1 token ~= 4 chars).
672
+ 4 *
673
+ (tokenLimit(this.model) - uiTelemetryService.getLastPromptTokenCount()), this.truncateToolOutputThreshold);
674
+ }
675
+ getTruncateToolOutputLines() {
676
+ return this.truncateToolOutputLines;
677
+ }
678
+ getUseSmartEdit() {
679
+ return this.useSmartEdit;
680
+ }
681
+ getUseWriteTodos() {
682
+ return this.useWriteTodos;
683
+ }
684
+ getOutputFormat() {
685
+ return this.outputSettings?.format
686
+ ? this.outputSettings.format
687
+ : OutputFormat.TEXT;
688
+ }
689
+ getUseModelRouter() {
690
+ return this.useModelRouter;
691
+ }
532
692
  async getGitService() {
533
693
  if (!this.gitService) {
534
- this.gitService = new GitService(this.targetDir);
694
+ this.gitService = new GitService(this.targetDir, this.storage);
535
695
  await this.gitService.initialize();
536
696
  }
537
697
  return this.gitService;
538
698
  }
699
+ getFileExclusions() {
700
+ return this.fileExclusions;
701
+ }
702
+ getMessageBus() {
703
+ return this.messageBus;
704
+ }
705
+ getPolicyEngine() {
706
+ return this.policyEngine;
707
+ }
708
+ getEnableMessageBusIntegration() {
709
+ return this.enableMessageBusIntegration;
710
+ }
539
711
  async createToolRegistry() {
540
- const registry = new ToolRegistry(this);
712
+ const registry = new ToolRegistry(this, this.eventEmitter);
541
713
  // helper to create & register core tools that are enabled
542
714
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
543
715
  const registerCoreTool = (ToolClass, ...args) => {
544
716
  const className = ToolClass.name;
545
717
  const toolName = ToolClass.Name || className;
546
718
  const coreTools = this.getCoreTools();
547
- const excludeTools = this.getExcludeTools();
548
- let isEnabled = false;
549
- if (coreTools === undefined) {
550
- isEnabled = true;
551
- }
552
- else {
553
- isEnabled = coreTools.some((tool) => tool === className ||
554
- tool === toolName ||
555
- tool.startsWith(`${className}(`) ||
556
- tool.startsWith(`${toolName}(`));
719
+ const excludeTools = this.getExcludeTools() || [];
720
+ // On some platforms, the className can be minified to _ClassName.
721
+ const normalizedClassName = className.replace(/^_+/, '');
722
+ let isEnabled = true; // Enabled by default if coreTools is not set.
723
+ if (coreTools) {
724
+ isEnabled = coreTools.some((tool) => tool === toolName ||
725
+ tool === normalizedClassName ||
726
+ tool.startsWith(`${toolName}(`) ||
727
+ tool.startsWith(`${normalizedClassName}(`));
557
728
  }
558
- if (excludeTools?.includes(className) ||
559
- excludeTools?.includes(toolName)) {
729
+ const isExcluded = excludeTools.some((tool) => tool === toolName || tool === normalizedClassName);
730
+ if (isExcluded) {
560
731
  isEnabled = false;
561
732
  }
562
733
  if (isEnabled) {
563
- registry.registerTool(new ToolClass(...args));
734
+ // Pass message bus to tools when feature flag is enabled
735
+ // This first implementation is only focused on the general case of
736
+ // the tool registry.
737
+ const messageBusEnabled = this.getEnableMessageBusIntegration();
738
+ if (this.debugMode && messageBusEnabled) {
739
+ console.log(`[DEBUG] enableMessageBusIntegration setting: ${messageBusEnabled}`);
740
+ }
741
+ const toolArgs = messageBusEnabled
742
+ ? [...args, this.getMessageBus()]
743
+ : args;
744
+ if (this.debugMode && messageBusEnabled) {
745
+ console.log(`[DEBUG] Registering ${className} with messageBus: ${messageBusEnabled ? 'YES' : 'NO'}`);
746
+ }
747
+ registry.registerTool(new ToolClass(...toolArgs));
564
748
  }
565
749
  };
566
750
  registerCoreTool(LSTool, this);
567
751
  registerCoreTool(ReadFileTool, this);
568
- registerCoreTool(GrepTool, this);
752
+ if (this.getUseRipgrep()) {
753
+ let useRipgrep = false;
754
+ let errorString = undefined;
755
+ try {
756
+ useRipgrep = await canUseRipgrep();
757
+ }
758
+ catch (error) {
759
+ errorString = String(error);
760
+ }
761
+ if (useRipgrep) {
762
+ registerCoreTool(RipGrepTool, this);
763
+ }
764
+ else {
765
+ logRipgrepFallback(this, new RipgrepFallbackEvent(errorString));
766
+ registerCoreTool(GrepTool, this);
767
+ }
768
+ }
769
+ else {
770
+ registerCoreTool(GrepTool, this);
771
+ }
569
772
  registerCoreTool(GlobTool, this);
570
- registerCoreTool(EditTool, this);
773
+ if (this.getUseSmartEdit()) {
774
+ registerCoreTool(SmartEditTool, this);
775
+ }
776
+ else {
777
+ registerCoreTool(EditTool, this);
778
+ }
571
779
  registerCoreTool(WriteFileTool, this);
572
780
  registerCoreTool(WebFetchTool, this);
573
781
  registerCoreTool(ReadManyFilesTool, this);
574
782
  registerCoreTool(ShellTool, this);
575
783
  registerCoreTool(MemoryTool);
576
784
  registerCoreTool(WebSearchTool, this);
785
+ if (this.getUseWriteTodos()) {
786
+ registerCoreTool(WriteTodosTool, this);
787
+ }
577
788
  await registry.discoverAllTools();
578
789
  return registry;
579
790
  }