flycode-mcp 1.14.6 → 1.14.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.
- package/README.md +122 -820
- package/dist/cli.js +537 -8
- package/dist/flycode-mcp.min.js +1 -1
- package/dist/skills/flycode-mcp-skill/SKILL.md +7 -4
- package/dist/skills/flycode-mcp-skill/tools/form.md +55 -5
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -724,7 +724,7 @@ var init_gateway = __esm({
|
|
|
724
724
|
});
|
|
725
725
|
|
|
726
726
|
// src/tools/enum-reference.ts
|
|
727
|
-
var COMMON_ENUM, LOGIC_ENUM, PROPERTY_TYPE_ENUM, ENTITY_ENUM, FORM_ENUM, FUNCTION_ENUM;
|
|
727
|
+
var COMMON_ENUM, LOGIC_ENUM, PROPERTY_TYPE_ENUM, ENTITY_ENUM, FORM_ENUM, FORM_ACTION_ENUM, FUNCTION_ENUM;
|
|
728
728
|
var init_enum_reference = __esm({
|
|
729
729
|
"src/tools/enum-reference.ts"() {
|
|
730
730
|
"use strict";
|
|
@@ -733,6 +733,7 @@ var init_enum_reference = __esm({
|
|
|
733
733
|
PROPERTY_TYPE_ENUM = `properties[].propertytypecode\uFF08\u5B57\u6BB5\u7C7B\u578B\uFF09\uFF1A1-\u4E3B\u952E(int8) / 2-\u540D\u79F0(200) / 3-\u6587\u672C(200) / 4-\u957F\u6587\u672C / 5-\u6574\u6570(int4) / 6-\u957F\u6574\u6570(int8) / 10-\u6570\u5B57(numeric) / 7-\u65E5\u671F\u65F6\u95F4(ts) / 29-\u5E74\u6708\u65E5(date) / 30-\u65F6\u95F4\u8303\u56F4 / 18-\u72B6\u6001(int4) / 16-\u56FE\u7247 / 26-\u9644\u4EF6 / 17-\u5B9A\u4F4D / 19-\u9009\u9879\u96C6 / 8-\u521B\u5EFA\u4EBA / 9-\u4FEE\u6539\u4EBA / 11-\u521B\u5EFA\u65F6\u95F4 / 12-\u4FEE\u6539\u65F6\u95F4 / 31-\u62FC\u97F3 / 100-\u662F\u5426\u9ED8\u8BA4 / 13-\u624B\u673A\u53F7 / 15-\u56FA\u5B9A\u7535\u8BDD / 14-\u90AE\u7BB1 / 27-\u90AE\u7F16 / 20-\u6392\u5E8F / 200000000000-\u5173\u8054\u5BF9\u8C61 / 100000000000-\u4E1A\u52A1\u5BF9\u8C61 / 10000000000-\u5B57\u5178\u5BF9\u8C61 / 300000000000-\u590D\u6742\u5173\u8054\u5BF9\u8C61 / 1000000000-\u672C\u5BF9\u8C61\u3002`;
|
|
734
734
|
ENTITY_ENUM = `\u3010entity \u679A\u4E3E\u3011datapattern\uFF08\u5B9E\u4F53\u7C7B\u578B\uFF09\uFF1A1-\u539F\u751F / 2-\u884D\u751F / 3-\u89C6\u56FE / 4-\u8D85\u7EA7\u8868\u5355\u3002objecttypecode\uFF08\u5206\u7C7B\uFF09\uFF1A1-\u57FA\u672C / 2-\u6811\u5F62 / 3-\u6570\u636E\u5B57\u5178 / 4-\u5173\u8054\u3002objectcatgory\uFF1A1-\u6743\u9650\u5BF9\u8C61 / 2-\u5426\u3002publishstatus\uFF1A1-\u5DF2\u53D1\u5E03 / 2-\u672A\u53D1\u5E03\u3002hasoffline\uFF1A1-\u6709 / 0-\u65E0\u3002properties[].idxtype\uFF08\u7D22\u5F15\uFF09\uFF1A1-\u65E0 / 2-\u4E3B\u952E\u7D22\u5F15\u3002`;
|
|
735
735
|
FORM_ENUM = `\u3010form \u679A\u4E3E\u3011type\uFF08\u9875\u9762\u7C7B\u578B\uFF09\uFF1A5-\u5217\u8868\u67E5\u8BE2 / 1-\u666E\u901A\u9875\u9762 / 99-\u4E8C\u5F00 / 10-switchpage / 11-\u6811\u5BFC\u822A\u5217\u8868 / 100-\u539F\u751F / 101-\u7A7A\u767D / 7-\u62A5\u8868 / 12-\u6392\u5E8F / 300-\u6B65\u9AA4\u7BA1\u7406 / 1000-\u5168\u5C40\u51FD\u6570\u3002clientcategorycode\uFF08\u7528\u6237\u7AEF\uFF09\uFF1A1-web / 2-app / 6-\u5C0F\u7A0B\u5E8F\u3002`;
|
|
736
|
+
FORM_ACTION_ENUM = `\u3010action \u7C7B\u578B\u3011flycode / datarequest(\u6570\u636E\u8BF7\u6C42) / datasubmit(\u6570\u636E\u63D0\u4EA4) / dataimport(\u5BFC\u5165\u884C\u4E3A) / dataexport(\u5BFC\u51FA\u884C\u4E3A) / datatransfer(\u6570\u636E\u8F6C\u79FB) / dataserialize(\u6570\u636E\u5E8F\u5217\u5316) / smartrequest(\u667A\u6167\u573A\u666F\u8BF7\u6C42) / link(\u94FE\u63A5) / call(\u4E8B\u4EF6\u547C\u53EB) / return(\u8FD4\u56DE) / af_preaddflow(\u6D41\u7A0B\u53D1\u8D77) / af_handleflow(\u5904\u7406\u5BA1\u6279) / af_flowdetail(\u6D41\u7A0B\u8282\u70B9\u8BE6\u60C5) / ctrlevent(\u8C03\u7528\u63A7\u4EF6\u4E8B\u4EF6) / receivelink(\u63A5\u6536\u53C2\u6570) / eventlink(\u4E8B\u4EF6\u76D1\u542C) / attributeevaluate(\u5C5E\u6027\u8868\u8FBE\u5F0F) / alert(\u63D0\u793A\u5F39\u7A97) / toast(\u8F7B\u63D0\u793A) / share(\u5206\u4EAB\u884C\u4E3A) / popsubview(\u6253\u5F00popview) / closesubview(\u5173\u95EDpopview) / print(\u6253\u5370\u4E8B\u4EF6) / urllink(URL\u94FE\u63A5) / runevent(\u6267\u884C\u4E8B\u4EF6)\u3002\u6CE8\u610F\uFF1Ainitial\uFF08\u9875\u9762\u521D\u59CB\u5316\uFF09\u4EC5\u652F\u6301 flycode / receivelink\uFF0C\u5176\u4F59\u7C7B\u578B\u53EA\u80FD\u52A0\u5230 handlers \u4E8B\u4EF6\uFF1B\u300C\u6570\u636E\u5B57\u5178\u7ED1\u5B9A\u300D\u65E0\u72EC\u7ACB type\uFF0C\u7528 datarequest + fields:{"_type_spe":"dictbind","logiccode":"100000000001100001"}\u3002`;
|
|
736
737
|
FUNCTION_ENUM = `\u3010function \u679A\u4E3E\u3011dddlayer\uFF08\u51FD\u6570\u5C42\u7EA7\uFF09\uFF1A\u56FA\u5B9A\u4F20 "3"\uFF08\u51FD\u6570\u7C7B\uFF09\u3002\u6570\u636E\u5E93\u51FD\u6570 publishstatus\uFF1A1-\u672A\u53D1\u5E03 / 2-\u5DF2\u53D1\u5E03\u3002`;
|
|
737
738
|
}
|
|
738
739
|
});
|
|
@@ -3908,7 +3909,57 @@ async function getFormFragment(code, opts) {
|
|
|
3908
3909
|
message: fragmentMessage
|
|
3909
3910
|
};
|
|
3910
3911
|
}
|
|
3911
|
-
|
|
3912
|
+
function buildAction(input) {
|
|
3913
|
+
const { type } = input;
|
|
3914
|
+
const base = structuredClone(ACTION_TEMPLATES[type] ?? {});
|
|
3915
|
+
const action = {
|
|
3916
|
+
code: input.code,
|
|
3917
|
+
type,
|
|
3918
|
+
desc: input.desc ?? ACTION_TYPE_LABELS[type],
|
|
3919
|
+
condition: input.condition ?? "",
|
|
3920
|
+
...base
|
|
3921
|
+
};
|
|
3922
|
+
if (type === "flycode" && input.script != null) action.script = input.script;
|
|
3923
|
+
if (input.fields) Object.assign(action, input.fields);
|
|
3924
|
+
return action;
|
|
3925
|
+
}
|
|
3926
|
+
function nextActionCode(handlerCode, actions) {
|
|
3927
|
+
const suffix = handlerCode.replace(/[^0-9A-Za-z_]/g, "").slice(-8) || "action";
|
|
3928
|
+
const used = new Set(actions.map((a) => a?.code).filter((c) => Boolean(c)));
|
|
3929
|
+
const base = `action_${suffix}`;
|
|
3930
|
+
if (!used.has(base)) return base;
|
|
3931
|
+
let n = 2;
|
|
3932
|
+
while (used.has(`${base}_${n}`)) n++;
|
|
3933
|
+
return `${base}_${n}`;
|
|
3934
|
+
}
|
|
3935
|
+
function locateAction(actions, actionCode, actionIndex) {
|
|
3936
|
+
if (actionCode != null && actionCode !== "") {
|
|
3937
|
+
const found = actions.find((a) => a?.code === actionCode);
|
|
3938
|
+
if (!found) return { error: "NODE_NOT_FOUND", message: `\u672A\u627E\u5230 actionCode=${actionCode}\uFF08\u8BE5 handler \u4E0B\u73B0\u6709 code\uFF1A${actions.map((a) => a?.code ?? "(\u7A7A)").join(", ") || "\u65E0"}\uFF09` };
|
|
3939
|
+
return { action: found };
|
|
3940
|
+
}
|
|
3941
|
+
const ai = actionIndex ?? 0;
|
|
3942
|
+
if (!Number.isInteger(ai) || ai < 0 || ai >= actions.length) {
|
|
3943
|
+
return { error: "NO_TARGET", message: `actionIndex=${ai} \u8D8A\u754C\uFF0C\u8BE5 handler \u5171\u6709 ${actions.length} \u4E2A action` };
|
|
3944
|
+
}
|
|
3945
|
+
const target = actions[ai];
|
|
3946
|
+
if (!target) return { error: "NODE_NOT_FOUND", message: `actionIndex=${ai} \u5904\u4E3A\u7A7A` };
|
|
3947
|
+
return { action: target };
|
|
3948
|
+
}
|
|
3949
|
+
function locateActionForVerify(form2, baseline, op, resolvedCode) {
|
|
3950
|
+
const actions = findPresenterHandlers(form2, op.handlerCode, op.scope)[0]?.handler.actions ?? [];
|
|
3951
|
+
const code = resolvedCode || (op.actionCode != null && op.actionCode !== "" ? op.actionCode : "");
|
|
3952
|
+
if (code) {
|
|
3953
|
+
return actions.find((a) => a?.code === code) ?? void 0;
|
|
3954
|
+
}
|
|
3955
|
+
const idx = op.actionIndex ?? 0;
|
|
3956
|
+
if (baseline) {
|
|
3957
|
+
const baseAct = (findPresenterHandlers(baseline, op.handlerCode, op.scope)[0]?.handler.actions ?? [])[idx];
|
|
3958
|
+
if (baseAct?.code) return actions.find((a) => a?.code === baseAct.code) ?? void 0;
|
|
3959
|
+
}
|
|
3960
|
+
return actions[idx] ?? void 0;
|
|
3961
|
+
}
|
|
3962
|
+
async function applyFormOp(form, op, index, resolvedActionCodes) {
|
|
3912
3963
|
const ok = (extra = {}) => ({
|
|
3913
3964
|
index,
|
|
3914
3965
|
op: op.op,
|
|
@@ -4097,6 +4148,113 @@ async function applyFormOp(form, op, index) {
|
|
|
4097
4148
|
label: `action ${op.actionCode ?? op.actionIndex ?? 0}`
|
|
4098
4149
|
});
|
|
4099
4150
|
}
|
|
4151
|
+
case "add_action": {
|
|
4152
|
+
const found = findPresenterHandlers(form, op.handlerCode, op.scope);
|
|
4153
|
+
if (found.length === 0) {
|
|
4154
|
+
return fail("NODE_NOT_FOUND", `\u672A\u5728 presenter\uFF08handlers \u4E0E initial\uFF09\u4E2D\u627E\u5230 handlerCode=${op.handlerCode}`);
|
|
4155
|
+
}
|
|
4156
|
+
if (found.length > 1) {
|
|
4157
|
+
return fail("DUP_CODE", `handlerCode=${op.handlerCode} \u5728 handlers \u4E0E initial \u4E2D\u540C\u65F6\u51FA\u73B0\uFF0C\u8BF7\u7528 scope \u6307\u5B9A\u552F\u4E00\u5BB9\u5668`);
|
|
4158
|
+
}
|
|
4159
|
+
const { handler, scope } = found[0];
|
|
4160
|
+
const type = op.type ?? "flycode";
|
|
4161
|
+
if (!FORM_ACTION_TYPES.includes(type)) {
|
|
4162
|
+
return fail("INVALID_PARAMS", `\u672A\u77E5 action type=${String(type)}\uFF0C\u53EF\u9009\u503C\u89C1 FORM_ACTION_TYPES`);
|
|
4163
|
+
}
|
|
4164
|
+
if (scope === "initial" && !INITIAL_ACTION_TYPES.includes(type)) {
|
|
4165
|
+
return fail(
|
|
4166
|
+
"TYPE_NOT_ALLOWED",
|
|
4167
|
+
`\u521D\u59CB\u5316\u4E8B\u4EF6\uFF08initial\uFF09\u4E2D\u7684 action \u4EC5\u652F\u6301 flycode / receivelink\uFF08\u63A5\u6536\u53C2\u6570\uFF09\uFF0C\u4E0D\u652F\u6301 type=${type}\uFF1B\u8BE5\u7C7B\u52A8\u4F5C\u8BF7\u52A0\u5230 handlers \u4E8B\u4EF6\u4E2D`
|
|
4168
|
+
);
|
|
4169
|
+
}
|
|
4170
|
+
if (op.script != null && type !== "flycode") {
|
|
4171
|
+
return fail("INVALID_PARAMS", `script \u4EC5\u9002\u7528\u4E8E type="flycode"\uFF1Btype=${type} \u8BF7\u6539\u7528 fields \u4F20\u8BE5\u7C7B\u578B\u5B57\u6BB5\uFF08\u5982 urllink \u7684 url\u3001toast \u7684 message\uFF09`);
|
|
4172
|
+
}
|
|
4173
|
+
if (op.fields && Object.prototype.hasOwnProperty.call(op.fields, "type")) {
|
|
4174
|
+
return fail("INVALID_PARAMS", "fields \u4E0D\u80FD\u8986\u76D6 type\uFF0C\u8BF7\u7528 type \u53C2\u6570\u6307\u5B9A\u52A8\u4F5C\u7C7B\u578B");
|
|
4175
|
+
}
|
|
4176
|
+
const actions = handler.actions ?? (handler.actions = []);
|
|
4177
|
+
const code = op.code ?? nextActionCode(op.handlerCode, actions);
|
|
4178
|
+
if (!code) return fail("INVALID_PARAMS", "action code \u4E0D\u80FD\u4E3A\u7A7A");
|
|
4179
|
+
if (actions.some((a) => a?.code === code)) {
|
|
4180
|
+
return fail("DUP_CODE", `handler ${op.handlerCode} \u4E2D\u5DF2\u5B58\u5728 code=${code} \u7684 action\uFF0C\u8BF7\u6362\u4E00\u4E2A code`);
|
|
4181
|
+
}
|
|
4182
|
+
const action = buildAction({
|
|
4183
|
+
type,
|
|
4184
|
+
code,
|
|
4185
|
+
desc: op.desc,
|
|
4186
|
+
condition: op.condition,
|
|
4187
|
+
script: op.script,
|
|
4188
|
+
fields: op.fields
|
|
4189
|
+
});
|
|
4190
|
+
const pos = op.position ?? actions.length;
|
|
4191
|
+
actions.splice(pos, 0, action);
|
|
4192
|
+
return ok({
|
|
4193
|
+
message: `\u5DF2\u5728 ${scope} \u7684 handler ${op.handlerCode} \u7684 position=${pos} \u63D2\u5165 action code=${code}\uFF08type=${type}\uFF0Cdesc=${String(action.desc)}\uFF09`
|
|
4194
|
+
});
|
|
4195
|
+
}
|
|
4196
|
+
case "patch_action": {
|
|
4197
|
+
const found = findPresenterHandlers(form, op.handlerCode, op.scope);
|
|
4198
|
+
if (found.length === 0) {
|
|
4199
|
+
return fail("NODE_NOT_FOUND", `\u672A\u5728 presenter\uFF08handlers \u4E0E initial\uFF09\u4E2D\u627E\u5230 handlerCode=${op.handlerCode}`);
|
|
4200
|
+
}
|
|
4201
|
+
if (found.length > 1) {
|
|
4202
|
+
return fail("DUP_CODE", `handlerCode=${op.handlerCode} \u5728 handlers \u4E0E initial \u4E2D\u540C\u65F6\u51FA\u73B0\uFF0C\u8BF7\u7528 scope \u6307\u5B9A\u552F\u4E00\u5BB9\u5668`);
|
|
4203
|
+
}
|
|
4204
|
+
const { handler, scope } = found[0];
|
|
4205
|
+
const actions = handler.actions ?? [];
|
|
4206
|
+
const located = locateAction(actions, op.actionCode, op.actionIndex);
|
|
4207
|
+
if ("error" in located) return fail(located.error, located.message);
|
|
4208
|
+
const act = located.action;
|
|
4209
|
+
const patch = op.patch ?? {};
|
|
4210
|
+
const keys = Object.keys(patch);
|
|
4211
|
+
if (keys.length === 0) return fail("INVALID_PARAMS", "patch \u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u7ED9\u51FA\u8981\u4FEE\u6539\u7684\u5B57\u6BB5");
|
|
4212
|
+
if (keys.includes("type")) {
|
|
4213
|
+
return fail(
|
|
4214
|
+
"INVALID_PARAMS",
|
|
4215
|
+
`patch \u4E0D\u80FD\u8986\u76D6 type\uFF08\u5F53\u524D ${String(act.type)}\uFF09\uFF1Atype \u51B3\u5B9A\u8BE5\u52A8\u4F5C\u7684\u5B57\u6BB5\u9AA8\u67B6\uFF0C\u76F4\u63A5\u6539\u4F1A\u6B8B\u7559\u65E7\u7C7B\u578B\u5B57\u6BB5\uFF1B\u6362\u7C7B\u578B\u8BF7 remove_action + add_action`
|
|
4216
|
+
);
|
|
4217
|
+
}
|
|
4218
|
+
if (keys.includes("code")) {
|
|
4219
|
+
return fail(
|
|
4220
|
+
"INVALID_PARAMS",
|
|
4221
|
+
"patch \u4E0D\u80FD\u8986\u76D6 code\uFF1Aaction code \u662F\u540E\u7EED\u5B9A\u4F4D\uFF08replace_script / patch_action_array_item\uFF09\u4E0E\u56DE\u8BFB\u6821\u9A8C\u7684\u952E\uFF0C\u91CD\u547D\u540D\u8BF7 remove_action + add_action"
|
|
4222
|
+
);
|
|
4223
|
+
}
|
|
4224
|
+
if (keys.includes("script")) {
|
|
4225
|
+
if (act.type !== "flycode") {
|
|
4226
|
+
return fail("INVALID_PARAMS", `script \u4EC5\u9002\u7528\u4E8E type="flycode"\uFF1B\u5F53\u524D action type=${String(act.type)}\uFF0C\u5176\u5B57\u6BB5\u8BF7\u76F4\u63A5\u5199\u8FDB patch`);
|
|
4227
|
+
}
|
|
4228
|
+
if (typeof patch.script !== "string") {
|
|
4229
|
+
return fail("INVALID_PARAMS", "patch.script \u5FC5\u987B\u662F\u5B57\u7B26\u4E32");
|
|
4230
|
+
}
|
|
4231
|
+
}
|
|
4232
|
+
Object.assign(act, patch);
|
|
4233
|
+
resolvedActionCodes?.set(index, act.code == null ? null : String(act.code));
|
|
4234
|
+
return ok({
|
|
4235
|
+
message: `\u5DF2\u66F4\u65B0 ${scope} \u7684 handler ${op.handlerCode} \u4E2D action code=${String(act.code)} \u7684 ${keys.join(", ")}`
|
|
4236
|
+
});
|
|
4237
|
+
}
|
|
4238
|
+
case "remove_action": {
|
|
4239
|
+
const found = findPresenterHandlers(form, op.handlerCode, op.scope);
|
|
4240
|
+
if (found.length === 0) {
|
|
4241
|
+
return fail("NODE_NOT_FOUND", `\u672A\u5728 presenter\uFF08handlers \u4E0E initial\uFF09\u4E2D\u627E\u5230 handlerCode=${op.handlerCode}`);
|
|
4242
|
+
}
|
|
4243
|
+
if (found.length > 1) {
|
|
4244
|
+
return fail("DUP_CODE", `handlerCode=${op.handlerCode} \u5728 handlers \u4E0E initial \u4E2D\u540C\u65F6\u51FA\u73B0\uFF0C\u8BF7\u7528 scope \u6307\u5B9A\u552F\u4E00\u5BB9\u5668`);
|
|
4245
|
+
}
|
|
4246
|
+
const { handler, scope } = found[0];
|
|
4247
|
+
const actions = handler.actions ?? [];
|
|
4248
|
+
const located = locateAction(actions, op.actionCode, op.actionIndex);
|
|
4249
|
+
if ("error" in located) return fail(located.error, located.message);
|
|
4250
|
+
const idx = actions.indexOf(located.action);
|
|
4251
|
+
const removedCode = located.action.code ?? "";
|
|
4252
|
+
actions.splice(idx, 1);
|
|
4253
|
+
resolvedActionCodes?.set(index, removedCode || null);
|
|
4254
|
+
return ok({
|
|
4255
|
+
message: `\u5DF2\u4ECE ${scope} \u7684 handler ${op.handlerCode} \u5220\u9664 action code=${removedCode || `#${idx}`}\uFF08type=${String(located.action.type)}\uFF09\uFF0C\u5269\u4F59 ${actions.length} \u4E2A`
|
|
4256
|
+
});
|
|
4257
|
+
}
|
|
4100
4258
|
case "insert_node": {
|
|
4101
4259
|
const parent = findViewNode(form.view?.body ?? null, op.parentCode);
|
|
4102
4260
|
if (!parent) return fail("NODE_NOT_FOUND", `\u672A\u5728 view \u6811\u4E2D\u627E\u5230 parentCode=${op.parentCode} \u7684\u7236\u8282\u70B9`);
|
|
@@ -4244,7 +4402,7 @@ function drillToArray(base, arrayProp, elementArrayProp, itemKey, itemKeyValue,
|
|
|
4244
4402
|
if (!Array.isArray(nested)) return { error: `${arrayProp}[${itemKey}=${String(itemKeyValue)}].${elementArrayProp} \u975E\u6570\u7EC4` };
|
|
4245
4403
|
return { finalArr: nested, finalProp: `${arrayProp}[${itemKey}=${String(itemKeyValue)}].${elementArrayProp}` };
|
|
4246
4404
|
}
|
|
4247
|
-
function verifyPatch(form2, ops) {
|
|
4405
|
+
function verifyPatch(form2, ops, baseline, resolvedActionCodes) {
|
|
4248
4406
|
const problems = [];
|
|
4249
4407
|
const nodes = collectAllNodes(form2);
|
|
4250
4408
|
const codeSet = new Set(nodes.map((n) => n.code).filter((c) => Boolean(c)));
|
|
@@ -4384,6 +4542,87 @@ function verifyPatch(form2, ops) {
|
|
|
4384
4542
|
}
|
|
4385
4543
|
break;
|
|
4386
4544
|
}
|
|
4545
|
+
case "add_action": {
|
|
4546
|
+
const found = findPresenterHandlers(form2, op.handlerCode, op.scope);
|
|
4547
|
+
if (found.length !== 1) {
|
|
4548
|
+
problems.push(`ops[${i}] add_action handler \u672A\u627E\u5230\u6216\u5B58\u5728\u540C\u540D\u6B67\u4E49`);
|
|
4549
|
+
break;
|
|
4550
|
+
}
|
|
4551
|
+
const actions = found[0].handler.actions ?? [];
|
|
4552
|
+
const type = op.type ?? "flycode";
|
|
4553
|
+
let target;
|
|
4554
|
+
if (op.code) {
|
|
4555
|
+
target = actions.find((a) => a?.code === op.code);
|
|
4556
|
+
} else if (baseline) {
|
|
4557
|
+
const baseHandler = findPresenterHandlers(baseline, op.handlerCode, op.scope)[0]?.handler;
|
|
4558
|
+
const baseCodes = new Set(
|
|
4559
|
+
(baseHandler?.actions ?? []).map((a) => a?.code).filter((c) => Boolean(c))
|
|
4560
|
+
);
|
|
4561
|
+
target = actions.filter((a) => a?.code && !baseCodes.has(a.code)).find((a) => a.type === type);
|
|
4562
|
+
} else {
|
|
4563
|
+
const idx = op.position ?? actions.length - 1;
|
|
4564
|
+
const cand = actions[idx];
|
|
4565
|
+
if (cand && cand.type === type) target = cand;
|
|
4566
|
+
}
|
|
4567
|
+
if (!target) {
|
|
4568
|
+
problems.push(`ops[${i}] add_action \u65B0 action \u672A\u51FA\u73B0\uFF08handler ${op.handlerCode}\uFF09`);
|
|
4569
|
+
break;
|
|
4570
|
+
}
|
|
4571
|
+
if (target.type !== type) {
|
|
4572
|
+
problems.push(`ops[${i}] add_action.type \u672A\u751F\u6548\uFF08\u671F\u671B ${type}\uFF0C\u5B9E\u9645 ${String(target.type)}\uFF09`);
|
|
4573
|
+
}
|
|
4574
|
+
if (type === "flycode" && op.script != null) {
|
|
4575
|
+
if (normalizeText(String(target.script ?? "")) !== normalizeText(op.script)) {
|
|
4576
|
+
problems.push(`ops[${i}] add_action.script \u672A\u751F\u6548`);
|
|
4577
|
+
}
|
|
4578
|
+
}
|
|
4579
|
+
for (const [k, v] of Object.entries(op.fields ?? {})) {
|
|
4580
|
+
if (JSON.stringify(target[k]) !== JSON.stringify(v)) {
|
|
4581
|
+
problems.push(`ops[${i}] add_action.${k} \u672A\u751F\u6548`);
|
|
4582
|
+
}
|
|
4583
|
+
}
|
|
4584
|
+
break;
|
|
4585
|
+
}
|
|
4586
|
+
case "patch_action": {
|
|
4587
|
+
const found = findPresenterHandlers(form2, op.handlerCode, op.scope);
|
|
4588
|
+
if (found.length !== 1) {
|
|
4589
|
+
problems.push(`ops[${i}] patch_action handler \u672A\u627E\u5230\u6216\u5B58\u5728\u540C\u540D\u6B67\u4E49`);
|
|
4590
|
+
break;
|
|
4591
|
+
}
|
|
4592
|
+
const act = locateActionForVerify(form2, baseline, op, resolvedActionCodes?.get(i));
|
|
4593
|
+
if (!act) {
|
|
4594
|
+
problems.push(`ops[${i}] patch_action action \u672A\u627E\u5230\uFF08handler ${op.handlerCode}\uFF09`);
|
|
4595
|
+
break;
|
|
4596
|
+
}
|
|
4597
|
+
const rec = act;
|
|
4598
|
+
for (const [k, v] of Object.entries(op.patch ?? {})) {
|
|
4599
|
+
const same = k === "script" && typeof v === "string" ? normalizeText(String(rec.script ?? "")) === normalizeText(v) : JSON.stringify(rec[k]) === JSON.stringify(v);
|
|
4600
|
+
if (!same) problems.push(`ops[${i}] patch_action.${k} \u672A\u751F\u6548`);
|
|
4601
|
+
}
|
|
4602
|
+
break;
|
|
4603
|
+
}
|
|
4604
|
+
case "remove_action": {
|
|
4605
|
+
const found = findPresenterHandlers(form2, op.handlerCode, op.scope);
|
|
4606
|
+
if (found.length !== 1) {
|
|
4607
|
+
problems.push(`ops[${i}] remove_action handler \u672A\u627E\u5230\u6216\u5B58\u5728\u540C\u540D\u6B67\u4E49`);
|
|
4608
|
+
break;
|
|
4609
|
+
}
|
|
4610
|
+
const actions = found[0].handler.actions ?? [];
|
|
4611
|
+
let code = resolvedActionCodes?.get(i) ?? "";
|
|
4612
|
+
if (!code && op.actionCode != null && op.actionCode !== "") code = op.actionCode;
|
|
4613
|
+
if (!code && baseline) {
|
|
4614
|
+
const baseAct = (findPresenterHandlers(baseline, op.handlerCode, op.scope)[0]?.handler.actions ?? [])[op.actionIndex ?? 0];
|
|
4615
|
+
code = baseAct?.code ?? "";
|
|
4616
|
+
}
|
|
4617
|
+
if (!code) {
|
|
4618
|
+
problems.push(`ops[${i}] remove_action \u65E0\u6CD5\u786E\u5B9A\u88AB\u5220\u9664\u7684 action\uFF08\u672A\u7ED9 actionCode\uFF0C\u843D\u5E93\u524D\u57FA\u7EBF\u5BF9\u5E94\u4E0B\u6807\u4E5F\u6CA1\u6709 code\uFF09`);
|
|
4619
|
+
break;
|
|
4620
|
+
}
|
|
4621
|
+
if (actions.some((a) => a?.code === code)) {
|
|
4622
|
+
problems.push(`ops[${i}] remove_action \u52A8\u4F5C ${code} \u4ECD\u5B58\u5728`);
|
|
4623
|
+
}
|
|
4624
|
+
break;
|
|
4625
|
+
}
|
|
4387
4626
|
case "insert_node":
|
|
4388
4627
|
if (!codeSet.has(op.node.code)) problems.push(`ops[${i}] insert_node \u8282\u70B9\u672A\u51FA\u73B0`);
|
|
4389
4628
|
break;
|
|
@@ -4448,6 +4687,28 @@ function verifyPatch(form2, ops) {
|
|
|
4448
4687
|
}
|
|
4449
4688
|
return { verified: problems.length === 0, problems };
|
|
4450
4689
|
}
|
|
4690
|
+
function normalizeOpScope(ops) {
|
|
4691
|
+
const out = [];
|
|
4692
|
+
for (let i = 0; i < ops.length; i++) {
|
|
4693
|
+
const raw = ops[i];
|
|
4694
|
+
const alias = raw.handlerScope;
|
|
4695
|
+
if (alias !== "handlers" && alias !== "initial") {
|
|
4696
|
+
out.push(ops[i]);
|
|
4697
|
+
continue;
|
|
4698
|
+
}
|
|
4699
|
+
const explicit = raw.scope;
|
|
4700
|
+
if ((explicit === "handlers" || explicit === "initial") && explicit !== alias) {
|
|
4701
|
+
return {
|
|
4702
|
+
ops,
|
|
4703
|
+
error: `ops[${i}]\uFF08op=${String(raw.op)}\uFF09\u540C\u65F6\u7ED9\u4E86 scope="${explicit}" \u4E0E handlerScope="${alias}"\uFF0C\u4E24\u8005\u542B\u4E49\u76F8\u540C\u4F46\u53D6\u503C\u51B2\u7A81\uFF1B\u8BF7\u53EA\u4FDD\u7559\u4E00\u4E2A`
|
|
4704
|
+
};
|
|
4705
|
+
}
|
|
4706
|
+
const next = { ...raw, scope: alias };
|
|
4707
|
+
delete next.handlerScope;
|
|
4708
|
+
out.push(next);
|
|
4709
|
+
}
|
|
4710
|
+
return { ops: out };
|
|
4711
|
+
}
|
|
4451
4712
|
async function patchForm(code, ops, commitMessage, options = {}) {
|
|
4452
4713
|
const dryRun = options.dryRun ?? false;
|
|
4453
4714
|
const verify = options.verify ?? true;
|
|
@@ -4463,6 +4724,11 @@ async function patchForm(code, ops, commitMessage, options = {}) {
|
|
|
4463
4724
|
if (!Array.isArray(ops) || ops.length === 0) {
|
|
4464
4725
|
return abort("EMPTY_OPS", "ops \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u5143\u7D20");
|
|
4465
4726
|
}
|
|
4727
|
+
const scopeNormalized = normalizeOpScope(ops);
|
|
4728
|
+
if (scopeNormalized.error) {
|
|
4729
|
+
return abort("INVALID_PARAMS", scopeNormalized.error);
|
|
4730
|
+
}
|
|
4731
|
+
ops = scopeNormalized.ops;
|
|
4466
4732
|
let form;
|
|
4467
4733
|
try {
|
|
4468
4734
|
const res = await getForm({ code });
|
|
@@ -4475,10 +4741,11 @@ async function patchForm(code, ops, commitMessage, options = {}) {
|
|
|
4475
4741
|
}
|
|
4476
4742
|
const work = structuredClone(form);
|
|
4477
4743
|
const opResults = [];
|
|
4744
|
+
const resolvedActionCodes = /* @__PURE__ */ new Map();
|
|
4478
4745
|
let failed = false;
|
|
4479
4746
|
for (let i = 0; i < ops.length; i++) {
|
|
4480
4747
|
try {
|
|
4481
|
-
const r = await applyFormOp(work, ops[i], i);
|
|
4748
|
+
const r = await applyFormOp(work, ops[i], i, resolvedActionCodes);
|
|
4482
4749
|
opResults.push(r);
|
|
4483
4750
|
if (r.status === "FAILED") failed = true;
|
|
4484
4751
|
} catch (e) {
|
|
@@ -4545,7 +4812,7 @@ async function patchForm(code, ops, commitMessage, options = {}) {
|
|
|
4545
4812
|
verified = false;
|
|
4546
4813
|
message = `${savedText} | \u56DE\u8BFB\u6821\u9A8C\u5931\u8D25\uFF1A\u91CD\u65B0\u67E5\u8BE2\u4E3A\u7A7A`;
|
|
4547
4814
|
} else {
|
|
4548
|
-
const v = verifyPatch(form2, ops);
|
|
4815
|
+
const v = verifyPatch(form2, ops, form, resolvedActionCodes);
|
|
4549
4816
|
verified = v.verified;
|
|
4550
4817
|
if (!v.verified) message = `${savedText} | \u56DE\u8BFB\u6821\u9A8C\u672A\u901A\u8FC7\uFF1A${v.problems.join("\uFF1B")}`;
|
|
4551
4818
|
}
|
|
@@ -4575,7 +4842,7 @@ async function saveForm2(form, commitMessage) {
|
|
|
4575
4842
|
return { ok: false, code: form.pageinfo?.code ?? void 0, message: extractError(e) };
|
|
4576
4843
|
}
|
|
4577
4844
|
}
|
|
4578
|
-
var MAX_DIFF_LINES2;
|
|
4845
|
+
var FORM_ACTION_TYPES, INITIAL_ACTION_TYPES, ACTION_TYPE_LABELS, ACTION_TEMPLATES, MAX_DIFF_LINES2;
|
|
4579
4846
|
var init_form2 = __esm({
|
|
4580
4847
|
"src/service/form.ts"() {
|
|
4581
4848
|
"use strict";
|
|
@@ -4585,6 +4852,229 @@ var init_form2 = __esm({
|
|
|
4585
4852
|
init_error();
|
|
4586
4853
|
init_str_replace();
|
|
4587
4854
|
init_directory2();
|
|
4855
|
+
FORM_ACTION_TYPES = [
|
|
4856
|
+
"flycode",
|
|
4857
|
+
"datarequest",
|
|
4858
|
+
"datasubmit",
|
|
4859
|
+
"dataimport",
|
|
4860
|
+
"dataexport",
|
|
4861
|
+
"datatransfer",
|
|
4862
|
+
"dataserialize",
|
|
4863
|
+
"smartrequest",
|
|
4864
|
+
"link",
|
|
4865
|
+
"call",
|
|
4866
|
+
"return",
|
|
4867
|
+
"af_preaddflow",
|
|
4868
|
+
"af_handleflow",
|
|
4869
|
+
"af_flowdetail",
|
|
4870
|
+
"ctrlevent",
|
|
4871
|
+
"receivelink",
|
|
4872
|
+
"eventlink",
|
|
4873
|
+
"attributeevaluate",
|
|
4874
|
+
"alert",
|
|
4875
|
+
"toast",
|
|
4876
|
+
"share",
|
|
4877
|
+
"popsubview",
|
|
4878
|
+
"closesubview",
|
|
4879
|
+
"print",
|
|
4880
|
+
"urllink",
|
|
4881
|
+
"runevent"
|
|
4882
|
+
];
|
|
4883
|
+
INITIAL_ACTION_TYPES = ["flycode", "receivelink"];
|
|
4884
|
+
ACTION_TYPE_LABELS = {
|
|
4885
|
+
flycode: "flycode",
|
|
4886
|
+
datarequest: "\u6570\u636E\u8BF7\u6C42",
|
|
4887
|
+
datasubmit: "\u6570\u636E\u63D0\u4EA4",
|
|
4888
|
+
dataimport: "\u5BFC\u5165\u884C\u4E3A",
|
|
4889
|
+
dataexport: "\u5BFC\u51FA\u884C\u4E3A",
|
|
4890
|
+
datatransfer: "\u6570\u636E\u8F6C\u79FB",
|
|
4891
|
+
dataserialize: "\u6570\u636E\u5E8F\u5217\u5316",
|
|
4892
|
+
smartrequest: "\u667A\u6167\u573A\u666F\u8BF7\u6C42",
|
|
4893
|
+
link: "\u94FE\u63A5",
|
|
4894
|
+
call: "\u4E8B\u4EF6\u547C\u53EB",
|
|
4895
|
+
return: "\u8FD4\u56DE",
|
|
4896
|
+
af_preaddflow: "\u6D41\u7A0B\u53D1\u8D77",
|
|
4897
|
+
af_handleflow: "\u5904\u7406\u5BA1\u6279",
|
|
4898
|
+
af_flowdetail: "\u6D41\u7A0B\u8282\u70B9\u8BE6\u60C5",
|
|
4899
|
+
ctrlevent: "\u8C03\u7528\u63A7\u4EF6\u4E8B\u4EF6",
|
|
4900
|
+
receivelink: "\u63A5\u6536\u53C2\u6570",
|
|
4901
|
+
eventlink: "\u4E8B\u4EF6\u76D1\u542C",
|
|
4902
|
+
attributeevaluate: "\u5C5E\u6027\u8868\u8FBE\u5F0F\u884C\u4E3A",
|
|
4903
|
+
alert: "\u63D0\u793A\u5F39\u7A97",
|
|
4904
|
+
toast: "\u8F7B\u63D0\u793A",
|
|
4905
|
+
share: "\u5206\u4EAB\u884C\u4E3A",
|
|
4906
|
+
popsubview: "\u6253\u5F00popview",
|
|
4907
|
+
closesubview: "\u5173\u95EDpopview",
|
|
4908
|
+
print: "\u6253\u5370\u4E8B\u4EF6",
|
|
4909
|
+
urllink: "URL\u94FE\u63A5",
|
|
4910
|
+
runevent: "\u6267\u884C\u4E8B\u4EF6"
|
|
4911
|
+
};
|
|
4912
|
+
ACTION_TEMPLATES = {
|
|
4913
|
+
flycode: { script: "" },
|
|
4914
|
+
datarequest: {
|
|
4915
|
+
logiccode: "",
|
|
4916
|
+
mode: "1",
|
|
4917
|
+
queue: "0",
|
|
4918
|
+
pagesize: "",
|
|
4919
|
+
pagesource: "",
|
|
4920
|
+
hasextraparams: "",
|
|
4921
|
+
sorter: "",
|
|
4922
|
+
getter: [],
|
|
4923
|
+
setter: []
|
|
4924
|
+
},
|
|
4925
|
+
datasubmit: { logiccode: "", queue: "0", mode: "1", getter: [], setter: [] },
|
|
4926
|
+
dataimport: {
|
|
4927
|
+
logiccode: "",
|
|
4928
|
+
mode: "1",
|
|
4929
|
+
servicetype: "background",
|
|
4930
|
+
microclass: "",
|
|
4931
|
+
template: "",
|
|
4932
|
+
templatename: "",
|
|
4933
|
+
extraparam: [{
|
|
4934
|
+
title: "\u5F53\u6570\u636E\u91CD\u590D\u65F6\u5982\u4F55\u5904\u7406",
|
|
4935
|
+
paramkey: "_dataaddmode",
|
|
4936
|
+
requesturl: "",
|
|
4937
|
+
options: [
|
|
4938
|
+
{ text: "\u8986\u76D6", key: "1", isselected: "" },
|
|
4939
|
+
{ text: "\u8FFD\u52A0", key: "2", isselected: "" },
|
|
4940
|
+
{ text: "\u653E\u5F03", key: "3", isselected: "" }
|
|
4941
|
+
]
|
|
4942
|
+
}],
|
|
4943
|
+
getter: [],
|
|
4944
|
+
setter: [],
|
|
4945
|
+
onsuccess: ""
|
|
4946
|
+
},
|
|
4947
|
+
dataexport: {
|
|
4948
|
+
logiccode: "",
|
|
4949
|
+
servicetype: "",
|
|
4950
|
+
dynamicparmsource: "",
|
|
4951
|
+
microclass: "",
|
|
4952
|
+
colselectable: "",
|
|
4953
|
+
sheetname: "",
|
|
4954
|
+
filename: "",
|
|
4955
|
+
mode: "1",
|
|
4956
|
+
getter: [],
|
|
4957
|
+
setter: [],
|
|
4958
|
+
extraparam: [{ requesturl: "" }],
|
|
4959
|
+
extconfig: {
|
|
4960
|
+
filetype: ["1"],
|
|
4961
|
+
exportcontent: ["excel", "link", "photo"],
|
|
4962
|
+
iscompress: "1",
|
|
4963
|
+
imagetype: "origin",
|
|
4964
|
+
imagesizepercolumn: "5",
|
|
4965
|
+
imageheightcm: "2.0",
|
|
4966
|
+
filewatermark: "0",
|
|
4967
|
+
filewatermarkvalue: "1"
|
|
4968
|
+
},
|
|
4969
|
+
enableattachmentexport: "",
|
|
4970
|
+
attachmentexportsetting: {
|
|
4971
|
+
attachmentfields: [],
|
|
4972
|
+
foldernamefields: [],
|
|
4973
|
+
attachmentnamefields: [],
|
|
4974
|
+
separator: "_"
|
|
4975
|
+
}
|
|
4976
|
+
},
|
|
4977
|
+
datatransfer: { getter: [], setter: [] },
|
|
4978
|
+
dataserialize: { targetname: "", param: { datatype: "0", ctrl: { code: "", scope: "" }, properties: [] } },
|
|
4979
|
+
smartrequest: {
|
|
4980
|
+
agentcode: "",
|
|
4981
|
+
agent_id: "",
|
|
4982
|
+
agent_name: "",
|
|
4983
|
+
agent_version_name: "",
|
|
4984
|
+
agent_version_id: "",
|
|
4985
|
+
queue: "",
|
|
4986
|
+
streaming: "",
|
|
4987
|
+
smartctrl: "",
|
|
4988
|
+
getter: [{ name: "scene_param", datatype: "0", ctrl: { code: "", scope: "" }, properties: [] }],
|
|
4989
|
+
setter: [{ name: "scene_data", datatype: "0", ctrlcode: "", properties: [] }]
|
|
4990
|
+
},
|
|
4991
|
+
link: {
|
|
4992
|
+
title: "",
|
|
4993
|
+
pagecode: "",
|
|
4994
|
+
mode: "popup",
|
|
4995
|
+
closeicon: "1",
|
|
4996
|
+
closewindowicon: "1",
|
|
4997
|
+
onreturn: "",
|
|
4998
|
+
pagesize: { width: "", height: "" },
|
|
4999
|
+
pagesizeWidth: "",
|
|
5000
|
+
pagesizeHeight: "",
|
|
5001
|
+
param: { name: "__linkparam", datatype: "0", ctrl: { code: "", scope: "" }, properties: [] }
|
|
5002
|
+
},
|
|
5003
|
+
call: {
|
|
5004
|
+
pagecode: "",
|
|
5005
|
+
"event-key": "",
|
|
5006
|
+
key: "",
|
|
5007
|
+
isbroadcast: "0",
|
|
5008
|
+
param: { name: "__linkparam", datatype: "0", ctrl: { code: "", scope: "" }, properties: [] }
|
|
5009
|
+
},
|
|
5010
|
+
return: { pagecode: "", pagecount: "" },
|
|
5011
|
+
af_preaddflow: {
|
|
5012
|
+
af_processdefinekey: "",
|
|
5013
|
+
title: "",
|
|
5014
|
+
mode: "popup",
|
|
5015
|
+
pagesizeWidth: "",
|
|
5016
|
+
pagesizeHeight: "",
|
|
5017
|
+
pagesize: { width: "", height: "" },
|
|
5018
|
+
newversion: "1",
|
|
5019
|
+
param: { name: "__linkparam", datatype: "0", ctrl: { code: "", scope: "" }, properties: [] }
|
|
5020
|
+
},
|
|
5021
|
+
af_handleflow: {
|
|
5022
|
+
processinfo: [
|
|
5023
|
+
{ name: "af_processdefineid", value: "", ctrl: { code: "", component: "" } },
|
|
5024
|
+
{ name: "af_processinstanceid", value: "", ctrl: { code: "", component: "" } },
|
|
5025
|
+
{ name: "af_taskid", value: "", ctrl: { code: "", component: "" } },
|
|
5026
|
+
{ name: "af_taskkey", value: "", ctrl: { code: "", component: "" } },
|
|
5027
|
+
{ name: "af_processinstancename", value: "", ctrl: { code: "", component: "" } }
|
|
5028
|
+
],
|
|
5029
|
+
newversion: "1",
|
|
5030
|
+
param: { name: "__linkparam", datatype: "0", ctrl: { code: "", scope: "" }, properties: [] }
|
|
5031
|
+
},
|
|
5032
|
+
af_flowdetail: {
|
|
5033
|
+
param: {
|
|
5034
|
+
name: "__linkparam",
|
|
5035
|
+
datatype: "0",
|
|
5036
|
+
ctrl: { code: "", scope: "" },
|
|
5037
|
+
properties: [
|
|
5038
|
+
{ name: "af_processinstanceid", value: "", ctrl: { code: "", component: "" } },
|
|
5039
|
+
{ name: "af_processdefinekey", value: "", ctrl: { code: "", component: "" } },
|
|
5040
|
+
{ name: "af_processinstancename", value: "", ctrl: { code: "", component: "" } }
|
|
5041
|
+
]
|
|
5042
|
+
}
|
|
5043
|
+
},
|
|
5044
|
+
ctrlevent: { ctrlcode: "", trigger: "" },
|
|
5045
|
+
receivelink: {
|
|
5046
|
+
param: {
|
|
5047
|
+
name: "__linkparam",
|
|
5048
|
+
datatype: "0",
|
|
5049
|
+
ctrlcode: "",
|
|
5050
|
+
properties: [{ name: "__pagestatus", paramtype: "1", ctrl: { code: "", component: "" } }]
|
|
5051
|
+
}
|
|
5052
|
+
},
|
|
5053
|
+
eventlink: {
|
|
5054
|
+
key: "",
|
|
5055
|
+
handler: "",
|
|
5056
|
+
param: {
|
|
5057
|
+
name: "__linkparam",
|
|
5058
|
+
datatype: "0",
|
|
5059
|
+
ctrlcode: "",
|
|
5060
|
+
properties: [{ name: "__pagestatus", paramtype: "1", ctrl: { code: "", component: "" } }]
|
|
5061
|
+
}
|
|
5062
|
+
},
|
|
5063
|
+
attributeevaluate: { ctrlcode: "", attribute: "", expression: "" },
|
|
5064
|
+
alert: {
|
|
5065
|
+
noticestyle: "warning",
|
|
5066
|
+
message: "",
|
|
5067
|
+
buttons: "",
|
|
5068
|
+
choices: [{ title: "\u786E\u5B9A", handler: "" }, { title: "\u53D6\u6D88", handler: "" }]
|
|
5069
|
+
},
|
|
5070
|
+
toast: { message: "", title: "", noticestyle: "info", duration: "3", position: "top" },
|
|
5071
|
+
share: { provider: "", imagewidth: "" },
|
|
5072
|
+
popsubview: { viewcode: "", viewwidth: "", viewheight: "", viewtitle: "", popupmode: "center" },
|
|
5073
|
+
closesubview: {},
|
|
5074
|
+
print: { pagecode: "", ctrlcode: "", printmode: "image", printermodel: "custom", printerinfo: "" },
|
|
5075
|
+
urllink: { url: "", mode: "", targetctrl: "", queryparams: "", bodyparams: "" },
|
|
5076
|
+
runevent: { handler: "" }
|
|
5077
|
+
};
|
|
4588
5078
|
MAX_DIFF_LINES2 = 150;
|
|
4589
5079
|
}
|
|
4590
5080
|
});
|
|
@@ -4985,6 +5475,7 @@ var init_write3 = __esm({
|
|
|
4985
5475
|
actionIndex: z10.number().int().nonnegative().optional().describe("\u7B2C\u51E0\u4E2A action\uFF0C\u9ED8\u8BA4 0\uFF1B\u4E0E actionCode \u4E8C\u9009\u4E00"),
|
|
4986
5476
|
actionCode: z10.string().optional().describe("\u4EE5 action code \u5B9A\u4F4D\uFF08\u4E0E actionIndex \u4E8C\u9009\u4E00\uFF09"),
|
|
4987
5477
|
scope: z10.enum(["handlers", "initial"]).optional().describe("\u9650\u5B9A\u5904\u7406\u5668\u5BB9\u5668\uFF1B\u9ED8\u8BA4\u540C\u65F6\u68C0\u7D22 handlers \u4E0E initial\uFF0C\u540C\u540D\u8DE8\u5BB9\u5668\u65F6\u987B\u6307\u5B9A\u4EE5\u6D88\u6B67"),
|
|
5478
|
+
handlerScope: z10.enum(["handlers", "initial"]).optional().describe("scope \u7684\u7B49\u4EF7\u522B\u540D\uFF08\u4E0E get_form_fragment \u7684 handlerScope \u540C\u540D\uFF0C\u4E24\u8005\u4EFB\u4F20\u5176\u4E00\u5373\u53EF\uFF1B\u90FD\u4F20\u4E14\u53D6\u503C\u4E0D\u540C\u4F1A\u62A5 INVALID_PARAMS\uFF09"),
|
|
4988
5479
|
parentProp: z10.string().optional().describe('\u6570\u7EC4\u6240\u5728\u7684\u5BB9\u5668\u5BF9\u8C61\u5C5E\u6027\u540D\uFF0C\u5982 "datarequest"\uFF08setter \u5728\u5176\u4E0B\uFF09\uFF1B\u7701\u7565\u8868\u793A\u6570\u7EC4\u76F4\u63A5\u6302\u5728 action \u4E0A'),
|
|
4989
5480
|
arrayProp: z10.string().describe('\u8981\u6539\u7684\u6570\u7EC4\u5C5E\u6027\u540D\uFF0C\u5982 "setter"\uFF08datarequest.setter\uFF0C\u754C\u9762\u8F93\u51FA\u7ED1\u5B9A\u5230\u63A7\u4EF6\uFF09/ "properties"\uFF08receivelink \u7684 param.properties\uFF09'),
|
|
4990
5481
|
mode: z10.enum(["merge", "append", "insert", "remove"]).describe("\u64CD\u4F5C\u6A21\u5F0F\uFF1Amerge=\u6D45\u5408\u5E76\u5230\u5DF2\u5B58\u5728\u5143\u7D20\uFF1Bappend=\u672B\u5C3E\u8FFD\u52A0 item\uFF1Binsert=\u6309 position \u63D2\u5165 item\uFF1Bremove=\u6309 itemKey \u5220\u9664\u5143\u7D20"),
|
|
@@ -4998,6 +5489,36 @@ var init_write3 = __esm({
|
|
|
4998
5489
|
elementItemKeyValue: z10.unknown().optional().describe("\u4E24\u7EA7\u6A21\u5F0F\u4E0B\u5B9A\u4F4D\u5D4C\u5957\u6570\u7EC4\u5185\u67D0\u5B50\u5143\u7D20\u7684\u952E\u503C\uFF08merge/remove \u6A21\u5F0F\u7528\uFF09"),
|
|
4999
5490
|
createIfMissing: z10.boolean().optional().describe("append/insert \u65F6\u82E5\u76EE\u6807\u5BB9\u5668/\u6570\u7EC4\uFF08\u542B\u4E24\u7EA7\u5D4C\u5957\u76EE\u6807\uFF09\u4E0D\u5B58\u5728\uFF0C\u662F\u5426\u5141\u8BB8\u81EA\u52A8\u65B0\u5EFA\uFF0C\u9ED8\u8BA4 false\u2014\u2014\u9ED8\u8BA4 fail-closed \u62A5 ARRAY_NOT_FOUND \u4EE5\u907F\u514D\u628A datarequest.setter \u8BEF\u5EFA\u5230\u9519\u8BEF\u5C42\u7EA7\uFF1B\u786E\u9700\u65B0\u5EFA\u624D\u7F6E true")
|
|
5000
5491
|
}),
|
|
5492
|
+
z10.object({
|
|
5493
|
+
op: z10.literal("add_action"),
|
|
5494
|
+
handlerCode: z10.string().describe("presenter \u5904\u7406\u5668 code\uFF08handlers \u4E0E initial \u5747\u68C0\u7D22\uFF09"),
|
|
5495
|
+
scope: z10.enum(["handlers", "initial"]).optional().describe("\u9650\u5B9A\u5904\u7406\u5668\u5BB9\u5668\uFF1B\u9ED8\u8BA4\u540C\u65F6\u68C0\u7D22 handlers \u4E0E initial\uFF0C\u540C\u540D\u8DE8\u5BB9\u5668\u65F6\u987B\u6307\u5B9A\u4EE5\u6D88\u6B67"),
|
|
5496
|
+
handlerScope: z10.enum(["handlers", "initial"]).optional().describe("scope \u7684\u7B49\u4EF7\u522B\u540D\uFF08\u4E0E get_form_fragment \u7684 handlerScope \u540C\u540D\uFF0C\u4E24\u8005\u4EFB\u4F20\u5176\u4E00\u5373\u53EF\uFF1B\u90FD\u4F20\u4E14\u53D6\u503C\u4E0D\u540C\u4F1A\u62A5 INVALID_PARAMS\uFF09"),
|
|
5497
|
+
type: z10.enum(FORM_ACTION_TYPES).optional().describe("\u52A8\u4F5C\u7C7B\u578B\uFF0C\u9ED8\u8BA4 flycode\u3002initial\uFF08\u9875\u9762\u521D\u59CB\u5316\uFF09\u4EC5\u5141\u8BB8 flycode / receivelink\uFF1B\u5176\u4F59\u7C7B\u578B\u53EA\u80FD\u52A0\u5230 handlers \u4E8B\u4EF6\u91CC"),
|
|
5498
|
+
code: z10.string().optional().describe("\u52A8\u4F5C code\uFF0C\u9ED8\u8BA4 action_<handlerCode \u672B8\u4F4D>\uFF08\u540C handler \u5185\u91CD\u590D\u65F6\u81EA\u52A8\u8FFD\u52A0 _2/_3\uFF09\uFF1B\u540C\u4E00 handler \u5185\u5FC5\u987B\u552F\u4E00"),
|
|
5499
|
+
desc: z10.string().optional().describe("\u52A8\u4F5C\u663E\u793A\u540D\uFF0C\u9ED8\u8BA4\u53D6\u8BE5 type \u7684\u5E73\u53F0\u9ED8\u8BA4\u540D\uFF08\u5982 \u6570\u636E\u8BF7\u6C42 / \u8F7B\u63D0\u793A / \u63A5\u6536\u53C2\u6570\uFF09"),
|
|
5500
|
+
condition: z10.string().optional().describe("\u6267\u884C\u6761\u4EF6\uFF08flycode \u8868\u8FBE\u5F0F\uFF09\uFF0C\u9ED8\u8BA4\u7A7A\u4E32"),
|
|
5501
|
+
position: z10.number().int().nonnegative().optional().describe("\u63D2\u5165\u4F4D\u7F6E\u4E0B\u6807\uFF0C\u9ED8\u8BA4\u672B\u5C3E\u3002\u4E8B\u4EF6\u5185 action \u6309\u6570\u7EC4\u987A\u5E8F\u4E32\u884C\u6267\u884C"),
|
|
5502
|
+
script: z10.string().optional().describe('\u4EC5 type="flycode"\uFF1A\u811A\u672C\u5168\u6587\uFF1B\u5176\u5B83\u7C7B\u578B\u8BF7\u7528 fields'),
|
|
5503
|
+
fields: z10.record(z10.string(), z10.unknown()).optional().describe('\u5728\u7C7B\u578B\u6A21\u677F\u4E0A\u6D45\u5408\u5E76\u7684\u5B57\u6BB5\uFF0C\u5982 toast \u7684 { "message": "\u4FDD\u5B58\u6210\u529F" }\u3001urllink \u7684 { "url": "https://..." }\uFF1B\u4E0D\u80FD\u8986\u76D6 type')
|
|
5504
|
+
}),
|
|
5505
|
+
z10.object({
|
|
5506
|
+
op: z10.literal("patch_action"),
|
|
5507
|
+
handlerCode: z10.string().describe("presenter \u5904\u7406\u5668 code\uFF08handlers \u4E0E initial \u5747\u68C0\u7D22\uFF09"),
|
|
5508
|
+
actionCode: z10.string().optional().describe("\u8981\u6539\u7684 action code\uFF08\u4E0E actionIndex \u4E8C\u9009\u4E00\uFF0C\u4F18\u5148\uFF09\uFF1B\u6279\u91CF\u5220\u6539\u540E\u4E0B\u6807\u4F1A\u6F02\u79FB\uFF0C\u5EFA\u8BAE\u59CB\u7EC8\u7528 actionCode"),
|
|
5509
|
+
actionIndex: z10.number().int().nonnegative().optional().describe("\u8981\u6539\u7684 action \u4E0B\u6807\uFF0C\u9ED8\u8BA4 0\uFF1B\u4EC5\u5728\u65E0\u6CD5\u786E\u5B9A code \u65F6\u4F7F\u7528"),
|
|
5510
|
+
scope: z10.enum(["handlers", "initial"]).optional().describe("\u9650\u5B9A\u5904\u7406\u5668\u5BB9\u5668\uFF1B\u9ED8\u8BA4\u540C\u65F6\u68C0\u7D22 handlers \u4E0E initial\uFF0C\u540C\u540D\u8DE8\u5BB9\u5668\u65F6\u987B\u6307\u5B9A\u4EE5\u6D88\u6B67"),
|
|
5511
|
+
handlerScope: z10.enum(["handlers", "initial"]).optional().describe("scope \u7684\u7B49\u4EF7\u522B\u540D\uFF08\u4E0E get_form_fragment \u7684 handlerScope \u540C\u540D\uFF0C\u4E24\u8005\u4EFB\u4F20\u5176\u4E00\u5373\u53EF\uFF1B\u90FD\u4F20\u4E14\u53D6\u503C\u4E0D\u540C\u4F1A\u62A5 INVALID_PARAMS\uFF09"),
|
|
5512
|
+
patch: z10.record(z10.string(), z10.unknown()).describe('\u6D45\u5408\u5E76\u5230 action \u9876\u5C42\u7684\u5B57\u6BB5\uFF0C\u5982 { desc: "\u56FA\u5B9A\u5E95\u90E8" }\u3001{ message: "\u4FDD\u5B58\u6210\u529F" }\u3001{ logiccode: "L1", queue: "1" }\u3001{ condition: "a==1" }\u3002\u4E0D\u80FD\u542B type / code\uFF08\u6362\u7C7B\u578B\u6216\u6539\u540D\u8BF7 remove_action + add_action\uFF09\uFF1Bscript \u4EC5 type="flycode" \u53EF\u5199')
|
|
5513
|
+
}),
|
|
5514
|
+
z10.object({
|
|
5515
|
+
op: z10.literal("remove_action"),
|
|
5516
|
+
handlerCode: z10.string().describe("presenter \u5904\u7406\u5668 code\uFF08handlers \u4E0E initial \u5747\u68C0\u7D22\uFF09"),
|
|
5517
|
+
actionCode: z10.string().optional().describe("\u8981\u5220\u9664\u7684 action code\uFF08\u4E0E actionIndex \u4E8C\u9009\u4E00\uFF0C\u4F18\u5148\uFF09\uFF1B\u7F3A\u7701\u4E14\u53EA\u7ED9\u4E0B\u6807\u65F6\uFF0C\u56DE\u8BFB\u6821\u9A8C\u4F1A\u7528\u843D\u5E93\u524D\u57FA\u7EBF\u6309\u4E0B\u6807\u89E3\u6790 code"),
|
|
5518
|
+
actionIndex: z10.number().int().nonnegative().optional().describe("\u8981\u5220\u9664\u7684 action \u4E0B\u6807\uFF0C\u9ED8\u8BA4 0\uFF1B\u4EC5\u5728\u65E0\u6CD5\u786E\u5B9A code \u65F6\u4F7F\u7528"),
|
|
5519
|
+
scope: z10.enum(["handlers", "initial"]).optional().describe("\u9650\u5B9A\u5904\u7406\u5668\u5BB9\u5668\uFF1B\u9ED8\u8BA4\u540C\u65F6\u68C0\u7D22 handlers \u4E0E initial\uFF0C\u540C\u540D\u8DE8\u5BB9\u5668\u65F6\u987B\u6307\u5B9A\u4EE5\u6D88\u6B67"),
|
|
5520
|
+
handlerScope: z10.enum(["handlers", "initial"]).optional().describe("scope \u7684\u7B49\u4EF7\u522B\u540D\uFF08\u4E0E get_form_fragment \u7684 handlerScope \u540C\u540D\uFF0C\u4E24\u8005\u4EFB\u4F20\u5176\u4E00\u5373\u53EF\uFF1B\u90FD\u4F20\u4E14\u53D6\u503C\u4E0D\u540C\u4F1A\u62A5 INVALID_PARAMS\uFF09")
|
|
5521
|
+
}),
|
|
5001
5522
|
z10.object({
|
|
5002
5523
|
op: z10.literal("insert_node"),
|
|
5003
5524
|
parentCode: z10.string().describe("\u7236\u8282\u70B9 code\uFF08view \u6811\u4E2D\uFF09"),
|
|
@@ -5027,6 +5548,7 @@ var init_write3 = __esm({
|
|
|
5027
5548
|
actionCode: z10.string().optional().describe("\u4EE5 action code \u5B9A\u4F4D\uFF08\u4E0E actionIndex \u4E8C\u9009\u4E00\uFF09"),
|
|
5028
5549
|
field: z10.enum(["script", "condition", "expression"]).optional().describe("\u76EE\u6807\u5B57\u7B26\u4E32\u5B57\u6BB5\uFF0C\u9ED8\u8BA4 script"),
|
|
5029
5550
|
scope: z10.enum(["handlers", "initial"]).optional().describe("\u9650\u5B9A\u5904\u7406\u5668\u5BB9\u5668\uFF1B\u9ED8\u8BA4\u540C\u65F6\u68C0\u7D22 handlers \u4E0E initial\uFF0C\u540C\u540D\u8DE8\u5BB9\u5668\u65F6\u987B\u6307\u5B9A\u4EE5\u6D88\u6B67"),
|
|
5551
|
+
handlerScope: z10.enum(["handlers", "initial"]).optional().describe("scope \u7684\u7B49\u4EF7\u522B\u540D\uFF08\u4E0E get_form_fragment \u7684 handlerScope \u540C\u540D\uFF0C\u4E24\u8005\u4EFB\u4F20\u5176\u4E00\u5373\u53EF\uFF1B\u90FD\u4F20\u4E14\u53D6\u503C\u4E0D\u540C\u4F1A\u62A5 INVALID_PARAMS\uFF09"),
|
|
5030
5552
|
replacement: z10.string().optional().describe("\u6574\u6BB5\u66FF\u6362\u6A21\u5F0F\uFF1A\u76F4\u63A5\u7ED9\u76EE\u6807\u5B57\u6BB5\u7684\u65B0\u5168\u6587\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E ops\uFF08\u9002\u5408\u6574\u6BB5\u91CD\u5199 action\uFF09"),
|
|
5031
5553
|
ops: z10.array(z10.object({
|
|
5032
5554
|
oldString: z10.string().describe("\u5F85\u66FF\u6362\u7684\u539F\u6587\u7247\u6BB5\uFF0C\u5FC5\u987B\u975E\u7A7A\u4E14\u552F\u4E00\u547D\u4E2D\uFF1B\u8BF7\u4ECE\u67E5\u8BE2\u5230\u7684\u811A\u672C\u539F\u6587\u539F\u6837\u590D\u5236\uFF08\u542B\u7F29\u8FDB\u4E0E\u6362\u884C\uFF09"),
|
|
@@ -5053,10 +5575,17 @@ var init_write3 = __esm({
|
|
|
5053
5575
|
name: "patch_form",
|
|
5054
5576
|
config: {
|
|
5055
5577
|
title: "\u5C40\u90E8\u8865\u4E01\u4FEE\u6539\u8868\u5355/\u9875\u9762",
|
|
5056
|
-
description: `\u4EE5 delta ops \u5C40\u90E8\u4FEE\u6539\u8868\u5355\uFF0C\u65E0\u9700\u56DE\u4F20\u5B8C\u6574 JSON\
|
|
5578
|
+
description: `\u4EE5 delta ops \u5C40\u90E8\u4FEE\u6539\u8868\u5355\uFF0C\u65E0\u9700\u56DE\u4F20\u5B8C\u6574 JSON\u300214 \u7C7B ops\uFF1Aset_pageinfo/set_attrs/patch_node_array_item/patch_action_array_item/add_action/patch_action/remove_action/insert_node/remove_node/move_node/set_section/replace_script/add_businessmodel/remove_businessmodel\u3002\u63A8\u8350\u6D41\u7A0B\uFF1Aget_form_outline \u62FF code \u2192 get_form_fragment \u786E\u8BA4\u771F\u5B9E\u5C5E\u6027\u540D/\u811A\u672C \u2192 patch_form\u3002ops \u4E8B\u52A1\u6027\u9884\u6F14\uFF0C\u5931\u8D25\u6574\u6279\u56DE\u6EDA\uFF1B\u6539\u521D\u59CB\u5316\u811A\u672C\uFF08presenter.initial\uFF09\u4E0E\u6539\u6309\u94AE\u4E8B\u4EF6\u7528\u6CD5\u4E00\u81F4\u3002
|
|
5057
5579
|
|
|
5058
5580
|
\u6570\u7EC4\u5143\u7D20\u7EA7\u6539\u52A8\uFF1Apatch_node_array_item \u652F\u6301 merge(\u9ED8\u8BA4)/append/insert/remove \u56DB\u79CD\u6A21\u5F0F\uFF0C\u4F5C\u7528\u4E8E view \u6811\u8282\u70B9\u7684 cols/options/content \u7B49\uFF1Bpatch_action_array_item \u7528\u4E8E presenter.handlers/initial \u4E2D\u67D0 action \u5185\u90E8\u6570\u7EC4\uFF08\u5982 datarequest.setter\u300C\u754C\u9762\u8F93\u51FA\u7ED1\u5B9A\u5230\u63A7\u4EF6\u300D\u3001param.properties\uFF09\uFF0C\u540C\u6837\u652F\u6301\u56DB\u79CD\u6A21\u5F0F\u3002\u4E24\u8005\u90FD\u652F\u6301\u300C\u4E24\u7EA7\u5D4C\u5957\u300D\uFF08elementArrayProp\uFF09\uFF1A\u5F53\u771F\u5B9E\u7ED1\u5B9A\u5728\u300C\u6570\u7EC4\u5185\u67D0\u5143\u7D20\u7684\u5D4C\u5957\u6570\u7EC4\u300D\uFF08\u5982 datarequest.setter[0].properties \u6A21\u578B\u7EA7\u5C5E\u6027\u6620\u5C04\uFF09\u65F6\uFF0C\u7528 itemKey/itemKeyValue \u5148\u5B9A\u4F4D\u5916\u5C42\u5143\u7D20\u3001\u518D\u586B elementArrayProp \u94BB\u5230\u5D4C\u5957\u6570\u7EC4\u64CD\u4F5C\uFF0C\u65E0\u9700\u56DE\u4F20\u6574\u6BB5\u6570\u7EC4\u3002append/insert \u76EE\u6807\u6570\u7EC4\u4E0D\u5B58\u5728\u65F6\u9ED8\u8BA4 fail-closed \u62A5 ARRAY_NOT_FOUND\uFF08\u987B\u663E\u5F0F createIfMissing:true \u624D\u65B0\u5EFA\uFF09\uFF0C\u907F\u514D\u8BEF\u9020\u5E73\u884C orphan \u7ED3\u6784\uFF1Bremove \u6E05\u7A7A\u8C03\u5219\u5220\u9664\u8BE5\u6570\u7EC4\u5C5E\u6027\u907F\u514D\u7A7A\u58F3\u3002set_attrs \u9ED8\u8BA4\u7981\u6B62\u6574\u6BB5\u8986\u76D6\u6570\u7EC4\uFF08\u542B\u6570\u7EC4\u5C5E\u6027\u987B\u663E\u5F0F overwriteArray:true\uFF0C\u5426\u5219\u6539\u7528\u4E0A\u8FF0\u4E24 op\uFF09\u3002
|
|
5059
5581
|
|
|
5582
|
+
**\u52A0\u4E00\u4E2A\u65B0\u52A8\u4F5C**\uFF08\u6B64\u524D\u53EA\u80FD\u6574\u6BB5 set_section \u6216\u5168\u91CF save_form\uFF09\uFF1A\u7528 add_action \u5F80\u67D0 handler \u7684 actions \u8FFD\u52A0\u4E00\u6761\uFF0C\u6309 type \u81EA\u52A8\u8865\u5E73\u53F0\u7A7A\u9AA8\u67B6\uFF0C\u53EA\u9700\u4F20\u5173\u952E\u5B57\u6BB5\u3002\u4F8B\uFF1A\u7ED9\u521D\u59CB\u5316\u4E8B\u4EF6\u8FFD\u52A0\u811A\u672C {handlerCode, script:"..."}\uFF1B\u7ED9\u4E8B\u4EF6\u52A0\u8F7B\u63D0\u793A {handlerCode, type:"toast", fields:{message:"\u4FDD\u5B58\u6210\u529F"}}\u3002initial \u4EC5\u652F\u6301 flycode / receivelink\u3002
|
|
5583
|
+
|
|
5584
|
+
**\u6539/\u5220\u5DF2\u6709\u52A8\u4F5C**\uFF1Apatch_action \u6D45\u5408\u5E76\u4EFB\u610F\u5B57\u6BB5\uFF08desc / condition / message / url / logiccode / queue \u7B49\uFF0Cscript \u4EC5 flycode\uFF09\uFF0C\u4E0D\u80FD\u6539 type \u4E0E code\uFF1B\u6362\u7C7B\u578B\u6216\u6539\u540D\u7528 remove_action + add_action\u3002replace_script \u53EA\u7BA1 script/condition/expression \u4E09\u4E2A\u5B57\u7B26\u4E32\u5B57\u6BB5\u7684\u6587\u672C\u66FF\u6362\uFF0C\u6539\u5176\u5B83\u5B57\u6BB5\u7528 patch_action\u3002\u5220\u9664\u540E\u4FDD\u7559 actions: []\u3002\u5B9A\u4F4D\u4E00\u5F8B\u7528 actionCode\uFF08\u4E0B\u6807\u4F1A\u968F\u540C\u6279\u6B21\u589E\u5220\u6F02\u79FB\uFF09\u3002
|
|
5585
|
+
|
|
5586
|
+
**\u5BB9\u5668\u6D88\u6B67\u53C2\u6570**\uFF1A\u9700\u8981\u9650\u5B9A handlers / initial \u7684 op\uFF08patch_action_array_item / replace_script / add_action / patch_action / remove_action\uFF09\u540C\u65F6\u63A5\u53D7 scope \u4E0E handlerScope\uFF0C\u4E24\u8005\u7B49\u4EF7\uFF08\u8BFB\u5DE5\u5177 get_form_fragment \u7528\u7684\u662F handlerScope\uFF09\uFF1B\u90FD\u4F20\u4E14\u53D6\u503C\u4E0D\u540C\u4F1A\u62A5 INVALID_PARAMS\u3002
|
|
5587
|
+
|
|
5588
|
+
${FORM_ACTION_ENUM}
|
|
5060
5589
|
${FORM_ENUM}`,
|
|
5061
5590
|
inputSchema: {
|
|
5062
5591
|
code: z10.string().describe("\u76EE\u6807\u8868\u5355/\u9875\u9762\u7684\u552F\u4E00\u7F16\u7801"),
|
|
@@ -5070,7 +5599,7 @@ ${FORM_ENUM}`,
|
|
|
5070
5599
|
ok: z10.boolean().describe("\u6574\u4F53\u662F\u5426\u6210\u529F\uFF08dryRun \u6210\u529F\u4E5F\u4E3A true\uFF0C\u4F46 applied=false\uFF09"),
|
|
5071
5600
|
applied: z10.boolean().describe("\u662F\u5426\u5DF2\u843D\u5E93\uFF1BdryRun \u6216\u4EFB\u4E00 op \u9884\u6F14\u5931\u8D25\u65F6\u4E3A false"),
|
|
5072
5601
|
verified: z10.boolean().nullable().describe("\u4FDD\u5B58\u540E\u56DE\u8BFB\u6821\u9A8C\u7ED3\u679C\uFF1Atrue \u5168\u90E8\u751F\u6548\u3001false \u5B58\u5728\u5F02\u5E38\u3001null \u672A\u843D\u5E93\u6216\u672A\u5F00\u542F\u6821\u9A8C"),
|
|
5073
|
-
errorCode: z10.string().describe("\u9519\u8BEF\u7801\uFF1AOK / DRY_RUN / EMPTY_OPS / FETCH_FAILED / NODE_NOT_FOUND / DUP_CODE / REF_VIOLATION / OPS_FAILED / SAVE_FAILED / VERIFY_FAILED / ARRAY_OVERWRITE_BLOCKED / ARRAY_NOT_FOUND / NO_TARGET / INVALID_PARAMS"),
|
|
5602
|
+
errorCode: z10.string().describe("\u9519\u8BEF\u7801\uFF1AOK / DRY_RUN / EMPTY_OPS / FETCH_FAILED / NODE_NOT_FOUND / DUP_CODE / REF_VIOLATION / OPS_FAILED / SAVE_FAILED / VERIFY_FAILED / ARRAY_OVERWRITE_BLOCKED / ARRAY_NOT_FOUND / TYPE_NOT_ALLOWED / NO_TARGET / INVALID_PARAMS"),
|
|
5074
5603
|
message: z10.string().describe("\u7ED3\u679C\u8BF4\u660E\uFF1B\u5931\u8D25\u65F6\u7ED9\u51FA\u53EF\u76F4\u63A5\u6267\u884C\u7684\u5904\u7406\u5EFA\u8BAE"),
|
|
5075
5604
|
diff: z10.string().describe("\u5168\u90E8 op \u7684 diff \u7247\u6BB5\uFF0C\u8D85\u957F\u4F1A\u622A\u65AD\uFF1B\u53EA\u56DE\u6539\u52A8\u6458\u8981\uFF0C\u4E0D\u56DE\u6574\u4EFD\u8868\u5355"),
|
|
5076
5605
|
ops: z10.array(z10.object({
|