@oomol-lab/open-flow 0.1.0-beta.65 → 0.1.0-beta.67

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 (54) hide show
  1. package/dist/browser/{createResourceDialog-BAJXbzNH.js → createResourceDialog-BQVD8Rqb.js} +2 -2
  2. package/dist/browser/{icons-Db2Jb2iX.js → dialog-CS2Vt2if.js} +5736 -5621
  3. package/dist/browser/event-sources.d.ts +4 -1
  4. package/dist/browser/flow-authoring-node.d.ts +14 -3
  5. package/dist/browser/flow-authoring.js +120 -24
  6. package/dist/browser/flow-change-schema.d.ts +3 -1
  7. package/dist/browser/flow-change.d.ts +15 -3
  8. package/dist/browser/flow-change.js +117 -21
  9. package/dist/browser/{flowChanges-DkvG5uDq.js → flowChanges-VB9Y4iy7.js} +3423 -2380
  10. package/dist/browser/{flowRunInputEditorStore-B2Rw4VsT.js → flowRunInputEditorStore-DJqmR6Qh.js} +3 -2
  11. package/dist/browser/{flowWorkspace-BEp-lxqF.js → flowWorkspace-C1hlTnZq.js} +1410 -799
  12. package/dist/browser/preview.css +273 -119
  13. package/dist/browser/preview.js +17118 -15810
  14. package/dist/browser/theme.css +1 -0
  15. package/dist/browser/ui.css +119 -7
  16. package/dist/browser/ui.js +8 -5
  17. package/dist/browser/workbench-contract.d.ts +1 -1
  18. package/dist/browser/workbench.css +282 -162
  19. package/dist/browser/workbench.d.ts +0 -1
  20. package/dist/browser/workbench.js +503 -173
  21. package/dist/browser/{workbenchSelect-C-jf6NIM.js → workbenchSelect-CpXhjUou.js} +1 -1
  22. package/dist/command/index.js +49 -49
  23. package/dist/common/authoring.d.ts +7 -5
  24. package/dist/common/authoringExamples.d.ts +4 -4
  25. package/dist/common/authoringFields.d.ts +20 -0
  26. package/dist/common/authoringSchema.d.ts +404 -15
  27. package/dist/common/control-api-conformance.js +415 -146
  28. package/dist/common/control-api.d.ts +67 -8
  29. package/dist/common/control-api.js +3587 -3443
  30. package/dist/common/control-requests.d.ts +10 -3
  31. package/dist/common/control-requests.js +425 -49
  32. package/dist/common/decision.js +33 -7
  33. package/dist/common/flow-encoding.d.ts +4 -2
  34. package/dist/common/flow-encoding.js +151 -14
  35. package/dist/common/flow-graph.d.ts +1 -1
  36. package/dist/common/flow-semantics.d.ts +12 -2
  37. package/dist/common/flow-semantics.js +157 -41
  38. package/dist/common/integration-trigger.js +33 -7
  39. package/dist/common/liveDetails.d.ts +26 -11
  40. package/dist/common/mcp.d.ts +6 -3
  41. package/dist/common/mcp.js +219 -90
  42. package/dist/common/openapi.js +33 -7
  43. package/dist/common/poll-trigger.js +33 -7
  44. package/dist/common/run-events.d.ts +2 -0
  45. package/dist/common/run-events.js +9 -3
  46. package/dist/common/scheduler.d.ts +10 -1
  47. package/dist/common/scheduler.js +172 -49
  48. package/dist/common/trigger-contract.d.ts +2 -0
  49. package/dist/common/webhook-trigger.js +33 -7
  50. package/dist/common/workflow.d.ts +93 -0
  51. package/dist/common/workflow.js +10492 -0
  52. package/package.json +5 -1
  53. package/skills/open-flow/SKILL.md +9 -0
  54. package/skills/open-flow/references/flow-authoring.md +28 -16
