digitalsee-ai-flow-cli 0.1.5 → 0.1.7

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.
@@ -10,11 +10,11 @@ function registerFlowTest(flowCmd) {
10
10
  .command("test <nodeId>")
11
11
  .description("测试指定连接流的指定节点")
12
12
  .option("--flow-id <flowId>", "连接流 ID")
13
- .option("--data-file <path>", "JSON 文件路径,用于覆盖节点配置")
14
- .option("--data <json>", "JSON 字符串,用于覆盖节点配置")
13
+ .option("--data-file <path>", "JSON 文件路径,格式 {\"properties\": {...}},用于覆盖节点配置")
14
+ .option("--data <json>", "JSON 字符串,格式 {\"properties\": {...}},用于覆盖节点配置")
15
15
  .action(async (nodeId, options) => {
16
16
  try {
17
- const configValues = (0, helpers_1.resolveDataOption)(options);
17
+ const configValues = (0, helpers_1.resolveDataOption)(options, helpers_1.NODE_CONFIG_DATA_SCHEMA);
18
18
  if (configValues) {
19
19
  (0, output_1.printInfo)("正在获取节点详情...");
20
20
  const nodeDetail = await (0, node_1.getNodeDetail)(nodeId);
@@ -22,11 +22,8 @@ function registerFlowTest(flowCmd) {
22
22
  (0, output_1.printError)(`未找到节点 ${nodeId}`);
23
23
  return;
24
24
  }
25
- const existingProps = nodeDetail.properties || {};
26
- const mergeValues = configValues.properties !== undefined ? configValues.properties : configValues;
27
- const mergedProperties = (0, helpers_1.deepMergePlain)(existingProps, mergeValues);
28
25
  if (nodeDetail.config_schema) {
29
- const configSchema = (0, format_1.deepMergeValues)(nodeDetail.config_schema, mergeValues);
26
+ const configSchema = (0, format_1.mergeConfigValues)(nodeDetail.config_schema, configValues.properties);
30
27
  const validationErrors = (0, format_1.validateNodePropertyValues)(configSchema);
31
28
  if (validationErrors.length > 0) {
32
29
  (0, output_1.printWarning)(`节点配置值校验发现 ${validationErrors.length} 个问题:`);
@@ -36,8 +33,17 @@ function registerFlowTest(flowCmd) {
36
33
  }
37
34
  }
38
35
  }
36
+ const specialErrors = (0, format_1.validateSpecialNodeType)(nodeDetail.node_type, nodeDetail);
37
+ if (specialErrors.length > 0) {
38
+ (0, output_1.printWarning)(`特殊节点参数校验发现 ${specialErrors.length} 个问题:`);
39
+ for (const err of specialErrors) {
40
+ const ruleLabel = err.rule === "required" ? "必填" : "类型";
41
+ (0, output_1.printWarning)(` [${ruleLabel}] ${err.message}`);
42
+ }
43
+ }
44
+ const updatePayload = (0, format_1.deepMerge)(nodeDetail, configValues);
39
45
  (0, output_1.printInfo)("正在更新节点配置...");
40
- await (0, node_1.updateNode)(nodeId, { properties: mergedProperties });
46
+ await (0, node_1.updateNode)(nodeId, updatePayload);
41
47
  (0, output_1.printSuccess)("节点配置已更新");
42
48
  }
43
49
  if (options.flowId) {
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/flow/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/flow/test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyL5D"}
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwL5D"}
@@ -99,12 +99,12 @@ function registerFlowVariables(flowCmd) {
99
99
  varCmd
100
100
  .command("inject <flowId> <nodeId>")
101
101
  .description("在节点配置中注入变量引用")
102
- .option("--data-file <path>", "包含变量占位符的 JSON 配置文件路径")
103
- .option("--data <json>", "包含变量占位符的 JSON 字符串")
102
+ .option("--data-file <path>", "JSON 文件路径,格式 {\"properties\": {...}},包含变量占位符")
103
+ .option("--data <json>", "JSON 字符串,格式 {\"properties\": {...}},包含变量占位符")
104
104
  .option("--dry-run", "仅预览替换结果,不实际更新节点", false)
105
105
  .action(async (flowId, nodeId, options) => {
106
106
  try {
107
- const configValues = (0, helpers_1.resolveDataOption)(options);
107
+ const configValues = (0, helpers_1.resolveDataOption)(options, helpers_1.NODE_CONFIG_DATA_SCHEMA);
108
108
  if (!configValues) {
109
109
  (0, output_1.printError)("需要提供 --data <json> 或 --data-file <path>");
110
110
  return;
@@ -145,9 +145,7 @@ function registerFlowVariables(flowCmd) {
145
145
  (0, output_1.printError)(`未找到节点 ${nodeId}`);
146
146
  return;
147
147
  }
148
- const existingProps = nodeDetail.properties || {};
149
- const mergeValues = configValues.properties !== undefined ? configValues.properties : configValues;
150
- const mergedProperties = (0, helpers_1.deepMergePlain)(existingProps, mergeValues);
148
+ const updatePayload = (0, format_1.deepMerge)(nodeDetail, configValues);
151
149
  if (options.dryRun) {
152
150
  (0, output_1.printHeader)("预览: 带变量注入的配置");
153
151
  (0, output_1.printSubHeader)("变量引用列表");
@@ -158,7 +156,7 @@ function registerFlowVariables(flowCmd) {
158
156
  console.log(` ${resolved} ${ref.raw}`);
159
157
  }
160
158
  (0, output_1.printSubHeader)("待提交的配置");
161
- (0, output_1.printJson)(mergedProperties);
159
+ (0, output_1.printJson)(updatePayload);
162
160
  (0, output_1.printInfo)("dry-run 模式,未实际更新节点");
163
161
  return;
164
162
  }
@@ -166,7 +164,7 @@ function registerFlowVariables(flowCmd) {
166
164
  (0, output_1.printWarning)("存在无法解析的变量引用,继续更新节点...");
167
165
  }
168
166
  (0, output_1.printInfo)("正在更新节点配置...");
169
- await (0, node_1.updateNode)(nodeId, { properties: mergedProperties });
167
+ await (0, node_1.updateNode)(nodeId, updatePayload);
170
168
  (0, output_1.printSuccess)("节点配置已更新(含变量引用)");
171
169
  }
172
170
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/commands/flow/variables.ts"],"names":[],"mappings":";;;;;AAoBA,sDAyLC;AA5MD,kDAA0B;AAC1B,qCAA2C;AAC3C,qCAAuD;AACvD,+CAAwE;AACxE,2CAAmD;AACnD,qDAA+F;AAC/F,2CAUwB;AAGxB,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvB,MAAM;SACH,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,oBAAoB,EAAE,WAAW,CAAC;SACzC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC;SAC9B,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,IAAA,kBAAS,EAAC,SAAS,MAAM,SAAS,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAC;YAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAChF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,YAAY;gBACrB,KAAK;aACN,CAAC;YAEF,IAAA,kBAAS,EAAC,QAAQ,YAAY,WAAW,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAqB,MAAM,IAAA,6BAAiB,EAC1D,MAAM,EACN,OAAO,CACR,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;gBACxE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,IAAI,CAAC;wBACH,MAAM,CAAC,eAAe,GAAG,MAAM,IAAA,8BAAkB,GAAE,CAAC;oBACtD,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM,CAAC,eAAe,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;oBACjD,CAAC;gBACH,CAAC;gBACD,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAA,oBAAW,EAAC,SAAS,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;YAC5C,IAAA,sBAAa,EAAC;gBACZ,CAAC,SAAS,EAAE,MAAM,CAAC;gBACnB,CAAC,MAAM,EAAE,YAAY,CAAC;gBACtB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACrC,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,IAAA,kBAAS,EAAC,YAAY,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;oBACpC,IAAA,uBAAc,EACZ,GAAG,UAAU,CAAC,cAAc,MAAM,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,OAAO,GAAG,CACnF,CAAC;oBACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,GAAG,QAAQ,CAAC,CAC5C,CAAC;oBACF,IAAA,2BAAiB,EAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,IAAA,8BAAkB,GAAE,CAAC;oBAChD,MAAM,UAAU,GACd,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC3B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC5B,IAAA,kBAAS,EAAC,OAAO,CAAC,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;wBAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;4BACjC,CAAC,CAAC,IAAI,IAAI,GAAG;4BACb,CAAC,CAAC,GAAG,IAAI,GAAG;4BACZ,CAAC,CAAC,IAAI,IAAI,GAAG;4BACb,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG;yBAC/B,CAAC,CAAC;wBACH,IAAA,mBAAU,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,IAAA,mBAAU,EAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAA,mBAAU,EAAC,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,0BAA0B,CAAC;SACnC,WAAW,CAAC,cAAc,CAAC;SAC3B,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;SACpD,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;SAC5C,MAAM,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,2BAAiB,EAAC,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAA,mBAAU,EAAC,yCAAyC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAA,0BAAiB,EAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAA,qBAAY,EAAC,4CAA4C,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,IAAA,kBAAS,EAAC,MAAM,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;gBACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CACT,KAAK,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CACjE,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAA,kBAAS,EAAC,kBAAkB,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,MAAM;gBACf,KAAK;aACN,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAE5D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACjE,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACpC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAA,qBAAY,EACV,qBAAqB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjD,CAAC;YACJ,CAAC;YAED,IAAA,kBAAS,EAAC,QAAQ,MAAM,SAAS,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAA,mBAAU,EAAC,SAAS,MAAM,EAAE,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YACD,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;YACnG,MAAM,gBAAgB,GAAG,IAAA,wBAAc,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAEpE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAA,oBAAW,EAAC,cAAc,CAAC,CAAC;gBAC5B,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;gBACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC7C,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC;wBACtB,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;gBACzB,IAAA,kBAAS,EAAC,gBAAgB,CAAC,CAAC;gBAC5B,IAAA,kBAAS,EAAC,oBAAoB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAA,qBAAY,EAAC,uBAAuB,CAAC,CAAC;YACxC,CAAC;YAED,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAC;YACzB,MAAM,IAAA,iBAAU,EAAC,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC3D,IAAA,qBAAY,EAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAA,mBAAU,EAAC,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/commands/flow/variables.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -58,7 +58,7 @@ const program = new commander_1.Command();
58
58
  program
59
59
  .name("ai-flow")
60
60
  .description("AI Flow CLI - 连接流管理工具")
61
- .version("0.1.0");
61
+ .version("0.1.7");
62
62
  (0, config_1.registerConfigCommand)(program);
63
63
  (0, auth_1.registerAuthCommand)(program);
64
64
  (0, flow_1.registerFlowCommand)(program);
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE,wBAAgB,oBAAoB,CAClC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAC7B,cAAc,EAAE,CAYlB;AAmCD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,EAAE,CA0CV;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CA4BnF;AA6CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAY7D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,gBAAgB,CA6BlB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gBAAgB,GACvB,0BAA0B,EAAE,CA0J9B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAmBrB"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE,wBAAgB,oBAAoB,CAClC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAC7B,cAAc,EAAE,CAYlB;AAmCD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,EAAE,CA0CV;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CA4BnF;AA6CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAY7D;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,gBAAgB,CAqBlB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gBAAgB,GACvB,0BAA0B,EAAE,CA0J9B;AA2JD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,0BAA0B,EAAE,CA6L9B;AAWD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAC5C,CAAC,CAqDH"}
@@ -5,9 +5,10 @@ exports.inferScenarios = inferScenarios;
5
5
  exports.sanitizeFileName = sanitizeFileName;
6
6
  exports.fillConfigSchemaDefaults = fillConfigSchemaDefaults;
7
7
  exports.parseVariableRefs = parseVariableRefs;
8
- exports.deepMergeValues = deepMergeValues;
8
+ exports.mergeConfigValues = mergeConfigValues;
9
9
  exports.validateNodePropertyValues = validateNodePropertyValues;
10
- exports.flattenSchemaValues = flattenSchemaValues;
10
+ exports.validateSpecialNodeType = validateSpecialNodeType;
11
+ exports.deepMerge = deepMerge;
11
12
  function configSchemaToParams(subParams) {
12
13
  if (!subParams || !Array.isArray(subParams))
13
14
  return [];
@@ -178,27 +179,22 @@ function parseVariableRefs(text) {
178
179
  }
179
180
  return refs;
180
181
  }
181
- function deepMergeValues(schema, overrides) {
182
+ function mergeConfigValues(schema, overrides) {
182
183
  const clone = JSON.parse(JSON.stringify(schema));
183
184
  function walk(node, overrideMap) {
184
- if (!node || typeof node !== "object")
185
+ if (!node?.sub_params)
185
186
  return;
186
- if (node.name && overrideMap.hasOwnProperty(node.name)) {
187
- const val = overrideMap[node.name];
188
- if (node.sub_params && Array.isArray(node.sub_params) && typeof val === "object" && !Array.isArray(val)) {
189
- walkChildren(node.sub_params, val);
190
- }
191
- else {
192
- node.value = val;
187
+ for (const child of node.sub_params) {
188
+ if (child.name && child.name in overrideMap) {
189
+ const val = overrideMap[child.name];
190
+ if (child.sub_params && typeof val === "object" && !Array.isArray(val)) {
191
+ walk(child, val);
192
+ }
193
+ else {
194
+ child.value = val;
195
+ }
196
+ child.update = true;
193
197
  }
194
- node.update = true;
195
- }
196
- if (node.sub_params && Array.isArray(node.sub_params)) {
197
- walkChildren(node.sub_params, overrideMap);
198
- }
199
- }
200
- function walkChildren(children, overrideMap) {
201
- for (const child of children) {
202
198
  walk(child, overrideMap);
203
199
  }
204
200
  }
@@ -233,7 +229,7 @@ function validateNodePropertyValues(schema) {
233
229
  errors.push({
234
230
  field: fieldPath,
235
231
  rule: "required",
236
- message: `必填字段 "${field.display_name || field.name}" 未提供值`,
232
+ message: `必填字段 "${field.display_name} : ${field.name}" 未提供值`,
237
233
  sample: "",
238
234
  });
239
235
  }
@@ -355,21 +351,372 @@ function validateNodePropertyValues(schema) {
355
351
  walk(schema, "");
356
352
  return errors;
357
353
  }
358
- function flattenSchemaValues(schema) {
359
- const result = {};
360
- function walk(node) {
361
- if (!node || typeof node !== "object")
354
+ const VALID_CONDITION_OPERATORS = new Set([
355
+ "eq", "ne", "gt", "ge", "lt", "le",
356
+ "sw", "ew", "co", "nco", "in", "nin",
357
+ "is_null", "is_not_null",
358
+ ]);
359
+ const NULL_OPERATORS = new Set(["is_null", "is_not_null"]);
360
+ const LOOP_TYPES = new Set(["NUMBER", "ARRAY", "CONDITION"]);
361
+ const ERROR_EXEC_OPTIONS = new Set(["END", "CONTINUE", "BREAK"]);
362
+ const SPECIAL_NODE_TYPES = new Set([
363
+ "ConditionNode",
364
+ "LoopNode",
365
+ "SelfLoopNode",
366
+ "SwitchNode",
367
+ ]);
368
+ function safeSample(val) {
369
+ return (JSON.stringify(val) ?? "").substring(0, 80);
370
+ }
371
+ function validateOrList(orList, path) {
372
+ const errors = [];
373
+ if (!Array.isArray(orList)) {
374
+ errors.push({
375
+ field: path,
376
+ rule: "type",
377
+ message: `${path} 必须是 array 类型`,
378
+ sample: safeSample(orList),
379
+ });
380
+ return errors;
381
+ }
382
+ if (orList.length === 0) {
383
+ errors.push({
384
+ field: path,
385
+ rule: "required",
386
+ message: `${path} 至少需要 1 个条件组`,
387
+ sample: "",
388
+ });
389
+ return errors;
390
+ }
391
+ orList.forEach((orItem, i) => {
392
+ const orPath = `${path}[${i}]`;
393
+ if (!orItem || typeof orItem !== "object") {
394
+ errors.push({
395
+ field: orPath,
396
+ rule: "type",
397
+ message: `${orPath} 必须是 object 类型`,
398
+ sample: safeSample(orItem),
399
+ });
362
400
  return;
363
- if (node.name && node.value !== undefined && !node.sub_params?.length) {
364
- result[node.name] = node.value;
365
401
  }
366
- if (node.sub_params && Array.isArray(node.sub_params)) {
367
- for (const child of node.sub_params) {
368
- walk(child);
402
+ const andList = orItem.and_list;
403
+ if (!Array.isArray(andList)) {
404
+ errors.push({
405
+ field: `${orPath}.and_list`,
406
+ rule: "type",
407
+ message: `${orPath}.and_list 必须是 array 类型`,
408
+ sample: safeSample(andList),
409
+ });
410
+ return;
411
+ }
412
+ if (andList.length === 0) {
413
+ errors.push({
414
+ field: `${orPath}.and_list`,
415
+ rule: "required",
416
+ message: `${orPath}.and_list 至少需要 1 个条件`,
417
+ sample: "",
418
+ });
419
+ return;
420
+ }
421
+ andList.forEach((item, j) => {
422
+ const itemPath = `${orPath}.and_list[${j}]`;
423
+ if (!item || typeof item !== "object") {
424
+ errors.push({
425
+ field: itemPath,
426
+ rule: "type",
427
+ message: `${itemPath} 必须是 object 类型`,
428
+ sample: safeSample(item),
429
+ });
430
+ return;
431
+ }
432
+ if (!item.query || typeof item.query !== "string" || !item.query.trim()) {
433
+ errors.push({
434
+ field: `${itemPath}.query`,
435
+ rule: "required",
436
+ message: `${itemPath}.query 是必填字段,须为变量引用`,
437
+ sample: "",
438
+ });
439
+ }
440
+ if (!item.operator || typeof item.operator !== "string") {
441
+ errors.push({
442
+ field: `${itemPath}.operator`,
443
+ rule: "required",
444
+ message: `${itemPath}.operator 是必填字段`,
445
+ sample: "",
446
+ });
447
+ }
448
+ else if (!VALID_CONDITION_OPERATORS.has(item.operator)) {
449
+ errors.push({
450
+ field: `${itemPath}.operator`,
451
+ rule: "type",
452
+ message: `${itemPath}.operator 无效: "${item.operator}",有效值: ${[...VALID_CONDITION_OPERATORS].join(", ")}`,
453
+ sample: item.operator,
454
+ });
455
+ }
456
+ if (item.operator &&
457
+ !NULL_OPERATORS.has(item.operator) &&
458
+ (item.value === undefined || item.value === null)) {
459
+ errors.push({
460
+ field: `${itemPath}.value`,
461
+ rule: "required",
462
+ message: `${itemPath}.value 在运算符为 "${item.operator}" 时必须提供`,
463
+ sample: "",
464
+ });
465
+ }
466
+ });
467
+ });
468
+ return errors;
469
+ }
470
+ /**
471
+ * 校验特殊节点类型(ConditionNode / LoopNode / SelfLoopNode / SwitchNode)的业务字段。
472
+ * 这些字段位于 data.properties 下,与 sub_params 同级。普通 ActionNode 直接返回空数组。
473
+ */
474
+ function validateSpecialNodeType(nodeType, data) {
475
+ if (!SPECIAL_NODE_TYPES.has(nodeType))
476
+ return [];
477
+ const props = data.properties || {};
478
+ const errors = [];
479
+ switch (nodeType) {
480
+ case "ConditionNode": {
481
+ if (props.or_list === undefined || props.or_list === null) {
482
+ errors.push({
483
+ field: "properties.or_list",
484
+ rule: "required",
485
+ message: "ConditionNode 缺少必填字段 properties.or_list",
486
+ sample: "",
487
+ });
488
+ }
489
+ else {
490
+ errors.push(...validateOrList(props.or_list, "properties.or_list"));
491
+ }
492
+ break;
493
+ }
494
+ case "LoopNode":
495
+ case "SelfLoopNode": {
496
+ // LoopNode 字段在 properties 下双份存在:直接属性 + sub_params[].value
497
+ // CLI --data 只填充 sub_params,API 返回时两者都有,需要从两处查找
498
+ const loopField = (name) => {
499
+ if (props[name] !== undefined && props[name] !== null)
500
+ return props[name];
501
+ const subParams = props.sub_params;
502
+ if (Array.isArray(subParams)) {
503
+ const entry = subParams.find((s) => s.name === name);
504
+ if (entry && entry.value !== undefined && entry.value !== null)
505
+ return entry.value;
506
+ }
507
+ return undefined;
508
+ };
509
+ const loopType = loopField("type");
510
+ if (!loopType || !LOOP_TYPES.has(loopType)) {
511
+ errors.push({
512
+ field: "properties.type",
513
+ rule: "required",
514
+ message: `循环节点 properties.type 必须是 NUMBER / ARRAY / CONDITION 之一,当前为 "${loopType}"`,
515
+ sample: loopType ? String(loopType) : "",
516
+ });
517
+ }
518
+ if (loopType === "NUMBER") {
519
+ const startVal = loopField("start");
520
+ const endVal = loopField("end");
521
+ if (typeof startVal !== "number") {
522
+ errors.push({
523
+ field: "properties.start",
524
+ rule: "type",
525
+ message: `NUMBER 循环的 properties.start 必须是 number 类型,当前为 ${typeof startVal}`,
526
+ sample: String(startVal),
527
+ });
528
+ }
529
+ else if (startVal < 1) {
530
+ errors.push({
531
+ field: "properties.start",
532
+ rule: "type",
533
+ message: `NUMBER 循环的 properties.start 必须 >= 1,当前为 ${startVal}`,
534
+ sample: String(startVal),
535
+ });
536
+ }
537
+ if (typeof endVal !== "number") {
538
+ errors.push({
539
+ field: "properties.end",
540
+ rule: "type",
541
+ message: `NUMBER 循环的 properties.end 必须是 number 类型,当前为 ${typeof endVal}`,
542
+ sample: String(endVal),
543
+ });
544
+ }
545
+ else if (typeof startVal === "number" && endVal < startVal) {
546
+ errors.push({
547
+ field: "properties.end",
548
+ rule: "type",
549
+ message: `NUMBER 循环的 properties.end (${endVal}) 必须 >= properties.start (${startVal})`,
550
+ sample: String(endVal),
551
+ });
552
+ }
553
+ }
554
+ if (loopType === "ARRAY" || loopType === "CONDITION") {
555
+ const exprVal = loopField("expression");
556
+ if (!exprVal || typeof exprVal !== "string" || !exprVal.trim()) {
557
+ errors.push({
558
+ field: "properties.expression",
559
+ rule: "required",
560
+ message: `${loopType} 循环的 properties.expression 是必填字段`,
561
+ sample: exprVal ? String(exprVal).substring(0, 80) : "",
562
+ });
563
+ }
564
+ }
565
+ const ascVal = loopField("asc");
566
+ if (typeof ascVal !== "boolean") {
567
+ errors.push({
568
+ field: "properties.asc",
569
+ rule: "type",
570
+ message: `properties.asc 必须是 boolean 类型,当前为 ${typeof ascVal}`,
571
+ sample: String(ascVal),
572
+ });
573
+ }
574
+ const errExecVal = loopField("errorExec");
575
+ if (!errExecVal || !ERROR_EXEC_OPTIONS.has(errExecVal)) {
576
+ errors.push({
577
+ field: "properties.errorExec",
578
+ rule: "required",
579
+ message: `properties.errorExec 必须是 END / CONTINUE / BREAK 之一,当前为 "${errExecVal}"`,
580
+ sample: errExecVal ? String(errExecVal) : "",
581
+ });
582
+ }
583
+ break;
584
+ }
585
+ case "SwitchNode": {
586
+ const branches = props.branches;
587
+ if (!Array.isArray(branches)) {
588
+ errors.push({
589
+ field: "properties.branches",
590
+ rule: "type",
591
+ message: `properties.branches 必须是 array 类型,当前为 ${typeof branches}`,
592
+ sample: safeSample(branches),
593
+ });
594
+ }
595
+ else if (branches.length < 2 || branches.length > 10) {
596
+ errors.push({
597
+ field: "properties.branches",
598
+ rule: "type",
599
+ message: `properties.branches 需要 2-10 个分支,当前为 ${branches.length} 个`,
600
+ sample: "",
601
+ });
602
+ }
603
+ else {
604
+ const seenIds = new Set();
605
+ branches.forEach((branch, i) => {
606
+ const brPath = `properties.branches[${i}]`;
607
+ if (!branch || typeof branch !== "object") {
608
+ errors.push({
609
+ field: brPath,
610
+ rule: "type",
611
+ message: `${brPath} 必须是 object 类型`,
612
+ sample: safeSample(branch),
613
+ });
614
+ return;
615
+ }
616
+ if (!branch.id || typeof branch.id !== "string" || !branch.id.trim()) {
617
+ errors.push({
618
+ field: `${brPath}.id`,
619
+ rule: "required",
620
+ message: `${brPath}.id 是必填字段`,
621
+ sample: "",
622
+ });
623
+ }
624
+ else if (seenIds.has(branch.id)) {
625
+ errors.push({
626
+ field: `${brPath}.id`,
627
+ rule: "type",
628
+ message: `分支 id "${branch.id}" 重复`,
629
+ sample: branch.id,
630
+ });
631
+ }
632
+ else {
633
+ seenIds.add(branch.id);
634
+ }
635
+ if (!branch.name || typeof branch.name !== "string" || !branch.name.trim()) {
636
+ errors.push({
637
+ field: `${brPath}.name`,
638
+ rule: "required",
639
+ message: `${brPath}.name 是必填字段`,
640
+ sample: "",
641
+ });
642
+ }
643
+ if (!branch.or_list) {
644
+ errors.push({
645
+ field: `${brPath}.or_list`,
646
+ rule: "required",
647
+ message: `${brPath}.or_list 是必填字段`,
648
+ sample: "",
649
+ });
650
+ }
651
+ else {
652
+ errors.push(...validateOrList(branch.or_list, `${brPath}.or_list`));
653
+ }
654
+ });
655
+ }
656
+ break;
657
+ }
658
+ }
659
+ return errors;
660
+ }
661
+ function isPlainObject(value) {
662
+ return (value !== null &&
663
+ typeof value === "object" &&
664
+ !Array.isArray(value) &&
665
+ Object.prototype.toString.call(value) === "[object Object]");
666
+ }
667
+ function deepMerge(target, ...sources) {
668
+ for (const source of sources) {
669
+ if (source == null || typeof source !== "object" || Array.isArray(source)) {
670
+ continue;
671
+ }
672
+ const subParams = target.sub_params;
673
+ for (const key of Object.keys(source)) {
674
+ const srcVal = source[key];
675
+ // sub_params-aware merge: 匹配 name 并原地修改 target 的 sub_params 中的 value
676
+ if (Array.isArray(subParams)) {
677
+ const matched = subParams.find((item) => item.name === key);
678
+ if (matched) {
679
+ if (matched.sub_params && isPlainObject(srcVal)) {
680
+ deepMerge(matched, srcVal);
681
+ }
682
+ else {
683
+ matched.value = srcVal;
684
+ }
685
+ continue;
686
+ }
687
+ }
688
+ const tgtVal = target[key];
689
+ // sub_params 数组按 name 合并,避免整体替换导致数据丢失
690
+ if (key === "sub_params" && Array.isArray(tgtVal) && Array.isArray(srcVal)) {
691
+ for (const srcItem of srcVal) {
692
+ if (!srcItem || typeof srcItem.name !== "string") {
693
+ tgtVal.push(srcItem);
694
+ continue;
695
+ }
696
+ const matched = tgtVal.find((t) => t.name === srcItem.name);
697
+ if (matched) {
698
+ if (matched.sub_params && isPlainObject(srcItem.value)) {
699
+ deepMerge(matched, srcItem.value);
700
+ }
701
+ else if (srcItem.value !== undefined) {
702
+ matched.value = srcItem.value;
703
+ }
704
+ if (srcItem.update !== undefined)
705
+ matched.update = srcItem.update;
706
+ }
707
+ else {
708
+ tgtVal.push(srcItem);
709
+ }
710
+ }
711
+ }
712
+ else if (isPlainObject(tgtVal) && isPlainObject(srcVal)) {
713
+ target[key] = deepMerge({ ...tgtVal }, srcVal);
714
+ }
715
+ else {
716
+ target[key] = srcVal;
369
717
  }
370
718
  }
371
719
  }
372
- walk(schema);
373
- return result;
720
+ return target;
374
721
  }
375
722
  //# sourceMappingURL=format.js.map