@office-ai/aioncli-core 0.18.7 → 0.24.0

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 (890) 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 +91 -274
  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/prompts.js +82 -26
  299. package/dist/src/core/prompts.js.map +1 -1
  300. package/dist/src/core/prompts.test.js +102 -3
  301. package/dist/src/core/prompts.test.js.map +1 -1
  302. package/dist/src/core/sessionHookTriggers.d.ts +29 -0
  303. package/dist/src/core/sessionHookTriggers.js +75 -0
  304. package/dist/src/core/sessionHookTriggers.js.map +1 -0
  305. package/dist/src/core/turn.d.ts +34 -21
  306. package/dist/src/core/turn.js +33 -13
  307. package/dist/src/core/turn.js.map +1 -1
  308. package/dist/src/core/turn.test.js +0 -5
  309. package/dist/src/core/turn.test.js.map +1 -1
  310. package/dist/src/fallback/handler.js +101 -93
  311. package/dist/src/fallback/handler.js.map +1 -1
  312. package/dist/src/fallback/handler.test.js +186 -173
  313. package/dist/src/fallback/handler.test.js.map +1 -1
  314. package/dist/src/fallback/types.d.ts +8 -0
  315. package/dist/src/generated/git-commit.d.ts +3 -3
  316. package/dist/src/generated/git-commit.js +3 -3
  317. package/dist/src/generated/git-commit.js.map +1 -1
  318. package/dist/src/hooks/hookAggregator.js +7 -0
  319. package/dist/src/hooks/hookAggregator.js.map +1 -1
  320. package/dist/src/hooks/hookEventHandler.d.ts +113 -0
  321. package/dist/src/hooks/hookEventHandler.js +571 -0
  322. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  323. package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  324. package/dist/src/hooks/hookEventHandler.test.js +461 -0
  325. package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
  326. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  327. package/dist/src/hooks/hookPlanner.js +2 -7
  328. package/dist/src/hooks/hookPlanner.js.map +1 -1
  329. package/dist/src/hooks/hookPlanner.test.js +62 -2
  330. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  331. package/dist/src/hooks/hookRegistry.d.ts +6 -18
  332. package/dist/src/hooks/hookRegistry.js +49 -35
  333. package/dist/src/hooks/hookRegistry.js.map +1 -1
  334. package/dist/src/hooks/hookRegistry.test.js +167 -8
  335. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  336. package/dist/src/hooks/hookRunner.d.ts +5 -3
  337. package/dist/src/hooks/hookRunner.js +74 -18
  338. package/dist/src/hooks/hookRunner.js.map +1 -1
  339. package/dist/src/hooks/hookRunner.test.js +174 -36
  340. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  341. package/dist/src/hooks/hookSystem.d.ts +40 -0
  342. package/dist/src/hooks/hookSystem.js +65 -0
  343. package/dist/src/hooks/hookSystem.js.map +1 -0
  344. package/dist/src/hooks/hookSystem.test.d.ts +6 -0
  345. package/dist/src/hooks/hookSystem.test.js +319 -0
  346. package/dist/src/hooks/hookSystem.test.js.map +1 -0
  347. package/dist/src/hooks/index.d.ts +17 -0
  348. package/dist/src/hooks/index.js +18 -0
  349. package/dist/src/hooks/index.js.map +1 -0
  350. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  351. package/dist/src/hooks/trustedHooks.js +90 -0
  352. package/dist/src/hooks/trustedHooks.js.map +1 -0
  353. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  354. package/dist/src/hooks/trustedHooks.test.js +154 -0
  355. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  356. package/dist/src/hooks/types.d.ts +21 -11
  357. package/dist/src/hooks/types.js +31 -27
  358. package/dist/src/hooks/types.js.map +1 -1
  359. package/dist/src/hooks/types.test.js +5 -24
  360. package/dist/src/hooks/types.test.js.map +1 -1
  361. package/dist/src/ide/detect-ide.test.js +32 -1
  362. package/dist/src/ide/detect-ide.test.js.map +1 -1
  363. package/dist/src/ide/ide-client.js +9 -4
  364. package/dist/src/ide/ide-client.js.map +1 -1
  365. package/dist/src/ide/ide-client.test.js +17 -0
  366. package/dist/src/ide/ide-client.test.js.map +1 -1
  367. package/dist/src/ide/ide-installer.test.js +1 -1
  368. package/dist/src/ide/ide-installer.test.js.map +1 -1
  369. package/dist/src/ide/types.d.ts +4 -4
  370. package/dist/src/index.d.ts +17 -1
  371. package/dist/src/index.js +18 -2
  372. package/dist/src/index.js.map +1 -1
  373. package/dist/src/mcp/auth-provider.d.ts +16 -0
  374. package/dist/src/mcp/auth-provider.js +7 -0
  375. package/dist/src/mcp/auth-provider.js.map +1 -0
  376. package/dist/src/mcp/google-auth-provider.d.ts +10 -2
  377. package/dist/src/mcp/google-auth-provider.js +28 -0
  378. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  379. package/dist/src/mcp/google-auth-provider.test.js +45 -0
  380. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  381. package/dist/src/mcp/oauth-provider.js +6 -2
  382. package/dist/src/mcp/oauth-provider.js.map +1 -1
  383. package/dist/src/mcp/oauth-provider.test.js +4 -1
  384. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  385. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  386. package/dist/src/mcp/oauth-utils.js +31 -2
  387. package/dist/src/mcp/oauth-utils.js.map +1 -1
  388. package/dist/src/mcp/oauth-utils.test.js +42 -0
  389. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  390. package/dist/src/mcp/sa-impersonation-provider.d.ts +2 -2
  391. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  392. package/dist/src/mcp/token-storage/hybrid-token-storage.js +1 -1
  393. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
  394. package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
  395. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  396. package/dist/src/output/json-formatter.d.ts +2 -2
  397. package/dist/src/output/json-formatter.js +6 -3
  398. package/dist/src/output/json-formatter.js.map +1 -1
  399. package/dist/src/output/json-formatter.test.js +37 -9
  400. package/dist/src/output/json-formatter.test.js.map +1 -1
  401. package/dist/src/output/stream-json-formatter.js +6 -0
  402. package/dist/src/output/stream-json-formatter.js.map +1 -1
  403. package/dist/src/output/stream-json-formatter.test.js +98 -100
  404. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  405. package/dist/src/output/types.d.ts +3 -0
  406. package/dist/src/output/types.js.map +1 -1
  407. package/dist/src/policy/config.js +140 -15
  408. package/dist/src/policy/config.js.map +1 -1
  409. package/dist/src/policy/config.test.js +21 -0
  410. package/dist/src/policy/config.test.js.map +1 -1
  411. package/dist/src/policy/persistence.test.d.ts +6 -0
  412. package/dist/src/policy/persistence.test.js +154 -0
  413. package/dist/src/policy/persistence.test.js.map +1 -0
  414. package/dist/src/policy/policies/agent.toml +31 -0
  415. package/dist/src/policy/policies/read-only.toml +5 -0
  416. package/dist/src/policy/policies/write.toml +5 -0
  417. package/dist/src/policy/policies/yolo.toml +1 -0
  418. package/dist/src/policy/policy-engine.d.ts +30 -1
  419. package/dist/src/policy/policy-engine.js +192 -5
  420. package/dist/src/policy/policy-engine.js.map +1 -1
  421. package/dist/src/policy/policy-engine.test.js +520 -3
  422. package/dist/src/policy/policy-engine.test.js.map +1 -1
  423. package/dist/src/policy/policy-updater.test.d.ts +6 -0
  424. package/dist/src/policy/policy-updater.test.js +116 -0
  425. package/dist/src/policy/policy-updater.test.js.map +1 -0
  426. package/dist/src/policy/shell-safety.test.d.ts +6 -0
  427. package/dist/src/policy/shell-safety.test.js +75 -0
  428. package/dist/src/policy/shell-safety.test.js.map +1 -0
  429. package/dist/src/policy/toml-loader.d.ts +3 -5
  430. package/dist/src/policy/toml-loader.js +12 -60
  431. package/dist/src/policy/toml-loader.js.map +1 -1
  432. package/dist/src/policy/toml-loader.test.js +38 -7
  433. package/dist/src/policy/toml-loader.test.js.map +1 -1
  434. package/dist/src/policy/types.d.ts +72 -1
  435. package/dist/src/policy/types.js +21 -0
  436. package/dist/src/policy/types.js.map +1 -1
  437. package/dist/src/policy/utils.d.ts +21 -0
  438. package/dist/src/policy/utils.js +42 -0
  439. package/dist/src/policy/utils.js.map +1 -0
  440. package/dist/src/policy/utils.test.d.ts +6 -0
  441. package/dist/src/policy/utils.test.js +64 -0
  442. package/dist/src/policy/utils.test.js.map +1 -0
  443. package/dist/src/resources/resource-registry.d.ts +30 -0
  444. package/dist/src/resources/resource-registry.js +57 -0
  445. package/dist/src/resources/resource-registry.js.map +1 -0
  446. package/dist/src/resources/resource-registry.test.d.ts +6 -0
  447. package/dist/src/resources/resource-registry.test.js +54 -0
  448. package/dist/src/resources/resource-registry.test.js.map +1 -0
  449. package/dist/src/routing/modelRouterService.js +0 -15
  450. package/dist/src/routing/modelRouterService.js.map +1 -1
  451. package/dist/src/routing/modelRouterService.test.js +0 -62
  452. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  453. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  454. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  455. package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
  456. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  457. package/dist/src/routing/strategies/compositeStrategy.js +4 -2
  458. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  459. package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
  460. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  461. package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
  462. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  463. package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
  464. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  465. package/dist/src/routing/strategies/overrideStrategy.js +3 -2
  466. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  467. package/dist/src/safety/checker-runner.js +17 -6
  468. package/dist/src/safety/checker-runner.js.map +1 -1
  469. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  470. package/dist/src/scheduler/tool-executor.js +198 -0
  471. package/dist/src/scheduler/tool-executor.js.map +1 -0
  472. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  473. package/dist/src/scheduler/tool-executor.test.js +231 -0
  474. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  475. package/dist/src/scheduler/types.d.ts +95 -0
  476. package/dist/src/scheduler/types.js +7 -0
  477. package/dist/src/scheduler/types.js.map +1 -0
  478. package/dist/src/services/chatCompressionService.d.ts +1 -0
  479. package/dist/src/services/chatCompressionService.js +38 -8
  480. package/dist/src/services/chatCompressionService.js.map +1 -1
  481. package/dist/src/services/chatCompressionService.test.js +35 -31
  482. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  483. package/dist/src/services/chatRecordingService.d.ts +14 -0
  484. package/dist/src/services/chatRecordingService.js +37 -0
  485. package/dist/src/services/chatRecordingService.js.map +1 -1
  486. package/dist/src/services/contextManager.d.ts +29 -0
  487. package/dist/src/services/contextManager.js +71 -0
  488. package/dist/src/services/contextManager.js.map +1 -0
  489. package/dist/src/services/contextManager.test.d.ts +6 -0
  490. package/dist/src/services/contextManager.test.js +104 -0
  491. package/dist/src/services/contextManager.test.js.map +1 -0
  492. package/dist/src/services/environmentSanitization.d.ts +15 -0
  493. package/dist/src/services/environmentSanitization.js +141 -0
  494. package/dist/src/services/environmentSanitization.js.map +1 -0
  495. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  496. package/dist/src/services/environmentSanitization.test.js +284 -0
  497. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  498. package/dist/src/services/fileSystemService.d.ts +0 -9
  499. package/dist/src/services/fileSystemService.js +0 -11
  500. package/dist/src/services/fileSystemService.js.map +1 -1
  501. package/dist/src/services/gitService.js +18 -2
  502. package/dist/src/services/gitService.js.map +1 -1
  503. package/dist/src/services/gitService.test.js +56 -0
  504. package/dist/src/services/gitService.test.js.map +1 -1
  505. package/dist/src/services/loopDetectionService.js +5 -4
  506. package/dist/src/services/loopDetectionService.js.map +1 -1
  507. package/dist/src/services/loopDetectionService.test.js +14 -8
  508. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  509. package/dist/src/services/modelConfig.golden.test.js +32 -0
  510. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  511. package/dist/src/services/modelConfig.integration.test.js +1 -1
  512. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  513. package/dist/src/services/modelConfigService.d.ts +4 -0
  514. package/dist/src/services/modelConfigService.js +8 -3
  515. package/dist/src/services/modelConfigService.js.map +1 -1
  516. package/dist/src/services/modelConfigService.test.js +221 -0
  517. package/dist/src/services/modelConfigService.test.js.map +1 -1
  518. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  519. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  520. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  521. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  522. package/dist/src/services/sessionSummaryService.js +131 -0
  523. package/dist/src/services/sessionSummaryService.js.map +1 -0
  524. package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
  525. package/dist/src/services/sessionSummaryService.test.js +785 -0
  526. package/dist/src/services/sessionSummaryService.test.js.map +1 -0
  527. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  528. package/dist/src/services/sessionSummaryUtils.js +129 -0
  529. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  530. package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
  531. package/dist/src/services/sessionSummaryUtils.test.js +137 -0
  532. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
  533. package/dist/src/services/shellExecutionService.d.ts +4 -0
  534. package/dist/src/services/shellExecutionService.js +45 -27
  535. package/dist/src/services/shellExecutionService.js.map +1 -1
  536. package/dist/src/services/shellExecutionService.test.js +240 -8
  537. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  538. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  539. package/dist/src/services/test-data/resolved-aliases.golden.json +36 -0
  540. package/dist/src/skills/skillLoader.d.ts +28 -0
  541. package/dist/src/skills/skillLoader.js +77 -0
  542. package/dist/src/skills/skillLoader.js.map +1 -0
  543. package/dist/src/skills/skillLoader.test.d.ts +1 -0
  544. package/dist/src/skills/skillLoader.test.js +2 -0
  545. package/dist/src/skills/skillLoader.test.js.map +1 -0
  546. package/dist/src/skills/skillManager.d.ts +51 -0
  547. package/dist/src/skills/skillManager.js +89 -0
  548. package/dist/src/skills/skillManager.js.map +1 -0
  549. package/dist/src/skills/skillManager.test.d.ts +6 -0
  550. package/dist/src/skills/skillManager.test.js +128 -0
  551. package/dist/src/skills/skillManager.test.js.map +1 -0
  552. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  553. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +11 -7
  554. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +127 -47
  555. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  556. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +105 -18
  557. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  558. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -3
  559. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +20 -5
  560. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  561. package/dist/src/telemetry/config.js +2 -0
  562. package/dist/src/telemetry/config.js.map +1 -1
  563. package/dist/src/telemetry/config.test.js +25 -0
  564. package/dist/src/telemetry/config.test.js.map +1 -1
  565. package/dist/src/telemetry/gcp-exporters.d.ts +4 -3
  566. package/dist/src/telemetry/gcp-exporters.js +8 -4
  567. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  568. package/dist/src/telemetry/index.d.ts +2 -1
  569. package/dist/src/telemetry/index.js +2 -1
  570. package/dist/src/telemetry/index.js.map +1 -1
  571. package/dist/src/telemetry/loggers.d.ts +5 -3
  572. package/dist/src/telemetry/loggers.js +353 -334
  573. package/dist/src/telemetry/loggers.js.map +1 -1
  574. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  575. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  576. package/dist/src/telemetry/loggers.test.js +238 -31
  577. package/dist/src/telemetry/loggers.test.js.map +1 -1
  578. package/dist/src/telemetry/metrics.d.ts +22 -0
  579. package/dist/src/telemetry/metrics.js +32 -0
  580. package/dist/src/telemetry/metrics.js.map +1 -1
  581. package/dist/src/telemetry/metrics.test.js +64 -0
  582. package/dist/src/telemetry/metrics.test.js.map +1 -1
  583. package/dist/src/telemetry/sanitize.d.ts +25 -0
  584. package/dist/src/telemetry/sanitize.js +48 -0
  585. package/dist/src/telemetry/sanitize.js.map +1 -0
  586. package/dist/src/telemetry/sanitize.test.d.ts +6 -0
  587. package/dist/src/telemetry/sanitize.test.js +279 -0
  588. package/dist/src/telemetry/sanitize.test.js.map +1 -0
  589. package/dist/src/telemetry/sdk.d.ts +9 -2
  590. package/dist/src/telemetry/sdk.js +142 -17
  591. package/dist/src/telemetry/sdk.js.map +1 -1
  592. package/dist/src/telemetry/sdk.test.js +130 -28
  593. package/dist/src/telemetry/sdk.test.js.map +1 -1
  594. package/dist/src/telemetry/semantic.js +1 -1
  595. package/dist/src/telemetry/semantic.js.map +1 -1
  596. package/dist/src/telemetry/startupProfiler.d.ts +51 -0
  597. package/dist/src/telemetry/startupProfiler.js +170 -0
  598. package/dist/src/telemetry/startupProfiler.js.map +1 -0
  599. package/dist/src/telemetry/startupProfiler.test.d.ts +6 -0
  600. package/dist/src/telemetry/startupProfiler.test.js +285 -0
  601. package/dist/src/telemetry/startupProfiler.test.js.map +1 -0
  602. package/dist/src/telemetry/telemetry.test.js +10 -3
  603. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  604. package/dist/src/telemetry/trace.js +2 -2
  605. package/dist/src/telemetry/trace.js.map +1 -1
  606. package/dist/src/telemetry/types.d.ts +62 -16
  607. package/dist/src/telemetry/types.js +157 -27
  608. package/dist/src/telemetry/types.js.map +1 -1
  609. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  610. package/dist/src/telemetry/uiTelemetry.js +2 -0
  611. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  612. package/dist/src/telemetry/uiTelemetry.test.js +4 -0
  613. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  614. package/dist/src/test-utils/mock-message-bus.d.ts +61 -0
  615. package/dist/src/test-utils/mock-message-bus.js +160 -0
  616. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  617. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  618. package/dist/src/test-utils/mock-tool.js +12 -11
  619. package/dist/src/test-utils/mock-tool.js.map +1 -1
  620. package/dist/src/tools/activate-skill.d.ts +27 -0
  621. package/dist/src/tools/activate-skill.js +120 -0
  622. package/dist/src/tools/activate-skill.js.map +1 -0
  623. package/dist/src/tools/activate-skill.test.d.ts +6 -0
  624. package/dist/src/tools/activate-skill.test.js +95 -0
  625. package/dist/src/tools/activate-skill.test.js.map +1 -0
  626. package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
  627. package/dist/src/tools/confirmation-policy.test.js +142 -0
  628. package/dist/src/tools/confirmation-policy.test.js.map +1 -0
  629. package/dist/src/tools/edit.d.ts +27 -5
  630. package/dist/src/tools/edit.js +449 -137
  631. package/dist/src/tools/edit.js.map +1 -1
  632. package/dist/src/tools/edit.test.js +258 -526
  633. package/dist/src/tools/edit.test.js.map +1 -1
  634. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  635. package/dist/src/tools/get-internal-docs.js +129 -0
  636. package/dist/src/tools/get-internal-docs.js.map +1 -0
  637. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  638. package/dist/src/tools/get-internal-docs.test.js +57 -0
  639. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  640. package/dist/src/tools/glob.d.ts +2 -2
  641. package/dist/src/tools/glob.js +1 -1
  642. package/dist/src/tools/glob.js.map +1 -1
  643. package/dist/src/tools/glob.test.js +2 -1
  644. package/dist/src/tools/glob.test.js.map +1 -1
  645. package/dist/src/tools/grep.d.ts +2 -2
  646. package/dist/src/tools/grep.js +1 -1
  647. package/dist/src/tools/grep.js.map +1 -1
  648. package/dist/src/tools/grep.test.js +5 -4
  649. package/dist/src/tools/grep.test.js.map +1 -1
  650. package/dist/src/tools/ls.d.ts +2 -2
  651. package/dist/src/tools/ls.js +2 -2
  652. package/dist/src/tools/ls.js.map +1 -1
  653. package/dist/src/tools/ls.test.js +2 -1
  654. package/dist/src/tools/ls.test.js.map +1 -1
  655. package/dist/src/tools/mcp-client-manager.d.ts +3 -1
  656. package/dist/src/tools/mcp-client-manager.js +42 -9
  657. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  658. package/dist/src/tools/mcp-client-manager.test.js +66 -10
  659. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  660. package/dist/src/tools/mcp-client.d.ts +44 -6
  661. package/dist/src/tools/mcp-client.js +476 -176
  662. package/dist/src/tools/mcp-client.js.map +1 -1
  663. package/dist/src/tools/mcp-client.test.js +633 -36
  664. package/dist/src/tools/mcp-client.test.js.map +1 -1
  665. package/dist/src/tools/mcp-tool.d.ts +2 -2
  666. package/dist/src/tools/mcp-tool.js +20 -7
  667. package/dist/src/tools/mcp-tool.js.map +1 -1
  668. package/dist/src/tools/mcp-tool.test.js +35 -5
  669. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  670. package/dist/src/tools/memoryTool.d.ts +3 -3
  671. package/dist/src/tools/memoryTool.js +3 -4
  672. package/dist/src/tools/memoryTool.js.map +1 -1
  673. package/dist/src/tools/memoryTool.test.js +5 -2
  674. package/dist/src/tools/memoryTool.test.js.map +1 -1
  675. package/dist/src/tools/message-bus-integration.test.js +10 -37
  676. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  677. package/dist/src/tools/modifiable-tool.js.map +1 -1
  678. package/dist/src/tools/modifiable-tool.test.js +22 -13
  679. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  680. package/dist/src/tools/read-file.d.ts +2 -2
  681. package/dist/src/tools/read-file.js +2 -2
  682. package/dist/src/tools/read-file.js.map +1 -1
  683. package/dist/src/tools/read-file.test.js +3 -2
  684. package/dist/src/tools/read-file.test.js.map +1 -1
  685. package/dist/src/tools/read-many-files.d.ts +2 -2
  686. package/dist/src/tools/read-many-files.js +7 -6
  687. package/dist/src/tools/read-many-files.js.map +1 -1
  688. package/dist/src/tools/read-many-files.test.js +4 -3
  689. package/dist/src/tools/read-many-files.test.js.map +1 -1
  690. package/dist/src/tools/ripGrep.d.ts +3 -2
  691. package/dist/src/tools/ripGrep.js +18 -7
  692. package/dist/src/tools/ripGrep.js.map +1 -1
  693. package/dist/src/tools/ripGrep.test.js +60 -4
  694. package/dist/src/tools/ripGrep.test.js.map +1 -1
  695. package/dist/src/tools/shell.d.ts +5 -7
  696. package/dist/src/tools/shell.js +77 -51
  697. package/dist/src/tools/shell.js.map +1 -1
  698. package/dist/src/tools/shell.test.js +59 -63
  699. package/dist/src/tools/shell.test.js.map +1 -1
  700. package/dist/src/tools/tool-error.d.ts +2 -1
  701. package/dist/src/tools/tool-error.js +2 -0
  702. package/dist/src/tools/tool-error.js.map +1 -1
  703. package/dist/src/tools/tool-names.d.ts +17 -0
  704. package/dist/src/tools/tool-names.js +59 -0
  705. package/dist/src/tools/tool-names.js.map +1 -1
  706. package/dist/src/tools/tool-names.test.d.ts +6 -0
  707. package/dist/src/tools/tool-names.test.js +43 -0
  708. package/dist/src/tools/tool-names.test.js.map +1 -0
  709. package/dist/src/tools/tool-registry.d.ts +11 -7
  710. package/dist/src/tools/tool-registry.js +15 -10
  711. package/dist/src/tools/tool-registry.js.map +1 -1
  712. package/dist/src/tools/tool-registry.test.js +16 -11
  713. package/dist/src/tools/tool-registry.test.js.map +1 -1
  714. package/dist/src/tools/tools.d.ts +25 -6
  715. package/dist/src/tools/tools.js +44 -25
  716. package/dist/src/tools/tools.js.map +1 -1
  717. package/dist/src/tools/tools.test.js +3 -1
  718. package/dist/src/tools/tools.test.js.map +1 -1
  719. package/dist/src/tools/web-fetch.d.ts +2 -2
  720. package/dist/src/tools/web-fetch.js +22 -9
  721. package/dist/src/tools/web-fetch.js.map +1 -1
  722. package/dist/src/tools/web-fetch.test.js +18 -19
  723. package/dist/src/tools/web-fetch.test.js.map +1 -1
  724. package/dist/src/tools/web-search.d.ts +2 -2
  725. package/dist/src/tools/web-search.js +5 -5
  726. package/dist/src/tools/web-search.js.map +1 -1
  727. package/dist/src/tools/web-search.test.js +2 -1
  728. package/dist/src/tools/web-search.test.js.map +1 -1
  729. package/dist/src/tools/write-file.d.ts +2 -2
  730. package/dist/src/tools/write-file.js +10 -4
  731. package/dist/src/tools/write-file.js.map +1 -1
  732. package/dist/src/tools/write-file.test.js +4 -1
  733. package/dist/src/tools/write-file.test.js.map +1 -1
  734. package/dist/src/tools/write-todos.d.ts +2 -2
  735. package/dist/src/tools/write-todos.js +5 -4
  736. package/dist/src/tools/write-todos.js.map +1 -1
  737. package/dist/src/tools/write-todos.test.js +2 -1
  738. package/dist/src/tools/write-todos.test.js.map +1 -1
  739. package/dist/src/utils/bfsFileSearch.d.ts +8 -0
  740. package/dist/src/utils/bfsFileSearch.js +63 -23
  741. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  742. package/dist/src/utils/bfsFileSearch.test.js +65 -1
  743. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  744. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  745. package/dist/src/utils/checkpointUtils.js +117 -0
  746. package/dist/src/utils/checkpointUtils.js.map +1 -0
  747. package/dist/src/utils/checkpointUtils.test.d.ts +6 -0
  748. package/dist/src/utils/checkpointUtils.test.js +229 -0
  749. package/dist/src/utils/checkpointUtils.test.js.map +1 -0
  750. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  751. package/dist/src/utils/customHeaderUtils.js +34 -0
  752. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  753. package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
  754. package/dist/src/utils/customHeaderUtils.test.js +77 -0
  755. package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
  756. package/dist/src/utils/debugLogger.d.ts +3 -0
  757. package/dist/src/utils/debugLogger.js +28 -0
  758. package/dist/src/utils/debugLogger.js.map +1 -1
  759. package/dist/src/utils/editCorrector.js +6 -5
  760. package/dist/src/utils/editCorrector.js.map +1 -1
  761. package/dist/src/utils/editCorrector.test.js +7 -3
  762. package/dist/src/utils/editCorrector.test.js.map +1 -1
  763. package/dist/src/utils/editor.d.ts +9 -1
  764. package/dist/src/utils/editor.js +23 -14
  765. package/dist/src/utils/editor.js.map +1 -1
  766. package/dist/src/utils/environmentContext.d.ts +1 -0
  767. package/dist/src/utils/environmentContext.js +4 -0
  768. package/dist/src/utils/environmentContext.js.map +1 -1
  769. package/dist/src/utils/environmentContext.test.js +2 -0
  770. package/dist/src/utils/environmentContext.test.js.map +1 -1
  771. package/dist/src/utils/errorReporting.d.ts +1 -1
  772. package/dist/src/utils/errorReporting.js +13 -12
  773. package/dist/src/utils/errorReporting.js.map +1 -1
  774. package/dist/src/utils/errorReporting.test.js +17 -14
  775. package/dist/src/utils/errorReporting.test.js.map +1 -1
  776. package/dist/src/utils/errors.d.ts +8 -0
  777. package/dist/src/utils/errors.js +39 -2
  778. package/dist/src/utils/errors.js.map +1 -1
  779. package/dist/src/utils/errors.test.d.ts +6 -0
  780. package/dist/src/utils/errors.test.js +155 -0
  781. package/dist/src/utils/errors.test.js.map +1 -0
  782. package/dist/src/utils/events.d.ts +49 -19
  783. package/dist/src/utils/events.js +21 -9
  784. package/dist/src/utils/events.js.map +1 -1
  785. package/dist/src/utils/events.test.js +25 -0
  786. package/dist/src/utils/events.test.js.map +1 -1
  787. package/dist/src/utils/exitCodes.d.ts +12 -0
  788. package/dist/src/utils/exitCodes.js +13 -0
  789. package/dist/src/utils/exitCodes.js.map +1 -0
  790. package/dist/src/utils/extensionLoader.d.ts +2 -2
  791. package/dist/src/utils/extensionLoader.js +5 -6
  792. package/dist/src/utils/extensionLoader.js.map +1 -1
  793. package/dist/src/utils/extensionLoader.test.js +11 -0
  794. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  795. package/dist/src/utils/fetch.d.ts +1 -1
  796. package/dist/src/utils/fetch.js +3 -3
  797. package/dist/src/utils/fetch.js.map +1 -1
  798. package/dist/src/utils/fileUtils.d.ts +4 -0
  799. package/dist/src/utils/fileUtils.js +53 -0
  800. package/dist/src/utils/fileUtils.js.map +1 -1
  801. package/dist/src/utils/fileUtils.test.js +127 -1
  802. package/dist/src/utils/fileUtils.test.js.map +1 -1
  803. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  804. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  805. package/dist/src/utils/flashFallback.test.js +1 -1
  806. package/dist/src/utils/flashFallback.test.js.map +1 -1
  807. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  808. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  809. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  810. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  811. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  812. package/dist/src/utils/generateContentResponseUtilities.d.ts +3 -1
  813. package/dist/src/utils/generateContentResponseUtilities.js +106 -0
  814. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  815. package/dist/src/utils/generateContentResponseUtilities.test.js +279 -2
  816. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  817. package/dist/src/utils/getFolderStructure.js +7 -2
  818. package/dist/src/utils/getFolderStructure.js.map +1 -1
  819. package/dist/src/utils/googleErrors.js +31 -18
  820. package/dist/src/utils/googleErrors.js.map +1 -1
  821. package/dist/src/utils/googleErrors.test.js +10 -2
  822. package/dist/src/utils/googleErrors.test.js.map +1 -1
  823. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  824. package/dist/src/utils/googleQuotaErrors.js +32 -6
  825. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  826. package/dist/src/utils/googleQuotaErrors.test.js +94 -2
  827. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  828. package/dist/src/utils/memoryDiscovery.d.ts +5 -0
  829. package/dist/src/utils/memoryDiscovery.js +9 -5
  830. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  831. package/dist/src/utils/memoryDiscovery.test.js +31 -1
  832. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  833. package/dist/src/utils/nextSpeakerChecker.test.js +4 -0
  834. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  835. package/dist/src/utils/package.d.ts +14 -0
  836. package/dist/src/utils/package.js +15 -2
  837. package/dist/src/utils/package.js.map +1 -1
  838. package/dist/src/utils/pathCorrector.js +12 -2
  839. package/dist/src/utils/pathCorrector.js.map +1 -1
  840. package/dist/src/utils/pathCorrector.test.js +6 -2
  841. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  842. package/dist/src/utils/retry.d.ts +11 -0
  843. package/dist/src/utils/retry.js +62 -21
  844. package/dist/src/utils/retry.js.map +1 -1
  845. package/dist/src/utils/retry.test.js +170 -10
  846. package/dist/src/utils/retry.test.js.map +1 -1
  847. package/dist/src/utils/schemaValidator.d.ts +1 -1
  848. package/dist/src/utils/schemaValidator.js +1 -1
  849. package/dist/src/utils/shell-permissions.d.ts +52 -0
  850. package/dist/src/utils/shell-permissions.js +188 -0
  851. package/dist/src/utils/shell-permissions.js.map +1 -0
  852. package/dist/src/utils/shell-permissions.test.d.ts +6 -0
  853. package/dist/src/utils/shell-permissions.test.js +369 -0
  854. package/dist/src/utils/shell-permissions.test.js.map +1 -0
  855. package/dist/src/utils/shell-utils.d.ts +16 -47
  856. package/dist/src/utils/shell-utils.js +99 -195
  857. package/dist/src/utils/shell-utils.js.map +1 -1
  858. package/dist/src/utils/shell-utils.test.js +99 -288
  859. package/dist/src/utils/shell-utils.test.js.map +1 -1
  860. package/dist/src/utils/stdio.d.ts +2 -2
  861. package/dist/src/utils/stdio.js +2 -2
  862. package/dist/src/utils/stdio.js.map +1 -1
  863. package/dist/src/utils/stdio.test.js +5 -5
  864. package/dist/src/utils/stdio.test.js.map +1 -1
  865. package/dist/src/utils/summarizer.test.js +3 -2
  866. package/dist/src/utils/summarizer.test.js.map +1 -1
  867. package/dist/src/utils/terminal.d.ts +4 -0
  868. package/dist/src/utils/terminal.js +12 -0
  869. package/dist/src/utils/terminal.js.map +1 -1
  870. package/dist/src/utils/terminalSerializer.test.js +17 -0
  871. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  872. package/dist/src/utils/tokenCalculation.d.ts +19 -0
  873. package/dist/src/utils/tokenCalculation.js +85 -0
  874. package/dist/src/utils/tokenCalculation.js.map +1 -0
  875. package/dist/src/utils/tokenCalculation.test.d.ts +6 -0
  876. package/dist/src/utils/tokenCalculation.test.js +87 -0
  877. package/dist/src/utils/tokenCalculation.test.js.map +1 -0
  878. package/dist/src/utils/tool-utils.d.ts +9 -0
  879. package/dist/src/utils/tool-utils.js +29 -0
  880. package/dist/src/utils/tool-utils.js.map +1 -1
  881. package/dist/src/utils/tool-utils.test.js +17 -2
  882. package/dist/src/utils/tool-utils.test.js.map +1 -1
  883. package/dist/src/utils/version.d.ts +6 -0
  884. package/dist/src/utils/version.js +15 -0
  885. package/dist/src/utils/version.js.map +1 -0
  886. package/dist/src/utils/version.test.d.ts +6 -0
  887. package/dist/src/utils/version.test.js +39 -0
  888. package/dist/src/utils/version.test.js.map +1 -0
  889. package/dist/tsconfig.tsbuildinfo +1 -1
  890. package/package.json +8 -7
