@google/gemini-cli-core 0.24.0-nightly.20260103.30f5c4af4 → 0.25.0-nightly.20260112.15891721a

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 (489) hide show
  1. package/README.md +1 -1
  2. package/dist/docs/changelogs/index.md +22 -0
  3. package/dist/docs/changelogs/latest.md +137 -209
  4. package/dist/docs/changelogs/preview.md +116 -114
  5. package/dist/docs/changelogs/releases.md +273 -7
  6. package/dist/docs/cli/model-routing.md +1 -1
  7. package/dist/docs/cli/model.md +1 -1
  8. package/dist/docs/cli/settings.md +67 -52
  9. package/dist/docs/cli/skills.md +156 -0
  10. package/dist/docs/cli/telemetry.md +3 -3
  11. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  12. package/dist/docs/cli/tutorials.md +4 -0
  13. package/dist/docs/core/policy-engine.md +3 -2
  14. package/dist/docs/extensions/index.md +57 -7
  15. package/dist/docs/get-started/configuration.md +44 -11
  16. package/dist/docs/get-started/gemini-3.md +2 -17
  17. package/dist/docs/hooks/best-practices.md +1 -1
  18. package/dist/docs/hooks/index.md +47 -11
  19. package/dist/docs/hooks/reference.md +19 -9
  20. package/dist/docs/hooks/writing-hooks.md +19 -1
  21. package/dist/docs/sidebar.json +4 -0
  22. package/dist/docs/troubleshooting.md +9 -3
  23. package/dist/google-gemini-cli-core-0.25.0-nightly.20260107.59a18e710.tgz +0 -0
  24. package/dist/src/agents/a2a-client-manager.d.ts +9 -0
  25. package/dist/src/agents/a2a-client-manager.js +130 -0
  26. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  27. package/dist/src/agents/a2a-client-manager.test.js +71 -1
  28. package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
  29. package/dist/src/agents/a2aUtils.d.ts +28 -0
  30. package/dist/src/agents/a2aUtils.js +111 -0
  31. package/dist/src/agents/a2aUtils.js.map +1 -0
  32. package/dist/src/agents/a2aUtils.test.js +147 -0
  33. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  34. package/dist/src/agents/agentLoader.d.ts +68 -0
  35. package/dist/src/agents/{toml-loader.js → agentLoader.js} +83 -78
  36. package/dist/src/agents/agentLoader.js.map +1 -0
  37. package/dist/src/agents/agentLoader.test.js +283 -0
  38. package/dist/src/agents/agentLoader.test.js.map +1 -0
  39. package/dist/src/agents/{introspection-agent.d.ts → cli-help-agent.d.ts} +3 -2
  40. package/dist/src/agents/{introspection-agent.js → cli-help-agent.js} +17 -11
  41. package/dist/src/agents/cli-help-agent.js.map +1 -0
  42. package/dist/src/agents/{introspection-agent.test.js → cli-help-agent.test.js} +26 -8
  43. package/dist/src/agents/cli-help-agent.test.js.map +1 -0
  44. package/dist/src/agents/delegate-to-agent-tool.d.ts +2 -2
  45. package/dist/src/agents/delegate-to-agent-tool.js +23 -16
  46. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  47. package/dist/src/agents/delegate-to-agent-tool.test.js +88 -16
  48. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  49. package/dist/src/agents/local-executor.js +36 -2
  50. package/dist/src/agents/local-executor.js.map +1 -1
  51. package/dist/src/agents/local-executor.test.js +55 -2
  52. package/dist/src/agents/local-executor.test.js.map +1 -1
  53. package/dist/src/agents/local-invocation.d.ts +2 -2
  54. package/dist/src/agents/local-invocation.js +3 -3
  55. package/dist/src/agents/local-invocation.js.map +1 -1
  56. package/dist/src/agents/local-invocation.test.js +7 -5
  57. package/dist/src/agents/local-invocation.test.js.map +1 -1
  58. package/dist/src/agents/registry.d.ts +10 -0
  59. package/dist/src/agents/registry.js +61 -26
  60. package/dist/src/agents/registry.js.map +1 -1
  61. package/dist/src/agents/registry.test.js +66 -11
  62. package/dist/src/agents/registry.test.js.map +1 -1
  63. package/dist/src/agents/remote-invocation.d.ts +17 -3
  64. package/dist/src/agents/remote-invocation.js +106 -6
  65. package/dist/src/agents/remote-invocation.js.map +1 -1
  66. package/dist/src/agents/remote-invocation.test.js +184 -18
  67. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  68. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  69. package/dist/src/agents/subagent-tool-wrapper.js +6 -5
  70. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  71. package/dist/src/agents/subagent-tool-wrapper.test.js +17 -10
  72. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  73. package/dist/src/agents/types.d.ts +6 -0
  74. package/dist/src/availability/fallbackIntegration.test.js +58 -0
  75. package/dist/src/availability/fallbackIntegration.test.js.map +1 -0
  76. package/dist/src/code_assist/experiments/experiments.d.ts +1 -1
  77. package/dist/src/code_assist/experiments/experiments.js +21 -0
  78. package/dist/src/code_assist/experiments/experiments.js.map +1 -1
  79. package/dist/src/code_assist/experiments/experiments_local.test.js +110 -0
  80. package/dist/src/code_assist/experiments/experiments_local.test.js.map +1 -0
  81. package/dist/src/code_assist/oauth-credential-storage.js +3 -4
  82. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  83. package/dist/src/code_assist/oauth2.js +31 -1
  84. package/dist/src/code_assist/oauth2.js.map +1 -1
  85. package/dist/src/code_assist/oauth2.test.js +105 -8
  86. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  87. package/dist/src/code_assist/server.d.ts +5 -0
  88. package/dist/src/code_assist/server.js +19 -4
  89. package/dist/src/code_assist/server.js.map +1 -1
  90. package/dist/src/code_assist/server.test.js +19 -0
  91. package/dist/src/code_assist/server.test.js.map +1 -1
  92. package/dist/src/code_assist/setup.js +6 -4
  93. package/dist/src/code_assist/setup.js.map +1 -1
  94. package/dist/src/code_assist/setup.test.js +63 -0
  95. package/dist/src/code_assist/setup.test.js.map +1 -1
  96. package/dist/src/code_assist/telemetry.js +2 -1
  97. package/dist/src/code_assist/telemetry.js.map +1 -1
  98. package/dist/src/code_assist/telemetry.test.js +2 -1
  99. package/dist/src/code_assist/telemetry.test.js.map +1 -1
  100. package/dist/src/code_assist/types.d.ts +25 -0
  101. package/dist/src/code_assist/types.js +7 -0
  102. package/dist/src/code_assist/types.js.map +1 -1
  103. package/dist/src/config/config.d.ts +45 -9
  104. package/dist/src/config/config.js +128 -62
  105. package/dist/src/config/config.js.map +1 -1
  106. package/dist/src/config/config.test.js +94 -7
  107. package/dist/src/config/config.test.js.map +1 -1
  108. package/dist/src/config/models.d.ts +7 -0
  109. package/dist/src/config/models.js +17 -4
  110. package/dist/src/config/models.js.map +1 -1
  111. package/dist/src/config/models.test.js +37 -1
  112. package/dist/src/config/models.test.js.map +1 -1
  113. package/dist/src/config/storage.d.ts +1 -0
  114. package/dist/src/config/storage.js +5 -2
  115. package/dist/src/config/storage.js.map +1 -1
  116. package/dist/src/core/client.js +66 -15
  117. package/dist/src/core/client.js.map +1 -1
  118. package/dist/src/core/client.test.js +171 -22
  119. package/dist/src/core/client.test.js.map +1 -1
  120. package/dist/src/core/contentGenerator.js +1 -1
  121. package/dist/src/core/contentGenerator.js.map +1 -1
  122. package/dist/src/core/contentGenerator.test.js +1 -1
  123. package/dist/src/core/contentGenerator.test.js.map +1 -1
  124. package/dist/src/core/coreToolHookTriggers.d.ts +8 -4
  125. package/dist/src/core/coreToolHookTriggers.js +43 -5
  126. package/dist/src/core/coreToolHookTriggers.js.map +1 -1
  127. package/dist/src/core/coreToolHookTriggers.test.js +11 -9
  128. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
  129. package/dist/src/core/coreToolScheduler.d.ts +2 -8
  130. package/dist/src/core/coreToolScheduler.js +84 -166
  131. package/dist/src/core/coreToolScheduler.js.map +1 -1
  132. package/dist/src/core/coreToolScheduler.test.js +51 -29
  133. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  134. package/dist/src/core/geminiChat.d.ts +26 -1
  135. package/dist/src/core/geminiChat.js +74 -8
  136. package/dist/src/core/geminiChat.js.map +1 -1
  137. package/dist/src/core/geminiChat.test.js +109 -0
  138. package/dist/src/core/geminiChat.test.js.map +1 -1
  139. package/dist/src/core/geminiChatHookTriggers.d.ts +8 -4
  140. package/dist/src/core/geminiChatHookTriggers.js +31 -9
  141. package/dist/src/core/geminiChatHookTriggers.js.map +1 -1
  142. package/dist/src/core/geminiChatHookTriggers.test.d.ts +6 -0
  143. package/dist/src/core/geminiChatHookTriggers.test.js +153 -0
  144. package/dist/src/core/geminiChatHookTriggers.test.js.map +1 -0
  145. package/dist/src/core/loggingContentGenerator.js +19 -2
  146. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  147. package/dist/src/core/loggingContentGenerator.test.js +30 -0
  148. package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
  149. package/dist/src/core/nonInteractiveToolExecutor.test.js +4 -2
  150. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  151. package/dist/src/core/prompts.js +9 -9
  152. package/dist/src/core/prompts.js.map +1 -1
  153. package/dist/src/core/prompts.test.js +4 -2
  154. package/dist/src/core/prompts.test.js.map +1 -1
  155. package/dist/src/core/tokenLimits.js +6 -12
  156. package/dist/src/core/tokenLimits.js.map +1 -1
  157. package/dist/src/core/tokenLimits.test.js +8 -4
  158. package/dist/src/core/tokenLimits.test.js.map +1 -1
  159. package/dist/src/core/turn.d.ts +18 -2
  160. package/dist/src/core/turn.js +16 -0
  161. package/dist/src/core/turn.js.map +1 -1
  162. package/dist/src/generated/git-commit.d.ts +2 -2
  163. package/dist/src/generated/git-commit.js +2 -2
  164. package/dist/src/hooks/hookEventHandler.d.ts +9 -5
  165. package/dist/src/hooks/hookEventHandler.js +51 -11
  166. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  167. package/dist/src/hooks/hookEventHandler.test.js +176 -8
  168. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  169. package/dist/src/hooks/hookRunner.d.ts +2 -2
  170. package/dist/src/hooks/hookRunner.js +12 -4
  171. package/dist/src/hooks/hookRunner.js.map +1 -1
  172. package/dist/src/hooks/hookRunner.test.js +33 -0
  173. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  174. package/dist/src/hooks/hookSystem.d.ts +12 -0
  175. package/dist/src/hooks/hookSystem.js +36 -0
  176. package/dist/src/hooks/hookSystem.js.map +1 -1
  177. package/dist/src/hooks/hookTranslator.js +2 -1
  178. package/dist/src/hooks/hookTranslator.js.map +1 -1
  179. package/dist/src/hooks/index.d.ts +0 -1
  180. package/dist/src/hooks/index.js +0 -2
  181. package/dist/src/hooks/index.js.map +1 -1
  182. package/dist/src/hooks/types.d.ts +21 -0
  183. package/dist/src/hooks/types.js +0 -15
  184. package/dist/src/hooks/types.js.map +1 -1
  185. package/dist/src/hooks/types.test.js +4 -28
  186. package/dist/src/hooks/types.test.js.map +1 -1
  187. package/dist/src/ide/detect-ide.d.ts +4 -0
  188. package/dist/src/ide/detect-ide.js +7 -2
  189. package/dist/src/ide/detect-ide.js.map +1 -1
  190. package/dist/src/ide/detect-ide.test.js +10 -0
  191. package/dist/src/ide/detect-ide.test.js.map +1 -1
  192. package/dist/src/ide/ide-installer.js +2 -2
  193. package/dist/src/ide/ide-installer.js.map +1 -1
  194. package/dist/src/ide/ide-installer.test.js +11 -2
  195. package/dist/src/ide/ide-installer.test.js.map +1 -1
  196. package/dist/src/index.d.ts +11 -2
  197. package/dist/src/index.js +13 -3
  198. package/dist/src/index.js.map +1 -1
  199. package/dist/src/mcp/token-storage/file-token-storage.js +2 -2
  200. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
  201. package/dist/src/policy/config.js +60 -22
  202. package/dist/src/policy/config.js.map +1 -1
  203. package/dist/src/policy/config.test.js +21 -0
  204. package/dist/src/policy/config.test.js.map +1 -1
  205. package/dist/src/policy/persistence.test.js +1 -1
  206. package/dist/src/policy/persistence.test.js.map +1 -1
  207. package/dist/src/policy/policies/agent.toml +1 -1
  208. package/dist/src/policy/policies/yolo.toml +1 -0
  209. package/dist/src/policy/policy-engine.js +22 -6
  210. package/dist/src/policy/policy-engine.js.map +1 -1
  211. package/dist/src/policy/policy-engine.test.js +206 -1
  212. package/dist/src/policy/policy-engine.test.js.map +1 -1
  213. package/dist/src/policy/policy-updater.test.js +3 -3
  214. package/dist/src/policy/policy-updater.test.js.map +1 -1
  215. package/dist/src/policy/toml-loader.d.ts +0 -8
  216. package/dist/src/policy/toml-loader.js +7 -70
  217. package/dist/src/policy/toml-loader.js.map +1 -1
  218. package/dist/src/policy/toml-loader.test.js +16 -6
  219. package/dist/src/policy/toml-loader.test.js.map +1 -1
  220. package/dist/src/policy/utils.d.ts +21 -0
  221. package/dist/src/policy/utils.js +45 -0
  222. package/dist/src/policy/utils.js.map +1 -0
  223. package/dist/src/policy/utils.test.d.ts +6 -0
  224. package/dist/src/policy/utils.test.js +92 -0
  225. package/dist/src/policy/utils.test.js.map +1 -0
  226. package/dist/src/routing/routingStrategy.d.ts +2 -0
  227. package/dist/src/routing/strategies/classifierStrategy.js +1 -1
  228. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  229. package/dist/src/routing/strategies/classifierStrategy.test.js +16 -0
  230. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  231. package/dist/src/routing/strategies/fallbackStrategy.d.ts +1 -1
  232. package/dist/src/routing/strategies/fallbackStrategy.js +2 -2
  233. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  234. package/dist/src/routing/strategies/fallbackStrategy.test.js +13 -0
  235. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  236. package/dist/src/routing/strategies/overrideStrategy.d.ts +1 -1
  237. package/dist/src/routing/strategies/overrideStrategy.js +5 -5
  238. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  239. package/dist/src/routing/strategies/overrideStrategy.test.js +14 -0
  240. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
  241. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  242. package/dist/src/scheduler/tool-executor.js +198 -0
  243. package/dist/src/scheduler/tool-executor.js.map +1 -0
  244. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  245. package/dist/src/scheduler/tool-executor.test.js +231 -0
  246. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  247. package/dist/src/scheduler/tool-modifier.d.ts +23 -0
  248. package/dist/src/scheduler/tool-modifier.js +50 -0
  249. package/dist/src/scheduler/tool-modifier.js.map +1 -0
  250. package/dist/src/scheduler/tool-modifier.test.d.ts +6 -0
  251. package/dist/src/scheduler/tool-modifier.test.js +159 -0
  252. package/dist/src/scheduler/tool-modifier.test.js.map +1 -0
  253. package/dist/src/services/chatCompressionService.js +3 -10
  254. package/dist/src/services/chatCompressionService.js.map +1 -1
  255. package/dist/src/services/chatCompressionService.test.js +1 -0
  256. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  257. package/dist/src/services/chatRecordingService.d.ts +7 -1
  258. package/dist/src/services/chatRecordingService.js +20 -2
  259. package/dist/src/services/chatRecordingService.js.map +1 -1
  260. package/dist/src/services/chatRecordingService.test.js +43 -0
  261. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  262. package/dist/src/services/environmentSanitization.js +4 -3
  263. package/dist/src/services/environmentSanitization.js.map +1 -1
  264. package/dist/src/services/gitService.test.js +10 -2
  265. package/dist/src/services/gitService.test.js.map +1 -1
  266. package/dist/src/services/modelConfig.integration.test.js +2 -2
  267. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  268. package/dist/src/services/modelConfigService.d.ts +29 -1
  269. package/dist/src/services/modelConfigService.js +116 -69
  270. package/dist/src/services/modelConfigService.js.map +1 -1
  271. package/dist/src/services/modelConfigService.test.js +116 -0
  272. package/dist/src/services/modelConfigService.test.js.map +1 -1
  273. package/dist/src/services/shellExecutionService.js +1 -1
  274. package/dist/src/services/shellExecutionService.js.map +1 -1
  275. package/dist/src/services/shellExecutionService.test.js +43 -2
  276. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  277. package/dist/src/skills/skillLoader.d.ts +31 -0
  278. package/dist/src/skills/skillLoader.js +77 -0
  279. package/dist/src/skills/skillLoader.js.map +1 -0
  280. package/dist/src/skills/skillLoader.test.d.ts +6 -0
  281. package/dist/src/skills/skillLoader.test.js +75 -0
  282. package/dist/src/skills/skillLoader.test.js.map +1 -0
  283. package/dist/src/{services → skills}/skillManager.d.ts +18 -19
  284. package/dist/src/skills/skillManager.js +108 -0
  285. package/dist/src/skills/skillManager.js.map +1 -0
  286. package/dist/src/skills/skillManager.test.d.ts +6 -0
  287. package/dist/src/skills/skillManager.test.js +164 -0
  288. package/dist/src/skills/skillManager.test.js.map +1 -0
  289. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +9 -6
  290. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +20 -16
  291. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  292. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +43 -4
  293. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  294. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -2
  295. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -4
  296. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  297. package/dist/src/telemetry/loggers.d.ts +3 -3
  298. package/dist/src/telemetry/loggers.js +4 -4
  299. package/dist/src/telemetry/loggers.js.map +1 -1
  300. package/dist/src/telemetry/loggers.test.js +7 -5
  301. package/dist/src/telemetry/loggers.test.js.map +1 -1
  302. package/dist/src/telemetry/types.d.ts +7 -7
  303. package/dist/src/telemetry/types.js +14 -12
  304. package/dist/src/telemetry/types.js.map +1 -1
  305. package/dist/src/test-utils/mock-message-bus.d.ts +1 -0
  306. package/dist/src/test-utils/mock-message-bus.js +29 -0
  307. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  308. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  309. package/dist/src/test-utils/mock-tool.js +11 -10
  310. package/dist/src/test-utils/mock-tool.js.map +1 -1
  311. package/dist/src/tools/activate-skill.d.ts +2 -2
  312. package/dist/src/tools/activate-skill.js +28 -10
  313. package/dist/src/tools/activate-skill.js.map +1 -1
  314. package/dist/src/tools/activate-skill.test.js +31 -11
  315. package/dist/src/tools/activate-skill.test.js.map +1 -1
  316. package/dist/src/tools/confirmation-policy.test.js +2 -12
  317. package/dist/src/tools/confirmation-policy.test.js.map +1 -1
  318. package/dist/src/tools/edit.d.ts +27 -5
  319. package/dist/src/tools/edit.js +446 -137
  320. package/dist/src/tools/edit.js.map +1 -1
  321. package/dist/src/tools/edit.test.js +257 -525
  322. package/dist/src/tools/edit.test.js.map +1 -1
  323. package/dist/src/tools/get-internal-docs.d.ts +2 -2
  324. package/dist/src/tools/get-internal-docs.js +17 -24
  325. package/dist/src/tools/get-internal-docs.js.map +1 -1
  326. package/dist/src/tools/get-internal-docs.test.js +2 -1
  327. package/dist/src/tools/get-internal-docs.test.js.map +1 -1
  328. package/dist/src/tools/glob.d.ts +2 -2
  329. package/dist/src/tools/glob.js +1 -1
  330. package/dist/src/tools/glob.js.map +1 -1
  331. package/dist/src/tools/glob.test.js +2 -1
  332. package/dist/src/tools/glob.test.js.map +1 -1
  333. package/dist/src/tools/grep.d.ts +2 -2
  334. package/dist/src/tools/grep.js +1 -1
  335. package/dist/src/tools/grep.js.map +1 -1
  336. package/dist/src/tools/grep.test.js +5 -4
  337. package/dist/src/tools/grep.test.js.map +1 -1
  338. package/dist/src/tools/ls.d.ts +2 -2
  339. package/dist/src/tools/ls.js +2 -2
  340. package/dist/src/tools/ls.js.map +1 -1
  341. package/dist/src/tools/ls.test.js +2 -1
  342. package/dist/src/tools/ls.test.js.map +1 -1
  343. package/dist/src/tools/mcp-client.d.ts +2 -2
  344. package/dist/src/tools/mcp-client.js +2 -1
  345. package/dist/src/tools/mcp-client.js.map +1 -1
  346. package/dist/src/tools/mcp-tool.d.ts +20 -5
  347. package/dist/src/tools/mcp-tool.js +8 -8
  348. package/dist/src/tools/mcp-tool.js.map +1 -1
  349. package/dist/src/tools/mcp-tool.test.js +11 -6
  350. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  351. package/dist/src/tools/memoryTool.d.ts +3 -3
  352. package/dist/src/tools/memoryTool.js +2 -2
  353. package/dist/src/tools/memoryTool.js.map +1 -1
  354. package/dist/src/tools/memoryTool.test.js +5 -2
  355. package/dist/src/tools/memoryTool.test.js.map +1 -1
  356. package/dist/src/tools/message-bus-integration.test.js +10 -37
  357. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  358. package/dist/src/tools/read-file.d.ts +2 -2
  359. package/dist/src/tools/read-file.js +1 -1
  360. package/dist/src/tools/read-file.js.map +1 -1
  361. package/dist/src/tools/read-file.test.js +3 -2
  362. package/dist/src/tools/read-file.test.js.map +1 -1
  363. package/dist/src/tools/read-many-files.d.ts +2 -2
  364. package/dist/src/tools/read-many-files.js +2 -3
  365. package/dist/src/tools/read-many-files.js.map +1 -1
  366. package/dist/src/tools/read-many-files.test.js +3 -2
  367. package/dist/src/tools/read-many-files.test.js.map +1 -1
  368. package/dist/src/tools/ripGrep.d.ts +2 -2
  369. package/dist/src/tools/ripGrep.js +3 -4
  370. package/dist/src/tools/ripGrep.js.map +1 -1
  371. package/dist/src/tools/ripGrep.test.js +7 -6
  372. package/dist/src/tools/ripGrep.test.js.map +1 -1
  373. package/dist/src/tools/shell.d.ts +3 -4
  374. package/dist/src/tools/shell.js +9 -35
  375. package/dist/src/tools/shell.js.map +1 -1
  376. package/dist/src/tools/shell.test.js +40 -57
  377. package/dist/src/tools/shell.test.js.map +1 -1
  378. package/dist/src/tools/tool-error.d.ts +4 -0
  379. package/dist/src/tools/tool-error.js +4 -0
  380. package/dist/src/tools/tool-error.js.map +1 -1
  381. package/dist/src/tools/tool-registry.d.ts +11 -6
  382. package/dist/src/tools/tool-registry.js +13 -8
  383. package/dist/src/tools/tool-registry.js.map +1 -1
  384. package/dist/src/tools/tool-registry.test.js +14 -10
  385. package/dist/src/tools/tool-registry.test.js.map +1 -1
  386. package/dist/src/tools/tools.d.ts +7 -5
  387. package/dist/src/tools/tools.js +15 -17
  388. package/dist/src/tools/tools.js.map +1 -1
  389. package/dist/src/tools/tools.test.js +3 -1
  390. package/dist/src/tools/tools.test.js.map +1 -1
  391. package/dist/src/tools/web-fetch.d.ts +2 -2
  392. package/dist/src/tools/web-fetch.js +4 -4
  393. package/dist/src/tools/web-fetch.js.map +1 -1
  394. package/dist/src/tools/web-fetch.test.js +17 -19
  395. package/dist/src/tools/web-fetch.test.js.map +1 -1
  396. package/dist/src/tools/web-search.d.ts +2 -2
  397. package/dist/src/tools/web-search.js +3 -4
  398. package/dist/src/tools/web-search.js.map +1 -1
  399. package/dist/src/tools/web-search.test.js +2 -1
  400. package/dist/src/tools/web-search.test.js.map +1 -1
  401. package/dist/src/tools/write-file.d.ts +2 -2
  402. package/dist/src/tools/write-file.js +5 -3
  403. package/dist/src/tools/write-file.js.map +1 -1
  404. package/dist/src/tools/write-file.test.js +4 -1
  405. package/dist/src/tools/write-file.test.js.map +1 -1
  406. package/dist/src/tools/write-todos.d.ts +2 -2
  407. package/dist/src/tools/write-todos.js +5 -4
  408. package/dist/src/tools/write-todos.js.map +1 -1
  409. package/dist/src/tools/write-todos.test.js +2 -1
  410. package/dist/src/tools/write-todos.test.js.map +1 -1
  411. package/dist/src/utils/apiConversionUtils.d.ts +12 -0
  412. package/dist/src/utils/apiConversionUtils.js +46 -0
  413. package/dist/src/utils/apiConversionUtils.js.map +1 -0
  414. package/dist/src/utils/apiConversionUtils.test.d.ts +6 -0
  415. package/dist/src/utils/apiConversionUtils.test.js +150 -0
  416. package/dist/src/utils/apiConversionUtils.test.js.map +1 -0
  417. package/dist/src/utils/editCorrector.test.js +1 -1
  418. package/dist/src/utils/editCorrector.test.js.map +1 -1
  419. package/dist/src/utils/editor.d.ts +2 -2
  420. package/dist/src/utils/editor.js +19 -2
  421. package/dist/src/utils/editor.js.map +1 -1
  422. package/dist/src/utils/editor.test.js +27 -4
  423. package/dist/src/utils/editor.test.js.map +1 -1
  424. package/dist/src/utils/events.d.ts +52 -1
  425. package/dist/src/utils/events.js +28 -0
  426. package/dist/src/utils/events.js.map +1 -1
  427. package/dist/src/utils/events.test.js +25 -0
  428. package/dist/src/utils/events.test.js.map +1 -1
  429. package/dist/src/utils/fileDiffUtils.d.ts +18 -0
  430. package/dist/src/utils/fileDiffUtils.js +37 -0
  431. package/dist/src/utils/fileDiffUtils.js.map +1 -0
  432. package/dist/src/utils/fileDiffUtils.test.d.ts +6 -0
  433. package/dist/src/utils/fileDiffUtils.test.js +84 -0
  434. package/dist/src/utils/fileDiffUtils.test.js.map +1 -0
  435. package/dist/src/utils/gitIgnoreParser.js +9 -10
  436. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  437. package/dist/src/utils/installationManager.test.js +11 -3
  438. package/dist/src/utils/installationManager.test.js.map +1 -1
  439. package/dist/src/utils/memoryDiscovery.js +1 -2
  440. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  441. package/dist/src/utils/memoryDiscovery.test.js +9 -0
  442. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  443. package/dist/src/utils/paths.d.ts +10 -0
  444. package/dist/src/utils/paths.js +20 -1
  445. package/dist/src/utils/paths.js.map +1 -1
  446. package/dist/src/utils/terminal.d.ts +2 -0
  447. package/dist/src/utils/terminal.js +6 -0
  448. package/dist/src/utils/terminal.js.map +1 -1
  449. package/dist/src/utils/tokenCalculation.js +20 -5
  450. package/dist/src/utils/tokenCalculation.js.map +1 -1
  451. package/dist/src/utils/tokenCalculation.test.js +11 -2
  452. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  453. package/dist/src/utils/tool-utils.test.js +2 -1
  454. package/dist/src/utils/tool-utils.test.js.map +1 -1
  455. package/dist/src/utils/userAccountManager.test.js +5 -5
  456. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  457. package/dist/tsconfig.tsbuildinfo +1 -1
  458. package/package.json +3 -2
  459. package/dist/docs/cli/configuration.md +0 -780
  460. package/dist/docs/get-started/deployment.md +0 -143
  461. package/dist/google-gemini-cli-core-0.24.0-nightly.20251227.37be16243.tgz +0 -0
  462. package/dist/src/agents/introspection-agent.js.map +0 -1
  463. package/dist/src/agents/introspection-agent.test.js.map +0 -1
  464. package/dist/src/agents/toml-loader.d.ts +0 -74
  465. package/dist/src/agents/toml-loader.js.map +0 -1
  466. package/dist/src/agents/toml-loader.test.js +0 -309
  467. package/dist/src/agents/toml-loader.test.js.map +0 -1
  468. package/dist/src/core/sessionHookTriggers.d.ts +0 -28
  469. package/dist/src/core/sessionHookTriggers.js +0 -68
  470. package/dist/src/core/sessionHookTriggers.js.map +0 -1
  471. package/dist/src/services/skillManager.js +0 -157
  472. package/dist/src/services/skillManager.js.map +0 -1
  473. package/dist/src/services/skillManager.test.js +0 -169
  474. package/dist/src/services/skillManager.test.js.map +0 -1
  475. package/dist/src/tools/smart-edit.d.ts +0 -78
  476. package/dist/src/tools/smart-edit.js +0 -722
  477. package/dist/src/tools/smart-edit.js.map +0 -1
  478. package/dist/src/tools/smart-edit.test.js +0 -591
  479. package/dist/src/tools/smart-edit.test.js.map +0 -1
  480. package/dist/src/utils/shell-permissions.d.ts +0 -52
  481. package/dist/src/utils/shell-permissions.js +0 -188
  482. package/dist/src/utils/shell-permissions.js.map +0 -1
  483. package/dist/src/utils/shell-permissions.test.js +0 -342
  484. package/dist/src/utils/shell-permissions.test.js.map +0 -1
  485. /package/dist/src/agents/{introspection-agent.test.d.ts → a2aUtils.test.d.ts} +0 -0
  486. /package/dist/src/agents/{toml-loader.test.d.ts → agentLoader.test.d.ts} +0 -0
  487. /package/dist/src/{services/skillManager.test.d.ts → agents/cli-help-agent.test.d.ts} +0 -0
  488. /package/dist/src/{tools/smart-edit.test.d.ts → availability/fallbackIntegration.test.d.ts} +0 -0
  489. /package/dist/src/{utils/shell-permissions.test.d.ts → code_assist/experiments/experiments_local.test.d.ts} +0 -0
