@google/gemini-cli-core 0.37.2 → 0.38.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.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
@@ -21,6 +21,8 @@ using System.Text;
21
21
  */
22
22
  public class GeminiSandbox {
23
23
  // P/Invoke constants and structures
24
+ private const int JobObjectExtendedLimitInformation = 9;
25
+ private const int JobObjectNetRateControlInformation = 32;
24
26
  private const uint JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000;
25
27
  private const uint JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400;
26
28
  private const uint JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008;
@@ -74,6 +76,9 @@ public class GeminiSandbox {
74
76
  [DllImport("kernel32.dll", SetLastError = true)]
75
77
  static extern bool AssignProcessToJobObject(IntPtr hJob, IntPtr hProcess);
76
78
 
79
+ [DllImport("kernel32.dll", SetLastError = true)]
80
+ static extern uint ResumeThread(IntPtr hThread);
81
+
77
82
  [DllImport("advapi32.dll", SetLastError = true)]
78
83
  static extern bool OpenProcessToken(IntPtr ProcessHandle, uint DesiredAccess, out IntPtr TokenHandle);
79
84
 
@@ -158,8 +163,8 @@ public class GeminiSandbox {
158
163
 
159
164
  static int Main(string[] args) {
160
165
  if (args.Length < 3) {
161
- Console.WriteLine("Usage: GeminiSandbox.exe <network:0|1> <cwd> [--forbidden-manifest <path>] <command> [args...]");
162
- Console.WriteLine("Internal commands: __read <path>, __write <path>");
166
+ Console.Error.WriteLine("Usage: GeminiSandbox.exe <network:0|1> <cwd> [--forbidden-manifest <path>] <command> [args...]");
167
+ Console.Error.WriteLine("Internal commands: __read <path>, __write <path>");
163
168
  return 1;
164
169
  }
165
170
 
@@ -183,7 +188,7 @@ public class GeminiSandbox {
183
188
  }
184
189
 
185
190
  if (argIndex >= args.Length) {
186
- Console.WriteLine("Error: Missing command");
191
+ Console.Error.WriteLine("Error: Missing command");
187
192
  return 1;
188
193
  }
189
194
 
@@ -191,23 +196,25 @@ public class GeminiSandbox {
191
196
 
192
197
  IntPtr hToken = IntPtr.Zero;
193
198
  IntPtr hRestrictedToken = IntPtr.Zero;
194
- IntPtr lowIntegritySid = IntPtr.Zero;
199
+ IntPtr hJob = IntPtr.Zero;
200
+ PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
195
201
 
196
202
  try {
197
203
  // 1. Duplicate Primary Token
198
204
  if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, out hToken)) {
199
- Console.WriteLine("Error: OpenProcessToken failed (" + Marshal.GetLastWin32Error() + ")");
205
+ Console.Error.WriteLine("Error: OpenProcessToken failed (" + Marshal.GetLastWin32Error() + ")");
200
206
  return 1;
201
207
  }
202
208
 
203
209
  // Create a restricted token to strip administrative privileges
204
210
  if (!CreateRestrictedToken(hToken, DISABLE_MAX_PRIVILEGE, 0, IntPtr.Zero, 0, IntPtr.Zero, 0, IntPtr.Zero, out hRestrictedToken)) {
205
- Console.WriteLine("Error: CreateRestrictedToken failed (" + Marshal.GetLastWin32Error() + ")");
211
+ Console.Error.WriteLine("Error: CreateRestrictedToken failed (" + Marshal.GetLastWin32Error() + ")");
206
212
  return 1;
207
213
  }
208
214
 
209
215
  // 2. Lower Integrity Level to Low
210
216
  // S-1-16-4096 is the SID for "Low Mandatory Level"
217
+ IntPtr lowIntegritySid = IntPtr.Zero;
211
218
  if (ConvertStringSidToSid("S-1-16-4096", out lowIntegritySid)) {
212
219
  TOKEN_MANDATORY_LABEL tml = new TOKEN_MANDATORY_LABEL();
213
220
  tml.Label.Sid = lowIntegritySid;
@@ -217,7 +224,7 @@ public class GeminiSandbox {
217
224
  try {
218
225
  Marshal.StructureToPtr(tml, pTml, false);
219
226
  if (!SetTokenInformation(hRestrictedToken, TokenIntegrityLevel, pTml, (uint)tmlSize)) {
220
- Console.WriteLine("Error: SetTokenInformation failed (" + Marshal.GetLastWin32Error() + ")");
227
+ Console.Error.WriteLine("Error: SetTokenInformation failed (" + Marshal.GetLastWin32Error() + ")");
221
228
  return 1;
222
229
  }
223
230
  } finally {
@@ -226,31 +233,48 @@ public class GeminiSandbox {
226
233
  }
227
234
 
228
235
  // 3. Setup Job Object for cleanup
229
- IntPtr hJob = CreateJobObject(IntPtr.Zero, null);
236
+ hJob = CreateJobObject(IntPtr.Zero, null);
237
+ if (hJob == IntPtr.Zero) {
238
+ Console.Error.WriteLine("Error: CreateJobObject failed (" + Marshal.GetLastWin32Error() + ")");
239
+ return 1;
240
+ }
241
+
230
242
  JOBOBJECT_EXTENDED_LIMIT_INFORMATION jobLimits = new JOBOBJECT_EXTENDED_LIMIT_INFORMATION();
231
243
  jobLimits.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE | JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION;
232
-
244
+
233
245
  IntPtr lpJobLimits = Marshal.AllocHGlobal(Marshal.SizeOf(jobLimits));
234
- Marshal.StructureToPtr(jobLimits, lpJobLimits, false);
235
- SetInformationJobObject(hJob, 9 /* JobObjectExtendedLimitInformation */, lpJobLimits, (uint)Marshal.SizeOf(jobLimits));
236
- Marshal.FreeHGlobal(lpJobLimits);
246
+ try {
247
+ Marshal.StructureToPtr(jobLimits, lpJobLimits, false);
248
+ if (!SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, lpJobLimits, (uint)Marshal.SizeOf(jobLimits))) {
249
+ Console.Error.WriteLine("Error: SetInformationJobObject(Limits) failed (" + Marshal.GetLastWin32Error() + ")");
250
+ return 1;
251
+ }
252
+ } finally {
253
+ Marshal.FreeHGlobal(lpJobLimits);
254
+ }
237
255
 
238
256
  if (!networkAccess) {
239
257
  JOBOBJECT_NET_RATE_CONTROL_INFORMATION netLimits = new JOBOBJECT_NET_RATE_CONTROL_INFORMATION();
240
258
  netLimits.MaxBandwidth = 1;
241
259
  netLimits.ControlFlags = 0x1 | 0x2; // ENABLE | MAX_BANDWIDTH
242
260
  netLimits.DscpTag = 0;
243
-
261
+
244
262
  IntPtr lpNetLimits = Marshal.AllocHGlobal(Marshal.SizeOf(netLimits));
245
- Marshal.StructureToPtr(netLimits, lpNetLimits, false);
246
- SetInformationJobObject(hJob, 32 /* JobObjectNetRateControlInformation */, lpNetLimits, (uint)Marshal.SizeOf(netLimits));
247
- Marshal.FreeHGlobal(lpNetLimits);
263
+ try {
264
+ Marshal.StructureToPtr(netLimits, lpNetLimits, false);
265
+ if (!SetInformationJobObject(hJob, JobObjectNetRateControlInformation, lpNetLimits, (uint)Marshal.SizeOf(netLimits))) {
266
+ // Some versions of Windows might not support network rate control, but we should know if it fails.
267
+ Console.Error.WriteLine("Warning: SetInformationJobObject(NetRate) failed (" + Marshal.GetLastWin32Error() + "). Network might not be throttled.");
268
+ }
269
+ } finally {
270
+ Marshal.FreeHGlobal(lpNetLimits);
271
+ }
248
272
  }
249
273
 
250
274
  // 4. Handle Internal Commands or External Process
251
275
  if (command == "__read") {
252
276
  if (argIndex + 1 >= args.Length) {
253
- Console.WriteLine("Error: Missing path for __read");
277
+ Console.Error.WriteLine("Error: Missing path for __read");
254
278
  return 1;
255
279
  }
256
280
  string path = args[argIndex + 1];
@@ -269,24 +293,31 @@ public class GeminiSandbox {
269
293
  });
270
294
  } else if (command == "__write") {
271
295
  if (argIndex + 1 >= args.Length) {
272
- Console.WriteLine("Error: Missing path for __write");
296
+ Console.Error.WriteLine("Error: Missing path for __write");
273
297
  return 1;
274
298
  }
275
299
  string path = args[argIndex + 1];
276
300
  CheckForbidden(path, forbiddenPaths);
277
- return RunInImpersonation(hRestrictedToken, () => {
278
- try {
279
- using (StreamReader reader = new StreamReader(Console.OpenStandardInput(), System.Text.Encoding.UTF8))
280
- using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None))
281
- using (StreamWriter writer = new StreamWriter(fs, System.Text.Encoding.UTF8)) {
282
- writer.Write(reader.ReadToEnd());
301
+
302
+ try {
303
+ using (MemoryStream ms = new MemoryStream()) {
304
+ // Buffer stdin before impersonation (as restricted token can't read the inherited pipe).
305
+ using (Stream stdin = Console.OpenStandardInput()) {
306
+ stdin.CopyTo(ms);
283
307
  }
284
- return 0;
285
- } catch (Exception e) {
286
- Console.Error.WriteLine("Error writing file: " + e.Message);
287
- return 1;
308
+
309
+ return RunInImpersonation(hRestrictedToken, () => {
310
+ using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None)) {
311
+ ms.Position = 0;
312
+ ms.CopyTo(fs);
313
+ }
314
+ return 0;
315
+ });
288
316
  }
289
- });
317
+ } catch (Exception e) {
318
+ Console.Error.WriteLine("Error during __write: " + e.Message);
319
+ return 1;
320
+ }
290
321
  }
291
322
 
292
323
  // External Process
@@ -303,32 +334,49 @@ public class GeminiSandbox {
303
334
  commandLine += QuoteArgument(args[i]);
304
335
  }
305
336
 
306
- PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
307
- // Creation Flags: 0x04000000 (CREATE_BREAKAWAY_FROM_JOB) to allow job assignment if parent is in job
308
- uint creationFlags = 0;
337
+ // Creation Flags: 0x01000000 (CREATE_BREAKAWAY_FROM_JOB) to allow job assignment if parent is in job
338
+ // 0x00000004 (CREATE_SUSPENDED) to prevent the process from executing before being placed in the job
339
+ uint creationFlags = 0x01000000 | 0x00000004;
309
340
  if (!CreateProcessAsUser(hRestrictedToken, null, commandLine, IntPtr.Zero, IntPtr.Zero, true, creationFlags, IntPtr.Zero, cwd, ref si, out pi)) {
310
- Console.WriteLine("Error: CreateProcessAsUser failed (" + Marshal.GetLastWin32Error() + ") Command: " + commandLine);
341
+ int err = Marshal.GetLastWin32Error();
342
+ Console.Error.WriteLine("Error: CreateProcessAsUser failed (" + err + ") Command: " + commandLine);
343
+ return 1;
344
+ }
345
+
346
+ if (!AssignProcessToJobObject(hJob, pi.hProcess)) {
347
+ int err = Marshal.GetLastWin32Error();
348
+ Console.Error.WriteLine("Error: AssignProcessToJobObject failed (" + err + ") Command: " + commandLine);
349
+ TerminateProcess(pi.hProcess, 1);
311
350
  return 1;
312
351
  }
313
352
 
314
- AssignProcessToJobObject(hJob, pi.hProcess);
353
+ ResumeThread(pi.hThread);
354
+
355
+ if (WaitForSingleObject(pi.hProcess, 0xFFFFFFFF) == 0xFFFFFFFF) {
356
+ int err = Marshal.GetLastWin32Error();
357
+ Console.Error.WriteLine("Error: WaitForSingleObject failed (" + err + ")");
358
+ }
315
359
 
316
- // Wait for exit
317
- uint waitResult = WaitForSingleObject(pi.hProcess, 0xFFFFFFFF);
318
360
  uint exitCode = 0;
319
- GetExitCodeProcess(pi.hProcess, out exitCode);
320
-
321
- CloseHandle(pi.hProcess);
322
- CloseHandle(pi.hThread);
323
- CloseHandle(hJob);
361
+ if (!GetExitCodeProcess(pi.hProcess, out exitCode)) {
362
+ int err = Marshal.GetLastWin32Error();
363
+ Console.Error.WriteLine("Error: GetExitCodeProcess failed (" + err + ")");
364
+ return 1;
365
+ }
324
366
 
325
367
  return (int)exitCode;
326
368
  } finally {
327
369
  if (hToken != IntPtr.Zero) CloseHandle(hToken);
328
370
  if (hRestrictedToken != IntPtr.Zero) CloseHandle(hRestrictedToken);
371
+ if (hJob != IntPtr.Zero) CloseHandle(hJob);
372
+ if (pi.hProcess != IntPtr.Zero) CloseHandle(pi.hProcess);
373
+ if (pi.hThread != IntPtr.Zero) CloseHandle(pi.hThread);
329
374
  }
330
375
  }
331
376
 
377
+ [DllImport("kernel32.dll", SetLastError = true)]
378
+ static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);
379
+
332
380
  [DllImport("kernel32.dll", SetLastError = true)]
