@huanban/rulego-editor-core 1.3.18 → 1.4.0

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.
Files changed (225) hide show
  1. package/README.md +153 -2
  2. package/assets/images/discovery-dark.svg +1 -0
  3. package/assets/images/discovery.svg +1 -0
  4. package/assets/images/nacos-dark.svg +1 -0
  5. package/assets/images/nacos.svg +1 -0
  6. package/assets/theme-icons/ant-blue/discovery-dark.svg +1 -0
  7. package/assets/theme-icons/ant-blue/discovery.svg +1 -0
  8. package/assets/theme-icons/ant-blue/nacos-dark.svg +1 -0
  9. package/assets/theme-icons/ant-blue/nacos.svg +1 -0
  10. package/assets/theme-icons/apple/discovery-dark.svg +1 -0
  11. package/assets/theme-icons/apple/discovery.svg +1 -0
  12. package/assets/theme-icons/apple/nacos-dark.svg +1 -0
  13. package/assets/theme-icons/apple/nacos.svg +1 -0
  14. package/assets/theme-icons/colorful/discovery-dark.svg +1 -0
  15. package/assets/theme-icons/colorful/discovery.svg +1 -0
  16. package/assets/theme-icons/colorful/nacos-dark.svg +1 -0
  17. package/assets/theme-icons/colorful/nacos.svg +1 -0
  18. package/assets/theme-icons/dark/discovery-dark.svg +1 -0
  19. package/assets/theme-icons/dark/discovery.svg +1 -0
  20. package/assets/theme-icons/dark/nacos-dark.svg +1 -0
  21. package/assets/theme-icons/dark/nacos.svg +1 -0
  22. package/assets/theme-icons/default/discovery-dark.svg +1 -0
  23. package/assets/theme-icons/default/discovery.svg +1 -0
  24. package/assets/theme-icons/default/nacos-dark.svg +1 -0
  25. package/assets/theme-icons/default/nacos.svg +1 -0
  26. package/assets/theme-icons/elegant/discovery-dark.svg +1 -0
  27. package/assets/theme-icons/elegant/discovery.svg +1 -0
  28. package/assets/theme-icons/elegant/nacos-dark.svg +1 -0
  29. package/assets/theme-icons/elegant/nacos.svg +1 -0
  30. package/assets/theme-icons/github/discovery-dark.svg +1 -0
  31. package/assets/theme-icons/github/discovery.svg +1 -0
  32. package/assets/theme-icons/github/nacos-dark.svg +1 -0
  33. package/assets/theme-icons/github/nacos.svg +1 -0
  34. package/assets/theme-icons/icon-theme-manifest.json +30 -14
  35. package/assets/theme-icons/icon-theme-overview.svg +1599 -1287
  36. package/assets/theme-icons/material/discovery-dark.svg +1 -0
  37. package/assets/theme-icons/material/discovery.svg +1 -0
  38. package/assets/theme-icons/material/nacos-dark.svg +1 -0
  39. package/assets/theme-icons/material/nacos.svg +1 -0
  40. package/assets/theme-icons/modern/discovery-dark.svg +1 -0
  41. package/assets/theme-icons/modern/discovery.svg +1 -0
  42. package/assets/theme-icons/modern/nacos-dark.svg +1 -0
  43. package/assets/theme-icons/modern/nacos.svg +1 -0
  44. package/assets/theme-icons/nature/discovery-dark.svg +1 -0
  45. package/assets/theme-icons/nature/discovery.svg +1 -0
  46. package/assets/theme-icons/nature/nacos-dark.svg +1 -0
  47. package/assets/theme-icons/nature/nacos.svg +1 -0
  48. package/assets/theme-icons/tailwind/discovery-dark.svg +1 -0
  49. package/assets/theme-icons/tailwind/discovery.svg +1 -0
  50. package/assets/theme-icons/tailwind/nacos-dark.svg +1 -0
  51. package/assets/theme-icons/tailwind/nacos.svg +1 -0
  52. package/assets/theme-icons/tech/discovery-dark.svg +1 -0
  53. package/assets/theme-icons/tech/discovery.svg +1 -0
  54. package/assets/theme-icons/tech/nacos-dark.svg +1 -0
  55. package/assets/theme-icons/tech/nacos.svg +1 -0
  56. package/assets/theme-icons/vscode/discovery-dark.svg +1 -0
  57. package/assets/theme-icons/vscode/discovery.svg +1 -0
  58. package/assets/theme-icons/vscode/nacos-dark.svg +1 -0
  59. package/assets/theme-icons/vscode/nacos.svg +1 -0
  60. package/dist/ai/copilot-markdown.d.ts +40 -0
  61. package/dist/ai/copilot-transport.d.ts +39 -0
  62. package/dist/api/AIManager.d.ts +5 -4
  63. package/dist/api/ApiProvider.d.ts +17 -69
  64. package/dist/api/ComponentCatalogCache.d.ts +27 -0
  65. package/dist/api/DebugSocketClient.d.ts +18 -25
  66. package/dist/api/RuleChainAPI.d.ts +24 -145
  67. package/dist/api/StreamParser.d.ts +0 -10
  68. package/dist/api/index.d.ts +4 -14
  69. package/dist/api/response-utils.d.ts +4 -22
  70. package/dist/api/types.d.ts +44 -179
  71. package/dist/chunks/editor-core-code-editor-CRki2wA_.js +512 -0
  72. package/dist/chunks/editor-core-default-components-BjF65lar.js +9448 -0
  73. package/dist/chunks/editor-core-dialogs-CkFLaC8Q.js +17176 -0
  74. package/dist/chunks/editor-core-icons-BqeFofNA.js +668 -0
  75. package/dist/chunks/editor-core-json-diff-RHsPeX-w.js +199 -0
  76. package/dist/chunks/editor-core-locales-i6o28vm2.js +4159 -0
  77. package/dist/chunks/editor-core-node-patches-BJTT3TuX.js +8060 -0
  78. package/dist/chunks/editor-core-node-views-BOaPVdmN.js +1288 -0
  79. package/dist/chunks/editor-core-property-drawers-lLsBIoCa.js +8035 -0
  80. package/dist/chunks/editor-core-standalone-CHXk3ukc.js +11270 -0
  81. package/dist/chunks/editor-core-styles-C1TbLgCK.js +8841 -0
  82. package/dist/chunks/vendor-logicflow-core-runtime-Cp6IBEjB.js +217 -0
  83. package/dist/chunks/vendor-logicflow-shared-C7YynLDn.js +4 -0
  84. package/dist/chunks/xlsx-BopDBbWb.js +24176 -0
  85. package/dist/core/ActionRegistry.d.ts +47 -0
  86. package/dist/core/AutoLayout.d.ts +1 -48
  87. package/dist/core/ComponentDocService.d.ts +28 -0
  88. package/dist/core/ComponentRegistry.d.ts +1 -125
  89. package/dist/core/DataAdapter.d.ts +4 -89
  90. package/dist/core/DiagnosticService.d.ts +15 -0
  91. package/dist/core/EditorCore.d.ts +22 -212
  92. package/dist/core/EditorWorkspace.d.ts +111 -0
  93. package/dist/core/EventBus.d.ts +0 -86
  94. package/dist/core/ExplorerTreeStore.d.ts +43 -0
  95. package/dist/core/FieldCapabilityRegistry.d.ts +16 -0
  96. package/dist/core/FieldChangeRegistry.d.ts +48 -0
  97. package/dist/core/HistoryManager.d.ts +0 -123
  98. package/dist/core/I18nManager.d.ts +0 -120
  99. package/dist/core/Optimizations.d.ts +0 -14
  100. package/dist/core/OptionSourceRegistry.d.ts +38 -0
  101. package/dist/core/RuleChainChatManager.d.ts +0 -37
  102. package/dist/core/RuleChainValidator.d.ts +0 -79
  103. package/dist/core/StateStore.d.ts +4 -140
  104. package/dist/core/ThemeManager.d.ts +0 -141
  105. package/dist/core/ValidationEngine.d.ts +0 -103
  106. package/dist/core/component-palette.d.ts +20 -0
  107. package/dist/core/component-payload.d.ts +0 -9
  108. package/dist/core/connection-status.d.ts +77 -0
  109. package/dist/core/context-menu-position.d.ts +27 -0
  110. package/dist/core/cron-schedule.d.ts +85 -0
  111. package/dist/core/debug-panel.d.ts +6 -0
  112. package/dist/core/editor-capabilities.d.ts +95 -0
  113. package/dist/core/editor-dock.d.ts +100 -0
  114. package/dist/core/editor-panel.d.ts +68 -0
  115. package/dist/core/explorer-tree.d.ts +27 -0
  116. package/dist/core/field-protocol.d.ts +32 -0
  117. package/dist/core/foundation-tokens.d.ts +38 -0
  118. package/dist/core/graph-operations.d.ts +34 -0
  119. package/dist/core/hover-tools.d.ts +26 -0
  120. package/dist/core/index.d.ts +68 -16
  121. package/dist/core/infer-run-input.d.ts +11 -0
  122. package/dist/core/key-value-editor.d.ts +6 -0
  123. package/dist/core/overlay-layers.d.ts +28 -0
  124. package/dist/core/recent-components.d.ts +51 -0
  125. package/dist/core/run-guard.d.ts +7 -0
  126. package/dist/core/runtime-field-dictionary.d.ts +68 -0
  127. package/dist/core/runtime-limits.d.ts +0 -5
  128. package/dist/core/save-conflict.d.ts +4 -0
  129. package/dist/core/server-status.d.ts +34 -0
  130. package/dist/core/simple-array.d.ts +4 -0
  131. package/dist/core/table-protocol.d.ts +36 -0
  132. package/dist/core/table-spreadsheet.d.ts +3 -0
  133. package/dist/core/test-cases.d.ts +54 -0
  134. package/dist/core/toolbar-icons.d.ts +4 -0
  135. package/dist/core/topology-rules.d.ts +17 -0
  136. package/dist/core/virtual-window.d.ts +20 -0
  137. package/dist/core/workspace-tab-actions.d.ts +13 -0
  138. package/dist/defaults/components.d.ts +0 -9
  139. package/dist/defaults/index.d.ts +0 -15
  140. package/dist/defaults/locale-en-US.d.ts +0 -24
  141. package/dist/defaults/locale-zh-CN.d.ts +0 -39
  142. package/dist/defaults/official-component-fallbacks.d.ts +0 -8
  143. package/dist/extensions/ClipboardExtension.d.ts +0 -23
  144. package/dist/extensions/KeyboardExtension.d.ts +0 -17
  145. package/dist/extensions/MenuExtension.d.ts +0 -23
  146. package/dist/iconRegistry.d.ts +0 -22
  147. package/dist/index.cjs +11320 -0
  148. package/dist/index.d.ts +25 -47
  149. package/dist/index.esm.js +1123 -99614
  150. package/dist/index.umd.js +3380 -1471
  151. package/dist/models/BaseNodeModel.d.ts +0 -32
  152. package/dist/models/index.d.ts +0 -1
  153. package/dist/nodes/AgentOrchestrationNode.d.ts +0 -24
  154. package/dist/nodes/GroupNode.d.ts +0 -38
  155. package/dist/nodes/HeadlessHtmlNode.d.ts +0 -16
  156. package/dist/nodes/SwitchNode.d.ts +0 -22
  157. package/dist/nodes/UnknownNodeModel.d.ts +0 -19
  158. package/dist/standalone/HuanbanRulegoEditor.d.ts +202 -401
  159. package/dist/standalone/ai-model-policy.d.ts +0 -1
  160. package/dist/standalone/ai-providers.d.ts +0 -1
  161. package/dist/standalone/auth-fetch.d.ts +2 -46
  162. package/dist/standalone/browser-assets.d.ts +0 -8
  163. package/dist/standalone/canvas-view.d.ts +6 -0
  164. package/dist/standalone/code-editor-language-loaders.d.ts +2 -0
  165. package/dist/standalone/code-editor-language-loaders.legacy.d.ts +7 -0
  166. package/dist/standalone/code-editor.d.ts +3 -87
  167. package/dist/standalone/connection-status-binding.d.ts +8 -0
  168. package/dist/standalone/custom-nodes.d.ts +0 -26
  169. package/dist/standalone/drawer-unsaved-guard.d.ts +2 -9
  170. package/dist/standalone/edge-label-quick-editor.d.ts +2 -0
  171. package/dist/standalone/editor-actions.d.ts +4 -0
  172. package/dist/standalone/editor-chain-info.d.ts +5 -38
  173. package/dist/standalone/editor-context-menu.d.ts +0 -21
  174. package/dist/standalone/editor-debug-ws.d.ts +37 -145
  175. package/dist/standalone/editor-delete.d.ts +0 -1
  176. package/dist/standalone/editor-dialogs.d.ts +16 -66
  177. package/dist/standalone/editor-events.d.ts +0 -27
  178. package/dist/standalone/editor-overlays.d.ts +14 -0
  179. package/dist/standalone/editor-property-drawers.d.ts +13 -71
  180. package/dist/standalone/editor-route-settings.d.ts +7 -55
  181. package/dist/standalone/editor-sidebar.d.ts +0 -18
  182. package/dist/standalone/editor-styles.d.ts +0 -11
  183. package/dist/standalone/editor-toast.d.ts +1 -2
  184. package/dist/standalone/editor-toolbar.d.ts +5 -80
  185. package/dist/standalone/editor-tour.d.ts +7 -0
  186. package/dist/standalone/editor-trace-overlay.d.ts +0 -5
  187. package/dist/standalone/full-json-dialog.d.ts +5 -1
  188. package/dist/standalone/group-node.d.ts +1 -51
  189. package/dist/standalone/icon-utils.d.ts +0 -20
  190. package/dist/standalone/index.d.ts +10 -7
  191. package/dist/standalone/json-diff.d.ts +0 -1
  192. package/dist/standalone/keyboard-events.d.ts +0 -1
  193. package/dist/standalone/layout-scheduler.d.ts +0 -6
  194. package/dist/standalone/lifecycle.d.ts +0 -5
  195. package/dist/standalone/logger.d.ts +0 -32
  196. package/dist/standalone/models-dev-catalog.d.ts +0 -1
  197. package/dist/standalone/node-copy.d.ts +7 -4
  198. package/dist/standalone/node-definitions.d.ts +0 -63
  199. package/dist/standalone/node-identity.d.ts +0 -1
  200. package/dist/standalone/node-theme.d.ts +8 -0
  201. package/dist/standalone/node-views-data.d.ts +0 -20
  202. package/dist/standalone/official-node-view-patches.d.ts +1 -14
  203. package/dist/standalone/outline-style.d.ts +7 -0
  204. package/dist/standalone/run-history-format.d.ts +0 -1
  205. package/dist/standalone/security-utils.d.ts +1 -5
  206. package/dist/standalone/shared-node-manager.d.ts +31 -0
  207. package/dist/standalone/themes.d.ts +0 -48
  208. package/dist/tools/tool-editor.d.ts +0 -1
  209. package/dist/types/component.d.ts +105 -87
  210. package/dist/types/editor.d.ts +16 -169
  211. package/dist/types/events.d.ts +30 -107
  212. package/dist/types/index.d.ts +3 -10
  213. package/dist/types/rule-chain.d.ts +0 -90
  214. package/dist/utils/GraphUtils.d.ts +0 -10
  215. package/dist/utils/helpers.d.ts +0 -80
  216. package/dist/utils/index.d.ts +0 -5
  217. package/dist/utils/pinyin-search.d.ts +0 -57
  218. package/dist/utils/relation-utils.d.ts +0 -1
  219. package/dist/utils/textUtils.d.ts +0 -12
  220. package/dist/version.d.ts +2 -3
  221. package/dist/xlsx-qn1xoUuv.cjs +105 -0
  222. package/package.json +19 -5
  223. package/vite-chunks.d.ts +11 -0
  224. package/vite-chunks.mjs +120 -0
  225. package/dist/index.cjs.js +0 -9515
