@oomol-lab/open-flow 0.1.0-beta.81 → 0.1.0-beta.83

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 (52) hide show
  1. package/README.md +35 -0
  2. package/dist/browser/{FlowCanvas-CrsiDHK8.js → FlowCanvas-ChbukrDh.js} +879 -535
  3. package/dist/browser/{createResourceDialog-CS3u9ga9.js → createResourceDialog-Bi4fUnbD.js} +5 -4
  4. package/dist/browser/{dialog-CFlvkliO.js → dialog-BzoSxhXQ.js} +1 -1
  5. package/dist/browser/{exportPng-BOPfjeEi.js → exportPng-CrAFfOaD.js} +187 -70
  6. package/dist/browser/{flowChanges-CFj5pL4Y.js → flowChanges-C567g-Pc.js} +2675 -93
  7. package/dist/browser/{flowWorkspace-BeQaeJ3e.js → flowWorkspace-rvcneG4q.js} +980 -2621
  8. package/dist/browser/licenses.md +2 -2
  9. package/dist/browser/{markdownContent-frwDfQQU.js → markdownContent-B-GLj5DU.js} +18 -40
  10. package/dist/browser/{markdownContent-CAG_CQfH.js → markdownContent-D8G_oNOe.js} +18 -41
  11. package/dist/browser/preview.css +125 -80
  12. package/dist/browser/preview.js +1093 -379
  13. package/dist/browser/{tooltip-BDcVTNpu.js → tooltip-DGj5pudg.js} +1 -1
  14. package/dist/browser/ui.css +45 -0
  15. package/dist/browser/{dist-CHwj9BhV.js → videoLink-NAWDmBtf.js} +35 -1
  16. package/dist/browser/workbench-contract.d.ts +6 -0
  17. package/dist/browser/workbench.css +296 -251
  18. package/dist/browser/workbench.d.ts +2 -0
  19. package/dist/browser/workbench.js +294 -141
  20. package/dist/browser/{workbenchSelect-Ci0KCYv9.js → workbenchSelect-BIaEVTx6.js} +2 -2
  21. package/dist/browser/{ContentIcon-CMn0c-kl.js → wrapLayout-C4moMKgb.js} +4400 -4148
  22. package/dist/command/index.js +43 -41
  23. package/dist/common/authoring.d.ts +1 -1
  24. package/dist/common/control-api-conformance.js +306 -2
  25. package/dist/common/control-api.d.ts +20 -0
  26. package/dist/common/control-api.js +306 -4
  27. package/dist/common/control-requests.d.ts +3 -5
  28. package/dist/common/control-requests.js +5 -7
  29. package/dist/common/flow-encoding.d.ts +1 -0
  30. package/dist/common/flow-encoding.js +167 -1
  31. package/dist/common/flow-semantics.js +20 -0
  32. package/dist/common/flow-workflowBundle.d.ts +27 -0
  33. package/dist/common/flow-workflowFile.d.ts +2 -0
  34. package/dist/common/flow-workflowReferences.d.ts +4 -0
  35. package/dist/common/mcp.d.ts +2 -0
  36. package/dist/common/mcp.js +312 -4
  37. package/dist/render/browser/licenses.md +4047 -0
  38. package/dist/render/browser/runtime.css +14914 -0
  39. package/dist/render/browser/runtime.js +267526 -0
  40. package/dist/render/common/png.d.ts +32 -0
  41. package/dist/render/node/index.d.ts +11 -0
  42. package/dist/render/node/index.js +9508 -0
  43. package/dist/render/node/licenses.md +75 -0
  44. package/package.json +12 -2
  45. package/src/control/common/api.ts +50 -0
  46. package/src/control/common/flowDecoders.ts +2 -0
  47. package/src/control/common/mcp.ts +4 -4
  48. package/src/control/common/requests.ts +12 -1
  49. package/src/flow/common/encoding.ts +1 -0
  50. package/src/flow/common/workflowBundle.ts +117 -0
  51. package/src/flow/common/workflowFile.ts +4 -0
  52. package/src/flow/common/workflowReferences.ts +20 -0