@@ -10,6 +10,7 @@
10
10
  --open-flow-card: #ffffff;
11
11
  --open-flow-node-surface: #f6f6f6;
12
12
  --open-flow-node-content: #ffffff;
13
+ --open-flow-node-running-beam: oklch(72.3% 0.219 149.579);
13
14
  --open-flow-comment-surface: #f3eddc;
14
15
  --open-flow-comment-content: color-mix(in srgb, var(--open-flow-comment-surface) 55%, var(--open-flow-node-content));
15
16
  --open-flow-comment-border: #e3d8ba;
@@ -97,6 +97,7 @@
97
97
  --open-flow-card: #fff;
98
98
  --open-flow-node-surface: #f6f6f6;
99
99
  --open-flow-node-content: #fff;
100
+ --open-flow-node-running-beam: oklch(72.3% .219 149.579);
100
101
  --open-flow-comment-surface: #f3eddc;
101
102
  --open-flow-comment-content: var(--open-flow-comment-surface);
102
103
  }
@@ -725,6 +726,7 @@
725
726
  --spacing: .25rem;
726
727
  --container-xs: 20rem;
727
728
  --container-sm: 24rem;
729
+ --container-md: 28rem;
728
730
  --container-lg: 32rem;
729
731
  --container-xl: 36rem;
730
732
  --container-2xl: 42rem;
@@ -1431,6 +1433,10 @@
1431
1433
  max-height: 85dvh;
1432
1434
  }
1433
1435
 
1436
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-h-\[calc\(100dvh-2rem\)\] {
1437
+ max-height: calc(100dvh - 2rem);
1438
+ }
1439
+
1434
1440
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-h-\[calc\(100dvh-32px\)\] {
1435
1441
  max-height: calc(100dvh - 32px);
1436
1442
  }
@@ -1439,6 +1445,10 @@
1439
1445
  max-height: min(40vh, 280px);
1440
1446
  }
1441
1447
 
1448
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-h-\[min\(50vh\,360px\,calc\(var\(--available-height\)-0\.5rem\)\)\] {
1449
+ max-height: min(50vh, 360px, calc(var(--available-height) - .5rem));
1450
+ }
1451
+
1442
1452
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-h-\[min\(60dvh\,480px\)\] {
1443
1453
  max-height: min(60dvh, 480px);
1444
1454
  }
@@ -1535,10 +1545,6 @@
1535
1545
  width: calc(var(--spacing) * 16);
1536
1546
  }
1537
1547
 
1538
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .w-24 {
1539
- width: calc(var(--spacing) * 24);
1540
- }
1541
-
1542
1548
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .w-28 {
1543
1549
  width: calc(var(--spacing) * 28);
1544
1550
  }
@@ -1615,6 +1621,10 @@
1615
1621
  width: max-content;
1616
1622
  }
1617
1623
 
1624
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .w-md {
1625
+ width: var(--container-md);
1626
+ }
1627
+
1618
1628
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-w-\(--available-width\) {
1619
1629
  max-width: var(--available-width);
1620
1630
  }
@@ -1639,6 +1649,10 @@
1639
1649
  max-width: calc(100% - 2rem);
1640
1650
  }
1641
1651
 
1652
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-w-\[calc\(100vw-2rem\)\] {
1653
+ max-width: calc(100vw - 2rem);
1654
+ }
1655
+
1642
1656
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .max-w-\[calc\(100vw-24px\)\] {
1643
1657
  max-width: calc(100vw - 24px);
1644
1658
  }
@@ -1883,6 +1897,10 @@
1883
1897
  grid-template-columns: minmax(0, 1fr);
1884
1898
  }
1885
1899
 
1900
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .grid-cols-\[minmax\(0\,1fr\)_380px\] {
1901
+ grid-template-columns: minmax(0, 1fr) 380px;
1902
+ }
1903
+
1886
1904
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .grid-cols-\[minmax\(0\,1fr\)_auto\] {
1887
1905
  grid-template-columns: minmax(0, 1fr) auto;
1888
1906
  }