@@ -0,0 +1,47 @@
1
+ export type EditorActionSource = 'toolbar' | 'context-menu' | 'command-palette' | 'keyboard' | 'api';
2
+ export interface EditorShortcut {
3
+ key: string;
4
+ ctrl?: boolean;
5
+ shift?: boolean;
6
+ alt?: boolean;
7
+ meta?: boolean;
8
+ }
9
+ export interface EditorSelectionSnapshot {
10
+ nodeIds: string[];
11
+ edgeIds: string[];
12
+ }
13
+ export interface EditorActionRuntime {
14
+ getGraphData?: () => unknown;
15
+ focusElement?: (id: string) => void;
16
+ confirm?: (message: string) => boolean | Promise<boolean>;
17
+ notify?: (message: string, level?: 'success' | 'warning' | 'error' | 'info') => void;
18
+ [key: string]: unknown;
19
+ }
20
+ export interface EditorActionContext {
21
+ runtime: EditorActionRuntime;
22
+ selection: EditorSelectionSnapshot;
23
+ source: EditorActionSource;
24
+ [key: string]: unknown;
25
+ }
26
+ export interface EditorAction {
27
+ id: string;
28
+ label: string;
29
+ description?: string;
30
+ group?: string;
31
+ icon?: string;
32
+ order?: number;
33
+ shortcuts?: EditorShortcut[];
34
+ visible?: (context: EditorActionContext) => boolean;
35
+ enabled?: (context: EditorActionContext) => boolean;
36
+ run: (context: EditorActionContext) => void | Promise<void>;
37
+ }
38
+ export declare class ActionRegistry {
39
+ private actions;
40
+ register(action: EditorAction, overwrite?: boolean): void;
41
+ registerAll(actions: EditorAction[], overwrite?: boolean): void;
42
+ unregister(id: string): boolean;
43
+ get(id: string): EditorAction | undefined;
44
+ list(context?: EditorActionContext): EditorAction[];
45
+ invoke(id: string, context: EditorActionContext): Promise<boolean>;
46
+ clear(): void;
47
+ }
@@ -1,62 +1,15 @@
1
- /**
2
- * @file AutoLayout.ts
3
- * @description 自动排版引擎 — 基于 DAG 拓扑排序的智能布局算法
4
- *
5
- * 核心功能:
6
- * - 对节点进行智能排版,支持普通节点和分组节点(group-node)
7
- * - 基于有向无环图 (DAG) 的分层布局 (类似 Sugiyama 算法简化版)
8
- * - 分组节点 (switch/fork/groupAction 等) 使用更大的间距
9
- * - 防止节点位置重叠
10
- * - 允许连线交叉, 但禁止横向或竖向连线完全重合
11
- * - 提供手动触发入口
12
- *
13
- * 算法步骤:
14
- * 1. 构建邻接表 (adjacency list) 表示节点连接关系
15
- * 2. BFS 拓扑分层 — 从入口节点开始, 按依赖深度分层
16
- * 3. 层内排序 — 按连接关系减少交叉
17
- * 4. 分配坐标 — 层间水平间距, 层内垂直间距 (group 节点使用更大间距)
18
- * 5. 去重合检测 — 确保无两条连线完全在同一水平/垂直线上重合
19
- *
20
- * @see DataAdapter.ts 数据转换时的 layoutX / layoutY 读取
21
- * @see group-node.ts GROUP_NODE_TYPES 列表
22
- */
23
1
  import type { LFGraphData } from './DataAdapter';
