@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,1288 @@
1
+ import { O as i } from "./editor-core-node-patches-BJTT3TuX.js";
2
+ const e = (l = []) => ({
3
+ type: "select",
4
+ filterable: !0,
5
+ allowCreate: !0,
6
+ multiple: !1,
7
+ ...l.length ? { options: l } : {}
8
+ }), d = (l = []) => ({
9
+ type: "select",
10
+ filterable: !0,
11
+ allowCreate: !1,
12
+ multiple: !1,
13
+ options: l
14
+ });
15
+ function b(l) {
16
+ return !!l && typeof l == "object" && !Array.isArray(l);
17
+ }
18
+ function o(l, t) {
19
+ const a = { ...l };
20
+ for (const [s, c] of Object.entries(t || {}))
21
+ b(a[s]) && b(c) ? a[s] = o(a[s], c) : a[s] = c;
22
+ return a;
23
+ }
24
+ function r(l, t) {
25
+ const a = { ...l };
26
+ for (const [s, c] of Object.entries(t || {}))
27
+ a[s] = o(a[s] || {}, c);
28
+ return a;
29
+ }
30
+ const n = {
31
+ delay: {
32
+ label: "延迟",
33
+ icon: "images/delay.svg",
34
+ desc: "延迟指定时间后发送消息",
35
+ periodInSeconds: { label: "延迟时间(秒)", desc: "" },
36
+ maxPendingMsgs: { label: "最大允许挂起消息的数量", desc: "" },
37
+ periodInSecondsPattern: { label: "延迟时间表达式(秒)", desc: "通过${metadataKey}方式从metadata变量中获取,延迟时间,如果该值有值,优先取该值。" },
38
+ delayMs: { label: "延迟时间(毫秒)", desc: "" },
39
+ overwrite: { label: "覆盖已有延迟", desc: "" }
40
+ },
41
+ exec: {
42
+ label: "命令行",
43
+ icon: "images/exec.svg",
44
+ desc: "执行系统命令",
45
+ cmd: { label: "命令", desc: "要执行的系统命令" },
46
+ args: { label: "参数列表", desc: "命令参数" },
47
+ log: { label: "打印日志", desc: "" },
48
+ replaceData: { label: "替换消息数据", desc: "" }
49
+ },
50
+ fetchNodeOutput: {
51
+ label: "取回节点输出",
52
+ icon: "images/fetchNodeOutput.svg",
53
+ desc: "获取指定节点的输出数据",
54
+ nodeId: { label: "目标节点", desc: "选择要获取输出的目标节点", component: e() }
55
+ },
56
+ functions: {
57
+ label: "函数",
58
+ icon: "images/function.svg",
59
+ functionName: { label: "函数名称", desc: "" },
60
+ param: { label: "参数", desc: "" }
61
+ },
62
+ log: {
63
+ label: "日志",
64
+ icon: "images/log.svg",
65
+ desc: "打印日志",
66
+ jsScript: { label: "function String(msg, metadata, msgType) {", desc: "}" }
67
+ }
68
+ }, m = {
69
+ break: { label: "中断", icon: "images/break.svg", desc: "中断当前流程" },
70
+ comment: { label: "注释", icon: "images/comment.svg", desc: "添加注释说明" },
71
+ end: { label: "结束", icon: "images/end.svg", desc: "结束当前流程" },
72
+ for: {
73
+ label: "循环",
74
+ icon: "images/for.svg",
75
+ desc: "循环遍历执行",
76
+ range: { label: "遍历范围", desc: "" },
77
+ do: { label: "执行动作", desc: "" },
78
+ mode: { label: "执行模式", component: e([
79
+ { label: "同步不合并执行结果", value: 0 },
80
+ { label: "同步合并执行结果", value: 1 },
81
+ { label: "同步覆盖执行结果", value: 2 },
82
+ { label: "异步不合并执行结果", value: 3 }
83
+ ]) }
84
+ },
85
+ fork: { label: "并行分支", icon: "images/fork.svg", desc: "并行分叉执行多个分支" },
86
+ groupAction: {
87
+ label: "节点组",
88
+ desc: "异步执行多个节点,把所有节点结果合并,发送到下一个节点",
89
+ icon: "images/groupAction.svg",
90
+ nodeIds: { label: "组内节点ID,多个与','隔开", desc: "" },
91
+ timeout: { label: "组内执行超时,单位秒,默认0", desc: "默认0,代表不超时" },
92
+ matchRelationType: { label: "匹配关系类型", desc: "" },
93
+ matchNum: { label: "匹配数量", desc: "" },
94
+ mergeToMap: { label: "合并为Map", desc: "" }
95
+ },
96
+ inclusive: {
97
+ label: "包容分支",
98
+ icon: "images/inclusive.svg",
99
+ desc: "将消息同时路由到所有匹配的关系;如果无任何匹配,则路由到默认的 Default 关系。",
100
+ cases: { label: "条件列表", desc: "按顺序匹配条件,所有满足的条件都会独立执行后续链路;若全部不满足则走 Default 链。", component: { type: "switchNode", caseType: "expr" } },
101
+ relationTypeDynamics: !0
102
+ },
103
+ join: {
104
+ label: "合并",
105
+ icon: "images/join.svg",
106
+ desc: "合并多个分支的结果",
107
+ timeout: { label: "超时时间(秒)", desc: "" },
108
+ mergeToMap: { label: "合并为Map", desc: "" }
109
+ },
110
+ ref: {
111
+ label: "节点引用",
112
+ icon: "images/ref.svg",
113
+ desc: "引用其他节点",
114
+ targetId: { label: "目标节点ID", desc: "" },
115
+ tellChain: { label: "告知规则链", desc: "" }
116
+ },
117
+ switch: {
118
+ label: "条件分支",
119
+ icon: "images/switch.svg",
120
+ desc: "根据条件选择分支",
121
+ cases: { label: "条件列表", desc: "按顺序匹配条件,仅执行第一条满足的后续链路;若全部不满足则走 Default 链。", component: { type: "switchNode", caseType: "expr" } },
122
+ relationTypeDynamics: !0
123
+ },
124
+ while: {
125
+ label: "While循环",
126
+ icon: "images/while.svg",
127
+ desc: "While循环",
128
+ condition: { label: "循环条件", desc: "例如: msg.count==nil || msg.count< 5", component: { type: "expr" } },
129
+ do: { label: "处理节点", desc: "处理链的起始节点", component: d() },
130
+ mode: { label: "执行模式", component: e([
131
+ { label: "同步不合并执行结果", value: 0 },
132
+ { label: "同步合并执行结果", value: 1 },
133
+ { label: "同步覆盖执行结果", value: 2 },
134
+ { label: "异步不合并执行结果", value: 3 }
135
+ ]) }
136
+ },
137
+ iterator: {
138
+ label: "迭代器",
139
+ icon: "images/for.svg",
140
+ desc: "兼容旧版 iterator 节点,建议新链使用循环节点。",
141
+ fieldName: { label: "字段名", desc: "" },
142
+ jsScript: { label: "迭代脚本", desc: "" }
143
+ }
144
+ }, p = {
145
+ exprFilter: {
146
+ label: "表达式过滤",
147
+ icon: "images/exprFilter.svg",
148
+ desc: "使用表达式过滤消息",
149
+ expr: { label: "过滤表达式", desc: "返回 bool 的表达式" }
150
+ },
151
+ fieldFilter: {
152
+ label: "字段过滤",
153
+ checkAllKeys: { label: "是否满足需要所有字段key存在", desc: "" },
154
+ dataNames: { label: "msg data字段key", desc: "多个与逗号隔开" },
155
+ metadataNames: { label: "metadata字段key", desc: "多个与逗号隔开" }
156
+ },
157
+ groupFilter: {
158
+ label: "过滤器组",
159
+ icon: "images/groupFilter.svg",
160
+ allMatches: { label: "是否需要全匹配", desc: "" },
161
+ nodeIds: { label: "组内节点ID,多个与','隔开", desc: "" },
162
+ timeout: { label: "组内执行超时,单位秒,默认0", desc: "默认0,代表不超时" }
163
+ },
164
+ jsFilter: {
165
+ label: "JS过滤",
166
+ icon: "images/jsFilter.svg",
167
+ jsScript: { label: "function Filter(msg, metadata, msgType) {", desc: "}" }
168
+ },
169
+ jsSwitch: {
170
+ label: "JS路由",
171
+ icon: "images/switch.svg",
172
+ jsScript: { label: "function Switch(msg, metadata, msgType) {", desc: "}" }
173
+ },
174
+ msgTypeSwitch: { label: "消息路由", icon: "images/msgTypeSwitch.svg", desc: "根据消息类型路由" },
175
+ "x/luaFilter": {
176
+ label: "Lua过滤",
177
+ icon: "images/luaFilter.svg",
178
+ desc: "使用Lua脚本过滤消息",
179
+ script: { label: "Lua脚本", desc: "" }
180
+ }
181
+ }, g = {
182
+ exprTransform: {
183
+ label: "表达式转换",
184
+ icon: "images/exprTransform.svg",
185
+ desc: "使用表达式转换消息",
186
+ expr: { label: "转换表达式", desc: "" },
187
+ mapping: { label: "字段映射", desc: "" }
188
+ },
189
+ jsTransform: {
190
+ label: "JS转换",
191
+ jsScript: { label: "function Transform(msg, metadata, msgType) {", desc: "}" }
192
+ },
193
+ metadataTransform: {
194
+ label: "元数据转换",
195
+ icon: "images/metadataTransform.svg",
196
+ desc: "转换消息元数据",
197
+ mapping: { label: "字段映射", desc: "" },
198
+ isNew: { label: "是否替换全部元数据", desc: "" }
199
+ },
200
+ "text/template": {
201
+ label: "模板转换",
202
+ icon: "images/textTemplate.svg",
203
+ desc: "使用Go模板转换消息",
204
+ template: { label: "模板内容", desc: "" }
205
+ },
206
+ "x/luaTransform": {
207
+ label: "Lua转换",
208
+ icon: "images/luaTransform.svg",
209
+ desc: "使用Lua脚本转换消息",
210
+ script: { label: "Lua脚本", desc: "" }
211
+ }
212
+ }, u = {
213
+ cacheDelete: {
214
+ label: "缓存删除",
215
+ icon: "images/cacheDelete.svg",
216
+ desc: "从缓存中删除数据",
217
+ keys: { label: "缓存键列表", desc: "多个缓存键" }
218
+ },
219
+ cacheGet: {
220
+ label: "缓存读取",
221
+ icon: "images/cacheGet.svg",
222
+ desc: "从缓存中读取数据",
223
+ keys: { label: "缓存键列表", desc: "多个缓存键" },
224
+ outputMode: { label: "输出模式", desc: "" },
225
+ whenKeyNotFound: { label: "键不存在时", desc: "缓存键不存在时的处理策略" }
226
+ },
227
+ cacheSet: {
228
+ label: "缓存写入",
229
+ icon: "images/cacheSet.svg",
230
+ desc: "向缓存中写入数据",
231
+ items: { label: "缓存项列表", desc: "" }
232
+ },
233
+ dbClient: {
234
+ label: "数据库",
235
+ icon: "images/db.svg",
236
+ sql: { label: "SQL语句", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" },
237
+ params: { label: "参数列表", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" },
238
+ getOne: { label: "返回一条记录", desc: "" },
239
+ opType: { label: "操作类型", desc: "query/insert/update/delete 等数据库操作类型" },
240
+ poolSize: { label: "连接池大小", desc: "" },
241
+ driverName: { label: "数据库驱动名称", desc: "mysql或postgres", component: e([{ label: "mysql", value: "mysql" }, { label: "postgres", value: "postgres" }]) },
242
+ dsn: { ref: "primary", label: "数据库连接", desc: "Mysql配置示例: username:password@tcp(127.0.0.1:3306)/db Postgres配置示例:postgres://username:password@127.0.0.1:5432/db?sslmode=disable", component: e() }
243
+ },
244
+ mqttClient: {
245
+ label: "MQTT发布者",
246
+ icon: "images/mqtt.svg",
247
+ topic: { label: "发布主题", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" },
248
+ server: { ref: "primary", label: "MQTT 服务器地址", desc: "示例: 127.0.0.1:1883 。允许选择连接池进行连接", component: e() },
249
+ username: { label: "用户名", desc: "" },
250
+ password: { label: "密码", desc: "" },
251
+ maxReconnectInterval: { label: "重连间隔,单位秒", desc: "" },
252
+ qos: { label: "QoS", desc: "" },
253
+ cleanSession: { label: "清除会话", desc: "" },
254
+ clientId: { label: "客户端ID", desc: "" },
255
+ caFile: { label: "CA证书文件", desc: "" },
256
+ certFile: { label: "客户端证书文件", desc: "" },
257
+ certKeyFile: { label: "客户端密钥文件", desc: "" }
258
+ },
259
+ net: {
260
+ label: "TCP/UDP",
261
+ icon: "images/net.svg",
262
+ protocol: { label: "协议", desc: "tcp/udp" },
263
+ server: { ref: "primary", label: "服务地址", desc: "" },
264
+ connectTimeout: { label: "连接超时,单位秒,默认60", desc: "" },
265
+ heartbeatInterval: { label: "心跳间隔,单位秒,默认60", desc: "" }
266
+ },
267
+ sendEmail: {
268
+ label: "发邮件",
269
+ icon: "images/email.svg",
270
+ desc: "发送电子邮件",
271
+ smtpHost: { label: "SMTP主机", desc: "" },
272
+ smtpPort: { label: "SMTP端口", desc: "" },
273
+ username: { label: "用户名", desc: "" },
274
+ password: { label: "密码", desc: "" },
275
+ enableTls: { label: "开启TLS", desc: "" },
276
+ connectTimeout: { label: "连接超时(秒)", desc: "" },
277
+ email: { label: "邮件内容", desc: "" }
278
+ },
279
+ ssh: {
280
+ label: "SSH",
281
+ icon: "images/ssh.svg",
282
+ desc: "执行SSH命令",
283
+ host: { label: "ssh主机地址", desc: "" },
284
+ port: { label: "ssh主机端口", desc: "" },
285
+ username: { label: "ssh登录用户名", desc: "" },
286
+ password: { label: "ssh登录密码", desc: "" },
287
+ cmd: { label: "shell命令", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" }
288
+ },
289
+ restApiCall: {
290
+ label: "HTTP客户端",
291
+ icon: "images/rest.svg",
292
+ desc: "HTTP REST请求",
293
+ restEndpointUrlPattern: { label: "HTTP URL地址", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" },
294
+ requestMethod: { label: "请求方法", desc: "POST/GET/DELETE/PUT/PATCH/HEAD" },
295
+ headers: { label: "请求头", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" },
296
+ readTimeoutMs: { label: "超时,单位毫秒。默认:0", desc: "0代表不超时" },
297
+ maxParallelRequestsCount: { label: "最大并发大小", desc: "0代表不限制" },
298
+ enableProxy: { label: "开启代理", desc: "" },
299
+ useSystemProxyProperties: { label: "使用系统代理配置", desc: "" },
300
+ proxyScheme: { label: "代理协议", desc: "" },
301
+ proxyHost: { label: "代理主机", desc: "" },
302
+ proxyPort: { label: "代理端口", desc: "" },
303
+ proxyUser: { label: "用户名", desc: "" },
304
+ proxyPassword: { label: "密码", desc: "" },
305
+ withoutRequestBody: { label: "不发送请求体", desc: "" },
306
+ body: { label: "请求体", desc: "", component: { type: "codeEditor" } },
307
+ insecureSkipVerify: { label: "跳过证书验证", desc: "" }
308
+ },
309
+ "x/fileDelete": {
310
+ label: "文件删除",
311
+ icon: "images/file.svg",
312
+ desc: "删除文件",
313
+ path: { label: "文件路径", desc: "" }
314
+ },
315
+ "x/fileList": {
316
+ label: "文件列表",
317
+ icon: "images/file.svg",
318
+ desc: "列出目录下文件",
319
+ path: { label: "目录路径", desc: "" },
320
+ recursive: { label: "递归查找", desc: "" }
321
+ },
322
+ "x/fileRead": {
323
+ label: "文件读取",
324
+ icon: "images/file.svg",
325
+ desc: "读取文件内容",
326
+ path: { label: "文件路径", desc: "" },
327
+ dataType: { label: "数据类型", desc: "" },
328
+ recursive: { label: "递归查找", desc: "" }
329
+ },
330
+ "x/fileWrite": {
331
+ label: "文件写入",
332
+ icon: "images/file.svg",
333
+ desc: "写入文件内容",
334
+ path: { label: "文件路径", desc: "" },
335
+ content: { label: "写入内容", desc: "" },
336
+ append: { label: "追加写入", desc: "" }
337
+ },
338
+ "x/grpcClient": {
339
+ label: "gRPC 客户端",
340
+ icon: "images/grpc.svg",
341
+ desc: "gRPC远程调用",
342
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
343
+ service: { label: "服务名", desc: "" },
344
+ method: { label: "方法名", desc: "" },
345
+ request: { label: "请求体", desc: "" },
346
+ headers: { label: "请求头", desc: "" }
347
+ },
348
+ "x/kafkaProducer": {
349
+ label: "Kafka发布者",
350
+ icon: "images/kafka.svg",
351
+ desc: "Kafka消息生产",
352
+ server: { ref: "primary", label: "服务器地址", desc: "" },
353
+ topic: { label: "发布主题", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" },
354
+ key: { label: "分区键", desc: "可以使用 ${metaKeyName} 替换元数据中的变量" },
355
+ partition: { label: "分区编号", desc: "" },
356
+ sasl: { label: "SASL认证", desc: "" },
357
+ tls: { label: "TLS配置", desc: "" }
358
+ },
359
+ "x/mongodbClient": {
360
+ label: "MongoDB",
361
+ icon: "images/mongodb.svg",
362
+ desc: "MongoDB数据库操作",
363
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
364
+ database: { label: "数据库名", desc: "" },
365
+ collection: { label: "集合名", desc: "" },
366
+ opType: { label: "操作类型", desc: "find/insertOne/updateOne/deleteOne" },
367
+ filter: { label: "查询条件", desc: "" },
368
+ doc: { label: "文档内容", desc: "" },
369
+ one: { label: "仅返回一条", desc: "" }
370
+ },
371
+ "x/natsClient": {
372
+ label: "NATS",
373
+ icon: "images/nats.svg",
374
+ desc: "NATS消息队列",
375
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
376
+ username: { label: "用户名", desc: "" },
377
+ password: { label: "密码", desc: "" },
378
+ topic: { label: "主题", desc: "" }
379
+ },
380
+ "x/nsqClient": {
381
+ label: "NSQ发布者",
382
+ icon: "images/nsq.svg",
383
+ desc: "NSQ消息队列",
384
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
385
+ topic: { label: "主题", desc: "" },
386
+ authToken: { label: "认证Token", desc: "" },
387
+ certFile: { label: "证书文件", desc: "" },
388
+ certKeyFile: { label: "密钥文件", desc: "" }
389
+ },
390
+ "x/opengeminiQuery": {
391
+ label: "opengemini读",
392
+ icon: "images/opengemini.svg",
393
+ desc: "OpenGemini时序数据库查询",
394
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
395
+ database: { label: "数据库名", desc: "" },
396
+ username: { label: "用户名", desc: "" },
397
+ password: { label: "密码", desc: "" },
398
+ token: { label: "访问Token", desc: "" },
399
+ command: { label: "查询命令", desc: "" }
400
+ },
401
+ "x/opengeminiWrite": {
402
+ label: "opengemini写",
403
+ icon: "images/opengemini.svg",
404
+ desc: "OpenGemini时序数据库写入",
405
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
406
+ database: { label: "数据库名", desc: "" },
407
+ username: { label: "用户名", desc: "" },
408
+ password: { label: "密码", desc: "" },
409
+ token: { label: "访问Token", desc: "" }
410
+ },
411
+ "x/otel": {
412
+ label: "OpenTelemetry",
413
+ icon: "images/otel.svg",
414
+ desc: "遥测数据推送",
415
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
416
+ protocol: { label: "协议", desc: "" },
417
+ metricExpr: { label: "指标表达式", desc: "" },
418
+ metrics: { label: "指标列表", desc: "" }
419
+ },
420
+ "x/pulsarClient": {
421
+ label: "Pulsar发布者",
422
+ icon: "images/pulsar.svg",
423
+ desc: "Pulsar消息队列",
424
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
425
+ topic: { label: "主题", desc: "" },
426
+ key: { label: "消息键", desc: "" },
427
+ headers: { label: "消息头", desc: "" },
428
+ authToken: { label: "认证Token", desc: "" },
429
+ certFile: { label: "证书文件", desc: "" },
430
+ certKeyFile: { label: "密钥文件", desc: "" }
431
+ },
432
+ "x/rabbitmqClient": {
433
+ label: "RabbitMQ",
434
+ icon: "images/rabbitmq.svg",
435
+ desc: "RabbitMQ消息队列",
436
+ server: { ref: "primary", label: "服务器地址", desc: "amqp://user:pass@host:port/", component: e() },
437
+ key: { label: "路由键", desc: "" },
438
+ exchange: { label: "交换机", desc: "" },
439
+ exchangeType: { label: "交换机类型", desc: "direct/fanout/topic/headers" },
440
+ durable: { label: "持久化", desc: "" },
441
+ autoDelete: { label: "自动删除", desc: "" }
442
+ },
443
+ "x/redisClient": {
444
+ label: "Redis",
445
+ icon: "images/redis.svg",
446
+ desc: "Redis数据操作",
447
+ server: { ref: "primary", label: "Redis服务地址", desc: "示例: 127.0.0.1:6379", component: e() },
448
+ password: { label: "密码", desc: "" },
449
+ db: { label: "数据库编号", desc: "" },
450
+ poolSize: { label: "连接池大小", desc: "" },
451
+ cmd: { label: "执行命令,例如SET/GET/DEL", desc: "可以使用${}占位符读取metadata元数据" },
452
+ params: { label: "参数列表", desc: "可以使用${}占位符读取metadata元数据" }
453
+ },
454
+ "x/redisPub": {
455
+ label: "Redis发布者",
456
+ icon: "images/redisPub.svg",
457
+ desc: "Redis Pub/Sub发布消息",
458
+ server: { ref: "primary", label: "Redis服务地址", desc: "示例: 127.0.0.1:6379", component: e() },
459
+ password: { label: "密码", desc: "" },
460
+ poolSize: { label: "连接池大小", desc: "" },
461
+ db: { label: "数据库编号", desc: "" },
462
+ channel: { label: "频道名称", desc: "" }
463
+ },
464
+ "x/wukongimSender": {
465
+ label: "WuKongIM发",
466
+ icon: "images/wukongim.svg",
467
+ desc: "悟空IM消息发送",
468
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
469
+ uid: { label: "用户ID", desc: "" },
470
+ uID: { label: "用户ID", desc: "" },
471
+ token: { label: "认证Token", desc: "" },
472
+ channelType: { label: "频道类型", desc: "" },
473
+ channelId: { label: "频道ID", desc: "" },
474
+ channelID: { label: "频道ID", desc: "" },
475
+ connectTimeout: { label: "连接超时(秒)", desc: "" },
476
+ protoVersion: { label: "协议版本", desc: "" },
477
+ pingInterval: { label: "心跳间隔(秒)", desc: "" },
478
+ reconnect: { label: "自动重连", desc: "" },
479
+ autoAck: { label: "自动确认", desc: "" },
480
+ noPersist: { label: "不持久化", desc: "" },
481
+ syncOnce: { label: "仅同步一次", desc: "" },
482
+ redDot: { label: "红点提示", desc: "" },
483
+ noEncrypt: { label: "不加密", desc: "" }
484
+ },
485
+ "x/receiveEmail": {
486
+ label: "收邮件",
487
+ icon: "images/email.svg",
488
+ desc: "通过 IMAP 协议接收邮件。",
489
+ server: { label: "IMAP服务器地址", desc: "例如: imap.gmail.com,支持${}变量替换" },
490
+ port: { label: "IMAP端口", desc: "默认: 993" },
491
+ username: { label: "用户名", desc: "支持${}变量替换" },
492
+ password: { label: "密码/授权码", desc: "支持${}变量替换" },
493
+ enableTls: { label: "启用TLS", desc: "默认: true" },
494
+ connectTimeout: { label: "连接超时(秒)", desc: "默认: 10" },
495
+ search: { label: "搜索配置", desc: "" },
496
+ fetch: { label: "拉取配置", desc: "控制收取邮件正文、附件和数量限制等参数" },
497
+ postAction: { label: "处理后动作", desc: "拉取邮件后的标记、移动或删除动作" }
498
+ },
499
+ "x/python": {
500
+ label: "Python脚本",
501
+ icon: "images/exec.svg",
502
+ desc: "执行 Python 脚本处理消息。",
503
+ script: { label: "Python脚本", desc: "", component: { type: "codeEditor" } },
504
+ pythonPath: { label: "Python路径", desc: "Python解释器路径,留空使用系统默认" },
505
+ timeout: { label: "执行超时", desc: "脚本执行超时时间" },
506
+ maxRunning: { label: "最大并发数", desc: "同时运行的最大脚本数量" }
507
+ },
508
+ "x/beanstalkdWorker": {
509
+ label: "Beanstalkd Worker",
510
+ icon: "images/beanstalkd_worker.svg",
511
+ desc: "Beanstalkd 消费端。",
512
+ server: { ref: "primary", label: "Beanstalkd Server地址", desc: "示例:127.0.0.1:11300,如果流程中存在多节点操作消息并改变状态时,应使用复用连接(ref://)", component: e() },
513
+ tube: { label: "Tube名称", desc: "允许使用 ${} 占位符变量" },
514
+ cmd: { label: "命令名称", desc: "Delete Release Bury KickJob Touch Peek ReserveJob StatsJob Stats ListTubes", component: e([
515
+ { label: "Delete", value: "Delete" },
516
+ { label: "Release", value: "Release" },
517
+ { label: "Bury", value: "Bury" },
518
+ { label: "KickJob", value: "KickJob" },
519
+ { label: "Touch", value: "Touch" },
520
+ { label: "Peek", value: "Peek" },
521
+ { label: "ReserveJob", value: "ReserveJob" },
522
+ { label: "StatsJob", value: "StatsJob" },
523
+ { label: "Stats", value: "Stats" },
524
+ { label: "ListTubes", value: "ListTubes" }
525
+ ]) },
526
+ jobId: { label: "JobId", desc: "" },
527
+ pri: { label: "优先级", desc: "" },
528
+ delay: { label: "延迟时间", desc: "" }
529
+ },
530
+ "x/beanstalkdTube": {
531
+ label: "Beanstalkd Tube",
532
+ icon: "images/beanstalkd_tube.svg",
533
+ desc: "Beanstalkd Tube 操作。",
534
+ server: { ref: "primary", label: "Beanstalkd Server地址", desc: "示例:127.0.0.1:11300,如果流程中存在多节点操作消息并改变状态时,应使用复用连接(ref://)", component: e() },
535
+ tube: { label: "Tube名称", desc: "允许使用 ${} 占位符变量" },
536
+ cmd: { label: "命令名称", desc: "Put、PeekReady、PeekDelayed、PeekBuried、Kick、Stat、Pause", component: e([
537
+ { label: "Put", value: "Put" },
538
+ { label: "PeekReady", value: "PeekReady" },
539
+ { label: "PeekDelayed", value: "PeekDelayed" },
540
+ { label: "PeekBuried", value: "PeekBuried" },
541
+ { label: "Kick", value: "Kick" },
542
+ { label: "Stat", value: "Stat" },
543
+ { label: "Pause", value: "Pause" }
544
+ ]) },
545
+ body: { label: "body", desc: "" },
546
+ pri: { label: "优先级", desc: "" },
547
+ delay: { label: "延迟时间", desc: "" },
548
+ ttr: { label: "Job最大执行秒数", desc: "" },
549
+ kickBound: { label: "唤醒的Job数量上限", desc: "" },
550
+ pauseTime: { label: "暂停时间", desc: "" }
551
+ }
552
+ }, v = {
553
+ flow: {
554
+ label: "子规则链",
555
+ targetId: { label: "子规则链ID", desc: "" },
556
+ extend: { label: "继承父链上下文", desc: "" }
557
+ },
558
+ simple_admission: {
559
+ label: "极简录取规则链",
560
+ icon: "images/simple_admission.svg",
561
+ desc: "自定义准入控制"
562
+ },
563
+ temperature_conversion: {
564
+ label: "温度转换",
565
+ icon: "images/custom.svg",
566
+ desc: "温度转换自定义节点"
567
+ },
568
+ temperatureConversion: {
569
+ label: "温度转换",
570
+ icon: "images/custom.svg",
571
+ desc: "温度转换自定义节点"
572
+ },
573
+ temperatureTransform: {
574
+ label: "温度转换",
575
+ icon: "images/custom.svg",
576
+ desc: "温度转换自定义节点",
577
+ scaleFactor: { label: "换算系数", desc: "" }
578
+ },
579
+ "x/jsonQuery": {
580
+ label: "JSON查询",
581
+ icon: "images/custom.svg",
582
+ desc: "对消息数据执行 JSON 查询。",
583
+ mode: { label: "查询模式", desc: "" }
584
+ },
585
+ "x/odooCrudCreate": {
586
+ label: "Odoo创建",
587
+ icon: "images/custom.svg",
588
+ desc: "Odoo CRUD 创建节点。",
589
+ database: { label: "数据库", desc: "" },
590
+ database_version: { label: "数据库版本", desc: "" },
591
+ table_prefix: { label: "表前缀", desc: "" },
592
+ max_batch_size: { label: "最大批量数量", desc: "" }
593
+ },
594
+ "x/odooCrudUpdate": {
595
+ label: "Odoo更新",
596
+ icon: "images/custom.svg",
597
+ desc: "Odoo CRUD 更新节点。",
598
+ database: { label: "数据库", desc: "" },
599
+ database_version: { label: "数据库版本", desc: "" },
600
+ table_prefix: { label: "表前缀", desc: "" },
601
+ max_batch_size: { label: "最大批量数量", desc: "" }
602
+ },
603
+ "x/soapParse": {
604
+ label: "SOAP解析",
605
+ icon: "images/custom.svg",
606
+ desc: "解析 SOAP 响应数据。"
607
+ },
608
+ "x/soapRequest": {
609
+ label: "SOAP请求",
610
+ icon: "images/custom.svg",
611
+ desc: "发送 SOAP 请求。",
612
+ url: { label: "请求地址", desc: "" },
613
+ action: { label: "SOAP Action", desc: "" }
614
+ }
615
+ }, y = {
616
+ "ai/llm": {
617
+ label: "AI文本生成",
618
+ icon: "images/aiLlm.svg",
619
+ desc: "AI大语言模型调用",
620
+ url: { label: "API地址", desc: "" },
621
+ key: { label: "授权秘钥", desc: "" },
622
+ model: { label: "模型", desc: "允许手动输入模型", component: e([
623
+ { label: "DeepSeek-R1-Distill-Qwen-32B", value: "DeepSeek-R1-Distill-Qwen-32B" },
624
+ { label: "DeepSeek-R1", value: "DeepSeek-R1" },
625
+ { label: "Qwen2-7B-Instruct", value: "Qwen2-7B-Instruct" },
626
+ { label: "Qwen2-VL-72B", value: "Qwen2-VL-72B" },
627
+ { label: "gpt-4o", value: "gpt-4o" },
628
+ { label: "gpt-4o-mini", value: "gpt-4o-mini" }
629
+ ]) },
630
+ systemPrompt: { label: "系统提示", desc: "用于预先定义模型的基础行为框架和响应风格。可以使用${} 占位符变量", component: { type: "textarea" } },
631
+ messages: { label: "上下文/用户消息列表", desc: "", component: { type: "table", options: [
632
+ { name: "role", label: "角色", type: "string", component: d([{ label: "USER", value: "user" }, { label: "ASSISTANT", value: "assistant" }]) },
633
+ { name: "content", label: "消息内容", type: "string", component: { type: "textarea" } }
634
+ ] } },
635
+ images: { label: "图片列表", desc: "" },
636
+ params: { label: "模型参数", desc: "" }
637
+ },
638
+ "ai/createImage": {
639
+ label: "图像生成",
640
+ icon: "images/aiImage.svg",
641
+ desc: "AI图片生成",
642
+ url: { label: "API地址", desc: "" },
643
+ key: { label: "API密钥", desc: "" },
644
+ model: { label: "模型名称", desc: "" },
645
+ prompt: { label: "提示词", desc: "" },
646
+ n: { label: "生成数量", desc: "" },
647
+ size: { label: "图片尺寸", desc: "" },
648
+ quality: { label: "图片质量", desc: "" },
649
+ style: { label: "图片风格", desc: "" },
650
+ response_format: { label: "返回格式", desc: "" }
651
+ },
652
+ "ai/agent": {
653
+ label: "智能体",
654
+ icon: "images/aiLlm.svg",
655
+ desc: "基于 ReAct 框架的 AI 智能体,支持调用工具和技能完成复杂任务。",
656
+ relationTypes: [{ label: "成功", value: "Success" }, { label: "失败", value: "Failure" }, { label: "流式", value: "Stream" }],
657
+ provider: { label: "AI服务商", desc: "选择AI服务提供商,自动填充API地址和模型列表" },
658
+ url: { label: "API地址", desc: "API基础URL" },
659
+ key: { label: "API密钥", desc: "API密钥" },
660
+ model: { label: "模型", desc: "允许手动输入模型", component: e([
661
+ { label: "DeepSeek-R1-Distill-Qwen-32B", value: "DeepSeek-R1-Distill-Qwen-32B" },
662
+ { label: "DeepSeek-R1", value: "DeepSeek-R1" },
663
+ { label: "Qwen2-7B-Instruct", value: "Qwen2-7B-Instruct" },
664
+ { label: "Qwen2-VL-72B", value: "Qwen2-VL-72B" },
665
+ { label: "gpt-4o", value: "gpt-4o" },
666
+ { label: "gpt-4o-mini", value: "gpt-4o-mini" }
667
+ ]) },
668
+ systemPrompt: { label: "系统提示", desc: "用于预先定义模型的基础行为框架和响应风格。可以使用${} 占位符变量", component: { type: "textarea" } },
669
+ messages: { label: "内置消息列表", desc: "输入消息没有 messages 字段时自动使用。", component: { type: "table", options: [
670
+ { name: "role", label: "角色", type: "string", component: d([{ label: "USER", value: "user" }, { label: "ASSISTANT", value: "assistant" }]) },
671
+ { name: "content", label: "消息内容", type: "string", component: { type: "textarea" } }
672
+ ] } },
673
+ images: { label: "图片列表", desc: "多模态模型输入图片列表" },
674
+ params: { label: "模型参数", desc: "" },
675
+ tools: { label: "工具列表", desc: "配置大模型可调用的工具", component: { type: "tools" } },
676
+ maxStep: { label: "最大迭代次数", desc: "" },
677
+ maxToolOutputLength: { label: "工具输出最大长度", desc: "限制工具返回内容的最大字节数,超出将被截断,默认 50000" },
678
+ maxRetries: { label: "最大重试次数", desc: "对 429/5xx/网络错误/超时自动重试,0 使用后端默认次数" }
679
+ },
680
+ "ai/intent": {
681
+ label: "意图识别",
682
+ icon: "images/aiLlm.svg",
683
+ desc: "基于大模型分析用户输入的意图,并路由到对应分支。",
684
+ url: { label: "API地址", desc: "API基础URL" },
685
+ key: { label: "API密钥", desc: "API密钥" },
686
+ model: { label: "模型", desc: "允许手动输入模型", component: e() },
687
+ input: { label: "用户输入表达式", desc: "支持${msg.key}和${metadata.key},为空时使用消息体数据" },
688
+ intents: { label: "意图列表", desc: "预定义的意图配置,与意图文件路径二选一,优先使用此项", component: { type: "table", options: [
689
+ { name: "name", label: "意图名称", type: "string" },
690
+ { name: "description", label: "意图描述", type: "string", component: { type: "textarea" } }
691
+ ] } },
692
+ defaultIntent: { label: "默认意图", desc: "无法识别时返回的意图,对应路由连接中的连接类型" },
693
+ systemPrompt: { label: "系统提示", desc: "自定义意图识别提示词,为空时使用内置默认提示词。支持${include()}引用文件", component: { type: "textarea" } },
694
+ temperature: { label: "温度", desc: "采样温度,值越低输出越稳定,适合分类任务", component: { type: "slider", showInput: !0, showTooltip: !0, min: 0, max: 2, step: 0.1 } },
695
+ maxTokens: { label: "最大输出长度", desc: "意图识别响应的最大 token 数,0表示使用模型默认值", component: { type: "input-number", min: 0, max: 1e3, step: 10 } }
696
+ },
697
+ "ai/localIntent": {
698
+ label: "本地意图识别",
699
+ icon: "images/aiLlm.svg",
700
+ desc: "基于嵌入向量的本地意图分类,无需调用 LLM。",
701
+ relationTypes: [{ label: "成功", value: "Success" }, { label: "失败", value: "Failure" }],
702
+ provider: { label: "AI服务商", desc: "选择嵌入模型服务商,自动填充API地址和模型列表", providerType: "embedding" },
703
+ url: { label: "API地址", desc: "嵌入模型API地址" },
704
+ key: { label: "API密钥", desc: "嵌入模型API密钥" },
705
+ model: { label: "嵌入模型", desc: "嵌入模型名称", component: e() },
706
+ input: { label: "用户输入表达式", desc: "支持${msg.key}和${metadata.key},为空时使用消息体数据" },
707
+ intents: { label: "意图列表", desc: "预定义的意图配置,与意图文件路径二选一,优先使用此项", component: { type: "table", options: [
708
+ { name: "name", label: "意图名称", type: "string" },
709
+ { name: "description", label: "意图描述", type: "string", component: { type: "textarea" } },
710
+ { name: "examples", label: "示例语句", type: "array" }
711
+ ] } },
712
+ intentsFile: { label: "意图文件路径", desc: "外部意图配置文件路径,支持 YAML 和 JSON 格式" },
713
+ threshold: { label: "相似度阈值", desc: "最低匹配相似度阈值,低于该值时使用默认意图" },
714
+ minGap: { label: "最小置信度差值", desc: "最高分与第二高分的最小差值,低于该值时使用默认意图" },
715
+ defaultIntent: { label: "默认意图", desc: "无法识别时返回的意图,对应路由连接中的连接类型" }
716
+ },
717
+ "ai/mcpClient": {
718
+ label: "MCP 客户端",
719
+ icon: "images/aiLlm.svg",
720
+ desc: "连接远程 MCP 服务器,调用指定的 MCP 工具并将结果写入消息体。",
721
+ relationTypes: [{ label: "成功", value: "Success" }, { label: "失败", value: "Failure" }],
722
+ server: {
723
+ label: "MCP服务器",
724
+ desc: "MCP 服务器地址,支持 HTTP URL(如 http://localhost:8080/mcp)或 stdio 命令(如 python server.py)",
725
+ type: "string",
726
+ rules: [{ required: !0, message: "MCP服务器地址是必填项" }]
727
+ },
728
+ toolName: { label: "工具名称", desc: "调用的远程 MCP 工具名称,支持 ${msg.xxx}、${metadata.xxx} 表达式动态指定。" },
729
+ args: { label: "工具参数", desc: "MCP 工具参数 JSON 或表达式", component: { type: "codeEditor" } },
730
+ toolFilter: { label: "工具过滤", desc: "允许调用的 MCP 工具名称列表" }
731
+ },
732
+ "ai/transform/documentLoader": {
733
+ label: "文档加载器",
734
+ icon: "images/aiLlm.svg",
735
+ desc: "加载文档并转换为文本。"
736
+ },
737
+ "ai/transform/textChunker": {
738
+ label: "文本分块器",
739
+ icon: "images/aiLlm.svg",
740
+ desc: "将长文本切分为可检索片段。"
741
+ },
742
+ "ai/embedding/openai": {
743
+ label: "OpenAI 嵌入",
744
+ desc: "使用OpenAI模型生成文本向量",
745
+ url: { label: "API地址", desc: "API基础URL", type: "string", defaultValue: "https://api.openai.com/v1/embeddings" },
746
+ apiKey: { label: "API密钥", desc: "API密钥", type: "string" },
747
+ model: { label: "模型名称", desc: "嵌入模型名称", type: "string", defaultValue: "text-embedding-ada-002" },
748
+ batchSize: { label: "批量大小", desc: "单次处理的文本数量", type: "number", defaultValue: 100 }
749
+ },
750
+ "ai/indexer/milvus": { label: "Milvus索引", icon: "images/aiLlm.svg", desc: "写入 Milvus 向量索引。" },
751
+ "ai/indexer/redis": { label: "Redis索引", icon: "images/redis.svg", desc: "写入 Redis 向量索引。" },
752
+ "ai/retriever/milvus": { label: "Milvus检索", icon: "images/aiLlm.svg", desc: "从 Milvus 向量索引检索。" },
753
+ "ai/retriever/redis": { label: "Redis检索", icon: "images/redis.svg", desc: "从 Redis 向量索引检索。" }
754
+ }, T = {
755
+ "ci/gitClone": {
756
+ label: "Git拉取",
757
+ icon: "images/gitClone.svg",
758
+ desc: "克隆Git仓库",
759
+ repository: { label: "仓库地址", desc: "" },
760
+ directory: { label: "目标目录", desc: "" },
761
+ reference: { label: "分支/标签", desc: "" },
762
+ authType: { label: "认证方式", desc: "basic/ssh" },
763
+ authUser: { label: "用户名", desc: "" },
764
+ authPassword: { label: "密码/Token", desc: "" },
765
+ authPemFile: { label: "SSH密钥文件", desc: "" },
766
+ proxyUrl: { label: "代理地址", desc: "" },
767
+ proxyUsername: { label: "代理用户名", desc: "" },
768
+ proxyPassword: { label: "代理密码", desc: "" }
769
+ },
770
+ "ci/gitCommit": {
771
+ label: "Git提交",
772
+ icon: "images/gitCommit.svg",
773
+ desc: "提交代码",
774
+ directory: { label: "仓库目录", desc: "" },
775
+ pattern: { label: "匹配模式", desc: "" },
776
+ message: { label: "提交信息", desc: "" },
777
+ signature: { label: "签名", desc: "" }
778
+ },
779
+ "ci/gitCreateTag": {
780
+ label: "Git创建标签",
781
+ icon: "images/gitCreateTag.svg",
782
+ desc: "创建Git标签",
783
+ directory: { label: "仓库目录", desc: "" },
784
+ tag: { label: "标签名", desc: "" },
785
+ message: { label: "标签信息", desc: "" },
786
+ signature: { label: "签名", desc: "" }
787
+ },
788
+ "ci/gitLog": {
789
+ label: "获取Git日志",
790
+ icon: "images/gitLog.svg",
791
+ desc: "查看Git日志",
792
+ directory: { label: "仓库目录", desc: "" },
793
+ limit: { label: "数量限制", desc: "" },
794
+ startTime: { label: "开始时间", desc: "" },
795
+ endTime: { label: "结束时间", desc: "" }
796
+ },
797
+ "ci/gitPush": {
798
+ label: "Git推送",
799
+ icon: "images/gitPush.svg",
800
+ desc: "推送到远程仓库",
801
+ repository: { label: "仓库地址", desc: "" },
802
+ directory: { label: "仓库目录", desc: "" },
803
+ refSpecs: { label: "引用规范", desc: "" },
804
+ authType: { label: "认证方式", desc: "" },
805
+ authUser: { label: "用户名", desc: "" },
806
+ authPassword: { label: "密码/Token", desc: "" },
807
+ authPemFile: { label: "SSH密钥文件", desc: "" },
808
+ proxyUrl: { label: "代理地址", desc: "" },
809
+ proxyUsername: { label: "代理用户名", desc: "" },
810
+ proxyPassword: { label: "代理密码", desc: "" }
811
+ },
812
+ "ci/ps": {
813
+ label: "服务器指标",
814
+ icon: "images/ps.svg",
815
+ desc: "进程列表查看",
816
+ options: { label: "选项", desc: "" }
817
+ },
818
+ "ci/exec": {
819
+ label: "命令行",
820
+ icon: "images/ssh.svg",
821
+ desc: "只执行系统白名单的命令。"
822
+ }
823
+ }, h = {
824
+ "x/modbus": {
825
+ label: "Modbus读写",
826
+ icon: "images/modbus.svg",
827
+ desc: "Modbus协议通信",
828
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
829
+ cmd: { label: "命令", desc: "" },
830
+ unitId: { label: "单元ID", desc: "" },
831
+ address: { label: "寄存器地址", desc: "" },
832
+ quantity: { label: "寄存器数量", desc: "" },
833
+ value: { label: "写入值", desc: "" },
834
+ regType: { label: "寄存器类型", desc: "" },
835
+ tcpConfig: { label: "TCP配置", desc: "" },
836
+ rtuConfig: { label: "RTU配置", desc: "" },
837
+ encodingConfig: { label: "编码配置", desc: "" }
838
+ },
839
+ "x/opcuaRead": {
840
+ label: "OPC_UA读",
841
+ icon: "images/opcua.svg",
842
+ desc: "OPC UA协议读取数据",
843
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
844
+ policy: { label: "安全策略", desc: "" },
845
+ mode: { label: "安全模式", desc: "" },
846
+ auth: { label: "认证方式", desc: "" },
847
+ username: { label: "用户名", desc: "" },
848
+ password: { label: "密码", desc: "" },
849
+ certFile: { label: "证书文件", desc: "" },
850
+ certKeyFile: { label: "密钥文件", desc: "" }
851
+ },
852
+ "x/opcuaWrite": {
853
+ label: "OPC_UA写",
854
+ icon: "images/opcua.svg",
855
+ desc: "OPC UA协议写入数据",
856
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
857
+ policy: { label: "安全策略", desc: "" },
858
+ mode: { label: "安全模式", desc: "" },
859
+ auth: { label: "认证方式", desc: "" },
860
+ username: { label: "用户名", desc: "" },
861
+ password: { label: "密码", desc: "" },
862
+ certFile: { label: "证书文件", desc: "" },
863
+ certKeyFile: { label: "密钥文件", desc: "" }
864
+ },
865
+ "x/serialControl": {
866
+ label: "串口控制",
867
+ icon: "images/serial.svg",
868
+ desc: "串口设备控制",
869
+ port: { label: "串口号", desc: "" },
870
+ baudRate: { label: "波特率", desc: "" },
871
+ dataBits: { label: "数据位", desc: "" },
872
+ stopBits: { label: "停止位", desc: "" },
873
+ parity: { label: "校验位", desc: "" },
874
+ action: { label: "控制动作", desc: "" },
875
+ dtr: { label: "DTR信号", desc: "" },
876
+ rts: { label: "RTS信号", desc: "" }
877
+ },
878
+ "x/serialIn": {
879
+ label: "串口读",
880
+ icon: "images/serial.svg",
881
+ desc: "从串口接收数据",
882
+ port: { label: "串口号", desc: "" },
883
+ baudRate: { label: "波特率", desc: "" },
884
+ dataBits: { label: "数据位", desc: "" },
885
+ stopBits: { label: "停止位", desc: "" },
886
+ parity: { label: "校验位", desc: "" },
887
+ splitType: { label: "分割方式", desc: "" },
888
+ splitKey: { label: "分割标记", desc: "" },
889
+ dataType: { label: "数据类型", desc: "" },
890
+ dtr: { label: "DTR信号", desc: "" },
891
+ rts: { label: "RTS信号", desc: "" },
892
+ startChar: { label: "起始字符", desc: "" },
893
+ splitTimeout: { label: "分割超时(毫秒)", desc: "" }
894
+ },
895
+ "x/serialOut": {
896
+ label: "串口写",
897
+ icon: "images/serial.svg",
898
+ desc: "向串口发送数据",
899
+ port: { label: "串口号", desc: "" },
900
+ baudRate: { label: "波特率", desc: "" },
901
+ dataBits: { label: "数据位", desc: "" },
902
+ stopBits: { label: "停止位", desc: "" },
903
+ parity: { label: "校验位", desc: "" },
904
+ data: { label: "发送数据", desc: "" },
905
+ dataType: { label: "数据类型", desc: "" },
906
+ dtr: { label: "DTR信号", desc: "" },
907
+ rts: { label: "RTS信号", desc: "" },
908
+ addChar: { label: "附加字符", desc: "" }
909
+ },
910
+ "x/serialRequest": {
911
+ label: "串口请求",
912
+ icon: "images/serial.svg",
913
+ desc: "串口请求/响应",
914
+ port: { label: "串口号", desc: "" },
915
+ baudRate: { label: "波特率", desc: "" },
916
+ dataBits: { label: "数据位", desc: "" },
917
+ stopBits: { label: "停止位", desc: "" },
918
+ parity: { label: "校验位", desc: "" },
919
+ data: { label: "发送数据", desc: "" },
920
+ dataType: { label: "数据类型", desc: "" },
921
+ splitType: { label: "分割方式", desc: "" },
922
+ splitKey: { label: "分割标记", desc: "" },
923
+ requestTimeout: { label: "请求超时(毫秒)", desc: "" },
924
+ dtr: { label: "DTR信号", desc: "" },
925
+ rts: { label: "RTS信号", desc: "" },
926
+ addChar: { label: "附加字符", desc: "" },
927
+ startChar: { label: "起始字符", desc: "" },
928
+ splitTimeout: { label: "分割超时(毫秒)", desc: "" }
929
+ }
930
+ }, S = {
931
+ "x/streamAggregator": {
932
+ label: "流聚合器",
933
+ icon: "images/streamAggregator.svg",
934
+ desc: "流式数据聚合",
935
+ sql: {
936
+ label: "StreamSQL语句",
937
+ desc: "直接引用 msg 数据字段,不支持 ${} 占位符变量。",
938
+ rules: [{ noTemplateVariables: !0, message: "SQL 不支持 ${} 占位符变量,请直接引用 msg 数据字段" }]
939
+ }
940
+ },
941
+ "x/streamTransform": {
942
+ label: "流转换器",
943
+ icon: "images/streamTransform.svg",
944
+ desc: "流式数据转换",
945
+ sql: {
946
+ label: "StreamSQL语句",
947
+ desc: "直接引用 msg 数据字段,不支持 ${} 占位符变量。",
948
+ rules: [{ noTemplateVariables: !0, message: "SQL 不支持 ${} 占位符变量,请直接引用 msg 数据字段" }]
949
+ }
950
+ }
951
+ }, f = {
952
+ "endpoint/http": {
953
+ label: "HTTP",
954
+ icon: "images/rest.svg",
955
+ desc: "HTTP/WebSocket服务端点",
956
+ server: { ref: "primary", label: "监听地址", desc: "例如 :8080", component: e() },
957
+ certFile: { label: "证书文件", desc: "" },
958
+ certKeyFile: { label: "密钥文件", desc: "" },
959
+ allowCors: { label: "允许跨域", desc: "" },
960
+ readTimeout: { label: "读取超时(秒)", desc: "" },
961
+ writeTimeout: { label: "写入超时(秒)", desc: "" },
962
+ idleTimeout: { label: "空闲超时(秒)", desc: "" },
963
+ disableKeepalive: { label: "禁用长连接", desc: "" },
964
+ // 路由视图配置: 控制路由设置弹窗的动态渲染
965
+ router: {
966
+ from: { path: { label: "Path", desc: "客户端请求该URL触发,如:/api/v1/msg" } }
967
+ }
968
+ },
969
+ "endpoint/ws": {
970
+ label: "Websocket",
971
+ icon: "images/net.svg",
972
+ desc: "WebSocket服务端点",
973
+ server: { ref: "primary", label: "监听地址", desc: "", component: e() },
974
+ certFile: { label: "证书文件", desc: "" },
975
+ certKeyFile: { label: "密钥文件", desc: "" },
976
+ allowCors: { label: "允许跨域", desc: "" },
977
+ readTimeout: { label: "读取超时(秒)", desc: "" },
978
+ writeTimeout: { label: "写入超时(秒)", desc: "" },
979
+ idleTimeout: { label: "空闲超时(秒)", desc: "" },
980
+ disableKeepalive: { label: "禁用长连接", desc: "" },
981
+ sessionKey: {
982
+ label: "会话 Key",
983
+ desc: "设备寻址键;留空时使用远端地址。支持表达式,如 ${msg.deviceId}。",
984
+ component: { type: "input", placeholder: "${msg.deviceId}" }
985
+ },
986
+ sessionTTL: {
987
+ label: "会话空闲超时(秒)",
988
+ desc: "空闲超过该时长后关闭连接并等待设备重连;0 或留空时由后端使用默认值。",
989
+ component: { type: "number", placeholder: "1800" }
990
+ },
991
+ router: {
992
+ from: { path: { label: "Path", desc: "客户端请求该URL触发,如:/api/ms/ws" } }
993
+ }
994
+ },
995
+ "endpoint/mqtt": {
996
+ label: "MQTT",
997
+ icon: "images/mqtt.svg",
998
+ desc: "MQTT消息订阅端点",
999
+ server: { ref: "primary", label: "MQTT Server地址", desc: "", component: e() },
1000
+ username: { ref: "shared", label: "用户名", desc: "" },
1001
+ password: { ref: "shared", label: "密码", desc: "" },
1002
+ maxReconnectInterval: { label: "最大重连间隔", desc: "" },
1003
+ qos: { label: "QoS", desc: "" },
1004
+ cleanSession: { label: "清除会话", desc: "" },
1005
+ clientId: { label: "客户端ID", desc: "" },
1006
+ caFile: { label: "CA证书文件", desc: "" },
1007
+ certFile: { label: "证书文件", desc: "" },
1008
+ certKeyFile: { label: "密钥文件", desc: "" },
1009
+ router: {
1010
+ from: { path: { label: "订阅主题", desc: "订阅主题数据触发,例如: devices/msg" } }
1011
+ }
1012
+ },
1013
+ "endpoint/kafka": {
1014
+ label: "Kafka",
1015
+ icon: "images/kafka.svg",
1016
+ desc: "Kafka消息消费端点",
1017
+ server: { ref: "primary", label: "服务器地址", desc: "" },
1018
+ groupId: { label: "消费组ID", desc: "" },
1019
+ sasl: { label: "SASL认证", desc: "" },
1020
+ tls: { label: "TLS配置", desc: "" },
1021
+ router: {
1022
+ from: { path: { label: "订阅主题", desc: "订阅主题数据触发,例如: devices/msg" } }
1023
+ }
1024
+ },
1025
+ "endpoint/nats": {
1026
+ label: "Nats",
1027
+ icon: "images/nats.svg",
1028
+ desc: "NATS消息订阅端点",
1029
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
1030
+ username: { label: "用户名", desc: "" },
1031
+ password: { label: "密码", desc: "" },
1032
+ groupId: { label: "消费组ID", desc: "" },
1033
+ router: {
1034
+ from: { path: { label: "订阅主题", desc: "订阅主题数据触发,例如: devices/msg" } }
1035
+ }
1036
+ },
1037
+ "endpoint/nsq": {
1038
+ label: "NSQ",
1039
+ icon: "images/nsq.svg",
1040
+ desc: "NSQ消息消费端点",
1041
+ server: { ref: "primary", label: "服务器地址", desc: "" },
1042
+ channel: { label: "频道", desc: "" },
1043
+ authToken: { label: "认证Token", desc: "" },
1044
+ certFile: { label: "证书文件", desc: "" },
1045
+ certKeyFile: { label: "密钥文件", desc: "" },
1046
+ router: {
1047
+ from: { path: { label: "订阅主题", desc: "订阅主题数据触发,例如: devices_msg" } }
1048
+ }
1049
+ },
1050
+ "endpoint/pulsar": {
1051
+ label: "Pulsar",
1052
+ icon: "images/pulsar.svg",
1053
+ desc: "Pulsar消息消费端点",
1054
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
1055
+ subName: { label: "订阅名称", desc: "" },
1056
+ subType: { label: "订阅类型", desc: "" },
1057
+ poolSize: { label: "消息通道缓冲池大小", desc: "" },
1058
+ authToken: { label: "认证Token", desc: "" },
1059
+ certFile: { label: "证书文件", desc: "" },
1060
+ certKeyFile: { label: "密钥文件", desc: "" },
1061
+ router: {
1062
+ from: { path: { label: "订阅主题", desc: "订阅主题数据触发,例如: devices/msg" } }
1063
+ }
1064
+ },
1065
+ "endpoint/rabbitmq": {
1066
+ label: "RabbitMQ",
1067
+ icon: "images/rabbitmq.svg",
1068
+ desc: "RabbitMQ消息消费端点",
1069
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
1070
+ exchange: { label: "交换机", desc: "" },
1071
+ exchangeType: { label: "交换机类型", desc: "" },
1072
+ durable: { label: "持久化", desc: "" },
1073
+ autoDelete: { label: "自动删除", desc: "" },
1074
+ router: {
1075
+ from: { path: { label: "路由键", desc: "" } }
1076
+ }
1077
+ },
1078
+ "endpoint/redis": {
1079
+ label: "Redis",
1080
+ icon: "images/redis.svg",
1081
+ desc: "Redis Pub/Sub订阅端点",
1082
+ server: { ref: "primary", label: "Redis服务地址", desc: "示例: 127.0.0.1:6379", component: e() },
1083
+ password: { label: "密码", desc: "" },
1084
+ db: { label: "数据库", desc: "" },
1085
+ router: {
1086
+ from: { path: { label: "订阅Redis通道", desc: "多个通道与逗号分割,例如: devices/msg,devices/msg2" } }
1087
+ }
1088
+ },
1089
+ "endpoint/redis/stream": {
1090
+ label: "Redis流",
1091
+ icon: "images/redis.svg",
1092
+ desc: "Redis Stream消费端点",
1093
+ server: { ref: "primary", label: "Redis服务地址", desc: "示例: 127.0.0.1:6379", component: e() },
1094
+ password: { label: "密码", desc: "" },
1095
+ db: { label: "数据库", desc: "" },
1096
+ groupId: { label: "消费组ID", desc: "" },
1097
+ router: {
1098
+ from: { path: { label: "订阅流名称", desc: "多个流与逗号分割,例如: devices/msg,devices/msg2" } }
1099
+ }
1100
+ },
1101
+ "endpoint/net": {
1102
+ label: "TCP/UDP",
1103
+ icon: "images/net.svg",
1104
+ desc: "TCP/UDP服务端点",
1105
+ protocol: { label: "协议", desc: "tcp/udp", component: d([{ label: "TCP", value: "tcp" }, { label: "UDP", value: "udp" }]) },
1106
+ server: { ref: "primary", label: "监听地址", desc: "示例: :6335" },
1107
+ readTimeout: { label: "读取超时(秒)", desc: "" },
1108
+ encode: { label: "编码方式", desc: "" },
1109
+ packetMode: { label: "包模式", desc: "" },
1110
+ packetSize: { label: "包大小", desc: "" },
1111
+ delimiter: { label: "分隔符", desc: "" },
1112
+ maxPacketSize: { label: "最大包大小", desc: "" },
1113
+ sessionKey: {
1114
+ label: "会话 Key",
1115
+ desc: "设备寻址键;留空时使用远端地址。支持表达式和多个候选值。",
1116
+ component: { type: "input", placeholder: "${msg.deviceId}" }
1117
+ },
1118
+ sessionTTL: {
1119
+ label: "会话空闲超时(秒)",
1120
+ desc: "空闲超过该时长后关闭连接并等待设备重连;0 或留空时由后端使用默认值。",
1121
+ component: { type: "number", placeholder: "1800" }
1122
+ },
1123
+ router: {
1124
+ from: { path: { label: "路由正则表达式", desc: "通过正则表达式匹配满足条件的数据触发,*表示匹配所有" } }
1125
+ }
1126
+ },
1127
+ "endpoint/schedule": {
1128
+ label: "定时调度",
1129
+ icon: "images/delay.svg",
1130
+ desc: "定时触发端点",
1131
+ router: {
1132
+ from: {
1133
+ path: { label: "cron表达式", desc: "通过cron表达式周期触发,如: */10 * * * * *" },
1134
+ processors: { hide: !0 }
1135
+ },
1136
+ to: { processors: { hide: !0 } }
1137
+ }
1138
+ },
1139
+ "endpoint/grpc/stream": {
1140
+ label: "gRPC流客户端",
1141
+ icon: "images/grpc.svg",
1142
+ desc: "gRPC流式端点",
1143
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
1144
+ service: { label: "服务名", desc: "" },
1145
+ method: { label: "方法名", desc: "" },
1146
+ headers: { label: "请求头", desc: "" },
1147
+ request: { label: "请求体", desc: "" },
1148
+ checkInterval: { label: "检查间隔(秒)", desc: "" }
1149
+ },
1150
+ "endpoint/wukongim": {
1151
+ label: "WuKongIM收",
1152
+ icon: "images/wukongim.svg",
1153
+ desc: "悟空IM消息接收端点",
1154
+ server: { ref: "primary", label: "服务器地址", desc: "", component: e() },
1155
+ uid: { label: "用户ID", desc: "" },
1156
+ token: { label: "认证Token", desc: "" },
1157
+ connectTimeout: { label: "连接超时(秒)", desc: "" },
1158
+ protoVersion: { label: "协议版本", desc: "" },
1159
+ pingInterval: { label: "心跳间隔(秒)", desc: "" },
1160
+ reconnect: { label: "自动重连", desc: "" },
1161
+ autoAck: { label: "自动确认", desc: "" }
1162
+ },
1163
+ "endpoint/mcpServer": {
1164
+ label: "MCP服务器",
1165
+ icon: "images/aiLlm.svg",
1166
+ desc: "AI MCP Server端点",
1167
+ server: { ref: "primary", label: "监听地址", desc: "示例: :6335", component: e() },
1168
+ certFile: { label: "证书文件", desc: "" },
1169
+ certKeyFile: { label: "密钥文件", desc: "" },
1170
+ allowCors: { label: "允许跨域", desc: "" },
1171
+ name: { label: "服务名称", desc: "" },
1172
+ version: { label: "版本", desc: "" },
1173
+ basePath: { label: "MCP服务器根路径", desc: "例如 /mcp" },
1174
+ router: {
1175
+ from: {
1176
+ path: { label: "工具标识", desc: "", unique: !0 },
1177
+ desc: { label: "工具描述" },
1178
+ inputSchema: { label: "工具入参JsonSchema" },
1179
+ processors: { hide: !0 }
1180
+ },
1181
+ to: { processors: { hide: !0 } }
1182
+ }
1183
+ },
1184
+ "endpoint/beanstalkdTubeset": {
1185
+ label: "Beanstalkd",
1186
+ icon: "images/beanstalkd.svg",
1187
+ desc: "Beanstalkd订阅端点",
1188
+ server: { ref: "primary", label: "Beanstalkd Server地址", desc: "示例:127.0.0.1:11300,如果流程中存在多节点操作消息并改变状态时,应使用复用连接(ref://)", component: e() },
1189
+ router: { hide: !0 }
1190
+ // 完全隐藏路由配置
1191
+ },
1192
+ "endpoint/mysql_cdc": {
1193
+ label: "MYSQL CDC",
1194
+ icon: "images/db.svg",
1195
+ desc: "MySQL变更数据捕获端点",
1196
+ server: { ref: "primary", label: "服务器地址", desc: "" },
1197
+ user: { label: "用户名", desc: "" },
1198
+ password: { label: "密码", desc: "" },
1199
+ fromOldest: { label: "从最早开始", desc: "" },
1200
+ dbs: { label: "数据库列表", desc: "" },
1201
+ includeTables: { label: "包含表", desc: "" },
1202
+ excludeTables: { label: "排除表", desc: "" },
1203
+ executionPath: { label: "执行路径", desc: "" },
1204
+ charset: { label: "字符集", desc: "" },
1205
+ flavor: { label: "数据库类型", desc: "" },
1206
+ heartbeat: { label: "心跳间隔", desc: "" },
1207
+ readTimeout: { label: "读取超时", desc: "" },
1208
+ limit: { label: "限制条数", desc: "" }
1209
+ },
1210
+ "endpoint/opcua": {
1211
+ label: "OPC_UA订阅",
1212
+ icon: "images/opcua.svg",
1213
+ desc: "OPC UA数据订阅端点",
1214
+ server: { ref: "primary", label: "服务器地址", desc: "示例: opc.tcp://localhost:4840", component: e() },
1215
+ policy: { label: "安全策略", component: e([
1216
+ { label: "Auto", value: "auto" },
1217
+ { label: "None", value: "none" },
1218
+ { label: "Basic128Rsa15", value: "Basic128Rsa15" },
1219
+ { label: "Basic256", value: "Basic256" },
1220
+ { label: "Basic256Sha256", value: "Basic256Sha256" },
1221
+ { label: "Aes128_Sha256_RsaOaep", value: "Aes128_Sha256_RsaOaep" },
1222
+ { label: "Aes256_Sha256_RsaPss", value: "Aes256_Sha256_RsaPss" }
1223
+ ]) },
1224
+ mode: { label: "安全模式", component: e([
1225
+ { label: "Auto", value: "auto" },
1226
+ { label: "None", value: "none" },
1227
+ { label: "Sign", value: "sign" },
1228
+ { label: "SignAndEncrypt", value: "signandencrypt" }
1229
+ ]) },
1230
+ auth: { label: "授权方式", component: e([
1231
+ { label: "匿名", value: "anonymous" },
1232
+ { label: "用户名", value: "username" },
1233
+ { label: "证书", value: "certificate" }
1234
+ ]) },
1235
+ username: { label: "用户名", desc: "授权方式为用户名时填写" },
1236
+ password: { label: "密码", desc: "授权方式为用户名时填写" },
1237
+ certFile: { label: "证书文件", desc: "" },
1238
+ certKeyFile: { label: "密钥文件", desc: "" },
1239
+ interval: { label: "采集间隔(秒)", desc: "" },
1240
+ nodeIds: { label: "节点ID列表", desc: "示例: ns=3;i=1003" }
1241
+ },
1242
+ "endpoint/net_client": {
1243
+ label: "TCP/UDP客户端",
1244
+ icon: "images/net.svg",
1245
+ desc: "TCP/UDP 客户端端点",
1246
+ server: { ref: "primary", label: "服务地址", desc: "" },
1247
+ protocol: { label: "协议", desc: "tcp/udp", component: d([{ label: "TCP", value: "tcp" }, { label: "UDP", value: "udp" }]) },
1248
+ connectTimeout: { label: "连接超时(秒)", desc: "" },
1249
+ readTimeout: { label: "读取超时(秒)", desc: "" },
1250
+ reconnectInterval: { label: "重连间隔(秒)", desc: "" },
1251
+ encode: { label: "编码方式", desc: "" },
1252
+ packetMode: { label: "包模式", desc: "" },
1253
+ packetSize: { label: "包大小", desc: "" },
1254
+ delimiter: { label: "分隔符", desc: "" },
1255
+ maxPacketSize: { label: "最大包大小", desc: "" },
1256
+ heartbeatInterval: { label: "心跳间隔(秒)", desc: "" },
1257
+ heartbeatData: { label: "心跳包内容", desc: "" },
1258
+ router: { from: { path: { label: "路由正则表达式", desc: "* 表示匹配所有" } } }
1259
+ },
1260
+ "endpoint/ws_client": {
1261
+ label: "Websocket客户端",
1262
+ icon: "images/net.svg",
1263
+ desc: "WebSocket 客户端端点",
1264
+ server: { ref: "primary", label: "服务地址", desc: "例如 ws://127.0.0.1:8080/ws", component: e() },
1265
+ headers: { label: "自定义请求头", desc: "连接时携带的自定义 Header,JSON 格式" },
1266
+ reconnectInterval: { label: "断线重连间隔(秒)", desc: "默认5,0表示不重连" },
1267
+ heartbeatInterval: { label: "心跳间隔(秒)", desc: "0表示不发送心跳" },
1268
+ heartbeatData: { label: "心跳包内容", desc: "空字符串默认发送 Ping 帧,非空发送 TextMessage" },
1269
+ allowText: { label: "接收文本消息", desc: "" },
1270
+ allowBinary: { label: "接收二进制消息", desc: "" },
1271
+ router: { from: { path: { label: "路由正则表达式", desc: "* 表示匹配所有" } } }
1272
+ }
1273
+ }, k = r({
1274
+ ...n,
1275
+ ...m,
1276
+ ...p,
1277
+ ...g,
1278
+ ...u,
1279
+ ...v,
1280
+ ...y,
1281
+ ...T,
1282
+ ...h,
1283
+ ...S,
1284
+ ...f
1285
+ }, i);
1286
+ export {
1287
+ k as D
1288
+ };