@oomol-lab/open-flow 0.1.0-beta.62 → 0.1.0-beta.64

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 (55) hide show
  1. package/dist/browser/{createResourceDialog-DZgJsr3e.js → createResourceDialog-BAJXbzNH.js} +20 -7
  2. package/dist/browser/flow-authoring.js +8 -7
  3. package/dist/browser/flow-change-schema.d.ts +1 -0
  4. package/dist/browser/flow-change.d.ts +1 -0
  5. package/dist/browser/flow-change.js +8 -7
  6. package/dist/browser/flow-notifications.d.ts +6 -0
  7. package/dist/browser/{flowChanges-CzYIVevI.js → flowChanges-BAMkSaKF.js} +1771 -1331
  8. package/dist/browser/{flowRunInputEditorStore-Dsxyfwae.js → flowRunInputEditorStore-B2Rw4VsT.js} +1 -1
  9. package/dist/browser/{flowWorkspace-BgZaFKZm.js → flowWorkspace-DxLc1Ybv.js} +429 -205
  10. package/dist/browser/{icons-CajfDpy_.js → icons-Db2Jb2iX.js} +30 -10
  11. package/dist/browser/preview.css +40 -52
  12. package/dist/browser/preview.js +7752 -7452
  13. package/dist/browser/theme.css +4 -0
  14. package/dist/browser/{typeScriptSession-fXPMFGjW.js → typeScriptSession-D0bjYDeg.js} +1 -1
  15. package/dist/browser/ui.css +39 -51
  16. package/dist/browser/ui.js +5 -5
  17. package/dist/browser/{value-DL_poNiC.js → value-BADHeZ9I.js} +12 -1
  18. package/dist/browser/workbench-contract.d.ts +10 -0
  19. package/dist/browser/workbench.css +43 -59
  20. package/dist/browser/workbench.d.ts +5 -3
  21. package/dist/browser/workbench.js +255 -216
  22. package/dist/browser/{workbenchSelect-H9wzEFkH.js → workbenchSelect-C-jf6NIM.js} +1 -1
  23. package/dist/command/index.js +49 -48
  24. package/dist/common/authoringSchema.d.ts +1 -0
  25. package/dist/common/canvas-commands.d.ts +19 -0
  26. package/dist/common/connector-action.d.ts +1 -0
  27. package/dist/common/connector-action.js +15 -12
  28. package/dist/common/control-api-conformance.js +127 -8
  29. package/dist/common/control-api.d.ts +16 -0
  30. package/dist/common/control-api.js +67 -8
  31. package/dist/common/control-requests.d.ts +23 -0
  32. package/dist/common/control-requests.js +64 -19
  33. package/dist/common/decision.js +8 -7
  34. package/dist/common/flow-connectionUsage.d.ts +1 -0
  35. package/dist/common/flow-encoding.d.ts +1 -0
  36. package/dist/common/flow-encoding.js +202 -10
  37. package/dist/common/flow-notifications.d.ts +6 -0
  38. package/dist/common/flow-semantics.js +64 -46
  39. package/dist/common/flow-workflowFile.d.ts +23 -0
  40. package/dist/common/integration-trigger.js +8 -7
  41. package/dist/common/localization.d.ts +1 -0
  42. package/dist/common/localization.js +12 -1
  43. package/dist/common/mcp.d.ts +103 -0
  44. package/dist/common/mcp.js +135 -11
  45. package/dist/common/openapi.js +8 -7
  46. package/dist/common/poll-trigger.js +8 -7
  47. package/dist/common/runtime-contract.js +1 -1
  48. package/dist/common/scheduler.d.ts +22 -2
  49. package/dist/common/scheduler.js +354 -83
  50. package/dist/common/trigger-config.d.ts +2 -0
  51. package/dist/common/webhook-trigger.js +8 -7
  52. package/dist/index.d.ts +2 -2
  53. package/package.json +1 -1
  54. package/skills/open-flow/SKILL.md +1 -1
  55. package/skills/open-flow/references/flow-authoring.md +49 -0