@@ -1907,6 +1925,10 @@
1907
1925
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 520px), 1fr));
1908
1926
  }
1909
1927
 
1928
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .grid-rows-\[auto_minmax\(0\,1fr\)_auto\] {
1929
+ grid-template-rows: auto minmax(0, 1fr) auto;
1930
+ }
1931
+
1910
1932
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .grid-rows-\[minmax\(0\,1fr\)_auto\] {
1911
1933
  grid-template-rows: minmax(0, 1fr) auto;
1912
1934
  }
@@ -2427,7 +2449,17 @@
2427
2449
  }
2428
2450
  }
2429
2451
 
2430
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .bg-foreground, :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .bg-foreground\/5 {
2452
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .bg-foreground, :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .bg-foreground\/3 {
2453
+ background-color: var(--ui-foreground);
2454
+ }
2455
+
2456
+ @supports (color: color-mix(in lab, red, red)) {
2457
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .bg-foreground\/3 {
2458
+ background-color: color-mix(in oklab, var(--ui-foreground) 3%, transparent);
2459
+ }
2460
+ }
2461
+
2462
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .bg-foreground\/5 {
2431
2463
  background-color: var(--ui-foreground);
2432
2464
  }
2433
2465
 
@@ -2621,6 +2653,10 @@
2621
2653
  padding-block: calc(var(--spacing) * 2);
2622
2654
  }
2623
2655
 
2656
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .py-2\.5 {
2657
+ padding-block: calc(var(--spacing) * 2.5);
2658
+ }
2659
+
2624
2660
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .py-3 {
2625
2661
  padding-block: calc(var(--spacing) * 3);
2626
2662
  }
@@ -2717,6 +2753,10 @@
2717
2753
  padding-left: calc(var(--spacing) * 4);
2718
2754
  }
2719
2755
 
2756
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .pl-6 {
2757
+ padding-left: calc(var(--spacing) * 6);
2758
+ }
2759
+
2720
2760
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .pl-8 {
2721
2761
  padding-left: calc(var(--spacing) * 8);
2722
2762
  }
@@ -2725,6 +2765,10 @@
2725
2765
  padding-left: 22px;
2726
2766
  }
2727
2767
 
2768
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .pl-\[calc\(1\.25rem\+1em\)\] {
2769
+ padding-left: calc(1.25rem + 1em);
2770
+ }
2771
+
2728
2772
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .text-center {
2729
2773
  text-align: center;
2730
2774
  }
@@ -3252,6 +3296,10 @@
3252
3296
  cursor: pointer;
3253
3297
  }
3254
3298
 
3299
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .group-open\:rotate-90:is(:where(.group):is([open], :popover-open, :open) *) {
3300
+ rotate: 90deg;
3301
+ }
3302
+
3255
3303
  @media (hover: hover) {
3256
3304
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .group-hover\/app\:border-\[color-mix\(in_srgb\,var\(--ui-foreground\)_14\%\,var\(--ui-popover\)\)\]:is(:where(.group\/app):hover *) {
3257
3305
  border-color: var(--ui-foreground);
@@ -3726,7 +3774,17 @@
3726
3774
  }
3727
3775
  }
3728
3776
 
3729
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-foreground:hover, :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-foreground\/10:hover {
3777
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-foreground:hover, :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-foreground\/7:hover {
3778
+ background-color: var(--ui-foreground);
3779
+ }
3780
+
3781
+ @supports (color: color-mix(in lab, red, red)) {
3782
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-foreground\/7:hover {
3783
+ background-color: color-mix(in oklab, var(--ui-foreground) 7%, transparent);
3784
+ }
3785
+ }
3786
+
3787
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-foreground\/10:hover {
3730
3788
  background-color: var(--ui-foreground);
3731
3789
  }
3732
3790
 
@@ -4813,6 +4871,33 @@
4813
4871
  outline-offset: calc(-1 * var(--ui-danger-border-width, 1px));
4814
4872
  }
