@oomol-lab/open-flow 0.1.0-beta.75 → 0.1.0-beta.77

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 (146) hide show
  1. package/README.md +3 -1
  2. package/dist/browser/{ContentIcon-FCpKiwjp.js → ContentIcon-VZQO8VZU.js} +9 -6
  3. package/dist/browser/{FlowCanvas-dzRBnlUT.js → FlowCanvas-BNGDMaWr.js} +75 -63
  4. package/dist/browser/{createResourceDialog-BeYDdUl-.js → createResourceDialog-BmtakfVg.js} +63 -57
  5. package/dist/browser/{dialog-ZtpsFbl4.js → dialog-BcFBfRB1.js} +126 -32
  6. package/dist/browser/{exportSvg-DqXw1yf-.js → exportSvg-CG8hEUNk.js} +2 -2
  7. package/dist/browser/{flowChanges-b_5UobFj.js → flowChanges-BGo_4Ypo.js} +6063 -11285
  8. package/dist/browser/{flowWorkspace-ItojZbO4.js → flowWorkspace-BFHGev7s.js} +1065 -2570
  9. package/dist/browser/preview.css +626 -653
  10. package/dist/browser/preview.js +1907 -9663
  11. package/dist/browser/theme.css +117 -263
  12. package/dist/browser/{tooltip-wZJRB9oP.js → tooltip-BAWSUexx.js} +2 -2
  13. package/dist/browser/{typeScriptSession-CSRwWmZm.js → typeScriptSession-CRoezJPN.js} +1 -1
  14. package/dist/browser/ui.css +464 -463
  15. package/dist/browser/ui.js +4 -3
  16. package/dist/browser/workbench.css +9891 -9897
  17. package/dist/browser/workbench.d.ts +6 -2
  18. package/dist/browser/workbench.js +838 -499
  19. package/dist/browser/{workbenchSelect-M441Lz0d.js → workbenchSelect-CjK-xdm3.js} +2 -2
  20. package/dist/command/index.js +48 -50
  21. package/dist/common/authoring.d.ts +5 -5
  22. package/dist/common/authoringExamples.d.ts +3 -2
  23. package/dist/common/authoringSchema.d.ts +26 -4
  24. package/dist/common/connector-proxy.d.ts +1 -1
  25. package/dist/common/control-api-conformance.js +352 -144
  26. package/dist/common/control-api-errors.d.ts +12 -0
  27. package/dist/common/control-api.d.ts +38 -4
  28. package/dist/common/control-api.js +373 -162
  29. package/dist/common/control-requests.d.ts +22 -3
  30. package/dist/common/control-requests.js +268 -28
  31. package/dist/common/cron-trigger.d.ts +2 -1
  32. package/dist/common/decision.d.ts +4 -4
  33. package/dist/common/decision.js +5 -2
  34. package/dist/common/engine-contract.d.ts +6 -1
  35. package/dist/common/event-source-definition.d.ts +1 -1
  36. package/dist/common/event-source-view.d.ts +22 -0
  37. package/dist/common/event-source.d.ts +1 -1
  38. package/dist/common/event-source.js +24 -65
  39. package/dist/common/event-sources.d.ts +0 -21
  40. package/dist/common/flow-authoring.js +90 -20
  41. package/dist/common/flow-change-schema.d.ts +9 -1
  42. package/dist/common/flow-change.d.ts +8 -202
  43. package/dist/common/flow-change.js +96 -24
  44. package/dist/common/flow-encoding.js +89 -21
  45. package/dist/common/flow-input-value.d.ts +1 -1
  46. package/dist/common/flow-model.d.ts +121 -0
  47. package/dist/common/flow-notifications.d.ts +1 -1
  48. package/dist/common/flow-retry.d.ts +2 -4
  49. package/dist/common/flow-semantics.js +161 -80
  50. package/dist/common/flow-state.d.ts +123 -0
  51. package/dist/common/flow-state.js +5852 -0
  52. package/dist/common/flow-workflowReferences.d.ts +8 -0
  53. package/dist/common/flowInspection.d.ts +1 -1
  54. package/dist/common/http-hosts.d.ts +6 -0
  55. package/dist/common/http-request.d.ts +13 -5
  56. package/dist/common/http-request.js +23 -5
  57. package/dist/common/integration-trigger.d.ts +2 -1
  58. package/dist/common/mcp.d.ts +96 -3
  59. package/dist/common/mcp.js +355 -142
  60. package/dist/common/openapi.d.ts +4 -4
  61. package/dist/common/openapi.js +4 -1
  62. package/dist/common/poll-trigger.d.ts +2 -1
  63. package/dist/common/run-events.js +1 -0
  64. package/dist/common/runtime-contract.d.ts +37 -1
  65. package/dist/common/runtime-contract.js +717 -72
  66. package/dist/common/runtime-nodejs-compat.d.ts +44 -0
  67. package/dist/common/runtime-nodejs-compat.js +5870 -0
  68. package/dist/common/scheduler-checkpoint.d.ts +1 -1
  69. package/dist/common/scheduler-node-execution.d.ts +2 -1
  70. package/dist/common/scheduler.d.ts +2 -2
  71. package/dist/common/scheduler.js +76 -6
  72. package/dist/common/state-conformance.d.ts +16 -0
  73. package/dist/common/tags.d.ts +4 -0
  74. package/dist/common/trigger-catalog.d.ts +1 -7
  75. package/dist/common/trigger-config-options.d.ts +1 -1
  76. package/dist/common/trigger-config.d.ts +1 -1
  77. package/dist/common/trigger-contract.d.ts +2 -1
  78. package/dist/common/trigger-localization.d.ts +8 -2
  79. package/dist/common/trigger-model.d.ts +101 -0
  80. package/dist/common/webhook-response.d.ts +1 -1
  81. package/dist/common/webhook-trigger.d.ts +3 -1
  82. package/dist/common/workflow.d.ts +3 -12
  83. package/dist/common/workflow.js +25 -23
  84. package/dist/index.d.ts +52 -14
  85. package/package.json +9 -1
  86. package/src/base/common/json.ts +1 -1
  87. package/src/connector/common/proxy.ts +1 -1
  88. package/src/control/common/api.ts +90 -16
  89. package/src/control/common/authoring.ts +6 -1
  90. package/src/control/common/authoringExamples.ts +8 -0
  91. package/src/control/common/authoringSchema.ts +26 -13
  92. package/src/control/common/authoringTools.ts +1 -1
  93. package/src/control/common/conformance.ts +1 -1
  94. package/src/control/common/connectorDecoders.ts +1 -1
  95. package/src/control/common/errors.ts +6 -0
  96. package/src/control/common/eventSources.ts +2 -29
  97. package/src/control/common/flowDecoders.ts +1 -0
  98. package/src/control/common/mcp.ts +16 -0
  99. package/src/control/common/requests.ts +10 -2
  100. package/src/control/common/tags.ts +20 -0
  101. package/src/control/common/triggerCatalog.ts +1 -8
  102. package/src/decision/common/decision.ts +15 -7
  103. package/src/event-source/common/definition.ts +1 -1
  104. package/src/event-source/common/index.ts +1 -1
  105. package/src/event-source/common/view.ts +20 -0
  106. package/src/execution/common/checkpoint.ts +1 -1
  107. package/src/execution/common/events.ts +3 -0
  108. package/src/execution/common/node-execution.ts +4 -1
  109. package/src/execution/common/scheduler.ts +3 -1
  110. package/src/flow/common/change.ts +60 -193
  111. package/src/flow/common/changeSchema.ts +39 -4
  112. package/src/flow/common/connectionUsage.ts +1 -1
  113. package/src/flow/common/errorHandling.ts +1 -1
  114. package/src/flow/common/inputValue.ts +1 -1
  115. package/src/flow/common/model.ts +130 -0
  116. package/src/flow/common/modules.ts +1 -1
  117. package/src/flow/common/portChanges.ts +1 -1
  118. package/src/flow/common/retry.ts +2 -4
  119. package/src/flow/common/semantics.ts +31 -4
  120. package/src/flow/common/webhookResponse.ts +1 -1
  121. package/src/flow/common/workflowReferences.ts +31 -0
  122. package/src/http/common/authBindings.ts +6 -9
  123. package/src/http/common/hosts.ts +13 -0
  124. package/src/http/common/httpRequest.ts +30 -15
  125. package/src/openapi/common/openapi.ts +9 -5
  126. package/src/{execution → runtime}/common/engineContract.ts +23 -15
  127. package/src/runtime/common/nodejsCompat.ts +275 -0
  128. package/src/runtime/common/nodejsGuest.generated.json +47 -0
  129. package/src/runtime/common/runtime.ts +1254 -0
  130. package/src/state/common/conformance.ts +86 -0
  131. package/src/state/common/state.ts +169 -0
  132. package/src/trigger/common/config.ts +1 -1
  133. package/src/trigger/common/configOptions.ts +1 -1
  134. package/src/trigger/common/contract.ts +2 -1
  135. package/src/trigger/common/cron.ts +2 -1
  136. package/src/trigger/common/integration.ts +2 -1
  137. package/src/trigger/common/model.ts +87 -0
  138. package/src/trigger/common/poll.ts +2 -1
  139. package/src/trigger/common/webhook.ts +3 -1
  140. package/src/trigger/providers/fieldDescriptions.ts +1 -1
  141. package/src/trigger/providers/localization.ts +9 -2
  142. package/src/trigger/providers/remote.ts +1 -1
  143. package/src/types/index.ts +55 -15
  144. package/src/workflow/common/workflow.ts +3 -44
  145. package/src/execution/common/runtime.ts +0 -563
  146. /package/src/{control → connector}/common/providerIconSprite.ts +0 -0