@@ -199,6 +199,10 @@
199
199
  --ui-control-radius: 8px;
200
200
  }
201
201
 
202
+ .open-flow-node-picker {
203
+ --ui-control-radius: 10px;
204
+ }
205
+
202
206
  .open-flow-workbench :is(.run-drawer, .runs-view) {
203
207
  --ui-control-radius: 6px;
204
208
  }
@@ -2129,10 +2133,6 @@
2129
2133
  overflow-y: auto;
2130
2134
  }
2131
2135
 
2132
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .overflow-y-scroll {
2133
- overflow-y: scroll;
2134
- }
2135
-
2136
2136
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .overscroll-contain {
2137
2137
  overscroll-behavior: contain;
2138
2138
  }
@@ -2161,6 +2161,14 @@
2161
2161
  border-radius: 9px;
2162
2162
  }
2163
2163
 
2164
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .rounded-\[calc\(var\(--ui-control-radius\)\+2px\)\] {
2165
+ border-radius: calc(var(--ui-control-radius) + 2px);
2166
+ }
2167
+
2168
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .rounded-\[calc\(var\(--ui-control-radius\)-3px\)\] {
2169
+ border-radius: calc(var(--ui-control-radius) - 3px);
2170
+ }
2171
+
2164
2172
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .rounded-\[calc\(var\(--ui-control-radius\,calc\(var\(--radius-md\)_\+_2px\)\)_-_2px\)\] {
2165
2173
  border-radius: calc(var(--ui-control-radius, calc(var(--radius-md) + 2px)) - 2px);
2166
2174
  }
@@ -2169,6 +2177,10 @@
2169
2177
  border-radius: calc(var(--ui-control-radius, var(--ui-radius)) + 2px);
2170
2178
  }
2171
2179
 
2180
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .rounded-\[var\(--ui-control-radius\)\] {
2181
+ border-radius: var(--ui-control-radius);
2182
+ }
2183
+
2172
2184
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .rounded-\[var\(--ui-control-radius\,8px\)\] {
2173
2185
  border-radius: var(--ui-control-radius, 8px);
2174
2186
  }
@@ -3194,6 +3206,16 @@
3194
3206
  --ui-control-background: var(--ui-popover);
3195
3207
  }
3196
3208
 
3209
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\[--ui-control-hover-background\:color-mix\(in_srgb\,var\(--ui-foreground\)_8\%\,var\(--ui-popover\)\)\] {
3210
+ --ui-control-hover-background: var(--ui-foreground);
3211
+ }
3212
+
3213
+ @supports (color: color-mix(in lab, red, red)) {
3214
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\[--ui-control-hover-background\:color-mix\(in_srgb\,var\(--ui-foreground\)_8\%\,var\(--ui-popover\)\)\] {
3215
+ --ui-control-hover-background: color-mix(in srgb,var(--ui-foreground) 8%,var(--ui-popover));
3216
+ }
3217
+ }
3218
+
3197
3219
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\[--ui-control-hover-background\:var\(--ui-control-background\,var\(--ui-muted\)\)\] {
3198
3220
  --ui-control-hover-background: var(--ui-control-background, var(--ui-muted));
3199
3221
  }
@@ -3710,10 +3732,6 @@
3710
3732
  background-color: var(--ui-muted);
3711
3733
  }
3712
3734
 
3713
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-popover:hover {
3714
- background-color: var(--ui-popover);
3715
- }
3716
-
3717
3735
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:bg-primary\/80:hover {
3718
3736
  background-color: var(--ui-primary);
3719
3737
  }
@@ -3762,11 +3780,6 @@
3762
3780
  text-decoration-line: underline;
3763
3781
  }
3764
3782
 
3765
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .hover\:shadow-sm:hover {
3766
- --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
3767
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3768
- }
3769
-
3770
3783
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .group-data-\[variant\=navigation\]\/tabs-list\:hover\:bg-muted:is(:where(.group\/tabs-list)[data-variant="navigation"] *):hover {
3771
3784
  background-color: var(--ui-muted);
3772
3785
  }
