@anthropic-field/core 0.1.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 (1012) hide show
  1. package/dist/.last_build +0 -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/monitoring-dashboard-logs.png +0 -0
  6. package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
  7. package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
  8. package/dist/docs/assets/release_patch.png +0 -0
  9. package/dist/docs/assets/theme-ansi-light.png +0 -0
  10. package/dist/docs/assets/theme-ansi.png +0 -0
  11. package/dist/docs/assets/theme-atom-one.png +0 -0
  12. package/dist/docs/assets/theme-ayu-light.png +0 -0
  13. package/dist/docs/assets/theme-ayu.png +0 -0
  14. package/dist/docs/assets/theme-custom.png +0 -0
  15. package/dist/docs/assets/theme-default-light.png +0 -0
  16. package/dist/docs/assets/theme-default.png +0 -0
  17. package/dist/docs/assets/theme-dracula.png +0 -0
  18. package/dist/docs/assets/theme-github-light.png +0 -0
  19. package/dist/docs/assets/theme-github.png +0 -0
  20. package/dist/docs/assets/theme-google-light.png +0 -0
  21. package/dist/docs/assets/theme-xcode-light.png +0 -0
  22. package/dist/docs/changelogs/index.md +743 -0
  23. package/dist/docs/changelogs/latest.md +338 -0
  24. package/dist/docs/changelogs/preview.md +437 -0
  25. package/dist/docs/cli/authentication.md +3 -0
  26. package/dist/docs/cli/checkpointing.md +94 -0
  27. package/dist/docs/cli/cli-reference.md +101 -0
  28. package/dist/docs/cli/commands.md +430 -0
  29. package/dist/docs/cli/creating-skills.md +80 -0
  30. package/dist/docs/cli/custom-commands.md +315 -0
  31. package/dist/docs/cli/enterprise.md +565 -0
  32. package/dist/docs/cli/gemini-ignore.md +71 -0
  33. package/dist/docs/cli/gemini-md.md +108 -0
  34. package/dist/docs/cli/generation-settings.md +210 -0
  35. package/dist/docs/cli/headless.md +388 -0
  36. package/dist/docs/cli/index.md +65 -0
  37. package/dist/docs/cli/keyboard-shortcuts.md +140 -0
  38. package/dist/docs/cli/model-routing.md +42 -0
  39. package/dist/docs/cli/model.md +62 -0
  40. package/dist/docs/cli/rewind.md +51 -0
  41. package/dist/docs/cli/sandbox.md +171 -0
  42. package/dist/docs/cli/session-management.md +158 -0
  43. package/dist/docs/cli/settings.md +139 -0
  44. package/dist/docs/cli/skills.md +112 -0
  45. package/dist/docs/cli/system-prompt.md +125 -0
  46. package/dist/docs/cli/telemetry.md +826 -0
  47. package/dist/docs/cli/themes.md +235 -0
  48. package/dist/docs/cli/token-caching.md +20 -0
  49. package/dist/docs/cli/trusted-folders.md +95 -0
  50. package/dist/docs/cli/tutorials/skills-getting-started.md +97 -0
  51. package/dist/docs/cli/tutorials.md +87 -0
  52. package/dist/docs/cli/uninstall.md +65 -0
  53. package/dist/docs/core/index.md +107 -0
  54. package/dist/docs/core/memport.md +246 -0
  55. package/dist/docs/core/policy-engine.md +305 -0
  56. package/dist/docs/core/remote-agents.md +84 -0
  57. package/dist/docs/core/subagents.md +191 -0
  58. package/dist/docs/core/tools-api.md +131 -0
  59. package/dist/docs/examples/proxy-script.md +83 -0
  60. package/dist/docs/extensions/best-practices.md +139 -0
  61. package/dist/docs/extensions/index.md +45 -0
  62. package/dist/docs/extensions/reference.md +336 -0
  63. package/dist/docs/extensions/releasing.md +183 -0
  64. package/dist/docs/extensions/writing-extensions.md +281 -0
  65. package/dist/docs/faq.md +154 -0
  66. package/dist/docs/get-started/authentication.md +321 -0
  67. package/dist/docs/get-started/configuration-v1.md +888 -0
  68. package/dist/docs/get-started/configuration.md +1585 -0
  69. package/dist/docs/get-started/examples.md +219 -0
  70. package/dist/docs/get-started/gemini-3.md +101 -0
  71. package/dist/docs/get-started/index.md +71 -0
  72. package/dist/docs/get-started/installation.md +141 -0
  73. package/dist/docs/hooks/best-practices.md +677 -0
  74. package/dist/docs/hooks/index.md +164 -0
  75. package/dist/docs/hooks/reference.md +322 -0
  76. package/dist/docs/hooks/writing-hooks.md +450 -0
  77. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  78. package/dist/docs/ide-integration/index.md +202 -0
  79. package/dist/docs/index.md +149 -0
  80. package/dist/docs/integration-tests.md +211 -0
  81. package/dist/docs/issue-and-pr-automation.md +134 -0
  82. package/dist/docs/local-development.md +128 -0
  83. package/dist/docs/mermaid/context.mmd +103 -0
  84. package/dist/docs/mermaid/render-path.mmd +64 -0
  85. package/dist/docs/npm.md +62 -0
  86. package/dist/docs/quota-and-pricing.md +158 -0
  87. package/dist/docs/release-confidence.md +164 -0
  88. package/dist/docs/releases.md +540 -0
  89. package/dist/docs/sidebar.json +152 -0
  90. package/dist/docs/tools/file-system.md +217 -0
  91. package/dist/docs/tools/index.md +98 -0
  92. package/dist/docs/tools/mcp-server.md +1079 -0
  93. package/dist/docs/tools/memory.md +54 -0
  94. package/dist/docs/tools/shell.md +260 -0
  95. package/dist/docs/tools/todos.md +57 -0
  96. package/dist/docs/tools/web-fetch.md +59 -0
  97. package/dist/docs/tools/web-search.md +42 -0
  98. package/dist/docs/tos-privacy.md +96 -0
  99. package/dist/docs/troubleshooting.md +173 -0
  100. package/dist/index.d.ts +24 -0
  101. package/dist/index.js +24 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/src/__mocks__/fs/promises.d.ts +11 -0
  104. package/dist/src/__mocks__/fs/promises.js +17 -0
  105. package/dist/src/__mocks__/fs/promises.js.map +1 -0
  106. package/dist/src/agents/a2a-client-manager.d.ts +77 -0
  107. package/dist/src/agents/a2a-client-manager.js +173 -0
  108. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  109. package/dist/src/agents/a2aUtils.d.ts +29 -0
  110. package/dist/src/agents/a2aUtils.js +113 -0
  111. package/dist/src/agents/a2aUtils.js.map +1 -0
  112. package/dist/src/agents/acknowledgedAgents.d.ts +18 -0
  113. package/dist/src/agents/acknowledgedAgents.js +58 -0
  114. package/dist/src/agents/acknowledgedAgents.js.map +1 -0
  115. package/dist/src/agents/agent-scheduler.d.ts +33 -0
  116. package/dist/src/agents/agent-scheduler.js +29 -0
  117. package/dist/src/agents/agent-scheduler.js.map +1 -0
  118. package/dist/src/agents/agentLoader.d.ts +73 -0
  119. package/dist/src/agents/agentLoader.js +268 -0
  120. package/dist/src/agents/agentLoader.js.map +1 -0
  121. package/dist/src/agents/cli-help-agent.d.ts +24 -0
  122. package/dist/src/agents/cli-help-agent.js +80 -0
  123. package/dist/src/agents/cli-help-agent.js.map +1 -0
  124. package/dist/src/agents/codebase-investigator.d.ts +47 -0
  125. package/dist/src/agents/codebase-investigator.js +159 -0
  126. package/dist/src/agents/codebase-investigator.js.map +1 -0
  127. package/dist/src/agents/generalist-agent.d.ts +21 -0
  128. package/dist/src/agents/generalist-agent.js +60 -0
  129. package/dist/src/agents/generalist-agent.js.map +1 -0
  130. package/dist/src/agents/local-executor.d.ts +110 -0
  131. package/dist/src/agents/local-executor.js +879 -0
  132. package/dist/src/agents/local-executor.js.map +1 -0
  133. package/dist/src/agents/local-invocation.d.ts +45 -0
  134. package/dist/src/agents/local-invocation.js +101 -0
  135. package/dist/src/agents/local-invocation.js.map +1 -0
  136. package/dist/src/agents/registry.d.ts +85 -0
  137. package/dist/src/agents/registry.js +374 -0
  138. package/dist/src/agents/registry.js.map +1 -0
  139. package/dist/src/agents/remote-invocation.d.ts +35 -0
  140. package/dist/src/agents/remote-invocation.js +127 -0
  141. package/dist/src/agents/remote-invocation.js.map +1 -0
  142. package/dist/src/agents/subagent-tool-wrapper.d.ts +38 -0
  143. package/dist/src/agents/subagent-tool-wrapper.js +51 -0
  144. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
  145. package/dist/src/agents/subagent-tool.d.ts +15 -0
  146. package/dist/src/agents/subagent-tool.js +61 -0
  147. package/dist/src/agents/subagent-tool.js.map +1 -0
  148. package/dist/src/agents/types.d.ts +154 -0
  149. package/dist/src/agents/types.js +23 -0
  150. package/dist/src/agents/types.js.map +1 -0
  151. package/dist/src/agents/utils.d.ts +15 -0
  152. package/dist/src/agents/utils.js +29 -0
  153. package/dist/src/agents/utils.js.map +1 -0
  154. package/dist/src/availability/errorClassification.d.ts +7 -0
  155. package/dist/src/availability/errorClassification.js +20 -0
  156. package/dist/src/availability/errorClassification.js.map +1 -0
  157. package/dist/src/availability/modelAvailabilityService.d.ts +36 -0
  158. package/dist/src/availability/modelAvailabilityService.js +87 -0
  159. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  160. package/dist/src/availability/modelPolicy.d.ts +49 -0
  161. package/dist/src/availability/modelPolicy.js +7 -0
  162. package/dist/src/availability/modelPolicy.js.map +1 -0
  163. package/dist/src/availability/policyCatalog.d.ts +24 -0
  164. package/dist/src/availability/policyCatalog.js +106 -0
  165. package/dist/src/availability/policyCatalog.js.map +1 -0
  166. package/dist/src/availability/policyHelpers.d.ts +52 -0
  167. package/dist/src/availability/policyHelpers.js +143 -0
  168. package/dist/src/availability/policyHelpers.js.map +1 -0
  169. package/dist/src/availability/testUtils.d.ts +10 -0
  170. package/dist/src/availability/testUtils.js +22 -0
  171. package/dist/src/availability/testUtils.js.map +1 -0
  172. package/dist/src/code_assist/admin/admin_controls.d.ts +32 -0
  173. package/dist/src/code_assist/admin/admin_controls.js +120 -0
  174. package/dist/src/code_assist/admin/admin_controls.js.map +1 -0
  175. package/dist/src/code_assist/codeAssist.d.ts +12 -0
  176. package/dist/src/code_assist/codeAssist.js +31 -0
  177. package/dist/src/code_assist/codeAssist.js.map +1 -0
  178. package/dist/src/code_assist/converter.d.ts +75 -0
  179. package/dist/src/code_assist/converter.js +161 -0
  180. package/dist/src/code_assist/converter.js.map +1 -0
  181. package/dist/src/code_assist/experiments/client_metadata.d.ts +12 -0
  182. package/dist/src/code_assist/experiments/client_metadata.js +51 -0
  183. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -0
  184. package/dist/src/code_assist/experiments/experiments.d.ts +17 -0
  185. package/dist/src/code_assist/experiments/experiments.js +57 -0
  186. package/dist/src/code_assist/experiments/experiments.js.map +1 -0
  187. package/dist/src/code_assist/experiments/flagNames.d.ts +16 -0
  188. package/dist/src/code_assist/experiments/flagNames.js +16 -0
  189. package/dist/src/code_assist/experiments/flagNames.js.map +1 -0
  190. package/dist/src/code_assist/experiments/types.d.ts +35 -0
  191. package/dist/src/code_assist/experiments/types.js +7 -0
  192. package/dist/src/code_assist/experiments/types.js.map +1 -0
  193. package/dist/src/code_assist/oauth-credential-storage.d.ts +25 -0
  194. package/dist/src/code_assist/oauth-credential-storage.js +109 -0
  195. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
  196. package/dist/src/code_assist/oauth2.d.ts +25 -0
  197. package/dist/src/code_assist/oauth2.js +579 -0
  198. package/dist/src/code_assist/oauth2.js.map +1 -0
  199. package/dist/src/code_assist/server.d.ts +50 -0
  200. package/dist/src/code_assist/server.js +228 -0
  201. package/dist/src/code_assist/server.js.map +1 -0
  202. package/dist/src/code_assist/setup.d.ts +46 -0
  203. package/dist/src/code_assist/setup.js +179 -0
  204. package/dist/src/code_assist/setup.js.map +1 -0
  205. package/dist/src/code_assist/telemetry.d.ts +14 -0
  206. package/dist/src/code_assist/telemetry.js +157 -0
  207. package/dist/src/code_assist/telemetry.js.map +1 -0
  208. package/dist/src/code_assist/types.d.ts +306 -0
  209. package/dist/src/code_assist/types.js +94 -0
  210. package/dist/src/code_assist/types.js.map +1 -0
  211. package/dist/src/cognitive/gemini-adapter.d.ts +29 -0
  212. package/dist/src/cognitive/gemini-adapter.js +109 -0
  213. package/dist/src/cognitive/gemini-adapter.js.map +1 -0
  214. package/dist/src/cognitive/index.d.ts +22 -0
  215. package/dist/src/cognitive/index.js +50 -0
  216. package/dist/src/cognitive/index.js.map +1 -0
  217. package/dist/src/cognitive/integration.d.ts +57 -0
  218. package/dist/src/cognitive/integration.js +103 -0
  219. package/dist/src/cognitive/integration.js.map +1 -0
  220. package/dist/src/cognitive/loader/index.d.ts +8 -0
  221. package/dist/src/cognitive/loader/index.js +9 -0
  222. package/dist/src/cognitive/loader/index.js.map +1 -0
  223. package/dist/src/cognitive/loader/module-loader.d.ts +67 -0
  224. package/dist/src/cognitive/loader/module-loader.js +369 -0
  225. package/dist/src/cognitive/loader/module-loader.js.map +1 -0
  226. package/dist/src/cognitive/runtime/envelope.d.ts +31 -0
  227. package/dist/src/cognitive/runtime/envelope.js +167 -0
  228. package/dist/src/cognitive/runtime/envelope.js.map +1 -0
  229. package/dist/src/cognitive/runtime/executor.d.ts +65 -0
  230. package/dist/src/cognitive/runtime/executor.js +245 -0
  231. package/dist/src/cognitive/runtime/executor.js.map +1 -0
  232. package/dist/src/cognitive/runtime/index.d.ts +12 -0
  233. package/dist/src/cognitive/runtime/index.js +18 -0
  234. package/dist/src/cognitive/runtime/index.js.map +1 -0
  235. package/dist/src/cognitive/runtime/prompt-builder.d.ts +34 -0
  236. package/dist/src/cognitive/runtime/prompt-builder.js +216 -0
  237. package/dist/src/cognitive/runtime/prompt-builder.js.map +1 -0
  238. package/dist/src/cognitive/runtime/repair-pass.d.ts +43 -0
  239. package/dist/src/cognitive/runtime/repair-pass.js +170 -0
  240. package/dist/src/cognitive/runtime/repair-pass.js.map +1 -0
  241. package/dist/src/cognitive/runtime/risk-aggregator.d.ts +39 -0
  242. package/dist/src/cognitive/runtime/risk-aggregator.js +90 -0
  243. package/dist/src/cognitive/runtime/risk-aggregator.js.map +1 -0
  244. package/dist/src/cognitive/tool/cognitive-registry.d.ts +99 -0
  245. package/dist/src/cognitive/tool/cognitive-registry.js +192 -0
  246. package/dist/src/cognitive/tool/cognitive-registry.js.map +1 -0
  247. package/dist/src/cognitive/tool/cognitive-tool.d.ts +56 -0
  248. package/dist/src/cognitive/tool/cognitive-tool.js +217 -0
  249. package/dist/src/cognitive/tool/cognitive-tool.js.map +1 -0
  250. package/dist/src/cognitive/tool/index.d.ts +9 -0
  251. package/dist/src/cognitive/tool/index.js +10 -0
  252. package/dist/src/cognitive/tool/index.js.map +1 -0
  253. package/dist/src/cognitive/types.d.ts +234 -0
  254. package/dist/src/cognitive/types.js +10 -0
  255. package/dist/src/cognitive/types.js.map +1 -0
  256. package/dist/src/cognitive/validator/envelope-validator.d.ts +45 -0
  257. package/dist/src/cognitive/validator/envelope-validator.js +214 -0
  258. package/dist/src/cognitive/validator/envelope-validator.js.map +1 -0
  259. package/dist/src/cognitive/validator/index.d.ts +9 -0
  260. package/dist/src/cognitive/validator/index.js +10 -0
  261. package/dist/src/cognitive/validator/index.js.map +1 -0
  262. package/dist/src/cognitive/validator/schema-validator.d.ts +46 -0
  263. package/dist/src/cognitive/validator/schema-validator.js +202 -0
  264. package/dist/src/cognitive/validator/schema-validator.js.map +1 -0
  265. package/dist/src/commands/cognitive.d.ts +39 -0
  266. package/dist/src/commands/cognitive.js +335 -0
  267. package/dist/src/commands/cognitive.js.map +1 -0
  268. package/dist/src/commands/extensions.d.ts +7 -0
  269. package/dist/src/commands/extensions.js +9 -0
  270. package/dist/src/commands/extensions.js.map +1 -0
  271. package/dist/src/commands/init.d.ts +7 -0
  272. package/dist/src/commands/init.js +53 -0
  273. package/dist/src/commands/init.js.map +1 -0
  274. package/dist/src/commands/memory.d.ts +11 -0
  275. package/dist/src/commands/memory.js +80 -0
  276. package/dist/src/commands/memory.js.map +1 -0
  277. package/dist/src/commands/restore.d.ts +9 -0
  278. package/dist/src/commands/restore.js +46 -0
  279. package/dist/src/commands/restore.js.map +1 -0
  280. package/dist/src/commands/types.d.ts +41 -0
  281. package/dist/src/commands/types.js +7 -0
  282. package/dist/src/commands/types.js.map +1 -0
  283. package/dist/src/config/config.d.ts +766 -0
  284. package/dist/src/config/config.js +1625 -0
  285. package/dist/src/config/config.js.map +1 -0
  286. package/dist/src/config/constants.d.ts +15 -0
  287. package/dist/src/config/constants.js +24 -0
  288. package/dist/src/config/constants.js.map +1 -0
  289. package/dist/src/config/defaultModelConfigs.d.ts +7 -0
  290. package/dist/src/config/defaultModelConfigs.js +231 -0
  291. package/dist/src/config/defaultModelConfigs.js.map +1 -0
  292. package/dist/src/config/models.d.ts +67 -0
  293. package/dist/src/config/models.js +144 -0
  294. package/dist/src/config/models.js.map +1 -0
  295. package/dist/src/config/storage.d.ts +44 -0
  296. package/dist/src/config/storage.js +139 -0
  297. package/dist/src/config/storage.js.map +1 -0
  298. package/dist/src/confirmation-bus/index.d.ts +7 -0
  299. package/dist/src/confirmation-bus/index.js +8 -0
  300. package/dist/src/confirmation-bus/index.js.map +1 -0
  301. package/dist/src/confirmation-bus/message-bus.d.ts +24 -0
  302. package/dist/src/confirmation-bus/message-bus.js +120 -0
  303. package/dist/src/confirmation-bus/message-bus.js.map +1 -0
  304. package/dist/src/confirmation-bus/types.d.ts +147 -0
  305. package/dist/src/confirmation-bus/types.js +25 -0
  306. package/dist/src/confirmation-bus/types.js.map +1 -0
  307. package/dist/src/core/apiKeyCredentialStorage.d.ts +17 -0
  308. package/dist/src/core/apiKeyCredentialStorage.js +64 -0
  309. package/dist/src/core/apiKeyCredentialStorage.js.map +1 -0
  310. package/dist/src/core/baseLlmClient.d.ts +74 -0
  311. package/dist/src/core/baseLlmClient.js +167 -0
  312. package/dist/src/core/baseLlmClient.js.map +1 -0
  313. package/dist/src/core/client.d.ts +59 -0
  314. package/dist/src/core/client.js +716 -0
  315. package/dist/src/core/client.js.map +1 -0
  316. package/dist/src/core/contentGenerator.d.ts +34 -0
  317. package/dist/src/core/contentGenerator.js +107 -0
  318. package/dist/src/core/contentGenerator.js.map +1 -0
  319. package/dist/src/core/coreToolHookTriggers.d.ts +23 -0
  320. package/dist/src/core/coreToolHookTriggers.js +195 -0
  321. package/dist/src/core/coreToolHookTriggers.js.map +1 -0
  322. package/dist/src/core/coreToolScheduler.d.ts +50 -0
  323. package/dist/src/core/coreToolScheduler.js +703 -0
  324. package/dist/src/core/coreToolScheduler.js.map +1 -0
  325. package/dist/src/core/fakeContentGenerator.d.ts +34 -0
  326. package/dist/src/core/fakeContentGenerator.js +59 -0
  327. package/dist/src/core/fakeContentGenerator.js.map +1 -0
  328. package/dist/src/core/geminiChat.d.ts +160 -0
  329. package/dist/src/core/geminiChat.js +744 -0
  330. package/dist/src/core/geminiChat.js.map +1 -0
  331. package/dist/src/core/geminiRequest.d.ts +13 -0
  332. package/dist/src/core/geminiRequest.js +11 -0
  333. package/dist/src/core/geminiRequest.js.map +1 -0
  334. package/dist/src/core/logger.d.ts +65 -0
  335. package/dist/src/core/logger.js +368 -0
  336. package/dist/src/core/logger.js.map +1 -0
  337. package/dist/src/core/loggingContentGenerator.d.ts +29 -0
  338. package/dist/src/core/loggingContentGenerator.js +202 -0
  339. package/dist/src/core/loggingContentGenerator.js.map +1 -0
  340. package/dist/src/core/prompts.d.ts +19 -0
  341. package/dist/src/core/prompts.js +27 -0
  342. package/dist/src/core/prompts.js.map +1 -0
  343. package/dist/src/core/recordingContentGenerator.d.ts +19 -0
  344. package/dist/src/core/recordingContentGenerator.js +82 -0
  345. package/dist/src/core/recordingContentGenerator.js.map +1 -0
  346. package/dist/src/core/tokenLimits.d.ts +10 -0
  347. package/dist/src/core/tokenLimits.js +22 -0
  348. package/dist/src/core/tokenLimits.js.map +1 -0
  349. package/dist/src/core/turn.d.ts +167 -0
  350. package/dist/src/core/turn.js +209 -0
  351. package/dist/src/core/turn.js.map +1 -0
  352. package/dist/src/fallback/handler.d.ts +7 -0
  353. package/dist/src/fallback/handler.js +110 -0
  354. package/dist/src/fallback/handler.js.map +1 -0
  355. package/dist/src/fallback/types.d.ts +31 -0
  356. package/dist/src/fallback/types.js +7 -0
  357. package/dist/src/fallback/types.js.map +1 -0
  358. package/dist/src/generated/git-commit.d.ts +7 -0
  359. package/dist/src/generated/git-commit.js +10 -0
  360. package/dist/src/generated/git-commit.js.map +1 -0
  361. package/dist/src/hooks/hookAggregator.d.ts +68 -0
  362. package/dist/src/hooks/hookAggregator.js +279 -0
  363. package/dist/src/hooks/hookAggregator.js.map +1 -0
  364. package/dist/src/hooks/hookEventHandler.d.ts +107 -0
  365. package/dist/src/hooks/hookEventHandler.js +325 -0
  366. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  367. package/dist/src/hooks/hookPlanner.d.ts +42 -0
  368. package/dist/src/hooks/hookPlanner.js +103 -0
  369. package/dist/src/hooks/hookPlanner.js.map +1 -0
  370. package/dist/src/hooks/hookRegistry.d.ts +75 -0
  371. package/dist/src/hooks/hookRegistry.js +215 -0
  372. package/dist/src/hooks/hookRegistry.js.map +1 -0
  373. package/dist/src/hooks/hookRunner.d.ts +44 -0
  374. package/dist/src/hooks/hookRunner.js +329 -0
  375. package/dist/src/hooks/hookRunner.js.map +1 -0
  376. package/dist/src/hooks/hookSystem.d.ts +99 -0
  377. package/dist/src/hooks/hookSystem.js +262 -0
  378. package/dist/src/hooks/hookSystem.js.map +1 -0
  379. package/dist/src/hooks/hookTranslator.d.ts +113 -0
  380. package/dist/src/hooks/hookTranslator.js +233 -0
  381. package/dist/src/hooks/hookTranslator.js.map +1 -0
  382. package/dist/src/hooks/index.d.ts +16 -0
  383. package/dist/src/hooks/index.js +16 -0
  384. package/dist/src/hooks/index.js.map +1 -0
  385. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  386. package/dist/src/hooks/trustedHooks.js +90 -0
  387. package/dist/src/hooks/trustedHooks.js.map +1 -0
  388. package/dist/src/hooks/types.d.ts +442 -0
  389. package/dist/src/hooks/types.js +303 -0
  390. package/dist/src/hooks/types.js.map +1 -0
  391. package/dist/src/ide/constants.d.ts +9 -0
  392. package/dist/src/ide/constants.js +10 -0
  393. package/dist/src/ide/constants.js.map +1 -0
  394. package/dist/src/ide/detect-ide.d.ts +109 -0
  395. package/dist/src/ide/detect-ide.js +125 -0
  396. package/dist/src/ide/detect-ide.js.map +1 -0
  397. package/dist/src/ide/ide-client.d.ts +113 -0
  398. package/dist/src/ide/ide-client.js +669 -0
  399. package/dist/src/ide/ide-client.js.map +1 -0
  400. package/dist/src/ide/ide-installer.d.ts +14 -0
  401. package/dist/src/ide/ide-installer.js +227 -0
  402. package/dist/src/ide/ide-installer.js.map +1 -0
  403. package/dist/src/ide/ideContext.d.ts +44 -0
  404. package/dist/src/ide/ideContext.js +101 -0
  405. package/dist/src/ide/ideContext.js.map +1 -0
  406. package/dist/src/ide/process-utils.d.ts +21 -0
  407. package/dist/src/ide/process-utils.js +181 -0
  408. package/dist/src/ide/process-utils.js.map +1 -0
  409. package/dist/src/ide/types.d.ts +486 -0
  410. package/dist/src/ide/types.js +138 -0
  411. package/dist/src/ide/types.js.map +1 -0
  412. package/dist/src/index.d.ts +145 -0
  413. package/dist/src/index.js +161 -0
  414. package/dist/src/index.js.map +1 -0
  415. package/dist/src/mcp/auth-provider.d.ts +16 -0
  416. package/dist/src/mcp/auth-provider.js +7 -0
  417. package/dist/src/mcp/auth-provider.js.map +1 -0
  418. package/dist/src/mcp/google-auth-provider.d.ts +33 -0
  419. package/dist/src/mcp/google-auth-provider.js +118 -0
  420. package/dist/src/mcp/google-auth-provider.js.map +1 -0
  421. package/dist/src/mcp/oauth-provider.d.ts +160 -0
  422. package/dist/src/mcp/oauth-provider.js +729 -0
  423. package/dist/src/mcp/oauth-provider.js.map +1 -0
  424. package/dist/src/mcp/oauth-token-storage.d.ts +65 -0
  425. package/dist/src/mcp/oauth-token-storage.js +181 -0
  426. package/dist/src/mcp/oauth-token-storage.js.map +1 -0
  427. package/dist/src/mcp/oauth-utils.d.ts +142 -0
  428. package/dist/src/mcp/oauth-utils.js +289 -0
  429. package/dist/src/mcp/oauth-utils.js.map +1 -0
  430. package/dist/src/mcp/sa-impersonation-provider.d.ts +27 -0
  431. package/dist/src/mcp/sa-impersonation-provider.js +113 -0
  432. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  433. package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  434. package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
  435. package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  436. package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
  437. package/dist/src/mcp/token-storage/file-token-storage.js +145 -0
  438. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
  439. package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
  440. package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
  441. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
  442. package/dist/src/mcp/token-storage/index.d.ts +11 -0
  443. package/dist/src/mcp/token-storage/index.js +12 -0
  444. package/dist/src/mcp/token-storage/index.js.map +1 -0
  445. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +35 -0
  446. package/dist/src/mcp/token-storage/keychain-token-storage.js +246 -0
  447. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
  448. package/dist/src/mcp/token-storage/types.d.ts +44 -0
  449. package/dist/src/mcp/token-storage/types.js +11 -0
  450. package/dist/src/mcp/token-storage/types.js.map +1 -0
  451. package/dist/src/mocks/msw.d.ts +6 -0
  452. package/dist/src/mocks/msw.js +8 -0
  453. package/dist/src/mocks/msw.js.map +1 -0
  454. package/dist/src/output/json-formatter.d.ts +11 -0
  455. package/dist/src/output/json-formatter.js +33 -0
  456. package/dist/src/output/json-formatter.js.map +1 -0
  457. package/dist/src/output/stream-json-formatter.d.ts +32 -0
  458. package/dist/src/output/stream-json-formatter.js +58 -0
  459. package/dist/src/output/stream-json-formatter.js.map +1 -0
  460. package/dist/src/output/types.d.ts +85 -0
  461. package/dist/src/output/types.js +22 -0
  462. package/dist/src/output/types.js.map +1 -0
  463. package/dist/src/policy/config.d.ts +31 -0
  464. package/dist/src/policy/config.js +355 -0
  465. package/dist/src/policy/config.js.map +1 -0
  466. package/dist/src/policy/index.d.ts +9 -0
  467. package/dist/src/policy/index.js +10 -0
  468. package/dist/src/policy/index.js.map +1 -0
  469. package/dist/src/policy/policies/discovered.toml +8 -0
  470. package/dist/src/policy/policies/plan.toml +79 -0
  471. package/dist/src/policy/policies/read-only.toml +51 -0
  472. package/dist/src/policy/policies/write.toml +78 -0
  473. package/dist/src/policy/policies/yolo.toml +32 -0
  474. package/dist/src/policy/policy-engine.d.ts +65 -0
  475. package/dist/src/policy/policy-engine.js +357 -0
  476. package/dist/src/policy/policy-engine.js.map +1 -0
  477. package/dist/src/policy/stable-stringify.d.ts +58 -0
  478. package/dist/src/policy/stable-stringify.js +122 -0
  479. package/dist/src/policy/stable-stringify.js.map +1 -0
  480. package/dist/src/policy/toml-loader.d.ts +45 -0
  481. package/dist/src/policy/toml-loader.js +366 -0
  482. package/dist/src/policy/toml-loader.js.map +1 -0
  483. package/dist/src/policy/types.d.ts +220 -0
  484. package/dist/src/policy/types.js +44 -0
  485. package/dist/src/policy/types.js.map +1 -0
  486. package/dist/src/policy/utils.d.ts +21 -0
  487. package/dist/src/policy/utils.js +45 -0
  488. package/dist/src/policy/utils.js.map +1 -0
  489. package/dist/src/prompts/mcp-prompts.d.ts +8 -0
  490. package/dist/src/prompts/mcp-prompts.js +13 -0
  491. package/dist/src/prompts/mcp-prompts.js.map +1 -0
  492. package/dist/src/prompts/prompt-registry.d.ts +34 -0
  493. package/dist/src/prompts/prompt-registry.js +64 -0
  494. package/dist/src/prompts/prompt-registry.js.map +1 -0
  495. package/dist/src/prompts/promptProvider.d.ts +18 -0
  496. package/dist/src/prompts/promptProvider.js +129 -0
  497. package/dist/src/prompts/promptProvider.js.map +1 -0
  498. package/dist/src/prompts/snippets.d.ts +76 -0
  499. package/dist/src/prompts/snippets.js +455 -0
  500. package/dist/src/prompts/snippets.js.map +1 -0
  501. package/dist/src/prompts/utils.d.ts +23 -0
  502. package/dist/src/prompts/utils.js +72 -0
  503. package/dist/src/prompts/utils.js.map +1 -0
  504. package/dist/src/resources/resource-registry.d.ts +30 -0
  505. package/dist/src/resources/resource-registry.js +57 -0
  506. package/dist/src/resources/resource-registry.js.map +1 -0
  507. package/dist/src/routing/modelRouterService.d.ts +23 -0
  508. package/dist/src/routing/modelRouterService.js +80 -0
  509. package/dist/src/routing/modelRouterService.js.map +1 -0
  510. package/dist/src/routing/routingStrategy.d.ts +64 -0
  511. package/dist/src/routing/routingStrategy.js +7 -0
  512. package/dist/src/routing/routingStrategy.js.map +1 -0
  513. package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
  514. package/dist/src/routing/strategies/classifierStrategy.js +152 -0
  515. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
  516. package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
  517. package/dist/src/routing/strategies/compositeStrategy.js +70 -0
  518. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
  519. package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
  520. package/dist/src/routing/strategies/defaultStrategy.js +21 -0
  521. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
  522. package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
  523. package/dist/src/routing/strategies/fallbackStrategy.js +33 -0
  524. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
  525. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +13 -0
  526. package/dist/src/routing/strategies/numericalClassifierStrategy.js +178 -0
  527. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -0
  528. package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
  529. package/dist/src/routing/strategies/overrideStrategy.js +29 -0
  530. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
  531. package/dist/src/safety/built-in.d.ts +21 -0
  532. package/dist/src/safety/built-in.js +106 -0
  533. package/dist/src/safety/built-in.js.map +1 -0
  534. package/dist/src/safety/checker-runner.d.ts +48 -0
  535. package/dist/src/safety/checker-runner.js +219 -0
  536. package/dist/src/safety/checker-runner.js.map +1 -0
  537. package/dist/src/safety/context-builder.d.ts +23 -0
  538. package/dist/src/safety/context-builder.js +47 -0
  539. package/dist/src/safety/context-builder.js.map +1 -0
  540. package/dist/src/safety/protocol.d.ts +88 -0
  541. package/dist/src/safety/protocol.js +15 -0
  542. package/dist/src/safety/protocol.js.map +1 -0
  543. package/dist/src/safety/registry.d.ts +26 -0
  544. package/dist/src/safety/registry.js +65 -0
  545. package/dist/src/safety/registry.js.map +1 -0
  546. package/dist/src/scheduler/confirmation.d.ts +49 -0
  547. package/dist/src/scheduler/confirmation.js +183 -0
  548. package/dist/src/scheduler/confirmation.js.map +1 -0
  549. package/dist/src/scheduler/policy.d.ts +25 -0
  550. package/dist/src/scheduler/policy.js +108 -0
  551. package/dist/src/scheduler/policy.js.map +1 -0
  552. package/dist/src/scheduler/scheduler.d.ts +61 -0
  553. package/dist/src/scheduler/scheduler.js +356 -0
  554. package/dist/src/scheduler/scheduler.js.map +1 -0
  555. package/dist/src/scheduler/state-manager.d.ts +73 -0
  556. package/dist/src/scheduler/state-manager.js +356 -0
  557. package/dist/src/scheduler/state-manager.js.map +1 -0
  558. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  559. package/dist/src/scheduler/tool-executor.js +201 -0
  560. package/dist/src/scheduler/tool-executor.js.map +1 -0
  561. package/dist/src/scheduler/tool-modifier.d.ts +23 -0
  562. package/dist/src/scheduler/tool-modifier.js +50 -0
  563. package/dist/src/scheduler/tool-modifier.js.map +1 -0
  564. package/dist/src/scheduler/types.d.ts +118 -0
  565. package/dist/src/scheduler/types.js +7 -0
  566. package/dist/src/scheduler/types.js.map +1 -0
  567. package/dist/src/services/chatCompressionService.d.ts +41 -0
  568. package/dist/src/services/chatCompressionService.js +339 -0
  569. package/dist/src/services/chatCompressionService.js.map +1 -0
  570. package/dist/src/services/chatRecordingService.d.ts +174 -0
  571. package/dist/src/services/chatRecordingService.js +427 -0
  572. package/dist/src/services/chatRecordingService.js.map +1 -0
  573. package/dist/src/services/contextManager.d.ts +29 -0
  574. package/dist/src/services/contextManager.js +71 -0
  575. package/dist/src/services/contextManager.js.map +1 -0
  576. package/dist/src/services/environmentSanitization.d.ts +15 -0
  577. package/dist/src/services/environmentSanitization.js +145 -0
  578. package/dist/src/services/environmentSanitization.js.map +1 -0
  579. package/dist/src/services/fileDiscoveryService.d.ts +45 -0
  580. package/dist/src/services/fileDiscoveryService.js +141 -0
  581. package/dist/src/services/fileDiscoveryService.js.map +1 -0
  582. package/dist/src/services/fileSystemService.d.ts +31 -0
  583. package/dist/src/services/fileSystemService.js +18 -0
  584. package/dist/src/services/fileSystemService.js.map +1 -0
  585. package/dist/src/services/gitService.d.ts +24 -0
  586. package/dist/src/services/gitService.js +132 -0
  587. package/dist/src/services/gitService.js.map +1 -0
  588. package/dist/src/services/loopDetectionService.d.ts +106 -0
  589. package/dist/src/services/loopDetectionService.js +433 -0
  590. package/dist/src/services/loopDetectionService.js.map +1 -0
  591. package/dist/src/services/modelConfigService.d.ts +86 -0
  592. package/dist/src/services/modelConfigService.js +215 -0
  593. package/dist/src/services/modelConfigService.js.map +1 -0
  594. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  595. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  596. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  597. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  598. package/dist/src/services/sessionSummaryService.js +131 -0
  599. package/dist/src/services/sessionSummaryService.js.map +1 -0
  600. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  601. package/dist/src/services/sessionSummaryUtils.js +129 -0
  602. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  603. package/dist/src/services/shellExecutionService.d.ts +145 -0
  604. package/dist/src/services/shellExecutionService.js +871 -0
  605. package/dist/src/services/shellExecutionService.js.map +1 -0
  606. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  607. package/dist/src/services/test-data/resolved-aliases.golden.json +238 -0
  608. package/dist/src/skills/builtin/skill-creator/SKILL.md +382 -0
  609. package/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +235 -0
  610. package/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +102 -0
  611. package/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +127 -0
  612. package/dist/src/skills/skillLoader.d.ts +31 -0
  613. package/dist/src/skills/skillLoader.js +133 -0
  614. package/dist/src/skills/skillLoader.js.map +1 -0
  615. package/dist/src/skills/skillManager.d.ts +69 -0
  616. package/dist/src/skills/skillManager.js +138 -0
  617. package/dist/src/skills/skillManager.js.map +1 -0
  618. package/dist/src/telemetry/activity-detector.d.ts +41 -0
  619. package/dist/src/telemetry/activity-detector.js +61 -0
  620. package/dist/src/telemetry/activity-detector.js.map +1 -0
  621. package/dist/src/telemetry/activity-monitor.d.ts +116 -0
  622. package/dist/src/telemetry/activity-monitor.js +209 -0
  623. package/dist/src/telemetry/activity-monitor.js.map +1 -0
  624. package/dist/src/telemetry/activity-types.d.ts +19 -0
  625. package/dist/src/telemetry/activity-types.js +21 -0
  626. package/dist/src/telemetry/activity-types.js.map +1 -0
  627. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +172 -0
  628. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +1316 -0
  629. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
  630. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +150 -0
  631. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +377 -0
  632. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
  633. package/dist/src/telemetry/config.d.ts +31 -0
  634. package/dist/src/telemetry/config.js +78 -0
  635. package/dist/src/telemetry/config.js.map +1 -0
  636. package/dist/src/telemetry/constants.d.ts +6 -0
  637. package/dist/src/telemetry/constants.js +7 -0
  638. package/dist/src/telemetry/constants.js.map +1 -0
  639. package/dist/src/telemetry/file-exporters.d.ts +29 -0
  640. package/dist/src/telemetry/file-exporters.js +62 -0
  641. package/dist/src/telemetry/file-exporters.js.map +1 -0
  642. package/dist/src/telemetry/gcp-exporters.d.ts +35 -0
  643. package/dist/src/telemetry/gcp-exporters.js +120 -0
  644. package/dist/src/telemetry/gcp-exporters.js.map +1 -0
  645. package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
  646. package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
  647. package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
  648. package/dist/src/telemetry/index.d.ts +33 -0
  649. package/dist/src/telemetry/index.js +44 -0
  650. package/dist/src/telemetry/index.js.map +1 -0
  651. package/dist/src/telemetry/integration.test.circular.d.ts +6 -0
  652. package/dist/src/telemetry/integration.test.circular.js +54 -0
  653. package/dist/src/telemetry/integration.test.circular.js.map +1 -0
  654. package/dist/src/telemetry/loggers.d.ts +46 -0
  655. package/dist/src/telemetry/loggers.js +517 -0
  656. package/dist/src/telemetry/loggers.js.map +1 -0
  657. package/dist/src/telemetry/loggers.test.circular.d.ts +6 -0
  658. package/dist/src/telemetry/loggers.test.circular.js +107 -0
  659. package/dist/src/telemetry/loggers.test.circular.js.map +1 -0
  660. package/dist/src/telemetry/memory-monitor.d.ts +149 -0
  661. package/dist/src/telemetry/memory-monitor.js +335 -0
  662. package/dist/src/telemetry/memory-monitor.js.map +1 -0
  663. package/dist/src/telemetry/metrics.d.ts +533 -0
  664. package/dist/src/telemetry/metrics.js +852 -0
  665. package/dist/src/telemetry/metrics.js.map +1 -0
  666. package/dist/src/telemetry/rate-limiter.d.ts +48 -0
  667. package/dist/src/telemetry/rate-limiter.js +100 -0
  668. package/dist/src/telemetry/rate-limiter.js.map +1 -0
  669. package/dist/src/telemetry/sanitize.d.ts +25 -0
  670. package/dist/src/telemetry/sanitize.js +48 -0
  671. package/dist/src/telemetry/sanitize.js.map +1 -0
  672. package/dist/src/telemetry/sdk.d.ts +16 -0
  673. package/dist/src/telemetry/sdk.js +307 -0
  674. package/dist/src/telemetry/sdk.js.map +1 -0
  675. package/dist/src/telemetry/semantic.d.ts +82 -0
  676. package/dist/src/telemetry/semantic.js +357 -0
  677. package/dist/src/telemetry/semantic.js.map +1 -0
  678. package/dist/src/telemetry/startupProfiler.d.ts +51 -0
  679. package/dist/src/telemetry/startupProfiler.js +170 -0
  680. package/dist/src/telemetry/startupProfiler.js.map +1 -0
  681. package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
  682. package/dist/src/telemetry/telemetry-utils.js +14 -0
  683. package/dist/src/telemetry/telemetry-utils.js.map +1 -0
  684. package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
  685. package/dist/src/telemetry/telemetryAttributes.js +19 -0
  686. package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
  687. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  688. package/dist/src/telemetry/tool-call-decision.js +29 -0
  689. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  690. package/dist/src/telemetry/trace.d.ts +46 -0
  691. package/dist/src/telemetry/trace.js +121 -0
  692. package/dist/src/telemetry/trace.js.map +1 -0
  693. package/dist/src/telemetry/types.d.ts +566 -0
  694. package/dist/src/telemetry/types.js +1495 -0
  695. package/dist/src/telemetry/types.js.map +1 -0
  696. package/dist/src/telemetry/uiTelemetry.d.ts +76 -0
  697. package/dist/src/telemetry/uiTelemetry.js +154 -0
  698. package/dist/src/telemetry/uiTelemetry.js.map +1 -0
  699. package/dist/src/test-utils/config.d.ts +17 -0
  700. package/dist/src/test-utils/config.js +32 -0
  701. package/dist/src/test-utils/config.js.map +1 -0
  702. package/dist/src/test-utils/index.d.ts +6 -0
  703. package/dist/src/test-utils/index.js +7 -0
  704. package/dist/src/test-utils/index.js.map +1 -0
  705. package/dist/src/test-utils/mock-message-bus.d.ts +43 -0
  706. package/dist/src/test-utils/mock-message-bus.js +96 -0
  707. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  708. package/dist/src/test-utils/mock-tool.d.ts +69 -0
  709. package/dist/src/test-utils/mock-tool.js +123 -0
  710. package/dist/src/test-utils/mock-tool.js.map +1 -0
  711. package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  712. package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
  713. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  714. package/dist/src/tools/activate-skill.d.ts +27 -0
  715. package/dist/src/tools/activate-skill.js +133 -0
  716. package/dist/src/tools/activate-skill.js.map +1 -0
  717. package/dist/src/tools/ask-user.d.ts +23 -0
  718. package/dist/src/tools/ask-user.js +155 -0
  719. package/dist/src/tools/ask-user.js.map +1 -0
  720. package/dist/src/tools/constants.d.ts +7 -0
  721. package/dist/src/tools/constants.js +8 -0
  722. package/dist/src/tools/constants.js.map +1 -0
  723. package/dist/src/tools/diffOptions.d.ts +9 -0
  724. package/dist/src/tools/diffOptions.js +50 -0
  725. package/dist/src/tools/diffOptions.js.map +1 -0
  726. package/dist/src/tools/edit.d.ts +79 -0
  727. package/dist/src/tools/edit.js +750 -0
  728. package/dist/src/tools/edit.js.map +1 -0
  729. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  730. package/dist/src/tools/get-internal-docs.js +122 -0
  731. package/dist/src/tools/get-internal-docs.js.map +1 -0
  732. package/dist/src/tools/glob.d.ts +57 -0
  733. package/dist/src/tools/glob.js +240 -0
  734. package/dist/src/tools/glob.js.map +1 -0
  735. package/dist/src/tools/grep.d.ts +41 -0
  736. package/dist/src/tools/grep.js +505 -0
  737. package/dist/src/tools/grep.js.map +1 -0
  738. package/dist/src/tools/ls.d.ts +69 -0
  739. package/dist/src/tools/ls.js +214 -0
  740. package/dist/src/tools/ls.js.map +1 -0
  741. package/dist/src/tools/mcp-client-manager.d.ts +93 -0
  742. package/dist/src/tools/mcp-client-manager.js +338 -0
  743. package/dist/src/tools/mcp-client-manager.js.map +1 -0
  744. package/dist/src/tools/mcp-client.d.ts +243 -0
  745. package/dist/src/tools/mcp-client.js +1351 -0
  746. package/dist/src/tools/mcp-client.js.map +1 -0
  747. package/dist/src/tools/mcp-tool.d.ts +49 -0
  748. package/dist/src/tools/mcp-tool.js +300 -0
  749. package/dist/src/tools/mcp-tool.js.map +1 -0
  750. package/dist/src/tools/memoryTool.d.ts +42 -0
  751. package/dist/src/tools/memoryTool.js +269 -0
  752. package/dist/src/tools/memoryTool.js.map +1 -0
  753. package/dist/src/tools/modifiable-tool.d.ts +36 -0
  754. package/dist/src/tools/modifiable-tool.js +110 -0
  755. package/dist/src/tools/modifiable-tool.js.map +1 -0
  756. package/dist/src/tools/read-file.d.ts +37 -0
  757. package/dist/src/tools/read-file.js +141 -0
  758. package/dist/src/tools/read-file.js.map +1 -0
  759. package/dist/src/tools/read-many-files.d.ts +54 -0
  760. package/dist/src/tools/read-many-files.js +364 -0
  761. package/dist/src/tools/read-many-files.js.map +1 -0
  762. package/dist/src/tools/ripGrep.d.ts +74 -0
  763. package/dist/src/tools/ripGrep.js +422 -0
  764. package/dist/src/tools/ripGrep.js.map +1 -0
  765. package/dist/src/tools/shell.d.ts +33 -0
  766. package/dist/src/tools/shell.js +436 -0
  767. package/dist/src/tools/shell.js.map +1 -0
  768. package/dist/src/tools/tool-error.d.ts +70 -0
  769. package/dist/src/tools/tool-error.js +92 -0
  770. package/dist/src/tools/tool-error.js.map +1 -0
  771. package/dist/src/tools/tool-names.d.ts +41 -0
  772. package/dist/src/tools/tool-names.js +94 -0
  773. package/dist/src/tools/tool-names.js.map +1 -0
  774. package/dist/src/tools/tool-registry.d.ts +103 -0
  775. package/dist/src/tools/tool-registry.js +429 -0
  776. package/dist/src/tools/tool-registry.js.map +1 -0
  777. package/dist/src/tools/tools.d.ts +347 -0
  778. package/dist/src/tools/tools.js +405 -0
  779. package/dist/src/tools/tools.js.map +1 -0
  780. package/dist/src/tools/web-fetch.d.ts +35 -0
  781. package/dist/src/tools/web-fetch.js +299 -0
  782. package/dist/src/tools/web-fetch.js.map +1 -0
  783. package/dist/src/tools/web-search.d.ts +50 -0
  784. package/dist/src/tools/web-search.js +141 -0
  785. package/dist/src/tools/web-search.js.map +1 -0
  786. package/dist/src/tools/write-file.d.ts +53 -0
  787. package/dist/src/tools/write-file.js +341 -0
  788. package/dist/src/tools/write-file.js.map +1 -0
  789. package/dist/src/tools/write-todos.d.ts +50 -0
  790. package/dist/src/tools/write-todos.js +194 -0
  791. package/dist/src/tools/write-todos.js.map +1 -0
  792. package/dist/src/utils/apiConversionUtils.d.ts +12 -0
  793. package/dist/src/utils/apiConversionUtils.js +46 -0
  794. package/dist/src/utils/apiConversionUtils.js.map +1 -0
  795. package/dist/src/utils/bfsFileSearch.d.ts +32 -0
  796. package/dist/src/utils/bfsFileSearch.js +136 -0
  797. package/dist/src/utils/bfsFileSearch.js.map +1 -0
  798. package/dist/src/utils/browser.d.ts +13 -0
  799. package/dist/src/utils/browser.js +50 -0
  800. package/dist/src/utils/browser.js.map +1 -0
  801. package/dist/src/utils/channel.d.ts +19 -0
  802. package/dist/src/utils/channel.js +49 -0
  803. package/dist/src/utils/channel.js.map +1 -0
  804. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  805. package/dist/src/utils/checkpointUtils.js +117 -0
  806. package/dist/src/utils/checkpointUtils.js.map +1 -0
  807. package/dist/src/utils/constants.d.ts +7 -0
  808. package/dist/src/utils/constants.js +8 -0
  809. package/dist/src/utils/constants.js.map +1 -0
  810. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  811. package/dist/src/utils/customHeaderUtils.js +34 -0
  812. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  813. package/dist/src/utils/debugLogger.d.ts +28 -0
  814. package/dist/src/utils/debugLogger.js +61 -0
  815. package/dist/src/utils/debugLogger.js.map +1 -0
  816. package/dist/src/utils/delay.d.ts +16 -0
  817. package/dist/src/utils/delay.js +43 -0
  818. package/dist/src/utils/delay.js.map +1 -0
  819. package/dist/src/utils/editCorrector.d.ts +54 -0
  820. package/dist/src/utils/editCorrector.js +596 -0
  821. package/dist/src/utils/editCorrector.js.map +1 -0
  822. package/dist/src/utils/editor.d.ts +39 -0
  823. package/dist/src/utils/editor.js +219 -0
  824. package/dist/src/utils/editor.js.map +1 -0
  825. package/dist/src/utils/environmentContext.d.ts +23 -0
  826. package/dist/src/utils/environmentContext.js +81 -0
  827. package/dist/src/utils/environmentContext.js.map +1 -0
  828. package/dist/src/utils/errorParsing.d.ts +8 -0
  829. package/dist/src/utils/errorParsing.js +65 -0
  830. package/dist/src/utils/errorParsing.js.map +1 -0
  831. package/dist/src/utils/errorReporting.d.ts +14 -0
  832. package/dist/src/utils/errorReporting.js +89 -0
  833. package/dist/src/utils/errorReporting.js.map +1 -0
  834. package/dist/src/utils/errors.d.ts +53 -0
  835. package/dist/src/utils/errors.js +145 -0
  836. package/dist/src/utils/errors.js.map +1 -0
  837. package/dist/src/utils/events.d.ts +211 -0
  838. package/dist/src/utils/events.js +134 -0
  839. package/dist/src/utils/events.js.map +1 -0
  840. package/dist/src/utils/exitCodes.d.ts +12 -0
  841. package/dist/src/utils/exitCodes.js +13 -0
  842. package/dist/src/utils/exitCodes.js.map +1 -0
  843. package/dist/src/utils/extensionLoader.d.ts +86 -0
  844. package/dist/src/utils/extensionLoader.js +208 -0
  845. package/dist/src/utils/extensionLoader.js.map +1 -0
  846. package/dist/src/utils/fetch.d.ts +12 -0
  847. package/dist/src/utils/fetch.js +55 -0
  848. package/dist/src/utils/fetch.js.map +1 -0
  849. package/dist/src/utils/fileDiffUtils.d.ts +18 -0
  850. package/dist/src/utils/fileDiffUtils.js +37 -0
  851. package/dist/src/utils/fileDiffUtils.js.map +1 -0
  852. package/dist/src/utils/fileUtils.d.ts +86 -0
  853. package/dist/src/utils/fileUtils.js +495 -0
  854. package/dist/src/utils/fileUtils.js.map +1 -0
  855. package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
  856. package/dist/src/utils/filesearch/crawlCache.js +57 -0
  857. package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
  858. package/dist/src/utils/filesearch/crawler.d.ts +16 -0
  859. package/dist/src/utils/filesearch/crawler.js +67 -0
  860. package/dist/src/utils/filesearch/crawler.js.map +1 -0
  861. package/dist/src/utils/filesearch/fileSearch.d.ts +39 -0
  862. package/dist/src/utils/filesearch/fileSearch.js +192 -0
  863. package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
  864. package/dist/src/utils/filesearch/ignore.d.ts +37 -0
  865. package/dist/src/utils/filesearch/ignore.js +99 -0
  866. package/dist/src/utils/filesearch/ignore.js.map +1 -0
  867. package/dist/src/utils/filesearch/result-cache.d.ts +33 -0
  868. package/dist/src/utils/filesearch/result-cache.js +59 -0
  869. package/dist/src/utils/filesearch/result-cache.js.map +1 -0
  870. package/dist/src/utils/formatters.d.ts +7 -0
  871. package/dist/src/utils/formatters.js +17 -0
  872. package/dist/src/utils/formatters.js.map +1 -0
  873. package/dist/src/utils/generateContentResponseUtilities.d.ts +15 -0
  874. package/dist/src/utils/generateContentResponseUtilities.js +186 -0
  875. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
  876. package/dist/src/utils/getFolderStructure.d.ts +31 -0
  877. package/dist/src/utils/getFolderStructure.js +243 -0
  878. package/dist/src/utils/getFolderStructure.js.map +1 -0
  879. package/dist/src/utils/getPty.d.ts +19 -0
  880. package/dist/src/utils/getPty.js +23 -0
  881. package/dist/src/utils/getPty.js.map +1 -0
  882. package/dist/src/utils/gitIgnoreParser.d.ts +19 -0
  883. package/dist/src/utils/gitIgnoreParser.js +169 -0
  884. package/dist/src/utils/gitIgnoreParser.js.map +1 -0
  885. package/dist/src/utils/gitUtils.d.ts +17 -0
  886. package/dist/src/utils/gitUtils.js +61 -0
  887. package/dist/src/utils/gitUtils.js.map +1 -0
  888. package/dist/src/utils/googleErrors.d.ts +104 -0
  889. package/dist/src/utils/googleErrors.js +165 -0
  890. package/dist/src/utils/googleErrors.js.map +1 -0
  891. package/dist/src/utils/googleQuotaErrors.d.ts +51 -0
  892. package/dist/src/utils/googleQuotaErrors.js +250 -0
  893. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  894. package/dist/src/utils/httpErrors.d.ts +18 -0
  895. package/dist/src/utils/httpErrors.js +36 -0
  896. package/dist/src/utils/httpErrors.js.map +1 -0
  897. package/dist/src/utils/ignoreFileParser.d.ts +30 -0
  898. package/dist/src/utils/ignoreFileParser.js +100 -0
  899. package/dist/src/utils/ignoreFileParser.js.map +1 -0
  900. package/dist/src/utils/ignorePatterns.d.ts +103 -0
  901. package/dist/src/utils/ignorePatterns.js +220 -0
  902. package/dist/src/utils/ignorePatterns.js.map +1 -0
  903. package/dist/src/utils/installationManager.d.ts +16 -0
  904. package/dist/src/utils/installationManager.js +51 -0
  905. package/dist/src/utils/installationManager.js.map +1 -0
  906. package/dist/src/utils/language-detection.d.ts +6 -0
  907. package/dist/src/utils/language-detection.js +101 -0
  908. package/dist/src/utils/language-detection.js.map +1 -0
  909. package/dist/src/utils/llm-edit-fixer.d.ts +26 -0
  910. package/dist/src/utils/llm-edit-fixer.js +152 -0
  911. package/dist/src/utils/llm-edit-fixer.js.map +1 -0
  912. package/dist/src/utils/memoryDiscovery.d.ts +40 -0
  913. package/dist/src/utils/memoryDiscovery.js +421 -0
  914. package/dist/src/utils/memoryDiscovery.js.map +1 -0
  915. package/dist/src/utils/memoryImportProcessor.d.ts +42 -0
  916. package/dist/src/utils/memoryImportProcessor.js +273 -0
  917. package/dist/src/utils/memoryImportProcessor.js.map +1 -0
  918. package/dist/src/utils/messageInspectors.d.ts +8 -0
  919. package/dist/src/utils/messageInspectors.js +16 -0
  920. package/dist/src/utils/messageInspectors.js.map +1 -0
  921. package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
  922. package/dist/src/utils/nextSpeakerChecker.js +97 -0
  923. package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
  924. package/dist/src/utils/package.d.ts +26 -0
  925. package/dist/src/utils/package.js +35 -0
  926. package/dist/src/utils/package.js.map +1 -0
  927. package/dist/src/utils/partUtils.d.ts +35 -0
  928. package/dist/src/utils/partUtils.js +133 -0
  929. package/dist/src/utils/partUtils.js.map +1 -0
  930. package/dist/src/utils/pathCorrector.d.ts +25 -0
  931. package/dist/src/utils/pathCorrector.js +43 -0
  932. package/dist/src/utils/pathCorrector.js.map +1 -0
  933. package/dist/src/utils/pathReader.d.ts +17 -0
  934. package/dist/src/utils/pathReader.js +92 -0
  935. package/dist/src/utils/pathReader.js.map +1 -0
  936. package/dist/src/utils/paths.d.ts +78 -0
  937. package/dist/src/utils/paths.js +311 -0
  938. package/dist/src/utils/paths.js.map +1 -0
  939. package/dist/src/utils/process-utils.d.ts +32 -0
  940. package/dist/src/utils/process-utils.js +88 -0
  941. package/dist/src/utils/process-utils.js.map +1 -0
  942. package/dist/src/utils/promptIdContext.d.ts +13 -0
  943. package/dist/src/utils/promptIdContext.js +23 -0
  944. package/dist/src/utils/promptIdContext.js.map +1 -0
  945. package/dist/src/utils/quotaErrorDetection.d.ts +16 -0
  946. package/dist/src/utils/quotaErrorDetection.js +19 -0
  947. package/dist/src/utils/quotaErrorDetection.js.map +1 -0
  948. package/dist/src/utils/retry.d.ts +39 -0
  949. package/dist/src/utils/retry.js +267 -0
  950. package/dist/src/utils/retry.js.map +1 -0
  951. package/dist/src/utils/safeJsonStringify.d.ts +13 -0
  952. package/dist/src/utils/safeJsonStringify.js +49 -0
  953. package/dist/src/utils/safeJsonStringify.js.map +1 -0
  954. package/dist/src/utils/schemaValidator.d.ts +21 -0
  955. package/dist/src/utils/schemaValidator.js +59 -0
  956. package/dist/src/utils/schemaValidator.js.map +1 -0
  957. package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
  958. package/dist/src/utils/secure-browser-launcher.js +165 -0
  959. package/dist/src/utils/secure-browser-launcher.js.map +1 -0
  960. package/dist/src/utils/security.d.ts +16 -0
  961. package/dist/src/utils/security.js +88 -0
  962. package/dist/src/utils/security.js.map +1 -0
  963. package/dist/src/utils/session.d.ts +6 -0
  964. package/dist/src/utils/session.js +8 -0
  965. package/dist/src/utils/session.js.map +1 -0
  966. package/dist/src/utils/shell-utils.d.ts +118 -0
  967. package/dist/src/utils/shell-utils.js +708 -0
  968. package/dist/src/utils/shell-utils.js.map +1 -0
  969. package/dist/src/utils/stdio.d.ts +32 -0
  970. package/dist/src/utils/stdio.js +85 -0
  971. package/dist/src/utils/stdio.js.map +1 -0
  972. package/dist/src/utils/summarizer.d.ts +27 -0
  973. package/dist/src/utils/summarizer.js +50 -0
  974. package/dist/src/utils/summarizer.js.map +1 -0
  975. package/dist/src/utils/systemEncoding.d.ts +40 -0
  976. package/dist/src/utils/systemEncoding.js +150 -0
  977. package/dist/src/utils/systemEncoding.js.map +1 -0
  978. package/dist/src/utils/terminal.d.ts +22 -0
  979. package/dist/src/utils/terminal.js +62 -0
  980. package/dist/src/utils/terminal.js.map +1 -0
  981. package/dist/src/utils/terminalSerializer.d.ts +25 -0
  982. package/dist/src/utils/terminalSerializer.js +444 -0
  983. package/dist/src/utils/terminalSerializer.js.map +1 -0
  984. package/dist/src/utils/testUtils.d.ts +29 -0
  985. package/dist/src/utils/testUtils.js +70 -0
  986. package/dist/src/utils/testUtils.js.map +1 -0
  987. package/dist/src/utils/textUtils.d.ts +32 -0
  988. package/dist/src/utils/textUtils.js +65 -0
  989. package/dist/src/utils/textUtils.js.map +1 -0
  990. package/dist/src/utils/thoughtUtils.d.ts +21 -0
  991. package/dist/src/utils/thoughtUtils.js +39 -0
  992. package/dist/src/utils/thoughtUtils.js.map +1 -0
  993. package/dist/src/utils/tokenCalculation.d.ts +19 -0
  994. package/dist/src/utils/tokenCalculation.js +150 -0
  995. package/dist/src/utils/tokenCalculation.js.map +1 -0
  996. package/dist/src/utils/tool-utils.d.ts +28 -0
  997. package/dist/src/utils/tool-utils.js +96 -0
  998. package/dist/src/utils/tool-utils.js.map +1 -0
  999. package/dist/src/utils/toolCallContext.d.ts +35 -0
  1000. package/dist/src/utils/toolCallContext.js +29 -0
  1001. package/dist/src/utils/toolCallContext.js.map +1 -0
  1002. package/dist/src/utils/userAccountManager.d.ts +20 -0
  1003. package/dist/src/utils/userAccountManager.js +115 -0
  1004. package/dist/src/utils/userAccountManager.js.map +1 -0
  1005. package/dist/src/utils/version.d.ts +6 -0
  1006. package/dist/src/utils/version.js +15 -0
  1007. package/dist/src/utils/version.js.map +1 -0
  1008. package/dist/src/utils/workspaceContext.d.ts +82 -0
  1009. package/dist/src/utils/workspaceContext.js +192 -0
  1010. package/dist/src/utils/workspaceContext.js.map +1 -0
  1011. package/dist/tsconfig.tsbuildinfo +1 -0
  1012. package/package.json +97 -0