333
381
  static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds);
334
382
 
@@ -337,7 +385,7 @@ public class GeminiSandbox {
337
385
 
338
386
  private static int RunInImpersonation(IntPtr hToken, Func<int> action) {
339
387
  if (!ImpersonateLoggedOnUser(hToken)) {
340
- Console.WriteLine("Error: ImpersonateLoggedOnUser failed (" + Marshal.GetLastWin32Error() + ")");
388
+ Console.Error.WriteLine("Error: ImpersonateLoggedOnUser failed (" + Marshal.GetLastWin32Error() + ")");
341
389
  return 1;
342
390
  }
343
391
  try {
@@ -12,14 +12,18 @@ import type { ShellExecutionResult } from '../../services/shellExecutionService.
12
12
  */
13
13
  export declare class WindowsSandboxManager implements SandboxManager {
14
14
  private readonly options;
15
+ static readonly HELPER_EXE = "GeminiSandbox.exe";
15
16
  private readonly helperPath;
16
17
  private initialized;
17
18
  private readonly allowedCache;
18
19
  private readonly deniedCache;
20
+ private readonly denialCache;
19
21
  constructor(options: GlobalSandboxOptions);
20
22
  isKnownSafeCommand(args: string[]): boolean;
21
23
  isDangerousCommand(args: string[]): boolean;
22
24
  parseDenials(result: ShellExecutionResult): ParsedSandboxDenial | undefined;
25
+ getWorkspace(): string;
26
+ getOptions(): GlobalSandboxOptions;
23
27
  /**
24
28
  * Ensures a file or directory exists.
25
29
  */
@@ -7,7 +7,7 @@ import fs from 'node:fs';
7
7
  import path from 'node:path';
8
8
  import os from 'node:os';
9
9
  import { fileURLToPath } from 'node:url';
10
- import { GOVERNANCE_FILES, findSecretFiles, sanitizePaths, tryRealpath, resolveSandboxPaths, } from '../../services/sandboxManager.js';
10
+ import { GOVERNANCE_FILES, findSecretFiles, sanitizePaths, resolveSandboxPaths, } from '../../services/sandboxManager.js';
11
11
  import { sanitizeEnvironment, getSecureSanitizationConfig, } from '../../services/environmentSanitization.js';
12
12
  import { debugLogger } from '../../utils/debugLogger.js';
13
13
  import { spawnAsync, getCommandName } from '../../utils/shell-utils.js';
@@ -15,8 +15,12 @@ import { isNodeError } from '../../utils/errors.js';
15
15
  import { isKnownSafeCommand, isDangerousCommand, isStrictlyApproved, } from './commandSafety.js';
16
16
  import { verifySandboxOverrides } from '../utils/commandUtils.js';
17
17
  import { parseWindowsSandboxDenials } from './windowsSandboxDenialUtils.js';
18
+ import { isSubpath, resolveToRealPath, assertValidPathString, } from '../../utils/paths.js';
19
+ import { createSandboxDenialCache, } from '../utils/sandboxDenialUtils.js';
18
20
  const __filename = fileURLToPath(import.meta.url);
19
21
  const __dirname = path.dirname(__filename);
22
+ // S-1-16-4096 is the SID for "Low Mandatory Level" (Low Integrity)
23
+ const LOW_INTEGRITY_SID = '*S-1-16-4096';
20
24
  /**
21
25
  * A SandboxManager implementation for Windows that uses Restricted Tokens,
22
26
  * Job Objects, and Low Integrity levels for process isolation.
@@ -24,13 +28,15 @@ const __dirname = path.dirname(__filename);
24
28
  */
25
29
  export class WindowsSandboxManager {
26
30
  options;
31
+ static HELPER_EXE = 'GeminiSandbox.exe';
27
32
  helperPath;
28
33
  initialized = false;
29
34
  allowedCache = new Set();
30
35
  deniedCache = new Set();
36
+ denialCache = createSandboxDenialCache();
31
37
  constructor(options) {
32
38
  this.options = options;
33
- this.helperPath = path.resolve(__dirname, 'GeminiSandbox.exe');
39
+ this.helperPath = path.resolve(__dirname, WindowsSandboxManager.HELPER_EXE);
34
40
  }
35
41
  isKnownSafeCommand(args) {
36
42
  const toolName = args[0]?.toLowerCase();
@@ -44,12 +50,19 @@ export class WindowsSandboxManager {
44
50
  return isDangerousCommand(args);
45
51
  }
46
52
  parseDenials(result) {
47
- return parseWindowsSandboxDenials(result);
53
+ return parseWindowsSandboxDenials(result, this.denialCache);
54
+ }
55
+ getWorkspace() {
56
+ return this.options.workspace;
57
+ }
58
+ getOptions() {
59
+ return this.options;
48
60
  }
49
61
  /**
50
62
  * Ensures a file or directory exists.
51
63
  */
52
64
  touch(filePath, isDirectory) {
65
+ assertValidPathString(filePath);
53
66
  try {
54
67
  // If it exists (even as a broken symlink), do nothing
55
68
  if (fs.lstatSync(filePath))
@@ -134,32 +147,10 @@ export class WindowsSandboxManager {
134
147
  const allowOverrides = this.options.modeConfig?.allowOverrides ?? true;
135
148
  // Reject override attempts in plan mode
136
149
  verifySandboxOverrides(allowOverrides, req.policy);
137
- let command = req.command;
138
- let args = req.args;
139
- let targetPathEnv;
140
- // Translate virtual commands for sandboxed file system access
141
- if (command === '__read') {
142
- // Use PowerShell for safe argument passing via env var
143
- targetPathEnv = args[0] || '';
144
- command = 'PowerShell.exe';
145
- args = [
146
- '-NoProfile',
147
- '-NonInteractive',
148
- '-Command',
149
- '& { Get-Content -LiteralPath $env:GEMINI_TARGET_PATH -Raw }',
150
- ];
151
- }
152
- else if (command === '__write') {
153
- // Use PowerShell for piping stdin to a file via env var
154
- targetPathEnv = args[0] || '';
155
- command = 'PowerShell.exe';
156
- args = [
157
- '-NoProfile',
158
- '-NonInteractive',
159
- '-Command',
160
- '& { $Input | Out-File -FilePath $env:GEMINI_TARGET_PATH -Encoding utf8 }',
161
- ];
162
- }
150
+ const command = req.command;
151
+ const args = req.args;
152
+ // Native commands __read and __write are passed directly to GeminiSandbox.exe
153
+ const isYolo = this.options.modeConfig?.yolo ?? false;
163
154
  // Fetch persistent approvals for this command
164
155
  const commandName = await getCommandName(command, args);
165
156
  const persistentPermissions = allowOverrides
@@ -177,7 +168,8 @@ export class WindowsSandboxManager {
177
168
  ...(req.policy?.additionalPermissions?.fileSystem?.write ?? []),
178
169
  ],
179
170
  },
180
- network: persistentPermissions?.network ||
171
+ network: isYolo ||
172
+ persistentPermissions?.network ||
181
173
  req.policy?.additionalPermissions?.network ||
182
174
  false,
183
175
  };
@@ -189,39 +181,54 @@ export class WindowsSandboxManager {
189
181
  }
190
182
  const defaultNetwork = this.options.modeConfig?.network ?? req.policy?.networkAccess ?? false;
191
183
  const networkAccess = defaultNetwork || mergedAdditional.network;
192
- // 1. Handle filesystem permissions for Low Integrity
193
- // Grant "Low Mandatory Level" write access to the workspace.
194
- // If not in readonly mode OR it's a strictly approved pipeline, allow workspace writes
184
+ const { allowed: allowedPaths, forbidden: forbiddenPaths } = await resolveSandboxPaths(this.options, req);
185
+ // Track all roots where Low Integrity write access has been granted.
186
+ // New files created within these roots will inherit the Low label.
187
+ const writableRoots = [];
188
+ // 1. Workspace access
195
189
  const isApproved = allowOverrides
196
190
  ? await isStrictlyApproved(command, args, this.options.modeConfig?.approvedTools)
197
191
  : false;
198
192
  if (!isReadonlyMode || isApproved) {
199
193
  await this.grantLowIntegrityAccess(this.options.workspace);
194
+ writableRoots.push(this.options.workspace);
200
195
  }
201
- const { allowed: allowedPaths, forbidden: forbiddenPaths } = await resolveSandboxPaths(this.options, req);
202
- // Grant "Low Mandatory Level" access to includeDirectories.
196
+ // 2. Globally included directories
203
197
  const includeDirs = sanitizePaths(this.options.includeDirectories);
204
198
  for (const includeDir of includeDirs) {
205
199
  await this.grantLowIntegrityAccess(includeDir);
200
+ writableRoots.push(includeDir);
206
201
  }
207
- // Grant "Low Mandatory Level" read/write access to allowedPaths.
202
+ // 3. Explicitly allowed paths from the request policy
208
203
  for (const allowedPath of allowedPaths) {
209
- const resolved = await tryRealpath(allowedPath);
210
- if (!fs.existsSync(resolved)) {
204
+ const resolved = resolveToRealPath(allowedPath);
205
+ try {
206
+ await fs.promises.access(resolved, fs.constants.F_OK);
207
+ }
208
+ catch {
211
209
  throw new Error(`Sandbox request rejected: Allowed path does not exist: ${resolved}. ` +
212
210
  'On Windows, granular sandbox access can only be granted to existing paths to avoid broad parent directory permissions.');
213
211
  }
214
212
  await this.grantLowIntegrityAccess(resolved);
213
+ writableRoots.push(resolved);
215
214
  }
216
- // Grant "Low Mandatory Level" write access to additional permissions write paths.
215
+ // 4. Additional write paths (e.g. from internal __write command)
217
216
  const additionalWritePaths = sanitizePaths(mergedAdditional.fileSystem?.write);
218
217
  for (const writePath of additionalWritePaths) {
219
- const resolved = await tryRealpath(writePath);
220
- if (!fs.existsSync(resolved)) {
221
- throw new Error(`Sandbox request rejected: Additional write path does not exist: ${resolved}. ` +
222
- 'On Windows, granular sandbox access can only be granted to existing paths to avoid broad parent directory permissions.');
218
+ const resolved = resolveToRealPath(writePath);
219
+ try {
220
+ await fs.promises.access(resolved, fs.constants.F_OK);
221
+ await this.grantLowIntegrityAccess(resolved);
222
+ continue;
223
+ }
224
+ catch {
225
+ // If the file doesn't exist, it's only allowed if it resides within a granted root.
226
+ const isInherited = writableRoots.some((root) => isSubpath(root, resolved));
227
+ if (!isInherited) {
228
+ throw new Error(`Sandbox request rejected: Additional write path does not exist and its parent directory is not allowed: ${resolved}. ` +
229
+ 'On Windows, granular sandbox access can only be granted to existing paths to avoid broad parent directory permissions.');
230
+ }
223
231
  }
224
- await this.grantLowIntegrityAccess(resolved);
225
232
  }
226
233
  // 2. Collect secret files and apply protective ACLs
227
234
  // On Windows, we explicitly deny access to secret files for Low Integrity
@@ -277,15 +284,6 @@ export class WindowsSandboxManager {
277
284
  const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gemini-cli-forbidden-'));
278
285
  const manifestPath = path.join(tempDir, 'manifest.txt');
279
286
  fs.writeFileSync(manifestPath, allForbidden.join('\n'));
280
- // Cleanup on exit
281
- process.on('exit', () => {
282
- try {
283
- fs.rmSync(tempDir, { recursive: true, force: true });
284
- }
285
- catch {
286
- // Ignore errors
287
- }
288
- });
289
287
  // 5. Construct the helper command
290
288
  // GeminiSandbox.exe <network:0|1> <cwd> --forbidden-manifest <path> <command> [args...]
291
289
  const program = this.helperPath;
@@ -298,14 +296,19 @@ export class WindowsSandboxManager {
298
296
  ...args,
299
297
  ];
300
298
  const finalEnv = { ...sanitizedEnv };
301
- if (targetPathEnv !== undefined) {
302
- finalEnv['GEMINI_TARGET_PATH'] = targetPathEnv;
303
- }
304
299
  return {
305
300
  program,
306
301
  args: finalArgs,
307
302
  env: finalEnv,
308
303
  cwd: req.cwd,
304
+ cleanup: () => {
305
+ try {
306
+ fs.rmSync(tempDir, { recursive: true, force: true });
307
+ }
308
+ catch {
309
+ // Ignore errors
310
+ }
311
+ },
309
312
  };
310
313
  }
311
314
  /**
@@ -315,7 +318,7 @@ export class WindowsSandboxManager {
315
318
  if (os.platform() !== 'win32') {
316
319
  return;
317
320
  }
318
- const resolvedPath = await tryRealpath(targetPath);
321
+ const resolvedPath = resolveToRealPath(targetPath);
319
322
  if (this.allowedCache.has(resolvedPath)) {
320
323
  return;
321
324
  }
@@ -331,8 +334,12 @@ export class WindowsSandboxManager {
331
334
  return;
332
335
  }
333
336
  try {
337
+ // 1. Grant explicit Modify access to the Low Integrity SID
338
+ // 2. Set the Mandatory Label to Low to allow "Write Up" from Low processes
334
339
  await spawnAsync('icacls', [
335
340
  resolvedPath,
341
+ '/grant',
342
+ `${LOW_INTEGRITY_SID}:(OI)(CI)(M)`,
336
343
  '/setintegritylevel',
337
344
  '(OI)(CI)Low',
338
345
  ]);
@@ -349,7 +356,7 @@ export class WindowsSandboxManager {
349
356
  if (os.platform() !== 'win32') {
350
357
  return;
351
358
  }
352
- const resolvedPath = await tryRealpath(targetPath);
359
+ const resolvedPath = resolveToRealPath(targetPath);
353
360
  if (this.deniedCache.has(resolvedPath)) {
354
361
  return;
355
362
  }
@@ -357,8 +364,6 @@ export class WindowsSandboxManager {
357
364
  if (this.isSystemDirectory(resolvedPath)) {
358
365
  return;
359
366
  }
360
- // S-1-16-4096 is the SID for "Low Mandatory Level" (Low Integrity)
361
- const LOW_INTEGRITY_SID = '*S-1-16-4096';
362
367
  // icacls flags: (OI) Object Inherit, (CI) Container Inherit, (F) Full Access Deny.
363
368
  // Omit /T (recursive) for performance; (OI)(CI) ensures inheritance for new items.
364
369
  // Windows dynamically evaluates existing items, though deep explicit Allow ACEs
@@ -1 +1 @@
1
- {"version":3,"file":"WindowsSandboxManager.js","sourceRoot":"","sources":["../../../../src/sandbox/windows/WindowsSandboxManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WindowsSandboxManager.js","sourceRoot":"","sources":["../../../../src/sandbox/windows/WindowsSandboxManager.ts"],"names":[],"mappings":"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"}