@oomol-lab/open-flow 0.1.0-beta.55 → 0.1.0-beta.56
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 +1 -1
- package/dist/browser/{createResourceDialog-4H5_lZ6s.js → createResourceDialog-Btjes3wD.js} +2 -2
- package/dist/browser/flow-authoring-edge.d.ts +3 -3
- package/dist/browser/flow-authoring-node.d.ts +26 -46
- package/dist/browser/flow-authoring.js +9155 -21002
- package/dist/browser/flow-change-schema.d.ts +1 -1
- package/dist/browser/flow-change.d.ts +14 -104
- package/dist/browser/flow-change.js +121 -296
- package/dist/browser/{flowChanges-ZzG-f9cg.js → flowChanges-BxutPLYO.js} +1494 -1830
- package/dist/browser/{flowWorkspace-ChpRaTMX.js → flowWorkspace-Dg4mqfa6.js} +118 -293
- package/dist/browser/{icons-CdAB9wyS.js → icons-p2A9zs8t.js} +126 -317
- package/dist/browser/lib-DrKav3HG.js +11403 -0
- package/dist/browser/preview.css +1 -1
- package/dist/browser/preview.js +9308 -9565
- package/dist/browser/ui-idTooltip.d.ts +11 -0
- package/dist/browser/ui.d.ts +5 -0
- package/dist/browser/ui.js +83 -1
- package/dist/browser/workbench.css +1 -1
- package/dist/browser/workbench.js +210 -411
- package/dist/browser/{workbenchSelect-BRZN4ish.js → workbenchSelect-LRp_Xjeq.js} +1 -1
- package/dist/common/control-api-conformance.js +212 -245
- package/dist/common/control-api.d.ts +6 -6
- package/dist/common/control-api.js +216 -250
- package/dist/common/control-requests.js +468 -1476
- package/dist/common/decision.js +6325 -6369
- package/dist/common/flow-agent.d.ts +1 -1
- package/dist/common/flow-connectionUsage.d.ts +1 -2
- package/dist/common/flow-encoding.d.ts +2 -4
- package/dist/common/flow-encoding.js +119 -180
- package/dist/common/flow-graph.d.ts +10 -10
- package/dist/common/flow-semantics.d.ts +4 -9
- package/dist/common/flow-semantics.js +9024 -9230
- package/dist/common/flowInspection.d.ts +3 -21
- package/dist/common/integration-trigger.js +8642 -8686
- package/dist/common/mcp.d.ts +0 -1
- package/dist/common/mcp.js +117 -140
- package/dist/common/openapi.js +6325 -6369
- package/dist/common/poll-trigger.js +8642 -8686
- package/dist/common/run-events.js +0 -1
- package/dist/common/scheduler.d.ts +3 -9
- package/dist/common/scheduler.js +116 -207
- package/dist/common/webhook-trigger.js +6325 -6369
- package/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { i as __require, o as __toESM, r as __exportAll, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
|
|
2
|
-
import { $
|
|
2
|
+
import { $t as InputGroupInput, A as datePickerValue, Bt as PopoverContent, C as valueForEditor, D as calendarChange, E as typeOfSchema, En as decodeResultList, F as feishuResourceKind, G as semanticNodeIcon, Gn as Checkbox, Gt as PopoverTrigger, H as resourceData, Ht as PopoverHeader, I as supportsFeishuChatFilter, It as IdTooltip, J as providerIcon, Jt as VirtualScrollArea, K as triggerNodeIcon, Kn as IconThemeContext, Kt as NativeScrollArea, Ln as inputValue, Lt as followWorkbenchLink, Mn as isJsonObject, Nn as triggerConfigValue, O as calendarDate, On as resolutionOutputPorts, P as indexAddNodeOptions, Pn as triggerConfigValues, Q as useIconifyData, Qt as InputGroupAddon, R as mapSource, Rt as Switch, S as schemaForEditor, Sn as errorNotice, T as isUnconstrainedSchema, U as resourceValue, Ut as PopoverPanelContent, V as observeResource, Vt as PopoverDescription, W as designerGraph, Wn as controlErrorCode, Wt as PopoverTitle, X as IconifyProvider, Xt as useTriggerFocusGuards, Y as ContentIcon, Yt as Z$2, Z as useIconifyCollectionLoader, Zt as InputGroup, _n as fr_default$1, an as EmptyTitle, at as openApiFieldIssues, b as editorComponent, bn as FeishuEventPicker, cn as SourceSelect, ct as selectOperation, dn as waitBranchDescription, en as Empty, et as canCancelRun, fn as zh_TW_default$1, gn as ja_default$1, gt as schemaMismatchMessage, hn as ko_default$1, ht as diagnosticNodeId, in as EmptyMedia, it as object, j as isDateFormat, jn as triggerOutputDefinitions, k as datePickerChange, kn as sourceOutputLabel, ln as createI18n$1, lt as serverAddress, mn as ru_default$1, mt as diagnosticMessage, n as agentTool, nn as EmptyDescription, nt as revisionView, ot as openApiTask, pn as zh_CN_default$1, q as actionSummary, qt as ScrollArea, rn as EmptyHeader, rt as listOperations, sn as SourceForm, st as securityOptions, tn as EmptyContent, tt as hasRunFilter, un as uiLocales, ut as servers, vn as en_default$1, vt as connectionCatalog, w as getDefaultValue, x as editorGroups, xn as EventSourceSetup, y as defaultValueEditorSchema, yn as I18n, zt as Popover } from "./flowChanges-BxutPLYO.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, s as useI18n, t as isArray$1, u as useVal } from "./dist-BFmpkX4P.js";
|
|
5
|
-
import { $n as require_builtin_esm_external_require_react, $r as none$1, $t as inertValue, Ai as formatErrorMessage, An as useTriggerDataForwarding, Ar as ChevronDown, At as ARROW_DOWN, B as operatorsForType, Bn as FloatingTreeStore, Br as createChangeEventDetails, Bt as VERTICAL_KEYS, C as FieldDescription, Ci as EMPTY_OBJECT, Cn as useSyncedFloatingRootContext, Cr as contains, Ct as SelectSeparator, Di as useButton, Dn as PopupTriggerMap, Dr as isMac$1, Dt as IndexGuessBehavior, E as FieldLabel, Ei as useMergedRefs, En as popupStoreSelectors, Er as isFirefox, Et as Separator, F as comparisonIssue, Fi as useRefWithInit, Fn as FloatingNode, Fr as useAnimationsFinished, Ft as COMPOSITE_KEYS, G as webhookMethods, Gn as FocusGuard, Gr as escapeKey, Gt as useAnchoredPopupScrollLock, H as unaryOperator, Hr as cancelOpen, Ht as isNativeInput, Ii as getParentNode, In as FloatingTree, Ir as TransitionStatusDataAttributes, Jn as Store, Jr as inputChange, Jt as InternalBackdrop, K as webhookSupportsBody, Kn as addEventListener, Kt as usePositioner, Li as isElement, Ln as useFloatingNodeId, Lr as transitionStatusMapping, Lt as HORIZONTAL_KEYS, Mi as useIsoLayoutEffect, Mn as useDismiss, Mr as createLucideIcon, Mt as ARROW_LEFT, Ni as SafeReact, Nn as useClick, Nr as useTransitionStatus, Nt as ARROW_RIGHT, Oi as CompositeRootContext, On as useImplicitActiveTrigger, Or as ownerDocument, Ot as useCompositeListItem, Pi as useStableCallback, Pn as FloatingFocusManager, Pr as useOpenChangeComplete, Pt as ARROW_UP, Q as limitDecisionQuestions, Qn as require_with_selector, Qr as listNavigation, Qt as CompositeList, R as nodeInputMappings, Ri as isHTMLElement, Rn as useFloatingParentNodeId, Rt as HORIZONTAL_KEYS_WITH_EXTRA_KEYS, S as Field, Si as EMPTY_ARRAY$1, Sn as useFocus$1, Sr as activeElement, St as SelectItem, T as FieldGroup, Ti as warn, Tn as createInitialPopupStoreState, Tr as isAndroid, Tt as SelectValue, U as valueType, Un as DROPDOWN_COLLISION_AVOIDANCE, Ur as clearPress, Ut as scrollIntoViewIfNeeded, Vn as FloatingPortal, Vr as createGenericEventDetails, Vt as VERTICAL_KEYS_WITH_EXTRA_KEYS, W as decodeRevisionContent, Wn as POPUP_COLLISION_AVOIDANCE, Wr as closePress, Wt as useToolbarRootContext, X as decisionTask, Xn as fastComponent, Xr as inputPress, Xt as adaptiveOrigin, Y as decisionQuestionIssues, Yn as useStore$1, Yr as inputClear, Yt as useAnchorPositioning, Z as defaultDecisionQuestion, Zn as fastComponentRef, Zr as itemPress, Zt as useDirection, _ as TooltipPositioner, _i as buttonVariants, _n as useRole, _r as getMinListIndex, a as DialogDescription, ai as useLabelableContext, an as useOpenInteractionType, b as TooltipRoot, bi as clsx, bn as useHoverReferenceInteraction, br as stopEvent$1, bt as SelectContent, c as DialogTitle, ci as useFieldRootContext, cn as stringifyAsLabel, d as TooltipContent, di as DEFAULT_FIELD_STATE_ATTRIBUTES, dn as defaultItemEquality, dr as createGridCellMap, en as getPseudoElementBounds, er as createSelector, et as matchesSchema, f as TooltipProvider, fi as fieldValidityMapping, fn as findItemIndex, fr as findNonDisabledListIndex, g as TooltipPopup, gi as Button$1, gn as useTypeahead, gr as getMaxListIndex, gt as string, h as TooltipArrow, hi as useControlled, hn as safePolygon, hr as getGridNavigatedIndex, i as DialogContent, ii as triggerPress, in as resolveAriaLabelledBy, ir as Input$1, it as dequal, j as nodeNameIssue, ji as mergeProps, jn as useTriggerRegistration, jr as Check, jt as ARROW_KEYS, ki as useCompositeRootContext, kn as useOpenStateTransitions, kr as useLabelableId, kt as ALL_KEYS, l as DialogTrigger, li as useBaseUiId, ln as stringifyAsValue, m as createTooltipHandle, mi as visuallyHiddenInput, mn as selectedValueIncludes, mr as getGridCellIndices, n as Dialog, nn as pressableTriggerOpenStateMapping, nr as useOnFirstRender, nt as variableInputCompatible, oi as useFormContext, on as hasNullItemLabel, or as useTimeout, p as TooltipTrigger, pi as visuallyHidden, pn as removeItem, pr as getGridCellIndexOfCorner, q as decisionLimits, qn as ReactStore, qr as imperativeAction, qt as getDisabledMountTransitionStyles, rn as triggerOpenStateMapping, rr as Label, si as useRegisterFieldControl, sn as isGroupedItems, t as Icon, ti as siblingOpen, tn as popupStateMapping, tr as useValueAsRef, tt as schemaObject, u as Tooltip, ui as useId$1, un as compareItemEquality, v as TooltipPortal, vi as cn$1, vn as useListNavigation, vr as isIndexOutOfListBounds, vt as Select$1, w as FieldError, wi as NOOP, wn as useFloatingRootContext, wr as getTarget, wt as SelectTrigger, x as Spinner, xi as useRenderElement, xn as useHoverFloatingInteraction, xr as isInteractiveElement, xt as SelectGroup, y as TooltipTrigger$1, yi as cva, yn as useInteractions, yr as isListIndexDisabled, yt as SelectChevron, z as operandHandle, zi as isLastTraversableNode, zn as useFloatingTree, zr as useValueChanged, zt as MODIFIER_KEYS } from "./icons-
|
|
5
|
+
import { $n as require_builtin_esm_external_require_react, $r as none$1, $t as inertValue, Ai as formatErrorMessage, An as useTriggerDataForwarding, Ar as ChevronDown, At as ARROW_DOWN, B as operatorsForType, Bn as FloatingTreeStore, Br as createChangeEventDetails, Bt as VERTICAL_KEYS, C as FieldDescription, Ci as EMPTY_OBJECT, Cn as useSyncedFloatingRootContext, Cr as contains, Ct as SelectSeparator, Di as useButton, Dn as PopupTriggerMap, Dr as isMac$1, Dt as IndexGuessBehavior, E as FieldLabel, Ei as useMergedRefs, En as popupStoreSelectors, Er as isFirefox, Et as Separator, F as comparisonIssue, Fi as useRefWithInit, Fn as FloatingNode, Fr as useAnimationsFinished, Ft as COMPOSITE_KEYS, G as webhookMethods, Gn as FocusGuard, Gr as escapeKey, Gt as useAnchoredPopupScrollLock, H as unaryOperator, Hr as cancelOpen, Ht as isNativeInput, Ii as getParentNode, In as FloatingTree, Ir as TransitionStatusDataAttributes, Jn as Store, Jr as inputChange, Jt as InternalBackdrop, K as webhookSupportsBody, Kn as addEventListener, Kt as usePositioner, Li as isElement, Ln as useFloatingNodeId, Lr as transitionStatusMapping, Lt as HORIZONTAL_KEYS, Mi as useIsoLayoutEffect, Mn as useDismiss, Mr as createLucideIcon, Mt as ARROW_LEFT, Ni as SafeReact, Nn as useClick, Nr as useTransitionStatus, Nt as ARROW_RIGHT, Oi as CompositeRootContext, On as useImplicitActiveTrigger, Or as ownerDocument, Ot as useCompositeListItem, Pi as useStableCallback, Pn as FloatingFocusManager, Pr as useOpenChangeComplete, Pt as ARROW_UP, Q as limitDecisionQuestions, Qn as require_with_selector, Qr as listNavigation, Qt as CompositeList, R as nodeInputMappings, Ri as isHTMLElement, Rn as useFloatingParentNodeId, Rt as HORIZONTAL_KEYS_WITH_EXTRA_KEYS, S as Field, Si as EMPTY_ARRAY$1, Sn as useFocus$1, Sr as activeElement, St as SelectItem, T as FieldGroup, Ti as warn, Tn as createInitialPopupStoreState, Tr as isAndroid, Tt as SelectValue, U as valueType, Un as DROPDOWN_COLLISION_AVOIDANCE, Ur as clearPress, Ut as scrollIntoViewIfNeeded, Vn as FloatingPortal, Vr as createGenericEventDetails, Vt as VERTICAL_KEYS_WITH_EXTRA_KEYS, W as decodeRevisionContent, Wn as POPUP_COLLISION_AVOIDANCE, Wr as closePress, Wt as useToolbarRootContext, X as decisionTask, Xn as fastComponent, Xr as inputPress, Xt as adaptiveOrigin, Y as decisionQuestionIssues, Yn as useStore$1, Yr as inputClear, Yt as useAnchorPositioning, Z as defaultDecisionQuestion, Zn as fastComponentRef, Zr as itemPress, Zt as useDirection, _ as TooltipPositioner, _i as buttonVariants, _n as useRole, _r as getMinListIndex, a as DialogDescription, ai as useLabelableContext, an as useOpenInteractionType, b as TooltipRoot, bi as clsx, bn as useHoverReferenceInteraction, br as stopEvent$1, bt as SelectContent, c as DialogTitle, ci as useFieldRootContext, cn as stringifyAsLabel, d as TooltipContent, di as DEFAULT_FIELD_STATE_ATTRIBUTES, dn as defaultItemEquality, dr as createGridCellMap, en as getPseudoElementBounds, er as createSelector, et as matchesSchema, f as TooltipProvider, fi as fieldValidityMapping, fn as findItemIndex, fr as findNonDisabledListIndex, g as TooltipPopup, gi as Button$1, gn as useTypeahead, gr as getMaxListIndex, gt as string, h as TooltipArrow, hi as useControlled, hn as safePolygon, hr as getGridNavigatedIndex, i as DialogContent, ii as triggerPress, in as resolveAriaLabelledBy, ir as Input$1, it as dequal, j as nodeNameIssue, ji as mergeProps, jn as useTriggerRegistration, jr as Check, jt as ARROW_KEYS, ki as useCompositeRootContext, kn as useOpenStateTransitions, kr as useLabelableId, kt as ALL_KEYS, l as DialogTrigger, li as useBaseUiId, ln as stringifyAsValue, m as createTooltipHandle, mi as visuallyHiddenInput, mn as selectedValueIncludes, mr as getGridCellIndices, n as Dialog, nn as pressableTriggerOpenStateMapping, nr as useOnFirstRender, nt as variableInputCompatible, oi as useFormContext, on as hasNullItemLabel, or as useTimeout, p as TooltipTrigger, pi as visuallyHidden, pn as removeItem, pr as getGridCellIndexOfCorner, q as decisionLimits, qn as ReactStore, qr as imperativeAction, qt as getDisabledMountTransitionStyles, rn as triggerOpenStateMapping, rr as Label, si as useRegisterFieldControl, sn as isGroupedItems, t as Icon, ti as siblingOpen, tn as popupStateMapping, tr as useValueAsRef, tt as schemaObject, u as Tooltip, ui as useId$1, un as compareItemEquality, v as TooltipPortal, vi as cn$1, vn as useListNavigation, vr as isIndexOutOfListBounds, vt as Select$1, w as FieldError, wi as NOOP, wn as useFloatingRootContext, wr as getTarget, wt as SelectTrigger, x as Spinner, xi as useRenderElement, xn as useHoverFloatingInteraction, xr as isInteractiveElement, xt as SelectGroup, y as TooltipTrigger$1, yi as cva, yn as useInteractions, yr as isListIndexDisabled, yt as SelectChevron, z as operandHandle, zi as isLastTraversableNode, zn as useFloatingTree, zr as useValueChanged, zt as MODIFIER_KEYS } from "./icons-p2A9zs8t.js";
|
|
6
6
|
import { a as renameObjectField, i as objectValue, l as resolveUiLanguage, n as isJsonValue, o as setObjectField, r as jsonDataTypes, s as valueType$1, t as initialValue } from "./value-DL_poNiC.js";
|
|
7
7
|
import { n as compile, r as validate } from "./flowRunInputEditorStore-Dsxyfwae.js";
|
|
8
|
-
import { t as WorkbenchSelect } from "./workbenchSelect-
|
|
8
|
+
import { t as WorkbenchSelect } from "./workbenchSelect-LRp_Xjeq.js";
|
|
9
9
|
import * as React from "react";
|
|
10
10
|
import reactExports, { Children, Fragment, Suspense, createContext, forwardRef, isValidElement, lazy, memo, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
11
11
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -4184,7 +4184,6 @@ function fallbackIcon$1(item) {
|
|
|
4184
4184
|
case "value": return "value";
|
|
4185
4185
|
case "wait": return "wait";
|
|
4186
4186
|
case "new-task":
|
|
4187
|
-
case "subflow":
|
|
4188
4187
|
case "comment": return "task";
|
|
4189
4188
|
}
|
|
4190
4189
|
}
|
|
@@ -4861,7 +4860,7 @@ function ConnectorAccessSettings({ connectionHref, onManage, onSelectReference,
|
|
|
4861
4860
|
const pendingUses = pendingConnectionUses(uses, providers.data);
|
|
4862
4861
|
const providerMetadata = Object.fromEntries((providers.data ?? []).map((provider) => [provider.serviceId, provider]));
|
|
4863
4862
|
const referenceIcon = (reference) => {
|
|
4864
|
-
const node = displayed?.node(reference.
|
|
4863
|
+
const node = displayed?.node(reference.nodeId);
|
|
4865
4864
|
if (node == null) return;
|
|
4866
4865
|
return node.kind == "trigger" ? triggerNodeIcon(node.trigger, providerMetadata) : semanticNodeIcon(node, actions);
|
|
4867
4866
|
};
|
|
@@ -5467,11 +5466,7 @@ function AccountReferences({ hierarchy = false, icon, code = false, references,
|
|
|
5467
5466
|
className: "i-lucide-light:arrow-up-right size-3 shrink-0 text-muted-foreground"
|
|
5468
5467
|
})]
|
|
5469
5468
|
})]
|
|
5470
|
-
}, JSON.stringify([
|
|
5471
|
-
reference.target,
|
|
5472
|
-
reference.nodeId,
|
|
5473
|
-
reference.kind
|
|
5474
|
-
]));
|
|
5469
|
+
}, JSON.stringify([reference.nodeId, reference.kind]));
|
|
5475
5470
|
})
|
|
5476
5471
|
}),
|
|
5477
5472
|
code && /* @__PURE__ */ jsx("p", {
|
|
@@ -7838,7 +7833,7 @@ function AccountSelect({ connections, disabled, loading = false, id, invalid, wa
|
|
|
7838
7833
|
})]
|
|
7839
7834
|
});
|
|
7840
7835
|
}
|
|
7841
|
-
function ConnectorAccount({ accessError, onConfigureAccess, action, actionError, actionId, activeConnections, authorizationPending, connection, connectionError, connectionId, connectors, disabled, fieldIdPrefix, loading,
|
|
7836
|
+
function ConnectorAccount({ accessError, onConfigureAccess, action, actionError, actionId, activeConnections, authorizationPending, connection, connectionError, connectionId, connectors, disabled, fieldIdPrefix, loading, nodeId }) {
|
|
7842
7837
|
const t = useTranslate();
|
|
7843
7838
|
const available = activeConnections ?? [];
|
|
7844
7839
|
const accessIssue = accessError ?? (actionError?.code == "connector.access-required" || actionError?.code == "connector.access-invalid" ? actionError.message : void 0);
|
|
@@ -7895,7 +7890,7 @@ function ConnectorAccount({ accessError, onConfigureAccess, action, actionError,
|
|
|
7895
7890
|
id: `${fieldIdPrefix}-connection`,
|
|
7896
7891
|
selectedConnection: connection,
|
|
7897
7892
|
selectedId: connectionId,
|
|
7898
|
-
onChange: (next) => void connectors.setConnection(
|
|
7893
|
+
onChange: (next) => void connectors.setConnection(nodeId, next),
|
|
7899
7894
|
onManage: onConfigureAccess
|
|
7900
7895
|
})]
|
|
7901
7896
|
}),
|
|
@@ -22833,30 +22828,33 @@ function EditableAgentSettingsProvider({ children, task, nodeId, store, connecto
|
|
|
22833
22828
|
const [flowId] = useState(store.$.flowId.value);
|
|
22834
22829
|
const [changes] = useState(() => new TaskExecutorChanges(task.executor, async (before, value) => {
|
|
22835
22830
|
if (store.$.flowId.value != flowId) return false;
|
|
22836
|
-
const current = store.$.revision.value?.node(
|
|
22831
|
+
const current = store.$.revision.value?.node(nodeId);
|
|
22837
22832
|
const definition = current?.kind == "task" ? current.definition : void 0;
|
|
22838
22833
|
if (definition == null || !("executor" in definition) || !dequal(definition.executor, before)) return false;
|
|
22839
22834
|
const decoded = decodeRevisionContent({
|
|
22840
|
-
modelVersion:
|
|
22835
|
+
modelVersion: 6,
|
|
22841
22836
|
modules: {},
|
|
22842
22837
|
document: {
|
|
22843
22838
|
bindings: {},
|
|
22844
|
-
subflows: {},
|
|
22845
22839
|
graph: {
|
|
22846
|
-
nodes: {
|
|
22840
|
+
nodes: { agent: {
|
|
22841
|
+
kind: "task",
|
|
22842
|
+
inputs: {},
|
|
22843
|
+
task: {
|
|
22844
|
+
...definition,
|
|
22845
|
+
executor: value
|
|
22846
|
+
}
|
|
22847
|
+
} },
|
|
22847
22848
|
edges: []
|
|
22848
|
-
}
|
|
22849
|
-
tasks: { agent: {
|
|
22850
|
-
...definition,
|
|
22851
|
-
executor: value
|
|
22852
|
-
} }
|
|
22849
|
+
}
|
|
22853
22850
|
}
|
|
22854
|
-
}).document.
|
|
22851
|
+
}).document.graph.nodes.agent;
|
|
22852
|
+
if (decoded.kind != "task" || !("executor" in decoded.task)) return false;
|
|
22855
22853
|
return store.saveTaskSettings(nodeId, {
|
|
22856
22854
|
kind: "agent",
|
|
22857
22855
|
name: definition.name,
|
|
22858
22856
|
before: definition,
|
|
22859
|
-
task: decoded
|
|
22857
|
+
task: decoded.task
|
|
22860
22858
|
});
|
|
22861
22859
|
}));
|
|
22862
22860
|
useEffect(() => {
|
|
@@ -22865,7 +22863,7 @@ function EditableAgentSettingsProvider({ children, task, nodeId, store, connecto
|
|
|
22865
22863
|
}, [changes, task.executor]);
|
|
22866
22864
|
const save = async () => {
|
|
22867
22865
|
const value = changes.value;
|
|
22868
|
-
const notificationInputs = (value.kind === "agent"
|
|
22866
|
+
const notificationInputs = (value.kind === "agent" ? value.notification : void 0)?.inputDefinitions ?? [];
|
|
22869
22867
|
if (value.kind == "agent" && (!value.model.trim() || !Number.isSafeInteger(value.maxRounds) || value.maxRounds < 1 || value.maxRounds > 100)) return false;
|
|
22870
22868
|
if (!agentFixedValuesValid(value, notificationInputs)) {
|
|
22871
22869
|
setSaveError(t("agent.invalidValues"));
|
|
@@ -23870,7 +23868,7 @@ function CodeEditor({ ariaDescribedBy, ariaLabel, diagnostics, disabled, errorLa
|
|
|
23870
23868
|
});
|
|
23871
23869
|
}
|
|
23872
23870
|
//#endregion
|
|
23873
|
-
//#region src/
|
|
23871
|
+
//#region src/workbench/browser/runtime/editor/generateTyping.ts
|
|
23874
23872
|
function generateTyping(language, inputsDef, outputsDef) {
|
|
23875
23873
|
if (language === "typescript") return genTypeScript(inputsDef, outputsDef) + "\n";
|
|
23876
23874
|
else return genJavaScript(inputsDef, outputsDef) + "\n";
|
|
@@ -31572,95 +31570,6 @@ function ResolutionDefinition({ disabled, selection, store }) {
|
|
|
31572
31570
|
}), error != null && /* @__PURE__ */ jsx(FieldError, { children: error })] })
|
|
31573
31571
|
});
|
|
31574
31572
|
}
|
|
31575
|
-
//#endregion
|
|
31576
|
-
//#region src/workbench/browser/runtime/editor/subflowDefinition.tsx
|
|
31577
|
-
function json$1(value) {
|
|
31578
|
-
return JSON.stringify(value, null, 2);
|
|
31579
|
-
}
|
|
31580
|
-
function arrayValue(value, label, t) {
|
|
31581
|
-
const parsed = JSON.parse(value);
|
|
31582
|
-
if (!Array.isArray(parsed)) throw new TypeError(t("inspector.errors.portDefinitions", { label }));
|
|
31583
|
-
return parsed;
|
|
31584
|
-
}
|
|
31585
|
-
function SubflowDefinition({ definition, disabled, store, subflowId }) {
|
|
31586
|
-
const t = useTranslate();
|
|
31587
|
-
const [name, setName] = useState(definition.name);
|
|
31588
|
-
const [inputs, setInputs] = useState(json$1(definition.inputs));
|
|
31589
|
-
const [outputs, setOutputs] = useState(json$1(definition.outputs));
|
|
31590
|
-
const [error, setError] = useState();
|
|
31591
|
-
useEffect(() => {
|
|
31592
|
-
setName(definition.name);
|
|
31593
|
-
setInputs(json$1(definition.inputs));
|
|
31594
|
-
setOutputs(json$1(definition.outputs));
|
|
31595
|
-
setError(void 0);
|
|
31596
|
-
}, [definition]);
|
|
31597
|
-
return /* @__PURE__ */ jsxs("form", {
|
|
31598
|
-
className: "inspector-section inspector-form",
|
|
31599
|
-
onSubmit: (event) => {
|
|
31600
|
-
event.preventDefault();
|
|
31601
|
-
if (disabled || store == null) return;
|
|
31602
|
-
try {
|
|
31603
|
-
const nextInputs = arrayValue(inputs, t("inspector.subflow.inputPorts"), t);
|
|
31604
|
-
const nextOutputs = arrayValue(outputs, t("inspector.subflow.outputPorts"), t);
|
|
31605
|
-
setError(void 0);
|
|
31606
|
-
store?.saveSubflowSettings(subflowId, {
|
|
31607
|
-
inputs: nextInputs,
|
|
31608
|
-
name: name.trim(),
|
|
31609
|
-
outputs: nextOutputs
|
|
31610
|
-
});
|
|
31611
|
-
} catch (parseError) {
|
|
31612
|
-
setError(parseError instanceof TypeError ? parseError.message : t("inspector.errors.portDefinitions"));
|
|
31613
|
-
}
|
|
31614
|
-
},
|
|
31615
|
-
children: [
|
|
31616
|
-
/* @__PURE__ */ jsx("h3", { children: t("inspector.subflow.definition") }),
|
|
31617
|
-
/* @__PURE__ */ jsxs(FieldGroup, { children: [
|
|
31618
|
-
/* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
31619
|
-
htmlFor: `${subflowId}-name`,
|
|
31620
|
-
children: t("common.name")
|
|
31621
|
-
}), /* @__PURE__ */ jsx(Input$1, {
|
|
31622
|
-
readOnly: disabled,
|
|
31623
|
-
id: `${subflowId}-name`,
|
|
31624
|
-
onChange: (event) => setName(event.target.value),
|
|
31625
|
-
value: name
|
|
31626
|
-
})] }),
|
|
31627
|
-
/* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
31628
|
-
htmlFor: `${subflowId}-inputs`,
|
|
31629
|
-
children: t("inspector.subflow.inputPorts")
|
|
31630
|
-
}), /* @__PURE__ */ jsx(Textarea, {
|
|
31631
|
-
readOnly: disabled,
|
|
31632
|
-
id: `${subflowId}-inputs`,
|
|
31633
|
-
onChange: (event) => setInputs(event.target.value),
|
|
31634
|
-
rows: 8,
|
|
31635
|
-
spellCheck: false,
|
|
31636
|
-
value: inputs
|
|
31637
|
-
})] }),
|
|
31638
|
-
/* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
31639
|
-
htmlFor: `${subflowId}-outputs`,
|
|
31640
|
-
children: t("inspector.subflow.outputPorts")
|
|
31641
|
-
}), /* @__PURE__ */ jsx(Textarea, {
|
|
31642
|
-
readOnly: disabled,
|
|
31643
|
-
id: `${subflowId}-outputs`,
|
|
31644
|
-
onChange: (event) => setOutputs(event.target.value),
|
|
31645
|
-
rows: 10,
|
|
31646
|
-
spellCheck: false,
|
|
31647
|
-
value: outputs
|
|
31648
|
-
})] }),
|
|
31649
|
-
error != null && /* @__PURE__ */ jsx(FieldError, { children: error })
|
|
31650
|
-
] }),
|
|
31651
|
-
!disabled && /* @__PURE__ */ jsx("div", {
|
|
31652
|
-
className: "form-actions",
|
|
31653
|
-
children: /* @__PURE__ */ jsx(Button$1, {
|
|
31654
|
-
disabled: disabled || name.trim() == "",
|
|
31655
|
-
size: "sm",
|
|
31656
|
-
type: "submit",
|
|
31657
|
-
variant: "secondary",
|
|
31658
|
-
children: t("inspector.subflow.save")
|
|
31659
|
-
})
|
|
31660
|
-
})
|
|
31661
|
-
]
|
|
31662
|
-
});
|
|
31663
|
-
}
|
|
31664
31573
|
var triggerScheduleEditor_module_default = {
|
|
31665
31574
|
describedControl: "triggerScheduleEditor_describedControl_49cac",
|
|
31666
31575
|
describedInput: "triggerScheduleEditor_describedInput_49cac",
|
|
@@ -36003,13 +35912,12 @@ function WebhookEditor({ bodyFields, method, options, disabled, readOnly, output
|
|
|
36003
35912
|
}
|
|
36004
35913
|
//#endregion
|
|
36005
35914
|
//#region src/workbench/browser/runtime/editor/nodeInspector.tsx
|
|
36006
|
-
function inspectorIcon(node
|
|
35915
|
+
function inspectorIcon(node) {
|
|
36007
35916
|
if (node?.kind == "trigger") return "trigger";
|
|
36008
35917
|
if (node?.kind == "condition") return "condition";
|
|
36009
35918
|
if (node?.kind == "value") return "value";
|
|
36010
35919
|
if (node?.kind == "approval") return "check";
|
|
36011
35920
|
if (node?.kind == "wait") return "wait";
|
|
36012
|
-
if (node?.kind == "subflow" || node == null && target.kind == "subflow") return "subflow";
|
|
36013
35921
|
if (node?.kind == "task" && node.definition != null && "executor" in node.definition) {
|
|
36014
35922
|
if (node.definition.executor.kind == "decision") return "decision";
|
|
36015
35923
|
if (node.definition.executor.kind == "openapi") return "task";
|
|
@@ -36023,7 +35931,6 @@ function nodePurposePlaceholder(selection, t, action, displays) {
|
|
|
36023
35931
|
case "value": return t("addNode.valueDescription");
|
|
36024
35932
|
case "approval": return t("addNode.approvalDescription");
|
|
36025
35933
|
case "wait": return t("addNode.waitDescription");
|
|
36026
|
-
case "subflow": return t("addNode.subflowDescription");
|
|
36027
35934
|
case "trigger": {
|
|
36028
35935
|
const node = selection.node;
|
|
36029
35936
|
switch (node.kind) {
|
|
@@ -36049,8 +35956,8 @@ function nodePurposePlaceholder(selection, t, action, displays) {
|
|
|
36049
35956
|
}
|
|
36050
35957
|
}
|
|
36051
35958
|
}
|
|
36052
|
-
function inputUpstreamSources({ revision, sourceNodeIcons,
|
|
36053
|
-
const graph = revision.graph(
|
|
35959
|
+
function inputUpstreamSources({ revision, sourceNodeIcons, selection, store, handleName, t, triggerDisplays }) {
|
|
35960
|
+
const graph = revision.graph();
|
|
36054
35961
|
const mapping = nodeInputMappings(selection.node)[handleName];
|
|
36055
35962
|
const sources = mapping?.kind == "sources" ? mapping.sources.filter((source) => source.kind == "node") : [];
|
|
36056
35963
|
const providerDisplay = (node) => node?.kind == "integration" || node?.kind == "poll" ? triggerDisplays?.[node.definition.key] : void 0;
|
|
@@ -36058,7 +35965,7 @@ function inputUpstreamSources({ revision, sourceNodeIcons, target, selection, st
|
|
|
36058
35965
|
current: sources.map((source) => {
|
|
36059
35966
|
const node = graph.nodes[source.nodeId];
|
|
36060
35967
|
return {
|
|
36061
|
-
description: node == null ? revision.outputDescription(
|
|
35968
|
+
description: node == null ? revision.outputDescription(source.nodeId, source.output) : presentProviderOutputDescription(node, source.output, presentBuiltInOutputDescription(node, source.output, revision.outputDescription(source.nodeId, source.output), t), providerDisplay(node)),
|
|
36062
35969
|
icon: sourceNodeIcons?.[source.nodeId],
|
|
36063
35970
|
nodeId: source.nodeId,
|
|
36064
35971
|
nodeName: node?.name,
|
|
@@ -36067,7 +35974,7 @@ function inputUpstreamSources({ revision, sourceNodeIcons, target, selection, st
|
|
|
36067
35974
|
check: void 0
|
|
36068
35975
|
};
|
|
36069
35976
|
}),
|
|
36070
|
-
query: revision.inputSource(
|
|
35977
|
+
query: revision.inputSource(selection.id, handleName),
|
|
36071
35978
|
groups: [],
|
|
36072
35979
|
describeGroups: (candidates) => Object.entries(candidates).map(([nodeId, outputs]) => {
|
|
36073
35980
|
const node = graph.nodes[nodeId];
|
|
@@ -36089,7 +35996,7 @@ function NodeInspector({ variables = {
|
|
|
36089
35996
|
loading: false,
|
|
36090
35997
|
names: [],
|
|
36091
35998
|
onOpen: void 0
|
|
36092
|
-
}, readOnly = false,
|
|
35999
|
+
}, readOnly = false, connectorAction, connectorActionError, connectorAccessError, connectorAuthorizationPending = false, connectorConnection, connectorConnectionError, activeConnectorConnections, connectors: liveConnectors, connectorAccess, connectorCandidates, onConfigureConnectorAccess, prepareConnectorAction, connectorLoading = false, disabled: temporarilyDisabled = false, diagnostics, focus, revision, selection, sourceNodeIcons, store: writableStore, theme, triggerActiveConnections, triggerAuthorizationPending = false, triggerConnection, triggerConnectionError, triggerConnectionLoading = false, triggerDisplays, triggers: liveTriggers }) {
|
|
36093
36000
|
const store = readOnly ? void 0 : writableStore;
|
|
36094
36001
|
const connectors = readOnly ? void 0 : liveConnectors;
|
|
36095
36002
|
const triggers = readOnly ? void 0 : liveTriggers;
|
|
@@ -36103,7 +36010,7 @@ function NodeInspector({ variables = {
|
|
|
36103
36010
|
const unconfiguredOpenApi = task != null && "executor" in task && task.executor.kind == "openapi" && !task.executor.path;
|
|
36104
36011
|
const isLlm = task != null && "executor" in task && task.executor.kind == "llm";
|
|
36105
36012
|
const connector = task != null && "executor" in task && task.executor.kind == "connector" ? task.executor : void 0;
|
|
36106
|
-
const
|
|
36013
|
+
const nodeId = selection?.kind == "task" ? selection.id : void 0;
|
|
36107
36014
|
const locatedRequest = useRef();
|
|
36108
36015
|
useEffect(() => {
|
|
36109
36016
|
if (focus == null) return;
|
|
@@ -36150,7 +36057,7 @@ function NodeInspector({ variables = {
|
|
|
36150
36057
|
triggers,
|
|
36151
36058
|
onConfigureAccess: (providerId) => void triggers.connect(providerId)
|
|
36152
36059
|
}),
|
|
36153
|
-
!readOnly && connectors != null && connector != null &&
|
|
36060
|
+
!readOnly && connectors != null && connector != null && nodeId != null && connectorAction?.authenticated !== false && /* @__PURE__ */ jsx(ConnectorAccount, {
|
|
36154
36061
|
action: connectorAction,
|
|
36155
36062
|
actionError: connectorActionError,
|
|
36156
36063
|
accessError: connectorAccessError,
|
|
@@ -36165,7 +36072,7 @@ function NodeInspector({ variables = {
|
|
|
36165
36072
|
disabled,
|
|
36166
36073
|
fieldIdPrefix: `task-${selection?.id}`,
|
|
36167
36074
|
loading: connectorLoading,
|
|
36168
|
-
|
|
36075
|
+
nodeId
|
|
36169
36076
|
}),
|
|
36170
36077
|
selection != null && /* @__PURE__ */ jsx(NodeDescription, {
|
|
36171
36078
|
value: selection.node.description,
|
|
@@ -36292,7 +36199,6 @@ function NodeInspector({ variables = {
|
|
|
36292
36199
|
upstream: inputUpstreamSources({
|
|
36293
36200
|
revision,
|
|
36294
36201
|
sourceNodeIcons,
|
|
36295
|
-
target,
|
|
36296
36202
|
selection,
|
|
36297
36203
|
store,
|
|
36298
36204
|
handleName: definition.handle,
|
|
@@ -36317,8 +36223,8 @@ function NodeInspector({ variables = {
|
|
|
36317
36223
|
task: value
|
|
36318
36224
|
}) ?? Promise.resolve(false)
|
|
36319
36225
|
}, `openapi:${selection?.id}`),
|
|
36320
|
-
!unconfiguredOpenApi && (selection?.kind === "approval" || selection?.kind === "wait" || selection?.kind === "
|
|
36321
|
-
const definitions = selection.kind === "task" ? [...selection.definition?.inputs ?? []] :
|
|
36226
|
+
!unconfiguredOpenApi && (selection?.kind === "approval" || selection?.kind === "wait" || selection?.kind === "task") && (() => {
|
|
36227
|
+
const definitions = selection.kind === "task" ? [...selection.definition?.inputs ?? []] : [...selection.node.inputDefinitions];
|
|
36322
36228
|
const handles = new Set(definitions.flatMap((definition) => "handle" in definition ? [definition.handle] : []));
|
|
36323
36229
|
for (const handle of Object.keys(selection.node.inputs)) if (!handles.has(handle) && !(selection.kind === "task" && selection.node.additionalInputs?.some((port) => port.handle === handle))) definitions.push({
|
|
36324
36230
|
handle,
|
|
@@ -36350,7 +36256,7 @@ function NodeInspector({ variables = {
|
|
|
36350
36256
|
onReset: () => {
|
|
36351
36257
|
return store?.resetInputs(selection.id, entries.flatMap((entry) => "group" in entry ? [] : [entry.definition.handle]));
|
|
36352
36258
|
},
|
|
36353
|
-
onDefinitions: selection.kind === "task" && selection.definition != null && (selection.node.task
|
|
36259
|
+
onDefinitions: selection.kind === "task" && selection.definition != null && ("moduleId" in selection.node.task || isAgent) ? (inputs, deletion, values) => {
|
|
36354
36260
|
store?.saveTaskPorts(selection.id, {
|
|
36355
36261
|
inputs,
|
|
36356
36262
|
outputs: selection.definition.outputs
|
|
@@ -36365,7 +36271,6 @@ function NodeInspector({ variables = {
|
|
|
36365
36271
|
renderSource: (handle) => inputUpstreamSources({
|
|
36366
36272
|
revision,
|
|
36367
36273
|
sourceNodeIcons,
|
|
36368
|
-
target,
|
|
36369
36274
|
selection,
|
|
36370
36275
|
store,
|
|
36371
36276
|
handleName: handle,
|
|
@@ -36384,7 +36289,7 @@ function NodeInspector({ variables = {
|
|
|
36384
36289
|
return /* @__PURE__ */ jsxs("section", {
|
|
36385
36290
|
className: "inspector-port-section",
|
|
36386
36291
|
"data-inspector-section": "inputs",
|
|
36387
|
-
children: [fields, selection.kind === "task" && selection.definition != null && selection.node.task
|
|
36292
|
+
children: [fields, selection.kind === "task" && selection.definition != null && !("moduleId" in selection.node.task) && isLlm && /* @__PURE__ */ jsx("section", {
|
|
36388
36293
|
className: "inspector-nested-port-section",
|
|
36389
36294
|
children: /* @__PURE__ */ jsx(NodeInputs, {
|
|
36390
36295
|
readOnly,
|
|
@@ -36417,7 +36322,6 @@ function NodeInspector({ variables = {
|
|
|
36417
36322
|
renderSource: (handle) => inputUpstreamSources({
|
|
36418
36323
|
revision,
|
|
36419
36324
|
sourceNodeIcons,
|
|
36420
|
-
target,
|
|
36421
36325
|
selection,
|
|
36422
36326
|
store,
|
|
36423
36327
|
handleName: handle,
|
|
@@ -36436,7 +36340,6 @@ function NodeInspector({ variables = {
|
|
|
36436
36340
|
renderSource: (handle) => inputUpstreamSources({
|
|
36437
36341
|
revision,
|
|
36438
36342
|
sourceNodeIcons,
|
|
36439
|
-
target,
|
|
36440
36343
|
selection,
|
|
36441
36344
|
store,
|
|
36442
36345
|
handleName: handle,
|
|
@@ -36444,7 +36347,7 @@ function NodeInspector({ variables = {
|
|
|
36444
36347
|
triggerDisplays
|
|
36445
36348
|
}),
|
|
36446
36349
|
variableName: (source) => source.kind === "binding" ? revision.binding(source.bindingId)?.target : void 0,
|
|
36447
|
-
sourceType: (source) => revision.sourceType(
|
|
36350
|
+
sourceType: (source) => revision.sourceType(source),
|
|
36448
36351
|
onVariable: (handle, name) => {
|
|
36449
36352
|
store?.setInputVariable(selection.id, handle, name);
|
|
36450
36353
|
},
|
|
@@ -36473,7 +36376,7 @@ function NodeInspector({ variables = {
|
|
|
36473
36376
|
title: t("inspector.ports.outputsTitle"),
|
|
36474
36377
|
output: true,
|
|
36475
36378
|
values: presentDecisionOutputs(selection.definition, t),
|
|
36476
|
-
disabled: disabled || !(selection.node.task
|
|
36379
|
+
disabled: disabled || !("moduleId" in selection.node.task || isAgent),
|
|
36477
36380
|
onChange: (outputs, deletion) => {
|
|
36478
36381
|
store?.saveTaskPorts(selection.id, {
|
|
36479
36382
|
inputs: selection.definition.inputs,
|
|
@@ -36482,7 +36385,7 @@ function NodeInspector({ variables = {
|
|
|
36482
36385
|
}
|
|
36483
36386
|
})
|
|
36484
36387
|
}),
|
|
36485
|
-
(selection?.kind === "
|
|
36388
|
+
(selection?.kind === "approval" || selection?.kind === "wait") && /* @__PURE__ */ jsx("section", {
|
|
36486
36389
|
className: "inspector-port-section",
|
|
36487
36390
|
children: /* @__PURE__ */ jsx(PortDefinitionEditor, {
|
|
36488
36391
|
readOnly,
|
|
@@ -36491,71 +36394,46 @@ function NodeInspector({ variables = {
|
|
|
36491
36394
|
title: t("inspector.ports.outputsTitle"),
|
|
36492
36395
|
output: true,
|
|
36493
36396
|
disabled: true,
|
|
36494
|
-
values:
|
|
36397
|
+
values: presentResolutionOutputs(selection.node, t),
|
|
36495
36398
|
onChange: () => {}
|
|
36496
36399
|
})
|
|
36497
36400
|
}),
|
|
36498
|
-
selection == null ?
|
|
36499
|
-
definition: revision.subflow(target.id),
|
|
36500
|
-
disabled,
|
|
36501
|
-
store,
|
|
36502
|
-
subflowId: target.id
|
|
36503
|
-
}) : /* @__PURE__ */ jsx("div", {
|
|
36401
|
+
selection == null ? /* @__PURE__ */ jsx("div", {
|
|
36504
36402
|
className: "inspector-empty",
|
|
36505
36403
|
children: t("inspector.selectNode")
|
|
36506
|
-
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
36507
|
-
|
|
36508
|
-
|
|
36509
|
-
|
|
36510
|
-
|
|
36511
|
-
|
|
36512
|
-
|
|
36513
|
-
|
|
36514
|
-
|
|
36515
|
-
|
|
36516
|
-
|
|
36517
|
-
|
|
36518
|
-
|
|
36519
|
-
|
|
36520
|
-
|
|
36521
|
-
|
|
36522
|
-
|
|
36523
|
-
|
|
36524
|
-
|
|
36525
|
-
|
|
36526
|
-
|
|
36527
|
-
|
|
36528
|
-
|
|
36529
|
-
|
|
36530
|
-
|
|
36531
|
-
|
|
36532
|
-
|
|
36533
|
-
|
|
36534
|
-
|
|
36535
|
-
|
|
36536
|
-
|
|
36537
|
-
|
|
36538
|
-
|
|
36539
|
-
store
|
|
36540
|
-
}),
|
|
36541
|
-
selection.kind == "subflow" && /* @__PURE__ */ jsxs("section", {
|
|
36542
|
-
className: "inspector-section",
|
|
36543
|
-
children: [
|
|
36544
|
-
/* @__PURE__ */ jsx("h3", { children: t("inspector.subflow.referenced") }),
|
|
36545
|
-
/* @__PURE__ */ jsx("p", {
|
|
36546
|
-
className: "reference-value",
|
|
36547
|
-
children: selection.definition?.name ?? selection.node.subflowId
|
|
36548
|
-
}),
|
|
36549
|
-
onOpenSubflow != null && selection.definition != null && /* @__PURE__ */ jsx(Button$1, {
|
|
36550
|
-
className: "self-start",
|
|
36551
|
-
size: "sm",
|
|
36552
|
-
variant: "outline",
|
|
36553
|
-
onClick: () => onOpenSubflow(selection.node.subflowId),
|
|
36554
|
-
children: t("inspector.subflow.open")
|
|
36555
|
-
})
|
|
36556
|
-
]
|
|
36557
|
-
})
|
|
36558
|
-
] })
|
|
36404
|
+
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [selection.kind == "trigger" ? null : selection.kind == "task" ? selection.definition == null ? /* @__PURE__ */ jsx("div", {
|
|
36405
|
+
className: "inspector-section section-error",
|
|
36406
|
+
children: t("inspector.task.missing")
|
|
36407
|
+
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [isLlm && /* @__PURE__ */ jsx(LlmTaskSection, {
|
|
36408
|
+
selection,
|
|
36409
|
+
disabled,
|
|
36410
|
+
store
|
|
36411
|
+
}), /* @__PURE__ */ jsxs(GeneralSettings, {
|
|
36412
|
+
readOnly,
|
|
36413
|
+
title: isAgent || isDecision ? t("agent.more") : void 0,
|
|
36414
|
+
disabled,
|
|
36415
|
+
node: selection.node,
|
|
36416
|
+
nodeId: selection.id,
|
|
36417
|
+
store,
|
|
36418
|
+
children: [isAgent && /* @__PURE__ */ jsx(AgentAdvancedSettings, {}), isDecision && /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
36419
|
+
htmlFor: `${selection.id}-model`,
|
|
36420
|
+
children: t("agent.model")
|
|
36421
|
+
}), /* @__PURE__ */ jsx(Input$1, {
|
|
36422
|
+
id: `${selection.id}-model`,
|
|
36423
|
+
readOnly: true,
|
|
36424
|
+
value: "typesafe/jev"
|
|
36425
|
+
})] })]
|
|
36426
|
+
})] }) : selection.kind == "approval" || selection.kind == "wait" ? /* @__PURE__ */ jsx(ResolutionDefinition, {
|
|
36427
|
+
disabled,
|
|
36428
|
+
selection,
|
|
36429
|
+
store
|
|
36430
|
+
}) : null, selection.kind != "trigger" && selection.kind != "task" && /* @__PURE__ */ jsx(GeneralSettings, {
|
|
36431
|
+
readOnly,
|
|
36432
|
+
disabled,
|
|
36433
|
+
node: selection.node,
|
|
36434
|
+
nodeId: selection.id,
|
|
36435
|
+
store
|
|
36436
|
+
})] })
|
|
36559
36437
|
]
|
|
36560
36438
|
})
|
|
36561
36439
|
});
|
|
@@ -36761,7 +36639,6 @@ function useInspectorPanel({ identity, preferences, selectedNodeIds, onSelectNod
|
|
|
36761
36639
|
//#region src/canvas/browser/stores/node/constants.ts
|
|
36762
36640
|
var NODE_TYPE = /* @__PURE__ */ function(NODE_TYPE) {
|
|
36763
36641
|
NODE_TYPE["TaskNode"] = "task_node";
|
|
36764
|
-
NODE_TYPE["SubflowNode"] = "subflow_node";
|
|
36765
36642
|
NODE_TYPE["ValueNode"] = "value_node";
|
|
36766
36643
|
NODE_TYPE["ConditionNode"] = "condition_node";
|
|
36767
36644
|
NODE_TYPE["CommentNode"] = "comment_node";
|
|
@@ -39530,7 +39407,6 @@ function createNodeEntry(node, contentKey, canvasStore) {
|
|
|
39530
39407
|
const types = {
|
|
39531
39408
|
approval: NODE_TYPE.TaskNode,
|
|
39532
39409
|
condition: NODE_TYPE.ConditionNode,
|
|
39533
|
-
subflow: NODE_TYPE.SubflowNode,
|
|
39534
39410
|
task: NODE_TYPE.TaskNode,
|
|
39535
39411
|
trigger: NODE_TYPE.TriggerNode,
|
|
39536
39412
|
value: NODE_TYPE.ValueNode,
|
|
@@ -51615,16 +51491,14 @@ function CardCollapse({ hidden, children }) {
|
|
|
51615
51491
|
//#region src/canvas/browser/graph/Nodes/components/constants.ts
|
|
51616
51492
|
var defaultNodeIcon = "i-carbon:hexagon-vertical-outline";
|
|
51617
51493
|
var defaultConditionIcon = "i-carbon:child-node";
|
|
51618
|
-
var defaultSubflowIcon = "i-carbon:subflow";
|
|
51619
51494
|
var defaultTriggerIcon = "i-codicon:symbol-event";
|
|
51620
|
-
var iconForNodeType = (nodeType) => nodeType === NODE_TYPE.TaskNode ? "i-carbon:code" : nodeType === NODE_TYPE.ConditionNode ? defaultConditionIcon : nodeType === NODE_TYPE.
|
|
51495
|
+
var iconForNodeType = (nodeType) => nodeType === NODE_TYPE.TaskNode ? "i-carbon:code" : nodeType === NODE_TYPE.ConditionNode ? defaultConditionIcon : nodeType === NODE_TYPE.TriggerNode ? defaultTriggerIcon : defaultNodeIcon;
|
|
51621
51496
|
//#endregion
|
|
51622
51497
|
//#region src/canvas/browser/graph/Nodes/components/CanvasNodeIcon.tsx
|
|
51623
51498
|
function nodeTypeForKind(kind) {
|
|
51624
51499
|
switch (kind) {
|
|
51625
51500
|
case "task": return NODE_TYPE.TaskNode;
|
|
51626
51501
|
case "condition": return NODE_TYPE.ConditionNode;
|
|
51627
|
-
case "subflow": return NODE_TYPE.SubflowNode;
|
|
51628
51502
|
case "trigger": return NODE_TYPE.TriggerNode;
|
|
51629
51503
|
case "comment": return NODE_TYPE.CommentNode;
|
|
51630
51504
|
default: return NODE_TYPE.ValueNode;
|
|
@@ -53431,7 +53305,6 @@ var NODE_TYPES = {
|
|
|
53431
53305
|
default: BasicNode,
|
|
53432
53306
|
[NODE_TYPE.TaskNode]: BasicNode,
|
|
53433
53307
|
[NODE_TYPE.ValueNode]: BasicNode,
|
|
53434
|
-
[NODE_TYPE.SubflowNode]: BasicNode,
|
|
53435
53308
|
[NODE_TYPE.ConditionNode]: BasicNode,
|
|
53436
53309
|
[NODE_TYPE.CommentNode]: BasicNode,
|
|
53437
53310
|
[NODE_TYPE.TriggerNode]: BasicNode
|
|
@@ -55060,7 +54933,7 @@ function focusPanel(event) {
|
|
|
55060
54933
|
if (element instanceof Element && element.closest("a, button, input, label, select, textarea, [contenteditable=\"true\"]")) return;
|
|
55061
54934
|
event.currentTarget.focus({ preventScroll: true });
|
|
55062
54935
|
}
|
|
55063
|
-
var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeControl, addNodeOptions, history, disabled, interactiveMode$, focusNodeRequest, inspectorOpen, model, onAddNode, onConnect, onChangeNodeContentHidden, onChangeComment, onCopy, onDeleteEdge, onDeleteNodes, onDuplicate, onMoveNodes, onMoveViewport, onPaste, provideAddNodeOptions, onSelectNodes, onActivateSelection, onSelectionStart, onSelectionEnd, onToggleInspector, ignoredNodeIds, onIgnoreNodes, runControl, cornerLeading, connectionControl, topLeftTools, bottomRightTools, selectedNodeIds,
|
|
54936
|
+
var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeControl, addNodeOptions, history, disabled, interactiveMode$, focusNodeRequest, inspectorOpen, model, onAddNode, onConnect, onChangeNodeContentHidden, onChangeComment, onCopy, onDeleteEdge, onDeleteNodes, onDuplicate, onMoveNodes, onMoveViewport, onPaste, provideAddNodeOptions, onSelectNodes, onActivateSelection, onSelectionStart, onSelectionEnd, onToggleInspector, ignoredNodeIds, onIgnoreNodes, runControl, cornerLeading, connectionControl, topLeftTools, bottomRightTools, selectedNodeIds, theme }, ref) {
|
|
55064
54937
|
const [pickerRequest, setPickerRequest] = useState();
|
|
55065
54938
|
const [pickerCentered, setPickerCentered] = useState(false);
|
|
55066
54939
|
useEffect(() => {
|
|
@@ -55108,16 +54981,6 @@ var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeC
|
|
|
55108
54981
|
return source.kind == "condition" || source.kind == "approval" || source.kind == "wait" ? source.outputs.some((port) => "handle" in port && `$branch:${port.handle}` == edge.sourceHandle) : edge.sourceHandle == "$out";
|
|
55109
54982
|
};
|
|
55110
54983
|
}, [model.nodes]);
|
|
55111
|
-
useEffect(() => {
|
|
55112
|
-
setPickerRequest(void 0);
|
|
55113
|
-
setPickerCentered(false);
|
|
55114
|
-
setAddNodeRequest(void 0);
|
|
55115
|
-
setAddItemRequest(void 0);
|
|
55116
|
-
pendingAdd.current?.(void 0);
|
|
55117
|
-
pendingAdd.current = void 0;
|
|
55118
|
-
dynamicOptions.current.clear();
|
|
55119
|
-
draggedNode.current.clear();
|
|
55120
|
-
}, [target?.kind == "subflow" ? target.id : void 0, target?.kind]);
|
|
55121
54984
|
const canvasCenter = () => ({
|
|
55122
54985
|
x: (canvas.current?.clientWidth ?? 184) / 2,
|
|
55123
54986
|
y: (canvas.current?.clientHeight ?? 184) / 2
|
|
@@ -55172,7 +55035,7 @@ var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeC
|
|
|
55172
55035
|
});
|
|
55173
55036
|
};
|
|
55174
55037
|
const manualTrigger = staticOptions.get("trigger:manual");
|
|
55175
|
-
const needsTrigger =
|
|
55038
|
+
const needsTrigger = !model.nodes.some((node) => node.kind == "trigger");
|
|
55176
55039
|
const addRecommended = async (option) => {
|
|
55177
55040
|
if (addingRecommended.current) return;
|
|
55178
55041
|
addingRecommended.current = true;
|
|
@@ -55183,7 +55046,7 @@ var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeC
|
|
|
55183
55046
|
}
|
|
55184
55047
|
};
|
|
55185
55048
|
const keyDown = (event) => {
|
|
55186
|
-
if (disabled
|
|
55049
|
+
if (disabled) return;
|
|
55187
55050
|
if (!(event.target instanceof Node) || !event.currentTarget.contains(event.target)) return;
|
|
55188
55051
|
if (event.target instanceof Element && event.target.closest("[contenteditable=\"true\"], [role=\"dialog\"], .nokey")) return;
|
|
55189
55052
|
if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement) return;
|
|
@@ -55223,7 +55086,7 @@ var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeC
|
|
|
55223
55086
|
dark: theme == "dark",
|
|
55224
55087
|
editable: !disabled,
|
|
55225
55088
|
focusNodeRequest: readyFocusNodeRequest,
|
|
55226
|
-
identity:
|
|
55089
|
+
identity: "flow",
|
|
55227
55090
|
interactiveMode$,
|
|
55228
55091
|
isValidConnection,
|
|
55229
55092
|
language,
|
|
@@ -55231,7 +55094,7 @@ var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeC
|
|
|
55231
55094
|
cornerTools: /* @__PURE__ */ jsxs(Fragment$1, { children: [connectionControl, /* @__PURE__ */ jsx(WorkbenchInspectorToggle, {
|
|
55232
55095
|
label: t("designer.toggleInspector"),
|
|
55233
55096
|
open: inspectorOpen,
|
|
55234
|
-
disabled
|
|
55097
|
+
disabled,
|
|
55235
55098
|
onToggle: onToggleInspector
|
|
55236
55099
|
})] }),
|
|
55237
55100
|
cornerLeading,
|
|
@@ -55251,7 +55114,7 @@ var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeC
|
|
|
55251
55114
|
},
|
|
55252
55115
|
addNodeControl,
|
|
55253
55116
|
pickerOpen: pickerRequest != null,
|
|
55254
|
-
disabled
|
|
55117
|
+
disabled,
|
|
55255
55118
|
onOpenNodePicker: openAddNode,
|
|
55256
55119
|
runControl,
|
|
55257
55120
|
onAddTrigger: needsTrigger && model.nodes.length > 0 && manualTrigger != null ? () => void addRecommended(manualTrigger) : void 0
|
|
@@ -55321,7 +55184,7 @@ var WorkbenchCanvas = forwardRef(function WorkbenchCanvas({ nodePicker, addNodeC
|
|
|
55321
55184
|
draggedNode.current.clear();
|
|
55322
55185
|
}
|
|
55323
55186
|
}, `${pickerRequest.screenPosition.x}:${pickerRequest.screenPosition.y}`),
|
|
55324
|
-
|
|
55187
|
+
model.nodes.length == 0 && /* @__PURE__ */ jsxs("div", {
|
|
55325
55188
|
className: "canvas-empty",
|
|
55326
55189
|
children: [/* @__PURE__ */ jsxs(Button$1, {
|
|
55327
55190
|
className: "canvas-empty-add",
|
|
@@ -55760,15 +55623,13 @@ function RevisionCanvas({ draft, presentation, theme, interactiveMode$, label, b
|
|
|
55760
55623
|
const t = useTranslate();
|
|
55761
55624
|
const language = useLang();
|
|
55762
55625
|
const revision = useMemo(() => revisionView(draft), [draft]);
|
|
55763
|
-
const
|
|
55764
|
-
const graphId = target.kind === "flow" ? "flow" : `subflow:${target.id}`;
|
|
55626
|
+
const graphId = "flow";
|
|
55765
55627
|
const [sessions, setSessions] = useState({});
|
|
55766
55628
|
const [selected, setSelected] = useState([]);
|
|
55767
55629
|
const [inspectorOpen, setInspectorOpen] = useState(false);
|
|
55768
55630
|
const [focus, setFocus] = useState();
|
|
55769
|
-
const baseline = useMemo(() => designerGraph(draft,
|
|
55631
|
+
const baseline = useMemo(() => designerGraph(draft, presentation?.value, [], {}, {}, t), [
|
|
55770
55632
|
draft,
|
|
55771
|
-
target,
|
|
55772
55633
|
presentation,
|
|
55773
55634
|
t
|
|
55774
55635
|
]);
|
|
@@ -55785,39 +55646,21 @@ function RevisionCanvas({ draft, presentation, theme, interactiveMode$, label, b
|
|
|
55785
55646
|
const position = session?.positions?.[node.id];
|
|
55786
55647
|
return position != null && (position.x !== node.position.x || position.y !== node.position.y);
|
|
55787
55648
|
});
|
|
55788
|
-
const
|
|
55789
|
-
setTarget(next);
|
|
55790
|
-
setSelected([]);
|
|
55791
|
-
setFocus(void 0);
|
|
55792
|
-
};
|
|
55793
|
-
const selection = selected.length === 1 ? revision.node(target, selected[0]) : void 0;
|
|
55649
|
+
const selection = selected.length === 1 ? revision.node(selected[0]) : void 0;
|
|
55794
55650
|
const comment = selected.length === 1 ? model.nodes.find((node) => node.id === selected[0] && node.kind === "comment") : void 0;
|
|
55795
|
-
const navigation =
|
|
55796
|
-
|
|
55797
|
-
|
|
55798
|
-
|
|
55799
|
-
|
|
55800
|
-
|
|
55801
|
-
|
|
55802
|
-
|
|
55803
|
-
|
|
55804
|
-
|
|
55805
|
-
|
|
55806
|
-
|
|
55807
|
-
|
|
55808
|
-
children: t("snapshot.missingLayout")
|
|
55809
|
-
}),
|
|
55810
|
-
moved && /* @__PURE__ */ jsxs(Button$1, {
|
|
55811
|
-
className: "ml-auto",
|
|
55812
|
-
size: "xs",
|
|
55813
|
-
variant: "ghost",
|
|
55814
|
-
onClick: () => setSessions((current) => changeRevisionCanvasSession(current, graphId, { kind: "restore" })),
|
|
55815
|
-
children: [/* @__PURE__ */ jsx("i", {
|
|
55816
|
-
"aria-hidden": "true",
|
|
55817
|
-
className: "i-lucide-light:rotate-ccw"
|
|
55818
|
-
}), t("snapshot.restore")]
|
|
55819
|
-
})
|
|
55820
|
-
] }) : void 0;
|
|
55651
|
+
const navigation = presentation == null || moved ? /* @__PURE__ */ jsxs(Fragment$1, { children: [presentation == null && /* @__PURE__ */ jsx("span", {
|
|
55652
|
+
className: "revision-viewer-hint",
|
|
55653
|
+
children: t("snapshot.missingLayout")
|
|
55654
|
+
}), moved && /* @__PURE__ */ jsxs(Button$1, {
|
|
55655
|
+
className: "ml-auto",
|
|
55656
|
+
size: "xs",
|
|
55657
|
+
variant: "ghost",
|
|
55658
|
+
onClick: () => setSessions((current) => changeRevisionCanvasSession(current, graphId, { kind: "restore" })),
|
|
55659
|
+
children: [/* @__PURE__ */ jsx("i", {
|
|
55660
|
+
"aria-hidden": "true",
|
|
55661
|
+
className: "i-lucide-light:rotate-ccw"
|
|
55662
|
+
}), t("snapshot.restore")]
|
|
55663
|
+
})] }) : void 0;
|
|
55821
55664
|
return /* @__PURE__ */ jsxs("section", {
|
|
55822
55665
|
ref: root,
|
|
55823
55666
|
className: `revision-viewer${inspectorOpen ? " inspector-open" : ""}`,
|
|
@@ -55876,19 +55719,14 @@ function RevisionCanvas({ draft, presentation, theme, interactiveMode$, label, b
|
|
|
55876
55719
|
className: "open-flow-property-panel",
|
|
55877
55720
|
theme,
|
|
55878
55721
|
title: selection?.node.name ?? comment?.title ?? t("inspector.title"),
|
|
55879
|
-
icon: comment?.kind === "comment" ? "comment" : inspectorIcon(selection
|
|
55722
|
+
icon: comment?.kind === "comment" ? "comment" : inspectorIcon(selection),
|
|
55880
55723
|
focusOnOpen: true,
|
|
55881
55724
|
onClose: () => setInspectorOpen(false),
|
|
55882
55725
|
children: selection != null ? /* @__PURE__ */ jsx(NodeInspector, {
|
|
55883
55726
|
readOnly: true,
|
|
55884
55727
|
revision,
|
|
55885
55728
|
selection,
|
|
55886
|
-
|
|
55887
|
-
theme,
|
|
55888
|
-
onOpenSubflow: (id) => navigate({
|
|
55889
|
-
kind: "subflow",
|
|
55890
|
-
id
|
|
55891
|
-
})
|
|
55729
|
+
theme
|
|
55892
55730
|
}, `${graphId}:${selection.id}`) : comment?.kind === "comment" ? /* @__PURE__ */ jsx(CommentInspector, {
|
|
55893
55731
|
title: comment.title,
|
|
55894
55732
|
content: comment.content ?? "",
|
|
@@ -55992,7 +55830,7 @@ function PublicationsView({ store, onClose, theme = "light" }) {
|
|
|
55992
55830
|
const language = useLang();
|
|
55993
55831
|
const t = useTranslate();
|
|
55994
55832
|
const busy = useVal(store.$.busy);
|
|
55995
|
-
const flow = useVal(store.workspace.$.
|
|
55833
|
+
const flow = useVal(store.workspace.$.flow);
|
|
55996
55834
|
const live = useVal(store.publications.$.live);
|
|
55997
55835
|
const loadFailed = useVal(store.publications.$.loadFailed);
|
|
55998
55836
|
const loading = useVal(store.publications.$.loading) || !loadFailed && live == null;
|
|
@@ -59191,7 +59029,6 @@ function WorkspaceNavigationIsland({ flowName, flowsHref, ghost = false, onOpenF
|
|
|
59191
59029
|
//#region src/workbench/browser/runtime/shell/workspacePublishIsland.tsx
|
|
59192
59030
|
var blockedReasonKey = {
|
|
59193
59031
|
issues: "workspace.publishIssuesReason",
|
|
59194
|
-
subflow: "workspace.subflowPublishHelp",
|
|
59195
59032
|
busy: "workspace.publishActionInProgress",
|
|
59196
59033
|
publishing: "workspace.publishInProgress"
|
|
59197
59034
|
};
|
|
@@ -59410,7 +59247,7 @@ function RunDrawerContainer({ onOpenRuns, onClose, onConfigureConnector, open, s
|
|
|
59410
59247
|
submitting: submitting != null
|
|
59411
59248
|
});
|
|
59412
59249
|
}
|
|
59413
|
-
var NodeInspectorContainer = memo(function NodeInspectorContainer({ store, focus, disabled, revision, selection,
|
|
59250
|
+
var NodeInspectorContainer = memo(function NodeInspectorContainer({ store, focus, disabled, revision, selection, theme }) {
|
|
59414
59251
|
const t = useTranslate();
|
|
59415
59252
|
const language = useLang();
|
|
59416
59253
|
const variableNames = useVal(store.$.variableNames);
|
|
@@ -59490,7 +59327,6 @@ var NodeInspectorContainer = memo(function NodeInspectorContainer({ store, focus
|
|
|
59490
59327
|
selection,
|
|
59491
59328
|
sourceNodeIcons,
|
|
59492
59329
|
store: store.workspace,
|
|
59493
|
-
target,
|
|
59494
59330
|
theme,
|
|
59495
59331
|
triggerActiveConnections: connectorAccess?.mode == "selectable" ? triggerActiveConnections?.filter((connection) => triggerCandidates?.some((candidate) => candidate.connectionId == connection.connectionId)) : triggerActiveConnections,
|
|
59496
59332
|
triggerAuthorizationPending,
|
|
@@ -59526,11 +59362,10 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59526
59362
|
const selectedDesignerNode = useVal(store.$.selectedDesignerNode);
|
|
59527
59363
|
const selection = useVal(store.workspace.$.selection);
|
|
59528
59364
|
const selectedNodeIds = useVal(store.workspace.$.selectedNodeIds);
|
|
59529
|
-
const
|
|
59530
|
-
const
|
|
59531
|
-
const { ignoredNodeIds, onIgnoreNodes } = useIgnoredNodes(`${flowId}:${target?.kind}:${target?.kind == "subflow" ? target.id : ""}`);
|
|
59365
|
+
const initialAddNodeTab = triggers.length == 0 ? "triggers" : "nodes";
|
|
59366
|
+
const { ignoredNodeIds, onIgnoreNodes } = useIgnoredNodes(flowId ?? "");
|
|
59532
59367
|
const panel = useInspectorPanel({
|
|
59533
|
-
identity:
|
|
59368
|
+
identity: flowId ?? "",
|
|
59534
59369
|
preferences: store.preferences,
|
|
59535
59370
|
selectedNodeIds,
|
|
59536
59371
|
onSelectNodes: (ids) => store.selectNodes(ids)
|
|
@@ -59542,14 +59377,10 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59542
59377
|
const [accountReference, setAccountReference] = useState();
|
|
59543
59378
|
useEffect(() => {
|
|
59544
59379
|
if (accountReference == null) return;
|
|
59545
|
-
if (target?.kind != accountReference.target.kind || target?.kind == "subflow" && accountReference.target.kind == "subflow" && target.id != accountReference.target.id) {
|
|
59546
|
-
if (!store.workspace.selectTarget(accountReference.target)) setAccountReference(void 0);
|
|
59547
|
-
return;
|
|
59548
|
-
}
|
|
59549
59380
|
panel.activate([accountReference.nodeId]);
|
|
59550
59381
|
store.workspace.locateNode(accountReference.nodeId, { preserveSelection: true });
|
|
59551
59382
|
setAccountReference(void 0);
|
|
59552
|
-
}, [accountReference
|
|
59383
|
+
}, [accountReference]);
|
|
59553
59384
|
const designerRef = useRef(null);
|
|
59554
59385
|
const accessConfiguration = useVal(store.connectorAccess.$).configuration;
|
|
59555
59386
|
useEffect(() => {
|
|
@@ -59571,11 +59402,7 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59571
59402
|
setStartId(void 0);
|
|
59572
59403
|
focusInspectorOnOpen.current = false;
|
|
59573
59404
|
opener.current = void 0;
|
|
59574
|
-
}, [
|
|
59575
|
-
flowId,
|
|
59576
|
-
target?.kind == "subflow" ? target.id : void 0,
|
|
59577
|
-
target?.kind
|
|
59578
|
-
]);
|
|
59405
|
+
}, [flowId]);
|
|
59579
59406
|
useEffect(() => {
|
|
59580
59407
|
if (diagnosticFocus == null) return;
|
|
59581
59408
|
focusInspectorOnOpen.current = false;
|
|
@@ -59586,7 +59413,7 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59586
59413
|
if (selectedDesignerNode?.kind == "trigger") setStartId(selectedDesignerNode.id);
|
|
59587
59414
|
}, [selectedDesignerNode]);
|
|
59588
59415
|
const authoringDisabled = draft == null || history.applying || history.failed || busy != null && busy != "designer" && busy != "run";
|
|
59589
|
-
const publishState = busy == "publish" ? "publishing" : busy != null ? "busy" : diagnostics?.valid == false ? "issues" :
|
|
59416
|
+
const publishState = busy == "publish" ? "publishing" : busy != null ? "busy" : diagnostics?.valid == false ? "issues" : live?.hasUnpublishedChanges == false ? "current" : "ready";
|
|
59590
59417
|
const closeContextPanel = (focusTarget) => {
|
|
59591
59418
|
panel.close();
|
|
59592
59419
|
focusInspectorOnOpen.current = false;
|
|
@@ -59621,11 +59448,11 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59621
59448
|
const focusNode = (nodeId) => {
|
|
59622
59449
|
store.workspace.locateNode(nodeId, { preserveSelection: true });
|
|
59623
59450
|
};
|
|
59624
|
-
const contextPanelVisible = panel.open &&
|
|
59451
|
+
const contextPanelVisible = panel.open && revision != null;
|
|
59625
59452
|
const flowSelected = panel.page == "outline";
|
|
59626
59453
|
const multipleSelected = !flowSelected && selectedNodeIds.length > 1;
|
|
59627
59454
|
const singleSelected = !flowSelected && !multipleSelected;
|
|
59628
|
-
const contextPanelIcon =
|
|
59455
|
+
const contextPanelIcon = flowSelected || multipleSelected ? "flow" : inspectorIcon(selection);
|
|
59629
59456
|
const contextPanelTitle = flowSelected ? t("inspector.outline") : multipleSelected ? t("inspector.multipleSelected", { count: selectedNodeIds.length }) : selectedDesignerNode?.title ?? t("inspector.title");
|
|
59630
59457
|
const historyControls = {
|
|
59631
59458
|
state: history,
|
|
@@ -59635,7 +59462,7 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59635
59462
|
};
|
|
59636
59463
|
return /* @__PURE__ */ jsxs(CanvasHistoryScope, {
|
|
59637
59464
|
history: historyControls,
|
|
59638
|
-
disabled: authoringDisabled
|
|
59465
|
+
disabled: authoringDisabled,
|
|
59639
59466
|
"aria-label": t("workspace.design"),
|
|
59640
59467
|
className: `editor-grid ${contextPanelVisible ? "" : "context-panel-closed"}`,
|
|
59641
59468
|
id: "workspace-panel-design",
|
|
@@ -59689,7 +59516,7 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59689
59516
|
history: historyControls,
|
|
59690
59517
|
ignoredNodeIds,
|
|
59691
59518
|
onIgnoreNodes,
|
|
59692
|
-
runControl:
|
|
59519
|
+
runControl: draft != null && selectedTrigger != null ? /* @__PURE__ */ jsx(RunControl, {
|
|
59693
59520
|
disabled: busy != null && busy != "run" && busy != "designer",
|
|
59694
59521
|
inputContent: /* @__PURE__ */ jsx(RunInputPanel, {
|
|
59695
59522
|
onStarted: onRunStarted,
|
|
@@ -59721,12 +59548,12 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59721
59548
|
catalogFailed: triggerCatalogState.error != null,
|
|
59722
59549
|
refreshCatalog: store.retryCatalog,
|
|
59723
59550
|
initialTab: initialAddNodeTab,
|
|
59724
|
-
disabled: authoringDisabled
|
|
59551
|
+
disabled: authoringDisabled,
|
|
59725
59552
|
focusRequest: 0,
|
|
59726
59553
|
onAdd: addFromPicker,
|
|
59727
59554
|
onRegisterDragOption: (option) => designerRef.current?.registerDraggedNode(option),
|
|
59728
59555
|
onDragEnd: () => designerRef.current?.clearDraggedNode()
|
|
59729
|
-
},
|
|
59556
|
+
}, flowId ?? ""),
|
|
59730
59557
|
nodePicker: {
|
|
59731
59558
|
connections,
|
|
59732
59559
|
loadConnections: store.connectors.loadConnections,
|
|
@@ -59764,7 +59591,6 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59764
59591
|
onToggleInspector: toggleInspector,
|
|
59765
59592
|
ref: designerRef,
|
|
59766
59593
|
selectedNodeIds: panel.canvasSelection,
|
|
59767
|
-
target,
|
|
59768
59594
|
theme
|
|
59769
59595
|
}),
|
|
59770
59596
|
contextPanelVisible && /* @__PURE__ */ jsxs(EditorContextPanel, {
|
|
@@ -59779,7 +59605,7 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59779
59605
|
title: selection.node.name ?? selectedDesignerNode?.title ?? "",
|
|
59780
59606
|
icon: selectedDesignerNode != null && "icon" in selectedDesignerNode ? selectedDesignerNode.icon : void 0,
|
|
59781
59607
|
disabled: authoringDisabled,
|
|
59782
|
-
fallback: /* @__PURE__ */ jsx(Icon, { name: inspectorIcon(selection
|
|
59608
|
+
fallback: /* @__PURE__ */ jsx(Icon, { name: inspectorIcon(selection) }),
|
|
59783
59609
|
onRename: (name) => {
|
|
59784
59610
|
store.workspace.saveNodeTitle(selection.id, name);
|
|
59785
59611
|
},
|
|
@@ -59787,8 +59613,8 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59787
59613
|
store.workspace.saveNodeIcon(selection.id, icon);
|
|
59788
59614
|
},
|
|
59789
59615
|
validate: (name) => {
|
|
59790
|
-
if (revision == null
|
|
59791
|
-
const graph = revision.graph(
|
|
59616
|
+
if (revision == null) return;
|
|
59617
|
+
const graph = revision.graph();
|
|
59792
59618
|
if (graph == null) return;
|
|
59793
59619
|
const issue = nodeNameIssue(graph, selection.id, name);
|
|
59794
59620
|
return issue == null ? void 0 : t(`inspector.node.${issue === "empty" ? "nameEmpty" : "nameDuplicate"}`);
|
|
@@ -59823,7 +59649,7 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59823
59649
|
nodes: designer.nodes,
|
|
59824
59650
|
onFocusNode: focusNode,
|
|
59825
59651
|
onSelect: selectOutlineNode
|
|
59826
|
-
},
|
|
59652
|
+
}, flowId ?? "")
|
|
59827
59653
|
})
|
|
59828
59654
|
}), multipleSelected ? /* @__PURE__ */ jsx(FlowNodeList, {
|
|
59829
59655
|
nodes: designer.nodes.filter((node) => selectedNodeIds.includes(node.id)),
|
|
@@ -59841,7 +59667,6 @@ function FlowEditor({ navigationIsland, onRun, onRunStarted, onCloseRuns, onConf
|
|
|
59841
59667
|
disabled: authoringDisabled,
|
|
59842
59668
|
revision,
|
|
59843
59669
|
selection,
|
|
59844
|
-
target,
|
|
59845
59670
|
theme
|
|
59846
59671
|
})]
|
|
59847
59672
|
}),
|