@google/gemini-cli-core 0.42.0-preview.1 → 0.43.0-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/changelogs/index.md +14 -0
- package/dist/docs/changelogs/latest.md +108 -166
- package/dist/docs/changelogs/preview.md +227 -103
- package/dist/docs/cli/auto-memory.md +60 -38
- package/dist/docs/cli/settings.md +1 -1
- package/dist/docs/cli/tutorials/memory-management.md +1 -1
- package/dist/docs/extensions/releasing.md +58 -24
- package/dist/docs/reference/configuration.md +14 -1
- package/dist/docs/reference/keyboard-shortcuts.md +23 -0
- package/dist/src/agent/content-utils.js +2 -0
- package/dist/src/agent/content-utils.js.map +1 -1
- package/dist/src/agent/content-utils.test.js +5 -1
- package/dist/src/agent/content-utils.test.js.map +1 -1
- package/dist/src/agent/event-translator.js +7 -6
- package/dist/src/agent/event-translator.js.map +1 -1
- package/dist/src/agent/legacy-agent-session.js +4 -0
- package/dist/src/agent/legacy-agent-session.js.map +1 -1
- package/dist/src/agent/legacy-agent-session.test.js +9 -1
- package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
- package/dist/src/agent/tool-display-utils.d.ts +3 -2
- package/dist/src/agent/tool-display-utils.js +3 -2
- package/dist/src/agent/tool-display-utils.js.map +1 -1
- package/dist/src/agent/types.d.ts +33 -3
- package/dist/src/agents/a2aUtils.d.ts +1 -1
- package/dist/src/agents/a2aUtils.js +4 -3
- package/dist/src/agents/a2aUtils.js.map +1 -1
- package/dist/src/agents/agentLoader.d.ts +2 -2
- package/dist/src/agents/browser/browserAgentInvocation.js +24 -19
- package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
- package/dist/src/agents/local-executor.d.ts +1 -0
- package/dist/src/agents/local-executor.js +46 -32
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +127 -0
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.js +24 -20
- package/dist/src/agents/local-invocation.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +9 -9
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/local-subagent-protocol.d.ts +18 -0
- package/dist/src/agents/local-subagent-protocol.js +357 -0
- package/dist/src/agents/local-subagent-protocol.js.map +1 -0
- package/dist/src/agents/local-subagent-protocol.test.d.ts +6 -0
- package/dist/src/agents/local-subagent-protocol.test.js +676 -0
- package/dist/src/agents/local-subagent-protocol.test.js.map +1 -0
- package/dist/src/agents/remote-invocation.js +6 -6
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/remote-invocation.test.js +23 -12
- package/dist/src/agents/remote-invocation.test.js.map +1 -1
- package/dist/src/agents/remote-subagent-protocol.d.ts +31 -0
- package/dist/src/agents/remote-subagent-protocol.js +330 -0
- package/dist/src/agents/remote-subagent-protocol.js.map +1 -0
- package/dist/src/agents/remote-subagent-protocol.test.d.ts +6 -0
- package/dist/src/agents/remote-subagent-protocol.test.js +652 -0
- package/dist/src/agents/remote-subagent-protocol.test.js.map +1 -0
- package/dist/src/agents/skill-extraction-agent.js +1 -0
- package/dist/src/agents/skill-extraction-agent.js.map +1 -1
- package/dist/src/agents/skill-extraction-agent.test.js +1 -0
- package/dist/src/agents/skill-extraction-agent.test.js.map +1 -1
- package/dist/src/agents/types.d.ts +13 -2
- package/dist/src/agents/types.js +7 -0
- package/dist/src/agents/types.js.map +1 -1
- package/dist/src/availability/modelAvailabilityService.d.ts +6 -6
- package/dist/src/availability/modelAvailabilityService.js +14 -7
- package/dist/src/availability/modelAvailabilityService.js.map +1 -1
- package/dist/src/availability/modelAvailabilityService.test.js +34 -0
- package/dist/src/availability/modelAvailabilityService.test.js.map +1 -1
- package/dist/src/availability/policyHelpers.js +24 -12
- package/dist/src/availability/policyHelpers.js.map +1 -1
- package/dist/src/availability/policyHelpers.test.js +3 -2
- package/dist/src/availability/policyHelpers.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +3 -0
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/setup.d.ts +3 -0
- package/dist/src/code_assist/setup.js +9 -0
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +9 -1
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/commands/memory.d.ts +5 -14
- package/dist/src/commands/memory.js +19 -141
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/memory.test.js +62 -0
- package/dist/src/commands/memory.test.js.map +1 -1
- package/dist/src/config/config.d.ts +6 -2
- package/dist/src/config/config.js +63 -8
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +48 -0
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +13 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/models.js +1 -1
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/projectRegistry.d.ts +1 -0
- package/dist/src/config/projectRegistry.js +13 -2
- package/dist/src/config/projectRegistry.js.map +1 -1
- package/dist/src/config/projectRegistry.test.js +43 -0
- package/dist/src/config/projectRegistry.test.js.map +1 -1
- package/dist/src/context/config/profiles.js +4 -0
- package/dist/src/context/config/profiles.js.map +1 -1
- package/dist/src/context/contextManager.barrier.test.js +4 -3
- package/dist/src/context/contextManager.barrier.test.js.map +1 -1
- package/dist/src/context/contextManager.d.ts +9 -2
- package/dist/src/context/contextManager.hotstart.test.d.ts +6 -0
- package/dist/src/context/contextManager.hotstart.test.js +61 -0
- package/dist/src/context/contextManager.hotstart.test.js.map +1 -0
- package/dist/src/context/contextManager.js +96 -21
- package/dist/src/context/contextManager.js.map +1 -1
- package/dist/src/context/eventBus.d.ts +6 -0
- package/dist/src/context/eventBus.js +6 -0
- package/dist/src/context/eventBus.js.map +1 -1
- package/dist/src/context/graph/render.d.ts +3 -1
- package/dist/src/context/graph/render.js +33 -9
- package/dist/src/context/graph/render.js.map +1 -1
- package/dist/src/context/graph/render.test.d.ts +6 -0
- package/dist/src/context/graph/render.test.js +203 -0
- package/dist/src/context/graph/render.test.js.map +1 -0
- package/dist/src/context/graph/toGraph.js +3 -3
- package/dist/src/context/graph/toGraph.js.map +1 -1
- package/dist/src/context/graph/toGraph.test.d.ts +6 -0
- package/dist/src/context/graph/toGraph.test.js +35 -0
- package/dist/src/context/graph/toGraph.test.js.map +1 -0
- package/dist/src/context/initializer.js +11 -2
- package/dist/src/context/initializer.js.map +1 -1
- package/dist/src/context/pipeline/contextWorkingBuffer.d.ts +5 -7
- package/dist/src/context/pipeline/contextWorkingBuffer.js +105 -29
- package/dist/src/context/pipeline/contextWorkingBuffer.js.map +1 -1
- package/dist/src/context/pipeline/contextWorkingBuffer.test.js +67 -0
- package/dist/src/context/pipeline/contextWorkingBuffer.test.js.map +1 -1
- package/dist/src/context/pipeline/environment.d.ts +4 -0
- package/dist/src/context/pipeline/environmentImpl.d.ts +6 -5
- package/dist/src/context/pipeline/environmentImpl.js +6 -8
- package/dist/src/context/pipeline/environmentImpl.js.map +1 -1
- package/dist/src/context/pipeline/environmentImpl.test.js +5 -1
- package/dist/src/context/pipeline/environmentImpl.test.js.map +1 -1
- package/dist/src/context/pipeline/orchestrator.d.ts +1 -0
- package/dist/src/context/pipeline/orchestrator.js +59 -24
- package/dist/src/context/pipeline/orchestrator.js.map +1 -1
- package/dist/src/context/processors/blobDegradationProcessor.test.js +2 -2
- package/dist/src/context/processors/rollingSummaryProcessor.js +2 -15
- package/dist/src/context/processors/rollingSummaryProcessor.js.map +1 -1
- package/dist/src/context/processors/stateSnapshotAsyncProcessor.d.ts +7 -0
- package/dist/src/context/processors/stateSnapshotAsyncProcessor.js +33 -21
- package/dist/src/context/processors/stateSnapshotAsyncProcessor.js.map +1 -1
- package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js +31 -7
- package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js.map +1 -1
- package/dist/src/context/processors/stateSnapshotProcessor.d.ts +2 -0
- package/dist/src/context/processors/stateSnapshotProcessor.js +28 -4
- package/dist/src/context/processors/stateSnapshotProcessor.js.map +1 -1
- package/dist/src/context/processors/stateSnapshotProcessor.test.js +40 -1
- package/dist/src/context/processors/stateSnapshotProcessor.test.js.map +1 -1
- package/dist/src/context/system-tests/hysteresis.test.d.ts +6 -0
- package/dist/src/context/system-tests/hysteresis.test.js +98 -0
- package/dist/src/context/system-tests/hysteresis.test.js.map +1 -0
- package/dist/src/context/system-tests/lifecycle.golden.test.js +90 -69
- package/dist/src/context/system-tests/lifecycle.golden.test.js.map +1 -1
- package/dist/src/context/system-tests/simulationHarness.d.ts +1 -4
- package/dist/src/context/system-tests/simulationHarness.js +16 -30
- package/dist/src/context/system-tests/simulationHarness.js.map +1 -1
- package/dist/src/context/testing/contextTestUtils.d.ts +1 -0
- package/dist/src/context/testing/contextTestUtils.js +48 -25
- package/dist/src/context/testing/contextTestUtils.js.map +1 -1
- package/dist/src/context/utils/adaptiveTokenCalculator.d.ts +61 -0
- package/dist/src/context/utils/adaptiveTokenCalculator.js +116 -0
- package/dist/src/context/utils/adaptiveTokenCalculator.js.map +1 -0
- package/dist/src/context/utils/adaptiveTokenCalculator.test.d.ts +6 -0
- package/dist/src/context/utils/adaptiveTokenCalculator.test.js +85 -0
- package/dist/src/context/utils/adaptiveTokenCalculator.test.js.map +1 -0
- package/dist/src/context/utils/contextTokenCalculator.d.ts +47 -1
- package/dist/src/context/utils/contextTokenCalculator.js +20 -3
- package/dist/src/context/utils/contextTokenCalculator.js.map +1 -1
- package/dist/src/context/utils/contextTokenCalculator.test.js +8 -8
- package/dist/src/context/utils/contextTokenCalculator.test.js.map +1 -1
- package/dist/src/context/utils/formatNodesForLlm.d.ts +21 -0
- package/dist/src/context/utils/formatNodesForLlm.js +69 -0
- package/dist/src/context/utils/formatNodesForLlm.js.map +1 -0
- package/dist/src/context/utils/formatNodesForLlm.test.d.ts +6 -0
- package/dist/src/context/utils/formatNodesForLlm.test.js +110 -0
- package/dist/src/context/utils/formatNodesForLlm.test.js.map +1 -0
- package/dist/src/context/utils/snapshotGenerator.d.ts +23 -1
- package/dist/src/context/utils/snapshotGenerator.js +249 -31
- package/dist/src/context/utils/snapshotGenerator.js.map +1 -1
- package/dist/src/context/utils/snapshotGenerator.test.d.ts +6 -0
- package/dist/src/context/utils/snapshotGenerator.test.js +255 -0
- package/dist/src/context/utils/snapshotGenerator.test.js.map +1 -0
- package/dist/src/context/utils/tokenCalibration.d.ts +9 -0
- package/dist/src/context/utils/tokenCalibration.js +30 -0
- package/dist/src/context/utils/tokenCalibration.js.map +1 -0
- package/dist/src/core/baseLlmClient.d.ts +8 -0
- package/dist/src/core/baseLlmClient.js +14 -0
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/client.js +12 -1
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +4 -4
- package/dist/src/core/contentGenerator.js +12 -10
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +2 -0
- package/dist/src/core/geminiChat.js +60 -5
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +195 -2
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/turn.js +30 -2
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +13 -8
- 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/hookEventHandler.js +3 -2
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.test.js +80 -0
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompts/snippets.js +1 -1
- package/dist/src/prompts/snippets.js.map +1 -1
- package/dist/src/routing/strategies/approvalModeStrategy.js +5 -3
- package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -1
- package/dist/src/routing/strategies/approvalModeStrategy.test.js +2 -0
- package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js +8 -1
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js +4 -0
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/gemmaClassifierStrategy.js +7 -1
- package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +4 -0
- package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +1 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.js +22 -3
- package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +168 -23
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -1
- package/dist/src/scheduler/scheduler.js +11 -0
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/scheduler/scheduler.test.js +1 -1
- package/dist/src/scheduler/scheduler.test.js.map +1 -1
- package/dist/src/scheduler/state-manager.js +5 -1
- package/dist/src/scheduler/state-manager.js.map +1 -1
- package/dist/src/scheduler/tool-executor.js +7 -4
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/types.d.ts +5 -1
- package/dist/src/scheduler/types.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.js +2 -1
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +36 -0
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/gitService.js +8 -1
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +104 -0
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/keychainService.js +14 -5
- package/dist/src/services/keychainService.js.map +1 -1
- package/dist/src/services/memoryPatchUtils.d.ts +66 -4
- package/dist/src/services/memoryPatchUtils.js +267 -5
- package/dist/src/services/memoryPatchUtils.js.map +1 -1
- package/dist/src/services/memoryService.js +25 -1
- package/dist/src/services/memoryService.js.map +1 -1
- package/dist/src/services/memoryService.test.js +61 -1
- package/dist/src/services/memoryService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +11 -0
- package/dist/src/services/test-data/resolved-aliases.golden.json +11 -0
- package/dist/src/telemetry/gcp-exporters.d.ts +2 -0
- package/dist/src/telemetry/gcp-exporters.js +69 -5
- package/dist/src/telemetry/gcp-exporters.js.map +1 -1
- package/dist/src/telemetry/gcp-exporters.test.js +52 -0
- package/dist/src/telemetry/gcp-exporters.test.js.map +1 -1
- package/dist/src/telemetry/metrics.js +13 -2
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +61 -1
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +5 -2
- 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 +7 -4
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
- package/dist/src/tools/edit.js +19 -0
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +9 -0
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/grep.js +13 -1
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/ls.js +5 -0
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/mcp-client.js +17 -3
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +24 -0
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/read-file.js +11 -6
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +20 -8
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/ripGrep.js +13 -1
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/shell.js +14 -0
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +5 -0
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +6 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/topicTool.js +5 -0
- package/dist/src/tools/topicTool.js.map +1 -1
- package/dist/src/tools/write-file.js +13 -0
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +8 -0
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/errors.js +3 -8
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.js +4 -1
- package/dist/src/utils/filesearch/ignore.js.map +1 -1
- package/dist/src/utils/ignoreFileParser.js +1 -1
- package/dist/src/utils/ignoreFileParser.js.map +1 -1
- package/dist/src/utils/ignorePatterns.js +2 -0
- package/dist/src/utils/ignorePatterns.js.map +1 -1
- package/dist/src/utils/ignorePatterns.test.js +1 -0
- package/dist/src/utils/ignorePatterns.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +55 -40
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +77 -9
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/modelUtils.d.ts +14 -0
- package/dist/src/utils/modelUtils.js +17 -0
- package/dist/src/utils/modelUtils.js.map +1 -0
- package/dist/src/utils/modelUtils.test.d.ts +6 -0
- package/dist/src/utils/modelUtils.test.js +23 -0
- package/dist/src/utils/modelUtils.test.js.map +1 -0
- package/dist/src/utils/paths.d.ts +15 -1
- package/dist/src/utils/paths.js +22 -7
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +25 -1
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.js +23 -12
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/dist/src/utils/shell-utils.js +9 -1
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +7 -3
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/tokenCalculation.js +2 -1
- package/dist/src/utils/tokenCalculation.js.map +1 -1
- package/dist/src/utils/tokenCalculation.test.js +15 -0
- package/dist/src/utils/tokenCalculation.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/google-gemini-cli-core-0.42.0-preview.0.tgz +0 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @fileoverview RemoteSubagentProtocol — wraps A2A remote agent streaming
|
|
8
|
+
* behind the AgentProtocol interface.
|
|
9
|
+
*
|
|
10
|
+
* Pattern mirrors LocalSubagentProtocol and LegacyAgentProtocol, but the loop
|
|
11
|
+
* body drives A2AClientManager instead of LocalAgentExecutor.
|
|
12
|
+
*/
|
|
13
|
+
import { randomUUID } from 'node:crypto';
|
|
14
|
+
import { AgentSession } from '../agent/agent-session.js';
|
|
15
|
+
import { DEFAULT_QUERY_STRING, SubagentState, getRemoteAgentTargetUrl, getAgentCardLoadOptions, } from './types.js';
|
|
16
|
+
import { A2AResultReassembler, extractIdsFromResponse } from './a2aUtils.js';
|
|
17
|
+
import { A2AAuthProviderFactory } from './auth-provider/factory.js';
|
|
18
|
+
import { A2AAgentError } from './a2a-errors.js';
|
|
19
|
+
import { debugLogger } from '../utils/debugLogger.js';
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Helpers
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
function isAbortLikeError(err) {
|
|
24
|
+
return err instanceof Error && err.name === 'AbortError';
|
|
25
|
+
}
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// RemoteSubagentProtocol
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
class RemoteSubagentProtocol {
|
|
30
|
+
definition;
|
|
31
|
+
context;
|
|
32
|
+
_events = [];
|
|
33
|
+
_subscribers = new Set();
|
|
34
|
+
_streamId = randomUUID();
|
|
35
|
+
_eventCounter = 0;
|
|
36
|
+
_agentStartEmitted = false;
|
|
37
|
+
_agentEndEmitted = false;
|
|
38
|
+
_activeStreamId;
|
|
39
|
+
_abortController = new AbortController();
|
|
40
|
+
// A2A conversation state — persists across sends within this session instance
|
|
41
|
+
contextId;
|
|
42
|
+
taskId;
|
|
43
|
+
authHandler;
|
|
44
|
+
// Agent display name (for SubagentProgress construction)
|
|
45
|
+
_agentName;
|
|
46
|
+
// Latest SubagentProgress — updated per chunk, used for error recovery
|
|
47
|
+
_latestProgress;
|
|
48
|
+
// Result promise wiring — re-created per stream in _beginNewStream()
|
|
49
|
+
_resultResolve;
|
|
50
|
+
_resultReject;
|
|
51
|
+
_resultPromise;
|
|
52
|
+
constructor(definition, context,
|
|
53
|
+
// Required for API parity across protocol constructors (local, remote, legacy)
|
|
54
|
+
_messageBus) {
|
|
55
|
+
this.definition = definition;
|
|
56
|
+
this.context = context;
|
|
57
|
+
this._agentName = definition.displayName ?? definition.name;
|
|
58
|
+
}
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// AgentProtocol interface
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
get events() {
|
|
63
|
+
return this._events;
|
|
64
|
+
}
|
|
65
|
+
subscribe(callback) {
|
|
66
|
+
this._subscribers.add(callback);
|
|
67
|
+
return () => {
|
|
68
|
+
this._subscribers.delete(callback);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async send(payload) {
|
|
72
|
+
if ('message' in payload && payload.message) {
|
|
73
|
+
if (this._activeStreamId) {
|
|
74
|
+
throw new Error('RemoteSubagentProtocol.send() cannot be called while a stream is active.');
|
|
75
|
+
}
|
|
76
|
+
const query = payload.message.content
|
|
77
|
+
.filter((p) => p.type === 'text')
|
|
78
|
+
.map((p) => p.text)
|
|
79
|
+
.join('') || DEFAULT_QUERY_STRING;
|
|
80
|
+
this._beginNewStream();
|
|
81
|
+
const streamId = this._streamId;
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
void this._runStreamInBackground(query);
|
|
84
|
+
}, 0);
|
|
85
|
+
return { streamId };
|
|
86
|
+
}
|
|
87
|
+
// update/action/elicitations not used for remote agents
|
|
88
|
+
return { streamId: null };
|
|
89
|
+
}
|
|
90
|
+
async abort() {
|
|
91
|
+
this._abortController.abort();
|
|
92
|
+
}
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
// Protocol-specific: result access
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
getResult() {
|
|
97
|
+
if (!this._resultPromise) {
|
|
98
|
+
return Promise.reject(new Error('No active or completed stream'));
|
|
99
|
+
}
|
|
100
|
+
return this._resultPromise;
|
|
101
|
+
}
|
|
102
|
+
getLatestProgress() {
|
|
103
|
+
return this._latestProgress;
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Core: A2A streaming
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
_beginNewStream() {
|
|
109
|
+
this._streamId = randomUUID();
|
|
110
|
+
this._eventCounter = 0;
|
|
111
|
+
this._abortController = new AbortController();
|
|
112
|
+
this._agentStartEmitted = false;
|
|
113
|
+
this._agentEndEmitted = false;
|
|
114
|
+
this._activeStreamId = this._streamId;
|
|
115
|
+
this._resultPromise = new Promise((resolve, reject) => {
|
|
116
|
+
this._resultResolve = resolve;
|
|
117
|
+
this._resultReject = reject;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async _runStreamInBackground(query) {
|
|
121
|
+
this._ensureAgentStart();
|
|
122
|
+
try {
|
|
123
|
+
await this._runStream(query);
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
if (this._abortController.signal.aborted || isAbortLikeError(err)) {
|
|
127
|
+
this._ensureAgentEnd('aborted');
|
|
128
|
+
// Abort resolves with an empty result — partial output is intentionally
|
|
129
|
+
// dropped since the caller requested cancellation.
|
|
130
|
+
this._resultResolve({
|
|
131
|
+
llmContent: [{ text: '' }],
|
|
132
|
+
returnDisplay: '',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this._emitErrorAndAgentEnd(err);
|
|
137
|
+
this._resultReject(err);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
this._clearActiveStream();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async _runStream(query) {
|
|
145
|
+
const clientManager = this.context.config.getA2AClientManager();
|
|
146
|
+
if (!clientManager) {
|
|
147
|
+
throw new Error(`RemoteSubagentProtocol: A2AClientManager not available for '${this.definition.name}'.`);
|
|
148
|
+
}
|
|
149
|
+
const authHandler = await this._getAuthHandler();
|
|
150
|
+
if (!clientManager.getClient(this.definition.name)) {
|
|
151
|
+
await clientManager.loadAgent(this.definition.name, getAgentCardLoadOptions(this.definition), authHandler);
|
|
152
|
+
}
|
|
153
|
+
const reassembler = new A2AResultReassembler();
|
|
154
|
+
let prevText = '';
|
|
155
|
+
const stream = clientManager.sendMessageStream(this.definition.name, query, {
|
|
156
|
+
contextId: this.contextId,
|
|
157
|
+
taskId: this.taskId,
|
|
158
|
+
signal: this._abortController.signal,
|
|
159
|
+
});
|
|
160
|
+
for await (const chunk of stream) {
|
|
161
|
+
reassembler.update(chunk);
|
|
162
|
+
const { contextId: newContextId, taskId: newTaskId, clearTaskId, } = extractIdsFromResponse(chunk);
|
|
163
|
+
if (newContextId)
|
|
164
|
+
this.contextId = newContextId;
|
|
165
|
+
this.taskId = clearTaskId ? undefined : (newTaskId ?? this.taskId);
|
|
166
|
+
const currentText = reassembler.toString();
|
|
167
|
+
// Update latest progress snapshot (for invocation's error recovery)
|
|
168
|
+
this._latestProgress = {
|
|
169
|
+
isSubagentProgress: true,
|
|
170
|
+
agentName: this._agentName,
|
|
171
|
+
state: SubagentState.RUNNING,
|
|
172
|
+
recentActivity: reassembler.toActivityItems(),
|
|
173
|
+
result: currentText,
|
|
174
|
+
};
|
|
175
|
+
// Emit delta as a message event
|
|
176
|
+
const delta = currentText.slice(prevText.length);
|
|
177
|
+
if (delta) {
|
|
178
|
+
this._emit([
|
|
179
|
+
this._makeEvent('message', {
|
|
180
|
+
role: 'agent',
|
|
181
|
+
content: [{ type: 'text', text: delta }],
|
|
182
|
+
}),
|
|
183
|
+
]);
|
|
184
|
+
prevText = currentText;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const finalOutput = reassembler.toString();
|
|
188
|
+
debugLogger.debug(`[RemoteSubagentProtocol] ${this.definition.name} finished, output length: ${finalOutput.length}`);
|
|
189
|
+
const finalProgress = {
|
|
190
|
+
isSubagentProgress: true,
|
|
191
|
+
agentName: this._agentName,
|
|
192
|
+
state: SubagentState.COMPLETED,
|
|
193
|
+
result: finalOutput,
|
|
194
|
+
recentActivity: reassembler.toActivityItems(),
|
|
195
|
+
};
|
|
196
|
+
this._latestProgress = finalProgress;
|
|
197
|
+
this._finishStream('completed');
|
|
198
|
+
this._resultResolve({
|
|
199
|
+
llmContent: [{ text: finalOutput }],
|
|
200
|
+
returnDisplay: finalProgress,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
async _getAuthHandler() {
|
|
204
|
+
if (this.authHandler)
|
|
205
|
+
return this.authHandler;
|
|
206
|
+
if (!this.definition.auth)
|
|
207
|
+
return undefined;
|
|
208
|
+
const targetUrl = getRemoteAgentTargetUrl(this.definition);
|
|
209
|
+
const provider = await A2AAuthProviderFactory.create({
|
|
210
|
+
authConfig: this.definition.auth,
|
|
211
|
+
agentName: this.definition.name,
|
|
212
|
+
targetUrl,
|
|
213
|
+
agentCardUrl: this.definition.agentCardUrl,
|
|
214
|
+
});
|
|
215
|
+
if (!provider) {
|
|
216
|
+
throw new Error(`Failed to create auth provider for agent '${this.definition.name}'`);
|
|
217
|
+
}
|
|
218
|
+
this.authHandler = provider;
|
|
219
|
+
return this.authHandler;
|
|
220
|
+
}
|
|
221
|
+
// ---------------------------------------------------------------------------
|
|
222
|
+
// Internal helpers
|
|
223
|
+
// ---------------------------------------------------------------------------
|
|
224
|
+
_emit(events) {
|
|
225
|
+
if (events.length === 0)
|
|
226
|
+
return;
|
|
227
|
+
const subscribers = [...this._subscribers];
|
|
228
|
+
for (const event of events) {
|
|
229
|
+
this._events.push(event);
|
|
230
|
+
if (event.type === 'agent_end') {
|
|
231
|
+
this._agentEndEmitted = true;
|
|
232
|
+
}
|
|
233
|
+
for (const sub of subscribers) {
|
|
234
|
+
sub(event);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
_clearActiveStream() {
|
|
239
|
+
this._activeStreamId = undefined;
|
|
240
|
+
}
|
|
241
|
+
_ensureAgentStart() {
|
|
242
|
+
if (!this._agentStartEmitted) {
|
|
243
|
+
this._agentStartEmitted = true;
|
|
244
|
+
this._emit([this._makeEvent('agent_start', {})]);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
_ensureAgentEnd(reason = 'completed') {
|
|
248
|
+
if (!this._agentEndEmitted && this._agentStartEmitted) {
|
|
249
|
+
this._emit([this._makeEvent('agent_end', { reason })]);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
_finishStream(reason) {
|
|
253
|
+
this._ensureAgentEnd(reason);
|
|
254
|
+
this._clearActiveStream();
|
|
255
|
+
}
|
|
256
|
+
_emitErrorAndAgentEnd(err) {
|
|
257
|
+
const message = this._formatError(err);
|
|
258
|
+
this._ensureAgentStart();
|
|
259
|
+
const meta = {};
|
|
260
|
+
if (err instanceof Error) {
|
|
261
|
+
meta['errorName'] = err.constructor.name;
|
|
262
|
+
meta['stack'] = err.stack;
|
|
263
|
+
}
|
|
264
|
+
this._emit([
|
|
265
|
+
this._makeEvent('error', {
|
|
266
|
+
status: 'INTERNAL',
|
|
267
|
+
message,
|
|
268
|
+
fatal: true,
|
|
269
|
+
...(Object.keys(meta).length > 0 ? { _meta: meta } : {}),
|
|
270
|
+
}),
|
|
271
|
+
]);
|
|
272
|
+
this._ensureAgentEnd('failed');
|
|
273
|
+
}
|
|
274
|
+
_formatError(error) {
|
|
275
|
+
if (error instanceof A2AAgentError) {
|
|
276
|
+
return error.userMessage;
|
|
277
|
+
}
|
|
278
|
+
return `Error calling remote agent: ${error instanceof Error ? error.message : String(error)}`;
|
|
279
|
+
}
|
|
280
|
+
_nextEventFields() {
|
|
281
|
+
return {
|
|
282
|
+
id: `${this._streamId}-${this._eventCounter++}`,
|
|
283
|
+
timestamp: new Date().toISOString(),
|
|
284
|
+
streamId: this._streamId,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
_makeEvent(type, payload) {
|
|
288
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
289
|
+
return {
|
|
290
|
+
...this._nextEventFields(),
|
|
291
|
+
type,
|
|
292
|
+
...payload,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// ---------------------------------------------------------------------------
|
|
297
|
+
// Public export
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
export class RemoteSubagentSession extends AgentSession {
|
|
300
|
+
_remoteProtocol;
|
|
301
|
+
constructor(definition, context, messageBus) {
|
|
302
|
+
const protocol = new RemoteSubagentProtocol(definition, context, messageBus);
|
|
303
|
+
super(protocol);
|
|
304
|
+
this._remoteProtocol = protocol;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Returns the ToolResult once the remote agent stream completes.
|
|
308
|
+
* Used by RemoteAgentInvocation to return the result.
|
|
309
|
+
*/
|
|
310
|
+
getResult() {
|
|
311
|
+
return this._remoteProtocol.getResult();
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Returns the most recent SubagentProgress snapshot, updated per streaming
|
|
315
|
+
* chunk. Useful for constructing error progress when getResult() rejects.
|
|
316
|
+
*/
|
|
317
|
+
getLatestProgress() {
|
|
318
|
+
return this._remoteProtocol.getLatestProgress();
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Convenience: start execution with a query string.
|
|
322
|
+
* Equivalent to send({message: {content: [{type:'text', text: query}]}}).
|
|
323
|
+
*/
|
|
324
|
+
async startWithQuery(query) {
|
|
325
|
+
return this.send({
|
|
326
|
+
message: { content: [{ type: 'text', text: query }] },
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=remote-subagent-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-subagent-protocol.js","sourceRoot":"","sources":["../../../src/agents/remote-subagent-protocol.ts"],"names":[],"mappings":"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"}
|