@@ -18974,4 +18974,4 @@ function TooltipContent({ className, container, positionMethod, collisionBoundar
18974
18974
  }
18975
18975
  var createTooltipHandle = createTooltipHandle$1;
18976
18976
  //#endregion
18977
- export { useToolbarRootContext as $, inputClear as $n, fastComponent as $t, string as A, isMac as An, warn as Ar, useImplicitActiveTrigger as At, ARROW_LEFT as B, transitionStatusMapping as Bn, useRefWithInit as Br, useFloatingNodeId as Bt, literal as C, getFloatingFocusElement as Cn, cn as Cr, useHoverFloatingInteraction as Ct, preprocess as D, getTarget as Dn, EMPTY_ARRAY as Dr, createInitialPopupStoreState as Dt, object as E, contains as En, useRenderElement as Er, useFloatingRootContext as Et, IndexGuessBehavior as F, createLucideIcon as Fn, formatErrorMessage as Fr, useDismiss as Ft, HORIZONTAL_KEYS as G, createGenericEventDetails as Gn, isLastTraversableNode as Gr, CLICK_TRIGGER_IDENTIFIER as Gt, ARROW_UP as H, useOnMount as Hn, getWindow as Hr, useFloatingTree as Ht, useCompositeListItem as I, useTransitionStatus as In, mergeProps$1 as Ir, useClick as It, SHIFT as J, closePress as Jn, FocusGuard as Jt, HORIZONTAL_KEYS_WITH_EXTRA_KEYS as K, cancelOpen as Kn, DROPDOWN_COLLISION_AVOIDANCE as Kt, ALL_KEYS as L, useOpenChangeComplete as Ln, useIsoLayoutEffect as Lr, FloatingFocusManager as Lt, unknown as M, ownerDocument as Mn, useButton as Mr, useTriggerDataForwarding as Mt, _isoDateTime as N, useLabelableId as Nn, CompositeRootContext as Nr, useTriggerRegistration as Nt, record as O, isAndroid as On, EMPTY_OBJECT as Or, popupStoreSelectors as Ot, Separator as P, Check as Pn, useCompositeRootContext as Pr, platform as Pt, scrollIntoViewIfNeeded as Q, inputChange as Qn, useStore as Qt, ARROW_DOWN as R, useAnimationsFinished as Rn, SafeReact as Rr, FloatingNode as Rt, lazy$1 as S, stopEvent as Sn, buttonVariants as Sr, useHoverReferenceInteraction as St, number as T, activeElement as Tn, clsx as Tr, useSyncedFloatingRootContext as Tt, COMPOSITE_KEYS as U, useValueChanged as Un, isElement as Ur, FloatingTreeStore as Ut, ARROW_RIGHT as V, useAnimationFrame as Vn, getParentNode as Vr, useFloatingParentNodeId as Vt, HOME as W, createChangeEventDetails as Wn, isHTMLElement as Wr, FloatingPortal as Wt, VERTICAL_KEYS_WITH_EXTRA_KEYS as X, focusOut as Xn, ReactStore as Xt, VERTICAL_KEYS as Y, escapeKey as Yn, addEventListener as Yt, isNativeInput as Z, imperativeAction as Zn, Store as Zt, array as _, getMaxListIndex as _n, fieldValidityMapping as _r, safePolygon as _t, createTooltipHandle as a, useOnFirstRender as an, siblingOpen as ar, useAnchorPositioning as at, int as b, isListIndexDisabled as bn, useControlled as br, useListNavigation as bt, TooltipPositioner as c, getNextTabbable as cn, triggerPress as cr, CompositeList as ct, TooltipRoot as d, isOutsideEvent as dn, useFormContext as dr, CommonPopupDataAttributes as dt, fastComponentRef as en, inputPress as er, useAnchoredPopupScrollLock as et, isTimeZone as f, createGridCellMap as fn, useRegisterFieldControl as fr, popupStateMapping as ft, _enum as g, getGridNavigatedIndex as gn, DEFAULT_FIELD_STATE_ATTRIBUTES as gr, serializeValue as gt, ZodType as h, getGridCellIndices as hn, useId$1 as hr, useOpenInteractionType as ht, TooltipTrigger as i, useValueAsRef as in, outsidePress as ir, InternalBackdrop as it, union as j, isWebKit as jn, useMergedRefs as jr, useOpenStateTransitions as jt, strictObject as k, isFirefox as kn, NOOP as kr, PopupTriggerMap as kt, TooltipPortal as l, getTabbableAfterElement as ln, windowResize as lr, inertValue as lt, ZodISODateTime as m, getGridCellIndexOfCorner as mn, useBaseUiId as mr, triggerOpenStateMapping as mt, TooltipContent as n, require_builtin_esm_external_require_react as nn, listNavigation as nr, usePositioner as nt, TooltipArrow as o, Timeout as on, triggerFocus as or, adaptiveOrigin as ot, timeZoneOffsetMinutes as p, findNonDisabledListIndex as pn, useFieldRootContext as pr, pressableTriggerOpenStateMapping as pt, MODIFIER_KEYS as q, clearPress as qn, POPUP_COLLISION_AVOIDANCE as qt, TooltipProvider as r, createSelector as rn, none as rr, getDisabledMountTransitionStyles as rt, TooltipPopup as s, useTimeout as sn, triggerHover as sr, useDirection as st, Tooltip as t, require_with_selector as tn, itemPress as tr, useScrollLock as tt, TooltipTrigger$1 as u, getTabbableBeforeElement as un, useLabelableContext as ur, getPseudoElementBounds as ut, boolean as v, getMinListIndex as vn, visuallyHidden as vr, useTypeahead as vt, never as w, isInteractiveElement as wn, cva as wr, useFocus as wt, json as x, rectToClientRect as xn, Button as xr, useInteractions as xt, discriminatedUnion as y, isIndexOutOfListBounds as yn, visuallyHiddenInput as yr, useRole as yt, ARROW_KEYS as z, TransitionStatusDataAttributes as zn, useStableCallback as zr, FloatingTree as zt };
18977
+ export { useToolbarRootContext as $, inputClear as $n, fastComponent as $t, string as A, isMac as An, warn as Ar, useImplicitActiveTrigger as At, ARROW_LEFT as B, transitionStatusMapping as Bn, useStableCallback as Br, useFloatingNodeId as Bt, literal as C, getFloatingFocusElement as Cn, cn as Cr, useHoverFloatingInteraction as Ct, preprocess as D, getTarget as Dn, EMPTY_ARRAY as Dr, createInitialPopupStoreState as Dt, object as E, contains as En, useRenderElement as Er, useFloatingRootContext as Et, IndexGuessBehavior as F, createLucideIcon as Fn, formatErrorMessage as Fr, useDismiss as Ft, HORIZONTAL_KEYS as G, createGenericEventDetails as Gn, isHTMLElement as Gr, CLICK_TRIGGER_IDENTIFIER as Gt, ARROW_UP as H, useOnMount as Hn, getParentNode as Hr, useFloatingTree as Ht, useCompositeListItem as I, useTransitionStatus as In, mergeProps$1 as Ir, useClick as It, SHIFT as J, closePress as Jn, FocusGuard as Jt, HORIZONTAL_KEYS_WITH_EXTRA_KEYS as K, cancelOpen as Kn, isLastTraversableNode as Kr, DROPDOWN_COLLISION_AVOIDANCE as Kt, ALL_KEYS as L, useOpenChangeComplete as Ln, useIsoLayoutEffect as Lr, FloatingFocusManager as Lt, unknown as M, ownerDocument as Mn, useButton as Mr, useTriggerDataForwarding as Mt, _isoDateTime as N, useLabelableId as Nn, CompositeRootContext as Nr, useTriggerRegistration as Nt, record as O, isAndroid as On, EMPTY_OBJECT as Or, popupStoreSelectors as Ot, Separator as P, Check as Pn, useCompositeRootContext as Pr, platform as Pt, scrollIntoViewIfNeeded as Q, inputChange as Qn, useStore as Qt, ARROW_DOWN as R, useAnimationsFinished as Rn, SafeReact as Rr, FloatingNode as Rt, lazy$1 as S, stopEvent as Sn, buttonVariants as Sr, useHoverReferenceInteraction as St, number as T, activeElement as Tn, clsx as Tr, useSyncedFloatingRootContext as Tt, COMPOSITE_KEYS as U, useValueChanged as Un, getWindow as Ur, FloatingTreeStore as Ut, ARROW_RIGHT as V, useAnimationFrame as Vn, useRefWithInit as Vr, useFloatingParentNodeId as Vt, HOME as W, createChangeEventDetails as Wn, isElement as Wr, FloatingPortal as Wt, VERTICAL_KEYS_WITH_EXTRA_KEYS as X, focusOut as Xn, ReactStore as Xt, VERTICAL_KEYS as Y, escapeKey as Yn, addEventListener as Yt, isNativeInput as Z, imperativeAction as Zn, Store as Zt, array as _, getMaxListIndex as _n, fieldValidityMapping as _r, safePolygon as _t, createTooltipHandle as a, useOnFirstRender as an, siblingOpen as ar, useAnchorPositioning as at, int as b, isListIndexDisabled as bn, useControlled as br, useListNavigation as bt, TooltipPositioner as c, getNextTabbable as cn, triggerPress as cr, CompositeList as ct, TooltipRoot as d, isOutsideEvent as dn, useFormContext as dr, CommonPopupDataAttributes as dt, fastComponentRef as en, inputPress as er, useAnchoredPopupScrollLock as et, isTimeZone as f, createGridCellMap as fn, useRegisterFieldControl as fr, popupStateMapping as ft, _enum as g, getGridNavigatedIndex as gn, DEFAULT_FIELD_STATE_ATTRIBUTES as gr, serializeValue as gt, ZodType as h, getGridCellIndices as hn, useId$1 as hr, useOpenInteractionType as ht, TooltipTrigger as i, useValueAsRef as in, outsidePress as ir, InternalBackdrop as it, union as j, isWebKit as jn, useMergedRefs as jr, useOpenStateTransitions as jt, strictObject as k, isFirefox as kn, NOOP as kr, PopupTriggerMap as kt, TooltipPortal as l, getTabbableAfterElement as ln, windowResize as lr, inertValue as lt, ZodISODateTime as m, getGridCellIndexOfCorner as mn, useBaseUiId as mr, triggerOpenStateMapping as mt, TooltipContent as n, require_builtin_esm_external_require_react as nn, listNavigation as nr, usePositioner as nt, TooltipArrow as o, Timeout as on, triggerFocus as or, adaptiveOrigin as ot, timeZoneOffsetMinutes as p, findNonDisabledListIndex as pn, useFieldRootContext as pr, pressableTriggerOpenStateMapping as pt, MODIFIER_KEYS as q, clearPress as qn, POPUP_COLLISION_AVOIDANCE as qt, TooltipProvider as r, createSelector as rn, none as rr, getDisabledMountTransitionStyles as rt, TooltipPopup as s, useTimeout as sn, triggerHover as sr, useDirection as st, Tooltip as t, require_with_selector as tn, itemPress as tr, useScrollLock as tt, TooltipTrigger$1 as u, getTabbableBeforeElement as un, useLabelableContext as ur, getPseudoElementBounds as ut, boolean as v, getMinListIndex as vn, visuallyHidden as vr, useTypeahead as vt, never as w, isInteractiveElement as wn, cva as wr, useFocus as wt, json as x, rectToClientRect as xn, Button as xr, useInteractions as xt, discriminatedUnion as y, isIndexOutOfListBounds as yn, visuallyHiddenInput as yr, useRole as yt, ARROW_KEYS as z, TransitionStatusDataAttributes as zn, error$1 as zr, FloatingTree as zt };
@@ -604,6 +604,7 @@
604
604
  --container-xl: 36rem;
605
605
  --container-2xl: 42rem;
606
606
  --container-3xl: 48rem;
607
+ --container-4xl: 56rem;
607
608
  --text-xs: .75rem;
608
609
  --text-xs--line-height: calc(1 / .75);
609
610
  --text-sm--line-height: calc(1.25 / .875);
@@ -1021,6 +1022,10 @@
1021
1022
  margin-right: calc(var(--spacing) * 5);
1022
1023
  }
