@oomol-lab/open-flow 0.1.0-beta.76 → 0.1.0-beta.78
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.
- package/README.md +3 -0
- package/dist/browser/{ContentIcon-Cm1hbVzW.js → ContentIcon-CMn0c-kl.js} +99 -6
- package/dist/browser/{FlowCanvas-NzKtla_c.js → FlowCanvas-BQGBcfoL.js} +1709 -613
- package/dist/browser/{createResourceDialog-BgdedQqu.js → createResourceDialog-DCGxfKFM.js} +63 -57
- package/dist/browser/{dialog-aSElFFw2.js → dialog-WzR4CRFH.js} +76 -77
- package/dist/browser/{exportSvg-Dcz4HTo_.js → exportSvg-CYwyYiuH.js} +2 -2
- package/dist/browser/{flowChanges-NZyS7HSp.js → flowChanges-Bz4dbDN_.js} +6875 -11091
- package/dist/browser/{flowWorkspace-Bl0SDehy.js → flowWorkspace-BI6L6a4r.js} +1415 -3037
- package/dist/browser/licenses.md +1 -1
- package/dist/browser/preview.css +619 -462
- package/dist/browser/preview.js +9016 -14956
- package/dist/browser/theme.css +4 -2
- package/dist/browser/{tooltip-3XMK9jkr.js → tooltip-BDcVTNpu.js} +65 -2
- package/dist/browser/{typeScriptSession-C9sBGOKZ.js → typeScriptSession-CRoezJPN.js} +1 -1
- package/dist/browser/ui.css +112 -24
- package/dist/browser/ui.js +3 -2
- package/dist/browser/workbench.css +10020 -9842
- package/dist/browser/workbench.d.ts +5 -2
- package/dist/browser/workbench.js +2382 -2668
- package/dist/browser/{workbenchSelect-DBGP7Y4Z.js → workbenchSelect-DtAd0zc4.js} +2 -2
- package/dist/command/index.js +48 -48
- package/dist/common/authoring.d.ts +4 -4
- package/dist/common/authoringExamples.d.ts +3 -2
- package/dist/common/authoringSchema.d.ts +15 -4
- package/dist/common/control-api-conformance.js +155 -15
- package/dist/common/control-api-errors.d.ts +12 -0
- package/dist/common/control-api.d.ts +39 -2
- package/dist/common/control-api.js +180 -37
- package/dist/common/control-requests.d.ts +23 -3
- package/dist/common/control-requests.js +141 -14
- package/dist/common/engine-contract.d.ts +3 -2
- package/dist/common/flow-authoring.js +47 -7
- package/dist/common/flow-change-schema.d.ts +1 -1
- package/dist/common/flow-change.d.ts +2 -2
- package/dist/common/flow-change.js +48 -8
- package/dist/common/flow-encoding.js +47 -7
- package/dist/common/flow-semantics.js +86 -8
- package/dist/common/flow-state.d.ts +100 -0
- package/dist/common/flow-state.js +5794 -0
- package/dist/common/mcp.d.ts +96 -3
- package/dist/common/mcp.js +158 -13
- package/dist/common/run-events.js +19 -8
- package/dist/common/runtime-contract.d.ts +14 -0
- package/dist/common/runtime-contract.js +124 -17
- package/dist/common/runtime-nodejs-compat.js +11 -12
- package/dist/common/scheduler-node-execution.d.ts +1 -0
- package/dist/common/scheduler.d.ts +2 -1
- package/dist/common/scheduler.js +95 -40
- package/dist/common/state-conformance.d.ts +16 -0
- package/dist/common/tags.d.ts +4 -0
- package/dist/index.d.ts +11 -0
- package/package.json +5 -1
- package/src/control/common/api.ts +101 -11
- package/src/control/common/authoring.ts +7 -1
- package/src/control/common/authoringExamples.ts +9 -0
- package/src/control/common/authoringSchema.ts +18 -12
- package/src/control/common/errors.ts +6 -0
- package/src/control/common/flowDecoders.ts +1 -0
- package/src/control/common/mcp.ts +16 -0
- package/src/control/common/requests.ts +16 -2
- package/src/control/common/tags.ts +20 -0
- package/src/execution/common/events.ts +22 -7
- package/src/execution/common/node-execution.ts +3 -0
- package/src/execution/common/scheduler.ts +29 -13
- package/src/flow/common/change.ts +2 -1
- package/src/flow/common/changeSchema.ts +11 -1
- package/src/flow/common/errorHandling.ts +1 -1
- package/src/flow/common/semantics.ts +27 -1
- package/src/runtime/common/engineContract.ts +6 -3
- package/src/runtime/common/nodejsGuest.generated.json +11 -12
- package/src/runtime/common/runtime.ts +122 -7
- package/src/state/common/conformance.ts +81 -0
- package/src/state/common/state.ts +141 -0
- package/src/types/index.ts +11 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { l as useTranslate } from "./dist-BFmpkX4P.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as WorkbenchSelect } from "./workbenchSelect-
|
|
2
|
+
import { xr as Button } from "./tooltip-BDcVTNpu.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-WzR4CRFH.js";
|
|
4
|
+
import { t as WorkbenchSelect } from "./workbenchSelect-DtAd0zc4.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: [
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
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",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as toPlainObject, i as isString } from "./dist-BFmpkX4P.js";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as useToolbarRootContext, A as string, At as useImplicitActiveTrigger, Bn as transitionStatusMapping, Br as useRefWithInit, C as literal, Cn as getFloatingFocusElement, Cr as cn, D as preprocess, Dn as getTarget, Dr as EMPTY_ARRAY, Dt as createInitialPopupStoreState, E as object, En as contains, Er as useRenderElement, Et as useFloatingRootContext, F as IndexGuessBehavior, Fn as createLucideIcon, Fr as formatErrorMessage, Ft as useDismiss, Gt as CLICK_TRIGGER_IDENTIFIER, Hr as getWindow, I as useCompositeListItem, In as useTransitionStatus, Ir as mergeProps, It as useClick, Jn as closePress, Kn as cancelOpen, Kt as DROPDOWN_COLLISION_AVOIDANCE, Ln as useOpenChangeComplete, Lr as useIsoLayoutEffect, Lt as FloatingFocusManager, M as unknown, Mn as ownerDocument, Mr as useButton, Mt as useTriggerDataForwarding, N as _isoDateTime, Nn as useLabelableId, O as record$1, Or as EMPTY_OBJECT, Ot as popupStoreSelectors, P as Separator, Pn as Check, Pt as platform, Qt as useStore, Sr as buttonVariants, T as number, Tn as activeElement, Tt as useSyncedFloatingRootContext, U as COMPOSITE_KEYS, Un as useValueChanged, Vn as useAnimationFrame, Wn as createChangeEventDetails, Wt as FloatingPortal, Xt as ReactStore, Yt as addEventListener, Zn as imperativeAction, Zt as Store, _ as array, _r as fieldValidityMapping, an as useOnFirstRender, at as useAnchorPositioning, br as useControlled, bt as useListNavigation, ct as CompositeList, dr as useFormContext, dt as CommonPopupDataAttributes, et as useAnchoredPopupScrollLock, f as isTimeZone, fr as useRegisterFieldControl, ft as popupStateMapping, g as _enum, gt as serializeValue, h as ZodType, ht as useOpenInteractionType, i as TooltipTrigger, in as useValueAsRef, it as InternalBackdrop, j as union, jn as isWebKit, jr as useMergedRefs, jt as useOpenStateTransitions, k as strictObject, kt as PopupTriggerMap, lr as windowResize, lt as inertValue, m as ZodISODateTime, mr as useBaseUiId, mt as triggerOpenStateMapping, n as TooltipContent, nt as usePositioner, pr as useFieldRootContext, pt as pressableTriggerOpenStateMapping, rn as createSelector, rr as none, rt as getDisabledMountTransitionStyles, sn as useTimeout, st as useDirection, t as Tooltip, tr as itemPress, tt as useScrollLock, ur as useLabelableContext, ut as getPseudoElementBounds, v as boolean, vr as visuallyHidden, vt as useTypeahead, w as never, wr as cva, x as json$1, xn as rectToClientRect, xr as Button, xt as useInteractions, y as discriminatedUnion, yr as visuallyHiddenInput, yt as useRole, zr as useStableCallback } from "./tooltip-BDcVTNpu.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { useMemo } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -221,57 +221,6 @@ var X = createLucideIcon("X", [["path", {
|
|
|
221
221
|
key: "d8bk6v"
|
|
222
222
|
}]]);
|
|
223
223
|
//#endregion
|
|
224
|
-
//#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/internals/labelable-provider/useLabelableId.js
|
|
225
|
-
function useLabelableId(params = {}) {
|
|
226
|
-
const { id, implicit = false, controlRef } = params;
|
|
227
|
-
const { controlId, registerControlId } = useLabelableContext();
|
|
228
|
-
const defaultId = useBaseUiId(id);
|
|
229
|
-
const controlIdForEffect = implicit ? controlId : void 0;
|
|
230
|
-
const controlSourceRef = useRefWithInit(() => Symbol("labelable-control"));
|
|
231
|
-
const hasRegisteredRef = React.useRef(false);
|
|
232
|
-
const hadExplicitIdRef = React.useRef(id != null);
|
|
233
|
-
const unregisterControlId = useStableCallback(() => {
|
|
234
|
-
if (!hasRegisteredRef.current || registerControlId === NOOP) return;
|
|
235
|
-
hasRegisteredRef.current = false;
|
|
236
|
-
registerControlId(controlSourceRef.current, void 0);
|
|
237
|
-
});
|
|
238
|
-
useIsoLayoutEffect(() => {
|
|
239
|
-
if (registerControlId === NOOP) return;
|
|
240
|
-
let nextId;
|
|
241
|
-
if (implicit) {
|
|
242
|
-
const elem = controlRef?.current;
|
|
243
|
-
if (isElement(elem) && elem.closest("label") != null) nextId = id ?? null;
|
|
244
|
-
else nextId = controlIdForEffect ?? defaultId;
|
|
245
|
-
} else if (id != null) {
|
|
246
|
-
hadExplicitIdRef.current = true;
|
|
247
|
-
nextId = id;
|
|
248
|
-
} else if (hadExplicitIdRef.current) nextId = defaultId;
|
|
249
|
-
else {
|
|
250
|
-
unregisterControlId();
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
if (nextId === void 0) {
|
|
254
|
-
unregisterControlId();
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
hasRegisteredRef.current = true;
|
|
258
|
-
registerControlId(controlSourceRef.current, nextId);
|
|
259
|
-
}, [
|
|
260
|
-
id,
|
|
261
|
-
controlRef,
|
|
262
|
-
controlIdForEffect,
|
|
263
|
-
registerControlId,
|
|
264
|
-
implicit,
|
|
265
|
-
defaultId,
|
|
266
|
-
controlSourceRef,
|
|
267
|
-
unregisterControlId
|
|
268
|
-
]);
|
|
269
|
-
React.useEffect(() => {
|
|
270
|
-
return unregisterControlId;
|
|
271
|
-
}, [unregisterControlId]);
|
|
272
|
-
return controlId ?? defaultId;
|
|
273
|
-
}
|
|
274
|
-
//#endregion
|
|
275
224
|
//#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/field/control/FieldControl.js
|
|
276
225
|
/**
|
|
277
226
|
* The form control to label and validate.
|
|
@@ -455,17 +404,6 @@ function removeItem(selectedValues, itemValue, comparer) {
|
|
|
455
404
|
return selectedValues.filter((selectedValue) => !compareItemEquality(itemValue, selectedValue, comparer));
|
|
456
405
|
}
|
|
457
406
|
//#endregion
|
|
458
|
-
//#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/internals/serializeValue.js
|
|
459
|
-
function serializeValue(value) {
|
|
460
|
-
if (value == null) return "";
|
|
461
|
-
if (typeof value === "string") return value;
|
|
462
|
-
try {
|
|
463
|
-
return JSON.stringify(value);
|
|
464
|
-
} catch {
|
|
465
|
-
return String(value);
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
//#endregion
|
|
469
407
|
//#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/internals/resolveValueLabel.js
|
|
470
408
|
function isGroupedItems(items) {
|
|
471
409
|
return items != null && items.length > 0 && typeof items[0] === "object" && items[0] != null && "items" in items[0];
|
|
@@ -2310,6 +2248,11 @@ function SelectScrollDownButton({ className, ...props }) {
|
|
|
2310
2248
|
});
|
|
2311
2249
|
}
|
|
2312
2250
|
//#endregion
|
|
2251
|
+
//#region ../../node_modules/.bun/zod@4.6.5/node_modules/zod/v4/classic/iso.js
|
|
2252
|
+
function datetime(params) {
|
|
2253
|
+
return _isoDateTime(ZodISODateTime, params);
|
|
2254
|
+
}
|
|
2255
|
+
//#endregion
|
|
2313
2256
|
//#region ../../node_modules/.bun/dequal@2.0.3/node_modules/dequal/lite/index.mjs
|
|
2314
2257
|
var has = Object.prototype.hasOwnProperty;
|
|
2315
2258
|
function dequal(foo, bar) {
|
|
@@ -2333,11 +2276,63 @@ function dequal(foo, bar) {
|
|
|
2333
2276
|
}
|
|
2334
2277
|
return foo !== foo && bar !== bar;
|
|
2335
2278
|
}
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2279
|
+
strictObject({
|
|
2280
|
+
scope: _enum(["draft", "live"]),
|
|
2281
|
+
values: boolean().optional()
|
|
2282
|
+
});
|
|
2283
|
+
strictObject({
|
|
2284
|
+
scope: _enum(["draft", "live"]),
|
|
2285
|
+
key: string().min(1).refine((key) => new TextEncoder().encode(key).length <= 256).optional()
|
|
2286
|
+
});
|
|
2287
|
+
strictObject({
|
|
2288
|
+
scope: _enum(["draft", "live"]),
|
|
2289
|
+
space: string().regex(/^(flow|node:.+)$/)
|
|
2290
|
+
});
|
|
2291
|
+
var skipDuplicatesConfigSchema = strictObject({ fields: array(string().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) });
|
|
2292
|
+
var skipDuplicatesExecutorSchema = skipDuplicatesConfigSchema.extend({ kind: literal("skip-duplicates") });
|
|
2293
|
+
function skipDuplicatesTask(config = skipDuplicatesConfigSchema.parse({}), name = "Skip Duplicates") {
|
|
2294
|
+
return {
|
|
2295
|
+
name,
|
|
2296
|
+
executor: {
|
|
2297
|
+
...config,
|
|
2298
|
+
kind: "skip-duplicates"
|
|
2299
|
+
},
|
|
2300
|
+
inputs: [{
|
|
2301
|
+
handle: "items",
|
|
2302
|
+
jsonSchema: { type: "array" },
|
|
2303
|
+
nullable: false
|
|
2304
|
+
}],
|
|
2305
|
+
outputs: ["items", "duplicates"].map((handle) => ({
|
|
2306
|
+
handle,
|
|
2307
|
+
jsonSchema: { type: "array" },
|
|
2308
|
+
nullable: false
|
|
2309
|
+
}))
|
|
2310
|
+
};
|
|
2340
2311
|
}
|
|
2312
|
+
var flowStateViewSchema = object({
|
|
2313
|
+
version: literal(1),
|
|
2314
|
+
scope: _enum(["draft", "live"]),
|
|
2315
|
+
limits: object({
|
|
2316
|
+
maxValueBytes: number().positive(),
|
|
2317
|
+
maxValues: number().int().positive(),
|
|
2318
|
+
maxSpaces: number().int().positive(),
|
|
2319
|
+
maxIdentities: number().positive(),
|
|
2320
|
+
maxRunWrites: number().positive()
|
|
2321
|
+
}),
|
|
2322
|
+
values: array(object({
|
|
2323
|
+
key: string(),
|
|
2324
|
+
size: number().nonnegative(),
|
|
2325
|
+
updatedAt: number(),
|
|
2326
|
+
value: json$1().optional()
|
|
2327
|
+
})),
|
|
2328
|
+
spaces: array(object({
|
|
2329
|
+
space: string(),
|
|
2330
|
+
count: number().nonnegative(),
|
|
2331
|
+
pendingCount: number().nonnegative(),
|
|
2332
|
+
reservedCount: number().nonnegative(),
|
|
2333
|
+
updatedAt: number()
|
|
2334
|
+
}))
|
|
2335
|
+
});
|
|
2341
2336
|
//#endregion
|
|
2342
2337
|
//#region ../../node_modules/.bun/@cfworker+json-schema@4.1.1/node_modules/@cfworker/json-schema/dist/esm/deep-compare-strict.js
|
|
2343
2338
|
function deepCompareStrict(a, b) {
|
|
@@ -7060,7 +7055,8 @@ var managedFields = object({
|
|
|
7060
7055
|
flowId: text,
|
|
7061
7056
|
revisionId: text
|
|
7062
7057
|
}),
|
|
7063
|
-
httpRequestExecutorSchema
|
|
7058
|
+
httpRequestExecutorSchema,
|
|
7059
|
+
skipDuplicatesExecutorSchema
|
|
7064
7060
|
])
|
|
7065
7061
|
});
|
|
7066
7062
|
var managed = managedFields.transform(limitDecisionTask);
|
|
@@ -7330,7 +7326,8 @@ var revision = object({
|
|
|
7330
7326
|
literal(9),
|
|
7331
7327
|
literal(10),
|
|
7332
7328
|
literal(11),
|
|
7333
|
-
literal(12)
|
|
7329
|
+
literal(12),
|
|
7330
|
+
literal(13)
|
|
7334
7331
|
]),
|
|
7335
7332
|
document,
|
|
7336
7333
|
modules: record$1(text, module)
|
|
@@ -7532,6 +7529,7 @@ var variants = new Map(Object.entries(shapes).map(([kind, shape]) => [kind, shap
|
|
|
7532
7529
|
})]));
|
|
7533
7530
|
array(union([...variants.values()])).min(1);
|
|
7534
7531
|
function checkModelVersion(content) {
|
|
7532
|
+
if (content.modelVersion < 13 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind === "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind === "skip-duplicates")) throw new Error("Skip Duplicates requires Flow model v13.");
|
|
7535
7533
|
if (content.modelVersion < 12 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "moduleId" in candidateNode.task && candidateNode.task.capabilities?.some((item) => item.kind == "http"))) throw new TypeError("Code HTTP access requires Flow model version 12.");
|
|
7536
7534
|
if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind == "http-request")) throw new TypeError("HTTP Request requires Flow model version 11.");
|
|
7537
7535
|
if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && ("moduleId" in candidateNode.task ? candidateNode.task.capabilities?.some((item) => item.kind == "workflow") : candidateNode.task.executor.kind == "agent" && candidateNode.task.executor.tools.some((item) => item.kind == "workflow")))) throw new TypeError("Workflow tools require Flow model version 11.");
|
|
@@ -7771,7 +7769,7 @@ var nodeErrorSchema = {
|
|
|
7771
7769
|
}
|
|
7772
7770
|
};
|
|
7773
7771
|
function supportsNodeErrorHandling(node) {
|
|
7774
|
-
return supportsNodeRetry(node);
|
|
7772
|
+
return supportsNodeRetry(node) || node.kind === "task" && "executor" in node.task && node.task.executor.kind === "skip-duplicates";
|
|
7775
7773
|
}
|
|
7776
7774
|
function nodeSystemOutputPorts(node) {
|
|
7777
7775
|
return supportsNodeErrorHandling(node) && node.onError == "error" ? { error: {
|
|
@@ -7941,10 +7939,10 @@ function upgradeRevisionContent(content) {
|
|
|
7941
7939
|
function upgradeDecodedRevisionContent(content) {
|
|
7942
7940
|
const graph = content.document.graph;
|
|
7943
7941
|
const hasManual = Object.values(graph.nodes).some((node) => node.kind == "manual");
|
|
7944
|
-
if (!hasManual && content.modelVersion ==
|
|
7942
|
+
if (!hasManual && content.modelVersion == 13) return content;
|
|
7945
7943
|
return {
|
|
7946
7944
|
...content,
|
|
7947
|
-
modelVersion:
|
|
7945
|
+
modelVersion: 13,
|
|
7948
7946
|
document: {
|
|
7949
7947
|
...content.document,
|
|
7950
7948
|
graph: hasManual ? {
|
|
@@ -7991,7 +7989,7 @@ function invalid(message) {
|
|
|
7991
7989
|
throw new FlowChangeError(message);
|
|
7992
7990
|
}
|
|
7993
7991
|
function applyFlowChanges(content, operations) {
|
|
7994
|
-
const source = content.modelVersion !=
|
|
7992
|
+
const source = content.modelVersion != 13 || Object.values(content.document.graph.nodes).some((node) => node.kind == "manual") ? decodeRevisionContent(content) : content;
|
|
7995
7993
|
const document = { ...source.document };
|
|
7996
7994
|
const modules = { ...source.modules };
|
|
7997
7995
|
for (const operation of operations) switch (operation.kind) {
|
|
@@ -8439,7 +8437,7 @@ function applyFlowChanges(content, operations) {
|
|
|
8439
8437
|
assertDocumentHttpAuthBindings(document);
|
|
8440
8438
|
return upgradeDecodedRevisionContent({
|
|
8441
8439
|
document,
|
|
8442
|
-
modelVersion:
|
|
8440
|
+
modelVersion: 13,
|
|
8443
8441
|
modules
|
|
8444
8442
|
});
|
|
8445
8443
|
}
|
|
@@ -9284,10 +9282,11 @@ function DialogOverlay({ className, ...props }) {
|
|
|
9284
9282
|
...props
|
|
9285
9283
|
});
|
|
9286
9284
|
}
|
|
9287
|
-
function DialogContent({ children, className, closeLabel = "Close", container, showCloseButton = true, ...props }) {
|
|
9285
|
+
var DialogContent = React.forwardRef(function DialogContent({ children, className, closeLabel = "Close", container, showCloseButton = true, ...props }, ref) {
|
|
9288
9286
|
return /* @__PURE__ */ jsxs(DialogPortal, {
|
|
9289
9287
|
container,
|
|
9290
9288
|
children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(DialogPopup, {
|
|
9289
|
+
ref,
|
|
9291
9290
|
"data-slot": "dialog-content",
|
|
9292
9291
|
className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] grid-cols-[minmax(0,1fr)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg bg-popover [--ui-control-background:var(--ui-popover)] p-4 text-sm text-popover-foreground shadow-lg ring-1 ring-foreground/10 outline-none sm:max-w-sm transition-opacity duration-150 ease-out data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none", className),
|
|
9293
9292
|
...props,
|
|
@@ -9310,7 +9309,7 @@ function DialogContent({ children, className, closeLabel = "Close", container, s
|
|
|
9310
9309
|
})] })]
|
|
9311
9310
|
})]
|
|
9312
9311
|
});
|
|
9313
|
-
}
|
|
9312
|
+
});
|
|
9314
9313
|
function DialogHeader({ className, ...props }) {
|
|
9315
9314
|
return /* @__PURE__ */ jsx("div", {
|
|
9316
9315
|
"data-slot": "dialog-header",
|
|
@@ -9340,4 +9339,4 @@ function DialogDescription({ className, ...props }) {
|
|
|
9340
9339
|
});
|
|
9341
9340
|
}
|
|
9342
9341
|
//#endregion
|
|
9343
|
-
export { waitAutoContinueSchema as $,
|
|
9342
|
+
export { waitAutoContinueSchema as $, removeItem as $t, comparisonIssue as A, variableInputCompatible as At, authoringDefinitionSchemas as B, SelectGroup as Bt, upgradeManualTrigger as C, limitDecisionQuestions as Ct, nodeSystemOutputPorts as D, matchesSchema as Dt, nodeErrorSchema as E, comparePorts as Et, operatorsForType as F, skipDuplicatesTask as Ft, workflowAgentToolSchema as G, resolveAriaLabelledBy as Gt, connectorCapabilitySchema as H, SelectSeparator as Ht, otherwiseOutput as I, dequal as It, webhookResponseAllowsBody as J, stringifyAsLabel as Jt, webhookHeaderValuePort as K, hasNullItemLabel as Kt, unaryOperator as L, Select as Lt, mapConditionSources as M, format as Mt, nodeInputMappings as N, flowStateViewSchema as Nt, supportsNodeErrorHandling as O, portsAssignable as Ot, operandHandle as P, skipDuplicatesConfigSchema as Pt, workflowOutputsPort as Q, findItemIndex as Qt, valueType as R, SelectChevron as Rt, resourceNameIssue as S, defaultDecisionQuestion as St, workflowToolNameIssue as T, webhookSupportsBody as Tt, decodeRevisionContent as U, SelectTrigger as Ut, connectorAgentToolSchema as V, SelectItem as Vt, httpCapabilitySchema as W, SelectValue as Wt, webhookResponseTimeout as X, compareItemEquality as Xt, webhookResponseInputs as Y, stringifyAsValue as Yt, webhookStatusCodePort as Z, defaultItemEquality as Zt, applyFlowChanges as _, isHttpHost as _t, DialogFooter as a, httpHeaderSchema as at, nodeNameIssue as b, decisionQuestionIssues as bt, DialogTrigger as c, httpRequestInputs as ct, Field as d, withHttpParameterFields as dt, selectedValueIncludes as en, defaultNodeRetry as et, FieldDescription as f, withHttpParameterSource as ft, FlowChangeError as g, renamedPort as gt, FieldLabel as h, renameOutputMapping as ht, DialogDescription as i, checkJsonDepth as it, conditionInputPorts as j, isSchemaKeyword as jt, clearConditionBindings as k, schemaObject as kt, Icon as l, httpRequestIssues as lt, FieldGroup as m, remapInputMappings as mt, DialogClose as n, Input as nn, retryConfigurationSchema as nt, DialogHeader as o, httpQuerySchema as ot, FieldError as p, httpHeaderNameIssue as pt, webhookHeadersPort as q, isGroupedItems as qt, DialogContent as r, ChevronDown as rn, supportsNodeRetry as rt, DialogTitle as s, httpRequestConfigSchema as st, Dialog as t, Label as tn, nodeRetryLimits as tt, Spinner as u, httpRequestTask as ut, isTriggerNode as v, decisionLimits as vt, upgradeRevisionContent as w, webhookMethods as wt, normalizeNodeName as x, decisionTask as xt, nextNodeName as y, decisionModel as yt, agentToolFields as z, SelectContent as zt };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as IconImageCrossOriginContext, o as IconifyProvider } from "./ContentIcon-
|
|
2
|
-
import { t as FlowCanvas,
|
|
1
|
+
import { n as IconImageCrossOriginContext, o as IconifyProvider } from "./ContentIcon-CMn0c-kl.js";
|
|
2
|
+
import { t as FlowCanvas, x as CanvasStore } from "./FlowCanvas-BQGBcfoL.js";
|
|
3
3
|
import { createElement } from "react";
|
|
4
4
|
import { createRoot } from "react-dom/client";
|
|
5
5
|
//#region ../../node_modules/.bun/html-to-image@1.11.11/node_modules/html-to-image/es/util.js
|