From f2d281bf122beb189feae87d72ce3847ba823934 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Wed, 6 May 2026 12:40:18 +0800 Subject: [PATCH] fix: detect openclaw artifact responses before stripping --- internal/acp/orchestrator.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/internal/acp/orchestrator.go b/internal/acp/orchestrator.go index a2aa4a0..48c6629 100644 --- a/internal/acp/orchestrator.go +++ b/internal/acp/orchestrator.go @@ -755,7 +755,7 @@ func (o *SessionOrchestrator) normalizeResult(sess *session, result map[string]a if len(artifactRecord.Artifacts) > 0 { result["artifacts"] = artifactRecord.Artifacts } - if routing.TargetID == "gateway" && isOpenClawMode(routing.GatewayProviderID) { + if openClawArtifactResponse(result, routing, params) { stripOpenClawArtifactInlineContent(result) } @@ -775,6 +775,31 @@ func (o *SessionOrchestrator) normalizeResult(sess *session, result map[string]a return result } +func openClawArtifactResponse(result map[string]any, routing RoutingResult, params map[string]any) bool { + if routing.TargetID != "gateway" { + return false + } + for _, provider := range []string{ + routing.GatewayProviderID, + shared.StringArg(result, "resolvedGatewayProviderId", ""), + shared.StringArg(result, "gatewayProviderId", ""), + shared.StringArg(result, "gatewayProvider", ""), + shared.StringArg(params, "gatewayProviderId", ""), + shared.StringArg(params, "gatewayProvider", ""), + } { + if isOpenClawMode(provider) { + return true + } + } + routingParams := shared.AsMap(params["routing"]) + for _, key := range []string{"preferredGatewayProviderId", "gatewayProviderId", "gatewayProvider"} { + if isOpenClawMode(shared.StringArg(routingParams, key, "")) { + return true + } + } + return strings.HasPrefix(strings.TrimSpace(shared.StringArg(result, "artifactScope", "")), ".xworkmate/artifacts/tasks/") +} + func taskKindFromParams(params map[string]any, routing RoutingResult) TaskKind { if parseBool(params["multiAgent"]) { return TaskKindMultiAgent