weaver-e10-builder 1.0.8-beta → 1.0.9-beta

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 (261) hide show
  1. package/dist/commands/actionflow.d.ts +7 -0
  2. package/dist/commands/actionflow.d.ts.map +1 -0
  3. package/dist/commands/actionflow.js +105 -0
  4. package/dist/commands/actionflow.js.map +1 -0
  5. package/dist/commands/auth.js +1 -1
  6. package/dist/commands/auth.js.map +1 -1
  7. package/dist/commands/form-list.d.ts.map +1 -1
  8. package/dist/commands/form-list.js +18 -9
  9. package/dist/commands/form-list.js.map +1 -1
  10. package/dist/commands/form-native.d.ts +0 -14
  11. package/dist/commands/form-native.d.ts.map +1 -1
  12. package/dist/commands/form-native.js +398 -72
  13. package/dist/commands/form-native.js.map +1 -1
  14. package/dist/commands/form.d.ts.map +1 -1
  15. package/dist/commands/form.js +5 -2
  16. package/dist/commands/form.js.map +1 -1
  17. package/dist/commands/wf-form.d.ts.map +1 -1
  18. package/dist/commands/wf-form.js +49 -1
  19. package/dist/commands/wf-form.js.map +1 -1
  20. package/dist/commands/workflow-action.d.ts +11 -0
  21. package/dist/commands/workflow-action.d.ts.map +1 -1
  22. package/dist/commands/workflow-action.js +13 -1592
  23. package/dist/commands/workflow-action.js.map +1 -1
  24. package/dist/commands/workflow-create-workflow.d.ts.map +1 -1
  25. package/dist/commands/workflow-create-workflow.js +36 -5
  26. package/dist/commands/workflow-create-workflow.js.map +1 -1
  27. package/dist/core/client.d.ts +2 -0
  28. package/dist/core/client.d.ts.map +1 -1
  29. package/dist/core/client.js +2 -0
  30. package/dist/core/client.js.map +1 -1
  31. package/dist/index.js +2 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/services/actionflow/build_workflow_draft.d.ts +20 -0
  34. package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -0
  35. package/dist/services/actionflow/build_workflow_draft.js +222 -0
  36. package/dist/services/actionflow/build_workflow_draft.js.map +1 -0
  37. package/dist/services/actionflow/calendar_mapper.d.ts +3 -0
  38. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -0
  39. package/dist/services/actionflow/calendar_mapper.js +152 -0
  40. package/dist/services/actionflow/calendar_mapper.js.map +1 -0
  41. package/dist/services/actionflow/component_registry.d.ts +13 -0
  42. package/dist/services/actionflow/component_registry.d.ts.map +1 -0
  43. package/dist/services/actionflow/component_registry.js +213 -0
  44. package/dist/services/actionflow/component_registry.js.map +1 -0
  45. package/dist/services/actionflow/components/action_eb_add.d.ts +3 -0
  46. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -0
  47. package/dist/services/actionflow/components/action_eb_add.js +127 -0
  48. package/dist/services/actionflow/components/action_eb_add.js.map +1 -0
  49. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts +4 -0
  50. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -0
  51. package/dist/services/actionflow/components/action_eb_add_compiler.js +13 -0
  52. package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -0
  53. package/dist/services/actionflow/components/action_eb_delete.d.ts +3 -0
  54. package/dist/services/actionflow/components/action_eb_delete.d.ts.map +1 -0
  55. package/dist/services/actionflow/components/action_eb_delete.js +69 -0
  56. package/dist/services/actionflow/components/action_eb_delete.js.map +1 -0
  57. package/dist/services/actionflow/components/action_eb_delete_compiler.d.ts +4 -0
  58. package/dist/services/actionflow/components/action_eb_delete_compiler.d.ts.map +1 -0
  59. package/dist/services/actionflow/components/action_eb_delete_compiler.js +7 -0
  60. package/dist/services/actionflow/components/action_eb_delete_compiler.js.map +1 -0
  61. package/dist/services/actionflow/components/action_eb_recover.d.ts +3 -0
  62. package/dist/services/actionflow/components/action_eb_recover.d.ts.map +1 -0
  63. package/dist/services/actionflow/components/action_eb_recover.js +28 -0
  64. package/dist/services/actionflow/components/action_eb_recover.js.map +1 -0
  65. package/dist/services/actionflow/components/action_eb_recover_compiler.d.ts +3 -0
  66. package/dist/services/actionflow/components/action_eb_recover_compiler.d.ts.map +1 -0
  67. package/dist/services/actionflow/components/action_eb_recover_compiler.js +16 -0
  68. package/dist/services/actionflow/components/action_eb_recover_compiler.js.map +1 -0
  69. package/dist/services/actionflow/components/action_eb_save_version.d.ts +3 -0
  70. package/dist/services/actionflow/components/action_eb_save_version.d.ts.map +1 -0
  71. package/dist/services/actionflow/components/action_eb_save_version.js +30 -0
  72. package/dist/services/actionflow/components/action_eb_save_version.js.map +1 -0
  73. package/dist/services/actionflow/components/action_eb_save_version_compiler.d.ts +3 -0
  74. package/dist/services/actionflow/components/action_eb_save_version_compiler.d.ts.map +1 -0
  75. package/dist/services/actionflow/components/action_eb_save_version_compiler.js +15 -0
  76. package/dist/services/actionflow/components/action_eb_save_version_compiler.js.map +1 -0
  77. package/dist/services/actionflow/components/action_eb_update.d.ts +3 -0
  78. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -0
  79. package/dist/services/actionflow/components/action_eb_update.js +154 -0
  80. package/dist/services/actionflow/components/action_eb_update.js.map +1 -0
  81. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts +16 -0
  82. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -0
  83. package/dist/services/actionflow/components/action_eb_update_compiler.js +94 -0
  84. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -0
  85. package/dist/services/actionflow/components/approve_create.d.ts +3 -0
  86. package/dist/services/actionflow/components/approve_create.d.ts.map +1 -0
  87. package/dist/services/actionflow/components/approve_create.js +44 -0
  88. package/dist/services/actionflow/components/approve_create.js.map +1 -0
  89. package/dist/services/actionflow/components/approve_trigger.d.ts +5 -0
  90. package/dist/services/actionflow/components/approve_trigger.d.ts.map +1 -0
  91. package/dist/services/actionflow/components/approve_trigger.js +184 -0
  92. package/dist/services/actionflow/components/approve_trigger.js.map +1 -0
  93. package/dist/services/actionflow/components/approve_trigger_compiler.d.ts +4 -0
  94. package/dist/services/actionflow/components/approve_trigger_compiler.d.ts.map +1 -0
  95. package/dist/services/actionflow/components/approve_trigger_compiler.js +20 -0
  96. package/dist/services/actionflow/components/approve_trigger_compiler.js.map +1 -0
  97. package/dist/services/actionflow/components/condition.d.ts +3 -0
  98. package/dist/services/actionflow/components/condition.d.ts.map +1 -0
  99. package/dist/services/actionflow/components/condition.js +23 -0
  100. package/dist/services/actionflow/components/condition.js.map +1 -0
  101. package/dist/services/actionflow/components/date_trigger.d.ts +5 -0
  102. package/dist/services/actionflow/components/date_trigger.d.ts.map +1 -0
  103. package/dist/services/actionflow/components/date_trigger.js +129 -0
  104. package/dist/services/actionflow/components/date_trigger.js.map +1 -0
  105. package/dist/services/actionflow/components/document_actions.d.ts +28 -0
  106. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -0
  107. package/dist/services/actionflow/components/document_actions.js +266 -0
  108. package/dist/services/actionflow/components/document_actions.js.map +1 -0
  109. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts +5 -0
  110. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -0
  111. package/dist/services/actionflow/components/eb_get_data_by_id.js +44 -0
  112. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -0
  113. package/dist/services/actionflow/components/enquiry_form.d.ts +5 -0
  114. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -0
  115. package/dist/services/actionflow/components/enquiry_form.js +100 -0
  116. package/dist/services/actionflow/components/enquiry_form.js.map +1 -0
  117. package/dist/services/actionflow/components/event_form_data.d.ts +3 -0
  118. package/dist/services/actionflow/components/event_form_data.d.ts.map +1 -0
  119. package/dist/services/actionflow/components/event_form_data.js +29 -0
  120. package/dist/services/actionflow/components/event_form_data.js.map +1 -0
  121. package/dist/services/actionflow/components/hrm_actions.d.ts +7 -0
  122. package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -0
  123. package/dist/services/actionflow/components/hrm_actions.js +138 -0
  124. package/dist/services/actionflow/components/hrm_actions.js.map +1 -0
  125. package/dist/services/actionflow/components/index.d.ts +32 -0
  126. package/dist/services/actionflow/components/index.d.ts.map +1 -0
  127. package/dist/services/actionflow/components/index.js +132 -0
  128. package/dist/services/actionflow/components/index.js.map +1 -0
  129. package/dist/services/actionflow/components/logic_flow_set.d.ts +10 -0
  130. package/dist/services/actionflow/components/logic_flow_set.d.ts.map +1 -0
  131. package/dist/services/actionflow/components/logic_flow_set.js +79 -0
  132. package/dist/services/actionflow/components/logic_flow_set.js.map +1 -0
  133. package/dist/services/actionflow/components/meeting_create.d.ts +5 -0
  134. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -0
  135. package/dist/services/actionflow/components/meeting_create.js +37 -0
  136. package/dist/services/actionflow/components/meeting_create.js.map +1 -0
  137. package/dist/services/actionflow/components/multiple_execution.d.ts +5 -0
  138. package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -0
  139. package/dist/services/actionflow/components/multiple_execution.js +136 -0
  140. package/dist/services/actionflow/components/multiple_execution.js.map +1 -0
  141. package/dist/services/actionflow/components/output.d.ts +9 -0
  142. package/dist/services/actionflow/components/output.d.ts.map +1 -0
  143. package/dist/services/actionflow/components/output.js +81 -0
  144. package/dist/services/actionflow/components/output.js.map +1 -0
  145. package/dist/services/actionflow/components/schedule_create.d.ts +5 -0
  146. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -0
  147. package/dist/services/actionflow/components/schedule_create.js +42 -0
  148. package/dist/services/actionflow/components/schedule_create.js.map +1 -0
  149. package/dist/services/actionflow/components/send_message.d.ts +7 -0
  150. package/dist/services/actionflow/components/send_message.d.ts.map +1 -0
  151. package/dist/services/actionflow/components/send_message.js +200 -0
  152. package/dist/services/actionflow/components/send_message.js.map +1 -0
  153. package/dist/services/actionflow/components/simple_scheduler.d.ts +5 -0
  154. package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -0
  155. package/dist/services/actionflow/components/simple_scheduler.js +22 -0
  156. package/dist/services/actionflow/components/simple_scheduler.js.map +1 -0
  157. package/dist/services/actionflow/components/time_batch_trigger.d.ts +5 -0
  158. package/dist/services/actionflow/components/time_batch_trigger.d.ts.map +1 -0
  159. package/dist/services/actionflow/components/time_batch_trigger.js +92 -0
  160. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -0
  161. package/dist/services/actionflow/components/workflow_actions.d.ts +26 -0
  162. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -0
  163. package/dist/services/actionflow/components/workflow_actions.js +403 -0
  164. package/dist/services/actionflow/components/workflow_actions.js.map +1 -0
  165. package/dist/services/actionflow/context_data_builder.d.ts +9 -0
  166. package/dist/services/actionflow/context_data_builder.d.ts.map +1 -0
  167. package/dist/services/actionflow/context_data_builder.js +31 -0
  168. package/dist/services/actionflow/context_data_builder.js.map +1 -0
  169. package/dist/services/actionflow/context_preflight.d.ts +6 -0
  170. package/dist/services/actionflow/context_preflight.d.ts.map +1 -0
  171. package/dist/services/actionflow/context_preflight.js +122 -0
  172. package/dist/services/actionflow/context_preflight.js.map +1 -0
  173. package/dist/services/actionflow/context_provider.d.ts +18 -0
  174. package/dist/services/actionflow/context_provider.d.ts.map +1 -0
  175. package/dist/services/actionflow/context_provider.js +102 -0
  176. package/dist/services/actionflow/context_provider.js.map +1 -0
  177. package/dist/services/actionflow/context_source.d.ts +7 -0
  178. package/dist/services/actionflow/context_source.d.ts.map +1 -0
  179. package/dist/services/actionflow/context_source.js +10 -0
  180. package/dist/services/actionflow/context_source.js.map +1 -0
  181. package/dist/services/actionflow/design_client.d.ts +48 -0
  182. package/dist/services/actionflow/design_client.d.ts.map +1 -0
  183. package/dist/services/actionflow/design_client.js +170 -0
  184. package/dist/services/actionflow/design_client.js.map +1 -0
  185. package/dist/services/actionflow/document_source.d.ts +5 -0
  186. package/dist/services/actionflow/document_source.d.ts.map +1 -0
  187. package/dist/services/actionflow/document_source.js +5 -0
  188. package/dist/services/actionflow/document_source.js.map +1 -0
  189. package/dist/services/actionflow/enrich_approve_trigger.d.ts +12 -0
  190. package/dist/services/actionflow/enrich_approve_trigger.d.ts.map +1 -0
  191. package/dist/services/actionflow/enrich_approve_trigger.js +107 -0
  192. package/dist/services/actionflow/enrich_approve_trigger.js.map +1 -0
  193. package/dist/services/actionflow/filter_rules.d.ts +14 -0
  194. package/dist/services/actionflow/filter_rules.d.ts.map +1 -0
  195. package/dist/services/actionflow/filter_rules.js +259 -0
  196. package/dist/services/actionflow/filter_rules.js.map +1 -0
  197. package/dist/services/actionflow/form_source.d.ts +17 -0
  198. package/dist/services/actionflow/form_source.d.ts.map +1 -0
  199. package/dist/services/actionflow/form_source.js +42 -0
  200. package/dist/services/actionflow/form_source.js.map +1 -0
  201. package/dist/services/actionflow/formula_service.d.ts +51 -0
  202. package/dist/services/actionflow/formula_service.d.ts.map +1 -0
  203. package/dist/services/actionflow/formula_service.js +999 -0
  204. package/dist/services/actionflow/formula_service.js.map +1 -0
  205. package/dist/services/actionflow/generation_service.d.ts +28 -0
  206. package/dist/services/actionflow/generation_service.d.ts.map +1 -0
  207. package/dist/services/actionflow/generation_service.js +283 -0
  208. package/dist/services/actionflow/generation_service.js.map +1 -0
  209. package/dist/services/actionflow/hrm_source.d.ts +4 -0
  210. package/dist/services/actionflow/hrm_source.d.ts.map +1 -0
  211. package/dist/services/actionflow/hrm_source.js +8 -0
  212. package/dist/services/actionflow/hrm_source.js.map +1 -0
  213. package/dist/services/actionflow/id_generator.d.ts +13 -0
  214. package/dist/services/actionflow/id_generator.d.ts.map +1 -0
  215. package/dist/services/actionflow/id_generator.js +33 -0
  216. package/dist/services/actionflow/id_generator.js.map +1 -0
  217. package/dist/services/actionflow/person_source.d.ts +7 -0
  218. package/dist/services/actionflow/person_source.d.ts.map +1 -0
  219. package/dist/services/actionflow/person_source.js +34 -0
  220. package/dist/services/actionflow/person_source.js.map +1 -0
  221. package/dist/services/actionflow/preflight_service.d.ts +42 -0
  222. package/dist/services/actionflow/preflight_service.d.ts.map +1 -0
  223. package/dist/services/actionflow/preflight_service.js +1247 -0
  224. package/dist/services/actionflow/preflight_service.js.map +1 -0
  225. package/dist/services/actionflow/query_field_defaults.d.ts +3 -0
  226. package/dist/services/actionflow/query_field_defaults.d.ts.map +1 -0
  227. package/dist/services/actionflow/query_field_defaults.js +46 -0
  228. package/dist/services/actionflow/query_field_defaults.js.map +1 -0
  229. package/dist/services/actionflow/readback_verifier.d.ts +11 -0
  230. package/dist/services/actionflow/readback_verifier.d.ts.map +1 -0
  231. package/dist/services/actionflow/readback_verifier.js +252 -0
  232. package/dist/services/actionflow/readback_verifier.js.map +1 -0
  233. package/dist/services/actionflow/request.d.ts +13 -0
  234. package/dist/services/actionflow/request.d.ts.map +1 -0
  235. package/dist/services/actionflow/request.js +15 -0
  236. package/dist/services/actionflow/request.js.map +1 -0
  237. package/dist/services/actionflow/runtime_metadata.d.ts +27 -0
  238. package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -0
  239. package/dist/services/actionflow/runtime_metadata.js +142 -0
  240. package/dist/services/actionflow/runtime_metadata.js.map +1 -0
  241. package/dist/services/actionflow/save_workflow_draft.d.ts +34 -0
  242. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -0
  243. package/dist/services/actionflow/save_workflow_draft.js +449 -0
  244. package/dist/services/actionflow/save_workflow_draft.js.map +1 -0
  245. package/dist/services/actionflow/system_params.d.ts +5 -0
  246. package/dist/services/actionflow/system_params.d.ts.map +1 -0
  247. package/dist/services/actionflow/system_params.js +55 -0
  248. package/dist/services/actionflow/system_params.js.map +1 -0
  249. package/dist/services/actionflow/trigger_common.d.ts +6 -0
  250. package/dist/services/actionflow/trigger_common.d.ts.map +1 -0
  251. package/dist/services/actionflow/trigger_common.js +41 -0
  252. package/dist/services/actionflow/trigger_common.js.map +1 -0
  253. package/dist/services/actionflow/workflow_compiler.d.ts +27 -0
  254. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -0
  255. package/dist/services/actionflow/workflow_compiler.js +1804 -0
  256. package/dist/services/actionflow/workflow_compiler.js.map +1 -0
  257. package/dist/services/actionflow/workflow_source.d.ts +14 -0
  258. package/dist/services/actionflow/workflow_source.d.ts.map +1 -0
  259. package/dist/services/actionflow/workflow_source.js +86 -0
  260. package/dist/services/actionflow/workflow_source.js.map +1 -0
  261. package/package.json +1 -1
