feat(canvas): 云端 Agent - 完成策略分层、节点能力注册与可解释审批改造
This commit is contained in:
@@ -6,6 +6,7 @@ import { saveAs } from "file-saver";
|
||||
import { NODE_DEFAULT_SIZE } from "@/constant/canvas";
|
||||
import { FOLDER_COLLAPSED_HEIGHT, FOLDER_COLLAPSED_WIDTH, FRAME_COLLAPSED_HEIGHT, FRAME_COLLAPSED_WIDTH, getFrameChildIds, isCanvasFolderNode, isFrameNode } from "@/lib/canvas/canvas-frame";
|
||||
import { buildCanvasMediaDownloadFileName } from "@/lib/canvas/canvas-media-download";
|
||||
import { writeCanvasNodePrompt } from "@/lib/canvas/canvas-node-prompt";
|
||||
import { applyBatchPrimaryImage, applyNodeConfigPatch } from "@/lib/canvas/canvas-project-domain";
|
||||
import { resetGenerationTaskMetadata } from "@/lib/canvas/canvas-project-generation";
|
||||
import { CONTENT_MODERATION_ERROR_CODE, isContentModerationError } from "@/lib/generation-error";
|
||||
@@ -162,16 +163,16 @@ export function useCanvasNodeEditor({
|
||||
const handleNodePromptChange = useCallback((nodeId: string, prompt: string) => {
|
||||
setNodes((current) => current.map((node) => {
|
||||
if (node.id !== nodeId) return node;
|
||||
const hasExistingContent = (node.type === CanvasNodeType.Text && Boolean(node.metadata?.content?.trim())) || (node.type === CanvasNodeType.Image && Boolean(node.metadata?.content));
|
||||
const previousPrompt = node.metadata?.composerContent ?? node.metadata?.prompt ?? "";
|
||||
const promptChanged = prompt !== previousPrompt;
|
||||
const moderationFailure = node.metadata?.generationErrorCode === CONTENT_MODERATION_ERROR_CODE || isContentModerationError(node.metadata?.errorDetails);
|
||||
const metadata = moderationFailure && prompt !== previousPrompt
|
||||
const metadata = moderationFailure && promptChanged
|
||||
? resetGenerationTaskMetadata(node.metadata, node.metadata?.content ? "success" : "idle")
|
||||
: node.metadata;
|
||||
const promptTemplateMetadata = prompt !== previousPrompt && metadata?.promptTemplateOperation
|
||||
? { promptTemplateOperation: undefined, promptTemplateVariables: undefined }
|
||||
: {};
|
||||
return { ...node, metadata: hasExistingContent ? { ...metadata, ...promptTemplateMetadata, composerContent: prompt } : { ...metadata, ...promptTemplateMetadata, prompt, composerContent: prompt } };
|
||||
return writeCanvasNodePrompt(node, prompt, {
|
||||
metadata,
|
||||
clearPromptTemplate: promptChanged && Boolean(metadata?.promptTemplateOperation),
|
||||
});
|
||||
}));
|
||||
}, [setNodes]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user