feat(canvas): 云端 Agent - 完成策略分层、节点能力注册与可解释审批改造
This commit is contained in:
1 parent
9727656b2b
commit
dca01886f9
65 files changed
+5347
-918
No files matched your search
@@ -0,0 +1,37 @@
|
||||
import { getNodeResourceKind } from "@/lib/canvas/node-registry";
|
||||
import type { CanvasNodeData, CanvasNodeMetadata } from "@/types/canvas";
|
||||
|
||||
export type WriteCanvasNodePromptOptions = {
|
||||
metadata?: CanvasNodeMetadata;
|
||||
clearPromptTemplate?: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* A generated or authored result is committed once the node registry exposes it
|
||||
* as a resource. Text-like resources additionally require persisted content so
|
||||
* a draft prompt alone is not mistaken for a submitted result.
|
||||
*/
|
||||
export function canvasNodeHasCommittedContent(node: CanvasNodeData) {
|
||||
const resourceKind = getNodeResourceKind(node);
|
||||
if (resourceKind === "text") return Boolean(node.metadata?.content?.trim());
|
||||
return resourceKind !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the editable prompt draft without replacing the prompt snapshot that
|
||||
* produced an existing result. Callers may provide sanitized task metadata,
|
||||
* but prompt ownership remains centralized here.
|
||||
*/
|
||||
export function writeCanvasNodePrompt(node: CanvasNodeData, prompt: string, options: WriteCanvasNodePromptOptions = {}) {
|
||||
const metadata = options.metadata ?? node.metadata;
|
||||
const clearPromptTemplate = options.clearPromptTemplate ?? Boolean(metadata?.promptTemplateOperation);
|
||||
const promptTemplateMetadata = clearPromptTemplate
|
||||
? { promptTemplateOperation: undefined, promptTemplateVariables: undefined }
|
||||
: {};
|
||||
return {
|
||||
...node,
|
||||
metadata: canvasNodeHasCommittedContent(node)
|
||||
? { ...metadata, ...promptTemplateMetadata, composerContent: prompt }
|
||||
: { ...metadata, ...promptTemplateMetadata, prompt, composerContent: prompt },
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user