From fecc01da0d32c0d18cec0eef86f24f5130b0052b Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Mon, 6 Apr 2026 14:08:46 +0800 Subject: [PATCH] fix: omit gateway metadata in local session mode --- lib/runtime/go_agent_core_client.dart | 7 ++++- test/runtime/go_agent_core_client_suite.dart | 27 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/runtime/go_agent_core_client.dart b/lib/runtime/go_agent_core_client.dart index 042fdac6..c499b129 100644 --- a/lib/runtime/go_agent_core_client.dart +++ b/lib/runtime/go_agent_core_client.dart @@ -214,7 +214,8 @@ class GoAgentCoreSessionRequest { if (_usesGatewaySessionMode(mode)) ...{ 'executionTarget': target.promptValue, if (agentId.trim().isNotEmpty) 'agentId': agentId.trim(), - if (metadata.isNotEmpty) 'metadata': metadata, + if (metadata.isNotEmpty && _supportsGatewayMetadata(target)) + 'metadata': metadata, }, }; return params; @@ -228,6 +229,10 @@ bool _usesGatewaySessionMode(String mode) { return normalized == 'gateway' || normalized == _gatewaySessionMode; } +bool _supportsGatewayMetadata(AssistantExecutionTarget target) { + return target == AssistantExecutionTarget.remote; +} + class GoAgentCoreSessionUpdate { const GoAgentCoreSessionUpdate({ required this.sessionId, diff --git a/test/runtime/go_agent_core_client_suite.dart b/test/runtime/go_agent_core_client_suite.dart index 287bc96d..d2c82357 100644 --- a/test/runtime/go_agent_core_client_suite.dart +++ b/test/runtime/go_agent_core_client_suite.dart @@ -120,6 +120,33 @@ void main() { expect(params['mode'], 'gateway-chat'); expect(params['executionTarget'], 'local'); expect(params['agentId'], 'agent-1'); + expect(params.containsKey('metadata'), isFalse); + }); + + test('remote gateway mode keeps dispatch metadata in ACP params', () { + const request = GoAgentCoreSessionRequest( + sessionId: 'session-3', + threadId: 'thread-3', + target: AssistantExecutionTarget.remote, + prompt: 'route remotely', + workingDirectory: '/tmp/workspace', + model: '', + thinking: '', + selectedSkills: [], + inlineAttachments: [], + localAttachments: [], + aiGatewayBaseUrl: '', + aiGatewayApiKey: '', + agentId: 'agent-remote', + metadata: {'source': 'test'}, + provider: SingleAgentProvider.auto, + ); + + final params = request.toAcpParams(); + + expect(params['mode'], 'gateway-chat'); + expect(params['executionTarget'], 'remote'); + expect(params['metadata'], {'source': 'test'}); }); test(