@@ -3816,14 +3829,6 @@
3816
3829
  background-color: var(--ui-accent);
3817
3830
  }
3818
3831
 
3819
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .focus-visible\:bg-popover:focus-visible {
3820
- background-color: var(--ui-popover);
3821
- }
3822
-
3823
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .focus-visible\:text-foreground:focus-visible {
3824
- color: var(--ui-foreground);
3825
- }
3826
-
3827
3832
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .focus-visible\:ring-0:focus-visible {
3828
3833
  --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3829
3834
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -5014,11 +5019,6 @@
5014
5019
  grid-template-columns: repeat(2, minmax(0, 1fr));
5015
5020
  }
5016
5021
 
5017
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .md\:text-sm {
5018
- font-size: var(--ui-font-size);
5019
- line-height: var(--tw-leading, var(--text-sm--line-height));
5020
- }
5021
-
5022
5022
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .md\:text-xs {
5023
5023
  font-size: var(--text-xs);
5024
5024
  line-height: var(--tw-leading, var(--text-xs--line-height));
@@ -5142,16 +5142,6 @@
5142
5142
  }
5143
5143
  }
5144
5144
 
5145
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-\[color-mix\(in_srgb\,var\(--ui-foreground\)_12\%\,var\(--ui-popover\)\)\]:where([data-theme="dark"], [data-theme="dark"] *):hover {
5146
- background-color: var(--ui-foreground);
5147
- }
5148
-
5149
- @supports (color: color-mix(in lab, red, red)) {
5150
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-\[color-mix\(in_srgb\,var\(--ui-foreground\)_12\%\,var\(--ui-popover\)\)\]:where([data-theme="dark"], [data-theme="dark"] *):hover {
5151
- background-color: color-mix(in srgb,var(--ui-foreground) 12%,var(--ui-popover));
5152
- }
5153
- }
5154
-
5155
5145
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:hover\:bg-\[var\(--ui-control-hover-background\,var\(--ui-muted\)\)\]:where([data-theme="dark"], [data-theme="dark"] *):hover {
5156
5146
  background-color: var(--ui-control-hover-background, var(--ui-muted));
5157
5147
  }
@@ -5225,16 +5215,6 @@
5225
5215
  }
5226
5216
  }
5227
5217
 
5228
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:focus-visible\:bg-\[color-mix\(in_srgb\,var\(--ui-foreground\)_12\%\,var\(--ui-popover\)\)\]:where([data-theme="dark"], [data-theme="dark"] *):focus-visible {
5229
- background-color: var(--ui-foreground);
5230
- }
5231
-
5232
- @supports (color: color-mix(in lab, red, red)) {
5233
- :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:focus-visible\:bg-\[color-mix\(in_srgb\,var\(--ui-foreground\)_12\%\,var\(--ui-popover\)\)\]:where([data-theme="dark"], [data-theme="dark"] *):focus-visible {
5234
- background-color: color-mix(in srgb,var(--ui-foreground) 12%,var(--ui-popover));
5235
- }
5236
- }
5237
-
5238
5218
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .dark\:disabled\:bg-\[var\(--ui-disabled-background\,color-mix\(in_srgb\,var\(--ui-input\)_80\%\,transparent\)\)\]:where([data-theme="dark"], [data-theme="dark"] *):disabled {
5239
5219
  background-color: var(--ui-disabled-background, var(--ui-input));
5240
5220
  }
@@ -5355,6 +5335,10 @@
5355
5335
  }
5356
5336
  }
5357
5337
 
5338
+ :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\[\&_\[data-overlayscrollbars-viewport\]\]\:overscroll-contain [data-overlayscrollbars-viewport] {
5339
+ overscroll-behavior: contain;
5340
+ }
5341
+
5358
5342
  :where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\[\&_\[data-slot\=field-label\]\]\:sr-only [data-slot="field-label"] {
5359
5343
  clip-path: inset(50%);
5360
5344
  white-space: nowrap;
@@ -5428,6 +5412,10 @@
5428
5412
  padding-top: calc(var(--spacing) * 2);
5429
5413
  }
