@oomol-lab/open-flow 0.1.0-beta.84 → 0.1.0-beta.86

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 (97) hide show
  1. package/dist/browser/{FlowCanvas-B2g7NceZ.js → FlowCanvas-CHIaMaBv.js} +112 -16
  2. package/dist/browser/{createResourceDialog-Bi4fUnbD.js → createResourceDialog-C0E5yPe6.js} +3 -3
  3. package/dist/browser/{dialog-BzoSxhXQ.js → dialog-b3hsdu8i.js} +291 -143
  4. package/dist/browser/{exportPng-DLdtJvg3.js → exportPng-DGHcejgy.js} +2 -2
  5. package/dist/browser/{flowChanges-C567g-Pc.js → flowChanges-BvSWezEb.js} +375 -83
  6. package/dist/browser/{flowWorkspace-DBk4A-Ld.js → flowWorkspace-BKnMRClO.js} +1619 -475
  7. package/dist/browser/fr-CNTSedYU.js +593 -0
  8. package/dist/browser/ja-CxQBHr2J.js +593 -0
  9. package/dist/browser/ko-D1Exiv1h.js +593 -0
  10. package/dist/browser/licenses.md +1 -1
  11. package/dist/browser/{markdownContent-DIuJThGK.js → markdownContent-BR9-1ikU.js} +1 -1
  12. package/dist/browser/preview.css +181 -181
  13. package/dist/browser/preview.js +2103 -636
  14. package/dist/browser/ru-BzLZv0B7.js +593 -0
  15. package/dist/browser/{tooltip-DGj5pudg.js → tooltip-DSBF3bRw.js} +55 -23
  16. package/dist/browser/workbench.css +181 -181
  17. package/dist/browser/workbench.js +86 -17
  18. package/dist/browser/{workbenchSelect-BIaEVTx6.js → workbenchSelect-Di1Bm_-d.js} +2 -2
  19. package/dist/browser/{wrapLayout-C4moMKgb.js → wrapLayout-B0AT8_-i.js} +1 -1
  20. package/dist/browser/zh-CN-Dg_xSGde.js +593 -0
  21. package/dist/browser/zh-TW-oxuLwsV0.js +593 -0
  22. package/dist/command/index.js +61 -57
  23. package/dist/command/licenses.md +28 -4
  24. package/dist/common/authoring.d.ts +5 -5
  25. package/dist/common/authoringExamples.d.ts +3 -2
  26. package/dist/common/authoringSchema.d.ts +41 -4
  27. package/dist/common/catalogCache.d.ts +46 -0
  28. package/dist/common/connector-action.js +13 -10
  29. package/dist/common/connector-proxy.d.ts +96 -0
  30. package/dist/common/connector-proxy.js +5209 -0
  31. package/dist/common/control-api-conformance.js +312 -46
  32. package/dist/common/control-api.d.ts +12 -1
  33. package/dist/common/control-api.js +303 -41
  34. package/dist/common/control-requests.d.ts +4 -3
  35. package/dist/common/control-requests.js +14111 -171
  36. package/dist/common/engine-contract.d.ts +3 -2
  37. package/dist/common/event-source.js +55 -23
  38. package/dist/common/flow-authoring-node.d.ts +2 -0
  39. package/dist/common/flow-authoring.js +6936 -6781
  40. package/dist/common/flow-change-schema.d.ts +1 -1
  41. package/dist/common/flow-change.d.ts +2 -2
  42. package/dist/common/flow-change.js +91 -36
  43. package/dist/common/flow-connectionUsage.d.ts +1 -1
  44. package/dist/common/flow-encoding.js +93 -38
  45. package/dist/common/flow-requestParameters.d.ts +34 -0
  46. package/dist/common/flow-semantics.js +9429 -9236
  47. package/dist/common/flow-state.js +55 -23
  48. package/dist/common/flow-workflowFile.d.ts +3 -1
  49. package/dist/common/http-request.d.ts +6 -11
  50. package/dist/common/http-request.js +192 -141
  51. package/dist/common/licenses.md +1 -1
  52. package/dist/common/mcp.d.ts +3 -3
  53. package/dist/common/mcp.js +303 -41
  54. package/dist/common/run-events.js +1 -0
  55. package/dist/common/runtime-contract.js +10 -4
  56. package/dist/common/runtime-nodejs-compat.js +55 -23
  57. package/dist/common/scheduler-checkpoint.d.ts +3 -3
  58. package/dist/common/scheduler-dependencies.d.ts +22 -28
  59. package/dist/common/scheduler-node-execution.d.ts +1 -0
  60. package/dist/common/scheduler.d.ts +8 -2
  61. package/dist/common/scheduler.js +274 -95
  62. package/dist/common/workflow.js +51 -19
  63. package/dist/common/workflowAuthoring.d.ts +411 -0
  64. package/dist/render/browser/licenses.md +1 -1
  65. package/dist/render/browser/runtime.js +289 -61
  66. package/dist/render/node/index.js +85 -30
  67. package/dist/render/node/licenses.md +1 -1
  68. package/package.json +1 -1
  69. package/skills/open-flow/references/flow-authoring.md +14 -13
  70. package/src/base/common/jsonSchema.ts +11 -0
  71. package/src/connector/common/actionSchema.ts +4 -11
  72. package/src/connector/common/proxy.ts +152 -0
  73. package/src/control/common/api.ts +99 -3
  74. package/src/control/common/authoring.ts +23 -9
  75. package/src/control/common/authoringExamples.ts +9 -0
  76. package/src/control/common/authoringSchema.ts +21 -12
  77. package/src/control/common/catalogCache.ts +145 -0
  78. package/src/control/common/conformance.ts +9 -3
  79. package/src/control/common/connectorQueries.ts +17 -2
  80. package/src/control/common/requests.ts +1 -0
  81. package/src/control/common/workflowAuthoring.ts +120 -0
  82. package/src/execution/common/checkpoint.ts +18 -12
  83. package/src/execution/common/dependencies.ts +132 -15
  84. package/src/execution/common/events.ts +3 -0
  85. package/src/execution/common/node-execution.ts +22 -15
  86. package/src/execution/common/scheduler.ts +20 -31
  87. package/src/flow/common/change.ts +2 -1
  88. package/src/flow/common/changeSchema.ts +11 -1
  89. package/src/flow/common/connectionUsage.ts +4 -2
  90. package/src/flow/common/errorHandling.ts +3 -1
  91. package/src/flow/common/nodeChanges.ts +35 -18
  92. package/src/flow/common/requestParameters.ts +120 -0
  93. package/src/flow/common/semantics.ts +51 -1
  94. package/src/flow/common/sourceField.ts +3 -2
  95. package/src/flow/common/workflowFile.ts +2 -2
  96. package/src/http/common/httpRequest.ts +28 -78
  97. package/src/runtime/common/engineContract.ts +6 -3