@@ -3,36 +3,36 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { describe, it, expect, vi, beforeEach } from 'vitest';
7
- import { CoreToolScheduler, convertToFunctionResponse, truncateAndSaveToFile, } from './coreToolScheduler.js';
8
- import { DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES, DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD, BaseDeclarativeTool, BaseToolInvocation, ToolConfirmationOutcome, Kind, ApprovalMode, } from '../index.js';
6
+ import { describe, it, expect, vi } from 'vitest';
7
+ import { CoreToolScheduler } from './coreToolScheduler.js';
8
+ import { DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES, DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD, BaseDeclarativeTool, BaseToolInvocation, ToolConfirmationOutcome, Kind, ApprovalMode, HookSystem, } from '../index.js';
9
+ import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
9
10
  import { MockModifiableTool, MockTool, MOCK_TOOL_SHOULD_CONFIRM_EXECUTE, } from '../test-utils/mock-tool.js';
10
11
  import * as modifiableToolModule from '../tools/modifiable-tool.js';
11
- import * as fs from 'node:fs/promises';
12
- import * as path from 'node:path';
13
- import { isShellInvocationAllowlisted } from '../utils/shell-utils.js';
12
+ import { isShellInvocationAllowlisted } from '../utils/shell-permissions.js';
13
+ import { DEFAULT_GEMINI_MODEL } from '../config/models.js';
14
14
  vi.mock('fs/promises', () => ({
15
15
  writeFile: vi.fn(),
16
16
  }));
