@office-ai/aioncli-core 0.18.6 → 0.24.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (893) hide show
  1. package/dist/docs/CONTRIBUTING.md +546 -0
  2. package/dist/docs/architecture.md +80 -0
  3. package/dist/docs/assets/connected_devtools.png +0 -0
  4. package/dist/docs/assets/gemini-screenshot.png +0 -0
  5. package/dist/docs/assets/release_patch.png +0 -0
  6. package/dist/docs/assets/theme-ansi-light.png +0 -0
  7. package/dist/docs/assets/theme-ansi.png +0 -0
  8. package/dist/docs/assets/theme-atom-one.png +0 -0
  9. package/dist/docs/assets/theme-ayu-light.png +0 -0
  10. package/dist/docs/assets/theme-ayu.png +0 -0
  11. package/dist/docs/assets/theme-custom.png +0 -0
  12. package/dist/docs/assets/theme-default-light.png +0 -0
  13. package/dist/docs/assets/theme-default.png +0 -0
  14. package/dist/docs/assets/theme-dracula.png +0 -0
  15. package/dist/docs/assets/theme-github-light.png +0 -0
  16. package/dist/docs/assets/theme-github.png +0 -0
  17. package/dist/docs/assets/theme-google-light.png +0 -0
  18. package/dist/docs/assets/theme-xcode-light.png +0 -0
  19. package/dist/docs/changelogs/index.md +592 -0
  20. package/dist/docs/changelogs/latest.md +225 -0
  21. package/dist/docs/changelogs/preview.md +129 -0
  22. package/dist/docs/changelogs/releases.md +896 -0
  23. package/dist/docs/cli/authentication.md +3 -0
  24. package/dist/docs/cli/checkpointing.md +94 -0
  25. package/dist/docs/cli/commands.md +354 -0
  26. package/dist/docs/cli/configuration.md +780 -0
  27. package/dist/docs/cli/custom-commands.md +315 -0
  28. package/dist/docs/cli/enterprise.md +565 -0
  29. package/dist/docs/cli/gemini-ignore.md +71 -0
  30. package/dist/docs/cli/gemini-md.md +108 -0
  31. package/dist/docs/cli/generation-settings.md +210 -0
  32. package/dist/docs/cli/headless.md +388 -0
  33. package/dist/docs/cli/index.md +63 -0
  34. package/dist/docs/cli/keyboard-shortcuts.md +143 -0
  35. package/dist/docs/cli/model-routing.md +37 -0
  36. package/dist/docs/cli/model.md +62 -0
  37. package/dist/docs/cli/sandbox.md +171 -0
  38. package/dist/docs/cli/session-management.md +158 -0
  39. package/dist/docs/cli/settings.md +114 -0
  40. package/dist/docs/cli/skills.md +156 -0
  41. package/dist/docs/cli/system-prompt.md +93 -0
  42. package/dist/docs/cli/telemetry.md +791 -0
  43. package/dist/docs/cli/themes.md +237 -0
  44. package/dist/docs/cli/token-caching.md +20 -0
  45. package/dist/docs/cli/trusted-folders.md +95 -0
  46. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  47. package/dist/docs/cli/tutorials.md +87 -0
  48. package/dist/docs/cli/uninstall.md +47 -0
  49. package/dist/docs/core/index.md +101 -0
  50. package/dist/docs/core/memport.md +244 -0
  51. package/dist/docs/core/policy-engine.md +267 -0
  52. package/dist/docs/core/tools-api.md +131 -0
  53. package/dist/docs/examples/proxy-script.md +83 -0
  54. package/dist/docs/extension.md +160 -0
  55. package/dist/docs/extensions/extension-releasing.md +183 -0
  56. package/dist/docs/extensions/getting-started-extensions.md +245 -0
  57. package/dist/docs/extensions/index.md +293 -0
  58. package/dist/docs/faq.md +154 -0
  59. package/dist/docs/get-started/authentication.md +321 -0
  60. package/dist/docs/get-started/configuration-v1.md +888 -0
  61. package/dist/docs/get-started/configuration.md +1536 -0
  62. package/dist/docs/get-started/deployment.md +143 -0
  63. package/dist/docs/get-started/examples.md +219 -0
  64. package/dist/docs/get-started/gemini-3.md +116 -0
  65. package/dist/docs/get-started/index.md +71 -0
  66. package/dist/docs/get-started/installation.md +141 -0
  67. package/dist/docs/hooks/best-practices.md +856 -0
  68. package/dist/docs/hooks/index.md +687 -0
  69. package/dist/docs/hooks/reference.md +168 -0
  70. package/dist/docs/hooks/writing-hooks.md +1026 -0
  71. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  72. package/dist/docs/ide-integration/index.md +202 -0
  73. package/dist/docs/index.md +147 -0
  74. package/dist/docs/integration-tests.md +211 -0
  75. package/dist/docs/issue-and-pr-automation.md +134 -0
  76. package/dist/docs/local-development.md +128 -0
  77. package/dist/docs/mermaid/context.mmd +103 -0
  78. package/dist/docs/mermaid/render-path.mmd +64 -0
  79. package/dist/docs/npm.md +62 -0
  80. package/dist/docs/quota-and-pricing.md +158 -0
  81. package/dist/docs/release-confidence.md +164 -0
  82. package/dist/docs/releases.md +540 -0
  83. package/dist/docs/sidebar.json +301 -0
  84. package/dist/docs/tools/file-system.md +217 -0
  85. package/dist/docs/tools/index.md +95 -0
  86. package/dist/docs/tools/mcp-server.md +1044 -0
  87. package/dist/docs/tools/memory.md +54 -0
  88. package/dist/docs/tools/shell.md +260 -0
  89. package/dist/docs/tools/todos.md +57 -0
  90. package/dist/docs/tools/web-fetch.md +59 -0
  91. package/dist/docs/tools/web-search.md +42 -0
  92. package/dist/docs/tos-privacy.md +96 -0
  93. package/dist/docs/troubleshooting.md +158 -0
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.js +1 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/src/agents/a2a-client-manager.d.ts +78 -0
  98. package/dist/src/agents/a2a-client-manager.js +295 -0
  99. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  100. package/dist/src/agents/a2a-client-manager.test.d.ts +6 -0
  101. package/dist/src/agents/a2a-client-manager.test.js +237 -0
  102. package/dist/src/agents/a2a-client-manager.test.js.map +1 -0
  103. package/dist/src/agents/a2aUtils.d.ts +28 -0
  104. package/dist/src/agents/a2aUtils.js +111 -0
  105. package/dist/src/agents/a2aUtils.js.map +1 -0
  106. package/dist/src/agents/a2aUtils.test.d.ts +6 -0
  107. package/dist/src/agents/a2aUtils.test.js +147 -0
  108. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  109. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  110. package/dist/src/agents/codebase-investigator.js +5 -4
  111. package/dist/src/agents/codebase-investigator.js.map +1 -1
  112. package/dist/src/agents/delegate-to-agent-tool.d.ts +19 -0
  113. package/dist/src/agents/delegate-to-agent-tool.js +115 -0
  114. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -0
  115. package/dist/src/agents/delegate-to-agent-tool.test.d.ts +6 -0
  116. package/dist/src/agents/delegate-to-agent-tool.test.js +165 -0
  117. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -0
  118. package/dist/src/agents/introspection-agent.d.ts +23 -0
  119. package/dist/src/agents/introspection-agent.js +72 -0
  120. package/dist/src/agents/introspection-agent.js.map +1 -0
  121. package/dist/src/agents/introspection-agent.test.d.ts +6 -0
  122. package/dist/src/agents/introspection-agent.test.js +47 -0
  123. package/dist/src/agents/introspection-agent.test.js.map +1 -0
  124. package/dist/src/agents/local-executor.d.ts +108 -0
  125. package/dist/src/agents/local-executor.js +801 -0
  126. package/dist/src/agents/local-executor.js.map +1 -0
  127. package/dist/src/agents/local-executor.test.d.ts +6 -0
  128. package/dist/src/agents/local-executor.test.js +1380 -0
  129. package/dist/src/agents/local-executor.test.js.map +1 -0
  130. package/dist/src/agents/local-invocation.d.ts +45 -0
  131. package/dist/src/agents/local-invocation.js +101 -0
  132. package/dist/src/agents/local-invocation.js.map +1 -0
  133. package/dist/src/agents/local-invocation.test.d.ts +6 -0
  134. package/dist/src/agents/local-invocation.test.js +218 -0
  135. package/dist/src/agents/local-invocation.test.js.map +1 -0
  136. package/dist/src/agents/registry.d.ts +25 -1
  137. package/dist/src/agents/registry.js +149 -5
  138. package/dist/src/agents/registry.js.map +1 -1
  139. package/dist/src/agents/registry.test.js +247 -25
  140. package/dist/src/agents/registry.test.js.map +1 -1
  141. package/dist/src/agents/remote-invocation.d.ts +35 -0
  142. package/dist/src/agents/remote-invocation.js +129 -0
  143. package/dist/src/agents/remote-invocation.js.map +1 -0
  144. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  145. package/dist/src/agents/remote-invocation.test.js +201 -0
  146. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  147. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  148. package/dist/src/agents/subagent-tool-wrapper.js +11 -6
  149. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  150. package/dist/src/agents/subagent-tool-wrapper.test.js +25 -17
  151. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  152. package/dist/src/agents/toml-loader.d.ts +74 -0
  153. package/dist/src/agents/toml-loader.js +248 -0
  154. package/dist/src/agents/toml-loader.js.map +1 -0
  155. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  156. package/dist/src/agents/toml-loader.test.js +309 -0
  157. package/dist/src/agents/toml-loader.test.js.map +1 -0
  158. package/dist/src/agents/types.d.ts +18 -4
  159. package/dist/src/availability/errorClassification.d.ts +7 -0
  160. package/dist/src/availability/errorClassification.js +20 -0
  161. package/dist/src/availability/errorClassification.js.map +1 -0
  162. package/dist/src/availability/modelAvailabilityService.d.ts +36 -0
  163. package/dist/src/availability/modelAvailabilityService.js +87 -0
  164. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  165. package/dist/src/availability/modelAvailabilityService.test.d.ts +6 -0
  166. package/dist/src/availability/modelAvailabilityService.test.js +140 -0
  167. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -0
  168. package/dist/src/availability/modelPolicy.d.ts +49 -0
  169. package/dist/src/availability/modelPolicy.js +7 -0
  170. package/dist/src/availability/modelPolicy.js.map +1 -0
  171. package/dist/src/availability/policyCatalog.d.ts +23 -0
  172. package/dist/src/availability/policyCatalog.js +82 -0
  173. package/dist/src/availability/policyCatalog.js.map +1 -0
  174. package/dist/src/availability/policyCatalog.test.d.ts +6 -0
  175. package/dist/src/availability/policyCatalog.test.js +70 -0
  176. package/dist/src/availability/policyCatalog.test.js.map +1 -0
  177. package/dist/src/availability/policyHelpers.d.ts +52 -0
  178. package/dist/src/availability/policyHelpers.js +136 -0
  179. package/dist/src/availability/policyHelpers.js.map +1 -0
  180. package/dist/src/availability/policyHelpers.test.d.ts +6 -0
  181. package/dist/src/availability/policyHelpers.test.js +182 -0
  182. package/dist/src/availability/policyHelpers.test.js.map +1 -0
  183. package/dist/src/availability/testUtils.d.ts +10 -0
  184. package/dist/src/availability/testUtils.js +22 -0
  185. package/dist/src/availability/testUtils.js.map +1 -0
  186. package/dist/src/code_assist/experiments/client_metadata.js +3 -2
  187. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
  188. package/dist/src/code_assist/experiments/client_metadata.test.js +7 -10
  189. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
  190. package/dist/src/code_assist/experiments/experiments.js +2 -2
  191. package/dist/src/code_assist/experiments/experiments.js.map +1 -1
  192. package/dist/src/code_assist/oauth2.d.ts +2 -0
  193. package/dist/src/code_assist/oauth2.js +73 -17
  194. package/dist/src/code_assist/oauth2.js.map +1 -1
  195. package/dist/src/code_assist/oauth2.test.js +195 -18
  196. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  197. package/dist/src/code_assist/server.d.ts +10 -1
  198. package/dist/src/code_assist/server.js +81 -15
  199. package/dist/src/code_assist/server.js.map +1 -1
  200. package/dist/src/code_assist/server.test.js +221 -25
  201. package/dist/src/code_assist/server.test.js.map +1 -1
  202. package/dist/src/code_assist/setup.js +6 -4
  203. package/dist/src/code_assist/setup.js.map +1 -1
  204. package/dist/src/code_assist/setup.test.js +63 -0
  205. package/dist/src/code_assist/setup.test.js.map +1 -1
  206. package/dist/src/code_assist/telemetry.d.ts +14 -0
  207. package/dist/src/code_assist/telemetry.js +156 -0
  208. package/dist/src/code_assist/telemetry.js.map +1 -0
  209. package/dist/src/code_assist/telemetry.test.d.ts +6 -0
  210. package/dist/src/code_assist/telemetry.test.js +300 -0
  211. package/dist/src/code_assist/telemetry.test.js.map +1 -0
  212. package/dist/src/code_assist/types.d.ts +84 -1
  213. package/dist/src/code_assist/types.js +21 -0
  214. package/dist/src/code_assist/types.js.map +1 -1
  215. package/dist/src/commands/init.d.ts +7 -0
  216. package/dist/src/commands/init.js +53 -0
  217. package/dist/src/commands/init.js.map +1 -0
  218. package/dist/src/commands/init.test.d.ts +6 -0
  219. package/dist/src/commands/init.test.js +25 -0
  220. package/dist/src/commands/init.test.js.map +1 -0
  221. package/dist/src/commands/restore.d.ts +9 -0
  222. package/dist/src/commands/restore.js +46 -0
  223. package/dist/src/commands/restore.js.map +1 -0
  224. package/dist/src/commands/restore.test.d.ts +6 -0
  225. package/dist/src/commands/restore.test.js +137 -0
  226. package/dist/src/commands/restore.test.js.map +1 -0
  227. package/dist/src/commands/types.d.ts +41 -0
  228. package/dist/src/commands/types.js +7 -0
  229. package/dist/src/commands/types.js.map +1 -0
  230. package/dist/src/config/config.d.ts +120 -23
  231. package/dist/src/config/config.js +336 -116
  232. package/dist/src/config/config.js.map +1 -1
  233. package/dist/src/config/config.test.js +373 -95
  234. package/dist/src/config/config.test.js.map +1 -1
  235. package/dist/src/config/defaultModelConfigs.js +46 -0
  236. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  237. package/dist/src/config/flashFallback.test.js +11 -35
  238. package/dist/src/config/flashFallback.test.js.map +1 -1
  239. package/dist/src/config/models.d.ts +29 -15
  240. package/dist/src/config/models.js +78 -28
  241. package/dist/src/config/models.js.map +1 -1
  242. package/dist/src/config/models.test.js +91 -77
  243. package/dist/src/config/models.test.js.map +1 -1
  244. package/dist/src/config/storage.d.ts +4 -0
  245. package/dist/src/config/storage.js +12 -0
  246. package/dist/src/config/storage.js.map +1 -1
  247. package/dist/src/config/storage.test.js +16 -0
  248. package/dist/src/config/storage.test.js.map +1 -1
  249. package/dist/src/confirmation-bus/message-bus.d.ts +6 -0
  250. package/dist/src/confirmation-bus/message-bus.js +66 -3
  251. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  252. package/dist/src/confirmation-bus/types.d.ts +29 -2
  253. package/dist/src/confirmation-bus/types.js +3 -0
  254. package/dist/src/confirmation-bus/types.js.map +1 -1
  255. package/dist/src/core/baseLlmClient.d.ts +30 -2
  256. package/dist/src/core/baseLlmClient.js +107 -49
  257. package/dist/src/core/baseLlmClient.js.map +1 -1
  258. package/dist/src/core/baseLlmClient.test.js +271 -13
  259. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  260. package/dist/src/core/client.d.ts +5 -1
  261. package/dist/src/core/client.js +241 -63
  262. package/dist/src/core/client.js.map +1 -1
  263. package/dist/src/core/client.test.js +462 -72
  264. package/dist/src/core/client.test.js.map +1 -1
  265. package/dist/src/core/clientHookTriggers.d.ts +36 -0
  266. package/dist/src/core/clientHookTriggers.js +76 -0
  267. package/dist/src/core/clientHookTriggers.js.map +1 -0
  268. package/dist/src/core/contentGenerator.js +17 -4
  269. package/dist/src/core/contentGenerator.js.map +1 -1
  270. package/dist/src/core/contentGenerator.test.js +132 -3
  271. package/dist/src/core/contentGenerator.test.js.map +1 -1
  272. package/dist/src/core/coreToolHookTriggers.d.ts +55 -0
  273. package/dist/src/core/coreToolHookTriggers.js +304 -0
  274. package/dist/src/core/coreToolHookTriggers.js.map +1 -0
  275. package/dist/src/core/coreToolHookTriggers.test.d.ts +6 -0
  276. package/dist/src/core/coreToolHookTriggers.test.js +191 -0
  277. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -0
  278. package/dist/src/core/coreToolScheduler.d.ts +6 -85
  279. package/dist/src/core/coreToolScheduler.js +69 -267
  280. package/dist/src/core/coreToolScheduler.js.map +1 -1
  281. package/dist/src/core/coreToolScheduler.test.js +161 -346
  282. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  283. package/dist/src/core/geminiChat.js +132 -76
  284. package/dist/src/core/geminiChat.js.map +1 -1
  285. package/dist/src/core/geminiChat.test.js +240 -257
  286. package/dist/src/core/geminiChat.test.js.map +1 -1
  287. package/dist/src/core/geminiChatHookTriggers.d.ts +64 -0
  288. package/dist/src/core/geminiChatHookTriggers.js +136 -0
  289. package/dist/src/core/geminiChatHookTriggers.js.map +1 -0
  290. package/dist/src/core/geminiChat_network_retry.test.d.ts +6 -0
  291. package/dist/src/core/geminiChat_network_retry.test.js +196 -0
  292. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -0
  293. package/dist/src/core/logger.js.map +1 -1
  294. package/dist/src/core/loggingContentGenerator.js +23 -6
  295. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  296. package/dist/src/core/nonInteractiveToolExecutor.test.js +13 -8
  297. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  298. package/dist/src/core/openaiContentGenerator.d.ts +25 -0
  299. package/dist/src/core/openaiContentGenerator.js +243 -14
  300. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  301. package/dist/src/core/prompts.js +82 -26
  302. package/dist/src/core/prompts.js.map +1 -1
  303. package/dist/src/core/prompts.test.js +102 -3
  304. package/dist/src/core/prompts.test.js.map +1 -1
  305. package/dist/src/core/sessionHookTriggers.d.ts +29 -0
  306. package/dist/src/core/sessionHookTriggers.js +75 -0
  307. package/dist/src/core/sessionHookTriggers.js.map +1 -0
  308. package/dist/src/core/turn.d.ts +34 -21
  309. package/dist/src/core/turn.js +33 -13
  310. package/dist/src/core/turn.js.map +1 -1
  311. package/dist/src/core/turn.test.js +0 -5
  312. package/dist/src/core/turn.test.js.map +1 -1
  313. package/dist/src/fallback/handler.js +101 -93
  314. package/dist/src/fallback/handler.js.map +1 -1
  315. package/dist/src/fallback/handler.test.js +186 -173
  316. package/dist/src/fallback/handler.test.js.map +1 -1
  317. package/dist/src/fallback/types.d.ts +8 -0
  318. package/dist/src/generated/git-commit.d.ts +3 -3
  319. package/dist/src/generated/git-commit.js +3 -3
  320. package/dist/src/generated/git-commit.js.map +1 -1
  321. package/dist/src/hooks/hookAggregator.js +7 -0
  322. package/dist/src/hooks/hookAggregator.js.map +1 -1
  323. package/dist/src/hooks/hookEventHandler.d.ts +113 -0
  324. package/dist/src/hooks/hookEventHandler.js +571 -0
  325. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  326. package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  327. package/dist/src/hooks/hookEventHandler.test.js +461 -0
  328. package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
  329. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  330. package/dist/src/hooks/hookPlanner.js +2 -7
  331. package/dist/src/hooks/hookPlanner.js.map +1 -1
  332. package/dist/src/hooks/hookPlanner.test.js +62 -2
  333. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  334. package/dist/src/hooks/hookRegistry.d.ts +6 -18
  335. package/dist/src/hooks/hookRegistry.js +49 -35
  336. package/dist/src/hooks/hookRegistry.js.map +1 -1
  337. package/dist/src/hooks/hookRegistry.test.js +167 -8
  338. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  339. package/dist/src/hooks/hookRunner.d.ts +5 -3
  340. package/dist/src/hooks/hookRunner.js +74 -18
  341. package/dist/src/hooks/hookRunner.js.map +1 -1
  342. package/dist/src/hooks/hookRunner.test.js +174 -36
  343. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  344. package/dist/src/hooks/hookSystem.d.ts +40 -0
  345. package/dist/src/hooks/hookSystem.js +65 -0
  346. package/dist/src/hooks/hookSystem.js.map +1 -0
  347. package/dist/src/hooks/hookSystem.test.d.ts +6 -0
  348. package/dist/src/hooks/hookSystem.test.js +319 -0
  349. package/dist/src/hooks/hookSystem.test.js.map +1 -0
  350. package/dist/src/hooks/index.d.ts +17 -0
  351. package/dist/src/hooks/index.js +18 -0
  352. package/dist/src/hooks/index.js.map +1 -0
  353. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  354. package/dist/src/hooks/trustedHooks.js +90 -0
  355. package/dist/src/hooks/trustedHooks.js.map +1 -0
  356. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  357. package/dist/src/hooks/trustedHooks.test.js +154 -0
  358. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  359. package/dist/src/hooks/types.d.ts +21 -11
  360. package/dist/src/hooks/types.js +31 -27
  361. package/dist/src/hooks/types.js.map +1 -1
  362. package/dist/src/hooks/types.test.js +5 -24
  363. package/dist/src/hooks/types.test.js.map +1 -1
  364. package/dist/src/ide/detect-ide.test.js +32 -1
  365. package/dist/src/ide/detect-ide.test.js.map +1 -1
  366. package/dist/src/ide/ide-client.js +9 -4
  367. package/dist/src/ide/ide-client.js.map +1 -1
  368. package/dist/src/ide/ide-client.test.js +17 -0
  369. package/dist/src/ide/ide-client.test.js.map +1 -1
  370. package/dist/src/ide/ide-installer.test.js +1 -1
  371. package/dist/src/ide/ide-installer.test.js.map +1 -1
  372. package/dist/src/ide/types.d.ts +4 -4
  373. package/dist/src/index.d.ts +17 -1
  374. package/dist/src/index.js +18 -2
  375. package/dist/src/index.js.map +1 -1
  376. package/dist/src/mcp/auth-provider.d.ts +16 -0
  377. package/dist/src/mcp/auth-provider.js +7 -0
  378. package/dist/src/mcp/auth-provider.js.map +1 -0
  379. package/dist/src/mcp/google-auth-provider.d.ts +10 -2
  380. package/dist/src/mcp/google-auth-provider.js +28 -0
  381. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  382. package/dist/src/mcp/google-auth-provider.test.js +45 -0
  383. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  384. package/dist/src/mcp/oauth-provider.js +6 -2
  385. package/dist/src/mcp/oauth-provider.js.map +1 -1
  386. package/dist/src/mcp/oauth-provider.test.js +4 -1
  387. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  388. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  389. package/dist/src/mcp/oauth-utils.js +31 -2
  390. package/dist/src/mcp/oauth-utils.js.map +1 -1
  391. package/dist/src/mcp/oauth-utils.test.js +42 -0
  392. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  393. package/dist/src/mcp/sa-impersonation-provider.d.ts +2 -2
  394. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  395. package/dist/src/mcp/token-storage/hybrid-token-storage.js +1 -1
  396. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
  397. package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
  398. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  399. package/dist/src/output/json-formatter.d.ts +2 -2
  400. package/dist/src/output/json-formatter.js +6 -3
  401. package/dist/src/output/json-formatter.js.map +1 -1
  402. package/dist/src/output/json-formatter.test.js +37 -9
  403. package/dist/src/output/json-formatter.test.js.map +1 -1
  404. package/dist/src/output/stream-json-formatter.js +6 -0
  405. package/dist/src/output/stream-json-formatter.js.map +1 -1
  406. package/dist/src/output/stream-json-formatter.test.js +98 -100
  407. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  408. package/dist/src/output/types.d.ts +3 -0
  409. package/dist/src/output/types.js.map +1 -1
  410. package/dist/src/policy/config.js +140 -15
  411. package/dist/src/policy/config.js.map +1 -1
  412. package/dist/src/policy/config.test.js +21 -0
  413. package/dist/src/policy/config.test.js.map +1 -1
  414. package/dist/src/policy/persistence.test.d.ts +6 -0
  415. package/dist/src/policy/persistence.test.js +154 -0
  416. package/dist/src/policy/persistence.test.js.map +1 -0
  417. package/dist/src/policy/policies/agent.toml +31 -0
  418. package/dist/src/policy/policies/read-only.toml +5 -0
  419. package/dist/src/policy/policies/write.toml +5 -0
  420. package/dist/src/policy/policies/yolo.toml +1 -0
  421. package/dist/src/policy/policy-engine.d.ts +30 -1
  422. package/dist/src/policy/policy-engine.js +192 -5
  423. package/dist/src/policy/policy-engine.js.map +1 -1
  424. package/dist/src/policy/policy-engine.test.js +520 -3
  425. package/dist/src/policy/policy-engine.test.js.map +1 -1
  426. package/dist/src/policy/policy-updater.test.d.ts +6 -0
  427. package/dist/src/policy/policy-updater.test.js +116 -0
  428. package/dist/src/policy/policy-updater.test.js.map +1 -0
  429. package/dist/src/policy/shell-safety.test.d.ts +6 -0
  430. package/dist/src/policy/shell-safety.test.js +75 -0
  431. package/dist/src/policy/shell-safety.test.js.map +1 -0
  432. package/dist/src/policy/toml-loader.d.ts +3 -5
  433. package/dist/src/policy/toml-loader.js +12 -60
  434. package/dist/src/policy/toml-loader.js.map +1 -1
  435. package/dist/src/policy/toml-loader.test.js +38 -7
  436. package/dist/src/policy/toml-loader.test.js.map +1 -1
  437. package/dist/src/policy/types.d.ts +72 -1
  438. package/dist/src/policy/types.js +21 -0
  439. package/dist/src/policy/types.js.map +1 -1
  440. package/dist/src/policy/utils.d.ts +21 -0
  441. package/dist/src/policy/utils.js +42 -0
  442. package/dist/src/policy/utils.js.map +1 -0
  443. package/dist/src/policy/utils.test.d.ts +6 -0
  444. package/dist/src/policy/utils.test.js +64 -0
  445. package/dist/src/policy/utils.test.js.map +1 -0
  446. package/dist/src/resources/resource-registry.d.ts +30 -0
  447. package/dist/src/resources/resource-registry.js +57 -0
  448. package/dist/src/resources/resource-registry.js.map +1 -0
  449. package/dist/src/resources/resource-registry.test.d.ts +6 -0
  450. package/dist/src/resources/resource-registry.test.js +54 -0
  451. package/dist/src/resources/resource-registry.test.js.map +1 -0
  452. package/dist/src/routing/modelRouterService.js +0 -15
  453. package/dist/src/routing/modelRouterService.js.map +1 -1
  454. package/dist/src/routing/modelRouterService.test.js +0 -62
  455. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  456. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  457. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  458. package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
  459. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  460. package/dist/src/routing/strategies/compositeStrategy.js +4 -2
  461. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  462. package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
  463. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  464. package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
  465. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  466. package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
  467. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  468. package/dist/src/routing/strategies/overrideStrategy.js +3 -2
  469. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  470. package/dist/src/safety/checker-runner.js +17 -6
  471. package/dist/src/safety/checker-runner.js.map +1 -1
  472. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  473. package/dist/src/scheduler/tool-executor.js +198 -0
  474. package/dist/src/scheduler/tool-executor.js.map +1 -0
  475. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  476. package/dist/src/scheduler/tool-executor.test.js +231 -0
  477. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  478. package/dist/src/scheduler/types.d.ts +95 -0
  479. package/dist/src/scheduler/types.js +7 -0
  480. package/dist/src/scheduler/types.js.map +1 -0
  481. package/dist/src/services/chatCompressionService.d.ts +1 -0
  482. package/dist/src/services/chatCompressionService.js +38 -8
  483. package/dist/src/services/chatCompressionService.js.map +1 -1
  484. package/dist/src/services/chatCompressionService.test.js +35 -31
  485. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  486. package/dist/src/services/chatRecordingService.d.ts +14 -0
  487. package/dist/src/services/chatRecordingService.js +37 -0
  488. package/dist/src/services/chatRecordingService.js.map +1 -1
  489. package/dist/src/services/contextManager.d.ts +29 -0
  490. package/dist/src/services/contextManager.js +71 -0
  491. package/dist/src/services/contextManager.js.map +1 -0
  492. package/dist/src/services/contextManager.test.d.ts +6 -0
  493. package/dist/src/services/contextManager.test.js +104 -0
  494. package/dist/src/services/contextManager.test.js.map +1 -0
  495. package/dist/src/services/environmentSanitization.d.ts +15 -0
  496. package/dist/src/services/environmentSanitization.js +141 -0
  497. package/dist/src/services/environmentSanitization.js.map +1 -0
  498. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  499. package/dist/src/services/environmentSanitization.test.js +284 -0
  500. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  501. package/dist/src/services/fileSystemService.d.ts +0 -9
  502. package/dist/src/services/fileSystemService.js +0 -11
  503. package/dist/src/services/fileSystemService.js.map +1 -1
  504. package/dist/src/services/gitService.js +18 -2
  505. package/dist/src/services/gitService.js.map +1 -1
  506. package/dist/src/services/gitService.test.js +56 -0
  507. package/dist/src/services/gitService.test.js.map +1 -1
  508. package/dist/src/services/loopDetectionService.js +5 -4
  509. package/dist/src/services/loopDetectionService.js.map +1 -1
  510. package/dist/src/services/loopDetectionService.test.js +14 -8
  511. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  512. package/dist/src/services/modelConfig.golden.test.js +32 -0
  513. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  514. package/dist/src/services/modelConfig.integration.test.js +1 -1
  515. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  516. package/dist/src/services/modelConfigService.d.ts +4 -0
  517. package/dist/src/services/modelConfigService.js +8 -3
  518. package/dist/src/services/modelConfigService.js.map +1 -1
  519. package/dist/src/services/modelConfigService.test.js +221 -0
  520. package/dist/src/services/modelConfigService.test.js.map +1 -1
  521. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  522. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  523. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  524. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  525. package/dist/src/services/sessionSummaryService.js +131 -0
  526. package/dist/src/services/sessionSummaryService.js.map +1 -0
  527. package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
  528. package/dist/src/services/sessionSummaryService.test.js +785 -0
  529. package/dist/src/services/sessionSummaryService.test.js.map +1 -0
  530. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  531. package/dist/src/services/sessionSummaryUtils.js +129 -0
  532. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  533. package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
  534. package/dist/src/services/sessionSummaryUtils.test.js +137 -0
  535. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
  536. package/dist/src/services/shellExecutionService.d.ts +4 -0
  537. package/dist/src/services/shellExecutionService.js +45 -27
  538. package/dist/src/services/shellExecutionService.js.map +1 -1
  539. package/dist/src/services/shellExecutionService.test.js +240 -8
  540. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  541. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  542. package/dist/src/services/test-data/resolved-aliases.golden.json +36 -0
  543. package/dist/src/skills/skillLoader.d.ts +28 -0
  544. package/dist/src/skills/skillLoader.js +77 -0
  545. package/dist/src/skills/skillLoader.js.map +1 -0
  546. package/dist/src/skills/skillLoader.test.d.ts +1 -0
  547. package/dist/src/skills/skillLoader.test.js +2 -0
  548. package/dist/src/skills/skillLoader.test.js.map +1 -0
  549. package/dist/src/skills/skillManager.d.ts +51 -0
  550. package/dist/src/skills/skillManager.js +89 -0
  551. package/dist/src/skills/skillManager.js.map +1 -0
  552. package/dist/src/skills/skillManager.test.d.ts +6 -0
  553. package/dist/src/skills/skillManager.test.js +128 -0
  554. package/dist/src/skills/skillManager.test.js.map +1 -0
  555. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  556. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +11 -7
  557. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +127 -47
  558. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  559. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +105 -18
  560. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  561. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -3
  562. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +20 -5
  563. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  564. package/dist/src/telemetry/config.js +2 -0
  565. package/dist/src/telemetry/config.js.map +1 -1
  566. package/dist/src/telemetry/config.test.js +25 -0
  567. package/dist/src/telemetry/config.test.js.map +1 -1
  568. package/dist/src/telemetry/gcp-exporters.d.ts +4 -3
  569. package/dist/src/telemetry/gcp-exporters.js +8 -4
  570. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  571. package/dist/src/telemetry/index.d.ts +2 -1
  572. package/dist/src/telemetry/index.js +2 -1
  573. package/dist/src/telemetry/index.js.map +1 -1
  574. package/dist/src/telemetry/loggers.d.ts +5 -3
  575. package/dist/src/telemetry/loggers.js +353 -334
  576. package/dist/src/telemetry/loggers.js.map +1 -1
  577. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  578. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  579. package/dist/src/telemetry/loggers.test.js +238 -31
  580. package/dist/src/telemetry/loggers.test.js.map +1 -1
  581. package/dist/src/telemetry/metrics.d.ts +22 -0
  582. package/dist/src/telemetry/metrics.js +32 -0
  583. package/dist/src/telemetry/metrics.js.map +1 -1
  584. package/dist/src/telemetry/metrics.test.js +64 -0
  585. package/dist/src/telemetry/metrics.test.js.map +1 -1
  586. package/dist/src/telemetry/sanitize.d.ts +25 -0
  587. package/dist/src/telemetry/sanitize.js +48 -0
  588. package/dist/src/telemetry/sanitize.js.map +1 -0
  589. package/dist/src/telemetry/sanitize.test.d.ts +6 -0
  590. package/dist/src/telemetry/sanitize.test.js +279 -0
  591. package/dist/src/telemetry/sanitize.test.js.map +1 -0
  592. package/dist/src/telemetry/sdk.d.ts +9 -2
  593. package/dist/src/telemetry/sdk.js +142 -17
  594. package/dist/src/telemetry/sdk.js.map +1 -1
  595. package/dist/src/telemetry/sdk.test.js +130 -28
  596. package/dist/src/telemetry/sdk.test.js.map +1 -1
  597. package/dist/src/telemetry/semantic.js +1 -1
  598. package/dist/src/telemetry/semantic.js.map +1 -1
  599. package/dist/src/telemetry/startupProfiler.d.ts +51 -0
  600. package/dist/src/telemetry/startupProfiler.js +170 -0
  601. package/dist/src/telemetry/startupProfiler.js.map +1 -0
  602. package/dist/src/telemetry/startupProfiler.test.d.ts +6 -0
  603. package/dist/src/telemetry/startupProfiler.test.js +285 -0
  604. package/dist/src/telemetry/startupProfiler.test.js.map +1 -0
  605. package/dist/src/telemetry/telemetry.test.js +10 -3
  606. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  607. package/dist/src/telemetry/trace.js +2 -2
  608. package/dist/src/telemetry/trace.js.map +1 -1
  609. package/dist/src/telemetry/types.d.ts +62 -16
  610. package/dist/src/telemetry/types.js +157 -27
  611. package/dist/src/telemetry/types.js.map +1 -1
  612. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  613. package/dist/src/telemetry/uiTelemetry.js +2 -0
  614. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  615. package/dist/src/telemetry/uiTelemetry.test.js +4 -0
  616. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  617. package/dist/src/test-utils/mock-message-bus.d.ts +61 -0
  618. package/dist/src/test-utils/mock-message-bus.js +160 -0
  619. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  620. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  621. package/dist/src/test-utils/mock-tool.js +12 -11
  622. package/dist/src/test-utils/mock-tool.js.map +1 -1
  623. package/dist/src/tools/activate-skill.d.ts +27 -0
  624. package/dist/src/tools/activate-skill.js +120 -0
  625. package/dist/src/tools/activate-skill.js.map +1 -0
  626. package/dist/src/tools/activate-skill.test.d.ts +6 -0
  627. package/dist/src/tools/activate-skill.test.js +95 -0
  628. package/dist/src/tools/activate-skill.test.js.map +1 -0
  629. package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
  630. package/dist/src/tools/confirmation-policy.test.js +142 -0
  631. package/dist/src/tools/confirmation-policy.test.js.map +1 -0
  632. package/dist/src/tools/edit.d.ts +27 -5
  633. package/dist/src/tools/edit.js +449 -137
  634. package/dist/src/tools/edit.js.map +1 -1
  635. package/dist/src/tools/edit.test.js +258 -526
  636. package/dist/src/tools/edit.test.js.map +1 -1
  637. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  638. package/dist/src/tools/get-internal-docs.js +129 -0
  639. package/dist/src/tools/get-internal-docs.js.map +1 -0
  640. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  641. package/dist/src/tools/get-internal-docs.test.js +57 -0
  642. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  643. package/dist/src/tools/glob.d.ts +2 -2
  644. package/dist/src/tools/glob.js +1 -1
  645. package/dist/src/tools/glob.js.map +1 -1
  646. package/dist/src/tools/glob.test.js +2 -1
  647. package/dist/src/tools/glob.test.js.map +1 -1
  648. package/dist/src/tools/grep.d.ts +2 -2
  649. package/dist/src/tools/grep.js +1 -1
  650. package/dist/src/tools/grep.js.map +1 -1
  651. package/dist/src/tools/grep.test.js +5 -4
  652. package/dist/src/tools/grep.test.js.map +1 -1
  653. package/dist/src/tools/ls.d.ts +2 -2
  654. package/dist/src/tools/ls.js +2 -2
  655. package/dist/src/tools/ls.js.map +1 -1
  656. package/dist/src/tools/ls.test.js +2 -1
  657. package/dist/src/tools/ls.test.js.map +1 -1
  658. package/dist/src/tools/mcp-client-manager.d.ts +3 -1
  659. package/dist/src/tools/mcp-client-manager.js +42 -9
  660. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  661. package/dist/src/tools/mcp-client-manager.test.js +66 -10
  662. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  663. package/dist/src/tools/mcp-client.d.ts +44 -6
  664. package/dist/src/tools/mcp-client.js +476 -176
  665. package/dist/src/tools/mcp-client.js.map +1 -1
  666. package/dist/src/tools/mcp-client.test.js +633 -36
  667. package/dist/src/tools/mcp-client.test.js.map +1 -1
  668. package/dist/src/tools/mcp-tool.d.ts +2 -2
  669. package/dist/src/tools/mcp-tool.js +20 -7
  670. package/dist/src/tools/mcp-tool.js.map +1 -1
  671. package/dist/src/tools/mcp-tool.test.js +35 -5
  672. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  673. package/dist/src/tools/memoryTool.d.ts +3 -3
  674. package/dist/src/tools/memoryTool.js +3 -4
  675. package/dist/src/tools/memoryTool.js.map +1 -1
  676. package/dist/src/tools/memoryTool.test.js +5 -2
  677. package/dist/src/tools/memoryTool.test.js.map +1 -1
  678. package/dist/src/tools/message-bus-integration.test.js +10 -37
  679. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  680. package/dist/src/tools/modifiable-tool.js.map +1 -1
  681. package/dist/src/tools/modifiable-tool.test.js +22 -13
  682. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  683. package/dist/src/tools/read-file.d.ts +2 -2
  684. package/dist/src/tools/read-file.js +2 -2
  685. package/dist/src/tools/read-file.js.map +1 -1
  686. package/dist/src/tools/read-file.test.js +3 -2
  687. package/dist/src/tools/read-file.test.js.map +1 -1
  688. package/dist/src/tools/read-many-files.d.ts +2 -2
  689. package/dist/src/tools/read-many-files.js +7 -6
  690. package/dist/src/tools/read-many-files.js.map +1 -1
  691. package/dist/src/tools/read-many-files.test.js +4 -3
  692. package/dist/src/tools/read-many-files.test.js.map +1 -1
  693. package/dist/src/tools/ripGrep.d.ts +3 -2
  694. package/dist/src/tools/ripGrep.js +18 -7
  695. package/dist/src/tools/ripGrep.js.map +1 -1
  696. package/dist/src/tools/ripGrep.test.js +60 -4
  697. package/dist/src/tools/ripGrep.test.js.map +1 -1
  698. package/dist/src/tools/shell.d.ts +5 -7
  699. package/dist/src/tools/shell.js +77 -51
  700. package/dist/src/tools/shell.js.map +1 -1
  701. package/dist/src/tools/shell.test.js +59 -63
  702. package/dist/src/tools/shell.test.js.map +1 -1
  703. package/dist/src/tools/tool-error.d.ts +2 -1
  704. package/dist/src/tools/tool-error.js +2 -0
  705. package/dist/src/tools/tool-error.js.map +1 -1
  706. package/dist/src/tools/tool-names.d.ts +17 -0
  707. package/dist/src/tools/tool-names.js +59 -0
  708. package/dist/src/tools/tool-names.js.map +1 -1
  709. package/dist/src/tools/tool-names.test.d.ts +6 -0
  710. package/dist/src/tools/tool-names.test.js +43 -0
  711. package/dist/src/tools/tool-names.test.js.map +1 -0
  712. package/dist/src/tools/tool-registry.d.ts +11 -7
  713. package/dist/src/tools/tool-registry.js +15 -10
  714. package/dist/src/tools/tool-registry.js.map +1 -1
  715. package/dist/src/tools/tool-registry.test.js +16 -11
  716. package/dist/src/tools/tool-registry.test.js.map +1 -1
  717. package/dist/src/tools/tools.d.ts +25 -6
  718. package/dist/src/tools/tools.js +44 -25
  719. package/dist/src/tools/tools.js.map +1 -1
  720. package/dist/src/tools/tools.test.js +3 -1
  721. package/dist/src/tools/tools.test.js.map +1 -1
  722. package/dist/src/tools/web-fetch.d.ts +2 -2
  723. package/dist/src/tools/web-fetch.js +22 -9
  724. package/dist/src/tools/web-fetch.js.map +1 -1
  725. package/dist/src/tools/web-fetch.test.js +18 -19
  726. package/dist/src/tools/web-fetch.test.js.map +1 -1
  727. package/dist/src/tools/web-search.d.ts +2 -2
  728. package/dist/src/tools/web-search.js +5 -5
  729. package/dist/src/tools/web-search.js.map +1 -1
  730. package/dist/src/tools/web-search.test.js +2 -1
  731. package/dist/src/tools/web-search.test.js.map +1 -1
  732. package/dist/src/tools/write-file.d.ts +2 -2
  733. package/dist/src/tools/write-file.js +10 -4
  734. package/dist/src/tools/write-file.js.map +1 -1
  735. package/dist/src/tools/write-file.test.js +4 -1
  736. package/dist/src/tools/write-file.test.js.map +1 -1
  737. package/dist/src/tools/write-todos.d.ts +2 -2
  738. package/dist/src/tools/write-todos.js +5 -4
  739. package/dist/src/tools/write-todos.js.map +1 -1
  740. package/dist/src/tools/write-todos.test.js +2 -1
  741. package/dist/src/tools/write-todos.test.js.map +1 -1
  742. package/dist/src/utils/bfsFileSearch.d.ts +8 -0
  743. package/dist/src/utils/bfsFileSearch.js +63 -23
  744. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  745. package/dist/src/utils/bfsFileSearch.test.js +65 -1
  746. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  747. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  748. package/dist/src/utils/checkpointUtils.js +117 -0
  749. package/dist/src/utils/checkpointUtils.js.map +1 -0
  750. package/dist/src/utils/checkpointUtils.test.d.ts +6 -0
  751. package/dist/src/utils/checkpointUtils.test.js +229 -0
  752. package/dist/src/utils/checkpointUtils.test.js.map +1 -0
  753. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  754. package/dist/src/utils/customHeaderUtils.js +34 -0
  755. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  756. package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
  757. package/dist/src/utils/customHeaderUtils.test.js +77 -0
  758. package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
  759. package/dist/src/utils/debugLogger.d.ts +3 -0
  760. package/dist/src/utils/debugLogger.js +28 -0
  761. package/dist/src/utils/debugLogger.js.map +1 -1
  762. package/dist/src/utils/editCorrector.js +6 -5
  763. package/dist/src/utils/editCorrector.js.map +1 -1
  764. package/dist/src/utils/editCorrector.test.js +7 -3
  765. package/dist/src/utils/editCorrector.test.js.map +1 -1
  766. package/dist/src/utils/editor.d.ts +9 -1
  767. package/dist/src/utils/editor.js +23 -14
  768. package/dist/src/utils/editor.js.map +1 -1
  769. package/dist/src/utils/environmentContext.d.ts +1 -0
  770. package/dist/src/utils/environmentContext.js +4 -0
  771. package/dist/src/utils/environmentContext.js.map +1 -1
  772. package/dist/src/utils/environmentContext.test.js +2 -0
  773. package/dist/src/utils/environmentContext.test.js.map +1 -1
  774. package/dist/src/utils/errorReporting.d.ts +1 -1
  775. package/dist/src/utils/errorReporting.js +13 -12
  776. package/dist/src/utils/errorReporting.js.map +1 -1
  777. package/dist/src/utils/errorReporting.test.js +17 -14
  778. package/dist/src/utils/errorReporting.test.js.map +1 -1
  779. package/dist/src/utils/errors.d.ts +8 -0
  780. package/dist/src/utils/errors.js +39 -2
  781. package/dist/src/utils/errors.js.map +1 -1
  782. package/dist/src/utils/errors.test.d.ts +6 -0
  783. package/dist/src/utils/errors.test.js +155 -0
  784. package/dist/src/utils/errors.test.js.map +1 -0
  785. package/dist/src/utils/events.d.ts +49 -19
  786. package/dist/src/utils/events.js +21 -9
  787. package/dist/src/utils/events.js.map +1 -1
  788. package/dist/src/utils/events.test.js +25 -0
  789. package/dist/src/utils/events.test.js.map +1 -1
  790. package/dist/src/utils/exitCodes.d.ts +12 -0
  791. package/dist/src/utils/exitCodes.js +13 -0
  792. package/dist/src/utils/exitCodes.js.map +1 -0
  793. package/dist/src/utils/extensionLoader.d.ts +2 -2
  794. package/dist/src/utils/extensionLoader.js +5 -6
  795. package/dist/src/utils/extensionLoader.js.map +1 -1
  796. package/dist/src/utils/extensionLoader.test.js +11 -0
  797. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  798. package/dist/src/utils/fetch.d.ts +1 -1
  799. package/dist/src/utils/fetch.js +3 -3
  800. package/dist/src/utils/fetch.js.map +1 -1
  801. package/dist/src/utils/fileUtils.d.ts +4 -0
  802. package/dist/src/utils/fileUtils.js +53 -0
  803. package/dist/src/utils/fileUtils.js.map +1 -1
  804. package/dist/src/utils/fileUtils.test.js +127 -1
  805. package/dist/src/utils/fileUtils.test.js.map +1 -1
  806. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  807. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  808. package/dist/src/utils/flashFallback.test.js +1 -1
  809. package/dist/src/utils/flashFallback.test.js.map +1 -1
  810. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  811. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  812. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  813. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  814. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  815. package/dist/src/utils/generateContentResponseUtilities.d.ts +3 -1
  816. package/dist/src/utils/generateContentResponseUtilities.js +106 -0
  817. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  818. package/dist/src/utils/generateContentResponseUtilities.test.js +279 -2
  819. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  820. package/dist/src/utils/getFolderStructure.js +7 -2
  821. package/dist/src/utils/getFolderStructure.js.map +1 -1
  822. package/dist/src/utils/googleErrors.js +31 -18
  823. package/dist/src/utils/googleErrors.js.map +1 -1
  824. package/dist/src/utils/googleErrors.test.js +10 -2
  825. package/dist/src/utils/googleErrors.test.js.map +1 -1
  826. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  827. package/dist/src/utils/googleQuotaErrors.js +32 -6
  828. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  829. package/dist/src/utils/googleQuotaErrors.test.js +94 -2
  830. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  831. package/dist/src/utils/memoryDiscovery.d.ts +5 -0
  832. package/dist/src/utils/memoryDiscovery.js +9 -5
  833. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  834. package/dist/src/utils/memoryDiscovery.test.js +31 -1
  835. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  836. package/dist/src/utils/nextSpeakerChecker.test.js +4 -0
  837. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  838. package/dist/src/utils/package.d.ts +14 -0
  839. package/dist/src/utils/package.js +15 -2
  840. package/dist/src/utils/package.js.map +1 -1
  841. package/dist/src/utils/pathCorrector.js +12 -2
  842. package/dist/src/utils/pathCorrector.js.map +1 -1
  843. package/dist/src/utils/pathCorrector.test.js +6 -2
  844. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  845. package/dist/src/utils/retry.d.ts +11 -0
  846. package/dist/src/utils/retry.js +62 -21
  847. package/dist/src/utils/retry.js.map +1 -1
  848. package/dist/src/utils/retry.test.js +170 -10
  849. package/dist/src/utils/retry.test.js.map +1 -1
  850. package/dist/src/utils/schemaValidator.d.ts +1 -1
  851. package/dist/src/utils/schemaValidator.js +1 -1
  852. package/dist/src/utils/shell-permissions.d.ts +52 -0
  853. package/dist/src/utils/shell-permissions.js +188 -0
  854. package/dist/src/utils/shell-permissions.js.map +1 -0
  855. package/dist/src/utils/shell-permissions.test.d.ts +6 -0
  856. package/dist/src/utils/shell-permissions.test.js +369 -0
  857. package/dist/src/utils/shell-permissions.test.js.map +1 -0
  858. package/dist/src/utils/shell-utils.d.ts +16 -47
  859. package/dist/src/utils/shell-utils.js +99 -195
  860. package/dist/src/utils/shell-utils.js.map +1 -1
  861. package/dist/src/utils/shell-utils.test.js +99 -288
  862. package/dist/src/utils/shell-utils.test.js.map +1 -1
  863. package/dist/src/utils/stdio.d.ts +2 -2
  864. package/dist/src/utils/stdio.js +2 -2
  865. package/dist/src/utils/stdio.js.map +1 -1
  866. package/dist/src/utils/stdio.test.js +5 -5
  867. package/dist/src/utils/stdio.test.js.map +1 -1
  868. package/dist/src/utils/summarizer.test.js +3 -2
  869. package/dist/src/utils/summarizer.test.js.map +1 -1
  870. package/dist/src/utils/terminal.d.ts +4 -0
  871. package/dist/src/utils/terminal.js +12 -0
  872. package/dist/src/utils/terminal.js.map +1 -1
  873. package/dist/src/utils/terminalSerializer.test.js +17 -0
  874. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  875. package/dist/src/utils/tokenCalculation.d.ts +19 -0
  876. package/dist/src/utils/tokenCalculation.js +85 -0
  877. package/dist/src/utils/tokenCalculation.js.map +1 -0
  878. package/dist/src/utils/tokenCalculation.test.d.ts +6 -0
  879. package/dist/src/utils/tokenCalculation.test.js +87 -0
  880. package/dist/src/utils/tokenCalculation.test.js.map +1 -0
  881. package/dist/src/utils/tool-utils.d.ts +9 -0
  882. package/dist/src/utils/tool-utils.js +29 -0
  883. package/dist/src/utils/tool-utils.js.map +1 -1
  884. package/dist/src/utils/tool-utils.test.js +17 -2
  885. package/dist/src/utils/tool-utils.test.js.map +1 -1
  886. package/dist/src/utils/version.d.ts +6 -0
  887. package/dist/src/utils/version.js +15 -0
  888. package/dist/src/utils/version.js.map +1 -0
  889. package/dist/src/utils/version.test.d.ts +6 -0
  890. package/dist/src/utils/version.test.js +39 -0
  891. package/dist/src/utils/version.test.js.map +1 -0
  892. package/dist/tsconfig.tsbuildinfo +1 -1
  893. package/package.json +8 -7
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { Logger } from '@opentelemetry/api-logs';
7
+ import type { Config } from '../config/config.js';
8
+ import type { HookPlanner } from './hookPlanner.js';
9
+ import type { HookRunner } from './hookRunner.js';
10
+ import type { HookAggregator, AggregatedHookResult } from './hookAggregator.js';
11
+ import type { NotificationType, SessionStartSource, SessionEndReason, PreCompressTrigger } from './types.js';
12
+ import type { GenerateContentParameters, GenerateContentResponse } from '@google/genai';
13
+ import type { MessageBus } from '../confirmation-bus/message-bus.js';
14
+ /**
15
+ * Hook event bus that coordinates hook execution across the system
16
+ */
17
+ export declare class HookEventHandler {
18
+ private readonly config;
19
+ private readonly hookPlanner;
20
+ private readonly hookRunner;
21
+ private readonly hookAggregator;
22
+ private readonly messageBus;
23
+ constructor(config: Config, logger: Logger, hookPlanner: HookPlanner, hookRunner: HookRunner, hookAggregator: HookAggregator, messageBus: MessageBus);
24
+ /**
25
+ * Fire a BeforeTool event
26
+ * Called by handleHookExecutionRequest - executes hooks directly
27
+ */
28
+ fireBeforeToolEvent(toolName: string, toolInput: Record<string, unknown>): Promise<AggregatedHookResult>;
29
+ /**
30
+ * Fire an AfterTool event
31
+ * Called by handleHookExecutionRequest - executes hooks directly
32
+ */
33
+ fireAfterToolEvent(toolName: string, toolInput: Record<string, unknown>, toolResponse: Record<string, unknown>): Promise<AggregatedHookResult>;
34
+ /**
35
+ * Fire a BeforeAgent event
36
+ * Called by handleHookExecutionRequest - executes hooks directly
37
+ */
38
+ fireBeforeAgentEvent(prompt: string): Promise<AggregatedHookResult>;
39
+ /**
40
+ * Fire a Notification event
41
+ */
42
+ fireNotificationEvent(type: NotificationType, message: string, details: Record<string, unknown>): Promise<AggregatedHookResult>;
43
+ /**
44
+ * Fire an AfterAgent event
45
+ * Called by handleHookExecutionRequest - executes hooks directly
46
+ */
47
+ fireAfterAgentEvent(prompt: string, promptResponse: string, stopHookActive?: boolean): Promise<AggregatedHookResult>;
48
+ /**
49
+ * Fire a SessionStart event
50
+ */
51
+ fireSessionStartEvent(source: SessionStartSource): Promise<AggregatedHookResult>;
52
+ /**
53
+ * Fire a SessionEnd event
54
+ */
55
+ fireSessionEndEvent(reason: SessionEndReason): Promise<AggregatedHookResult>;
56
+ /**
57
+ * Fire a PreCompress event
58
+ */
59
+ firePreCompressEvent(trigger: PreCompressTrigger): Promise<AggregatedHookResult>;
60
+ /**
61
+ * Fire a BeforeModel event
62
+ * Called by handleHookExecutionRequest - executes hooks directly
63
+ */
64
+ fireBeforeModelEvent(llmRequest: GenerateContentParameters): Promise<AggregatedHookResult>;
65
+ /**
66
+ * Fire an AfterModel event
67
+ * Called by handleHookExecutionRequest - executes hooks directly
68
+ */
69
+ fireAfterModelEvent(llmRequest: GenerateContentParameters, llmResponse: GenerateContentResponse): Promise<AggregatedHookResult>;
70
+ /**
71
+ * Fire a BeforeToolSelection event
72
+ * Called by handleHookExecutionRequest - executes hooks directly
73
+ */
74
+ fireBeforeToolSelectionEvent(llmRequest: GenerateContentParameters): Promise<AggregatedHookResult>;
75
+ /**
76
+ * Execute hooks for a specific event (direct execution without MessageBus)
77
+ * Used as fallback when MessageBus is not available
78
+ */
79
+ private executeHooks;
80
+ /**
81
+ * Create base hook input with common fields
82
+ */
83
+ private createBaseInput;
84
+ /**
85
+ * Log hook execution for observability
86
+ */
87
+ private logHookExecution;
88
+ /**
89
+ * Process common hook output fields centrally
90
+ */
91
+ private processCommonHookOutputFields;
92
+ /**
93
+ * Get hook name from config for display or telemetry
94
+ */
95
+ private getHookName;
96
+ /**
97
+ * Get hook name from execution result for telemetry
98
+ */
99
+ private getHookNameFromResult;
100
+ /**
101
+ * Get hook type from execution result for telemetry
102
+ */
103
+ private getHookTypeFromResult;
104
+ /**
105
+ * Handle hook execution requests from MessageBus
106
+ * This method routes the request to the appropriate fire*Event method
107
+ * and publishes the response back through MessageBus
108
+ *
109
+ * The request input only contains event-specific fields. This method adds
110
+ * the common base fields (session_id, cwd, etc.) before routing.
111
+ */
112
+ private handleHookExecutionRequest;
113
+ }
@@ -0,0 +1,571 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { HookEventName } from './types.js';
7
+ import { defaultHookTranslator } from './hookTranslator.js';
8
+ import { logHookCall } from '../telemetry/loggers.js';
9
+ import { HookCallEvent } from '../telemetry/types.js';
10
+ import { MessageBusType, } from '../confirmation-bus/types.js';
11
+ import { debugLogger } from '../utils/debugLogger.js';
12
+ import { coreEvents } from '../utils/events.js';
13
+ /**
14
+ * Validates that a value is a non-null object
15
+ */
16
+ function isObject(value) {
17
+ return typeof value === 'object' && value !== null;
18
+ }
19
+ /**
20
+ * Validates BeforeTool input fields
21
+ */
22
+ function validateBeforeToolInput(input) {
23
+ const toolName = input['tool_name'];
24
+ const toolInput = input['tool_input'];
25
+ if (typeof toolName !== 'string') {
26
+ throw new Error('Invalid input for BeforeTool hook event: tool_name must be a string');
27
+ }
28
+ if (!isObject(toolInput)) {
29
+ throw new Error('Invalid input for BeforeTool hook event: tool_input must be an object');
30
+ }
31
+ return { toolName, toolInput };
32
+ }
33
+ /**
34
+ * Validates AfterTool input fields
35
+ */
36
+ function validateAfterToolInput(input) {
37
+ const toolName = input['tool_name'];
38
+ const toolInput = input['tool_input'];
39
+ const toolResponse = input['tool_response'];
40
+ if (typeof toolName !== 'string') {
41
+ throw new Error('Invalid input for AfterTool hook event: tool_name must be a string');
42
+ }
43
+ if (!isObject(toolInput)) {
44
+ throw new Error('Invalid input for AfterTool hook event: tool_input must be an object');
45
+ }
46
+ if (!isObject(toolResponse)) {
47
+ throw new Error('Invalid input for AfterTool hook event: tool_response must be an object');
48
+ }
49
+ return { toolName, toolInput, toolResponse };
50
+ }
51
+ /**
52
+ * Validates BeforeAgent input fields
53
+ */
54
+ function validateBeforeAgentInput(input) {
55
+ const prompt = input['prompt'];
56
+ if (typeof prompt !== 'string') {
57
+ throw new Error('Invalid input for BeforeAgent hook event: prompt must be a string');
58
+ }
59
+ return { prompt };
60
+ }
61
+ /**
62
+ * Validates AfterAgent input fields
63
+ */
64
+ function validateAfterAgentInput(input) {
65
+ const prompt = input['prompt'];
66
+ const promptResponse = input['prompt_response'];
67
+ const stopHookActive = input['stop_hook_active'];
68
+ if (typeof prompt !== 'string') {
69
+ throw new Error('Invalid input for AfterAgent hook event: prompt must be a string');
70
+ }
71
+ if (typeof promptResponse !== 'string') {
72
+ throw new Error('Invalid input for AfterAgent hook event: prompt_response must be a string');
73
+ }
74
+ // stopHookActive defaults to false if not a boolean
75
+ return {
76
+ prompt,
77
+ promptResponse,
78
+ stopHookActive: typeof stopHookActive === 'boolean' ? stopHookActive : false,
79
+ };
80
+ }
81
+ /**
82
+ * Validates model-related input fields (llm_request)
83
+ */
84
+ function validateModelInput(input, eventName) {
85
+ const llmRequest = input['llm_request'];
86
+ if (!isObject(llmRequest)) {
87
+ throw new Error(`Invalid input for ${eventName} hook event: llm_request must be an object`);
88
+ }
89
+ return { llmRequest: llmRequest };
90
+ }
91
+ /**
92
+ * Validates AfterModel input fields
93
+ */
94
+ function validateAfterModelInput(input) {
95
+ const llmRequest = input['llm_request'];
96
+ const llmResponse = input['llm_response'];
97
+ if (!isObject(llmRequest)) {
98
+ throw new Error('Invalid input for AfterModel hook event: llm_request must be an object');
99
+ }
100
+ if (!isObject(llmResponse)) {
101
+ throw new Error('Invalid input for AfterModel hook event: llm_response must be an object');
102
+ }
103
+ return {
104
+ llmRequest: llmRequest,
105
+ llmResponse: llmResponse,
106
+ };
107
+ }
108
+ /**
109
+ * Validates Notification input fields
110
+ */
111
+ function validateNotificationInput(input) {
112
+ const notificationType = input['notification_type'];
113
+ const message = input['message'];
114
+ const details = input['details'];
115
+ if (typeof notificationType !== 'string') {
116
+ throw new Error('Invalid input for Notification hook event: notification_type must be a string');
117
+ }
118
+ if (typeof message !== 'string') {
119
+ throw new Error('Invalid input for Notification hook event: message must be a string');
120
+ }
121
+ if (!isObject(details)) {
122
+ throw new Error('Invalid input for Notification hook event: details must be an object');
123
+ }
124
+ return {
125
+ notificationType: notificationType,
126
+ message,
127
+ details,
128
+ };
129
+ }
130
+ /**
131
+ * Validates SessionStart input fields
132
+ */
133
+ function validateSessionStartInput(input) {
134
+ const source = input['source'];
135
+ if (typeof source !== 'string') {
136
+ throw new Error('Invalid input for SessionStart hook event: source must be a string');
137
+ }
138
+ return {
139
+ source: source,
140
+ };
141
+ }
142
+ /**
143
+ * Validates SessionEnd input fields
144
+ */
145
+ function validateSessionEndInput(input) {
146
+ const reason = input['reason'];
147
+ if (typeof reason !== 'string') {
148
+ throw new Error('Invalid input for SessionEnd hook event: reason must be a string');
149
+ }
150
+ return {
151
+ reason: reason,
152
+ };
153
+ }
154
+ /**
155
+ * Validates PreCompress input fields
156
+ */
157
+ function validatePreCompressInput(input) {
158
+ const trigger = input['trigger'];
159
+ if (typeof trigger !== 'string') {
160
+ throw new Error('Invalid input for PreCompress hook event: trigger must be a string');
161
+ }
162
+ return {
163
+ trigger: trigger,
164
+ };
165
+ }
166
+ /**
167
+ * Hook event bus that coordinates hook execution across the system
168
+ */
169
+ export class HookEventHandler {
170
+ config;
171
+ hookPlanner;
172
+ hookRunner;
173
+ hookAggregator;
174
+ messageBus;
175
+ constructor(config, logger, hookPlanner, hookRunner, hookAggregator, messageBus) {
176
+ this.config = config;
177
+ this.hookPlanner = hookPlanner;
178
+ this.hookRunner = hookRunner;
179
+ this.hookAggregator = hookAggregator;
180
+ this.messageBus = messageBus;
181
+ // Subscribe to hook execution requests from MessageBus
182
+ if (this.messageBus) {
183
+ this.messageBus.subscribe(MessageBusType.HOOK_EXECUTION_REQUEST, (request) => this.handleHookExecutionRequest(request));
184
+ }
185
+ }
186
+ /**
187
+ * Fire a BeforeTool event
188
+ * Called by handleHookExecutionRequest - executes hooks directly
189
+ */
190
+ async fireBeforeToolEvent(toolName, toolInput) {
191
+ const input = {
192
+ ...this.createBaseInput(HookEventName.BeforeTool),
193
+ tool_name: toolName,
194
+ tool_input: toolInput,
195
+ };
196
+ const context = { toolName };
197
+ return this.executeHooks(HookEventName.BeforeTool, input, context);
198
+ }
199
+ /**
200
+ * Fire an AfterTool event
201
+ * Called by handleHookExecutionRequest - executes hooks directly
202
+ */
203
+ async fireAfterToolEvent(toolName, toolInput, toolResponse) {
204
+ const input = {
205
+ ...this.createBaseInput(HookEventName.AfterTool),
206
+ tool_name: toolName,
207
+ tool_input: toolInput,
208
+ tool_response: toolResponse,
209
+ };
210
+ const context = { toolName };
211
+ return this.executeHooks(HookEventName.AfterTool, input, context);
212
+ }
213
+ /**
214
+ * Fire a BeforeAgent event
215
+ * Called by handleHookExecutionRequest - executes hooks directly
216
+ */
217
+ async fireBeforeAgentEvent(prompt) {
218
+ const input = {
219
+ ...this.createBaseInput(HookEventName.BeforeAgent),
220
+ prompt,
221
+ };
222
+ return this.executeHooks(HookEventName.BeforeAgent, input);
223
+ }
224
+ /**
225
+ * Fire a Notification event
226
+ */
227
+ async fireNotificationEvent(type, message, details) {
228
+ const input = {
229
+ ...this.createBaseInput(HookEventName.Notification),
230
+ notification_type: type,
231
+ message,
232
+ details,
233
+ };
234
+ return this.executeHooks(HookEventName.Notification, input);
235
+ }
236
+ /**
237
+ * Fire an AfterAgent event
238
+ * Called by handleHookExecutionRequest - executes hooks directly
239
+ */
240
+ async fireAfterAgentEvent(prompt, promptResponse, stopHookActive = false) {
241
+ const input = {
242
+ ...this.createBaseInput(HookEventName.AfterAgent),
243
+ prompt,
244
+ prompt_response: promptResponse,
245
+ stop_hook_active: stopHookActive,
246
+ };
247
+ return this.executeHooks(HookEventName.AfterAgent, input);
248
+ }
249
+ /**
250
+ * Fire a SessionStart event
251
+ */
252
+ async fireSessionStartEvent(source) {
253
+ const input = {
254
+ ...this.createBaseInput(HookEventName.SessionStart),
255
+ source,
256
+ };
257
+ const context = { trigger: source };
258
+ return this.executeHooks(HookEventName.SessionStart, input, context);
259
+ }
260
+ /**
261
+ * Fire a SessionEnd event
262
+ */
263
+ async fireSessionEndEvent(reason) {
264
+ const input = {
265
+ ...this.createBaseInput(HookEventName.SessionEnd),
266
+ reason,
267
+ };
268
+ const context = { trigger: reason };
269
+ return this.executeHooks(HookEventName.SessionEnd, input, context);
270
+ }
271
+ /**
272
+ * Fire a PreCompress event
273
+ */
274
+ async firePreCompressEvent(trigger) {
275
+ const input = {
276
+ ...this.createBaseInput(HookEventName.PreCompress),
277
+ trigger,
278
+ };
279
+ const context = { trigger };
280
+ return this.executeHooks(HookEventName.PreCompress, input, context);
281
+ }
282
+ /**
283
+ * Fire a BeforeModel event
284
+ * Called by handleHookExecutionRequest - executes hooks directly
285
+ */
286
+ async fireBeforeModelEvent(llmRequest) {
287
+ const input = {
288
+ ...this.createBaseInput(HookEventName.BeforeModel),
289
+ llm_request: defaultHookTranslator.toHookLLMRequest(llmRequest),
290
+ };
291
+ return this.executeHooks(HookEventName.BeforeModel, input);
292
+ }
293
+ /**
294
+ * Fire an AfterModel event
295
+ * Called by handleHookExecutionRequest - executes hooks directly
296
+ */
297
+ async fireAfterModelEvent(llmRequest, llmResponse) {
298
+ const input = {
299
+ ...this.createBaseInput(HookEventName.AfterModel),
300
+ llm_request: defaultHookTranslator.toHookLLMRequest(llmRequest),
301
+ llm_response: defaultHookTranslator.toHookLLMResponse(llmResponse),
302
+ };
303
+ return this.executeHooks(HookEventName.AfterModel, input);
304
+ }
305
+ /**
306
+ * Fire a BeforeToolSelection event
307
+ * Called by handleHookExecutionRequest - executes hooks directly
308
+ */
309
+ async fireBeforeToolSelectionEvent(llmRequest) {
310
+ const input = {
311
+ ...this.createBaseInput(HookEventName.BeforeToolSelection),
312
+ llm_request: defaultHookTranslator.toHookLLMRequest(llmRequest),
313
+ };
314
+ return this.executeHooks(HookEventName.BeforeToolSelection, input);
315
+ }
316
+ /**
317
+ * Execute hooks for a specific event (direct execution without MessageBus)
318
+ * Used as fallback when MessageBus is not available
319
+ */
320
+ async executeHooks(eventName, input, context) {
321
+ try {
322
+ // Create execution plan
323
+ const plan = this.hookPlanner.createExecutionPlan(eventName, context);
324
+ if (!plan || plan.hookConfigs.length === 0) {
325
+ return {
326
+ success: true,
327
+ allOutputs: [],
328
+ errors: [],
329
+ totalDuration: 0,
330
+ };
331
+ }
332
+ const onHookStart = (config, index) => {
333
+ coreEvents.emitHookStart({
334
+ hookName: this.getHookName(config),
335
+ eventName,
336
+ hookIndex: index + 1,
337
+ totalHooks: plan.hookConfigs.length,
338
+ });
339
+ };
340
+ const onHookEnd = (config, result) => {
341
+ coreEvents.emitHookEnd({
342
+ hookName: this.getHookName(config),
343
+ eventName,
344
+ success: result.success,
345
+ });
346
+ };
347
+ // Execute hooks according to the plan's strategy
348
+ const results = plan.sequential
349
+ ? await this.hookRunner.executeHooksSequential(plan.hookConfigs, eventName, input, onHookStart, onHookEnd)
350
+ : await this.hookRunner.executeHooksParallel(plan.hookConfigs, eventName, input, onHookStart, onHookEnd);
351
+ // Aggregate results
352
+ const aggregated = this.hookAggregator.aggregateResults(results, eventName);
353
+ // Process common hook output fields centrally
354
+ this.processCommonHookOutputFields(aggregated);
355
+ // Log hook execution
356
+ this.logHookExecution(eventName, input, results, aggregated);
357
+ return aggregated;
358
+ }
359
+ catch (error) {
360
+ debugLogger.error(`Hook event bus error for ${eventName}: ${error}`);
361
+ return {
362
+ success: false,
363
+ allOutputs: [],
364
+ errors: [error instanceof Error ? error : new Error(String(error))],
365
+ totalDuration: 0,
366
+ };
367
+ }
368
+ }
369
+ /**
370
+ * Create base hook input with common fields
371
+ */
372
+ createBaseInput(eventName) {
373
+ // Get the transcript path from the ChatRecordingService if available
374
+ const transcriptPath = this.config
375
+ .getGeminiClient()
376
+ ?.getChatRecordingService()
377
+ ?.getConversationFilePath() ?? '';
378
+ return {
379
+ session_id: this.config.getSessionId(),
380
+ transcript_path: transcriptPath,
381
+ cwd: this.config.getWorkingDir(),
382
+ hook_event_name: eventName,
383
+ timestamp: new Date().toISOString(),
384
+ };
385
+ }
386
+ /**
387
+ * Log hook execution for observability
388
+ */
389
+ logHookExecution(eventName, input, results, aggregated) {
390
+ const failedHooks = results.filter((r) => !r.success);
391
+ const successCount = results.length - failedHooks.length;
392
+ const errorCount = failedHooks.length;
393
+ if (errorCount > 0) {
394
+ const failedNames = failedHooks
395
+ .map((r) => this.getHookNameFromResult(r))
396
+ .join(', ');
397
+ debugLogger.warn(`Hook execution for ${eventName}: ${successCount} succeeded, ${errorCount} failed (${failedNames}), ` +
398
+ `total duration: ${aggregated.totalDuration}ms`);
399
+ coreEvents.emitFeedback('warning', `Hook(s) [${failedNames}] failed for event ${eventName}. Press F12 to see the debug drawer for more details.\n`);
400
+ }
401
+ else {
402
+ debugLogger.debug(`Hook execution for ${eventName}: ${successCount} hooks executed successfully, ` +
403
+ `total duration: ${aggregated.totalDuration}ms`);
404
+ }
405
+ // Log individual hook calls to telemetry
406
+ for (const result of results) {
407
+ // Determine hook name and type for telemetry
408
+ const hookName = this.getHookNameFromResult(result);
409
+ const hookType = this.getHookTypeFromResult(result);
410
+ const hookCallEvent = new HookCallEvent(eventName, hookType, hookName, { ...input }, result.duration, result.success, result.output ? { ...result.output } : undefined, result.exitCode, result.stdout, result.stderr, result.error?.message);
411
+ logHookCall(this.config, hookCallEvent);
412
+ }
413
+ // Log individual errors
414
+ for (const error of aggregated.errors) {
415
+ debugLogger.warn(`Hook execution error: ${error.message}`);
416
+ }
417
+ }
418
+ /**
419
+ * Process common hook output fields centrally
420
+ */
421
+ processCommonHookOutputFields(aggregated) {
422
+ if (!aggregated.finalOutput) {
423
+ return;
424
+ }
425
+ // Handle systemMessage - show to user in transcript mode (not to agent)
426
+ const systemMessage = aggregated.finalOutput.systemMessage;
427
+ if (systemMessage && !aggregated.finalOutput.suppressOutput) {
428
+ debugLogger.warn(`Hook system message: ${systemMessage}`);
429
+ }
430
+ // Handle suppressOutput - already handled by not logging above when true
431
+ // Handle continue=false - this should stop the entire agent execution
432
+ if (aggregated.finalOutput.shouldStopExecution()) {
433
+ const stopReason = aggregated.finalOutput.getEffectiveReason();
434
+ debugLogger.log(`Hook requested to stop execution: ${stopReason}`);
435
+ // Note: The actual stopping of execution must be handled by integration points
436
+ // as they need to interpret this signal in the context of their specific workflow
437
+ // This is just logging the request centrally
438
+ }
439
+ // Other common fields like decision/reason are handled by specific hook output classes
440
+ }
441
+ /**
442
+ * Get hook name from config for display or telemetry
443
+ */
444
+ getHookName(config) {
445
+ return config.name || config.command || 'unknown-command';
446
+ }
447
+ /**
448
+ * Get hook name from execution result for telemetry
449
+ */
450
+ getHookNameFromResult(result) {
451
+ return this.getHookName(result.hookConfig);
452
+ }
453
+ /**
454
+ * Get hook type from execution result for telemetry
455
+ */
456
+ getHookTypeFromResult(result) {
457
+ return result.hookConfig.type;
458
+ }
459
+ /**
460
+ * Handle hook execution requests from MessageBus
461
+ * This method routes the request to the appropriate fire*Event method
462
+ * and publishes the response back through MessageBus
463
+ *
464
+ * The request input only contains event-specific fields. This method adds
465
+ * the common base fields (session_id, cwd, etc.) before routing.
466
+ */
467
+ async handleHookExecutionRequest(request) {
468
+ try {
469
+ // Add base fields to the input
470
+ const enrichedInput = {
471
+ ...this.createBaseInput(request.eventName),
472
+ ...request.input,
473
+ };
474
+ let result;
475
+ // Route to appropriate event handler based on eventName
476
+ switch (request.eventName) {
477
+ case HookEventName.BeforeTool: {
478
+ const { toolName, toolInput } = validateBeforeToolInput(enrichedInput);
479
+ result = await this.fireBeforeToolEvent(toolName, toolInput);
480
+ break;
481
+ }
482
+ case HookEventName.AfterTool: {
483
+ const { toolName, toolInput, toolResponse } = validateAfterToolInput(enrichedInput);
484
+ result = await this.fireAfterToolEvent(toolName, toolInput, toolResponse);
485
+ break;
486
+ }
487
+ case HookEventName.BeforeAgent: {
488
+ const { prompt } = validateBeforeAgentInput(enrichedInput);
489
+ result = await this.fireBeforeAgentEvent(prompt);
490
+ break;
491
+ }
492
+ case HookEventName.AfterAgent: {
493
+ const { prompt, promptResponse, stopHookActive } = validateAfterAgentInput(enrichedInput);
494
+ result = await this.fireAfterAgentEvent(prompt, promptResponse, stopHookActive);
495
+ break;
496
+ }
497
+ case HookEventName.BeforeModel: {
498
+ const { llmRequest } = validateModelInput(enrichedInput, 'BeforeModel');
499
+ const translatedRequest = defaultHookTranslator.toHookLLMRequest(llmRequest);
500
+ // Update the enrichedInput with translated request
501
+ enrichedInput['llm_request'] = translatedRequest;
502
+ result = await this.fireBeforeModelEvent(llmRequest);
503
+ break;
504
+ }
505
+ case HookEventName.AfterModel: {
506
+ const { llmRequest, llmResponse } = validateAfterModelInput(enrichedInput);
507
+ const translatedRequest = defaultHookTranslator.toHookLLMRequest(llmRequest);
508
+ const translatedResponse = defaultHookTranslator.toHookLLMResponse(llmResponse);
509
+ // Update the enrichedInput with translated versions
510
+ enrichedInput['llm_request'] = translatedRequest;
511
+ enrichedInput['llm_response'] = translatedResponse;
512
+ result = await this.fireAfterModelEvent(llmRequest, llmResponse);
513
+ break;
514
+ }
515
+ case HookEventName.BeforeToolSelection: {
516
+ const { llmRequest } = validateModelInput(enrichedInput, 'BeforeToolSelection');
517
+ const translatedRequest = defaultHookTranslator.toHookLLMRequest(llmRequest);
518
+ // Update the enrichedInput with translated request
519
+ enrichedInput['llm_request'] = translatedRequest;
520
+ result = await this.fireBeforeToolSelectionEvent(llmRequest);
521
+ break;
522
+ }
523
+ case HookEventName.Notification: {
524
+ const { notificationType, message, details } = validateNotificationInput(enrichedInput);
525
+ result = await this.fireNotificationEvent(notificationType, message, details);
526
+ break;
527
+ }
528
+ case HookEventName.SessionStart: {
529
+ const { source } = validateSessionStartInput(enrichedInput);
530
+ result = await this.fireSessionStartEvent(source);
531
+ break;
532
+ }
533
+ case HookEventName.SessionEnd: {
534
+ const { reason } = validateSessionEndInput(enrichedInput);
535
+ result = await this.fireSessionEndEvent(reason);
536
+ break;
537
+ }
538
+ case HookEventName.PreCompress: {
539
+ const { trigger } = validatePreCompressInput(enrichedInput);
540
+ result = await this.firePreCompressEvent(trigger);
541
+ break;
542
+ }
543
+ default:
544
+ throw new Error(`Unsupported hook event: ${request.eventName}`);
545
+ }
546
+ // Publish response through MessageBus
547
+ if (this.messageBus) {
548
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
549
+ this.messageBus.publish({
550
+ type: MessageBusType.HOOK_EXECUTION_RESPONSE,
551
+ correlationId: request.correlationId,
552
+ success: result.success,
553
+ output: result.finalOutput,
554
+ });
555
+ }
556
+ }
557
+ catch (error) {
558
+ // Publish error response
559
+ if (this.messageBus) {
560
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
561
+ this.messageBus.publish({
562
+ type: MessageBusType.HOOK_EXECUTION_RESPONSE,
563
+ correlationId: request.correlationId,
564
+ success: false,
565
+ error: error instanceof Error ? error : new Error(String(error)),
566
+ });
567
+ }
568
+ }
569
+ }
570
+ }
571
+ //# sourceMappingURL=hookEventHandler.js.map