@google/gemini-cli-core 0.37.0-preview.2 → 0.38.0-preview.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 (449) hide show
  1. package/README.md +58 -50
  2. package/dist/docs/changelogs/index.md +25 -0
  3. package/dist/docs/changelogs/latest.md +353 -362
  4. package/dist/docs/changelogs/preview.md +399 -366
  5. package/dist/docs/cli/plan-mode.md +1 -0
  6. package/dist/docs/cli/sandbox.md +52 -0
  7. package/dist/docs/cli/settings.md +17 -14
  8. package/dist/docs/core/remote-agents.md +14 -18
  9. package/dist/docs/core/subagents.md +63 -27
  10. package/dist/docs/get-started/authentication.md +2 -2
  11. package/dist/docs/get-started/installation.md +7 -0
  12. package/dist/docs/hooks/index.md +6 -6
  13. package/dist/docs/reference/configuration.md +41 -11
  14. package/dist/docs/reference/keyboard-shortcuts.md +14 -9
  15. package/dist/docs/reference/tools.md +4 -4
  16. package/dist/docs/release-confidence.md +0 -6
  17. package/dist/docs/releases.md +4 -0
  18. package/dist/docs/tools/mcp-server.md +3 -3
  19. package/dist/docs/tools/web-fetch.md +3 -0
  20. package/dist/src/agent/agent-session.test.js +14 -6
  21. package/dist/src/agent/agent-session.test.js.map +1 -1
  22. package/dist/src/agent/event-translator.js +2 -1
  23. package/dist/src/agent/event-translator.js.map +1 -1
  24. package/dist/src/agent/event-translator.test.js +1 -0
  25. package/dist/src/agent/event-translator.test.js.map +1 -1
  26. package/dist/src/agent/legacy-agent-session.d.ts +47 -4
  27. package/dist/src/agent/legacy-agent-session.js +38 -15
  28. package/dist/src/agent/legacy-agent-session.js.map +1 -1
  29. package/dist/src/agent/legacy-agent-session.test.js +60 -73
  30. package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
  31. package/dist/src/agent/mock.js +7 -1
  32. package/dist/src/agent/mock.js.map +1 -1
  33. package/dist/src/agent/mock.test.js +1 -1
  34. package/dist/src/agent/mock.test.js.map +1 -1
  35. package/dist/src/agent/types.d.ts +34 -1
  36. package/dist/src/agents/agent-scheduler.js +6 -1
  37. package/dist/src/agents/agent-scheduler.js.map +1 -1
  38. package/dist/src/agents/agent-scheduler.test.js +38 -0
  39. package/dist/src/agents/agent-scheduler.test.js.map +1 -1
  40. package/dist/src/agents/auth-provider/api-key-provider.test.js +18 -2
  41. package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -1
  42. package/dist/src/agents/auth-provider/value-resolver.test.js +30 -0
  43. package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -1
  44. package/dist/src/agents/browser/analyzeScreenshot.js +36 -6
  45. package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -1
  46. package/dist/src/agents/browser/analyzeScreenshot.test.js +35 -3
  47. package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -1
  48. package/dist/src/agents/browser/browserAgentFactory.d.ts +8 -0
  49. package/dist/src/agents/browser/browserAgentFactory.js +174 -118
  50. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
  51. package/dist/src/agents/browser/browserAgentFactory.test.js +70 -1
  52. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
  53. package/dist/src/agents/browser/browserAgentInvocation.js +29 -2
  54. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  55. package/dist/src/agents/browser/browserAgentInvocation.test.js +51 -5
  56. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
  57. package/dist/src/agents/browser/browserManager.d.ts +38 -0
  58. package/dist/src/agents/browser/browserManager.js +117 -6
  59. package/dist/src/agents/browser/browserManager.js.map +1 -1
  60. package/dist/src/agents/browser/browserManager.test.js +156 -2
  61. package/dist/src/agents/browser/browserManager.test.js.map +1 -1
  62. package/dist/src/agents/browser/modelAvailability.d.ts +5 -0
  63. package/dist/src/agents/browser/modelAvailability.js +12 -0
  64. package/dist/src/agents/browser/modelAvailability.js.map +1 -1
  65. package/dist/src/agents/local-executor.d.ts +5 -0
  66. package/dist/src/agents/local-executor.js +98 -181
  67. package/dist/src/agents/local-executor.js.map +1 -1
  68. package/dist/src/agents/local-executor.test.js +386 -101
  69. package/dist/src/agents/local-executor.test.js.map +1 -1
  70. package/dist/src/agents/memory-manager-agent.js +1 -0
  71. package/dist/src/agents/memory-manager-agent.js.map +1 -1
  72. package/dist/src/agents/memory-manager-agent.test.js +6 -0
  73. package/dist/src/agents/memory-manager-agent.test.js.map +1 -1
  74. package/dist/src/agents/registry.js +3 -10
  75. package/dist/src/agents/registry.js.map +1 -1
  76. package/dist/src/agents/skill-extraction-agent.d.ts +24 -0
  77. package/dist/src/agents/skill-extraction-agent.js +269 -0
  78. package/dist/src/agents/skill-extraction-agent.js.map +1 -0
  79. package/dist/src/agents/types.d.ts +11 -0
  80. package/dist/src/code_assist/admin/admin_controls.js +1 -1
  81. package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
  82. package/dist/src/code_assist/experiments/flagNames.d.ts +1 -0
  83. package/dist/src/code_assist/experiments/flagNames.js +1 -0
  84. package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
  85. package/dist/src/code_assist/server.js +1 -1
  86. package/dist/src/code_assist/server.js.map +1 -1
  87. package/dist/src/commands/memory.js +1 -1
  88. package/dist/src/commands/memory.js.map +1 -1
  89. package/dist/src/config/config.d.ts +34 -31
  90. package/dist/src/config/config.js +101 -38
  91. package/dist/src/config/config.js.map +1 -1
  92. package/dist/src/config/config.test.js +102 -15
  93. package/dist/src/config/config.test.js.map +1 -1
  94. package/dist/src/config/extensions/integrity.js +1 -1
  95. package/dist/src/config/extensions/integrity.js.map +1 -1
  96. package/dist/src/config/projectRegistry.js +5 -3
  97. package/dist/src/config/projectRegistry.js.map +1 -1
  98. package/dist/src/config/scoped-config.d.ts +30 -0
  99. package/dist/src/config/scoped-config.js +69 -0
  100. package/dist/src/config/scoped-config.js.map +1 -0
  101. package/dist/src/config/scoped-config.test.d.ts +6 -0
  102. package/dist/src/config/scoped-config.test.js +161 -0
  103. package/dist/src/config/scoped-config.test.js.map +1 -0
  104. package/dist/src/config/storage.d.ts +2 -0
  105. package/dist/src/config/storage.js +7 -2
  106. package/dist/src/config/storage.js.map +1 -1
  107. package/dist/src/config/storage.test.js +7 -7
  108. package/dist/src/config/storage.test.js.map +1 -1
  109. package/dist/src/confirmation-bus/types.d.ts +2 -2
  110. package/dist/src/context/agentHistoryProvider.d.ts +1 -1
  111. package/dist/src/context/agentHistoryProvider.js +1 -5
  112. package/dist/src/context/agentHistoryProvider.js.map +1 -1
  113. package/dist/src/context/agentHistoryProvider.test.js +2 -39
  114. package/dist/src/context/agentHistoryProvider.test.js.map +1 -1
  115. package/dist/src/context/contextCompressionService.d.ts +30 -0
  116. package/dist/src/context/contextCompressionService.js +405 -0
  117. package/dist/src/context/contextCompressionService.js.map +1 -0
  118. package/dist/src/context/contextCompressionService.test.d.ts +1 -0
  119. package/dist/src/context/contextCompressionService.test.js +253 -0
  120. package/dist/src/context/contextCompressionService.test.js.map +1 -0
  121. package/dist/src/context/{contextManager.d.ts → memoryContextManager.d.ts} +1 -1
  122. package/dist/src/context/{contextManager.js → memoryContextManager.js} +2 -2
  123. package/dist/src/context/memoryContextManager.js.map +1 -0
  124. package/dist/src/context/{contextManager.test.js → memoryContextManager.test.js} +22 -28
  125. package/dist/src/context/memoryContextManager.test.js.map +1 -0
  126. package/dist/src/context/profiles.d.ts +7 -0
  127. package/dist/src/context/profiles.js +21 -0
  128. package/dist/src/context/profiles.js.map +1 -0
  129. package/dist/src/context/toolDistillationService.test.js +3 -0
  130. package/dist/src/context/toolDistillationService.test.js.map +1 -1
  131. package/dist/src/context/types.d.ts +36 -0
  132. package/dist/src/context/types.js.map +1 -0
  133. package/dist/src/core/baseLlmClient.js +1 -1
  134. package/dist/src/core/baseLlmClient.js.map +1 -1
  135. package/dist/src/core/baseLlmClient.test.js +1 -0
  136. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  137. package/dist/src/core/client.js +1 -1
  138. package/dist/src/core/client.js.map +1 -1
  139. package/dist/src/core/client.test.js +7 -6
  140. package/dist/src/core/client.test.js.map +1 -1
  141. package/dist/src/core/geminiChat.js +8 -0
  142. package/dist/src/core/geminiChat.js.map +1 -1
  143. package/dist/src/core/geminiChat.test.js +1 -0
  144. package/dist/src/core/geminiChat.test.js.map +1 -1
  145. package/dist/src/core/geminiChat_network_retry.test.js +1 -0
  146. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  147. package/dist/src/core/logger.js +4 -4
  148. package/dist/src/core/logger.js.map +1 -1
  149. package/dist/src/core/logger.test.js +1 -1
  150. package/dist/src/core/logger.test.js.map +1 -1
  151. package/dist/src/core/loggingContentGenerator.js +1 -1
  152. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  153. package/dist/src/generated/git-commit.d.ts +2 -2
  154. package/dist/src/generated/git-commit.js +2 -2
  155. package/dist/src/hooks/hookEventHandler.js +8 -0
  156. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  157. package/dist/src/hooks/hookRunner.js +9 -5
  158. package/dist/src/hooks/hookRunner.js.map +1 -1
  159. package/dist/src/hooks/hookRunner.test.js +20 -3
  160. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  161. package/dist/src/hooks/hookSystem.d.ts +2 -0
  162. package/dist/src/hooks/hookSystem.js +1 -0
  163. package/dist/src/hooks/hookSystem.js.map +1 -1
  164. package/dist/src/hooks/hookTranslator.js +20 -13
  165. package/dist/src/hooks/hookTranslator.js.map +1 -1
  166. package/dist/src/hooks/hookTranslator.test.js +36 -0
  167. package/dist/src/hooks/hookTranslator.test.js.map +1 -1
  168. package/dist/src/hooks/types.d.ts +2 -0
  169. package/dist/src/ide/ide-client.js +3 -3
  170. package/dist/src/ide/ide-client.js.map +1 -1
  171. package/dist/src/ide/ide-connection-utils.js +1 -1
  172. package/dist/src/ide/ide-connection-utils.js.map +1 -1
  173. package/dist/src/ide/ide-installer.js +3 -3
  174. package/dist/src/ide/ide-installer.js.map +1 -1
  175. package/dist/src/ide/process-utils.js +3 -3
  176. package/dist/src/ide/process-utils.js.map +1 -1
  177. package/dist/src/index.d.ts +4 -1
  178. package/dist/src/index.js +5 -1
  179. package/dist/src/index.js.map +1 -1
  180. package/dist/src/output/json-formatter.js +2 -1
  181. package/dist/src/output/json-formatter.js.map +1 -1
  182. package/dist/src/policy/config.test.js +21 -20
  183. package/dist/src/policy/config.test.js.map +1 -1
  184. package/dist/src/policy/policies/memory-manager.toml +11 -1
  185. package/dist/src/policy/policies/plan.toml +4 -3
  186. package/dist/src/policy/policies/read-only.toml +6 -0
  187. package/dist/src/policy/policies/sandbox-default.toml +2 -3
  188. package/dist/src/policy/policy-engine.js +23 -0
  189. package/dist/src/policy/policy-engine.js.map +1 -1
  190. package/dist/src/policy/policy-engine.test.js +129 -1
  191. package/dist/src/policy/policy-engine.test.js.map +1 -1
  192. package/dist/src/policy/sandboxPolicyManager.d.ts +26 -1
  193. package/dist/src/policy/sandboxPolicyManager.js +41 -12
  194. package/dist/src/policy/sandboxPolicyManager.js.map +1 -1
  195. package/dist/src/policy/sandboxPolicyManager.test.d.ts +6 -0
  196. package/dist/src/policy/sandboxPolicyManager.test.js +61 -0
  197. package/dist/src/policy/sandboxPolicyManager.test.js.map +1 -0
  198. package/dist/src/policy/workspace-policy.test.js +18 -15
  199. package/dist/src/policy/workspace-policy.test.js.map +1 -1
  200. package/dist/src/prompts/snippets.js +6 -3
  201. package/dist/src/prompts/snippets.js.map +1 -1
  202. package/dist/src/prompts/snippets.legacy.js +6 -2
  203. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  204. package/dist/src/prompts/utils.test.js +7 -5
  205. package/dist/src/prompts/utils.test.js.map +1 -1
  206. package/dist/src/safety/built-in.js +1 -1
  207. package/dist/src/safety/built-in.js.map +1 -1
  208. package/dist/src/sandbox/linux/LinuxSandboxManager.d.ts +4 -4
  209. package/dist/src/sandbox/linux/LinuxSandboxManager.js +47 -191
  210. package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
  211. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js +33 -395
  212. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js.map +1 -1
  213. package/dist/src/sandbox/linux/bwrapArgsBuilder.d.ts +24 -0
  214. package/dist/src/sandbox/linux/bwrapArgsBuilder.js +200 -0
  215. package/dist/src/sandbox/linux/bwrapArgsBuilder.js.map +1 -0
  216. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.d.ts +6 -0
  217. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js +247 -0
  218. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js.map +1 -0
  219. package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +3 -0
  220. package/dist/src/sandbox/macos/MacOsSandboxManager.js +12 -5
  221. package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
  222. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +20 -0
  223. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -1
  224. package/dist/src/sandbox/macos/baseProfile.d.ts +1 -1
  225. package/dist/src/sandbox/macos/baseProfile.js +28 -4
  226. package/dist/src/sandbox/macos/baseProfile.js.map +1 -1
  227. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +1 -1
  228. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
  229. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +2 -1
  230. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -1
  231. package/dist/src/sandbox/utils/fsUtils.js +8 -6
  232. package/dist/src/sandbox/utils/fsUtils.js.map +1 -1
  233. package/dist/src/sandbox/utils/fsUtils.test.d.ts +6 -0
  234. package/dist/src/sandbox/utils/fsUtils.test.js +43 -0
  235. package/dist/src/sandbox/utils/fsUtils.test.js.map +1 -0
  236. package/dist/src/sandbox/utils/proactivePermissions.d.ts +19 -0
  237. package/dist/src/sandbox/utils/proactivePermissions.js +163 -0
  238. package/dist/src/sandbox/utils/proactivePermissions.js.map +1 -0
  239. package/dist/src/sandbox/utils/proactivePermissions.test.d.ts +6 -0
  240. package/dist/src/sandbox/utils/proactivePermissions.test.js +145 -0
  241. package/dist/src/sandbox/utils/proactivePermissions.test.js.map +1 -0
  242. package/dist/src/sandbox/utils/sandboxDenialUtils.d.ts +16 -1
  243. package/dist/src/sandbox/utils/sandboxDenialUtils.js +98 -24
  244. package/dist/src/sandbox/utils/sandboxDenialUtils.js.map +1 -1
  245. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js +152 -1
  246. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js.map +1 -1
  247. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js +4 -0
  248. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js.map +1 -1
  249. package/dist/src/sandbox/windows/GeminiSandbox.cs +90 -42
  250. package/dist/src/sandbox/windows/WindowsSandboxManager.d.ts +4 -0
  251. package/dist/src/sandbox/windows/WindowsSandboxManager.js +65 -60
  252. package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
  253. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js +99 -54
  254. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js.map +1 -1
  255. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.d.ts +2 -1
  256. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js +19 -18
  257. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js.map +1 -1
  258. package/dist/src/scheduler/scheduler.js +1 -1
  259. package/dist/src/scheduler/scheduler.js.map +1 -1
  260. package/dist/src/scheduler/scheduler_hooks.test.js +1 -1
  261. package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
  262. package/dist/src/scheduler/tool-executor.js +1 -1
  263. package/dist/src/scheduler/tool-executor.js.map +1 -1
  264. package/dist/src/scheduler/tool-executor.test.js +1 -1
  265. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  266. package/dist/src/services/executionLifecycleService.d.ts +1 -0
  267. package/dist/src/services/executionLifecycleService.js +3 -0
  268. package/dist/src/services/executionLifecycleService.js.map +1 -1
  269. package/dist/src/services/gitService.js +1 -1
  270. package/dist/src/services/gitService.js.map +1 -1
  271. package/dist/src/services/memoryService.d.ts +65 -0
  272. package/dist/src/services/memoryService.js +511 -0
  273. package/dist/src/services/memoryService.js.map +1 -0
  274. package/dist/src/services/memoryService.test.d.ts +6 -0
  275. package/dist/src/services/memoryService.test.js +563 -0
  276. package/dist/src/services/memoryService.test.js.map +1 -0
  277. package/dist/src/services/sandboxManager.d.ts +17 -0
  278. package/dist/src/services/sandboxManager.integration.test.js +18 -11
  279. package/dist/src/services/sandboxManager.integration.test.js.map +1 -1
  280. package/dist/src/services/sandboxManager.js +20 -0
  281. package/dist/src/services/sandboxManager.js.map +1 -1
  282. package/dist/src/services/sandboxManager.test.js +84 -56
  283. package/dist/src/services/sandboxManager.test.js.map +1 -1
  284. package/dist/src/services/sandboxManagerFactory.js +2 -5
  285. package/dist/src/services/sandboxManagerFactory.js.map +1 -1
  286. package/dist/src/services/sandboxedFileSystemService.js +14 -3
  287. package/dist/src/services/sandboxedFileSystemService.js.map +1 -1
  288. package/dist/src/services/sandboxedFileSystemService.test.js +29 -14
  289. package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -1
  290. package/dist/src/services/shellExecutionService.d.ts +16 -1
  291. package/dist/src/services/shellExecutionService.js +70 -10
  292. package/dist/src/services/shellExecutionService.js.map +1 -1
  293. package/dist/src/services/shellExecutionService.test.js +65 -4
  294. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  295. package/dist/src/services/worktreeService.test.js +7 -7
  296. package/dist/src/services/worktreeService.test.js.map +1 -1
  297. package/dist/src/skills/skillLoader.d.ts +8 -0
  298. package/dist/src/skills/skillLoader.js +1 -1
  299. package/dist/src/skills/skillLoader.js.map +1 -1
  300. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +29 -1
  301. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +101 -0
  302. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  303. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +167 -0
  304. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  305. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -1
  306. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +20 -1
  307. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  308. package/dist/src/telemetry/loggers.d.ts +22 -0
  309. package/dist/src/telemetry/loggers.js +40 -1
  310. package/dist/src/telemetry/loggers.js.map +1 -1
  311. package/dist/src/telemetry/metrics.d.ts +108 -0
  312. package/dist/src/telemetry/metrics.js +177 -0
  313. package/dist/src/telemetry/metrics.js.map +1 -1
  314. package/dist/src/telemetry/metrics.test.js +254 -0
  315. package/dist/src/telemetry/metrics.test.js.map +1 -1
  316. package/dist/src/tools/complete-task.d.ts +29 -0
  317. package/dist/src/tools/complete-task.js +123 -0
  318. package/dist/src/tools/complete-task.js.map +1 -0
  319. package/dist/src/tools/complete-task.test.d.ts +6 -0
  320. package/dist/src/tools/complete-task.test.js +114 -0
  321. package/dist/src/tools/complete-task.test.js.map +1 -0
  322. package/dist/src/tools/definitions/base-declarations.d.ts +2 -0
  323. package/dist/src/tools/definitions/base-declarations.js +3 -0
  324. package/dist/src/tools/definitions/base-declarations.js.map +1 -1
  325. package/dist/src/tools/definitions/coreTools.d.ts +1 -1
  326. package/dist/src/tools/definitions/coreTools.js +1 -1
  327. package/dist/src/tools/definitions/coreTools.js.map +1 -1
  328. package/dist/src/tools/definitions/dynamic-declaration-helpers.js +4 -0
  329. package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
  330. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +3 -3
  331. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  332. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +3 -3
  333. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  334. package/dist/src/tools/grep.test.js +2 -2
  335. package/dist/src/tools/grep.test.js.map +1 -1
  336. package/dist/src/tools/jit-context.js +3 -3
  337. package/dist/src/tools/jit-context.js.map +1 -1
  338. package/dist/src/tools/jit-context.test.js +15 -13
  339. package/dist/src/tools/jit-context.test.js.map +1 -1
  340. package/dist/src/tools/mcp-client.js +1 -1
  341. package/dist/src/tools/mcp-client.js.map +1 -1
  342. package/dist/src/tools/mcp-tool.test.js +1 -1
  343. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  344. package/dist/src/tools/ripGrep.test.js +1 -1
  345. package/dist/src/tools/ripGrep.test.js.map +1 -1
  346. package/dist/src/tools/shell.d.ts +7 -4
  347. package/dist/src/tools/shell.js +255 -37
  348. package/dist/src/tools/shell.js.map +1 -1
  349. package/dist/src/tools/shell.test.js +182 -8
  350. package/dist/src/tools/shell.test.js.map +1 -1
  351. package/dist/src/tools/shellBackgroundTools.d.ts +38 -0
  352. package/dist/src/tools/shellBackgroundTools.integration.test.d.ts +6 -0
  353. package/dist/src/tools/shellBackgroundTools.integration.test.js +86 -0
  354. package/dist/src/tools/shellBackgroundTools.integration.test.js.map +1 -0
  355. package/dist/src/tools/shellBackgroundTools.js +186 -0
  356. package/dist/src/tools/shellBackgroundTools.js.map +1 -0
  357. package/dist/src/tools/shellBackgroundTools.test.d.ts +6 -0
  358. package/dist/src/tools/shellBackgroundTools.test.js +230 -0
  359. package/dist/src/tools/shellBackgroundTools.test.js.map +1 -0
  360. package/dist/src/tools/shell_proactive.test.d.ts +6 -0
  361. package/dist/src/tools/shell_proactive.test.js +122 -0
  362. package/dist/src/tools/shell_proactive.test.js.map +1 -0
  363. package/dist/src/tools/tool-names.d.ts +3 -3
  364. package/dist/src/tools/tool-names.js +3 -2
  365. package/dist/src/tools/tool-names.js.map +1 -1
  366. package/dist/src/tools/tools.js +1 -1
  367. package/dist/src/tools/tools.js.map +1 -1
  368. package/dist/src/tools/web-fetch.js +8 -8
  369. package/dist/src/tools/web-fetch.js.map +1 -1
  370. package/dist/src/tools/web-fetch.test.js +5 -5
  371. package/dist/src/tools/web-fetch.test.js.map +1 -1
  372. package/dist/src/tools/xcode-mcp-fix-transport.js +1 -1
  373. package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -1
  374. package/dist/src/utils/bfsFileSearch.js +3 -6
  375. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  376. package/dist/src/utils/checkpointUtils.js +11 -8
  377. package/dist/src/utils/checkpointUtils.js.map +1 -1
  378. package/dist/src/utils/compatibility.js +0 -7
  379. package/dist/src/utils/compatibility.js.map +1 -1
  380. package/dist/src/utils/compatibility.test.js +0 -9
  381. package/dist/src/utils/compatibility.test.js.map +1 -1
  382. package/dist/src/utils/editor.js +3 -0
  383. package/dist/src/utils/editor.js.map +1 -1
  384. package/dist/src/utils/errorParsing.js +2 -2
  385. package/dist/src/utils/errorParsing.js.map +1 -1
  386. package/dist/src/utils/events.d.ts +12 -0
  387. package/dist/src/utils/events.js +7 -0
  388. package/dist/src/utils/events.js.map +1 -1
  389. package/dist/src/utils/fetch.d.ts +1 -0
  390. package/dist/src/utils/fetch.js +22 -6
  391. package/dist/src/utils/fetch.js.map +1 -1
  392. package/dist/src/utils/fetch.test.js +26 -1
  393. package/dist/src/utils/fetch.test.js.map +1 -1
  394. package/dist/src/utils/fileUtils.js +1 -1
  395. package/dist/src/utils/fileUtils.js.map +1 -1
  396. package/dist/src/utils/filesearch/crawler.js +1 -1
  397. package/dist/src/utils/filesearch/crawler.js.map +1 -1
  398. package/dist/src/utils/filesearch/fileSearch.test.js +7 -2
  399. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  400. package/dist/src/utils/getPty.js +2 -2
  401. package/dist/src/utils/getPty.js.map +1 -1
  402. package/dist/src/utils/gitIgnoreParser.js +2 -2
  403. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  404. package/dist/src/utils/gitUtils.js +2 -2
  405. package/dist/src/utils/gitUtils.js.map +1 -1
  406. package/dist/src/utils/googleErrors.js +5 -5
  407. package/dist/src/utils/googleErrors.js.map +1 -1
  408. package/dist/src/utils/ignoreFileParser.js +1 -1
  409. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  410. package/dist/src/utils/memoryDiscovery.js +3 -7
  411. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  412. package/dist/src/utils/paths.d.ts +8 -0
  413. package/dist/src/utils/paths.js +37 -6
  414. package/dist/src/utils/paths.js.map +1 -1
  415. package/dist/src/utils/paths.test.js +61 -3
  416. package/dist/src/utils/paths.test.js.map +1 -1
  417. package/dist/src/utils/process-utils.js +2 -2
  418. package/dist/src/utils/process-utils.js.map +1 -1
  419. package/dist/src/utils/retry.js +7 -0
  420. package/dist/src/utils/retry.js.map +1 -1
  421. package/dist/src/utils/retry.test.js +41 -0
  422. package/dist/src/utils/retry.test.js.map +1 -1
  423. package/dist/src/utils/secure-browser-launcher.js +1 -1
  424. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  425. package/dist/src/utils/shell-utils.d.ts +9 -0
  426. package/dist/src/utils/shell-utils.integration.test.js +1 -1
  427. package/dist/src/utils/shell-utils.integration.test.js.map +1 -1
  428. package/dist/src/utils/shell-utils.js +43 -4
  429. package/dist/src/utils/shell-utils.js.map +1 -1
  430. package/dist/src/utils/shell-utils.test.js +13 -1
  431. package/dist/src/utils/shell-utils.test.js.map +1 -1
  432. package/dist/src/utils/systemEncoding.js +1 -1
  433. package/dist/src/utils/systemEncoding.js.map +1 -1
  434. package/dist/src/utils/terminalSerializer.d.ts +1 -0
  435. package/dist/src/utils/terminalSerializer.js +31 -8
  436. package/dist/src/utils/terminalSerializer.js.map +1 -1
  437. package/dist/src/utils/terminalSerializer.test.js +3 -2
  438. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  439. package/dist/src/utils/workspaceContext.js +2 -2
  440. package/dist/src/utils/workspaceContext.js.map +1 -1
  441. package/dist/tsconfig.tsbuildinfo +1 -1
  442. package/package.json +1 -1
  443. package/dist/google-gemini-cli-core-0.37.0-preview.1.tgz +0 -0
  444. package/dist/src/context/contextManager.js.map +0 -1
  445. package/dist/src/context/contextManager.test.js.map +0 -1
  446. package/dist/src/services/types.d.ts +0 -14
  447. package/dist/src/services/types.js.map +0 -1
  448. /package/dist/src/context/{contextManager.test.d.ts → memoryContextManager.test.d.ts} +0 -0
  449. /package/dist/src/{services → context}/types.js +0 -0