24
- /** 自动布局配置选项 */
25
2
  export interface AutoLayoutOptions {
26
- /** 层间水平间距 (像素), 默认 250 */
27
3
  layerGapX?: number;
28
- /** 层内垂直间距 (像素), 默认 100 */
29
4
  nodeGapY?: number;
30
- /** 起始 X 坐标 (像素), 默认 100 */
31
5
  startX?: number;
32
- /** 起始 Y 坐标 (像素), 默认 200 */
33
6
  startY?: number;
34
- /** Start 节点 ID (固定在最左侧), 默认 '$node_start_input' */
35
7
  startNodeId?: string;
36
- /** 节点宽度 (用于计算连线端点), 默认 200 */
37
8
  nodeWidth?: number;
38
- /** 节点高度 (用于计算间距), 默认 40 */
39
9
  nodeHeight?: number;
40
- /** 分组节点宽度 (switch/fork 等), 默认 320 */
41
10
  groupNodeWidth?: number;
42
- /** 分组节点高度 (switch/fork 等), 默认 200 */
43
11
  groupNodeHeight?: number;
12
+ scopeNodeIds?: readonly string[];
44
13
  }
45
- /**
46
- * 对 LogicFlow 图数据执行自动排版
47
- *
48
- * @param graphData - LogicFlow 图数据 (nodes + edges)
49
- * @param options - 布局参数
50
- * @returns 排版后的图数据 (直接修改并返回原对象)
51
- */
52
14
  export declare function autoLayout(graphData: LFGraphData, options?: AutoLayoutOptions): LFGraphData;