@@ -1,28 +1,4 @@
1
- //#region ../../node_modules/.bun/dequal@2.0.3/node_modules/dequal/lite/index.mjs
2
- var has = Object.prototype.hasOwnProperty;
3
- function dequal(foo, bar) {
4
- var ctor, len;
5
- if (foo === bar) return true;
6
- if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
7
- if (ctor === Date) return foo.getTime() === bar.getTime();
8
- if (ctor === RegExp) return foo.toString() === bar.toString();
9
- if (ctor === Array) {
10
- if ((len = foo.length) === bar.length) while (len-- && dequal(foo[len], bar[len]));
11
- return len === -1;
12
- }
13
- if (!ctor || typeof foo === "object") {
14
- len = 0;
15
- for (ctor in foo) {
16
- if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
17
- if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
18
- }
19
- return Object.keys(bar).length === len;
20
- }
21
- }
22
- return foo !== foo && bar !== bar;
23
- }
24
- //#endregion
25
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/util.js
1
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/util.js
26
2
  function getEnumValues(entries) {
27
3
  const numericValues = Object.values(entries).filter((v) => typeof v === "number");
28
4
  return Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);
@@ -322,6 +298,17 @@ function prefixIssues(path, issues) {
322
298
  function unwrapMessage(message) {
323
299
  return typeof message === "string" ? message : message?.message;
324
300
  }
301
+ /** The leading size checks of `defChecks` that set an upper bound, each paired with it. */
302
+ function sizeCaps(defChecks) {
303
+ const caps = [];
304
+ for (const ch of defChecks ?? []) {
305
+ const d = ch._zod.def;
306
+ if (!/_(length|size)$|_equals$/.test(d.check)) break;
307
+ const max = d.maximum ?? d.length ?? d.size;
308
+ if (max >= 0) caps.push([max, ch]);
309
+ }
310
+ return caps;
311
+ }
325
312
  function attachSchema(issues, start, inst) {
326
313
  var _a;
327
314
  for (let i = start; i < issues.length; i++) (_a = issues[i]).schema ?? (_a.schema = inst);
@@ -538,7 +525,7 @@ function constantCatch(value) {
538
525
  return fn;
539
526
  }
540
527
  //#endregion
541
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/core.js
528
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/core.js
542
529
  var _a$1;
543
530
  var _zodDesc = {
544
531
  value: void 0,
@@ -644,7 +631,7 @@ function config(newConfig) {
644
631
  return globalConfig;
645
632
  }
646
633
  //#endregion
647
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/errors.js
634
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/errors.js
648
635
  function _getMessage() {
649
636
  const internals = this._zod;
650
637
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -760,7 +747,7 @@ function formatError(error, mapper = (issue) => issue.message) {
760
747
  return fieldErrors;
761
748
  }
762
749
  //#endregion
763
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/parse.js
750
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/parse.js
764
751
  function finalizeParams(callee, params) {
765
752
  return {
766
753
  callee: params?.callee ?? callee,
@@ -963,7 +950,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
963
950
  return _safeParseAsync(_Err)(schema, value, _ctx);
964
951
  };
965
952
  //#endregion
966
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/regexes.js
953
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/regexes.js
967
954
  /**
968
955
  * @deprecated CUID v1 is deprecated by its authors due to information leakage
969
956
  * (timestamps embedded in the id). Use {@link cuid2} instead.
@@ -1032,7 +1019,7 @@ var anyString = /^[\s\S]{0,}$/;
1032
1019
  var lowercase = /^[^A-Z]*$/;
1033
1020
  var uppercase = /^[^a-z]*$/;
1034
1021
  //#endregion
1035
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/checks.js
1022
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/checks.js
1036
1023
  var $ZodCheck = /*@__PURE__*/ $constructor("$ZodCheck", (inst, def) => {
1037
1024
  var _a;
1038
1025
  inst._zod ?? (inst._zod = {});
@@ -1212,7 +1199,7 @@ var $ZodCheckOverwrite = /*@__PURE__*/ $constructor("$ZodCheckOverwrite", (inst,
1212
1199
  };
1213
1200
  });
1214
1201
  //#endregion
1215
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/doc.js
1202
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/doc.js
1216
1203
  var Doc = class {
1217
1204
  constructor(args = [], closed = {}) {
1218
1205
  this.content = [];
@@ -1246,14 +1233,14 @@ var Doc = class {
1246
1233
  }
1247
1234
  };
1248
1235
  //#endregion
1249
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/versions.js
1236
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/versions.js
1250
1237
  var version = {
1251
1238
  major: 4,
1252
1239
  minor: 6,
1253
- patch: 5
1240
+ patch: 7
1254
1241
  };
1255
1242
  //#endregion
1256
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/schemas.js
1243
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/schemas.js
1257
1244
  var $ZodType = /*@__PURE__*/ $constructor("$ZodType", (inst, def) => {
1258
1245
  var _a;
1259
1246
  inst ?? (inst = {});
@@ -1708,6 +1695,26 @@ var $ZodNever = /*@__PURE__*/ $constructor("$ZodNever", (inst, def) => {
1708
1695
  return payload;
1709
1696
  };
1710
1697
  });
1698
+ function capSize(inst, size) {
1699
+ const caps = sizeCaps(inst._zod.def.checks);
1700
+ if (!caps.length) return;
1701
+ const cap = Math.min(...caps.map((c) => c[0]));
1702
+ const parse = inst._zod.parse;
1703
+ inst._zod.parse = (payload, ctx) => {
1704
+ const n = size(payload.value);
1705
+ if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
1706
+ for (const [max, ch] of sizeCaps(inst._zod.def.checks)) if (n > max && ch._zod.def.when(payload)) {
1707
+ const start = payload.issues.length;
1708
+ ch._zod.check(payload);
1709
+ payload.issues[start].continue = false;
1710
+ attachSchema(payload.issues, start, inst);
1711
+ return payload;
1712
+ }
1713
+ }
1714
+ return parse(payload, ctx);
1715
+ };
1716
+ }
1717
+ var arraySize = (input) => Array.isArray(input) ? input.length : -1;
1711
1718
  function handleArrayResult(result, final, index) {
1712
1719
  if (result.issues.length) final.issues.push(...prefixIssues(index, result.issues));
1713
1720
  final.value[index] = result.value;
@@ -1745,6 +1752,7 @@ var $ZodArray = /*@__PURE__*/ $constructor("$ZodArray", (inst, def) => {
1745
1752
  if (proms.length) return Promise.all(proms).then(() => payload);
1746
1753
  return payload;
1747
1754
  };
1755
+ capSize(inst, arraySize);
1748
1756
  });
1749
1757
  function handlePropertyResult(result, final, key, input, optin, optout) {
1750
1758
  const isPresent = key in input;
@@ -1853,7 +1861,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
1853
1861
  }
1854
1862
  return propValues;
1855
1863
  });
1856
- const isObject$2 = isObject;
1864
+ const isObject$1 = isObject;
1857
1865
  const catchall = def.catchall;
1858
1866
  let value;
1859
1867
  const memo = globalConfig.memoizer;
@@ -1861,7 +1869,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
1861
1869
  inst._zod.parse = (payload, ctx) => {
1862
1870
  value ?? (value = _normalized.value);
1863
1871
  const input = payload.value;
1864
- if (!isObject$2(input)) {
1872
+ if (!isObject$1(input)) {
1865
1873
  payload.issues.push({
1866
1874
  expected: "object",
1867
1875
  code: "invalid_type",
@@ -1991,7 +1999,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
1991
1999
  return doc.compile();
1992
2000
  };
1993
2001
  let fastpass;
1994
- const isObject$1 = isObject;
2002
+ const isObject$2 = isObject;
1995
2003
  const jit = !globalConfig.jitless;
1996
2004
  const fastEnabled = jit && allowsEval.value;
1997
2005
  const catchall = def.catchall;
@@ -1999,7 +2007,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
1999
2007
  inst._zod.parse = (payload, ctx) => {
2000
2008
  value ?? (value = _normalized.value);
2001
2009
  const input = payload.value;
2002
- if (!isObject$1(input)) {
2010
+ if (!isObject$2(input)) {
2003
2011
  payload.issues.push({
2004
2012
  expected: "object",
2005
2013
  code: "invalid_type",
@@ -2449,7 +2457,7 @@ function handleRefineResult(result, payload, input, inst) {
2449
2457
  }
2450
2458
  }
2451
2459
  //#endregion
2452
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/memoizer.js
2460
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/memoizer.js
2453
2461
  var $ZodCyclicError = class extends Error {
2454
2462
  constructor() {
2455
2463
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -2702,7 +2710,7 @@ function isBackEdge(ctx, value) {
2702
2710
  return backEdges !== void 0 && isRef(value) && backEdges.has(value);
2703
2711
  }
2704
2712
  //#endregion
2705
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/locales/en.js
2713
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/locales/en.js
2706
2714
  var error = () => {
2707
2715
  const Sizable = {
2708
2716
  string: {
@@ -2810,7 +2818,7 @@ function en_default() {
2810
2818
  return { localeError: error() };
2811
2819
  }
2812
2820
  //#endregion
2813
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/registries.js
2821
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/registries.js
2814
2822
  var _a;
2815
2823
  var $ZodRegistry = class {
2816
2824
  constructor() {
@@ -2857,7 +2865,7 @@ function registry() {
2857
2865
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
2858
2866
  var globalRegistry = globalThis.__zod_globalRegistry;
2859
2867
  //#endregion
2860
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/api.js
2868
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/api.js
2861
2869
  function snapshotChecks(def) {
2862
2870
  if (def.checks) def.checks = [...def.checks];
2863
2871
  return def;
@@ -3297,7 +3305,7 @@ function _check(fn, params) {
3297
3305
  return ch;
3298
3306
  }
3299
3307
  //#endregion
3300
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.js
3308
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/to-json-schema.js
3301
3309
  function assignProps(target, ...sources) {
3302
3310
  for (const source of sources) for (const key of Reflect.ownKeys(source)) if (Object.prototype.propertyIsEnumerable.call(source, key)) assignProp(target, key, source[key]);
3303
3311
  return target;
@@ -3741,7 +3749,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
3741
3749
  return finalize(ctx, schema);
3742
3750
  };
3743
3751
  //#endregion
3744
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/json-schema-processors.js
3752
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/json-schema-processors.js
3745
3753
  var narrowMin = (agg, key, value) => {
3746
3754
  if (agg[key] === void 0 || value > agg[key]) agg[key] = value;
3747
3755
  };
@@ -4057,7 +4065,7 @@ var optionalProcessor = (schema, ctx, _json, params) => {
4057
4065
  seen.ref = def.innerType;
4058
4066
  };
4059
4067
  //#endregion
4060
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/errors.js
4068
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/errors.js
4061
4069
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
4062
4070
  function _lazyMethod(proto, key, make) {
4063
4071
  Object.defineProperty(proto, key, {
@@ -4107,7 +4115,7 @@ var initializer = (inst, issues) => {
4107
4115
  };
4108
4116
  var ZodRealError = /*@__PURE__*/ $constructor("ZodError", initializer, void 0, { Parent: Error });
4109
4117
  //#endregion
4110
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/parse.js
4118
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/parse.js
4111
4119
  var parse = /* @__PURE__ */ _parse(ZodRealError);
4112
4120
  var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);
4113
4121
  var safeParse = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -4121,7 +4129,7 @@ var safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);
4121
4129
  var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
4122
4130
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
4123
4131
  //#endregion
4124
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/schemas.js
4132
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/schemas.js
4125
4133
  function _ensureDefaultLocale() {
4126
4134
  if (!globalConfig.localeError) config(en_default());
4127
4135
  }
@@ -4884,6 +4892,37 @@ function superRefine(fn, params) {
4884
4892
  return /* @__PURE__ */ _superRefine(fn, params);
4885
4893
  }
4886
4894
  //#endregion
4895
+ //#region ../../node_modules/.bun/dequal@2.0.3/node_modules/dequal/lite/index.mjs
4896
+ var has = Object.prototype.hasOwnProperty;
4897
+ function dequal(foo, bar) {
4898
+ var ctor, len;
4899
+ if (foo === bar) return true;
4900
+ if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
4901
+ if (ctor === Date) return foo.getTime() === bar.getTime();
4902
+ if (ctor === RegExp) return foo.toString() === bar.toString();
4903
+ if (ctor === Array) {
4904
+ if ((len = foo.length) === bar.length) while (len-- && dequal(foo[len], bar[len]));
4905
+ return len === -1;
4906
+ }
4907
+ if (!ctor || typeof foo === "object") {
4908
+ len = 0;
4909
+ for (ctor in foo) {
4910
+ if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
4911
+ if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
4912
+ }
4913
+ return Object.keys(bar).length === len;
4914
+ }
4915
+ }
4916
+ return foo !== foo && bar !== bar;
4917
+ }
4918
+ //#endregion
4919
+ //#region src/http/common/headers.ts
4920
+ /** Header names are case-insensitive; never silently combine duplicate business fields. */
4921
+ function httpHeaderNameIssue(name, names) {
4922
+ if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) return "invalid";
4923
+ if (names.some((candidate) => candidate.toLowerCase() === name.toLowerCase())) return "duplicate";
4924
+ }
4925
+ //#endregion
4887
4926
  //#region src/flow/common/portChanges.ts
4888
4927
  function renamedPort(previous, next) {
4889
4928
  const previousNames = new Set(previous.flatMap((port) => "handle" in port ? [port.handle] : []));
@@ -4909,11 +4948,99 @@ function remapInputMappings(mappings, ports, rename) {
4909
4948
  return inputs;
4910
4949
  }
4911
4950
  //#endregion
4912
- //#region src/http/common/headers.ts
4913
- /** Header names are case-insensitive; never silently combine duplicate business fields. */
4914
- function httpHeaderNameIssue(name, names) {
4915
- if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) return "invalid";
4916
- if (names.some((candidate) => candidate.toLowerCase() === name.toLowerCase())) return "duplicate";
4951
+ //#region src/flow/common/requestParameters.ts
4952
+ var requestParameterSchema = strictObject({
4953
+ mode: _enum(["fields", "object"]).default("fields"),
4954
+ names: array(string()).default([])
4955
+ });
4956
+ function requestParameterHandle(group, name) {
4957
+ return `${group === "query" ? "query" : "header"}.${name}`;
4958
+ }
4959
+ function requestParameterPorts(config, querySchema, queryValueSchema, headerSchema) {
4960
+ return ["query", "headers"].flatMap((group) => config[group].mode === "object" ? [{
4961
+ handle: group,
4962
+ jsonSchema: group === "query" ? querySchema : headerSchema,
4963
+ nullable: true
4964
+ }] : config[group].names.filter((name) => name.trim()).map((name) => ({
4965
+ handle: requestParameterHandle(group, name),
4966
+ jsonSchema: group === "query" ? queryValueSchema : { type: "string" },
4967
+ nullable: true
4968
+ })));
4969
+ }
4970
+ function retainRequestPorts(ports, old = []) {
4971
+ const remaining = new Map(ports.map((port) => [port.handle, port]));
4972
+ return [...old.flatMap((item) => {
4973
+ if ("group" in item) return [item];
4974
+ const next = remaining.get(item.handle);
4975
+ if (next == null) return [];
4976
+ remaining.delete(item.handle);
4977
+ return [dequal(item.jsonSchema, next.jsonSchema) && item.nullable == next.nullable ? item : next];
4978
+ }), ...remaining.values()];
4979
+ }
4980
+ function requestParameterIssues(config) {
4981
+ const issues = [];
4982
+ for (const group of ["query", "headers"]) {
4983
+ if (config[group].mode !== "fields") continue;
4984
+ const seen = /* @__PURE__ */ new Set();
4985
+ for (const [index, name] of config[group].names.entries()) {
4986
+ const key = group === "headers" ? name.toLowerCase() : name;
4987
+ if (!name.trim() || seen.has(key)) issues.push({
4988
+ field: group,
4989
+ index,
4990
+ code: "parameterNamesInvalid",
4991
+ message: "Parameter names must be nonempty and unique."
4992
+ });
4993
+ seen.add(key);
4994
+ if (group === "headers" && httpHeaderNameIssue(name, []) === "invalid") issues.push({
4995
+ field: group,
4996
+ index,
4997
+ code: "headerNameInvalid",
4998
+ message: "Invalid HTTP header name."
4999
+ });
5000
+ }
5001
+ }
5002
+ return issues;
5003
+ }
5004
+ /** Only a named parameter rename carries a source; changing modes does not rename a port. */
5005
+ function requestInputMappings(mappings, previous, next) {
5006
+ const candidate = renamedPort(previous.inputs, next.inputs);
5007
+ const rename = candidate != null && ["query.", "header."].some((prefix) => candidate.every((name) => name.startsWith(prefix))) ? candidate : void 0;
5008
+ return remapInputMappings(mappings, next.inputs, rename);
5009
+ }
5010
+ function withRequestParameterFields(node, group, values, previous, createTask) {
5011
+ const task = createTask({
5012
+ mode: "fields",
5013
+ names: Object.keys(values)
5014
+ });
5015
+ const inputs = requestInputMappings(node.inputs, node.task, task);
5016
+ const rename = renamedPort(node.task.inputs, task.inputs);
5017
+ for (const [name, value] of Object.entries(values)) {
5018
+ const handle = requestParameterHandle(group, name);
5019
+ const existing = previous.mode === "fields" && (previous.names.includes(name) || rename?.[1] === handle);
5020
+ if (inputs[handle] == null && !existing) inputs[handle] = {
5021
+ kind: "value",
5022
+ value
5023
+ };
5024
+ }
5025
+ return {
5026
+ ...node,
5027
+ task,
5028
+ inputs
5029
+ };
5030
+ }
5031
+ function withRequestParameterSource(node, group, mapping, createTask) {
5032
+ const task = createTask({
5033
+ mode: "object",
5034
+ names: []
5035
+ });
5036
+ const inputs = requestInputMappings(node.inputs, node.task, task);
5037
+ if (mapping == null) delete inputs[group];
5038
+ else inputs[group] = mapping;
5039
+ return {
5040
+ ...node,
5041
+ task,
5042
+ inputs
5043
+ };
4917
5044
  }
4918
5045
  //#endregion
4919
5046
  //#region src/http/common/hosts.ts
@@ -4930,10 +5057,6 @@ function httpHostAllowed(hosts, hostname) {
4930
5057
  }
4931
5058
  //#endregion
4932
5059
  //#region src/http/common/httpRequest.ts
4933
- var parameterSchema = strictObject({
4934
- mode: _enum(["fields", "object"]).default("fields"),
4935
- names: array(string()).default([])
4936
- });
4937
5060
  var httpRequestConfigSchema = strictObject({
4938
5061
  method: _enum([
4939
5062
  "GET",
@@ -4944,11 +5067,11 @@ var httpRequestConfigSchema = strictObject({
4944
5067
  "HEAD",
4945
5068
  "OPTIONS"
4946
5069
  ]).default("GET"),
4947
- query: parameterSchema.default({
5070
+ query: requestParameterSchema.default({
4948
5071
  mode: "fields",
4949
5072
  names: []
4950
5073
  }),
4951
- headers: parameterSchema.default({
5074
+ headers: requestParameterSchema.default({
4952
5075
  mode: "fields",
4953
5076
  names: []
4954
5077
  }),
@@ -4995,32 +5118,12 @@ var httpQuerySchema = {
4995
5118
  function httpAuthHandles(config) {
4996
5119
  return config.authentication.type == "none" ? [] : config.authentication.type == "basic" ? ["auth.username", "auth.password"] : ["auth.token"];
4997
5120
  }
4998
- function retain(ports, old) {
4999
- const remaining = new Map(ports.map((port) => [port.handle, port]));
5000
- return [...old.flatMap((item) => {
5001
- if ("group" in item) return [item];
5002
- const next = remaining.get(item.handle);
5003
- if (next == null) return [];
5004
- remaining.delete(item.handle);
5005
- return [dequal(item.jsonSchema, next.jsonSchema) && item.nullable == next.nullable ? item : next];
5006
- }), ...remaining.values()];
5007
- }
5008
5121
  function httpRequestTask(config = httpRequestConfigSchema.parse({}), name = "HTTP Request", previous) {
5009
5122
  const inputs = [{
5010
5123
  handle: "url",
5011
5124
  jsonSchema: { type: "string" },
5012
5125
  nullable: false
5013
- }];
5014
- for (const group of ["query", "headers"]) if (config[group].mode == "object") inputs.push({
5015
- handle: group,
5016
- jsonSchema: group == "query" ? httpQuerySchema : httpHeaderSchema,
5017
- nullable: true
5018
- });
5019
- else for (const parameterName of config[group].names.filter((value) => value.trim())) inputs.push({
5020
- handle: `${group == "query" ? "query" : "header"}.${parameterName}`,
5021
- jsonSchema: group == "query" ? queryValueSchema : { type: "string" },
5022
- nullable: true
5023
- });
5126
+ }, ...requestParameterPorts(config, httpQuerySchema, queryValueSchema, httpHeaderSchema)];
5024
5127
  if (config.bodyFormat != "none") inputs.push({
5025
5128
  handle: "body",
5026
5129
  jsonSchema: config.bodyFormat == "json" ? {} : config.bodyFormat == "text" ? { type: "string" } : httpQuerySchema,
@@ -5054,8 +5157,8 @@ function httpRequestTask(config = httpRequestConfigSchema.parse({}), name = "HTT
5054
5157
  ...config,
5055
5158
  kind: "http-request"
5056
5159
  },
5057
- inputs: retain(inputs, previous?.inputs ?? []),
5058
- outputs: retain(outputs, previous?.outputs ?? [])
5160
+ inputs: retainRequestPorts(inputs, previous?.inputs),
5161
+ outputs: retainRequestPorts(outputs, previous?.outputs)
5059
5162
  };
5060
5163
  }
5061
5164
  function httpRequestIssues(config) {
@@ -5065,26 +5168,7 @@ function httpRequestIssues(config) {
5065
5168
  code: "bodyUnsupported",
5066
5169
  message: "GET and HEAD do not support a request body."
5067
5170
  });
5068
- for (const group of ["query", "headers"]) {
5069
- if (config[group].mode != "fields") continue;
5070
- const seen = /* @__PURE__ */ new Set();
5071
- for (const [index, name] of config[group].names.entries()) {
5072
- const key = group == "headers" ? name.toLowerCase() : name;
5073
- if (!name.trim() || seen.has(key)) issues.push({
5074
- field: group,
5075
- index,
5076
- code: "parameterNamesInvalid",
5077
- message: "Parameter names must be nonempty and unique."
5078
- });
5079
- seen.add(key);
5080
- if (group == "headers" && httpHeaderNameIssue(name, []) === "invalid") issues.push({
5081
- field: group,
5082
- index,
5083
- code: "headerNameInvalid",
5084
- message: "Invalid HTTP header name."
5085
- });
5086
- }
5087
- }
5171
+ issues.push(...requestParameterIssues(config));
5088
5172
  const auth = config.authentication;
5089
5173
  if (auth.type != "none") {
5090
5174
  const group = auth.type == "apiKey" && auth.in == "query" ? "query" : "headers";
@@ -5213,11 +5297,7 @@ function parseHttpResponse(config, status, headers, text) {
5213
5297
  };
5214
5298
  }
5215
5299
  /** Only a named parameter rename carries a value; changing source modes is not a rename. */
5216
- function httpRequestInputs(mappings, previous, next) {
5217
- const candidate = renamedPort(previous.inputs, next.inputs);
5218
- const rename = candidate != null && ["query.", "header."].some((prefix) => candidate.every((name) => name.startsWith(prefix))) ? candidate : void 0;
5219
- return remapInputMappings(mappings, next.inputs, rename);
5220
- }
5300
+ var httpRequestInputs = requestInputMappings;
5221
5301
  function httpRequestExecutor(node) {
5222
5302
  const executor = node.task.executor;
5223
5303
  return executor?.kind === "http-request" ? executor : void 0;
@@ -5226,47 +5306,18 @@ function httpRequestExecutor(node) {
5226
5306
  function withHttpParameterFields(node, group, values) {
5227
5307
  const config = httpRequestExecutor(node);
5228
5308
  if (config == null) return node;
5229
- const task = httpRequestTask({
5309
+ return withRequestParameterFields(node, group, values, config[group], (parameters) => httpRequestTask({
5230
5310
  ...config,
5231
- [group]: {
5232
- mode: "fields",
5233
- names: Object.keys(values)
5234
- }
5235
- }, node.task.name, node.task);
5236
- const inputs = httpRequestInputs(node.inputs, node.task, task);
5237
- const rename = renamedPort(node.task.inputs, task.inputs);
5238
- for (const [name, value] of Object.entries(values)) {
5239
- const handle = `${group === "query" ? "query" : "header"}.${name}`;
5240
- const existing = config[group].mode === "fields" && (config[group].names.includes(name) || rename?.[1] === handle);
5241
- if (inputs[handle] == null && !existing) inputs[handle] = {
5242
- kind: "value",
5243
- value
5244
- };
5245
- }
5246
- return {
5247
- ...node,
5248
- task,
5249
- inputs
5250
- };
5311
+ [group]: parameters
5312
+ }, node.task.name, node.task));
5251
5313
  }
5252
5314
  function withHttpParameterSource(node, group, mapping) {
5253
5315
  const config = httpRequestExecutor(node);
5254
5316
  if (config == null) return node;
5255
- const task = httpRequestTask({
5317
+ return withRequestParameterSource(node, group, mapping, (parameters) => httpRequestTask({
5256
5318
  ...config,
5257
- [group]: {
5258
- mode: "object",
5259
- names: []
5260
- }
5261
- }, node.task.name, node.task);
5262
- const inputs = httpRequestInputs(node.inputs, node.task, task);
5263
- if (mapping == null) delete inputs[group];
5264
- else inputs[group] = mapping;
5265
- return {
5266
- ...node,
5267
- task,
5268
- inputs
5269
- };
5319
+ [group]: parameters
5320
+ }, node.task.name, node.task));
5270
5321
  }
5271
5322
  //#endregion
5272
5323
  export { buildHttpRequest, httpAuthHandles, httpHeaderSchema, httpHostAllowed, httpQuerySchema, httpRequestConfigSchema, httpRequestExecutorSchema, httpRequestInputs, httpRequestIssues, httpRequestTask, httpRequestUrl, isHttpHost, maxHttpHosts, parseHttpResponse, withHttpParameterFields, withHttpParameterSource };
@@ -95,7 +95,7 @@ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
95
95
  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
96
96
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
97
97
 
98
- ## zod - 4.6.5 (MIT)
98
+ ## zod - 4.6.7 (MIT)
99
99
 
100
100
  MIT License
101
101
 
@@ -285,7 +285,7 @@ export declare const mcpTools: {
285
285
  value: {
286
286
  revision?: string | undefined;
287
287
  query: string;
288
- type?: "agent" | "approval" | "code" | "condition" | "connector" | "cron" | "decision" | "error" | "http-request" | "integration" | "llm" | "openapi" | "outputs" | "poll" | "skip-duplicates" | "start" | "value" | "wait" | "webhook" | "webhook-response" | "workflow" | undefined;
288
+ type?: "agent" | "approval" | "code" | "condition" | "connector" | "connector-proxy" | "cron" | "decision" | "error" | "http-request" | "integration" | "llm" | "openapi" | "outputs" | "poll" | "skip-duplicates" | "start" | "value" | "wait" | "webhook" | "webhook-response" | "workflow" | undefined;
289
289
  offset: number;
290
290
  limit: number;
291
291
  flowId: string;
@@ -317,7 +317,7 @@ export declare const mcpTools: {
317
317
  };
318
318
  validate(value: unknown): {
319
319
  value: {
320
- type?: "agent" | "approval" | "code" | "condition" | "connector" | "cron" | "decision" | "error" | "http-request" | "integration" | "llm" | "openapi" | "outputs" | "poll" | "skip-duplicates" | "start" | "value" | "wait" | "webhook" | "webhook-response" | "workflow" | undefined;
320
+ type?: "agent" | "approval" | "code" | "condition" | "connector" | "connector-proxy" | "cron" | "decision" | "error" | "http-request" | "integration" | "llm" | "openapi" | "outputs" | "poll" | "skip-duplicates" | "start" | "value" | "wait" | "webhook" | "webhook-response" | "workflow" | undefined;
321
321
  action?: string | undefined;
322
322
  flowId?: string | undefined;
323
323
  };
@@ -447,7 +447,7 @@ export declare const mcpTools: {
447
447
  edits: ({
448
448
  op: "node.add";
449
449
  as: string;
450
- type: "agent" | "approval" | "code" | "condition" | "connector" | "cron" | "decision" | "error" | "http-request" | "integration" | "llm" | "openapi" | "outputs" | "poll" | "skip-duplicates" | "start" | "value" | "wait" | "webhook" | "webhook-response" | "workflow";
450
+ type: "agent" | "approval" | "code" | "condition" | "connector" | "connector-proxy" | "cron" | "decision" | "error" | "http-request" | "integration" | "llm" | "openapi" | "outputs" | "poll" | "skip-duplicates" | "start" | "value" | "wait" | "webhook" | "webhook-response" | "workflow";
451
451
  name: string;
452
452
  onError?: "error" | "stop" | undefined;
453
453
  retry?: {