@machina.ai/cell-cli-core 1.36.0-rc1 → 1.38.1-rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/AFTER_MERGE_PROMPT.md +3 -10
- package/dist/docs/assets/theme-tokyonight-dark.png +0 -0
- package/dist/docs/changelogs/index.md +49 -0
- package/dist/docs/changelogs/latest.md +355 -458
- package/dist/docs/changelogs/preview.md +402 -363
- package/dist/docs/cli/acp-mode.md +126 -0
- package/dist/docs/cli/cli-reference.md +1 -1
- package/dist/docs/cli/notifications.md +5 -5
- package/dist/docs/cli/plan-mode.md +26 -10
- package/dist/docs/cli/sandbox.md +53 -1
- package/dist/docs/cli/settings.md +52 -48
- package/dist/docs/cli/themes.md +5 -0
- package/dist/docs/core/index.md +2 -2
- package/dist/docs/core/remote-agents.md +14 -18
- package/dist/docs/core/subagents.md +194 -47
- package/dist/docs/get-started/authentication.md +2 -2
- package/dist/docs/get-started/gemini-3.md +1 -1
- package/dist/docs/get-started/index.md +127 -1
- package/dist/docs/get-started/installation.md +7 -0
- package/dist/docs/hooks/index.md +6 -6
- package/dist/docs/ide-integration/index.md +99 -24
- package/dist/docs/index.md +0 -2
- package/dist/docs/redirects.json +1 -0
- package/dist/docs/reference/commands.md +1 -3
- package/dist/docs/reference/configuration.md +220 -99
- package/dist/docs/reference/keyboard-shortcuts.md +21 -8
- package/dist/docs/reference/policy-engine.md +36 -31
- package/dist/docs/reference/tools.md +56 -23
- package/dist/docs/release-confidence.md +0 -6
- package/dist/docs/releases.md +4 -0
- package/dist/docs/resources/quota-and-pricing.md +23 -9
- package/dist/docs/sidebar.json +11 -4
- package/dist/docs/tools/mcp-server.md +3 -3
- package/dist/docs/tools/planning.md +6 -4
- package/dist/docs/tools/web-fetch.md +3 -0
- package/dist/package.json +2 -1
- package/dist/src/agent/agent-session.test.js +14 -6
- package/dist/src/agent/agent-session.test.js.map +1 -1
- package/dist/src/agent/event-translator.js +2 -1
- package/dist/src/agent/event-translator.js.map +1 -1
- package/dist/src/agent/event-translator.test.js +1 -0
- package/dist/src/agent/event-translator.test.js.map +1 -1
- package/dist/src/agent/legacy-agent-session.d.ts +47 -4
- package/dist/src/agent/legacy-agent-session.js +38 -15
- package/dist/src/agent/legacy-agent-session.js.map +1 -1
- package/dist/src/agent/legacy-agent-session.test.js +60 -73
- package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
- package/dist/src/agent/mock.js +7 -1
- package/dist/src/agent/mock.js.map +1 -1
- package/dist/src/agent/mock.test.js +1 -1
- package/dist/src/agent/mock.test.js.map +1 -1
- package/dist/src/agent/types.d.ts +34 -1
- package/dist/src/agents/a2a-client-manager.js +3 -3
- package/dist/src/agents/a2a-client-manager.js.map +1 -1
- package/dist/src/agents/agent-scheduler.js +6 -1
- package/dist/src/agents/agent-scheduler.js.map +1 -1
- package/dist/src/agents/agent-scheduler.test.js +38 -0
- package/dist/src/agents/agent-scheduler.test.js.map +1 -1
- package/dist/src/agents/agentLoader.d.ts +12 -12
- package/dist/src/agents/agentLoader.js +1 -0
- package/dist/src/agents/agentLoader.js.map +1 -1
- package/dist/src/agents/auth-provider/api-key-provider.test.js +18 -2
- package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -1
- package/dist/src/agents/auth-provider/value-resolver.test.js +30 -0
- package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -1
- package/dist/src/agents/browser/analyzeScreenshot.js +36 -6
- package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -1
- package/dist/src/agents/browser/analyzeScreenshot.test.js +35 -3
- package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -1
- package/dist/src/agents/browser/automationOverlay.js +2 -10
- package/dist/src/agents/browser/automationOverlay.js.map +1 -1
- package/dist/src/agents/browser/browserAgentDefinition.js +10 -3
- package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -1
- package/dist/src/agents/browser/browserAgentFactory.d.ts +11 -3
- package/dist/src/agents/browser/browserAgentFactory.js +171 -129
- package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
- package/dist/src/agents/browser/browserAgentFactory.test.js +99 -13
- package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
- package/dist/src/agents/browser/browserAgentInvocation.d.ts +1 -0
- package/dist/src/agents/browser/browserAgentInvocation.js +87 -27
- package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
- package/dist/src/agents/browser/browserAgentInvocation.test.js +107 -7
- package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
- package/dist/src/agents/browser/browserManager.d.ts +89 -8
- package/dist/src/agents/browser/browserManager.js +357 -74
- package/dist/src/agents/browser/browserManager.js.map +1 -1
- package/dist/src/agents/browser/browserManager.test.js +540 -19
- package/dist/src/agents/browser/browserManager.test.js.map +1 -1
- package/dist/src/agents/browser/inputBlocker.d.ts +4 -4
- package/dist/src/agents/browser/inputBlocker.js +8 -18
- package/dist/src/agents/browser/inputBlocker.js.map +1 -1
- package/dist/src/agents/browser/inputBlocker.test.js +31 -3
- package/dist/src/agents/browser/inputBlocker.test.js.map +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.d.ts +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.js +9 -6
- package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -1
- package/dist/src/agents/browser/mcpToolWrapper.test.js +2 -2
- package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -1
- package/dist/src/agents/browser/modelAvailability.d.ts +5 -0
- package/dist/src/agents/browser/modelAvailability.js +12 -0
- package/dist/src/agents/browser/modelAvailability.js.map +1 -1
- package/dist/src/agents/browser/snapshotSuperseder.d.ts +31 -0
- package/dist/src/agents/browser/snapshotSuperseder.js +101 -0
- package/dist/src/agents/browser/snapshotSuperseder.js.map +1 -0
- package/dist/src/agents/browser/snapshotSuperseder.test.js +158 -0
- package/dist/src/agents/browser/snapshotSuperseder.test.js.map +1 -0
- package/dist/src/agents/local-executor.d.ts +9 -0
- package/dist/src/agents/local-executor.js +144 -200
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +500 -115
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.d.ts +1 -0
- package/dist/src/agents/local-invocation.js +19 -9
- package/dist/src/agents/local-invocation.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +24 -0
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/memory-manager-agent.js +1 -0
- package/dist/src/agents/memory-manager-agent.js.map +1 -1
- package/dist/src/agents/memory-manager-agent.test.js +6 -0
- package/dist/src/agents/memory-manager-agent.test.js.map +1 -1
- package/dist/src/agents/registry.js +19 -11
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +67 -0
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/skill-extraction-agent.d.ts +24 -0
- package/dist/src/agents/skill-extraction-agent.js +269 -0
- package/dist/src/agents/skill-extraction-agent.js.map +1 -0
- package/dist/src/agents/types.d.ts +20 -0
- package/dist/src/agents/types.js.map +1 -1
- package/dist/src/availability/policyCatalog.d.ts +2 -1
- package/dist/src/availability/policyCatalog.js +1 -1
- package/dist/src/availability/policyCatalog.js.map +1 -1
- package/dist/src/availability/policyHelpers.js +43 -32
- package/dist/src/availability/policyHelpers.js.map +1 -1
- package/dist/src/availability/policyHelpers.test.js +12 -1
- package/dist/src/availability/policyHelpers.test.js.map +1 -1
- package/dist/src/code_assist/admin/admin_controls.js +1 -1
- package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
- package/dist/src/code_assist/experiments/flagNames.d.ts +1 -0
- package/dist/src/code_assist/experiments/flagNames.js +1 -0
- package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +8 -3
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +57 -0
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.js +1 -1
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/setup.js +5 -2
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +27 -1
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +80 -80
- package/dist/src/commands/memory.js +1 -1
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/config/agent-loop-context.d.ts +2 -0
- package/dist/src/config/config.d.ts +91 -23
- package/dist/src/config/config.js +238 -79
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +189 -15
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +9 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/extensions/integrity.js +1 -1
- package/dist/src/config/extensions/integrity.js.map +1 -1
- package/dist/src/config/memory.d.ts +1 -0
- package/dist/src/config/memory.js +6 -0
- package/dist/src/config/memory.js.map +1 -1
- package/dist/src/config/projectRegistry.js +5 -3
- package/dist/src/config/projectRegistry.js.map +1 -1
- package/dist/src/config/scoped-config.d.ts +30 -0
- package/dist/src/config/scoped-config.js +69 -0
- package/dist/src/config/scoped-config.js.map +1 -0
- package/dist/src/config/scoped-config.test.d.ts +6 -0
- package/dist/src/config/scoped-config.test.js +161 -0
- package/dist/src/config/scoped-config.test.js.map +1 -0
- package/dist/src/config/storage.d.ts +3 -0
- package/dist/src/config/storage.js +9 -0
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +10 -5
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/config/topicState.d.ts +21 -0
- package/dist/src/config/topicState.js +41 -0
- package/dist/src/config/topicState.js.map +1 -0
- package/dist/src/confirmation-bus/types.d.ts +13 -4
- package/dist/src/confirmation-bus/types.js +2 -0
- package/dist/src/confirmation-bus/types.js.map +1 -1
- package/dist/src/context/agentHistoryProvider.d.ts +45 -0
- package/dist/src/context/agentHistoryProvider.js +294 -0
- package/dist/src/context/agentHistoryProvider.js.map +1 -0
- package/dist/src/context/agentHistoryProvider.test.d.ts +6 -0
- package/dist/src/context/agentHistoryProvider.test.js +357 -0
- package/dist/src/context/agentHistoryProvider.test.js.map +1 -0
- package/dist/src/context/chatCompressionService.js.map +1 -0
- package/dist/src/context/chatCompressionService.test.js.map +1 -0
- package/dist/src/context/contextCompressionService.d.ts +30 -0
- package/dist/src/context/contextCompressionService.js +405 -0
- package/dist/src/context/contextCompressionService.js.map +1 -0
- package/dist/src/context/contextCompressionService.test.js +253 -0
- package/dist/src/context/contextCompressionService.test.js.map +1 -0
- package/dist/src/{services/contextManager.d.ts → context/memoryContextManager.d.ts} +3 -1
- package/dist/src/{services/contextManager.js → context/memoryContextManager.js} +20 -11
- package/dist/src/context/memoryContextManager.js.map +1 -0
- package/dist/src/{services/contextManager.test.js → context/memoryContextManager.test.js} +42 -33
- package/dist/src/context/memoryContextManager.test.js.map +1 -0
- package/dist/src/context/profiles.d.ts +7 -0
- package/dist/src/context/profiles.js +21 -0
- package/dist/src/context/profiles.js.map +1 -0
- package/dist/src/context/toolDistillationService.d.ts +38 -0
- package/dist/src/context/toolDistillationService.js +170 -0
- package/dist/src/context/toolDistillationService.js.map +1 -0
- package/dist/src/context/toolDistillationService.test.d.ts +6 -0
- package/dist/src/context/toolDistillationService.test.js +86 -0
- package/dist/src/context/toolDistillationService.test.js.map +1 -0
- package/dist/src/{services → context}/toolOutputMaskingService.d.ts +2 -2
- package/dist/src/{services → context}/toolOutputMaskingService.js +7 -7
- package/dist/src/context/toolOutputMaskingService.js.map +1 -0
- package/dist/src/context/toolOutputMaskingService.test.d.ts +6 -0
- package/dist/src/{services → context}/toolOutputMaskingService.test.js +4 -5
- package/dist/src/context/toolOutputMaskingService.test.js.map +1 -0
- package/dist/src/context/truncation.d.ts +26 -0
- package/dist/src/context/truncation.js +102 -0
- package/dist/src/context/truncation.js.map +1 -0
- package/dist/src/context/types.d.ts +36 -0
- package/dist/src/context/types.js +7 -0
- package/dist/src/context/types.js.map +1 -0
- package/dist/src/core/AuthenticatedContentGenerator.js +9 -1
- package/dist/src/core/AuthenticatedContentGenerator.js.map +1 -1
- package/dist/src/core/baseLlmClient.js +1 -1
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +1 -0
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/client.d.ts +3 -1
- package/dist/src/core/client.js +24 -14
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +36 -40
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +0 -1
- package/dist/src/core/contentGenerator.js +2 -28
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +1 -101
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/geminiChat.js +12 -5
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +72 -18
- 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 +4 -4
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +1 -1
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.js +1 -1
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/prompts-substitution.test.js +5 -0
- package/dist/src/core/prompts-substitution.test.js.map +1 -1
- package/dist/src/core/prompts.test.js +3 -0
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookEventHandler.js +8 -0
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookRunner.js +9 -5
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookRunner.test.js +20 -3
- package/dist/src/hooks/hookRunner.test.js.map +1 -1
- package/dist/src/hooks/hookSystem.d.ts +2 -0
- package/dist/src/hooks/hookSystem.js +1 -0
- package/dist/src/hooks/hookSystem.js.map +1 -1
- package/dist/src/hooks/hookTranslator.js +20 -13
- package/dist/src/hooks/hookTranslator.js.map +1 -1
- package/dist/src/hooks/hookTranslator.test.js +36 -0
- package/dist/src/hooks/hookTranslator.test.js.map +1 -1
- package/dist/src/hooks/types.d.ts +2 -0
- package/dist/src/ide/ide-client.js +3 -3
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-connection-utils.js +1 -1
- package/dist/src/ide/ide-connection-utils.js.map +1 -1
- package/dist/src/ide/ide-installer.js +5 -4
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/process-utils.js +3 -3
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/index.d.ts +10 -3
- package/dist/src/index.js +13 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/mcpLauncher.js +1 -1
- package/dist/src/output/json-formatter.js +2 -1
- package/dist/src/output/json-formatter.js.map +1 -1
- package/dist/src/policy/config.d.ts +1 -1
- package/dist/src/policy/config.js +61 -24
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/config.test.js +21 -20
- package/dist/src/policy/config.test.js.map +1 -1
- package/dist/src/policy/persistence.test.js +42 -0
- package/dist/src/policy/persistence.test.js.map +1 -1
- package/dist/src/policy/policies/discovered.toml +7 -0
- package/dist/src/policy/policies/memory-manager.toml +11 -1
- package/dist/src/policy/policies/non-interactive.toml +7 -0
- package/dist/src/policy/policies/plan.toml +36 -2
- package/dist/src/policy/policies/read-only.toml +12 -0
- package/dist/src/policy/policies/sandbox-default.toml +4 -4
- package/dist/src/policy/policies/write.toml +21 -0
- package/dist/src/policy/policies/yolo.toml +1 -1
- package/dist/src/policy/policy-engine.d.ts +2 -4
- package/dist/src/policy/policy-engine.js +47 -37
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +236 -30
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/sandboxPolicyManager.d.ts +26 -1
- package/dist/src/policy/sandboxPolicyManager.js +41 -12
- package/dist/src/policy/sandboxPolicyManager.js.map +1 -1
- package/dist/src/policy/sandboxPolicyManager.test.d.ts +6 -0
- package/dist/src/policy/sandboxPolicyManager.test.js +61 -0
- package/dist/src/policy/sandboxPolicyManager.test.js.map +1 -0
- package/dist/src/policy/topic-policy.test.d.ts +6 -0
- package/dist/src/policy/topic-policy.test.js +48 -0
- package/dist/src/policy/topic-policy.test.js.map +1 -0
- package/dist/src/policy/types.d.ts +9 -6
- package/dist/src/policy/types.js +11 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/policy/workspace-policy.test.js +18 -15
- package/dist/src/policy/workspace-policy.test.js.map +1 -1
- package/dist/src/prompts/promptProvider.js +20 -4
- package/dist/src/prompts/promptProvider.js.map +1 -1
- package/dist/src/prompts/promptProvider.test.js +84 -1
- package/dist/src/prompts/promptProvider.test.js.map +1 -1
- package/dist/src/prompts/snippets-memory-manager.test.js +1 -1
- package/dist/src/prompts/snippets-memory-manager.test.js.map +1 -1
- package/dist/src/prompts/snippets.d.ts +3 -4
- package/dist/src/prompts/snippets.js +37 -52
- package/dist/src/prompts/snippets.js.map +1 -1
- package/dist/src/prompts/snippets.legacy.d.ts +6 -4
- package/dist/src/prompts/snippets.legacy.js +36 -7
- package/dist/src/prompts/snippets.legacy.js.map +1 -1
- package/dist/src/prompts/utils.test.js +7 -5
- package/dist/src/prompts/utils.test.js.map +1 -1
- package/dist/src/safety/built-in.js +1 -1
- package/dist/src/safety/built-in.js.map +1 -1
- package/dist/src/sandbox/linux/LinuxSandboxManager.d.ts +11 -1
- package/dist/src/sandbox/linux/LinuxSandboxManager.js +131 -41
- package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
- package/dist/src/sandbox/linux/LinuxSandboxManager.test.js +82 -139
- package/dist/src/sandbox/linux/LinuxSandboxManager.test.js.map +1 -1
- package/dist/src/sandbox/linux/bwrapArgsBuilder.d.ts +24 -0
- package/dist/src/sandbox/linux/bwrapArgsBuilder.js +200 -0
- package/dist/src/sandbox/linux/bwrapArgsBuilder.js.map +1 -0
- package/dist/src/sandbox/linux/bwrapArgsBuilder.test.d.ts +6 -0
- package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js +247 -0
- package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js.map +1 -0
- package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +10 -22
- package/dist/src/sandbox/macos/MacOsSandboxManager.js +67 -59
- package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
- package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +168 -103
- package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -1
- package/dist/src/sandbox/macos/baseProfile.d.ts +1 -1
- package/dist/src/sandbox/macos/baseProfile.js +26 -8
- package/dist/src/sandbox/macos/baseProfile.js.map +1 -1
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.d.ts +10 -10
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +81 -93
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +136 -99
- package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -1
- package/dist/src/sandbox/{macos → utils}/commandSafety.d.ts +11 -0
- package/dist/src/sandbox/{macos → utils}/commandSafety.js +47 -14
- package/dist/src/sandbox/utils/commandSafety.js.map +1 -0
- package/dist/src/sandbox/utils/commandUtils.d.ts +9 -0
- package/dist/src/sandbox/utils/commandUtils.js +57 -0
- package/dist/src/sandbox/utils/commandUtils.js.map +1 -0
- package/dist/src/sandbox/utils/fsUtils.d.ts +11 -0
- package/dist/src/sandbox/utils/fsUtils.js +84 -0
- package/dist/src/sandbox/utils/fsUtils.js.map +1 -0
- package/dist/src/sandbox/utils/fsUtils.test.d.ts +6 -0
- package/dist/src/sandbox/utils/fsUtils.test.js +43 -0
- package/dist/src/sandbox/utils/fsUtils.test.js.map +1 -0
- package/dist/src/sandbox/utils/proactivePermissions.d.ts +19 -0
- package/dist/src/sandbox/utils/proactivePermissions.js +163 -0
- package/dist/src/sandbox/utils/proactivePermissions.js.map +1 -0
- package/dist/src/sandbox/utils/proactivePermissions.test.d.ts +6 -0
- package/dist/src/sandbox/utils/proactivePermissions.test.js +145 -0
- package/dist/src/sandbox/utils/proactivePermissions.test.js.map +1 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.d.ts +27 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.js +142 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.js.map +1 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.test.d.ts +6 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.test.js +188 -0
- package/dist/src/sandbox/utils/sandboxDenialUtils.test.js.map +1 -0
- package/dist/src/sandbox/utils/sandboxReadWriteUtils.d.ts +5 -0
- package/dist/src/sandbox/utils/sandboxReadWriteUtils.js +64 -0
- package/dist/src/sandbox/utils/sandboxReadWriteUtils.js.map +1 -0
- package/dist/src/sandbox/windows/GeminiSandbox.cs +312 -223
- package/dist/src/sandbox/windows/WindowsSandboxManager.d.ts +16 -2
- package/dist/src/sandbox/windows/WindowsSandboxManager.js +261 -44
- package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
- package/dist/src/sandbox/windows/WindowsSandboxManager.test.js +379 -17
- package/dist/src/sandbox/windows/WindowsSandboxManager.test.js.map +1 -1
- package/dist/src/sandbox/windows/commandSafety.d.ts +19 -0
- package/dist/src/sandbox/windows/commandSafety.js +128 -0
- package/dist/src/sandbox/windows/commandSafety.js.map +1 -0
- package/dist/src/sandbox/windows/commandSafety.test.d.ts +6 -0
- package/dist/src/sandbox/windows/commandSafety.test.js +42 -0
- package/dist/src/sandbox/windows/commandSafety.test.js.map +1 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.d.ts +13 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js +69 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js.map +1 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.d.ts +6 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js +68 -0
- package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js.map +1 -0
- package/dist/src/scheduler/policy.js +20 -5
- package/dist/src/scheduler/policy.js.map +1 -1
- package/dist/src/scheduler/policy.test.js +80 -0
- package/dist/src/scheduler/policy.test.js.map +1 -1
- package/dist/src/scheduler/scheduler.js +13 -3
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/scheduler/scheduler.test.js +52 -0
- package/dist/src/scheduler/scheduler.test.js.map +1 -1
- package/dist/src/scheduler/scheduler_hooks.test.js +1 -0
- package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
- package/dist/src/scheduler/state-manager.js +1 -1
- package/dist/src/scheduler/state-manager.js.map +1 -1
- package/dist/src/scheduler/state-manager.test.js +10 -0
- package/dist/src/scheduler/state-manager.test.js.map +1 -1
- package/dist/src/scheduler/tool-executor.js +7 -2
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/tool-executor.test.js +38 -0
- package/dist/src/scheduler/tool-executor.test.js.map +1 -1
- package/dist/src/scheduler/types.d.ts +4 -2
- package/dist/src/services/chatRecordingService.d.ts +1 -13
- package/dist/src/services/chatRecordingService.js +45 -46
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +79 -10
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/executionLifecycleService.d.ts +44 -6
- package/dist/src/services/executionLifecycleService.js +52 -12
- package/dist/src/services/executionLifecycleService.js.map +1 -1
- package/dist/src/services/executionLifecycleService.test.js +157 -3
- package/dist/src/services/executionLifecycleService.test.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +17 -2
- package/dist/src/services/fileDiscoveryService.js +84 -20
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +67 -1
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/gitService.js +1 -1
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/memoryService.d.ts +65 -0
- package/dist/src/services/memoryService.js +511 -0
- package/dist/src/services/memoryService.js.map +1 -0
- package/dist/src/services/memoryService.test.d.ts +6 -0
- package/dist/src/services/memoryService.test.js +563 -0
- package/dist/src/services/memoryService.test.js.map +1 -0
- package/dist/src/services/modelConfigService.d.ts +11 -0
- package/dist/src/services/modelConfigService.js +67 -0
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/modelConfigService.test.js +30 -0
- package/dist/src/services/modelConfigService.test.js.map +1 -1
- package/dist/src/services/sandboxManager.d.ts +107 -8
- package/dist/src/services/sandboxManager.integration.test.d.ts +1 -0
- package/dist/src/services/sandboxManager.integration.test.js +445 -0
- package/dist/src/services/sandboxManager.integration.test.js.map +1 -0
- package/dist/src/services/sandboxManager.js +176 -13
- package/dist/src/services/sandboxManager.js.map +1 -1
- package/dist/src/services/sandboxManager.test.js +401 -117
- package/dist/src/services/sandboxManager.test.js.map +1 -1
- package/dist/src/services/sandboxManagerFactory.d.ts +2 -3
- package/dist/src/services/sandboxManagerFactory.js +12 -22
- package/dist/src/services/sandboxManagerFactory.js.map +1 -1
- package/dist/src/services/sandboxedFileSystemService.d.ts +1 -0
- package/dist/src/services/sandboxedFileSystemService.js +43 -3
- package/dist/src/services/sandboxedFileSystemService.js.map +1 -1
- package/dist/src/services/sandboxedFileSystemService.test.js +97 -11
- package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +18 -1
- package/dist/src/services/shellExecutionService.js +115 -26
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +70 -8
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +4 -0
- package/dist/src/services/test-data/resolved-aliases.golden.json +4 -0
- package/dist/src/services/worktreeService.test.js +7 -7
- package/dist/src/services/worktreeService.test.js.map +1 -1
- package/dist/src/skills/skillLoader.d.ts +8 -0
- package/dist/src/skills/skillLoader.js +1 -1
- package/dist/src/skills/skillLoader.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +29 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +107 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +172 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +10 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +22 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +22 -0
- package/dist/src/telemetry/loggers.js +41 -2
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +8 -3
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +118 -1
- package/dist/src/telemetry/metrics.js +196 -4
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +298 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +3 -3
- package/dist/src/telemetry/types.js +9 -4
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/mock-message-bus.d.ts +1 -1
- package/dist/src/test-utils/mock-message-bus.js +1 -1
- package/dist/src/test-utils/mock-message-bus.js.map +1 -1
- package/dist/src/tools/complete-task.d.ts +29 -0
- package/dist/src/tools/complete-task.js +123 -0
- package/dist/src/tools/complete-task.js.map +1 -0
- package/dist/src/tools/complete-task.test.d.ts +6 -0
- package/dist/src/tools/complete-task.test.js +114 -0
- package/dist/src/tools/complete-task.test.js.map +1 -0
- package/dist/src/tools/definitions/base-declarations.d.ts +8 -0
- package/dist/src/tools/definitions/base-declarations.js +10 -0
- package/dist/src/tools/definitions/base-declarations.js.map +1 -1
- package/dist/src/tools/definitions/coreTools.d.ts +2 -1
- package/dist/src/tools/definitions/coreTools.js +9 -3
- package/dist/src/tools/definitions/coreTools.js.map +1 -1
- package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +4 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js +33 -2
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +14 -9
- 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 +13 -7
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
- package/dist/src/tools/definitions/trackerTools.js +3 -3
- package/dist/src/tools/definitions/trackerTools.js.map +1 -1
- package/dist/src/tools/definitions/types.d.ts +1 -0
- package/dist/src/tools/enter-plan-mode.js +15 -0
- package/dist/src/tools/enter-plan-mode.js.map +1 -1
- package/dist/src/tools/enter-plan-mode.test.js +25 -0
- package/dist/src/tools/enter-plan-mode.test.js.map +1 -1
- package/dist/src/tools/grep-utils.d.ts +2 -1
- package/dist/src/tools/grep-utils.js +22 -3
- package/dist/src/tools/grep-utils.js.map +1 -1
- package/dist/src/tools/grep.js +16 -3
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +36 -8
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/jit-context.js +3 -3
- package/dist/src/tools/jit-context.js.map +1 -1
- package/dist/src/tools/jit-context.test.js +15 -13
- package/dist/src/tools/jit-context.test.js.map +1 -1
- package/dist/src/tools/ls.js +6 -4
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +22 -7
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.js +6 -3
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +35 -0
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.js +1 -1
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +1 -1
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +9 -2
- package/dist/src/tools/memoryTool.js +39 -15
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +61 -2
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/read-many-files.js +12 -4
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +17 -17
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.js +14 -1
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +10 -10
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +17 -4
- package/dist/src/tools/shell.js +342 -151
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +204 -11
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/shellBackgroundTools.d.ts +38 -0
- package/dist/src/tools/shellBackgroundTools.integration.test.d.ts +6 -0
- package/dist/src/tools/shellBackgroundTools.integration.test.js +86 -0
- package/dist/src/tools/shellBackgroundTools.integration.test.js.map +1 -0
- package/dist/src/tools/shellBackgroundTools.js +186 -0
- package/dist/src/tools/shellBackgroundTools.js.map +1 -0
- package/dist/src/tools/shellBackgroundTools.test.d.ts +6 -0
- package/dist/src/tools/shellBackgroundTools.test.js +230 -0
- package/dist/src/tools/shellBackgroundTools.test.js.map +1 -0
- package/dist/src/tools/shell_proactive.test.d.ts +6 -0
- package/dist/src/tools/shell_proactive.test.js +122 -0
- package/dist/src/tools/shell_proactive.test.js.map +1 -0
- package/dist/src/tools/tool-names.d.ts +4 -4
- package/dist/src/tools/tool-names.js +6 -3
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-registry.js +11 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +43 -1
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +12 -1
- package/dist/src/tools/tools.js +16 -1
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +42 -1
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/topicTool.d.ts +29 -0
- package/dist/src/tools/topicTool.js +72 -0
- package/dist/src/tools/topicTool.js.map +1 -0
- package/dist/src/tools/topicTool.test.d.ts +6 -0
- package/dist/src/tools/topicTool.test.js +105 -0
- package/dist/src/tools/topicTool.test.js.map +1 -0
- package/dist/src/tools/web-fetch.js +40 -22
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +28 -0
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/xcode-mcp-fix-transport.js +1 -1
- package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.js +3 -6
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/checkpointUtils.d.ts +4 -4
- package/dist/src/utils/checkpointUtils.js +11 -8
- package/dist/src/utils/checkpointUtils.js.map +1 -1
- package/dist/src/utils/compatibility.js +0 -7
- package/dist/src/utils/compatibility.js.map +1 -1
- package/dist/src/utils/compatibility.test.js +0 -9
- package/dist/src/utils/compatibility.test.js.map +1 -1
- package/dist/src/utils/editor.js +3 -0
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/errorParsing.js +2 -2
- package/dist/src/utils/errorParsing.js.map +1 -1
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +28 -6
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +23 -0
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/events.d.ts +12 -0
- package/dist/src/utils/events.js +7 -0
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/fetch.d.ts +1 -0
- package/dist/src/utils/fetch.js +22 -6
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/fetch.test.js +26 -1
- package/dist/src/utils/fetch.test.js.map +1 -1
- package/dist/src/utils/fileUtils.js +1 -1
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.js +1 -1
- package/dist/src/utils/filesearch/crawler.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +7 -2
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/getFolderStructure.js +1 -1
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/getPty.js +2 -2
- package/dist/src/utils/getPty.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.d.ts +2 -2
- package/dist/src/utils/gitIgnoreParser.js +30 -52
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.test.js +51 -185
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
- package/dist/src/utils/gitUtils.js +2 -2
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/googleErrors.js +5 -5
- package/dist/src/utils/googleErrors.js.map +1 -1
- package/dist/src/utils/ignoreFileParser.d.ts +2 -2
- package/dist/src/utils/ignoreFileParser.js +7 -18
- package/dist/src/utils/ignoreFileParser.js.map +1 -1
- package/dist/src/utils/ignoreFileParser.test.js +40 -132
- package/dist/src/utils/ignoreFileParser.test.js.map +1 -1
- package/dist/src/utils/ignorePathUtils.d.ts +11 -0
- package/dist/src/utils/ignorePathUtils.js +39 -0
- package/dist/src/utils/ignorePathUtils.js.map +1 -0
- package/dist/src/utils/ignorePathUtils.test.d.ts +6 -0
- package/dist/src/utils/ignorePathUtils.test.js +70 -0
- package/dist/src/utils/ignorePathUtils.test.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +6 -4
- package/dist/src/utils/memoryDiscovery.js +69 -48
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +40 -0
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.d.ts +1 -1
- package/dist/src/utils/memoryImportProcessor.js +24 -15
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/paths.d.ts +8 -0
- package/dist/src/utils/paths.js +37 -6
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +61 -3
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/process-utils.js +2 -2
- package/dist/src/utils/process-utils.js.map +1 -1
- package/dist/src/utils/retry.js +7 -0
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +41 -0
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/secure-browser-launcher.js +1 -1
- package/dist/src/utils/secure-browser-launcher.js.map +1 -1
- package/dist/src/utils/sessionOperations.d.ts +19 -0
- package/dist/src/utils/sessionOperations.js +101 -0
- package/dist/src/utils/sessionOperations.js.map +1 -0
- package/dist/src/utils/sessionOperations.test.d.ts +6 -0
- package/dist/src/utils/sessionOperations.test.js +92 -0
- package/dist/src/utils/sessionOperations.test.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +24 -0
- package/dist/src/utils/shell-utils.integration.test.js +1 -1
- package/dist/src/utils/shell-utils.integration.test.js.map +1 -1
- package/dist/src/utils/shell-utils.js +86 -6
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +13 -1
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/systemEncoding.js +1 -1
- package/dist/src/utils/systemEncoding.js.map +1 -1
- package/dist/src/utils/terminalSerializer.d.ts +1 -0
- package/dist/src/utils/terminalSerializer.js +31 -8
- package/dist/src/utils/terminalSerializer.js.map +1 -1
- package/dist/src/utils/terminalSerializer.test.js +3 -2
- package/dist/src/utils/terminalSerializer.test.js.map +1 -1
- package/dist/src/utils/textUtils.d.ts +8 -0
- package/dist/src/utils/textUtils.js +16 -0
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/tokenCalculation.d.ts +2 -0
- package/dist/src/utils/tokenCalculation.js +2 -2
- package/dist/src/utils/tokenCalculation.js.map +1 -1
- package/dist/src/utils/workspaceContext.js +2 -2
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/dist/docs/CONTRIBUTING.md +0 -566
- package/dist/docs/get-started/examples.md +0 -141
- package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js +0 -164
- package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js.map +0 -1
- package/dist/src/sandbox/macos/commandSafety.js.map +0 -1
- package/dist/src/services/chatCompressionService.js.map +0 -1
- package/dist/src/services/chatCompressionService.test.js.map +0 -1
- package/dist/src/services/contextManager.js.map +0 -1
- package/dist/src/services/contextManager.test.js.map +0 -1
- package/dist/src/services/toolOutputMaskingService.js.map +0 -1
- package/dist/src/services/toolOutputMaskingService.test.js.map +0 -1
- /package/dist/src/{services/toolOutputMaskingService.test.d.ts → agents/browser/snapshotSuperseder.test.d.ts} +0 -0
- /package/dist/src/{services → context}/chatCompressionService.d.ts +0 -0
- /package/dist/src/{services → context}/chatCompressionService.js +0 -0
- /package/dist/src/{services → context}/chatCompressionService.test.d.ts +0 -0
- /package/dist/src/{services → context}/chatCompressionService.test.js +0 -0
- /package/dist/src/{sandbox/macos/MacOsSandboxManager.integration.test.d.ts → context/contextCompressionService.test.d.ts} +0 -0
- /package/dist/src/{services/contextManager.test.d.ts → context/memoryContextManager.test.d.ts} +0 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import {} from '../config/agent-loop-context.js';
|
|
7
7
|
import { reportError } from '../utils/errorReporting.js';
|
|
8
8
|
import { GeminiChat, StreamEventType } from '../core/geminiChat.js';
|
|
9
|
-
import {
|
|
9
|
+
import {} from '@google/genai';
|
|
10
10
|
import { ToolRegistry } from '../tools/tool-registry.js';
|
|
11
11
|
import { PromptRegistry } from '../prompts/prompt-registry.js';
|
|
12
12
|
import { ResourceRegistry } from '../resources/resource-registry.js';
|
|
@@ -14,9 +14,9 @@ import { ToolConfirmationOutcome, } from '../tools/tools.js';
|
|
|
14
14
|
import { DiscoveredMCPTool, isMcpToolName, parseMcpToolName, MCP_TOOL_PREFIX, } from '../tools/mcp-tool.js';
|
|
15
15
|
import { CompressionStatus } from '../core/turn.js';
|
|
16
16
|
import {} from '../scheduler/types.js';
|
|
17
|
-
import { ChatCompressionService } from '../
|
|
17
|
+
import { ChatCompressionService } from '../context/chatCompressionService.js';
|
|
18
18
|
import { getDirectoryContextString } from '../utils/environmentContext.js';
|
|
19
|
-
import { renderUserMemory } from '../prompts/snippets.js';
|
|
19
|
+
import { renderUserMemory, renderAgentSkills } from '../prompts/snippets.js';
|
|
20
20
|
import { promptIdContext } from '../utils/promptIdContext.js';
|
|
21
21
|
import { logAgentStart, logAgentFinish, logRecoveryAttempt, } from '../telemetry/loggers.js';
|
|
22
22
|
import { AgentStartEvent, AgentFinishEvent, LlmRole, RecoveryAttemptEvent, } from '../telemetry/types.js';
|
|
@@ -26,7 +26,6 @@ import { templateString } from './utils.js';
|
|
|
26
26
|
import { DEFAULT_GEMINI_MODEL, isAutoModel } from '../config/models.js';
|
|
27
27
|
import { parseThought } from '../utils/thoughtUtils.js';
|
|
28
28
|
import {} from 'zod';
|
|
29
|
-
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
30
29
|
import { debugLogger } from '../utils/debugLogger.js';
|
|
31
30
|
import { getModelConfigAlias } from './registry.js';
|
|
32
31
|
import { getVersion } from '../utils/version.js';
|
|
@@ -34,7 +33,9 @@ import { getToolCallContext } from '../utils/toolCallContext.js';
|
|
|
34
33
|
import { scheduleAgentTools } from './agent-scheduler.js';
|
|
35
34
|
import { DeadlineTimer } from '../utils/deadlineTimer.js';
|
|
36
35
|
import { formatUserHintsForModel, formatBackgroundCompletionForModel, } from '../utils/fastAckHelper.js';
|
|
37
|
-
|
|
36
|
+
import { createScopedWorkspaceContext, runWithScopedWorkspaceContext, } from '../config/scoped-config.js';
|
|
37
|
+
import { CompleteTaskTool } from '../tools/complete-task.js';
|
|
38
|
+
import { COMPLETE_TASK_TOOL_NAME, ACTIVATE_SKILL_TOOL_NAME, } from '../tools/definitions/base-declarations.js';
|
|
38
39
|
const GRACE_PERIOD_MS = 60 * 1000; // 1 min
|
|
39
40
|
export function createUnauthorizedToolError(toolName) {
|
|
40
41
|
return `Unauthorized tool call: '${toolName}' is not available to this agent.`;
|
|
@@ -59,7 +60,8 @@ export class LocalAgentExecutor {
|
|
|
59
60
|
get executionContext() {
|
|
60
61
|
return {
|
|
61
62
|
config: this.context.config,
|
|
62
|
-
promptId: this.
|
|
63
|
+
promptId: this.agentId,
|
|
64
|
+
parentSessionId: this.context.parentSessionId || this.context.promptId, // Always preserve the main agent session ID
|
|
63
65
|
geminiClient: this.context.geminiClient,
|
|
64
66
|
sandboxManager: this.context.sandboxManager,
|
|
65
67
|
toolRegistry: this.toolRegistry,
|
|
@@ -166,12 +168,12 @@ export class LocalAgentExecutor {
|
|
|
166
168
|
}
|
|
167
169
|
}
|
|
168
170
|
agentToolRegistry.sortTools();
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
+
// Register the mandatory completion tool for this agent.
|
|
172
|
+
agentToolRegistry.registerTool(new CompleteTaskTool(subagentMessageBus, definition.outputConfig, definition.processOutput));
|
|
171
173
|
// Get the parent tool call ID from context
|
|
172
174
|
const toolContext = getToolCallContext();
|
|
173
175
|
const parentCallId = toolContext?.callId;
|
|
174
|
-
return new LocalAgentExecutor(definition, context,
|
|
176
|
+
return new LocalAgentExecutor(definition, context, agentToolRegistry, agentPromptRegistry, agentResourceRegistry, onActivity, parentCallId);
|
|
175
177
|
}
|
|
176
178
|
/**
|
|
177
179
|
* Constructs a new AgentExecutor instance.
|
|
@@ -179,7 +181,7 @@ export class LocalAgentExecutor {
|
|
|
179
181
|
* @private This constructor is private. Use the static `create` method to
|
|
180
182
|
* instantiate the class.
|
|
181
183
|
*/
|
|
182
|
-
constructor(definition, context,
|
|
184
|
+
constructor(definition, context, toolRegistry, promptRegistry, resourceRegistry, onActivity, parentCallId) {
|
|
183
185
|
this.definition = definition;
|
|
184
186
|
this.context = context;
|
|
185
187
|
this.toolRegistry = toolRegistry;
|
|
@@ -188,11 +190,7 @@ export class LocalAgentExecutor {
|
|
|
188
190
|
this.onActivity = onActivity;
|
|
189
191
|
this.compressionService = new ChatCompressionService();
|
|
190
192
|
this.parentCallId = parentCallId;
|
|
191
|
-
|
|
192
|
-
// parentPromptId will be undefined if this agent is invoked directly
|
|
193
|
-
// (top-level), rather than as a sub-agent.
|
|
194
|
-
const parentPrefix = parentPromptId ? `${parentPromptId}-` : '';
|
|
195
|
-
this.agentId = `${parentPrefix}${this.definition.name}-${randomIdPart}`;
|
|
193
|
+
this.agentId = Math.random().toString(36).slice(2, 8);
|
|
196
194
|
}
|
|
197
195
|
/**
|
|
198
196
|
* Executes a single turn of the agent's logic, from calling the model
|
|
@@ -204,8 +202,11 @@ export class LocalAgentExecutor {
|
|
|
204
202
|
async executeTurn(chat, currentMessage, turnCounter, combinedSignal, timeoutSignal, // Pass the timeout controller's signal
|
|
205
203
|
onWaitingForConfirmation) {
|
|
206
204
|
const promptId = `${this.agentId}#${turnCounter}`;
|
|
207
|
-
await this.tryCompressChat(chat, promptId);
|
|
208
|
-
|
|
205
|
+
await this.tryCompressChat(chat, promptId, combinedSignal);
|
|
206
|
+
// Allow the agent definition to modify history before the model call
|
|
207
|
+
// (e.g., superseding stale tool outputs to reclaim context tokens).
|
|
208
|
+
await this.definition.onBeforeTurn?.(chat, combinedSignal);
|
|
209
|
+
const { functionCalls, modelToUse } = await promptIdContext.run(promptId, async () => this.callModel(chat, currentMessage, combinedSignal, promptId));
|
|
209
210
|
if (combinedSignal.aborted) {
|
|
210
211
|
const terminateReason = timeoutSignal.aborted
|
|
211
212
|
? AgentTerminateMode.TIMEOUT
|
|
@@ -219,7 +220,7 @@ export class LocalAgentExecutor {
|
|
|
219
220
|
// If the model stops calling tools without calling complete_task, it's an error.
|
|
220
221
|
if (functionCalls.length === 0) {
|
|
221
222
|
this.emitActivity('ERROR', {
|
|
222
|
-
error: `Agent stopped calling tools but did not call '${
|
|
223
|
+
error: `Agent stopped calling tools but did not call '${COMPLETE_TASK_TOOL_NAME}' to finalize the session.`,
|
|
223
224
|
context: 'protocol_violation',
|
|
224
225
|
errorType: SubagentActivityErrorType.GENERIC,
|
|
225
226
|
});
|
|
@@ -229,7 +230,7 @@ export class LocalAgentExecutor {
|
|
|
229
230
|
finalResult: null,
|
|
230
231
|
};
|
|
231
232
|
}
|
|
232
|
-
const { nextMessage, submittedOutput, taskCompleted, aborted } = await this.processFunctionCalls(functionCalls, combinedSignal, promptId, onWaitingForConfirmation);
|
|
233
|
+
const { nextMessage, submittedOutput, taskCompleted, aborted } = await this.processFunctionCalls(chat, modelToUse, functionCalls, combinedSignal, promptId, onWaitingForConfirmation);
|
|
233
234
|
if (aborted) {
|
|
234
235
|
return {
|
|
235
236
|
status: 'stop',
|
|
@@ -269,7 +270,7 @@ export class LocalAgentExecutor {
|
|
|
269
270
|
default:
|
|
270
271
|
throw new Error(`Unknown terminate reason: ${reason}`);
|
|
271
272
|
}
|
|
272
|
-
return `${explanation} You have one final chance to complete the task with a short grace period. You MUST call \`${
|
|
273
|
+
return `${explanation} You have one final chance to complete the task with a short grace period. You MUST call \`${COMPLETE_TASK_TOOL_NAME}\` immediately with your best answer and explain that your investigation was interrupted. Do not call any other tools.`;
|
|
273
274
|
}
|
|
274
275
|
/**
|
|
275
276
|
* Attempts a single, final recovery turn if the agent stops for a recoverable reason.
|
|
@@ -339,6 +340,18 @@ export class LocalAgentExecutor {
|
|
|
339
340
|
* @returns A promise that resolves to the agent's final output.
|
|
340
341
|
*/
|
|
341
342
|
async run(inputs, signal) {
|
|
343
|
+
// If the agent definition declares additional workspace directories,
|
|
344
|
+
// wrap execution in a scoped workspace context. All calls to
|
|
345
|
+
// Config.getWorkspaceContext() within this scope will see the extended
|
|
346
|
+
// directories, without mutating the shared Config.
|
|
347
|
+
const dirs = this.definition.workspaceDirectories;
|
|
348
|
+
if (dirs && dirs.length > 0) {
|
|
349
|
+
const scopedCtx = createScopedWorkspaceContext(this.context.config.getWorkspaceContext(), dirs);
|
|
350
|
+
return runWithScopedWorkspaceContext(scopedCtx, () => this.runInternal(inputs, signal));
|
|
351
|
+
}
|
|
352
|
+
return this.runInternal(inputs, signal);
|
|
353
|
+
}
|
|
354
|
+
async runInternal(inputs, signal) {
|
|
342
355
|
const startTime = Date.now();
|
|
343
356
|
let turnCounter = 0;
|
|
344
357
|
let terminateReason = AgentTerminateMode.ERROR;
|
|
@@ -502,7 +515,7 @@ export class LocalAgentExecutor {
|
|
|
502
515
|
// The finalResult was already set by executeTurn, but we re-emit just in case.
|
|
503
516
|
finalResult =
|
|
504
517
|
finalResult ||
|
|
505
|
-
`Agent stopped calling tools but did not call '${
|
|
518
|
+
`Agent stopped calling tools but did not call '${COMPLETE_TASK_TOOL_NAME}'.`;
|
|
506
519
|
this.emitActivity('ERROR', {
|
|
507
520
|
error: finalResult,
|
|
508
521
|
context: 'protocol_violation',
|
|
@@ -511,8 +524,17 @@ export class LocalAgentExecutor {
|
|
|
511
524
|
}
|
|
512
525
|
}
|
|
513
526
|
}
|
|
514
|
-
// === FINAL RETURN LOGIC ===
|
|
515
527
|
if (terminateReason === AgentTerminateMode.GOAL) {
|
|
528
|
+
// Save the session summary upon completion
|
|
529
|
+
if (finalResult && chat) {
|
|
530
|
+
try {
|
|
531
|
+
const summary = this.getTruncatedSummary(finalResult);
|
|
532
|
+
chat.getChatRecordingService()?.saveSummary(summary);
|
|
533
|
+
}
|
|
534
|
+
catch (error) {
|
|
535
|
+
debugLogger.warn('Failed to save subagent session summary.', error);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
516
538
|
return {
|
|
517
539
|
result: finalResult || 'Task completed.',
|
|
518
540
|
terminate_reason: terminateReason,
|
|
@@ -539,6 +561,14 @@ export class LocalAgentExecutor {
|
|
|
539
561
|
// Recovery Succeeded
|
|
540
562
|
terminateReason = AgentTerminateMode.GOAL;
|
|
541
563
|
finalResult = recoveryResult;
|
|
564
|
+
// Save the session summary upon successful recovery
|
|
565
|
+
try {
|
|
566
|
+
const summary = this.getTruncatedSummary(finalResult);
|
|
567
|
+
chat.getChatRecordingService()?.saveSummary(summary);
|
|
568
|
+
}
|
|
569
|
+
catch (summaryError) {
|
|
570
|
+
debugLogger.warn('Failed to save subagent session summary during recovery.', summaryError);
|
|
571
|
+
}
|
|
542
572
|
return {
|
|
543
573
|
result: finalResult,
|
|
544
574
|
terminate_reason: terminateReason,
|
|
@@ -568,9 +598,9 @@ export class LocalAgentExecutor {
|
|
|
568
598
|
logAgentFinish(this.context.config, new AgentFinishEvent(this.agentId, this.definition.name, Date.now() - startTime, turnCounter, terminateReason));
|
|
569
599
|
}
|
|
570
600
|
}
|
|
571
|
-
async tryCompressChat(chat, prompt_id) {
|
|
601
|
+
async tryCompressChat(chat, prompt_id, abortSignal) {
|
|
572
602
|
const model = this.definition.modelConfig.model ?? DEFAULT_GEMINI_MODEL;
|
|
573
|
-
const { newHistory, info } = await this.compressionService.compress(chat, prompt_id, false, model, this.context.config, this.hasFailedCompressionAttempt);
|
|
603
|
+
const { newHistory, info } = await this.compressionService.compress(chat, prompt_id, false, model, this.context.config, this.hasFailedCompressionAttempt, abortSignal);
|
|
574
604
|
if (info.compressionStatus ===
|
|
575
605
|
CompressionStatus.COMPRESSION_FAILED_INFLATED_TOKEN_COUNT) {
|
|
576
606
|
this.hasFailedCompressionAttempt = true;
|
|
@@ -661,7 +691,7 @@ export class LocalAgentExecutor {
|
|
|
661
691
|
}
|
|
662
692
|
}
|
|
663
693
|
}
|
|
664
|
-
return { functionCalls, textResponse };
|
|
694
|
+
return { functionCalls, textResponse, modelToUse };
|
|
665
695
|
}
|
|
666
696
|
/** Initializes a `GeminiChat` instance for the agent run. */
|
|
667
697
|
async createChatObject(inputs, tools) {
|
|
@@ -688,22 +718,37 @@ export class LocalAgentExecutor {
|
|
|
688
718
|
*
|
|
689
719
|
* @returns A new `Content` object for history, any submitted output, and completion status.
|
|
690
720
|
*/
|
|
691
|
-
async processFunctionCalls(functionCalls, signal, promptId, onWaitingForConfirmation) {
|
|
721
|
+
async processFunctionCalls(chat, model, functionCalls, signal, promptId, onWaitingForConfirmation) {
|
|
692
722
|
const allowedToolNames = new Set(this.toolRegistry.getAllToolNames());
|
|
693
|
-
// Always allow the completion tool
|
|
694
|
-
allowedToolNames.add(TASK_COMPLETE_TOOL_NAME);
|
|
695
723
|
let submittedOutput = null;
|
|
696
724
|
let taskCompleted = false;
|
|
697
725
|
let aborted = false;
|
|
698
|
-
// We'll separate complete_task from other tools
|
|
699
726
|
const toolRequests = [];
|
|
700
727
|
// Map to keep track of tool name by callId for activity emission
|
|
701
728
|
const toolNameMap = new Map();
|
|
702
|
-
// Synchronous results (like
|
|
729
|
+
// Synchronous results (like unauthorized calls)
|
|
703
730
|
const syncResults = new Map();
|
|
704
731
|
for (const [index, functionCall] of functionCalls.entries()) {
|
|
705
732
|
const callId = functionCall.id ?? `${promptId}-${index}`;
|
|
706
|
-
const args = functionCall
|
|
733
|
+
const { args, error: parseError } = this.parseToolArguments(functionCall);
|
|
734
|
+
if (parseError) {
|
|
735
|
+
debugLogger.warn(`[LocalAgentExecutor] ${parseError}`);
|
|
736
|
+
syncResults.set(callId, {
|
|
737
|
+
functionResponse: {
|
|
738
|
+
name: functionCall.name,
|
|
739
|
+
id: callId,
|
|
740
|
+
response: { error: parseError },
|
|
741
|
+
},
|
|
742
|
+
});
|
|
743
|
+
this.emitActivity('ERROR', {
|
|
744
|
+
context: 'tool_call',
|
|
745
|
+
name: functionCall.name,
|
|
746
|
+
callId,
|
|
747
|
+
error: parseError,
|
|
748
|
+
errorType: SubagentActivityErrorType.GENERIC,
|
|
749
|
+
});
|
|
750
|
+
continue;
|
|
751
|
+
}
|
|
707
752
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
708
753
|
const toolName = functionCall.name;
|
|
709
754
|
let displayName = toolName;
|
|
@@ -726,139 +771,7 @@ export class LocalAgentExecutor {
|
|
|
726
771
|
args,
|
|
727
772
|
callId,
|
|
728
773
|
});
|
|
729
|
-
|
|
730
|
-
if (taskCompleted) {
|
|
731
|
-
const error = 'Task already marked complete in this turn. Ignoring duplicate call.';
|
|
732
|
-
syncResults.set(callId, {
|
|
733
|
-
functionResponse: {
|
|
734
|
-
name: TASK_COMPLETE_TOOL_NAME,
|
|
735
|
-
response: { error },
|
|
736
|
-
id: callId,
|
|
737
|
-
},
|
|
738
|
-
});
|
|
739
|
-
this.emitActivity('ERROR', {
|
|
740
|
-
context: 'tool_call',
|
|
741
|
-
name: toolName,
|
|
742
|
-
error,
|
|
743
|
-
errorType: SubagentActivityErrorType.GENERIC,
|
|
744
|
-
});
|
|
745
|
-
continue;
|
|
746
|
-
}
|
|
747
|
-
const { outputConfig } = this.definition;
|
|
748
|
-
taskCompleted = true; // Signal completion regardless of output presence
|
|
749
|
-
if (outputConfig) {
|
|
750
|
-
const outputName = outputConfig.outputName;
|
|
751
|
-
if (args[outputName] !== undefined) {
|
|
752
|
-
const outputValue = args[outputName];
|
|
753
|
-
const validationResult = outputConfig.schema.safeParse(outputValue);
|
|
754
|
-
if (!validationResult.success) {
|
|
755
|
-
taskCompleted = false; // Validation failed, revoke completion
|
|
756
|
-
const error = `Output validation failed: ${JSON.stringify(validationResult.error.flatten())}`;
|
|
757
|
-
syncResults.set(callId, {
|
|
758
|
-
functionResponse: {
|
|
759
|
-
name: TASK_COMPLETE_TOOL_NAME,
|
|
760
|
-
response: { error },
|
|
761
|
-
id: callId,
|
|
762
|
-
},
|
|
763
|
-
});
|
|
764
|
-
this.emitActivity('ERROR', {
|
|
765
|
-
context: 'tool_call',
|
|
766
|
-
name: toolName,
|
|
767
|
-
error,
|
|
768
|
-
errorType: SubagentActivityErrorType.GENERIC,
|
|
769
|
-
});
|
|
770
|
-
continue;
|
|
771
|
-
}
|
|
772
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
773
|
-
const validatedOutput = validationResult.data;
|
|
774
|
-
if (this.definition.processOutput) {
|
|
775
|
-
submittedOutput = this.definition.processOutput(validatedOutput);
|
|
776
|
-
}
|
|
777
|
-
else {
|
|
778
|
-
submittedOutput =
|
|
779
|
-
typeof outputValue === 'string'
|
|
780
|
-
? outputValue
|
|
781
|
-
: JSON.stringify(outputValue, null, 2);
|
|
782
|
-
}
|
|
783
|
-
syncResults.set(callId, {
|
|
784
|
-
functionResponse: {
|
|
785
|
-
name: TASK_COMPLETE_TOOL_NAME,
|
|
786
|
-
response: { result: 'Output submitted and task completed.' },
|
|
787
|
-
id: callId,
|
|
788
|
-
},
|
|
789
|
-
});
|
|
790
|
-
this.emitActivity('TOOL_CALL_END', {
|
|
791
|
-
name: toolName,
|
|
792
|
-
id: callId,
|
|
793
|
-
output: 'Output submitted and task completed.',
|
|
794
|
-
});
|
|
795
|
-
}
|
|
796
|
-
else {
|
|
797
|
-
// Failed to provide required output.
|
|
798
|
-
taskCompleted = false; // Revoke completion status
|
|
799
|
-
const error = `Missing required argument '${outputName}' for completion.`;
|
|
800
|
-
syncResults.set(callId, {
|
|
801
|
-
functionResponse: {
|
|
802
|
-
name: TASK_COMPLETE_TOOL_NAME,
|
|
803
|
-
response: { error },
|
|
804
|
-
id: callId,
|
|
805
|
-
},
|
|
806
|
-
});
|
|
807
|
-
this.emitActivity('ERROR', {
|
|
808
|
-
context: 'tool_call',
|
|
809
|
-
name: toolName,
|
|
810
|
-
callId,
|
|
811
|
-
error,
|
|
812
|
-
errorType: SubagentActivityErrorType.GENERIC,
|
|
813
|
-
});
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
else {
|
|
817
|
-
// No outputConfig - use default 'result' parameter
|
|
818
|
-
const resultArg = args['result'];
|
|
819
|
-
if (resultArg !== undefined &&
|
|
820
|
-
resultArg !== null &&
|
|
821
|
-
resultArg !== '') {
|
|
822
|
-
submittedOutput =
|
|
823
|
-
typeof resultArg === 'string'
|
|
824
|
-
? resultArg
|
|
825
|
-
: JSON.stringify(resultArg, null, 2);
|
|
826
|
-
syncResults.set(callId, {
|
|
827
|
-
functionResponse: {
|
|
828
|
-
name: TASK_COMPLETE_TOOL_NAME,
|
|
829
|
-
response: { status: 'Result submitted and task completed.' },
|
|
830
|
-
id: callId,
|
|
831
|
-
},
|
|
832
|
-
});
|
|
833
|
-
this.emitActivity('TOOL_CALL_END', {
|
|
834
|
-
name: toolName,
|
|
835
|
-
id: callId,
|
|
836
|
-
output: 'Result submitted and task completed.',
|
|
837
|
-
});
|
|
838
|
-
}
|
|
839
|
-
else {
|
|
840
|
-
// No result provided - this is an error for agents expected to return results
|
|
841
|
-
taskCompleted = false; // Revoke completion
|
|
842
|
-
const error = 'Missing required "result" argument. You must provide your findings when calling complete_task.';
|
|
843
|
-
syncResults.set(callId, {
|
|
844
|
-
functionResponse: {
|
|
845
|
-
name: TASK_COMPLETE_TOOL_NAME,
|
|
846
|
-
response: { error },
|
|
847
|
-
id: callId,
|
|
848
|
-
},
|
|
849
|
-
});
|
|
850
|
-
this.emitActivity('ERROR', {
|
|
851
|
-
context: 'tool_call',
|
|
852
|
-
name: toolName,
|
|
853
|
-
callId,
|
|
854
|
-
error,
|
|
855
|
-
errorType: SubagentActivityErrorType.GENERIC,
|
|
856
|
-
});
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
continue;
|
|
860
|
-
}
|
|
861
|
-
// Handle standard tools
|
|
774
|
+
// Handle unauthorized tools
|
|
862
775
|
if (!allowedToolNames.has(toolName)) {
|
|
863
776
|
const error = createUnauthorizedToolError(toolName);
|
|
864
777
|
debugLogger.warn(`[LocalAgentExecutor] Blocked call: ${error}`);
|
|
@@ -899,6 +812,8 @@ export class LocalAgentExecutor {
|
|
|
899
812
|
signal,
|
|
900
813
|
onWaitingForConfirmation,
|
|
901
814
|
});
|
|
815
|
+
// Record completed tool calls for persistent chat history
|
|
816
|
+
chat.recordCompletedToolCalls(model, completedCalls);
|
|
902
817
|
for (const call of completedCalls) {
|
|
903
818
|
const toolName = toolNameMap.get(call.request.callId) || call.request.name;
|
|
904
819
|
if (call.status === 'success') {
|
|
@@ -908,6 +823,18 @@ export class LocalAgentExecutor {
|
|
|
908
823
|
output: call.response.resultDisplay,
|
|
909
824
|
data: call.response.data,
|
|
910
825
|
});
|
|
826
|
+
// Check if this was a completion tool call
|
|
827
|
+
const isCompletionTool = call.request.name === COMPLETE_TASK_TOOL_NAME;
|
|
828
|
+
const data = call.response.data;
|
|
829
|
+
if (isCompletionTool &&
|
|
830
|
+
!taskCompleted &&
|
|
831
|
+
data?.['taskCompleted'] === true) {
|
|
832
|
+
taskCompleted = true;
|
|
833
|
+
const output = data['submittedOutput'];
|
|
834
|
+
if (typeof output === 'string') {
|
|
835
|
+
submittedOutput = output;
|
|
836
|
+
}
|
|
837
|
+
}
|
|
911
838
|
}
|
|
912
839
|
else if (call.status === 'error') {
|
|
913
840
|
this.emitActivity('ERROR', {
|
|
@@ -921,7 +848,7 @@ export class LocalAgentExecutor {
|
|
|
921
848
|
else if (call.status === 'cancelled') {
|
|
922
849
|
const isSoftRejection = call.outcome === ToolConfirmationOutcome.Cancel;
|
|
923
850
|
if (isSoftRejection) {
|
|
924
|
-
const error = `${SUBAGENT_REJECTED_ERROR_PREFIX} Please acknowledge this, rethink your strategy, and try a different approach. If you cannot proceed without the rejected operation, summarize the issue and use \`${
|
|
851
|
+
const error = `${SUBAGENT_REJECTED_ERROR_PREFIX} Please acknowledge this, rethink your strategy, and try a different approach. If you cannot proceed without the rejected operation, summarize the issue and use \`${COMPLETE_TASK_TOOL_NAME}\` to report your findings and the blocker.`;
|
|
925
852
|
this.emitActivity('ERROR', {
|
|
926
853
|
context: 'tool_call',
|
|
927
854
|
name: toolName,
|
|
@@ -985,7 +912,7 @@ export class LocalAgentExecutor {
|
|
|
985
912
|
*/
|
|
986
913
|
prepareToolsList() {
|
|
987
914
|
const toolsList = [];
|
|
988
|
-
const { toolConfig
|
|
915
|
+
const { toolConfig } = this.definition;
|
|
989
916
|
if (toolConfig) {
|
|
990
917
|
for (const toolRef of toolConfig.tools) {
|
|
991
918
|
if (typeof toolRef === 'object' && !('schema' in toolRef)) {
|
|
@@ -996,36 +923,6 @@ export class LocalAgentExecutor {
|
|
|
996
923
|
}
|
|
997
924
|
// Add schemas from tools that were explicitly registered by name, wildcard, or instance.
|
|
998
925
|
toolsList.push(...this.toolRegistry.getFunctionDeclarations(this.definition.modelConfig.model));
|
|
999
|
-
// Always inject complete_task.
|
|
1000
|
-
// Configure its schema based on whether output is expected.
|
|
1001
|
-
const completeTool = {
|
|
1002
|
-
name: TASK_COMPLETE_TOOL_NAME,
|
|
1003
|
-
description: outputConfig
|
|
1004
|
-
? 'Call this tool to submit your final answer and complete the task. This is the ONLY way to finish.'
|
|
1005
|
-
: 'Call this tool to submit your final findings and complete the task. This is the ONLY way to finish.',
|
|
1006
|
-
parameters: {
|
|
1007
|
-
type: Type.OBJECT,
|
|
1008
|
-
properties: {},
|
|
1009
|
-
required: [],
|
|
1010
|
-
},
|
|
1011
|
-
};
|
|
1012
|
-
if (outputConfig) {
|
|
1013
|
-
const jsonSchema = zodToJsonSchema(outputConfig.schema);
|
|
1014
|
-
const { $schema: _$schema, definitions: _definitions, ...schema } = jsonSchema;
|
|
1015
|
-
completeTool.parameters.properties[outputConfig.outputName] =
|
|
1016
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
1017
|
-
schema;
|
|
1018
|
-
completeTool.parameters.required.push(outputConfig.outputName);
|
|
1019
|
-
}
|
|
1020
|
-
else {
|
|
1021
|
-
completeTool.parameters.properties['result'] = {
|
|
1022
|
-
type: Type.STRING,
|
|
1023
|
-
description: 'Your final results or findings to return to the orchestrator. ' +
|
|
1024
|
-
'Ensure this is comprehensive and follows any formatting requested in your instructions.',
|
|
1025
|
-
};
|
|
1026
|
-
completeTool.parameters.required.push('result');
|
|
1027
|
-
}
|
|
1028
|
-
toolsList.push(completeTool);
|
|
1029
926
|
return toolsList;
|
|
1030
927
|
}
|
|
1031
928
|
/** Builds the system prompt from the agent definition and inputs. */
|
|
@@ -1036,6 +933,18 @@ export class LocalAgentExecutor {
|
|
|
1036
933
|
}
|
|
1037
934
|
// Inject user inputs into the prompt template.
|
|
1038
935
|
let finalPrompt = templateString(promptConfig.systemPrompt, inputs);
|
|
936
|
+
// Inject skill SI if ACTIVATE_SKILL_TOOL_NAME is available to this agent.
|
|
937
|
+
if (this.toolRegistry.getTool(ACTIVATE_SKILL_TOOL_NAME) !== undefined) {
|
|
938
|
+
const skills = this.context.config.getSkillManager().getSkills();
|
|
939
|
+
if (skills.length > 0) {
|
|
940
|
+
const skillsPrompt = renderAgentSkills(skills.map((s) => ({
|
|
941
|
+
name: s.name,
|
|
942
|
+
description: s.description,
|
|
943
|
+
location: s.location,
|
|
944
|
+
})));
|
|
945
|
+
finalPrompt += `\n\n${skillsPrompt}`;
|
|
946
|
+
}
|
|
947
|
+
}
|
|
1039
948
|
// Append memory context if available.
|
|
1040
949
|
const systemMemory = this.context.config.getSystemInstructionMemory();
|
|
1041
950
|
if (systemMemory) {
|
|
@@ -1053,16 +962,16 @@ Important Rules:
|
|
|
1053
962
|
* If a tool call is rejected by the user, acknowledge the rejection, rethink your strategy, and try a different approach. Do not repeatedly attempt the same rejected operation.`;
|
|
1054
963
|
if (this.definition.outputConfig) {
|
|
1055
964
|
finalPrompt += `
|
|
1056
|
-
* When you have completed your task, you MUST call the \`${
|
|
1057
|
-
* Do not call any other tools in the same turn as \`${
|
|
965
|
+
* When you have completed your task, you MUST call the \`${COMPLETE_TASK_TOOL_NAME}\` tool with your structured output.
|
|
966
|
+
* Do not call any other tools in the same turn as \`${COMPLETE_TASK_TOOL_NAME}\`.
|
|
1058
967
|
* This is the ONLY way to complete your mission. If you stop calling tools without calling this, you have failed.`;
|
|
1059
968
|
}
|
|
1060
969
|
else {
|
|
1061
970
|
finalPrompt += `
|
|
1062
|
-
* When you have completed your task, you MUST call the \`${
|
|
971
|
+
* When you have completed your task, you MUST call the \`${COMPLETE_TASK_TOOL_NAME}\` tool.
|
|
1063
972
|
* You MUST include your final findings in the "result" parameter. This is how you return the necessary results for the task to be marked complete.
|
|
1064
973
|
* Ensure your findings are comprehensive and follow any specific formatting requirements provided in your instructions.
|
|
1065
|
-
* Do not call any other tools in the same turn as \`${
|
|
974
|
+
* Do not call any other tools in the same turn as \`${COMPLETE_TASK_TOOL_NAME}\`.
|
|
1066
975
|
* This is the ONLY way to complete your mission. If you stop calling tools without calling this, you have failed.`;
|
|
1067
976
|
}
|
|
1068
977
|
return finalPrompt;
|
|
@@ -1108,5 +1017,40 @@ Important Rules:
|
|
|
1108
1017
|
this.onActivity(event);
|
|
1109
1018
|
}
|
|
1110
1019
|
}
|
|
1020
|
+
/**
|
|
1021
|
+
* Truncates a string to 200 characters in a Unicode-safe way for session summaries.
|
|
1022
|
+
*/
|
|
1023
|
+
getTruncatedSummary(text) {
|
|
1024
|
+
const chars = Array.from(text);
|
|
1025
|
+
if (chars.length <= 200) {
|
|
1026
|
+
return text;
|
|
1027
|
+
}
|
|
1028
|
+
return chars.slice(0, 197).join('') + '...';
|
|
1029
|
+
}
|
|
1030
|
+
/**
|
|
1031
|
+
* Parses the arguments for a tool call, handling both JSON strings and objects.
|
|
1032
|
+
*/
|
|
1033
|
+
parseToolArguments(functionCall) {
|
|
1034
|
+
const args = {};
|
|
1035
|
+
if (typeof functionCall.args === 'string') {
|
|
1036
|
+
try {
|
|
1037
|
+
const parsed = JSON.parse(functionCall.args);
|
|
1038
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
1039
|
+
Object.assign(args, parsed);
|
|
1040
|
+
}
|
|
1041
|
+
return { args };
|
|
1042
|
+
}
|
|
1043
|
+
catch {
|
|
1044
|
+
return {
|
|
1045
|
+
args: {},
|
|
1046
|
+
error: `Failed to parse JSON arguments for tool "${functionCall.name}": ${functionCall.args}. Ensure you provide a valid JSON object.`,
|
|
1047
|
+
};
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
else if (functionCall.args) {
|
|
1051
|
+
return { args: functionCall.args };
|
|
1052
|
+
}
|
|
1053
|
+
return { args: {} };
|
|
1054
|
+
}
|
|
1111
1055
|
}
|
|
1112
1056
|
//# sourceMappingURL=local-executor.js.map
|