@@ -6,7 +6,7 @@
6
6
  import { SandboxPolicyManager } from '../policy/sandboxPolicyManager.js';
7
7
  import { z } from 'zod';
8
8
  import type { ConversationRecord } from '../services/chatRecordingService.js';
9
- import type { AgentHistoryProviderConfig } from '../services/types.js';
9
+ import type { AgentHistoryProviderConfig, ContextManagementConfig, ToolOutputMaskingConfig } from '../context/types.js';
10
10
  export type { ConversationRecord };
11
11
  import { AuthType, type ContentGenerator, type ContentGeneratorConfig } from '../core/contentGenerator.js';
12
12
  import type { OverageStrategy } from '../billing/billing.js';
@@ -30,7 +30,7 @@ import { ModelAvailabilityService } from '../availability/modelAvailabilityServi
30
30
  import { ModelRouterService } from '../routing/modelRouterService.js';
31
31
  import { OutputFormat } from '../output/types.js';
32
32
  import { ModelConfigService, type ModelConfig, type ModelConfigServiceConfig } from '../services/modelConfigService.js';
33
- import { ContextManager } from '../context/contextManager.js';
33
+ import { MemoryContextManager } from '../context/memoryContextManager.js';
34
34
  import { TrackerService } from '../services/trackerService.js';
