@oomol-lab/open-flow 0.1.0-beta.85 → 0.1.0-beta.87

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 (102) hide show
  1. package/dist/browser/{FlowCanvas-CZoHhB1y.js → FlowCanvas-SqPUBqze.js} +3 -3
  2. package/dist/browser/{createResourceDialog-Bi4fUnbD.js → createResourceDialog-CB3eiK7e.js} +3 -3
  3. package/dist/browser/{dialog-BzoSxhXQ.js → dialog-Bi-MVTGj.js} +291 -143
  4. package/dist/browser/{exportPng-CXVWVlLc.js → exportPng-CLZKdNzR.js} +2 -2
  5. package/dist/browser/{flowChanges-C567g-Pc.js → flowChanges-azhepfr-.js} +375 -83
  6. package/dist/browser/{flowWorkspace-BNdBKtla.js → flowWorkspace-Cs2ZGBYK.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-DF39sd9T.js → markdownContent-D0BBrFcF.js} +1 -1
  12. package/dist/browser/preview.css +193 -191
  13. package/dist/browser/preview.js +1997 -624
  14. package/dist/browser/ru-BzLZv0B7.js +593 -0
  15. package/dist/browser/theme.css +3 -1
  16. package/dist/browser/{tooltip-DGj5pudg.js → tooltip-BZ6tpqnr.js} +58 -24
  17. package/dist/browser/ui.css +12 -10
  18. package/dist/browser/ui.d.ts +1 -0
  19. package/dist/browser/ui.js +110 -63
  20. package/dist/browser/workbench.css +193 -191
  21. package/dist/browser/workbench.js +86 -17
  22. package/dist/browser/{workbenchSelect-BIaEVTx6.js → workbenchSelect-CHOeceKA.js} +2 -2
  23. package/dist/browser/{wrapLayout-C4moMKgb.js → wrapLayout-BB_qwy3k.js} +1 -1
  24. package/dist/browser/zh-CN-Dg_xSGde.js +593 -0
  25. package/dist/browser/zh-TW-oxuLwsV0.js +593 -0
  26. package/dist/command/index.js +61 -57
  27. package/dist/command/licenses.md +28 -4
  28. package/dist/common/authoring.d.ts +5 -5
  29. package/dist/common/authoringExamples.d.ts +3 -2
  30. package/dist/common/authoringSchema.d.ts +41 -4
  31. package/dist/common/catalogCache.d.ts +46 -0
  32. package/dist/common/connector-action.js +13 -10
  33. package/dist/common/connector-proxy.d.ts +96 -0
  34. package/dist/common/connector-proxy.js +5209 -0
  35. package/dist/common/control-api-conformance.js +312 -46
  36. package/dist/common/control-api.d.ts +12 -1
  37. package/dist/common/control-api.js +303 -41
  38. package/dist/common/control-requests.d.ts +4 -3
  39. package/dist/common/control-requests.js +14111 -171
  40. package/dist/common/engine-contract.d.ts +3 -2
  41. package/dist/common/event-source.js +55 -23
  42. package/dist/common/flow-authoring-node.d.ts +2 -0
  43. package/dist/common/flow-authoring.js +6936 -6781
  44. package/dist/common/flow-change-schema.d.ts +1 -1
  45. package/dist/common/flow-change.d.ts +2 -2
  46. package/dist/common/flow-change.js +91 -36
  47. package/dist/common/flow-connectionUsage.d.ts +1 -1
  48. package/dist/common/flow-encoding.js +93 -38
  49. package/dist/common/flow-requestParameters.d.ts +34 -0
  50. package/dist/common/flow-semantics.js +9429 -9236
  51. package/dist/common/flow-state.js +55 -23
  52. package/dist/common/flow-workflowFile.d.ts +3 -1
  53. package/dist/common/http-request.d.ts +6 -11
  54. package/dist/common/http-request.js +192 -141
  55. package/dist/common/licenses.md +1 -1
  56. package/dist/common/mcp.d.ts +3 -3
  57. package/dist/common/mcp.js +303 -41
  58. package/dist/common/run-events.js +1 -0
  59. package/dist/common/runtime-contract.js +10 -4
  60. package/dist/common/runtime-nodejs-compat.js +55 -23
  61. package/dist/common/scheduler-checkpoint.d.ts +3 -3
  62. package/dist/common/scheduler-dependencies.d.ts +22 -28
  63. package/dist/common/scheduler-node-execution.d.ts +1 -0
  64. package/dist/common/scheduler.d.ts +8 -2
  65. package/dist/common/scheduler.js +274 -95
  66. package/dist/common/workflow.js +51 -19
  67. package/dist/common/workflowAuthoring.d.ts +411 -0
  68. package/dist/render/browser/licenses.md +1 -1
  69. package/dist/render/browser/runtime.css +12 -10
  70. package/dist/render/browser/runtime.js +183 -49
  71. package/dist/render/node/index.js +85 -30
  72. package/dist/render/node/licenses.md +1 -1
  73. package/package.json +1 -1
  74. package/skills/open-flow/references/flow-authoring.md +14 -13
  75. package/src/base/common/jsonSchema.ts +11 -0
  76. package/src/connector/common/actionSchema.ts +4 -11
  77. package/src/connector/common/proxy.ts +152 -0
  78. package/src/control/common/api.ts +99 -3
  79. package/src/control/common/authoring.ts +23 -9
  80. package/src/control/common/authoringExamples.ts +9 -0
  81. package/src/control/common/authoringSchema.ts +21 -12
  82. package/src/control/common/catalogCache.ts +145 -0
  83. package/src/control/common/conformance.ts +9 -3
  84. package/src/control/common/connectorQueries.ts +17 -2
  85. package/src/control/common/requests.ts +1 -0
  86. package/src/control/common/workflowAuthoring.ts +120 -0
  87. package/src/execution/common/checkpoint.ts +18 -12
  88. package/src/execution/common/dependencies.ts +132 -15
  89. package/src/execution/common/events.ts +3 -0
  90. package/src/execution/common/node-execution.ts +22 -15
  91. package/src/execution/common/scheduler.ts +20 -31
  92. package/src/flow/common/change.ts +2 -1
  93. package/src/flow/common/changeSchema.ts +11 -1
  94. package/src/flow/common/connectionUsage.ts +4 -2
  95. package/src/flow/common/errorHandling.ts +3 -1
  96. package/src/flow/common/nodeChanges.ts +35 -18
  97. package/src/flow/common/requestParameters.ts +120 -0
  98. package/src/flow/common/semantics.ts +51 -1
  99. package/src/flow/common/sourceField.ts +3 -2
  100. package/src/flow/common/workflowFile.ts +2 -2
  101. package/src/http/common/httpRequest.ts +28 -78
  102. package/src/runtime/common/engineContract.ts +6 -3
