fix: reduce canvas agent media duplicate window

This commit is contained in:
134 2026-06-23 15:37:26 +08:00
parent 50aa93d5f3
commit 38435f9401
3 changed files with 32 additions and 2 deletions

View File

@ -5175,6 +5175,12 @@ export function CanvasChatPanel({
useEffect(() => {
if (!hasHydratedHistoryRef.current) return;
const activeStreamState = streamImageGenerationStateByChatId[activeChatId];
const shouldDeferAssistantMediaAutosync =
activeStreamState?.phase === "queued" ||
activeStreamState?.phase === "processing" ||
activeStreamState?.phase === "finalizing";
if (shouldDeferAssistantMediaAutosync) return;
let cancelled = false;
@ -5515,6 +5521,7 @@ export function CanvasChatPanel({
cancelled = true;
};
}, [
activeChatId,
messages,
addNode,
nodes,
@ -5522,6 +5529,7 @@ export function CanvasChatPanel({
clearStreamImageGenerationStateForChat,
focusCanvasOnNode,
selectNodes,
streamImageGenerationStateByChatId,
updateNode,
]);

View File

@ -115,15 +115,32 @@ function buildMediaNode(params: {
}) {
const now = new Date().toISOString();
const type = mediaNodeType(params.item);
const itemMetadata =
params.item.metadata &&
typeof params.item.metadata === "object" &&
!Array.isArray(params.item.metadata)
? params.item.metadata
: {};
const planMetadata =
params.plan.metadata &&
typeof params.plan.metadata === "object" &&
!Array.isArray(params.plan.metadata)
? params.plan.metadata
: {};
const sourceMessageId = String(
itemMetadata.messageId || planMetadata.messageId || ""
).trim();
const metadata = {
...(params.plan.metadata || {}),
...(params.item.metadata || {}),
...planMetadata,
...itemMetadata,
generatedByAgent: true,
canvasAgentOperationId: params.plan.operationId,
canvasAgentOperation: params.plan.operation,
canvasAgentMediaItemId: params.item.mediaItemId,
canvasAgentPlacement: params.plan.placement,
canvasAgentPlacementStrategy: params.plan.placementStrategy,
sourceMessageId: sourceMessageId || undefined,
sourceImageKey: type === "image" && sourceMessageId ? params.item.url : undefined,
sourceNodeIds: params.sourceNodeIds,
revisionOf:
params.plan.operation === "append_revision"

View File

@ -1095,6 +1095,9 @@ test.describe("canvas chat pure helpers", () => {
url: "https://cdn.example.com/revision.png",
title: "白底版本",
prompt: "换成白底",
metadata: {
messageId: "assistant-append-1",
},
},
],
},
@ -1118,6 +1121,8 @@ test.describe("canvas chat pure helpers", () => {
canvasAgentOperationId: "op-append-1",
canvasAgentMediaItemId: "media-append-1",
revisionOf: "image-1",
sourceMessageId: "assistant-append-1",
sourceImageKey: "https://cdn.example.com/revision.png",
},
},
});