package/README.md CHANGED
@@ -69,7 +69,8 @@ Source paths are not public import APIs. Source maps and declaration maps are no
69
69
  | `@oomol-lab/open-flow/flow-semantics` | [src/flow/common/semantics.ts](src/flow/common/semantics.ts) |
70
70
  | `@oomol-lab/open-flow/run-lifecycle` | [src/execution/common/runLifecycle.ts](src/execution/common/runLifecycle.ts) |
71
71
  | `@oomol-lab/open-flow/run-events` | [src/execution/common/events.ts](src/execution/common/events.ts) |
72
- | `@oomol-lab/open-flow/runtime-contract` | [src/execution/common/runtime.ts](src/execution/common/runtime.ts) |
72
+ | `@oomol-lab/open-flow/runtime-contract` | [src/runtime/common/runtime.ts](src/runtime/common/runtime.ts) |
73
+ | `@oomol-lab/open-flow/runtime-nodejs-compat` | [src/runtime/common/nodejsCompat.ts](src/runtime/common/nodejsCompat.ts) |
73
74
  | `@oomol-lab/open-flow/workflow` | [src/workflow/common/workflow.ts](src/workflow/common/workflow.ts) |
74
75
  | `@oomol-lab/open-flow/scheduler` | [src/execution/common/scheduler.ts](src/execution/common/scheduler.ts) |
75
76
  | `@oomol-lab/open-flow/webhook-trigger` | [src/trigger/common/webhook.ts](src/trigger/common/webhook.ts) |
@@ -77,6 +78,7 @@ Source paths are not public import APIs. Source maps and declaration maps are no
77
78
  | `@oomol-lab/open-flow/control-requests` | [src/control/common/requests.ts](src/control/common/requests.ts) |
78
79
  | `@oomol-lab/open-flow/decision` | [src/decision/common/decision.ts](src/decision/common/decision.ts) |
79
80
  | `@oomol-lab/open-flow/openapi` | [src/openapi/common/openapi.ts](src/openapi/common/openapi.ts) |
81
+ | `@oomol-lab/open-flow/flow-state` | [src/state/common/state.ts](src/state/common/state.ts) |
80
82
  | `@oomol-lab/open-flow/http-request` | [src/http/common/httpRequest.ts](src/http/common/httpRequest.ts) |
81
83
 
82
84
  ## License
@@ -1,5 +1,5 @@
1
1
  import { a as derive, l as val, r as combine } from "./dist-bO8nvHFH.js";