5430
5414
 
5415
+ :is(:where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\*\:\[a\]\:text-inherit > *):is(a) {
5416
+ color: inherit;
5417
+ }
5418
+
5431
5419
  :is(:where(.open-flow-theme, .open-flow-workbench, .open-flow-canvas-root) .\*\:\[a\]\:underline > *):is(a) {
5432
5420
  text-decoration-line: underline;
5433
5421
  }
@@ -7014,13 +7002,13 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
7014
7002
 
7015
7003
  [data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body) {
7016
7004
  overflow: auto;
7017
- }:where(.scroll-area_container_c242f) {
7005
+ }:where(.scroll-area_container_07c14) {
7018
7006
  height: 100%;
7019
7007
  }
7020
7008
 
7021
- .scroll-area_scrollbar_c242f {
7009
+ .scroll-area_scrollbar_07c14 {
7022
7010
  box-sizing: border-box;
7023
- --os-size: 8px;
7011
+ --os-size: 10px;
7024
7012
  --os-padding-perpendicular: 2px;
7025
7013
  --os-padding-axis: 2px;
7026
7014
  --os-track-border-radius: 10px;
@@ -7030,12 +7018,12 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
7030
7018
  --os-handle-bg-hover: light-dark(rgb(0 0 0 / 38%), rgb(255 255 255 / 42%));
7031
7019
  --os-handle-bg-active: light-dark(rgb(0 0 0 / 50%), rgb(255 255 255 / 54%));
7032
7020
  }
7033
- .scroll-area_scrollbar_c242f.os-scrollbar-auto-hide.os-scrollbar-visible {
7021
+ .scroll-area_scrollbar_07c14.os-scrollbar-auto-hide.os-scrollbar-visible {
7034
7022
  visibility: visible;
7035
7023
  pointer-events: auto;
7036
7024
  }
7037
7025
 
7038
- .scroll-area_native_c242f {
7026
+ .scroll-area_native_07c14 {
7039
7027
  min-height: 0;
7040
7028
  overflow: hidden auto;
7041
7029
  overscroll-behavior: contain;
@@ -13239,7 +13239,7 @@ function DialogTitle$1({ className, ...props }) {
13239
13239
  function DialogDescription$1({ className, ...props }) {
13240
13240
  return /* @__PURE__ */ jsx(DialogDescription$2, {
13241
13241
  "data-slot": "dialog-description",
13242
- className: cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
13242
+ className: cn("m-0 text-sm text-muted-foreground *:[a]:text-inherit *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
13243
13243
  ...props
13244
13244
  });
13245
13245
  }
@@ -15453,7 +15453,7 @@ var Input = React.forwardRef(function Input({ className, type, controlSize = "de
15453
15453
  ref,
15454
15454
  type,
15455
15455
  "data-slot": "input",
15456
- className: cn("h-8 w-full min-w-0 rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-input bg-[var(--ui-control-background,var(--ui-muted))] px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground read-only:cursor-default placeholder:text-muted-foreground data-[slot=input]:focus-visible:text-field-focus data-[slot=input]:focus-visible:aria-invalid:invalid-text-field-focus disabled:pointer-events-none disabled:cursor-[var(--ui-disabled-cursor,not-allowed)] disabled:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_50%,transparent))] disabled:opacity-[var(--ui-disabled-opacity,0.5)] aria-invalid:border-destructive md:text-sm dark:bg-[var(--ui-control-background,var(--ui-muted))] dark:disabled:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_80%,transparent))]", controlSize === "field" && "h-[30px] px-2 text-xs md:text-xs", className),
15456
+ className: cn("h-8 w-full min-w-0 rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-input bg-[var(--ui-control-background,var(--ui-muted))] px-2.5 py-1 text-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground read-only:cursor-default placeholder:text-muted-foreground data-[slot=input]:focus-visible:text-field-focus data-[slot=input]:focus-visible:aria-invalid:invalid-text-field-focus disabled:pointer-events-none disabled:cursor-[var(--ui-disabled-cursor,not-allowed)] disabled:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_50%,transparent))] disabled:opacity-[var(--ui-disabled-opacity,0.5)] aria-invalid:border-destructive dark:bg-[var(--ui-control-background,var(--ui-muted))] dark:disabled:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_80%,transparent))]", controlSize === "field" && "h-[30px] px-2 text-xs", className),
15457
15457
  ...props
15458
15458
  });
15459
15459
  });
@@ -16093,9 +16093,9 @@ var PopoverTitle$2 = /*#__PURE__*/ React.forwardRef(function PopoverTitle(compon
16093
16093
  });
16094
16094
  if (process.env.NODE_ENV !== "production") PopoverTitle$2.displayName = "PopoverTitle";
16095
16095
  var scroll_area_module_default = {
16096
- container: "scroll-area_container_c242f",
16097
- scrollbar: "scroll-area_scrollbar_c242f",
16098
- native: "scroll-area_native_c242f"
16096
+ container: "scroll-area_container_07c14",
16097
+ scrollbar: "scroll-area_scrollbar_07c14",
16098
+ native: "scroll-area_native_07c14"
16099
16099
  };
16100
16100
  //#endregion
16101
16101
  //#region ../../node_modules/.bun/overlayscrollbars@2.16.0/node_modules/overlayscrollbars/overlayscrollbars.mjs
@@ -53,6 +53,17 @@ function matchUiLanguage(candidate) {
53
53
  }
54
54
  return uiLanguageTags.get(subtags[0]);
55
55
  }
56
+ function importedWorkflowName(language) {
57
+ return {
58
+ "en": "Imported workflow",
59
+ "zh-CN": "导入的工作流",
60
+ "zh-TW": "匯入的工作流",
61
+ "ja": "インポートしたワークフロー",
62
+ "ko": "가져온 워크플로",
63
+ "fr": "Workflow importé",
64
+ "ru": "Импортированный процесс"
65
+ }[language];
66
+ }
56
67
  //#endregion
57
68
  //#region src/form/common/value.ts
58
69
  /** JSON values do not distinguish integers from other numbers at runtime. */
@@ -123,4 +134,4 @@ function isJsonValue(value, ancestors = /* @__PURE__ */ new Set()) {
123
134
  return valid;
124
135
  }
125
136
  //#endregion
126
- export { renameObjectField as a, isUiLanguage as c, uiLanguages as d, objectValue as i, resolveUiLanguage as l, isJsonValue as n, setObjectField as o, jsonDataTypes as r, valueType as s, initialValue as t, uiLanguageNames as u };
137
+ export { renameObjectField as a, importedWorkflowName as c, uiLanguageNames as d, uiLanguages as f, objectValue as i, isUiLanguage as l, isJsonValue as n, setObjectField as o, jsonDataTypes as r, valueType as s, initialValue as t, resolveUiLanguage as u };
@@ -54,3 +54,13 @@ export interface WorkbenchPreferences {
54
54
  /** The host resolves deployment and Flow scope before rendering navigation links. */
55
55
  export type ConnectionHref = (flowId: string, providerId: string, connectionId?: string) => string | undefined;
56
56
  /** Object values are complete response/ETag records; implementations must reject failures. */
57
+ /** File content already loaded by the host; Open Flow never fetches sourceUrl. */
58
+ export interface WorkbenchImportInput {
59
+ readonly text: string;
60
+ readonly fileName?: string;
61
+ readonly sourceUrl?: string;
62
+ }
63
+ export interface OpenFlowWorkbenchHandle {
64
+ /** Opens confirmation on an idle, initialized Flow list. Does not create a Flow. */
65
+ openImport(input: WorkbenchImportInput): 'opened' | 'unavailable' | 'invalid-file';
66
+ }