1023
1024
 
1025
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .mr-auto {
1026
+ margin-right: auto;
1027
+ }
1028
+
1024
1029
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .-mb-4 {
1025
1030
  margin-bottom: calc(var(--spacing) * -4);
1026
1031
  }
@@ -1277,6 +1282,10 @@
1277
1282
  height: min(32rem, 80dvh);
1278
1283
  }
1279
1284
 
1285
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .h-\[min\(56dvh\,32rem\)\] {
1286
+ height: min(56dvh, 32rem);
1287
+ }
1288
+
1280
1289
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .h-\[min\(560px\,80dvh\)\] {
1281
1290
  height: min(560px, 80dvh);
1282
1291
  }
@@ -1373,6 +1382,10 @@
1373
1382
  max-height: min(80vh, 680px, var(--available-height));
1374
1383
  }
1375
1384
 
1385
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-h-full {
1386
+ max-height: 100%;
1387
+ }
1388
+
1376
1389
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .min-h-0 {
1377
1390
  min-height: 0;
1378
1391
  }
@@ -1413,6 +1426,10 @@
1413
1426
  min-height: calc(var(--spacing) * 40);
1414
1427
  }
1415
1428
 
1429
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .min-h-52 {
1430
+ min-height: calc(var(--spacing) * 52);
1431
+ }
1432
+
1416
1433
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .min-h-64 {
1417
1434
  min-height: calc(var(--spacing) * 64);
1418
1435
  }
