From 1d7c4816b01710f8815e8c737935a0b8807d910b Mon Sep 17 00:00:00 2001 From: 134 Date: Tue, 23 Jun 2026 17:17:13 +0800 Subject: [PATCH] fix: persist canvas agent media provenance --- ...¸ƒ对话框Agent模式升级开发文档-借鉴Cowart-2026-06-22.md | 1 + lib/canvas/agent-mutations.ts | 11 +++++++++++ tests/routes/canvas-chat-helpers.test.ts | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/docs/无限画布对话框Agent模式升级开发文档-借鉴Cowart-2026-06-22.md b/docs/无限画布对话框Agent模式升级开发文档-借鉴Cowart-2026-06-22.md index c1f3ba615..b60bf54a6 100644 --- a/docs/无限画布对话框Agent模式升级开发文档-借鉴Cowart-2026-06-22.md +++ b/docs/无限画布对话框Agent模式升级开发文档-借鉴Cowart-2026-06-22.md @@ -1434,6 +1434,7 @@ metadata: { metadata: { generatedByAgent: true, revisionOf: sourceNodeId, + sourceNodeId, sourceNodeIds: [...], prompt, model, diff --git a/lib/canvas/agent-mutations.ts b/lib/canvas/agent-mutations.ts index bd654e239..1dbd469c7 100644 --- a/lib/canvas/agent-mutations.ts +++ b/lib/canvas/agent-mutations.ts @@ -131,6 +131,13 @@ function buildMediaNode(params: { const sourceMessageId = String( itemMetadata.messageId || planMetadata.messageId || "" ).trim(); + const sourcePrompt = String( + params.item.prompt || itemMetadata.prompt || planMetadata.prompt || "" + ).trim(); + const sourceModel = String(itemMetadata.model || planMetadata.model || "").trim(); + const primarySourceNodeId = String( + itemMetadata.sourceNodeId || planMetadata.sourceNodeId || params.sourceNodeIds[0] || "" + ).trim(); const metadata = { ...planMetadata, ...itemMetadata, @@ -140,6 +147,10 @@ function buildMediaNode(params: { canvasAgentMediaItemId: params.item.mediaItemId, canvasAgentPlacement: params.plan.placement, canvasAgentPlacementStrategy: params.plan.placementStrategy, + messageId: sourceMessageId || undefined, + prompt: sourcePrompt || undefined, + model: sourceModel || undefined, + sourceNodeId: primarySourceNodeId || undefined, sourceMessageId: sourceMessageId || undefined, sourceImageKey: type === "image" && sourceMessageId ? params.item.url : undefined, sourceNodeIds: params.sourceNodeIds, diff --git a/tests/routes/canvas-chat-helpers.test.ts b/tests/routes/canvas-chat-helpers.test.ts index 27a7a89f9..1b647852a 100644 --- a/tests/routes/canvas-chat-helpers.test.ts +++ b/tests/routes/canvas-chat-helpers.test.ts @@ -1404,6 +1404,7 @@ test.describe("canvas chat pure helpers", () => { prompt: "换成白底", metadata: { messageId: "assistant-append-1", + model: "test-image-model", }, }, ], @@ -1428,6 +1429,11 @@ test.describe("canvas chat pure helpers", () => { canvasAgentOperationId: "op-append-1", canvasAgentMediaItemId: "media-append-1", revisionOf: "image-1", + sourceNodeId: "image-1", + sourceNodeIds: ["image-1"], + prompt: "换成白底", + model: "test-image-model", + messageId: "assistant-append-1", sourceMessageId: "assistant-append-1", sourceImageKey: "https://cdn.example.com/revision.png", },