@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
@@ -26621,6 +26621,76 @@ var OpenFlowRenderer = (function(exports) {
26621
26621
  }
26622
26622
  /*! For license information please see dagre.esm.js.LEGAL.txt */
26623
26623
  //#endregion
26624
+ //#region src/canvas/browser/base/routeCrossings.ts
26625
+ var epsilon = 1e-6;
26626
+ function samePoint(a, b) {
26627
+ return Math.abs(a.x - b.x) < epsilon && Math.abs(a.y - b.y) < epsilon;
26628
+ }
26629
+ function segment(a, b) {
26630
+ return {
26631
+ left: Math.min(a.x, b.x),
26632
+ right: Math.max(a.x, b.x),
26633
+ top: Math.min(a.y, b.y),
26634
+ bottom: Math.max(a.y, b.y)
26635
+ };
26636
+ }
26637
+ /** Allow only the common prefix/suffix, not later crossings between the same edges. */
26638
+ function sharedEnd(a, b, overlap, reverse) {
26639
+ const step = reverse ? -1 : 1;
26640
+ let i = reverse ? a.length - 1 : 0;
26641
+ let j = reverse ? b.length - 1 : 0;
26642
+ let start = a[i];
26643
+ if (!samePoint(start, b[j])) return false;
26644
+ if (Math.abs(overlap.left - start.x) < epsilon && Math.abs(overlap.right - start.x) < epsilon && Math.abs(overlap.top - start.y) < epsilon && Math.abs(overlap.bottom - start.y) < epsilon) return true;
26645
+ while (a[i + step] && b[j + step]) {
26646
+ const endA = a[i + step];
26647
+ const endB = b[j + step];
26648
+ const vertical = Math.abs(endA.x - start.x) < epsilon;
26649
+ const otherVertical = Math.abs(endB.x - start.x) < epsilon;
26650
+ const directionA = vertical ? endA.y - start.y : endA.x - start.x;
26651
+ const directionB = vertical ? endB.y - start.y : endB.x - start.x;
26652
+ if (vertical !== otherVertical || directionA * directionB < 0) return false;
26653
+ const end = Math.abs(directionA) <= Math.abs(directionB) ? endA : endB;
26654
+ const common = segment(start, end);
26655
+ if (overlap.left >= common.left - epsilon && overlap.right <= common.right + epsilon && overlap.top >= common.top - epsilon && overlap.bottom <= common.bottom + epsilon) return true;
26656
+ if (samePoint(end, endA)) i += step;
26657
+ if (samePoint(end, endB)) j += step;
26658
+ start = end;
26659
+ }
26660
+ return false;
26661
+ }
26662
+ /** Check orthogonal routes once after layout; stop at the first unrelated contact or overlap. */
26663
+ function hasRouteCrossings(routes) {
26664
+ const paths = [...routes.values()].map((points) => {
26665
+ const path = points.filter((point, index) => index === 0 || !samePoint(point, points[index - 1]));
26666
+ return {
26667
+ path,
26668
+ segments: path.slice(1).map((point, index) => segment(path[index], point))
26669
+ };
26670
+ });
26671
+ for (let i = 0; i < paths.length; i++) {
26672
+ const a = paths[i];
26673
+ for (let j = i + 1; j < paths.length; j++) {
26674
+ const b = paths[j];
26675
+ for (const first of a.segments) for (const second of b.segments) {
26676
+ const left = Math.max(first.left, second.left);
26677
+ const right = Math.min(first.right, second.right);
26678
+ const top = Math.max(first.top, second.top);
26679
+ const bottom = Math.min(first.bottom, second.bottom);
26680
+ if (left > right + epsilon || top > bottom + epsilon) continue;
26681
+ const overlap = {
26682
+ left,
26683
+ right,
26684
+ top,
26685
+ bottom
26686
+ };
26687
+ if (!sharedEnd(a.path, b.path, overlap, false) && !sharedEnd(a.path, b.path, overlap, true)) return true;
26688
+ }
26689
+ }
26690
+ }
26691
+ return false;
26692
+ }
26693
+ //#endregion
26624
26694
  //#region src/canvas/browser/base/routeLayout.ts
26625
26695
  var clearance = 16;
26626
26696
  var portOffset = 24;
@@ -27026,19 +27096,26 @@ var OpenFlowRenderer = (function(exports) {
27026
27096
  const gap = 48;
27027
27097
  const pathNodes = normalized.filter((node) => incoming.has(node.id) || outgoing.has(node.id));
27028
27098
  const crossSize = Math.max(...(pathNodes.length ? pathNodes : normalized).map((node) => node.height));
27029
- const bow = crossSize * .75;
27030
- const separation = crossSize + 48;
27099
+ const bow = crossSize * .5;
27100
+ const separation = crossSize + bow + gap;
27031
27101
  const bucketSize = Math.max(...normalized.map((node) => node.width)) + gap;
27032
27102
  const byId = new Map(normalized.map((node) => [node.id, node]));
27033
27103
  const forwardEdges = graph.edges.filter((edge) => byId.get(edge.source).column < byId.get(edge.target).column);
27034
27104
  const parents = Map.groupBy(forwardEdges, (edge) => edge.target);
27035
27105
  const children = Map.groupBy(forwardEdges, (edge) => edge.source);
27036
27106
  const ordered = normalized.toSorted((a, b) => a.column - b.column || a.y - b.y);
27037
- const remaining = /* @__PURE__ */ new Map();
27038
- for (const node of ordered.toReversed()) remaining.set(node.id, 1 + Math.max(0, ...(children.get(node.id) ?? []).filter((edge) => parents.get(edge.target)?.length === 1).map((edge) => remaining.get(edge.target))));
27039
27107
  const rankEnds = new Map([...Map.groupBy(normalized, (node) => node.column)].map(([rank, nodes]) => [rank, Math.max(...nodes.map((node) => node.x + node.width))]));
27108
+ const remaining = /* @__PURE__ */ new Map();
27109
+ for (const node of ordered.toReversed()) {
27110
+ const next = (children.get(node.id) ?? []).filter((edge) => parents.get(edge.target)?.length === 1).map((edge) => remaining.get(edge.target));
27111
+ remaining.set(node.id, {
27112
+ count: 1 + Math.max(0, ...next.map((path) => path.count)),
27113
+ size: Math.max(node.width, ...next.map((path) => rankEnds.get(node.column) - node.x + gap + path.size))
27114
+ });
27115
+ }
27040
27116
  const spans = /* @__PURE__ */ new Set([Infinity, ...rankEnds.values()]);
27041
- let best;
27117
+ const layouts = [];
27118
+ let unfolded;
27042
27119
  for (const span of spans) {
27043
27120
  const placed = /* @__PURE__ */ new Map();
27044
27121
  const buckets = /* @__PURE__ */ new Map();
@@ -27060,10 +27137,15 @@ var OpenFlowRenderer = (function(exports) {
27060
27137
  } else if (parent) {
27061
27138
  shift = parent.shift;
27062
27139
  start = parent.start;
27140
+ const length = primary - start + remaining.get(original.id).size;
27141
+ const capacity = Math.max(original.width, span - start);
27142
+ const runs = Math.max(1, Math.ceil((length + gap) / (capacity + gap)));
27143
+ const end = start + (length + gap) / runs - gap;
27144
+ const midpoint = (parent.node.x + parent.node.width + primary + original.width) / 2;
27063
27145
  if ((children.get(parent.node.id)?.length ?? 0) > 1) {
27064
27146
  shift = parent.node.y - byId.get(parent.node.id).y;
27065
27147
  start = primary;
27066
- } else if (primary + original.width > span && remaining.get(original.id) > 2) {
27148
+ } else if (midpoint > end + 1e-6 && remaining.get(original.id).count > 2) {
27067
27149
  primary = Math.max(0, start - span / 3);
27068
27150
  shift = parent.shift + side * separation;
27069
27151
  start = primary;
@@ -27092,7 +27174,7 @@ var OpenFlowRenderer = (function(exports) {
27092
27174
  order: placed.size,
27093
27175
  shift: node.y - original.y - drift,
27094
27176
  start,
27095
- extent: Math.max(node.x + node.width, ...upstream.map((entry) => entry.extent))
27177
+ extent: Math.max(node.x + node.width, parent && node.x < parent.node.x ? parent.node.x + parent.node.width + gap : 0, ...upstream.map((entry) => entry.extent))
27096
27178
  };
27097
27179
  placed.set(node.id, placement);
27098
27180
  for (let bucket = firstBucket; bucket <= lastBucket; bucket++) {
@@ -27106,23 +27188,37 @@ var OpenFlowRenderer = (function(exports) {
27106
27188
  const width = extent.height + insets.width + 48;
27107
27189
  const height = extent.width + insets.height + 48;
27108
27190
  const area = width * height;
27109
- const score = Math.max(width / aspectRatio, height);
27110
- if (!best || score < best.score - 1e-9 || Math.abs(score - best.score) < 1e-9 && (area < best.area || area === best.area && turns < best.turns)) best = {
27191
+ const candidate = {
27111
27192
  nodes,
27112
- score,
27193
+ score: Math.max(width / aspectRatio, height),
27113
27194
  area,
27114
27195
  turns
27115
27196
  };
27197
+ if (span === Infinity) unfolded = candidate;
27198
+ layouts.push(candidate);
27199
+ layouts.sort((a, b) => Math.abs(a.score - b.score) >= 1e-9 ? a.score - b.score : a.area - b.area || a.turns - b.turns);
27200
+ if (layouts.length > 2) layouts.pop();
27116
27201
  }
27117
- const routes = routeLayout(best.nodes, graph.edges.map((edge) => Object.assign({}, edge, {
27202
+ const edges = graph.edges.map((edge) => Object.assign({}, edge, {
27118
27203
  sourceOffset: edge.sourceOffset && layoutAxes(edge.sourceOffset, "vertical"),
27119
27204
  targetOffset: edge.targetOffset && layoutAxes(edge.targetOffset, "vertical")
27120
- })));
27205
+ }));
27206
+ if (!layouts.includes(unfolded)) layouts.push(unfolded);
27207
+ let best;
27208
+ for (const candidate of layouts) {
27209
+ const routes = routeLayout(candidate.nodes, edges);
27210
+ const crosses = hasRouteCrossings(routes);
27211
+ if (!best || !crosses) best = {
27212
+ nodes: candidate.nodes,
27213
+ routes
27214
+ };
27215
+ if (!crosses) break;
27216
+ }
27121
27217
  const physicalNodes = best.nodes.map((node) => Object.assign({}, node, layoutAxes(node, "vertical"), {
27122
27218
  width: node.height,
27123
27219
  height: node.width
27124
27220
  }));
27125
- const physicalRoutes = new Map([...routes].map(([id, points]) => [id, points.map((point) => layoutAxes(point, "vertical"))]));
27221
+ const physicalRoutes = new Map([...best.routes].map(([id, points]) => [id, points.map((point) => layoutAxes(point, "vertical"))]));
27126
27222
  return {
27127
27223
  positions: Object.fromEntries(physicalNodes.map(({ id, x, y }) => [id, {
27128
27224
  x,
@@ -242131,7 +242227,7 @@ ${seriesRules.join("\n")}${tipRules}
242131
242227
  return dataTransfer.getData(ADD_ITEM_KEY);
242132
242228
  }
242133
242229
  //#endregion
242134
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/util.js
242230
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/util.js
242135
242231
  function getEnumValues(entries) {
242136
242232
  const numericValues = Object.values(entries).filter((v) => typeof v === "number");
242137
242233
  return Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);
@@ -242456,6 +242552,17 @@ ${seriesRules.join("\n")}${tipRules}
242456
242552
  function unwrapMessage(message) {
242457
242553
  return typeof message === "string" ? message : message?.message;
242458
242554
  }
242555
+ /** The leading size checks of `defChecks` that set an upper bound, each paired with it. */
242556
+ function sizeCaps(defChecks) {
242557
+ const caps = [];
242558
+ for (const ch of defChecks ?? []) {
242559
+ const d = ch._zod.def;
242560
+ if (!/_(length|size)$|_equals$/.test(d.check)) break;
242561
+ const max = d.maximum ?? d.length ?? d.size;
242562
+ if (max >= 0) caps.push([max, ch]);
242563
+ }
242564
+ return caps;
242565
+ }
242459
242566
  function attachSchema(issues, start, inst) {
242460
242567
  var _a;
242461
242568
  for (let i = start; i < issues.length; i++) (_a = issues[i]).schema ?? (_a.schema = inst);
@@ -242672,7 +242779,7 @@ ${seriesRules.join("\n")}${tipRules}
242672
242779
  return fn;
242673
242780
  }
242674
242781
  //#endregion
242675
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/core.js
242782
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/core.js
242676
242783
  var _a$1;
242677
242784
  var _zodDesc = {
242678
242785
  value: void 0,
@@ -242778,7 +242885,7 @@ ${seriesRules.join("\n")}${tipRules}
242778
242885
  return globalConfig;
242779
242886
  }
242780
242887
  //#endregion
242781
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/errors.js
242888
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/errors.js
242782
242889
  function _getMessage() {
242783
242890
  const internals = this._zod;
242784
242891
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -242894,7 +243001,7 @@ ${seriesRules.join("\n")}${tipRules}
242894
243001
  return fieldErrors;
242895
243002
  }
242896
243003
  //#endregion
242897
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/parse.js
243004
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/parse.js
242898
243005
  function finalizeParams(callee, params) {
242899
243006
  return {
242900
243007
  callee: params?.callee ?? callee,
@@ -243097,7 +243204,7 @@ ${seriesRules.join("\n")}${tipRules}
243097
243204
  return _safeParseAsync(_Err)(schema, value, _ctx);
243098
243205
  };
243099
243206
  //#endregion
243100
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/regexes.js
243207
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/regexes.js
243101
243208
  /**
243102
243209
  * @deprecated CUID v1 is deprecated by its authors due to information leakage
243103
243210
  * (timestamps embedded in the id). Use {@link cuid2} instead.
@@ -243170,7 +243277,7 @@ ${seriesRules.join("\n")}${tipRules}
243170
243277
  var lowercase = /^[^A-Z]*$/;
243171
243278
  var uppercase = /^[^a-z]*$/;
243172
243279
  //#endregion
243173
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/checks.js
243280
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/checks.js
243174
243281
  var $ZodCheck = /*@__PURE__*/ $constructor("$ZodCheck", (inst, def) => {
243175
243282
  var _a;
243176
243283
  inst._zod ?? (inst._zod = {});
@@ -243466,7 +243573,7 @@ ${seriesRules.join("\n")}${tipRules}
243466
243573
  };
243467
243574
  });
243468
243575
  //#endregion
243469
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/doc.js
243576
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/doc.js
243470
243577
  var Doc = class {
243471
243578
  constructor(args = [], closed = {}) {
243472
243579
  this.content = [];
@@ -243500,14 +243607,14 @@ ${seriesRules.join("\n")}${tipRules}
243500
243607
  }
243501
243608
  };
243502
243609
  //#endregion
243503
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/versions.js
243610
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/versions.js
243504
243611
  var version = {
243505
243612
  major: 4,
243506
243613
  minor: 6,
243507
- patch: 5
243614
+ patch: 7
243508
243615
  };
243509
243616
  //#endregion
243510
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/schemas.js
243617
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/schemas.js
243511
243618
  var $ZodType = /*@__PURE__*/ $constructor("$ZodType", (inst, def) => {
243512
243619
  var _a;
243513
243620
  inst ?? (inst = {});
@@ -244020,6 +244127,26 @@ ${seriesRules.join("\n")}${tipRules}
244020
244127
  return payload;
244021
244128
  };
244022
244129
  });
244130
+ function capSize(inst, size) {
244131
+ const caps = sizeCaps(inst._zod.def.checks);
244132
+ if (!caps.length) return;
244133
+ const cap = Math.min(...caps.map((c) => c[0]));
244134
+ const parse = inst._zod.parse;
244135
+ inst._zod.parse = (payload, ctx) => {
244136
+ const n = size(payload.value);
244137
+ if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
244138
+ for (const [max, ch] of sizeCaps(inst._zod.def.checks)) if (n > max && ch._zod.def.when(payload)) {
244139
+ const start = payload.issues.length;
244140
+ ch._zod.check(payload);
244141
+ payload.issues[start].continue = false;
244142
+ attachSchema(payload.issues, start, inst);
244143
+ return payload;
244144
+ }
244145
+ }
244146
+ return parse(payload, ctx);
244147
+ };
244148
+ }
244149
+ var arraySize = (input) => Array.isArray(input) ? input.length : -1;
244023
244150
  function handleArrayResult(result, final, index) {
244024
244151
  if (result.issues.length) final.issues.push(...prefixIssues(index, result.issues));
244025
244152
  final.value[index] = result.value;
@@ -244057,6 +244184,7 @@ ${seriesRules.join("\n")}${tipRules}
244057
244184
  if (proms.length) return Promise.all(proms).then(() => payload);
244058
244185
  return payload;
244059
244186
  };
244187
+ capSize(inst, arraySize);
244060
244188
  });
244061
244189
  function handlePropertyResult(result, final, key, input, optin, optout) {
244062
244190
  const isPresent = key in input;
@@ -244165,7 +244293,7 @@ ${seriesRules.join("\n")}${tipRules}
244165
244293
  }
244166
244294
  return propValues;
244167
244295
  });
244168
- const isObject$4 = isObject;
244296
+ const isObject$3 = isObject;
244169
244297
  const catchall = def.catchall;
244170
244298
  let value;
244171
244299
  const memo = globalConfig.memoizer;
@@ -244173,7 +244301,7 @@ ${seriesRules.join("\n")}${tipRules}
244173
244301
  inst._zod.parse = (payload, ctx) => {
244174
244302
  value ?? (value = _normalized.value);
244175
244303
  const input = payload.value;
244176
- if (!isObject$4(input)) {
244304
+ if (!isObject$3(input)) {
244177
244305
  payload.issues.push({
244178
244306
  expected: "object",
244179
244307
  code: "invalid_type",
@@ -244303,7 +244431,7 @@ ${seriesRules.join("\n")}${tipRules}
244303
244431
  return doc.compile();
244304
244432
  };
244305
244433
  let fastpass;
244306
- const isObject$3 = isObject;
244434
+ const isObject$4 = isObject;
244307
244435
  const jit = !globalConfig.jitless;
244308
244436
  const fastEnabled = jit && allowsEval.value;
244309
244437
  const catchall = def.catchall;
@@ -244311,7 +244439,7 @@ ${seriesRules.join("\n")}${tipRules}
244311
244439
  inst._zod.parse = (payload, ctx) => {
244312
244440
  value ?? (value = _normalized.value);
244313
244441
  const input = payload.value;
244314
- if (!isObject$3(input)) {
244442
+ if (!isObject$4(input)) {
244315
244443
  payload.issues.push({
244316
244444
  expected: "object",
244317
244445
  code: "invalid_type",
@@ -244975,7 +245103,7 @@ ${seriesRules.join("\n")}${tipRules}
244975
245103
  }
244976
245104
  }
244977
245105
  //#endregion
244978
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/memoizer.js
245106
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/memoizer.js
244979
245107
  var $ZodCyclicError = class extends Error {
244980
245108
  constructor() {
244981
245109
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -245228,7 +245356,7 @@ ${seriesRules.join("\n")}${tipRules}
245228
245356
  return backEdges !== void 0 && isRef(value) && backEdges.has(value);
245229
245357
  }
245230
245358
  //#endregion
245231
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/locales/en.js
245359
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/locales/en.js
245232
245360
  var error = () => {
245233
245361
  const Sizable = {
245234
245362
  string: {
@@ -245336,7 +245464,7 @@ ${seriesRules.join("\n")}${tipRules}
245336
245464
  return { localeError: error() };
245337
245465
  }
245338
245466
  //#endregion
245339
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/registries.js
245467
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/registries.js
245340
245468
  var _a;
245341
245469
  var $ZodRegistry = class {
245342
245470
  constructor() {
@@ -245383,7 +245511,7 @@ ${seriesRules.join("\n")}${tipRules}
245383
245511
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
245384
245512
  var globalRegistry = globalThis.__zod_globalRegistry;
245385
245513
  //#endregion
245386
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/api.js
245514
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/api.js
245387
245515
  function snapshotChecks(def) {
245388
245516
  if (def.checks) def.checks = [...def.checks];
245389
245517
  return def;
@@ -245899,7 +246027,7 @@ ${seriesRules.join("\n")}${tipRules}
245899
246027
  return ch;
245900
246028
  }
245901
246029
  //#endregion
245902
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.js
246030
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/to-json-schema.js
245903
246031
  function assignProps(target, ...sources) {
245904
246032
  for (const source of sources) for (const key of Reflect.ownKeys(source)) if (Object.prototype.propertyIsEnumerable.call(source, key)) assignProp(target, key, source[key]);
245905
246033
  return target;
@@ -246343,7 +246471,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
246343
246471
  return finalize(ctx, schema);
246344
246472
  };
246345
246473
  //#endregion
246346
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/json-schema-processors.js
246474
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/json-schema-processors.js
246347
246475
  var narrowMin = (agg, key, value) => {
246348
246476
  if (agg[key] === void 0 || value > agg[key]) agg[key] = value;
246349
246477
  };
@@ -246804,7 +246932,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
246804
246932
  seen.ref = innerType;
246805
246933
  };
246806
246934
  //#endregion
246807
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/errors.js
246935
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/errors.js
246808
246936
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
246809
246937
  function _lazyMethod(proto, key, make) {
246810
246938
  Object.defineProperty(proto, key, {
@@ -246854,7 +246982,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
246854
246982
  };
246855
246983
  var ZodRealError = /*@__PURE__*/ $constructor("ZodError", initializer, void 0, { Parent: Error });
246856
246984
  //#endregion
246857
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/parse.js
246985
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/parse.js
246858
246986
  var parse = /* @__PURE__ */ _parse(ZodRealError);
246859
246987
  var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);
246860
246988
  var safeParse = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -246868,7 +246996,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
246868
246996
  var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
246869
246997
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
246870
246998
  //#endregion
246871
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/schemas.js
246999
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/schemas.js
246872
247000
  function _ensureDefaultLocale() {
246873
247001
  if (!globalConfig.localeError) config(en_default$2());
246874
247002
  }
@@ -247800,7 +247928,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
247800
247928
  });
247801
247929
  }
247802
247930
  //#endregion
247803
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/iso.js
247931
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/iso.js
247804
247932
  function datetime(params) {
247805
247933
  return /* @__PURE__ */ _isoDateTime(ZodISODateTime, params);
247806
247934
  }
@@ -252129,6 +252257,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
252129
252257
  "missingStatuses": "Some selected statuses are no longer available. Remove or replace them."
252130
252258
  },
252131
252259
  nodePicker: {
252260
+ "custom": "Custom",
252132
252261
  "actionGroups": {
252133
252262
  "read": "Read actions",
252134
252263
  "write": "Write actions",
@@ -252357,6 +252486,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
252357
252486
  "connector": "Connector",
252358
252487
  "workflow": "Workflow"
252359
252488
  },
252489
+ connectorProxy: {
252490
+ "bodyUnsupported": "GET requests do not support a request body.",
252491
+ "title": "Custom API Request",
252492
+ "description": "Call a Provider API using its connected account.",
252493
+ "endpoint": "Endpoint"
252494
+ },
252360
252495
  httpRequest: {
252361
252496
  "title": "HTTP Request",
252362
252497
  "description": "Send an HTTP request and use its response in the workflow.",
@@ -253519,6 +253654,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
253519
253654
  "missingStatuses": "部分已选状态不再可用,请移除或重新选择。"
253520
253655
  },
253521
253656
  nodePicker: {
253657
+ "custom": "自定义",
253522
253658
  "actionGroups": {
253523
253659
  "read": "读取接口",
253524
253660
  "write": "写入接口",
@@ -253747,6 +253883,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
253747
253883
  "connector": "连接器",
253748
253884
  "workflow": "工作流"
253749
253885
  },
253886
+ connectorProxy: {
253887
+ "bodyUnsupported": "GET 请求不支持请求体。",
253888
+ "title": "自定义 API 请求",
253889
+ "description": "使用已连接账号调用 Provider API。",
253890
+ "endpoint": "接口路径"
253891
+ },
253750
253892
  httpRequest: {
253751
253893
  "title": "HTTP 请求",
253752
253894
  "description": "发送 HTTP 请求,在工作流中使用响应数据。",
@@ -254909,6 +255051,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
254909
255051
  "missingStatuses": "部分已選狀態不再可用,請移除或重新選擇。"
254910
255052
  },
254911
255053
  nodePicker: {
255054
+ "custom": "自訂",
254912
255055
  "actionGroups": {
254913
255056
  "read": "讀取介面",
254914
255057
  "write": "寫入介面",
@@ -255137,6 +255280,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
255137
255280
  "connector": "連接器",
255138
255281
  "workflow": "工作流程"
255139
255282
  },
255283
+ connectorProxy: {
255284
+ "bodyUnsupported": "GET 請求不支援請求本文。",
255285
+ "title": "自訂 API 請求",
255286
+ "description": "使用已連線帳號呼叫 Provider API。",
255287
+ "endpoint": "介面路徑"
255288
+ },
255140
255289
  httpRequest: {
255141
255290
  "title": "HTTP 請求",
255142
255291
  "description": "傳送 HTTP 請求,在工作流程中使用回應資料。",
@@ -256299,6 +256448,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
256299
256448
  "missingStatuses": "選択したステータスの一部は利用できません。削除するか選び直してください。"
256300
256449
  },
256301
256450
  nodePicker: {
256451
+ "custom": "カスタム",
256302
256452
  "actionGroups": {
256303
256453
  "read": "読み取り操作",
256304
256454
  "write": "書き込み操作",
@@ -256527,6 +256677,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
256527
256677
  "connector": "コネクター",
256528
256678
  "workflow": "ワークフロー"
256529
256679
  },
256680
+ connectorProxy: {
256681
+ "bodyUnsupported": "GET リクエストはリクエストボディに対応していません。",
256682
+ "title": "カスタム API リクエスト",
256683
+ "description": "接続済みアカウントで Provider API を呼び出します。",
256684
+ "endpoint": "エンドポイント"
256685
+ },
256530
256686
  httpRequest: {
256531
256687
  "title": "HTTP リクエスト",
256532
256688
  "description": "HTTP リクエストを送信し、ワークフローでレスポンスを使用します。",
@@ -257689,6 +257845,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
257689
257845
  "missingStatuses": "선택한 상태 중 일부를 사용할 수 없습니다. 삭제하거나 다시 선택하세요."
257690
257846
  },
257691
257847
  nodePicker: {
257848
+ "custom": "사용자 지정",
257692
257849
  "actionGroups": {
257693
257850
  "read": "읽기 작업",
257694
257851
  "write": "쓰기 작업",
@@ -257917,6 +258074,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
257917
258074
  "connector": "커넥터",
257918
258075
  "workflow": "워크플로"
257919
258076
  },
258077
+ connectorProxy: {
258078
+ "bodyUnsupported": "GET 요청은 요청 본문을 지원하지 않습니다.",
258079
+ "title": "사용자 지정 API 요청",
258080
+ "description": "연결된 계정으로 Provider API를 호출합니다.",
258081
+ "endpoint": "엔드포인트"
258082
+ },
257920
258083
  httpRequest: {
257921
258084
  "title": "HTTP 요청",
257922
258085
  "description": "HTTP 요청을 보내고 워크플로에서 응답을 사용합니다.",
@@ -259079,6 +259242,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
259079
259242
  "missingStatuses": "Некоторые выбранные статусы больше недоступны. Удалите или замените их."
259080
259243
  },
259081
259244
  nodePicker: {
259245
+ "custom": "Пользовательские",
259082
259246
  "actionGroups": {
259083
259247
  "read": "Операции чтения",
259084
259248
  "write": "Операции записи",
@@ -259307,6 +259471,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
259307
259471
  "connector": "Коннектор",
259308
259472
  "workflow": "Рабочий процесс"
259309
259473
  },
259474
+ connectorProxy: {
259475
+ "bodyUnsupported": "GET-запросы не поддерживают тело запроса.",
259476
+ "title": "Пользовательский API-запрос",
259477
+ "description": "Вызов API провайдера через подключённый аккаунт.",
259478
+ "endpoint": "Путь запроса"
259479
+ },
259310
259480
  httpRequest: {
259311
259481
  "title": "HTTP-запрос",
259312
259482
  "description": "Отправить HTTP-запрос и использовать ответ в рабочем процессе.",
@@ -260469,6 +260639,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
260469
260639
  "missingStatuses": "Certains statuts sélectionnés ne sont plus disponibles. Supprimez-les ou remplacez-les."
260470
260640
  },
260471
260641
  nodePicker: {
260642
+ "custom": "Personnalisé",
260472
260643
  "actionGroups": {
260473
260644
  "read": "Actions de lecture",
260474
260645
  "write": "Actions d’écriture",
@@ -260697,6 +260868,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
260697
260868
  "connector": "Connecteur",
260698
260869
  "workflow": "Workflow"
260699
260870
  },
260871
+ connectorProxy: {
260872
+ "bodyUnsupported": "Les requêtes GET ne prennent pas en charge de corps.",
260873
+ "title": "Requête API personnalisée",
260874
+ "description": "Appeler une API du fournisseur avec le compte connecté.",
260875
+ "endpoint": "Point de terminaison"
260876
+ },
260700
260877
  httpRequest: {
260701
260878
  "title": "Requête HTTP",
260702
260879
  "description": "Envoyer une requête HTTP et utiliser sa réponse dans le workflow.",
@@ -260863,6 +261040,32 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
260863
261040
  return foo !== foo && bar !== bar;
260864
261041
  }
260865
261042
  //#endregion
261043
+ //#region src/flow/common/requestParameters.ts
261044
+ var requestParameterSchema = strictObject({
261045
+ mode: _enum(["fields", "object"]).default("fields"),
261046
+ names: array(string()).default([])
261047
+ });
261048
+ var connectorProxyExecutorSchema = strictObject({
261049
+ providerId: string().min(1),
261050
+ connectionId: string().optional(),
261051
+ method: _enum([
261052
+ "GET",
261053
+ "POST",
261054
+ "PUT",
261055
+ "PATCH",
261056
+ "DELETE"
261057
+ ]).default("GET"),
261058
+ query: requestParameterSchema.default({
261059
+ mode: "fields",
261060
+ names: []
261061
+ }),
261062
+ headers: requestParameterSchema.default({
261063
+ mode: "fields",
261064
+ names: []
261065
+ }),
261066
+ bodyFormat: _enum(["none", "json"]).default("none")
261067
+ }).extend({ kind: literal("connector-proxy") });
261068
+ //#endregion
260866
261069
  //#region ../../node_modules/.bun/@cfworker+json-schema@4.1.1/node_modules/@cfworker/json-schema/dist/esm/format.js
260867
261070
  var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
260868
261071
  var DAYS = [
@@ -264085,12 +264288,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
264085
264288
  function isHttpHost(value) {
264086
264289
  return httpHostPattern.test(value) && (!value.startsWith("*.") || value.slice(2).includes("."));
264087
264290
  }
264088
- //#endregion
264089
- //#region src/http/common/httpRequest.ts
264090
- var parameterSchema = strictObject({
264091
- mode: _enum(["fields", "object"]).default("fields"),
264092
- names: array(string()).default([])
264093
- });
264094
264291
  var httpRequestExecutorSchema = strictObject({
264095
264292
  method: _enum([
264096
264293
  "GET",
@@ -264101,11 +264298,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
264101
264298
  "HEAD",
264102
264299
  "OPTIONS"
264103
264300
  ]).default("GET"),
264104
- query: parameterSchema.default({
264301
+ query: requestParameterSchema.default({
264105
264302
  mode: "fields",
264106
264303
  names: []
264107
264304
  }),
264108
- headers: parameterSchema.default({
264305
+ headers: requestParameterSchema.default({
264109
264306
  mode: "fields",
264110
264307
  names: []
264111
264308
  }),
@@ -264496,7 +264693,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
264496
264693
  revisionId: text
264497
264694
  }),
264498
264695
  httpRequestExecutorSchema,
264499
- skipDuplicatesExecutorSchema
264696
+ skipDuplicatesExecutorSchema,
264697
+ connectorProxyExecutorSchema
264500
264698
  ])
264501
264699
  });
264502
264700
  var managed = managedFields.transform(limitDecisionTask);
@@ -264751,7 +264949,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
264751
264949
  literal(10),
264752
264950
  literal(11),
264753
264951
  literal(12),
264754
- literal(13)
264952
+ literal(13),
264953
+ literal(14)
264755
264954
  ]),
264756
264955
  document: document$1,
264757
264956
  modules: record$2(text, module$1)
@@ -264999,7 +265198,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
264999
265198
  }
265000
265199
  };
265001
265200
  function supportsNodeErrorHandling(node) {
265002
- return supportsNodeRetry(node) || node.kind === "task" && "executor" in node.task && node.task.executor.kind === "skip-duplicates";
265201
+ return supportsNodeRetry(node) || node.kind === "task" && "executor" in node.task && ["skip-duplicates", "connector-proxy"].includes(node.task.executor.kind);
265003
265202
  }
265004
265203
  function nodeSystemOutputPorts(node) {
265005
265204
  return supportsNodeErrorHandling(node) && node.onError == "error" ? { error: {
@@ -265150,6 +265349,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
265150
265349
  return Object.fromEntries(triggerOutputDefinitions(trigger).map(({ handle, ...port }) => [handle, port]));
265151
265350
  }
265152
265351
  //#endregion
265352
+ //#region src/base/common/jsonSchema.ts
265353
+ init_dist$2();
265354
+ /** Keep local definition references usable when a property becomes a standalone schema. */
265355
+ function propertySchemaWithDefinitions(root, schema) {
265356
+ const property = toPlainObject(schema);
265357
+ if (property == null) return schema;
265358
+ const result = Object.assign({}, property);
265359
+ if (result.$defs == null && root.$defs != null) result.$defs = root.$defs;
265360
+ if (result.definitions == null && root.definitions != null) result.definitions = root.definitions;
265361
+ return result;
265362
+ }
265363
+ //#endregion
265153
265364
  //#region src/flow/common/sourceField.ts
265154
265365
  /** Only explicitly declared, first-level object properties are selectable. */
265155
265366
  function sourceFields(output) {
@@ -265166,7 +265377,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
265166
265377
  field,
265167
265378
  port: {
265168
265379
  ...typeof description == "string" ? { description } : {},
265169
- jsonSchema,
265380
+ jsonSchema: propertySchemaWithDefinitions(schema, jsonSchema),
265170
265381
  nullable: missingParent || !required.includes(field)
265171
265382
  }
265172
265383
  };
@@ -265620,6 +265831,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
265620
265831
  name
265621
265832
  });
265622
265833
  if (task?.executor.kind == "connector") add("connector", task.executor.action, task.executor.connectionId);
265834
+ if (task?.executor.kind == "connector-proxy") uses.push({
265835
+ kind: "connector-proxy",
265836
+ providerId: task.executor.providerId,
265837
+ connectionId: task.executor.connectionId,
265838
+ nodeId,
265839
+ name
265840
+ });
265623
265841
  if (node.kind == "task" && "moduleId" in node.task) {
265624
265842
  for (const capability of node.task.capabilities ?? []) if ("mode" in capability && capability.mode == "independent") for (const action of capability.actions) add("code", action.action, action.connectionId);
265625
265843
  }
@@ -265633,8 +265851,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
265633
265851
  }
265634
265852
  //#endregion
265635
265853
  //#region src/runtime/common/engineContract.ts
265636
- /** v10 adds persistent Flow State to the published v9 Node compatibility and fetch contract. */
265637
- var currentEngineContract = "open-flow-engine/v10";
265854
+ /** v11 adds Provider API requests through Connector Proxy. */
265855
+ var currentEngineContract = "open-flow-engine/v11";
265638
265856
  /** The published v8 Node compatibility contract, retained for existing Publications and Runs. */
265639
265857
  var nodejsEngineContract = "open-flow-engine/v8/nodejs-compat-v1";
265640
265858
  var platformSource = (contract) => `export const engineContract = ${JSON.stringify(contract)}
@@ -265665,7 +265883,7 @@ export function identity(value) { return value }
265665
265883
  "url",
265666
265884
  "util",
265667
265885
  "zlib"
265668
- ].flatMap((name) => [name, `node:${name}`])), platformSource(nodejsEngineContract), platformSource("open-flow-engine/v9"), platformSource(currentEngineContract);
265886
+ ].flatMap((name) => [name, `node:${name}`])), platformSource(nodejsEngineContract), platformSource("open-flow-engine/v9"), platformSource("open-flow-engine/v10"), platformSource(currentEngineContract);
265669
265887
  //#endregion
265670
265888
  //#region src/flow/common/agent.ts
265671
265889
  var schema = lazy(() => union([boolean(), strictObject({
@@ -266643,7 +266861,10 @@ export function identity(value) { return value }
266643
266861
  const separator = actionId.indexOf(".");
266644
266862
  if (separator > 0) connectorProviderIds.add(actionId.slice(0, separator));
266645
266863
  }
266646
- for (const node of Object.values(this.#document.graph.nodes)) if (node.kind == "integration" || node.kind == "poll") connectorProviderIds.add(node.definition.provider);
266864
+ for (const node of Object.values(this.#document.graph.nodes)) {
266865
+ if (node.kind == "integration" || node.kind == "poll") connectorProviderIds.add(node.definition.provider);
266866
+ if (node.kind === "task" && "executor" in node.task && node.task.executor.kind === "connector-proxy") connectorProviderIds.add(node.task.executor.providerId);
266867
+ }
266647
266868
  this.connectorProviderIds = connectorProviderIds;
266648
266869
  }
266649
266870
  inputMappings(node) {
@@ -266819,7 +267040,12 @@ export function identity(value) { return value }
266819
267040
  //#region src/workbench/browser/runtime/workspace.ts
266820
267041
  function semanticNodeIcon(node, connectorActions, providers = {}) {
266821
267042
  if (node.node.icon != null) return node.node.icon;
266822
- if (node.kind != "task" || node.definition == null || !("executor" in node.definition) || node.definition.executor.kind != "connector") return nodeIcon(node);
267043
+ if (node.kind != "task" || node.definition == null || !("executor" in node.definition)) return nodeIcon(node);
267044
+ if (node.definition.executor.kind === "connector-proxy") {
267045
+ const provider = providers[node.definition.executor.providerId];
267046
+ return provider == null ? nodeIcon(node) : providerIcon(provider);
267047
+ }
267048
+ if (node.definition.executor.kind !== "connector") return nodeIcon(node);
266823
267049
  const actionId = node.definition.executor.action;
266824
267050
  const provider = connectorActions[actionId] ?? providers[actionId.split(".")[0]];
266825
267051
  return provider == null ? nodeIcon(node) : providerIcon(provider);
@@ -266863,7 +267089,7 @@ export function identity(value) { return value }
266863
267089
  if (task.executor.kind == "http-request") return ":lucide-light:globe:";
266864
267090
  if (task.executor.kind == "skip-duplicates") return ":lucide-light:list-filter:";
266865
267091
  if (task.executor.kind == "openapi") return ":logos:openapi-icon:";
266866
- return task.executor.kind == "connector" ? ":carbon:connection-signal:" : ":carbon:machine-learning-model:";
267092
+ return task.executor.kind == "connector" || task.executor.kind === "connector-proxy" ? ":carbon:connection-signal:" : ":carbon:machine-learning-model:";
266867
267093
  }
266868
267094
  }
266869
267095
  }
@@ -267126,7 +267352,8 @@ export function identity(value) { return value }
267126
267352
  if (task.executor.kind == "openapi") return "OpenAPI";
267127
267353
  if (task.executor.kind == "skip-duplicates") return t?.("flowState.nodeTitle") ?? "Skip Duplicates";
267128
267354
  if (task.executor.kind == "llm") return t?.("designer.executorLlm") ?? "LLM";
267129
- return `${t?.("designer.executorConnector") ?? "Connector"} · ${providerName ?? task.executor.action.split(".")[0]}`;
267355
+ const providerId = task.executor.kind === "connector-proxy" ? task.executor.providerId : task.executor.action.split(".")[0];
267356
+ return `${t?.("designer.executorConnector") ?? "Connector"} · ${providerName ?? providerId}`;
267130
267357
  }
267131
267358
  function triggerIcon(trigger) {
267132
267359
  switch (trigger.kind) {
@@ -267333,13 +267560,14 @@ export function identity(value) { return value }
267333
267560
  const inputs = groupedInputs(resolved, designerInputs(nodeId, node, ports, context.revision));
267334
267561
  const outputs = groupedOutputs(resolved, designerOutputs(ports));
267335
267562
  const task = resolved.kind == "task" ? resolved.definition : void 0;
267336
- const connector = task != null && "executor" in task && task.executor.kind == "connector" ? task.executor : void 0;
267337
- const connectorAction = connector == null ? void 0 : context.connectorActions[connector.action];
267338
- const connectorProvider = connector == null ? void 0 : context.providers[connector.action.split(".")[0]];
267339
- const connections = connectorAction == null ? void 0 : context.connectionCatalogs[connectorAction.serviceId];
267563
+ const connector = task != null && "executor" in task && (task.executor.kind == "connector" || task.executor.kind === "connector-proxy") ? task.executor : void 0;
267564
+ const connectorAction = connector?.kind !== "connector" ? void 0 : context.connectorActions[connector.action];
267565
+ const providerId = connector?.kind === "connector-proxy" ? connector.providerId : connector?.action.split(".")[0];
267566
+ const connectorProvider = providerId == null ? void 0 : context.providers[providerId];
267567
+ const connections = providerId == null ? void 0 : context.connectionCatalogs[providerId];
267340
267568
  const connectionId = connector?.connectionId;
267341
267569
  const selectedConnection = connectionId == null ? void 0 : connections?.byId.get(connectionId);
267342
- const connectionRequired = connectionId !== "" && connectorAction?.authenticated == true && (connector?.connectionId == null || connections != null && selectedConnection?.status != "active") || nodeDiagnosticCount(resolved, context.diagnostics.filter((diagnostic) => diagnostic.code === "task.action-connection-required")) > 0;
267570
+ const connectionRequired = connectionId !== "" && (connector?.kind === "connector-proxy" ? connectorProvider != null && !connectorProvider.noSetup : connectorAction?.authenticated == true) && (connector?.connectionId == null || connections != null && selectedConnection?.status != "active") || nodeDiagnosticCount(resolved, context.diagnostics.filter((diagnostic) => diagnostic.code === "task.action-connection-required")) > 0;
267343
267571
  const nodeRun = context.runNodes.get(nodeId);
267344
267572
  const common = {
267345
267573
  description: node.description,