fix(*): 创作工作台 - 修复 Agent、资源引用、附件交互与 Agnes 视频协议
This commit is contained in:
1 parent
0e33cc805e
commit
4675cf4c99
33 files changed
+1218
-239
No files matched your search
@@ -21,23 +21,21 @@ export type CanvasResourceReference = {
|
||||
skill?: Skill;
|
||||
assetId?: string;
|
||||
category?: AssetCategory;
|
||||
mentionToken?: string;
|
||||
};
|
||||
|
||||
export function canvasResourceMentionToken(reference: CanvasResourceReference) {
|
||||
if (reference.mentionToken) return reference.mentionToken;
|
||||
if (reference.kind === "skill" && reference.skill?.skill_id) return `@[skill:${reference.skill.skill_id}]`;
|
||||
if (reference.assetId) return `@[asset:${reference.assetId}]`;
|
||||
return `@[node:${reference.nodeId}]`;
|
||||
return `@${reference.label}`;
|
||||
}
|
||||
|
||||
export function removeCanvasResourceMention(prompt: string, reference: CanvasResourceReference) {
|
||||
const token = canvasResourceMentionToken(reference);
|
||||
if (!token || !prompt.includes(token)) return prompt;
|
||||
return prompt
|
||||
.split(token)
|
||||
.join("")
|
||||
.replace(/[ \t]{2,}/g, " ")
|
||||
.replace(/\n{3,}/g, "\n\n")
|
||||
.trim();
|
||||
export function normalizeCanvasNodeMentionTokens(prompt: string, references: CanvasResourceReference[]) {
|
||||
return references.reduce((value, reference) => {
|
||||
if (!reference.nodeId || reference.assetId || reference.kind === "skill") return value;
|
||||
return value.split(`@[node:${reference.nodeId}]`).join(`@${reference.label}`);
|
||||
}, prompt);
|
||||
}
|
||||
|
||||
export function buildAssetMentionReferences(assets: Asset[]): CanvasResourceReference[] {
|
||||
@@ -73,6 +71,10 @@ export function buildNodeMentionReferences(node: CanvasNodeData, nodes: CanvasNo
|
||||
return labelResourceNodes(getMentionResourceNodes(node.id, nodes, connections), true);
|
||||
}
|
||||
|
||||
export function buildOrderedCanvasResourceReferences(nodes: CanvasNodeData[], active = true) {
|
||||
return labelResourceNodes(nodes.filter(isResourceNode), active);
|
||||
}
|
||||
|
||||
export function getMentionResourceNodes(nodeId: string, nodes: CanvasNodeData[], connections: CanvasConnection[]) {
|
||||
const configInputs = getConnectedConfigResourceNodes(nodeId, nodes, connections);
|
||||
if (configInputs.length) return configInputs;
|
||||
@@ -138,7 +140,7 @@ function labelResourceNodes(nodes: CanvasNodeData[], active: boolean) {
|
||||
kind,
|
||||
label,
|
||||
title: node.title || label,
|
||||
previewUrl: node.metadata?.workflowKind === "character" ? node.metadata.characterCoverUrl : node.type === CanvasNodeType.Drawing ? node.metadata?.drawingPreviewUrl : node.metadata?.content,
|
||||
previewUrl: node.metadata?.workflowKind === "character" ? node.metadata.characterCoverUrl : node.type === CanvasNodeType.Drawing ? node.metadata?.drawingPreviewUrl : node.metadata?.previewContent || node.metadata?.content,
|
||||
storageKey: node.metadata?.storageKey,
|
||||
text: node.metadata?.workflowKind === "character" ? node.metadata.characterPrompt : node.type === CanvasNodeType.Text ? node.metadata?.content || node.metadata?.prompt : node.type === CanvasNodeType.Skill ? skillResourceText(node) : undefined,
|
||||
active,
|
||||
|
||||
Reference in new issue
Block a user