@huanban/rulego-editor-core 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/dist/api/AIManager.d.ts +12 -0
- package/dist/api/ApiProvider.d.ts +83 -0
- package/dist/api/DebugSocketClient.d.ts +39 -0
- package/dist/api/RuleChainAPI.d.ts +5 -1
- package/dist/api/StreamParser.d.ts +13 -0
- package/dist/api/index.d.ts +5 -1
- package/dist/api/response-utils.d.ts +28 -0
- package/dist/api/types.d.ts +67 -0
- package/dist/core/AutoLayout.d.ts +1 -1
- package/dist/core/ComponentRegistry.d.ts +11 -1
- package/dist/core/EditorCore.d.ts +23 -1
- package/dist/core/I18nManager.d.ts +18 -0
- package/dist/core/Optimizations.d.ts +16 -0
- package/dist/core/RuleChainChatManager.d.ts +53 -0
- package/dist/core/component-payload.d.ts +12 -0
- package/dist/core/index.d.ts +4 -2
- package/dist/core/runtime-limits.d.ts +35 -0
- package/dist/defaults/components.d.ts +4 -23
- package/dist/defaults/official-component-fallbacks.d.ts +12 -0
- package/dist/extensions/ClipboardExtension.d.ts +28 -0
- package/dist/extensions/KeyboardExtension.d.ts +18 -0
- package/dist/extensions/MenuExtension.d.ts +29 -0
- package/dist/iconRegistry.d.ts +2 -2
- package/dist/index.cjs.js +5739 -922
- package/dist/index.d.ts +11 -6
- package/dist/index.esm.js +74892 -43118
- package/dist/index.umd.js +5739 -922
- package/dist/models/BaseNodeModel.d.ts +38 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/nodes/AgentOrchestrationNode.d.ts +41 -0
- package/dist/nodes/GroupNode.d.ts +50 -0
- package/dist/nodes/HeadlessHtmlNode.d.ts +20 -0
- package/dist/nodes/SwitchNode.d.ts +27 -0
- package/dist/nodes/UnknownNodeModel.d.ts +24 -0
- package/dist/standalone/HuanbanRulegoEditor.d.ts +122 -12
- package/dist/standalone/ai-providers.d.ts +7 -0
- package/dist/standalone/auth-fetch.d.ts +6 -1
- package/dist/standalone/code-editor.d.ts +40 -4
- package/dist/standalone/custom-nodes.d.ts +4 -1
- package/dist/standalone/editor-context-menu.d.ts +3 -2
- package/dist/standalone/editor-debug-ws.d.ts +26 -6
- package/dist/standalone/editor-delete.d.ts +4 -0
- package/dist/standalone/editor-dialogs.d.ts +27 -4
- package/dist/standalone/editor-events.d.ts +2 -1
- package/dist/standalone/editor-property-drawers.d.ts +30 -2
- package/dist/standalone/editor-route-settings.d.ts +49 -0
- package/dist/standalone/editor-sidebar.d.ts +11 -0
- package/dist/standalone/editor-toast.d.ts +2 -0
- package/dist/standalone/editor-toolbar.d.ts +13 -1
- package/dist/standalone/group-node.d.ts +9 -1
- package/dist/standalone/index.d.ts +4 -2
- package/dist/standalone/layout-scheduler.d.ts +16 -0
- package/dist/standalone/lifecycle.d.ts +15 -0
- package/dist/standalone/models-dev-catalog.d.ts +53 -0
- package/dist/standalone/node-definitions.d.ts +25 -7
- package/dist/standalone/official-node-view-patches.d.ts +15 -0
- package/dist/standalone/security-utils.d.ts +45 -0
- package/dist/test/setup-dom.d.ts +3 -0
- package/dist/types/component.d.ts +10 -1
- package/dist/types/editor.d.ts +48 -2
- package/dist/types/events.d.ts +14 -0
- package/dist/types/rule-chain.d.ts +1 -1
- package/dist/utils/GraphUtils.d.ts +24 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/relation-utils.d.ts +13 -0
- package/dist/utils/textUtils.d.ts +13 -0
- package/package.json +15 -13
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file BaseNodeModel.ts
|
|
3
|
+
* @description 基础节点模型,所有自定义画布节点的基础类
|
|
4
|
+
*/
|
|
5
|
+
import { HtmlNodeModel } from '@logicflow/core';
|
|
6
|
+
/**
|
|
7
|
+
* @class BaseNodeModel
|
|
8
|
+
* @description 抽象化基础节点模型。
|
|
9
|
+
* 该模型承载了 RuleGo 算子的宽高度动态计算,
|
|
10
|
+
* 并利用 LogicFlow 原生的 rules 机制实现了严密的跨分组碰撞和连线校验逻辑。
|
|
11
|
+
*/
|
|
12
|
+
export declare class BaseNodeModel extends HtmlNodeModel {
|
|
13
|
+
/**
|
|
14
|
+
* 初始化并设置节点的基本属性
|
|
15
|
+
*
|
|
16
|
+
* - 动态计算算子文本所需的像素宽度
|
|
17
|
+
* - 设定最小兜底宽度,防止越界
|
|
18
|
+
*/
|
|
19
|
+
setAttributes(): void;
|
|
20
|
+
/**
|
|
21
|
+
* 覆写 LogicFlow 原生的源点连线规则 (从本节点拉出的线)
|
|
22
|
+
*
|
|
23
|
+
* - 校验端点配置
|
|
24
|
+
* - 禁止跨分组连线 (外部不可连接 Group 内,Group 内不可连出)
|
|
25
|
+
*
|
|
26
|
+
* @returns {Array} 规则数组
|
|
27
|
+
*/
|
|
28
|
+
getConnectedSourceRules(): import("@logicflow/core").Model.ConnectRule[];
|
|
29
|
+
/**
|
|
30
|
+
* 覆写 LogicFlow 原生的目标点连线规则 (连入本节点的线)
|
|
31
|
+
*
|
|
32
|
+
* 允许子类覆盖,如特定起始算子屏蔽被连入。
|
|
33
|
+
*
|
|
34
|
+
* @returns {Array} 规则数组
|
|
35
|
+
*/
|
|
36
|
+
getConnectedTargetRules(): import("@logicflow/core").Model.ConnectRule[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=BaseNodeModel.d.ts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file AgentOrchestrationNode.ts
|
|
3
|
+
* @description 智能体编排节点 (Agent Orchestration Node)
|
|
4
|
+
* 继承自基础节点模型,提供了专用于 AI Agent 的特殊排程逻辑和锚点定义。
|
|
5
|
+
*/
|
|
6
|
+
import { BaseNodeModel } from '../models/BaseNodeModel';
|
|
7
|
+
/**
|
|
8
|
+
* 智能体编排节点数据模型
|
|
9
|
+
* @class AgentOrchestrationNodeModel
|
|
10
|
+
* @extends BaseNodeModel
|
|
11
|
+
* @description
|
|
12
|
+
* 该模型针对幻伴核心的 AI 排程图引擎定制。
|
|
13
|
+
* 特别注意,除了标准的输入(左)和输出(右)锚点外,
|
|
14
|
+
* 它在底部额外定义了 4 个固定的特殊锚点 (llm, tools, memory, knowledge)。
|
|
15
|
+
* 这对于前端展示与底图追溯逻辑至关重要。
|
|
16
|
+
*/
|
|
17
|
+
export declare class AgentOrchestrationNodeModel extends BaseNodeModel {
|
|
18
|
+
/**
|
|
19
|
+
* 初始化节点属性
|
|
20
|
+
* 设定固定宽高,并注入特殊的锚点偏移位置 (anchorsOffset)。
|
|
21
|
+
*/
|
|
22
|
+
setAttributes(): void;
|
|
23
|
+
/**
|
|
24
|
+
* 覆盖默认锚点获取逻辑
|
|
25
|
+
* @returns 返回 6 个固定的锚点定义 (包含 4 个禁止添加连线的辅助配置锚点)
|
|
26
|
+
*/
|
|
27
|
+
getDefaultAnchor(): ({
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
type: string;
|
|
31
|
+
id: string;
|
|
32
|
+
edgeAddable?: undefined;
|
|
33
|
+
} | {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
type: string;
|
|
37
|
+
id: string;
|
|
38
|
+
edgeAddable: boolean;
|
|
39
|
+
})[];
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=AgentOrchestrationNode.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file GroupNode.ts
|
|
3
|
+
* @description 分组嵌套节点 (Group Node)
|
|
4
|
+
* 允许在逻辑画布上创建可视化分组,用于包含、折叠和展开一批相关的普通节点。
|
|
5
|
+
*/
|
|
6
|
+
import { BaseNodeModel } from '../models/BaseNodeModel';
|
|
7
|
+
/**
|
|
8
|
+
* 分组节点数据模型
|
|
9
|
+
* @class GroupNodeModel
|
|
10
|
+
* @extends BaseNodeModel
|
|
11
|
+
* @description
|
|
12
|
+
* 负责控制分组容器的状态机 (折叠/展开) 以及动态的边界盒计算。
|
|
13
|
+
* 关联子节点的唯一凭证是 `children` Set 集合。
|
|
14
|
+
*/
|
|
15
|
+
export declare class GroupNodeModel extends BaseNodeModel {
|
|
16
|
+
/** 标识该节点是一个组容器节点 */
|
|
17
|
+
isGroup: boolean;
|
|
18
|
+
/** 当前包含在组内的子节点 ID 集合 */
|
|
19
|
+
children: Set<string>;
|
|
20
|
+
/** 当前的折叠状态标志位 */
|
|
21
|
+
isFolded: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 初始化默认的超大宽高以作为初始分组盒
|
|
24
|
+
*/
|
|
25
|
+
setAttributes(): void;
|
|
26
|
+
/**
|
|
27
|
+
* 向分组中添加子节点
|
|
28
|
+
* @param {string} nodeId - 子节点 ID
|
|
29
|
+
*/
|
|
30
|
+
addChild(nodeId: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* 从分组中移除指定子节点
|
|
33
|
+
* @param {string} nodeId - 欲移除的子节点 ID
|
|
34
|
+
*/
|
|
35
|
+
removeChild(nodeId: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* 折叠当前分组,隐藏所有子节点并将宽度缩小
|
|
38
|
+
*/
|
|
39
|
+
fold(): void;
|
|
40
|
+
/**
|
|
41
|
+
* 展开当前分组,恢复显示所有子节点并重新计算外包围盒
|
|
42
|
+
*/
|
|
43
|
+
unfold(): void;
|
|
44
|
+
/**
|
|
45
|
+
* 基于内部子节点的物理位置,动态更新当前 Group 的宽高与边界
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
private updateBounds;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=GroupNode.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file HeadlessHtmlNode.ts
|
|
3
|
+
* @description 无头模式渲染基类
|
|
4
|
+
*/
|
|
5
|
+
import { BaseNodeModel } from '../models/BaseNodeModel';
|
|
6
|
+
/**
|
|
7
|
+
* @class HeadlessHtmlNodeModel
|
|
8
|
+
* @description 废弃传统 LogicFlow 内部 `createApp` 或 `ReactDOM.render` 的侵入式硬编码方案。
|
|
9
|
+
* 转为无头(Headless) 模式:
|
|
10
|
+
* 该基类在需要挂载 DOM 时,仅抛出带有节点实例与容器 `rootEl` 的事件。
|
|
11
|
+
* 外部 React/Vue 层捕获到该事件后,利用各自的 Portal / Teleport 技术完成最终的组件渲染。
|
|
12
|
+
*/
|
|
13
|
+
export declare class HeadlessHtmlNodeModel extends BaseNodeModel {
|
|
14
|
+
/**
|
|
15
|
+
* LogicFlow 提供的 HTML 挂载回调钩子
|
|
16
|
+
* @param rootEl - LogicFlow 提供给该节点用于承载 HTML 内容的原生容器节点
|
|
17
|
+
*/
|
|
18
|
+
setHtml(rootEl: HTMLElement): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=HeadlessHtmlNode.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file SwitchNode.ts
|
|
3
|
+
* @description 路由分支节点 (Switch Node)
|
|
4
|
+
* 继承自基础节点模型,该节点允许在边上挂载动态的条件规则,用于实现规则引擎中的 if/else 逻辑分支。
|
|
5
|
+
*/
|
|
6
|
+
import { BaseNodeModel } from '../models/BaseNodeModel';
|
|
7
|
+
/**
|
|
8
|
+
* 路由分支节点数据模型
|
|
9
|
+
* @class SwitchNodeModel
|
|
10
|
+
* @extends BaseNodeModel
|
|
11
|
+
* @description
|
|
12
|
+
* 负责分发和管控下游流程,其最大的特性是`出边必须包含条件表达式`。
|
|
13
|
+
* 当用户尝试从此节点连出一根边时,会自动触发 `getConnectedSourceRules` 的合法性校验,
|
|
14
|
+
* 引擎可通过拦截该校验,弹窗要求用户输入表达式。
|
|
15
|
+
*/
|
|
16
|
+
export declare class SwitchNodeModel extends BaseNodeModel {
|
|
17
|
+
/**
|
|
18
|
+
* 初始化节点默认宽高
|
|
19
|
+
*/
|
|
20
|
+
setAttributes(): void;
|
|
21
|
+
/**
|
|
22
|
+
* 获取作为起始节点(Source)时的连线规则
|
|
23
|
+
* @returns {Array} 连线校验规则列表
|
|
24
|
+
*/
|
|
25
|
+
getConnectedSourceRules(): import("@logicflow/core").Model.ConnectRule[];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=SwitchNode.d.ts.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file UnknownNodeModel.ts
|
|
3
|
+
* @description 兜底渲染节点模型 (降级处理)
|
|
4
|
+
*/
|
|
5
|
+
import { BaseNodeModel } from '../models/BaseNodeModel';
|
|
6
|
+
/**
|
|
7
|
+
* @class UnknownNodeModel
|
|
8
|
+
* @description 当后端传递的 `type` 在当前前端工程内找不到对应的 `ComponentDefinition` 时,
|
|
9
|
+
* 编辑器不应直接白屏崩溃,而是使用该未知节点进行红色虚线框的降级渲染。
|
|
10
|
+
* 极大地增强了对后端的后向兼容性 (Backward Compatibility)。
|
|
11
|
+
*/
|
|
12
|
+
export declare class UnknownNodeModel extends BaseNodeModel {
|
|
13
|
+
/**
|
|
14
|
+
* 覆写属性初始化
|
|
15
|
+
*/
|
|
16
|
+
setAttributes(): void;
|
|
17
|
+
/**
|
|
18
|
+
* 覆写获取节点样式
|
|
19
|
+
*
|
|
20
|
+
* - 使用红色虚线与淡红背景警告用户该算子处于未知/缺失状态
|
|
21
|
+
*/
|
|
22
|
+
getNodeStyle(): import("@logicflow/core").LogicFlow.CommonTheme;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=UnknownNodeModel.d.ts.map
|
|
@@ -31,10 +31,14 @@
|
|
|
31
31
|
import LogicFlow from '@logicflow/core';
|
|
32
32
|
import { EditorCore } from '../core/EditorCore';
|
|
33
33
|
import { I18nManager } from '../core/I18nManager';
|
|
34
|
-
import type { EditorOptions } from '../types/editor';
|
|
34
|
+
import type { AiProviderOption, EditorOptions } from '../types/editor';
|
|
35
35
|
import type { RuleChainData } from '../types/rule-chain';
|
|
36
|
-
import type { ComponentDefinition } from '../types/component';
|
|
36
|
+
import type { ComponentDefinition, RawComponentData } from '../types/component';
|
|
37
|
+
import type { SettingsDialogTab } from './editor-dialogs';
|
|
37
38
|
import type { AutoLayoutOptions } from '../core/AutoLayout';
|
|
39
|
+
export declare function normalizeComponentsRawPayload(data: unknown): unknown;
|
|
40
|
+
export declare function normalizeComponentsPayload(data: unknown): ComponentDefinition[];
|
|
41
|
+
export declare function applyComponentsRuntimePayloadOptions(opts: Record<string, any>, data: unknown): unknown;
|
|
38
42
|
/**
|
|
39
43
|
* HuanbanRulegoEditor 配置选项
|
|
40
44
|
*/
|
|
@@ -69,11 +73,35 @@ export interface HuanbanRulegoEditorOptions {
|
|
|
69
73
|
* return fetch(url, init)
|
|
70
74
|
* }
|
|
71
75
|
*/
|
|
72
|
-
customFetch?: (url: string, init
|
|
76
|
+
customFetch?: (url: string, init?: RequestInit) => Promise<Response>;
|
|
77
|
+
/** 允许携带敏感 headers 的 API origin 白名单;默认包含同源和 apiBase origin */
|
|
78
|
+
allowedApiOrigins?: string[];
|
|
79
|
+
/** 请求返回 401/403 时触发,宿主可在此刷新登录态 */
|
|
80
|
+
onAuthExpired?: (response: Response) => void;
|
|
81
|
+
/** 请求返回 401/403 时触发,宿主可在此清理本地 token */
|
|
82
|
+
clearToken?: () => void;
|
|
73
83
|
/** 初始规则链数据 */
|
|
74
84
|
data?: RuleChainData | null;
|
|
75
|
-
/**
|
|
76
|
-
components?:
|
|
85
|
+
/** 初始组件列表,支持数组或官方 /api/v1/components 分段返回 */
|
|
86
|
+
components?: RawComponentData;
|
|
87
|
+
/** AI 供应商预设;对齐官方 editorOptions.aiProviders */
|
|
88
|
+
aiProviders?: AiProviderOption[];
|
|
89
|
+
/** 运行面板 AI 对话发送到 /rules/{chainId}/v1/chat/completions 的模型名 */
|
|
90
|
+
runChatModel?: string;
|
|
91
|
+
/** 兼容旧集成命名;未设置 runChatModel 时作为运行面板 AI 对话默认模型 */
|
|
92
|
+
defaultChatModel?: string;
|
|
93
|
+
/** Embedding AI 供应商预设;供本地意图识别等 providerType=embedding 字段使用 */
|
|
94
|
+
aiEmbeddingProviders?: AiProviderOption[];
|
|
95
|
+
/** 官方 /components 原始载荷,保留 builtins、skillPath 等属性抽屉需要的附加协议 */
|
|
96
|
+
componentsPayload?: unknown;
|
|
97
|
+
/** 兼容历史命名:部分集成方使用 componentPayload 传入官方 /components 原始载荷 */
|
|
98
|
+
componentPayload?: unknown;
|
|
99
|
+
/** 内置 AI 工具列表;默认从 componentsPayload.builtins['ai/tools'].tools 提取 */
|
|
100
|
+
builtinTools?: any[];
|
|
101
|
+
/** 兼容旧版顶层 tools 字段 */
|
|
102
|
+
tools?: any[];
|
|
103
|
+
/** 后端返回的技能目录路径,用于 skill 内置工具提示 */
|
|
104
|
+
skillPath?: string;
|
|
77
105
|
/** LogicFlow 额外配置 (会与默认配置合并) */
|
|
78
106
|
lfOptions?: Record<string, unknown>;
|
|
79
107
|
/** LogicFlow 插件数组 (不传则自动从全局获取) */
|
|
@@ -84,21 +112,43 @@ export interface HuanbanRulegoEditorOptions {
|
|
|
84
112
|
showToolbar?: boolean;
|
|
85
113
|
/** 工具栏左侧标题 (不设置则不显示标题区域) */
|
|
86
114
|
toolbarTitle?: string;
|
|
115
|
+
/** 是否显示工具栏按钮文字,默认 false;设为 true 时显示图标 + 文字 */
|
|
116
|
+
showToolbarButtonLabels?: boolean;
|
|
117
|
+
/** 工具栏是否只显示图标,默认 true;显式 false 时可显示文字 */
|
|
118
|
+
toolbarIconOnly?: boolean;
|
|
87
119
|
/** 是否显示侧边栏, 默认 true */
|
|
88
120
|
showSidebar?: boolean;
|
|
89
121
|
/** 侧边栏宽度, 默认 220 */
|
|
90
122
|
sidebarWidth?: number;
|
|
91
123
|
/** 侧边栏是否默认收起, 默认 false */
|
|
92
124
|
sidebarCollapsed?: boolean;
|
|
93
|
-
/**
|
|
125
|
+
/** 是否在画布右上工具条显示「信息」按钮, 默认 true */
|
|
94
126
|
showInfoButton?: boolean;
|
|
127
|
+
/** 是否在画布右上工具条显示「AI 助手」按钮, 默认 true */
|
|
128
|
+
showAiChatButton?: boolean;
|
|
129
|
+
/** 是否在画布右上工具条显示「调试面板」按钮, 默认 true */
|
|
130
|
+
showDebugConsoleButton?: boolean;
|
|
131
|
+
/** 是否在画布右上工具条显示「清除调试高亮」按钮, 默认 true */
|
|
132
|
+
showClearDebugHighlightButton?: boolean;
|
|
133
|
+
/** 是否在画布右上工具条显示「框选」按钮, 默认 false */
|
|
134
|
+
showSelectionButton?: boolean;
|
|
135
|
+
/** 是否在顶部工具栏显示「设置」按钮, 默认 true */
|
|
136
|
+
showSettingsButton?: boolean;
|
|
95
137
|
/** 编辑器就绪 */
|
|
96
138
|
onReady?: (ctx: {
|
|
97
139
|
lf: LogicFlow;
|
|
98
140
|
core: EditorCore;
|
|
99
141
|
}) => void;
|
|
100
142
|
/** 保存回调 */
|
|
101
|
-
onSave?: (data: any) => void
|
|
143
|
+
onSave?: (data: any) => void | boolean | {
|
|
144
|
+
success?: boolean;
|
|
145
|
+
msg?: string;
|
|
146
|
+
message?: string;
|
|
147
|
+
} | Promise<void | boolean | {
|
|
148
|
+
success?: boolean;
|
|
149
|
+
msg?: string;
|
|
150
|
+
message?: string;
|
|
151
|
+
}>;
|
|
102
152
|
/** 节点点击 */
|
|
103
153
|
onNodeClick?: (data: unknown) => void;
|
|
104
154
|
/** 节点双击 */
|
|
@@ -113,6 +163,19 @@ export interface HuanbanRulegoEditorOptions {
|
|
|
113
163
|
* @param chainInfo 当前规则链的配置信息 (ruleChain 对象)
|
|
114
164
|
*/
|
|
115
165
|
onInfoClick?: (chainInfo: any) => void;
|
|
166
|
+
/** 劫持官方设置弹窗,供 Vue/React 宿主使用自定义组件化设置页 */
|
|
167
|
+
onSettingsClick?: (ctx: {
|
|
168
|
+
initialTab?: SettingsDialogTab;
|
|
169
|
+
apiBase?: string;
|
|
170
|
+
baseUrl?: string;
|
|
171
|
+
}) => void;
|
|
172
|
+
/** 内置设置弹窗保存系统设置后触发 */
|
|
173
|
+
onSettingsSubmit?: (data: {
|
|
174
|
+
apiBase: string;
|
|
175
|
+
baseUrl: string;
|
|
176
|
+
}) => void;
|
|
177
|
+
/** 内置设置弹窗点击登录时触发;未提供时仅提示宿主接入 */
|
|
178
|
+
onLoginClick?: () => void;
|
|
116
179
|
/** 是否在工具栏显示「导出」按钮, 默认 true (已有导出功能则显示增强弹窗) */
|
|
117
180
|
showExportDialog?: boolean;
|
|
118
181
|
/** 劫持导出行为, 调用方自行处理; 不设则使用内置弹窗 */
|
|
@@ -120,7 +183,7 @@ export interface HuanbanRulegoEditorOptions {
|
|
|
120
183
|
json: string;
|
|
121
184
|
imageDataUrl?: string;
|
|
122
185
|
}) => void;
|
|
123
|
-
/**
|
|
186
|
+
/** 是否在画布右上工具条显示「运行」按钮, 默认 true */
|
|
124
187
|
showRunButton?: boolean;
|
|
125
188
|
/** 劫持运行行为; 不设则使用内置运行 Drawer */
|
|
126
189
|
onRunClick?: (chainId: string) => void;
|
|
@@ -141,7 +204,15 @@ export interface HuanbanRulegoEditorOptions {
|
|
|
141
204
|
/** 是否在工具栏显示「部署/下架/重载」按钮, 默认 true */
|
|
142
205
|
showDeployButton?: boolean;
|
|
143
206
|
/** 劫持部署行为; 不设则使用内置 API 调用 */
|
|
144
|
-
onDeploy?: (chainId: string, action: 'deploy' | 'undeploy' | 'reload') => void
|
|
207
|
+
onDeploy?: (chainId: string, action: 'deploy' | 'undeploy' | 'reload') => void | boolean | {
|
|
208
|
+
success?: boolean;
|
|
209
|
+
msg?: string;
|
|
210
|
+
message?: string;
|
|
211
|
+
} | Promise<void | boolean | {
|
|
212
|
+
success?: boolean;
|
|
213
|
+
msg?: string;
|
|
214
|
+
message?: string;
|
|
215
|
+
}>;
|
|
145
216
|
/** 规则链列表数据 (初始传入, 用于弹窗列表展示) */
|
|
146
217
|
ruleItems?: any[];
|
|
147
218
|
/** 规则链 API 地址 (如 '/rules'), 用于远程加载规则链列表 */
|
|
@@ -157,6 +228,14 @@ export interface HuanbanRulegoEditorOptions {
|
|
|
157
228
|
/** 运行记录页面 URL (支持 {chainId} 占位符), 如 'http://xxx/ui/#/workflow/runs?chainId={chainId}' */
|
|
158
229
|
runHistoryUrl?: string;
|
|
159
230
|
}
|
|
231
|
+
export interface AIAssistantOpenOptions {
|
|
232
|
+
/** 打开后默认从此节点上下文发起对话/调试 */
|
|
233
|
+
fromNodeId?: string;
|
|
234
|
+
/** 仅使用指定节点上下文 */
|
|
235
|
+
onlyThisNode?: boolean;
|
|
236
|
+
/** 宿主或内部入口标识,例如 skills/components/debug */
|
|
237
|
+
section?: string;
|
|
238
|
+
}
|
|
160
239
|
/**
|
|
161
240
|
* 原生 JS 编辑器 — 一行代码启动完整的 RuleGo 规则链编辑器
|
|
162
241
|
*
|
|
@@ -191,6 +270,10 @@ export declare class HuanbanRulegoEditor {
|
|
|
191
270
|
private statusRunState;
|
|
192
271
|
/** 侧边栏是否折叠 */
|
|
193
272
|
private sidebarCollapsed;
|
|
273
|
+
/** 工具栏图标定义;画布浮动工具条需要在 LogicFlow 初始化后重建一次 */
|
|
274
|
+
private toolbarIcons;
|
|
275
|
+
private aiAssistantOpen;
|
|
276
|
+
private aiAssistantUnread;
|
|
194
277
|
/** 组件数据 @internal */
|
|
195
278
|
components: ComponentDefinition[];
|
|
196
279
|
/** 左侧分组展开状态 @internal */
|
|
@@ -205,12 +288,18 @@ export declare class HuanbanRulegoEditor {
|
|
|
205
288
|
private _cleanupShortcuts;
|
|
206
289
|
/** 右键菜单清理函数 @internal */
|
|
207
290
|
private _cleanupContextMenu;
|
|
291
|
+
/** LogicFlow/Core 事件桥接清理函数 @internal */
|
|
292
|
+
private _cleanupBridgeEvents;
|
|
293
|
+
/** 全屏状态监听清理函数 */
|
|
294
|
+
private _cleanupFullscreenState;
|
|
208
295
|
/** 小地图是否可见 @internal */
|
|
209
296
|
_miniMapVisible: boolean;
|
|
210
297
|
/** 内部剪贴板 (用于 Ctrl+C/V 复制粘贴节点) @internal */
|
|
211
298
|
_clipboard: any[];
|
|
212
299
|
/** 自动排版进行中标志 — edge:add 事件检查此标志,跳过弹窗 @internal */
|
|
213
300
|
_isAutoLayouting: boolean;
|
|
301
|
+
/** 数据加载后是否需要自动优化布局 @internal */
|
|
302
|
+
_pendingAutoOptimize: boolean;
|
|
214
303
|
constructor(options: HuanbanRulegoEditorOptions);
|
|
215
304
|
/**
|
|
216
305
|
* 翻译便捷方法 — 从当前语言包获取文本
|
|
@@ -257,6 +346,8 @@ export declare class HuanbanRulegoEditor {
|
|
|
257
346
|
*/
|
|
258
347
|
private init;
|
|
259
348
|
private createDOM;
|
|
349
|
+
/** 渲染画布右上浮动工具条;LogicFlow 初始化会清空画布容器,因此 init 后也会调用一次 */
|
|
350
|
+
private _renderCanvasToolbar;
|
|
260
351
|
/** 工具栏按钮点击事件 — 实现已提取到 editor-toolbar.ts */
|
|
261
352
|
private handleToolbarClick;
|
|
262
353
|
/**
|
|
@@ -319,9 +410,9 @@ export declare class HuanbanRulegoEditor {
|
|
|
319
410
|
updateStatusBar(): void;
|
|
320
411
|
/**
|
|
321
412
|
* 加载组件列表
|
|
322
|
-
* @param components
|
|
413
|
+
* @param components 组件定义数组或官方 /api/v1/components 分段返回
|
|
323
414
|
*/
|
|
324
|
-
loadComponents(components:
|
|
415
|
+
loadComponents(components: RawComponentData): void;
|
|
325
416
|
/**
|
|
326
417
|
* 加载规则链数据
|
|
327
418
|
* @param data RuleGo 规则链 JSON 数据
|
|
@@ -372,7 +463,26 @@ export declare class HuanbanRulegoEditor {
|
|
|
372
463
|
* 实现已提取到 editor-dialogs.ts
|
|
373
464
|
*/
|
|
374
465
|
/** @internal 子模块(editor-toolbar)使用 */
|
|
375
|
-
_showRunPanel(
|
|
466
|
+
_showRunPanel(options?: {
|
|
467
|
+
fromNodeId?: string;
|
|
468
|
+
onlyThisNode?: boolean;
|
|
469
|
+
initialMode?: 'form' | 'chat';
|
|
470
|
+
initialTab?: 'response' | 'resp_headers' | 'debug' | 'history' | 'integration';
|
|
471
|
+
section?: string;
|
|
472
|
+
}): void;
|
|
473
|
+
/** @internal 子模块(editor-toolbar)使用 */
|
|
474
|
+
_showSettingsDialog(initialTab?: SettingsDialogTab): void;
|
|
475
|
+
/** 公开打开官方设置弹窗;Vue/React 包可用该方法保持设置入口协议一致 */
|
|
476
|
+
openSettings(initialTab?: SettingsDialogTab): void;
|
|
477
|
+
/**
|
|
478
|
+
* 公开打开 AI 助手。
|
|
479
|
+
*
|
|
480
|
+
* 该方法是 core / Vue / React / UMD 的统一入口。框架组件、属性抽屉、
|
|
481
|
+
* 画布按钮和宿主系统都应调用这个方法,而不是直接依赖内部运行面板实现。
|
|
482
|
+
*/
|
|
483
|
+
openAiAssistant(options?: AIAssistantOpenOptions): void;
|
|
484
|
+
/** 关闭当前 AI 助手/运行面板 Drawer */
|
|
485
|
+
closeAiAssistant(): void;
|
|
376
486
|
/**
|
|
377
487
|
* 显示组件管理弹窗
|
|
378
488
|
* 实现已提取到 editor-dialogs.ts
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AiProviderOption } from '../types/editor';
|
|
2
|
+
export type { AiProviderOption } from '../types/editor';
|
|
3
|
+
export declare const DEFAULT_AI_PROVIDERS: AiProviderOption[];
|
|
4
|
+
export declare function getGlobalProviderList(name: 'rulegoAiProviders' | 'rulegoAiEmbeddingProviders'): AiProviderOption[];
|
|
5
|
+
export declare function getAiProviders(providers?: AiProviderOption[]): AiProviderOption[];
|
|
6
|
+
export declare function getAiEmbeddingProviders(providers?: AiProviderOption[]): AiProviderOption[];
|
|
7
|
+
//# sourceMappingURL=ai-providers.d.ts.map
|
|
@@ -25,6 +25,11 @@
|
|
|
25
25
|
* @returns 合并后的 headers 对象
|
|
26
26
|
*/
|
|
27
27
|
export declare function getAuthHeaders(editor: any): Record<string, string>;
|
|
28
|
+
export interface AuthFetchOptions {
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
allowedOrigins?: string[];
|
|
31
|
+
sensitiveHeaderNames?: string[];
|
|
32
|
+
}
|
|
28
33
|
/**
|
|
29
34
|
* 带认证的 fetch 封装
|
|
30
35
|
*
|
|
@@ -39,5 +44,5 @@ export declare function getAuthHeaders(editor: any): Record<string, string>;
|
|
|
39
44
|
* @param editor - HuanbanRulegoEditor 实例
|
|
40
45
|
* @returns fetch Response
|
|
41
46
|
*/
|
|
42
|
-
export declare function authFetch(url: string, init: RequestInit | undefined, editor: any): Promise<Response>;
|
|
47
|
+
export declare function authFetch(url: string, init: RequestInit | undefined, editor: any, options?: AuthFetchOptions): Promise<Response>;
|
|
43
48
|
//# sourceMappingURL=auth-fetch.d.ts.map
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
*
|
|
5
5
|
* 功能:
|
|
6
6
|
* - 创建 CodeMirror 6 编辑器实例 (替代 textarea)
|
|
7
|
-
* - 支持 JavaScript / JSON / Lua
|
|
7
|
+
* - 支持 JavaScript / JSON / Lua / Plain 四种语言模式
|
|
8
8
|
* - 内置暗色主题 (oneDark)、行号、代码折叠、自动补全
|
|
9
|
-
* - 自动语法校验 (JS: linter, JSON: linter, Lua:
|
|
9
|
+
* - 自动语法校验 (JS: linter, JSON: linter, Lua: 基础括号匹配, Plain: 不阻断)
|
|
10
10
|
* - 获取/设置编辑器内容
|
|
11
11
|
* - 统一销毁管理,避免内存泄漏
|
|
12
12
|
*
|
|
@@ -17,13 +17,22 @@
|
|
|
17
17
|
* @output CodeEditorInstance { getValue, setValue, destroy, view }
|
|
18
18
|
*/
|
|
19
19
|
import { EditorView } from '@codemirror/view';
|
|
20
|
+
import { type CompletionSource } from '@codemirror/autocomplete';
|
|
20
21
|
/**
|
|
21
22
|
* 代码编辑器语言类型
|
|
22
23
|
* - js: JavaScript 脚本
|
|
23
24
|
* - json: JSON 数据
|
|
24
25
|
* - lua: Lua 脚本 (仅基础高亮, 无内置 linter)
|
|
26
|
+
* - plain: SQL/表达式/未知代码类型,统一编辑器外观但不做语法阻断
|
|
25
27
|
*/
|
|
26
|
-
export type CodeEditorLang = 'js' | 'json' | 'lua';
|
|
28
|
+
export type CodeEditorLang = 'js' | 'json' | 'lua' | 'plain';
|
|
29
|
+
export type CodeEditorCompletionMode = 'js' | 'sql' | 'plain';
|
|
30
|
+
export interface CodeEditorCompletionItem {
|
|
31
|
+
label?: string;
|
|
32
|
+
value?: string;
|
|
33
|
+
detail?: string;
|
|
34
|
+
type?: string;
|
|
35
|
+
}
|
|
27
36
|
/**
|
|
28
37
|
* 创建代码编辑器的配置选项
|
|
29
38
|
*/
|
|
@@ -32,7 +41,7 @@ export interface CodeEditorOptions {
|
|
|
32
41
|
parent: HTMLElement;
|
|
33
42
|
/** 初始代码内容 */
|
|
34
43
|
value?: string;
|
|
35
|
-
/** 语言类型: js / json / lua */
|
|
44
|
+
/** 语言类型: js / json / lua / plain */
|
|
36
45
|
lang?: CodeEditorLang;
|
|
37
46
|
/** 是否只读 */
|
|
38
47
|
readOnly?: boolean;
|
|
@@ -46,6 +55,16 @@ export interface CodeEditorOptions {
|
|
|
46
55
|
maxHeight?: number;
|
|
47
56
|
/** Tab 缩进空格数, 默认 2 */
|
|
48
57
|
tabSize?: number;
|
|
58
|
+
/** RuleGo 官方补全模式: js / sql / plain */
|
|
59
|
+
completionMode?: CodeEditorCompletionMode;
|
|
60
|
+
/** 当前规则链 additionalInfo.inputSchema 解析出的 msg.* 字段 */
|
|
61
|
+
schemaCompletions?: CodeEditorCompletionItem[];
|
|
62
|
+
/** LogicFlow 全局变量,用于 ${global.*} 补全 */
|
|
63
|
+
globalVars?: Array<string | {
|
|
64
|
+
label?: string;
|
|
65
|
+
value?: string;
|
|
66
|
+
name?: string;
|
|
67
|
+
}>;
|
|
49
68
|
}
|
|
50
69
|
/**
|
|
51
70
|
* 代码编辑器实例 — 对外提供的操作接口
|
|
@@ -60,6 +79,23 @@ export interface CodeEditorInstance {
|
|
|
60
79
|
/** CodeMirror EditorView 实例 (高级用法) */
|
|
61
80
|
view: EditorView;
|
|
62
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* 创建 RuleGo 官方补全源。
|
|
84
|
+
* 覆盖官方 PropertyCodeEditor.vue 中的触发协议:
|
|
85
|
+
* - `${global.` → lf.globalVars
|
|
86
|
+
* - `${` → `global.` 前缀
|
|
87
|
+
* - `msg.` → ruleChain.additionalInfo.inputSchema.properties
|
|
88
|
+
* - SQL 模式 → StreamSQL 函数/关键字
|
|
89
|
+
*/
|
|
90
|
+
export declare function createRulegoCompletionSource(options?: {
|
|
91
|
+
mode?: CodeEditorCompletionMode;
|
|
92
|
+
schemaCompletions?: CodeEditorCompletionItem[];
|
|
93
|
+
globalVars?: Array<string | {
|
|
94
|
+
label?: string;
|
|
95
|
+
value?: string;
|
|
96
|
+
name?: string;
|
|
97
|
+
}>;
|
|
98
|
+
}): CompletionSource;
|
|
63
99
|
/**
|
|
64
100
|
* 创建 CodeMirror 6 代码编辑器实例
|
|
65
101
|
*
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* - BaseNode (RedNode / RedNodeModel): 基础矩形节点
|
|
8
8
|
* - SimpleNode: 带图标的标准节点
|
|
9
9
|
* - StartNode: 起始节点 (不可移动, 只有右锚点)
|
|
10
|
+
* - EndpointNode: 端点节点 (只有右锚点)
|
|
10
11
|
* - ChainNode: 子规则链节点 (只有左锚点)
|
|
12
|
+
* - AgentNode / AgentOrchestrationNode: AI 智能体节点
|
|
11
13
|
* - FlowLink: 贝塞尔曲线连线
|
|
12
14
|
*
|
|
13
15
|
* 所有节点采用 Node-RED 风格:
|
|
@@ -18,9 +20,10 @@
|
|
|
18
20
|
* registerCustomElements(lf)
|
|
19
21
|
*/
|
|
20
22
|
import LogicFlow from '@logicflow/core';
|
|
23
|
+
export type CustomNodeTranslator = (key: string, fallback: string) => string;
|
|
21
24
|
/**
|
|
22
25
|
* 注册所有自定义图元到 LogicFlow 实例
|
|
23
26
|
* @param lf - LogicFlow 画布实例
|
|
24
27
|
*/
|
|
25
|
-
export declare function registerCustomElements(lf: LogicFlow): void;
|
|
28
|
+
export declare function registerCustomElements(lf: LogicFlow, translate?: CustomNodeTranslator): void;
|
|
26
29
|
//# sourceMappingURL=custom-nodes.d.ts.map
|
|
@@ -35,6 +35,9 @@ export interface DebugWsCallbacks {
|
|
|
35
35
|
/** 连接状态变化时调用 */
|
|
36
36
|
onStatus: (status: WsStatus) => void;
|
|
37
37
|
}
|
|
38
|
+
export interface LiveTerminalRendererOptions {
|
|
39
|
+
getNodeName?: (nodeId: string) => string;
|
|
40
|
+
}
|
|
38
41
|
/**
|
|
39
42
|
* 调试日志 WebSocket 管理器
|
|
40
43
|
*
|
|
@@ -133,15 +136,23 @@ export declare class LiveTerminalRenderer {
|
|
|
133
136
|
private container;
|
|
134
137
|
/** 日志缓冲区 */
|
|
135
138
|
private buffer;
|
|
139
|
+
/** IN 日志时间索引,用于按官方 chainId + msgId + nodeId 计算 OUT 耗时 */
|
|
140
|
+
private inTsByMsgNode;
|
|
136
141
|
/** 最大缓冲条数 */
|
|
137
142
|
private maxLines;
|
|
138
|
-
/**
|
|
139
|
-
private
|
|
143
|
+
/** 渲染选项 */
|
|
144
|
+
private options;
|
|
145
|
+
/** 已安排但尚未执行的终端渲染帧 */
|
|
146
|
+
private pendingRenderFrame;
|
|
147
|
+
/** requestAnimationFrame 不可用时的降级渲染定时器 */
|
|
148
|
+
private pendingRenderTimer;
|
|
149
|
+
/** 是否已经销毁,销毁后不再追加或渲染 */
|
|
150
|
+
private destroyed;
|
|
140
151
|
/**
|
|
141
152
|
* @param container - 终端面板元素
|
|
142
|
-
* @param
|
|
153
|
+
* @param _escapeHtml - 兼容旧构造签名;当前渲染使用 textContent,不再需要 HTML 字符串转义
|
|
143
154
|
*/
|
|
144
|
-
constructor(container: HTMLElement,
|
|
155
|
+
constructor(container: HTMLElement, _escapeHtml: (text: string) => string, options?: LiveTerminalRendererOptions);
|
|
145
156
|
/**
|
|
146
157
|
* 追加一条日志消息
|
|
147
158
|
* @param item - 日志条目对象
|
|
@@ -151,6 +162,10 @@ export declare class LiveTerminalRenderer {
|
|
|
151
162
|
* 清空所有日志
|
|
152
163
|
*/
|
|
153
164
|
clear(): void;
|
|
165
|
+
/**
|
|
166
|
+
* 销毁渲染器,释放待渲染帧、DOM 内容和内部索引。
|
|
167
|
+
*/
|
|
168
|
+
destroy(): void;
|
|
154
169
|
/**
|
|
155
170
|
* 获取当前日志条数
|
|
156
171
|
*/
|
|
@@ -160,11 +175,16 @@ export declare class LiveTerminalRenderer {
|
|
|
160
175
|
*/
|
|
161
176
|
private render;
|
|
162
177
|
/**
|
|
163
|
-
*
|
|
178
|
+
* 格式化单条日志为终端结构化文本
|
|
164
179
|
*
|
|
165
180
|
* @param item - 日志条目
|
|
166
|
-
* @returns
|
|
181
|
+
* @returns 终端行数据
|
|
167
182
|
*/
|
|
168
183
|
private formatLogLine;
|
|
184
|
+
/**
|
|
185
|
+
* 高频 WebSocket 日志下按帧合并渲染,避免每条消息全量 replaceChildren。
|
|
186
|
+
*/
|
|
187
|
+
private scheduleRender;
|
|
188
|
+
private cancelScheduledRender;
|
|
169
189
|
}
|
|
170
190
|
//# sourceMappingURL=editor-debug-ws.d.ts.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function canDeleteNodesWithInputGuard(editor: any, selectedNodes: any[]): boolean;
|
|
2
|
+
export declare function deleteGraphElementsWithInputGuard(editor: any, nodes?: any[], edges?: any[]): boolean;
|
|
3
|
+
export declare function deleteSelectedElementsWithInputGuard(editor: any): boolean;
|
|
4
|
+
//# sourceMappingURL=editor-delete.d.ts.map
|