@office-ai/aioncli-core 0.18.6 → 0.24.0-preview.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 (893) hide show
  1. package/dist/docs/CONTRIBUTING.md +546 -0
  2. package/dist/docs/architecture.md +80 -0
  3. package/dist/docs/assets/connected_devtools.png +0 -0
  4. package/dist/docs/assets/gemini-screenshot.png +0 -0
  5. package/dist/docs/assets/release_patch.png +0 -0
  6. package/dist/docs/assets/theme-ansi-light.png +0 -0
  7. package/dist/docs/assets/theme-ansi.png +0 -0
  8. package/dist/docs/assets/theme-atom-one.png +0 -0
  9. package/dist/docs/assets/theme-ayu-light.png +0 -0
  10. package/dist/docs/assets/theme-ayu.png +0 -0
  11. package/dist/docs/assets/theme-custom.png +0 -0
  12. package/dist/docs/assets/theme-default-light.png +0 -0
  13. package/dist/docs/assets/theme-default.png +0 -0
  14. package/dist/docs/assets/theme-dracula.png +0 -0
  15. package/dist/docs/assets/theme-github-light.png +0 -0
  16. package/dist/docs/assets/theme-github.png +0 -0
  17. package/dist/docs/assets/theme-google-light.png +0 -0
  18. package/dist/docs/assets/theme-xcode-light.png +0 -0
  19. package/dist/docs/changelogs/index.md +592 -0
  20. package/dist/docs/changelogs/latest.md +225 -0
  21. package/dist/docs/changelogs/preview.md +129 -0
  22. package/dist/docs/changelogs/releases.md +896 -0
  23. package/dist/docs/cli/authentication.md +3 -0
  24. package/dist/docs/cli/checkpointing.md +94 -0
  25. package/dist/docs/cli/commands.md +354 -0
  26. package/dist/docs/cli/configuration.md +780 -0
  27. package/dist/docs/cli/custom-commands.md +315 -0
  28. package/dist/docs/cli/enterprise.md +565 -0
  29. package/dist/docs/cli/gemini-ignore.md +71 -0
  30. package/dist/docs/cli/gemini-md.md +108 -0
  31. package/dist/docs/cli/generation-settings.md +210 -0
  32. package/dist/docs/cli/headless.md +388 -0
  33. package/dist/docs/cli/index.md +63 -0
  34. package/dist/docs/cli/keyboard-shortcuts.md +143 -0
  35. package/dist/docs/cli/model-routing.md +37 -0
  36. package/dist/docs/cli/model.md +62 -0
  37. package/dist/docs/cli/sandbox.md +171 -0
  38. package/dist/docs/cli/session-management.md +158 -0
  39. package/dist/docs/cli/settings.md +114 -0
  40. package/dist/docs/cli/skills.md +156 -0
  41. package/dist/docs/cli/system-prompt.md +93 -0
  42. package/dist/docs/cli/telemetry.md +791 -0
  43. package/dist/docs/cli/themes.md +237 -0
  44. package/dist/docs/cli/token-caching.md +20 -0
  45. package/dist/docs/cli/trusted-folders.md +95 -0
  46. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  47. package/dist/docs/cli/tutorials.md +87 -0
  48. package/dist/docs/cli/uninstall.md +47 -0
  49. package/dist/docs/core/index.md +101 -0
  50. package/dist/docs/core/memport.md +244 -0
  51. package/dist/docs/core/policy-engine.md +267 -0
  52. package/dist/docs/core/tools-api.md +131 -0
  53. package/dist/docs/examples/proxy-script.md +83 -0
  54. package/dist/docs/extension.md +160 -0
  55. package/dist/docs/extensions/extension-releasing.md +183 -0
  56. package/dist/docs/extensions/getting-started-extensions.md +245 -0
  57. package/dist/docs/extensions/index.md +293 -0
  58. package/dist/docs/faq.md +154 -0
  59. package/dist/docs/get-started/authentication.md +321 -0
  60. package/dist/docs/get-started/configuration-v1.md +888 -0
  61. package/dist/docs/get-started/configuration.md +1536 -0
  62. package/dist/docs/get-started/deployment.md +143 -0
  63. package/dist/docs/get-started/examples.md +219 -0
  64. package/dist/docs/get-started/gemini-3.md +116 -0
  65. package/dist/docs/get-started/index.md +71 -0
  66. package/dist/docs/get-started/installation.md +141 -0
  67. package/dist/docs/hooks/best-practices.md +856 -0
  68. package/dist/docs/hooks/index.md +687 -0
  69. package/dist/docs/hooks/reference.md +168 -0
  70. package/dist/docs/hooks/writing-hooks.md +1026 -0
  71. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  72. package/dist/docs/ide-integration/index.md +202 -0
  73. package/dist/docs/index.md +147 -0
  74. package/dist/docs/integration-tests.md +211 -0
  75. package/dist/docs/issue-and-pr-automation.md +134 -0
  76. package/dist/docs/local-development.md +128 -0
  77. package/dist/docs/mermaid/context.mmd +103 -0
  78. package/dist/docs/mermaid/render-path.mmd +64 -0
  79. package/dist/docs/npm.md +62 -0
  80. package/dist/docs/quota-and-pricing.md +158 -0
  81. package/dist/docs/release-confidence.md +164 -0
  82. package/dist/docs/releases.md +540 -0
  83. package/dist/docs/sidebar.json +301 -0
  84. package/dist/docs/tools/file-system.md +217 -0
  85. package/dist/docs/tools/index.md +95 -0
  86. package/dist/docs/tools/mcp-server.md +1044 -0
  87. package/dist/docs/tools/memory.md +54 -0
  88. package/dist/docs/tools/shell.md +260 -0
  89. package/dist/docs/tools/todos.md +57 -0
  90. package/dist/docs/tools/web-fetch.md +59 -0
  91. package/dist/docs/tools/web-search.md +42 -0
  92. package/dist/docs/tos-privacy.md +96 -0
  93. package/dist/docs/troubleshooting.md +158 -0
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.js +1 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/src/agents/a2a-client-manager.d.ts +78 -0
  98. package/dist/src/agents/a2a-client-manager.js +295 -0
  99. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  100. package/dist/src/agents/a2a-client-manager.test.d.ts +6 -0
  101. package/dist/src/agents/a2a-client-manager.test.js +237 -0
  102. package/dist/src/agents/a2a-client-manager.test.js.map +1 -0
  103. package/dist/src/agents/a2aUtils.d.ts +28 -0
  104. package/dist/src/agents/a2aUtils.js +111 -0
  105. package/dist/src/agents/a2aUtils.js.map +1 -0
  106. package/dist/src/agents/a2aUtils.test.d.ts +6 -0
  107. package/dist/src/agents/a2aUtils.test.js +147 -0
  108. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  109. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  110. package/dist/src/agents/codebase-investigator.js +5 -4
  111. package/dist/src/agents/codebase-investigator.js.map +1 -1
  112. package/dist/src/agents/delegate-to-agent-tool.d.ts +19 -0
  113. package/dist/src/agents/delegate-to-agent-tool.js +115 -0
  114. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -0
  115. package/dist/src/agents/delegate-to-agent-tool.test.d.ts +6 -0
  116. package/dist/src/agents/delegate-to-agent-tool.test.js +165 -0
  117. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -0
  118. package/dist/src/agents/introspection-agent.d.ts +23 -0
  119. package/dist/src/agents/introspection-agent.js +72 -0
  120. package/dist/src/agents/introspection-agent.js.map +1 -0
  121. package/dist/src/agents/introspection-agent.test.d.ts +6 -0
  122. package/dist/src/agents/introspection-agent.test.js +47 -0
  123. package/dist/src/agents/introspection-agent.test.js.map +1 -0
  124. package/dist/src/agents/local-executor.d.ts +108 -0
  125. package/dist/src/agents/local-executor.js +801 -0
  126. package/dist/src/agents/local-executor.js.map +1 -0
  127. package/dist/src/agents/local-executor.test.d.ts +6 -0
  128. package/dist/src/agents/local-executor.test.js +1380 -0
  129. package/dist/src/agents/local-executor.test.js.map +1 -0
  130. package/dist/src/agents/local-invocation.d.ts +45 -0
  131. package/dist/src/agents/local-invocation.js +101 -0
  132. package/dist/src/agents/local-invocation.js.map +1 -0
  133. package/dist/src/agents/local-invocation.test.d.ts +6 -0
  134. package/dist/src/agents/local-invocation.test.js +218 -0
  135. package/dist/src/agents/local-invocation.test.js.map +1 -0
  136. package/dist/src/agents/registry.d.ts +25 -1
  137. package/dist/src/agents/registry.js +149 -5
  138. package/dist/src/agents/registry.js.map +1 -1
  139. package/dist/src/agents/registry.test.js +247 -25
  140. package/dist/src/agents/registry.test.js.map +1 -1
  141. package/dist/src/agents/remote-invocation.d.ts +35 -0
  142. package/dist/src/agents/remote-invocation.js +129 -0
  143. package/dist/src/agents/remote-invocation.js.map +1 -0
  144. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  145. package/dist/src/agents/remote-invocation.test.js +201 -0
  146. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  147. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  148. package/dist/src/agents/subagent-tool-wrapper.js +11 -6
  149. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  150. package/dist/src/agents/subagent-tool-wrapper.test.js +25 -17
  151. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  152. package/dist/src/agents/toml-loader.d.ts +74 -0
  153. package/dist/src/agents/toml-loader.js +248 -0
  154. package/dist/src/agents/toml-loader.js.map +1 -0
  155. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  156. package/dist/src/agents/toml-loader.test.js +309 -0
  157. package/dist/src/agents/toml-loader.test.js.map +1 -0
  158. package/dist/src/agents/types.d.ts +18 -4
  159. package/dist/src/availability/errorClassification.d.ts +7 -0
  160. package/dist/src/availability/errorClassification.js +20 -0
  161. package/dist/src/availability/errorClassification.js.map +1 -0
  162. package/dist/src/availability/modelAvailabilityService.d.ts +36 -0
  163. package/dist/src/availability/modelAvailabilityService.js +87 -0
  164. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  165. package/dist/src/availability/modelAvailabilityService.test.d.ts +6 -0
  166. package/dist/src/availability/modelAvailabilityService.test.js +140 -0
  167. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -0
  168. package/dist/src/availability/modelPolicy.d.ts +49 -0
  169. package/dist/src/availability/modelPolicy.js +7 -0
  170. package/dist/src/availability/modelPolicy.js.map +1 -0
  171. package/dist/src/availability/policyCatalog.d.ts +23 -0
  172. package/dist/src/availability/policyCatalog.js +82 -0
  173. package/dist/src/availability/policyCatalog.js.map +1 -0
  174. package/dist/src/availability/policyCatalog.test.d.ts +6 -0
  175. package/dist/src/availability/policyCatalog.test.js +70 -0
  176. package/dist/src/availability/policyCatalog.test.js.map +1 -0
  177. package/dist/src/availability/policyHelpers.d.ts +52 -0
  178. package/dist/src/availability/policyHelpers.js +136 -0
  179. package/dist/src/availability/policyHelpers.js.map +1 -0
  180. package/dist/src/availability/policyHelpers.test.d.ts +6 -0
  181. package/dist/src/availability/policyHelpers.test.js +182 -0
  182. package/dist/src/availability/policyHelpers.test.js.map +1 -0
  183. package/dist/src/availability/testUtils.d.ts +10 -0
  184. package/dist/src/availability/testUtils.js +22 -0
  185. package/dist/src/availability/testUtils.js.map +1 -0
  186. package/dist/src/code_assist/experiments/client_metadata.js +3 -2
  187. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
  188. package/dist/src/code_assist/experiments/client_metadata.test.js +7 -10
  189. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
  190. package/dist/src/code_assist/experiments/experiments.js +2 -2
  191. package/dist/src/code_assist/experiments/experiments.js.map +1 -1
  192. package/dist/src/code_assist/oauth2.d.ts +2 -0
  193. package/dist/src/code_assist/oauth2.js +73 -17
  194. package/dist/src/code_assist/oauth2.js.map +1 -1
  195. package/dist/src/code_assist/oauth2.test.js +195 -18
  196. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  197. package/dist/src/code_assist/server.d.ts +10 -1
  198. package/dist/src/code_assist/server.js +81 -15
  199. package/dist/src/code_assist/server.js.map +1 -1
  200. package/dist/src/code_assist/server.test.js +221 -25
  201. package/dist/src/code_assist/server.test.js.map +1 -1
  202. package/dist/src/code_assist/setup.js +6 -4
  203. package/dist/src/code_assist/setup.js.map +1 -1
  204. package/dist/src/code_assist/setup.test.js +63 -0
  205. package/dist/src/code_assist/setup.test.js.map +1 -1
  206. package/dist/src/code_assist/telemetry.d.ts +14 -0
  207. package/dist/src/code_assist/telemetry.js +156 -0
  208. package/dist/src/code_assist/telemetry.js.map +1 -0
  209. package/dist/src/code_assist/telemetry.test.d.ts +6 -0
  210. package/dist/src/code_assist/telemetry.test.js +300 -0
  211. package/dist/src/code_assist/telemetry.test.js.map +1 -0
  212. package/dist/src/code_assist/types.d.ts +84 -1
  213. package/dist/src/code_assist/types.js +21 -0
  214. package/dist/src/code_assist/types.js.map +1 -1
  215. package/dist/src/commands/init.d.ts +7 -0
  216. package/dist/src/commands/init.js +53 -0
  217. package/dist/src/commands/init.js.map +1 -0
  218. package/dist/src/commands/init.test.d.ts +6 -0
  219. package/dist/src/commands/init.test.js +25 -0
  220. package/dist/src/commands/init.test.js.map +1 -0
  221. package/dist/src/commands/restore.d.ts +9 -0
  222. package/dist/src/commands/restore.js +46 -0
  223. package/dist/src/commands/restore.js.map +1 -0
  224. package/dist/src/commands/restore.test.d.ts +6 -0
  225. package/dist/src/commands/restore.test.js +137 -0
  226. package/dist/src/commands/restore.test.js.map +1 -0
  227. package/dist/src/commands/types.d.ts +41 -0
  228. package/dist/src/commands/types.js +7 -0
  229. package/dist/src/commands/types.js.map +1 -0
  230. package/dist/src/config/config.d.ts +120 -23
  231. package/dist/src/config/config.js +336 -116
  232. package/dist/src/config/config.js.map +1 -1
  233. package/dist/src/config/config.test.js +373 -95
  234. package/dist/src/config/config.test.js.map +1 -1
  235. package/dist/src/config/defaultModelConfigs.js +46 -0
  236. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  237. package/dist/src/config/flashFallback.test.js +11 -35
  238. package/dist/src/config/flashFallback.test.js.map +1 -1
  239. package/dist/src/config/models.d.ts +29 -15
  240. package/dist/src/config/models.js +78 -28
  241. package/dist/src/config/models.js.map +1 -1
  242. package/dist/src/config/models.test.js +91 -77
  243. package/dist/src/config/models.test.js.map +1 -1
  244. package/dist/src/config/storage.d.ts +4 -0
  245. package/dist/src/config/storage.js +12 -0
  246. package/dist/src/config/storage.js.map +1 -1
  247. package/dist/src/config/storage.test.js +16 -0
  248. package/dist/src/config/storage.test.js.map +1 -1
  249. package/dist/src/confirmation-bus/message-bus.d.ts +6 -0
  250. package/dist/src/confirmation-bus/message-bus.js +66 -3
  251. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  252. package/dist/src/confirmation-bus/types.d.ts +29 -2
  253. package/dist/src/confirmation-bus/types.js +3 -0
  254. package/dist/src/confirmation-bus/types.js.map +1 -1
  255. package/dist/src/core/baseLlmClient.d.ts +30 -2
  256. package/dist/src/core/baseLlmClient.js +107 -49
  257. package/dist/src/core/baseLlmClient.js.map +1 -1
  258. package/dist/src/core/baseLlmClient.test.js +271 -13
  259. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  260. package/dist/src/core/client.d.ts +5 -1
  261. package/dist/src/core/client.js +241 -63
  262. package/dist/src/core/client.js.map +1 -1
  263. package/dist/src/core/client.test.js +462 -72
  264. package/dist/src/core/client.test.js.map +1 -1
  265. package/dist/src/core/clientHookTriggers.d.ts +36 -0
  266. package/dist/src/core/clientHookTriggers.js +76 -0
  267. package/dist/src/core/clientHookTriggers.js.map +1 -0
  268. package/dist/src/core/contentGenerator.js +17 -4
  269. package/dist/src/core/contentGenerator.js.map +1 -1
  270. package/dist/src/core/contentGenerator.test.js +132 -3
  271. package/dist/src/core/contentGenerator.test.js.map +1 -1
  272. package/dist/src/core/coreToolHookTriggers.d.ts +55 -0
  273. package/dist/src/core/coreToolHookTriggers.js +304 -0
  274. package/dist/src/core/coreToolHookTriggers.js.map +1 -0
  275. package/dist/src/core/coreToolHookTriggers.test.d.ts +6 -0
  276. package/dist/src/core/coreToolHookTriggers.test.js +191 -0
  277. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -0
  278. package/dist/src/core/coreToolScheduler.d.ts +6 -85
  279. package/dist/src/core/coreToolScheduler.js +69 -267
  280. package/dist/src/core/coreToolScheduler.js.map +1 -1
  281. package/dist/src/core/coreToolScheduler.test.js +161 -346
  282. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  283. package/dist/src/core/geminiChat.js +132 -76
  284. package/dist/src/core/geminiChat.js.map +1 -1
  285. package/dist/src/core/geminiChat.test.js +240 -257
  286. package/dist/src/core/geminiChat.test.js.map +1 -1
  287. package/dist/src/core/geminiChatHookTriggers.d.ts +64 -0
  288. package/dist/src/core/geminiChatHookTriggers.js +136 -0
  289. package/dist/src/core/geminiChatHookTriggers.js.map +1 -0
  290. package/dist/src/core/geminiChat_network_retry.test.d.ts +6 -0
  291. package/dist/src/core/geminiChat_network_retry.test.js +196 -0
  292. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -0
  293. package/dist/src/core/logger.js.map +1 -1
  294. package/dist/src/core/loggingContentGenerator.js +23 -6
  295. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  296. package/dist/src/core/nonInteractiveToolExecutor.test.js +13 -8
  297. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  298. package/dist/src/core/openaiContentGenerator.d.ts +25 -0
  299. package/dist/src/core/openaiContentGenerator.js +243 -14
  300. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  301. package/dist/src/core/prompts.js +82 -26
  302. package/dist/src/core/prompts.js.map +1 -1
  303. package/dist/src/core/prompts.test.js +102 -3
  304. package/dist/src/core/prompts.test.js.map +1 -1
  305. package/dist/src/core/sessionHookTriggers.d.ts +29 -0
  306. package/dist/src/core/sessionHookTriggers.js +75 -0
  307. package/dist/src/core/sessionHookTriggers.js.map +1 -0
  308. package/dist/src/core/turn.d.ts +34 -21
  309. package/dist/src/core/turn.js +33 -13
  310. package/dist/src/core/turn.js.map +1 -1
  311. package/dist/src/core/turn.test.js +0 -5
  312. package/dist/src/core/turn.test.js.map +1 -1
  313. package/dist/src/fallback/handler.js +101 -93
  314. package/dist/src/fallback/handler.js.map +1 -1
  315. package/dist/src/fallback/handler.test.js +186 -173
  316. package/dist/src/fallback/handler.test.js.map +1 -1
  317. package/dist/src/fallback/types.d.ts +8 -0
  318. package/dist/src/generated/git-commit.d.ts +3 -3
  319. package/dist/src/generated/git-commit.js +3 -3
  320. package/dist/src/generated/git-commit.js.map +1 -1
  321. package/dist/src/hooks/hookAggregator.js +7 -0
  322. package/dist/src/hooks/hookAggregator.js.map +1 -1
  323. package/dist/src/hooks/hookEventHandler.d.ts +113 -0
  324. package/dist/src/hooks/hookEventHandler.js +571 -0
  325. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  326. package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  327. package/dist/src/hooks/hookEventHandler.test.js +461 -0
  328. package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
  329. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  330. package/dist/src/hooks/hookPlanner.js +2 -7
  331. package/dist/src/hooks/hookPlanner.js.map +1 -1
  332. package/dist/src/hooks/hookPlanner.test.js +62 -2
  333. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  334. package/dist/src/hooks/hookRegistry.d.ts +6 -18
  335. package/dist/src/hooks/hookRegistry.js +49 -35
  336. package/dist/src/hooks/hookRegistry.js.map +1 -1
  337. package/dist/src/hooks/hookRegistry.test.js +167 -8
  338. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  339. package/dist/src/hooks/hookRunner.d.ts +5 -3
  340. package/dist/src/hooks/hookRunner.js +74 -18
  341. package/dist/src/hooks/hookRunner.js.map +1 -1
  342. package/dist/src/hooks/hookRunner.test.js +174 -36
  343. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  344. package/dist/src/hooks/hookSystem.d.ts +40 -0
  345. package/dist/src/hooks/hookSystem.js +65 -0
  346. package/dist/src/hooks/hookSystem.js.map +1 -0
  347. package/dist/src/hooks/hookSystem.test.d.ts +6 -0
  348. package/dist/src/hooks/hookSystem.test.js +319 -0
  349. package/dist/src/hooks/hookSystem.test.js.map +1 -0
  350. package/dist/src/hooks/index.d.ts +17 -0
  351. package/dist/src/hooks/index.js +18 -0
  352. package/dist/src/hooks/index.js.map +1 -0
  353. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  354. package/dist/src/hooks/trustedHooks.js +90 -0
  355. package/dist/src/hooks/trustedHooks.js.map +1 -0
  356. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  357. package/dist/src/hooks/trustedHooks.test.js +154 -0
  358. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  359. package/dist/src/hooks/types.d.ts +21 -11
  360. package/dist/src/hooks/types.js +31 -27
  361. package/dist/src/hooks/types.js.map +1 -1
  362. package/dist/src/hooks/types.test.js +5 -24
  363. package/dist/src/hooks/types.test.js.map +1 -1
  364. package/dist/src/ide/detect-ide.test.js +32 -1
  365. package/dist/src/ide/detect-ide.test.js.map +1 -1
  366. package/dist/src/ide/ide-client.js +9 -4
  367. package/dist/src/ide/ide-client.js.map +1 -1
  368. package/dist/src/ide/ide-client.test.js +17 -0
  369. package/dist/src/ide/ide-client.test.js.map +1 -1
  370. package/dist/src/ide/ide-installer.test.js +1 -1
  371. package/dist/src/ide/ide-installer.test.js.map +1 -1
  372. package/dist/src/ide/types.d.ts +4 -4
  373. package/dist/src/index.d.ts +17 -1
  374. package/dist/src/index.js +18 -2
  375. package/dist/src/index.js.map +1 -1
  376. package/dist/src/mcp/auth-provider.d.ts +16 -0
  377. package/dist/src/mcp/auth-provider.js +7 -0
  378. package/dist/src/mcp/auth-provider.js.map +1 -0
  379. package/dist/src/mcp/google-auth-provider.d.ts +10 -2
  380. package/dist/src/mcp/google-auth-provider.js +28 -0
  381. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  382. package/dist/src/mcp/google-auth-provider.test.js +45 -0
  383. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  384. package/dist/src/mcp/oauth-provider.js +6 -2
  385. package/dist/src/mcp/oauth-provider.js.map +1 -1
  386. package/dist/src/mcp/oauth-provider.test.js +4 -1
  387. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  388. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  389. package/dist/src/mcp/oauth-utils.js +31 -2
  390. package/dist/src/mcp/oauth-utils.js.map +1 -1
  391. package/dist/src/mcp/oauth-utils.test.js +42 -0
  392. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  393. package/dist/src/mcp/sa-impersonation-provider.d.ts +2 -2
  394. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  395. package/dist/src/mcp/token-storage/hybrid-token-storage.js +1 -1
  396. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
  397. package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
  398. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  399. package/dist/src/output/json-formatter.d.ts +2 -2
  400. package/dist/src/output/json-formatter.js +6 -3
  401. package/dist/src/output/json-formatter.js.map +1 -1
  402. package/dist/src/output/json-formatter.test.js +37 -9
  403. package/dist/src/output/json-formatter.test.js.map +1 -1
  404. package/dist/src/output/stream-json-formatter.js +6 -0
  405. package/dist/src/output/stream-json-formatter.js.map +1 -1
  406. package/dist/src/output/stream-json-formatter.test.js +98 -100
  407. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  408. package/dist/src/output/types.d.ts +3 -0
  409. package/dist/src/output/types.js.map +1 -1
  410. package/dist/src/policy/config.js +140 -15
  411. package/dist/src/policy/config.js.map +1 -1
  412. package/dist/src/policy/config.test.js +21 -0
  413. package/dist/src/policy/config.test.js.map +1 -1
  414. package/dist/src/policy/persistence.test.d.ts +6 -0
  415. package/dist/src/policy/persistence.test.js +154 -0
  416. package/dist/src/policy/persistence.test.js.map +1 -0
  417. package/dist/src/policy/policies/agent.toml +31 -0
  418. package/dist/src/policy/policies/read-only.toml +5 -0
  419. package/dist/src/policy/policies/write.toml +5 -0
  420. package/dist/src/policy/policies/yolo.toml +1 -0
  421. package/dist/src/policy/policy-engine.d.ts +30 -1
  422. package/dist/src/policy/policy-engine.js +192 -5
  423. package/dist/src/policy/policy-engine.js.map +1 -1
  424. package/dist/src/policy/policy-engine.test.js +520 -3
  425. package/dist/src/policy/policy-engine.test.js.map +1 -1
  426. package/dist/src/policy/policy-updater.test.d.ts +6 -0
  427. package/dist/src/policy/policy-updater.test.js +116 -0
  428. package/dist/src/policy/policy-updater.test.js.map +1 -0
  429. package/dist/src/policy/shell-safety.test.d.ts +6 -0
  430. package/dist/src/policy/shell-safety.test.js +75 -0
  431. package/dist/src/policy/shell-safety.test.js.map +1 -0
  432. package/dist/src/policy/toml-loader.d.ts +3 -5
  433. package/dist/src/policy/toml-loader.js +12 -60
  434. package/dist/src/policy/toml-loader.js.map +1 -1
  435. package/dist/src/policy/toml-loader.test.js +38 -7
  436. package/dist/src/policy/toml-loader.test.js.map +1 -1
  437. package/dist/src/policy/types.d.ts +72 -1
  438. package/dist/src/policy/types.js +21 -0
  439. package/dist/src/policy/types.js.map +1 -1
  440. package/dist/src/policy/utils.d.ts +21 -0
  441. package/dist/src/policy/utils.js +42 -0
  442. package/dist/src/policy/utils.js.map +1 -0
  443. package/dist/src/policy/utils.test.d.ts +6 -0
  444. package/dist/src/policy/utils.test.js +64 -0
  445. package/dist/src/policy/utils.test.js.map +1 -0
  446. package/dist/src/resources/resource-registry.d.ts +30 -0
  447. package/dist/src/resources/resource-registry.js +57 -0
  448. package/dist/src/resources/resource-registry.js.map +1 -0
  449. package/dist/src/resources/resource-registry.test.d.ts +6 -0
  450. package/dist/src/resources/resource-registry.test.js +54 -0
  451. package/dist/src/resources/resource-registry.test.js.map +1 -0
  452. package/dist/src/routing/modelRouterService.js +0 -15
  453. package/dist/src/routing/modelRouterService.js.map +1 -1
  454. package/dist/src/routing/modelRouterService.test.js +0 -62
  455. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  456. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  457. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  458. package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
  459. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  460. package/dist/src/routing/strategies/compositeStrategy.js +4 -2
  461. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  462. package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
  463. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  464. package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
  465. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  466. package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
  467. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  468. package/dist/src/routing/strategies/overrideStrategy.js +3 -2
  469. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  470. package/dist/src/safety/checker-runner.js +17 -6
  471. package/dist/src/safety/checker-runner.js.map +1 -1
  472. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  473. package/dist/src/scheduler/tool-executor.js +198 -0
  474. package/dist/src/scheduler/tool-executor.js.map +1 -0
  475. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  476. package/dist/src/scheduler/tool-executor.test.js +231 -0
  477. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  478. package/dist/src/scheduler/types.d.ts +95 -0
  479. package/dist/src/scheduler/types.js +7 -0
  480. package/dist/src/scheduler/types.js.map +1 -0
  481. package/dist/src/services/chatCompressionService.d.ts +1 -0
  482. package/dist/src/services/chatCompressionService.js +38 -8
  483. package/dist/src/services/chatCompressionService.js.map +1 -1
  484. package/dist/src/services/chatCompressionService.test.js +35 -31
  485. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  486. package/dist/src/services/chatRecordingService.d.ts +14 -0
  487. package/dist/src/services/chatRecordingService.js +37 -0
  488. package/dist/src/services/chatRecordingService.js.map +1 -1
  489. package/dist/src/services/contextManager.d.ts +29 -0
  490. package/dist/src/services/contextManager.js +71 -0
  491. package/dist/src/services/contextManager.js.map +1 -0
  492. package/dist/src/services/contextManager.test.d.ts +6 -0
  493. package/dist/src/services/contextManager.test.js +104 -0
  494. package/dist/src/services/contextManager.test.js.map +1 -0
  495. package/dist/src/services/environmentSanitization.d.ts +15 -0
  496. package/dist/src/services/environmentSanitization.js +141 -0
  497. package/dist/src/services/environmentSanitization.js.map +1 -0
  498. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  499. package/dist/src/services/environmentSanitization.test.js +284 -0
  500. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  501. package/dist/src/services/fileSystemService.d.ts +0 -9
  502. package/dist/src/services/fileSystemService.js +0 -11
  503. package/dist/src/services/fileSystemService.js.map +1 -1
  504. package/dist/src/services/gitService.js +18 -2
  505. package/dist/src/services/gitService.js.map +1 -1
  506. package/dist/src/services/gitService.test.js +56 -0
  507. package/dist/src/services/gitService.test.js.map +1 -1
  508. package/dist/src/services/loopDetectionService.js +5 -4
  509. package/dist/src/services/loopDetectionService.js.map +1 -1
  510. package/dist/src/services/loopDetectionService.test.js +14 -8
  511. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  512. package/dist/src/services/modelConfig.golden.test.js +32 -0
  513. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  514. package/dist/src/services/modelConfig.integration.test.js +1 -1
  515. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  516. package/dist/src/services/modelConfigService.d.ts +4 -0
  517. package/dist/src/services/modelConfigService.js +8 -3
  518. package/dist/src/services/modelConfigService.js.map +1 -1
  519. package/dist/src/services/modelConfigService.test.js +221 -0
  520. package/dist/src/services/modelConfigService.test.js.map +1 -1
  521. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  522. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  523. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  524. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  525. package/dist/src/services/sessionSummaryService.js +131 -0
  526. package/dist/src/services/sessionSummaryService.js.map +1 -0
  527. package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
  528. package/dist/src/services/sessionSummaryService.test.js +785 -0
  529. package/dist/src/services/sessionSummaryService.test.js.map +1 -0
  530. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  531. package/dist/src/services/sessionSummaryUtils.js +129 -0
  532. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  533. package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
  534. package/dist/src/services/sessionSummaryUtils.test.js +137 -0
  535. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
  536. package/dist/src/services/shellExecutionService.d.ts +4 -0
  537. package/dist/src/services/shellExecutionService.js +45 -27
  538. package/dist/src/services/shellExecutionService.js.map +1 -1
  539. package/dist/src/services/shellExecutionService.test.js +240 -8
  540. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  541. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  542. package/dist/src/services/test-data/resolved-aliases.golden.json +36 -0
  543. package/dist/src/skills/skillLoader.d.ts +28 -0
  544. package/dist/src/skills/skillLoader.js +77 -0
  545. package/dist/src/skills/skillLoader.js.map +1 -0
  546. package/dist/src/skills/skillLoader.test.d.ts +1 -0
  547. package/dist/src/skills/skillLoader.test.js +2 -0
  548. package/dist/src/skills/skillLoader.test.js.map +1 -0
  549. package/dist/src/skills/skillManager.d.ts +51 -0
  550. package/dist/src/skills/skillManager.js +89 -0
  551. package/dist/src/skills/skillManager.js.map +1 -0
  552. package/dist/src/skills/skillManager.test.d.ts +6 -0
  553. package/dist/src/skills/skillManager.test.js +128 -0
  554. package/dist/src/skills/skillManager.test.js.map +1 -0
  555. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  556. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +11 -7
  557. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +127 -47
  558. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  559. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +105 -18
  560. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  561. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -3
  562. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +20 -5
  563. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  564. package/dist/src/telemetry/config.js +2 -0
  565. package/dist/src/telemetry/config.js.map +1 -1
  566. package/dist/src/telemetry/config.test.js +25 -0
  567. package/dist/src/telemetry/config.test.js.map +1 -1
  568. package/dist/src/telemetry/gcp-exporters.d.ts +4 -3
  569. package/dist/src/telemetry/gcp-exporters.js +8 -4
  570. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  571. package/dist/src/telemetry/index.d.ts +2 -1
  572. package/dist/src/telemetry/index.js +2 -1
  573. package/dist/src/telemetry/index.js.map +1 -1
  574. package/dist/src/telemetry/loggers.d.ts +5 -3
  575. package/dist/src/telemetry/loggers.js +353 -334
  576. package/dist/src/telemetry/loggers.js.map +1 -1
  577. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  578. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  579. package/dist/src/telemetry/loggers.test.js +238 -31
  580. package/dist/src/telemetry/loggers.test.js.map +1 -1
  581. package/dist/src/telemetry/metrics.d.ts +22 -0
  582. package/dist/src/telemetry/metrics.js +32 -0
  583. package/dist/src/telemetry/metrics.js.map +1 -1
  584. package/dist/src/telemetry/metrics.test.js +64 -0
  585. package/dist/src/telemetry/metrics.test.js.map +1 -1
  586. package/dist/src/telemetry/sanitize.d.ts +25 -0
  587. package/dist/src/telemetry/sanitize.js +48 -0
  588. package/dist/src/telemetry/sanitize.js.map +1 -0
  589. package/dist/src/telemetry/sanitize.test.d.ts +6 -0
  590. package/dist/src/telemetry/sanitize.test.js +279 -0
  591. package/dist/src/telemetry/sanitize.test.js.map +1 -0
  592. package/dist/src/telemetry/sdk.d.ts +9 -2
  593. package/dist/src/telemetry/sdk.js +142 -17
  594. package/dist/src/telemetry/sdk.js.map +1 -1
  595. package/dist/src/telemetry/sdk.test.js +130 -28
  596. package/dist/src/telemetry/sdk.test.js.map +1 -1
  597. package/dist/src/telemetry/semantic.js +1 -1
  598. package/dist/src/telemetry/semantic.js.map +1 -1
  599. package/dist/src/telemetry/startupProfiler.d.ts +51 -0
  600. package/dist/src/telemetry/startupProfiler.js +170 -0
  601. package/dist/src/telemetry/startupProfiler.js.map +1 -0
  602. package/dist/src/telemetry/startupProfiler.test.d.ts +6 -0
  603. package/dist/src/telemetry/startupProfiler.test.js +285 -0
  604. package/dist/src/telemetry/startupProfiler.test.js.map +1 -0
  605. package/dist/src/telemetry/telemetry.test.js +10 -3
  606. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  607. package/dist/src/telemetry/trace.js +2 -2
  608. package/dist/src/telemetry/trace.js.map +1 -1
  609. package/dist/src/telemetry/types.d.ts +62 -16
  610. package/dist/src/telemetry/types.js +157 -27
  611. package/dist/src/telemetry/types.js.map +1 -1
  612. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  613. package/dist/src/telemetry/uiTelemetry.js +2 -0
  614. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  615. package/dist/src/telemetry/uiTelemetry.test.js +4 -0
  616. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  617. package/dist/src/test-utils/mock-message-bus.d.ts +61 -0
  618. package/dist/src/test-utils/mock-message-bus.js +160 -0
  619. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  620. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  621. package/dist/src/test-utils/mock-tool.js +12 -11
  622. package/dist/src/test-utils/mock-tool.js.map +1 -1
  623. package/dist/src/tools/activate-skill.d.ts +27 -0
  624. package/dist/src/tools/activate-skill.js +120 -0
  625. package/dist/src/tools/activate-skill.js.map +1 -0
  626. package/dist/src/tools/activate-skill.test.d.ts +6 -0
  627. package/dist/src/tools/activate-skill.test.js +95 -0
  628. package/dist/src/tools/activate-skill.test.js.map +1 -0
  629. package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
  630. package/dist/src/tools/confirmation-policy.test.js +142 -0
  631. package/dist/src/tools/confirmation-policy.test.js.map +1 -0
  632. package/dist/src/tools/edit.d.ts +27 -5
  633. package/dist/src/tools/edit.js +449 -137
  634. package/dist/src/tools/edit.js.map +1 -1
  635. package/dist/src/tools/edit.test.js +258 -526
  636. package/dist/src/tools/edit.test.js.map +1 -1
  637. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  638. package/dist/src/tools/get-internal-docs.js +129 -0
  639. package/dist/src/tools/get-internal-docs.js.map +1 -0
  640. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  641. package/dist/src/tools/get-internal-docs.test.js +57 -0
  642. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  643. package/dist/src/tools/glob.d.ts +2 -2
  644. package/dist/src/tools/glob.js +1 -1
  645. package/dist/src/tools/glob.js.map +1 -1
  646. package/dist/src/tools/glob.test.js +2 -1
  647. package/dist/src/tools/glob.test.js.map +1 -1
  648. package/dist/src/tools/grep.d.ts +2 -2
  649. package/dist/src/tools/grep.js +1 -1
  650. package/dist/src/tools/grep.js.map +1 -1
  651. package/dist/src/tools/grep.test.js +5 -4
  652. package/dist/src/tools/grep.test.js.map +1 -1
  653. package/dist/src/tools/ls.d.ts +2 -2
  654. package/dist/src/tools/ls.js +2 -2
  655. package/dist/src/tools/ls.js.map +1 -1
  656. package/dist/src/tools/ls.test.js +2 -1
  657. package/dist/src/tools/ls.test.js.map +1 -1
  658. package/dist/src/tools/mcp-client-manager.d.ts +3 -1
  659. package/dist/src/tools/mcp-client-manager.js +42 -9
  660. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  661. package/dist/src/tools/mcp-client-manager.test.js +66 -10
  662. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  663. package/dist/src/tools/mcp-client.d.ts +44 -6
  664. package/dist/src/tools/mcp-client.js +476 -176
  665. package/dist/src/tools/mcp-client.js.map +1 -1
  666. package/dist/src/tools/mcp-client.test.js +633 -36
  667. package/dist/src/tools/mcp-client.test.js.map +1 -1
  668. package/dist/src/tools/mcp-tool.d.ts +2 -2
  669. package/dist/src/tools/mcp-tool.js +20 -7
  670. package/dist/src/tools/mcp-tool.js.map +1 -1
  671. package/dist/src/tools/mcp-tool.test.js +35 -5
  672. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  673. package/dist/src/tools/memoryTool.d.ts +3 -3
  674. package/dist/src/tools/memoryTool.js +3 -4
  675. package/dist/src/tools/memoryTool.js.map +1 -1
  676. package/dist/src/tools/memoryTool.test.js +5 -2
  677. package/dist/src/tools/memoryTool.test.js.map +1 -1
  678. package/dist/src/tools/message-bus-integration.test.js +10 -37
  679. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  680. package/dist/src/tools/modifiable-tool.js.map +1 -1
  681. package/dist/src/tools/modifiable-tool.test.js +22 -13
  682. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  683. package/dist/src/tools/read-file.d.ts +2 -2
  684. package/dist/src/tools/read-file.js +2 -2
  685. package/dist/src/tools/read-file.js.map +1 -1
  686. package/dist/src/tools/read-file.test.js +3 -2
  687. package/dist/src/tools/read-file.test.js.map +1 -1
  688. package/dist/src/tools/read-many-files.d.ts +2 -2
  689. package/dist/src/tools/read-many-files.js +7 -6
  690. package/dist/src/tools/read-many-files.js.map +1 -1
  691. package/dist/src/tools/read-many-files.test.js +4 -3
  692. package/dist/src/tools/read-many-files.test.js.map +1 -1
  693. package/dist/src/tools/ripGrep.d.ts +3 -2
  694. package/dist/src/tools/ripGrep.js +18 -7
  695. package/dist/src/tools/ripGrep.js.map +1 -1
  696. package/dist/src/tools/ripGrep.test.js +60 -4
  697. package/dist/src/tools/ripGrep.test.js.map +1 -1
  698. package/dist/src/tools/shell.d.ts +5 -7
  699. package/dist/src/tools/shell.js +77 -51
  700. package/dist/src/tools/shell.js.map +1 -1
  701. package/dist/src/tools/shell.test.js +59 -63
  702. package/dist/src/tools/shell.test.js.map +1 -1
  703. package/dist/src/tools/tool-error.d.ts +2 -1
  704. package/dist/src/tools/tool-error.js +2 -0
  705. package/dist/src/tools/tool-error.js.map +1 -1
  706. package/dist/src/tools/tool-names.d.ts +17 -0
  707. package/dist/src/tools/tool-names.js +59 -0
  708. package/dist/src/tools/tool-names.js.map +1 -1
  709. package/dist/src/tools/tool-names.test.d.ts +6 -0
  710. package/dist/src/tools/tool-names.test.js +43 -0
  711. package/dist/src/tools/tool-names.test.js.map +1 -0
  712. package/dist/src/tools/tool-registry.d.ts +11 -7
  713. package/dist/src/tools/tool-registry.js +15 -10
  714. package/dist/src/tools/tool-registry.js.map +1 -1
  715. package/dist/src/tools/tool-registry.test.js +16 -11
  716. package/dist/src/tools/tool-registry.test.js.map +1 -1
  717. package/dist/src/tools/tools.d.ts +25 -6
  718. package/dist/src/tools/tools.js +44 -25
  719. package/dist/src/tools/tools.js.map +1 -1
  720. package/dist/src/tools/tools.test.js +3 -1
  721. package/dist/src/tools/tools.test.js.map +1 -1
  722. package/dist/src/tools/web-fetch.d.ts +2 -2
  723. package/dist/src/tools/web-fetch.js +22 -9
  724. package/dist/src/tools/web-fetch.js.map +1 -1
  725. package/dist/src/tools/web-fetch.test.js +18 -19
  726. package/dist/src/tools/web-fetch.test.js.map +1 -1
  727. package/dist/src/tools/web-search.d.ts +2 -2
  728. package/dist/src/tools/web-search.js +5 -5
  729. package/dist/src/tools/web-search.js.map +1 -1
  730. package/dist/src/tools/web-search.test.js +2 -1
  731. package/dist/src/tools/web-search.test.js.map +1 -1
  732. package/dist/src/tools/write-file.d.ts +2 -2
  733. package/dist/src/tools/write-file.js +10 -4
  734. package/dist/src/tools/write-file.js.map +1 -1
  735. package/dist/src/tools/write-file.test.js +4 -1
  736. package/dist/src/tools/write-file.test.js.map +1 -1
  737. package/dist/src/tools/write-todos.d.ts +2 -2
  738. package/dist/src/tools/write-todos.js +5 -4
  739. package/dist/src/tools/write-todos.js.map +1 -1
  740. package/dist/src/tools/write-todos.test.js +2 -1
  741. package/dist/src/tools/write-todos.test.js.map +1 -1
  742. package/dist/src/utils/bfsFileSearch.d.ts +8 -0
  743. package/dist/src/utils/bfsFileSearch.js +63 -23
  744. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  745. package/dist/src/utils/bfsFileSearch.test.js +65 -1
  746. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  747. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  748. package/dist/src/utils/checkpointUtils.js +117 -0
  749. package/dist/src/utils/checkpointUtils.js.map +1 -0
  750. package/dist/src/utils/checkpointUtils.test.d.ts +6 -0
  751. package/dist/src/utils/checkpointUtils.test.js +229 -0
  752. package/dist/src/utils/checkpointUtils.test.js.map +1 -0
  753. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  754. package/dist/src/utils/customHeaderUtils.js +34 -0
  755. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  756. package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
  757. package/dist/src/utils/customHeaderUtils.test.js +77 -0
  758. package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
  759. package/dist/src/utils/debugLogger.d.ts +3 -0
  760. package/dist/src/utils/debugLogger.js +28 -0
  761. package/dist/src/utils/debugLogger.js.map +1 -1
  762. package/dist/src/utils/editCorrector.js +6 -5
  763. package/dist/src/utils/editCorrector.js.map +1 -1
  764. package/dist/src/utils/editCorrector.test.js +7 -3
  765. package/dist/src/utils/editCorrector.test.js.map +1 -1
  766. package/dist/src/utils/editor.d.ts +9 -1
  767. package/dist/src/utils/editor.js +23 -14
  768. package/dist/src/utils/editor.js.map +1 -1
  769. package/dist/src/utils/environmentContext.d.ts +1 -0
  770. package/dist/src/utils/environmentContext.js +4 -0
  771. package/dist/src/utils/environmentContext.js.map +1 -1
  772. package/dist/src/utils/environmentContext.test.js +2 -0
  773. package/dist/src/utils/environmentContext.test.js.map +1 -1
  774. package/dist/src/utils/errorReporting.d.ts +1 -1
  775. package/dist/src/utils/errorReporting.js +13 -12
  776. package/dist/src/utils/errorReporting.js.map +1 -1
  777. package/dist/src/utils/errorReporting.test.js +17 -14
  778. package/dist/src/utils/errorReporting.test.js.map +1 -1
  779. package/dist/src/utils/errors.d.ts +8 -0
  780. package/dist/src/utils/errors.js +39 -2
  781. package/dist/src/utils/errors.js.map +1 -1
  782. package/dist/src/utils/errors.test.d.ts +6 -0
  783. package/dist/src/utils/errors.test.js +155 -0
  784. package/dist/src/utils/errors.test.js.map +1 -0
  785. package/dist/src/utils/events.d.ts +49 -19
  786. package/dist/src/utils/events.js +21 -9
  787. package/dist/src/utils/events.js.map +1 -1
  788. package/dist/src/utils/events.test.js +25 -0
  789. package/dist/src/utils/events.test.js.map +1 -1
  790. package/dist/src/utils/exitCodes.d.ts +12 -0
  791. package/dist/src/utils/exitCodes.js +13 -0
  792. package/dist/src/utils/exitCodes.js.map +1 -0
  793. package/dist/src/utils/extensionLoader.d.ts +2 -2
  794. package/dist/src/utils/extensionLoader.js +5 -6
  795. package/dist/src/utils/extensionLoader.js.map +1 -1
  796. package/dist/src/utils/extensionLoader.test.js +11 -0
  797. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  798. package/dist/src/utils/fetch.d.ts +1 -1
  799. package/dist/src/utils/fetch.js +3 -3
  800. package/dist/src/utils/fetch.js.map +1 -1
  801. package/dist/src/utils/fileUtils.d.ts +4 -0
  802. package/dist/src/utils/fileUtils.js +53 -0
  803. package/dist/src/utils/fileUtils.js.map +1 -1
  804. package/dist/src/utils/fileUtils.test.js +127 -1
  805. package/dist/src/utils/fileUtils.test.js.map +1 -1
  806. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  807. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  808. package/dist/src/utils/flashFallback.test.js +1 -1
  809. package/dist/src/utils/flashFallback.test.js.map +1 -1
  810. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  811. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  812. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  813. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  814. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  815. package/dist/src/utils/generateContentResponseUtilities.d.ts +3 -1
  816. package/dist/src/utils/generateContentResponseUtilities.js +106 -0
  817. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  818. package/dist/src/utils/generateContentResponseUtilities.test.js +279 -2
  819. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  820. package/dist/src/utils/getFolderStructure.js +7 -2
  821. package/dist/src/utils/getFolderStructure.js.map +1 -1
  822. package/dist/src/utils/googleErrors.js +31 -18
  823. package/dist/src/utils/googleErrors.js.map +1 -1
  824. package/dist/src/utils/googleErrors.test.js +10 -2
  825. package/dist/src/utils/googleErrors.test.js.map +1 -1
  826. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  827. package/dist/src/utils/googleQuotaErrors.js +32 -6
  828. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  829. package/dist/src/utils/googleQuotaErrors.test.js +94 -2
  830. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  831. package/dist/src/utils/memoryDiscovery.d.ts +5 -0
  832. package/dist/src/utils/memoryDiscovery.js +9 -5
  833. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  834. package/dist/src/utils/memoryDiscovery.test.js +31 -1
  835. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  836. package/dist/src/utils/nextSpeakerChecker.test.js +4 -0
  837. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  838. package/dist/src/utils/package.d.ts +14 -0
  839. package/dist/src/utils/package.js +15 -2
  840. package/dist/src/utils/package.js.map +1 -1
  841. package/dist/src/utils/pathCorrector.js +12 -2
  842. package/dist/src/utils/pathCorrector.js.map +1 -1
  843. package/dist/src/utils/pathCorrector.test.js +6 -2
  844. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  845. package/dist/src/utils/retry.d.ts +11 -0
  846. package/dist/src/utils/retry.js +62 -21
  847. package/dist/src/utils/retry.js.map +1 -1
  848. package/dist/src/utils/retry.test.js +170 -10
  849. package/dist/src/utils/retry.test.js.map +1 -1
  850. package/dist/src/utils/schemaValidator.d.ts +1 -1
  851. package/dist/src/utils/schemaValidator.js +1 -1
  852. package/dist/src/utils/shell-permissions.d.ts +52 -0
  853. package/dist/src/utils/shell-permissions.js +188 -0
  854. package/dist/src/utils/shell-permissions.js.map +1 -0
  855. package/dist/src/utils/shell-permissions.test.d.ts +6 -0
  856. package/dist/src/utils/shell-permissions.test.js +369 -0
  857. package/dist/src/utils/shell-permissions.test.js.map +1 -0
  858. package/dist/src/utils/shell-utils.d.ts +16 -47
  859. package/dist/src/utils/shell-utils.js +99 -195
  860. package/dist/src/utils/shell-utils.js.map +1 -1
  861. package/dist/src/utils/shell-utils.test.js +99 -288
  862. package/dist/src/utils/shell-utils.test.js.map +1 -1
  863. package/dist/src/utils/stdio.d.ts +2 -2
  864. package/dist/src/utils/stdio.js +2 -2
  865. package/dist/src/utils/stdio.js.map +1 -1
  866. package/dist/src/utils/stdio.test.js +5 -5
  867. package/dist/src/utils/stdio.test.js.map +1 -1
  868. package/dist/src/utils/summarizer.test.js +3 -2
  869. package/dist/src/utils/summarizer.test.js.map +1 -1
  870. package/dist/src/utils/terminal.d.ts +4 -0
  871. package/dist/src/utils/terminal.js +12 -0
  872. package/dist/src/utils/terminal.js.map +1 -1
  873. package/dist/src/utils/terminalSerializer.test.js +17 -0
  874. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  875. package/dist/src/utils/tokenCalculation.d.ts +19 -0
  876. package/dist/src/utils/tokenCalculation.js +85 -0
  877. package/dist/src/utils/tokenCalculation.js.map +1 -0
  878. package/dist/src/utils/tokenCalculation.test.d.ts +6 -0
  879. package/dist/src/utils/tokenCalculation.test.js +87 -0
  880. package/dist/src/utils/tokenCalculation.test.js.map +1 -0
  881. package/dist/src/utils/tool-utils.d.ts +9 -0
  882. package/dist/src/utils/tool-utils.js +29 -0
  883. package/dist/src/utils/tool-utils.js.map +1 -1
  884. package/dist/src/utils/tool-utils.test.js +17 -2
  885. package/dist/src/utils/tool-utils.test.js.map +1 -1
  886. package/dist/src/utils/version.d.ts +6 -0
  887. package/dist/src/utils/version.js +15 -0
  888. package/dist/src/utils/version.js.map +1 -0
  889. package/dist/src/utils/version.test.d.ts +6 -0
  890. package/dist/src/utils/version.test.js +39 -0
  891. package/dist/src/utils/version.test.js.map +1 -0
  892. package/dist/tsconfig.tsbuildinfo +1 -1
  893. package/package.json +8 -7