17
17
  class TestApprovalTool extends BaseDeclarativeTool {
18
18
  config;
19
19
  static Name = 'testApprovalTool';
20
- constructor(config) {
20
+ constructor(config, messageBus) {
21
21
  super(TestApprovalTool.Name, 'TestApprovalTool', 'A tool for testing approval logic', Kind.Edit, {
22
22
  properties: { id: { type: 'string' } },
23
23
  required: ['id'],
24
24
  type: 'object',
25
- });
25
+ }, messageBus);
26
26
  this.config = config;
27
27
  }
28
- createInvocation(params) {
29
- return new TestApprovalInvocation(this.config, params);
28
+ createInvocation(params, messageBus, _toolName, _toolDisplayName) {
29
+ return new TestApprovalInvocation(this.config, params, messageBus);
30
30
  }
31
31
  }
32
32
  class TestApprovalInvocation extends BaseToolInvocation {
33
33
  config;
34
- constructor(config, params) {
35
- super(params);
34
+ constructor(config, params, messageBus) {
35
+ super(params, messageBus);
36
36
  this.config = config;
37
37
  }
38
38
  getDescription() {
@@ -68,8 +68,8 @@ class TestApprovalInvocation extends BaseToolInvocation {
68
68
  class AbortDuringConfirmationInvocation extends BaseToolInvocation {
69
69
  abortController;
70
70
  abortError;
71
- constructor(abortController, abortError, params) {
72
- super(params);
71
+ constructor(abortController, abortError, params, messageBus) {
72
+ super(params, messageBus);
73
73
  this.abortController = abortController;
74
74
  this.abortError = abortError;
75
75
  }
@@ -87,16 +87,16 @@ class AbortDuringConfirmationInvocation extends BaseToolInvocation {
87
87
  class AbortDuringConfirmationTool extends BaseDeclarativeTool {
88
88
  abortController;
89
89
  abortError;
90
- constructor(abortController, abortError) {
90
+ constructor(abortController, abortError, messageBus) {
91
91
  super('abortDuringConfirmationTool', 'Abort During Confirmation Tool', 'A tool that aborts while confirming execution.', Kind.Other, {
92
92
  type: 'object',
93
93
  properties: {},
94
- });
94
+ }, messageBus);
95
95
  this.abortController = abortController;
96
96
  this.abortError = abortError;
97
97
  }
98
- createInvocation(params) {
99
- return new AbortDuringConfirmationInvocation(this.abortController, this.abortError, params);
98
+ createInvocation(params, messageBus, _toolName, _toolDisplayName) {
99
+ return new AbortDuringConfirmationInvocation(this.abortController, this.abortError, params, messageBus);
100
100
  }
101
101
  }
102
102
  async function waitForStatus(onToolCallsUpdate, status, timeout = 5000) {
@@ -136,11 +136,13 @@ function createMockConfig(overrides = {}) {
136
136
  discoverTools: async () => { },
137
137
  getAllTools: () => [],
138
138
  getToolsByServer: () => [],
139
+ getExperiments: () => { },
139
140
  };
140
141
  const baseConfig = {
141
142
  getSessionId: () => 'test-session-id',
142
143
  getUsageStatisticsEnabled: () => true,
143
144
  getDebugMode: () => false,
145
+ isInteractive: () => true,
144
146
  getApprovalMode: () => ApprovalMode.DEFAULT,
145
147
  setApprovalMode: () => { },
146
148
  getAllowedTools: () => [],
@@ -151,6 +153,11 @@ function createMockConfig(overrides = {}) {
151
153
  getShellExecutionConfig: () => ({
152
154
  terminalWidth: 90,
153
155
  terminalHeight: 30,
156
+ sanitizationConfig: {
157
+ enableEnvironmentVariableRedaction: true,
158
+ allowedEnvironmentVariables: [],
159
+ blockedEnvironmentVariables: [],
160
+ },
154
161
  }),
155
162
  storage: {
156
163
  getProjectTempDir: () => '/tmp',
@@ -158,12 +165,12 @@ function createMockConfig(overrides = {}) {
158
165
  getTruncateToolOutputThreshold: () => DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
159
166
  getTruncateToolOutputLines: () => DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES,
160
167
  getToolRegistry: () => defaultToolRegistry,
161
- getUseSmartEdit: () => false,
162
- getUseModelRouter: () => false,
168
+ getActiveModel: () => DEFAULT_GEMINI_MODEL,
163
169
  getGeminiClient: () => null,
164
- getEnableMessageBusIntegration: () => false,
165
- getMessageBus: () => null,
170
+ getMessageBus: () => createMockMessageBus(),
171
+ getEnableHooks: () => false,
166
172
  getPolicyEngine: () => null,
173
+ getExperiments: () => { },
167
174
  };
168
175
  return { ...baseConfig, ...overrides };
169
176
  }
@@ -254,7 +261,7 @@ describe('CoreToolScheduler', () => {
254
261
  const onToolCallsUpdate = vi.fn();
255
262
  const mockConfig = createMockConfig({
256
263
  getToolRegistry: () => mockToolRegistry,
257
- isInteractive: () => false,
264
+ getHookSystem: () => undefined,
258
265
  });
259
266
  const scheduler = new CoreToolScheduler({
260
267
  config: mockConfig,
@@ -343,7 +350,7 @@ describe('CoreToolScheduler', () => {
343
350
  const onToolCallsUpdate = vi.fn();
344
351
  const mockConfig = createMockConfig({
345
352
  getToolRegistry: () => mockToolRegistry,
346
- isInteractive: () => false,
353
+ getHookSystem: () => undefined,
347
354
  });
348
355
  const scheduler = new CoreToolScheduler({
349
356
  config: mockConfig,
@@ -395,7 +402,7 @@ describe('CoreToolScheduler', () => {
395
402
  it('should mark tool call as cancelled when abort happens during confirmation error', async () => {
396
403
  const abortController = new AbortController();
397
404
  const abortError = new Error('Abort requested during confirmation');
398
- const declarativeTool = new AbortDuringConfirmationTool(abortController, abortError);
405
+ const declarativeTool = new AbortDuringConfirmationTool(abortController, abortError, createMockMessageBus());
399
406
  const mockToolRegistry = {
400
407
  getTool: () => declarativeTool,
401
408
  getFunctionDeclarations: () => [],
@@ -436,34 +443,56 @@ describe('CoreToolScheduler', () => {
436
443
  const statuses = onToolCallsUpdate.mock.calls.flatMap((call) => call[0].map((toolCall) => toolCall.status));
437
444
  expect(statuses).not.toContain('error');
438
445
  });
439
- describe('getToolSuggestion', () => {
440
- it('should suggest the top N closest tool names for a typo', () => {
441
- // Create mocked tool registry
442
- const mockToolRegistry = {
443
- getAllToolNames: () => ['list_files', 'read_file', 'write_file'],
444
- };
445
- const mockConfig = createMockConfig({
446
- getToolRegistry: () => mockToolRegistry,
447
- isInteractive: () => false,
448
- });
449
- // Create scheduler
450
- const scheduler = new CoreToolScheduler({
451
- config: mockConfig,
452
- getPreferredEditor: () => 'vscode',
453
- });
454
- // Test that the right tool is selected, with only 1 result, for typos
455
- // @ts-expect-error accessing private method
456
- const misspelledTool = scheduler.getToolSuggestion('list_fils', 1);
457
- expect(misspelledTool).toBe(' Did you mean "list_files"?');
458
- // Test that the right tool is selected, with only 1 result, for prefixes
459
- // @ts-expect-error accessing private method
460
- const prefixedTool = scheduler.getToolSuggestion('github.list_files', 1);
461
- expect(prefixedTool).toBe(' Did you mean "list_files"?');
462
- // Test that the right tool is first
463
- // @ts-expect-error accessing private method
464
- const suggestionMultiple = scheduler.getToolSuggestion('list_fils');
465
- expect(suggestionMultiple).toBe(' Did you mean one of: "list_files", "read_file", "write_file"?');
446
+ it('should error when tool requires confirmation in non-interactive mode', async () => {
447
+ const mockTool = new MockTool({
448
+ name: 'mockTool',
449
+ shouldConfirmExecute: MOCK_TOOL_SHOULD_CONFIRM_EXECUTE,
450
+ });
451
+ const declarativeTool = mockTool;
452
+ const mockToolRegistry = {
453
+ getTool: () => declarativeTool,
454
+ getFunctionDeclarations: () => [],
455
+ tools: new Map(),
456
+ discovery: {},
457
+ registerTool: () => { },
458
+ getToolByName: () => declarativeTool,
459
+ getToolByDisplayName: () => declarativeTool,
460
+ getTools: () => [],
461
+ discoverTools: async () => { },
462
+ getAllTools: () => [],
463
+ getToolsByServer: () => [],
464
+ };
465
+ const onAllToolCallsComplete = vi.fn();
466
+ const onToolCallsUpdate = vi.fn();
467
+ const mockConfig = createMockConfig({
468
+ getToolRegistry: () => mockToolRegistry,
469
+ isInteractive: () => false,
470
+ });
471
+ const scheduler = new CoreToolScheduler({
472
+ config: mockConfig,
473
+ onAllToolCallsComplete,
474
+ onToolCallsUpdate,
475
+ getPreferredEditor: () => 'vscode',
466
476
  });
477
+ const abortController = new AbortController();
478
+ const request = {
479
+ callId: '1',
480
+ name: 'mockTool',
481
+ args: {},
482
+ isClientInitiated: false,
483
+ prompt_id: 'prompt-id-1',
484
+ };
485
+ await scheduler.schedule([request], abortController.signal);
486
+ expect(onAllToolCallsComplete).toHaveBeenCalled();
487
+ const completedCalls = onAllToolCallsComplete.mock
488
+ .calls[0][0];
489
+ expect(completedCalls[0].status).toBe('error');
490
+ const erroredCall = completedCalls[0];
491
+ const errorResponse = erroredCall.response;
492
+ const errorParts = errorResponse.responseParts;
493
+ // @ts-expect-error - accessing internal structure of FunctionResponsePart
494
+ const errorMessage = errorParts[0].functionResponse.response.error;
495
+ expect(errorMessage).toContain('Tool execution for "mockTool" requires user confirmation, which is not supported in non-interactive mode.');
467
496
  });
468
497
  });
469
498
  describe('CoreToolScheduler with payload', () => {
@@ -488,8 +517,13 @@ describe('CoreToolScheduler with payload', () => {
488
517
  const onToolCallsUpdate = vi.fn();
489
518
  const mockConfig = createMockConfig({
490
519
  getToolRegistry: () => mockToolRegistry,
491
- isInteractive: () => false,
492
520
  });
521
+ const mockMessageBus = createMockMessageBus();
522
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
523
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
524
+ mockConfig.getHookSystem = vi
525
+ .fn()
526
+ .mockReturnValue(new HookSystem(mockConfig));
493
527
  const scheduler = new CoreToolScheduler({
494
528
  config: mockConfig,
495
529
  onAllToolCallsComplete,
@@ -523,176 +557,9 @@ describe('CoreToolScheduler with payload', () => {
523
557
  });
524
558
  });
525
559
  });
526
- describe('convertToFunctionResponse', () => {
527
- const toolName = 'testTool';
528
- const callId = 'call1';
529
- it('should handle simple string llmContent', () => {
530
- const llmContent = 'Simple text output';
531
- const result = convertToFunctionResponse(toolName, callId, llmContent);
532
- expect(result).toEqual([
533
- {
534
- functionResponse: {
535
- name: toolName,
536
- id: callId,
537
- response: { output: 'Simple text output' },
538
- },
539
- },
540
- ]);
541
- });
542
- it('should handle llmContent as a single Part with text', () => {
543
- const llmContent = { text: 'Text from Part object' };
544
- const result = convertToFunctionResponse(toolName, callId, llmContent);
545
- expect(result).toEqual([
546
- {
547
- functionResponse: {
548
- name: toolName,
549
- id: callId,
550
- response: { output: 'Text from Part object' },
551
- },
552
- },
553
- ]);
554
- });
555
- it('should handle llmContent as a PartListUnion array with a single text Part', () => {
556
- const llmContent = [{ text: 'Text from array' }];
557
- const result = convertToFunctionResponse(toolName, callId, llmContent);
558
- expect(result).toEqual([
559
- {
560
- functionResponse: {
561
- name: toolName,
562
- id: callId,
563
- response: { output: 'Text from array' },
564
- },
565
- },
566
- ]);
567
- });
568
- it('should handle llmContent with inlineData', () => {
569
- const llmContent = {
570
- inlineData: { mimeType: 'image/png', data: 'base64...' },
571
- };
572
- const result = convertToFunctionResponse(toolName, callId, llmContent);
573
- expect(result).toEqual([
574
- {
575
- functionResponse: {
576
- name: toolName,
577
- id: callId,
578
- response: {
579
- output: 'Binary content of type image/png was processed.',
580
- },
581
- },
582
- },
583
- llmContent,
584
- ]);
585
- });
586
- it('should handle llmContent with fileData', () => {
587
- const llmContent = {
588
- fileData: { mimeType: 'application/pdf', fileUri: 'gs://...' },
589
- };
590
- const result = convertToFunctionResponse(toolName, callId, llmContent);
591
- expect(result).toEqual([
592
- {
593
- functionResponse: {
594
- name: toolName,
595
- id: callId,
596
- response: {
597
- output: 'Binary content of type application/pdf was processed.',
598
- },
599
- },
600
- },
601
- llmContent,
602
- ]);
603
- });
604
- it('should handle llmContent as an array of multiple Parts (text and inlineData)', () => {
605
- const llmContent = [
606
- { text: 'Some textual description' },
607
- { inlineData: { mimeType: 'image/jpeg', data: 'base64data...' } },
608
- { text: 'Another text part' },
609
- ];
610
- const result = convertToFunctionResponse(toolName, callId, llmContent);
611
- expect(result).toEqual([
612
- {
613
- functionResponse: {
614
- name: toolName,
615
- id: callId,
616
- response: { output: 'Tool execution succeeded.' },
617
- },
618
- },
619
- ...llmContent,
620
- ]);
621
- });
622
- it('should handle llmContent as an array with a single inlineData Part', () => {
623
- const llmContent = [
624
- { inlineData: { mimeType: 'image/gif', data: 'gifdata...' } },
625
- ];
626
- const result = convertToFunctionResponse(toolName, callId, llmContent);
627
- expect(result).toEqual([
628
- {
629
- functionResponse: {
630
- name: toolName,
631
- id: callId,
632
- response: {
633
- output: 'Binary content of type image/gif was processed.',
634
- },
635
- },
636
- },
637
- ...llmContent,
638
- ]);
639
- });
640
- it('should handle llmContent as a generic Part (not text, inlineData, or fileData)', () => {
641
- const llmContent = { functionCall: { name: 'test', args: {} } };
642
- const result = convertToFunctionResponse(toolName, callId, llmContent);
643
- expect(result).toEqual([
644
- {
645
- functionResponse: {
646
- name: toolName,
647
- id: callId,
648
- response: { output: 'Tool execution succeeded.' },
649
- },
650
- },
651
- ]);
652
- });
653
- it('should handle empty string llmContent', () => {
654
- const llmContent = '';
655
- const result = convertToFunctionResponse(toolName, callId, llmContent);
656
- expect(result).toEqual([
657
- {
658
- functionResponse: {
659
- name: toolName,
660
- id: callId,
661
- response: { output: '' },
662
- },
663
- },
664
- ]);
665
- });
666
- it('should handle llmContent as an empty array', () => {
667
- const llmContent = [];
668
- const result = convertToFunctionResponse(toolName, callId, llmContent);
669
- expect(result).toEqual([
670
- {
671
- functionResponse: {
672
- name: toolName,
673
- id: callId,
674
- response: { output: 'Tool execution succeeded.' },
675
- },
676
- },
677
- ]);
678
- });
679
- it('should handle llmContent as a Part with undefined inlineData/fileData/text', () => {
680
- const llmContent = {}; // An empty part object
681
- const result = convertToFunctionResponse(toolName, callId, llmContent);
682
- expect(result).toEqual([
683
- {
684
- functionResponse: {
685
- name: toolName,
686
- id: callId,
687
- response: { output: 'Tool execution succeeded.' },
688
- },
689
- },
690
- ]);
691
- });
692
- });
693
560
  class MockEditToolInvocation extends BaseToolInvocation {
694
- constructor(params) {
695
- super(params);
561
+ constructor(params, messageBus) {
562
+ super(params, messageBus);
696
563
  }
697
564
  getDescription() {
698
565
  return 'A mock edit tool invocation';
@@ -717,16 +584,16 @@ class MockEditToolInvocation extends BaseToolInvocation {
717
584
  }
718
585
  }
719
586
  class MockEditTool extends BaseDeclarativeTool {
720
- constructor() {
721
- super('mockEditTool', 'mockEditTool', 'A mock edit tool', Kind.Edit, {});
587
+ constructor(messageBus) {
588
+ super('mockEditTool', 'mockEditTool', 'A mock edit tool', Kind.Edit, {}, messageBus);
722
589
  }
723
- createInvocation(params) {
724
- return new MockEditToolInvocation(params);
590
+ createInvocation(params, messageBus, _toolName, _toolDisplayName) {
591
+ return new MockEditToolInvocation(params, messageBus);
725
592
  }
726
593
  }
727
594
  describe('CoreToolScheduler edit cancellation', () => {
728
595
  it('should preserve diff when an edit is cancelled', async () => {
729
- const mockEditTool = new MockEditTool();
596
+ const mockEditTool = new MockEditTool(createMockMessageBus());
730
597
  const mockToolRegistry = {
731
598
  getTool: () => mockEditTool,
732
599
  getFunctionDeclarations: () => [],
@@ -744,8 +611,13 @@ describe('CoreToolScheduler edit cancellation', () => {
744
611
  const onToolCallsUpdate = vi.fn();
745
612
  const mockConfig = createMockConfig({
746
613
  getToolRegistry: () => mockToolRegistry,
747
- isInteractive: () => false,
748
614
  });
615
+ const mockMessageBus = createMockMessageBus();
616
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
617
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
618
+ mockConfig.getHookSystem = vi
619
+ .fn()
620
+ .mockReturnValue(new HookSystem(mockConfig));
749
621
  const scheduler = new CoreToolScheduler({
750
622
  config: mockConfig,
751
623
  onAllToolCallsComplete,
@@ -814,6 +686,12 @@ describe('CoreToolScheduler YOLO mode', () => {
814
686
  getApprovalMode: () => ApprovalMode.YOLO,
815
687
  isInteractive: () => false,
816
688
  });
689
+ const mockMessageBus = createMockMessageBus();
690
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
691
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
692
+ mockConfig.getHookSystem = vi
693
+ .fn()
694
+ .mockReturnValue(new HookSystem(mockConfig));
817
695
  const scheduler = new CoreToolScheduler({
818
696
  config: mockConfig,
819
697
  onAllToolCallsComplete,
@@ -888,6 +766,12 @@ describe('CoreToolScheduler request queueing', () => {
888
766
  getApprovalMode: () => ApprovalMode.YOLO, // Use YOLO to avoid confirmation prompts
889
767
  isInteractive: () => false,
890
768
  });
769
+ const mockMessageBus = createMockMessageBus();
770
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
771
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
772
+ mockConfig.getHookSystem = vi
773
+ .fn()
774
+ .mockReturnValue(new HookSystem(mockConfig));
891
775
  const scheduler = new CoreToolScheduler({
892
776
  config: mockConfig,
893
777
  onAllToolCallsComplete,
@@ -910,6 +794,7 @@ describe('CoreToolScheduler request queueing', () => {
910
794
  prompt_id: 'prompt-2',
911
795
  };
912
796
  // Schedule the first call, which will pause execution.
797
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
913
798
  scheduler.schedule([request1], abortController.signal);
914
799
  // Wait for the first call to be in the 'executing' state.
915
800
  await waitForStatus(onToolCallsUpdate, 'executing');
@@ -979,9 +864,20 @@ describe('CoreToolScheduler request queueing', () => {
979
864
  getShellExecutionConfig: () => ({
980
865
  terminalWidth: 80,
981
866
  terminalHeight: 24,
867
+ sanitizationConfig: {
868
+ enableEnvironmentVariableRedaction: true,
869
+ allowedEnvironmentVariables: [],
870
+ blockedEnvironmentVariables: [],
871
+ },
982
872
  }),
983
873
  isInteractive: () => false,
984
874
  });
875
+ const mockMessageBus = createMockMessageBus();
876
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
877
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
878
+ mockConfig.getHookSystem = vi
879
+ .fn()
880
+ .mockReturnValue(new HookSystem(mockConfig));
985
881
  const scheduler = new CoreToolScheduler({
986
882
  config: mockConfig,
987
883
  onAllToolCallsComplete,
@@ -1066,9 +962,14 @@ describe('CoreToolScheduler request queueing', () => {
1066
962
  getShellExecutionConfig: () => ({
1067
963
  terminalWidth: 80,
1068
964
  terminalHeight: 24,
965
+ sanitizationConfig: {
966
+ enableEnvironmentVariableRedaction: true,
967
+ allowedEnvironmentVariables: [],
968
+ blockedEnvironmentVariables: [],
969
+ },
1069
970
  }),
1070
971
  getToolRegistry: () => toolRegistry,
1071
- isInteractive: () => false,
972
+ getHookSystem: () => undefined,
1072
973
  });
1073
974
  const scheduler = new CoreToolScheduler({
1074
975
  config: mockConfig,
@@ -1117,8 +1018,13 @@ describe('CoreToolScheduler request queueing', () => {
1117
1018
  const mockConfig = createMockConfig({
1118
1019
  getToolRegistry: () => mockToolRegistry,
1119
1020
  getApprovalMode: () => ApprovalMode.YOLO,
1120
- isInteractive: () => false,
1121
1021
  });
1022
+ const mockMessageBus = createMockMessageBus();
1023
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
1024
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
1025
+ mockConfig.getHookSystem = vi
1026
+ .fn()
1027
+ .mockReturnValue(new HookSystem(mockConfig));
1122
1028
  const scheduler = new CoreToolScheduler({
1123
1029
  config: mockConfig,
1124
1030
  onAllToolCallsComplete,
@@ -1159,9 +1065,14 @@ describe('CoreToolScheduler request queueing', () => {
1159
1065
  setApprovalMode: (mode) => {
1160
1066
  approvalMode = mode;
1161
1067
  },
1162
- isInteractive: () => false,
1163
1068
  });
1164
- const testTool = new TestApprovalTool(mockConfig);
1069
+ const mockMessageBus = createMockMessageBus();
1070
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
1071
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
1072
+ mockConfig.getHookSystem = vi
1073
+ .fn()
1074
+ .mockReturnValue(new HookSystem(mockConfig));
1075
+ const testTool = new TestApprovalTool(mockConfig, mockMessageBus);
1165
1076
  const toolRegistry = {
1166
1077
  getTool: () => testTool,
1167
1078
  getFunctionDeclarations: () => [],
@@ -1302,6 +1213,12 @@ describe('CoreToolScheduler Sequential Execution', () => {
1302
1213
  getApprovalMode: () => ApprovalMode.YOLO, // Use YOLO to avoid confirmation prompts
1303
1214
  isInteractive: () => false,
1304
1215
  });
1216
+ const mockMessageBus = createMockMessageBus();
1217
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
1218
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
1219
+ mockConfig.getHookSystem = vi
1220
+ .fn()
1221
+ .mockReturnValue(new HookSystem(mockConfig));
1305
1222
  const scheduler = new CoreToolScheduler({
1306
1223
  config: mockConfig,
1307
1224
  onAllToolCallsComplete,
@@ -1388,6 +1305,12 @@ describe('CoreToolScheduler Sequential Execution', () => {
1388
1305
  getApprovalMode: () => ApprovalMode.YOLO,
1389
1306
  isInteractive: () => false,
1390
1307
  });
1308
+ const mockMessageBus = createMockMessageBus();
1309
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
1310
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
1311
+ mockConfig.getHookSystem = vi
1312
+ .fn()
1313
+ .mockReturnValue(new HookSystem(mockConfig));
1391
1314
  const scheduler = new CoreToolScheduler({
1392
1315
  config: mockConfig,
1393
1316
  onAllToolCallsComplete,
@@ -1469,6 +1392,12 @@ describe('CoreToolScheduler Sequential Execution', () => {
1469
1392
  const mockConfig = createMockConfig({
1470
1393
  getToolRegistry: () => mockToolRegistry,
1471
1394
  });
1395
+ const mockMessageBus = createMockMessageBus();
1396
+ mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
1397
+ mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
1398
+ mockConfig.getHookSystem = vi
1399
+ .fn()
1400
+ .mockReturnValue(new HookSystem(mockConfig));
1472
1401
  const scheduler = new CoreToolScheduler({
1473
1402
  config: mockConfig,
1474
1403
  onAllToolCallsComplete,
@@ -1499,118 +1428,4 @@ describe('CoreToolScheduler Sequential Execution', () => {
1499
1428
  modifyWithEditorSpy.mockRestore();
1500
1429
  });
1501
1430
  });
1502
- describe('truncateAndSaveToFile', () => {
1503
- const mockWriteFile = vi.mocked(fs.writeFile);
1504
- const THRESHOLD = 40_000;
1505
- const TRUNCATE_LINES = 1000;
1506
- beforeEach(() => {
1507
- vi.clearAllMocks();
1508
- });
1509
- it('should return content unchanged if below threshold', async () => {
1510
- const content = 'Short content';
1511
- const callId = 'test-call-id';
1512
- const projectTempDir = '/tmp';
1513
- const result = await truncateAndSaveToFile(content, callId, projectTempDir, THRESHOLD, TRUNCATE_LINES);
1514
- expect(result).toEqual({ content });
1515
- expect(mockWriteFile).not.toHaveBeenCalled();
1516
- });
1517
- it('should truncate content by lines when content has many lines', async () => {
1518
- // Create content that exceeds 100,000 character threshold with many lines
1519
- const lines = Array(2000).fill('x'.repeat(100)); // 100 chars per line * 2000 lines = 200,000 chars
1520
- const content = lines.join('\n');
1521
- const callId = 'test-call-id';
1522
- const projectTempDir = '/tmp';
1523
- mockWriteFile.mockResolvedValue(undefined);
1524
- const result = await truncateAndSaveToFile(content, callId, projectTempDir, THRESHOLD, TRUNCATE_LINES);
1525
- expect(result.outputFile).toBe(path.join(projectTempDir, `${callId}.output`));
1526
- expect(mockWriteFile).toHaveBeenCalledWith(path.join(projectTempDir, `${callId}.output`), content);
1527
- // Should contain the first and last lines with 1/5 head and 4/5 tail
1528
- const head = Math.floor(TRUNCATE_LINES / 5);
1529
- const beginning = lines.slice(0, head);
1530
- const end = lines.slice(-(TRUNCATE_LINES - head));
1531
- const expectedTruncated = beginning.join('\n') + '\n... [CONTENT TRUNCATED] ...\n' + end.join('\n');
1532
- expect(result.content).toContain('Tool output was too large and has been truncated');
1533
- expect(result.content).toContain('Truncated part of the output:');
1534
- expect(result.content).toContain(expectedTruncated);
1535
- });
1536
- it('should wrap and truncate content when content has few but long lines', async () => {
1537
- const content = 'a'.repeat(200_000); // A single very long line
1538
- const callId = 'test-call-id';
1539
- const projectTempDir = '/tmp';
1540
- const wrapWidth = 120;
1541
- mockWriteFile.mockResolvedValue(undefined);
1542
- // Manually wrap the content to generate the expected file content
1543
- const wrappedLines = [];
1544
- for (let i = 0; i < content.length; i += wrapWidth) {
1545
- wrappedLines.push(content.substring(i, i + wrapWidth));
1546
- }
1547
- const expectedFileContent = wrappedLines.join('\n');
1548
- const result = await truncateAndSaveToFile(content, callId, projectTempDir, THRESHOLD, TRUNCATE_LINES);
1549
- expect(result.outputFile).toBe(path.join(projectTempDir, `${callId}.output`));
1550
- // Check that the file was written with the wrapped content
1551
- expect(mockWriteFile).toHaveBeenCalledWith(path.join(projectTempDir, `${callId}.output`), expectedFileContent);
1552
- // Should contain the first and last lines with 1/5 head and 4/5 tail of the wrapped content
1553
- const head = Math.floor(TRUNCATE_LINES / 5);
1554
- const beginning = wrappedLines.slice(0, head);
1555
- const end = wrappedLines.slice(-(TRUNCATE_LINES - head));
1556
- const expectedTruncated = beginning.join('\n') + '\n... [CONTENT TRUNCATED] ...\n' + end.join('\n');
1557
- expect(result.content).toContain('Tool output was too large and has been truncated');
1558
- expect(result.content).toContain('Truncated part of the output:');
1559
- expect(result.content).toContain(expectedTruncated);
1560
- });
1561
- it('should handle file write errors gracefully', async () => {
1562
- const content = 'a'.repeat(2_000_000);
1563
- const callId = 'test-call-id';
1564
- const projectTempDir = '/tmp';
1565
- mockWriteFile.mockRejectedValue(new Error('File write failed'));
1566
- const result = await truncateAndSaveToFile(content, callId, projectTempDir, THRESHOLD, TRUNCATE_LINES);
1567
- expect(result.outputFile).toBeUndefined();
1568
- expect(result.content).toContain('[Note: Could not save full output to file]');
1569
- expect(mockWriteFile).toHaveBeenCalled();
1570
- });
1571
- it('should save to correct file path with call ID', async () => {
1572
- const content = 'a'.repeat(200_000);
1573
- const callId = 'unique-call-123';
1574
- const projectTempDir = '/custom/temp/dir';
1575
- const wrapWidth = 120;
1576
- mockWriteFile.mockResolvedValue(undefined);
1577
- // Manually wrap the content to generate the expected file content
1578
- const wrappedLines = [];
1579
- for (let i = 0; i < content.length; i += wrapWidth) {
1580
- wrappedLines.push(content.substring(i, i + wrapWidth));
1581
- }
1582
- const expectedFileContent = wrappedLines.join('\n');
1583
- const result = await truncateAndSaveToFile(content, callId, projectTempDir, THRESHOLD, TRUNCATE_LINES);
1584
- const expectedPath = path.join(projectTempDir, `${callId}.output`);
1585
- expect(result.outputFile).toBe(expectedPath);
1586
- expect(mockWriteFile).toHaveBeenCalledWith(expectedPath, expectedFileContent);
1587
- });
1588
- it('should include helpful instructions in truncated message', async () => {
1589
- const content = 'a'.repeat(2_000_000);
1590
- const callId = 'test-call-id';
1591
- const projectTempDir = '/tmp';
1592
- mockWriteFile.mockResolvedValue(undefined);
1593
- const result = await truncateAndSaveToFile(content, callId, projectTempDir, THRESHOLD, TRUNCATE_LINES);
1594
- expect(result.content).toContain('read_file tool with the absolute file path above');
1595
- expect(result.content).toContain('read_file tool with offset=0, limit=100');
1596
- expect(result.content).toContain('read_file tool with offset=N to skip N lines');
1597
- expect(result.content).toContain('read_file tool with limit=M to read only M lines');
1598
- });
1599
- it('should sanitize callId to prevent path traversal', async () => {
1600
- const content = 'a'.repeat(200_000);
1601
- const callId = '../../../../../etc/passwd';
1602
- const projectTempDir = '/tmp/safe_dir';
1603
- const wrapWidth = 120;
1604
- mockWriteFile.mockResolvedValue(undefined);
1605
- // Manually wrap the content to generate the expected file content
1606
- const wrappedLines = [];
1607
- for (let i = 0; i < content.length; i += wrapWidth) {
1608
- wrappedLines.push(content.substring(i, i + wrapWidth));
1609
- }
1610
- const expectedFileContent = wrappedLines.join('\n');
1611
- await truncateAndSaveToFile(content, callId, projectTempDir, THRESHOLD, TRUNCATE_LINES);
1612
- const expectedPath = path.join(projectTempDir, 'passwd.output');
1613
- expect(mockWriteFile).toHaveBeenCalledWith(expectedPath, expectedFileContent);
1614
- });
1615
- });
1616
1431
  //# sourceMappingURL=coreToolScheduler.test.js.map