4815
4873
 
4874
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .data-\[slot\=select-trigger\]\:focus-visible\:text-field-focus[data-slot="select-trigger"]:focus-visible {
4875
+ outline: 2px solid var(--ui-ring);
4876
+ outline-offset: -1px;
4877
+ box-shadow: none;
4878
+ transition-property: color, background-color;
4879
+ }
4880
+
4881
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .data-\[slot\=select-trigger\]\:focus-visible\:text-field-focus[data-slot="select-trigger"]:focus-visible[readonly] {
4882
+ outline: var(--ui-readonly-focus-outline, 2px solid var(--ui-ring));
4883
+ }
4884
+
4885
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .data-\[slot\=select-trigger\]\:focus-visible\:aria-invalid\:invalid-text-field-focus[data-slot="select-trigger"]:focus-visible[aria-invalid="true"] {
4886
+ outline: 2px solid var(--ui-ring);
4887
+ outline-offset: -1px;
4888
+ box-shadow: none;
4889
+ transition-property: color, background-color;
4890
+ }
4891
+
4892
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .data-\[slot\=select-trigger\]\:focus-visible\:aria-invalid\:invalid-text-field-focus[data-slot="select-trigger"]:focus-visible[aria-invalid="true"][readonly] {
4893
+ outline: var(--ui-readonly-focus-outline, 2px solid var(--ui-ring));
4894
+ }
4895
+
4896
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .data-\[slot\=select-trigger\]\:focus-visible\:aria-invalid\:invalid-text-field-focus[data-slot="select-trigger"]:focus-visible[aria-invalid="true"] {
4897
+ outline-color: var(--ui-destructive);
4898
+ outline-offset: calc(-1 * var(--ui-danger-border-width, 1px));
4899
+ }
4900
+
4816
4901
  :is(:where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\*\:data-\[slot\=select-value\]\:line-clamp-1 > *)[data-slot="select-value"] {
4817
4902
  -webkit-line-clamp: 1;
4818
4903
  -webkit-box-orient: vertical;
@@ -5184,7 +5269,17 @@
5184
5269
  }
5185
5270
  }
5186
5271
 
5187
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-foreground:where([data-theme="dark"], [data-theme="dark"] *):hover, :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-foreground\/10:where([data-theme="dark"], [data-theme="dark"] *):hover {
5272
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-foreground:where([data-theme="dark"], [data-theme="dark"] *):hover, :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-foreground\/7:where([data-theme="dark"], [data-theme="dark"] *):hover {
5273
+ background-color: var(--ui-foreground);
5274
+ }
5275
+
5276
+ @supports (color: color-mix(in lab, red, red)) {
5277
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-foreground\/7:where([data-theme="dark"], [data-theme="dark"] *):hover {
5278
+ background-color: color-mix(in oklab, var(--ui-foreground) 7%, transparent);
5279
+ }
5280
+ }
5281
+
5282
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-foreground\/10:where([data-theme="dark"], [data-theme="dark"] *):hover {
5188
5283
  background-color: var(--ui-foreground);
5189
5284
  }
5190
5285
 
@@ -5412,6 +5507,10 @@
5412
5507
  height: calc(var(--spacing) * 4);
5413
5508
  }
5414
5509
 
5510
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker {
5511
+ display: none;
5512
+ }
5513
+
5415
5514
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\[\.border-b\]\:pb-2.border-b {
5416
5515
  padding-bottom: calc(var(--spacing) * 2);
5417
5516
  }
@@ -5754,6 +5853,19 @@
5754
5853
  font-family: inherit;
5755
5854
  }
5756
5855
 
