first commit
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import type {NodeConfig} from '../types'
|
||||
import {NodeTypes} from '../types'
|
||||
import {register as vueNodeRegister} from '@logicflow/vue-node-registry'
|
||||
import LogicFlow from '@logicflow/core'
|
||||
import {NodeConfigMap, NodeIconMap, NodeSettingMap, NodeTypeOrder} from '../const'
|
||||
import {BaseEdge} from "./base-node"
|
||||
import StartNode from './start-node'
|
||||
import EndNode from './end-node'
|
||||
import LLMNode from './llm-node'
|
||||
import ClassifierNode from './classifier-node'
|
||||
import SwitchNode from './switch-node'
|
||||
import KnowledgeNode from './knowledge-node'
|
||||
import CodeNode from './code-node'
|
||||
import SubflowNode from './subflow-node'
|
||||
import EnhanceJavaNode from './enhance-java-node'
|
||||
import HTTPNode from './http-node'
|
||||
import ReplyNode from './reply-node'
|
||||
|
||||
export const DefaultEdgeType = BaseEdge.type
|
||||
|
||||
/**
|
||||
* 注册所有的vue节点
|
||||
*/
|
||||
export function registerAllVueNode(lf: LogicFlow) {
|
||||
// 0. 清理
|
||||
NodeIconMap.clear();
|
||||
NodeSettingMap.clear();
|
||||
NodeConfigMap.clear();
|
||||
NodeTypeOrder.clear();
|
||||
// 1. 注册自定义边
|
||||
lf.register(BaseEdge)
|
||||
// 2. 注册自定义节点
|
||||
const register = getRegisterFn(lf);
|
||||
// 开始节点
|
||||
register(StartNode, true);
|
||||
|
||||
// LLM节点
|
||||
register(LLMNode);
|
||||
// 分类器节点
|
||||
register(ClassifierNode);
|
||||
// -------
|
||||
NodeTypeOrder.addDivider();
|
||||
// 知识库节点
|
||||
register(KnowledgeNode);
|
||||
// -------
|
||||
NodeTypeOrder.addDivider();
|
||||
// 条件分支节点
|
||||
register(SwitchNode);
|
||||
// 脚本节点
|
||||
register(CodeNode);
|
||||
// Java增强节点
|
||||
register(EnhanceJavaNode);
|
||||
// HTTP节点
|
||||
register(HTTPNode);
|
||||
// -------
|
||||
NodeTypeOrder.addDivider();
|
||||
// 子流程节点
|
||||
register(SubflowNode);
|
||||
// -------
|
||||
NodeTypeOrder.addDivider();
|
||||
// 直接回复节点
|
||||
register(ReplyNode);
|
||||
// 结束节点
|
||||
register(EndNode);
|
||||
}
|
||||
|
||||
function getRegisterFn(lf: LogicFlow) {
|
||||
return (vn: NodeConfig, noAdd = false) => {
|
||||
vn.docs = handleNodeDocs(vn);
|
||||
NodeConfigMap.set(vn.type, vn);
|
||||
vueNodeRegister(vn.lfNode, lf);
|
||||
// 添加图标
|
||||
if (vn.components.icon) {
|
||||
NodeIconMap.set(vn.type, vn.components.icon);
|
||||
}
|
||||
// 添加配置
|
||||
if (vn.components.setting) {
|
||||
NodeSettingMap.set(vn.type, vn.components.setting);
|
||||
}
|
||||
if (!noAdd) {
|
||||
NodeTypeOrder.add(vn.type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function handleNodeDocs(node: NodeConfig): string | undefined {
|
||||
const {docs} = node;
|
||||
if (!docs) {
|
||||
return;
|
||||
}
|
||||
if (typeof docs === 'string') {
|
||||
return docs;
|
||||
}
|
||||
// @ts-ignore
|
||||
if (!Array.isArray(docs) || docs.length === 0) {
|
||||
return;
|
||||
}
|
||||
if (docs.length > 1) {
|
||||
// TODO 判断是否是敲敲云环境
|
||||
return docs[1];
|
||||
}
|
||||
return docs[0];
|
||||
}
|
||||
|
||||
export {BaseNodeModel} from './base-node'
|
||||
|
||||
export {
|
||||
NodeTypes
|
||||
}
|
||||
Reference in New Issue
Block a user