From d63bcc8022d340f78f4b6d299024d30cb16e27e7 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Wed, 6 May 2026 13:09:19 +0800 Subject: [PATCH] fix: strip openclaw download artifact bodies --- internal/acp/orchestrator.go | 15 +++++++++++++-- internal/acp/routing_test.go | 17 ++++++++--------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/internal/acp/orchestrator.go b/internal/acp/orchestrator.go index d3f2223..f8b71e1 100644 --- a/internal/acp/orchestrator.go +++ b/internal/acp/orchestrator.go @@ -809,14 +809,14 @@ func openClawArtifactListHasScopedArtifact(raw any) bool { switch values := raw.(type) { case []map[string]any: for _, artifact := range values { - if strings.HasPrefix(strings.TrimSpace(shared.StringArg(artifact, "artifactScope", "")), ".xworkmate/artifacts/tasks/") { + if openClawArtifactHasBridgeDownloadRef(artifact) { return true } } case []any: for _, item := range values { artifact := shared.AsMap(item) - if strings.HasPrefix(strings.TrimSpace(shared.StringArg(artifact, "artifactScope", "")), ".xworkmate/artifacts/tasks/") { + if openClawArtifactHasBridgeDownloadRef(artifact) { return true } } @@ -824,6 +824,17 @@ func openClawArtifactListHasScopedArtifact(raw any) bool { return false } +func openClawArtifactHasBridgeDownloadRef(artifact map[string]any) bool { + if strings.HasPrefix(strings.TrimSpace(shared.StringArg(artifact, "artifactScope", "")), ".xworkmate/artifacts/tasks/") { + return true + } + downloadURL := strings.TrimSpace(shared.StringArg(artifact, "downloadUrl", "")) + if downloadURL == "" { + downloadURL = strings.TrimSpace(shared.StringArg(artifact, "downloadURL", "")) + } + return strings.Contains(downloadURL, "/artifacts/openclaw/download") +} + func taskKindFromParams(params map[string]any, routing RoutingResult) TaskKind { if parseBool(params["multiAgent"]) { return TaskKindMultiAgent diff --git a/internal/acp/routing_test.go b/internal/acp/routing_test.go index 29d6891..84e718a 100644 --- a/internal/acp/routing_test.go +++ b/internal/acp/routing_test.go @@ -811,15 +811,14 @@ func TestNormalizeResultStripsOpenClawInlineArtifactsAfterRecordNormalization(t "output": "created files", "artifacts": []any{ map[string]any{ - "relativePath": "reports/final.md", - "label": "final.md", - "contentType": "text/markdown", - "sizeBytes": 12, - "sha256": "fake-sha256", - "artifactScope": ".xworkmate/artifacts/tasks/thread-openclaw-normalize/turn-openclaw-normalize", - "downloadUrl": "https://xworkmate-bridge.svc.plus/artifacts/openclaw/download?relativePath=reports%2Ffinal.md", - "encoding": "base64", - "content": "ZmluYWwgcmVwb3J0", + "relativePath": "reports/final.md", + "label": "final.md", + "contentType": "text/markdown", + "sizeBytes": 12, + "sha256": "fake-sha256", + "downloadUrl": "https://xworkmate-bridge.svc.plus/artifacts/openclaw/download?relativePath=reports%2Ffinal.md", + "encoding": "base64", + "content": "ZmluYWwgcmVwb3J0", }, }, },