@oomol-lab/open-flow 0.1.0-beta.55 → 0.1.0-beta.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +1 -1
  2. package/dist/browser/{createResourceDialog-4H5_lZ6s.js → createResourceDialog-C23SBjYd.js} +2 -2
  3. package/dist/browser/flow-authoring-edge.d.ts +3 -3
  4. package/dist/browser/flow-authoring-node.d.ts +30 -46
  5. package/dist/browser/flow-authoring.js +9215 -21030
  6. package/dist/browser/flow-change-schema.d.ts +267 -1
  7. package/dist/browser/flow-change.d.ts +19 -104
  8. package/dist/browser/flow-change.js +154 -298
  9. package/dist/browser/{flowChanges-ZzG-f9cg.js → flowChanges-fBiAeTzR.js} +2347 -2216
  10. package/dist/browser/{flowWorkspace-ChpRaTMX.js → flowWorkspace-MqcEfg7T.js} +118 -293
  11. package/dist/browser/{icons-CdAB9wyS.js → icons-6oQ8Q9Wm.js} +4309 -4454
  12. package/dist/browser/lib-DrKav3HG.js +11403 -0
  13. package/dist/browser/preview.css +1 -1
  14. package/dist/browser/preview.js +9609 -9548
  15. package/dist/browser/ui-idTooltip.d.ts +11 -0
  16. package/dist/browser/ui.d.ts +5 -0
  17. package/dist/browser/ui.js +83 -1
  18. package/dist/browser/workbench.css +1 -1
  19. package/dist/browser/workbench.js +227 -417
  20. package/dist/browser/{workbenchSelect-BRZN4ish.js → workbenchSelect-DpLbIr29.js} +1 -1
  21. package/dist/common/authoring.d.ts +207 -0
  22. package/dist/common/authoringSchema.d.ts +1293 -0
  23. package/dist/common/control-api-conformance.js +1060 -623
  24. package/dist/common/control-api-errors.d.ts +2 -1
  25. package/dist/common/control-api.d.ts +87 -6
  26. package/dist/common/control-api.js +1058 -705
  27. package/dist/common/control-requests.d.ts +128 -0
  28. package/dist/common/control-requests.js +2913 -1145
  29. package/dist/common/decision.js +6337 -6371
  30. package/dist/common/flow-agent.d.ts +1 -1
  31. package/dist/common/flow-connectionUsage.d.ts +1 -2
  32. package/dist/common/flow-encoding.d.ts +2 -4
  33. package/dist/common/flow-encoding.js +131 -182
  34. package/dist/common/flow-graph.d.ts +10 -10
  35. package/dist/common/flow-semantics.d.ts +13 -9
  36. package/dist/common/flow-semantics.js +9051 -9232
  37. package/dist/common/flowInspection.d.ts +3 -21
  38. package/dist/common/integration-trigger.js +8653 -8687
  39. package/dist/common/lib-DrKav3HG.js +11403 -0
  40. package/dist/common/mcp.d.ts +120 -12
  41. package/dist/common/mcp.js +537 -188
  42. package/dist/common/openapi.js +6337 -6371
  43. package/dist/common/poll-trigger.js +8653 -8687
  44. package/dist/common/run-events.js +0 -1
  45. package/dist/common/scheduler.d.ts +3 -9
  46. package/dist/common/scheduler.js +128 -209
  47. package/dist/common/webhook-trigger.js +6337 -6371
  48. package/package.json +7 -1
  49. package/skills/open-flow/SKILL.md +32 -0
  50. package/skills/open-flow/references/flow-authoring.md +356 -0
  51. package/skills/open-flow/references/flow-n8n-conversion.md +196 -0