@@ -1885,6 +1902,10 @@
1885
1902
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 520px), 1fr));
1886
1903
  }
1887
1904
 
1905
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .grid-rows-\[auto_auto_minmax\(0\,1fr\)_auto\] {
1906
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
1907
+ }
1908
+
1888
1909
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .grid-rows-\[auto_minmax\(0\,1fr\)_auto\] {
1889
1910
  grid-template-rows: auto minmax(0, 1fr) auto;
1890
1911
  }
@@ -1917,6 +1938,10 @@
1917
1938
  place-content: center;
1918
1939
  }
1919
1940
 
1941
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .place-items-center {
1942
+ place-items: center;
1943
+ }
1944
+
1920
1945
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .content-end {
1921
1946
  align-content: flex-end;
1922
1947
  }
@@ -2532,6 +2557,10 @@
2532
2557
  fill: var(--ui-foreground);
2533
2558
  }
2534
2559
 
2560
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .object-contain {
2561
+ object-fit: contain;
2562
+ }
2563
+
2535
2564
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .object-cover {
2536
2565
  object-fit: cover;
2537
2566
  }
@@ -2752,6 +2781,10 @@
2752
2781
  padding-left: calc(var(--spacing) * 4);
2753
2782
  }
2754
2783
 
2784
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .pl-5 {
2785
+ padding-left: calc(var(--spacing) * 5);
2786
+ }
2787
+
2755
2788
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .pl-6 {
2756
2789
  padding-left: calc(var(--spacing) * 6);
2757
2790
  }