53
- /**
54
- * 检查节点数据是否需要自动排版
55
- *
56
- * 判断标准: 超过 50% 的节点没有有效坐标 (layoutX/layoutY 都为 0 或缺失)
57
- *
58
- * @param nodes - RuleGo DSL 中的节点数组
59
- * @returns true 表示需要自动排版
60
- */
61
15
  export declare function needsAutoLayout(nodes: any[]): boolean;
62
- //# sourceMappingURL=AutoLayout.d.ts.map
@@ -0,0 +1,28 @@
1
+ export interface ComponentDocMeta {
2
+ type: string;
3
+ title: string;
4
+ category?: string;
5
+ description?: string;
6
+ [key: string]: unknown;
7
+ }
8
+ export interface ComponentDoc extends ComponentDocMeta {
9
+ content: string;
10
+ }
11
+ export interface ComponentDocProvider {
12
+ list(): ComponentDocMeta[] | Promise<ComponentDocMeta[]>;
13
+ has(type: string): boolean | Promise<boolean>;
14
+ load(type: string, signal?: AbortSignal): Promise<ComponentDoc | null>;
15
+ resolveExternalUrl?(target: string): string | null;
16
+ }
17
+ export declare class ComponentDocService {
18
+ private provider;
19
+ private cache;
20
+ constructor(provider?: ComponentDocProvider | null);
21
+ setProvider(provider?: ComponentDocProvider | null): void;
22
+ hasProvider(): boolean;
23
+ list(): Promise<ComponentDocMeta[]>;
24
+ has(type: string): Promise<boolean>;
25
+ load(type: string, signal?: AbortSignal): Promise<ComponentDoc | null>;
26
+ resolveExternalUrl(target: string): string | null;
27
+ clear(): void;
28
+ }
@@ -1,151 +1,27 @@
1
- /**
2
- * @file ComponentRegistry.ts
3
- * @description 组件注册表 — 管理所有可用的节点组件
4
- *
5
- * 负责:
6
- * - 注册和管理组件定义 (来自后端 API 或内置默认)
7
- * - 按分类分组 (filter/transform/action/external/flow)
8
- * - 提供按 type 快速查询
9
- * - 适配后端返回的原始数据格式
10
- * - 合并本地化信息 (标签、描述、图标等)
11
- *
12
- * @see default.js - 内置组件定义
13
- * @see local_zh.js - 中文本地化
14
- * @see util.js - adapterComponents 转换函数
15
- */
16
1
  import type { ComponentDefinition, ComponentGroup, RawComponentData, ComponentRegistryOptions } from '../types/component';