5856
+ @supports (position-anchor: --open-flow-canvas) {
5857
+ [data-sonner-toaster].open-flow-notifications[data-sonner-theme][data-x-position="center"] {
5858
+ position-anchor: --open-flow-canvas;
5859
+ left: anchor(center, 50%);
5860
+ max-width: calc(anchor-size(width, 100%) - 24px);
5861
+ transform: translateX(-50%);
5862
+ }
5863
+
5864
+ [data-sonner-toaster].open-flow-notifications[data-sonner-theme][data-x-position="center"][data-y-position="top"] {
5865
+ top: calc(anchor(top, calc(var(--offset-top) - 16px)) + 16px);
5866
+ }
5867
+ }
5868
+
5757
5869
  [data-sonner-toaster].open-flow-notifications[data-sonner-theme] [data-sonner-toast] {
5758
5870
  transition-duration: .3s;
5759
5871
  }
@@ -19617,12 +19617,13 @@ var themeIcons = {
19617
19617
  dark: "i-lucide-light:moon",
19618
19618
  auto: "i-lucide-light:sun-moon"
19619
19619
  };
19620
+ var actionClassName = "rounded-full bg-foreground/3 text-foreground hover:bg-foreground/7 dark:hover:bg-foreground/7";
19620
19621
  /** Shared host navigation; each host owns preference storage and localized labels. */
19621
19622
  function HostNavigationActions({ className, language, onLanguageChange, theme, onThemeChange, labels }) {
19622
19623
  const themeId = useId();
19623
19624
  const languageId = useId();
19624
19625
  return /* @__PURE__ */ jsxs("div", {
19625
- className,
19626
+ className: cn("flex items-center gap-2", className),
19626
19627
  children: [
19627
19628
  /* @__PURE__ */ jsx(HostTooltip, {
19628
19629
  label: "GitHub",
@@ -19633,8 +19634,8 @@ function HostNavigationActions({ className, language, onLanguageChange, theme, o
19633
19634
  rel: "noopener noreferrer",
19634
19635
  className: buttonVariants({
19635
19636
  variant: "ghost",
19636
- size: "icon-sm",
19637
- className: "text-foreground"
19637
+ size: "icon",
19638
+ className: actionClassName
19638
19639
  }),
19639
19640
  "aria-label": "GitHub",
19640
19641
  children: /* @__PURE__ */ jsx("i", {
@@ -19647,8 +19648,9 @@ function HostNavigationActions({ className, language, onLanguageChange, theme, o
19647
19648
  label: labels.theme,
19648
19649
  side: "bottom",
19649
19650
  children: /* @__PURE__ */ jsx(Button$1, {
19651
+ className: actionClassName,
19650
19652
  variant: "ghost",
19651
- size: "icon-sm",
19653
+ size: "icon",
19652
19654
  type: "button",
19653
19655
  "aria-label": labels.theme,
19654
19656
  popovertarget: themeId,
@@ -19662,8 +19664,9 @@ function HostNavigationActions({ className, language, onLanguageChange, theme, o
19662
19664
  label: labels.language,
19663
19665
  side: "bottom",
19664
19666
  children: /* @__PURE__ */ jsx(Button$1, {
19667
+ className: actionClassName,
19665
19668
  variant: "ghost",
19666
- size: "icon-sm",
19669
+ size: "icon",
19667
19670
  type: "button",
19668
19671
  popovertarget: languageId,
19669
19672
  "aria-label": labels.language,
@@ -61,6 +61,6 @@ export interface WorkbenchImportInput {
61
61
  readonly sourceUrl?: string;
62
62
  }
63
63
  export interface OpenFlowWorkbenchHandle {
64
- /** Opens confirmation on an idle, initialized Flow list. Does not create a Flow. */
64
+ /** Opens confirmation on an idle, initialized Flow list. Invalid files notify the host. Does not create a Flow. */
65
65
  openImport(input: WorkbenchImportInput): 'opened' | 'unavailable' | 'invalid-file';
66
66
  }