@google/gemini-cli-core 0.26.0-preview.4 → 0.27.0-nightly.20260126.cb772a5b7

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 (325) hide show
  1. package/README.md +18 -1
  2. package/dist/docs/changelogs/index.md +87 -0
  3. package/dist/docs/changelogs/latest.md +355 -150
  4. package/dist/docs/changelogs/preview.md +318 -210
  5. package/dist/docs/cli/commands.md +0 -6
  6. package/dist/docs/cli/keyboard-shortcuts.md +32 -31
  7. package/dist/docs/cli/settings.md +16 -18
  8. package/dist/docs/cli/system-prompt.md +32 -0
  9. package/dist/docs/cli/uninstall.md +18 -0
  10. package/dist/docs/extensions/index.md +1 -1
  11. package/dist/docs/get-started/configuration.md +9 -34
  12. package/dist/docs/hooks/best-practices.md +219 -398
  13. package/dist/docs/hooks/index.md +111 -656
  14. package/dist/docs/hooks/reference.md +280 -136
  15. package/dist/docs/hooks/writing-hooks.md +202 -796
  16. package/dist/docs/sidebar.json +1 -5
  17. package/dist/docs/tools/mcp-server.md +24 -1
  18. package/dist/google-gemini-cli-core-0.27.0-nightly.20260121.97aac696f.tgz +0 -0
  19. package/dist/src/agents/agentLoader.js +10 -10
  20. package/dist/src/agents/agentLoader.js.map +1 -1
  21. package/dist/src/agents/agentLoader.test.js +16 -19
  22. package/dist/src/agents/agentLoader.test.js.map +1 -1
  23. package/dist/src/agents/cli-help-agent.js +8 -5
  24. package/dist/src/agents/cli-help-agent.js.map +1 -1
  25. package/dist/src/agents/cli-help-agent.test.js +4 -2
  26. package/dist/src/agents/cli-help-agent.test.js.map +1 -1
  27. package/dist/src/agents/codebase-investigator.d.ts +2 -1
  28. package/dist/src/agents/codebase-investigator.js +62 -41
  29. package/dist/src/agents/codebase-investigator.js.map +1 -1
  30. package/dist/src/agents/codebase-investigator.test.js +15 -8
  31. package/dist/src/agents/codebase-investigator.test.js.map +1 -1
  32. package/dist/src/agents/generalist-agent.js +9 -11
  33. package/dist/src/agents/generalist-agent.js.map +1 -1
  34. package/dist/src/agents/generalist-agent.test.js +3 -3
  35. package/dist/src/agents/generalist-agent.test.js.map +1 -1
  36. package/dist/src/agents/local-executor.js +25 -9
  37. package/dist/src/agents/local-executor.js.map +1 -1
  38. package/dist/src/agents/local-executor.test.js +74 -7
  39. package/dist/src/agents/local-executor.test.js.map +1 -1
  40. package/dist/src/agents/local-invocation.test.js +7 -3
  41. package/dist/src/agents/local-invocation.test.js.map +1 -1
  42. package/dist/src/agents/registry.d.ts +8 -5
  43. package/dist/src/agents/registry.js +31 -75
  44. package/dist/src/agents/registry.js.map +1 -1
  45. package/dist/src/agents/registry.test.js +93 -30
  46. package/dist/src/agents/registry.test.js.map +1 -1
  47. package/dist/src/agents/remote-invocation.js +2 -1
  48. package/dist/src/agents/remote-invocation.js.map +1 -1
  49. package/dist/src/agents/remote-invocation.test.js +15 -3
  50. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  51. package/dist/src/agents/subagent-tool-wrapper.js +1 -3
  52. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  53. package/dist/src/agents/subagent-tool-wrapper.test.js +10 -25
  54. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  55. package/dist/src/agents/subagent-tool.d.ts +15 -0
  56. package/dist/src/agents/subagent-tool.js +61 -0
  57. package/dist/src/agents/subagent-tool.js.map +1 -0
  58. package/dist/src/agents/types.d.ts +6 -9
  59. package/dist/src/agents/types.js +4 -0
  60. package/dist/src/agents/types.js.map +1 -1
  61. package/dist/src/code_assist/codeAssist.js +1 -1
  62. package/dist/src/code_assist/codeAssist.js.map +1 -1
  63. package/dist/src/code_assist/codeAssist.test.js +2 -2
  64. package/dist/src/code_assist/codeAssist.test.js.map +1 -1
  65. package/dist/src/code_assist/experiments/experiments.test.js +1 -0
  66. package/dist/src/code_assist/experiments/experiments.test.js.map +1 -1
  67. package/dist/src/code_assist/experiments/experiments_local.test.js +11 -6
  68. package/dist/src/code_assist/experiments/experiments_local.test.js.map +1 -1
  69. package/dist/src/code_assist/experiments/flagNames.d.ts +2 -0
  70. package/dist/src/code_assist/experiments/flagNames.js +2 -0
  71. package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
  72. package/dist/src/code_assist/oauth2.js +3 -3
  73. package/dist/src/code_assist/oauth2.test.js +1 -1
  74. package/dist/src/code_assist/server.d.ts +2 -1
  75. package/dist/src/code_assist/server.js +3 -1
  76. package/dist/src/code_assist/server.js.map +1 -1
  77. package/dist/src/code_assist/setup.d.ts +1 -0
  78. package/dist/src/code_assist/setup.js +5 -1
  79. package/dist/src/code_assist/setup.js.map +1 -1
  80. package/dist/src/code_assist/setup.test.js +10 -4
  81. package/dist/src/code_assist/setup.test.js.map +1 -1
  82. package/dist/src/config/config.d.ts +25 -18
  83. package/dist/src/config/config.js +70 -40
  84. package/dist/src/config/config.js.map +1 -1
  85. package/dist/src/config/config.test.js +48 -21
  86. package/dist/src/config/config.test.js.map +1 -1
  87. package/dist/src/confirmation-bus/message-bus.js +2 -32
  88. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  89. package/dist/src/confirmation-bus/types.d.ts +35 -21
  90. package/dist/src/confirmation-bus/types.js +8 -3
  91. package/dist/src/confirmation-bus/types.js.map +1 -1
  92. package/dist/src/core/client.js +25 -7
  93. package/dist/src/core/client.js.map +1 -1
  94. package/dist/src/core/client.test.js +52 -6
  95. package/dist/src/core/client.test.js.map +1 -1
  96. package/dist/src/core/contentGenerator.d.ts +1 -0
  97. package/dist/src/core/contentGenerator.js.map +1 -1
  98. package/dist/src/core/coreToolHookTriggers.d.ts +2 -38
  99. package/dist/src/core/coreToolHookTriggers.js +12 -159
  100. package/dist/src/core/coreToolHookTriggers.js.map +1 -1
  101. package/dist/src/core/coreToolHookTriggers.test.js +62 -94
  102. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
  103. package/dist/src/core/coreToolScheduler.js +3 -5
  104. package/dist/src/core/coreToolScheduler.js.map +1 -1
  105. package/dist/src/core/coreToolScheduler.test.js +3 -0
  106. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  107. package/dist/src/core/fakeContentGenerator.d.ts +1 -0
  108. package/dist/src/core/fakeContentGenerator.js +1 -0
  109. package/dist/src/core/fakeContentGenerator.js.map +1 -1
  110. package/dist/src/core/geminiChat.js +1 -0
  111. package/dist/src/core/geminiChat.js.map +1 -1
  112. package/dist/src/core/geminiChat.test.js +21 -0
  113. package/dist/src/core/geminiChat.test.js.map +1 -1
  114. package/dist/src/core/geminiChat_network_retry.test.js +17 -12
  115. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  116. package/dist/src/core/loggingContentGenerator.d.ts +3 -0
  117. package/dist/src/core/loggingContentGenerator.js +6 -0
  118. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  119. package/dist/src/core/loggingContentGenerator.test.js +11 -0
  120. package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
  121. package/dist/src/core/prompts-substitution.test.js +101 -0
  122. package/dist/src/core/prompts-substitution.test.js.map +1 -0
  123. package/dist/src/core/prompts.js +115 -31
  124. package/dist/src/core/prompts.js.map +1 -1
  125. package/dist/src/core/prompts.test.js +32 -0
  126. package/dist/src/core/prompts.test.js.map +1 -1
  127. package/dist/src/core/recordingContentGenerator.d.ts +2 -1
  128. package/dist/src/core/recordingContentGenerator.js +6 -1
  129. package/dist/src/core/recordingContentGenerator.js.map +1 -1
  130. package/dist/src/core/turn.d.ts +2 -0
  131. package/dist/src/core/turn.js.map +1 -1
  132. package/dist/src/generated/git-commit.d.ts +2 -2
  133. package/dist/src/generated/git-commit.js +2 -2
  134. package/dist/src/generated/git-commit.js.map +1 -1
  135. package/dist/src/hooks/hookAggregator.js +13 -3
  136. package/dist/src/hooks/hookAggregator.js.map +1 -1
  137. package/dist/src/hooks/hookEventHandler.d.ts +1 -13
  138. package/dist/src/hooks/hookEventHandler.js +1 -289
  139. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  140. package/dist/src/hooks/hookEventHandler.test.js +1 -4
  141. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  142. package/dist/src/hooks/hookSystem.d.ts +47 -3
  143. package/dist/src/hooks/hookSystem.js +90 -6
  144. package/dist/src/hooks/hookSystem.js.map +1 -1
  145. package/dist/src/hooks/hookSystem.test.js +19 -8
  146. package/dist/src/hooks/hookSystem.test.js.map +1 -1
  147. package/dist/src/hooks/types.d.ts +23 -1
  148. package/dist/src/hooks/types.js +28 -2
  149. package/dist/src/hooks/types.js.map +1 -1
  150. package/dist/src/hooks/types.test.js +9 -1
  151. package/dist/src/hooks/types.test.js.map +1 -1
  152. package/dist/src/ide/detect-ide.d.ts +41 -0
  153. package/dist/src/ide/detect-ide.js +47 -3
  154. package/dist/src/ide/detect-ide.js.map +1 -1
  155. package/dist/src/ide/detect-ide.test.js +46 -0
  156. package/dist/src/ide/detect-ide.test.js.map +1 -1
  157. package/dist/src/ide/ide-client.d.ts +1 -0
  158. package/dist/src/ide/ide-client.js +36 -9
  159. package/dist/src/ide/ide-client.js.map +1 -1
  160. package/dist/src/ide/ide-client.test.js +154 -6
  161. package/dist/src/ide/ide-client.test.js.map +1 -1
  162. package/dist/src/index.d.ts +2 -0
  163. package/dist/src/index.js +2 -0
  164. package/dist/src/index.js.map +1 -1
  165. package/dist/src/mcp/oauth-provider.d.ts +1 -2
  166. package/dist/src/mcp/oauth-provider.js +4 -8
  167. package/dist/src/mcp/oauth-provider.js.map +1 -1
  168. package/dist/src/mcp/oauth-provider.test.js +32 -0
  169. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  170. package/dist/src/mcp/oauth-utils.d.ts +13 -4
  171. package/dist/src/mcp/oauth-utils.js +23 -19
  172. package/dist/src/mcp/oauth-utils.js.map +1 -1
  173. package/dist/src/mcp/oauth-utils.test.js +13 -8
  174. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  175. package/dist/src/policy/policy-engine.d.ts +1 -8
  176. package/dist/src/policy/policy-engine.js +1 -75
  177. package/dist/src/policy/policy-engine.js.map +1 -1
  178. package/dist/src/policy/policy-engine.test.js +0 -222
  179. package/dist/src/policy/policy-engine.test.js.map +1 -1
  180. package/dist/src/routing/modelRouterService.js +18 -8
  181. package/dist/src/routing/modelRouterService.js.map +1 -1
  182. package/dist/src/routing/modelRouterService.test.js +14 -6
  183. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  184. package/dist/src/routing/strategies/classifierStrategy.js +4 -7
  185. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  186. package/dist/src/routing/strategies/classifierStrategy.test.js +10 -4
  187. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  188. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +13 -0
  189. package/dist/src/routing/strategies/numericalClassifierStrategy.js +178 -0
  190. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -0
  191. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +347 -0
  192. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -0
  193. package/dist/src/scheduler/confirmation.js +2 -3
  194. package/dist/src/scheduler/confirmation.js.map +1 -1
  195. package/dist/src/scheduler/confirmation.test.js +8 -8
  196. package/dist/src/scheduler/confirmation.test.js.map +1 -1
  197. package/dist/src/scheduler/scheduler.test.js +0 -3
  198. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  199. package/dist/src/scheduler/state-manager.js +4 -0
  200. package/dist/src/scheduler/state-manager.js.map +1 -1
  201. package/dist/src/scheduler/state-manager.test.js +11 -0
  202. package/dist/src/scheduler/state-manager.test.js.map +1 -1
  203. package/dist/src/scheduler/tool-executor.js +2 -4
  204. package/dist/src/scheduler/tool-executor.js.map +1 -1
  205. package/dist/src/scheduler/tool-executor.test.js +1 -1
  206. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  207. package/dist/src/services/chatRecordingService.d.ts +1 -1
  208. package/dist/src/services/chatRecordingService.js +23 -1
  209. package/dist/src/services/chatRecordingService.js.map +1 -1
  210. package/dist/src/services/chatRecordingService.test.js +111 -0
  211. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  212. package/dist/src/services/sessionSummaryService.test.js +1 -1
  213. package/dist/src/services/sessionSummaryService.test.js.map +1 -1
  214. package/dist/src/telemetry/metrics.js +15 -4
  215. package/dist/src/telemetry/metrics.js.map +1 -1
  216. package/dist/src/telemetry/metrics.test.js +7 -0
  217. package/dist/src/telemetry/metrics.test.js.map +1 -1
  218. package/dist/src/telemetry/types.d.ts +3 -1
  219. package/dist/src/telemetry/types.js +19 -4
  220. package/dist/src/telemetry/types.js.map +1 -1
  221. package/dist/src/test-utils/mock-message-bus.d.ts +1 -19
  222. package/dist/src/test-utils/mock-message-bus.js +1 -65
  223. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  224. package/dist/src/tools/ask-user.d.ts +20 -0
  225. package/dist/src/tools/ask-user.js +142 -0
  226. package/dist/src/tools/ask-user.js.map +1 -0
  227. package/dist/src/{core/geminiChatHookTriggers.test.d.ts → tools/ask-user.test.d.ts} +1 -1
  228. package/dist/src/tools/ask-user.test.js +187 -0
  229. package/dist/src/tools/ask-user.test.js.map +1 -0
  230. package/dist/src/tools/confirmation-policy.test.js +1 -1
  231. package/dist/src/tools/confirmation-policy.test.js.map +1 -1
  232. package/dist/src/tools/diffOptions.d.ts +1 -1
  233. package/dist/src/tools/diffOptions.js +7 -3
  234. package/dist/src/tools/diffOptions.js.map +1 -1
  235. package/dist/src/tools/diffOptions.test.js +17 -0
  236. package/dist/src/tools/diffOptions.test.js.map +1 -1
  237. package/dist/src/tools/edit.js +1 -1
  238. package/dist/src/tools/edit.js.map +1 -1
  239. package/dist/src/tools/edit.test.js +11 -3
  240. package/dist/src/tools/edit.test.js.map +1 -1
  241. package/dist/src/tools/mcp-client-manager.d.ts +13 -4
  242. package/dist/src/tools/mcp-client-manager.js +53 -21
  243. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  244. package/dist/src/tools/mcp-client-manager.test.js +1 -0
  245. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  246. package/dist/src/tools/mcp-client.test.js +1 -2
  247. package/dist/src/tools/mcp-client.test.js.map +1 -1
  248. package/dist/src/tools/modifiable-tool.test.js +3 -3
  249. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  250. package/dist/src/tools/read-many-files.js +3 -2
  251. package/dist/src/tools/read-many-files.js.map +1 -1
  252. package/dist/src/tools/ripGrep.js +7 -2
  253. package/dist/src/tools/ripGrep.js.map +1 -1
  254. package/dist/src/tools/ripGrep.test.js +2 -2
  255. package/dist/src/tools/ripGrep.test.js.map +1 -1
  256. package/dist/src/tools/tool-names.d.ts +8 -2
  257. package/dist/src/tools/tool-names.js +14 -2
  258. package/dist/src/tools/tool-names.js.map +1 -1
  259. package/dist/src/tools/tools.d.ts +1 -0
  260. package/dist/src/tools/tools.js +2 -1
  261. package/dist/src/tools/tools.js.map +1 -1
  262. package/dist/src/tools/write-file.test.js +7 -7
  263. package/dist/src/tools/write-file.test.js.map +1 -1
  264. package/dist/src/utils/constants.d.ts +7 -0
  265. package/dist/src/utils/constants.js +8 -0
  266. package/dist/src/utils/constants.js.map +1 -0
  267. package/dist/src/utils/editCorrector.js +1 -1
  268. package/dist/src/utils/editCorrector.js.map +1 -1
  269. package/dist/src/utils/editor.js +4 -1
  270. package/dist/src/utils/editor.js.map +1 -1
  271. package/dist/src/utils/editor.test.js +6 -4
  272. package/dist/src/utils/editor.test.js.map +1 -1
  273. package/dist/src/utils/events.d.ts +2 -0
  274. package/dist/src/utils/events.js +1 -0
  275. package/dist/src/utils/events.js.map +1 -1
  276. package/dist/src/utils/extensionLoader.js +1 -0
  277. package/dist/src/utils/extensionLoader.js.map +1 -1
  278. package/dist/src/utils/extensionLoader.test.js +11 -0
  279. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  280. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  281. package/dist/src/utils/googleQuotaErrors.js +6 -17
  282. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  283. package/dist/src/utils/googleQuotaErrors.test.js +4 -22
  284. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  285. package/dist/src/utils/llm-edit-fixer.js +4 -7
  286. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  287. package/dist/src/utils/llm-edit-fixer.test.js +2 -2
  288. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
  289. package/dist/src/utils/memoryImportProcessor.js +7 -24
  290. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  291. package/dist/src/utils/promptIdContext.d.ts +6 -0
  292. package/dist/src/utils/promptIdContext.js +15 -0
  293. package/dist/src/utils/promptIdContext.js.map +1 -1
  294. package/dist/src/utils/schemaValidator.d.ts +6 -0
  295. package/dist/src/utils/schemaValidator.js +12 -1
  296. package/dist/src/utils/schemaValidator.js.map +1 -1
  297. package/dist/src/utils/workspaceContext.d.ts +15 -0
  298. package/dist/src/utils/workspaceContext.js +32 -11
  299. package/dist/src/utils/workspaceContext.js.map +1 -1
  300. package/dist/src/utils/workspaceContext.test.js +55 -0
  301. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  302. package/dist/tsconfig.tsbuildinfo +1 -1
  303. package/package.json +2 -3
  304. package/dist/docs/changelogs/releases.md +0 -1543
  305. package/dist/google-gemini-cli-core-0.26.0-preview.3.tgz +0 -0
  306. package/dist/src/agents/delegate-to-agent-tool.d.ts +0 -19
  307. package/dist/src/agents/delegate-to-agent-tool.js +0 -178
  308. package/dist/src/agents/delegate-to-agent-tool.js.map +0 -1
  309. package/dist/src/agents/delegate-to-agent-tool.test.js +0 -213
  310. package/dist/src/agents/delegate-to-agent-tool.test.js.map +0 -1
  311. package/dist/src/agents/schema-utils.d.ts +0 -39
  312. package/dist/src/agents/schema-utils.js +0 -57
  313. package/dist/src/agents/schema-utils.js.map +0 -1
  314. package/dist/src/agents/schema-utils.test.js +0 -144
  315. package/dist/src/agents/schema-utils.test.js.map +0 -1
  316. package/dist/src/core/clientHookTriggers.d.ts +0 -36
  317. package/dist/src/core/clientHookTriggers.js +0 -76
  318. package/dist/src/core/clientHookTriggers.js.map +0 -1
  319. package/dist/src/core/geminiChatHookTriggers.d.ts +0 -68
  320. package/dist/src/core/geminiChatHookTriggers.js +0 -158
  321. package/dist/src/core/geminiChatHookTriggers.js.map +0 -1
  322. package/dist/src/core/geminiChatHookTriggers.test.js +0 -153
  323. package/dist/src/core/geminiChatHookTriggers.test.js.map +0 -1
  324. /package/dist/src/{agents/delegate-to-agent-tool.test.d.ts → core/prompts-substitution.test.d.ts} +0 -0
  325. /package/dist/src/{agents/schema-utils.test.d.ts → routing/strategies/numericalClassifierStrategy.test.d.ts} +0 -0