17
- /**
18
- * 组件注册表
19
- *
20
- * 管理编辑器中所有可用的节点组件定义。
21
- * 支持按 type 查找、按 category 分组、动态注册/注销等操作。
22
- *
23
- * @example
24
- * ```typescript
25
- * const registry = new ComponentRegistry()
26
- *
27
- * // 从后端 API 数据加载组件
28
- * registry.loadFromRawData(apiData)
29
- *
30
- * // 按 type 查找
31
- * const filterNode = registry.getByType('jsFilter')
32
- *
33
- * // 获取分组 (用于侧边栏渲染)
34
- * const groups = registry.getGroups()
35
- *
36
- * // 动态注册自定义组件
37
- * registry.register({
38
- * type: 'myCustomNode',
39
- * category: 'action',
40
- * label: 'My Custom Node',
41
- * ...
42
- * })
43
- * ```
44
- */
45
2
  export declare class ComponentRegistry {
46
- /** 组件映射表: type => ComponentDefinition */
47
3
  private components;
48
- /** 自定义分类定义 */
49
4
  private categories;
50
- /** 自定义适配器函数 */
51
5
  private adapter?;
52
- /**
53
- * 创建组件注册表
54
- *
55
- * @param options - 初始化选项
56
- */
6
+ private transform?;
57
7
  constructor(options?: ComponentRegistryOptions);
58
- /**
59
- * 注册单个组件
60
- *
61
- * @param definition - 组件定义
62
- * @param overwrite - 如果已存在是否覆盖 (默认: true)
63
- */
64
8
  register(definition: ComponentDefinition, overwrite?: boolean): void;
65
- /**
66
- * 批量注册组件
67
- *
68
- * @param definitions - 组件定义列表
69
- * @param overwrite - 如果已存在是否覆盖
70
- */
71
9
  registerAll(definitions: ComponentDefinition[], overwrite?: boolean): void;
72
- /**
73
- * 注销组件
74
- *
75
- * @param type - 组件类型标识
76
- * @returns 是否成功移除
77
- */
78
10
  unregister(type: string): boolean;
79
- /**
80
- * 根据类型获取组件定义
81
- *
82
- * @param type - 组件类型标识
83
- * @returns 组件定义, 不存在返回 undefined
84
- */
85
11
  getByType(type: string): ComponentDefinition | undefined;
86
- /**
87
- * 获取所有组件的扁平列表
88
- *
89
- * @returns 所有已注册组件的数组
90
- */
91
12
  getAll(): ComponentDefinition[];
92
- /**
93
- * 获取组件映射表 (type => definition)
94
- * 用于快速查找, 对应原版的 nodeComponents 对象
95
- *
96
- * @returns type => ComponentDefinition 的映射
97
- */
98
13
  getMap(): Record<string, ComponentDefinition>;
99
- /**
100
- * 获取按分类分组的组件列表
101
- * 用于侧边栏渲染
102
- *
103
- * @returns 分组后的组件列表
104
- */
105
14
  getGroups(options?: {
106
15
  translateCategory?: (categoryKey: string, fallback: string) => string | undefined;
107
16
  sort?: boolean;
108
17
  }): ComponentGroup[];
109
- /**
110
- * 从后端 API 返回的原始数据加载组件
111
- *
112
- * 如果设置了自定义 adapter 则使用自定义逻辑,
113
- * 否则使用内置的默认适配逻辑。
114
- *
115
- * @param rawData - 后端返回的原始组件数据
116
- * @returns 分组后的组件列表
117
- */
118
18
  loadFromRawData(rawData: RawComponentData): ComponentGroup[];
119
- /**
120
- * 注册自定义分类
121
- *
122
- * @param category - 分类标识
123
- * @param info - 分类信息 (标签和颜色)
124
- */
125
19
  registerCategory(category: string, info: {
126
20
  label: string;
127
21
  color: string;
128
22
  }): void;
129
- /**
130
- * 获取组件总数
131
- */
132
23
  get size(): number;
133
- /**
134
- * 检查组件是否已注册
135
- *
136
- * @param type - 组件类型标识
137
- */
138
24
  has(type: string): boolean;
139
- /**
140
- * 清空所有已注册组件
141
- */
142
25
  clear(): void;
143
- /**
144
- * 检查是否存在某个分类下的组件 (用于特性的平滑降级探测)
145
- *
146
- * @param categoryName - 分类名称
147
- * @returns boolean
148
- */
149
26
  hasCategory(categoryName: string): boolean;
150
27
  }