2
- import { $ as useAnchoredPopupScrollLock, An as ownerDocument, At as useTriggerDataForwarding, Bn as useValueChanged, Bt as useFloatingTree, Cr as useRenderElement, Ct as useSyncedFloatingRootContext, Dr as warn, Dt as PopupTriggerMap, Er as NOOP, Et as popupStoreSelectors, Fn as useAnimationsFinished, Fr as SafeReact, Ft as FloatingFocusManager, Gn as closePress, Gt as POPUP_COLLISION_AVOIDANCE, Hr as isLastTraversableNode, Ht as FloatingPortal, I as useCompositeListItem, Ir as useStableCallback, It as FloatingNode, Jn as imperativeAction, Jt as ReactStore, Kt as FocusGuard, Ln as transitionStatusMapping, Lr as useRefWithInit, Lt as FloatingTree, Mn as createLucideIcon, Mr as formatErrorMessage, Nn as useTransitionStatus, Nr as mergeProps, Nt as useDismiss, On as isMac, Or as useMergedRefs, Ot as useImplicitActiveTrigger, P as Separator, Pn as useOpenChangeComplete, Pr as useIsoLayoutEffect, Pt as useClick, Q as useToolbarRootContext, Qn as itemPress, Qt as fastComponentRef, Rr as getParentNode, Rt as useFloatingNodeId, Sr as clsx, St as useFocus, Tr as EMPTY_OBJECT, Tt as createInitialPopupStoreState, U as COMPOSITE_KEYS, Un as cancelOpen, Ut as CLICK_TRIGGER_IDENTIFIER, Vn as createChangeEventDetails, Vr as isHTMLElement$1, Vt as FloatingTreeStore, Wt as DROPDOWN_COLLISION_AVOIDANCE, Zt as fastComponent, _r as useControlled, _t as useRole, an as useTimeout, at as adaptiveOrigin, br as cn, bt as useHoverReferenceInteraction, cn as getTabbableBeforeElement, cr as useFormContext, ct as inertValue, dr as useBaseUiId, dt as popupStateMapping, er as none, fr as useId$1, ft as pressableTriggerOpenStateMapping, gr as visuallyHiddenInput, gt as useTypeahead, hr as visuallyHidden, ht as safePolygon, in as Timeout, ir as triggerHover, it as useAnchorPositioning, jn as Check, jr as useCompositeRootContext, jt as useTriggerRegistration, kr as useButton, kt as useOpenStateTransitions, ln as isOutsideEvent, lr as useRegisterFieldControl, lt as getPseudoElementBounds, mr as fieldValidityMapping, mt as useOpenInteractionType, nr as siblingOpen, nt as getDisabledMountTransitionStyles, on as getNextTabbable, ot as useDirection, pt as triggerOpenStateMapping, qn as focusOut, rn as useOnFirstRender, rt as InternalBackdrop, sn as getTabbableAfterElement, sr as useLabelableContext, st as CompositeList, tn as createSelector, tt as usePositioner, ur as useFieldRootContext, vr as Button, vt as useListNavigation, wn as contains, wr as EMPTY_ARRAY, xt as useHoverFloatingInteraction, yt as useInteractions, zn as useOnMount, zt as useFloatingParentNodeId } from "./tooltip-wZJRB9oP.js";
2
+ import { $ as useToolbarRootContext, $n as itemPress, $t as fastComponentRef, Ar as useButton, At as useOpenStateTransitions, Bn as useOnMount, Bt as useFloatingParentNodeId, Cr as clsx, Ct as useFocus, Dr as NOOP, Dt as popupStoreSelectors, Er as EMPTY_OBJECT, Et as createInitialPopupStoreState, F as Separator, Fn as useOpenChangeComplete, Fr as useIsoLayoutEffect, Ft as useClick, Gt as DROPDOWN_COLLISION_AVOIDANCE, Hn as createChangeEventDetails, Hr as isHTMLElement$1, Ht as FloatingTreeStore, In as useAnimationsFinished, Ir as SafeReact, It as FloatingFocusManager, Jn as focusOut, Kn as closePress, Kt as POPUP_COLLISION_AVOIDANCE, L as useCompositeListItem, Lr as useStableCallback, Lt as FloatingNode, Mn as Check, Mr as useCompositeRootContext, Mt as useTriggerRegistration, Nn as createLucideIcon, Nr as formatErrorMessage, Or as warn, Ot as PopupTriggerMap, Pn as useTransitionStatus, Pr as mergeProps, Pt as useDismiss, Qt as fastComponent, Rn as transitionStatusMapping, Rr as useRefWithInit, Rt as FloatingTree, St as useHoverFloatingInteraction, Tn as contains, Tr as EMPTY_ARRAY, Ur as isLastTraversableNode, Ut as FloatingPortal, Vn as useValueChanged, Vt as useFloatingTree, W as COMPOSITE_KEYS, Wn as cancelOpen, Wt as CLICK_TRIGGER_IDENTIFIER, Yn as imperativeAction, Yt as ReactStore, _r as visuallyHiddenInput, _t as useTypeahead, an as Timeout, ar as triggerHover, at as useAnchorPositioning, bt as useInteractions, cn as getTabbableAfterElement, cr as useLabelableContext, ct as CompositeList, dr as useFieldRootContext, et as useAnchoredPopupScrollLock, fr as useBaseUiId, ft as popupStateMapping, gr as visuallyHidden, gt as safePolygon, hr as fieldValidityMapping, ht as useOpenInteractionType, in as useOnFirstRender, it as InternalBackdrop, jn as ownerDocument, jt as useTriggerDataForwarding, kn as isMac, kr as useMergedRefs, kt as useImplicitActiveTrigger, ln as getTabbableBeforeElement, lr as useFormContext, lt as inertValue, mt as triggerOpenStateMapping, nn as createSelector, nt as usePositioner, on as useTimeout, ot as adaptiveOrigin, pr as useId$1, pt as pressableTriggerOpenStateMapping, qt as FocusGuard, rr as siblingOpen, rt as getDisabledMountTransitionStyles, sn as getNextTabbable, st as useDirection, tr as none, un as isOutsideEvent, ur as useRegisterFieldControl, ut as getPseudoElementBounds, vr as useControlled, vt as useRole, wr as useRenderElement, wt as useSyncedFloatingRootContext, xr as cn, xt as useHoverReferenceInteraction, yr as Button, yt as useListNavigation, zr as getParentNode, zt as useFloatingNodeId } from "./tooltip-BAWSUexx.js";
3
3
  import * as React from "react";
