@google/gemini-cli-core 0.30.0-preview.6 → 0.31.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/README.md +1 -1
- package/dist/docs/CONTRIBUTING.md +6 -7
- package/dist/docs/changelogs/index.md +22 -2
- package/dist/docs/changelogs/latest.md +359 -293
- package/dist/docs/changelogs/preview.md +300 -349
- package/dist/docs/cli/cli-reference.md +23 -23
- package/dist/docs/cli/enterprise.md +7 -7
- package/dist/docs/cli/gemini-md.md +1 -1
- package/dist/docs/cli/model.md +1 -1
- package/dist/docs/cli/plan-mode.md +180 -80
- package/dist/docs/cli/sandbox.md +3 -3
- package/dist/docs/cli/settings.md +59 -51
- package/dist/docs/cli/telemetry.md +4 -1
- package/dist/docs/cli/themes.md +3 -3
- package/dist/docs/cli/trusted-folders.md +31 -0
- package/dist/docs/cli/tutorials/memory-management.md +2 -2
- package/dist/docs/cli/tutorials/session-management.md +1 -1
- package/dist/docs/core/index.md +7 -7
- package/dist/docs/core/subagents.md +155 -39
- package/dist/docs/extensions/reference.md +38 -14
- package/dist/docs/get-started/authentication.md +4 -4
- package/dist/docs/get-started/examples.md +2 -2
- package/dist/docs/get-started/gemini-3.md +17 -3
- package/dist/docs/get-started/index.md +11 -2
- package/dist/docs/hooks/best-practices.md +1 -1
- package/dist/docs/hooks/reference.md +8 -0
- package/dist/docs/ide-integration/index.md +14 -0
- package/dist/docs/index.md +62 -67
- package/dist/docs/redirects.json +19 -0
- package/dist/docs/{cli → reference}/commands.md +67 -11
- package/dist/docs/{get-started → reference}/configuration.md +93 -24
- package/dist/docs/{cli → reference}/keyboard-shortcuts.md +3 -3
- package/dist/docs/{core → reference}/policy-engine.md +63 -27
- package/dist/docs/{faq.md → resources/faq.md} +1 -1
- package/dist/docs/{quota-and-pricing.md → resources/quota-and-pricing.md} +12 -5
- package/dist/docs/{tos-privacy.md → resources/tos-privacy.md} +2 -2
- package/dist/docs/{troubleshooting.md → resources/troubleshooting.md} +1 -1
- package/dist/docs/sidebar.json +203 -166
- package/dist/docs/tools/file-system.md +7 -4
- package/dist/docs/tools/index.md +5 -2
- package/dist/docs/tools/internal-docs.md +5 -5
- package/dist/docs/tools/mcp-server.md +62 -2
- package/dist/docs/tools/planning.md +2 -0
- package/dist/docs/tools/shell.md +3 -3
- package/dist/src/agents/a2a-client-manager.test.js +1 -2
- package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
- package/dist/src/agents/a2aUtils.d.ts +1 -5
- package/dist/src/agents/a2aUtils.js +1 -1
- package/dist/src/agents/a2aUtils.js.map +1 -1
- package/dist/src/agents/acknowledgedAgents.js +1 -0
- package/dist/src/agents/acknowledgedAgents.js.map +1 -1
- package/dist/src/agents/agent-scheduler.js +1 -0
- package/dist/src/agents/agent-scheduler.js.map +1 -1
- package/dist/src/agents/agentLoader.d.ts +0 -1
- package/dist/src/agents/agentLoader.js +22 -21
- package/dist/src/agents/agentLoader.js.map +1 -1
- package/dist/src/agents/agentLoader.test.js +1 -5
- package/dist/src/agents/agentLoader.test.js.map +1 -1
- package/dist/src/agents/auth-provider/api-key-provider.d.ts +30 -0
- package/dist/src/agents/auth-provider/api-key-provider.js +66 -0
- package/dist/src/agents/auth-provider/api-key-provider.js.map +1 -0
- package/dist/src/agents/auth-provider/api-key-provider.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/api-key-provider.test.js +130 -0
- package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -0
- package/dist/src/agents/auth-provider/base-provider.d.ts +2 -2
- package/dist/src/agents/auth-provider/base-provider.js.map +1 -1
- package/dist/src/agents/auth-provider/factory.js +6 -3
- package/dist/src/agents/auth-provider/factory.js.map +1 -1
- package/dist/src/agents/auth-provider/factory.test.js +12 -0
- package/dist/src/agents/auth-provider/factory.test.js.map +1 -1
- package/dist/src/agents/auth-provider/types.d.ts +2 -4
- package/dist/src/agents/browser/analyzeScreenshot.d.ts +35 -0
- package/dist/src/agents/browser/analyzeScreenshot.js +183 -0
- package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -0
- package/dist/src/agents/browser/analyzeScreenshot.test.d.ts +6 -0
- package/dist/src/agents/browser/analyzeScreenshot.test.js +161 -0
- package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -0
- package/dist/src/agents/browser/browserAgentDefinition.d.ts +50 -0
- package/dist/src/agents/browser/browserAgentDefinition.js +141 -0
- package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -0
- package/dist/src/agents/browser/browserAgentFactory.d.ts +42 -0
- package/dist/src/agents/browser/browserAgentFactory.js +107 -0
- package/dist/src/agents/browser/browserAgentFactory.js.map +1 -0
- package/dist/src/agents/browser/browserAgentFactory.test.d.ts +6 -0
- package/dist/src/agents/browser/browserAgentFactory.test.js +186 -0
- package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -0
- package/dist/src/agents/browser/browserAgentInvocation.d.ts +44 -0
- package/dist/src/agents/browser/browserAgentInvocation.js +109 -0
- package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -0
- package/dist/src/agents/browser/browserAgentInvocation.test.d.ts +6 -0
- package/dist/src/agents/browser/browserAgentInvocation.test.js +87 -0
- package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -0
- package/dist/src/agents/browser/browserManager.d.ts +110 -0
- package/dist/src/agents/browser/browserManager.js +323 -0
- package/dist/src/agents/browser/browserManager.js.map +1 -0
- package/dist/src/agents/browser/browserManager.test.d.ts +6 -0
- package/dist/src/agents/browser/browserManager.test.js +314 -0
- package/dist/src/agents/browser/browserManager.test.js.map +1 -0
- package/dist/src/agents/browser/mcpToolWrapper.d.ts +45 -0
- package/dist/src/agents/browser/mcpToolWrapper.js +356 -0
- package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -0
- package/dist/src/agents/browser/mcpToolWrapper.test.d.ts +6 -0
- package/dist/src/agents/browser/mcpToolWrapper.test.js +126 -0
- package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -0
- package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.d.ts +6 -0
- package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js +57 -0
- package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js.map +1 -0
- package/dist/src/agents/browser/modelAvailability.d.ts +23 -0
- package/dist/src/agents/browser/modelAvailability.js +23 -0
- package/dist/src/agents/browser/modelAvailability.js.map +1 -0
- package/dist/src/agents/local-executor.js +73 -31
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +157 -4
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/registry.js +8 -0
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/remote-invocation.d.ts +2 -1
- package/dist/src/agents/remote-invocation.js +3 -3
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.js +6 -0
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
- package/dist/src/agents/subagent-tool.d.ts +3 -0
- package/dist/src/agents/subagent-tool.js +62 -3
- package/dist/src/agents/subagent-tool.js.map +1 -1
- package/dist/src/agents/subagent-tool.test.js +143 -0
- package/dist/src/agents/subagent-tool.test.js.map +1 -1
- package/dist/src/availability/fallbackIntegration.test.js +4 -1
- package/dist/src/availability/fallbackIntegration.test.js.map +1 -1
- package/dist/src/availability/policyHelpers.js +3 -1
- package/dist/src/availability/policyHelpers.js.map +1 -1
- package/dist/src/availability/policyHelpers.test.js +51 -5
- package/dist/src/availability/policyHelpers.test.js.map +1 -1
- package/dist/src/code_assist/admin/admin_controls.js +1 -0
- package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
- package/dist/src/code_assist/converter.js +8 -2
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments.js +1 -1
- package/dist/src/code_assist/experiments/experiments.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.js +1 -1
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.test.js +5 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +11 -8
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +55 -0
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.js +22 -13
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +26 -0
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/telemetry.js +16 -3
- package/dist/src/code_assist/telemetry.js.map +1 -1
- package/dist/src/code_assist/telemetry.test.js +10 -0
- package/dist/src/code_assist/telemetry.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +13 -12
- package/dist/src/code_assist/types.js.map +1 -1
- package/dist/src/config/config.d.ts +83 -8
- package/dist/src/config/config.js +127 -23
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +285 -10
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/projectRegistry.js +1 -0
- package/dist/src/config/projectRegistry.js.map +1 -1
- package/dist/src/config/storage.d.ts +17 -1
- package/dist/src/config/storage.js +82 -2
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +149 -2
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/config/userHintService.d.ts +46 -0
- package/dist/src/config/userHintService.js +81 -0
- package/dist/src/config/userHintService.js.map +1 -0
- package/dist/src/config/userHintService.test.d.ts +6 -0
- package/dist/src/config/userHintService.test.js +62 -0
- package/dist/src/config/userHintService.test.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.js +15 -3
- package/dist/src/confirmation-bus/message-bus.js.map +1 -1
- package/dist/src/confirmation-bus/message-bus.test.js +15 -0
- package/dist/src/confirmation-bus/message-bus.test.js.map +1 -1
- package/dist/src/confirmation-bus/types.d.ts +7 -0
- package/dist/src/confirmation-bus/types.js.map +1 -1
- package/dist/src/core/baseLlmClient.d.ts +2 -3
- package/dist/src/core/baseLlmClient.js +7 -5
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +45 -20
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/client.js +18 -7
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.d.ts +2 -3
- package/dist/src/core/coreToolHookTriggers.js +8 -3
- package/dist/src/core/coreToolHookTriggers.js.map +1 -1
- package/dist/src/core/coreToolScheduler.js +2 -1
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +10 -3
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/fakeContentGenerator.js +2 -0
- package/dist/src/core/fakeContentGenerator.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +1 -1
- package/dist/src/core/geminiChat.js +5 -5
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +1 -0
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiChat_network_retry.test.js +1 -0
- package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
- package/dist/src/core/logger.js +2 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +14 -2
- package/dist/src/core/loggingContentGenerator.js +98 -4
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.test.js +275 -1
- package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
- package/dist/src/core/prompts.test.js +55 -27
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/recordingContentGenerator.test.js +5 -0
- package/dist/src/core/recordingContentGenerator.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +4 -2
- package/dist/src/core/turn.js +2 -0
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +4 -1
- package/dist/src/core/turn.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/hooks/hookAggregator.d.ts +1 -2
- package/dist/src/hooks/hookAggregator.js +1 -2
- package/dist/src/hooks/hookAggregator.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.d.ts +2 -2
- package/dist/src/hooks/hookEventHandler.js +13 -4
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.test.js +1 -2
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
- package/dist/src/hooks/hookPlanner.d.ts +1 -2
- package/dist/src/hooks/hookPlanner.js.map +1 -1
- package/dist/src/hooks/hookRegistry.d.ts +8 -0
- package/dist/src/hooks/hookRegistry.js +31 -3
- package/dist/src/hooks/hookRegistry.js.map +1 -1
- package/dist/src/hooks/hookRegistry.test.js.map +1 -1
- package/dist/src/hooks/hookRunner.d.ts +5 -2
- package/dist/src/hooks/hookRunner.js +52 -2
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookRunner.test.js.map +1 -1
- package/dist/src/hooks/hookSystem.d.ts +11 -3
- package/dist/src/hooks/hookSystem.js +10 -4
- package/dist/src/hooks/hookSystem.js.map +1 -1
- package/dist/src/hooks/hookSystem.test.js +1 -0
- package/dist/src/hooks/hookSystem.test.js.map +1 -1
- package/dist/src/hooks/runtimeHooks.test.d.ts +6 -0
- package/dist/src/hooks/runtimeHooks.test.js +100 -0
- package/dist/src/hooks/runtimeHooks.test.js.map +1 -0
- package/dist/src/hooks/trustedHooks.js +6 -1
- package/dist/src/hooks/trustedHooks.js.map +1 -1
- package/dist/src/hooks/trustedHooks.test.js +17 -9
- package/dist/src/hooks/trustedHooks.test.js.map +1 -1
- package/dist/src/hooks/types.d.ts +49 -8
- package/dist/src/hooks/types.js +20 -1
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +0 -1
- package/dist/src/ide/detect-ide.js +1 -1
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/ide-client.js +3 -2
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-connection-utils.js +90 -14
- package/dist/src/ide/ide-connection-utils.js.map +1 -1
- package/dist/src/ide/ide-connection-utils.test.js +78 -0
- package/dist/src/ide/ide-connection-utils.test.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +1 -2
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/process-utils.d.ts +7 -0
- package/dist/src/ide/process-utils.js +20 -0
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/process-utils.test.js +30 -0
- package/dist/src/ide/process-utils.test.js.map +1 -1
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.js +6 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +1 -1
- package/dist/src/mcp/oauth-provider.js +8 -7
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +34 -2
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-utils.js +2 -0
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +12 -0
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/mcp/token-storage/file-token-storage.js +4 -1
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/file-token-storage.test.js +40 -2
- package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -1
- package/dist/src/mcp/token-storage/keychain-token-storage.js +2 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
- package/dist/src/policy/config.d.ts +18 -9
- package/dist/src/policy/config.js +75 -54
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/config.test.js +26 -26
- package/dist/src/policy/integrity.d.ts +45 -0
- package/dist/src/policy/integrity.js +121 -0
- package/dist/src/policy/integrity.js.map +1 -0
- package/dist/src/policy/integrity.test.d.ts +6 -0
- package/dist/src/policy/integrity.test.js +132 -0
- package/dist/src/policy/integrity.test.js.map +1 -0
- package/dist/src/policy/persistence.test.js +29 -19
- package/dist/src/policy/persistence.test.js.map +1 -1
- package/dist/src/policy/policies/conseca.toml +6 -0
- package/dist/src/policy/policies/plan.toml +28 -12
- package/dist/src/policy/policies/read-only.toml +11 -10
- package/dist/src/policy/policies/write.toml +11 -10
- package/dist/src/policy/policies/yolo.toml +11 -10
- package/dist/src/policy/policy-engine.d.ts +16 -3
- package/dist/src/policy/policy-engine.js +154 -29
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +480 -9
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/policy-updater.test.js +11 -6
- package/dist/src/policy/policy-updater.test.js.map +1 -1
- package/dist/src/policy/toml-loader.d.ts +13 -2
- package/dist/src/policy/toml-loader.js +55 -34
- package/dist/src/policy/toml-loader.js.map +1 -1
- package/dist/src/policy/toml-loader.test.js +115 -7
- package/dist/src/policy/toml-loader.test.js.map +1 -1
- package/dist/src/policy/types.d.ts +18 -1
- package/dist/src/policy/types.js +1 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/policy/workspace-policy.test.d.ts +6 -0
- package/dist/src/policy/workspace-policy.test.js +231 -0
- package/dist/src/policy/workspace-policy.test.js.map +1 -0
- package/dist/src/prompts/promptProvider.js +11 -13
- package/dist/src/prompts/promptProvider.js.map +1 -1
- package/dist/src/prompts/promptProvider.test.js +64 -3
- package/dist/src/prompts/promptProvider.test.js.map +1 -1
- package/dist/src/prompts/snippets.js +41 -10
- package/dist/src/prompts/snippets.js.map +1 -1
- package/dist/src/prompts/snippets.legacy.js +1 -0
- package/dist/src/prompts/snippets.legacy.js.map +1 -1
- package/dist/src/routing/modelRouterService.js +3 -1
- package/dist/src/routing/modelRouterService.js.map +1 -1
- package/dist/src/routing/modelRouterService.test.js +12 -6
- package/dist/src/routing/modelRouterService.test.js.map +1 -1
- package/dist/src/routing/strategies/approvalModeStrategy.d.ts +18 -0
- package/dist/src/routing/strategies/approvalModeStrategy.js +58 -0
- package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -0
- package/dist/src/routing/strategies/approvalModeStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/approvalModeStrategy.test.js +110 -0
- package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -0
- package/dist/src/safety/checker-runner.js +1 -0
- package/dist/src/safety/checker-runner.js.map +1 -1
- package/dist/src/safety/conseca/conseca.d.ts +31 -0
- package/dist/src/safety/conseca/conseca.js +105 -0
- package/dist/src/safety/conseca/conseca.js.map +1 -0
- package/dist/src/safety/conseca/conseca.test.d.ts +6 -0
- package/dist/src/safety/conseca/conseca.test.js +226 -0
- package/dist/src/safety/conseca/conseca.test.js.map +1 -0
- package/dist/src/safety/conseca/integration.test.d.ts +6 -0
- package/dist/src/safety/conseca/integration.test.js +19 -0
- package/dist/src/safety/conseca/integration.test.js.map +1 -0
- package/dist/src/safety/conseca/policy-enforcer.d.ts +13 -0
- package/dist/src/safety/conseca/policy-enforcer.js +135 -0
- package/dist/src/safety/conseca/policy-enforcer.js.map +1 -0
- package/dist/src/safety/conseca/policy-enforcer.test.d.ts +6 -0
- package/dist/src/safety/conseca/policy-enforcer.test.js +141 -0
- package/dist/src/safety/conseca/policy-enforcer.test.js.map +1 -0
- package/dist/src/safety/conseca/policy-generator.d.ts +15 -0
- package/dist/src/safety/conseca/policy-generator.js +144 -0
- package/dist/src/safety/conseca/policy-generator.js.map +1 -0
- package/dist/src/safety/conseca/policy-generator.test.d.ts +6 -0
- package/dist/src/safety/conseca/policy-generator.test.js +84 -0
- package/dist/src/safety/conseca/policy-generator.test.js.map +1 -0
- package/dist/src/safety/conseca/types.d.ts +15 -0
- package/dist/src/safety/conseca/types.js +7 -0
- package/dist/src/safety/conseca/types.js.map +1 -0
- package/dist/src/safety/context-builder.d.ts +3 -3
- package/dist/src/safety/context-builder.js +60 -4
- package/dist/src/safety/context-builder.js.map +1 -1
- package/dist/src/safety/context-builder.test.js +98 -18
- package/dist/src/safety/context-builder.test.js.map +1 -1
- package/dist/src/safety/protocol.d.ts +4 -0
- package/dist/src/safety/registry.d.ts +2 -1
- package/dist/src/safety/registry.js +14 -4
- package/dist/src/safety/registry.js.map +1 -1
- package/dist/src/safety/registry.test.js +5 -2
- package/dist/src/safety/registry.test.js.map +1 -1
- package/dist/src/scheduler/confirmation.d.ts +0 -13
- package/dist/src/scheduler/confirmation.js +1 -1
- package/dist/src/scheduler/confirmation.js.map +1 -1
- package/dist/src/scheduler/policy.js +6 -2
- package/dist/src/scheduler/policy.js.map +1 -1
- package/dist/src/scheduler/policy.test.js +4 -3
- package/dist/src/scheduler/policy.test.js.map +1 -1
- package/dist/src/scheduler/scheduler.d.ts +3 -1
- package/dist/src/scheduler/scheduler.js +148 -28
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/scheduler/scheduler.test.js +341 -242
- package/dist/src/scheduler/scheduler.test.js.map +1 -1
- package/dist/src/scheduler/scheduler_parallel.test.d.ts +6 -0
- package/dist/src/scheduler/scheduler_parallel.test.js +309 -0
- package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -0
- package/dist/src/scheduler/state-manager.d.ts +8 -0
- package/dist/src/scheduler/state-manager.js +30 -2
- package/dist/src/scheduler/state-manager.js.map +1 -1
- package/dist/src/scheduler/state-manager.test.js +61 -0
- package/dist/src/scheduler/state-manager.test.js.map +1 -1
- package/dist/src/scheduler/tool-executor.js +15 -7
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/tool-executor.test.js +1 -1
- package/dist/src/scheduler/tool-executor.test.js.map +1 -1
- package/dist/src/scheduler/types.d.ts +23 -0
- package/dist/src/services/FolderTrustDiscoveryService.d.ts +32 -0
- package/dist/src/services/FolderTrustDiscoveryService.js +167 -0
- package/dist/src/services/FolderTrustDiscoveryService.js.map +1 -0
- package/dist/src/services/FolderTrustDiscoveryService.test.d.ts +6 -0
- package/dist/src/services/FolderTrustDiscoveryService.test.js +118 -0
- package/dist/src/services/FolderTrustDiscoveryService.test.js.map +1 -0
- package/dist/src/services/chatCompressionService.d.ts +0 -14
- package/dist/src/services/chatCompressionService.js +29 -7
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/chatCompressionService.test.js +3 -1
- package/dist/src/services/chatCompressionService.test.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +7 -1
- package/dist/src/services/chatRecordingService.js +12 -1
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +34 -0
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.js +1 -2
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/sessionSummaryUtils.js +3 -0
- package/dist/src/services/sessionSummaryUtils.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +6 -0
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/skills/skillLoader.js +2 -2
- package/dist/src/skills/skillLoader.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +3 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +35 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +19 -5
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +14 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +29 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/conseca-logger.d.ts +9 -0
- package/dist/src/telemetry/conseca-logger.js +91 -0
- package/dist/src/telemetry/conseca-logger.js.map +1 -0
- package/dist/src/telemetry/conseca-logger.test.d.ts +6 -0
- package/dist/src/telemetry/conseca-logger.test.js +89 -0
- package/dist/src/telemetry/conseca-logger.test.js.map +1 -0
- package/dist/src/telemetry/gcp-exporters.js +1 -2
- package/dist/src/telemetry/gcp-exporters.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -1
- package/dist/src/telemetry/index.js +2 -1
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/integration.test.circular.js +3 -0
- package/dist/src/telemetry/integration.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +1 -2
- package/dist/src/telemetry/loggers.js +3 -13
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +3 -0
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +6 -5
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +1 -3
- package/dist/src/telemetry/metrics.js +3 -2
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +7 -3
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sanitize.test.js +19 -18
- package/dist/src/telemetry/sanitize.test.js.map +1 -1
- package/dist/src/telemetry/semantic.d.ts +7 -9
- package/dist/src/telemetry/semantic.js +8 -8
- package/dist/src/telemetry/semantic.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +42 -4
- package/dist/src/telemetry/types.js +87 -2
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +1 -2
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +1 -2
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/tools/ask-user.test.js +1 -19
- package/dist/src/tools/ask-user.test.js.map +1 -1
- package/dist/src/tools/confirmation-policy.test.js +14 -17
- package/dist/src/tools/confirmation-policy.test.js.map +1 -1
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js +1 -1
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +14 -16
- 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 +24 -59
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
- package/dist/src/tools/diff-utils.d.ts +9 -0
- package/dist/src/tools/diff-utils.js +66 -0
- package/dist/src/tools/diff-utils.js.map +1 -0
- package/dist/src/tools/diff-utils.test.d.ts +6 -0
- package/dist/src/tools/diff-utils.test.js +53 -0
- package/dist/src/tools/diff-utils.test.js.map +1 -0
- package/dist/src/tools/edit.d.ts +9 -4
- package/dist/src/tools/edit.js +203 -34
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +225 -10
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/enter-plan-mode.js +1 -1
- package/dist/src/tools/enter-plan-mode.js.map +1 -1
- package/dist/src/tools/enter-plan-mode.test.js +1 -1
- package/dist/src/tools/enter-plan-mode.test.js.map +1 -1
- package/dist/src/tools/exit-plan-mode.js +10 -24
- package/dist/src/tools/exit-plan-mode.js.map +1 -1
- package/dist/src/tools/exit-plan-mode.test.js +1 -1
- package/dist/src/tools/exit-plan-mode.test.js.map +1 -1
- package/dist/src/tools/grep-utils.d.ts +49 -0
- package/dist/src/tools/grep-utils.js +139 -0
- package/dist/src/tools/grep-utils.js.map +1 -0
- package/dist/src/tools/grep.js +4 -44
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +21 -2
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.js +6 -1
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +2 -2
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.js +16 -18
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +51 -0
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +22 -1
- package/dist/src/tools/mcp-client.js +95 -36
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +148 -20
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +15 -5
- package/dist/src/tools/mcp-tool.js +36 -8
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.js +1 -1
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +5 -0
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/omissionPlaceholderDetector.d.ts +15 -0
- package/dist/src/tools/omissionPlaceholderDetector.js +90 -0
- package/dist/src/tools/omissionPlaceholderDetector.js.map +1 -0
- package/dist/src/tools/omissionPlaceholderDetector.test.d.ts +6 -0
- package/dist/src/tools/omissionPlaceholderDetector.test.js +49 -0
- package/dist/src/tools/omissionPlaceholderDetector.test.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +4 -4
- package/dist/src/tools/read-file.js +17 -10
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +20 -10
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/ripGrep.js +49 -46
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +52 -37
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +2 -2
- package/dist/src/tools/shell.js +2 -2
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +1 -2
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +0 -6
- package/dist/src/tools/tool-names.js +0 -15
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +1 -0
- package/dist/src/tools/tool-registry.js +33 -6
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +47 -0
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +21 -1
- package/dist/src/tools/tools.js +19 -3
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +24 -0
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +9 -1
- package/dist/src/tools/web-fetch.js +273 -34
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +303 -30
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/write-file.js +14 -10
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +75 -0
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +2 -2
- package/dist/src/tools/write-todos.js +1 -1
- package/dist/src/tools/write-todos.js.map +1 -1
- package/dist/src/tools/xcode-mcp-fix-transport.js +4 -1
- package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -1
- package/dist/src/utils/approvalModeUtils.d.ts +14 -0
- package/dist/src/utils/approvalModeUtils.js +35 -0
- package/dist/src/utils/approvalModeUtils.js.map +1 -0
- package/dist/src/utils/approvalModeUtils.test.d.ts +6 -0
- package/dist/src/utils/approvalModeUtils.test.js +36 -0
- package/dist/src/utils/approvalModeUtils.test.js.map +1 -0
- package/dist/src/utils/authConsent.d.ts +1 -1
- package/dist/src/utils/authConsent.js +10 -8
- package/dist/src/utils/authConsent.js.map +1 -1
- package/dist/src/utils/authConsent.test.js +89 -44
- package/dist/src/utils/authConsent.test.js.map +1 -1
- package/dist/src/utils/compatibility.d.ts +41 -0
- package/dist/src/utils/compatibility.js +112 -0
- package/dist/src/utils/compatibility.js.map +1 -0
- package/dist/src/utils/compatibility.test.d.ts +6 -0
- package/dist/src/utils/compatibility.test.js +233 -0
- package/dist/src/utils/compatibility.test.js.map +1 -0
- package/dist/src/utils/editCorrector.js +22 -29
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/envExpansion.d.ts +18 -0
- package/dist/src/utils/envExpansion.js +46 -0
- package/dist/src/utils/envExpansion.js.map +1 -0
- package/dist/src/utils/envExpansion.test.d.ts +6 -0
- package/dist/src/utils/envExpansion.test.js +110 -0
- package/dist/src/utils/envExpansion.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +1 -0
- package/dist/src/utils/errors.js +55 -10
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +27 -1
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/events.d.ts +17 -0
- package/dist/src/utils/events.js +12 -0
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/events.test.d.ts +1 -1
- package/dist/src/utils/events.test.js +50 -3
- package/dist/src/utils/events.test.js.map +1 -1
- package/dist/src/utils/fastAckHelper.js +2 -1
- package/dist/src/utils/fastAckHelper.js.map +1 -1
- package/dist/src/utils/fetch.d.ts +1 -1
- package/dist/src/utils/fetch.js +15 -2
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/fileDiffUtils.d.ts +2 -2
- package/dist/src/utils/fileDiffUtils.js +1 -2
- package/dist/src/utils/fileDiffUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +5 -3
- package/dist/src/utils/fileUtils.js +25 -16
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +14 -13
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.js +4 -1
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +4 -5
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/getPty.js +4 -0
- package/dist/src/utils/getPty.js.map +1 -1
- package/dist/src/utils/googleErrors.js +29 -5
- package/dist/src/utils/googleErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.js +10 -0
- package/dist/src/utils/googleQuotaErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.test.js +16 -1
- package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +2 -0
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +1 -2
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/retry.d.ts +1 -1
- package/dist/src/utils/retry.js +9 -4
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +15 -12
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/safeJsonStringify.js +3 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -1
- package/dist/src/utils/schemaValidator.js +5 -3
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/session.d.ts +1 -0
- package/dist/src/utils/session.js +3 -0
- package/dist/src/utils/session.js.map +1 -1
- package/dist/src/utils/sessionUtils.d.ts +14 -0
- package/dist/src/utils/sessionUtils.js +113 -0
- package/dist/src/utils/sessionUtils.js.map +1 -0
- package/dist/src/utils/sessionUtils.test.d.ts +1 -0
- package/dist/src/utils/sessionUtils.test.js +137 -0
- package/dist/src/utils/sessionUtils.test.js.map +1 -0
- package/dist/src/utils/shell-utils.js +1 -0
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/stdio.js +6 -0
- package/dist/src/utils/stdio.js.map +1 -1
- package/dist/src/utils/textUtils.d.ts +9 -0
- package/dist/src/utils/textUtils.js +15 -0
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/textUtils.test.js +42 -1
- package/dist/src/utils/textUtils.test.js.map +1 -1
- package/dist/src/utils/toolCallContext.d.ts +0 -5
- package/dist/src/utils/toolCallContext.js +1 -1
- package/dist/src/utils/toolCallContext.js.map +1 -1
- package/dist/src/utils/userAccountManager.js +3 -0
- package/dist/src/utils/userAccountManager.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -3
- package/dist/docs/architecture.md +0 -80
- package/dist/docs/cli/index.md +0 -123
- package/dist/docs/core/concepts.md +0 -137
- package/dist/docs/get-started/configuration-v1.md +0 -882
- package/dist/google-gemini-cli-core-0.30.0-preview.5.tgz +0 -0
- /package/dist/docs/{core → reference}/memport.md +0 -0
- /package/dist/docs/{core → reference}/tools-api.md +0 -0
- /package/dist/docs/{cli → resources}/uninstall.md +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
|
-
import { WebFetchTool, parsePrompt } from './web-fetch.js';
|
|
7
|
+
import { WebFetchTool, parsePrompt, convertGithubUrlToRaw, } from './web-fetch.js';
|
|
8
8
|
import { ApprovalMode } from '../policy/types.js';
|
|
9
9
|
import { ToolConfirmationOutcome } from './tools.js';
|
|
10
10
|
import { ToolErrorType } from './tool-error.js';
|
|
@@ -38,6 +38,65 @@ vi.mock('../utils/fetch.js', async (importOriginal) => {
|
|
|
38
38
|
vi.mock('node:crypto', () => ({
|
|
39
39
|
randomUUID: vi.fn(),
|
|
40
40
|
}));
|
|
41
|
+
/**
|
|
42
|
+
* Helper to mock fetchWithTimeout with URL matching.
|
|
43
|
+
*/
|
|
44
|
+
const mockFetch = (url, response) => vi
|
|
45
|
+
.spyOn(fetchUtils, 'fetchWithTimeout')
|
|
46
|
+
.mockImplementation(async (actualUrl) => {
|
|
47
|
+
if (actualUrl !== url) {
|
|
48
|
+
throw new Error(`Unexpected fetch URL: expected "${url}", got "${actualUrl}"`);
|
|
49
|
+
}
|
|
50
|
+
if (response instanceof Error) {
|
|
51
|
+
throw response;
|
|
52
|
+
}
|
|
53
|
+
const headers = response.headers || new Headers();
|
|
54
|
+
// If we have text/arrayBuffer but no body, create a body mock
|
|
55
|
+
let body = response.body;
|
|
56
|
+
if (!body) {
|
|
57
|
+
let content;
|
|
58
|
+
if (response.text) {
|
|
59
|
+
const text = await response.text();
|
|
60
|
+
content = new TextEncoder().encode(text);
|
|
61
|
+
}
|
|
62
|
+
else if (response.arrayBuffer) {
|
|
63
|
+
const ab = await response.arrayBuffer();
|
|
64
|
+
content = new Uint8Array(ab);
|
|
65
|
+
}
|
|
66
|
+
if (content) {
|
|
67
|
+
body = {
|
|
68
|
+
getReader: () => {
|
|
69
|
+
let sent = false;
|
|
70
|
+
return {
|
|
71
|
+
read: async () => {
|
|
72
|
+
if (sent)
|
|
73
|
+
return { done: true, value: undefined };
|
|
74
|
+
sent = true;
|
|
75
|
+
return { done: false, value: content };
|
|
76
|
+
},
|
|
77
|
+
releaseLock: () => { },
|
|
78
|
+
cancel: async () => { },
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
ok: response.status ? response.status < 400 : true,
|
|
86
|
+
status: 200,
|
|
87
|
+
headers,
|
|
88
|
+
text: response.text || (() => Promise.resolve('')),
|
|
89
|
+
arrayBuffer: response.arrayBuffer || (() => Promise.resolve(new ArrayBuffer(0))),
|
|
90
|
+
body: body || {
|
|
91
|
+
getReader: () => ({
|
|
92
|
+
read: async () => ({ done: true, value: undefined }),
|
|
93
|
+
releaseLock: () => { },
|
|
94
|
+
cancel: async () => { },
|
|
95
|
+
}),
|
|
96
|
+
},
|
|
97
|
+
...response,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
41
100
|
describe('parsePrompt', () => {
|
|
42
101
|
it('should extract valid URLs separated by whitespace', () => {
|
|
43
102
|
const prompt = 'Go to https://example.com and http://google.com';
|
|
@@ -101,6 +160,26 @@ describe('parsePrompt', () => {
|
|
|
101
160
|
expect(errors[0]).toContain('ftp://bad.com');
|
|
102
161
|
});
|
|
103
162
|
});
|
|
163
|
+
describe('convertGithubUrlToRaw', () => {
|
|
164
|
+
it('should convert valid github blob urls', () => {
|
|
165
|
+
expect(convertGithubUrlToRaw('https://github.com/user/repo/blob/main/README.md')).toBe('https://raw.githubusercontent.com/user/repo/main/README.md');
|
|
166
|
+
});
|
|
167
|
+
it('should not convert non-blob github urls', () => {
|
|
168
|
+
expect(convertGithubUrlToRaw('https://github.com/user/repo')).toBe('https://github.com/user/repo');
|
|
169
|
+
});
|
|
170
|
+
it('should not convert urls with similar domain names', () => {
|
|
171
|
+
expect(convertGithubUrlToRaw('https://mygithub.com/user/repo/blob/main')).toBe('https://mygithub.com/user/repo/blob/main');
|
|
172
|
+
});
|
|
173
|
+
it('should only replace the /blob/ that separates repo from branch', () => {
|
|
174
|
+
expect(convertGithubUrlToRaw('https://github.com/blob/repo/blob/main/test.ts')).toBe('https://raw.githubusercontent.com/blob/repo/main/test.ts');
|
|
175
|
+
});
|
|
176
|
+
it('should not convert urls if blob is not in path', () => {
|
|
177
|
+
expect(convertGithubUrlToRaw('https://github.com/user/repo/tree/main')).toBe('https://github.com/user/repo/tree/main');
|
|
178
|
+
});
|
|
179
|
+
it('should handle invalid urls gracefully', () => {
|
|
180
|
+
expect(convertGithubUrlToRaw('not-a-url')).toBe('not-a-url');
|
|
181
|
+
});
|
|
182
|
+
});
|
|
104
183
|
describe('WebFetchTool', () => {
|
|
105
184
|
let mockConfig;
|
|
106
185
|
let bus;
|
|
@@ -114,6 +193,7 @@ describe('WebFetchTool', () => {
|
|
|
114
193
|
getProxy: vi.fn(),
|
|
115
194
|
getGeminiClient: mockGetGeminiClient,
|
|
116
195
|
getRetryFetchErrors: vi.fn().mockReturnValue(false),
|
|
196
|
+
getDirectWebFetch: vi.fn().mockReturnValue(false),
|
|
117
197
|
modelConfigService: {
|
|
118
198
|
getResolvedConfig: vi.fn().mockImplementation(({ model }) => ({
|
|
119
199
|
model,
|
|
@@ -124,35 +204,87 @@ describe('WebFetchTool', () => {
|
|
|
124
204
|
};
|
|
125
205
|
});
|
|
126
206
|
describe('validateToolParamValues', () => {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
207
|
+
describe('standard mode', () => {
|
|
208
|
+
it.each([
|
|
209
|
+
{
|
|
210
|
+
name: 'empty prompt',
|
|
211
|
+
prompt: '',
|
|
212
|
+
expectedError: "The 'prompt' parameter cannot be empty",
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
name: 'prompt with no URLs',
|
|
216
|
+
prompt: 'hello world',
|
|
217
|
+
expectedError: "The 'prompt' must contain at least one valid URL",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: 'prompt with malformed URLs',
|
|
221
|
+
prompt: 'fetch httpshttps://example.com',
|
|
222
|
+
expectedError: 'Error(s) in prompt URLs:',
|
|
223
|
+
},
|
|
224
|
+
])('should throw if $name', ({ prompt, expectedError }) => {
|
|
225
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
226
|
+
expect(() => tool.build({ prompt })).toThrow(expectedError);
|
|
227
|
+
});
|
|
228
|
+
it('should pass if prompt contains at least one valid URL', () => {
|
|
229
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
230
|
+
expect(() => tool.build({ prompt: 'fetch https://example.com' })).not.toThrow();
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
describe('experimental mode', () => {
|
|
234
|
+
beforeEach(() => {
|
|
235
|
+
vi.spyOn(mockConfig, 'getDirectWebFetch').mockReturnValue(true);
|
|
236
|
+
});
|
|
237
|
+
it('should throw if url is missing', () => {
|
|
238
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
239
|
+
expect(() => tool.build({ prompt: 'foo' })).toThrow("params must have required property 'url'");
|
|
240
|
+
});
|
|
241
|
+
it('should throw if url is invalid', () => {
|
|
242
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
243
|
+
expect(() => tool.build({ url: 'not-a-url' })).toThrow('Invalid URL: "not-a-url"');
|
|
244
|
+
});
|
|
245
|
+
it('should pass if url is valid', () => {
|
|
246
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
247
|
+
expect(() => tool.build({ url: 'https://example.com' })).not.toThrow();
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
describe('getSchema', () => {
|
|
252
|
+
it('should return standard schema by default', () => {
|
|
144
253
|
const tool = new WebFetchTool(mockConfig, bus);
|
|
145
|
-
|
|
254
|
+
const schema = tool.getSchema();
|
|
255
|
+
expect(schema.parametersJsonSchema).toHaveProperty('properties.prompt');
|
|
256
|
+
expect(schema.parametersJsonSchema).not.toHaveProperty('properties.url');
|
|
146
257
|
});
|
|
147
|
-
it('should
|
|
258
|
+
it('should return experimental schema when enabled', () => {
|
|
259
|
+
vi.spyOn(mockConfig, 'getDirectWebFetch').mockReturnValue(true);
|
|
148
260
|
const tool = new WebFetchTool(mockConfig, bus);
|
|
149
|
-
|
|
261
|
+
const schema = tool.getSchema();
|
|
262
|
+
expect(schema.parametersJsonSchema).toHaveProperty('properties.url');
|
|
263
|
+
expect(schema.parametersJsonSchema).not.toHaveProperty('properties.prompt');
|
|
264
|
+
expect(schema.parametersJsonSchema).toHaveProperty('required', ['url']);
|
|
150
265
|
});
|
|
151
266
|
});
|
|
152
267
|
describe('execute', () => {
|
|
268
|
+
it('should return WEB_FETCH_PROCESSING_ERROR on rate limit exceeded', async () => {
|
|
269
|
+
vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(false);
|
|
270
|
+
mockGenerateContent.mockResolvedValue({
|
|
271
|
+
candidates: [{ content: { parts: [{ text: 'response' }] } }],
|
|
272
|
+
});
|
|
273
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
274
|
+
const params = { prompt: 'fetch https://ratelimit.example.com' };
|
|
275
|
+
const invocation = tool.build(params);
|
|
276
|
+
// Execute 10 times to hit the limit
|
|
277
|
+
for (let i = 0; i < 10; i++) {
|
|
278
|
+
await invocation.execute(new AbortController().signal);
|
|
279
|
+
}
|
|
280
|
+
// The 11th time should fail due to rate limit
|
|
281
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
282
|
+
expect(result.error?.type).toBe(ToolErrorType.WEB_FETCH_PROCESSING_ERROR);
|
|
283
|
+
expect(result.error?.message).toContain('Rate limit exceeded for host');
|
|
284
|
+
});
|
|
153
285
|
it('should return WEB_FETCH_FALLBACK_FAILED on fallback fetch failure', async () => {
|
|
154
286
|
vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(true);
|
|
155
|
-
|
|
287
|
+
mockFetch('https://private.ip/', new Error('fetch failed'));
|
|
156
288
|
const tool = new WebFetchTool(mockConfig, bus);
|
|
157
289
|
const params = { prompt: 'fetch https://private.ip' };
|
|
158
290
|
const invocation = tool.build(params);
|
|
@@ -171,8 +303,7 @@ describe('WebFetchTool', () => {
|
|
|
171
303
|
it('should log telemetry when falling back due to private IP', async () => {
|
|
172
304
|
vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(true);
|
|
173
305
|
// Mock fetchWithTimeout to succeed so fallback proceeds
|
|
174
|
-
|
|
175
|
-
ok: true,
|
|
306
|
+
mockFetch('https://private.ip/', {
|
|
176
307
|
text: () => Promise.resolve('some content'),
|
|
177
308
|
});
|
|
178
309
|
mockGenerateContent.mockResolvedValue({
|
|
@@ -192,8 +323,7 @@ describe('WebFetchTool', () => {
|
|
|
192
323
|
candidates: [],
|
|
193
324
|
});
|
|
194
325
|
// Mock fetchWithTimeout to succeed so fallback proceeds
|
|
195
|
-
|
|
196
|
-
ok: true,
|
|
326
|
+
mockFetch('https://public.ip/', {
|
|
197
327
|
text: () => Promise.resolve('some content'),
|
|
198
328
|
});
|
|
199
329
|
// Mock fallback LLM call
|
|
@@ -245,8 +375,7 @@ describe('WebFetchTool', () => {
|
|
|
245
375
|
const headers = contentType
|
|
246
376
|
? new Headers({ 'content-type': contentType })
|
|
247
377
|
: new Headers();
|
|
248
|
-
|
|
249
|
-
ok: true,
|
|
378
|
+
mockFetch('https://example.com/', {
|
|
250
379
|
headers,
|
|
251
380
|
text: () => Promise.resolve(content),
|
|
252
381
|
});
|
|
@@ -290,6 +419,20 @@ describe('WebFetchTool', () => {
|
|
|
290
419
|
onConfirm: expect.any(Function),
|
|
291
420
|
});
|
|
292
421
|
});
|
|
422
|
+
it('should handle URL param in confirmation details', async () => {
|
|
423
|
+
vi.spyOn(mockConfig, 'getDirectWebFetch').mockReturnValue(true);
|
|
424
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
425
|
+
const params = { url: 'https://example.com' };
|
|
426
|
+
const invocation = tool.build(params);
|
|
427
|
+
const confirmationDetails = await invocation.shouldConfirmExecute(new AbortController().signal);
|
|
428
|
+
expect(confirmationDetails).toEqual({
|
|
429
|
+
type: 'info',
|
|
430
|
+
title: 'Confirm Web Fetch',
|
|
431
|
+
prompt: 'Fetch https://example.com',
|
|
432
|
+
urls: ['https://example.com'],
|
|
433
|
+
onConfirm: expect.any(Function),
|
|
434
|
+
});
|
|
435
|
+
});
|
|
293
436
|
it('should convert github urls to raw format', async () => {
|
|
294
437
|
const tool = new WebFetchTool(mockConfig, bus);
|
|
295
438
|
const params = {
|
|
@@ -315,7 +458,7 @@ describe('WebFetchTool', () => {
|
|
|
315
458
|
const confirmationDetails = await invocation.shouldConfirmExecute(new AbortController().signal);
|
|
316
459
|
expect(confirmationDetails).toBe(false);
|
|
317
460
|
});
|
|
318
|
-
it('should call setApprovalMode when onConfirm is called with ProceedAlways', async () => {
|
|
461
|
+
it('should NOT call setApprovalMode when onConfirm is called with ProceedAlways (now handled by scheduler)', async () => {
|
|
319
462
|
const tool = new WebFetchTool(mockConfig, bus);
|
|
320
463
|
const params = { prompt: 'fetch https://example.com' };
|
|
321
464
|
const invocation = tool.build(params);
|
|
@@ -325,7 +468,8 @@ describe('WebFetchTool', () => {
|
|
|
325
468
|
'onConfirm' in confirmationDetails) {
|
|
326
469
|
await confirmationDetails.onConfirm(ToolConfirmationOutcome.ProceedAlways);
|
|
327
470
|
}
|
|
328
|
-
|
|
471
|
+
// Schedulers are now responsible for mode transitions via updatePolicy
|
|
472
|
+
expect(mockConfig.setApprovalMode).not.toHaveBeenCalled();
|
|
329
473
|
});
|
|
330
474
|
});
|
|
331
475
|
describe('Message Bus Integration', () => {
|
|
@@ -438,5 +582,134 @@ describe('WebFetchTool', () => {
|
|
|
438
582
|
expect(result.llmContent).toContain('Fetched content');
|
|
439
583
|
});
|
|
440
584
|
});
|
|
585
|
+
describe('execute (experimental)', () => {
|
|
586
|
+
beforeEach(() => {
|
|
587
|
+
vi.spyOn(mockConfig, 'getDirectWebFetch').mockReturnValue(true);
|
|
588
|
+
vi.spyOn(fetchUtils, 'isPrivateIp').mockReturnValue(false);
|
|
589
|
+
});
|
|
590
|
+
it('should perform direct fetch and return text for plain text content', async () => {
|
|
591
|
+
const content = 'Plain text content';
|
|
592
|
+
mockFetch('https://example.com/', {
|
|
593
|
+
status: 200,
|
|
594
|
+
headers: new Headers({ 'content-type': 'text/plain' }),
|
|
595
|
+
text: () => Promise.resolve(content),
|
|
596
|
+
});
|
|
597
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
598
|
+
const params = { url: 'https://example.com' };
|
|
599
|
+
const invocation = tool.build(params);
|
|
600
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
601
|
+
expect(result.llmContent).toBe(content);
|
|
602
|
+
expect(result.returnDisplay).toContain('Fetched text/plain content');
|
|
603
|
+
expect(fetchUtils.fetchWithTimeout).toHaveBeenCalledWith('https://example.com/', expect.any(Number), expect.objectContaining({
|
|
604
|
+
headers: expect.objectContaining({
|
|
605
|
+
Accept: expect.stringContaining('text/plain'),
|
|
606
|
+
}),
|
|
607
|
+
}));
|
|
608
|
+
});
|
|
609
|
+
it('should use html-to-text and preserve links for HTML content', async () => {
|
|
610
|
+
const content = '<html><body><a href="https://link.com">Link</a></body></html>';
|
|
611
|
+
mockFetch('https://example.com/', {
|
|
612
|
+
status: 200,
|
|
613
|
+
headers: new Headers({ 'content-type': 'text/html' }),
|
|
614
|
+
text: () => Promise.resolve(content),
|
|
615
|
+
});
|
|
616
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
617
|
+
const params = { url: 'https://example.com' };
|
|
618
|
+
const invocation = tool.build(params);
|
|
619
|
+
await invocation.execute(new AbortController().signal);
|
|
620
|
+
expect(convert).toHaveBeenCalledWith(content, expect.objectContaining({
|
|
621
|
+
selectors: [
|
|
622
|
+
expect.objectContaining({
|
|
623
|
+
selector: 'a',
|
|
624
|
+
options: { ignoreHref: false, baseUrl: 'https://example.com/' },
|
|
625
|
+
}),
|
|
626
|
+
],
|
|
627
|
+
}));
|
|
628
|
+
});
|
|
629
|
+
it('should return base64 for image content', async () => {
|
|
630
|
+
const buffer = Buffer.from('fake-image-data');
|
|
631
|
+
mockFetch('https://example.com/image.png', {
|
|
632
|
+
status: 200,
|
|
633
|
+
headers: new Headers({ 'content-type': 'image/png' }),
|
|
634
|
+
arrayBuffer: () => Promise.resolve(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)),
|
|
635
|
+
});
|
|
636
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
637
|
+
const params = { url: 'https://example.com/image.png' };
|
|
638
|
+
const invocation = tool.build(params);
|
|
639
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
640
|
+
expect(result.llmContent).toEqual({
|
|
641
|
+
inlineData: {
|
|
642
|
+
data: buffer.toString('base64'),
|
|
643
|
+
mimeType: 'image/png',
|
|
644
|
+
},
|
|
645
|
+
});
|
|
646
|
+
});
|
|
647
|
+
it('should return raw response info for 4xx/5xx errors', async () => {
|
|
648
|
+
const errorBody = 'Not Found';
|
|
649
|
+
mockFetch('https://example.com/404', {
|
|
650
|
+
status: 404,
|
|
651
|
+
headers: new Headers({ 'x-test': 'val' }),
|
|
652
|
+
text: () => Promise.resolve(errorBody),
|
|
653
|
+
});
|
|
654
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
655
|
+
const params = { url: 'https://example.com/404' };
|
|
656
|
+
const invocation = tool.build(params);
|
|
657
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
658
|
+
expect(result.llmContent).toContain('Request failed with status 404');
|
|
659
|
+
expect(result.llmContent).toContain('val');
|
|
660
|
+
expect(result.llmContent).toContain(errorBody);
|
|
661
|
+
expect(result.returnDisplay).toContain('Failed to fetch');
|
|
662
|
+
});
|
|
663
|
+
it('should throw error if Content-Length exceeds limit', async () => {
|
|
664
|
+
mockFetch('https://example.com/large', {
|
|
665
|
+
headers: new Headers({
|
|
666
|
+
'content-length': (11 * 1024 * 1024).toString(),
|
|
667
|
+
}),
|
|
668
|
+
});
|
|
669
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
670
|
+
const invocation = tool.build({ url: 'https://example.com/large' });
|
|
671
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
672
|
+
expect(result.llmContent).toContain('Error');
|
|
673
|
+
expect(result.llmContent).toContain('exceeds size limit');
|
|
674
|
+
});
|
|
675
|
+
it('should throw error if stream exceeds limit', async () => {
|
|
676
|
+
const largeChunk = new Uint8Array(11 * 1024 * 1024);
|
|
677
|
+
mockFetch('https://example.com/large-stream', {
|
|
678
|
+
body: {
|
|
679
|
+
getReader: () => ({
|
|
680
|
+
read: vi
|
|
681
|
+
.fn()
|
|
682
|
+
.mockResolvedValueOnce({ done: false, value: largeChunk })
|
|
683
|
+
.mockResolvedValueOnce({ done: true }),
|
|
684
|
+
releaseLock: vi.fn(),
|
|
685
|
+
cancel: vi.fn().mockResolvedValue(undefined),
|
|
686
|
+
}),
|
|
687
|
+
},
|
|
688
|
+
});
|
|
689
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
690
|
+
const invocation = tool.build({
|
|
691
|
+
url: 'https://example.com/large-stream',
|
|
692
|
+
});
|
|
693
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
694
|
+
expect(result.llmContent).toContain('Error');
|
|
695
|
+
expect(result.llmContent).toContain('exceeds size limit');
|
|
696
|
+
});
|
|
697
|
+
it('should return error if url is missing (experimental)', async () => {
|
|
698
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
699
|
+
// Manually bypass build() validation to test executeExperimental safety check
|
|
700
|
+
const invocation = tool['createInvocation']({}, bus);
|
|
701
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
702
|
+
expect(result.llmContent).toContain('Error: No URL provided.');
|
|
703
|
+
expect(result.error?.type).toBe(ToolErrorType.INVALID_TOOL_PARAMS);
|
|
704
|
+
});
|
|
705
|
+
it('should return error if url is invalid (experimental)', async () => {
|
|
706
|
+
const tool = new WebFetchTool(mockConfig, bus);
|
|
707
|
+
// Manually bypass build() validation to test executeExperimental safety check
|
|
708
|
+
const invocation = tool['createInvocation']({ url: 'not-a-url' }, bus);
|
|
709
|
+
const result = await invocation.execute(new AbortController().signal);
|
|
710
|
+
expect(result.llmContent).toContain('Error: Invalid URL "not-a-url"');
|
|
711
|
+
expect(result.error?.type).toBe(ToolErrorType.INVALID_TOOL_PARAMS);
|
|
712
|
+
});
|
|
713
|
+
});
|
|
441
714
|
});
|
|
442
715
|
//# sourceMappingURL=web-fetch.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-fetch.test.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-fetch.test.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,14 @@ import os from 'node:os';
|
|
|
10
10
|
import * as Diff from 'diff';
|
|
11
11
|
import { WRITE_FILE_TOOL_NAME, WRITE_FILE_DISPLAY_NAME } from './tool-names.js';
|
|
12
12
|
import { ApprovalMode } from '../policy/types.js';
|
|
13
|
-
import { BaseDeclarativeTool, BaseToolInvocation, Kind
|
|
13
|
+
import { BaseDeclarativeTool, BaseToolInvocation, Kind } from './tools.js';
|
|
14
14
|
import { ToolErrorType } from './tool-error.js';
|
|
15
15
|
import { makeRelative, shortenPath } from '../utils/paths.js';
|
|
16
16
|
import { getErrorMessage, isNodeError } from '../utils/errors.js';
|
|
17
17
|
import { ensureCorrectEdit, ensureCorrectFileContent, } from '../utils/editCorrector.js';
|
|
18
18
|
import { detectLineEnding } from '../utils/textUtils.js';
|
|
19
19
|
import { DEFAULT_DIFF_OPTIONS, getDiffStat } from './diffOptions.js';
|
|
20
|
+
import { getDiffContextSnippet } from './diff-utils.js';
|
|
20
21
|
import { IdeClient } from '../ide/ide-client.js';
|
|
21
22
|
import { logFileOperation } from '../telemetry/loggers.js';
|
|
22
23
|
import { FileOperationEvent } from '../telemetry/types.js';
|
|
@@ -26,6 +27,7 @@ import { getLanguageFromFilePath } from '../utils/language-detection.js';
|
|
|
26
27
|
import { debugLogger } from '../utils/debugLogger.js';
|
|
27
28
|
import { WRITE_FILE_DEFINITION } from './definitions/coreTools.js';
|
|
28
29
|
import { resolveToolDeclaration } from './definitions/resolver.js';
|
|
30
|
+
import { detectOmissionPlaceholders } from './omissionPlaceholderDetector.js';
|
|
29
31
|
export async function getCorrectedFileContent(config, filePath, proposedContent, abortSignal) {
|
|
30
32
|
let originalContent = '';
|
|
31
33
|
let fileExists = false;
|
|
@@ -113,15 +115,9 @@ class WriteFileToolInvocation extends BaseToolInvocation {
|
|
|
113
115
|
fileDiff,
|
|
114
116
|
originalContent,
|
|
115
117
|
newContent: correctedContent,
|
|
116
|
-
onConfirm: async (
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
// AUTO_EDIT already reflects always approving write-file.
|
|
120
|
-
this.config.setApprovalMode(ApprovalMode.AUTO_EDIT);
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
await this.publishPolicyUpdate(outcome);
|
|
124
|
-
}
|
|
118
|
+
onConfirm: async (_outcome) => {
|
|
119
|
+
// Mode transitions (e.g. AUTO_EDIT) and policy updates are now
|
|
120
|
+
// handled centrally by the scheduler.
|
|
125
121
|
if (ideConfirmation) {
|
|
126
122
|
const result = await ideConfirmation;
|
|
127
123
|
if (result.status === 'accepted' && result.content) {
|
|
@@ -204,6 +200,10 @@ class WriteFileToolInvocation extends BaseToolInvocation {
|
|
|
204
200
|
if (modified_by_user) {
|
|
205
201
|
llmSuccessMessageParts.push(`User modified the \`content\` to be: ${content}`);
|
|
206
202
|
}
|
|
203
|
+
// Return a diff of the file before and after the write so that the agent
|
|
204
|
+
// can avoid the need to spend a turn doing a verification read.
|
|
205
|
+
const snippet = getDiffContextSnippet(isNewFile ? '' : originalContent, finalContent, 5);
|
|
206
|
+
llmSuccessMessageParts.push(`Here is the updated code:\n${snippet}`);
|
|
207
207
|
// Log file operation for telemetry (without diff_stat to avoid double-counting)
|
|
208
208
|
const mimetype = getSpecificMimeType(this.resolvedPath);
|
|
209
209
|
const programmingLanguage = getLanguageFromFilePath(this.resolvedPath);
|
|
@@ -297,6 +297,10 @@ export class WriteFileTool extends BaseDeclarativeTool {
|
|
|
297
297
|
catch (statError) {
|
|
298
298
|
return `Error accessing path properties for validation: ${resolvedPath}. Reason: ${statError instanceof Error ? statError.message : String(statError)}`;
|
|
299
299
|
}
|
|
300
|
+
const omissionPlaceholders = detectOmissionPlaceholders(params.content);
|
|
301
|
+
if (omissionPlaceholders.length > 0) {
|
|
302
|
+
return "`content` contains an omission placeholder (for example 'rest of methods ...'). Provide complete file content.";
|
|
303
|
+
}
|
|
300
304
|
return null;
|
|
301
305
|
}
|
|
302
306
|
createInvocation(params, messageBus) {
|