@@ -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 { $ as useIconifyCollectionLoader, $t as useTriggerFocusGuards, A as calendarDate, B as mapSource, Bn as inputValue, Bt as followWorkbenchLink, C as editorGroups, Cn as FeishuEventPicker, D as isUnconstrainedSchema, E as getDefaultValue, Fn as isJsonObject, Ft as securityOptions, G as resourceValue, Gt as PopoverHeader, Ht as Popover, I as indexAddNodeOptions, In as triggerConfigValue, It as selectOperation, J as triggerNodeIcon, Jn as Checkbox, Jt as PopoverTrigger, K as designerGraph, Kt as PopoverPanelContent, L as feishuResourceKind, Ln as triggerConfigValues, Lt as serverAddress, M as datePickerValue, Mn as sourceOutputLabel, Mt as object, N as isDateFormat, Nt as openApiFieldIssues, O as typeOfSchema, Pn as triggerOutputDefinitions, Pt as openApiTask, Q as IconifyProvider, Qt as Z$2, R as supportsFeishuChatFilter, Rt as servers, S as editorComponent, Sn as I18n, T as valueForEditor, Tn as errorNotice, U as observeResource, Ut as PopoverContent, Vt as Switch, W as resourceData, Wt as PopoverDescription, X as providerIcon, Xt as ScrollArea, Y as actionSummary, Yn as IconThemeContext, Yt as NativeScrollArea, Z as ContentIcon, Zt as VirtualScrollArea, _n as ru_default$1, an as EmptyDescription, bn as fr_default$1, cn as EmptyTitle, ct as diagnosticMessage, dn as SourceSelect, en as InputGroup, et as useIconifyData, fn as createI18n$1, ft as connectionCatalog, gn as zh_CN_default$1, hn as zh_TW_default$1, in as EmptyContent, it as revisionView, j as datePickerChange, jn as resolutionOutputPorts, jt as listOperations, k as calendarChange, kn as decodeResultList, lt as diagnosticNodeId, mn as waitBranchDescription, n as agentTool, nn as InputGroupInput, nt as canCancelRun, on as EmptyHeader, pn as uiLocales, q as semanticNodeIcon, qn as controlErrorCode, qt as PopoverTitle, rn as Empty, rt as hasRunFilter, sn as EmptyMedia, tn as InputGroupAddon, un as SourceForm, ut as schemaMismatchMessage, vn as ko_default$1, w as schemaForEditor, wn as EventSourceSetup, x as defaultValueEditorSchema, xn as en_default$1, yn as ja_default$1, zt as IdTooltip } from "./flowChanges-ZzG-f9cg.js";
2
+ import { A as datePickerValue, At as followWorkbenchLink, Bt as ScrollArea, C as valueForEditor, D as calendarChange, Dn as triggerConfigValues, E as typeOfSchema, En as triggerConfigValue, F as feishuResourceKind, Fn as securityOptions, Ft as PopoverHeader, G as semanticNodeIcon, Gn as controlErrorCode, Gt as InputGroupAddon, H as resourceData, Ht as Z$2, I as supportsFeishuChatFilter, In as selectOperation, It as PopoverPanelContent, J as providerIcon, Jt as EmptyContent, K as triggerNodeIcon, Kn as Checkbox, Kt as InputGroupInput, Ln as serverAddress, Lt as PopoverTitle, Mn as object, Mt as Popover, Nn as openApiFieldIssues, Nt as PopoverContent, O as calendarDate, P as indexAddNodeOptions, Pn as openApiTask, Pt as PopoverDescription, Q as useIconifyData, Qt as EmptyTitle, R as mapSource, Rn as servers, Rt as PopoverTrigger, S as schemaForEditor, Sn as sourceOutputLabel, T as isUnconstrainedSchema, Tn as isJsonObject, U as resourceValue, Ut as useTriggerFocusGuards, V as observeResource, Vt as VirtualScrollArea, W as designerGraph, Wt as InputGroup, X as IconifyProvider, Xt as EmptyHeader, Y as ContentIcon, Yt as EmptyDescription, Z as useIconifyCollectionLoader, Zt as EmptyMedia, an as zh_TW_default$1, b as editorComponent, cn as ko_default$1, ct as diagnosticNodeId, dn as en_default$1, dt as connectionCatalog, en as SourceForm, et as canCancelRun, fn as I18n, hn as errorNotice, in as waitBranchDescription, j as isDateFormat, jn as listOperations, jt as Switch, k as datePickerChange, kt as IdTooltip, ln as ja_default$1, lt as schemaMismatchMessage, mn as EventSourceSetup, n as agentTool, nn as createI18n$1, nt as revisionView, on as zh_CN_default$1, pn as FeishuEventPicker, q as actionSummary, qn as IconThemeContext, qt as Empty, rn as uiLocales, sn as ru_default$1, st as diagnosticMessage, tn as SourceSelect, tt as hasRunFilter, un as fr_default$1, w as getDefaultValue, wn as triggerOutputDefinitions, x as editorGroups, xn as resolutionOutputPorts, y as defaultValueEditorSchema, yn as decodeResultList, zn as inputValue, zt as NativeScrollArea } from "./flowChanges-fBiAeTzR.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-CdAB9wyS.js";
5
+ import { $ as operandHandle, $n as fastComponentRef, $r as itemPress, $t as useDirection, A as webhookSupportsBody, Ai as CompositeRootContext, An as useImplicitActiveTrigger, Ar as ownerDocument, At as useCompositeListItem, B as variableInputCompatible, Bi as isHTMLElement, Bn as useFloatingParentNodeId, Bt as HORIZONTAL_KEYS_WITH_EXTRA_KEYS, C as FieldDescription, Ci as useRenderElement, Cn as useHoverFloatingInteraction, Cr as isInteractiveElement, Ct as SelectGroup, Di as warn, Dn as createInitialPopupStoreState, Dr as isAndroid, Dt as SelectValue, E as FieldLabel, Ei as NOOP, En as useFloatingRootContext, Er as getTarget, Et as SelectTrigger, F as defaultDecisionQuestion, Fi as SafeReact, Fn as useClick, Fr as useTransitionStatus, Ft as ARROW_RIGHT, G as nodeNameIssue, Gn as DROPDOWN_COLLISION_AVOIDANCE, Gr as clearPress, Gt as scrollIntoViewIfNeeded, Hn as FloatingTreeStore, Hr as createChangeEventDetails, Ht as VERTICAL_KEYS, I as limitDecisionQuestions, Ii as useStableCallback, In as FloatingFocusManager, Ir as useOpenChangeComplete, It as ARROW_UP, Jn as addEventListener, Jt as usePositioner, Kn as POPUP_COLLISION_AVOIDANCE, Kr as closePress, Kt as useToolbarRootContext, Li as useRefWithInit, Ln as FloatingNode, Lr as useAnimationsFinished, Lt as COMPOSITE_KEYS, Mi as formatErrorMessage, Mn as useTriggerDataForwarding, Mr as ChevronDown, Mt as ARROW_DOWN, N as decisionQuestionIssues, Ni as mergeProps, Nn as useTriggerRegistration, Nr as Check, Nt as ARROW_KEYS, O as decodeRevisionContent, Oi as useMergedRefs, On as popupStoreSelectors, Or as isFirefox, Ot as Separator, P as decisionTask, Pi as useIsoLayoutEffect, Pn as useDismiss, Pr as createLucideIcon, Pt as ARROW_LEFT, Q as nodeInputMappings, Qn as fastComponent, Qr as inputPress, Qt as adaptiveOrigin, R as matchesSchema, Ri as getParentNode, Rn as FloatingTree, Rr as TransitionStatusDataAttributes, S as Field, Si as clsx, Sn as useHoverReferenceInteraction, Sr as stopEvent$1, St as SelectContent, T as FieldGroup, Ti as EMPTY_OBJECT, Tn as useSyncedFloatingRootContext, Tr as contains, Tt as SelectSeparator, Un as FloatingPortal, Ur as createGenericEventDetails, Ut as VERTICAL_KEYS_WITH_EXTRA_KEYS, Vi as isLastTraversableNode, Vn as useFloatingTree, Vr as useValueChanged, Vt as MODIFIER_KEYS, Wr as cancelOpen, Wt as isNativeInput, Xn as Store, Xr as inputChange, Xt as InternalBackdrop, Y as comparisonIssue, Yn as ReactStore, Yr as imperativeAction, Yt as getDisabledMountTransitionStyles, Zn as useStore$1, Zr as inputClear, Zt as useAnchorPositioning, _ as TooltipPositioner, _i as useControlled, _n as safePolygon, _r as getGridNavigatedIndex, a as DialogDescription, an as triggerOpenStateMapping, ar as Label, at as dequal, b as TooltipRoot, bi as cn$1, bn as useListNavigation, br as isIndexOutOfListBounds, bt as Select$1, c as DialogTitle, ci as useFormContext, cn as hasNullItemLabel, cr as useTimeout, d as TooltipContent, di as useBaseUiId, dn as stringifyAsValue, ei as listNavigation, en as CompositeList, er as require_with_selector, et as operatorsForType, f as TooltipProvider, fi as useId$1, fn as compareItemEquality, g as TooltipPopup, gi as visuallyHiddenInput, gn as selectedValueIncludes, gr as getGridCellIndices, h as TooltipArrow, hi as visuallyHidden, hn as removeItem, hr as getGridCellIndexOfCorner, i as DialogContent, in as pressableTriggerOpenStateMapping, ir as useOnFirstRender, j as decisionLimits, ji as useCompositeRootContext, jn as useOpenStateTransitions, jr as useLabelableId, jt as ALL_KEYS, k as webhookMethods, ki as useButton, kn as PopupTriggerMap, kr as isMac$1, kt as IndexGuessBehavior, l as DialogTrigger, li as useRegisterFieldControl, ln as isGroupedItems, m as createTooltipHandle, mi as fieldValidityMapping, mn as findItemIndex, mr as findNonDisabledListIndex, n as Dialog, nn as getPseudoElementBounds, nr as createSelector, nt as unaryOperator, oi as triggerPress, on as resolveAriaLabelledBy, or as Input$1, p as TooltipTrigger, pi as DEFAULT_FIELD_STATE_ATTRIBUTES, pn as defaultItemEquality, pr as createGridCellMap, qn as FocusGuard, qr as escapeKey, qt as useAnchoredPopupScrollLock, ri as siblingOpen, rn as popupStateMapping, rr as useValueAsRef, rt as valueType, si as useLabelableContext, sn as useOpenInteractionType, t as Icon, ti as none$1, tn as inertValue, tr as require_builtin_esm_external_require_react, u as Tooltip, ui as useFieldRootContext, un as stringifyAsLabel, v as TooltipPortal, vi as Button$1, vn as useTypeahead, vr as getMaxListIndex, vt as string, w as FieldError, wi as EMPTY_ARRAY$1, wn as useFocus$1, wr as activeElement, wt as SelectItem, x as Spinner, xi as cva, xn as useInteractions, xr as isListIndexDisabled, xt as SelectChevron, y as TooltipTrigger$1, yi as buttonVariants, yn as useRole, yr as getMinListIndex, z as schemaObject, zi as isElement, zn as useFloatingNodeId, zr as transitionStatusMapping, zt as HORIZONTAL_KEYS } from "./icons-6oQ8Q9Wm.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-BRZN4ish.js";
8
+ import { t as WorkbenchSelect } from "./workbenchSelect-DpLbIr29.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.target, reference.nodeId);
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, taskId }) {
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(taskId, next),
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({ kind: "flow" }, nodeId);
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: 5,
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.tasks.agent;
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" && value.notification != null ? store.$.revision.value?.task(value.notification.taskId) : void 0)?.inputs.filter((port) => "handle" in port) ?? [];
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/manifest/common/meta/block/generateTyping.ts
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, target) {
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, target, selection, store, handleName, t, triggerDisplays }) {
36053
- const graph = revision.graph(target);
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(target, source.nodeId, source.output) : presentProviderOutputDescription(node, source.output, presentBuiltInOutputDescription(node, source.output, revision.outputDescription(target, source.nodeId, source.output), t), providerDisplay(node)),
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(target, selection.id, handleName),
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, onOpenSubflow, 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, target, triggerActiveConnections, triggerAuthorizationPending = false, triggerConnection, triggerConnectionError, triggerConnectionLoading = false, triggerDisplays, triggers: liveTriggers }) {
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 taskId = selection?.kind == "task" && selection.node.task == null ? selection.node.taskId : void 0;
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 && taskId != null && connectorAction?.authenticated !== false && /* @__PURE__ */ jsx(ConnectorAccount, {
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
- taskId
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 === "subflow" || selection?.kind === "task") && (() => {
36321
- const definitions = selection.kind === "task" ? [...selection.definition?.inputs ?? []] : selection.kind === "subflow" ? [...selection.definition?.inputs ?? []] : [...selection.node.inputDefinitions];
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 != null || isAgent) ? (inputs, deletion, values) => {
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 == null && isLlm && /* @__PURE__ */ jsx("section", {
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(target, source),
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 != null || isAgent),
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 === "subflow" || selection?.kind === "approval" || selection?.kind === "wait") && /* @__PURE__ */ jsx("section", {
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: selection.kind === "subflow" ? selection.definition?.outputs ?? [] : presentResolutionOutputs(selection.node, t),
36397
+ values: presentResolutionOutputs(selection.node, t),
36495
36398
  onChange: () => {}
36496
36399
  })
36497
36400
  }),
36498
- selection == null ? target.kind == "subflow" ? /* @__PURE__ */ jsx(SubflowDefinition, {
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
- selection.kind == "trigger" ? null : selection.kind == "task" ? selection.definition == null ? /* @__PURE__ */ jsx("div", {
36508
- className: "inspector-section section-error",
36509
- children: t("inspector.task.missing")
36510
- }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [isLlm && /* @__PURE__ */ jsx(LlmTaskSection, {
36511
- selection,
36512
- disabled,
36513
- store
36514
- }), /* @__PURE__ */ jsxs(GeneralSettings, {
36515
- readOnly,
36516
- title: isAgent || isDecision ? t("agent.more") : void 0,
36517
- disabled,
36518
- node: selection.node,
36519
- nodeId: selection.id,
36520
- store,
36521
- children: [isAgent && /* @__PURE__ */ jsx(AgentAdvancedSettings, {}), isDecision && /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
36522
- htmlFor: `${selection.id}-model`,
36523
- children: t("agent.model")
36524
- }), /* @__PURE__ */ jsx(Input$1, {
36525
- id: `${selection.id}-model`,
36526
- readOnly: true,
36527
- value: "typesafe/jev"
36528
- })] })]
36529
- })] }) : selection.kind == "approval" || selection.kind == "wait" ? /* @__PURE__ */ jsx(ResolutionDefinition, {
36530
- disabled,
36531
- selection,
36532
- store
36533
- }) : null,
36534
- selection.kind != "trigger" && selection.kind != "task" && /* @__PURE__ */ jsx(GeneralSettings, {
36535
- readOnly,
36536
- disabled,
36537
- node: selection.node,
36538
- nodeId: selection.id,
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.SubflowNode ? defaultSubflowIcon : nodeType === NODE_TYPE.TriggerNode ? defaultTriggerIcon : defaultNodeIcon;
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, target, theme }, ref) {
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 = target?.kind == "flow" && !model.nodes.some((node) => node.kind == "trigger");
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 || target == null) return;
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: target == null ? "empty" : target.kind == "flow" ? "flow" : `subflow:${target.id}`,
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: target == null,
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: disabled || target == null,
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
- target != null && model.nodes.length == 0 && /* @__PURE__ */ jsxs("div", {
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 [target, setTarget] = useState({ kind: "flow" });
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, target, presentation?.value, [], {}, {}, t), [
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 navigate = (next) => {
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 = target.kind === "subflow" || presentation == null || moved ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
55796
- target.kind === "subflow" && /* @__PURE__ */ jsx(Button$1, {
55797
- size: "xs",
55798
- variant: "ghost",
55799
- onClick: () => navigate({ kind: "flow" }),
55800
- children: t("snapshot.root")
55801
- }),
55802
- target.kind === "subflow" && /* @__PURE__ */ jsx("span", {
55803
- className: "truncate",
55804
- children: revision.subflow(target.id)?.name ?? target.id
55805
- }),
55806
- presentation == null && /* @__PURE__ */ jsx("span", {
55807
- className: "revision-viewer-hint",
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, target),
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
- target,
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.$.targetFlow);
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, target, theme }) {
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 target = useVal(store.workspace.$.target);
59530
- const initialAddNodeTab = target?.kind == "flow" && triggers.length == 0 ? "triggers" : "nodes";
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: JSON.stringify([flowId, target]),
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, target]);
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" : target?.kind == "subflow" ? "subflow" : live?.hasUnpublishedChanges == false ? "current" : "ready";
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 && target != null && revision != null;
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 = target == null || flowSelected || multipleSelected ? "flow" : inspectorIcon(selection, target);
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 || target == null,
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: target?.kind == "flow" && draft != null && selectedTrigger != null ? /* @__PURE__ */ jsx(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 || target == null,
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
- }, `${flowId}:${target?.kind}`),
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, target) }),
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 || target == null) return;
59791
- const graph = revision.graph(target);
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
- }, JSON.stringify([flowId, target]))
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
  }),