@@ -0,0 +1,222 @@
1
+ /**
2
+ * semantic_plan → WorkflowDraft 的归一化与编排。
3
+ * 对齐 Python 版 core/build_workflow_draft.py(黄金参照)。
4
+ */
5
+ import { normalizeAssignmentItems, normalizeNodeWithContract } from './component_registry.js';
6
+ const KNOWN_META_KEYS = new Set(['type', 'params', 'branches', 'missingFields', 'warnings', 'condition', 'actions', 'name']);
7
+ const TRIGGER_TIMING_ALIASES = {
8
+ archived: 'workflow_completed',
9
+ workflow_archived: 'workflow_completed',
10
+ workflowcompleted: 'workflow_completed',
11
+ end: 'workflow_completed',
12
+ '流程结束': 'workflow_completed',
13
+ '流程归档': 'workflow_completed',
14
+ };
15
+ function deepCopy(value) {
16
+ return JSON.parse(JSON.stringify(value));
17
+ }
18
+ export function ensureList(value) {
19
+ if (value == null)
20
+ return [];
21
+ if (Array.isArray(value))
22
+ return value;
23
+ return [value];
24
+ }
25
+ export function publicNodeFields(node) {
26
+ const n = normalizeNodeWithContract(node);
27
+ return {
28
+ type: n.type ?? '',
29
+ params: deepCopy(n.params ?? {}),
30
+ missingFields: deepCopy(n.missingFields ?? []),
31
+ warnings: deepCopy(n.warnings ?? []),
32
+ };
33
+ }
34
+ export function nextActionId(counter) {
35
+ const value = counter.value;
36
+ counter.value += 1;
37
+ return `action_${value}`;
38
+ }
39
+ export function reorderActionFields(node) {
40
+ const ordered = {
41
+ id: node.id,
42
+ type: node.type ?? '',
43
+ previousId: node.previousId,
44
+ params: node.params ?? {},
45
+ };
46
+ if ('branches' in node)
47
+ ordered.branches = node.branches;
48
+ if ('actions' in node)
49
+ ordered.actions = node.actions;
50
+ ordered.missingFields = node.missingFields ?? [];
51
+ ordered.warnings = node.warnings ?? [];
52
+ return ordered;
53
+ }
54
+ export function buildBranchActions(steps, counter) {
55
+ const built = [];
56
+ let previousId = '0';
57
+ for (const step of steps) {
58
+ const node = publicNodeFields(step);
59
+ node.id = nextActionId(counter);
60
+ node.previousId = previousId;
61
+ previousId = node.id;
62
+ built.push(reorderActionFields(node));
63
+ }
64
+ return built;
65
+ }
66
+ export function buildConditionNode(step, counter) {
67
+ const node = publicNodeFields(step);
68
+ const branches = [];
69
+ (step.branches || []).forEach((branch, index) => {
70
+ branches.push({
71
+ id: branch.id || `branch_${index + 1}`,
72
+ name: branch.name ?? '',
73
+ condition: branch.condition ?? {},
74
+ actions: buildBranchActions(branch.actions || [], counter),
75
+ });
76
+ });
77
+ node.branches = branches;
78
+ return node;
79
+ }
80
+ /** 将循环体内显式的“当次循环”语义绑定到所属循环的 draft id。
81
+ * 编译阶段再统一把 draft id 替换成平台 wId,避免 plan 猜测平台节点 ID。
82
+ */
83
+ function bindCurrentLoopReferences(value, loopDraftId) {
84
+ if (Array.isArray(value)) {
85
+ for (const item of value)
86
+ bindCurrentLoopReferences(item, loopDraftId);
87
+ return;
88
+ }
89
+ if (!value || typeof value !== 'object')
90
+ return;
91
+ const scope = String(value.scope ?? value.contextScope ?? '');
92
+ if (scope === 'current_loop') {
93
+ value.source = loopDraftId;
94
+ value.comId = loopDraftId;
95
+ value.componentType = 'MultipleExecution';
96
+ value.tablePrimaryKey ??= 'CycleParams';
97
+ value.tableName ??= '循环参数';
98
+ }
99
+ for (const child of Object.values(value))
100
+ bindCurrentLoopReferences(child, loopDraftId);
101
+ }
102
+ export function buildLoopNode(step, counter, loopDraftId) {
103
+ const node = publicNodeFields(step);
104
+ node.actions = buildBranchActions(step.actions || [], counter);
105
+ bindCurrentLoopReferences(node.actions, loopDraftId);
106
+ return node;
107
+ }
108
+ /** 归一单个节点:把顶层语义字段提升到 params,做别名/触发时机归一。 */
109
+ export function normalizeNode(node) {
110
+ const params = node.params && typeof node.params === 'object' && !Array.isArray(node.params) ? deepCopy(node.params) : {};
111
+ for (const [key, value] of Object.entries(node)) {
112
+ if (KNOWN_META_KEYS.has(key))
113
+ continue;
114
+ if (!(key in params))
115
+ params[key] = value;
116
+ }
117
+ // workflowId 是大多数旧语义计划中 workflowPath 的别名;但干预流程组件的
118
+ // workflowId 本身就是设计器要求的 Browser 对象数组,不能在归一化阶段删除。
119
+ if ('workflowId' in params && node.type !== 'ApproveIntervention') {
120
+ if (!('workflowPath' in params)) {
121
+ const wfPath = { id: String(params.workflowId) };
122
+ if ('workflowName' in params)
123
+ wfPath.name = String(params.workflowName);
124
+ params.workflowPath = wfPath;
125
+ }
126
+ delete params.workflowId;
127
+ delete params.workflowName;
128
+ }
129
+ if (node.type === 'ApproveCreate' && !('operator' in params) && 'operateUser' in params) {
130
+ params.operator = params.operateUser;
131
+ }
132
+ if (node.type === 'ApproveCreate')
133
+ delete params.operateUser;
134
+ if (node.type === 'ApproveTrigger') {
135
+ const timing = String(params.triggerTiming ?? '').trim().toLowerCase();
136
+ if (timing in TRIGGER_TIMING_ALIASES)
137
+ params.triggerTiming = TRIGGER_TIMING_ALIASES[timing];
138
+ }
139
+ if (node.type === 'ActionEbAdd' || node.type === 'ActionEbUpdate') {
140
+ for (const assignmentKey of ['setting', 'updates']) {
141
+ if (assignmentKey in params)
142
+ params[assignmentKey] = normalizeAssignmentItems(params[assignmentKey]);
143
+ }
144
+ }
145
+ if (node.type === 'SimpleScheduler' || node.type === 'TimeBatchTrigger') {
146
+ const cycle = params.cycle;
147
+ if (typeof cycle === 'number' && !Number.isInteger(cycle) === false && typeof cycle !== 'boolean') {
148
+ params.cycle = String(cycle);
149
+ }
150
+ }
151
+ const normalized = { type: node.type ?? '', params };
152
+ if (normalized.type === 'Condition') {
153
+ let rawBranches = node.branches;
154
+ if (!Array.isArray(rawBranches))
155
+ rawBranches = params.branches ?? [];
156
+ else
157
+ delete params.branches;
158
+ const branches = [];
159
+ for (const branch of rawBranches || []) {
160
+ branches.push({
161
+ name: branch.name ?? '',
162
+ condition: deepCopy(branch.condition ?? {}),
163
+ actions: (branch.actions || []).map((step) => normalizeNode(step)),
164
+ });
165
+ }
166
+ normalized.branches = branches;
167
+ }
168
+ if (normalized.type === 'MultipleExecution') {
169
+ const rawActions = Array.isArray(node.actions) ? node.actions : (Array.isArray(params.actions) ? params.actions : []);
170
+ delete params.actions;
171
+ normalized.actions = rawActions.map((step) => normalizeNode(step));
172
+ }
173
+ return normalized;
174
+ }
175
+ export function normalizeSemanticPlan(plan) {
176
+ const actions = (plan.actions || []).filter((step) => step?.type !== 'Output').map((step) => normalizeNode(step));
177
+ const legacyOutputs = (plan.actions || []).filter((step) => step?.type === 'Output');
178
+ let finalOutput = plan.finalOutput;
179
+ if (!finalOutput || typeof finalOutput !== 'object' || Array.isArray(finalOutput)) {
180
+ finalOutput = legacyOutputs.length ? legacyOutputs[legacyOutputs.length - 1] : {};
181
+ }
182
+ return {
183
+ event: normalizeNode(plan.event ?? {}),
184
+ actions,
185
+ finalOutput: { params: deepCopy(finalOutput.params ?? {}) },
186
+ warnings: ensureList(plan.warnings),
187
+ };
188
+ }
189
+ export function buildWorkflowDraft(plan) {
190
+ const normalized = normalizeSemanticPlan(plan);
191
+ const eventData = publicNodeFields(normalized.event);
192
+ const event = {
193
+ id: 'event_1',
194
+ type: eventData.type,
195
+ params: eventData.params,
196
+ missingFields: eventData.missingFields,
197
+ warnings: [...eventData.warnings, ...normalized.warnings],
198
+ };
199
+ const actions = [];
200
+ let previousId = '0';
201
+ const counter = { value: 1 };
202
+ for (const step of normalized.actions) {
203
+ const actionId = nextActionId(counter);
204
+ let node;
205
+ if (step.type === 'Condition')
206
+ node = buildConditionNode(step, counter);
207
+ else if (step.type === 'MultipleExecution')
208
+ node = buildLoopNode(step, counter, actionId);
209
+ else
210
+ node = publicNodeFields(step);
211
+ node.id = actionId;
212
+ node.previousId = previousId;
213
+ previousId = node.id;
214
+ actions.push(reorderActionFields(node));
215
+ }
216
+ const output = publicNodeFields({ type: 'Output', ...normalized.finalOutput });
217
+ output.id = nextActionId(counter);
218
+ output.previousId = previousId;
219
+ actions.push(reorderActionFields(output));
220
+ return { event, actions };
221
+ }
222
+ //# sourceMappingURL=build_workflow_draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_workflow_draft.js","sourceRoot":"","sources":["../../../src/services/actionflow/build_workflow_draft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function mapMeetingCreate(draftParams: Record<string, any>, meta?: Record<string, any> | null, appId?: string): Record<string, any>;
2
+ export declare function mapScheduleCreate(draftParams: Record<string, any>, meta?: Record<string, any> | null, appId?: string): Record<string, any>;
3
+ //# sourceMappingURL=calendar_mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar_mapper.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/calendar_mapper.ts"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,EAAE,KAAK,SAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAuE3I;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,EAAE,KAAK,SAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA4D5I"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * 会议和日程组件的真实 DTO 映射。
3
+ * 对齐 Python 版 core/calendar_mapper.py(黄金参照)。
4
+ */
5
+ import { buildPersonFormula, formulaContainerString, formulaFixed, formulaFixedForAssignSwitch } from './formula_service.js';
6
+ const MEETING_RESOURCE_FIELDS = new Set(['mtType', 'caller', 'contacter', 'address', 'hrmMembers', 'orgMembers', 'crmMembers', 'mtAccessorys']);
7
+ export function mapMeetingCreate(draftParams, meta = null, appId = '') {
8
+ const result = { ebActionId: '-1', moduleType: 'workflow' };
9
+ // MeetingCreate 的 SetForm 直接读 config 对象(非 config 字符串)
10
+ const meetingFormulaFixed = (value, fieldType = 'string') => {
11
+ const bean = formulaFixed(value, fieldType);
12
+ bean.fieldType = fieldType;
13
+ bean.config = { originValue: value, switchType: 'fixvalue', formulaVersion: 'V1' };
14
+ return bean;
15
+ };
16
+ const meetingFixed = (fieldKey, value) => {
17
+ if (!MEETING_RESOURCE_FIELDS.has(fieldKey))
18
+ return meetingFormulaFixed(value);
19
+ const items = Array.isArray(value) ? value : [value];
20
+ if (!items.length || !items.every((item) => item && typeof item === 'object')) {
21
+ throw new Error(`MeetingCreate.${fieldKey} 必须传平台选择器返回的对象或对象数组,不能传纯文本`);
22
+ }
23
+ const first = items[0];
24
+ const resourceId = first.id || first.fileid;
25
+ if (resourceId == null || resourceId === '')
26
+ throw new Error(`MeetingCreate.${fieldKey} 缺少资源 id/fileid`);
27
+ const resultFormula = meetingFormulaFixed(String(resourceId));
28
+ const displayName = String(first.name || first.content || resourceId);
29
+ resultFormula.name = displayName;
30
+ resultFormula.value = String(resourceId);
31
+ resultFormula.config = { originValue: items, switchType: 'fixvalue', formulaVersion: 'V1' };
32
+ return resultFormula;
33
+ };
34
+ const op = draftParams.operators;
35
+ if (op && typeof op === 'object' && !Array.isArray(op))
36
+ result.operators = buildPersonFormula(op, meta || {}, appId);
37
+ if (draftParams.moduleType)
38
+ result.moduleType = String(draftParams.moduleType);
39
+ const mt = draftParams.meetingType;
40
+ if (mt)
41
+ result.type = String(mt);
42
+ const flag = draftParams.flag;
43
+ if (flag !== undefined && flag !== null) {
44
+ if (!flag || typeof flag !== 'object' || !(flag.id || flag.fileid))
45
+ throw new Error('MeetingCreate.flag 必须传 workflow/wfcRequest Browser 返回的 {id,name} 对象');
46
+ const flagId = String(flag.id || flag.fileid);
47
+ result.flag = meetingFormulaFixed(flagId);
48
+ result.flag.name = flagId;
49
+ result.flag.value = flagId;
50
+ result.flag.config = { originValue: [flag], switchType: 'fixvalue', formulaVersion: 'V1' };
51
+ }
52
+ const settingMap = {};
53
+ const constants = draftParams.constants || {};
54
+ if (constants && typeof constants === 'object') {
55
+ for (const [fieldKey, value] of Object.entries(constants))
56
+ settingMap[String(fieldKey)] = meetingFixed(String(fieldKey), value);
57
+ }
58
+ const meetingFields = draftParams.meetingFields || {};
59
+ if (meetingFields && typeof meetingFields === 'object') {
60
+ for (const [fieldKey, value] of Object.entries(meetingFields)) {
61
+ if (fieldKey in settingMap && settingMap[fieldKey].value !== String(value))
62
+ throw new Error(`MeetingCreate 字段 '${fieldKey}' 同时出现在 constants 与 meetingFields,且取值不同`);
63
+ settingMap[String(fieldKey)] = meetingFixed(String(fieldKey), value);
64
+ }
65
+ }
66
+ for (const [paramName, fieldKey] of Object.entries({ meetingTitle: 'name', secretLevel: 'secretLevel', caller: 'caller', contacter: 'contacter' })) {
67
+ const value = draftParams[paramName];
68
+ if (value !== undefined && value !== null && !(fieldKey in settingMap))
69
+ settingMap[fieldKey] = meetingFixed(fieldKey, value);
70
+ }
71
+ if (Object.keys(settingMap).length)
72
+ result.setting = settingMap;
73
+ const customFormSetting = draftParams.customFormSetting;
74
+ if (customFormSetting && typeof customFormSetting === 'object')
75
+ result.formSetting = customFormSetting;
76
+ if (appId) {
77
+ result.currentApplication = appId;
78
+ result.applicationId = appId;
79
+ }
80
+ return result;
81
+ }
82
+ export function mapScheduleCreate(draftParams, meta = null, appId = '') {
83
+ meta = meta || {};
84
+ const result = { ebActionId: '-1', allDay: Boolean(draftParams.allDay ?? false) };
85
+ const scheduleResource = (value, opts = {}) => {
86
+ const values = Array.isArray(value) ? value : [value];
87
+ if (!values.length || !values.every((v) => v && typeof v === 'object' && (v.id || v.fileid))) {
88
+ throw new Error('ScheduleCreate 资源字段必须传平台 Browser 返回的对象或对象数组');
89
+ }
90
+ if (opts.multiple) {
91
+ const children = values.map((item) => {
92
+ const rid = String(item.id || item.fileid);
93
+ const child = formulaFixedForAssignSwitch(rid);
94
+ child.name = String(item.name || item.text || rid);
95
+ child.value = rid;
96
+ child.config.originValue = [item];
97
+ return child;
98
+ });
99
+ const container = formulaContainerString(children, '', appId);
100
+ container.configObject = { paramType: 'string', switchType: 'fixvalue', formulaVersion: 'V1' };
101
+ container.config = { originValue: values, paramType: 'string', switchType: 'fixvalue', formulaVersion: 'V1' };
102
+ return container;
103
+ }
104
+ const rid = String(values[0].id || values[0].fileid);
105
+ const bean = formulaFixedForAssignSwitch(rid);
106
+ bean.name = String(values[0].name || values[0].text || rid);
107
+ bean.value = rid;
108
+ bean.config.originValue = values;
109
+ return bean;
110
+ };
111
+ const scheduleFixed = (fieldName, value, fieldType = 'string') => {
112
+ if (value && typeof value === 'object')
113
+ throw new Error(`ScheduleCreate.${fieldName} 当前只支持固定值;流程上下文引用尚未完成平台 DTO/readBack 验证。`);
114
+ return formulaFixedForAssignSwitch(String(value), fieldType);
115
+ };
116
+ const cu = draftParams.creatorUser;
117
+ if (cu && typeof cu === 'object')
118
+ result.creatorUser = scheduleResource(cu);
119
+ const manager = draftParams.manager;
120
+ if (manager && typeof manager === 'object')
121
+ result.managerFormulaId = scheduleResource(manager);
122
+ if (draftParams.title)
123
+ result.title = scheduleFixed('title', draftParams.title);
124
+ if (draftParams.startTime)
125
+ result.startTime = scheduleFixed('startTime', draftParams.startTime, 'datetime');
126
+ if (draftParams.endTime)
127
+ result.endTime = scheduleFixed('endTime', draftParams.endTime, 'datetime');
128
+ if (draftParams.content)
129
+ result.content = scheduleFixed('content', draftParams.content);
130
+ if (draftParams.participants)
131
+ result.participants = scheduleResource(draftParams.participants, { multiple: true });
132
+ if (draftParams.sharedUsers)
133
+ result.sharedFormulaId = scheduleResource(draftParams.sharedUsers, { multiple: true });
134
+ if (draftParams.scheduleType)
135
+ result.typeFormulaId = scheduleResource(draftParams.scheduleType);
136
+ if (draftParams.meetingRoom)
137
+ result.meetingRoom = scheduleResource(draftParams.meetingRoom, { multiple: true });
138
+ if (draftParams.otherMeetingRoom)
139
+ result.otherMeetingRoom = scheduleFixed('otherMeetingRoom', draftParams.otherMeetingRoom);
140
+ if (draftParams.customFormSetting && typeof draftParams.customFormSetting === 'object')
141
+ result.settingId = JSON.parse(JSON.stringify(draftParams.customFormSetting));
142
+ if (draftParams.placeChoice)
143
+ result.placeChoice = String(draftParams.placeChoice);
144
+ if (draftParams.secret)
145
+ result.secret = String(draftParams.secret);
146
+ if (appId) {
147
+ result.currentApplication = appId;
148
+ result.applicationId = appId;
149
+ }
150
+ return result;
151
+ }
152
+ //# sourceMappingURL=calendar_mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar_mapper.js","sourceRoot":"","sources":["../../../src/services/actionflow/calendar_mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const ASSIGNMENT_ENGINE_TYPES: Record<string, string>;
2
+ export declare function hasConcreteValue(value: any): boolean;
3
+ export declare function hasRequiredShape(value: any, definition: Record<string, any>): boolean;
4
+ export declare function hasValidItems(value: any, definition: Record<string, any>): boolean;
5
+ export declare function isRequired(definition: Record<string, any>, sourceParams: Record<string, any>): boolean;
6
+ /** 归一 ActionEbAdd.setting / ActionEbUpdate.updates 的每项字段别名。 */
7
+ export declare function normalizeAssignmentItems(value: any): any;
8
+ /** 将 AI 友好的动态赋值写法归一为唯一语义契约。 */
9
+ export declare function normalizeAssignmentValue(value: any): any;
10
+ export declare function buildAssignmentPlan(value: any): Record<string, any>;
11
+ /** 组件契约归一化:补 default、标 missingFields/warnings、忽略未声明参数。 */
12
+ export declare function normalizeNodeWithContract(node: Record<string, any>): Record<string, any>;
13
+ //# sourceMappingURL=component_registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component_registry.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/component_registry.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE1D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAKrF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAMlF;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAStG;AAED,+DAA+D;AAC/D,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAWxD;AAED,+BAA+B;AAC/B,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAYxD;AAOD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgEnE;AAED,0DAA0D;AAC1D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoDxF"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * 组件契约归一化。对齐 Python 版 core/component_registry.py(黄金参照)。
3
+ * 组件数据来自 components/index.ts 注册中心。
4
+ */
5
+ import { get } from './components/index.js';
6
+ export const ASSIGNMENT_ENGINE_TYPES = {
7
+ fixed: '1', context: '3', transform: '4', constant: '5', formula: '6', system_variable: '9',
8
+ };
9
+ export function hasConcreteValue(value) {
10
+ return value !== null && value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0) && !(value && typeof value === 'object' && Object.keys(value).length === 0);
11
+ }
12
+ export function hasRequiredShape(value, definition) {
13
+ const shape = definition.valueShape;
14
+ if (shape === 'object')
15
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
16
+ if (shape === 'array')
17
+ return Array.isArray(value);
18
+ return true;
19
+ }
20
+ export function hasValidItems(value, definition) {
21
+ const itemSchema = definition.itemSchema;
22
+ if (!itemSchema || typeof itemSchema !== 'object')
23
+ return true;
24
+ const requiredKeys = itemSchema.requiredKeys;
25
+ if (!Array.isArray(value) || !Array.isArray(requiredKeys))
26
+ return false;
27
+ return value.every((item) => item && typeof item === 'object' && requiredKeys.every((k) => hasConcreteValue(item[k])));
28
+ }
29
+ export function isRequired(definition, sourceParams) {
30
+ if (definition.required)
31
+ return true;
32
+ const requiredWhen = definition.requiredWhen;
33
+ if (!requiredWhen || typeof requiredWhen !== 'object')
34
+ return false;
35
+ const dependency = requiredWhen.param;
36
+ if (typeof dependency !== 'string')
37
+ return false;
38
+ if ('equals' in requiredWhen)
39
+ return sourceParams[dependency] === requiredWhen.equals;
40
+ if ('in' in requiredWhen)
41
+ return Array.isArray(requiredWhen.in) && requiredWhen.in.includes(sourceParams[dependency]);
42
+ return false;
43
+ }
44
+ /** 归一 ActionEbAdd.setting / ActionEbUpdate.updates 的每项字段别名。 */
45
+ export function normalizeAssignmentItems(value) {
46
+ if (!Array.isArray(value))
47
+ return value;
48
+ return value.map((item) => {
49
+ if (!item || typeof item !== 'object')
50
+ return item;
51
+ const updated = { ...item };
52
+ if (!updated.field && updated.formField && typeof updated.formField === 'object') {
53
+ updated.field = { ...updated.formField };
54
+ }
55
+ if ('value' in updated)
56
+ updated.value = normalizeAssignmentValue(updated.value);
57
+ return updated;
58
+ });
59
+ }
60
+ /** 将 AI 友好的动态赋值写法归一为唯一语义契约。 */
61
+ export function normalizeAssignmentValue(value) {
62
+ if (!value || typeof value !== 'object')
63
+ return value;
64
+ const normalized = { ...value };
65
+ const supported = new Set([...Object.keys(ASSIGNMENT_ENGINE_TYPES), 'literal']);
66
+ let kind = normalized.assignmentKind || normalized.kind;
67
+ if (!kind && normalized.type && supported.has(normalized.type))
68
+ kind = normalized.type;
69
+ if (typeof kind === 'string' && kind)
70
+ normalized.kind = kind;
71
+ if (normalized.kind === 'context' || normalized.kind === 'system_variable') {
72
+ const key = normalized.key || normalized.paramKey || normalized.fieldKey;
73
+ if (typeof key === 'string' && key)
74
+ normalized.key = key;
75
+ }
76
+ return normalized;
77
+ }
78
+ function toFormulaValue(value) {
79
+ if (typeof value === 'boolean')
80
+ return value ? 'true' : 'false';
81
+ return String(value);
82
+ }
83
+ export function buildAssignmentPlan(value) {
84
+ const v = normalizeAssignmentValue(value);
85
+ if (v && typeof v === 'object' && typeof v.kind === 'string') {
86
+ const kind = v.kind;
87
+ if (kind === 'context') {
88
+ const key = v.key;
89
+ if (typeof key !== 'string' || !key)
90
+ throw new Error('context assignment must contain key');
91
+ return {
92
+ kind, type: ASSIGNMENT_ENGINE_TYPES[kind], name: v.label ?? v.name ?? key, value: key,
93
+ resultType: v.valueType ?? 'string', sourceRef: { kind: 'trigger_context', key },
94
+ };
95
+ }
96
+ if (kind === 'fixed' || kind === 'literal') {
97
+ if (!('value' in v))
98
+ throw new Error('fixed assignment must contain value');
99
+ const fixedValue = v.value;
100
+ if (fixedValue == null || typeof fixedValue === 'object')
101
+ throw new Error('fixed assignment value must be a scalar');
102
+ return {
103
+ kind: 'fixed', type: '1', name: toFormulaValue(v.label ?? fixedValue), value: toFormulaValue(fixedValue),
104
+ formulaType: 'string', config: { switchType: 'fixvalue', originValue: fixedValue },
105
+ };
106
+ }
107
+ if (kind === 'system_variable') {
108
+ const key = v.key;
109
+ if (typeof key !== 'string' || !key)
110
+ throw new Error('system variable must contain key');
111
+ return { kind, type: ASSIGNMENT_ENGINE_TYPES[kind], name: v.name ?? key, value: key, resultType: v.valueType ?? 'string', sourceRef: { kind, key } };
112
+ }
113
+ if (kind === 'constant') {
114
+ const refId = v.id;
115
+ if (typeof refId !== 'string' || !refId)
116
+ throw new Error('constant must contain id');
117
+ return { kind, type: ASSIGNMENT_ENGINE_TYPES[kind], name: v.name ?? refId, value: refId, resultType: v.valueType ?? 'string', sourceRef: { kind, id: refId } };
118
+ }
119
+ if (kind === 'transform' || kind === 'formula') {
120
+ const refId = v.id;
121
+ const args = v.arguments;
122
+ if (typeof refId !== 'string' || !refId)
123
+ throw new Error(`${kind} must contain id`);
124
+ if (!Array.isArray(args))
125
+ throw new Error(`${kind} must contain resolved arguments`);
126
+ const argPlans = args.map((argument, i) => {
127
+ if (!argument || typeof argument !== 'object' || typeof argument.name !== 'string' || !('value' in argument)) {
128
+ throw new Error(`${kind}.arguments[${i}] must contain name and value`);
129
+ }
130
+ return { name: argument.name, assignment: buildAssignmentPlan(argument.value) };
131
+ });
132
+ return { kind, type: ASSIGNMENT_ENGINE_TYPES[kind], name: v.name ?? refId, value: refId, resultType: v.valueType ?? 'string', arguments: argPlans, sourceRef: { kind, id: refId } };
133
+ }
134
+ throw new Error(`unsupported assignmentKind: ${kind}`);
135
+ }
136
+ if (v && typeof v === 'object' && typeof v.key === 'string') {
137
+ return { kind: 'context', type: '3', name: v.label ?? v.key, value: v.key, resultType: v.valueType ?? 'string', sourceRef: { kind: 'trigger_context', key: v.key } };
138
+ }
139
+ let fixedValue;
140
+ let name;
141
+ if (v && typeof v === 'object' && 'value' in v) {
142
+ fixedValue = v.value;
143
+ name = v.label ?? fixedValue;
144
+ }
145
+ else {
146
+ fixedValue = v;
147
+ name = v;
148
+ }
149
+ if (fixedValue == null || typeof fixedValue === 'object')
150
+ throw new Error('assignment value must be a scalar or a resolved trigger context');
151
+ const formulaValue = toFormulaValue(fixedValue);
152
+ return {
153
+ kind: 'fixed', type: '1', name: toFormulaValue(name), value: formulaValue,
154
+ formulaType: 'string', config: { switchType: 'fixvalue', originValue: fixedValue },
155
+ };
156
+ }
157
+ /** 组件契约归一化:补 default、标 missingFields/warnings、忽略未声明参数。 */
158
+ export function normalizeNodeWithContract(node) {
159
+ const normalized = JSON.parse(JSON.stringify(node));
160
+ const componentType = normalized.type;
161
+ const contract = componentType ? get(componentType) : undefined;
162
+ normalized.params ??= {};
163
+ normalized.missingFields ??= [];
164
+ normalized.warnings ??= [];
165
+ if (!contract)
166
+ return normalized;
167
+ const sourceParams = typeof normalized.params === 'object' && normalized.params ? normalized.params : {};
168
+ const params = {};
169
+ const missingFields = [...new Set(normalized.missingFields)];
170
+ const warnings = [...new Set(normalized.warnings)];
171
+ for (const [key, definition] of Object.entries((contract.params || {}))) {
172
+ let value = sourceParams[key];
173
+ const assignmentParams = contract.normalizeAssignmentParams || [];
174
+ if (assignmentParams.includes(key))
175
+ value = normalizeAssignmentItems(value);
176
+ if (!hasConcreteValue(value) && 'default' in definition)
177
+ value = JSON.parse(JSON.stringify(definition.default));
178
+ if (hasConcreteValue(value) && !hasRequiredShape(value, definition)) {
179
+ warnings.push(`${componentType}.${key} 参数格式无效:需要 ${definition.valueShape}`);
180
+ value = null;
181
+ }
182
+ if (hasConcreteValue(value) && !hasValidItems(value, definition)) {
183
+ warnings.push(`${componentType}.${key} 参数项格式无效`);
184
+ value = null;
185
+ }
186
+ if (hasConcreteValue(value) && definition.valueType === 'enum' && Array.isArray(definition.options) && definition.options.length > 0) {
187
+ const options = new Set(definition.options.map((o) => o.value));
188
+ if (!options.has(value)) {
189
+ warnings.push(`${componentType}.${key} 枚举值无效:${value}`);
190
+ value = null;
191
+ }
192
+ }
193
+ if (hasConcreteValue(value)) {
194
+ params[key] = value;
195
+ const idx = missingFields.indexOf(key);
196
+ if (idx >= 0)
197
+ missingFields.splice(idx, 1);
198
+ }
199
+ else if (isRequired(definition, sourceParams) && !missingFields.includes(key)) {
200
+ missingFields.push(key);
201
+ }
202
+ }
203
+ for (const key of Object.keys(sourceParams)) {
204
+ if (!(key in (contract.params || {}))) {
205
+ warnings.push(`${componentType}.${key} 不在当前简化组件契约中,已忽略`);
206
+ }
207
+ }
208
+ normalized.params = params;
209
+ normalized.missingFields = missingFields;
210
+ normalized.warnings = warnings;
211
+ return normalized;
212
+ }
213
+ //# sourceMappingURL=component_registry.js.map