4
4
  import reactExports, { createContext, forwardRef, memo, useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -436,7 +436,7 @@ function Checkbox({ className, indeterminate, ...props }) {
436
436
  });
437
437
  }
438
438
  //#endregion
439
- //#region src/control/common/providerIconSprite.ts
439
+ //#region src/connector/common/providerIconSprite.ts
440
440
  /** Optional artwork must never make an otherwise usable catalog unavailable. */
441
441
  function providerIconAppearance(metadata, position) {
442
442
  if (!metadata || typeof metadata != "object" || !position || typeof position != "object") return {};
@@ -11740,6 +11740,8 @@ function useSpriteStatus(url) {
11740
11740
  //#region src/ui/browser/icons/ContentIcon.tsx
11741
11741
  /** Standalone image capture uses individual, cross-origin-readable images instead of sprites. */
11742
11742
  var IconImageCrossOriginContext = createContext(void 0);
11743
+ /** A bundled, theme-aware placeholder that does not load a remote icon. */
11744
+ var placeholderIcon = "data:application/vnd.open-flow.placeholder-icon,";
11743
11745
  var ContentIcon = ({ src, className, fallback = null, loading = "lazy", decoding = "async" }) => {
11744
11746
  const crossOrigin = useContext(IconImageCrossOriginContext);
11745
11747
  const sprite = useMemo(() => parseSpriteIcon(src), [src]);
@@ -11761,6 +11763,10 @@ var ContentIcon = ({ src, className, fallback = null, loading = "lazy", decoding
11761
11763
  decoding,
11762
11764
  sprite
11763
11765
  });
11766
+ if (source === "data:application/vnd.open-flow.placeholder-icon,") return /* @__PURE__ */ jsx("i", {
11767
+ "aria-hidden": "true",
11768
+ className: clsx("i-lucide-light:plug", className)
11769
+ });
11764
11770
  if (source?.startsWith(initialsIconPrefix)) {
11765
11771
  if (crossOrigin && fallback != null) return /* @__PURE__ */ jsx(Fragment$1, { children: fallback });
11766
11772
  return /* @__PURE__ */ jsx("span", {
@@ -11797,9 +11803,6 @@ var ContentIcon = ({ src, className, fallback = null, loading = "lazy", decoding
11797
11803
  });
11798
11804
  };
11799
11805
  var initialsIconPrefix = "data:application/vnd.open-flow.initials,";
11800
- function initialsIcon(initials) {
11801
- return `${initialsIconPrefix}${initials}`;
11802
- }
11803
11806
  var imageIconPrefix = "data:application/vnd.open-flow.image-icon+json,";
11804
11807
  function imageIcon(source, fallback) {
11805
11808
  return `${imageIconPrefix}${encodeURIComponent(JSON.stringify({
@@ -11874,4 +11877,4 @@ function SpriteIcon({ sprite, ...props }) {
11874
11877
  });
11875
11878
  }
11876
11879
  //#endregion
11877
- export { ko_default$1 as $, DropdownMenuSub as A, MenuPopup as B, DropdownMenuContent as C, DropdownMenuRadioGroup as D, DropdownMenuLabel as E, findRootOwnerId as F, MenuRootContext as G, MenuGroup as H, useCompositeItem as I, waitBranchDescription as J, useMenuRootContext as K, MenuRoot as L, DropdownMenuSubTrigger as M, DropdownMenuTrigger as N, DropdownMenuRadioItem as O, isElementDisabled as P, ru_default$1 as Q, MenuPositioner as R, DropdownMenuCheckboxItem as S, DropdownMenuItem as T, ContextMenuRootContext as U, MenuItem as V, useContextMenuRootContext as W, zh_TW_default$1 as X, waitBranchLocales as Y, zh_CN_default$1 as Z, NativeScrollArea as _, spriteIcon as a, Checkbox as at, Z as b, useIconifyData as c, PopoverContent as d, ja_default$1 as et, PopoverDescription as f, PopoverTrigger as g, PopoverTitle as h, initialsIcon as i, providerIconAppearance as it, DropdownMenuSubContent as j, DropdownMenuSeparator as k, wrapLayout as l, PopoverPanelContent as m, IconImageCrossOriginContext as n, en_default$1 as nt, IconifyProvider as o, useAriaLabelledBy as ot, PopoverHeader as p, uiLocales as q, imageIcon as r, I18n as rt, useIconifyCollectionLoader as s, IconThemeContext as st, ContentIcon as t, fr_default$1 as tt, Popover as u, ScrollArea as v, DropdownMenuGroup as w, DropdownMenu as x, VirtualScrollArea as y, MenuPortal as z };
11880
+ export { ko_default$1 as $, DropdownMenuSub as A, MenuPopup as B, DropdownMenuContent as C, DropdownMenuRadioGroup as D, DropdownMenuLabel as E, findRootOwnerId as F, MenuRootContext as G, MenuGroup as H, useCompositeItem as I, waitBranchDescription as J, useMenuRootContext as K, MenuRoot as L, DropdownMenuSubTrigger as M, DropdownMenuTrigger as N, DropdownMenuRadioItem as O, isElementDisabled as P, ru_default$1 as Q, MenuPositioner as R, DropdownMenuCheckboxItem as S, DropdownMenuItem as T, ContextMenuRootContext as U, MenuItem as V, useContextMenuRootContext as W, zh_TW_default$1 as X, waitBranchLocales as Y, zh_CN_default$1 as Z, NativeScrollArea as _, spriteIcon as a, Checkbox as at, Z as b, useIconifyData as c, PopoverContent as d, ja_default$1 as et, PopoverDescription as f, PopoverTrigger as g, PopoverTitle as h, placeholderIcon as i, providerIconAppearance as it, DropdownMenuSubContent as j, DropdownMenuSeparator as k, wrapLayout as l, PopoverPanelContent as m, IconImageCrossOriginContext as n, en_default$1 as nt, IconifyProvider as o, useAriaLabelledBy as ot, PopoverHeader as p, uiLocales as q, imageIcon as r, I18n as rt, useIconifyCollectionLoader as s, IconThemeContext as st, ContentIcon as t, fr_default$1 as tt, Popover as u, ScrollArea as v, DropdownMenuGroup as w, DropdownMenu as x, VirtualScrollArea as y, MenuPortal as z };
@@ -1,8 +1,8 @@
1
1
  import { o as __toESM, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
2
- import { $ as ko_default, B as MenuPopup, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, F as findRootOwnerId, G as MenuRootContext, H as MenuGroup, J as waitBranchDescription, K as useMenuRootContext, L as MenuRoot, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, Q as ru_default, R as MenuPositioner, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, U as ContextMenuRootContext, V as MenuItem, W as useContextMenuRootContext, X as zh_TW_default, Z as zh_CN_default, _ as NativeScrollArea, at as Checkbox, d as PopoverContent, et as ja_default, g as PopoverTrigger, h as PopoverTitle, k as DropdownMenuSeparator, l as wrapLayout, nt as en_default, q as uiLocales, rt as I18n, st as IconThemeContext, t as ContentIcon, tt as fr_default, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, z as MenuPortal } from "./ContentIcon-FCpKiwjp.js";
2
+ import { $ as ko_default, B as MenuPopup, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, F as findRootOwnerId, G as MenuRootContext, H as MenuGroup, J as waitBranchDescription, K as useMenuRootContext, L as MenuRoot, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, Q as ru_default, R as MenuPositioner, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, U as ContextMenuRootContext, V as MenuItem, W as useContextMenuRootContext, X as zh_TW_default, Z as zh_CN_default, _ as NativeScrollArea, at as Checkbox, d as PopoverContent, et as ja_default, g as PopoverTrigger, h as PopoverTitle, k as DropdownMenuSeparator, l as wrapLayout, nt as en_default, q as uiLocales, rt as I18n, st as IconThemeContext, t as ContentIcon, tt as fr_default, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, z as MenuPortal } from "./ContentIcon-VZQO8VZU.js";
3
3
  import { a as derive, c as strictEqual, i as compute, l as val, n as attachSetter, r as combine, s as readonlyVal } from "./dist-bO8nvHFH.js";
4
4
  import { c as useLang, i as isString, l as useTranslate, n as isBoolean, o as I18nProvider, r as isPlainObject, t as isArray$1, u as useVal } from "./dist-BFmpkX4P.js";
5
- import { $t as require_with_selector, A as string, An as ownerDocument, C as literal, Cr as useRenderElement, Mn as createLucideIcon, Sr as clsx, T as number, Tn as getTarget, Un as cancelOpen, Vn as createChangeEventDetails, an as useTimeout, ar as triggerPress, bn as stopEvent$1, br as cn$1, fr as useId$1, ft as pressableTriggerOpenStateMapping, i as TooltipTrigger, k as strictObject, n as TooltipContent, p as timeZoneOffsetMinutes, qt as addEventListener, r as TooltipProvider, t as Tooltip, vr as Button, wn as contains, y as discriminatedUnion } from "./tooltip-wZJRB9oP.js";
5
+ import { A as strictObject, Cr as clsx, E as number, En as getTarget, Hn as createChangeEventDetails, Jt as addEventListener, Nn as createLucideIcon, Tn as contains, Wn as cancelOpen, b as discriminatedUnion, en as require_with_selector, i as TooltipTrigger, j as string, jn as ownerDocument, n as TooltipContent, on as useTimeout, or as triggerPress, p as timeZoneOffsetMinutes, pr as useId$1, pt as pressableTriggerOpenStateMapping, r as TooltipProvider, t as Tooltip, w as literal, wr as useRenderElement, xn as stopEvent$1, xr as cn$1, yr as Button } from "./tooltip-BAWSUexx.js";
6
6
  import { r as resolveUiLanguage } from "./languages-gYzoQqCi.js";
7
7
  import * as React from "react";
8
8
  import reactExports, { Children, Suspense, createContext, forwardRef, isValidElement, lazy, memo, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
@@ -18636,33 +18636,33 @@ function IconStack({ icons, count, limit = 3, size = "default", countClassName }
18636
18636
  });
18637
18637
  }
18638
18638
  var CanvasCard_module_default = {
18639
- card: "CanvasCard_card_56d5c",
18640
- value: "CanvasCard_value_56d5c",
18641
- preview: "CanvasCard_preview_56d5c",
18642
- comment: "CanvasCard_comment_56d5c",
18643
- selected: "CanvasCard_selected_56d5c",
18644
- problem: "CanvasCard_problem_56d5c",
18645
- runningBeam: "CanvasCard_runningBeam_56d5c",
18646
- "running-beam": "CanvasCard_running-beam_56d5c",
18647
- header: "CanvasCard_header_56d5c",
18648
- icon: "CanvasCard_icon_56d5c",
18649
- identity: "CanvasCard_identity_56d5c",
18650
- indicator: "CanvasCard_indicator_56d5c",
18651
- warning: "CanvasCard_warning_56d5c",
18652
- danger: "CanvasCard_danger_56d5c",
18653
- content: "CanvasCard_content_56d5c",
18654
- footer: "CanvasCard_footer_56d5c",
18655
- afterPreview: "CanvasCard_afterPreview_56d5c",
18656
- branches: "CanvasCard_branches_56d5c",
18657
- collapse: "CanvasCard_collapse_56d5c",
18658
- collapseInner: "CanvasCard_collapseInner_56d5c",
18659
- compactIdentity: "CanvasCard_compactIdentity_56d5c",
18660
- compact: "CanvasCard_compact_56d5c",
18661
- withBody: "CanvasCard_withBody_56d5c",
18662
- compactContent: "CanvasCard_compactContent_56d5c",
18663
- singleContent: "CanvasCard_singleContent_56d5c",
18664
- subtitle: "CanvasCard_subtitle_56d5c",
18665
- fill: "CanvasCard_fill_56d5c"
18639
+ card: "CanvasCard_card_77a06",
18640
+ value: "CanvasCard_value_77a06",
18641
+ preview: "CanvasCard_preview_77a06",
18642
+ comment: "CanvasCard_comment_77a06",
18643
+ selected: "CanvasCard_selected_77a06",
18644
+ problem: "CanvasCard_problem_77a06",
18645
+ runningBeam: "CanvasCard_runningBeam_77a06",
18646
+ "running-beam": "CanvasCard_running-beam_77a06",
18647
+ header: "CanvasCard_header_77a06",
18648
+ icon: "CanvasCard_icon_77a06",
18649
+ identity: "CanvasCard_identity_77a06",
18650
+ indicator: "CanvasCard_indicator_77a06",
18651
+ warning: "CanvasCard_warning_77a06",
18652
+ danger: "CanvasCard_danger_77a06",
18653
+ content: "CanvasCard_content_77a06",
18654
+ footer: "CanvasCard_footer_77a06",
18655
+ afterPreview: "CanvasCard_afterPreview_77a06",
18656
+ branches: "CanvasCard_branches_77a06",
18657
+ collapse: "CanvasCard_collapse_77a06",
18658
+ collapseInner: "CanvasCard_collapseInner_77a06",
18659
+ compactIdentity: "CanvasCard_compactIdentity_77a06",
18660
+ compact: "CanvasCard_compact_77a06",
18661
+ withBody: "CanvasCard_withBody_77a06",
18662
+ compactContent: "CanvasCard_compactContent_77a06",
18663
+ singleContent: "CanvasCard_singleContent_77a06",
18664
+ subtitle: "CanvasCard_subtitle_77a06",
18665
+ fill: "CanvasCard_fill_77a06"
18666
18666
  };
18667
18667
  //#endregion
18668
18668
  //#region src/ui/browser/hooks.ts
@@ -20230,18 +20230,18 @@ function CommentResizeButton({ store }) {
20230
20230
  });
20231
20231
  }
20232
20232
  var NodeHead_module_default = {
20233
- container: "NodeHead_container_56ebb",
20234
- title: "NodeHead_title_56ebb",
20235
- connection: "NodeHead_connection_56ebb",
20236
- menu: "NodeHead_menu_56ebb",
20237
- menuButton: "NodeHead_menuButton_56ebb",
20238
- commentIcon: "NodeHead_commentIcon_56ebb",
20239
- errorIcon: "NodeHead_errorIcon_56ebb",
20240
- blockSettings: "NodeHead_blockSettings_56ebb",
20241
- floatBar: "NodeHead_floatBar_56ebb",
20242
- floatBarButton: "NodeHead_floatBarButton_56ebb",
20243
- nodeIcon: "NodeHead_nodeIcon_56ebb",
20244
- action: "NodeHead_action_56ebb"
20233
+ container: "NodeHead_container_e9871",
20234
+ title: "NodeHead_title_e9871",
20235
+ connection: "NodeHead_connection_e9871",
20236
+ menu: "NodeHead_menu_e9871",
20237
+ menuButton: "NodeHead_menuButton_e9871",
20238
+ commentIcon: "NodeHead_commentIcon_e9871",
20239
+ errorIcon: "NodeHead_errorIcon_e9871",
20240
+ blockSettings: "NodeHead_blockSettings_e9871",
20241
+ floatBar: "NodeHead_floatBar_e9871",
20242
+ floatBarButton: "NodeHead_floatBarButton_e9871",
20243
+ nodeIcon: "NodeHead_nodeIcon_e9871",
20244
+ action: "NodeHead_action_e9871"
20245
20245
  };
20246
20246
  var input_module_default = {
20247
20247
  input: "input_input_b8701",
@@ -20452,6 +20452,9 @@ function CommentTitle({ store }) {
20452
20452
  });
20453
20453
  }
20454
20454
  //#endregion
20455
+ //#region src/canvas/browser/nodeActions.tsx
20456
+ var NodeHistoryContext = createContext(void 0);
20457
+ //#endregion
20455
20458
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/context-menu/root/ContextMenuRoot.js
20456
20459
  /**
20457
20460
  * A component that creates a context menu activated by right clicking or long pressing.
@@ -20713,7 +20716,16 @@ function NodeHeadContextMenu({ canvasStore, children }) {
20713
20716
  function useNodeMenuItems({ t, nodeStore, onDelete, editable }) {
20714
20717
  const skip = useVal(NodeStore.to(nodeStore)?.ignore);
20715
20718
  const { duplicateNode } = nodeStore;
20719
+ const history = useContext(NodeHistoryContext)?.(nodeStore.nodeId);
20716
20720
  return coalesce([
20721
+ history && {
20722
+ ...history,
20723
+ key: "$history",
20724
+ icon: /* @__PURE__ */ jsx("i", {
20725
+ "aria-hidden": "true",
20726
+ className: "i-lucide-light:database"
20727
+ })
20728
+ },
20717
20729
  editable && duplicateNode && {
20718
20730
  label: t("nodeActions.duplicate"),
20719
20731
  key: "$duplicate",
@@ -21227,27 +21239,27 @@ var fitViewOptions = {
21227
21239
  maxZoom: 1
21228
21240
  };
21229
21241
  var ReactFlowContainer_module_default = {
21230
- container: "ReactFlowContainer_container_ebe22",
21231
- flow: "ReactFlowContainer_flow_ebe22",
21232
- contextMenu: "ReactFlowContainer_contextMenu_ebe22",
21233
- movingLayout: "ReactFlowContainer_movingLayout_ebe22",
21234
- layoutPending: "ReactFlowContainer_layoutPending_ebe22",
21235
- dock: "ReactFlowContainer_dock_ebe22",
21236
- viewDock: "ReactFlowContainer_viewDock_ebe22",
21237
- expandedViewControls: "ReactFlowContainer_expandedViewControls_ebe22",
21238
- viewOptionButtons: "ReactFlowContainer_viewOptionButtons_ebe22",
21239
- compactViewControls: "ReactFlowContainer_compactViewControls_ebe22",
21240
- createDock: "ReactFlowContainer_createDock_ebe22",
21241
- zoomValue: "ReactFlowContainer_zoomValue_ebe22",
21242
- interactiveModeTrigger: "ReactFlowContainer_interactiveModeTrigger_ebe22",
21243
- interactiveModePanel: "ReactFlowContainer_interactiveModePanel_ebe22",
21244
- interactiveModeChoices: "ReactFlowContainer_interactiveModeChoices_ebe22",
21245
- interactiveModeChoice: "ReactFlowContainer_interactiveModeChoice_ebe22",
21246
- dockActions: "ReactFlowContainer_dockActions_ebe22",
21247
- miniMap: "ReactFlowContainer_miniMap_ebe22",
21248
- viewOptions: "ReactFlowContainer_viewOptions_ebe22",
21249
- viewOptionsClip: "ReactFlowContainer_viewOptionsClip_ebe22",
21250
- viewSeparator: "ReactFlowContainer_viewSeparator_ebe22"
21242
+ container: "ReactFlowContainer_container_b3d0e",
21243
+ flow: "ReactFlowContainer_flow_b3d0e",
21244
+ contextMenu: "ReactFlowContainer_contextMenu_b3d0e",
21245
+ movingLayout: "ReactFlowContainer_movingLayout_b3d0e",
21246
+ layoutPending: "ReactFlowContainer_layoutPending_b3d0e",
21247
+ dock: "ReactFlowContainer_dock_b3d0e",
21248
+ viewDock: "ReactFlowContainer_viewDock_b3d0e",
21249
+ expandedViewControls: "ReactFlowContainer_expandedViewControls_b3d0e",
21250
+ viewOptionButtons: "ReactFlowContainer_viewOptionButtons_b3d0e",
21251
+ compactViewControls: "ReactFlowContainer_compactViewControls_b3d0e",
21252
+ createDock: "ReactFlowContainer_createDock_b3d0e",
21253
+ zoomValue: "ReactFlowContainer_zoomValue_b3d0e",
21254
+ interactiveModeTrigger: "ReactFlowContainer_interactiveModeTrigger_b3d0e",
21255
+ interactiveModePanel: "ReactFlowContainer_interactiveModePanel_b3d0e",
21256
+ interactiveModeChoices: "ReactFlowContainer_interactiveModeChoices_b3d0e",
21257
+ interactiveModeChoice: "ReactFlowContainer_interactiveModeChoice_b3d0e",
21258
+ dockActions: "ReactFlowContainer_dockActions_b3d0e",
21259
+ miniMap: "ReactFlowContainer_miniMap_b3d0e",
21260
+ viewOptions: "ReactFlowContainer_viewOptions_b3d0e",
21261
+ viewOptionsClip: "ReactFlowContainer_viewOptionsClip_b3d0e",
21262
+ viewSeparator: "ReactFlowContainer_viewSeparator_b3d0e"
21251
21263
  };
21252
21264
  //#endregion
21253
21265
  //#region src/canvas/browser/addItemDrag.ts
@@ -22703,4 +22715,4 @@ var FlowCanvas = ({ flowCanvasStore, annotationContext, onActivateSelection, onS
22703
22715
  });
22704
22716
  };
22705
22717
  //#endregion
22706
- export { isSameViewport as C, isMac as S, CanvasTooltip as _, collapseAllNested as a, toManifestHandleName as b, defaultTriggerIcon as c, selectableTimeZones as d, timeZoneLabel as f, E as g, cronDescription as h, JSONViewer as i, useDebouncedValue as l, timeZoneOffset as m, setAddItemId as n, formatDuration as o, timeZoneLongLabel as p, Textarea as r, CanvasNodeIcon as s, FlowCanvas as t, IconStack as u, CanvasStore as v, toManifestNodeId as x, toViewEdge as y };
22718
+ export { isMac as C, toManifestNodeId as S, E as _, JSONViewer as a, toViewEdge as b, CanvasNodeIcon as c, IconStack as d, selectableTimeZones as f, cronDescription as g, timeZoneOffset as h, Textarea as i, defaultTriggerIcon as l, timeZoneLongLabel as m, setAddItemId as n, collapseAllNested as o, timeZoneLabel as p, NodeHistoryContext as r, formatDuration as s, FlowCanvas as t, useDebouncedValue as u, CanvasTooltip as v, isSameViewport as w, toManifestHandleName as x, CanvasStore as y };
@@ -1,14 +1,15 @@
1
1
  import { l as useTranslate } from "./dist-BFmpkX4P.js";
2
- import { vr as Button } from "./tooltip-wZJRB9oP.js";
3
- import { Qt as Input, a as DialogFooter, d as Field, f as FieldDescription, h as FieldLabel, i as DialogDescription, l as Icon, m as FieldGroup, n as DialogClose, o as DialogHeader, p as FieldError, r as DialogContent, s as DialogTitle, t as Dialog, u as Spinner } from "./dialog-ZtpsFbl4.js";
4
- import { t as WorkbenchSelect } from "./workbenchSelect-M441Lz0d.js";
2
+ import { yr as Button } from "./tooltip-BAWSUexx.js";
3
+ import { a as DialogFooter, d as Field, f as FieldDescription, h as FieldLabel, i as DialogDescription, l as Icon, m as FieldGroup, n as DialogClose, nn as Input, o as DialogHeader, p as FieldError, r as DialogContent, s as DialogTitle, t as Dialog, u as Spinner } from "./dialog-BcFBfRB1.js";
4
+ import { t as WorkbenchSelect } from "./workbenchSelect-CjK-xdm3.js";
5
5
  import { useEffect, useRef, useState } from "react";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/workbench/browser/runtime/shell/createResourceDialog.tsx
8
- function CreateResourceDialog({ disabled, field, id, issue, label, name, onNameChange, onOpenChange, onSubmit, pending, submitLabel, sourceUrl, title }) {
8
+ function CreateResourceDialog({ disabled, tagField, field, id, issue, label, name, onNameChange, onOpenChange, onSubmit, pending, submitLabel, sourceUrl, title }) {
9
9
  const t = useTranslate();
10
10
  const input = useRef(null);
11
11
  const portal = useRef(null);
12
+ const [root, setRoot] = useState(null);
12
13
  const [open, setOpen] = useState(false);
13
14
  const showIssue = name.length > 0 && issue != null;
14
15
  const message = showIssue ? t(`resource.nameIssue.${issue}`, { max: 80 }) : t("resource.nameHint", { max: 80 });
@@ -27,6 +28,7 @@ function CreateResourceDialog({ disabled, field, id, issue, label, name, onNameC
27
28
  },
28
29
  open,
29
30
  children: /* @__PURE__ */ jsx(DialogContent, {
31
+ ref: setRoot,
30
32
  container: portal.current,
31
33
  initialFocus: () => input.current,
32
34
  showCloseButton: false,
@@ -56,63 +58,67 @@ function CreateResourceDialog({ disabled, field, id, issue, label, name, onNameC
56
58
  })] }),
57
59
  /* @__PURE__ */ jsxs(FieldGroup, {
58
60
  className: "gap-4",
59
- children: [/* @__PURE__ */ jsxs(Field, {
60
- "data-invalid": showIssue,
61
- children: [
62
- /* @__PURE__ */ jsx(FieldLabel, {
63
- htmlFor: id,
64
- children: label
65
- }),
66
- /* @__PURE__ */ jsx(Input, {
67
- autoComplete: "off",
68
- "aria-describedby": messageId,
69
- "aria-invalid": showIssue,
70
- id,
71
- name: "resource-name",
72
- onChange: (event) => onNameChange(event.target.value),
73
- ref: input,
74
- required: true,
75
- value: name
76
- }),
77
- showIssue ? /* @__PURE__ */ jsx(FieldError, {
78
- id: messageId,
79
- children: message
80
- }) : /* @__PURE__ */ jsx(FieldDescription, {
81
- id: messageId,
82
- children: message
83
- })
84
- ]
85
- }), field != null && /* @__PURE__ */ jsxs(Field, { children: [
86
- /* @__PURE__ */ jsx(FieldLabel, {
87
- htmlFor: field.state == "ready" ? fieldId : void 0,
88
- children: field.label
89
- }),
90
- field.state == "ready" ? /* @__PURE__ */ jsx(WorkbenchSelect, {
91
- ariaLabel: field.ariaLabel,
92
- className: "w-full",
93
- id: fieldId,
94
- onValueChange: field.onValueChange,
95
- options: field.options,
96
- portalRoot: portal.current,
97
- value: field.value
98
- }) : /* @__PURE__ */ jsxs("div", {
99
- className: "flex min-h-9 items-center gap-2 rounded-lg border bg-muted/30 px-3 py-2 text-sm text-muted-foreground",
100
- role: field.state == "error" ? "alert" : "status",
61
+ children: [
62
+ /* @__PURE__ */ jsxs(Field, {
63
+ "data-invalid": showIssue,
101
64
  children: [
102
- field.state == "loading" && /* @__PURE__ */ jsx(Spinner, { "aria-hidden": "true" }),
103
- /* @__PURE__ */ jsx("span", { children: field.status }),
104
- field.state == "error" && /* @__PURE__ */ jsx(Button, {
105
- className: "ml-auto bg-background",
106
- onClick: field.onRetry,
107
- size: "sm",
108
- type: "button",
109
- variant: "outline",
110
- children: field.retry
65
+ /* @__PURE__ */ jsx(FieldLabel, {
66
+ htmlFor: id,
67
+ children: label
68
+ }),
69
+ /* @__PURE__ */ jsx(Input, {
70
+ autoComplete: "off",
71
+ "aria-describedby": messageId,
72
+ "aria-invalid": showIssue,
73
+ id,
74
+ name: "resource-name",
75
+ onChange: (event) => onNameChange(event.target.value),
76
+ ref: input,
77
+ required: true,
78
+ value: name
79
+ }),
80
+ showIssue ? /* @__PURE__ */ jsx(FieldError, {
81
+ id: messageId,
82
+ children: message
83
+ }) : /* @__PURE__ */ jsx(FieldDescription, {
84
+ id: messageId,
85
+ children: message
111
86
  })
112
87
  ]
113
88
  }),
114
- /* @__PURE__ */ jsx(FieldDescription, { children: field.description })
115
- ] })]
89
+ tagField?.(root),
90
+ field != null && /* @__PURE__ */ jsxs(Field, { children: [
91
+ /* @__PURE__ */ jsx(FieldLabel, {
92
+ htmlFor: field.state == "ready" ? fieldId : void 0,
93
+ children: field.label
94
+ }),
95
+ field.state == "ready" ? /* @__PURE__ */ jsx(WorkbenchSelect, {
96
+ ariaLabel: field.ariaLabel,
97
+ className: "w-full",
98
+ id: fieldId,
99
+ onValueChange: field.onValueChange,
100
+ options: field.options,
101
+ portalRoot: root,
102
+ value: field.value
103
+ }) : /* @__PURE__ */ jsxs("div", {
104
+ className: "flex min-h-9 items-center gap-2 rounded-lg border bg-muted/30 px-3 py-2 text-sm text-muted-foreground",
105
+ role: field.state == "error" ? "alert" : "status",
106
+ children: [
107
+ field.state == "loading" && /* @__PURE__ */ jsx(Spinner, { "aria-hidden": "true" }),
108
+ /* @__PURE__ */ jsx("span", { children: field.status }),
109
+ field.state == "error" && /* @__PURE__ */ jsx(Button, {
110
+ className: "ml-auto bg-background",
111
+ onClick: field.onRetry,
112
+ size: "sm",
113
+ type: "button",
114
+ variant: "outline",
115
+ children: field.retry
116
+ })
117
+ ]
118
+ }),
119
+ /* @__PURE__ */ jsx(FieldDescription, { children: field.description })
120
+ ] })
121
+ ]
116
122
  }),
117
123
  /* @__PURE__ */ jsxs(DialogFooter, {
118
124
  className: "mx-0 mb-0 border-0 bg-transparent p-0 pt-1",