35
35
  import type { GenerateContentParameters } from '@google/genai';
36
36
  export type { MCPOAuthConfig, AnyToolInvocation, AnyDeclarativeTool };
@@ -82,30 +82,6 @@ export interface TelemetrySettings {
82
82
  export interface OutputSettings {
83
83
  format?: OutputFormat;
84
84
  }
85
- export interface ToolOutputMaskingConfig {
86
- protectionThresholdTokens: number;
87
- minPrunableThresholdTokens: number;
88
- protectLatestTurn: boolean;
89
- }
90
- export interface ContextManagementConfig {
91
- enabled: boolean;
92
- historyWindow: {
93
- maxTokens: number;
94
- retainedTokens: number;
95
- };
96
- messageLimits: {
97
- normalMaxTokens: number;
98
- retainedMaxTokens: number;
99
- normalizationHeadRatio: number;
100
- };
101
- tools: {
102
- distillation: {
103
- maxOutputTokens: number;
104
- summarizationThresholdTokens: number;
105
- };
106
- outputMasking: ToolOutputMaskingConfig;
107
- };
108
- }
109
85
  export interface GemmaModelRouterSettings {
110
86
  enabled?: boolean;
111
87
  classifier?: {
@@ -113,6 +89,10 @@ export interface GemmaModelRouterSettings {
113
89
  model?: string;
114
90
  };
115
91
  }
92
+ export interface ADKSettings {
93
+ agentSessionNoninteractiveEnabled?: boolean;
94
+ agentSessionInteractiveEnabled?: boolean;
95
+ }
116
96
  export interface ExtensionSetting {
117
97
  name: string;
118
98
  description: string;
@@ -230,7 +210,7 @@ export interface BrowserAgentCustomConfig {
230
210
  headless?: boolean;
231
211
  /** Path to Chrome profile directory for session persistence. */
232
212
  profilePath?: string;
233
- /** Model override for the visual agent. */
213
+ /** Model for the visual agent's analyze_screenshot tool. When set, enables the tool. */
234
214
  visualModel?: string;
235
215
  /** List of allowed domains for the browser agent (e.g., ["github.com", "*.google.com"]). */
236
216
  allowedDomains?: string[];
@@ -342,6 +322,7 @@ export declare enum AuthProviderType {
342
322
  export interface SandboxConfig {
343
323
  enabled: boolean;
344
324
  allowedPaths?: string[];
325
+ includeDirectories?: string[];
345
326
  networkAccess?: boolean;
346
327
  command?: 'docker' | 'podman' | 'sandbox-exec' | 'runsc' | 'lxc' | 'windows-native';
347
328
  image?: string;
@@ -350,6 +331,7 @@ export declare const ConfigSchema: z.ZodObject<{
350
331
  sandbox: z.ZodOptional<z.ZodEffects<z.ZodObject<{
351
332
  enabled: z.ZodDefault<z.ZodBoolean>;
352
333
  allowedPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
334
+ includeDirectories: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
353
335
  networkAccess: z.ZodDefault<z.ZodBoolean>;
354
336
  command: z.ZodOptional<z.ZodEnum<["docker", "podman", "sandbox-exec", "runsc", "lxc", "windows-native"]>>;
355
337
  image: z.ZodOptional<z.ZodString>;
@@ -357,6 +339,7 @@ export declare const ConfigSchema: z.ZodObject<{
357
339
  enabled: boolean;
358
340
  networkAccess: boolean;
359
341
  allowedPaths: string[];
342
+ includeDirectories: string[];
360
343
  command?: "docker" | "podman" | "sandbox-exec" | "runsc" | "lxc" | "windows-native" | undefined;
361
344
  image?: string | undefined;
362
345
  }, {
@@ -365,10 +348,12 @@ export declare const ConfigSchema: z.ZodObject<{
365
348
  enabled?: boolean | undefined;
366
349
  networkAccess?: boolean | undefined;
367
350
  allowedPaths?: string[] | undefined;
351
+ includeDirectories?: string[] | undefined;
368
352
  }>, {
369
353
  enabled: boolean;
370
354
  networkAccess: boolean;
371
355
  allowedPaths: string[];
356
+ includeDirectories: string[];
372
357
  command?: "docker" | "podman" | "sandbox-exec" | "runsc" | "lxc" | "windows-native" | undefined;
373
358
  image?: string | undefined;
374
359
  }, {
@@ -377,12 +362,14 @@ export declare const ConfigSchema: z.ZodObject<{
377
362
  enabled?: boolean | undefined;
378
363
  networkAccess?: boolean | undefined;
379
364
  allowedPaths?: string[] | undefined;
365
+ includeDirectories?: string[] | undefined;
380
366
  }>>;
381
367
  }, "strip", z.ZodTypeAny, {
382
368
  sandbox?: {
383
369
  enabled: boolean;
384
370
  networkAccess: boolean;
385
371
  allowedPaths: string[];
372
+ includeDirectories: string[];
386
373
  command?: "docker" | "podman" | "sandbox-exec" | "runsc" | "lxc" | "windows-native" | undefined;
387
374
  image?: string | undefined;
388
375
  } | undefined;
@@ -393,6 +380,7 @@ export declare const ConfigSchema: z.ZodObject<{
393
380
  enabled?: boolean | undefined;
394
381
  networkAccess?: boolean | undefined;
395
382
  allowedPaths?: string[] | undefined;
383
+ includeDirectories?: string[] | undefined;
396
384
  } | undefined;
397
385
  }>;
398
386
  /**
@@ -490,6 +478,8 @@ export interface ConfigParameters {
490
478
  trustedFolder?: boolean;
491
479
  useBackgroundColor?: boolean;
492
480
  useAlternateBuffer?: boolean;
481
+ useTerminalBuffer?: boolean;
482
+ useRenderProcess?: boolean;
493
483
  useRipgrep?: boolean;
494
484
  enableInteractiveShell?: boolean;
495
485
  shellBackgroundCompletionBehavior?: string;
@@ -506,6 +496,7 @@ export interface ConfigParameters {
506
496
  policyUpdateConfirmationRequest?: PolicyUpdateConfirmationRequest;
507
497
  output?: OutputSettings;
508
498
  gemmaModelRouter?: GemmaModelRouterSettings;
499
+ adk?: ADKSettings;
509
500
  disableModelRouterForAuth?: AuthType[];
510
501
  continueOnFailedApiCall?: boolean;
511
502
  retryFetchErrors?: boolean;
@@ -674,6 +665,8 @@ export declare class Config implements McpContext, AgentLoopContext {
674
665
  private readonly skipNextSpeakerCheck;
675
666
  private readonly useBackgroundColor;
676
667
  private readonly useAlternateBuffer;
668
+ private readonly useTerminalBuffer;
669
+ private readonly useRenderProcess;
677
670
  private shellExecutionConfig;
678
671
  private readonly extensionManagement;
679
672
  private readonly extensionRegistryURI;
@@ -692,6 +685,8 @@ export declare class Config implements McpContext, AgentLoopContext {
692
685
  private policyUpdateConfirmationRequest;
693
686
  private readonly outputSettings;
694
687
  private readonly gemmaModelRouter;
688
+ private readonly agentSessionNoninteractiveEnabled;
689
+ private readonly agentSessionInteractiveEnabled;
695
690
  private readonly continueOnFailedApiCall;
696
691
  private readonly retryFetchErrors;
697
692
  private readonly maxAttempts;
@@ -705,8 +700,8 @@ export declare class Config implements McpContext, AgentLoopContext {
705
700
  private readonly acceptRawOutputRisk;
706
701
  private readonly dynamicModelConfiguration;
707
702
  private pendingIncludeDirectories;
708
- private readonly enableHooks;
709
703
  private readonly enableHooksUI;
704
+ private readonly enableHooks;
710
705
  private hooks;
711
706
  private projectHooks;
712
707
  private disabledHooks;
@@ -731,7 +726,7 @@ export declare class Config implements McpContext, AgentLoopContext {
731
726
  private readonly trackerEnabled;
732
727
  private readonly planModeRoutingEnabled;
733
728
  private readonly modelSteering;
734
- private contextManager?;
729
+ private memoryContextManager?;
735
730
  private readonly contextManagement;
736
731
  private terminalBackground;
737
732
  private remoteAdminSettings;
@@ -912,9 +907,9 @@ export declare class Config implements McpContext, AgentLoopContext {
912
907
  getSessionMemory(): string;
913
908
  getGlobalMemory(): string;
914
909
  getEnvironmentMemory(): string;
915
- getContextManager(): ContextManager | undefined;
910
+ getMemoryContextManager(): MemoryContextManager | undefined;
916
911
  isJitContextEnabled(): boolean;
917
- isAutoDistillationEnabled(): boolean;
912
+ isContextManagementEnabled(): boolean;
918
913
  getMemoryBoundaryMarkers(): readonly string[];
919
914
  isMemoryManagerEnabled(): boolean;
920
915
  getContextManagementConfig(): ContextManagementConfig;
@@ -1107,6 +1102,10 @@ export declare class Config implements McpContext, AgentLoopContext {
1107
1102
  * getGemini31Launched instead.
1108
1103
  */
1109
1104
  getGemini31LaunchedSync(): boolean;
1105
+ /**
1106
+ * Returns the configured default request timeout in milliseconds.
1107
+ */
1108
+ getRequestTimeoutMs(): number | undefined;
1110
1109
  /**
1111
1110
  * Returns whether Gemini 3.1 Flash Lite has been launched.
1112
1111
  *
@@ -1130,6 +1129,8 @@ export declare class Config implements McpContext, AgentLoopContext {
1130
1129
  getUseRipgrep(): boolean;
1131
1130
  getUseBackgroundColor(): boolean;
1132
1131
  getUseAlternateBuffer(): boolean;
1132
+ getUseTerminalBuffer(): boolean;
1133
+ getUseRenderProcess(): boolean;
1133
1134
  getEnableInteractiveShell(): boolean;
1134
1135
  getShellBackgroundCompletionBehavior(): 'inject' | 'notify' | 'silent';
1135
1136
  getSkipNextSpeakerCheck(): boolean;
@@ -1156,6 +1157,8 @@ export declare class Config implements McpContext, AgentLoopContext {
1156
1157
  getEnableHooksUI(): boolean;
1157
1158
  getGemmaModelRouterEnabled(): boolean;
1158
1159
  getGemmaModelRouterSettings(): GemmaModelRouterSettings;
1160
+ getAgentSessionNoninteractiveEnabled(): boolean;
1161
+ getAgentSessionInteractiveEnabled(): boolean;
1159
1162
  /**
1160
1163
  * Get override settings for a specific agent.
1161
1164
  * Reads from agents.overrides.<agentName>.
@@ -30,6 +30,7 @@ import { UpdateTopicTool } from '../tools/topicTool.js';
30
30
  import { TopicState } from './topicState.js';
31
31
  import { ExitPlanModeTool } from '../tools/exit-plan-mode.js';
32
32
  import { EnterPlanModeTool } from '../tools/enter-plan-mode.js';
33
+ import { ListBackgroundProcessesTool, ReadBackgroundOutputTool, } from '../tools/shellBackgroundTools.js';
33
34
  import { GeminiClient } from '../core/client.js';
34
35
  import { BaseLlmClient } from '../core/baseLlmClient.js';
35
36
  import { LocalLiteRtLmClient } from '../core/localLiteRtLmClient.js';
@@ -54,9 +55,10 @@ import { ModelRouterService } from '../routing/modelRouterService.js';
54
55
  import { OutputFormat } from '../output/types.js';
55
56
  import { ModelConfigService, } from '../services/modelConfigService.js';
56
57
  import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
57
- import { ContextManager } from '../context/contextManager.js';
58
+ import { MemoryContextManager } from '../context/memoryContextManager.js';
58
59
  import { TrackerService } from '../services/trackerService.js';
59
60
  import { WorkspaceContext } from '../utils/workspaceContext.js';
61
+ import { getWorkspaceContextOverride } from './scoped-config.js';
60
62
  import { Storage } from './storage.js';
61
63
  import { FileExclusions } from '../utils/ignorePatterns.js';
62
64
  import { MessageBus } from '../confirmation-bus/message-bus.js';
@@ -67,7 +69,7 @@ import { getCodeAssistServer } from '../code_assist/codeAssist.js';
67
69
  import { getExperiments, } from '../code_assist/experiments/experiments.js';
68
70
  import { AgentRegistry } from '../agents/registry.js';
69
71
  import { AcknowledgedAgentsService } from '../agents/acknowledgedAgents.js';
70
- import { setGlobalProxy } from '../utils/fetch.js';
72
+ import { setGlobalProxy, updateGlobalFetchTimeouts } from '../utils/fetch.js';
71
73
  import { SubagentTool } from '../agents/subagent-tool.js';
72
74
  import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
73
75
  import { debugLogger } from '../utils/debugLogger.js';
@@ -171,6 +173,7 @@ export const ConfigSchema = z.object({
171
173
  .object({
172
174
  enabled: z.boolean().default(false),
173
175
  allowedPaths: z.array(z.string()).default([]),
176
+ includeDirectories: z.array(z.string()).default([]),
174
177
  networkAccess: z.boolean().default(false),
175
178
  command: z
176
179
  .enum([
@@ -312,6 +315,8 @@ export class Config {
312
315
  skipNextSpeakerCheck;
313
316
  useBackgroundColor;
314
317
  useAlternateBuffer;
318
+ useTerminalBuffer;
319
+ useRenderProcess;
315
320
  shellExecutionConfig;
316
321
  extensionManagement = true;
317
322
  extensionRegistryURI;
@@ -330,6 +335,8 @@ export class Config {
330
335
  policyUpdateConfirmationRequest;
331
336
  outputSettings;
332
337
  gemmaModelRouter;
338
+ agentSessionNoninteractiveEnabled;
339
+ agentSessionInteractiveEnabled;
333
340
  continueOnFailedApiCall;
334
341
  retryFetchErrors;
335
342
  maxAttempts;
@@ -343,8 +350,8 @@ export class Config {
343
350
  acceptRawOutputRisk;
344
351
  dynamicModelConfiguration;
345
352
  pendingIncludeDirectories;
346
- enableHooks;
347
353
  enableHooksUI;
354
+ enableHooks;
348
355
  hooks;
349
356
  projectHooks;
350
357
  disabledHooks;
@@ -369,7 +376,7 @@ export class Config {
369
376
  trackerEnabled;
370
377
  planModeRoutingEnabled;
371
378
  modelSteering;
372
- contextManager;
379
+ memoryContextManager;
373
380
  contextManagement;
374
381
  terminalBackground = undefined;
375
382
  remoteAdminSettings;
@@ -388,6 +395,11 @@ export class Config {
388
395
  ? {
389
396
  enabled: params.sandbox.enabled || params.toolSandboxing || false,
390
397
  allowedPaths: params.sandbox.allowedPaths ?? [],
398
+ includeDirectories: [
399
+ ...(params.sandbox.includeDirectories ?? []),
400
+ ...(params.sandbox.allowedPaths ?? []),
401
+ Storage.getGlobalTempDir(),
402
+ ],
391
403
  networkAccess: params.sandbox.networkAccess ?? false,
392
404
  command: params.sandbox.command,
393
405
  image: params.sandbox.image,
@@ -395,6 +407,7 @@ export class Config {
395
407
  : {
396
408
  enabled: params.toolSandboxing || false,
397
409
  allowedPaths: [],
410
+ includeDirectories: [Storage.getGlobalTempDir()],
398
411
  networkAccess: false,
399
412
  };
400
413
  this.targetDir = path.resolve(params.targetDir);
@@ -411,11 +424,14 @@ export class Config {
411
424
  this._sandboxManager = createSandboxManager(this.sandbox, {
412
425
  workspace: this.targetDir,
413
426
  forbiddenPaths: this.getSandboxForbiddenPaths.bind(this),
414
- includeDirectories: this.pendingIncludeDirectories,
427
+ includeDirectories: [
428
+ ...this.pendingIncludeDirectories,
429
+ Storage.getGlobalTempDir(),
430
+ ],
415
431
  policyManager: this._sandboxPolicyManager,
416
432
  }, initialApprovalMode);
417
433
  if (!(this._sandboxManager instanceof NoopSandboxManager) &&
418
- this.sandbox.enabled) {
434
+ this.sandbox?.enabled) {
419
435
  this.fileSystemService = new SandboxedFileSystemService(this._sandboxManager, params.targetDir);
420
436
  }
421
437
  else {
@@ -594,6 +610,8 @@ export class Config {
594
610
  this.useRipgrep = params.useRipgrep ?? true;
595
611
  this.useBackgroundColor = params.useBackgroundColor ?? true;
596
612
  this.useAlternateBuffer = params.useAlternateBuffer ?? false;
613
+ this.useTerminalBuffer = params.useTerminalBuffer ?? false;
614
+ this.useRenderProcess = params.useRenderProcess ?? true;
597
615
  this.enableInteractiveShell = params.enableInteractiveShell ?? false;
598
616
  const requestedBehavior = params.shellBackgroundCompletionBehavior;
599
617
  if (requestedBehavior === 'inject' || requestedBehavior === 'notify') {
@@ -679,6 +697,10 @@ export class Config {
679
697
  model: params.gemmaModelRouter?.classifier?.model ?? 'gemma3-1b-gpu-custom',
680
698
  },
681
699
  };
700
+ this.agentSessionNoninteractiveEnabled =
701
+ params.adk?.agentSessionNoninteractiveEnabled ?? false;
702
+ this.agentSessionInteractiveEnabled =
703
+ params.adk?.agentSessionInteractiveEnabled ?? false;
682
704
  this.retryFetchErrors = params.retryFetchErrors ?? true;
683
705
  this.maxAttempts = Math.min(params.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, DEFAULT_MAX_ATTEMPTS);
684
706
  this.disableYoloMode = params.disableYoloMode ?? false;
@@ -805,8 +827,8 @@ export class Config {
805
827
  await this.hookSystem.initialize();
806
828
  }
807
829
  if (this.experimentalJitContext) {
808
- this.contextManager = new ContextManager(this);
809
- await this.contextManager.refresh();
830
+ this.memoryContextManager = new MemoryContextManager(this);
831
+ await this.memoryContextManager.refresh();
810
832
  }
811
833
  await this._geminiClient.initialize();
812
834
  this.initialized = true;
@@ -835,8 +857,6 @@ export class Config {
835
857
  this.contentGenerator = await createContentGenerator(newContentGeneratorConfig, this, this.getSessionId());
836
858
  // Only assign to instance properties after successful initialization
837
859
  this.contentGeneratorConfig = newContentGeneratorConfig;
838
- // Initialize BaseLlmClient now that the ContentGenerator is available
839
- this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
840
860
  const codeAssistServer = getCodeAssistServer(this);
841
861
  const quotaPromise = codeAssistServer?.projectId
842
862
  ? this.refreshUserQuota()
@@ -850,6 +870,14 @@ export class Config {
850
870
  debugLogger.error('Failed to fetch experiments', e);
851
871
  return undefined;
852
872
  });
873
+ // Fetch experiments and update timeouts before continuing initialization
874
+ const experiments = await this.experimentsPromise;
875
+ const requestTimeoutMs = this.getRequestTimeoutMs();
876
+ if (requestTimeoutMs !== undefined) {
877
+ updateGlobalFetchTimeouts(requestTimeoutMs);
878
+ }
879
+ // Initialize BaseLlmClient now that the ContentGenerator and experiments are available
880
+ this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
853
881
  await quotaPromise;
854
882
  const authType = this.contentGeneratorConfig.authType;
855
883
  if (authType === AuthType.USE_GEMINI ||
@@ -862,8 +890,6 @@ export class Config {
862
890
  this.hasAccessToPreviewModel === false) {
863
891
  this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
864
892
  }
865
- // Fetch admin controls
866
- const experiments = await this.experimentsPromise;
867
893
  const adminControlsEnabled = experiments?.flags[ExperimentFlags.ENABLE_ADMIN_CONTROLS]?.boolValue ??
868
894
  false;
869
895
  const adminControls = await fetchAdminControls(codeAssistServer, this.getRemoteAdminSettings(), adminControlsEnabled, (newSettings) => {
@@ -897,6 +923,9 @@ export class Config {
897
923
  getBaseLlmClient() {
898
924
  if (!this.baseLlmClient) {
899
925
  // Handle cases where initialization might be deferred or authentication failed
926
+ if (!this.experiments) {
927
+ throw new Error('BaseLlmClient not initialized. Ensure experiments have been fetched and configuration is ready.');
928
+ }
900
929
  if (this.contentGenerator) {
901
930
  this.baseLlmClient = new BaseLlmClient(this.getContentGenerator(), this);
902
931
  }
@@ -964,6 +993,10 @@ export class Config {
964
993
  this._sandboxManager = createSandboxManager(this.sandbox, {
965
994
  workspace: this.targetDir,
966
995
  forbiddenPaths: this.getSandboxForbiddenPaths.bind(this),
996
+ includeDirectories: [
997
+ ...this.pendingIncludeDirectories,
998
+ Storage.getGlobalTempDir(),
999
+ ],
967
1000
  policyManager: this._sandboxPolicyManager,
968
1001
  }, this.getApprovalMode());
969
1002
  this.shellExecutionConfig.sandboxManager = this._sandboxManager;
@@ -1160,7 +1193,12 @@ export class Config {
1160
1193
  return this.sandbox?.enabled ?? false;
1161
1194
  }
1162
1195
  getSandboxAllowedPaths() {
1163
- return this.sandbox?.allowedPaths ?? [];
1196
+ const paths = [...(this.sandbox?.allowedPaths ?? [])];
1197
+ const globalTempDir = Storage.getGlobalTempDir();
1198
+ if (!paths.includes(globalTempDir)) {
1199
+ paths.push(globalTempDir);
1200
+ }
1201
+ return paths;
1164
1202
  }
1165
1203
  getSandboxNetworkAccess() {
1166
1204
  return this.sandbox?.networkAccess ?? false;
@@ -1181,7 +1219,7 @@ export class Config {
1181
1219
  return this.targetDir;
1182
1220
  }
1183
1221
  getWorkspaceContext() {
1184
- return this.workspaceContext;
1222
+ return getWorkspaceContextOverride() ?? this.workspaceContext;
1185
1223
  }
1186
1224
  getAgentRegistry() {
1187
1225
  return this.agentRegistry;
@@ -1388,12 +1426,12 @@ export class Config {
1388
1426
  this.mcpServers = mcpServers;
1389
1427
  }
1390
1428
  getUserMemory() {
1391
- if (this.experimentalJitContext && this.contextManager) {
1429
+ if (this.experimentalJitContext && this.memoryContextManager) {
1392
1430
  return {
1393
- global: this.contextManager.getGlobalMemory(),
1394
- extension: this.contextManager.getExtensionMemory(),
1395
- project: this.contextManager.getEnvironmentMemory(),
1396
- userProjectMemory: this.contextManager.getUserProjectMemory(),
1431
+ global: this.memoryContextManager.getGlobalMemory(),
1432
+ extension: this.memoryContextManager.getExtensionMemory(),
1433
+ project: this.memoryContextManager.getEnvironmentMemory(),
1434
+ userProjectMemory: this.memoryContextManager.getUserProjectMemory(),
1397
1435
  };
1398
1436
  }
1399
1437
  return this.userMemory;
@@ -1402,8 +1440,8 @@ export class Config {
1402
1440
  * Refreshes the MCP context, including memory, tools, and system instructions.
1403
1441
  */
1404
1442
  async refreshMcpContext() {
1405
- if (this.experimentalJitContext && this.contextManager) {
1406
- await this.contextManager.refresh();
1443
+ if (this.experimentalJitContext && this.memoryContextManager) {
1444
+ await this.memoryContextManager.refresh();
1407
1445
  }
1408
1446
  else {
1409
1447
  const { refreshServerHierarchicalMemory } = await import('../utils/memoryDiscovery.js');
@@ -1426,9 +1464,9 @@ export class Config {
1426
1464
  * via system instruction updates.
1427
1465
  */
1428
1466
  getSystemInstructionMemory() {
1429
- if (this.experimentalJitContext && this.contextManager) {
1430
- const global = this.contextManager.getGlobalMemory();
1431
- const userProjectMemory = this.contextManager.getUserProjectMemory();
1467
+ if (this.experimentalJitContext && this.memoryContextManager) {
1468
+ const global = this.memoryContextManager.getGlobalMemory();
1469
+ const userProjectMemory = this.memoryContextManager.getUserProjectMemory();
1432
1470
  if (userProjectMemory?.trim()) {
1433
1471
  return { global, userProjectMemory };
1434
1472
  }
@@ -1442,12 +1480,12 @@ export class Config {
1442
1480
  * disabled (Tier 2 memory is already in the system instruction).
1443
1481
  */
1444
1482
  getSessionMemory() {
1445
- if (!this.experimentalJitContext || !this.contextManager) {
1483
+ if (!this.experimentalJitContext || !this.memoryContextManager) {
1446
1484
  return '';
1447
1485
  }
1448
1486
  const sections = [];
1449
- const extension = this.contextManager.getExtensionMemory();
1450
- const project = this.contextManager.getEnvironmentMemory();
1487
+ const extension = this.memoryContextManager.getExtensionMemory();
1488
+ const project = this.memoryContextManager.getEnvironmentMemory();
1451
1489
  if (extension?.trim()) {
1452
1490
  sections.push(`<extension_context>\n${extension.trim()}\n</extension_context>`);
1453
1491
  }
@@ -1459,18 +1497,18 @@ export class Config {
1459
1497
  return `\n<loaded_context>\n${sections.join('\n')}\n</loaded_context>`;
1460
1498
  }
1461
1499
  getGlobalMemory() {
1462
- return this.contextManager?.getGlobalMemory() ?? '';
1500
+ return this.memoryContextManager?.getGlobalMemory() ?? '';
1463
1501
  }
1464
1502
  getEnvironmentMemory() {
1465
- return this.contextManager?.getEnvironmentMemory() ?? '';
1503
+ return this.memoryContextManager?.getEnvironmentMemory() ?? '';
1466
1504
  }
1467
- getContextManager() {
1468
- return this.contextManager;
1505
+ getMemoryContextManager() {
1506
+ return this.memoryContextManager;
1469
1507
  }
1470
1508
  isJitContextEnabled() {
1471
1509
  return this.experimentalJitContext;
1472
1510
  }
1473
- isAutoDistillationEnabled() {
1511
+ isContextManagementEnabled() {
1474
1512
  return this.contextManagement.enabled;
1475
1513
  }
1476
1514
  getMemoryBoundaryMarkers() {
@@ -1484,8 +1522,6 @@ export class Config {
1484
1522
  }
1485
1523
  get agentHistoryProviderConfig() {
1486
1524
  return {
1487
- isTruncationEnabled: this.contextManagement.enabled,
1488
- isSummarizationEnabled: this.contextManagement.enabled,
1489
1525
  maxTokens: this.contextManagement.historyWindow.maxTokens,
1490
1526
  retainedTokens: this.contextManagement.historyWindow.retainedTokens,
1491
1527
  normalMessageTokens: this.contextManagement.messageLimits.normalMaxTokens,
@@ -1527,8 +1563,8 @@ export class Config {
1527
1563
  };
1528
1564
  }
1529
1565
  getGeminiMdFileCount() {
1530
- if (this.experimentalJitContext && this.contextManager) {
1531
- return this.contextManager.getLoadedPaths().size;
1566
+ if (this.experimentalJitContext && this.memoryContextManager) {
1567
+ return this.memoryContextManager.getLoadedPaths().size;
1532
1568
  }
1533
1569
  return this.geminiMdFileCount;
1534
1570
  }
@@ -1536,8 +1572,8 @@ export class Config {
1536
1572
  this.geminiMdFileCount = count;
1537
1573
  }
1538
1574
  getGeminiMdFilePaths() {
1539
- if (this.experimentalJitContext && this.contextManager) {
1540
- return Array.from(this.contextManager.getLoadedPaths());
1575
+ if (this.experimentalJitContext && this.memoryContextManager) {
1576
+ return Array.from(this.memoryContextManager.getLoadedPaths());
1541
1577
  }
1542
1578
  return this.geminiMdFilePaths;
1543
1579
  }
@@ -2046,6 +2082,19 @@ export class Config {
2046
2082
  return (this.experiments?.flags[ExperimentFlags.GEMINI_3_1_PRO_LAUNCHED]
2047
2083
  ?.boolValue ?? false);
2048
2084
  }
2085
+ /**
2086
+ * Returns the configured default request timeout in milliseconds.
2087
+ */
2088
+ getRequestTimeoutMs() {
2089
+ const flag = this.experiments?.flags?.[ExperimentFlags.DEFAULT_REQUEST_TIMEOUT];
2090
+ if (flag?.intValue !== undefined) {
2091
+ const seconds = parseInt(flag.intValue, 10);
2092
+ if (Number.isInteger(seconds) && seconds >= 0) {
2093
+ return seconds * 1000; // Convert seconds to milliseconds
2094
+ }
2095
+ }
2096
+ return undefined;
2097
+ }
2049
2098
  /**
2050
2099
  * Returns whether Gemini 3.1 Flash Lite has been launched.
2051
2100
  *
@@ -2134,6 +2183,12 @@ export class Config {
2134
2183
  getUseAlternateBuffer() {
2135
2184
  return this.useAlternateBuffer;
2136
2185
  }
2186
+ getUseTerminalBuffer() {
2187
+ return this.useTerminalBuffer;
2188
+ }
2189
+ getUseRenderProcess() {
2190
+ return this.useRenderProcess;
2191
+ }
2137
2192
  getEnableInteractiveShell() {
2138
2193
  return this.enableInteractiveShell;
2139
2194
  }
@@ -2228,6 +2283,12 @@ export class Config {
2228
2283
  getGemmaModelRouterSettings() {
2229
2284
  return this.gemmaModelRouter;
2230
2285
  }
2286
+ getAgentSessionNoninteractiveEnabled() {
2287
+ return this.agentSessionNoninteractiveEnabled;
2288
+ }
2289
+ getAgentSessionInteractiveEnabled() {
2290
+ return this.agentSessionInteractiveEnabled;
2291
+ }
2231
2292
  /**
2232
2293
  * Get override settings for a specific agent.
2233
2294
  * Reads from agents.overrides.<agentName>.
@@ -2318,6 +2379,8 @@ export class Config {
2318
2379
  maybeRegister(WriteFileTool, () => registry.registerTool(new WriteFileTool(this, this.messageBus)));
2319
2380
  maybeRegister(WebFetchTool, () => registry.registerTool(new WebFetchTool(this, this.messageBus)));
2320
2381
  maybeRegister(ShellTool, () => registry.registerTool(new ShellTool(this, this.messageBus)));
2382
+ maybeRegister(ListBackgroundProcessesTool, () => registry.registerTool(new ListBackgroundProcessesTool(this, this.messageBus)));
2383
+ maybeRegister(ReadBackgroundOutputTool, () => registry.registerTool(new ReadBackgroundOutputTool(this, this.messageBus)));
2321
2384
  if (!this.isMemoryManagerEnabled()) {
2322
2385
  maybeRegister(MemoryTool, () => registry.registerTool(new MemoryTool(this.messageBus, this.storage)));
2323
2386
  }