@@ -3,96 +3,11 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { MessageBusType, } from '../confirmation-bus/types.js';
7
- import { createHookOutput, NotificationType, BeforeToolHookOutput, } from '../hooks/types.js';
6
+ import { BeforeToolHookOutput } from '../hooks/types.js';
8
7
  import { ToolErrorType } from '../tools/tool-error.js';
9
8
  import { debugLogger } from '../utils/debugLogger.js';
10
9
  import { ShellToolInvocation } from '../tools/shell.js';
11
10
  import { DiscoveredMCPToolInvocation } from '../tools/mcp-tool.js';
12
- /**
13
- * Converts ToolCallConfirmationDetails to a serializable format for hooks.
14
- * Excludes function properties (onConfirm, ideConfirmation) that can't be serialized.
15
- */
16
- function toSerializableDetails(details) {
17
- const base = {
18
- type: details.type,
19
- title: details.title,
20
- };
21
- switch (details.type) {
22
- case 'edit':
23
- return {
24
- ...base,
25
- fileName: details.fileName,
26
- filePath: details.filePath,
27
- fileDiff: details.fileDiff,
28
- originalContent: details.originalContent,
29
- newContent: details.newContent,
30
- isModifying: details.isModifying,
31
- };
32
- case 'exec':
33
- return {
34
- ...base,
35
- command: details.command,
36
- rootCommand: details.rootCommand,
37
- };
38
- case 'mcp':
39
- return {
40
- ...base,
41
- serverName: details.serverName,
42
- toolName: details.toolName,
43
- toolDisplayName: details.toolDisplayName,
44
- };
45
- case 'info':
46
- return {
47
- ...base,
48
- prompt: details.prompt,
49
- urls: details.urls,
50
- };
51
- default:
52
- return base;
53
- }
54
- }
55
- /**
56
- * Gets the message to display in the notification hook for tool confirmation.
57
- */
58
- function getNotificationMessage(confirmationDetails) {
59
- switch (confirmationDetails.type) {
60
- case 'edit':
61
- return `Tool ${confirmationDetails.title} requires editing`;
62
- case 'exec':
63
- return `Tool ${confirmationDetails.title} requires execution`;
64
- case 'mcp':
65
- return `Tool ${confirmationDetails.title} requires MCP`;
66
- case 'info':
67
- return `Tool ${confirmationDetails.title} requires information`;
68
- default:
69
- return `Tool requires confirmation`;
70
- }
71
- }
72
- /**
73
- * Fires the ToolPermission notification hook for a tool that needs confirmation.
74
- *
75
- * @param messageBus The message bus to use for hook communication
76
- * @param confirmationDetails The tool confirmation details
77
- */
78
- export async function fireToolNotificationHook(messageBus, confirmationDetails) {
79
- try {
80
- const message = getNotificationMessage(confirmationDetails);
81
- const serializedDetails = toSerializableDetails(confirmationDetails);
82
- await messageBus.request({
83
- type: MessageBusType.HOOK_EXECUTION_REQUEST,
84
- eventName: 'Notification',
85
- input: {
86
- notification_type: NotificationType.ToolPermission,
87
- message,
88
- details: serializedDetails,
89
- },
90
- }, MessageBusType.HOOK_EXECUTION_RESPONSE);
91
- }
92
- catch (error) {
93
- debugLogger.debug(`Notification hook failed for ${confirmationDetails.title}:`, error);
94
- }
95
- }
96
11
  /**
97
12
  * Extracts MCP context from a tool invocation if it's an MCP tool.
98
13
  *
@@ -123,89 +38,27 @@ function extractMcpContext(invocation, config) {
123
38
  tcp: serverConfig.tcp,
124
39
  };
125
40
  }
126
- /**
127
- * Fires the BeforeTool hook and returns the hook output.
128
- *
129
- * @param messageBus The message bus to use for hook communication
130
- * @param toolName The name of the tool being executed
131
- * @param toolInput The input parameters for the tool
132
- * @param mcpContext Optional MCP context for MCP tools
133
- * @returns The hook output, or undefined if no hook was executed or on error
134
- */
135
- export async function fireBeforeToolHook(messageBus, toolName, toolInput, mcpContext) {
136
- try {
137
- const response = await messageBus.request({
138
- type: MessageBusType.HOOK_EXECUTION_REQUEST,
139
- eventName: 'BeforeTool',
140
- input: {
141
- tool_name: toolName,
142
- tool_input: toolInput,
143
- ...(mcpContext && { mcp_context: mcpContext }),
144
- },
145
- }, MessageBusType.HOOK_EXECUTION_RESPONSE);
146
- return response.output
147
- ? createHookOutput('BeforeTool', response.output)
148
- : undefined;
149
- }
150
- catch (error) {
151
- debugLogger.debug(`BeforeTool hook failed for ${toolName}:`, error);
152
- return undefined;
153
- }
154
- }
155
- /**
156
- * Fires the AfterTool hook and returns the hook output.
157
- *
158
- * @param messageBus The message bus to use for hook communication
159
- * @param toolName The name of the tool that was executed
160
- * @param toolInput The input parameters for the tool
161
- * @param toolResponse The result from the tool execution
162
- * @param mcpContext Optional MCP context for MCP tools
163
- * @returns The hook output, or undefined if no hook was executed or on error
164
- */
165
- export async function fireAfterToolHook(messageBus, toolName, toolInput, toolResponse, mcpContext) {
166
- try {
167
- const response = await messageBus.request({
168
- type: MessageBusType.HOOK_EXECUTION_REQUEST,
169
- eventName: 'AfterTool',
170
- input: {
171
- tool_name: toolName,
172
- tool_input: toolInput,
173
- tool_response: toolResponse,
174
- ...(mcpContext && { mcp_context: mcpContext }),
175
- },
176
- }, MessageBusType.HOOK_EXECUTION_RESPONSE);
177
- return response.output
178
- ? createHookOutput('AfterTool', response.output)
179
- : undefined;
180
- }
181
- catch (error) {
182
- debugLogger.debug(`AfterTool hook failed for ${toolName}:`, error);
183
- return undefined;
184
- }
185
- }
186
41
  /**
187
42
  * Execute a tool with BeforeTool and AfterTool hooks.
188
43
  *
189
44
  * @param invocation The tool invocation to execute
190
45
  * @param toolName The name of the tool
191
46
  * @param signal Abort signal for cancellation
192
- * @param messageBus Optional message bus for hook communication
193
- * @param hooksEnabled Whether hooks are enabled
194
47
  * @param liveOutputCallback Optional callback for live output updates
195
48
  * @param shellExecutionConfig Optional shell execution config
196
49
  * @param setPidCallback Optional callback to set the PID for shell invocations
197
50
  * @param config Config to look up MCP server details for hook context
198
51
  * @returns The tool result
199
52
  */
