Reuse shared workflow node registry
This commit is contained in:
@@ -4,7 +4,6 @@ import type { AIWorkflow } from '#/api/ai-platform/ai-platform';
|
|||||||
import {
|
import {
|
||||||
computed,
|
computed,
|
||||||
defineAsyncComponent,
|
defineAsyncComponent,
|
||||||
markRaw,
|
|
||||||
nextTick,
|
nextTick,
|
||||||
onMounted,
|
onMounted,
|
||||||
onUnmounted,
|
onUnmounted,
|
||||||
@@ -70,7 +69,10 @@ import RunDialog from './components/RunDialog.vue';
|
|||||||
import ContextMenu from './components/ContextMenu.vue';
|
import ContextMenu from './components/ContextMenu.vue';
|
||||||
import Panel from './components/Panel.vue';
|
import Panel from './components/Panel.vue';
|
||||||
import VersionHistoryPanel from './components/VersionHistoryPanel.vue';
|
import VersionHistoryPanel from './components/VersionHistoryPanel.vue';
|
||||||
import AddButtonEdge from './edges/AddButtonEdge.vue';
|
import {
|
||||||
|
workflowEdgeTypes,
|
||||||
|
workflowNodeTypes,
|
||||||
|
} from '../shared/workflowNodeTypes';
|
||||||
|
|
||||||
import '@vue-flow/minimap/dist/style.css';
|
import '@vue-flow/minimap/dist/style.css';
|
||||||
import '@vue-flow/core/dist/style.css';
|
import '@vue-flow/core/dist/style.css';
|
||||||
@@ -80,23 +82,6 @@ import '@vue-flow/controls/dist/style.css';
|
|||||||
const AiChatPanel = defineAsyncComponent(() =>
|
const AiChatPanel = defineAsyncComponent(() =>
|
||||||
import('#/components/ai-chat-panel/AiChatPanel.vue'),
|
import('#/components/ai-chat-panel/AiChatPanel.vue'),
|
||||||
);
|
);
|
||||||
const ChoiceNode = defineAsyncComponent(() => import('./nodes/ChoiceNode.vue'));
|
|
||||||
const CodeNode = defineAsyncComponent(() => import('./nodes/CodeNode.vue'));
|
|
||||||
const ConditionNode = defineAsyncComponent(() => import('./nodes/ConditionNode.vue'));
|
|
||||||
const ConfirmNode = defineAsyncComponent(() => import('./nodes/ConfirmNode.vue'));
|
|
||||||
const EndNode = defineAsyncComponent(() => import('./nodes/EndNode.vue'));
|
|
||||||
const HttpNode = defineAsyncComponent(() => import('./nodes/HttpNode.vue'));
|
|
||||||
const IntentNode = defineAsyncComponent(() => import('./nodes/IntentNode.vue'));
|
|
||||||
const KnowledgeRetrievalNode = defineAsyncComponent(() => import('./nodes/KnowledgeRetrievalNode.vue'));
|
|
||||||
const LLMNode = defineAsyncComponent(() => import('./nodes/LLMNode.vue'));
|
|
||||||
const LoopNode = defineAsyncComponent(() => import('./nodes/LoopNode.vue'));
|
|
||||||
const MergeNode = defineAsyncComponent(() => import('./nodes/MergeNode.vue'));
|
|
||||||
const MessageNode = defineAsyncComponent(() => import('./nodes/MessageNode.vue'));
|
|
||||||
const ParallelNode = defineAsyncComponent(() => import('./nodes/ParallelNode.vue'));
|
|
||||||
const QuestionNode = defineAsyncComponent(() => import('./nodes/QuestionNode.vue'));
|
|
||||||
const StartNode = defineAsyncComponent(() => import('./nodes/StartNode.vue'));
|
|
||||||
const SubflowNode = defineAsyncComponent(() => import('./nodes/SubflowNode.vue'));
|
|
||||||
const TemplateNode = defineAsyncComponent(() => import('./nodes/TemplateNode.vue'));
|
|
||||||
|
|
||||||
const appContextStore = useAppContextStore();
|
const appContextStore = useAppContextStore();
|
||||||
|
|
||||||
@@ -122,43 +107,8 @@ const contextMenu = ref({
|
|||||||
node: null as any,
|
node: null as any,
|
||||||
});
|
});
|
||||||
|
|
||||||
// 注册自定义节点
|
const nodeTypes = workflowNodeTypes;
|
||||||
const nodeTypes = {
|
const edgeTypes = workflowEdgeTypes;
|
||||||
start: markRaw(StartNode),
|
|
||||||
llm: markRaw(LLMNode),
|
|
||||||
end: markRaw(EndNode),
|
|
||||||
http: markRaw(HttpNode),
|
|
||||||
code: markRaw(CodeNode),
|
|
||||||
condition: markRaw(ConditionNode),
|
|
||||||
template: markRaw(TemplateNode),
|
|
||||||
parallel: markRaw(ParallelNode),
|
|
||||||
merge: markRaw(MergeNode),
|
|
||||||
// 对话流节点
|
|
||||||
question: markRaw(QuestionNode),
|
|
||||||
choice: markRaw(ChoiceNode),
|
|
||||||
message: markRaw(MessageNode),
|
|
||||||
confirm: markRaw(ConfirmNode),
|
|
||||||
// 意图识别节点
|
|
||||||
intent: markRaw(IntentNode),
|
|
||||||
// Snowflake Cortex 节点
|
|
||||||
// 循环节点
|
|
||||||
loop: markRaw(LoopNode),
|
|
||||||
// 表单节点
|
|
||||||
// 应用管理节点
|
|
||||||
// 仪表盘节点
|
|
||||||
// 系统总结节点
|
|
||||||
// 子流程节点
|
|
||||||
subflow: markRaw(SubflowNode),
|
|
||||||
// 表单数据节点
|
|
||||||
// Text-to-SQL 节点
|
|
||||||
// 知识库节点
|
|
||||||
knowledge_retrieval: markRaw(KnowledgeRetrievalNode),
|
|
||||||
};
|
|
||||||
|
|
||||||
// 注册自定义边类型
|
|
||||||
const edgeTypes = {
|
|
||||||
addButton: markRaw(AddButtonEdge),
|
|
||||||
};
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
addNodes,
|
addNodes,
|
||||||
|
|||||||
Reference in New Issue
Block a user