@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,199 @@
1
+ import { create as A } from "jsondiffpatch";
2
+ const y = 800, $ = 1600, S = 12e5, w = A({
3
+ objectHash(n) {
4
+ const t = n, o = t.id;
5
+ if (typeof o == "string" && o.trim()) return `${String(t.type || "item")}:${o}`;
6
+ const r = t.fromId, e = t.toId;
7
+ if (typeof r == "string" && r || typeof e == "string" && e)
8
+ return `edge:${String(r || "")}->${String(e || "")}:${String(t.type || "")}`;
9
+ },
10
+ arrays: {
11
+ detectMove: !0,
12
+ includeValueOnMove: !1
13
+ },
14
+ cloneDiffValues: !0
15
+ });
16
+ function g(n, t = /* @__PURE__ */ new WeakSet()) {
17
+ if (n === null || typeof n != "object") return n;
18
+ if (t.has(n)) return "[Circular]";
19
+ if (t.add(n), Array.isArray(n)) return n.map((e) => g(e, t));
20
+ const o = n, r = {};
21
+ return Object.keys(o).sort().forEach((e) => {
22
+ const a = g(o[e], t);
23
+ a !== void 0 && (r[e] = a);
24
+ }), r;
25
+ }
26
+ function p(n) {
27
+ return JSON.stringify(g(n), null, 2) ?? "undefined";
28
+ }
29
+ function J(n) {
30
+ if (!n) return null;
31
+ try {
32
+ return JSON.parse(n);
33
+ } catch {
34
+ return null;
35
+ }
36
+ }
37
+ function v(n, t) {
38
+ return p(n) === p(t);
39
+ }
40
+ function I(n) {
41
+ return !!n && typeof n == "object" && !Array.isArray(n);
42
+ }
43
+ function k(n) {
44
+ if (!I(n)) return "";
45
+ const t = n.id;
46
+ if (typeof t == "string" && t.trim()) return `id:${t}`;
47
+ const o = n.fromId, r = n.toId, e = n.type;
48
+ return typeof o == "string" && o || typeof r == "string" && r ? `edge:${String(o || "")}->${String(r || "")}:${String(e || "")}` : "";
49
+ }
50
+ function N(n) {
51
+ return /^[A-Za-z_$][\w$]*$/.test(n) ? `.${n}` : `[${JSON.stringify(n)}]`;
52
+ }
53
+ function m(n, t, o = "$", r = []) {
54
+ if (r.length >= y || v(n, t)) return r;
55
+ if (Array.isArray(n) && Array.isArray(t)) {
56
+ if (n.concat(t).every((i) => k(i))) {
57
+ const i = new Map(n.map((s) => [k(s), s])), d = new Map(t.map((s) => [k(s), s]));
58
+ return Array.from(/* @__PURE__ */ new Set([...i.keys(), ...d.keys()])).sort().forEach((s) => {
59
+ if (r.length >= y) return;
60
+ const f = `${o}[${s}]`;
61
+ i.has(s) ? d.has(s) ? m(i.get(s), d.get(s), f, r) : r.push({ path: f, kind: "removed", before: i.get(s), after: void 0 }) : r.push({ path: f, kind: "added", before: void 0, after: d.get(s) });
62
+ }), r;
63
+ }
64
+ const a = Math.max(n.length, t.length);
65
+ for (let i = 0; i < a && r.length < y; i += 1) {
66
+ const d = `${o}[${i}]`;
67
+ i >= n.length ? r.push({ path: d, kind: "added", before: void 0, after: t[i] }) : i >= t.length ? r.push({ path: d, kind: "removed", before: n[i], after: void 0 }) : m(n[i], t[i], d, r);
68
+ }
69
+ return r;
70
+ }
71
+ return I(n) && I(t) ? (Array.from(/* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(t)])).sort().forEach((a) => {
72
+ if (r.length >= y) return;
73
+ const i = `${o}${N(a)}`;
74
+ Object.prototype.hasOwnProperty.call(n, a) ? Object.prototype.hasOwnProperty.call(t, a) ? m(n[a], t[a], i, r) : r.push({ path: i, kind: "removed", before: n[a], after: void 0 }) : r.push({ path: i, kind: "added", before: void 0, after: t[a] });
75
+ }), r) : (r.push({ path: o, kind: "changed", before: n, after: t }), r);
76
+ }
77
+ function L(n) {
78
+ if (n === void 0) return "";
79
+ const t = typeof n == "string" ? n : p(n);
80
+ return t.length > 1200 ? `${t.slice(0, 1200)}
81
+ ...` : t;
82
+ }
83
+ function O(n, t) {
84
+ n.push({ kind: "hunk", marker: "@@", text: t });
85
+ }
86
+ function j(n, t) {
87
+ const o = [
88
+ { kind: "meta", marker: "---", text: "last-loaded-or-saved.rulechain.json" },
89
+ { kind: "meta", marker: "+++", text: "current-canvas.rulechain.json" },
90
+ { kind: "hunk", marker: "@@", text: "@@ large JSON diff, showing removed then added preview @@" }
91
+ ];
92
+ let r = 1, e = 1;
93
+ for (const a of n.slice(0, Math.floor(($ - 4) / 2)))
94
+ o.push({ kind: "removed", oldLine: r++, marker: "-", text: a });
95
+ for (const a of t.slice(0, Math.floor(($ - 4) / 2)))
96
+ o.push({ kind: "added", newLine: e++, marker: "+", text: a });
97
+ return O(o, "@@ diff output truncated for large JSON @@"), { lines: o, truncated: !0 };
98
+ }
99
+ function E(n, t) {
100
+ const o = n.length, r = t.length, e = Array.from({ length: o + 1 }, () => new Uint32Array(r + 1));
101
+ for (let f = o - 1; f >= 0; f -= 1)
102
+ for (let u = r - 1; u >= 0; u -= 1)
103
+ e[f][u] = n[f] === t[u] ? e[f + 1][u + 1] + 1 : Math.max(e[f + 1][u], e[f][u + 1]);
104
+ const a = [
105
+ { kind: "meta", marker: "---", text: "last-loaded-or-saved.rulechain.json" },
106
+ { kind: "meta", marker: "+++", text: "current-canvas.rulechain.json" },
107
+ { kind: "hunk", marker: "@@", text: `@@ -1,${o} +1,${r} @@` }
108
+ ];
109
+ let i = 0, d = 0, c = 1, s = 1;
110
+ for (; i < o && d < r; )
111
+ n[i] === t[d] ? (a.push({ kind: "context", oldLine: c++, newLine: s++, marker: " ", text: n[i] }), i += 1, d += 1) : e[i + 1][d] >= e[i][d + 1] ? (a.push({ kind: "removed", oldLine: c++, marker: "-", text: n[i] }), i += 1) : (a.push({ kind: "added", newLine: s++, marker: "+", text: t[d] }), d += 1);
112
+ for (; i < o; )
113
+ a.push({ kind: "removed", oldLine: c++, marker: "-", text: n[i++] });
114
+ for (; d < r; )
115
+ a.push({ kind: "added", newLine: s++, marker: "+", text: t[d++] });
116
+ return a;
117
+ }
118
+ function M(n, t) {
119
+ if (n === t)
120
+ return {
121
+ lines: [
122
+ { kind: "meta", marker: "---", text: "last-loaded-or-saved.rulechain.json" },
123
+ { kind: "meta", marker: "+++", text: "current-canvas.rulechain.json" },
124
+ { kind: "hunk", marker: "@@", text: "@@ no changes @@" }
125
+ ],
126
+ truncated: !1
127
+ };
128
+ const o = n.split(`
129
+ `), r = t.split(`
130
+ `);
131
+ if (o.length * r.length > S)
132
+ return j(o, r);
133
+ const e = E(o, r);
134
+ return e.length <= $ ? { lines: e, truncated: !1 } : {
135
+ lines: e.slice(0, $).concat({
136
+ kind: "hunk",
137
+ marker: "@@",
138
+ text: "@@ diff output truncated @@"
139
+ }),
140
+ truncated: !0
141
+ };
142
+ }
143
+ function C(n, t) {
144
+ const o = g(n), r = g(t), e = p(o), a = p(r), i = w.diff(o, r), d = m(o, r), c = M(e, a);
145
+ return {
146
+ beforeJson: e,
147
+ afterJson: a,
148
+ delta: i,
149
+ deltaJson: p(i || {}),
150
+ entries: d,
151
+ unifiedDiff: c.lines,
152
+ hasChanges: !!i || e !== a || d.length > 0,
153
+ truncated: c.truncated || d.length >= y
154
+ };
155
+ }
156
+ function h(n, t, o) {
157
+ (typeof n != "string" || n.trim() === "") && o.push(`${t} 必须是非空字符串`);
158
+ }
159
+ function l(n, t, o) {
160
+ return !n || typeof n != "object" || Array.isArray(n) ? (o.push(`${t} 必须是对象`), !1) : !0;
161
+ }
162
+ function x(n, t, o, r) {
163
+ n.forEach((e, a) => {
164
+ const i = `${t}[${a}]`;
165
+ l(e, i, r) && (h(e.id, `${i}.id`, r), h(e.type, `${i}.type`, r), typeof e.id == "string" && e.id.trim() && (o.has(e.id) && r.push(`${i}.id 与其他节点重复: ${e.id}`), o.add(e.id)), !(e.configuration !== void 0 && e.configuration !== null && !l(e.configuration, `${i}.configuration`, r)) && e.additionalInfo !== void 0 && e.additionalInfo !== null && l(e.additionalInfo, `${i}.additionalInfo`, r));
166
+ });
167
+ }
168
+ function P(n) {
169
+ const t = [];
170
+ let o = "";
171
+ try {
172
+ o = JSON.stringify(n), JSON.parse(o);
173
+ } catch (e) {
174
+ return t.push((e == null ? void 0 : e.message) || "JSON 序列化或解析失败"), { valid: !1, errors: t };
175
+ }
176
+ if (!l(n, "$", t)) return { valid: !1, errors: t, jsonString: o };
177
+ const r = n;
178
+ if (l(r.ruleChain, "$.ruleChain", t) && h(r.ruleChain.id, "$.ruleChain.id", t), l(r.metadata, "$.metadata", t)) {
179
+ const e = r.metadata;
180
+ Array.isArray(e.nodes) || t.push("$.metadata.nodes 必须是数组"), Array.isArray(e.connections) || t.push("$.metadata.connections 必须是数组"), e.endpoints !== void 0 && !Array.isArray(e.endpoints) && t.push("$.metadata.endpoints 必须是数组");
181
+ const a = /* @__PURE__ */ new Set();
182
+ if (Array.isArray(e.nodes) && x(e.nodes, "$.metadata.nodes", a, t), Array.isArray(e.endpoints) && x(e.endpoints, "$.metadata.endpoints", a, t), Array.isArray(e.connections) && e.connections.forEach((i, d) => {
183
+ const c = `$.metadata.connections[${d}]`;
184
+ l(i, c, t) && (h(i.fromId, `${c}.fromId`, t), h(i.toId, `${c}.toId`, t), h(i.type, `${c}.type`, t));
185
+ }), e.firstNodeIndex !== void 0) {
186
+ const i = e.firstNodeIndex, d = Array.isArray(e.nodes) ? e.nodes.length : 0;
187
+ !(d === 0 && i === 0) && (!Number.isInteger(i) || Number(i) < 0 || Number(i) >= d) && t.push("$.metadata.firstNodeIndex 必须指向 metadata.nodes 中的有效下标");
188
+ }
189
+ }
190
+ return { valid: t.length === 0, errors: t, jsonString: o };
191
+ }
192
+ export {
193
+ y as M,
194
+ C as c,
195
+ L as f,
196
+ J as p,
197
+ p as s,
198
+ P as v
199
+ };