@@ -0,0 +1,1625 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import * as fs from 'node:fs';
7
+ import * as path from 'node:path';
8
+ import * as os from 'node:os';
9
+ import { inspect } from 'node:util';
10
+ import process from 'node:process';
11
+ import { AuthType, createContentGenerator, createContentGeneratorConfig, } from '../core/contentGenerator.js';
12
+ import { PromptRegistry } from '../prompts/prompt-registry.js';
13
+ import { ResourceRegistry } from '../resources/resource-registry.js';
14
+ import { ToolRegistry } from '../tools/tool-registry.js';
15
+ import { LSTool } from '../tools/ls.js';
16
+ import { ReadFileTool } from '../tools/read-file.js';
17
+ import { GrepTool } from '../tools/grep.js';
18
+ import { canUseRipgrep, RipGrepTool } from '../tools/ripGrep.js';
19
+ import { GlobTool } from '../tools/glob.js';
20
+ import { ActivateSkillTool } from '../tools/activate-skill.js';
21
+ import { EditTool } from '../tools/edit.js';
22
+ import { ShellTool } from '../tools/shell.js';
23
+ import { WriteFileTool } from '../tools/write-file.js';
24
+ import { WebFetchTool } from '../tools/web-fetch.js';
25
+ import { MemoryTool, setGeminiMdFilename } from '../tools/memoryTool.js';
26
+ import { WebSearchTool } from '../tools/web-search.js';
27
+ import { AskUserTool } from '../tools/ask-user.js';
28
+ import { GeminiClient } from '../core/client.js';
29
+ import { BaseLlmClient } from '../core/baseLlmClient.js';
30
+ import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
31
+ import { GitService } from '../services/gitService.js';
32
+ import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, uiTelemetryService, } from '../telemetry/index.js';
33
+ import { coreEvents, CoreEvent } from '../utils/events.js';
34
+ import { tokenLimit } from '../core/tokenLimits.js';
35
+ import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL_AUTO, isPreviewModel, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_MODEL_AUTO, } from './models.js';
36
+ import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
37
+ import { ideContextStore } from '../ide/ideContext.js';
38
+ import { WriteTodosTool } from '../tools/write-todos.js';
39
+ import { StandardFileSystemService } from '../services/fileSystemService.js';
40
+ import { logRipgrepFallback, logFlashFallback } from '../telemetry/loggers.js';
41
+ import { RipgrepFallbackEvent, FlashFallbackEvent, ApprovalModeSwitchEvent, ApprovalModeDurationEvent, } from '../telemetry/types.js';
42
+ import { ModelAvailabilityService } from '../availability/modelAvailabilityService.js';
43
+ import { ModelRouterService } from '../routing/modelRouterService.js';
44
+ import { OutputFormat } from '../output/types.js';
45
+ import { ModelConfigService } from '../services/modelConfigService.js';
46
+ import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
47
+ import { ContextManager } from '../services/contextManager.js';
48
+ import { WorkspaceContext } from '../utils/workspaceContext.js';
49
+ import { Storage } from './storage.js';
50
+ import { FileExclusions } from '../utils/ignorePatterns.js';
51
+ import { MessageBus } from '../confirmation-bus/message-bus.js';
52
+ import { PolicyEngine } from '../policy/policy-engine.js';
53
+ import { ApprovalMode } from '../policy/types.js';
54
+ import { HookSystem } from '../hooks/index.js';
55
+ import { getCodeAssistServer } from '../code_assist/codeAssist.js';
56
+ import { AgentRegistry } from '../agents/registry.js';
57
+ import { AcknowledgedAgentsService } from '../agents/acknowledgedAgents.js';
58
+ import { setGlobalProxy } from '../utils/fetch.js';
59
+ import { SubagentTool } from '../agents/subagent-tool.js';
60
+ import { getExperiments } from '../code_assist/experiments/experiments.js';
61
+ import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
62
+ import { debugLogger } from '../utils/debugLogger.js';
63
+ import { SkillManager } from '../skills/skillManager.js';
64
+ import { startupProfiler } from '../telemetry/startupProfiler.js';
65
+ import { logApprovalModeSwitch, logApprovalModeDuration, } from '../telemetry/loggers.js';
66
+ import { fetchAdminControls } from '../code_assist/admin/admin_controls.js';
67
+ import { isSubpath } from '../utils/paths.js';
68
+ import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from './constants.js';
69
+ import { SimpleExtensionLoader, } from '../utils/extensionLoader.js';
70
+ import { McpClientManager } from '../tools/mcp-client-manager.js';
71
+ import { getErrorMessage } from '../utils/errors.js';
72
+ export { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, };
73
+ export const DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD = 4_000_000;
74
+ export const DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES = 1000;
75
+ export class MCPServerConfig {
76
+ command;
77
+ args;
78
+ env;
79
+ cwd;
80
+ url;
81
+ httpUrl;
82
+ headers;
83
+ tcp;
84
+ type;
85
+ timeout;
86
+ trust;
87
+ description;
88
+ includeTools;
89
+ excludeTools;
90
+ extension;
91
+ oauth;
92
+ authProviderType;
93
+ targetAudience;
94
+ targetServiceAccount;
95
+ constructor(
96
+ // For stdio transport
97
+ command, args, env, cwd,
98
+ // For sse transport
99
+ url,
100
+ // For streamable http transport
101
+ httpUrl, headers,
102
+ // For websocket transport
103
+ tcp,
104
+ // Transport type (optional, for use with 'url' field)
105
+ // When set to 'http', uses StreamableHTTPClientTransport
106
+ // When set to 'sse', uses SSEClientTransport
107
+ // When omitted, auto-detects transport type
108
+ // Note: 'httpUrl' is deprecated in favor of 'url' + 'type'
109
+ type,
110
+ // Common
111
+ timeout, trust,
112
+ // Metadata
113
+ description, includeTools, excludeTools, extension,
114
+ // OAuth configuration
115
+ oauth, authProviderType,
116
+ // Service Account Configuration
117
+ /* targetAudience format: CLIENT_ID.apps.googleusercontent.com */
118
+ targetAudience,
119
+ /* targetServiceAccount format: <service-account-name>@<project-num>.iam.gserviceaccount.com */
120
+ targetServiceAccount) {
121
+ this.command = command;
122
+ this.args = args;
123
+ this.env = env;
124
+ this.cwd = cwd;
125
+ this.url = url;
126
+ this.httpUrl = httpUrl;
127
+ this.headers = headers;
128
+ this.tcp = tcp;
129
+ this.type = type;
130
+ this.timeout = timeout;
131
+ this.trust = trust;
132
+ this.description = description;
133
+ this.includeTools = includeTools;
134
+ this.excludeTools = excludeTools;
135
+ this.extension = extension;
136
+ this.oauth = oauth;
137
+ this.authProviderType = authProviderType;
138
+ this.targetAudience = targetAudience;
139
+ this.targetServiceAccount = targetServiceAccount;
140
+ }
141
+ }
142
+ export var AuthProviderType;
143
+ (function (AuthProviderType) {
144
+ AuthProviderType["DYNAMIC_DISCOVERY"] = "dynamic_discovery";
145
+ AuthProviderType["GOOGLE_CREDENTIALS"] = "google_credentials";
146
+ AuthProviderType["SERVICE_ACCOUNT_IMPERSONATION"] = "service_account_impersonation";
147
+ })(AuthProviderType || (AuthProviderType = {}));
148
+ export class Config {
149
+ toolRegistry;
150
+ mcpClientManager;
151
+ allowedMcpServers;
152
+ blockedMcpServers;
153
+ allowedEnvironmentVariables;
154
+ blockedEnvironmentVariables;
155
+ enableEnvironmentVariableRedaction;
156
+ promptRegistry;
157
+ resourceRegistry;
158
+ agentRegistry;
159
+ acknowledgedAgentsService;
160
+ skillManager;
161
+ sessionId;
162
+ clientVersion;
163
+ fileSystemService;
164
+ contentGeneratorConfig;
165
+ contentGenerator;
166
+ modelConfigService;
167
+ embeddingModel;
168
+ sandbox;
169
+ targetDir;
170
+ workspaceContext;
171
+ debugMode;
172
+ question;
173
+ coreTools;
174
+ allowedTools;
175
+ excludeTools;
176
+ toolDiscoveryCommand;
177
+ toolCallCommand;
178
+ mcpServerCommand;
179
+ mcpEnabled;
180
+ extensionsEnabled;
181
+ mcpServers;
182
+ mcpEnablementCallbacks;
183
+ userMemory;
184
+ geminiMdFileCount;
185
+ geminiMdFilePaths;
186
+ showMemoryUsage;
187
+ accessibility;
188
+ telemetrySettings;
189
+ usageStatisticsEnabled;
190
+ geminiClient;
191
+ baseLlmClient;
192
+ modelRouterService;
193
+ modelAvailabilityService;
194
+ fileFiltering;
195
+ fileDiscoveryService = null;
196
+ gitService = undefined;
197
+ checkpointing;
198
+ proxy;
199
+ cwd;
200
+ bugCommand;
201
+ model;
202
+ previewFeatures;
203
+ hasAccessToPreviewModel = false;
204
+ noBrowser;
205
+ folderTrust;
206
+ ideMode;
207
+ _activeModel;
208
+ maxSessionTurns;
209
+ listSessions;
210
+ deleteSession;
211
+ listExtensions;
212
+ _extensionLoader;
213
+ _enabledExtensions;
214
+ enableExtensionReloading;
215
+ fallbackModelHandler;
216
+ validationHandler;
217
+ quotaErrorOccurred = false;
218
+ summarizeToolOutput;
219
+ experimentalZedIntegration = false;
220
+ loadMemoryFromIncludeDirectories = false;
221
+ importFormat;
222
+ discoveryMaxDirs;
223
+ compressionThreshold;
224
+ /** Public for testing only */
225
+ interactive;
226
+ ptyInfo;
227
+ trustedFolder;
228
+ useRipgrep;
229
+ enableInteractiveShell;
230
+ skipNextSpeakerCheck;
231
+ useBackgroundColor;
232
+ shellExecutionConfig;
233
+ extensionManagement = true;
234
+ enablePromptCompletion = false;
235
+ truncateToolOutputThreshold;
236
+ truncateToolOutputLines;
237
+ compressionTruncationCounter = 0;
238
+ enableToolOutputTruncation;
239
+ initialized = false;
240
+ storage;
241
+ fileExclusions;
242
+ eventEmitter;
243
+ useWriteTodos;
244
+ messageBus;
245
+ policyEngine;
246
+ outputSettings;
247
+ continueOnFailedApiCall;
248
+ retryFetchErrors;
249
+ enableShellOutputEfficiency;
250
+ shellToolInactivityTimeout;
251
+ fakeResponses;
252
+ recordResponses;
253
+ disableYoloMode;
254
+ rawOutput;
255
+ acceptRawOutputRisk;
256
+ pendingIncludeDirectories;
257
+ enableHooks;
258
+ enableHooksUI;
259
+ hooks;
260
+ projectHooks;
261
+ disabledHooks;
262
+ experiments;
263
+ experimentsPromise;
264
+ hookSystem;
265
+ onModelChange;
266
+ onReload;
267
+ enableAgents;
268
+ agents;
269
+ enableEventDrivenScheduler;
270
+ skillsSupport;
271
+ disabledSkills;
272
+ adminSkillsEnabled;
273
+ experimentalJitContext;
274
+ disableLLMCorrection;
275
+ planEnabled;
276
+ contextManager;
277
+ terminalBackground = undefined;
278
+ remoteAdminSettings;
279
+ latestApiRequest;
280
+ lastModeSwitchTime = Date.now();
281
+ constructor(params) {
282
+ this.sessionId = params.sessionId;
283
+ this.clientVersion = params.clientVersion ?? 'unknown';
284
+ this.embeddingModel =
285
+ params.embeddingModel ?? DEFAULT_GEMINI_EMBEDDING_MODEL;
286
+ this.fileSystemService = new StandardFileSystemService();
287
+ this.sandbox = params.sandbox;
288
+ this.targetDir = path.resolve(params.targetDir);
289
+ this.folderTrust = params.folderTrust ?? false;
290
+ this.workspaceContext = new WorkspaceContext(this.targetDir, []);
291
+ this.pendingIncludeDirectories = params.includeDirectories ?? [];
292
+ this.debugMode = params.debugMode;
293
+ this.question = params.question;
294
+ this.coreTools = params.coreTools;
295
+ this.allowedTools = params.allowedTools;
296
+ this.excludeTools = params.excludeTools;
297
+ this.toolDiscoveryCommand = params.toolDiscoveryCommand;
298
+ this.toolCallCommand = params.toolCallCommand;
299
+ this.mcpServerCommand = params.mcpServerCommand;
300
+ this.mcpServers = params.mcpServers;
301
+ this.mcpEnablementCallbacks = params.mcpEnablementCallbacks;
302
+ this.mcpEnabled = params.mcpEnabled ?? true;
303
+ this.extensionsEnabled = params.extensionsEnabled ?? true;
304
+ this.allowedMcpServers = params.allowedMcpServers ?? [];
305
+ this.blockedMcpServers = params.blockedMcpServers ?? [];
306
+ this.allowedEnvironmentVariables = params.allowedEnvironmentVariables ?? [];
307
+ this.blockedEnvironmentVariables = params.blockedEnvironmentVariables ?? [];
308
+ this.enableEnvironmentVariableRedaction =
309
+ params.enableEnvironmentVariableRedaction ?? false;
310
+ this.userMemory = params.userMemory ?? '';
311
+ this.geminiMdFileCount = params.geminiMdFileCount ?? 0;
312
+ this.geminiMdFilePaths = params.geminiMdFilePaths ?? [];
313
+ this.showMemoryUsage = params.showMemoryUsage ?? false;
314
+ this.accessibility = params.accessibility ?? {};
315
+ this.telemetrySettings = {
316
+ enabled: params.telemetry?.enabled ?? false,
317
+ target: params.telemetry?.target ?? DEFAULT_TELEMETRY_TARGET,
318
+ otlpEndpoint: params.telemetry?.otlpEndpoint ?? DEFAULT_OTLP_ENDPOINT,
319
+ otlpProtocol: params.telemetry?.otlpProtocol,
320
+ logPrompts: params.telemetry?.logPrompts ?? true,
321
+ outfile: params.telemetry?.outfile,
322
+ useCollector: params.telemetry?.useCollector,
323
+ useCliAuth: params.telemetry?.useCliAuth,
324
+ };
325
+ this.usageStatisticsEnabled = params.usageStatisticsEnabled ?? true;
326
+ this.fileFiltering = {
327
+ respectGitIgnore: params.fileFiltering?.respectGitIgnore ??
328
+ DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
329
+ respectGeminiIgnore: params.fileFiltering?.respectGeminiIgnore ??
330
+ DEFAULT_FILE_FILTERING_OPTIONS.respectGeminiIgnore,
331
+ enableRecursiveFileSearch: params.fileFiltering?.enableRecursiveFileSearch ?? true,
332
+ enableFuzzySearch: params.fileFiltering?.enableFuzzySearch ?? true,
333
+ maxFileCount: params.fileFiltering?.maxFileCount ??
334
+ DEFAULT_FILE_FILTERING_OPTIONS.maxFileCount ??
335
+ 20000,
336
+ searchTimeout: params.fileFiltering?.searchTimeout ??
337
+ DEFAULT_FILE_FILTERING_OPTIONS.searchTimeout ??
338
+ 5000,
339
+ customIgnoreFilePaths: params.fileFiltering?.customIgnoreFilePaths ?? [],
340
+ };
341
+ this.checkpointing = params.checkpointing ?? false;
342
+ this.proxy = params.proxy;
343
+ this.cwd = params.cwd ?? process.cwd();
344
+ this.fileDiscoveryService = params.fileDiscoveryService ?? null;
345
+ this.bugCommand = params.bugCommand;
346
+ this.model = params.model;
347
+ this._activeModel = params.model;
348
+ this.enableAgents = params.enableAgents ?? false;
349
+ this.agents = params.agents ?? {};
350
+ this.disableLLMCorrection = params.disableLLMCorrection ?? true;
351
+ this.planEnabled = params.plan ?? false;
352
+ this.enableEventDrivenScheduler = params.enableEventDrivenScheduler ?? true;
353
+ this.skillsSupport = params.skillsSupport ?? true;
354
+ this.disabledSkills = params.disabledSkills ?? [];
355
+ this.adminSkillsEnabled = params.adminSkillsEnabled ?? true;
356
+ this.modelAvailabilityService = new ModelAvailabilityService();
357
+ this.previewFeatures = params.previewFeatures ?? undefined;
358
+ this.experimentalJitContext = params.experimentalJitContext ?? false;
359
+ this.maxSessionTurns = params.maxSessionTurns ?? -1;
360
+ this.experimentalZedIntegration =
361
+ params.experimentalZedIntegration ?? false;
362
+ this.listSessions = params.listSessions ?? false;
363
+ this.deleteSession = params.deleteSession;
364
+ this.listExtensions = params.listExtensions ?? false;
365
+ this._extensionLoader =
366
+ params.extensionLoader ?? new SimpleExtensionLoader([]);
367
+ this._enabledExtensions = params.enabledExtensions ?? [];
368
+ this.noBrowser = params.noBrowser ?? false;
369
+ this.summarizeToolOutput = params.summarizeToolOutput;
370
+ this.folderTrust = params.folderTrust ?? false;
371
+ this.ideMode = params.ideMode ?? false;
372
+ this.loadMemoryFromIncludeDirectories =
373
+ params.loadMemoryFromIncludeDirectories ?? false;
374
+ this.importFormat = params.importFormat ?? 'tree';
375
+ this.discoveryMaxDirs = params.discoveryMaxDirs ?? 200;
376
+ this.compressionThreshold = params.compressionThreshold;
377
+ this.interactive = params.interactive ?? false;
378
+ this.ptyInfo = params.ptyInfo ?? 'child_process';
379
+ this.trustedFolder = params.trustedFolder;
380
+ this.useRipgrep = params.useRipgrep ?? true;
381
+ this.useBackgroundColor = params.useBackgroundColor ?? true;
382
+ this.enableInteractiveShell = params.enableInteractiveShell ?? false;
383
+ this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? true;
384
+ this.shellExecutionConfig = {
385
+ terminalWidth: params.shellExecutionConfig?.terminalWidth ?? 80,
386
+ terminalHeight: params.shellExecutionConfig?.terminalHeight ?? 24,
387
+ showColor: params.shellExecutionConfig?.showColor ?? false,
388
+ pager: params.shellExecutionConfig?.pager ?? 'cat',
389
+ sanitizationConfig: this.sanitizationConfig,
390
+ };
391
+ this.truncateToolOutputThreshold =
392
+ params.truncateToolOutputThreshold ??
393
+ DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD;
394
+ this.truncateToolOutputLines =
395
+ params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
396
+ this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
397
+ // // TODO(joshualitt): Re-evaluate the todo tool for 3 family.
398
+ this.useWriteTodos = isPreviewModel(this.model)
399
+ ? false
400
+ : (params.useWriteTodos ?? true);
401
+ this.enableHooksUI = params.enableHooksUI ?? true;
402
+ this.enableHooks = params.enableHooks ?? true;
403
+ this.disabledHooks = params.disabledHooks ?? [];
404
+ this.continueOnFailedApiCall = params.continueOnFailedApiCall ?? true;
405
+ this.enableShellOutputEfficiency =
406
+ params.enableShellOutputEfficiency ?? true;
407
+ this.shellToolInactivityTimeout =
408
+ (params.shellToolInactivityTimeout ?? 300) * 1000; // 5 minutes
409
+ this.extensionManagement = params.extensionManagement ?? true;
410
+ this.enableExtensionReloading = params.enableExtensionReloading ?? false;
411
+ this.storage = new Storage(this.targetDir);
412
+ this.fakeResponses = params.fakeResponses;
413
+ this.recordResponses = params.recordResponses;
414
+ this.enablePromptCompletion = params.enablePromptCompletion ?? false;
415
+ this.fileExclusions = new FileExclusions(this);
416
+ this.eventEmitter = params.eventEmitter;
417
+ this.policyEngine = new PolicyEngine({
418
+ ...params.policyEngineConfig,
419
+ approvalMode: params.approvalMode ?? params.policyEngineConfig?.approvalMode,
420
+ });
421
+ this.messageBus = new MessageBus(this.policyEngine, this.debugMode);
422
+ this.acknowledgedAgentsService = new AcknowledgedAgentsService();
423
+ this.skillManager = new SkillManager();
424
+ this.outputSettings = {
425
+ format: params.output?.format ?? OutputFormat.TEXT,
426
+ };
427
+ this.retryFetchErrors = params.retryFetchErrors ?? false;
428
+ this.disableYoloMode = params.disableYoloMode ?? false;
429
+ this.rawOutput = params.rawOutput ?? false;
430
+ this.acceptRawOutputRisk = params.acceptRawOutputRisk ?? false;
431
+ if (params.hooks) {
432
+ this.hooks = params.hooks;
433
+ }
434
+ if (params.projectHooks) {
435
+ this.projectHooks = params.projectHooks;
436
+ }
437
+ this.experiments = params.experiments;
438
+ this.onModelChange = params.onModelChange;
439
+ this.onReload = params.onReload;
440
+ if (params.contextFileName) {
441
+ setGeminiMdFilename(params.contextFileName);
442
+ }
443
+ if (this.telemetrySettings.enabled) {
444
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
445
+ initializeTelemetry(this);
446
+ }
447
+ const proxy = this.getProxy();
448
+ if (proxy) {
449
+ try {
450
+ setGlobalProxy(proxy);
451
+ }
452
+ catch (error) {
453
+ coreEvents.emitFeedback('error', 'Invalid proxy configuration detected. Check debug drawer for more details (F12)', error);
454
+ }
455
+ }
456
+ this.geminiClient = new GeminiClient(this);
457
+ this.modelRouterService = new ModelRouterService(this);
458
+ // HACK: The settings loading logic doesn't currently merge the default
459
+ // generation config with the user's settings. This means if a user provides
460
+ // any `generation` settings (e.g., just `overrides`), the default `aliases`
461
+ // are lost. This hack manually merges the default aliases back in if they
462
+ // are missing from the user's config.
463
+ // TODO(12593): Fix the settings loading logic to properly merge defaults and
464
+ // remove this hack.
465
+ let modelConfigServiceConfig = params.modelConfigServiceConfig;
466
+ if (modelConfigServiceConfig) {
467
+ if (!modelConfigServiceConfig.aliases) {
468
+ modelConfigServiceConfig = {
469
+ ...modelConfigServiceConfig,
470
+ aliases: DEFAULT_MODEL_CONFIGS.aliases,
471
+ };
472
+ }
473
+ if (!modelConfigServiceConfig.overrides) {
474
+ modelConfigServiceConfig = {
475
+ ...modelConfigServiceConfig,
476
+ overrides: DEFAULT_MODEL_CONFIGS.overrides,
477
+ };
478
+ }
479
+ }
480
+ this.modelConfigService = new ModelConfigService(modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS);
481
+ }
482
+ /**
483
+ * Must only be called once, throws if called again.
484
+ */
485
+ async initialize() {
486
+ if (this.initialized) {
487
+ throw Error('Config was already initialized');
488
+ }
489
+ this.initialized = true;
490
+ // Add pending directories to workspace context
491
+ for (const dir of this.pendingIncludeDirectories) {
492
+ this.workspaceContext.addDirectory(dir);
493
+ }
494
+ // Add plans directory to workspace context for plan file storage
495
+ if (this.planEnabled) {
496
+ const plansDir = this.storage.getProjectTempPlansDir();
497
+ await fs.promises.mkdir(plansDir, { recursive: true });
498
+ this.workspaceContext.addDirectory(plansDir);
499
+ }
500
+ // Initialize centralized FileDiscoveryService
501
+ const discoverToolsHandle = startupProfiler.start('discover_tools');
502
+ this.getFileService();
503
+ if (this.getCheckpointingEnabled()) {
504
+ await this.getGitService();
505
+ }
506
+ this.promptRegistry = new PromptRegistry();
507
+ this.resourceRegistry = new ResourceRegistry();
508
+ this.agentRegistry = new AgentRegistry(this);
509
+ await this.agentRegistry.initialize();
510
+ coreEvents.on(CoreEvent.AgentsRefreshed, this.onAgentsRefreshed);
511
+ this.toolRegistry = await this.createToolRegistry();
512
+ discoverToolsHandle?.end();
513
+ this.mcpClientManager = new McpClientManager(this.clientVersion, this.toolRegistry, this, this.eventEmitter);
514
+ // We do not await this promise so that the CLI can start up even if
515
+ // MCP servers are slow to connect.
516
+ const mcpInitialization = Promise.allSettled([
517
+ this.mcpClientManager.startConfiguredMcpServers(),
518
+ this.getExtensionLoader().start(this),
519
+ ]).then((results) => {
520
+ for (const result of results) {
521
+ if (result.status === 'rejected') {
522
+ debugLogger.error('Error initializing MCP clients:', result.reason);
523
+ }
524
+ }
525
+ });
526
+ if (!this.interactive) {
527
+ await mcpInitialization;
528
+ }
529
+ if (this.skillsSupport) {
530
+ this.getSkillManager().setAdminSettings(this.adminSkillsEnabled);
531
+ if (this.adminSkillsEnabled) {
532
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
533
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
534
+ // Re-register ActivateSkillTool to update its schema with the discovered enabled skill enums
535
+ if (this.getSkillManager().getSkills().length > 0) {
536
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
537
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
538
+ }
539
+ }
540
+ }
541
+ // Initialize hook system if enabled
542
+ if (this.getEnableHooks()) {
543
+ this.hookSystem = new HookSystem(this);
544
+ await this.hookSystem.initialize();
545
+ }
546
+ if (this.experimentalJitContext) {
547
+ this.contextManager = new ContextManager(this);
548
+ await this.contextManager.refresh();
549
+ }
550
+ await this.geminiClient.initialize();
551
+ }
552
+ getContentGenerator() {
553
+ return this.contentGenerator;
554
+ }
555
+ async refreshAuth(authMethod) {
556
+ // Reset availability service when switching auth
557
+ this.modelAvailabilityService.reset();
558
+ // Vertex and Genai have incompatible encryption and sending history with
559
+ // thoughtSignature from Genai to Vertex will fail, we need to strip them
560
+ if (this.contentGeneratorConfig?.authType === AuthType.USE_GEMINI &&
561
+ authMethod !== AuthType.USE_GEMINI) {
562
+ // Restore the conversation history to the new client
563
+ this.geminiClient.stripThoughtsFromHistory();
564
+ }
565
+ // Reset availability status when switching auth (e.g. from limited key to OAuth)
566
+ this.modelAvailabilityService.reset();
567
+ const newContentGeneratorConfig = await createContentGeneratorConfig(this, authMethod);
568
+ this.contentGenerator = await createContentGenerator(newContentGeneratorConfig, this, this.getSessionId());
569
+ // Only assign to instance properties after successful initialization
570
+ this.contentGeneratorConfig = newContentGeneratorConfig;
571
+ // Initialize BaseLlmClient now that the ContentGenerator is available
572
+ this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
573
+ const codeAssistServer = getCodeAssistServer(this);
574
+ if (codeAssistServer?.projectId) {
575
+ await this.refreshUserQuota();
576
+ }
577
+ this.experimentsPromise = getExperiments(codeAssistServer)
578
+ .then((experiments) => {
579
+ this.setExperiments(experiments);
580
+ // If preview features have not been set and the user authenticated through Google, we enable preview based on remote config only if it's true
581
+ if (this.getPreviewFeatures() === undefined) {
582
+ const remotePreviewFeatures = experiments.flags[ExperimentFlags.ENABLE_PREVIEW]?.boolValue;
583
+ if (remotePreviewFeatures === true) {
584
+ this.setPreviewFeatures(remotePreviewFeatures);
585
+ }
586
+ }
587
+ })
588
+ .catch((e) => {
589
+ debugLogger.error('Failed to fetch experiments', e);
590
+ });
591
+ const authType = this.contentGeneratorConfig.authType;
592
+ if (authType === AuthType.USE_GEMINI ||
593
+ authType === AuthType.USE_VERTEX_AI) {
594
+ this.setHasAccessToPreviewModel(true);
595
+ }
596
+ // Update model if user no longer has access to the preview model
597
+ if (!this.hasAccessToPreviewModel && isPreviewModel(this.model)) {
598
+ this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
599
+ }
600
+ // Fetch admin controls
601
+ await this.ensureExperimentsLoaded();
602
+ const adminControlsEnabled = this.experiments?.flags[ExperimentFlags.ENABLE_ADMIN_CONTROLS]
603
+ ?.boolValue ?? false;
604
+ const adminControls = await fetchAdminControls(codeAssistServer, this.getRemoteAdminSettings(), adminControlsEnabled, (newSettings) => {
605
+ this.setRemoteAdminSettings(newSettings);
606
+ coreEvents.emitAdminSettingsChanged();
607
+ });
608
+ this.setRemoteAdminSettings(adminControls);
609
+ }
610
+ async getExperimentsAsync() {
611
+ if (this.experiments) {
612
+ return this.experiments;
613
+ }
614
+ const codeAssistServer = getCodeAssistServer(this);
615
+ return getExperiments(codeAssistServer);
616
+ }
617
+ getUserTier() {
618
+ return this.contentGenerator?.userTier;
619
+ }
620
+ getUserTierName() {
621
+ // TODO(#1275): Re-enable user tier display when ready.
622
+ return undefined;
623
+ }
624
+ /**
625
+ * Provides access to the BaseLlmClient for stateless LLM operations.
626
+ */
627
+ getBaseLlmClient() {
628
+ if (!this.baseLlmClient) {
629
+ // Handle cases where initialization might be deferred or authentication failed
630
+ if (this.contentGenerator) {
631
+ this.baseLlmClient = new BaseLlmClient(this.getContentGenerator(), this);
632
+ }
633
+ else {
634
+ throw new Error('BaseLlmClient not initialized. Ensure authentication has occurred and ContentGenerator is ready.');
635
+ }
636
+ }
637
+ return this.baseLlmClient;
638
+ }
639
+ getSessionId() {
640
+ return this.sessionId;
641
+ }
642
+ setSessionId(sessionId) {
643
+ this.sessionId = sessionId;
644
+ }
645
+ setTerminalBackground(terminalBackground) {
646
+ this.terminalBackground = terminalBackground;
647
+ }
648
+ getTerminalBackground() {
649
+ return this.terminalBackground;
650
+ }
651
+ getLatestApiRequest() {
652
+ return this.latestApiRequest;
653
+ }
654
+ setLatestApiRequest(req) {
655
+ this.latestApiRequest = req;
656
+ }
657
+ getRemoteAdminSettings() {
658
+ return this.remoteAdminSettings;
659
+ }
660
+ setRemoteAdminSettings(settings) {
661
+ this.remoteAdminSettings = settings;
662
+ }
663
+ shouldLoadMemoryFromIncludeDirectories() {
664
+ return this.loadMemoryFromIncludeDirectories;
665
+ }
666
+ getImportFormat() {
667
+ return this.importFormat;
668
+ }
669
+ getDiscoveryMaxDirs() {
670
+ return this.discoveryMaxDirs;
671
+ }
672
+ getContentGeneratorConfig() {
673
+ return this.contentGeneratorConfig;
674
+ }
675
+ getModel() {
676
+ return this.model;
677
+ }
678
+ setModel(newModel, isTemporary = true) {
679
+ if (this.model !== newModel || this._activeModel !== newModel) {
680
+ this.model = newModel;
681
+ // When the user explicitly sets a model, that becomes the active model.
682
+ this._activeModel = newModel;
683
+ coreEvents.emitModelChanged(newModel);
684
+ if (this.onModelChange && !isTemporary) {
685
+ this.onModelChange(newModel);
686
+ }
687
+ }
688
+ this.modelAvailabilityService.reset();
689
+ }
690
+ activateFallbackMode(model) {
691
+ this.setModel(model, true);
692
+ const authType = this.getContentGeneratorConfig()?.authType;
693
+ if (authType) {
694
+ logFlashFallback(this, new FlashFallbackEvent(authType));
695
+ }
696
+ }
697
+ getActiveModel() {
698
+ return this._activeModel ?? this.model;
699
+ }
700
+ setActiveModel(model) {
701
+ if (this._activeModel !== model) {
702
+ this._activeModel = model;
703
+ }
704
+ }
705
+ setFallbackModelHandler(handler) {
706
+ this.fallbackModelHandler = handler;
707
+ }
708
+ getFallbackModelHandler() {
709
+ return this.fallbackModelHandler;
710
+ }
711
+ setValidationHandler(handler) {
712
+ this.validationHandler = handler;
713
+ }
714
+ getValidationHandler() {
715
+ return this.validationHandler;
716
+ }
717
+ resetTurn() {
718
+ this.modelAvailabilityService.resetTurn();
719
+ }
720
+ getMaxSessionTurns() {
721
+ return this.maxSessionTurns;
722
+ }
723
+ setQuotaErrorOccurred(value) {
724
+ this.quotaErrorOccurred = value;
725
+ }
726
+ getQuotaErrorOccurred() {
727
+ return this.quotaErrorOccurred;
728
+ }
729
+ getEmbeddingModel() {
730
+ return this.embeddingModel;
731
+ }
732
+ getSandbox() {
733
+ return this.sandbox;
734
+ }
735
+ isRestrictiveSandbox() {
736
+ const sandboxConfig = this.getSandbox();
737
+ const seatbeltProfile = process.env['SEATBELT_PROFILE'];
738
+ return (!!sandboxConfig &&
739
+ sandboxConfig.command === 'sandbox-exec' &&
740
+ !!seatbeltProfile &&
741
+ seatbeltProfile.startsWith('restrictive-'));
742
+ }
743
+ getTargetDir() {
744
+ return this.targetDir;
745
+ }
746
+ getProjectRoot() {
747
+ return this.targetDir;
748
+ }
749
+ getWorkspaceContext() {
750
+ return this.workspaceContext;
751
+ }
752
+ getAgentRegistry() {
753
+ return this.agentRegistry;
754
+ }
755
+ getAcknowledgedAgentsService() {
756
+ return this.acknowledgedAgentsService;
757
+ }
758
+ getToolRegistry() {
759
+ return this.toolRegistry;
760
+ }
761
+ getPromptRegistry() {
762
+ return this.promptRegistry;
763
+ }
764
+ getSkillManager() {
765
+ return this.skillManager;
766
+ }
767
+ getResourceRegistry() {
768
+ return this.resourceRegistry;
769
+ }
770
+ getDebugMode() {
771
+ return this.debugMode;
772
+ }
773
+ getQuestion() {
774
+ return this.question;
775
+ }
776
+ getPreviewFeatures() {
777
+ return this.previewFeatures;
778
+ }
779
+ setPreviewFeatures(previewFeatures) {
780
+ // No change in state, no action needed
781
+ if (this.previewFeatures === previewFeatures) {
782
+ return;
783
+ }
784
+ this.previewFeatures = previewFeatures;
785
+ const currentModel = this.getModel();
786
+ // Case 1: Disabling preview features while on a preview model
787
+ if (!previewFeatures && isPreviewModel(currentModel)) {
788
+ this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
789
+ }
790
+ // Case 2: Enabling preview features while on the default auto model
791
+ else if (previewFeatures && currentModel === DEFAULT_GEMINI_MODEL_AUTO) {
792
+ this.setModel(PREVIEW_GEMINI_MODEL_AUTO);
793
+ }
794
+ }
795
+ getHasAccessToPreviewModel() {
796
+ return this.hasAccessToPreviewModel;
797
+ }
798
+ setHasAccessToPreviewModel(hasAccess) {
799
+ this.hasAccessToPreviewModel = hasAccess;
800
+ }
801
+ async refreshUserQuota() {
802
+ const codeAssistServer = getCodeAssistServer(this);
803
+ if (!codeAssistServer || !codeAssistServer.projectId) {
804
+ return undefined;
805
+ }
806
+ try {
807
+ const quota = await codeAssistServer.retrieveUserQuota({
808
+ project: codeAssistServer.projectId,
809
+ });
810
+ const hasAccess = quota.buckets?.some((b) => b.modelId === PREVIEW_GEMINI_MODEL) ?? false;
811
+ this.setHasAccessToPreviewModel(hasAccess);
812
+ return quota;
813
+ }
814
+ catch (e) {
815
+ debugLogger.debug('Failed to retrieve user quota', e);
816
+ return undefined;
817
+ }
818
+ }
819
+ getCoreTools() {
820
+ return this.coreTools;
821
+ }
822
+ getAllowedTools() {
823
+ return this.allowedTools;
824
+ }
825
+ /**
826
+ * All the excluded tools from static configuration, loaded extensions, or
827
+ * other sources.
828
+ *
829
+ * May change over time.
830
+ */
831
+ getExcludeTools() {
832
+ const excludeToolsSet = new Set([...(this.excludeTools ?? [])]);
833
+ for (const extension of this.getExtensionLoader().getExtensions()) {
834
+ if (!extension.isActive) {
835
+ continue;
836
+ }
837
+ for (const tool of extension.excludeTools || []) {
838
+ excludeToolsSet.add(tool);
839
+ }
840
+ }
841
+ return excludeToolsSet;
842
+ }
843
+ getToolDiscoveryCommand() {
844
+ return this.toolDiscoveryCommand;
845
+ }
846
+ getToolCallCommand() {
847
+ return this.toolCallCommand;
848
+ }
849
+ getMcpServerCommand() {
850
+ return this.mcpServerCommand;
851
+ }
852
+ /**
853
+ * The user configured MCP servers (via gemini settings files).
854
+ *
855
+ * Does NOT include mcp servers configured by extensions.
856
+ */
857
+ getMcpServers() {
858
+ return this.mcpServers;
859
+ }
860
+ getMcpEnabled() {
861
+ return this.mcpEnabled;
862
+ }
863
+ getMcpEnablementCallbacks() {
864
+ return this.mcpEnablementCallbacks;
865
+ }
866
+ getExtensionsEnabled() {
867
+ return this.extensionsEnabled;
868
+ }
869
+ getMcpClientManager() {
870
+ return this.mcpClientManager;
871
+ }
872
+ getAllowedMcpServers() {
873
+ return this.allowedMcpServers;
874
+ }
875
+ getBlockedMcpServers() {
876
+ return this.blockedMcpServers;
877
+ }
878
+ get sanitizationConfig() {
879
+ return {
880
+ allowedEnvironmentVariables: this.allowedEnvironmentVariables,
881
+ blockedEnvironmentVariables: this.blockedEnvironmentVariables,
882
+ enableEnvironmentVariableRedaction: this.enableEnvironmentVariableRedaction,
883
+ };
884
+ }
885
+ setMcpServers(mcpServers) {
886
+ this.mcpServers = mcpServers;
887
+ }
888
+ getUserMemory() {
889
+ if (this.experimentalJitContext && this.contextManager) {
890
+ return [
891
+ this.contextManager.getGlobalMemory(),
892
+ this.contextManager.getEnvironmentMemory(),
893
+ ]
894
+ .filter(Boolean)
895
+ .join('\n\n');
896
+ }
897
+ return this.userMemory;
898
+ }
899
+ /**
900
+ * Refreshes the MCP context, including memory, tools, and system instructions.
901
+ */
902
+ async refreshMcpContext() {
903
+ if (this.experimentalJitContext && this.contextManager) {
904
+ await this.contextManager.refresh();
905
+ }
906
+ else {
907
+ const { refreshServerHierarchicalMemory } = await import('../utils/memoryDiscovery.js');
908
+ await refreshServerHierarchicalMemory(this);
909
+ }
910
+ if (this.geminiClient?.isInitialized()) {
911
+ await this.geminiClient.setTools();
912
+ this.geminiClient.updateSystemInstruction();
913
+ }
914
+ }
915
+ setUserMemory(newUserMemory) {
916
+ this.userMemory = newUserMemory;
917
+ }
918
+ getGlobalMemory() {
919
+ return this.contextManager?.getGlobalMemory() ?? '';
920
+ }
921
+ getEnvironmentMemory() {
922
+ return this.contextManager?.getEnvironmentMemory() ?? '';
923
+ }
924
+ getContextManager() {
925
+ return this.contextManager;
926
+ }
927
+ isJitContextEnabled() {
928
+ return this.experimentalJitContext;
929
+ }
930
+ getGeminiMdFileCount() {
931
+ if (this.experimentalJitContext && this.contextManager) {
932
+ return this.contextManager.getLoadedPaths().size;
933
+ }
934
+ return this.geminiMdFileCount;
935
+ }
936
+ setGeminiMdFileCount(count) {
937
+ this.geminiMdFileCount = count;
938
+ }
939
+ getGeminiMdFilePaths() {
940
+ if (this.experimentalJitContext && this.contextManager) {
941
+ return Array.from(this.contextManager.getLoadedPaths());
942
+ }
943
+ return this.geminiMdFilePaths;
944
+ }
945
+ setGeminiMdFilePaths(paths) {
946
+ this.geminiMdFilePaths = paths;
947
+ }
948
+ getApprovalMode() {
949
+ return this.policyEngine.getApprovalMode();
950
+ }
951
+ setApprovalMode(mode) {
952
+ if (!this.isTrustedFolder() && mode !== ApprovalMode.DEFAULT) {
953
+ throw new Error('Cannot enable privileged approval modes in an untrusted folder.');
954
+ }
955
+ const currentMode = this.getApprovalMode();
956
+ if (currentMode !== mode) {
957
+ this.logCurrentModeDuration(this.getApprovalMode());
958
+ logApprovalModeSwitch(this, new ApprovalModeSwitchEvent(currentMode, mode));
959
+ this.lastModeSwitchTime = Date.now();
960
+ }
961
+ this.policyEngine.setApprovalMode(mode);
962
+ const isPlanModeTransition = currentMode !== mode &&
963
+ (currentMode === ApprovalMode.PLAN || mode === ApprovalMode.PLAN);
964
+ if (isPlanModeTransition) {
965
+ this.updateSystemInstructionIfInitialized();
966
+ }
967
+ }
968
+ /**
969
+ * Logs the duration of the current approval mode.
970
+ */
971
+ logCurrentModeDuration(mode) {
972
+ const now = Date.now();
973
+ const duration = now - this.lastModeSwitchTime;
974
+ logApprovalModeDuration(this, new ApprovalModeDurationEvent(mode, duration));
975
+ }
976
+ isYoloModeDisabled() {
977
+ return this.disableYoloMode || !this.isTrustedFolder();
978
+ }
979
+ getRawOutput() {
980
+ return this.rawOutput;
981
+ }
982
+ getAcceptRawOutputRisk() {
983
+ return this.acceptRawOutputRisk;
984
+ }
985
+ getPendingIncludeDirectories() {
986
+ return this.pendingIncludeDirectories;
987
+ }
988
+ clearPendingIncludeDirectories() {
989
+ this.pendingIncludeDirectories = [];
990
+ }
991
+ getShowMemoryUsage() {
992
+ return this.showMemoryUsage;
993
+ }
994
+ getAccessibility() {
995
+ return this.accessibility;
996
+ }
997
+ getTelemetryEnabled() {
998
+ return this.telemetrySettings.enabled ?? false;
999
+ }
1000
+ getTelemetryLogPromptsEnabled() {
1001
+ return this.telemetrySettings.logPrompts ?? true;
1002
+ }
1003
+ getTelemetryOtlpEndpoint() {
1004
+ return this.telemetrySettings.otlpEndpoint ?? DEFAULT_OTLP_ENDPOINT;
1005
+ }
1006
+ getTelemetryOtlpProtocol() {
1007
+ return this.telemetrySettings.otlpProtocol ?? 'grpc';
1008
+ }
1009
+ getTelemetryTarget() {
1010
+ return this.telemetrySettings.target ?? DEFAULT_TELEMETRY_TARGET;
1011
+ }
1012
+ getTelemetryOutfile() {
1013
+ return this.telemetrySettings.outfile;
1014
+ }
1015
+ getTelemetryUseCollector() {
1016
+ return this.telemetrySettings.useCollector ?? false;
1017
+ }
1018
+ getTelemetryUseCliAuth() {
1019
+ return this.telemetrySettings.useCliAuth ?? false;
1020
+ }
1021
+ getGeminiClient() {
1022
+ return this.geminiClient;
1023
+ }
1024
+ /**
1025
+ * Updates the system instruction with the latest user memory.
1026
+ * Whenever the user memory (GEMINI.md files) is updated.
1027
+ */
1028
+ updateSystemInstructionIfInitialized() {
1029
+ const geminiClient = this.getGeminiClient();
1030
+ if (geminiClient?.isInitialized()) {
1031
+ geminiClient.updateSystemInstruction();
1032
+ }
1033
+ }
1034
+ getModelRouterService() {
1035
+ return this.modelRouterService;
1036
+ }
1037
+ getModelAvailabilityService() {
1038
+ return this.modelAvailabilityService;
1039
+ }
1040
+ getEnableRecursiveFileSearch() {
1041
+ return this.fileFiltering.enableRecursiveFileSearch;
1042
+ }
1043
+ getFileFilteringEnableFuzzySearch() {
1044
+ return this.fileFiltering.enableFuzzySearch;
1045
+ }
1046
+ getFileFilteringRespectGitIgnore() {
1047
+ return this.fileFiltering.respectGitIgnore;
1048
+ }
1049
+ getFileFilteringRespectGeminiIgnore() {
1050
+ return this.fileFiltering.respectGeminiIgnore;
1051
+ }
1052
+ getCustomIgnoreFilePaths() {
1053
+ return this.fileFiltering.customIgnoreFilePaths;
1054
+ }
1055
+ getFileFilteringOptions() {
1056
+ return {
1057
+ respectGitIgnore: this.fileFiltering.respectGitIgnore,
1058
+ respectGeminiIgnore: this.fileFiltering.respectGeminiIgnore,
1059
+ maxFileCount: this.fileFiltering.maxFileCount,
1060
+ searchTimeout: this.fileFiltering.searchTimeout,
1061
+ customIgnoreFilePaths: this.fileFiltering.customIgnoreFilePaths,
1062
+ };
1063
+ }
1064
+ /**
1065
+ * Gets custom file exclusion patterns from configuration.
1066
+ * TODO: This is a placeholder implementation. In the future, this could
1067
+ * read from settings files, CLI arguments, or environment variables.
1068
+ */
1069
+ getCustomExcludes() {
1070
+ // Placeholder implementation - returns empty array for now
1071
+ // Future implementation could read from:
1072
+ // - User settings file
1073
+ // - Project-specific configuration
1074
+ // - Environment variables
1075
+ // - CLI arguments
1076
+ return [];
1077
+ }
1078
+ getCheckpointingEnabled() {
1079
+ return this.checkpointing;
1080
+ }
1081
+ getProxy() {
1082
+ return this.proxy;
1083
+ }
1084
+ getWorkingDir() {
1085
+ return this.cwd;
1086
+ }
1087
+ getBugCommand() {
1088
+ return this.bugCommand;
1089
+ }
1090
+ getFileService() {
1091
+ if (!this.fileDiscoveryService) {
1092
+ this.fileDiscoveryService = new FileDiscoveryService(this.targetDir, {
1093
+ respectGitIgnore: this.fileFiltering.respectGitIgnore,
1094
+ respectGeminiIgnore: this.fileFiltering.respectGeminiIgnore,
1095
+ customIgnoreFilePaths: this.fileFiltering.customIgnoreFilePaths,
1096
+ });
1097
+ }
1098
+ return this.fileDiscoveryService;
1099
+ }
1100
+ getUsageStatisticsEnabled() {
1101
+ return this.usageStatisticsEnabled;
1102
+ }
1103
+ getExperimentalZedIntegration() {
1104
+ return this.experimentalZedIntegration;
1105
+ }
1106
+ getListExtensions() {
1107
+ return this.listExtensions;
1108
+ }
1109
+ getListSessions() {
1110
+ return this.listSessions;
1111
+ }
1112
+ getDeleteSession() {
1113
+ return this.deleteSession;
1114
+ }
1115
+ getExtensionManagement() {
1116
+ return this.extensionManagement;
1117
+ }
1118
+ getExtensions() {
1119
+ return this._extensionLoader.getExtensions();
1120
+ }
1121
+ getExtensionLoader() {
1122
+ return this._extensionLoader;
1123
+ }
1124
+ // The list of explicitly enabled extensions, if any were given, may contain
1125
+ // the string "none".
1126
+ getEnabledExtensions() {
1127
+ return this._enabledExtensions;
1128
+ }
1129
+ getEnableExtensionReloading() {
1130
+ return this.enableExtensionReloading;
1131
+ }
1132
+ getDisableLLMCorrection() {
1133
+ return this.disableLLMCorrection;
1134
+ }
1135
+ isPlanEnabled() {
1136
+ return this.planEnabled;
1137
+ }
1138
+ isAgentsEnabled() {
1139
+ return this.enableAgents;
1140
+ }
1141
+ isEventDrivenSchedulerEnabled() {
1142
+ return this.enableEventDrivenScheduler;
1143
+ }
1144
+ getNoBrowser() {
1145
+ return this.noBrowser;
1146
+ }
1147
+ getAgentsSettings() {
1148
+ return this.agents;
1149
+ }
1150
+ isBrowserLaunchSuppressed() {
1151
+ return this.getNoBrowser() || !shouldAttemptBrowserLaunch();
1152
+ }
1153
+ getSummarizeToolOutputConfig() {
1154
+ return this.summarizeToolOutput;
1155
+ }
1156
+ getIdeMode() {
1157
+ return this.ideMode;
1158
+ }
1159
+ /**
1160
+ * Returns 'true' if the folder trust feature is enabled.
1161
+ */
1162
+ getFolderTrust() {
1163
+ return this.folderTrust;
1164
+ }
1165
+ /**
1166
+ * Returns 'true' if the workspace is considered "trusted".
1167
+ * 'false' for untrusted.
1168
+ */
1169
+ isTrustedFolder() {
1170
+ const context = ideContextStore.get();
1171
+ if (context?.workspaceState?.isTrusted !== undefined) {
1172
+ return context.workspaceState.isTrusted;
1173
+ }
1174
+ // Default to untrusted if folder trust is enabled and no explicit value is set.
1175
+ return this.folderTrust ? (this.trustedFolder ?? false) : true;
1176
+ }
1177
+ setIdeMode(value) {
1178
+ this.ideMode = value;
1179
+ }
1180
+ /**
1181
+ * Get the current FileSystemService
1182
+ */
1183
+ getFileSystemService() {
1184
+ return this.fileSystemService;
1185
+ }
1186
+ /**
1187
+ * Checks if a given absolute path is allowed for file system operations.
1188
+ * A path is allowed if it's within the workspace context or the project's temporary directory.
1189
+ *
1190
+ * @param absolutePath The absolute path to check.
1191
+ * @returns true if the path is allowed, false otherwise.
1192
+ */
1193
+ isPathAllowed(absolutePath) {
1194
+ if (this.interactive && path.isAbsolute(absolutePath)) {
1195
+ return true;
1196
+ }
1197
+ const realpath = (p) => {
1198
+ let resolved;
1199
+ try {
1200
+ resolved = fs.realpathSync(p);
1201
+ }
1202
+ catch {
1203
+ resolved = path.resolve(p);
1204
+ }
1205
+ return os.platform() === 'win32' ? resolved.toLowerCase() : resolved;
1206
+ };
1207
+ const resolvedPath = realpath(absolutePath);
1208
+ const workspaceContext = this.getWorkspaceContext();
1209
+ if (workspaceContext.isPathWithinWorkspace(resolvedPath)) {
1210
+ return true;
1211
+ }
1212
+ const projectTempDir = this.storage.getProjectTempDir();
1213
+ const resolvedTempDir = realpath(projectTempDir);
1214
+ return isSubpath(resolvedTempDir, resolvedPath);
1215
+ }
1216
+ /**
1217
+ * Validates if a path is allowed and returns a detailed error message if not.
1218
+ *
1219
+ * @param absolutePath The absolute path to validate.
1220
+ * @returns An error message string if the path is disallowed, null otherwise.
1221
+ */
1222
+ validatePathAccess(absolutePath) {
1223
+ if (this.isPathAllowed(absolutePath)) {
1224
+ return null;
1225
+ }
1226
+ const workspaceDirs = this.getWorkspaceContext().getDirectories();
1227
+ const projectTempDir = this.storage.getProjectTempDir();
1228
+ return `Path not in workspace: Attempted path "${absolutePath}" resolves outside the allowed workspace directories: ${workspaceDirs.join(', ')} or the project temp directory: ${projectTempDir}`;
1229
+ }
1230
+ /**
1231
+ * Set a custom FileSystemService
1232
+ */
1233
+ setFileSystemService(fileSystemService) {
1234
+ this.fileSystemService = fileSystemService;
1235
+ }
1236
+ async getCompressionThreshold() {
1237
+ if (this.compressionThreshold) {
1238
+ return this.compressionThreshold;
1239
+ }
1240
+ await this.ensureExperimentsLoaded();
1241
+ const remoteThreshold = this.experiments?.flags[ExperimentFlags.CONTEXT_COMPRESSION_THRESHOLD]
1242
+ ?.floatValue;
1243
+ if (remoteThreshold === 0) {
1244
+ return undefined;
1245
+ }
1246
+ return remoteThreshold;
1247
+ }
1248
+ async getUserCaching() {
1249
+ await this.ensureExperimentsLoaded();
1250
+ return this.experiments?.flags[ExperimentFlags.USER_CACHING]?.boolValue;
1251
+ }
1252
+ async getNumericalRoutingEnabled() {
1253
+ await this.ensureExperimentsLoaded();
1254
+ return !!this.experiments?.flags[ExperimentFlags.ENABLE_NUMERICAL_ROUTING]
1255
+ ?.boolValue;
1256
+ }
1257
+ async getClassifierThreshold() {
1258
+ await this.ensureExperimentsLoaded();
1259
+ const flag = this.experiments?.flags[ExperimentFlags.CLASSIFIER_THRESHOLD];
1260
+ if (flag?.intValue !== undefined) {
1261
+ return parseInt(flag.intValue, 10);
1262
+ }
1263
+ return flag?.floatValue;
1264
+ }
1265
+ async getBannerTextNoCapacityIssues() {
1266
+ await this.ensureExperimentsLoaded();
1267
+ return (this.experiments?.flags[ExperimentFlags.BANNER_TEXT_NO_CAPACITY_ISSUES]
1268
+ ?.stringValue ?? '');
1269
+ }
1270
+ async getBannerTextCapacityIssues() {
1271
+ await this.ensureExperimentsLoaded();
1272
+ return (this.experiments?.flags[ExperimentFlags.BANNER_TEXT_CAPACITY_ISSUES]
1273
+ ?.stringValue ?? '');
1274
+ }
1275
+ async ensureExperimentsLoaded() {
1276
+ if (!this.experimentsPromise) {
1277
+ return;
1278
+ }
1279
+ try {
1280
+ await this.experimentsPromise;
1281
+ }
1282
+ catch (e) {
1283
+ debugLogger.debug('Failed to fetch experiments', e);
1284
+ }
1285
+ }
1286
+ isInteractiveShellEnabled() {
1287
+ return (this.interactive &&
1288
+ this.ptyInfo !== 'child_process' &&
1289
+ this.enableInteractiveShell);
1290
+ }
1291
+ isSkillsSupportEnabled() {
1292
+ return this.skillsSupport;
1293
+ }
1294
+ /**
1295
+ * Reloads skills by re-discovering them from extensions and local directories.
1296
+ */
1297
+ async reloadSkills() {
1298
+ if (!this.skillsSupport) {
1299
+ return;
1300
+ }
1301
+ if (this.onReload) {
1302
+ const refreshed = await this.onReload();
1303
+ this.disabledSkills = refreshed.disabledSkills ?? [];
1304
+ this.getSkillManager().setAdminSettings(refreshed.adminSkillsEnabled ?? this.adminSkillsEnabled);
1305
+ }
1306
+ if (this.getSkillManager().isAdminEnabled()) {
1307
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
1308
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
1309
+ // Re-register ActivateSkillTool to update its schema with the newly discovered skills
1310
+ if (this.getSkillManager().getSkills().length > 0) {
1311
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1312
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
1313
+ }
1314
+ else {
1315
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1316
+ }
1317
+ }
1318
+ else {
1319
+ this.getSkillManager().clearSkills();
1320
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1321
+ }
1322
+ // Notify the client that system instructions might need updating
1323
+ this.updateSystemInstructionIfInitialized();
1324
+ }
1325
+ /**
1326
+ * Reloads agent settings.
1327
+ */
1328
+ async reloadAgents() {
1329
+ if (this.onReload) {
1330
+ const refreshed = await this.onReload();
1331
+ if (refreshed.agents) {
1332
+ this.agents = refreshed.agents;
1333
+ }
1334
+ }
1335
+ }
1336
+ isInteractive() {
1337
+ return this.interactive;
1338
+ }
1339
+ getUseRipgrep() {
1340
+ return this.useRipgrep;
1341
+ }
1342
+ getUseBackgroundColor() {
1343
+ return this.useBackgroundColor;
1344
+ }
1345
+ getEnableInteractiveShell() {
1346
+ return this.enableInteractiveShell;
1347
+ }
1348
+ getSkipNextSpeakerCheck() {
1349
+ return this.skipNextSpeakerCheck;
1350
+ }
1351
+ getContinueOnFailedApiCall() {
1352
+ return this.continueOnFailedApiCall;
1353
+ }
1354
+ getRetryFetchErrors() {
1355
+ return this.retryFetchErrors;
1356
+ }
1357
+ getEnableShellOutputEfficiency() {
1358
+ return this.enableShellOutputEfficiency;
1359
+ }
1360
+ getShellToolInactivityTimeout() {
1361
+ return this.shellToolInactivityTimeout;
1362
+ }
1363
+ getShellExecutionConfig() {
1364
+ return this.shellExecutionConfig;
1365
+ }
1366
+ setShellExecutionConfig(config) {
1367
+ this.shellExecutionConfig = {
1368
+ terminalWidth: config.terminalWidth ?? this.shellExecutionConfig.terminalWidth,
1369
+ terminalHeight: config.terminalHeight ?? this.shellExecutionConfig.terminalHeight,
1370
+ showColor: config.showColor ?? this.shellExecutionConfig.showColor,
1371
+ pager: config.pager ?? this.shellExecutionConfig.pager,
1372
+ sanitizationConfig: config.sanitizationConfig ??
1373
+ this.shellExecutionConfig.sanitizationConfig,
1374
+ };
1375
+ }
1376
+ getScreenReader() {
1377
+ return this.accessibility.screenReader ?? false;
1378
+ }
1379
+ getEnablePromptCompletion() {
1380
+ return this.enablePromptCompletion;
1381
+ }
1382
+ getEnableToolOutputTruncation() {
1383
+ return this.enableToolOutputTruncation;
1384
+ }
1385
+ getTruncateToolOutputThreshold() {
1386
+ return Math.min(
1387
+ // Estimate remaining context window in characters (1 token ~= 4 chars).
1388
+ 4 *
1389
+ (tokenLimit(this.model) - uiTelemetryService.getLastPromptTokenCount()), this.truncateToolOutputThreshold);
1390
+ }
1391
+ getTruncateToolOutputLines() {
1392
+ return this.truncateToolOutputLines;
1393
+ }
1394
+ getNextCompressionTruncationId() {
1395
+ return ++this.compressionTruncationCounter;
1396
+ }
1397
+ getUseWriteTodos() {
1398
+ return this.useWriteTodos;
1399
+ }
1400
+ getOutputFormat() {
1401
+ return this.outputSettings?.format
1402
+ ? this.outputSettings.format
1403
+ : OutputFormat.TEXT;
1404
+ }
1405
+ async getGitService() {
1406
+ if (!this.gitService) {
1407
+ this.gitService = new GitService(this.targetDir, this.storage);
1408
+ await this.gitService.initialize();
1409
+ }
1410
+ return this.gitService;
1411
+ }
1412
+ getFileExclusions() {
1413
+ return this.fileExclusions;
1414
+ }
1415
+ getMessageBus() {
1416
+ return this.messageBus;
1417
+ }
1418
+ getPolicyEngine() {
1419
+ return this.policyEngine;
1420
+ }
1421
+ getEnableHooks() {
1422
+ return this.enableHooks;
1423
+ }
1424
+ getEnableHooksUI() {
1425
+ return this.enableHooksUI;
1426
+ }
1427
+ async createToolRegistry() {
1428
+ const registry = new ToolRegistry(this, this.messageBus);
1429
+ // helper to create & register core tools that are enabled
1430
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1431
+ const registerCoreTool = (ToolClass, ...args) => {
1432
+ const className = ToolClass.name;
1433
+ const toolName = ToolClass.Name || className;
1434
+ const coreTools = this.getCoreTools();
1435
+ // On some platforms, the className can be minified to _ClassName.
1436
+ const normalizedClassName = className.replace(/^_+/, '');
1437
+ let isEnabled = true; // Enabled by default if coreTools is not set.
1438
+ if (coreTools) {
1439
+ isEnabled = coreTools.some((tool) => tool === toolName ||
1440
+ tool === normalizedClassName ||
1441
+ tool.startsWith(`${toolName}(`) ||
1442
+ tool.startsWith(`${normalizedClassName}(`));
1443
+ }
1444
+ if (isEnabled) {
1445
+ // Pass message bus to tools (required for policy engine integration)
1446
+ const toolArgs = [...args, this.getMessageBus()];
1447
+ registry.registerTool(new ToolClass(...toolArgs));
1448
+ }
1449
+ };
1450
+ registerCoreTool(LSTool, this);
1451
+ registerCoreTool(ReadFileTool, this);
1452
+ if (this.getUseRipgrep()) {
1453
+ let useRipgrep = false;
1454
+ let errorString = undefined;
1455
+ try {
1456
+ useRipgrep = await canUseRipgrep();
1457
+ }
1458
+ catch (error) {
1459
+ errorString = String(error);
1460
+ }
1461
+ if (useRipgrep) {
1462
+ registerCoreTool(RipGrepTool, this);
1463
+ }
1464
+ else {
1465
+ logRipgrepFallback(this, new RipgrepFallbackEvent(errorString));
1466
+ registerCoreTool(GrepTool, this);
1467
+ }
1468
+ }
1469
+ else {
1470
+ registerCoreTool(GrepTool, this);
1471
+ }
1472
+ registerCoreTool(GlobTool, this);
1473
+ registerCoreTool(ActivateSkillTool, this);
1474
+ registerCoreTool(EditTool, this);
1475
+ registerCoreTool(WriteFileTool, this);
1476
+ registerCoreTool(WebFetchTool, this);
1477
+ registerCoreTool(ShellTool, this);
1478
+ registerCoreTool(MemoryTool);
1479
+ registerCoreTool(WebSearchTool, this);
1480
+ registerCoreTool(AskUserTool);
1481
+ if (this.getUseWriteTodos()) {
1482
+ registerCoreTool(WriteTodosTool);
1483
+ }
1484
+ // Register Subagents as Tools
1485
+ this.registerSubAgentTools(registry);
1486
+ await registry.discoverAllTools();
1487
+ registry.sortTools();
1488
+ return registry;
1489
+ }
1490
+ /**
1491
+ * Registers SubAgentTools for all available agents.
1492
+ */
1493
+ registerSubAgentTools(registry) {
1494
+ const agentsOverrides = this.getAgentsSettings().overrides ?? {};
1495
+ if (this.isAgentsEnabled() ||
1496
+ agentsOverrides['codebase_investigator']?.enabled !== false ||
1497
+ agentsOverrides['cli_help']?.enabled !== false) {
1498
+ const allowedTools = this.getAllowedTools();
1499
+ const definitions = this.agentRegistry.getAllDefinitions();
1500
+ for (const definition of definitions) {
1501
+ const isAllowed = !allowedTools || allowedTools.includes(definition.name);
1502
+ if (isAllowed) {
1503
+ try {
1504
+ const tool = new SubagentTool(definition, this, this.getMessageBus());
1505
+ registry.registerTool(tool);
1506
+ }
1507
+ catch (e) {
1508
+ debugLogger.warn(`Failed to register tool for agent ${definition.name}: ${getErrorMessage(e)}`);
1509
+ }
1510
+ }
1511
+ }
1512
+ }
1513
+ }
1514
+ /**
1515
+ * Get the hook system instance
1516
+ */
1517
+ getHookSystem() {
1518
+ return this.hookSystem;
1519
+ }
1520
+ /**
1521
+ * Get hooks configuration
1522
+ */
1523
+ getHooks() {
1524
+ return this.hooks;
1525
+ }
1526
+ /**
1527
+ * Get project-specific hooks configuration
1528
+ */
1529
+ getProjectHooks() {
1530
+ return this.projectHooks;
1531
+ }
1532
+ /**
1533
+ * Update the list of disabled hooks dynamically.
1534
+ * This is used to keep the running system in sync with settings changes
1535
+ * without risk of loading new hook definitions into memory.
1536
+ */
1537
+ updateDisabledHooks(disabledHooks) {
1538
+ this.disabledHooks = disabledHooks;
1539
+ }
1540
+ /**
1541
+ * Get disabled hooks list
1542
+ */
1543
+ getDisabledHooks() {
1544
+ return this.disabledHooks;
1545
+ }
1546
+ /**
1547
+ * Get experiments configuration
1548
+ */
1549
+ getExperiments() {
1550
+ return this.experiments;
1551
+ }
1552
+ /**
1553
+ * Set experiments configuration
1554
+ */
1555
+ setExperiments(experiments) {
1556
+ this.experiments = experiments;
1557
+ const flagSummaries = Object.entries(experiments.flags ?? {})
1558
+ .sort(([a], [b]) => a.localeCompare(b))
1559
+ .map(([flagId, flag]) => {
1560
+ const summary = { flagId };
1561
+ if (flag.boolValue !== undefined) {
1562
+ summary['boolValue'] = flag.boolValue;
1563
+ }
1564
+ if (flag.floatValue !== undefined) {
1565
+ summary['floatValue'] = flag.floatValue;
1566
+ }
1567
+ if (flag.intValue !== undefined) {
1568
+ summary['intValue'] = flag.intValue;
1569
+ }
1570
+ if (flag.stringValue !== undefined) {
1571
+ summary['stringValue'] = flag.stringValue;
1572
+ }
1573
+ const int32Length = flag.int32ListValue?.values?.length ?? 0;
1574
+ if (int32Length > 0) {
1575
+ summary['int32ListLength'] = int32Length;
1576
+ }
1577
+ const stringListLength = flag.stringListValue?.values?.length ?? 0;
1578
+ if (stringListLength > 0) {
1579
+ summary['stringListLength'] = stringListLength;
1580
+ }
1581
+ return summary;
1582
+ });
1583
+ const summary = {
1584
+ experimentIds: experiments.experimentIds ?? [],
1585
+ flags: flagSummaries,
1586
+ };
1587
+ const summaryString = inspect(summary, {
1588
+ depth: null,
1589
+ maxArrayLength: null,
1590
+ maxStringLength: null,
1591
+ breakLength: 80,
1592
+ compact: false,
1593
+ });
1594
+ debugLogger.debug('Experiments loaded', summaryString);
1595
+ }
1596
+ onAgentsRefreshed = async () => {
1597
+ if (this.toolRegistry) {
1598
+ this.registerSubAgentTools(this.toolRegistry);
1599
+ }
1600
+ // Propagate updates to the active chat session
1601
+ const client = this.getGeminiClient();
1602
+ if (client?.isInitialized()) {
1603
+ await client.setTools();
1604
+ client.updateSystemInstruction();
1605
+ }
1606
+ else {
1607
+ debugLogger.debug('[Config] GeminiClient not initialized; skipping live prompt/tool refresh.');
1608
+ }
1609
+ };
1610
+ /**
1611
+ * Disposes of resources and removes event listeners.
1612
+ */
1613
+ async dispose() {
1614
+ this.logCurrentModeDuration(this.getApprovalMode());
1615
+ coreEvents.off(CoreEvent.AgentsRefreshed, this.onAgentsRefreshed);
1616
+ this.agentRegistry?.dispose();
1617
+ this.geminiClient?.dispose();
1618
+ if (this.mcpClientManager) {
1619
+ await this.mcpClientManager.stop();
1620
+ }
1621
+ }
1622
+ }
1623
+ // Export model constants for use in CLI
1624
+ export { DEFAULT_GEMINI_FLASH_MODEL };
1625
+ //# sourceMappingURL=config.js.map