@google/gemini-cli-core 0.35.0-preview.2 → 0.36.0-nightly.20260321.fc03891a1
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/README.md +0 -1
- package/dist/docs/CONTRIBUTING.md +0 -15
- package/dist/docs/admin/enterprise-controls.md +61 -0
- package/dist/docs/changelogs/index.md +11 -0
- package/dist/docs/changelogs/latest.md +459 -209
- package/dist/docs/changelogs/preview.md +355 -454
- package/dist/docs/cli/checkpointing.md +3 -1
- package/dist/docs/cli/cli-reference.md +1 -0
- package/dist/docs/cli/custom-commands.md +7 -5
- package/dist/docs/cli/enterprise.md +15 -9
- package/dist/docs/cli/git-worktrees.md +107 -0
- package/dist/docs/cli/model-steering.md +4 -3
- package/dist/docs/cli/model.md +3 -1
- package/dist/docs/cli/notifications.md +4 -3
- package/dist/docs/cli/plan-mode.md +28 -8
- package/dist/docs/cli/sandbox.md +24 -4
- package/dist/docs/cli/session-management.md +6 -0
- package/dist/docs/cli/settings.md +14 -1
- package/dist/docs/cli/skills.md +4 -2
- package/dist/docs/cli/system-prompt.md +3 -1
- package/dist/docs/cli/telemetry.md +6 -3
- package/dist/docs/cli/themes.md +12 -8
- package/dist/docs/cli/tutorials/file-management.md +8 -6
- package/dist/docs/cli/tutorials/mcp-setup.md +5 -3
- package/dist/docs/cli/tutorials/memory-management.md +6 -6
- package/dist/docs/cli/tutorials/plan-mode-steering.md +4 -3
- package/dist/docs/cli/tutorials/shell-commands.md +3 -3
- package/dist/docs/core/remote-agents.md +8 -3
- package/dist/docs/core/subagents.md +21 -13
- package/dist/docs/extensions/reference.md +8 -3
- package/dist/docs/get-started/authentication.md +60 -50
- package/dist/docs/get-started/examples.md +3 -1
- package/dist/docs/get-started/gemini-3.md +11 -5
- package/dist/docs/hooks/index.md +3 -1
- package/dist/docs/hooks/writing-hooks.md +2 -2
- package/dist/docs/ide-integration/ide-companion-spec.md +5 -3
- package/dist/docs/ide-integration/index.md +8 -4
- package/dist/docs/issue-and-pr-automation.md +3 -1
- package/dist/docs/local-development.md +3 -1
- package/dist/docs/reference/commands.md +2 -2
- package/dist/docs/reference/configuration.md +410 -16
- package/dist/docs/reference/policy-engine.md +47 -19
- package/dist/docs/reference/tools.md +3 -1
- package/dist/docs/release-confidence.md +7 -3
- package/dist/docs/releases.md +11 -7
- package/dist/docs/resources/faq.md +13 -0
- package/dist/docs/resources/tos-privacy.md +4 -2
- package/dist/docs/resources/troubleshooting.md +3 -1
- package/dist/docs/sidebar.json +5 -0
- package/dist/docs/tools/mcp-server.md +17 -9
- package/dist/docs/tools/planning.md +3 -1
- package/dist/docs/tools/shell.md +4 -4
- package/dist/docs/tools/todos.md +2 -1
- package/dist/{google-gemini-cli-core-0.35.0-preview.1.tgz → google-gemini-cli-core-0.36.0-nightly.20260317.2f90b4653.tgz} +0 -0
- package/dist/src/agent/agent-session.d.ts +37 -0
- package/dist/src/agent/agent-session.js +168 -0
- package/dist/src/agent/agent-session.js.map +1 -0
- package/dist/src/agent/agent-session.test.d.ts +6 -0
- package/dist/src/agent/agent-session.test.js +217 -0
- package/dist/src/agent/agent-session.test.js.map +1 -0
- package/dist/src/agent/content-utils.d.ts +33 -0
- package/dist/src/agent/content-utils.js +135 -0
- package/dist/src/agent/content-utils.js.map +1 -0
- package/dist/src/agent/content-utils.test.d.ts +6 -0
- package/dist/src/agent/content-utils.test.js +223 -0
- package/dist/src/agent/content-utils.test.js.map +1 -0
- package/dist/src/agent/mock.d.ts +9 -12
- package/dist/src/agent/mock.js +88 -129
- package/dist/src/agent/mock.js.map +1 -1
- package/dist/src/agent/mock.test.js +114 -144
- package/dist/src/agent/mock.test.js.map +1 -1
- package/dist/src/agent/types.d.ts +21 -21
- package/dist/src/agents/a2a-client-manager.d.ts +2 -11
- package/dist/src/agents/a2a-client-manager.js +3 -19
- package/dist/src/agents/a2a-client-manager.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.test.js +6 -10
- package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
- package/dist/src/agents/agent-scheduler.d.ts +6 -0
- package/dist/src/agents/agent-scheduler.js +3 -2
- package/dist/src/agents/agent-scheduler.js.map +1 -1
- package/dist/src/agents/agent-scheduler.test.js +6 -0
- package/dist/src/agents/agent-scheduler.test.js.map +1 -1
- package/dist/src/agents/browser/browserAgentDefinition.js +10 -1
- package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -1
- package/dist/src/agents/browser/browserAgentFactory.js +62 -1
- package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
- package/dist/src/agents/browser/browserAgentFactory.test.js +73 -0
- package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
- package/dist/src/agents/browser/browserAgentInvocation.js +2 -97
- package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
- package/dist/src/agents/browser/browserAgentInvocation.test.js +30 -0
- package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
- package/dist/src/agents/browser/browserManager.js +11 -0
- package/dist/src/agents/browser/browserManager.js.map +1 -1
- package/dist/src/agents/browser/browserManager.test.js +37 -0
- package/dist/src/agents/browser/browserManager.test.js.map +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.d.ts +4 -2
- package/dist/src/agents/browser/mcpToolWrapper.js +30 -8
- package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.test.js +30 -0
- package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -1
- package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js +3 -3
- package/dist/src/agents/codebase-investigator.js +3 -3
- package/dist/src/agents/codebase-investigator.js.map +1 -1
- package/dist/src/agents/local-executor.d.ts +3 -1
- package/dist/src/agents/local-executor.js +138 -39
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +305 -12
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.js +43 -24
- package/dist/src/agents/local-invocation.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +89 -14
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/memory-manager-agent.d.ts +25 -0
- package/dist/src/agents/memory-manager-agent.js +137 -0
- package/dist/src/agents/memory-manager-agent.js.map +1 -0
- package/dist/src/agents/memory-manager-agent.test.d.ts +6 -0
- package/dist/src/agents/memory-manager-agent.test.js +117 -0
- package/dist/src/agents/memory-manager-agent.test.js.map +1 -0
- package/dist/src/agents/registry.js +21 -3
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +23 -24
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/remote-invocation.d.ts +3 -1
- package/dist/src/agents/remote-invocation.js +10 -5
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/remote-invocation.test.js +64 -41
- package/dist/src/agents/remote-invocation.test.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.js +1 -1
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
- package/dist/src/agents/types.d.ts +12 -0
- package/dist/src/agents/types.js +14 -0
- package/dist/src/agents/types.js.map +1 -1
- package/dist/src/availability/policyHelpers.js +41 -1
- package/dist/src/availability/policyHelpers.js.map +1 -1
- package/dist/src/availability/policyHelpers.test.js +47 -0
- package/dist/src/availability/policyHelpers.test.js.map +1 -1
- package/dist/src/code_assist/admin/admin_controls.js +11 -0
- package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
- package/dist/src/code_assist/admin/admin_controls.test.js +68 -0
- package/dist/src/code_assist/admin/admin_controls.test.js.map +1 -1
- package/dist/src/code_assist/admin/mcpUtils.d.ts +16 -1
- package/dist/src/code_assist/admin/mcpUtils.js +43 -0
- package/dist/src/code_assist/admin/mcpUtils.js.map +1 -1
- package/dist/src/code_assist/admin/mcpUtils.test.js +130 -1
- package/dist/src/code_assist/admin/mcpUtils.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +458 -0
- package/dist/src/code_assist/types.js +26 -0
- package/dist/src/code_assist/types.js.map +1 -1
- package/dist/src/config/agent-loop-context.d.ts +6 -0
- package/dist/src/config/config.d.ts +41 -10
- package/dist/src/config/config.js +96 -19
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +29 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +265 -9
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/models.d.ts +13 -2
- package/dist/src/config/models.js +31 -3
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +52 -7
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/config/path-validation.test.d.ts +6 -0
- package/dist/src/config/path-validation.test.js +59 -0
- package/dist/src/config/path-validation.test.js.map +1 -0
- package/dist/src/core/client.d.ts +1 -0
- package/dist/src/core/client.js +6 -1
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +9 -1
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +36 -6
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +97 -3
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/geminiChat.js +2 -2
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/prompts.test.js +10 -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/generated/git-commit.js.map +1 -1
- package/dist/src/ide/ide-connection-utils.js +2 -7
- package/dist/src/ide/ide-connection-utils.js.map +1 -1
- package/dist/src/ide/ide-connection-utils.test.js +7 -0
- package/dist/src/ide/ide-connection-utils.test.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/policy/config.js +2 -0
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/config.test.js +15 -0
- package/dist/src/policy/config.test.js.map +1 -1
- package/dist/src/policy/memory-manager-policy.test.d.ts +6 -0
- package/dist/src/policy/memory-manager-policy.test.js +80 -0
- package/dist/src/policy/memory-manager-policy.test.js.map +1 -0
- package/dist/src/policy/policies/memory-manager.toml +10 -0
- package/dist/src/policy/policies/plan.toml +14 -0
- package/dist/src/policy/policies/yolo.toml +1 -0
- package/dist/src/policy/policy-engine.js +33 -6
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +85 -3
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/policy-updater.test.js +44 -0
- package/dist/src/policy/policy-updater.test.js.map +1 -1
- package/dist/src/policy/toml-loader.js +2 -0
- package/dist/src/policy/toml-loader.js.map +1 -1
- package/dist/src/policy/types.d.ts +11 -0
- package/dist/src/policy/types.js +5 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/prompts/promptProvider.js +5 -3
- package/dist/src/prompts/promptProvider.js.map +1 -1
- package/dist/src/prompts/promptProvider.test.js +1 -0
- package/dist/src/prompts/promptProvider.test.js.map +1 -1
- package/dist/src/prompts/snippets-memory-manager.test.d.ts +6 -0
- package/dist/src/prompts/snippets-memory-manager.test.js +31 -0
- package/dist/src/prompts/snippets-memory-manager.test.js.map +1 -0
- package/dist/src/prompts/snippets.d.ts +2 -0
- package/dist/src/prompts/snippets.js +7 -3
- package/dist/src/prompts/snippets.js.map +1 -1
- package/dist/src/prompts/snippets.legacy.d.ts +5 -0
- package/dist/src/prompts/snippets.legacy.js +30 -2
- package/dist/src/prompts/snippets.legacy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/defaultStrategy.js +1 -1
- package/dist/src/routing/strategies/defaultStrategy.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
- package/dist/src/routing/strategies/numericalClassifierStrategy.js +1 -1
- package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
- package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +28 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.d.ts +1 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js +160 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js.map +1 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.js +33 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.test.d.ts +1 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +87 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -0
- package/dist/src/sandbox/macos/baseProfile.d.ts +20 -0
- package/dist/src/sandbox/macos/baseProfile.js +93 -0
- package/dist/src/sandbox/macos/baseProfile.js.map +1 -0
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.d.ts +25 -0
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +58 -0
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -0
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.d.ts +1 -0
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +80 -0
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -0
- package/dist/src/scheduler/scheduler.js +2 -0
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/services/contextManager.js +2 -3
- package/dist/src/services/contextManager.js.map +1 -1
- package/dist/src/services/contextManager.test.js +1 -1
- package/dist/src/services/contextManager.test.js.map +1 -1
- package/dist/src/services/modelConfigService.d.ts +36 -1
- package/dist/src/services/modelConfigService.js +66 -0
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/sandboxManager.d.ts +3 -4
- package/dist/src/services/sandboxManager.js +1 -14
- package/dist/src/services/sandboxManager.js.map +1 -1
- package/dist/src/services/sandboxManager.test.js +13 -16
- package/dist/src/services/sandboxManager.test.js.map +1 -1
- package/dist/src/services/sandboxManagerFactory.d.ts +11 -0
- package/dist/src/services/sandboxManagerFactory.js +31 -0
- package/dist/src/services/sandboxManagerFactory.js.map +1 -0
- package/dist/src/services/sandboxedFileSystemService.d.ts +17 -0
- package/dist/src/services/sandboxedFileSystemService.js +95 -0
- package/dist/src/services/sandboxedFileSystemService.js.map +1 -0
- package/dist/src/services/sandboxedFileSystemService.test.d.ts +6 -0
- package/dist/src/services/sandboxedFileSystemService.test.js +87 -0
- package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -0
- package/dist/src/services/scripts/GeminiSandbox.cs +370 -0
- package/dist/src/services/shellExecutionService.d.ts +2 -0
- package/dist/src/services/shellExecutionService.js +79 -75
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/trackerTypes.d.ts +1 -0
- package/dist/src/services/trackerTypes.js +1 -0
- package/dist/src/services/trackerTypes.js.map +1 -1
- package/dist/src/services/windowsSandboxManager.d.ts +27 -0
- package/dist/src/services/windowsSandboxManager.js +148 -0
- package/dist/src/services/windowsSandboxManager.js.map +1 -0
- package/dist/src/services/windowsSandboxManager.test.d.ts +6 -0
- package/dist/src/services/windowsSandboxManager.test.js +59 -0
- package/dist/src/services/windowsSandboxManager.test.js.map +1 -0
- package/dist/src/services/worktreeService.d.ts +33 -0
- package/dist/src/services/worktreeService.js +174 -0
- package/dist/src/services/worktreeService.js.map +1 -0
- package/dist/src/services/worktreeService.test.d.ts +6 -0
- package/dist/src/services/worktreeService.test.js +200 -0
- package/dist/src/services/worktreeService.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +4 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +2 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +62 -40
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +1 -0
- package/dist/src/telemetry/types.js +3 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +8 -1
- 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 +8 -1
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
- package/dist/src/tools/exit-plan-mode.d.ts +6 -1
- package/dist/src/tools/exit-plan-mode.js +17 -6
- package/dist/src/tools/exit-plan-mode.js.map +1 -1
- package/dist/src/tools/exit-plan-mode.test.js +22 -1
- package/dist/src/tools/exit-plan-mode.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +22 -3
- package/dist/src/tools/mcp-client-manager.js +84 -32
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +76 -56
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +15 -6
- package/dist/src/tools/mcp-client.js +85 -71
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +195 -88
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +2 -1
- package/dist/src/tools/tool-registry.js +12 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +15 -0
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +1 -1
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/trackerTools.js +6 -1
- package/dist/src/tools/trackerTools.js.map +1 -1
- package/dist/src/tools/trackerTools.test.js +9 -1
- package/dist/src/tools/trackerTools.test.js.map +1 -1
- package/dist/src/tools/write-todos.js +1 -0
- package/dist/src/tools/write-todos.js.map +1 -1
- package/dist/src/tools/write-todos.test.js +4 -1
- package/dist/src/tools/write-todos.test.js.map +1 -1
- package/dist/src/utils/agent-sanitization-utils.d.ts +23 -0
- package/dist/src/utils/agent-sanitization-utils.js +123 -0
- package/dist/src/utils/agent-sanitization-utils.js.map +1 -0
- package/dist/src/utils/agent-sanitization-utils.test.d.ts +6 -0
- package/dist/src/utils/agent-sanitization-utils.test.js +83 -0
- package/dist/src/utils/agent-sanitization-utils.test.js.map +1 -0
- package/dist/src/utils/browserConsent.d.ts +17 -0
- package/dist/src/utils/browserConsent.js +78 -0
- package/dist/src/utils/browserConsent.js.map +1 -0
- package/dist/src/utils/browserConsent.test.d.ts +6 -0
- package/dist/src/utils/browserConsent.test.js +93 -0
- package/dist/src/utils/browserConsent.test.js.map +1 -0
- package/dist/src/utils/compatibility.d.ts +16 -0
- package/dist/src/utils/compatibility.js +58 -9
- package/dist/src/utils/compatibility.js.map +1 -1
- package/dist/src/utils/compatibility.test.js +127 -29
- package/dist/src/utils/compatibility.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.d.ts +2 -2
- package/dist/src/utils/memoryDiscovery.js +5 -10
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +37 -37
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +5 -5
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/surface.js +4 -3
- package/dist/src/utils/surface.js.map +1 -1
- package/dist/src/utils/toolCallContext.d.ts +2 -0
- package/dist/src/utils/toolCallContext.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -90,6 +90,17 @@ If `argsPattern` is specified, the tool's arguments are converted to a stable
|
|
|
90
90
|
JSON string, which is then tested against the provided regular expression. If
|
|
91
91
|
the arguments don't match the pattern, the rule does not apply.
|
|
92
92
|
|
|
93
|
+
#### Execution environment
|
|
94
|
+
|
|
95
|
+
If `interactive` is specified, the rule will only apply if the CLI's execution
|
|
96
|
+
environment matches the specified boolean value:
|
|
97
|
+
|
|
98
|
+
- `true`: The rule applies only in interactive mode.
|
|
99
|
+
- `false`: The rule applies only in non-interactive (headless) mode.
|
|
100
|
+
|
|
101
|
+
If omitted, the rule applies to both interactive and non-interactive
|
|
102
|
+
environments.
|
|
103
|
+
|
|
93
104
|
### Decisions
|
|
94
105
|
|
|
95
106
|
There are three possible decisions a rule can enforce:
|
|
@@ -102,7 +113,9 @@ There are three possible decisions a rule can enforce:
|
|
|
102
113
|
- `ask_user`: The user is prompted to approve or deny the tool call. (In
|
|
103
114
|
non-interactive mode, this is treated as `deny`.)
|
|
104
115
|
|
|
105
|
-
|
|
116
|
+
<!-- prettier-ignore -->
|
|
117
|
+
> [!NOTE]
|
|
118
|
+
> The `deny` decision is the recommended way to exclude tools. The
|
|
106
119
|
> legacy `tools.exclude` setting in `settings.json` is deprecated in favor of
|
|
107
120
|
> policy rules with a `deny` decision.
|
|
108
121
|
|
|
@@ -228,15 +241,17 @@ directory are **ignored**.
|
|
|
228
241
|
- **Linux / macOS:** Must be owned by `root` (UID 0) and NOT writable by group
|
|
229
242
|
or others (e.g., `chmod 755`).
|
|
230
243
|
- **Windows:** Must be in `C:\ProgramData`. Standard users (`Users`, `Everyone`)
|
|
231
|
-
must NOT have `Write`, `Modify`, or `Full Control` permissions.
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
244
|
+
must NOT have `Write`, `Modify`, or `Full Control` permissions. If you see a
|
|
245
|
+
security warning, use the folder properties to remove write permissions for
|
|
246
|
+
non-admin groups. You may need to "Disable inheritance" in Advanced Security
|
|
247
|
+
Settings.
|
|
248
|
+
|
|
249
|
+
<!-- prettier-ignore -->
|
|
250
|
+
> [!NOTE]
|
|
251
|
+
> Supplemental admin policies (provided via `--admin-policy` or
|
|
252
|
+
> `adminPolicyPaths` settings) are **NOT** subject to these strict ownership
|
|
253
|
+
> checks, as they are explicitly provided by the user or administrator in their
|
|
254
|
+
> current execution context.
|
|
240
255
|
|
|
241
256
|
### TOML rule schema
|
|
242
257
|
|
|
@@ -247,8 +262,8 @@ Here is a breakdown of the fields available in a TOML policy rule:
|
|
|
247
262
|
# A unique name for the tool, or an array of names.
|
|
248
263
|
toolName = "run_shell_command"
|
|
249
264
|
|
|
250
|
-
# (Optional) The name of a subagent. If provided, the rule only applies to tool
|
|
251
|
-
# made by this specific subagent.
|
|
265
|
+
# (Optional) The name of a subagent. If provided, the rule only applies to tool
|
|
266
|
+
# calls made by this specific subagent.
|
|
252
267
|
subagent = "generalist"
|
|
253
268
|
|
|
254
269
|
# (Optional) The name of an MCP server. Can be combined with toolName
|
|
@@ -263,14 +278,17 @@ toolAnnotations = { readOnlyHint = true }
|
|
|
263
278
|
argsPattern = '"command":"(git|npm)'
|
|
264
279
|
|
|
265
280
|
# (Optional) A string or array of strings that a shell command must start with.
|
|
266
|
-
# This is syntactic sugar for `toolName = "run_shell_command"` and an
|
|
281
|
+
# This is syntactic sugar for `toolName = "run_shell_command"` and an
|
|
282
|
+
# `argsPattern`.
|
|
267
283
|
commandPrefix = "git"
|
|
268
284
|
|
|
269
285
|
# (Optional) A regex to match against the entire shell command.
|
|
270
286
|
# This is also syntactic sugar for `toolName = "run_shell_command"`.
|
|
271
|
-
# Note: This pattern is tested against the JSON representation of the arguments
|
|
272
|
-
# Because it prepends `"command":"`,
|
|
273
|
-
#
|
|
287
|
+
# Note: This pattern is tested against the JSON representation of the arguments
|
|
288
|
+
# (e.g., `{"command":"<your_command>"}`). Because it prepends `"command":"`,
|
|
289
|
+
# it effectively matches from the start of the command.
|
|
290
|
+
# Anchors like `^` or `$` apply to the full JSON string,
|
|
291
|
+
# so `^` should usually be avoided here.
|
|
274
292
|
# You cannot use commandPrefix and commandRegex in the same rule.
|
|
275
293
|
commandRegex = "git (commit|push)"
|
|
276
294
|
|
|
@@ -280,12 +298,18 @@ decision = "ask_user"
|
|
|
280
298
|
# The priority of the rule, from 0 to 999.
|
|
281
299
|
priority = 10
|
|
282
300
|
|
|
283
|
-
# (Optional) A custom message to display when a tool call is denied by this
|
|
284
|
-
# This message is returned to the model and user,
|
|
301
|
+
# (Optional) A custom message to display when a tool call is denied by this
|
|
302
|
+
# rule. This message is returned to the model and user,
|
|
303
|
+
# useful for explaining *why* it was denied.
|
|
285
304
|
deny_message = "Deletion is permanent"
|
|
286
305
|
|
|
287
306
|
# (Optional) An array of approval modes where this rule is active.
|
|
288
307
|
modes = ["autoEdit"]
|
|
308
|
+
|
|
309
|
+
# (Optional) A boolean to restrict the rule to interactive (true) or
|
|
310
|
+
# non-interactive (false) environments.
|
|
311
|
+
# If omitted, the rule applies to both.
|
|
312
|
+
interactive = true
|
|
289
313
|
```
|
|
290
314
|
|
|
291
315
|
### Using arrays (lists)
|
|
@@ -333,7 +357,9 @@ using the `mcpName` field. **This is the recommended approach** for defining MCP
|
|
|
333
357
|
policies, as it is much more robust than manually writing Fully Qualified Names
|
|
334
358
|
(FQNs) or string wildcards.
|
|
335
359
|
|
|
336
|
-
|
|
360
|
+
<!-- prettier-ignore -->
|
|
361
|
+
> [!WARNING]
|
|
362
|
+
> Do not use underscores (`_`) in your MCP server names (e.g., use
|
|
337
363
|
> `my-server` rather than `my_server`). The policy parser splits Fully Qualified
|
|
338
364
|
> Names (`mcp_server_tool`) on the _first_ underscore following the `mcp_`
|
|
339
365
|
> prefix. If your server name contains an underscore, the parser will
|
|
@@ -360,6 +386,8 @@ priority = 200
|
|
|
360
386
|
Specify only the `mcpName` to apply a rule to every tool provided by that
|
|
361
387
|
server.
|
|
362
388
|
|
|
389
|
+
**Note:** This applies to all decision types (`allow`, `deny`, `ask_user`).
|
|
390
|
+
|
|
363
391
|
```toml
|
|
364
392
|
# Denies all tools from the `untrusted-server` MCP
|
|
365
393
|
[[rule]]
|
|
@@ -95,7 +95,9 @@ For developers, the tool system is designed to be extensible and robust. The
|
|
|
95
95
|
You can extend Gemini CLI with custom tools by configuring
|
|
96
96
|
`tools.discoveryCommand` in your settings or by connecting to MCP servers.
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
<!-- prettier-ignore -->
|
|
99
|
+
> [!NOTE]
|
|
100
|
+
> For a deep dive into the internal Tool API and how to implement your
|
|
99
101
|
> own tools in the codebase, see the `packages/core/src/tools/` directory in
|
|
100
102
|
> GitHub.
|
|
101
103
|
|
|
@@ -21,9 +21,13 @@ All workflows in `.github/workflows/ci.yml` must pass on the `main` branch (for
|
|
|
21
21
|
nightly) or the release branch (for preview/stable).
|
|
22
22
|
|
|
23
23
|
- **Platforms:** Tests must pass on **Linux and macOS**.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
|
|
25
|
+
<!-- prettier-ignore -->
|
|
26
|
+
> [!NOTE]
|
|
27
|
+
> Windows tests currently run with `continue-on-error: true`. While a
|
|
28
|
+
> failure here doesn't block the release technically, it should be
|
|
29
|
+
> investigated.
|
|
30
|
+
|
|
27
31
|
- **Checks:**
|
|
28
32
|
- **Linting:** No linting errors (ESLint, Prettier, etc.).
|
|
29
33
|
- **Typechecking:** No TypeScript errors.
|
package/dist/docs/releases.md
CHANGED
|
@@ -234,10 +234,12 @@ This workflow will automatically:
|
|
|
234
234
|
Review the automatically created pull request(s) to ensure the cherry-pick was
|
|
235
235
|
successful and the changes are correct. Once approved, merge the pull request.
|
|
236
236
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
237
|
+
<!-- prettier-ignore -->
|
|
238
|
+
> [!WARNING]
|
|
239
|
+
> The `release/*` branches are protected by branch protection
|
|
240
|
+
> rules. A pull request to one of these branches requires at least one review from
|
|
241
|
+
> a code owner before it can be merged. This ensures that no unauthorized code is
|
|
242
|
+
> released.
|
|
241
243
|
|
|
242
244
|
#### 2.5. Adding multiple commits to a hotfix (advanced)
|
|
243
245
|
|
|
@@ -524,9 +526,11 @@ Notifications use
|
|
|
524
526
|
[GitHub for Google Chat](https://workspace.google.com/marketplace/app/github_for_google_chat/536184076190).
|
|
525
527
|
To modify the notifications, use `/github-settings` within the chat space.
|
|
526
528
|
|
|
527
|
-
|
|
528
|
-
>
|
|
529
|
-
>
|
|
529
|
+
<!-- prettier-ignore -->
|
|
530
|
+
> [!WARNING]
|
|
531
|
+
> The following instructions describe a fragile workaround that depends on the
|
|
532
|
+
> internal structure of the chat application's UI. It is likely to break with
|
|
533
|
+
> future updates.
|
|
530
534
|
|
|
531
535
|
The list of available labels is not currently populated correctly. If you want
|
|
532
536
|
to add a label that does not appear alphabetically in the first 30 labels in the
|
|
@@ -58,6 +58,19 @@ your total token usage using the `/stats` command in Gemini CLI.
|
|
|
58
58
|
|
|
59
59
|
## Installation and updates
|
|
60
60
|
|
|
61
|
+
### How do I check which version of Gemini CLI I'm currently running?
|
|
62
|
+
|
|
63
|
+
You can check your current Gemini CLI version using one of these methods:
|
|
64
|
+
|
|
65
|
+
- Run `gemini --version` or `gemini -v` from your terminal
|
|
66
|
+
- Check the globally installed version using your package manager:
|
|
67
|
+
- npm: `npm list -g @google/gemini-cli`
|
|
68
|
+
- pnpm: `pnpm list -g @google/gemini-cli`
|
|
69
|
+
- yarn: `yarn global list @google/gemini-cli`
|
|
70
|
+
- bun: `bun pm ls -g @google/gemini-cli`
|
|
71
|
+
- homebrew: `brew list --versions gemini-cli`
|
|
72
|
+
- Inside an active Gemini CLI session, use the `/about` command
|
|
73
|
+
|
|
61
74
|
### How do I update Gemini CLI to the latest version?
|
|
62
75
|
|
|
63
76
|
If you installed it globally via `npm`, update it using the command
|
|
@@ -16,8 +16,10 @@ account.
|
|
|
16
16
|
Your Gemini CLI Usage Statistics are handled in accordance with Google's Privacy
|
|
17
17
|
Policy.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
<!-- prettier-ignore -->
|
|
20
|
+
> [!NOTE]
|
|
21
|
+
> See [quotas and pricing](quota-and-pricing.md) for the quota and
|
|
22
|
+
> pricing details that apply to your usage of the Gemini CLI.
|
|
21
23
|
|
|
22
24
|
## Supported authentication methods
|
|
23
25
|
|
|
@@ -187,5 +187,7 @@ guide_, consider searching the Gemini CLI
|
|
|
187
187
|
If you can't find an issue similar to yours, consider creating a new GitHub
|
|
188
188
|
Issue with a detailed description. Pull requests are also welcome!
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
<!-- prettier-ignore -->
|
|
191
|
+
> [!NOTE]
|
|
192
|
+
> Issues tagged as "🔒Maintainers only" are reserved for project
|
|
191
193
|
> maintainers. We will not accept pull requests related to these issues.
|
package/dist/docs/sidebar.json
CHANGED
|
@@ -99,6 +99,11 @@
|
|
|
99
99
|
{ "label": "Agent Skills", "slug": "docs/cli/skills" },
|
|
100
100
|
{ "label": "Checkpointing", "slug": "docs/cli/checkpointing" },
|
|
101
101
|
{ "label": "Headless mode", "slug": "docs/cli/headless" },
|
|
102
|
+
{
|
|
103
|
+
"label": "Git worktrees",
|
|
104
|
+
"badge": "🔬",
|
|
105
|
+
"slug": "docs/cli/git-worktrees"
|
|
106
|
+
},
|
|
102
107
|
{
|
|
103
108
|
"label": "Hooks",
|
|
104
109
|
"collapsed": true,
|
|
@@ -176,8 +176,8 @@ Each server configuration supports the following properties:
|
|
|
176
176
|
enabled by default.
|
|
177
177
|
- **`excludeTools`** (string[]): List of tool names to exclude from this MCP
|
|
178
178
|
server. Tools listed here will not be available to the model, even if they are
|
|
179
|
-
exposed by the server.
|
|
180
|
-
|
|
179
|
+
exposed by the server. `excludeTools` takes precedence over `includeTools`. If
|
|
180
|
+
a tool is in both lists, it will be excluded.
|
|
181
181
|
- **`targetAudience`** (string): The OAuth Client ID allowlisted on the
|
|
182
182
|
IAP-protected application you are trying to access. Used with
|
|
183
183
|
`authProviderType: 'service_account_impersonation'`.
|
|
@@ -238,7 +238,9 @@ This follows the security principle that if a variable is explicitly configured
|
|
|
238
238
|
by the user for a specific server, it constitutes informed consent to share that
|
|
239
239
|
specific data with that server.
|
|
240
240
|
|
|
241
|
-
|
|
241
|
+
<!-- prettier-ignore -->
|
|
242
|
+
> [!NOTE]
|
|
243
|
+
> Even when explicitly defined, you should avoid hardcoding secrets.
|
|
242
244
|
> Instead, use environment variable expansion (e.g., `"MY_KEY": "$MY_KEY"`) to
|
|
243
245
|
> securely pull the value from your host environment at runtime.
|
|
244
246
|
|
|
@@ -283,10 +285,12 @@ When connecting to an OAuth-enabled server:
|
|
|
283
285
|
|
|
284
286
|
#### Browser redirect requirements
|
|
285
287
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
288
|
+
<!-- prettier-ignore -->
|
|
289
|
+
> [!IMPORTANT]
|
|
290
|
+
> OAuth authentication requires that your local machine can:
|
|
291
|
+
>
|
|
292
|
+
> - Open a web browser for authentication
|
|
293
|
+
> - Receive redirects on `http://localhost:7777/oauth/callback`
|
|
290
294
|
|
|
291
295
|
This feature will not work in:
|
|
292
296
|
|
|
@@ -577,7 +581,9 @@ every discovered MCP tool is assigned a strict namespace.
|
|
|
577
581
|
[Special syntax for MCP tools](../reference/policy-engine.md#special-syntax-for-mcp-tools)
|
|
578
582
|
in the Policy Engine documentation.
|
|
579
583
|
|
|
580
|
-
|
|
584
|
+
<!-- prettier-ignore -->
|
|
585
|
+
> [!WARNING]
|
|
586
|
+
> Do not use underscores (`_`) in your MCP server names (e.g., use
|
|
581
587
|
> `my-server` rather than `my_server`). The policy parser splits Fully Qualified
|
|
582
588
|
> Names (`mcp_server_tool`) on the _first_ underscore following the `mcp_`
|
|
583
589
|
> prefix. If your server name contains an underscore, the parser will
|
|
@@ -1116,7 +1122,9 @@ command has no flags.
|
|
|
1116
1122
|
gemini mcp list
|
|
1117
1123
|
```
|
|
1118
1124
|
|
|
1119
|
-
|
|
1125
|
+
<!-- prettier-ignore -->
|
|
1126
|
+
> [!NOTE]
|
|
1127
|
+
> For security, `stdio` MCP servers (those using the
|
|
1120
1128
|
> `command` property) are only tested and displayed as "Connected" if the
|
|
1121
1129
|
> current folder is trusted. If the folder is untrusted, they will show as
|
|
1122
1130
|
> "Disconnected". Use `gemini trust` to trust the current folder.
|
|
@@ -11,7 +11,9 @@ by the agent when you ask it to "start a plan" using natural language. In this
|
|
|
11
11
|
mode, the agent is restricted to read-only tools to allow for safe exploration
|
|
12
12
|
and planning.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
<!-- prettier-ignore -->
|
|
15
|
+
> [!NOTE]
|
|
16
|
+
> This tool is not available when the CLI is in YOLO mode.
|
|
15
17
|
|
|
16
18
|
- **Tool name:** `enter_plan_mode`
|
|
17
19
|
- **Display name:** Enter Plan Mode
|
package/dist/docs/tools/shell.md
CHANGED
|
@@ -57,8 +57,8 @@ implementation, which does not support interactive commands.
|
|
|
57
57
|
### Showing color in output
|
|
58
58
|
|
|
59
59
|
To show color in the shell output, you need to set the `tools.shell.showColor`
|
|
60
|
-
setting to `true`.
|
|
61
|
-
`tools.shell.enableInteractiveShell` is enabled
|
|
60
|
+
setting to `true`. This setting only applies when
|
|
61
|
+
`tools.shell.enableInteractiveShell` is enabled.
|
|
62
62
|
|
|
63
63
|
**Example `settings.json`:**
|
|
64
64
|
|
|
@@ -75,8 +75,8 @@ setting to `true`. **Note: This setting only applies when
|
|
|
75
75
|
### Setting the pager
|
|
76
76
|
|
|
77
77
|
You can set a custom pager for the shell output by setting the
|
|
78
|
-
`tools.shell.pager` setting. The default pager is `cat`.
|
|
79
|
-
|
|
78
|
+
`tools.shell.pager` setting. The default pager is `cat`. This setting only
|
|
79
|
+
applies when `tools.shell.enableInteractiveShell` is enabled.
|
|
80
80
|
|
|
81
81
|
**Example `settings.json`:**
|
|
82
82
|
|
package/dist/docs/tools/todos.md
CHANGED
|
@@ -13,7 +13,8 @@ updates to the CLI interface.
|
|
|
13
13
|
- `todos` (array of objects, required): The complete list of tasks. Each object
|
|
14
14
|
includes:
|
|
15
15
|
- `description` (string): Technical description of the task.
|
|
16
|
-
- `status` (enum): `pending`, `in_progress`, `completed`,
|
|
16
|
+
- `status` (enum): `pending`, `in_progress`, `completed`, `cancelled`, or
|
|
17
|
+
`blocked`.
|
|
17
18
|
|
|
18
19
|
## Technical behavior
|
|
19
20
|
|
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentProtocol, AgentSend, AgentEvent, Unsubscribe } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* AgentSession is a wrapper around AgentProtocol that provides a more
|
|
9
|
+
* convenient API for consuming agent activity as an AsyncIterable.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AgentSession implements AgentProtocol {
|
|
12
|
+
private _protocol;
|
|
13
|
+
constructor(protocol: AgentProtocol);
|
|
14
|
+
send(payload: AgentSend): Promise<{
|
|
15
|
+
streamId: string | null;
|
|
16
|
+
}>;
|
|
17
|
+
subscribe(callback: (event: AgentEvent) => void): Unsubscribe;
|
|
18
|
+
abort(): Promise<void>;
|
|
19
|
+
get events(): AgentEvent[];
|
|
20
|
+
/**
|
|
21
|
+
* Sends a payload to the agent and returns an AsyncIterable that yields
|
|
22
|
+
* events for the resulting stream.
|
|
23
|
+
*
|
|
24
|
+
* @param payload The payload to send to the agent.
|
|
25
|
+
*/
|
|
26
|
+
sendStream(payload: AgentSend): AsyncIterable<AgentEvent>;
|
|
27
|
+
/**
|
|
28
|
+
* Returns an AsyncIterable that yields events from the agent session,
|
|
29
|
+
* optionally replaying events from history or reattaching to an existing stream.
|
|
30
|
+
*
|
|
31
|
+
* @param options Options for replaying or reattaching to the event stream.
|
|
32
|
+
*/
|
|
33
|
+
stream(options?: {
|
|
34
|
+
eventId?: string;
|
|
35
|
+
streamId?: string;
|
|
36
|
+
}): AsyncIterable<AgentEvent>;
|
|
37
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* AgentSession is a wrapper around AgentProtocol that provides a more
|
|
8
|
+
* convenient API for consuming agent activity as an AsyncIterable.
|
|
9
|
+
*/
|
|
10
|
+
export class AgentSession {
|
|
11
|
+
_protocol;
|
|
12
|
+
constructor(protocol) {
|
|
13
|
+
this._protocol = protocol;
|
|
14
|
+
}
|
|
15
|
+
async send(payload) {
|
|
16
|
+
return this._protocol.send(payload);
|
|
17
|
+
}
|
|
18
|
+
subscribe(callback) {
|
|
19
|
+
return this._protocol.subscribe(callback);
|
|
20
|
+
}
|
|
21
|
+
async abort() {
|
|
22
|
+
return this._protocol.abort();
|
|
23
|
+
}
|
|
24
|
+
get events() {
|
|
25
|
+
return this._protocol.events;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Sends a payload to the agent and returns an AsyncIterable that yields
|
|
29
|
+
* events for the resulting stream.
|
|
30
|
+
*
|
|
31
|
+
* @param payload The payload to send to the agent.
|
|
32
|
+
*/
|
|
33
|
+
async *sendStream(payload) {
|
|
34
|
+
const result = await this._protocol.send(payload);
|
|
35
|
+
const streamId = result.streamId;
|
|
36
|
+
if (streamId === null) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
yield* this.stream({ streamId });
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns an AsyncIterable that yields events from the agent session,
|
|
43
|
+
* optionally replaying events from history or reattaching to an existing stream.
|
|
44
|
+
*
|
|
45
|
+
* @param options Options for replaying or reattaching to the event stream.
|
|
46
|
+
*/
|
|
47
|
+
async *stream(options = {}) {
|
|
48
|
+
let resolve;
|
|
49
|
+
let next = new Promise((res) => {
|
|
50
|
+
resolve = res;
|
|
51
|
+
});
|
|
52
|
+
let eventQueue = [];
|
|
53
|
+
const earlyEvents = [];
|
|
54
|
+
let done = false;
|
|
55
|
+
let trackedStreamId = options.streamId;
|
|
56
|
+
let started = false;
|
|
57
|
+
// 1. Subscribe early to avoid missing any events that occur during replay setup
|
|
58
|
+
const unsubscribe = this._protocol.subscribe((event) => {
|
|
59
|
+
if (done)
|
|
60
|
+
return;
|
|
61
|
+
if (!started) {
|
|
62
|
+
earlyEvents.push(event);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (trackedStreamId && event.streamId !== trackedStreamId)
|
|
66
|
+
return;
|
|
67
|
+
// If we don't have a tracked stream yet, the first agent_start we see becomes it.
|
|
68
|
+
if (!trackedStreamId && event.type === 'agent_start') {
|
|
69
|
+
trackedStreamId = event.streamId ?? undefined;
|
|
70
|
+
}
|
|
71
|
+
// If we still don't have a tracked stream and we aren't replaying everything (eventId), ignore.
|
|
72
|
+
if (!trackedStreamId && !options.eventId)
|
|
73
|
+
return;
|
|
74
|
+
eventQueue.push(event);
|
|
75
|
+
if (event.type === 'agent_end' &&
|
|
76
|
+
event.streamId === (trackedStreamId ?? null)) {
|
|
77
|
+
done = true;
|
|
78
|
+
}
|
|
79
|
+
const currentResolve = resolve;
|
|
80
|
+
next = new Promise((r) => {
|
|
81
|
+
resolve = r;
|
|
82
|
+
});
|
|
83
|
+
currentResolve?.();
|
|
84
|
+
});
|
|
85
|
+
try {
|
|
86
|
+
const currentEvents = this._protocol.events;
|
|
87
|
+
let replayStartIndex = -1;
|
|
88
|
+
if (options.eventId) {
|
|
89
|
+
const index = currentEvents.findIndex((e) => e.id === options.eventId);
|
|
90
|
+
if (index !== -1) {
|
|
91
|
+
replayStartIndex = index + 1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (options.streamId) {
|
|
95
|
+
const index = currentEvents.findIndex((e) => e.type === 'agent_start' && e.streamId === options.streamId);
|
|
96
|
+
if (index !== -1) {
|
|
97
|
+
replayStartIndex = index;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (replayStartIndex !== -1) {
|
|
101
|
+
for (let i = replayStartIndex; i < currentEvents.length; i++) {
|
|
102
|
+
const event = currentEvents[i];
|
|
103
|
+
if (options.streamId && event.streamId !== options.streamId)
|
|
104
|
+
continue;
|
|
105
|
+
eventQueue.push(event);
|
|
106
|
+
if (event.type === 'agent_start' && !trackedStreamId) {
|
|
107
|
+
trackedStreamId = event.streamId ?? undefined;
|
|
108
|
+
}
|
|
109
|
+
if (event.type === 'agent_end' &&
|
|
110
|
+
event.streamId === (trackedStreamId ?? null)) {
|
|
111
|
+
done = true;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (!done && !trackedStreamId) {
|
|
117
|
+
// Find active stream in history
|
|
118
|
+
const activeStarts = currentEvents.filter((e) => e.type === 'agent_start');
|
|
119
|
+
for (let i = activeStarts.length - 1; i >= 0; i--) {
|
|
120
|
+
const start = activeStarts[i];
|
|
121
|
+
if (!currentEvents.some((e) => e.type === 'agent_end' && e.streamId === start.streamId)) {
|
|
122
|
+
trackedStreamId = start.streamId ?? undefined;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// If we replayed to the end and no stream is active, and we were specifically
|
|
128
|
+
// replaying from an eventId (or we've already finished the stream we were looking for), we are done.
|
|
129
|
+
if (!done && !trackedStreamId && options.eventId) {
|
|
130
|
+
done = true;
|
|
131
|
+
}
|
|
132
|
+
started = true;
|
|
133
|
+
// Process events that arrived while we were replaying
|
|
134
|
+
for (const event of earlyEvents) {
|
|
135
|
+
if (done)
|
|
136
|
+
break;
|
|
137
|
+
if (trackedStreamId && event.streamId !== trackedStreamId)
|
|
138
|
+
continue;
|
|
139
|
+
if (!trackedStreamId && event.type === 'agent_start') {
|
|
140
|
+
trackedStreamId = event.streamId ?? undefined;
|
|
141
|
+
}
|
|
142
|
+
if (!trackedStreamId && !options.eventId)
|
|
143
|
+
continue;
|
|
144
|
+
eventQueue.push(event);
|
|
145
|
+
if (event.type === 'agent_end' &&
|
|
146
|
+
event.streamId === (trackedStreamId ?? null)) {
|
|
147
|
+
done = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
while (true) {
|
|
151
|
+
if (eventQueue.length > 0) {
|
|
152
|
+
const eventsToYield = eventQueue;
|
|
153
|
+
eventQueue = [];
|
|
154
|
+
for (const event of eventsToYield) {
|
|
155
|
+
yield event;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (done)
|
|
159
|
+
break;
|
|
160
|
+
await next;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
unsubscribe();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=agent-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../../src/agent/agent-session.ts"],"names":[],"mappings":"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"}
|