feat(canvas): Agent引用与局部重绘 - 完善附件预览多图展开并修复取消清理

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
ddCatandCursor committed 2026-09-08 22:59:49 +08:00
1 parent 897981b893
commit 6c1d17dbf6
26 files changed
+999 -236

No files matched your search

+14 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test";
import { applyCanvasConnectionPromptSync, buildAssetMentionReferences, buildCanvasNodeMentionReferenceMap, buildNodeMentionReferences, buildOrderedCanvasResourceReferences, canvasResourceMentionToken, collectUpstreamVideoNodes } from "../src/lib/canvas/canvas-resource-references";
import { applyCanvasConnectionPromptSync, buildAssetMentionReferences, buildCanvasNodeMentionReferenceMap, buildNodeMentionReferences, buildOrderedCanvasResourceReferences, canvasResourceMentionToken, collectUpstreamVideoNodes, imageGenerationReferenceConnections } from "../src/lib/canvas/canvas-resource-references";
import { canvasNodeToAsset } from "../src/lib/canvas/canvas-node-asset";
import { buildNodeGenerationInputs } from "../src/components/canvas/canvas-node-generation";
import { CanvasNodeType, type CanvasConnection, type CanvasNodeData } from "../src/types/canvas";
@@ -260,3 +260,16 @@ describe("remove canvas resource mention tokens", () => {
expect(nextTarget.metadata?.composerContent).toBe("比较 和 @图片1");
});
});
describe("image generation reference connections", () => {
test("把源节点的参考图连线复制到新结果,避免提示词图片丢失", () => {
const imageA = imageNode("image-a");
const imageB = imageNode("image-b");
const source = textNode("prompt");
const nodes = [imageA, imageB, source];
const connections = [connection(imageA.id, source.id), connection(imageB.id, source.id)];
const copied = imageGenerationReferenceConnections(source.id, "result", nodes, connections, () => "new-id");
expect(copied.map((item) => item.fromNodeId)).toEqual(["image-a", "image-b"]);
expect(copied.every((item) => item.toNodeId === "result")).toBe(true);
});
});