first commit

This commit is contained in:
ye1023
2026-04-09 15:09:34 +08:00
commit d8e3a63df1
2246 changed files with 352109 additions and 0 deletions
+109
View File
@@ -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
}