@@ -22,7 +22,9 @@ import { RipGrepTool, canUseRipgrep } from '../tools/ripGrep.js';
22
22
  import { logRipgrepFallback } from '../telemetry/loggers.js';
23
23
  import { RipgrepFallbackEvent } from '../telemetry/types.js';
24
24
  import { ToolRegistry } from '../tools/tool-registry.js';
25
+ import { ACTIVATE_SKILL_TOOL_NAME } from '../tools/tool-names.js';
25
26
  import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
27
+ import { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_MODEL_AUTO, } from './models.js';
26
28
  vi.mock('fs', async (importOriginal) => {
27
29
  const actual = await importOriginal();
28
30
  return {
@@ -38,6 +40,7 @@ vi.mock('fs', async (importOriginal) => {
38
40
  vi.mock('../tools/tool-registry', () => {
39
41
  const ToolRegistryMock = vi.fn();
40
42
  ToolRegistryMock.prototype.registerTool = vi.fn();
43
+ ToolRegistryMock.prototype.unregisterTool = vi.fn();
41
44
  ToolRegistryMock.prototype.discoverAllTools = vi.fn();
42
45
  ToolRegistryMock.prototype.sortTools = vi.fn();
43
46
  ToolRegistryMock.prototype.getAllTools = vi.fn(() => []); // Mock methods if needed
@@ -45,6 +48,12 @@ vi.mock('../tools/tool-registry', () => {
45
48
  ToolRegistryMock.prototype.getFunctionDeclarations = vi.fn(() => []);
46
49
  return { ToolRegistry: ToolRegistryMock };
47
50
  });
51
+ vi.mock('../tools/mcp-client-manager.js', () => ({
52
+ McpClientManager: vi.fn().mockImplementation(() => ({
53
+ startConfiguredMcpServers: vi.fn(),
54
+ getMcpInstructions: vi.fn().mockReturnValue('MCP Instructions'),
55
+ })),
56
+ }));
48
57
  vi.mock('../utils/memoryDiscovery.js', () => ({
49
58
  loadServerHierarchicalMemory: vi.fn(),
50
59
  }));
@@ -75,6 +84,7 @@ vi.mock('../core/client.js', () => ({
75
84
  GeminiClient: vi.fn().mockImplementation(() => ({
76
85
  initialize: vi.fn().mockResolvedValue(undefined),
77
86
  stripThoughtsFromHistory: vi.fn(),
87
+ isInitialized: vi.fn().mockReturnValue(false),
78
88
  })),
79
89
  }));
80
90
  vi.mock('../telemetry/index.js', async (importOriginal) => {
@@ -115,8 +125,11 @@ vi.mock('../agents/registry.js', () => {
115
125
  AgentRegistryMock.prototype.getDefinition = vi.fn();
116
126
  return { AgentRegistry: AgentRegistryMock };
117
127
  });
118
- vi.mock('../agents/subagent-tool-wrapper.js', () => ({
119
- SubagentToolWrapper: vi.fn(),
128
+ vi.mock('../agents/delegate-to-agent-tool.js', () => ({
129
+ DelegateToAgentTool: vi.fn(),
130
+ }));
131
+ vi.mock('../resources/resource-registry.js', () => ({
132
+ ResourceRegistry: vi.fn(),
120
133
  }));
121
134
  const mockCoreEvents = vi.hoisted(() => ({
122
135
  emitFeedback: vi.fn(),
@@ -130,11 +143,13 @@ vi.mock('../utils/events.js', () => ({
130
143
  vi.mock('../utils/fetch.js', () => ({
131
144
  setGlobalProxy: mockSetGlobalProxy,
132
145
  }));
146
+ vi.mock('../services/contextManager.js');
133
147
  import { BaseLlmClient } from '../core/baseLlmClient.js';
134
148
  import { tokenLimit } from '../core/tokenLimits.js';
135
149
  import { uiTelemetryService } from '../telemetry/index.js';
136
150
  import { getCodeAssistServer } from '../code_assist/codeAssist.js';
137
151
  import { getExperiments } from '../code_assist/experiments/experiments.js';
152
+ import { ContextManager } from '../services/contextManager.js';
138
153
  vi.mock('../core/baseLlmClient.js');
139
154
  vi.mock('../core/tokenLimits.js', () => ({
140
155
  tokenLimit: vi.fn(),
@@ -142,7 +157,7 @@ vi.mock('../core/tokenLimits.js', () => ({
142
157
  vi.mock('../code_assist/codeAssist.js');
143
158
  vi.mock('../code_assist/experiments/experiments.js');
144
159
  describe('Server Config (config.ts)', () => {
145
- const MODEL = 'gemini-pro';
160
+ const MODEL = DEFAULT_GEMINI_MODEL;
146
161
  const SANDBOX = {
147
162
  command: 'docker',
148
163
  image: 'gemini-cli-sandbox',
@@ -280,16 +295,19 @@ describe('Server Config (config.ts)', () => {
280
295
  apiKey: 'test-key',
281
296
  };
282
297
  vi.mocked(createContentGeneratorConfig).mockResolvedValue(mockContentConfig);
283
- // Set fallback mode to true to ensure it gets reset
284
- config.setFallbackMode(true);
285
- expect(config.isInFallbackMode()).toBe(true);
286
298
  await config.refreshAuth(authType);
287
299
  expect(createContentGeneratorConfig).toHaveBeenCalledWith(config, authType);
288
300
  // Verify that contentGeneratorConfig is updated
289
301
  expect(config.getContentGeneratorConfig()).toEqual(mockContentConfig);
290
302
  expect(GeminiClient).toHaveBeenCalledWith(config);
291
- // Verify that fallback mode is reset
292
- expect(config.isInFallbackMode()).toBe(false);
303
+ });
304
+ it('should reset model availability status', async () => {
305
+ const config = new Config(baseParams);
306
+ const service = config.getModelAvailabilityService();
307
+ const spy = vi.spyOn(service, 'reset');
308
+ vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
309
+ await config.refreshAuth(AuthType.USE_GEMINI);
310
+ expect(spy).toHaveBeenCalled();
293
311
  });
294
312
  it('should strip thoughts when switching from GenAI to Vertex', async () => {
295
313
  const config = new Config(baseParams);
@@ -613,83 +631,48 @@ describe('Server Config (config.ts)', () => {
613
631
  expect(config.getUseRipgrep()).toBe(true);
614
632
  });
615
633
  });
616
- describe('Model Router with Auth', () => {
617
- it('should disable model router by default for oauth-personal', async () => {
618
- const config = new Config({
619
- ...baseParams,
620
- useModelRouter: true,
621
- });
622
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
623
- expect(config.getUseModelRouter()).toBe(true);
624
- });
625
- it('should enable model router by default for other auth types', async () => {
626
- const config = new Config({
627
- ...baseParams,
628
- useModelRouter: true,
629
- });
630
- await config.refreshAuth(AuthType.USE_GEMINI);
631
- expect(config.getUseModelRouter()).toBe(true);
632
- });
633
- it('should disable model router for specified auth type', async () => {
634
- const config = new Config({
635
- ...baseParams,
636
- useModelRouter: true,
637
- disableModelRouterForAuth: [AuthType.USE_GEMINI],
638
- });
639
- await config.refreshAuth(AuthType.USE_GEMINI);
640
- expect(config.getUseModelRouter()).toBe(false);
634
+ describe('UseWriteTodos Configuration', () => {
635
+ it('should default useWriteTodos to true when not provided', () => {
636
+ const config = new Config(baseParams);
637
+ expect(config.getUseWriteTodos()).toBe(true);
641
638
  });
642
- it('should enable model router for other auth type', async () => {
643
- const config = new Config({
639
+ it('should set useWriteTodos to false when provided as false', () => {
640
+ const params = {
644
641
  ...baseParams,
645
- useModelRouter: true,
646
- disableModelRouterForAuth: [],
647
- });
648
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
649
- expect(config.getUseModelRouter()).toBe(true);
642
+ useWriteTodos: false,
643
+ };
644
+ const config = new Config(params);
645
+ expect(config.getUseWriteTodos()).toBe(false);
650
646
  });
651
- it('should keep model router disabled when useModelRouter is false', async () => {
652
- const config = new Config({
647
+ it('should disable useWriteTodos for preview models', () => {
648
+ const params = {
653
649
  ...baseParams,
654
- useModelRouter: false,
655
- disableModelRouterForAuth: [AuthType.USE_GEMINI],
656
- });
657
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
658
- expect(config.getUseModelRouter()).toBe(false);
650
+ model: 'gemini-3-pro-preview',
651
+ };
652
+ const config = new Config(params);
653
+ expect(config.getUseWriteTodos()).toBe(false);
659
654
  });
660
- it('should keep the user-chosen model after refreshAuth, even when model router is disabled for the auth type', async () => {
661
- const config = new Config({
655
+ it('should NOT disable useWriteTodos for non-preview models', () => {
656
+ const params = {
662
657
  ...baseParams,
663
- useModelRouter: true,
664
- disableModelRouterForAuth: [AuthType.USE_GEMINI],
665
- });
666
- const chosenModel = 'gemini-1.5-pro-latest';
667
- config.setModel(chosenModel);
668
- await config.refreshAuth(AuthType.USE_GEMINI);
669
- expect(config.getUseModelRouter()).toBe(false);
670
- expect(config.getModel()).toBe(chosenModel);
658
+ model: 'gemini-2.5-pro',
659
+ };
660
+ const config = new Config(params);
661
+ expect(config.getUseWriteTodos()).toBe(true);
671
662
  });
672
- it('should keep the user-chosen model after refreshAuth, when model router is enabled for the auth type', async () => {
673
- const config = new Config({
674
- ...baseParams,
675
- useModelRouter: true,
676
- disableModelRouterForAuth: [AuthType.USE_GEMINI],
677
- });
678
- const chosenModel = 'gemini-1.5-pro-latest';
679
- config.setModel(chosenModel);
680
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
681
- expect(config.getUseModelRouter()).toBe(true);
682
- expect(config.getModel()).toBe(chosenModel);
663
+ });
664
+ describe('Shell Tool Inactivity Timeout', () => {
665
+ it('should default to 300000ms (300 seconds) when not provided', () => {
666
+ const config = new Config(baseParams);
667
+ expect(config.getShellToolInactivityTimeout()).toBe(300000);
683
668
  });
684
- it('should NOT switch to auto model if cli provides specific model, even if router is enabled', async () => {
685
- const config = new Config({
669
+ it('should convert provided seconds to milliseconds', () => {
670
+ const params = {
686
671
  ...baseParams,
687
- useModelRouter: true,
688
- model: 'gemini-flash-latest',
689
- });
690
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
691
- expect(config.getUseModelRouter()).toBe(true);
692
- expect(config.getModel()).toBe('gemini-flash-latest');
672
+ shellToolInactivityTimeout: 10, // 10 seconds
673
+ };
674
+ const config = new Config(params);
675
+ expect(config.getShellToolInactivityTimeout()).toBe(10000);
693
676
  });
694
677
  });
695
678
  describe('ContinueOnFailedApiCall Configuration', () => {
@@ -744,13 +727,14 @@ describe('Server Config (config.ts)', () => {
744
727
  };
745
728
  const AgentRegistryMock = (await vi.importMock('../agents/registry.js')).AgentRegistry;
746
729
  AgentRegistryMock.prototype.getDefinition.mockReturnValue(mockAgentDefinition);
747
- const SubagentToolWrapperMock = (await vi.importMock('../agents/subagent-tool-wrapper.js')).SubagentToolWrapper;
730
+ const DelegateToAgentToolMock = (await vi.importMock('../agents/delegate-to-agent-tool.js')).DelegateToAgentTool;
748
731
  await config.initialize();
749
732
  const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
750
- expect(SubagentToolWrapperMock).toHaveBeenCalledTimes(1);
751
- expect(SubagentToolWrapperMock).toHaveBeenCalledWith(mockAgentDefinition, config, undefined);
733
+ expect(DelegateToAgentToolMock).toHaveBeenCalledTimes(1);
734
+ expect(DelegateToAgentToolMock).toHaveBeenCalledWith(expect.anything(), // AgentRegistry
735
+ config, expect.anything());
752
736
  const calls = registerToolMock.mock.calls;
753
- const registeredWrappers = calls.filter((call) => call[0] instanceof SubagentToolWrapperMock);
737
+ const registeredWrappers = calls.filter((call) => call[0] instanceof DelegateToAgentToolMock);
754
738
  expect(registeredWrappers).toHaveLength(1);
755
739
  });
756
740
  it('should not register subagents as tools when codebaseInvestigatorSettings.enabled is false', async () => {
@@ -759,9 +743,13 @@ describe('Server Config (config.ts)', () => {
759
743
  codebaseInvestigatorSettings: { enabled: false },
760
744
  };
761
745
  const config = new Config(params);
762
- const SubagentToolWrapperMock = (await vi.importMock('../agents/subagent-tool-wrapper.js')).SubagentToolWrapper;
746
+ const DelegateToAgentToolMock = (await vi.importMock('../agents/delegate-to-agent-tool.js')).DelegateToAgentTool;
763
747
  await config.initialize();
764
- expect(SubagentToolWrapperMock).not.toHaveBeenCalled();
748
+ expect(DelegateToAgentToolMock).not.toHaveBeenCalled();
749
+ });
750
+ it('should not set default codebase investigator model in config (defaults in registry)', () => {
751
+ const config = new Config(baseParams);
752
+ expect(config.getCodebaseInvestigatorSettings()?.model).toBeUndefined();
765
753
  });
766
754
  describe('with minified tool class names', () => {
767
755
  beforeEach(() => {
@@ -1088,6 +1076,26 @@ describe('Generation Config Merging (HACK)', () => {
1088
1076
  // Assert that the user's overrides are present
1089
1077
  expect(serviceConfig.overrides).toEqual(userOverrides);
1090
1078
  });
1079
+ it('should merge default overrides when user provides only aliases', () => {
1080
+ const userAliases = {
1081
+ 'my-alias': {
1082
+ modelConfig: { model: 'my-model' },
1083
+ },
1084
+ };
1085
+ const params = {
1086
+ ...baseParams,
1087
+ modelConfigServiceConfig: {
1088
+ aliases: userAliases,
1089
+ },
1090
+ };
1091
+ const config = new Config(params);
1092
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1093
+ const serviceConfig = config.modelConfigService.config;
1094
+ // Assert that the user's aliases are present
1095
+ expect(serviceConfig.aliases).toEqual(userAliases);
1096
+ // Assert that the default overrides are present
1097
+ expect(serviceConfig.overrides).toEqual(DEFAULT_MODEL_CONFIGS.overrides);
1098
+ });
1091
1099
  it('should use user-provided aliases if they exist', () => {
1092
1100
  const userAliases = {
1093
1101
  'my-alias': {
@@ -1214,26 +1222,26 @@ describe('Config getHooks', () => {
1214
1222
  expect(Object.keys(retrievedHooks)).toHaveLength(11); // All hook event types
1215
1223
  });
1216
1224
  describe('setModel', () => {
1217
- it('should allow setting a pro (any) model and disable fallback mode', () => {
1225
+ it('should allow setting a pro (any) model and reset availability', () => {
1218
1226
  const config = new Config(baseParams);
1219
- config.setFallbackMode(true);
1220
- expect(config.isInFallbackMode()).toBe(true);
1227
+ const service = config.getModelAvailabilityService();
1228
+ const spy = vi.spyOn(service, 'reset');
1221
1229
  const proModel = 'gemini-2.5-pro';
1222
1230
  config.setModel(proModel);
1223
1231
  expect(config.getModel()).toBe(proModel);
1224
- expect(config.isInFallbackMode()).toBe(false);
1225
1232
  expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith(proModel);
1233
+ expect(spy).toHaveBeenCalled();
1226
1234
  });
1227
- it('should allow setting auto model from non-auto model and disable fallback mode', () => {
1235
+ it('should allow setting auto model from non-auto model and reset availability', () => {
1228
1236
  const config = new Config(baseParams);
1229
- config.setFallbackMode(true);
1230
- expect(config.isInFallbackMode()).toBe(true);
1237
+ const service = config.getModelAvailabilityService();
1238
+ const spy = vi.spyOn(service, 'reset');
1231
1239
  config.setModel('auto');
1232
1240
  expect(config.getModel()).toBe('auto');
1233
- expect(config.isInFallbackMode()).toBe(false);
1234
1241
  expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith('auto');
1242
+ expect(spy).toHaveBeenCalled();
1235
1243
  });
1236
- it('should allow setting auto model from auto model if it is in the fallback mode', () => {
1244
+ it('should allow setting auto model from auto model and reset availability', () => {
1237
1245
  const config = new Config({
1238
1246
  cwd: '/tmp',
1239
1247
  targetDir: '/path/to/target',
@@ -1242,12 +1250,39 @@ describe('Config getHooks', () => {
1242
1250
  model: 'auto',
1243
1251
  usageStatisticsEnabled: false,
1244
1252
  });
1245
- config.setFallbackMode(true);
1246
- expect(config.isInFallbackMode()).toBe(true);
1253
+ const service = config.getModelAvailabilityService();
1254
+ const spy = vi.spyOn(service, 'reset');
1247
1255
  config.setModel('auto');
1248
1256
  expect(config.getModel()).toBe('auto');
1249
- expect(config.isInFallbackMode()).toBe(false);
1250
- expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith('auto');
1257
+ expect(spy).toHaveBeenCalled();
1258
+ });
1259
+ it('should reset active model when setModel is called with the current model after a fallback', () => {
1260
+ const config = new Config(baseParams);
1261
+ const originalModel = config.getModel();
1262
+ const fallbackModel = 'fallback-model';
1263
+ config.setActiveModel(fallbackModel);
1264
+ expect(config.getActiveModel()).toBe(fallbackModel);
1265
+ config.setModel(originalModel);
1266
+ expect(config.getModel()).toBe(originalModel);
1267
+ expect(config.getActiveModel()).toBe(originalModel);
1268
+ });
1269
+ it('should call onModelChange when a new model is set and should persist', () => {
1270
+ const onModelChange = vi.fn();
1271
+ const config = new Config({
1272
+ ...baseParams,
1273
+ onModelChange,
1274
+ });
1275
+ config.setModel(DEFAULT_GEMINI_MODEL, false);
1276
+ expect(onModelChange).toHaveBeenCalledWith(DEFAULT_GEMINI_MODEL);
1277
+ });
1278
+ it('should NOT call onModelChange when a new model is temporary', () => {
1279
+ const onModelChange = vi.fn();
1280
+ const config = new Config({
1281
+ ...baseParams,
1282
+ onModelChange,
1283
+ });
1284
+ config.setModel(DEFAULT_GEMINI_MODEL, true);
1285
+ expect(onModelChange).not.toHaveBeenCalled();
1251
1286
  });
1252
1287
  });
1253
1288
  });
@@ -1344,4 +1379,247 @@ describe('Config setExperiments logging', () => {
1344
1379
  debugSpy.mockRestore();
1345
1380
  });
1346
1381
  });
1382
+ describe('Availability Service Integration', () => {
1383
+ const baseModel = 'test-model';
1384
+ const baseParams = {
1385
+ sessionId: 'test',
1386
+ targetDir: '.',
1387
+ debugMode: false,
1388
+ model: baseModel,
1389
+ cwd: '.',
1390
+ };
1391
+ it('setActiveModel updates active model', async () => {
1392
+ const config = new Config(baseParams);
1393
+ const model1 = 'model1';
1394
+ const model2 = 'model2';
1395
+ config.setActiveModel(model1);
1396
+ expect(config.getActiveModel()).toBe(model1);
1397
+ config.setActiveModel(model2);
1398
+ expect(config.getActiveModel()).toBe(model2);
1399
+ });
1400
+ it('getActiveModel defaults to configured model if not set', () => {
1401
+ const config = new Config(baseParams);
1402
+ expect(config.getActiveModel()).toBe(baseModel);
1403
+ });
1404
+ it('resetTurn delegates to availability service', () => {
1405
+ const config = new Config(baseParams);
1406
+ const service = config.getModelAvailabilityService();
1407
+ const spy = vi.spyOn(service, 'resetTurn');
1408
+ config.resetTurn();
1409
+ expect(spy).toHaveBeenCalled();
1410
+ });
1411
+ });
1412
+ describe('Config Quota & Preview Model Access', () => {
1413
+ let config;
1414
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1415
+ let mockCodeAssistServer;
1416
+ const baseParams = {
1417
+ cwd: '/tmp',
1418
+ targetDir: '/tmp',
1419
+ debugMode: false,
1420
+ sessionId: 'test-session',
1421
+ model: 'gemini-pro',
1422
+ usageStatisticsEnabled: false,
1423
+ embeddingModel: 'gemini-embedding',
1424
+ sandbox: {
1425
+ command: 'docker',
1426
+ image: 'gemini-cli-sandbox',
1427
+ },
1428
+ };
1429
+ beforeEach(() => {
1430
+ vi.clearAllMocks();
1431
+ mockCodeAssistServer = {
1432
+ projectId: 'test-project',
1433
+ retrieveUserQuota: vi.fn(),
1434
+ };
1435
+ vi.mocked(getCodeAssistServer).mockReturnValue(mockCodeAssistServer);
1436
+ config = new Config(baseParams);
1437
+ });
1438
+ describe('refreshUserQuota', () => {
1439
+ it('should update hasAccessToPreviewModel to true if quota includes preview model', async () => {
1440
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1441
+ buckets: [{ modelId: PREVIEW_GEMINI_MODEL }],
1442
+ });
1443
+ await config.refreshUserQuota();
1444
+ expect(config.getHasAccessToPreviewModel()).toBe(true);
1445
+ });
1446
+ it('should update hasAccessToPreviewModel to false if quota does not include preview model', async () => {
1447
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1448
+ buckets: [{ modelId: 'some-other-model' }],
1449
+ });
1450
+ await config.refreshUserQuota();
1451
+ expect(config.getHasAccessToPreviewModel()).toBe(false);
1452
+ });
1453
+ it('should update hasAccessToPreviewModel to false if buckets are undefined', async () => {
1454
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({});
1455
+ await config.refreshUserQuota();
1456
+ expect(config.getHasAccessToPreviewModel()).toBe(false);
1457
+ });
1458
+ it('should return undefined and not update if codeAssistServer is missing', async () => {
1459
+ vi.mocked(getCodeAssistServer).mockReturnValue(undefined);
1460
+ const result = await config.refreshUserQuota();
1461
+ expect(result).toBeUndefined();
1462
+ expect(config.getHasAccessToPreviewModel()).toBe(false);
1463
+ });
1464
+ it('should return undefined if retrieveUserQuota fails', async () => {
1465
+ mockCodeAssistServer.retrieveUserQuota.mockRejectedValue(new Error('Network error'));
1466
+ const result = await config.refreshUserQuota();
1467
+ expect(result).toBeUndefined();
1468
+ // Should remain default (false)
1469
+ expect(config.getHasAccessToPreviewModel()).toBe(false);
1470
+ });
1471
+ });
1472
+ describe('setPreviewFeatures', () => {
1473
+ it('should reset model to default auto if disabling preview features while using a preview model', () => {
1474
+ config.setPreviewFeatures(true);
1475
+ config.setModel(PREVIEW_GEMINI_MODEL);
1476
+ config.setPreviewFeatures(false);
1477
+ expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL_AUTO);
1478
+ });
1479
+ it('should NOT reset model if disabling preview features while NOT using a preview model', () => {
1480
+ config.setPreviewFeatures(true);
1481
+ const nonPreviewModel = 'gemini-1.5-pro';
1482
+ config.setModel(nonPreviewModel);
1483
+ config.setPreviewFeatures(false);
1484
+ expect(config.getModel()).toBe(nonPreviewModel);
1485
+ });
1486
+ it('should switch to preview auto model if enabling preview features while using default auto model', () => {
1487
+ config.setPreviewFeatures(false);
1488
+ config.setModel(DEFAULT_GEMINI_MODEL_AUTO);
1489
+ config.setPreviewFeatures(true);
1490
+ expect(config.getModel()).toBe(PREVIEW_GEMINI_MODEL_AUTO);
1491
+ });
1492
+ it('should NOT reset model if enabling preview features', () => {
1493
+ config.setPreviewFeatures(false);
1494
+ config.setModel(PREVIEW_GEMINI_MODEL); // Just pretending it was set somehow
1495
+ config.setPreviewFeatures(true);
1496
+ expect(config.getModel()).toBe(PREVIEW_GEMINI_MODEL);
1497
+ });
1498
+ });
1499
+ });
1500
+ describe('Config JIT Initialization', () => {
1501
+ let config;
1502
+ let mockContextManager;
1503
+ beforeEach(() => {
1504
+ vi.clearAllMocks();
1505
+ mockContextManager = {
1506
+ refresh: vi.fn(),
1507
+ getGlobalMemory: vi.fn().mockReturnValue('Global Memory'),
1508
+ getEnvironmentMemory: vi
1509
+ .fn()
1510
+ .mockReturnValue('Environment Memory\n\nMCP Instructions'),
1511
+ getLoadedPaths: vi.fn().mockReturnValue(new Set(['/path/to/GEMINI.md'])),
1512
+ };
1513
+ ContextManager.mockImplementation(() => mockContextManager);
1514
+ });
1515
+ it('should initialize ContextManager, load memory, and delegate to it when experimentalJitContext is enabled', async () => {
1516
+ const params = {
1517
+ sessionId: 'test-session',
1518
+ targetDir: '/tmp/test',
1519
+ debugMode: false,
1520
+ model: 'test-model',
1521
+ experimentalJitContext: true,
1522
+ userMemory: 'Initial Memory',
1523
+ cwd: '/tmp/test',
1524
+ };
1525
+ config = new Config(params);
1526
+ await config.initialize();
1527
+ expect(ContextManager).toHaveBeenCalledWith(config);
1528
+ expect(mockContextManager.refresh).toHaveBeenCalled();
1529
+ expect(config.getUserMemory()).toBe('Global Memory\n\nEnvironment Memory\n\nMCP Instructions');
1530
+ // Verify state update (delegated to ContextManager)
1531
+ expect(config.getGeminiMdFileCount()).toBe(1);
1532
+ expect(config.getGeminiMdFilePaths()).toEqual(['/path/to/GEMINI.md']);
1533
+ });
1534
+ it('should NOT initialize ContextManager when experimentalJitContext is disabled', async () => {
1535
+ const params = {
1536
+ sessionId: 'test-session',
1537
+ targetDir: '/tmp/test',
1538
+ debugMode: false,
1539
+ model: 'test-model',
1540
+ experimentalJitContext: false,
1541
+ userMemory: 'Initial Memory',
1542
+ cwd: '/tmp/test',
1543
+ };
1544
+ config = new Config(params);
1545
+ await config.initialize();
1546
+ expect(ContextManager).not.toHaveBeenCalled();
1547
+ expect(config.getUserMemory()).toBe('Initial Memory');
1548
+ });
1549
+ describe('reloadSkills', () => {
1550
+ it('should refresh disabledSkills and re-register ActivateSkillTool when skills exist', async () => {
1551
+ const mockOnReload = vi.fn().mockResolvedValue({
1552
+ disabledSkills: ['skill2'],
1553
+ });
1554
+ const params = {
1555
+ sessionId: 'test-session',
1556
+ targetDir: '/tmp/test',
1557
+ debugMode: false,
1558
+ model: 'test-model',
1559
+ cwd: '/tmp/test',
1560
+ skillsSupport: true,
1561
+ onReload: mockOnReload,
1562
+ };
1563
+ config = new Config(params);
1564
+ await config.initialize();
1565
+ const skillManager = config.getSkillManager();
1566
+ const toolRegistry = config.getToolRegistry();
1567
+ vi.spyOn(skillManager, 'discoverSkills').mockResolvedValue(undefined);
1568
+ vi.spyOn(skillManager, 'setDisabledSkills');
1569
+ vi.spyOn(toolRegistry, 'registerTool');
1570
+ vi.spyOn(toolRegistry, 'unregisterTool');
1571
+ const mockSkills = [{ name: 'skill1' }];
1572
+ vi.spyOn(skillManager, 'getSkills').mockReturnValue(mockSkills);
1573
+ await config.reloadSkills();
1574
+ expect(mockOnReload).toHaveBeenCalled();
1575
+ expect(skillManager.setDisabledSkills).toHaveBeenCalledWith(['skill2']);
1576
+ expect(toolRegistry.registerTool).toHaveBeenCalled();
1577
+ expect(toolRegistry.unregisterTool).not.toHaveBeenCalledWith(ACTIVATE_SKILL_TOOL_NAME);
1578
+ });
1579
+ it('should unregister ActivateSkillTool when no skills exist after reload', async () => {
1580
+ const params = {
1581
+ sessionId: 'test-session',
1582
+ targetDir: '/tmp/test',
1583
+ debugMode: false,
1584
+ model: 'test-model',
1585
+ cwd: '/tmp/test',
1586
+ skillsSupport: true,
1587
+ };
1588
+ config = new Config(params);
1589
+ await config.initialize();
1590
+ const skillManager = config.getSkillManager();
1591
+ const toolRegistry = config.getToolRegistry();
1592
+ vi.spyOn(skillManager, 'discoverSkills').mockResolvedValue(undefined);
1593
+ vi.spyOn(toolRegistry, 'registerTool');
1594
+ vi.spyOn(toolRegistry, 'unregisterTool');
1595
+ vi.spyOn(skillManager, 'getSkills').mockReturnValue([]);
1596
+ await config.reloadSkills();
1597
+ expect(toolRegistry.unregisterTool).toHaveBeenCalledWith(ACTIVATE_SKILL_TOOL_NAME);
1598
+ });
1599
+ it('should clear disabledSkills when onReload returns undefined for them', async () => {
1600
+ const mockOnReload = vi.fn().mockResolvedValue({
1601
+ disabledSkills: undefined,
1602
+ });
1603
+ const params = {
1604
+ sessionId: 'test-session',
1605
+ targetDir: '/tmp/test',
1606
+ debugMode: false,
1607
+ model: 'test-model',
1608
+ cwd: '/tmp/test',
1609
+ skillsSupport: true,
1610
+ onReload: mockOnReload,
1611
+ };
1612
+ config = new Config(params);
1613
+ // Initially set some disabled skills
1614
+ // @ts-expect-error - accessing private
1615
+ config.disabledSkills = ['skill1'];
1616
+ await config.initialize();
1617
+ const skillManager = config.getSkillManager();
1618
+ vi.spyOn(skillManager, 'discoverSkills').mockResolvedValue(undefined);
1619
+ vi.spyOn(skillManager, 'setDisabledSkills');
1620
+ await config.reloadSkills();
1621
+ expect(skillManager.setDisabledSkills).toHaveBeenCalledWith([]);
1622
+ });
1623
+ });
1624
+ });
1347
1625
  //# sourceMappingURL=config.test.js.map