@google/gemini-cli-core 0.36.0-preview.8 → 0.37.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.
- package/dist/docs/CONTRIBUTING.md +10 -7
- package/dist/docs/assets/theme-tokyonight-dark.png +0 -0
- package/dist/docs/changelogs/index.md +24 -0
- package/dist/docs/changelogs/latest.md +366 -459
- package/dist/docs/changelogs/preview.md +362 -356
- package/dist/docs/cli/acp-mode.md +126 -0
- package/dist/docs/cli/cli-reference.md +1 -1
- package/dist/docs/cli/notifications.md +5 -5
- package/dist/docs/cli/plan-mode.md +12 -8
- package/dist/docs/cli/sandbox.md +1 -1
- package/dist/docs/cli/settings.md +14 -13
- package/dist/docs/cli/themes.md +5 -0
- package/dist/docs/core/index.md +2 -2
- package/dist/docs/core/subagents.md +134 -23
- package/dist/docs/get-started/gemini-3.md +1 -1
- package/dist/docs/get-started/index.md +127 -1
- package/dist/docs/ide-integration/index.md +99 -24
- package/dist/docs/index.md +0 -2
- package/dist/docs/redirects.json +1 -0
- package/dist/docs/reference/commands.md +1 -3
- package/dist/docs/reference/configuration.md +182 -91
- package/dist/docs/reference/keyboard-shortcuts.md +14 -6
- package/dist/docs/reference/policy-engine.md +16 -30
- package/dist/docs/reference/tools.md +56 -23
- package/dist/docs/resources/quota-and-pricing.md +23 -9
- package/dist/docs/sidebar.json +11 -4
- package/dist/docs/tools/planning.md +6 -4
- package/dist/src/agents/agentLoader.d.ts +12 -12
- package/dist/src/agents/agentLoader.js +1 -0
- package/dist/src/agents/agentLoader.js.map +1 -1
- package/dist/src/agents/browser/automationOverlay.js +2 -10
- package/dist/src/agents/browser/automationOverlay.js.map +1 -1
- package/dist/src/agents/browser/browserAgentDefinition.js +10 -3
- package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -1
- package/dist/src/agents/browser/browserAgentFactory.d.ts +4 -4
- package/dist/src/agents/browser/browserAgentFactory.js +15 -29
- package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
- package/dist/src/agents/browser/browserAgentFactory.test.js +41 -24
- package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
- package/dist/src/agents/browser/browserAgentInvocation.d.ts +1 -0
- package/dist/src/agents/browser/browserAgentInvocation.js +60 -27
- package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
- package/dist/src/agents/browser/browserAgentInvocation.test.js +59 -5
- package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
- package/dist/src/agents/browser/browserManager.d.ts +51 -8
- package/dist/src/agents/browser/browserManager.js +242 -70
- package/dist/src/agents/browser/browserManager.js.map +1 -1
- package/dist/src/agents/browser/browserManager.test.js +384 -17
- package/dist/src/agents/browser/browserManager.test.js.map +1 -1
- package/dist/src/agents/browser/inputBlocker.d.ts +4 -4
- package/dist/src/agents/browser/inputBlocker.js +8 -18
- package/dist/src/agents/browser/inputBlocker.js.map +1 -1
- package/dist/src/agents/browser/inputBlocker.test.js +31 -3
- package/dist/src/agents/browser/inputBlocker.test.js.map +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.d.ts +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.js +9 -6
- package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.test.js +2 -2
- package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -1
- package/dist/src/agents/browser/snapshotSuperseder.d.ts +31 -0
- package/dist/src/agents/browser/snapshotSuperseder.js +101 -0
- package/dist/src/agents/browser/snapshotSuperseder.js.map +1 -0
- package/dist/src/agents/browser/snapshotSuperseder.test.js +158 -0
- package/dist/src/agents/browser/snapshotSuperseder.test.js.map +1 -0
- package/dist/src/agents/local-executor.d.ts +4 -0
- package/dist/src/agents/local-executor.js +46 -19
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +118 -18
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.d.ts +1 -0
- package/dist/src/agents/local-invocation.js +19 -9
- package/dist/src/agents/local-invocation.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +24 -0
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/registry.js +16 -1
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +67 -0
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/types.d.ts +9 -0
- package/dist/src/agents/types.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +8 -3
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +57 -0
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/setup.js +5 -2
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +27 -1
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +80 -80
- package/dist/src/config/agent-loop-context.d.ts +2 -0
- package/dist/src/config/config.d.ts +81 -16
- package/dist/src/config/config.js +146 -50
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +89 -2
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +9 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/memory.d.ts +1 -0
- package/dist/src/config/memory.js +6 -0
- package/dist/src/config/memory.js.map +1 -1
- package/dist/src/config/storage.d.ts +1 -0
- package/dist/src/config/storage.js +4 -0
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +5 -0
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/config/topicState.d.ts +21 -0
- package/dist/src/config/topicState.js +41 -0
- package/dist/src/config/topicState.js.map +1 -0
- package/dist/src/confirmation-bus/types.d.ts +9 -2
- package/dist/src/confirmation-bus/types.js +1 -0
- package/dist/src/confirmation-bus/types.js.map +1 -1
- package/dist/src/context/agentHistoryProvider.d.ts +45 -0
- package/dist/src/context/agentHistoryProvider.js +298 -0
- package/dist/src/context/agentHistoryProvider.js.map +1 -0
- package/dist/src/context/agentHistoryProvider.test.d.ts +6 -0
- package/dist/src/context/agentHistoryProvider.test.js +394 -0
- package/dist/src/context/agentHistoryProvider.test.js.map +1 -0
- package/dist/src/context/chatCompressionService.js.map +1 -0
- package/dist/src/context/chatCompressionService.test.js.map +1 -0
- package/dist/src/{services → context}/contextManager.d.ts +2 -0
- package/dist/src/{services → context}/contextManager.js +18 -9
- package/dist/src/context/contextManager.js.map +1 -0
- package/dist/src/{services → context}/contextManager.test.js +21 -6
- package/dist/src/context/contextManager.test.js.map +1 -0
- package/dist/src/context/toolDistillationService.d.ts +38 -0
- package/dist/src/context/toolDistillationService.js +170 -0
- package/dist/src/context/toolDistillationService.js.map +1 -0
- package/dist/src/context/toolDistillationService.test.d.ts +6 -0
- package/dist/src/context/toolDistillationService.test.js +83 -0
- package/dist/src/context/toolDistillationService.test.js.map +1 -0
- package/dist/src/{services → context}/toolOutputMaskingService.d.ts +2 -2
- package/dist/src/{services → context}/toolOutputMaskingService.js +7 -7
- package/dist/src/context/toolOutputMaskingService.js.map +1 -0
- package/dist/src/context/toolOutputMaskingService.test.d.ts +6 -0
- package/dist/src/{services → context}/toolOutputMaskingService.test.js +4 -5
- package/dist/src/context/toolOutputMaskingService.test.js.map +1 -0
- package/dist/src/context/truncation.d.ts +26 -0
- package/dist/src/context/truncation.js +102 -0
- package/dist/src/context/truncation.js.map +1 -0
- package/dist/src/core/client.d.ts +3 -1
- package/dist/src/core/client.js +23 -13
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +29 -34
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +0 -1
- package/dist/src/core/contentGenerator.js +2 -28
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +1 -101
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/geminiChat.js +4 -5
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +71 -18
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/prompts-substitution.test.js +5 -0
- package/dist/src/core/prompts-substitution.test.js.map +1 -1
- package/dist/src/core/prompts.test.js +3 -0
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/index.d.ts +7 -3
- package/dist/src/index.js +9 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/policy/config.d.ts +1 -1
- package/dist/src/policy/config.js +5 -2
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/policies/discovered.toml +7 -0
- package/dist/src/policy/policies/non-interactive.toml +7 -0
- package/dist/src/policy/policies/plan.toml +25 -0
- package/dist/src/policy/policies/read-only.toml +6 -0
- package/dist/src/policy/policies/sandbox-default.toml +3 -2
- package/dist/src/policy/policies/write.toml +21 -0
- package/dist/src/policy/policies/yolo.toml +1 -1
- package/dist/src/policy/policy-engine.d.ts +2 -4
- package/dist/src/policy/policy-engine.js +24 -37
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +107 -29
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/topic-policy.test.d.ts +6 -0
- package/dist/src/policy/topic-policy.test.js +48 -0
- package/dist/src/policy/topic-policy.test.js.map +1 -0
- package/dist/src/policy/types.d.ts +3 -6
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/prompts/promptProvider.js +20 -4
- package/dist/src/prompts/promptProvider.js.map +1 -1
- package/dist/src/prompts/promptProvider.test.js +84 -1
- package/dist/src/prompts/promptProvider.test.js.map +1 -1
- package/dist/src/prompts/snippets-memory-manager.test.js +1 -1
- package/dist/src/prompts/snippets-memory-manager.test.js.map +1 -1
- package/dist/src/prompts/snippets.d.ts +3 -4
- package/dist/src/prompts/snippets.js +33 -51
- package/dist/src/prompts/snippets.js.map +1 -1
- package/dist/src/prompts/snippets.legacy.d.ts +6 -4
- package/dist/src/prompts/snippets.legacy.js +32 -7
- package/dist/src/prompts/snippets.legacy.js.map +1 -1
- package/dist/src/sandbox/linux/LinuxSandboxManager.d.ts +11 -1
- package/dist/src/sandbox/linux/LinuxSandboxManager.js +261 -27
- package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
- package/dist/src/sandbox/linux/LinuxSandboxManager.test.js +430 -125
- package/dist/src/sandbox/linux/LinuxSandboxManager.test.js.map +1 -1
- package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +7 -22
- package/dist/src/sandbox/macos/MacOsSandboxManager.js +58 -57
- package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
- package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +148 -103
- package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -1
- package/dist/src/sandbox/macos/baseProfile.d.ts +1 -1
- package/dist/src/sandbox/macos/baseProfile.js +0 -6
- package/dist/src/sandbox/macos/baseProfile.js.map +1 -1
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.d.ts +10 -10
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +80 -92
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +135 -99
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -1
- package/dist/src/sandbox/{macos → utils}/commandSafety.d.ts +11 -0
- package/dist/src/sandbox/{macos → utils}/commandSafety.js +47 -14
- package/dist/src/sandbox/utils/commandSafety.js.map +1 -0
- package/dist/src/sandbox/utils/commandUtils.d.ts +9 -0
- package/dist/src/sandbox/utils/commandUtils.js +57 -0
- package/dist/src/sandbox/utils/commandUtils.js.map +1 -0
- package/dist/src/sandbox/utils/fsUtils.d.ts +11 -0
- package/dist/src/sandbox/utils/fsUtils.js +82 -0
- package/dist/src/sandbox/utils/fsUtils.js.map +1 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.d.ts +12 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.js +68 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.js.map +1 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.test.d.ts +6 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.test.js +37 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.test.js.map +1 -0
- package/dist/src/sandbox/utils/sandboxReadWriteUtils.d.ts +5 -0
- package/dist/src/sandbox/utils/sandboxReadWriteUtils.js +60 -0
- package/dist/src/sandbox/utils/sandboxReadWriteUtils.js.map +1 -0
- package/dist/src/sandbox/windows/GeminiSandbox.cs +257 -216
- package/dist/src/sandbox/windows/WindowsSandboxManager.d.ts +12 -2
- package/dist/src/sandbox/windows/WindowsSandboxManager.js +250 -38
- package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
- package/dist/src/sandbox/windows/WindowsSandboxManager.test.js +326 -9
- package/dist/src/sandbox/windows/WindowsSandboxManager.test.js.map +1 -1
- package/dist/src/sandbox/windows/commandSafety.d.ts +19 -0
- package/dist/src/sandbox/windows/commandSafety.js +128 -0
- package/dist/src/sandbox/windows/commandSafety.js.map +1 -0
- package/dist/src/sandbox/windows/commandSafety.test.d.ts +6 -0
- package/dist/src/sandbox/windows/commandSafety.test.js +42 -0
- package/dist/src/sandbox/windows/commandSafety.test.js.map +1 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.d.ts +12 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js +68 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js.map +1 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.d.ts +6 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js +68 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js.map +1 -0
- package/dist/src/scheduler/scheduler.js +12 -2
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/scheduler/scheduler.test.js +52 -0
- package/dist/src/scheduler/scheduler.test.js.map +1 -1
- package/dist/src/scheduler/scheduler_hooks.test.js +1 -0
- package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
- package/dist/src/scheduler/state-manager.js +1 -1
- package/dist/src/scheduler/state-manager.js.map +1 -1
- package/dist/src/scheduler/state-manager.test.js +10 -0
- package/dist/src/scheduler/state-manager.test.js.map +1 -1
- package/dist/src/scheduler/tool-executor.js +7 -2
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/tool-executor.test.js +38 -0
- package/dist/src/scheduler/tool-executor.test.js.map +1 -1
- package/dist/src/scheduler/types.d.ts +4 -2
- package/dist/src/services/chatRecordingService.d.ts +1 -13
- package/dist/src/services/chatRecordingService.js +45 -46
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +79 -10
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/executionLifecycleService.d.ts +43 -6
- package/dist/src/services/executionLifecycleService.js +49 -12
- package/dist/src/services/executionLifecycleService.js.map +1 -1
- package/dist/src/services/executionLifecycleService.test.js +157 -3
- package/dist/src/services/executionLifecycleService.test.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +17 -2
- package/dist/src/services/fileDiscoveryService.js +84 -20
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +67 -1
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/modelConfigService.d.ts +11 -0
- package/dist/src/services/modelConfigService.js +67 -0
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/modelConfigService.test.js +30 -0
- package/dist/src/services/modelConfigService.test.js.map +1 -1
- package/dist/src/services/sandboxManager.d.ts +90 -8
- package/dist/src/services/sandboxManager.integration.test.js +438 -0
- package/dist/src/services/sandboxManager.integration.test.js.map +1 -0
- package/dist/src/services/sandboxManager.js +156 -13
- package/dist/src/services/sandboxManager.js.map +1 -1
- package/dist/src/services/sandboxManager.test.js +373 -117
- package/dist/src/services/sandboxManager.test.js.map +1 -1
- package/dist/src/services/sandboxManagerFactory.d.ts +2 -3
- package/dist/src/services/sandboxManagerFactory.js +10 -17
- package/dist/src/services/sandboxManagerFactory.js.map +1 -1
- package/dist/src/services/sandboxedFileSystemService.d.ts +1 -0
- package/dist/src/services/sandboxedFileSystemService.js +32 -3
- package/dist/src/services/sandboxedFileSystemService.js.map +1 -1
- package/dist/src/services/sandboxedFileSystemService.test.js +83 -12
- package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +2 -0
- package/dist/src/services/shellExecutionService.js +45 -16
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +5 -4
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +4 -0
- package/dist/src/services/test-data/resolved-aliases.golden.json +4 -0
- package/dist/src/services/types.d.ts +14 -0
- package/dist/src/services/types.js +7 -0
- package/dist/src/services/types.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +6 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +5 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +3 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.js +1 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +8 -3
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +10 -1
- package/dist/src/telemetry/metrics.js +19 -4
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +44 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +3 -3
- package/dist/src/telemetry/types.js +9 -4
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/mock-message-bus.d.ts +1 -1
- package/dist/src/test-utils/mock-message-bus.js +1 -1
- package/dist/src/test-utils/mock-message-bus.js.map +1 -1
- package/dist/src/tools/definitions/base-declarations.d.ts +6 -0
- package/dist/src/tools/definitions/base-declarations.js +7 -0
- package/dist/src/tools/definitions/base-declarations.js.map +1 -1
- package/dist/src/tools/definitions/coreTools.d.ts +2 -1
- package/dist/src/tools/definitions/coreTools.js +9 -3
- package/dist/src/tools/definitions/coreTools.js.map +1 -1
- package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +4 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js +29 -2
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +11 -6
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js +10 -4
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
- package/dist/src/tools/definitions/trackerTools.js +3 -3
- package/dist/src/tools/definitions/trackerTools.js.map +1 -1
- package/dist/src/tools/definitions/types.d.ts +1 -0
- package/dist/src/tools/enter-plan-mode.js +15 -0
- package/dist/src/tools/enter-plan-mode.js.map +1 -1
- package/dist/src/tools/enter-plan-mode.test.js +25 -0
- package/dist/src/tools/enter-plan-mode.test.js.map +1 -1
- package/dist/src/tools/grep-utils.d.ts +2 -1
- package/dist/src/tools/grep-utils.js +22 -3
- package/dist/src/tools/grep-utils.js.map +1 -1
- package/dist/src/tools/grep.js +16 -3
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +34 -6
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.js +6 -4
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +22 -7
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.js +6 -3
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +35 -0
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +9 -2
- package/dist/src/tools/memoryTool.js +39 -15
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +61 -2
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/read-many-files.js +12 -4
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +17 -17
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.js +14 -1
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +9 -9
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +10 -0
- package/dist/src/tools/shell.js +97 -124
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +22 -3
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +4 -4
- package/dist/src/tools/tool-names.js +5 -3
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-registry.js +11 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +43 -1
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +12 -1
- package/dist/src/tools/tools.js +15 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +42 -1
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/topicTool.d.ts +29 -0
- package/dist/src/tools/topicTool.js +72 -0
- package/dist/src/tools/topicTool.js.map +1 -0
- package/dist/src/tools/topicTool.test.d.ts +6 -0
- package/dist/src/tools/topicTool.test.js +105 -0
- package/dist/src/tools/topicTool.test.js.map +1 -0
- package/dist/src/tools/web-fetch.js +38 -20
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +28 -0
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/utils/checkpointUtils.d.ts +4 -4
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +28 -6
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +23 -0
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/getFolderStructure.js +1 -1
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.d.ts +2 -2
- package/dist/src/utils/gitIgnoreParser.js +28 -50
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +51 -185
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
- package/dist/src/utils/ignoreFileParser.d.ts +2 -2
- package/dist/src/utils/ignoreFileParser.js +6 -17
- package/dist/src/utils/ignoreFileParser.js.map +1 -1
- package/dist/src/utils/ignoreFileParser.test.js +40 -132
- package/dist/src/utils/ignoreFileParser.test.js.map +1 -1
- package/dist/src/utils/ignorePathUtils.d.ts +11 -0
- package/dist/src/utils/ignorePathUtils.js +39 -0
- package/dist/src/utils/ignorePathUtils.js.map +1 -0
- package/dist/src/utils/ignorePathUtils.test.d.ts +6 -0
- package/dist/src/utils/ignorePathUtils.test.js +70 -0
- package/dist/src/utils/ignorePathUtils.test.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +6 -4
- package/dist/src/utils/memoryDiscovery.js +66 -41
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +40 -0
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.d.ts +1 -1
- package/dist/src/utils/memoryImportProcessor.js +24 -15
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/sessionOperations.d.ts +19 -0
- package/dist/src/utils/sessionOperations.js +101 -0
- package/dist/src/utils/sessionOperations.js.map +1 -0
- package/dist/src/utils/sessionOperations.test.d.ts +6 -0
- package/dist/src/utils/sessionOperations.test.js +92 -0
- package/dist/src/utils/sessionOperations.test.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +15 -0
- package/dist/src/utils/shell-utils.js +43 -2
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/textUtils.d.ts +8 -0
- package/dist/src/utils/textUtils.js +16 -0
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/tokenCalculation.d.ts +2 -0
- package/dist/src/utils/tokenCalculation.js +2 -2
- package/dist/src/utils/tokenCalculation.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/docs/get-started/examples.md +0 -141
- package/dist/google-gemini-cli-core-0.36.0-preview.7.tgz +0 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js +0 -164
- package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js.map +0 -1
- package/dist/src/sandbox/macos/commandSafety.js.map +0 -1
- package/dist/src/services/chatCompressionService.js.map +0 -1
- package/dist/src/services/chatCompressionService.test.js.map +0 -1
- package/dist/src/services/contextManager.js.map +0 -1
- package/dist/src/services/contextManager.test.js.map +0 -1
- package/dist/src/services/toolOutputMaskingService.js.map +0 -1
- package/dist/src/services/toolOutputMaskingService.test.js.map +0 -1
- /package/dist/src/{services/toolOutputMaskingService.test.d.ts → agents/browser/snapshotSuperseder.test.d.ts} +0 -0
- /package/dist/src/{services → context}/chatCompressionService.d.ts +0 -0
- /package/dist/src/{services → context}/chatCompressionService.js +0 -0
- /package/dist/src/{services → context}/chatCompressionService.test.d.ts +0 -0
- /package/dist/src/{services → context}/chatCompressionService.test.js +0 -0
- /package/dist/src/{services → context}/contextManager.test.d.ts +0 -0
- /package/dist/src/{sandbox/macos/MacOsSandboxManager.integration.test.d.ts → services/sandboxManager.integration.test.d.ts} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { ACTIVATE_SKILL_TOOL_NAME, ASK_USER_TOOL_NAME, EDIT_TOOL_NAME, ENTER_PLAN_MODE_TOOL_NAME, EXIT_PLAN_MODE_TOOL_NAME, GLOB_TOOL_NAME, GREP_TOOL_NAME, MEMORY_TOOL_NAME, READ_FILE_TOOL_NAME, SHELL_PARAM_IS_BACKGROUND, SHELL_TOOL_NAME, TRACKER_CREATE_TASK_TOOL_NAME, TRACKER_LIST_TASKS_TOOL_NAME, TRACKER_UPDATE_TASK_TOOL_NAME, WRITE_FILE_TOOL_NAME, WRITE_TODOS_TOOL_NAME, } from '../tools/tool-names.js';
|
|
6
|
+
import { ACTIVATE_SKILL_TOOL_NAME, ASK_USER_TOOL_NAME, EDIT_TOOL_NAME, ENTER_PLAN_MODE_TOOL_NAME, EXIT_PLAN_MODE_TOOL_NAME, GLOB_TOOL_NAME, GREP_TOOL_NAME, MEMORY_TOOL_NAME, READ_FILE_TOOL_NAME, SHELL_PARAM_IS_BACKGROUND, SHELL_TOOL_NAME, TRACKER_CREATE_TASK_TOOL_NAME, TRACKER_LIST_TASKS_TOOL_NAME, TRACKER_UPDATE_TASK_TOOL_NAME, UPDATE_TOPIC_TOOL_NAME, TOPIC_PARAM_TITLE, TOPIC_PARAM_SUMMARY, WRITE_FILE_TOOL_NAME, WRITE_TODOS_TOOL_NAME, } from '../tools/tool-names.js';
|
|
7
7
|
// --- High Level Composition ---
|
|
8
8
|
/**
|
|
9
9
|
* Composes the core system prompt from its constituent subsections.
|
|
@@ -24,7 +24,7 @@ ${options.planningWorkflow
|
|
|
24
24
|
? renderPlanningWorkflow(options.planningWorkflow)
|
|
25
25
|
: renderPrimaryWorkflows(options.primaryWorkflows)}
|
|
26
26
|
|
|
27
|
-
${options.taskTracker ? renderTaskTracker() : ''}
|
|
27
|
+
${options.taskTracker ? renderTaskTracker(options.taskTracker) : ''}
|
|
28
28
|
|
|
29
29
|
${renderOperationalGuidelines(options.operationalGuidelines)}
|
|
30
30
|
|
|
@@ -70,7 +70,9 @@ export function renderCoreMandates(options) {
|
|
|
70
70
|
- **User Hints:** During execution, the user may provide real-time hints (marked as "User hint:" or "User hints:"). Treat these as high-priority but scope-preserving course corrections: apply the minimal plan change needed, keep unaffected user tasks active, and never cancel/skip tasks unless cancellation is explicit for those tasks. Hints may add new tasks, modify one or more tasks, cancel specific tasks, or provide extra context only. If scope is ambiguous, ask for clarification before dropping work.
|
|
71
71
|
- ${mandateConfirm(options.interactive)}
|
|
72
72
|
- **Explaining Changes:** After completing a code modification or file operation *do not* provide summaries unless asked.
|
|
73
|
-
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.${mandateSkillGuidance(options.hasSkills)}${
|
|
73
|
+
- **Do Not revert changes:** Do not revert changes to the codebase unless asked to do so by the user. Only revert changes made by you if they have resulted in an error or if the user has explicitly asked you to revert the changes.${mandateSkillGuidance(options.hasSkills)}${options.topicUpdateNarration
|
|
74
|
+
? mandateTopicUpdateModel()
|
|
75
|
+
: mandateExplainBeforeActing(options.isGemini3)}${mandateContinueWork(options.interactive)}
|
|
74
76
|
`.trim();
|
|
75
77
|
}
|
|
76
78
|
export function renderSubAgents(subAgents) {
|
|
@@ -157,7 +159,10 @@ ${shellEfficiencyGuidelines(options.enableShellEfficiency)}
|
|
|
157
159
|
## Tone and Style (CLI Interaction)
|
|
158
160
|
- **Concise & Direct:** Adopt a professional, direct, and concise tone suitable for a CLI environment.
|
|
159
161
|
- **Minimal Output:** Aim for fewer than 3 lines of text output (excluding tool use/code generation) per response whenever practical. Focus strictly on the user's query.
|
|
160
|
-
- **Clarity over Brevity (When Needed):** While conciseness is key, prioritize clarity for essential explanations or when seeking necessary clarification if a request is ambiguous.${
|
|
162
|
+
- **Clarity over Brevity (When Needed):** While conciseness is key, prioritize clarity for essential explanations or when seeking necessary clarification if a request is ambiguous.${options.topicUpdateNarration
|
|
163
|
+
? `
|
|
164
|
+
- **No Chitchat:** Avoid conversational filler, preambles ("Okay, I will now..."), or postambles ("I have finished the changes...") unless they are part of the **Topic Model**.`
|
|
165
|
+
: toneAndStyleNoChitchat(options.isGemini3)}
|
|
161
166
|
- **Formatting:** Use GitHub-flavored Markdown. Responses will be rendered in monospace.
|
|
162
167
|
- **Tools vs. Text:** Use tools for actions, text output *only* for communication. Do not add explanatory comments within tool calls or code blocks unless specifically part of the required code/command itself.
|
|
163
168
|
- **Handling Inability:** If unable/unwilling to fulfill a request, state so briefly (1-2 sentences) without excessive justification. Offer alternatives if appropriate.
|
|
@@ -272,6 +277,9 @@ ${trimmed}
|
|
|
272
277
|
if (memory.global?.trim()) {
|
|
273
278
|
sections.push(`<global_context>\n${memory.global.trim()}\n</global_context>`);
|
|
274
279
|
}
|
|
280
|
+
if (memory.userProjectMemory?.trim()) {
|
|
281
|
+
sections.push(`<user_project_memory>\n--- User's Project Memory (private, not committed to repo) ---\n${memory.userProjectMemory.trim()}\n--- End User's Project Memory ---\n</user_project_memory>`);
|
|
282
|
+
}
|
|
275
283
|
if (memory.extension?.trim()) {
|
|
276
284
|
sections.push(`<extension_context>\n${memory.extension.trim()}\n</extension_context>`);
|
|
277
285
|
}
|
|
@@ -346,10 +354,10 @@ An approved plan is available for this task.
|
|
|
346
354
|
- **New Plan:** Only create a new plan file if the user explicitly asks for a "new plan" or if the current request is for a completely different feature or bug.
|
|
347
355
|
`;
|
|
348
356
|
}
|
|
349
|
-
export function renderTaskTracker() {
|
|
357
|
+
export function renderTaskTracker(trackerDir) {
|
|
350
358
|
return `
|
|
351
359
|
# TASK MANAGEMENT PROTOCOL
|
|
352
|
-
You are operating with a persistent file-based task tracking system located at \`.
|
|
360
|
+
You are operating with a persistent file-based task tracking system located at \`${trackerDir}\`. You must adhere to the following rules:
|
|
353
361
|
|
|
354
362
|
1. **NO IN-MEMORY LISTS**: Do not maintain a mental list of tasks or write markdown checkboxes in the chat. Use the provided tools (\`${TRACKER_CREATE_TASK_TOOL_NAME}\`, \`${TRACKER_LIST_TASKS_TOOL_NAME}\`, \`${TRACKER_UPDATE_TASK_TOOL_NAME}\`) for all state management.
|
|
355
363
|
2. **IMMEDIATE DECOMPOSITION**: Upon receiving a task, evaluate its functional complexity and scope. If the request involves more than a single atomic modification, or necessitates research before execution, you MUST immediately decompose it into discrete entries using \`${TRACKER_CREATE_TASK_TOOL_NAME}\`.
|
|
@@ -357,7 +365,8 @@ You are operating with a persistent file-based task tracking system located at \
|
|
|
357
365
|
4. **PLAN MODE INTEGRATION**: If an approved plan exists, you MUST use the \`${TRACKER_CREATE_TASK_TOOL_NAME}\` tool to decompose it into discrete tasks before writing any code. Maintain a bidirectional understanding between the plan document and the task graph.
|
|
358
366
|
5. **VERIFICATION**: Before marking a task as complete, verify the work is actually done (e.g., run the test, check the file existence).
|
|
359
367
|
6. **STATE OVER CHAT**: If the user says "I think we finished that," but the tool says it is 'pending', trust the tool--or verify explicitly before updating.
|
|
360
|
-
7. **DEPENDENCY MANAGEMENT**: Respect task topology. Never attempt to execute a task if its dependencies are not marked as 'closed'. If you are blocked, focus only on the leaf nodes of the task graph
|
|
368
|
+
7. **DEPENDENCY MANAGEMENT**: Respect task topology. Never attempt to execute a task if its dependencies are not marked as 'closed'. If you are blocked, focus only on the leaf nodes of the task graph.
|
|
369
|
+
8. **DETAILED TASKS**: Ensure that the tasks created have highly detailed titles and descriptions. The description MUST provide significantly more specific details and technical context than the title.`.trim();
|
|
361
370
|
}
|
|
362
371
|
// --- Leaf Helpers (Strictly strings or simple calls) ---
|
|
363
372
|
function mandateConfirm(interactive) {
|
|
@@ -365,6 +374,22 @@ function mandateConfirm(interactive) {
|
|
|
365
374
|
? "**Confirm Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request without confirming with the user. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, **ask for confirmation first**. If asked *how* to do something, explain first, don't just do it."
|
|
366
375
|
: '**Handle Ambiguity/Expansion:** Do not take significant actions beyond the clear scope of the request. If the user implies a change (e.g., reports a bug) without explicitly asking for a fix, do not perform it automatically.';
|
|
367
376
|
}
|
|
377
|
+
function mandateTopicUpdateModel() {
|
|
378
|
+
return `
|
|
379
|
+
## Topic Updates
|
|
380
|
+
As you work, the user follows along by reading topic updates that you publish with ${UPDATE_TOPIC_TOOL_NAME}. Keep them informed by doing the following:
|
|
381
|
+
|
|
382
|
+
- Always call ${UPDATE_TOPIC_TOOL_NAME} in your first and last turn. The final turn should always recap what was done.
|
|
383
|
+
- Each topic update should give a concise description of what you are doing for the next few turns in the \`${TOPIC_PARAM_SUMMARY}\` parameter.
|
|
384
|
+
- Provide topic updates whenever you change "topics". A topic is typically a discrete subgoal and will be every 3 to 10 turns. Do not use ${UPDATE_TOPIC_TOOL_NAME} on every turn.
|
|
385
|
+
- The typical user message should call ${UPDATE_TOPIC_TOOL_NAME} 3 or more times. Each corresponds to a distinct phase of the task, such as "Researching X", "Researching Y", "Implementing Z with X", and "Testing Z".
|
|
386
|
+
- Remember to call ${UPDATE_TOPIC_TOOL_NAME} when you experience an unexpected event (e.g., a test failure, compilation error, environment issue, or unexpected learning) that requires a strategic detour.
|
|
387
|
+
- **Examples:**
|
|
388
|
+
- ${UPDATE_TOPIC_TOOL_NAME}(${TOPIC_PARAM_TITLE}="Researching Parser", ${TOPIC_PARAM_SUMMARY}="I am starting an investigation into the parser timeout bug. My goal is to first understand the current test coverage and then attempt to reproduce the failure. This phase will focus on identifying the bottleneck in the main loop before we move to implementation.")
|
|
389
|
+
- ${UPDATE_TOPIC_TOOL_NAME}(${TOPIC_PARAM_TITLE}="Implementing Buffer Fix", ${TOPIC_PARAM_SUMMARY}="I have completed the research phase and identified a race condition in the tokenizer's buffer management. I am now transitioning to implementation. This new chapter will focus on refactoring the buffer logic to handle async chunks safely, followed by unit testing the fix.")
|
|
390
|
+
|
|
391
|
+
`;
|
|
392
|
+
}
|
|
368
393
|
function mandateSkillGuidance(hasSkills) {
|
|
369
394
|
if (!hasSkills)
|
|
370
395
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippets.legacy.js","sourceRoot":"","sources":["../../../src/prompts/snippets.legacy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"snippets.legacy.js","sourceRoot":"","sources":["../../../src/prompts/snippets.legacy.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,22 @@
|
|
|
3
3
|
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { type SandboxManager, type GlobalSandboxOptions, type SandboxRequest, type SandboxedCommand } from '../../services/sandboxManager.js';
|
|
6
|
+
import { type SandboxManager, type GlobalSandboxOptions, type SandboxRequest, type SandboxedCommand, type ParsedSandboxDenial } from '../../services/sandboxManager.js';
|
|
7
|
+
import type { ShellExecutionResult } from '../../services/shellExecutionService.js';
|
|
7
8
|
/**
|
|
8
9
|
* A SandboxManager implementation for Linux that uses Bubblewrap (bwrap).
|
|
9
10
|
*/
|
|
10
11
|
export declare class LinuxSandboxManager implements SandboxManager {
|
|
11
12
|
private readonly options;
|
|
13
|
+
private static maskFilePath;
|
|
12
14
|
constructor(options: GlobalSandboxOptions);
|
|
15
|
+
isKnownSafeCommand(args: string[]): boolean;
|
|
16
|
+
isDangerousCommand(args: string[]): boolean;
|
|
17
|
+
parseDenials(result: ShellExecutionResult): ParsedSandboxDenial | undefined;
|
|
18
|
+
private getMaskFilePath;
|
|
13
19
|
prepareCommand(req: SandboxRequest): Promise<SandboxedCommand>;
|
|
20
|
+
/**
|
|
21
|
+
* Generates bubblewrap arguments to mask secret files.
|
|
22
|
+
*/
|
|
23
|
+
private getSecretFilesArgs;
|
|
14
24
|
}
|
|
@@ -6,8 +6,15 @@
|
|
|
6
6
|
import fs from 'node:fs';
|
|
7
7
|
import { join, dirname, normalize } from 'node:path';
|
|
8
8
|
import os from 'node:os';
|
|
9
|
-
import { GOVERNANCE_FILES, sanitizePaths, } from '../../services/sandboxManager.js';
|
|
9
|
+
import { GOVERNANCE_FILES, getSecretFileFindArgs, sanitizePaths, resolveSandboxPaths, } from '../../services/sandboxManager.js';
|
|
10
10
|
import { sanitizeEnvironment, getSecureSanitizationConfig, } from '../../services/environmentSanitization.js';
|
|
11
|
+
import { debugLogger } from '../../utils/debugLogger.js';
|
|
12
|
+
import { spawnAsync } from '../../utils/shell-utils.js';
|
|
13
|
+
import { isStrictlyApproved, verifySandboxOverrides, getCommandName, } from '../utils/commandUtils.js';
|
|
14
|
+
import { tryRealpath, resolveGitWorktreePaths, isErrnoException, } from '../utils/fsUtils.js';
|
|
15
|
+
import { isKnownSafeCommand, isDangerousCommand, } from '../utils/commandSafety.js';
|
|
16
|
+
import { parsePosixSandboxDenials } from '../utils/sandboxDenialUtils.js';
|
|
17
|
+
import { handleReadWriteCommands } from '../utils/sandboxReadWriteUtils.js';
|
|
11
18
|
let cachedBpfPath;
|
|
12
19
|
function getSeccompBpfPath() {
|
|
13
20
|
if (cachedBpfPath)
|
|
@@ -56,9 +63,19 @@ function getSeccompBpfPath() {
|
|
|
56
63
|
buf.writeUInt8(inst.jf, offset + 3);
|
|
57
64
|
buf.writeUInt32LE(inst.k, offset + 4);
|
|
58
65
|
}
|
|
59
|
-
const
|
|
66
|
+
const tempDir = fs.mkdtempSync(join(os.tmpdir(), 'gemini-cli-seccomp-'));
|
|
67
|
+
const bpfPath = join(tempDir, 'seccomp.bpf');
|
|
60
68
|
fs.writeFileSync(bpfPath, buf);
|
|
61
69
|
cachedBpfPath = bpfPath;
|
|
70
|
+
// Cleanup on exit
|
|
71
|
+
process.on('exit', () => {
|
|
72
|
+
try {
|
|
73
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Ignore errors
|
|
77
|
+
}
|
|
78
|
+
});
|
|
62
79
|
return bpfPath;
|
|
63
80
|
}
|
|
64
81
|
/**
|
|
@@ -86,54 +103,211 @@ function touch(filePath, isDirectory) {
|
|
|
86
103
|
*/
|
|
87
104
|
export class LinuxSandboxManager {
|
|
88
105
|
options;
|
|
106
|
+
static maskFilePath;
|
|
89
107
|
constructor(options) {
|
|
90
108
|
this.options = options;
|
|
91
109
|
}
|
|
110
|
+
isKnownSafeCommand(args) {
|
|
111
|
+
return isKnownSafeCommand(args);
|
|
112
|
+
}
|
|
113
|
+
isDangerousCommand(args) {
|
|
114
|
+
return isDangerousCommand(args);
|
|
115
|
+
}
|
|
116
|
+
parseDenials(result) {
|
|
117
|
+
return parsePosixSandboxDenials(result);
|
|
118
|
+
}
|
|
119
|
+
getMaskFilePath() {
|
|
120
|
+
if (LinuxSandboxManager.maskFilePath &&
|
|
121
|
+
fs.existsSync(LinuxSandboxManager.maskFilePath)) {
|
|
122
|
+
return LinuxSandboxManager.maskFilePath;
|
|
123
|
+
}
|
|
124
|
+
const tempDir = fs.mkdtempSync(join(os.tmpdir(), 'gemini-cli-mask-file-'));
|
|
125
|
+
const maskPath = join(tempDir, 'mask');
|
|
126
|
+
fs.writeFileSync(maskPath, '');
|
|
127
|
+
fs.chmodSync(maskPath, 0);
|
|
128
|
+
LinuxSandboxManager.maskFilePath = maskPath;
|
|
129
|
+
// Cleanup on exit
|
|
130
|
+
process.on('exit', () => {
|
|
131
|
+
try {
|
|
132
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Ignore errors
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return maskPath;
|
|
139
|
+
}
|
|
92
140
|
async prepareCommand(req) {
|
|
141
|
+
const isReadonlyMode = this.options.modeConfig?.readonly ?? true;
|
|
142
|
+
const allowOverrides = this.options.modeConfig?.allowOverrides ?? true;
|
|
143
|
+
verifySandboxOverrides(allowOverrides, req.policy);
|
|
144
|
+
let command = req.command;
|
|
145
|
+
let args = req.args;
|
|
146
|
+
// Translate virtual commands for sandboxed file system access
|
|
147
|
+
if (command === '__read') {
|
|
148
|
+
command = 'cat';
|
|
149
|
+
}
|
|
150
|
+
else if (command === '__write') {
|
|
151
|
+
command = 'sh';
|
|
152
|
+
args = ['-c', 'cat > "$1"', '_', ...args];
|
|
153
|
+
}
|
|
154
|
+
const commandName = await getCommandName({ ...req, command, args });
|
|
155
|
+
const isApproved = allowOverrides
|
|
156
|
+
? await isStrictlyApproved({ ...req, command, args }, this.options.modeConfig?.approvedTools)
|
|
157
|
+
: false;
|
|
158
|
+
const workspaceWrite = !isReadonlyMode || isApproved;
|
|
159
|
+
const networkAccess = this.options.modeConfig?.network || req.policy?.networkAccess || false;
|
|
160
|
+
const persistentPermissions = allowOverrides
|
|
161
|
+
? this.options.policyManager?.getCommandPermissions(commandName)
|
|
162
|
+
: undefined;
|
|
163
|
+
const mergedAdditional = {
|
|
164
|
+
fileSystem: {
|
|
165
|
+
read: [
|
|
166
|
+
...(persistentPermissions?.fileSystem?.read ?? []),
|
|
167
|
+
...(req.policy?.additionalPermissions?.fileSystem?.read ?? []),
|
|
168
|
+
],
|
|
169
|
+
write: [
|
|
170
|
+
...(persistentPermissions?.fileSystem?.write ?? []),
|
|
171
|
+
...(req.policy?.additionalPermissions?.fileSystem?.write ?? []),
|
|
172
|
+
],
|
|
173
|
+
},
|
|
174
|
+
network: networkAccess ||
|
|
175
|
+
persistentPermissions?.network ||
|
|
176
|
+
req.policy?.additionalPermissions?.network ||
|
|
177
|
+
false,
|
|
178
|
+
};
|
|
179
|
+
const { command: finalCommand, args: finalArgs } = handleReadWriteCommands(req, mergedAdditional, this.options.workspace, req.policy?.allowedPaths);
|
|
93
180
|
const sanitizationConfig = getSecureSanitizationConfig(req.policy?.sanitizationConfig);
|
|
94
181
|
const sanitizedEnv = sanitizeEnvironment(req.env, sanitizationConfig);
|
|
95
182
|
const bwrapArgs = [
|
|
96
183
|
'--unshare-all',
|
|
97
184
|
'--new-session', // Isolate session
|
|
98
185
|
'--die-with-parent', // Prevent orphaned runaway processes
|
|
99
|
-
'--ro-bind',
|
|
100
|
-
'/',
|
|
101
|
-
'/',
|
|
102
|
-
'--dev', // Creates a safe, minimal /dev (replaces --dev-bind)
|
|
103
|
-
'/dev',
|
|
104
|
-
'--proc', // Creates a fresh procfs for the unshared PID namespace
|
|
105
|
-
'/proc',
|
|
106
|
-
'--tmpfs', // Provides an isolated, writable /tmp directory
|
|
107
|
-
'/tmp',
|
|
108
|
-
// Note: --dev /dev sets up /dev/pts automatically
|
|
109
|
-
'--bind',
|
|
110
|
-
this.options.workspace,
|
|
111
|
-
this.options.workspace,
|
|
112
186
|
];
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
187
|
+
if (mergedAdditional.network) {
|
|
188
|
+
bwrapArgs.push('--share-net');
|
|
189
|
+
}
|
|
190
|
+
bwrapArgs.push('--ro-bind', '/', '/', '--dev', // Creates a safe, minimal /dev (replaces --dev-bind)
|
|
191
|
+
'/dev', '--proc', // Creates a fresh procfs for the unshared PID namespace
|
|
192
|
+
'/proc', '--tmpfs', // Provides an isolated, writable /tmp directory
|
|
193
|
+
'/tmp');
|
|
194
|
+
const workspacePath = tryRealpath(this.options.workspace);
|
|
195
|
+
const bindFlag = workspaceWrite ? '--bind-try' : '--ro-bind-try';
|
|
196
|
+
if (workspaceWrite) {
|
|
197
|
+
bwrapArgs.push('--bind-try', this.options.workspace, this.options.workspace);
|
|
198
|
+
if (workspacePath !== this.options.workspace) {
|
|
199
|
+
bwrapArgs.push('--bind-try', workspacePath, workspacePath);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
bwrapArgs.push('--ro-bind-try', this.options.workspace, this.options.workspace);
|
|
204
|
+
if (workspacePath !== this.options.workspace) {
|
|
205
|
+
bwrapArgs.push('--ro-bind-try', workspacePath, workspacePath);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const { worktreeGitDir, mainGitDir } = resolveGitWorktreePaths(workspacePath);
|
|
209
|
+
if (worktreeGitDir) {
|
|
210
|
+
bwrapArgs.push(bindFlag, worktreeGitDir, worktreeGitDir);
|
|
211
|
+
}
|
|
212
|
+
if (mainGitDir) {
|
|
213
|
+
bwrapArgs.push(bindFlag, mainGitDir, mainGitDir);
|
|
214
|
+
}
|
|
215
|
+
const includeDirs = sanitizePaths(this.options.includeDirectories);
|
|
216
|
+
for (const includeDir of includeDirs) {
|
|
217
|
+
try {
|
|
218
|
+
const resolved = tryRealpath(includeDir);
|
|
219
|
+
bwrapArgs.push('--ro-bind-try', resolved, resolved);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Ignore
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const { allowed: allowedPaths, forbidden: forbiddenPaths } = await resolveSandboxPaths(this.options, req);
|
|
226
|
+
const normalizedWorkspace = normalize(workspacePath).replace(/\/$/, '');
|
|
227
|
+
for (const allowedPath of allowedPaths) {
|
|
228
|
+
const resolved = tryRealpath(allowedPath);
|
|
229
|
+
if (!fs.existsSync(resolved)) {
|
|
230
|
+
// If the path doesn't exist, we still want to allow access to its parent
|
|
231
|
+
// if it's explicitly allowed, to enable creating it.
|
|
232
|
+
try {
|
|
233
|
+
const resolvedParent = tryRealpath(dirname(resolved));
|
|
234
|
+
bwrapArgs.push(req.command === '__write' ? '--bind-try' : bindFlag, resolvedParent, resolvedParent);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// Ignore
|
|
238
|
+
}
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
const normalizedAllowedPath = normalize(resolved).replace(/\/$/, '');
|
|
242
|
+
if (normalizedAllowedPath !== normalizedWorkspace) {
|
|
243
|
+
bwrapArgs.push('--bind-try', resolved, resolved);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const additionalReads = sanitizePaths(mergedAdditional.fileSystem?.read);
|
|
247
|
+
for (const p of additionalReads) {
|
|
248
|
+
try {
|
|
249
|
+
const safeResolvedPath = tryRealpath(p);
|
|
250
|
+
bwrapArgs.push('--ro-bind-try', safeResolvedPath, safeResolvedPath);
|
|
251
|
+
}
|
|
252
|
+
catch (e) {
|
|
253
|
+
debugLogger.warn(e instanceof Error ? e.message : String(e));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const additionalWrites = sanitizePaths(mergedAdditional.fileSystem?.write);
|
|
257
|
+
for (const p of additionalWrites) {
|
|
258
|
+
try {
|
|
259
|
+
const safeResolvedPath = tryRealpath(p);
|
|
260
|
+
bwrapArgs.push('--bind-try', safeResolvedPath, safeResolvedPath);
|
|
261
|
+
}
|
|
262
|
+
catch (e) {
|
|
263
|
+
debugLogger.warn(e instanceof Error ? e.message : String(e));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
116
266
|
for (const file of GOVERNANCE_FILES) {
|
|
117
267
|
const filePath = join(this.options.workspace, file.path);
|
|
118
268
|
touch(filePath, file.isDirectory);
|
|
119
|
-
const realPath =
|
|
269
|
+
const realPath = tryRealpath(filePath);
|
|
120
270
|
bwrapArgs.push('--ro-bind', filePath, filePath);
|
|
121
271
|
if (realPath !== filePath) {
|
|
122
272
|
bwrapArgs.push('--ro-bind', realPath, realPath);
|
|
123
273
|
}
|
|
124
274
|
}
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
275
|
+
for (const p of forbiddenPaths) {
|
|
276
|
+
let resolved;
|
|
277
|
+
try {
|
|
278
|
+
resolved = tryRealpath(p); // Forbidden paths should still resolve to block the real path
|
|
279
|
+
if (!fs.existsSync(resolved))
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
catch (e) {
|
|
283
|
+
debugLogger.warn(`Failed to resolve forbidden path ${p}: ${e instanceof Error ? e.message : String(e)}`);
|
|
284
|
+
bwrapArgs.push('--ro-bind', '/dev/null', p);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const stat = fs.statSync(resolved);
|
|
289
|
+
if (stat.isDirectory()) {
|
|
290
|
+
bwrapArgs.push('--tmpfs', resolved, '--remount-ro', resolved);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
bwrapArgs.push('--ro-bind', '/dev/null', resolved);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (e) {
|
|
297
|
+
if (isErrnoException(e) && e.code === 'ENOENT') {
|
|
298
|
+
bwrapArgs.push('--symlink', '/dev/null', resolved);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
debugLogger.warn(`Failed to stat forbidden path ${resolved}: ${e instanceof Error ? e.message : String(e)}`);
|
|
302
|
+
bwrapArgs.push('--ro-bind', '/dev/null', resolved);
|
|
303
|
+
}
|
|
131
304
|
}
|
|
132
305
|
}
|
|
133
|
-
//
|
|
306
|
+
// Mask secret files (.env, .env.*)
|
|
307
|
+
bwrapArgs.push(...(await this.getSecretFilesArgs(req.policy?.allowedPaths)));
|
|
134
308
|
const bpfPath = getSeccompBpfPath();
|
|
135
309
|
bwrapArgs.push('--seccomp', '9');
|
|
136
|
-
bwrapArgs.push('--',
|
|
310
|
+
bwrapArgs.push('--', finalCommand, ...finalArgs);
|
|
137
311
|
const shArgs = [
|
|
138
312
|
'-c',
|
|
139
313
|
'bpf_path="$1"; shift; exec bwrap "$@" 9< "$bpf_path"',
|
|
@@ -145,7 +319,67 @@ export class LinuxSandboxManager {
|
|
|
145
319
|
program: 'sh',
|
|
146
320
|
args: shArgs,
|
|
147
321
|
env: sanitizedEnv,
|
|
322
|
+
cwd: req.cwd,
|
|
148
323
|
};
|
|
149
324
|
}
|
|
325
|
+
/**
|
|
326
|
+
* Generates bubblewrap arguments to mask secret files.
|
|
327
|
+
*/
|
|
328
|
+
async getSecretFilesArgs(allowedPaths) {
|
|
329
|
+
const args = [];
|
|
330
|
+
const maskPath = this.getMaskFilePath();
|
|
331
|
+
const paths = sanitizePaths(allowedPaths) || [];
|
|
332
|
+
const searchDirs = new Set([this.options.workspace, ...paths]);
|
|
333
|
+
const findPatterns = getSecretFileFindArgs();
|
|
334
|
+
for (const dir of searchDirs) {
|
|
335
|
+
try {
|
|
336
|
+
// Use the native 'find' command for performance and to catch nested secrets.
|
|
337
|
+
// We limit depth to 3 to keep it fast while covering common nested structures.
|
|
338
|
+
// We use -prune to skip heavy directories efficiently while matching dotfiles.
|
|
339
|
+
const findResult = await spawnAsync('find', [
|
|
340
|
+
dir,
|
|
341
|
+
'-maxdepth',
|
|
342
|
+
'3',
|
|
343
|
+
'-type',
|
|
344
|
+
'd',
|
|
345
|
+
'(',
|
|
346
|
+
'-name',
|
|
347
|
+
'.git',
|
|
348
|
+
'-o',
|
|
349
|
+
'-name',
|
|
350
|
+
'node_modules',
|
|
351
|
+
'-o',
|
|
352
|
+
'-name',
|
|
353
|
+
'.venv',
|
|
354
|
+
'-o',
|
|
355
|
+
'-name',
|
|
356
|
+
'__pycache__',
|
|
357
|
+
'-o',
|
|
358
|
+
'-name',
|
|
359
|
+
'dist',
|
|
360
|
+
'-o',
|
|
361
|
+
'-name',
|
|
362
|
+
'build',
|
|
363
|
+
')',
|
|
364
|
+
'-prune',
|
|
365
|
+
'-o',
|
|
366
|
+
'-type',
|
|
367
|
+
'f',
|
|
368
|
+
...findPatterns,
|
|
369
|
+
'-print0',
|
|
370
|
+
]);
|
|
371
|
+
const files = findResult.stdout.toString().split('\0');
|
|
372
|
+
for (const file of files) {
|
|
373
|
+
if (file.trim()) {
|
|
374
|
+
args.push('--bind', maskPath, file.trim());
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
catch (e) {
|
|
379
|
+
debugLogger.log(`LinuxSandboxManager: Failed to find or mask secret files in ${dir}`, e);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return args;
|
|
383
|
+
}
|
|
150
384
|
}
|
|
151
385
|
//# sourceMappingURL=LinuxSandboxManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinuxSandboxManager.js","sourceRoot":"","sources":["../../../../src/sandbox/linux/LinuxSandboxManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LinuxSandboxManager.js","sourceRoot":"","sources":["../../../../src/sandbox/linux/LinuxSandboxManager.ts"],"names":[],"mappings":"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"}
|