151
- //# sourceMappingURL=ComponentRegistry.d.ts.map
@@ -1,133 +1,48 @@
1
- /**
2
- * @file DataAdapter.ts
3
- * @description 数据格式转换器 — adapterIn / adapterOut
4
- *
5
- * 负责 RuleGo JSON 格式 <-> LogicFlow 内部格式 的双向转换。
6
- *
7
- * adapterIn: RuleChainData → LogicFlowGraphData (用于渲染)
8
- * adapterOut: LogicFlowGraphData → RuleChainData (用于保存)
9
- *
10
- * 这是原版 RuleGoEditor.vue 中最核心的业务逻辑之一,
11
- * 从框架层抽取到 core 中后,Vue/React/原生 JS 都可以复用。
12
- *
13
- * @see RuleGoEditor.vue 的 lf.adapterIn 和 lf.adapterOut 方法
14
- */
15
1
  import type { RuleChainData, RuleChainConfig, RuleNodeConfig } from '../types/rule-chain';
16
2
  import type { ComponentDefinition } from '../types/component';
17
3
  import type { EditorInternalData } from '../types/editor';
18
- /**
19
- * LogicFlow 节点数据
20
- */
21
4
  export interface LFNodeData {
22
- /** 节点 ID */
23
5
  id: string;
24
- /** 节点类型 (simple-node, start-node, chain-node, group-node) */
25
6
  type: string;
26
- /** X 坐标 */
27
7
  x: number;
28
- /** Y 坐标 */
29
8
  y: number;
30
- /** 节点显示文本 */
31
9
  text?: string;
32
- /** 节点属性 */
10
+ children?: string[];
33
11
  properties: {
34
- /** RuleGo 节点配置 */
35
12
  model?: RuleNodeConfig;
36
- /** 组件视图定义 */
37
13
  view?: ComponentDefinition;
14
+ width?: number;
15
+ height?: number;
16
+ children?: string[];
38
17
  };
39
18
  }