200
- export async function executeToolWithHooks(invocation, toolName, signal, messageBus, hooksEnabled, tool, liveOutputCallback, shellExecutionConfig, setPidCallback, config) {
53
+ export async function executeToolWithHooks(invocation, toolName, signal, tool, liveOutputCallback, shellExecutionConfig, setPidCallback, config) {
201
54
  const toolInput = (invocation.params || {});
202
55
  let inputWasModified = false;
203
56
  let modifiedKeys = [];
204
57
  // Extract MCP context if this is an MCP tool (only if config is provided)
205
58
  const mcpContext = config ? extractMcpContext(invocation, config) : undefined;
206
- // Fire BeforeTool hook through MessageBus (only if hooks are enabled)
207
- if (hooksEnabled && messageBus) {
208
- const beforeOutput = await fireBeforeToolHook(messageBus, toolName, toolInput, mcpContext);
59
+ const hookSystem = config?.getHookSystem();
60
+ if (hookSystem) {
61
+ const beforeOutput = await hookSystem.fireBeforeToolEvent(toolName, toolInput, mcpContext);
209
62
  // Check if hook requested to stop entire agent execution
210
63
  if (beforeOutput?.shouldStopExecution()) {
211
64
  const reason = beforeOutput.getEffectiveReason();
@@ -285,9 +138,8 @@ export async function executeToolWithHooks(invocation, toolName, signal, message
285
138
  ];
286
139
  }
287
140
  }
288
- // Fire AfterTool hook through MessageBus (only if hooks are enabled)
289
- if (hooksEnabled && messageBus) {
290
- const afterOutput = await fireAfterToolHook(messageBus, toolName, toolInput, {
141
+ if (hookSystem) {
142
+ const afterOutput = await hookSystem.fireAfterToolEvent(toolName, toolInput, {
291
143
  llmContent: toolResult.llmContent,
292
144
  returnDisplay: toolResult.returnDisplay,
293
145
  error: toolResult.error,
@@ -319,21 +171,22 @@ export async function executeToolWithHooks(invocation, toolName, signal, message
319
171
  // Add additional context from hooks to the tool result
320
172
  const additionalContext = afterOutput?.getAdditionalContext();
321
173
  if (additionalContext) {
174
+ const wrappedContext = `\n\n<hook_context>${additionalContext}</hook_context>`;
322
175
  if (typeof toolResult.llmContent === 'string') {
323
- toolResult.llmContent += '\n\n' + additionalContext;
176
+ toolResult.llmContent += wrappedContext;
324
177
  }
325
178
  else if (Array.isArray(toolResult.llmContent)) {
326
- toolResult.llmContent.push({ text: '\n\n' + additionalContext });
179
+ toolResult.llmContent.push({ text: wrappedContext });
327
180
  }
328
181
  else if (toolResult.llmContent) {
329
182
  // Handle single Part case by converting to an array
330
183
  toolResult.llmContent = [
331
184
  toolResult.llmContent,
332
- { text: '\n\n' + additionalContext },
185
+ { text: wrappedContext },
333
186
  ];
334
187
  }
335
188
  else {
336
- toolResult.llmContent = additionalContext;
189
+ toolResult.llmContent = wrappedContext;
337
190
  }
338
191
  }
339
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coreToolHookTriggers.js","sourceRoot":"","sources":["../../../src/core/coreToolHookTriggers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coreToolHookTriggers.js","sourceRoot":"","sources":["../../../src/core/coreToolHookTriggers.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
7
7
  import { executeToolWithHooks } from './coreToolHookTriggers.js';
8
8
  import { ToolErrorType } from '../tools/tool-error.js';
9
9
  import { BaseToolInvocation, } from '../tools/tools.js';
10
- import { MessageBusType, } from '../confirmation-bus/types.js';
10
+ import { BeforeToolHookOutput, } from '../hooks/types.js';
11
11
  class MockInvocation extends BaseToolInvocation {
12
12
  constructor(params, messageBus) {
13
13
  super(params, messageBus);
@@ -27,6 +27,8 @@ class MockInvocation extends BaseToolInvocation {
27
27
  describe('executeToolWithHooks', () => {
28
28
  let messageBus;
29
29
  let mockTool;
30
+ let mockHookSystem;
31
+ let mockConfig;
30
32
  beforeEach(() => {
31
33
  messageBus = {
32
34
  request: vi.fn(),
@@ -34,6 +36,15 @@ describe('executeToolWithHooks', () => {
34
36
  subscribe: vi.fn(),
35
37
  unsubscribe: vi.fn(),
36
38
  };
39
+ mockHookSystem = {
40
+ fireBeforeToolEvent: vi.fn(),
41
+ fireAfterToolEvent: vi.fn(),
42
+ };
43
+ mockConfig = {
44
+ getHookSystem: vi.fn().mockReturnValue(mockHookSystem),
45
+ getMcpClientManager: vi.fn().mockReturnValue(undefined),
46
+ getMcpServers: vi.fn().mockReturnValue({}),
47
+ };
37
48
  mockTool = {
38
49
  build: vi
39
50
  .fn()
@@ -43,34 +54,27 @@ describe('executeToolWithHooks', () => {
43
54
  it('should prioritize continue: false over decision: block in BeforeTool', async () => {
44
55
  const invocation = new MockInvocation({}, messageBus);
45
56
  const abortSignal = new AbortController().signal;
46
- vi.mocked(messageBus.request).mockResolvedValue({
47
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
48
- correlationId: 'test-id',
49
- success: true,
50
- output: {
51
- continue: false,
52
- stopReason: 'Stop immediately',
53
- decision: 'block',
57
+ vi.mocked(mockHookSystem.fireBeforeToolEvent).mockResolvedValue({
58
+ shouldStopExecution: () => true,
59
+ getEffectiveReason: () => 'Stop immediately',
60
+ getBlockingError: () => ({
61
+ blocked: false,
54
62
  reason: 'Should be ignored because continue is false',
55
- },
63
+ }),
56
64
  });
57
- const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, messageBus, true, mockTool);
65
+ const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, mockTool, undefined, undefined, undefined, mockConfig);
58
66
  expect(result.error?.type).toBe(ToolErrorType.STOP_EXECUTION);
59
67
  expect(result.error?.message).toBe('Stop immediately');
60
68
  });
61
69
  it('should block execution in BeforeTool if decision is block', async () => {
62
70
  const invocation = new MockInvocation({}, messageBus);
63
71
  const abortSignal = new AbortController().signal;
64
- vi.mocked(messageBus.request).mockResolvedValue({
65
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
66
- correlationId: 'test-id',
67
- success: true,
68
- output: {
69
- decision: 'block',
70
- reason: 'Execution blocked',
71
- },
72
+ vi.mocked(mockHookSystem.fireBeforeToolEvent).mockResolvedValue({
73
+ shouldStopExecution: () => false,
74
+ getEffectiveReason: () => '',
75
+ getBlockingError: () => ({ blocked: true, reason: 'Execution blocked' }),
72
76
  });
73
- const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, messageBus, true, mockTool);
77
+ const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, mockTool, undefined, undefined, undefined, mockConfig);
74
78
  expect(result.error?.type).toBe(ToolErrorType.EXECUTION_FAILED);
75
79
  expect(result.error?.message).toBe('Execution blocked');
76
80
  });
@@ -78,25 +82,17 @@ describe('executeToolWithHooks', () => {
78
82
  const invocation = new MockInvocation({}, messageBus);
79
83
  const abortSignal = new AbortController().signal;
80
84
  const spy = vi.spyOn(invocation, 'execute');
81
- // BeforeTool allow
82
- vi.mocked(messageBus.request)
83
- .mockResolvedValueOnce({
84
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
85
- correlationId: 'test-id',
86
- success: true,
87
- output: { decision: 'allow' },
88
- })
89
- // AfterTool stop
90
- .mockResolvedValueOnce({
91
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
92
- correlationId: 'test-id',
93
- success: true,
94
- output: {
95
- continue: false,
96
- stopReason: 'Stop after execution',
97
- },
85
+ vi.mocked(mockHookSystem.fireBeforeToolEvent).mockResolvedValue({
86
+ shouldStopExecution: () => false,
87
+ getEffectiveReason: () => '',
88
+ getBlockingError: () => ({ blocked: false, reason: '' }),
98
89
  });
99
- const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, messageBus, true, mockTool);
90
+ vi.mocked(mockHookSystem.fireAfterToolEvent).mockResolvedValue({
91
+ shouldStopExecution: () => true,
92
+ getEffectiveReason: () => 'Stop after execution',
93
+ getBlockingError: () => ({ blocked: false, reason: '' }),
94
+ });
95
+ const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, mockTool, undefined, undefined, undefined, mockConfig);
100
96
  expect(result.error?.type).toBe(ToolErrorType.STOP_EXECUTION);
101
97
  expect(result.error?.message).toBe('Stop after execution');
102
98
  expect(spy).toHaveBeenCalled();
@@ -104,25 +100,17 @@ describe('executeToolWithHooks', () => {
104
100
  it('should block result in AfterTool if decision is deny', async () => {
105
101
  const invocation = new MockInvocation({}, messageBus);
106
102
  const abortSignal = new AbortController().signal;
107
- // BeforeTool allow
108
- vi.mocked(messageBus.request)
109
- .mockResolvedValueOnce({
110
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
111
- correlationId: 'test-id',
112
- success: true,
113
- output: { decision: 'allow' },
114
- })
115
- // AfterTool deny
116
- .mockResolvedValueOnce({
117
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
118
- correlationId: 'test-id',
119
- success: true,
120
- output: {
121
- decision: 'deny',
122
- reason: 'Result denied',
123
- },
103
+ vi.mocked(mockHookSystem.fireBeforeToolEvent).mockResolvedValue({
104
+ shouldStopExecution: () => false,
105
+ getEffectiveReason: () => '',
106
+ getBlockingError: () => ({ blocked: false, reason: '' }),
124
107
  });
125
- const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, messageBus, true, mockTool);
108
+ vi.mocked(mockHookSystem.fireAfterToolEvent).mockResolvedValue({
109
+ shouldStopExecution: () => false,
110
+ getEffectiveReason: () => '',
111
+ getBlockingError: () => ({ blocked: true, reason: 'Result denied' }),
112
+ });
113
+ const result = await executeToolWithHooks(invocation, 'test_tool', abortSignal, mockTool, undefined, undefined, undefined, mockConfig);
126
114
  expect(result.error?.type).toBe(ToolErrorType.EXECUTION_FAILED);
127
115
  expect(result.error?.message).toBe('Result denied');
128
116
  });
@@ -131,38 +119,21 @@ describe('executeToolWithHooks', () => {
131
119
  const invocation = new MockInvocation(params, messageBus);
132
120
  const toolName = 'test-tool';
133
121
  const abortSignal = new AbortController().signal;
134
- // Capture arguments to verify what was passed before modification
135
- const requestSpy = vi.fn().mockImplementation(async (request) => {
136
- if (request.eventName === 'BeforeTool') {
137
- // Verify input is original before we return modification instruction
138
- expect(request.input.tool_input.key).toBe('original');
139
- return {
140
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
141
- correlationId: 'test-id',
142
- success: true,
143
- output: {
144
- hookSpecificOutput: {
145
- hookEventName: 'BeforeTool',
146
- tool_input: { key: 'modified' },
147
- },
148
- },
149
- };
150
- }
151
- return {
152
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
153
- correlationId: 'test-id',
154
- success: true,
155
- output: {},
156
- };
122
+ const mockBeforeOutput = new BeforeToolHookOutput({
123
+ continue: true,
124
+ hookSpecificOutput: {
125
+ hookEventName: 'BeforeTool',
126
+ tool_input: { key: 'modified' },
127
+ },
157
128
  });
158
- messageBus.request = requestSpy;
159
- const result = await executeToolWithHooks(invocation, toolName, abortSignal, messageBus, true, // hooksEnabled
160
- mockTool);
129
+ vi.mocked(mockHookSystem.fireBeforeToolEvent).mockResolvedValue(mockBeforeOutput);
130
+ vi.mocked(mockHookSystem.fireAfterToolEvent).mockResolvedValue(undefined);
131
+ const result = await executeToolWithHooks(invocation, toolName, abortSignal, mockTool, undefined, undefined, undefined, mockConfig);
161
132
  // Verify result reflects modified input
162
133
  expect(result.llmContent).toBe('key: modified\n\n[System] Tool input parameters (key) were modified by a hook before execution.');
163
134
  // Verify params object was modified in place
164
135
  expect(invocation.params.key).toBe('modified');
165
- expect(requestSpy).toHaveBeenCalled();
136
+ expect(mockHookSystem.fireBeforeToolEvent).toHaveBeenCalled();
166
137
  expect(mockTool.build).toHaveBeenCalledWith({ key: 'modified' });
167
138
  });
168
139
  it('should not modify input if hook does not provide tool_input', async () => {
@@ -170,19 +141,16 @@ describe('executeToolWithHooks', () => {
170
141
  const invocation = new MockInvocation(params, messageBus);
171
142
  const toolName = 'test-tool';
172
143
  const abortSignal = new AbortController().signal;
173
- vi.mocked(messageBus.request).mockResolvedValue({
174
- type: MessageBusType.HOOK_EXECUTION_RESPONSE,
175
- correlationId: 'test-id',
176
- success: true,
177
- output: {
178
- hookSpecificOutput: {
179
- hookEventName: 'BeforeTool',
180
- // No tool_input
181
- },
144
+ const mockBeforeOutput = new BeforeToolHookOutput({
145
+ continue: true,
146
+ hookSpecificOutput: {
147
+ hookEventName: 'BeforeTool',
148
+ // No tool input
182
149
  },
183
150
  });
184
- const result = await executeToolWithHooks(invocation, toolName, abortSignal, messageBus, true, // hooksEnabled
185
- mockTool);
151
+ vi.mocked(mockHookSystem.fireBeforeToolEvent).mockResolvedValue(mockBeforeOutput);
152
+ vi.mocked(mockHookSystem.fireAfterToolEvent).mockResolvedValue(undefined);
153
+ const result = await executeToolWithHooks(invocation, toolName, abortSignal, mockTool, undefined, undefined, undefined, mockConfig);
186
154
  expect(result.llmContent).toBe('key: original');
187
155
  expect(invocation.params.key).toBe('original');
188
156
  expect(mockTool.build).not.toHaveBeenCalled();
@@ -1 +1 @@
1
- {"version":3,"file":"coreToolHookTriggers.test.js","sourceRoot":"","sources":["../../../src/core/coreToolHookTriggers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coreToolHookTriggers.test.js","sourceRoot":"","sources":["../../../src/core/coreToolHookTriggers.test.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ import { runInDevTraceSpan } from '../telemetry/trace.js';
12
12
  import { ToolModificationHandler } from '../scheduler/tool-modifier.js';
13
13
  import { getToolSuggestion } from '../utils/tool-utils.js';
14
14
  import { MessageBusType } from '../confirmation-bus/types.js';
15
- import { fireToolNotificationHook } from './coreToolHookTriggers.js';
16
15
  import {} from '../scheduler/types.js';
17
16
  import { ToolExecutor } from '../scheduler/tool-executor.js';
18
17
  import { DiscoveredMCPTool } from '../tools/mcp-tool.js';
@@ -427,10 +426,9 @@ export class CoreToolScheduler {
427
426
  throw new Error(`Tool execution for "${toolCall.tool.displayName || toolCall.tool.name}" requires user confirmation, which is not supported in non-interactive mode.`);
428
427
  }
429
428
  // Fire Notification hook before showing confirmation to user
430
- const messageBus = this.config.getMessageBus();
431
- const hooksEnabled = this.config.getEnableHooks();
432
- if (hooksEnabled && messageBus) {
433
- await fireToolNotificationHook(messageBus, confirmationDetails);
429
+ const hookSystem = this.config.getHookSystem();
430
+ if (hookSystem) {
431
+ await hookSystem.fireToolNotificationEvent(confirmationDetails);
434
432
  }
435
433
  // Allow IDE to resolve confirmation
436
434
  if (confirmationDetails.type === 'edit' &&