@@ -4250,6 +4250,7 @@ function cn(...inputs) {
4250
4250
  //#region src/ui/browser/button.tsx
4251
4251
  var buttonVariants = cva("nodrag group/button relative inline-flex shrink-0 items-center justify-center rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap no-underline transition-[color,background-color,border-color,box-shadow,opacity,transform] outline-none select-none before:absolute before:inset-0 before:content-[''] motion-reduce:transition-none focus-visible:border-border focus-visible:outline-2 focus-visible:outline-solid focus-visible:ring-0 focus-visible:aria-invalid:ring-0 focus-visible:outline-offset-1 focus-visible:outline-ring focus-visible:aria-invalid:outline-destructive active:not-aria-[haspopup]:not-data-[variant=field]:translate-y-px disabled:pointer-events-none disabled:opacity-[var(--ui-disabled-opacity,0.5)] aria-disabled:pointer-events-none aria-disabled:opacity-[var(--ui-disabled-opacity,0.5)] aria-invalid:border-destructive [&_svg]:pointer-events-none [&_i[aria-hidden=true]]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
4252
4252
  variants: {
4253
+ multiline: { true: "min-h-min whitespace-normal wrap-anywhere text-center" },
4253
4254
  variant: {
4254
4255
  "default": "bg-primary text-primary-foreground hover:bg-primary/80",
4255
4256
  "outline": "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_50%,transparent))]",
@@ -4278,7 +4279,7 @@ var buttonVariants = cva("nodrag group/button relative inline-flex shrink-0 item
4278
4279
  size: "default"
4279
4280
  }
4280
4281
  });
4281
- var Button = forwardRef(function Button({ className, variant = "default", size = "default", ...props }, ref) {
4282
+ var Button = forwardRef(function Button({ className, variant = "default", size = "default", multiline, ...props }, ref) {
4282
4283
  return /* @__PURE__ */ jsx(Button$1, {
4283
4284
  ref,
4284
4285
  "data-slot": "button",
@@ -4287,6 +4288,7 @@ var Button = forwardRef(function Button({ className, variant = "default", size =
4287
4288
  className: cn(buttonVariants({
4288
4289
  variant,
4289
4290
  size,
4291
+ multiline,
4290
4292
  className
4291
4293
  })),
4292
4294
  ...props
@@ -12652,7 +12654,7 @@ var Separator = /*#__PURE__*/ React.forwardRef(function SeparatorComponent(compo
12652
12654
  });
12653
12655
  if (process.env.NODE_ENV !== "production") Separator.displayName = "Separator";
12654
12656
  //#endregion
12655
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/util.js
12657
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/util.js
12656
12658
  function getEnumValues(entries) {
12657
12659
  const numericValues = Object.values(entries).filter((v) => typeof v === "number");
12658
12660
  return Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);
@@ -12977,6 +12979,17 @@ function prefixIssues(path, issues) {
12977
12979
  function unwrapMessage(message) {
12978
12980
  return typeof message === "string" ? message : message?.message;
12979
12981
  }
12982
+ /** The leading size checks of `defChecks` that set an upper bound, each paired with it. */
12983
+ function sizeCaps(defChecks) {
12984
+ const caps = [];
12985
+ for (const ch of defChecks ?? []) {
12986
+ const d = ch._zod.def;
12987
+ if (!/_(length|size)$|_equals$/.test(d.check)) break;
12988
+ const max = d.maximum ?? d.length ?? d.size;
12989
+ if (max >= 0) caps.push([max, ch]);
12990
+ }
12991
+ return caps;
12992
+ }
12980
12993
  function attachSchema(issues, start, inst) {
12981
12994
  var _a;
12982
12995
  for (let i = start; i < issues.length; i++) (_a = issues[i]).schema ?? (_a.schema = inst);
@@ -13193,7 +13206,7 @@ function constantCatch(value) {
13193
13206
  return fn;
13194
13207
  }
13195
13208
  //#endregion
13196
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/core.js
13209
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/core.js
13197
13210
  var _a$1;
13198
13211
  var _zodDesc = {
13199
13212
  value: void 0,
@@ -13299,7 +13312,7 @@ function config(newConfig) {
13299
13312
  return globalConfig;
13300
13313
  }
13301
13314
  //#endregion
13302
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/errors.js
13315
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/errors.js
13303
13316
  function _getMessage() {
13304
13317
  const internals = this._zod;
13305
13318
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -13415,7 +13428,7 @@ function formatError(error, mapper = (issue) => issue.message) {
13415
13428
  return fieldErrors;
13416
13429
  }
13417
13430
  //#endregion
13418
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/parse.js
13431
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/parse.js
13419
13432
  function finalizeParams(callee, params) {
13420
13433
  return {
13421
13434
  callee: params?.callee ?? callee,
@@ -13618,7 +13631,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
13618
13631
  return _safeParseAsync(_Err)(schema, value, _ctx);
13619
13632
  };
13620
13633
  //#endregion
13621
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/regexes.js
13634
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/regexes.js
13622
13635
  /**
13623
13636
  * @deprecated CUID v1 is deprecated by its authors due to information leakage
13624
13637
  * (timestamps embedded in the id). Use {@link cuid2} instead.
@@ -13691,7 +13704,7 @@ var _null$2 = /^null$/i;
13691
13704
  var lowercase = /^[^A-Z]*$/;
13692
13705
  var uppercase = /^[^a-z]*$/;
13693
13706
  //#endregion
13694
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/checks.js
13707
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/checks.js
13695
13708
  var $ZodCheck = /*@__PURE__*/ $constructor("$ZodCheck", (inst, def) => {
13696
13709
  var _a;
13697
13710
  inst._zod ?? (inst._zod = {});
@@ -13987,7 +14000,7 @@ var $ZodCheckOverwrite = /*@__PURE__*/ $constructor("$ZodCheckOverwrite", (inst,
13987
14000
  };
13988
14001
  });
13989
14002
  //#endregion
13990
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/doc.js
14003
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/doc.js
13991
14004
  var Doc = class {
13992
14005
  constructor(args = [], closed = {}) {
13993
14006
  this.content = [];
@@ -14021,14 +14034,14 @@ var Doc = class {
14021
14034
  }
14022
14035
  };
14023
14036
  //#endregion
14024
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/versions.js
14037
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/versions.js
14025
14038
  var version = {
14026
14039
  major: 4,
14027
14040
  minor: 6,
14028
- patch: 5
14041
+ patch: 7
14029
14042
  };
14030
14043
  //#endregion
14031
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/schemas.js
14044
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/schemas.js
14032
14045
  var $ZodType = /*@__PURE__*/ $constructor("$ZodType", (inst, def) => {
14033
14046
  var _a;
14034
14047
  inst ?? (inst = {});
@@ -14541,6 +14554,26 @@ var $ZodNever = /*@__PURE__*/ $constructor("$ZodNever", (inst, def) => {
14541
14554
  return payload;
14542
14555
  };
14543
14556
  });
14557
+ function capSize(inst, size) {
14558
+ const caps = sizeCaps(inst._zod.def.checks);
14559
+ if (!caps.length) return;
14560
+ const cap = Math.min(...caps.map((c) => c[0]));
14561
+ const parse = inst._zod.parse;
14562
+ inst._zod.parse = (payload, ctx) => {
14563
+ const n = size(payload.value);
14564
+ if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
14565
+ for (const [max, ch] of sizeCaps(inst._zod.def.checks)) if (n > max && ch._zod.def.when(payload)) {
14566
+ const start = payload.issues.length;
14567
+ ch._zod.check(payload);
14568
+ payload.issues[start].continue = false;
14569
+ attachSchema(payload.issues, start, inst);
14570
+ return payload;
14571
+ }
14572
+ }
14573
+ return parse(payload, ctx);
14574
+ };
14575
+ }
14576
+ var arraySize = (input) => Array.isArray(input) ? input.length : -1;
14544
14577
  function handleArrayResult(result, final, index) {
14545
14578
  if (result.issues.length) final.issues.push(...prefixIssues(index, result.issues));
14546
14579
  final.value[index] = result.value;
@@ -14578,6 +14611,7 @@ var $ZodArray = /*@__PURE__*/ $constructor("$ZodArray", (inst, def) => {
14578
14611
  if (proms.length) return Promise.all(proms).then(() => payload);
14579
14612
  return payload;
14580
14613
  };
14614
+ capSize(inst, arraySize);
14581
14615
  });
14582
14616
  function handlePropertyResult(result, final, key, input, optin, optout) {
14583
14617
  const isPresent = key in input;
@@ -14686,7 +14720,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
14686
14720
  }
14687
14721
  return propValues;
14688
14722
  });
14689
- const isObject$2 = isObject;
14723
+ const isObject$1 = isObject;
14690
14724
  const catchall = def.catchall;
14691
14725
  let value;
14692
14726
  const memo = globalConfig.memoizer;
@@ -14694,7 +14728,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
14694
14728
  inst._zod.parse = (payload, ctx) => {
14695
14729
  value ?? (value = _normalized.value);
14696
14730
  const input = payload.value;
14697
- if (!isObject$2(input)) {
14731
+ if (!isObject$1(input)) {
14698
14732
  payload.issues.push({
14699
14733
  expected: "object",
14700
14734
  code: "invalid_type",
@@ -14824,7 +14858,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
14824
14858
  return doc.compile();
14825
14859
  };
14826
14860
  let fastpass;
14827
- const isObject$1 = isObject;
14861
+ const isObject$2 = isObject;
14828
14862
  const jit = !globalConfig.jitless;
14829
14863
  const fastEnabled = jit && allowsEval.value;
14830
14864
  const catchall = def.catchall;
@@ -14832,7 +14866,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
14832
14866
  inst._zod.parse = (payload, ctx) => {
14833
14867
  value ?? (value = _normalized.value);
14834
14868
  const input = payload.value;
14835
- if (!isObject$1(input)) {
14869
+ if (!isObject$2(input)) {
14836
14870
  payload.issues.push({
14837
14871
  expected: "object",
14838
14872
  code: "invalid_type",
@@ -15496,7 +15530,7 @@ function handleRefineResult(result, payload, input, inst) {
15496
15530
  }
15497
15531
  }
15498
15532
  //#endregion
15499
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/memoizer.js
15533
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/memoizer.js
15500
15534
  var $ZodCyclicError = class extends Error {
15501
15535
  constructor() {
15502
15536
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -15749,7 +15783,7 @@ function isBackEdge(ctx, value) {
15749
15783
  return backEdges !== void 0 && isRef(value) && backEdges.has(value);
15750
15784
  }
15751
15785
  //#endregion
15752
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/locales/en.js
15786
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/locales/en.js
15753
15787
  var error = () => {
15754
15788
  const Sizable = {
15755
15789
  string: {
@@ -15857,7 +15891,7 @@ function en_default() {
15857
15891
  return { localeError: error() };
15858
15892
  }
15859
15893
  //#endregion
15860
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/registries.js
15894
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/registries.js
15861
15895
  var _a;
15862
15896
  var $ZodRegistry = class {
15863
15897
  constructor() {
@@ -15904,7 +15938,7 @@ function registry() {
15904
15938
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
15905
15939
  var globalRegistry = globalThis.__zod_globalRegistry;
15906
15940
  //#endregion
15907
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/api.js
15941
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/api.js
15908
15942
  function snapshotChecks(def) {
15909
15943
  if (def.checks) def.checks = [...def.checks];
15910
15944
  return def;
@@ -16420,7 +16454,7 @@ function _check(fn, params) {
16420
16454
  return ch;
16421
16455
  }
16422
16456
  //#endregion
16423
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.js
16457
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/to-json-schema.js
16424
16458
  function assignProps(target, ...sources) {
16425
16459
  for (const source of sources) for (const key of Reflect.ownKeys(source)) if (Object.prototype.propertyIsEnumerable.call(source, key)) assignProp(target, key, source[key]);
16426
16460
  return target;
@@ -16864,7 +16898,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
16864
16898
  return finalize(ctx, schema);
16865
16899
  };
16866
16900
  //#endregion
16867
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/core/json-schema-processors.js
16901
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/json-schema-processors.js
16868
16902
  var narrowMin = (agg, key, value) => {
16869
16903
  if (agg[key] === void 0 || value > agg[key]) agg[key] = value;
16870
16904
  };
@@ -17325,7 +17359,7 @@ var lazyProcessor = (schema, ctx, _json, params) => {
17325
17359
  seen.ref = innerType;
17326
17360
  };
17327
17361
  //#endregion
17328
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/errors.js
17362
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/errors.js
17329
17363
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
17330
17364
  function _lazyMethod(proto, key, make) {
17331
17365
  Object.defineProperty(proto, key, {
@@ -17375,7 +17409,7 @@ var initializer = (inst, issues) => {
17375
17409
  };
17376
17410
  var ZodRealError = /*@__PURE__*/ $constructor("ZodError", initializer, void 0, { Parent: Error });
17377
17411
  //#endregion
17378
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/parse.js
17412
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/parse.js
17379
17413
  var parse = /* @__PURE__ */ _parse(ZodRealError);
17380
17414
  var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);
17381
17415
  var safeParse = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -17389,7 +17423,7 @@ var safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);
17389
17423
  var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
17390
17424
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
17391
17425
  //#endregion
17392
- //#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/schemas.js
17426
+ //#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/schemas.js
17393
17427
  function _ensureDefaultLocale() {
17394
17428
  if (!globalConfig.localeError) config(en_default());
17395
17429
  }
@@ -92,7 +92,7 @@
92
92
 
93
93
  .open-flow-theme {
94
94
  --_open-flow-theme: light;
95
- color-scheme: var(--_open-flow-theme);
95
+ color-scheme: light;
96
96
  --_open-flow-background: var(--open-flow-background, light-dark(#fdfdfd, #1c1c1c));
97
97
  --_open-flow-foreground: var(--open-flow-foreground, light-dark(#242424, #eee));
98
98
  --_open-flow-card: var(--open-flow-card, light-dark(#fefefe, #242424));
@@ -131,6 +131,7 @@
131
131
 
132
132
  .open-flow-theme[data-theme="dark"] {
133
133
  --_open-flow-theme: dark;
134
+ color-scheme: dark;
134
135
  }
135
136
 
136
137
  .open-flow-theme, .open-flow-canvas-root :is(.react-flow__controls, [data-canvas-control-scope]) {
@@ -1450,6 +1451,10 @@
1450
1451
  min-height: min(360px, 80dvh);
1451
1452
  }
1452
1453
 
1454
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .min-h-min {
1455
+ min-height: min-content;
1456
+ }
1457
+
1453
1458
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .w-\(--anchor-width\) {
1454
1459
  width: var(--anchor-width);
1455
1460
  }
@@ -6131,23 +6136,20 @@
6131
6136
  }
6132
6137
 
6133
6138
  .open-flow-navigation-menu {
6139
+ width: max-content;
6140
+ max-width: calc(100vw - 16px);
6141
+ max-height: var(--available-height);
6142
+ overscroll-behavior: contain;
6134
6143
  border: 1px solid var(--ui-border);
6135
6144
  border-radius: var(--ui-radius);
6136
6145
  background: var(--ui-popover);
6137
6146
  color: var(--ui-popover-foreground);
6138
- margin: 0;
6147
+ gap: 0;
6139
6148
  padding: 4px;
6140
- position: fixed;
6141
- inset: 48px 16px auto auto;
6149
+ overflow-y: auto;
6142
6150
  box-shadow: 0 4px 12px #0002;
6143
6151
  }
6144
6152
 
6145
- .open-flow-navigation-menu:popover-open {
6146
- flex-direction: column;
6147
- align-items: stretch;
6148
- display: flex;
6149
- }
6150
-
6151
6153
  .open-flow-navigation-menu button[aria-pressed="true"] {
6152
6154
  background: var(--ui-muted);
6153
6155
  }
@@ -1,6 +1,7 @@
1
1
  import type { ComponentPropsWithoutRef, ComponentType, ForwardRefExoticComponent, ReactElement, ReactNode, RefAttributes, RefObject } from 'react';
2
2
  /** Native host button contract; Base UI composition stays internal to the product. */
3
3
  export interface ButtonProps extends ComponentPropsWithoutRef<'button'> {
4
+ multiline?: boolean;
4
5
  variant?: 'default' | 'outline' | 'secondary' | 'ghost' | 'disclosure' | 'destructive' | 'link';
5
6
  size?: 'default' | 'xs' | 'sm' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg';
6
7
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import w, { createElement, forwardRef, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
2
+ import w, { createElement, forwardRef, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import * as ReactDOM from "react-dom";
5
5
  //#region \0rolldown/runtime.js
@@ -4252,6 +4252,7 @@ function cn(...inputs) {
4252
4252
  //#region src/ui/browser/button.tsx
4253
4253
  var buttonVariants = cva("nodrag group/button relative inline-flex shrink-0 items-center justify-center rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap no-underline transition-[color,background-color,border-color,box-shadow,opacity,transform] outline-none select-none before:absolute before:inset-0 before:content-[''] motion-reduce:transition-none focus-visible:border-border focus-visible:outline-2 focus-visible:outline-solid focus-visible:ring-0 focus-visible:aria-invalid:ring-0 focus-visible:outline-offset-1 focus-visible:outline-ring focus-visible:aria-invalid:outline-destructive active:not-aria-[haspopup]:not-data-[variant=field]:translate-y-px disabled:pointer-events-none disabled:opacity-[var(--ui-disabled-opacity,0.5)] aria-disabled:pointer-events-none aria-disabled:opacity-[var(--ui-disabled-opacity,0.5)] aria-invalid:border-destructive [&_svg]:pointer-events-none [&_i[aria-hidden=true]]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
4254
4254
  variants: {
4255
+ multiline: { true: "min-h-min whitespace-normal wrap-anywhere text-center" },
4255
4256
  variant: {
4256
4257
  "default": "bg-primary text-primary-foreground hover:bg-primary/80",
4257
4258
  "outline": "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_50%,transparent))]",
@@ -4280,7 +4281,7 @@ var buttonVariants = cva("nodrag group/button relative inline-flex shrink-0 item
4280
4281
  size: "default"
4281
4282
  }
4282
4283
  });
4283
- var Button$1 = forwardRef(function Button({ className, variant = "default", size = "default", ...props }, ref) {
4284
+ var Button$1 = forwardRef(function Button({ className, variant = "default", size = "default", multiline, ...props }, ref) {
4284
4285
  return /* @__PURE__ */ jsx(Button$2, {
4285
4286
  ref,
4286
4287
  "data-slot": "button",
@@ -4289,6 +4290,7 @@ var Button$1 = forwardRef(function Button({ className, variant = "default", size
4289
4290
  className: cn(buttonVariants({
4290
4291
  variant,
4291
4292
  size,
4293
+ multiline,
4292
4294
  className
4293
4295
  })),
4294
4296
  ...props
@@ -4537,7 +4539,7 @@ var maybeReactUseId = SafeReact.useId;
4537
4539
  * @param idOverride
4538
4540
  * @returns {string}
4539
4541
  */
4540
- function useId$1(idOverride, prefix) {
4542
+ function useId(idOverride, prefix) {
4541
4543
  if (maybeReactUseId !== void 0) {
4542
4544
  const reactId = maybeReactUseId();
4543
4545
  return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId);
@@ -4552,7 +4554,7 @@ function useId$1(idOverride, prefix) {
4552
4554
  * @returns {string | undefined}
4553
4555
  */
4554
4556
  function useBaseUiId(idOverride) {
4555
- return useId$1(idOverride, "base-ui");
4557
+ return useId(idOverride, "base-ui");
4556
4558
  }
4557
4559
  //#endregion
4558
4560
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/dialog/description/DialogDescription.js
@@ -5785,7 +5787,7 @@ var usePortalContext = () => React.useContext(PortalContext);
5785
5787
  var attr = createAttribute("portal");
5786
5788
  function useFloatingPortalNode(props = {}) {
5787
5789
  const { ref, container: containerProp, componentProps = EMPTY_OBJECT, elementProps } = props;
5788
- const uniqueId = useId$1();
5790
+ const uniqueId = useId();
5789
5791
  const parentPortalNode = usePortalContext()?.portalNode;
5790
5792
  const [containerElement, setContainerElement] = React.useState(null);
5791
5793
  const [portalNode, setPortalNode] = React.useState(null);
@@ -5978,7 +5980,7 @@ var useFloatingTree = (externalTree) => {
5978
5980
  * @see https://floating-ui.com/docs/FloatingTree
5979
5981
  */
5980
5982
  function useFloatingNodeId(externalTree) {
5981
- const id = useId$1();
5983
+ const id = useId();
5982
5984
  const tree = useFloatingTree(externalTree);
5983
5985
  const parentId = useFloatingParentNodeId();
5984
5986
  useIsoLayoutEffect(() => {
@@ -9513,7 +9515,7 @@ var popupStoreSelectors = {
9513
9515
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFloatingRootContext.js
9514
9516
  function useFloatingRootContext(options) {
9515
9517
  const { open = false, onOpenChange, elements = {} } = options;
9516
- const floatingId = useId$1();
9518
+ const floatingId = useId();
9517
9519
  const nested = useFloatingParentNodeId() != null;
9518
9520
  if (process.env.NODE_ENV !== "production") {
9519
9521
  const optionDomReference = elements.reference;
@@ -9671,7 +9673,7 @@ function useFloating(options = {}) {
9671
9673
  */
9672
9674
  function useSyncedFloatingRootContext(options) {
9673
9675
  const { popupStore, treatPopupAsFloatingElement = false, onOpenChange } = options;
9674
- const floatingId = useId$1();
9676
+ const floatingId = useId();
9675
9677
  const nested = useFloatingParentNodeId() != null;
9676
9678
  const open = popupStore.useState("open");
9677
9679
  const referenceElement = popupStore.useState("activeTriggerElement");
@@ -10806,7 +10808,7 @@ function useRole(context, props = {}) {
10806
10808
  const domReference = store.useState("domReferenceElement");
10807
10809
  const floatingElement = store.useState("floatingElement");
10808
10810
  const { role = "dialog" } = props;
10809
- const defaultReferenceId = useId$1();
10811
+ const defaultReferenceId = useId();
10810
10812
  const referenceId = domReference?.id || defaultReferenceId;
10811
10813
  const floatingId = React.useMemo(() => getFloatingFocusElement(floatingElement)?.id || defaultFloatingId, [floatingElement, defaultFloatingId]);
10812
10814
  const ariaRole = componentRoleToAriaRoleMap.get(role) ?? role;
@@ -14405,7 +14407,7 @@ var MenuRoot = fastComponent(function MenuRoot(props) {
14405
14407
  disabled: disabledProp,
14406
14408
  modal: parent.type === void 0 ? modalProp : void 0,
14407
14409
  openMethod,
14408
- rootId: useId$1()
14410
+ rootId: useId()
14409
14411
  });
14410
14412
  useImplicitActiveTrigger(store);
14411
14413
  const { forceUnmount } = useOpenStateTransitions(open, store, () => {
@@ -15969,6 +15971,12 @@ function ClosePartProvider(props) {
15969
15971
  children
15970
15972
  });
15971
15973
  }
15974
+ function useClosePartRegistration() {
15975
+ const context = React.useContext(ClosePartContext);
15976
+ useIsoLayoutEffect(() => {
15977
+ return context?.register();
15978
+ }, [context]);
15979
+ }
15972
15980
  //#endregion
15973
15981
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/popover/popup/PopoverPopup.js
15974
15982
  var stateAttributesMapping$1 = {
@@ -16093,6 +16101,35 @@ var PopoverTitle$2 = /*#__PURE__*/ React.forwardRef(function PopoverTitle(compon
16093
16101
  });
16094
16102
  });
16095
16103
  if (process.env.NODE_ENV !== "production") PopoverTitle$2.displayName = "PopoverTitle";
16104
+ //#endregion
16105
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/popover/close/PopoverClose.js
16106
+ /**
16107
+ * A button that closes the popover.
16108
+ * Renders a `<button>` element.
16109
+ *
16110
+ * Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
16111
+ */
16112
+ var PopoverClose$1 = /*#__PURE__*/ React.forwardRef(function PopoverClose(componentProps, forwardedRef) {
16113
+ const { render, className, disabled = false, nativeButton = true, style, ...elementProps } = componentProps;
16114
+ const { buttonRef, getButtonProps } = useButton({
16115
+ disabled,
16116
+ focusableWhenDisabled: false,
16117
+ native: nativeButton
16118
+ });
16119
+ const { store } = usePopoverRootContext();
16120
+ useClosePartRegistration();
16121
+ return useRenderElement("button", componentProps, {
16122
+ ref: [forwardedRef, buttonRef],
16123
+ props: [
16124
+ { onClick(event) {
16125
+ store.setOpen(false, createChangeEventDetails(closePress, event.nativeEvent, event.currentTarget));
16126
+ } },
16127
+ elementProps,
16128
+ getButtonProps
16129
+ ]
16130
+ });
16131
+ });
16132
+ if (process.env.NODE_ENV !== "production") PopoverClose$1.displayName = "PopoverClose";
16096
16133
  var scroll_area_module_default = {
16097
16134
  container: "scroll-area_container_07c14",
16098
16135
  scrollbar: "scroll-area_scrollbar_07c14",
@@ -18675,6 +18712,12 @@ var PopoverTrigger$1 = React.forwardRef(function PopoverTrigger(props, ref) {
18675
18712
  ref
18676
18713
  });
18677
18714
  });
18715
+ function PopoverClose(props) {
18716
+ return /* @__PURE__ */ jsx(PopoverClose$1, {
18717
+ "data-slot": "popover-close",
18718
+ ...props
18719
+ });
18720
+ }
18678
18721
  function PopoverContent$1({ className, positionerClassName, positionerStyle, align = "center", alignOffset = 0, anchor, collisionBoundary, collisionAvoidance, positionMethod, container, keepMounted, side = "bottom", sideOffset = 4, ...props }) {
18679
18722
  return /* @__PURE__ */ jsx(PopoverPortal, {
18680
18723
  container,
@@ -19624,9 +19667,9 @@ var themeIcons = {
19624
19667
  var actionClassName = "rounded-full bg-foreground/3 text-foreground hover:bg-foreground/7 dark:hover:bg-foreground/7";
19625
19668
  /** Shared host navigation; each host owns preference storage and localized labels. */
19626
19669
  function HostNavigationActions({ className, language, onLanguageChange, theme, onThemeChange, labels }) {
19627
- const themeId = useId();
19628
- const languageId = useId();
19670
+ const [container, setContainer] = useState(null);
19629
19671
  return /* @__PURE__ */ jsxs("div", {
19672
+ ref: setContainer,
19630
19673
  className: cn("flex items-center gap-2", className),
19631
19674
  children: [
19632
19675
  /* @__PURE__ */ jsx(HostTooltip, {
@@ -19648,78 +19691,82 @@ function HostNavigationActions({ className, language, onLanguageChange, theme, o
19648
19691
  })
19649
19692
  })
19650
19693
  }),
19651
- /* @__PURE__ */ jsx(HostTooltip, {
19694
+ /* @__PURE__ */ jsxs(Popover$1, { children: [/* @__PURE__ */ jsx(HostTooltip, {
19652
19695
  label: labels.theme,
19653
19696
  side: "bottom",
19654
- children: /* @__PURE__ */ jsx(Button$1, {
19655
- className: actionClassName,
19656
- variant: "ghost",
19657
- size: "icon",
19658
- type: "button",
19659
- "aria-label": labels.theme,
19660
- popovertarget: themeId,
19697
+ children: /* @__PURE__ */ jsx(PopoverTrigger$1, {
19698
+ render: /* @__PURE__ */ jsx(Button$1, {
19699
+ className: actionClassName,
19700
+ variant: "ghost",
19701
+ size: "icon",
19702
+ type: "button",
19703
+ "aria-label": labels.theme
19704
+ }),
19661
19705
  children: /* @__PURE__ */ jsx("i", {
19662
19706
  "aria-hidden": "true",
19663
19707
  className: `${themeIcons[theme]} size-4`
19664
19708
  })
19665
19709
  })
19666
- }),
19667
- /* @__PURE__ */ jsx(HostTooltip, {
19668
- label: labels.language,
19669
- side: "bottom",
19670
- children: /* @__PURE__ */ jsx(Button$1, {
19671
- className: actionClassName,
19672
- variant: "ghost",
19673
- size: "icon",
19674
- type: "button",
19675
- popovertarget: languageId,
19676
- "aria-label": labels.language,
19677
- children: /* @__PURE__ */ jsx("i", {
19678
- "aria-hidden": "true",
19679
- className: "i-lucide-light:languages size-4"
19680
- })
19681
- })
19682
- }),
19683
- /* @__PURE__ */ jsx("div", {
19684
- id: themeId,
19685
- popover: "auto",
19686
- className: "open-flow-navigation-menu",
19710
+ }), /* @__PURE__ */ jsx(PopoverContent$1, {
19711
+ container,
19712
+ align: "end",
19713
+ positionMethod: "fixed",
19714
+ className: "open-flow-navigation-menu ring-0",
19715
+ "aria-label": labels.theme,
19687
19716
  children: [
19688
19717
  "light",
19689
19718
  "dark",
19690
19719
  "auto"
19691
- ].map((value) => /* @__PURE__ */ jsxs(Button$1, {
19692
- className: "justify-start gap-2",
19693
- variant: "ghost",
19694
- size: "sm",
19720
+ ].map((value) => /* @__PURE__ */ jsxs(PopoverClose, {
19721
+ render: /* @__PURE__ */ jsx(Button$1, {
19722
+ multiline: true,
19723
+ className: "justify-start gap-2",
19724
+ variant: "ghost",
19725
+ size: "sm"
19726
+ }),
19695
19727
  type: "button",
19696
19728
  "aria-pressed": theme == value,
19697
- onClick: (event) => {
19698
- onThemeChange(value);
19699
- event.currentTarget.closest("[popover]")?.hidePopover();
19700
- },
19729
+ onClick: () => onThemeChange(value),
19701
19730
  children: [/* @__PURE__ */ jsx("i", {
19702
19731
  "aria-hidden": "true",
19703
- className: `${themeIcons[value]} size-4`
19732
+ className: `${themeIcons[value]} size-4 shrink-0`
19704
19733
  }), labels[value]]
19705
19734
  }, value))
19706
- }),
19707
- /* @__PURE__ */ jsx("div", {
19708
- id: languageId,
19709
- popover: "auto",
19710
- className: "open-flow-navigation-menu",
19711
- children: uiLanguages.map((value) => /* @__PURE__ */ jsx(Button$1, {
19712
- variant: "ghost",
19713
- size: "sm",
19735
+ })] }),
19736
+ /* @__PURE__ */ jsxs(Popover$1, { children: [/* @__PURE__ */ jsx(HostTooltip, {
19737
+ label: labels.language,
19738
+ side: "bottom",
19739
+ children: /* @__PURE__ */ jsx(PopoverTrigger$1, {
19740
+ render: /* @__PURE__ */ jsx(Button$1, {
19741
+ className: actionClassName,
19742
+ variant: "ghost",
19743
+ size: "icon",
19744
+ type: "button",
19745
+ "aria-label": labels.language
19746
+ }),
19747
+ children: /* @__PURE__ */ jsx("i", {
19748
+ "aria-hidden": "true",
19749
+ className: "i-lucide-light:languages size-4"
19750
+ })
19751
+ })
19752
+ }), /* @__PURE__ */ jsx(PopoverContent$1, {
19753
+ container,
19754
+ align: "end",
19755
+ positionMethod: "fixed",
19756
+ className: "open-flow-navigation-menu ring-0",
19757
+ "aria-label": labels.language,
19758
+ children: uiLanguages.map((value) => /* @__PURE__ */ jsx(PopoverClose, {
19759
+ render: /* @__PURE__ */ jsx(Button$1, {
19760
+ multiline: true,
19761
+ variant: "ghost",
19762
+ size: "sm"
19763
+ }),
19714
19764
  type: "button",
19715
19765
  "aria-pressed": language == value,
19716
- onClick: (event) => {
19717
- onLanguageChange(value);
19718
- event.currentTarget.closest("[popover]")?.hidePopover();
19719
- },
19766
+ onClick: () => onLanguageChange(value),
19720
19767
  children: uiLanguageNames[value]
19721
19768
  }, value))
19722
- })
19769
+ })] })
19723
19770
  ]
19724
19771
  });
19725
19772
  }