40
- /**
41
- * LogicFlow 连接点数据
42
- */
43
19
  export interface LFPoint {
44
20
  x: number;
45
21
  y: number;
46
22
  }
47
- /**
48
- * LogicFlow 边数据
49
- */
50
23
  export interface LFEdgeData {
51
- /** 边 ID */
52
24
  id: string;
53
- /** 边类型 */
54
25
  type: string;
55
- /** 源节点 ID */
56
26
  sourceNodeId: string;
57
- /** 目标节点 ID */
58
27
  targetNodeId: string;
59
- /** 起点坐标 (可选 — 不设则由 LogicFlow 根据锚点自动计算) */
60
28
  startPoint?: LFPoint;
61
- /** 终点坐标 (可选 — 不设则由 LogicFlow 根据锚点自动计算) */
62
29
  endPoint?: LFPoint;
63
- /** 源锚点 ID (指定连接到源节点的哪个锚点) */
64
30
  sourceAnchorId?: string;
65
- /** 目标锚点 ID (指定连接到目标节点的哪个锚点) */
66
31
  targetAnchorId?: string;
67
- /** 显示文本 */
68
32
  text?: string;
69
- /** 边属性 */
70
33
  properties: {
71
- /** 连接数据 */
72
34
  model: Record<string, any>;
73
35
  };
74
36
  }