@@ -7,7 +7,7 @@ import * as path from 'node:path';
7
7
  import * as os from 'node:os';
8
8
  import * as crypto from 'node:crypto';
9
9
  import * as fs from 'node:fs';
10
- import { GEMINI_DIR } from '../utils/paths.js';
10
+ import { GEMINI_DIR, homedir } from '../utils/paths.js';
11
11
  export const GOOGLE_ACCOUNTS_FILENAME = 'google_accounts.json';
12
12
  export const OAUTH_FILE = 'oauth_creds.json';
13
13
  const TMP_DIR_NAME = 'tmp';
@@ -18,7 +18,7 @@ export class Storage {
18
18
  this.targetDir = targetDir;
19
19
  }
20
20
  static getGlobalGeminiDir() {
21
- const homeDir = os.homedir();
21
+ const homeDir = homedir();
22
22
  if (!homeDir) {
23
23
  return path.join(os.tmpdir(), GEMINI_DIR);
24
24
  }
@@ -114,6 +114,9 @@ export class Storage {
114
114
  getProjectTempCheckpointsDir() {
115
115
  return path.join(this.getProjectTempDir(), 'checkpoints');
116
116
  }
117
+ getProjectTempLogsDir() {
118
+ return path.join(this.getProjectTempDir(), 'logs');
119
+ }
117
120
  getExtensionsDir() {
118
121
  return path.join(this.getGeminiDir(), 'extensions');
119
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/config/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/config/storage.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { createUserContent } from '@google/genai';
6
7
  import { getDirectoryContextString, getInitialChatHistory, } from '../utils/environmentContext.js';
7
8
  import { CompressionStatus } from './turn.js';
8
9
  import { Turn, GeminiEventType } from './turn.js';
@@ -17,13 +18,14 @@ import { LoopDetectionService } from '../services/loopDetectionService.js';
17
18
  import { ChatCompressionService } from '../services/chatCompressionService.js';
18
19
  import { ideContextStore } from '../ide/ideContext.js';
19
20
  import { logContentRetryFailure, logNextSpeakerCheck, } from '../telemetry/loggers.js';
20
- import { fireBeforeAgentHook, fireAfterAgentHook, } from './clientHookTriggers.js';
21
21
  import { ContentRetryFailureEvent, NextSpeakerCheckEvent, } from '../telemetry/types.js';
22
22
  import { uiTelemetryService } from '../telemetry/uiTelemetry.js';
23
23
  import { handleFallback } from '../fallback/handler.js';
24
24
  import { debugLogger } from '../utils/debugLogger.js';
25
25
  import { calculateRequestTokenCount } from '../utils/tokenCalculation.js';
26
26
  import { applyModelSelection, createAvailabilityContextProvider, } from '../availability/policyHelpers.js';
27
+ import { resolveModel } from '../config/models.js';
28
+ import { partToString } from '../utils/partUtils.js';
27
29
  const MAX_TURNS = 100;
28
30
  export class GeminiClient {
29
31
  config;
@@ -49,7 +51,7 @@ export class GeminiClient {
49
51
  // Hook state to deduplicate BeforeAgent calls and track response for
50
52
  // AfterAgent
51
53
  hookStateMap = new Map();
52
- async fireBeforeAgentHookSafe(messageBus, request, prompt_id) {
54
+ async fireBeforeAgentHookSafe(request, prompt_id) {
53
55
  let hookState = this.hookStateMap.get(prompt_id);
54
56
  if (!hookState) {
55
57
  hookState = {
@@ -68,13 +70,26 @@ export class GeminiClient {
68
70
  if (hookState.hasFiredBeforeAgent) {
69
71
  return undefined;
70
72
  }
71
- const hookOutput = await fireBeforeAgentHook(messageBus, request);
73
+ const hookResult = await this.config
74
+ .getHookSystem()
75
+ ?.fireBeforeAgentEvent(partToString(request));
76
+ const hookOutput = hookResult?.finalOutput;
72
77
  hookState.hasFiredBeforeAgent = true;
73
- if (hookOutput?.isBlockingDecision() || hookOutput?.shouldStopExecution()) {
78
+ if (hookOutput?.shouldStopExecution()) {
74
79
  return {
75
- type: GeminiEventType.Error,
80
+ type: GeminiEventType.AgentExecutionStopped,
76
81
  value: {
77
- error: new Error(`BeforeAgent hook blocked processing: ${hookOutput.getEffectiveReason()}`),
82
+ reason: hookOutput.getEffectiveReason(),
83
+ systemMessage: hookOutput.systemMessage,
84
+ },
85
+ };
86
+ }
87
+ if (hookOutput?.isBlockingDecision()) {
88
+ return {
89
+ type: GeminiEventType.AgentExecutionBlocked,
90
+ value: {
91
+ reason: hookOutput.getEffectiveReason(),
92
+ systemMessage: hookOutput.systemMessage,
78
93
  },
79
94
  };
80
95
  }
@@ -84,7 +99,7 @@ export class GeminiClient {
84
99
  }
85
100
  return undefined;
86
101
  }
87
- async fireAfterAgentHookSafe(messageBus, currentRequest, prompt_id, turn) {
102
+ async fireAfterAgentHookSafe(currentRequest, prompt_id, turn) {
88
103
  const hookState = this.hookStateMap.get(prompt_id);
89
104
  // Only fire on the outermost call (when activeCalls is 1)
90
105
  if (!hookState || hookState.activeCalls !== 1) {
@@ -97,7 +112,10 @@ export class GeminiClient {
97
112
  turn?.getResponseText() ||
98
113
  '[no response text]';
99
114
  const finalRequest = hookState.originalRequest || currentRequest;
100
- const hookOutput = await fireAfterAgentHook(messageBus, finalRequest, finalResponseText);
115
+ const hookResult = await this.config
116
+ .getHookSystem()
117
+ ?.fireAfterAgentEvent(partToString(finalRequest), finalResponseText);
118
+ const hookOutput = hookResult?.finalOutput;
101
119
  return hookOutput;
102
120
  }
103
121
  updateTelemetryTokenCount() {
@@ -342,7 +360,7 @@ export class GeminiClient {
342
360
  }
343
361
  // Availability logic: The configured model is the source of truth,
344
362
  // including any permanent fallbacks (config.setModel) or manual overrides.
345
- return this.config.getActiveModel();
363
+ return resolveModel(this.config.getActiveModel());
346
364
  }
347
365
  async *processTurn(request, signal, prompt_id, boundedTurns, isInvalidStreamRetry) {
348
366
  // Re-initialize turn (it was empty before if in loop, or new instance)
@@ -407,6 +425,7 @@ export class GeminiClient {
407
425
  history: this.getChat().getHistory(/*curated=*/ true),
408
426
  request,
409
427
  signal,
428
+ requestedModel: this.config.getModel(),
410
429
  };
411
430
  let modelToUse;
412
431
  // Determine Model (Stickiness vs. Routing)
@@ -497,9 +516,17 @@ export class GeminiClient {
497
516
  this.currentSequenceModel = null;
498
517
  }
499
518
  if (hooksEnabled && messageBus) {
500
- const hookResult = await this.fireBeforeAgentHookSafe(messageBus, request, prompt_id);
519
+ const hookResult = await this.fireBeforeAgentHookSafe(request, prompt_id);
501
520
  if (hookResult) {
502
- if ('type' in hookResult && hookResult.type === GeminiEventType.Error) {
521
+ if ('type' in hookResult &&
522
+ hookResult.type === GeminiEventType.AgentExecutionStopped) {
523
+ // Add user message to history before returning so it's kept in the transcript
524
+ this.getChat().addHistory(createUserContent(request));
525
+ yield hookResult;
526
+ return new Turn(this.getChat(), prompt_id);
527
+ }
528
+ else if ('type' in hookResult &&
529
+ hookResult.type === GeminiEventType.AgentExecutionBlocked) {
503
530
  yield hookResult;
504
531
  return new Turn(this.getChat(), prompt_id);
505
532
  }
@@ -518,10 +545,26 @@ export class GeminiClient {
518
545
  turn = yield* this.processTurn(request, signal, prompt_id, boundedTurns, isInvalidStreamRetry);
519
546
  // Fire AfterAgent hook if we have a turn and no pending tools
520
547
  if (hooksEnabled && messageBus) {
521
- const hookOutput = await this.fireAfterAgentHookSafe(messageBus, request, prompt_id, turn);
522
- if (hookOutput?.isBlockingDecision() ||
523
- hookOutput?.shouldStopExecution()) {
548
+ const hookOutput = await this.fireAfterAgentHookSafe(request, prompt_id, turn);
549
+ if (hookOutput?.shouldStopExecution()) {
550
+ yield {
551
+ type: GeminiEventType.AgentExecutionStopped,
552
+ value: {
553
+ reason: hookOutput.getEffectiveReason(),
554
+ systemMessage: hookOutput.systemMessage,
555
+ },
556
+ };
557
+ return turn;
558
+ }
559
+ if (hookOutput?.isBlockingDecision()) {
524
560
  const continueReason = hookOutput.getEffectiveReason();
561
+ yield {
562
+ type: GeminiEventType.AgentExecutionBlocked,
563
+ value: {
564
+ reason: continueReason,
565
+ systemMessage: hookOutput.systemMessage,
566
+ },
567
+ };
525
568
  const continueRequest = [{ text: continueReason }];
526
569
  yield* this.sendMessageStream(continueRequest, signal, prompt_id, boundedTurns - 1);
527
570
  }
@@ -613,7 +656,15 @@ export class GeminiClient {
613
656
  }
614
657
  else if (info.compressionStatus === CompressionStatus.COMPRESSED) {
615
658
  if (newHistory) {
616
- this.chat = await this.startChat(newHistory);
659
+ // capture current session data before resetting
660
+ const currentRecordingService = this.getChat().getChatRecordingService();
661
+ const conversation = currentRecordingService.getConversation();
662
+ const filePath = currentRecordingService.getConversationFilePath();
663
+ let resumedData;
664
+ if (conversation && filePath) {
665
+ resumedData = { conversation, filePath };
666
+ }
667
+ this.chat = await this.startChat(newHistory, resumedData);
617
668
  this.updateTelemetryTokenCount();
618
669
  this.forceFullIdeContext = true;
619
670
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
@@ -18,8 +18,8 @@ import { uiTelemetryService } from '../telemetry/uiTelemetry.js';
18
18
  import { ChatCompressionService } from '../services/chatCompressionService.js';
19
19
  import { createAvailabilityServiceMock } from '../availability/testUtils.js';
20
20
  import { ClearcutLogger } from '../telemetry/clearcut-logger/clearcut-logger.js';
21
- import { HookSystem } from '../hooks/hookSystem.js';
22
21
  import * as policyCatalog from '../availability/policyCatalog.js';
22
+ import { partToString } from '../utils/partUtils.js';
23
23
  vi.mock('../services/chatCompressionService.js');
24
24
  // Mock fs module to prevent actual file system operations during tests
25
25
  const mockFileSystem = new Map();
@@ -93,15 +93,22 @@ vi.mock('../telemetry/uiTelemetry.js', () => ({
93
93
  },
94
94
  }));
95
95
  vi.mock('../hooks/hookSystem.js');
96
- vi.mock('./clientHookTriggers.js', () => ({
97
- fireBeforeAgentHook: vi.fn(),
98
- fireAfterAgentHook: vi.fn().mockResolvedValue({
99
- decision: 'allow',
100
- continue: false,
101
- suppressOutput: false,
102
- systemMessage: undefined,
96
+ const mockHookSystem = {
97
+ fireBeforeAgentEvent: vi.fn().mockResolvedValue({
98
+ success: true,
99
+ finalOutput: undefined,
100
+ allOutputs: [],
101
+ errors: [],
102
+ totalDuration: 0,
103
103
  }),
104
- }));
104
+ fireAfterAgentEvent: vi.fn().mockResolvedValue({
105
+ success: true,
106
+ finalOutput: undefined,
107
+ allOutputs: [],
108
+ errors: [],
109
+ totalDuration: 0,
110
+ }),
111
+ };
105
112
  /**
106
113
  * Array.fromAsync ponyfill, which will be available in es 2024.
107
114
  *
@@ -233,9 +240,7 @@ describe('Gemini Client (client.ts)', () => {
233
240
  .fn()
234
241
  .mockReturnValue(createAvailabilityServiceMock()),
235
242
  };
236
- mockConfig.getHookSystem = vi
237
- .fn()
238
- .mockReturnValue(new HookSystem(mockConfig));
243
+ mockConfig.getHookSystem = vi.fn().mockReturnValue(mockHookSystem);
239
244
  client = new GeminiClient(mockConfig);
240
245
  await client.initialize();
241
246
  vi.mocked(mockConfig.getGeminiClient).mockReturnValue(client);
@@ -318,6 +323,10 @@ describe('Gemini Client (client.ts)', () => {
318
323
  getHistory: vi.fn((_curated) => chatHistory),
319
324
  setHistory: vi.fn(),
320
325
  getLastPromptTokenCount: vi.fn().mockReturnValue(originalTokenCount),
326
+ getChatRecordingService: vi.fn().mockReturnValue({
327
+ getConversation: vi.fn().mockReturnValue(null),
328
+ getConversationFilePath: vi.fn().mockReturnValue(null),
329
+ }),
321
330
  };
322
331
  client['chat'] = mockOriginalChat;
323
332
  vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(originalTokenCount);
@@ -476,6 +485,25 @@ describe('Gemini Client (client.ts)', () => {
476
485
  newTokenCount: 50,
477
486
  });
478
487
  });
488
+ it('should resume the session file when compression succeeds', async () => {
489
+ const { client, mockOriginalChat } = setup({
490
+ compressionStatus: CompressionStatus.COMPRESSED,
491
+ });
492
+ const mockConversation = { some: 'conversation' };
493
+ const mockFilePath = '/tmp/session.json';
494
+ // Override the mock to return values
495
+ const mockRecordingService = {
496
+ getConversation: vi.fn().mockReturnValue(mockConversation),
497
+ getConversationFilePath: vi.fn().mockReturnValue(mockFilePath),
498
+ };
499
+ vi.mocked(mockOriginalChat.getChatRecordingService).mockReturnValue(mockRecordingService);
500
+ await client.tryCompressChat('prompt-id', false);
501
+ expect(client['startChat']).toHaveBeenCalledWith(expect.anything(), // newHistory
502
+ {
503
+ conversation: mockConversation,
504
+ filePath: mockFilePath,
505
+ });
506
+ });
479
507
  });
480
508
  describe('sendMessageStream', () => {
481
509
  it('emits a compression event when the context was automatically compressed', async () => {
@@ -1938,7 +1966,6 @@ ${JSON.stringify({
1938
1966
  const promptId = 'test-prompt-hook-1';
1939
1967
  const request = { text: 'Hello Hooks' };
1940
1968
  const signal = new AbortController().signal;
1941
- const { fireBeforeAgentHook, fireAfterAgentHook } = await import('./clientHookTriggers.js');
1942
1969
  mockTurnRunFn.mockImplementation(async function* () {
1943
1970
  this.getResponseText.mockReturnValue('Hook Response');
1944
1971
  yield { type: GeminiEventType.Content, value: 'Hook Response' };
@@ -1946,9 +1973,9 @@ ${JSON.stringify({
1946
1973
  const stream = client.sendMessageStream(request, signal, promptId);
1947
1974
  while (!(await stream.next()).done)
1948
1975
  ;
1949
- expect(fireBeforeAgentHook).toHaveBeenCalledTimes(1);
1950
- expect(fireAfterAgentHook).toHaveBeenCalledTimes(1);
1951
- expect(fireAfterAgentHook).toHaveBeenCalledWith(expect.anything(), request, 'Hook Response');
1976
+ expect(mockHookSystem.fireBeforeAgentEvent).toHaveBeenCalledTimes(1);
1977
+ expect(mockHookSystem.fireAfterAgentEvent).toHaveBeenCalledTimes(1);
1978
+ expect(mockHookSystem.fireAfterAgentEvent).toHaveBeenCalledWith(partToString(request), 'Hook Response');
1952
1979
  // Map should be empty
1953
1980
  expect(client['hookStateMap'].size).toBe(0);
1954
1981
  });
@@ -1960,7 +1987,6 @@ ${JSON.stringify({
1960
1987
  const promptId = 'test-prompt-hook-recursive';
1961
1988
  const request = { text: 'Recursion Test' };
1962
1989
  const signal = new AbortController().signal;
1963
- const { fireBeforeAgentHook, fireAfterAgentHook } = await import('./clientHookTriggers.js');
1964
1990
  let callCount = 0;
1965
1991
  mockTurnRunFn.mockImplementation(async function* () {
1966
1992
  callCount++;
@@ -1972,11 +1998,11 @@ ${JSON.stringify({
1972
1998
  while (!(await stream.next()).done)
1973
1999
  ;
1974
2000
  // BeforeAgent should fire ONLY once despite multiple internal turns
1975
- expect(fireBeforeAgentHook).toHaveBeenCalledTimes(1);
2001
+ expect(mockHookSystem.fireBeforeAgentEvent).toHaveBeenCalledTimes(1);
1976
2002
  // AfterAgent should fire ONLY when the stack unwinds
1977
- expect(fireAfterAgentHook).toHaveBeenCalledTimes(1);
2003
+ expect(mockHookSystem.fireAfterAgentEvent).toHaveBeenCalledTimes(1);
1978
2004
  // Check cumulative response (separated by newline)
1979
- expect(fireAfterAgentHook).toHaveBeenCalledWith(expect.anything(), request, 'Response 1\nResponse 2');
2005
+ expect(mockHookSystem.fireAfterAgentEvent).toHaveBeenCalledWith(partToString(request), 'Response 1\nResponse 2');
1980
2006
  expect(client['hookStateMap'].size).toBe(0);
1981
2007
  });
1982
2008
  it('should use original request in AfterAgent hook even when continuation happened', async () => {
@@ -1987,7 +2013,6 @@ ${JSON.stringify({
1987
2013
  const promptId = 'test-prompt-hook-original-req';
1988
2014
  const request = { text: 'Do something' };
1989
2015
  const signal = new AbortController().signal;
1990
- const { fireAfterAgentHook } = await import('./clientHookTriggers.js');
1991
2016
  mockTurnRunFn.mockImplementation(async function* () {
1992
2017
  this.getResponseText.mockReturnValue('Ok');
1993
2018
  yield { type: GeminiEventType.Content, value: 'Ok' };
@@ -1995,7 +2020,7 @@ ${JSON.stringify({
1995
2020
  const stream = client.sendMessageStream(request, signal, promptId);
1996
2021
  while (!(await stream.next()).done)
1997
2022
  ;
1998
- expect(fireAfterAgentHook).toHaveBeenCalledWith(expect.anything(), request, // Should be 'Do something'
2023
+ expect(mockHookSystem.fireAfterAgentEvent).toHaveBeenCalledWith(partToString(request), // Should be 'Do something'
1999
2024
  expect.stringContaining('Ok'));
2000
2025
  });
2001
2026
  it('should cleanup state when prompt_id changes', async () => {
@@ -2016,6 +2041,130 @@ ${JSON.stringify({
2016
2041
  expect(client['hookStateMap'].has('old-id')).toBe(false);
2017
2042
  expect(client['hookStateMap'].has('new-id')).toBe(true);
2018
2043
  });
2044
+ it('should stop execution in BeforeAgent when hook returns continue: false', async () => {
2045
+ mockHookSystem.fireBeforeAgentEvent.mockResolvedValue({
2046
+ success: true,
2047
+ finalOutput: {
2048
+ shouldStopExecution: () => true,
2049
+ getEffectiveReason: () => 'Stopped by hook',
2050
+ systemMessage: undefined,
2051
+ },
2052
+ allOutputs: [],
2053
+ errors: [],
2054
+ totalDuration: 0,
2055
+ });
2056
+ const mockChat = {
2057
+ addHistory: vi.fn(),
2058
+ getHistory: vi.fn().mockReturnValue([]),
2059
+ getLastPromptTokenCount: vi.fn(),
2060
+ };
2061
+ client['chat'] = mockChat;
2062
+ const request = [{ text: 'Hello' }];
2063
+ const stream = client.sendMessageStream(request, new AbortController().signal, 'test-prompt');
2064
+ const events = await fromAsync(stream);
2065
+ expect(events).toContainEqual({
2066
+ type: GeminiEventType.AgentExecutionStopped,
2067
+ value: { reason: 'Stopped by hook' },
2068
+ });
2069
+ expect(mockChat.addHistory).toHaveBeenCalledWith({
2070
+ role: 'user',
2071
+ parts: request,
2072
+ });
2073
+ expect(mockTurnRunFn).not.toHaveBeenCalled();
2074
+ });
2075
+ it('should block execution in BeforeAgent when hook returns decision: block', async () => {
2076
+ mockHookSystem.fireBeforeAgentEvent.mockResolvedValue({
2077
+ success: true,
2078
+ finalOutput: {
2079
+ shouldStopExecution: () => false,
2080
+ isBlockingDecision: () => true,
2081
+ getEffectiveReason: () => 'Blocked by hook',
2082
+ systemMessage: undefined,
2083
+ },
2084
+ allOutputs: [],
2085
+ errors: [],
2086
+ totalDuration: 0,
2087
+ });
2088
+ const mockChat = {
2089
+ addHistory: vi.fn(),
2090
+ getHistory: vi.fn().mockReturnValue([]),
2091
+ getLastPromptTokenCount: vi.fn(),
2092
+ };
2093
+ client['chat'] = mockChat;
2094
+ const request = [{ text: 'Hello' }];
2095
+ const stream = client.sendMessageStream(request, new AbortController().signal, 'test-prompt');
2096
+ const events = await fromAsync(stream);
2097
+ expect(events).toContainEqual({
2098
+ type: GeminiEventType.AgentExecutionBlocked,
2099
+ value: {
2100
+ reason: 'Blocked by hook',
2101
+ },
2102
+ });
2103
+ expect(mockChat.addHistory).not.toHaveBeenCalled();
2104
+ expect(mockTurnRunFn).not.toHaveBeenCalled();
2105
+ });
2106
+ it('should stop execution in AfterAgent when hook returns continue: false', async () => {
2107
+ mockHookSystem.fireAfterAgentEvent.mockResolvedValue({
2108
+ success: true,
2109
+ finalOutput: {
2110
+ shouldStopExecution: () => true,
2111
+ getEffectiveReason: () => 'Stopped after agent',
2112
+ systemMessage: undefined,
2113
+ },
2114
+ allOutputs: [],
2115
+ errors: [],
2116
+ totalDuration: 0,
2117
+ });
2118
+ mockTurnRunFn.mockImplementation(async function* () {
2119
+ yield { type: GeminiEventType.Content, value: 'Hello' };
2120
+ });
2121
+ const stream = client.sendMessageStream({ text: 'Hi' }, new AbortController().signal, 'test-prompt');
2122
+ const events = await fromAsync(stream);
2123
+ expect(events).toContainEqual({
2124
+ type: GeminiEventType.AgentExecutionStopped,
2125
+ value: { reason: 'Stopped after agent' },
2126
+ });
2127
+ // sendMessageStream should not recurse
2128
+ expect(mockTurnRunFn).toHaveBeenCalledTimes(1);
2129
+ });
2130
+ it('should yield AgentExecutionBlocked and recurse in AfterAgent when hook returns decision: block', async () => {
2131
+ mockHookSystem.fireAfterAgentEvent
2132
+ .mockResolvedValueOnce({
2133
+ success: true,
2134
+ finalOutput: {
2135
+ shouldStopExecution: () => false,
2136
+ isBlockingDecision: () => true,
2137
+ getEffectiveReason: () => 'Please explain',
2138
+ systemMessage: undefined,
2139
+ },
2140
+ allOutputs: [],
2141
+ errors: [],
2142
+ totalDuration: 0,
2143
+ })
2144
+ .mockResolvedValueOnce({
2145
+ success: true,
2146
+ finalOutput: {
2147
+ shouldStopExecution: () => false,
2148
+ isBlockingDecision: () => false,
2149
+ systemMessage: undefined,
2150
+ },
2151
+ allOutputs: [],
2152
+ errors: [],
2153
+ totalDuration: 0,
2154
+ });
2155
+ mockTurnRunFn.mockImplementation(async function* () {
2156
+ yield { type: GeminiEventType.Content, value: 'Response' };
2157
+ });
2158
+ const stream = client.sendMessageStream({ text: 'Hi' }, new AbortController().signal, 'test-prompt');
2159
+ const events = await fromAsync(stream);
2160
+ expect(events).toContainEqual({
2161
+ type: GeminiEventType.AgentExecutionBlocked,
2162
+ value: { reason: 'Please explain' },
2163
+ });
2164
+ // Should have called turn run twice (original + re-prompt)
2165
+ expect(mockTurnRunFn).toHaveBeenCalledTimes(2);
2166
+ expect(mockTurnRunFn).toHaveBeenNthCalledWith(2, expect.anything(), [{ text: 'Please explain' }], expect.anything());
2167
+ });
2019
2168
  });
2020
2169
  });
2021
2170
  });