@@ -3079,6 +3112,10 @@
3079
3112
  text-underline-offset: 4px;
3080
3113
  }
3081
3114
 
3115
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .opacity-30 {
3116
+ opacity: .3;
3117
+ }
3118
+
3082
3119
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .opacity-40 {
3083
3120
  opacity: .4;
3084
3121
  }
@@ -5132,6 +5169,10 @@
5132
5169
  max-width: var(--container-3xl);
5133
5170
  }
5134
5171
 
5172
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .sm\:max-w-4xl {
5173
+ max-width: var(--container-4xl);
5174
+ }
5175
+
5135
5176
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .sm\:max-w-\[min\(42rem\,calc\(100\%-2rem\)\)\] {
5136
5177
  max-width: min(42rem, 100% - 2rem);
5137
5178
  }
@@ -5189,6 +5230,10 @@
5189
5230
  grid-template-columns: repeat(2, minmax(0, 1fr));
5190
5231
  }
5191
5232
 
5233
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .md\:grid-cols-\[minmax\(0\,1fr\)_16rem\] {
5234
+ grid-template-columns: minmax(0, 1fr) 16rem;
5235
+ }
5236
+
5192
5237
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .md\:text-xs {
5193
5238
  font-size: var(--text-xs);
5194
5239
  line-height: var(--tw-leading, var(--text-xs--line-height));
@@ -478,4 +478,38 @@ var isObject = (x) => x !== null && typeof x === "object";
478
478
  var isPlainObject = (x) => isObject(x) && !isArray(x);
479
479
  var toPlainObject = (x) => isPlainObject(x) ? x : void 0;
480
480
  //#endregion
481
- export { val as _, toPlainObject as a, useLang as c, attachSetter as d, combine as f, strictEqual as g, readonlyVal as h, isString as i, useTranslate as l, derive as m, isBoolean as n, I18nProvider as o, compute as p, isPlainObject as r, useI18n as s, isArray as t, useVal as u };
481
+ //#region src/ui/browser/markdown/videoLink.ts
482
+ function getVideoLink(href) {
483
+ let url;
484
+ try {
485
+ url = new URL(href);
486
+ } catch {
487
+ return;
488
+ }
489
+ if (url.protocol !== "https:" && url.protocol !== "http:") return;
490
+ const host = url.hostname.replace(/^www\./, "");
491
+ const youtubeId = host === "youtube.com" && url.pathname === "/watch" ? url.searchParams.get("v") : host === "youtu.be" ? url.pathname.slice(1) : null;
492
+ if (youtubeId && /^[a-zA-Z0-9_-]+$/.test(youtubeId)) return {
493
+ src: `https://www.youtube.com/embed/${youtubeId}`,
494
+ titleKey: "markdown.videoYouTube"
495
+ };
496
+ const bilibiliId = host === "bilibili.com" ? url.pathname.match(/^\/video\/(BV[a-zA-Z0-9]+)\/?$/)?.[1] : void 0;
497
+ if (bilibiliId) return {
498
+ src: `https://player.bilibili.com/player.html?bvid=${bilibiliId}&autoplay=0`,
499
+ titleKey: "markdown.videoBilibili"
500
+ };
501
+ }
502
+ function pasteVideoLink(event, t) {
503
+ const textarea = event.currentTarget;
504
+ if (event.defaultPrevented || textarea.readOnly || textarea.disabled) return;
505
+ const href = event.clipboardData.getData("text/plain").trim();
506
+ if (/\s/.test(href)) return;
507
+ const video = getVideoLink(href);
508
+ if (!video) return;
509
+ const destination = href.replaceAll("(", "%28").replaceAll(")", "%29");
510
+ const markdown = `[![${t(video.titleKey)}](thumbnail.jpg)](${destination})`;
511
+ event.preventDefault();
512
+ textarea.ownerDocument.execCommand("insertText", false, markdown);
513
+ }
514
+ //#endregion
515
+ export { readonlyVal as _, isPlainObject as a, I18nProvider as c, useTranslate as d, useVal as f, derive as g, compute as h, isBoolean as i, useI18n as l, combine as m, pasteVideoLink as n, isString as o, attachSetter as p, isArray as r, toPlainObject as s, getVideoLink as t, useLang as u, strictEqual as v, val as y };
@@ -1,4 +1,6 @@
1
+ import type { WorkflowBundleImportResult } from '../common/control-api.js';
1
2
  import type { FlowCatalogEvent, FlowChangeEvent } from './flow-notifications.js';
3
+ import type { WorkflowBundle } from '../common/flow-workflowBundle.js';
2
4
  import type { UiLanguage } from '../common/localization.js';
3
5
  export type { FlowCatalogEvent, FlowChangeEvent } from './flow-notifications.js';
4
6
  export type WorkbenchLanguage = UiLanguage;
@@ -64,3 +66,7 @@ export interface OpenFlowWorkbenchHandle {
64
66
  /** Opens confirmation on an idle, initialized Flow list. Invalid files notify the host. Does not create a Flow. */
65
67
  openImport(input: WorkbenchImportInput): 'opened' | 'unavailable' | 'invalid-file';
66
68
  }
69
+ /** The host must create every member using the selected destination scope. */
70
+ export type WorkflowBundleImporter = (file: WorkflowBundle, name: string, idempotencyKey: string, options?: {
71
+ readonly tagIds?: readonly string[];
72
+ }) => Promise<WorkflowBundleImportResult>;