75
- /**
76
- * LogicFlow 图数据 (完整的画布数据)
77
- */
78
37
  export interface LFGraphData {
79
- /** 节点列表 */
80
38
  nodes: LFNodeData[];
81
- /** 边列表 */
82
39
  edges: LFEdgeData[];
83
40
  }
84
- /**
85
- * 数据格式转换器
86
- * 实现 RuleGo JSON 与 LogicFlow 格式的双向转换
87
- */
88
41
  export declare class DataAdapter {
89
- /**
90
- * 将 RuleGo 数据转换为 LogicFlow 格式 (用于渲染)
91
- *
92
- * 转换逻辑:
93
- * 1. 添加固定的 Start 节点
94
- * 2. 将 metadata.nodes 转换为 LF 节点 (带布局位置)
95
- * 3. 根据 firstNodeIndex 创建 Start -> 第一个节点的边
96
- * 4. 将 metadata.connections 转换为 LF 边 (合并同源同目标的多关系)
97
- *
98
- * @param userData - RuleGo 规则链 JSON 数据
99
- * @param nodeComponents - 组件注册表 (type => definition)
100
- * @param internalData - 编辑器内部运行时数据 (计数器等)
101
- * @param options - 额外选项 (如起始坐标)
102
- * @returns LogicFlow 格式的图数据
103
- */
104
42
  adapterIn(userData: RuleChainData, nodeComponents: Record<string, ComponentDefinition>, internalData: EditorInternalData, options: {
105
43
  startX: number;
106
44
  startY: number;
107
45
  }): LFGraphData;
108
- /**
109
- * 将 LogicFlow 数据转换回 RuleGo 格式 (用于保存)
110
- *
111
- * 转换逻辑:
112
- * 1. 遍历边, 过滤掉 Start 节点的出边, 将合并的关系类型拆分为多条连接
113
- * 2. 遍历节点, 过滤掉 Start 节点, 更新布局信息
114
- * 3. 确定第一个节点 (Start 节点连接的目标节点)
115
- * 4. 组装 RuleChainData 返回
116
- *
117
- * @param logicFlowData - LogicFlow 的图数据
118
- * @param ruleChain - 当前规则链配置
119
- * @param internalData - 编辑器内部运行时数据
120
- * @param getNodeModelById - 从 LogicFlow 获取节点 Model 的函数
121
- * @returns RuleGo 规则链 JSON 数据
122
- */
123
46
  adapterOut(logicFlowData: LFGraphData, ruleChain: RuleChainConfig, internalData: EditorInternalData, getNodeModelById: (id: string) => LFNodeData | null): RuleChainData;
124
- /**
125
- * 根据 LogicFlow 节点 ID 查找对应的 RuleGo 自定义节点 ID
126
- *
127
- * @param lfNodeId - LogicFlow 内部节点 ID
128
- * @param getNodeModelById - 获取节点数据的函数
129
- * @returns 自定义节点 ID, 找不到返回空字符串
130
- */
131
47
  private lfNodeId2CustomNodeId;
132
48
  }
133
- //# sourceMappingURL=DataAdapter.d.ts.map
@@ -0,0 +1,15 @@
1
+ import type { LFGraphData } from './DataAdapter';
2
+ import type { DiagnosticItem, TopologyContext } from './topology-rules';
3
+ export type DiagnosticListener = (items: readonly DiagnosticItem[]) => void;
4
+ export declare class DiagnosticService {
5
+ private items;
6
+ private listeners;
7
+ private disabledRules;
8
+ validate(graph: LFGraphData, context?: TopologyContext): DiagnosticItem[];
9
+ getItems(): readonly DiagnosticItem[];
10
+ getBlockingItems(): DiagnosticItem[];
11
+ setRuleEnabled(rule: string, enabled: boolean): void;
12
+ subscribe(listener: DiagnosticListener): () => void;
13
+ clear(): void;
14
+ destroy(): void;
15
+ }