@oomol-lab/open-flow 0.1.0-beta.74 → 0.1.0-beta.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/browser/{ContentIcon-CUQHjQIw.js → ContentIcon-Cm1hbVzW.js} +4 -3
- package/dist/browser/{FlowCanvas-Dtf8_cQp.js → FlowCanvas-NzKtla_c.js} +62 -62
- package/dist/browser/{createResourceDialog-DI9pL-Yr.js → createResourceDialog-BgdedQqu.js} +3 -3
- package/dist/browser/{dialog-BYJGvItc.js → dialog-aSElFFw2.js} +322 -26
- package/dist/browser/{exportSvg-BOoy7-Db.js → exportSvg-Dcz4HTo_.js} +2 -2
- package/dist/browser/{flowChanges-RL-H4CjD.js → flowChanges-NZyS7HSp.js} +490 -438
- package/dist/browser/{flowWorkspace-BkDsETj0.js → flowWorkspace-Bl0SDehy.js} +499 -61
- package/dist/browser/preview.css +696 -825
- package/dist/browser/preview.js +1399 -717
- package/dist/browser/theme.css +114 -262
- package/dist/browser/{tooltip-wZJRB9oP.js → tooltip-3XMK9jkr.js} +1 -1
- package/dist/browser/{typeScriptSession-CSRwWmZm.js → typeScriptSession-C9sBGOKZ.js} +1 -1
- package/dist/browser/ui.css +354 -460
- package/dist/browser/ui.js +1 -1
- package/dist/browser/workbench.css +696 -825
- package/dist/browser/workbench.js +13 -7
- package/dist/browser/{workbenchSelect-BcWPWGzw.js → workbenchSelect-DBGP7Y4Z.js} +2 -2
- package/dist/command/index.js +41 -43
- package/dist/common/authoring.d.ts +5 -5
- package/dist/common/authoringExamples.d.ts +3 -2
- package/dist/common/authoringSchema.d.ts +70 -4
- package/dist/common/connector-proxy.d.ts +1 -1
- package/dist/common/control-api-conformance.js +250 -138
- package/dist/common/control-api.d.ts +3 -2
- package/dist/common/control-api.js +246 -134
- package/dist/common/control-requests.d.ts +3 -3
- package/dist/common/control-requests.js +353 -79
- package/dist/common/cron-trigger.d.ts +2 -1
- package/dist/common/decision.d.ts +4 -4
- package/dist/common/decision.js +5 -2
- package/dist/common/engine-contract.d.ts +6 -1
- package/dist/common/event-source-definition.d.ts +1 -1
- package/dist/common/event-source-view.d.ts +22 -0
- package/dist/common/event-source.d.ts +1 -1
- package/dist/common/event-source.js +24 -65
- package/dist/common/event-sources.d.ts +0 -21
- package/dist/common/flow-authoring.js +90 -19
- package/dist/common/flow-change-schema.d.ts +9 -1
- package/dist/common/flow-change.d.ts +7 -201
- package/dist/common/flow-change.js +96 -23
- package/dist/common/flow-encoding.js +89 -21
- package/dist/common/flow-graph.d.ts +2 -1
- package/dist/common/flow-input-value.d.ts +1 -1
- package/dist/common/flow-model.d.ts +121 -0
- package/dist/common/flow-notifications.d.ts +1 -1
- package/dist/common/flow-retry.d.ts +3 -5
- package/dist/common/flow-semantics.js +816 -586
- package/dist/common/flow-workflowReferences.d.ts +8 -0
- package/dist/common/flowInspection.d.ts +1 -1
- package/dist/common/http-hosts.d.ts +6 -0
- package/dist/common/http-request.d.ts +164 -0
- package/dist/common/http-request.js +5272 -0
- package/dist/common/integration-trigger.d.ts +2 -1
- package/dist/common/mcp.d.ts +3 -3
- package/dist/common/mcp.js +248 -136
- package/dist/common/openapi.d.ts +4 -4
- package/dist/common/openapi.js +4 -1
- package/dist/common/poll-trigger.d.ts +2 -1
- package/dist/common/run-events.js +11 -9
- package/dist/common/runtime-contract.d.ts +23 -1
- package/dist/common/runtime-contract.js +607 -72
- package/dist/common/runtime-nodejs-compat.d.ts +44 -0
- package/dist/common/runtime-nodejs-compat.js +5870 -0
- package/dist/common/scheduler-checkpoint.d.ts +1 -1
- package/dist/common/scheduler-node-execution.d.ts +1 -1
- package/dist/common/scheduler.d.ts +2 -2
- package/dist/common/scheduler.js +95 -25
- package/dist/common/trigger-catalog.d.ts +1 -7
- package/dist/common/trigger-config-options.d.ts +1 -1
- package/dist/common/trigger-config.d.ts +1 -1
- package/dist/common/trigger-contract.d.ts +2 -1
- package/dist/common/trigger-localization.d.ts +8 -2
- package/dist/common/trigger-model.d.ts +101 -0
- package/dist/common/webhook-response.d.ts +1 -3
- package/dist/common/webhook-trigger.d.ts +3 -1
- package/dist/common/webhook-trigger.js +12 -11
- package/dist/common/workflow.d.ts +3 -12
- package/dist/common/workflow.js +25 -23
- package/dist/index.d.ts +41 -14
- package/package.json +9 -1
- package/skills/open-flow/references/flow-authoring.md +1 -0
- package/skills/open-flow/references/flow-n8n-conversion.md +19 -15
- package/src/base/common/json.ts +1 -1
- package/src/connector/common/proxy.ts +1 -1
- package/src/control/common/api.ts +7 -5
- package/src/control/common/authoring.ts +14 -3
- package/src/control/common/authoringExamples.ts +8 -0
- package/src/control/common/authoringSchema.ts +38 -25
- package/src/control/common/authoringTools.ts +1 -1
- package/src/control/common/conformance.ts +1 -1
- package/src/control/common/connectorDecoders.ts +1 -1
- package/src/control/common/eventSources.ts +2 -29
- package/src/control/common/triggerCatalog.ts +1 -8
- package/src/decision/common/decision.ts +15 -7
- package/src/event-source/common/definition.ts +1 -1
- package/src/event-source/common/index.ts +1 -1
- package/src/event-source/common/view.ts +20 -0
- package/src/execution/common/checkpoint.ts +1 -1
- package/src/execution/common/events.ts +3 -0
- package/src/execution/common/node-execution.ts +5 -3
- package/src/execution/common/scheduler.ts +2 -1
- package/src/flow/common/change.ts +59 -192
- package/src/flow/common/changeSchema.ts +39 -5
- package/src/flow/common/connectionUsage.ts +1 -1
- package/src/flow/common/graph.ts +10 -4
- package/src/flow/common/inputValue.ts +1 -1
- package/src/flow/common/model.ts +130 -0
- package/src/flow/common/modules.ts +1 -1
- package/src/flow/common/portChanges.ts +1 -1
- package/src/flow/common/retry.ts +3 -5
- package/src/flow/common/semantics.ts +71 -7
- package/src/flow/common/webhookResponse.ts +4 -8
- package/src/flow/common/workflowReferences.ts +31 -0
- package/src/http/common/authBindings.ts +9 -0
- package/src/http/common/headers.ts +5 -0
- package/src/http/common/hosts.ts +13 -0
- package/src/http/common/httpRequest.ts +266 -0
- package/src/openapi/common/openapi.ts +9 -5
- package/src/{execution → runtime}/common/engineContract.ts +24 -15
- package/src/runtime/common/nodejsCompat.ts +275 -0
- package/src/runtime/common/nodejsGuest.generated.json +47 -0
- package/src/runtime/common/runtime.ts +1138 -0
- package/src/trigger/common/config.ts +1 -1
- package/src/trigger/common/configOptions.ts +1 -1
- package/src/trigger/common/contract.ts +2 -1
- package/src/trigger/common/cron.ts +2 -1
- package/src/trigger/common/integration.ts +2 -1
- package/src/trigger/common/model.ts +87 -0
- package/src/trigger/common/poll.ts +2 -1
- package/src/trigger/common/webhook.ts +7 -4
- package/src/trigger/providers/fieldDescriptions.ts +1 -1
- package/src/trigger/providers/localization.ts +9 -2
- package/src/trigger/providers/remote.ts +1 -1
- package/src/types/index.ts +44 -15
- package/src/workflow/common/workflow.ts +3 -44
- package/src/execution/common/runtime.ts +0 -563
- package/src/openapi/common/authBindings.ts +0 -12
- /package/src/{control → connector}/common/providerIconSprite.ts +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { i as __require, o as __toESM, r as __exportAll, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
|
|
2
|
-
import { A as DropdownMenuSub, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, I as useCompositeItem, J as waitBranchDescription, M as DropdownMenuSubTrigger, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, P as isElementDisabled, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, _ as NativeScrollArea, at as Checkbox, b as Z$1, c as useIconifyData, d as PopoverContent, f as PopoverDescription, g as PopoverTrigger, h as PopoverTitle, j as DropdownMenuSubContent, k as DropdownMenuSeparator, m as PopoverPanelContent, o as IconifyProvider, ot as useAriaLabelledBy, p as PopoverHeader, s as useIconifyCollectionLoader, t as ContentIcon, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, y as VirtualScrollArea } from "./ContentIcon-
|
|
2
|
+
import { A as DropdownMenuSub, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, I as useCompositeItem, J as waitBranchDescription, M as DropdownMenuSubTrigger, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, P as isElementDisabled, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, _ as NativeScrollArea, at as Checkbox, b as Z$1, c as useIconifyData, d as PopoverContent, f as PopoverDescription, g as PopoverTrigger, h as PopoverTitle, j as DropdownMenuSubContent, k as DropdownMenuSeparator, m as PopoverPanelContent, o as IconifyProvider, ot as useAriaLabelledBy, p as PopoverHeader, s as useIconifyCollectionLoader, t as ContentIcon, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, y as VirtualScrollArea } from "./ContentIcon-Cm1hbVzW.js";
|
|
3
3
|
import { i as compute, l as val } from "./dist-bO8nvHFH.js";
|
|
4
4
|
import { c as useLang, l as useTranslate, o as I18nProvider, r as isPlainObject, s as useI18n, u as useVal } from "./dist-BFmpkX4P.js";
|
|
5
|
-
import { $ as useAnchoredPopupScrollLock, $n as listNavigation, A as string, An as ownerDocument, Ar as CompositeRootContext, B as ARROW_LEFT, Bn as useValueChanged, Br as isElement, Cn as activeElement, Cr as useRenderElement, Dn as isFirefox, En as isAndroid, Er as NOOP, F as IndexGuessBehavior, Ft as FloatingFocusManager, G as HORIZONTAL_KEYS, Gn as closePress, H as ARROW_UP, Hn as createGenericEventDetails, Ht as FloatingPortal, I as useCompositeListItem, In as TransitionStatusDataAttributes, Ir as useStableCallback, J as VERTICAL_KEYS, K as HORIZONTAL_KEYS_WITH_EXTRA_KEYS, Kn as escapeKey, L as ALL_KEYS, Ln as transitionStatusMapping, Lr as useRefWithInit, Mr as formatErrorMessage, Nn as useTransitionStatus, Nr as mergeProps, Nt as useDismiss, Or as useMergedRefs, Pn as useOpenChangeComplete, Pr as useIsoLayoutEffect, Pt as useClick, Qn as itemPress, R as ARROW_DOWN, Sn as isInteractiveElement, Sr as clsx, Tn as getTarget, Tr as EMPTY_OBJECT, V as ARROW_RIGHT, Vn as createChangeEventDetails, Wn as clearPress, Wt as DROPDOWN_COLLISION_AVOIDANCE, X as isNativeInput, Xn as inputClear, Xt as useStore, Y as VERTICAL_KEYS_WITH_EXTRA_KEYS, Yn as inputChange, Yt as Store, Z as scrollIntoViewIfNeeded, Zn as inputPress, _n as isIndexOutOfListBounds, _r as useControlled, a as createTooltipHandle, an as useTimeout, bn as stopEvent, br as cn, c as TooltipPositioner, cr as useFormContext, ct as inertValue, d as TooltipRoot, dn as findNonDisabledListIndex, dr as useBaseUiId, dt as popupStateMapping, en as require_builtin_esm_external_require_react, er as none, fn as getGridCellIndexOfCorner, ft as pressableTriggerOpenStateMapping, gn as getMinListIndex, gr as visuallyHiddenInput, gt as useTypeahead, hn as getMaxListIndex, hr as visuallyHidden, i as TooltipTrigger, it as useAnchorPositioning, kr as useButton, l as TooltipPortal, lr as useRegisterFieldControl, lt as getPseudoElementBounds, mn as getGridNavigatedIndex, mr as fieldValidityMapping, mt as useOpenInteractionType, n as TooltipContent, nn as useValueAsRef, nt as getDisabledMountTransitionStyles, o as TooltipArrow, ot as useDirection, p as timeZoneOffsetMinutes, pn as getGridCellIndices, pr as DEFAULT_FIELD_STATE_ATTRIBUTES, pt as triggerOpenStateMapping, q as MODIFIER_KEYS, r as TooltipProvider, rn as useOnFirstRender, rt as InternalBackdrop, s as TooltipPopup, sr as useLabelableContext, st as CompositeList, t as Tooltip, tn as createSelector, tt as usePositioner, u as TooltipTrigger$1, un as createGridCellMap, ur as useFieldRootContext, vn as isListIndexDisabled, vr as Button$1, vt as useListNavigation, wn as contains, wr as EMPTY_ARRAY$1, wt as useFloatingRootContext, xr as cva, yr as buttonVariants, yt as useInteractions, z as ARROW_KEYS } from "./tooltip-
|
|
6
|
-
import { $ as
|
|
7
|
-
import { C as isSameViewport, S as isMac, _ as CanvasTooltip, a as collapseAllNested, b as toManifestHandleName, c as defaultTriggerIcon, d as selectableTimeZones, f as timeZoneLabel, g as E$1, h as cronDescription, i as JSONViewer, l as useDebouncedValue, m as timeZoneOffset, n as setAddItemId, o as formatDuration, p as timeZoneLongLabel, r as Textarea, s as CanvasNodeIcon, t as FlowCanvas, u as IconStack, v as CanvasStore, x as toManifestNodeId, y as toViewEdge } from "./FlowCanvas-
|
|
8
|
-
import { $
|
|
5
|
+
import { $ as useAnchoredPopupScrollLock, $n as listNavigation, A as string, An as ownerDocument, Ar as CompositeRootContext, B as ARROW_LEFT, Bn as useValueChanged, Br as isElement, Cn as activeElement, Cr as useRenderElement, Dn as isFirefox, En as isAndroid, Er as NOOP, F as IndexGuessBehavior, Ft as FloatingFocusManager, G as HORIZONTAL_KEYS, Gn as closePress, H as ARROW_UP, Hn as createGenericEventDetails, Ht as FloatingPortal, I as useCompositeListItem, In as TransitionStatusDataAttributes, Ir as useStableCallback, J as VERTICAL_KEYS, K as HORIZONTAL_KEYS_WITH_EXTRA_KEYS, Kn as escapeKey, L as ALL_KEYS, Ln as transitionStatusMapping, Lr as useRefWithInit, Mr as formatErrorMessage, Nn as useTransitionStatus, Nr as mergeProps, Nt as useDismiss, Or as useMergedRefs, Pn as useOpenChangeComplete, Pr as useIsoLayoutEffect, Pt as useClick, Qn as itemPress, R as ARROW_DOWN, Sn as isInteractiveElement, Sr as clsx, Tn as getTarget, Tr as EMPTY_OBJECT, V as ARROW_RIGHT, Vn as createChangeEventDetails, Wn as clearPress, Wt as DROPDOWN_COLLISION_AVOIDANCE, X as isNativeInput, Xn as inputClear, Xt as useStore, Y as VERTICAL_KEYS_WITH_EXTRA_KEYS, Yn as inputChange, Yt as Store, Z as scrollIntoViewIfNeeded, Zn as inputPress, _n as isIndexOutOfListBounds, _r as useControlled, a as createTooltipHandle, an as useTimeout, bn as stopEvent, br as cn, c as TooltipPositioner, cr as useFormContext, ct as inertValue, d as TooltipRoot, dn as findNonDisabledListIndex, dr as useBaseUiId, dt as popupStateMapping, en as require_builtin_esm_external_require_react, er as none, fn as getGridCellIndexOfCorner, ft as pressableTriggerOpenStateMapping, gn as getMinListIndex, gr as visuallyHiddenInput, gt as useTypeahead, hn as getMaxListIndex, hr as visuallyHidden, i as TooltipTrigger, it as useAnchorPositioning, kr as useButton, l as TooltipPortal, lr as useRegisterFieldControl, lt as getPseudoElementBounds, mn as getGridNavigatedIndex, mr as fieldValidityMapping, mt as useOpenInteractionType, n as TooltipContent, nn as useValueAsRef, nt as getDisabledMountTransitionStyles, o as TooltipArrow, ot as useDirection, p as timeZoneOffsetMinutes, pn as getGridCellIndices, pr as DEFAULT_FIELD_STATE_ATTRIBUTES, pt as triggerOpenStateMapping, q as MODIFIER_KEYS, r as TooltipProvider, rn as useOnFirstRender, rt as InternalBackdrop, s as TooltipPopup, sr as useLabelableContext, st as CompositeList, t as Tooltip, tn as createSelector, tt as usePositioner, u as TooltipTrigger$1, un as createGridCellMap, ur as useFieldRootContext, vn as isListIndexDisabled, vr as Button$1, vt as useListNavigation, wn as contains, wr as EMPTY_ARRAY$1, wt as useFloatingRootContext, xr as cva, yr as buttonVariants, yt as useInteractions, z as ARROW_KEYS } from "./tooltip-3XMK9jkr.js";
|
|
6
|
+
import { $ as waitAutoContinueSchema, $t as Input, A as comparisonIssue, At as variableInputCompatible, Bt as SelectTrigger, Ct as limitDecisionQuestions, D as nodeSystemOutputPorts, Dt as matchesSchema, E as nodeErrorSchema, F as operatorsForType, Ft as SelectChevron, Gt as stringifyAsLabel, Ht as resolveAriaLabelledBy, It as SelectContent, J as webhookResponseAllowsBody, Jt as defaultItemEquality, K as webhookHeaderValuePort, Kt as stringifyAsValue, L as unaryOperator, Lt as SelectGroup, Nt as dequal, O as supportsNodeErrorHandling, Ot as portsAssignable, P as operandHandle, Pt as Select$1, Q as workflowOutputsPort, Qt as Label, R as valueType, Rt as SelectItem, St as defaultDecisionQuestion, T as workflowToolNameIssue, Tt as webhookSupportsBody, U as decodeRevisionContent, Ut as hasNullItemLabel, Vt as SelectValue, Wt as isGroupedItems, X as webhookResponseTimeout, Xt as removeItem, Y as webhookResponseInputs, Yt as findItemIndex, Z as webhookStatusCodePort, Zt as selectedValueIncludes, _t as isHttpHost, at as httpHeaderSchema, b as nodeNameIssue, bt as decisionQuestionIssues, c as DialogTrigger, d as Field, en as useLabelableId, et as defaultNodeRetry, f as FieldDescription, h as FieldLabel, i as DialogDescription, kt as schemaObject, l as Icon, lt as httpRequestIssues, m as FieldGroup, nt as retryConfigurationSchema, o as DialogHeader, ot as httpQuerySchema, p as FieldError, pt as httpHeaderNameIssue, q as webhookHeadersPort, qt as compareItemEquality, r as DialogContent, rt as supportsNodeRetry, s as DialogTitle, t as Dialog, tn as ChevronDown, tt as nodeRetryLimits, u as Spinner, ut as httpRequestTask, vt as decisionLimits, wt as webhookMethods, xt as decisionTask, zt as SelectSeparator } from "./dialog-aSElFFw2.js";
|
|
7
|
+
import { C as isSameViewport, S as isMac, _ as CanvasTooltip, a as collapseAllNested, b as toManifestHandleName, c as defaultTriggerIcon, d as selectableTimeZones, f as timeZoneLabel, g as E$1, h as cronDescription, i as JSONViewer, l as useDebouncedValue, m as timeZoneOffset, n as setAddItemId, o as formatDuration, p as timeZoneLongLabel, r as Textarea, s as CanvasNodeIcon, t as FlowCanvas, u as IconStack, v as CanvasStore, x as toManifestNodeId, y as toViewEdge } from "./FlowCanvas-NzKtla_c.js";
|
|
8
|
+
import { $t as FeishuEventPicker, A as schemaForEditor, An as securityOptions, B as datePickerValue, Bt as InputGroupAddon, Cn as triggerConfigValue, D as defaultValueEditorSchema, Dn as object$1, E as supportsFeishuChatFilter, En as listOperations, F as calendarChange, Fn as workflowAgentTool, Ft as dequal$1, G as indexAddNodeOptions, Gn as controlErrorCode, Gt as EmptyHeader, H as isDateFormat, Ht as Empty, I as calendarDate, It as WorkflowExportMenuItem, Jt as Badge, Kn as eventSourceKind, Kt as EmptyMedia, L as dateFromTimeZone, Ln as workflowCandidateGroup, Lt as IdTooltip, M as getDefaultValue, Mn as serverAddress, N as isUnconstrainedSchema, Nn as servers, O as editorComponent, On as openApiFieldIssues, P as typeOfSchema, Pn as sameWorkflowInterface, Q as resourceValue, Qt as createI18n, R as dateInTimeZone, Rn as workflowCapability, Rt as followWorkbenchLink, T as feishuResourceKind, Tn as inputValue, Ut as EmptyContent, V as dateTimeWall, Vt as InputGroupInput, Wt as EmptyDescription, X as observeResource, Xt as SourceForm, Z as resourceData, Zt as SourceSelect, _t as connectionCatalog, an as decodeResultList, cn as inputSourceCandidates, ct as revisionView, dn as sourceOutputLabel, en as EventSourceSetup, et as designerGraph, fn as sourcePort, gn as isJsonObject, hn as triggerOutputDefinitions, ht as schemaMismatchMessage, it as providerIcon, j as valueForEditor, jn as selectOperation, k as editorGroups, kn as openApiTask, ln as resolutionOutputPorts, mt as diagnosticNodeId, n as agentTool, nt as triggerNodeIcon, ot as canCancelRun, pt as diagnosticMessage, q as mapSource, qt as EmptyTitle, rt as actionSummary, sn as executionReachableNodes, st as hasRunFilter, tn as errorNotice, tt as semanticNodeIcon, un as webhookResponseDiagnostics, wn as triggerConfigValues, z as datePickerChange, zn as workflowSelectionTask, zt as InputGroup } from "./flowChanges-NZyS7HSp.js";
|
|
9
9
|
import { r as resolveUiLanguage } from "./languages-gYzoQqCi.js";
|
|
10
10
|
import { a as renameObjectField, i as objectValue, n as isJsonValue, o as setObjectField, r as jsonDataTypes, s as valueType$1, t as initialValue } from "./value-BbFQZZ_V.js";
|
|
11
11
|
import { n as compile, r as validate } from "./flowRunInputEditorStore-ys1-w9GW.js";
|
|
12
|
-
import { t as WorkbenchSelect } from "./workbenchSelect-
|
|
12
|
+
import { t as WorkbenchSelect } from "./workbenchSelect-DBGP7Y4Z.js";
|
|
13
13
|
import * as React from "react";
|
|
14
14
|
import reactExports, { Children, Fragment, Suspense, createContext, forwardRef, isValidElement, lazy, memo, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
15
15
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1302,9 +1302,9 @@ function CommentInspector({ title, content, disabled = false, readOnly, dark, on
|
|
|
1302
1302
|
}),
|
|
1303
1303
|
/* @__PURE__ */ jsx(TabsContent, {
|
|
1304
1304
|
value: "preview",
|
|
1305
|
-
className: "flex min-h-0 flex-1 flex-col rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-[var(--
|
|
1305
|
+
className: "flex min-h-0 flex-1 flex-col rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-[var(--_open-flow-comment-border)] bg-[var(--_open-flow-comment-surface)] p-2",
|
|
1306
1306
|
children: /* @__PURE__ */ jsx("div", {
|
|
1307
|
-
className: "min-h-0 flex-1 overflow-auto rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-[color-mix(in_srgb,var(--
|
|
1307
|
+
className: "min-h-0 flex-1 overflow-auto rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-[color-mix(in_srgb,var(--_open-flow-comment-border)_45%,transparent)] bg-[var(--_open-flow-comment-content)] p-3",
|
|
1308
1308
|
children: /* @__PURE__ */ jsx("div", {
|
|
1309
1309
|
className: "markdown-body min-w-0",
|
|
1310
1310
|
onDoubleClick: () => setSource(true),
|
|
@@ -2559,6 +2559,7 @@ function fallbackIcon$1(item) {
|
|
|
2559
2559
|
case "agent": return "llm";
|
|
2560
2560
|
case "condition": return "condition";
|
|
2561
2561
|
case "decision": return "decision";
|
|
2562
|
+
case "http-request":
|
|
2562
2563
|
case "openapi":
|
|
2563
2564
|
case "connector":
|
|
2564
2565
|
case "connector-group": return "connection";
|
|
@@ -5607,44 +5608,44 @@ function FlowNodeList({ nodes, onFocusNode, onSelect, groupTriggers = false }) {
|
|
|
5607
5608
|
});
|
|
5608
5609
|
}
|
|
5609
5610
|
var valueEditor_module_default = {
|
|
5610
|
-
root: "
|
|
5611
|
-
errorAnchor: "
|
|
5612
|
-
body: "
|
|
5613
|
-
valueTools: "
|
|
5614
|
-
options: "
|
|
5615
|
-
toolbar: "
|
|
5616
|
-
presence: "
|
|
5617
|
-
actions: "
|
|
5618
|
-
collection: "
|
|
5619
|
-
fieldName: "
|
|
5620
|
-
fieldType: "
|
|
5621
|
-
json: "
|
|
5622
|
-
description: "
|
|
5623
|
-
error: "
|
|
5624
|
-
summary: "
|
|
5625
|
-
summaryError: "
|
|
5626
|
-
srOnly: "
|
|
5627
|
-
option: "
|
|
5628
|
-
header: "
|
|
5629
|
-
leadingControl: "
|
|
5630
|
-
toggleControl: "
|
|
5631
|
-
valueAddon: "
|
|
5632
|
-
summaryText: "
|
|
5633
|
-
clearValue: "
|
|
5634
|
-
resetValue: "
|
|
5635
|
-
unsetValue: "
|
|
5636
|
-
arrayIndex: "
|
|
5637
|
-
nullValue: "
|
|
5638
|
-
nullChip: "
|
|
5639
|
-
collectionActions: "
|
|
5640
|
-
emptyObjectContent: "
|
|
5641
|
-
emptyObjectConstraint: "
|
|
5642
|
-
jsonCode: "
|
|
5643
|
-
emptyString: "
|
|
5644
|
-
booleanControl: "
|
|
5645
|
-
booleanIndicator: "
|
|
5646
|
-
objectNotice: "
|
|
5647
|
-
valuePrefix: "
|
|
5611
|
+
root: "valueEditor_root_4a4f1",
|
|
5612
|
+
errorAnchor: "valueEditor_errorAnchor_4a4f1",
|
|
5613
|
+
body: "valueEditor_body_4a4f1",
|
|
5614
|
+
valueTools: "valueEditor_valueTools_4a4f1",
|
|
5615
|
+
options: "valueEditor_options_4a4f1",
|
|
5616
|
+
toolbar: "valueEditor_toolbar_4a4f1",
|
|
5617
|
+
presence: "valueEditor_presence_4a4f1",
|
|
5618
|
+
actions: "valueEditor_actions_4a4f1",
|
|
5619
|
+
collection: "valueEditor_collection_4a4f1",
|
|
5620
|
+
fieldName: "valueEditor_fieldName_4a4f1",
|
|
5621
|
+
fieldType: "valueEditor_fieldType_4a4f1",
|
|
5622
|
+
json: "valueEditor_json_4a4f1",
|
|
5623
|
+
description: "valueEditor_description_4a4f1",
|
|
5624
|
+
error: "valueEditor_error_4a4f1",
|
|
5625
|
+
summary: "valueEditor_summary_4a4f1",
|
|
5626
|
+
summaryError: "valueEditor_summaryError_4a4f1",
|
|
5627
|
+
srOnly: "valueEditor_srOnly_4a4f1",
|
|
5628
|
+
option: "valueEditor_option_4a4f1",
|
|
5629
|
+
header: "valueEditor_header_4a4f1",
|
|
5630
|
+
leadingControl: "valueEditor_leadingControl_4a4f1",
|
|
5631
|
+
toggleControl: "valueEditor_toggleControl_4a4f1",
|
|
5632
|
+
valueAddon: "valueEditor_valueAddon_4a4f1",
|
|
5633
|
+
summaryText: "valueEditor_summaryText_4a4f1",
|
|
5634
|
+
clearValue: "valueEditor_clearValue_4a4f1",
|
|
5635
|
+
resetValue: "valueEditor_resetValue_4a4f1",
|
|
5636
|
+
unsetValue: "valueEditor_unsetValue_4a4f1",
|
|
5637
|
+
arrayIndex: "valueEditor_arrayIndex_4a4f1",
|
|
5638
|
+
nullValue: "valueEditor_nullValue_4a4f1",
|
|
5639
|
+
nullChip: "valueEditor_nullChip_4a4f1",
|
|
5640
|
+
collectionActions: "valueEditor_collectionActions_4a4f1",
|
|
5641
|
+
emptyObjectContent: "valueEditor_emptyObjectContent_4a4f1",
|
|
5642
|
+
emptyObjectConstraint: "valueEditor_emptyObjectConstraint_4a4f1",
|
|
5643
|
+
jsonCode: "valueEditor_jsonCode_4a4f1",
|
|
5644
|
+
emptyString: "valueEditor_emptyString_4a4f1",
|
|
5645
|
+
booleanControl: "valueEditor_booleanControl_4a4f1",
|
|
5646
|
+
booleanIndicator: "valueEditor_booleanIndicator_4a4f1",
|
|
5647
|
+
objectNotice: "valueEditor_objectNotice_4a4f1",
|
|
5648
|
+
valuePrefix: "valueEditor_valuePrefix_4a4f1"
|
|
5648
5649
|
};
|
|
5649
5650
|
//#endregion
|
|
5650
5651
|
//#region src/form/browser/fieldControl.tsx
|
|
@@ -5654,6 +5655,7 @@ function ValueEditorFeedback({ children, error }) {
|
|
|
5654
5655
|
const errorId = error == null ? void 0 : `${id}-error`;
|
|
5655
5656
|
return /* @__PURE__ */ jsxs("div", {
|
|
5656
5657
|
className: valueEditor_module_default.errorAnchor,
|
|
5658
|
+
"data-feedback": error != null || void 0,
|
|
5657
5659
|
children: [children(errorId), error != null && /* @__PURE__ */ jsx("div", {
|
|
5658
5660
|
id: errorId,
|
|
5659
5661
|
className: valueEditor_module_default.error,
|
|
@@ -23361,8 +23363,9 @@ function FieldValueEditor(suppliedProps) {
|
|
|
23361
23363
|
});
|
|
23362
23364
|
const firstName = objectFieldNames(schema, value)[0];
|
|
23363
23365
|
const firstSchema = firstName == null ? void 0 : objectValue(source.properties)?.[firstName] ?? source.additionalProperties ?? {};
|
|
23366
|
+
const firstEditorSchema = !definitionEditable && editorComponent(firstSchema) === "json" ? defaultValueEditorSchema(firstSchema) : firstSchema;
|
|
23364
23367
|
const firstValue = firstName == null ? void 0 : objectValue(value)?.[firstName];
|
|
23365
|
-
const childMarker = type === "array" ? array.length > 0 : firstName != null && (sorting && props.onDefinitionChange != null || fieldValueShape(
|
|
23368
|
+
const childMarker = type === "array" ? array.length > 0 : firstName != null && (sorting && props.onDefinitionChange != null || fieldValueShape(firstEditorSchema, firstValue, {
|
|
23366
23369
|
objectChild: true,
|
|
23367
23370
|
depth: depth + 1
|
|
23368
23371
|
}).expandable);
|
|
@@ -23373,6 +23376,7 @@ function FieldValueEditor(suppliedProps) {
|
|
|
23373
23376
|
id: `${id}-body`,
|
|
23374
23377
|
className: valueEditor_module_default.body,
|
|
23375
23378
|
"data-value-body": true,
|
|
23379
|
+
"data-feedback": anchor === "body" && messages.length > 0 || void 0,
|
|
23376
23380
|
hidden: compactValue && expandable && !expanded || expandable && !hasExpandedContent,
|
|
23377
23381
|
children: [
|
|
23378
23382
|
!showUnset && !compactValue && valueEditable && presence !== "value" && /* @__PURE__ */ jsx("span", {
|
|
@@ -23503,6 +23507,7 @@ function FieldValueEditor(suppliedProps) {
|
|
|
23503
23507
|
"aria-label": label,
|
|
23504
23508
|
"aria-describedby": messages.length ? `${id}-error` : void 0,
|
|
23505
23509
|
ref: setContainer,
|
|
23510
|
+
"data-summary-feedback": anchor === "summary" && messages.length > 0 || void 0,
|
|
23506
23511
|
"data-inline": props.hideOptions && !hasHeader || void 0,
|
|
23507
23512
|
"data-compact": props.compact || void 0,
|
|
23508
23513
|
"data-value-tools": canReset || canClear || canToggleJson || inlineExpansion && hasExpandedContent || void 0,
|
|
@@ -24115,7 +24120,7 @@ function EditableAgentSettingsProvider({ children, task, nodeId, store, connecto
|
|
|
24115
24120
|
return false;
|
|
24116
24121
|
}
|
|
24117
24122
|
const decoded = decodeRevisionContent({
|
|
24118
|
-
modelVersion:
|
|
24123
|
+
modelVersion: 12,
|
|
24119
24124
|
modules: {},
|
|
24120
24125
|
document: {
|
|
24121
24126
|
bindings: {},
|
|
@@ -24534,7 +24539,7 @@ function CodeEditor({ ariaDescribedBy, ariaLabel, diagnostics, disabled, errorLa
|
|
|
24534
24539
|
darkMode.current = darkMode$;
|
|
24535
24540
|
setFailed(false);
|
|
24536
24541
|
setLoading(true);
|
|
24537
|
-
const extension = import("./typeScriptSession-
|
|
24542
|
+
const extension = import("./typeScriptSession-C9sBGOKZ.js").then(({ loadTypeScriptExtension }) => loadTypeScriptExtension(uri, typingRef.current, () => prepareCompletionRef.current?.())).catch(() => void 0);
|
|
24538
24543
|
claimEditor(uri).then((nextRelease) => {
|
|
24539
24544
|
release = nextRelease;
|
|
24540
24545
|
if (disposed) {
|
|
@@ -24621,7 +24626,7 @@ function CodeEditor({ ariaDescribedBy, ariaLabel, diagnostics, disabled, errorLa
|
|
|
24621
24626
|
editor.current?.updateOptions({ ariaDescribedBy });
|
|
24622
24627
|
}, [ariaDescribedBy]);
|
|
24623
24628
|
useEffect(() => {
|
|
24624
|
-
import("./typeScriptSession-
|
|
24629
|
+
import("./typeScriptSession-C9sBGOKZ.js").then(({ updateTypeScriptTyping }) => updateTypeScriptTyping(uri, typing)).catch(noop);
|
|
24625
24630
|
}, [typing, uri]);
|
|
24626
24631
|
useEffect(() => {
|
|
24627
24632
|
if (location != null) editor.current?.revealPosition?.(location.line, location.column);
|
|
@@ -24645,6 +24650,59 @@ function CodeEditor({ ariaDescribedBy, ariaLabel, diagnostics, disabled, errorLa
|
|
|
24645
24650
|
});
|
|
24646
24651
|
}
|
|
24647
24652
|
//#endregion
|
|
24653
|
+
//#region src/workbench/browser/runtime/editor/codeHttpHosts.tsx
|
|
24654
|
+
/** Edits the hosts of a Code `http` Capability, one per line; an empty list removes the Capability. */
|
|
24655
|
+
function CodeHttpHosts({ disabled, hosts, onSave }) {
|
|
24656
|
+
const t = useTranslate();
|
|
24657
|
+
const id = useId();
|
|
24658
|
+
const saved = hosts.join("\n");
|
|
24659
|
+
const [draft, setDraft] = useState(saved);
|
|
24660
|
+
const [error, setError] = useState();
|
|
24661
|
+
useEffect(() => {
|
|
24662
|
+
setDraft(saved);
|
|
24663
|
+
setError(void 0);
|
|
24664
|
+
}, [saved]);
|
|
24665
|
+
const commit = async () => {
|
|
24666
|
+
const next = [...new Set(draft.split(/[\s,]+/).flatMap((host) => host == "" ? [] : [host.toLowerCase()]))];
|
|
24667
|
+
const invalid = next.find((host) => !isHttpHost(host));
|
|
24668
|
+
if (invalid != null) return setError(t("inspector.task.httpHostsInvalid", { host: invalid }));
|
|
24669
|
+
if (next.length > 20) return setError(t("inspector.task.httpHostsLimit", { count: 20 }));
|
|
24670
|
+
setError(void 0);
|
|
24671
|
+
if (dequal$1(next, hosts)) setDraft(saved);
|
|
24672
|
+
else await onSave(next);
|
|
24673
|
+
};
|
|
24674
|
+
return /* @__PURE__ */ jsxs(Field, {
|
|
24675
|
+
"data-inspector-section": "code-http",
|
|
24676
|
+
children: [
|
|
24677
|
+
/* @__PURE__ */ jsx(FieldLabel, {
|
|
24678
|
+
className: "text-xs font-normal",
|
|
24679
|
+
htmlFor: `${id}-hosts`,
|
|
24680
|
+
children: t("inspector.task.httpHosts")
|
|
24681
|
+
}),
|
|
24682
|
+
/* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
24683
|
+
error,
|
|
24684
|
+
children: (errorId) => /* @__PURE__ */ jsx(Textarea, {
|
|
24685
|
+
"aria-describedby": [`${id}-hint`, errorId].filter(Boolean).join(" "),
|
|
24686
|
+
"aria-invalid": error != null || void 0,
|
|
24687
|
+
className: "min-h-14 font-mono text-xs",
|
|
24688
|
+
disabled,
|
|
24689
|
+
id: `${id}-hosts`,
|
|
24690
|
+
onBlur: () => void commit(),
|
|
24691
|
+
onChange: (event) => setDraft(event.target.value),
|
|
24692
|
+
placeholder: "api.example.com",
|
|
24693
|
+
rows: 2,
|
|
24694
|
+
spellCheck: false,
|
|
24695
|
+
value: draft
|
|
24696
|
+
})
|
|
24697
|
+
}),
|
|
24698
|
+
/* @__PURE__ */ jsx(FieldDescription, {
|
|
24699
|
+
id: `${id}-hint`,
|
|
24700
|
+
children: t("inspector.task.httpHostsHint")
|
|
24701
|
+
})
|
|
24702
|
+
]
|
|
24703
|
+
});
|
|
24704
|
+
}
|
|
24705
|
+
//#endregion
|
|
24648
24706
|
//#region src/workbench/browser/runtime/editor/generateTyping.ts
|
|
24649
24707
|
function generateTyping(language, inputsDef, outputsDef) {
|
|
24650
24708
|
if (language === "typescript") return genTypeScript(inputsDef, outputsDef) + "\n";
|
|
@@ -24865,7 +24923,12 @@ function EditableCodeTaskSection({ connectorAccess, connectorCandidates, connect
|
|
|
24865
24923
|
setPending(true);
|
|
24866
24924
|
try {
|
|
24867
24925
|
const connectorCapabilities = value === permission && task != null && "moduleId" in task ? (task.capabilities ?? []).filter((item) => item.kind == "connector") : value == null ? [] : [value];
|
|
24868
|
-
|
|
24926
|
+
const http = task != null && "moduleId" in task ? (task.capabilities ?? []).filter((item) => item.kind == "http") : [];
|
|
24927
|
+
if (!await store.nodes.setCodeActions(selection.id, [
|
|
24928
|
+
...connectorCapabilities,
|
|
24929
|
+
...workflows,
|
|
24930
|
+
...http
|
|
24931
|
+
])) return false;
|
|
24869
24932
|
setPermission(value);
|
|
24870
24933
|
return true;
|
|
24871
24934
|
} catch (cause) {
|
|
@@ -24900,6 +24963,19 @@ function EditableCodeTaskSection({ connectorAccess, connectorCandidates, connect
|
|
|
24900
24963
|
children: t("inspector.task.missing")
|
|
24901
24964
|
});
|
|
24902
24965
|
if (!("moduleId" in task)) return null;
|
|
24966
|
+
const httpHosts = (task.capabilities ?? []).find((item) => item.kind == "http")?.hosts ?? [];
|
|
24967
|
+
const saveHttpHosts = async (hosts) => {
|
|
24968
|
+
try {
|
|
24969
|
+
const others = (task.capabilities ?? []).filter((item) => item.kind != "http");
|
|
24970
|
+
return await store.nodes.setCodeActions(selection.id, hosts.length == 0 ? others : [...others, {
|
|
24971
|
+
kind: "http",
|
|
24972
|
+
hosts
|
|
24973
|
+
}]);
|
|
24974
|
+
} catch (cause) {
|
|
24975
|
+
store.notify(errorNotice(cause, t));
|
|
24976
|
+
return false;
|
|
24977
|
+
}
|
|
24978
|
+
};
|
|
24903
24979
|
const selectedActions = permission?.mode == "independent" ? permission.actions : [];
|
|
24904
24980
|
const selectedTools = [...selectedActions, ...(task.capabilities ?? []).filter((item) => item.kind == "workflow")];
|
|
24905
24981
|
const summary = actionSummary(selectedTools, hintedCatalog, providers.data ?? []);
|
|
@@ -24911,7 +24987,7 @@ function EditableCodeTaskSection({ connectorAccess, connectorCandidates, connect
|
|
|
24911
24987
|
const catalog = accountCatalogs[action.serviceId];
|
|
24912
24988
|
return catalog != null && catalog.byId.get(entry.connectionId)?.status !== "active";
|
|
24913
24989
|
});
|
|
24914
|
-
const typingFor = (shared) => codeTyping(task, permission == null ? task.capabilities : [permission, ...(task.capabilities ?? []).filter((item) => item.kind
|
|
24990
|
+
const typingFor = (shared) => codeTyping(task, permission == null ? task.capabilities : [permission, ...(task.capabilities ?? []).filter((item) => item.kind != "connector")], permission?.mode == "shared" ? shared : {
|
|
24915
24991
|
...hintedCatalog,
|
|
24916
24992
|
...shared
|
|
24917
24993
|
}, providerIds);
|
|
@@ -24989,6 +25065,11 @@ function EditableCodeTaskSection({ connectorAccess, connectorCandidates, connect
|
|
|
24989
25065
|
children: loadError ?? completionError
|
|
24990
25066
|
})]
|
|
24991
25067
|
}),
|
|
25068
|
+
/* @__PURE__ */ jsx(CodeHttpHosts, {
|
|
25069
|
+
disabled: disabled || pending,
|
|
25070
|
+
hosts: httpHosts,
|
|
25071
|
+
onSave: saveHttpHosts
|
|
25072
|
+
}),
|
|
24992
25073
|
/* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
24993
25074
|
error: moduleDiagnostics.length > 0 ? moduleDiagnostics.map((diagnostic) => /* @__PURE__ */ jsx("div", { children: diagnosticMessage(diagnostic, t) }, `${diagnostic.path}:${diagnostic.line}:${diagnostic.column}:${diagnostic.code}`)) : void 0,
|
|
24994
25075
|
children: (errorId) => /* @__PURE__ */ jsx(CodeEditor, {
|
|
@@ -29561,6 +29642,278 @@ function GeneralSettings({ title, children, disabled = false, readOnly = false,
|
|
|
29561
29642
|
}, nodeId);
|
|
29562
29643
|
}
|
|
29563
29644
|
//#endregion
|
|
29645
|
+
//#region src/workbench/browser/runtime/editor/httpParameterEditor.tsx
|
|
29646
|
+
var expanded$2 = () => true;
|
|
29647
|
+
var object = (value) => value != null && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
29648
|
+
function HttpParameterEditor({ group, task, entries, disabled, readOnly, variables, renderSource, onEdit }) {
|
|
29649
|
+
const t = useTranslate();
|
|
29650
|
+
if (task.executor.kind !== "http-request") return null;
|
|
29651
|
+
const parameters = task.executor[group];
|
|
29652
|
+
const root = parameters.mode === "object" ? entries[group] : void 0;
|
|
29653
|
+
const label = t(`httpRequest.${group}`);
|
|
29654
|
+
const schema = group === "query" ? httpQuerySchema : httpHeaderSchema;
|
|
29655
|
+
const handle = (name) => `${group === "query" ? "query" : "header"}.${name}`;
|
|
29656
|
+
const values = parameters.mode === "fields" ? Object.fromEntries(parameters.names.map((name) => {
|
|
29657
|
+
const value = entries[handle(name)]?.value;
|
|
29658
|
+
return [name, value === void 0 ? "" : value];
|
|
29659
|
+
})) : object(root?.value);
|
|
29660
|
+
const input = (port, entry, name) => {
|
|
29661
|
+
const upstream = renderSource(port.handle, port);
|
|
29662
|
+
return {
|
|
29663
|
+
embedded: true,
|
|
29664
|
+
definition: port,
|
|
29665
|
+
variables,
|
|
29666
|
+
disabled,
|
|
29667
|
+
readOnly,
|
|
29668
|
+
variableName: entry?.variableName,
|
|
29669
|
+
connected: entry?.connected ?? false,
|
|
29670
|
+
upstream: upstream == null ? void 0 : {
|
|
29671
|
+
...upstream,
|
|
29672
|
+
onChange: (source) => onEdit({
|
|
29673
|
+
kind: "source",
|
|
29674
|
+
source: {
|
|
29675
|
+
kind: "node",
|
|
29676
|
+
...source
|
|
29677
|
+
},
|
|
29678
|
+
field: name,
|
|
29679
|
+
fields: values
|
|
29680
|
+
})
|
|
29681
|
+
},
|
|
29682
|
+
onVariable: (next) => {
|
|
29683
|
+
if (next == null) onEdit({
|
|
29684
|
+
kind: "fields",
|
|
29685
|
+
value: name == null ? {} : {
|
|
29686
|
+
...values,
|
|
29687
|
+
[name]: ""
|
|
29688
|
+
},
|
|
29689
|
+
field: name
|
|
29690
|
+
});
|
|
29691
|
+
else onEdit({
|
|
29692
|
+
kind: "variable",
|
|
29693
|
+
name: next,
|
|
29694
|
+
field: name,
|
|
29695
|
+
fields: values
|
|
29696
|
+
});
|
|
29697
|
+
}
|
|
29698
|
+
};
|
|
29699
|
+
};
|
|
29700
|
+
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), /* @__PURE__ */ jsx(FieldTable, {
|
|
29701
|
+
standalone: true,
|
|
29702
|
+
layout: "values",
|
|
29703
|
+
typeColumn: false,
|
|
29704
|
+
columnHeadings: false,
|
|
29705
|
+
actionSlots: 2,
|
|
29706
|
+
children: /* @__PURE__ */ jsx(NodeInputValue, {
|
|
29707
|
+
...input({
|
|
29708
|
+
handle: group,
|
|
29709
|
+
jsonSchema: schema,
|
|
29710
|
+
nullable: true
|
|
29711
|
+
}, root),
|
|
29712
|
+
label,
|
|
29713
|
+
value: values,
|
|
29714
|
+
onValue: (next) => onEdit({
|
|
29715
|
+
kind: "fields",
|
|
29716
|
+
value: object(next)
|
|
29717
|
+
}),
|
|
29718
|
+
presentation: {
|
|
29719
|
+
valueOnly: true,
|
|
29720
|
+
hideOptions: true,
|
|
29721
|
+
hideValueTools: true,
|
|
29722
|
+
hideChildTypes: true,
|
|
29723
|
+
expansionPolicy: expanded$2,
|
|
29724
|
+
validateObjectFieldName: (name, current) => group === "query" ? !!name.trim() && (name === current || !Object.hasOwn(values, name)) : httpHeaderNameIssue(name, Object.keys(values).filter((key) => key !== current)) == null,
|
|
29725
|
+
renderObjectField: (name, props) => /* @__PURE__ */ jsx(NodeInputValue, {
|
|
29726
|
+
...input({
|
|
29727
|
+
handle: handle(name),
|
|
29728
|
+
jsonSchema: props.schema,
|
|
29729
|
+
nullable: true
|
|
29730
|
+
}, parameters.mode === "fields" ? entries[handle(name)] : void 0, name),
|
|
29731
|
+
label: props.label,
|
|
29732
|
+
value: parameters.mode === "fields" ? entries[handle(name)]?.value : values[name],
|
|
29733
|
+
presentation: props,
|
|
29734
|
+
onValue: (value) => onEdit({
|
|
29735
|
+
kind: "fields",
|
|
29736
|
+
value: {
|
|
29737
|
+
...values,
|
|
29738
|
+
[name]: value ?? null
|
|
29739
|
+
},
|
|
29740
|
+
field: name
|
|
29741
|
+
})
|
|
29742
|
+
})
|
|
29743
|
+
}
|
|
29744
|
+
})
|
|
29745
|
+
})] });
|
|
29746
|
+
}
|
|
29747
|
+
//#endregion
|
|
29748
|
+
//#region src/workbench/browser/runtime/editor/httpRequestSection.tsx
|
|
29749
|
+
function HttpRequestSection({ task, disabled, onSave, parameters, input }) {
|
|
29750
|
+
const t = useTranslate();
|
|
29751
|
+
const id = useId();
|
|
29752
|
+
const saveRef = useRef(onSave);
|
|
29753
|
+
saveRef.current = onSave;
|
|
29754
|
+
const taskRef = useRef(task);
|
|
29755
|
+
taskRef.current = task;
|
|
29756
|
+
const [changes] = useState(() => new TaskExecutorChanges(task.executor, (before, next) => {
|
|
29757
|
+
if (before.kind != "http-request" || next.kind != "http-request") return Promise.resolve(false);
|
|
29758
|
+
const current = taskRef.current;
|
|
29759
|
+
if (current.executor.kind !== "http-request") return Promise.resolve(false);
|
|
29760
|
+
const merged = { ...current.executor };
|
|
29761
|
+
for (const key of [
|
|
29762
|
+
"method",
|
|
29763
|
+
"authentication",
|
|
29764
|
+
"bodyFormat",
|
|
29765
|
+
"responseFormat",
|
|
29766
|
+
"statusPolicy"
|
|
29767
|
+
]) if (!dequal(before[key], next[key])) Object.assign(merged, { [key]: next[key] });
|
|
29768
|
+
return saveRef.current(current, httpRequestTask(merged, current.name, current));
|
|
29769
|
+
}));
|
|
29770
|
+
const [config, setConfig] = useState(changes.value);
|
|
29771
|
+
const [failed, setFailed] = useState(false);
|
|
29772
|
+
useEffect(() => {
|
|
29773
|
+
changes.sync(task.executor);
|
|
29774
|
+
setConfig(changes.value);
|
|
29775
|
+
}, [changes, task.executor]);
|
|
29776
|
+
if (config.kind != "http-request") return null;
|
|
29777
|
+
const issues = httpRequestIssues(config);
|
|
29778
|
+
const error = (field, index) => {
|
|
29779
|
+
const messages = issues.filter((issue) => issue.field === field && issue.index === index).map((issue) => t(`httpRequest.${issue.code}`));
|
|
29780
|
+
return messages.length ? [...new Set(messages)].join(" ") : void 0;
|
|
29781
|
+
};
|
|
29782
|
+
async function save() {
|
|
29783
|
+
try {
|
|
29784
|
+
setFailed(!await changes.save());
|
|
29785
|
+
} catch {
|
|
29786
|
+
setFailed(true);
|
|
29787
|
+
}
|
|
29788
|
+
}
|
|
29789
|
+
function update(patch) {
|
|
29790
|
+
if (disabled || changes.value.kind != "http-request") return;
|
|
29791
|
+
changes.value = {
|
|
29792
|
+
...changes.value,
|
|
29793
|
+
...patch
|
|
29794
|
+
};
|
|
29795
|
+
setConfig(changes.value);
|
|
29796
|
+
save();
|
|
29797
|
+
}
|
|
29798
|
+
const select = (key, value, options, change, fieldLabel = t(`httpRequest.${key}`)) => /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
29799
|
+
htmlFor: `${id}-${key}`,
|
|
29800
|
+
children: fieldLabel
|
|
29801
|
+
}), /* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
29802
|
+
error: key === "authentication" && config.authentication.type === "apiKey" ? void 0 : error(key),
|
|
29803
|
+
children: (errorId) => /* @__PURE__ */ jsx(NativeSelect, {
|
|
29804
|
+
className: "w-full",
|
|
29805
|
+
id: `${id}-${key}`,
|
|
29806
|
+
value,
|
|
29807
|
+
disabled,
|
|
29808
|
+
"aria-invalid": !!errorId,
|
|
29809
|
+
"aria-describedby": errorId,
|
|
29810
|
+
onChange: (event) => change(event.target.value),
|
|
29811
|
+
children: options.map(([optionValue, label]) => /* @__PURE__ */ jsx(NativeSelectOption, {
|
|
29812
|
+
value: optionValue,
|
|
29813
|
+
children: label
|
|
29814
|
+
}, optionValue))
|
|
29815
|
+
})
|
|
29816
|
+
})] }, key);
|
|
29817
|
+
const auth = config.authentication;
|
|
29818
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
29819
|
+
/* @__PURE__ */ jsx(InspectorSection, {
|
|
29820
|
+
title: t("httpRequest.title"),
|
|
29821
|
+
"data-inspector-section": "task",
|
|
29822
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
29823
|
+
className: "node-settings flex flex-col gap-3",
|
|
29824
|
+
"data-value-editor-scope": true,
|
|
29825
|
+
children: [
|
|
29826
|
+
input("url", "URL"),
|
|
29827
|
+
select("method", config.method, [
|
|
29828
|
+
"GET",
|
|
29829
|
+
"POST",
|
|
29830
|
+
"PUT",
|
|
29831
|
+
"PATCH",
|
|
29832
|
+
"DELETE",
|
|
29833
|
+
"HEAD",
|
|
29834
|
+
"OPTIONS"
|
|
29835
|
+
].map((value) => [value, value]), (method) => update({ method })),
|
|
29836
|
+
parameters,
|
|
29837
|
+
select("bodyFormat", config.bodyFormat, [
|
|
29838
|
+
["none", t("httpRequest.none")],
|
|
29839
|
+
["json", "JSON"],
|
|
29840
|
+
["text", t("httpRequest.text")],
|
|
29841
|
+
["form", "URL-encoded"]
|
|
29842
|
+
], (bodyFormat) => update({ bodyFormat })),
|
|
29843
|
+
config.bodyFormat !== "none" && input("body", t("httpRequest.body"))
|
|
29844
|
+
]
|
|
29845
|
+
})
|
|
29846
|
+
}),
|
|
29847
|
+
/* @__PURE__ */ jsx(InspectorSection, {
|
|
29848
|
+
title: t("httpRequest.authentication"),
|
|
29849
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
29850
|
+
className: "node-settings flex flex-col gap-3",
|
|
29851
|
+
"data-value-editor-scope": true,
|
|
29852
|
+
children: [
|
|
29853
|
+
select("authentication", auth.type, [
|
|
29854
|
+
["none", t("httpRequest.none")],
|
|
29855
|
+
["bearer", "Bearer"],
|
|
29856
|
+
["basic", "Basic"],
|
|
29857
|
+
["apiKey", "API Key"]
|
|
29858
|
+
], (type) => update({ authentication: type == "apiKey" ? {
|
|
29859
|
+
type,
|
|
29860
|
+
name: "X-API-Key",
|
|
29861
|
+
in: "header"
|
|
29862
|
+
} : { type } }), t("httpRequest.authenticationType")),
|
|
29863
|
+
auth.type == "apiKey" && /* @__PURE__ */ jsxs(Fragment$1, { children: [select("location", auth.in, [["header", "Header"], ["query", "Query"]], (location) => update({ authentication: {
|
|
29864
|
+
...auth,
|
|
29865
|
+
in: location
|
|
29866
|
+
} })), /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
29867
|
+
htmlFor: `${id}-keyName`,
|
|
29868
|
+
children: t("httpRequest.keyName")
|
|
29869
|
+
}), /* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
29870
|
+
error: error("authentication"),
|
|
29871
|
+
children: (errorId) => /* @__PURE__ */ jsx(Input, {
|
|
29872
|
+
id: `${id}-keyName`,
|
|
29873
|
+
value: auth.name,
|
|
29874
|
+
"aria-invalid": !!errorId,
|
|
29875
|
+
"aria-describedby": errorId,
|
|
29876
|
+
readOnly: disabled,
|
|
29877
|
+
onChange: (event) => update({ authentication: {
|
|
29878
|
+
...auth,
|
|
29879
|
+
name: event.target.value
|
|
29880
|
+
} })
|
|
29881
|
+
})
|
|
29882
|
+
})] })] }),
|
|
29883
|
+
auth.type === "basic" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [input("auth.username", t("httpRequest.username")), input("auth.password", t("httpRequest.password"))] }) : auth.type !== "none" ? input("auth.token", auth.type === "apiKey" ? t("httpRequest.keyValue") : "Token") : null
|
|
29884
|
+
]
|
|
29885
|
+
})
|
|
29886
|
+
}),
|
|
29887
|
+
/* @__PURE__ */ jsx(InspectorSection, {
|
|
29888
|
+
title: t("httpRequest.responseSettings"),
|
|
29889
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
29890
|
+
className: "node-settings flex flex-col gap-3",
|
|
29891
|
+
"data-value-editor-scope": true,
|
|
29892
|
+
children: [
|
|
29893
|
+
select("responseFormat", config.responseFormat, [
|
|
29894
|
+
["auto", t("httpRequest.auto")],
|
|
29895
|
+
["json", "JSON"],
|
|
29896
|
+
["text", t("httpRequest.text")]
|
|
29897
|
+
], (responseFormat) => update({ responseFormat })),
|
|
29898
|
+
select("statusPolicy", config.statusPolicy, [["success", t("httpRequest.success")], ["all", t("httpRequest.all")]], (statusPolicy) => update({ statusPolicy })),
|
|
29899
|
+
failed && /* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
29900
|
+
error: t("httpRequest.saveFailed"),
|
|
29901
|
+
children: (errorId) => /* @__PURE__ */ jsx(Button$1, {
|
|
29902
|
+
variant: "outline",
|
|
29903
|
+
size: "field",
|
|
29904
|
+
"aria-invalid": true,
|
|
29905
|
+
"aria-describedby": errorId,
|
|
29906
|
+
disabled,
|
|
29907
|
+
onClick: () => void save(),
|
|
29908
|
+
children: t("httpRequest.retry")
|
|
29909
|
+
})
|
|
29910
|
+
})
|
|
29911
|
+
]
|
|
29912
|
+
})
|
|
29913
|
+
})
|
|
29914
|
+
] });
|
|
29915
|
+
}
|
|
29916
|
+
//#endregion
|
|
29564
29917
|
//#region src/workbench/browser/runtime/editor/leinaBotSelect.tsx
|
|
29565
29918
|
function LeinaBotSelect({ source, flowId, value, disabled, onChange }) {
|
|
29566
29919
|
const t = useTranslate();
|
|
@@ -30392,9 +30745,9 @@ function OpenApiSection({ task, disabled, load, onSave, credentials }) {
|
|
|
30392
30745
|
})]
|
|
30393
30746
|
})]
|
|
30394
30747
|
})
|
|
30395
|
-
})] }), selectedServer != null && Object.entries(object(selectedServer.variables ?? {})).map(([name, definition]) => /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: name }), /* @__PURE__ */ jsx(Input, {
|
|
30748
|
+
})] }), selectedServer != null && Object.entries(object$1(selectedServer.variables ?? {})).map(([name, definition]) => /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: name }), /* @__PURE__ */ jsx(Input, {
|
|
30396
30749
|
"aria-label": name,
|
|
30397
|
-
value: serverVariables[name] ?? String(object(definition).default ?? ""),
|
|
30750
|
+
value: serverVariables[name] ?? String(object$1(definition).default ?? ""),
|
|
30398
30751
|
disabled,
|
|
30399
30752
|
onChange: (event) => setServerVariables({
|
|
30400
30753
|
...serverVariables,
|
|
@@ -31595,7 +31948,7 @@ function WebhookHeadersEditor({ options, outputs, disabled, readOnly, sourceDisa
|
|
|
31595
31948
|
onDraftIssue: ignoreDraft,
|
|
31596
31949
|
valueAddon: source(),
|
|
31597
31950
|
editor: whole == null ? void 0 : selected(whole.output, issue("/responseHeadersSource")),
|
|
31598
|
-
validateObjectFieldName: (name, current) =>
|
|
31951
|
+
validateObjectFieldName: (name, current) => httpHeaderNameIssue(name, Object.keys(headers).filter((candidate) => candidate !== current)) == null,
|
|
31599
31952
|
renderObjectField: (name, props) => {
|
|
31600
31953
|
const reference = binding(name);
|
|
31601
31954
|
return /* @__PURE__ */ jsx(FieldValueEditor, {
|
|
@@ -32098,7 +32451,7 @@ function WebhookResponseEditor({ entries, disabled, readOnly, variables, renderS
|
|
|
32098
32451
|
hideValueTools: true,
|
|
32099
32452
|
hideChildTypes: true,
|
|
32100
32453
|
expansionPolicy: expanded,
|
|
32101
|
-
validateObjectFieldName: (next, current) =>
|
|
32454
|
+
validateObjectFieldName: (next, current) => httpHeaderNameIssue(next, Object.keys(value != null && typeof value === "object" && !Array.isArray(value) ? value : {}).filter((key) => key !== current)) == null
|
|
32102
32455
|
} : { hideOptions: true }
|
|
32103
32456
|
});
|
|
32104
32457
|
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), headers ? /* @__PURE__ */ jsx(FieldTable, {
|
|
@@ -32125,7 +32478,7 @@ function inspectorIcon(node) {
|
|
|
32125
32478
|
if (node?.kind == "task" && node.definition != null && "executor" in node.definition) {
|
|
32126
32479
|
if (node.definition.executor.kind == "decision") return "decision";
|
|
32127
32480
|
if (node.definition.executor.kind == "workflow") return "flow";
|
|
32128
|
-
if (node.definition.executor.kind == "openapi") return "task";
|
|
32481
|
+
if (node.definition.executor.kind == "openapi" || node.definition.executor.kind == "http-request") return "task";
|
|
32129
32482
|
return node.definition.executor.kind == "connector" ? "connection" : "llm";
|
|
32130
32483
|
}
|
|
32131
32484
|
return "task";
|
|
@@ -32158,6 +32511,7 @@ function nodePurposePlaceholder(selection, t, action, displays) {
|
|
|
32158
32511
|
case "agent": return t("addNode.agentDescription");
|
|
32159
32512
|
case "decision": return t("decision.description");
|
|
32160
32513
|
case "workflow": return t("workflow.description");
|
|
32514
|
+
case "http-request": return t("httpRequest.description");
|
|
32161
32515
|
case "openapi": return t("openapi.description");
|
|
32162
32516
|
case "connector": return action?.description;
|
|
32163
32517
|
case "llm": return t(definition.executor.mode == "json" ? "addNode.llmStructuredDescription" : "addNode.llmChatDescription");
|
|
@@ -32165,7 +32519,7 @@ function nodePurposePlaceholder(selection, t, action, displays) {
|
|
|
32165
32519
|
}
|
|
32166
32520
|
}
|
|
32167
32521
|
}
|
|
32168
|
-
function inputUpstreamSources({ revision, sourceNodeIcons, selection, store, handleName, t, triggerDisplays }) {
|
|
32522
|
+
function inputUpstreamSources({ revision, sourceNodeIcons, selection, store, handleName, port, t, triggerDisplays }) {
|
|
32169
32523
|
const graph = revision.graph();
|
|
32170
32524
|
const mapping = revision.inputMappings(selection.node)[handleName];
|
|
32171
32525
|
const sources = mapping?.kind == "sources" ? mapping.sources.filter((source) => source.kind == "node") : [];
|
|
@@ -32184,7 +32538,10 @@ function inputUpstreamSources({ revision, sourceNodeIcons, selection, store, han
|
|
|
32184
32538
|
check: void 0
|
|
32185
32539
|
};
|
|
32186
32540
|
}),
|
|
32187
|
-
query: revision.inputSource(selection.id, handleName)
|
|
32541
|
+
query: port == null ? revision.inputSource(selection.id, handleName) : {
|
|
32542
|
+
...revision.inputSource(selection.id, handleName),
|
|
32543
|
+
candidates: () => inputSourceCandidates(graph, selection.id, handleName, port)
|
|
32544
|
+
},
|
|
32188
32545
|
groups: [],
|
|
32189
32546
|
describeGroups: (candidates) => Object.entries(candidates).map(([nodeId, outputs]) => {
|
|
32190
32547
|
const node = graph.nodes[nodeId];
|
|
@@ -32227,6 +32584,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
32227
32584
|
const task = selection?.kind == "task" ? selection.definition : void 0;
|
|
32228
32585
|
const isAgent = task != null && "executor" in task && task.executor.kind == "agent";
|
|
32229
32586
|
const isDecision = task != null && "executor" in task && task.executor.kind == "decision";
|
|
32587
|
+
const isHttpRequest = task != null && "executor" in task && task.executor.kind == "http-request";
|
|
32230
32588
|
const isOpenApi = task != null && "executor" in task && task.executor.kind == "openapi";
|
|
32231
32589
|
const unconfiguredWorkflow = task != null && "executor" in task && task.executor.kind == "workflow" && !task.executor.flowId;
|
|
32232
32590
|
const unconfiguredOpenApi = task != null && "executor" in task && task.executor.kind == "openapi" && !task.executor.path;
|
|
@@ -32500,6 +32858,84 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
32500
32858
|
actions: workflowActions,
|
|
32501
32859
|
list: (signal) => store.listWorkflowTargets(signal)
|
|
32502
32860
|
}, `workflow:${selection?.id}`),
|
|
32861
|
+
isHttpRequest && task != null && "executor" in task && /* @__PURE__ */ jsx(HttpRequestSection, {
|
|
32862
|
+
task,
|
|
32863
|
+
disabled,
|
|
32864
|
+
input: (handle, label) => {
|
|
32865
|
+
if (selection?.kind !== "task") return null;
|
|
32866
|
+
const definition = task.inputs.find((port) => "handle" in port && port.handle === handle);
|
|
32867
|
+
if (definition == null) return null;
|
|
32868
|
+
const mapping = revision.inputMappings(selection.node)[handle];
|
|
32869
|
+
const source = mapping?.kind === "sources" ? mapping.sources.find((item) => item.kind === "binding") : void 0;
|
|
32870
|
+
const binding = source?.kind === "binding" ? revision.binding(source.bindingId) : void 0;
|
|
32871
|
+
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), /* @__PURE__ */ jsx(NodeInputValue, {
|
|
32872
|
+
embedded: true,
|
|
32873
|
+
definition,
|
|
32874
|
+
label,
|
|
32875
|
+
presentation: {
|
|
32876
|
+
compact: true,
|
|
32877
|
+
hideOptions: true
|
|
32878
|
+
},
|
|
32879
|
+
sourceOnly: handle.startsWith("auth."),
|
|
32880
|
+
readOnly,
|
|
32881
|
+
disabled,
|
|
32882
|
+
value: inputValue(mapping, definition.value),
|
|
32883
|
+
connected: mapping?.kind === "sources" && binding?.kind !== "variable",
|
|
32884
|
+
variableName: binding?.kind === "variable" ? binding.target : void 0,
|
|
32885
|
+
upstream: inputUpstreamSources({
|
|
32886
|
+
revision,
|
|
32887
|
+
sourceNodeIcons,
|
|
32888
|
+
selection,
|
|
32889
|
+
store,
|
|
32890
|
+
handleName: handle,
|
|
32891
|
+
t,
|
|
32892
|
+
triggerDisplays
|
|
32893
|
+
}),
|
|
32894
|
+
variables,
|
|
32895
|
+
onValue: (value, deletion) => {
|
|
32896
|
+
store?.nodes.setInputValue(selection.id, handle, value, deletion);
|
|
32897
|
+
},
|
|
32898
|
+
onVariable: (name) => {
|
|
32899
|
+
store?.nodes.setInputVariable(selection.id, handle, name);
|
|
32900
|
+
}
|
|
32901
|
+
})] }, handle);
|
|
32902
|
+
},
|
|
32903
|
+
parameters: selection?.kind === "task" && ["query", "headers"].map((group) => /* @__PURE__ */ jsx(HttpParameterEditor, {
|
|
32904
|
+
group,
|
|
32905
|
+
task,
|
|
32906
|
+
entries: Object.fromEntries(Object.entries(revision.inputMappings(selection.node)).map(([handle, mapping]) => {
|
|
32907
|
+
const source = mapping.kind === "sources" ? mapping.sources.find((item) => item.kind === "binding") : void 0;
|
|
32908
|
+
const binding = source?.kind === "binding" ? revision.binding(source.bindingId) : void 0;
|
|
32909
|
+
return [handle, {
|
|
32910
|
+
value: inputValue(mapping, void 0),
|
|
32911
|
+
connected: mapping.kind === "sources" && binding?.kind !== "variable",
|
|
32912
|
+
variableName: binding?.kind === "variable" ? binding.target : void 0
|
|
32913
|
+
}];
|
|
32914
|
+
})),
|
|
32915
|
+
variables,
|
|
32916
|
+
disabled,
|
|
32917
|
+
readOnly,
|
|
32918
|
+
renderSource: (handleName, port) => inputUpstreamSources({
|
|
32919
|
+
revision,
|
|
32920
|
+
sourceNodeIcons,
|
|
32921
|
+
selection,
|
|
32922
|
+
store,
|
|
32923
|
+
handleName,
|
|
32924
|
+
port,
|
|
32925
|
+
t,
|
|
32926
|
+
triggerDisplays
|
|
32927
|
+
}),
|
|
32928
|
+
onEdit: (edit) => {
|
|
32929
|
+
store?.nodes.saveHttpParameters(selection.id, group, edit);
|
|
32930
|
+
}
|
|
32931
|
+
}, group)),
|
|
32932
|
+
onSave: (before, value) => store?.nodes.saveTaskSettings(selection.id, {
|
|
32933
|
+
kind: "http-request",
|
|
32934
|
+
name: task.name,
|
|
32935
|
+
before,
|
|
32936
|
+
task: value
|
|
32937
|
+
}) ?? Promise.resolve(false)
|
|
32938
|
+
}, `http:${selection?.id}`),
|
|
32503
32939
|
isOpenApi && task != null && "executor" in task && /* @__PURE__ */ jsx(OpenApiSection, {
|
|
32504
32940
|
task,
|
|
32505
32941
|
credentials: (onInvalidChange) => selection?.kind === "task" && task.inputs.filter((port) => "handle" in port && port.handle.startsWith("auth.")).map((definition) => {
|
|
@@ -32548,7 +32984,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
32548
32984
|
task: value
|
|
32549
32985
|
}) ?? Promise.resolve(false)
|
|
32550
32986
|
}, `openapi:${selection?.id}`),
|
|
32551
|
-
!unconfiguredOpenApi && !unconfiguredWorkflow && (selection?.kind === "outputs" || selection?.kind === "approval" || selection?.kind === "wait" || selection?.kind === "task") && (() => {
|
|
32987
|
+
!isHttpRequest && !unconfiguredOpenApi && !unconfiguredWorkflow && (selection?.kind === "outputs" || selection?.kind === "approval" || selection?.kind === "wait" || selection?.kind === "task") && (() => {
|
|
32552
32988
|
const definitions = selection.kind === "outputs" ? [...selection.node.outputDefs] : selection.kind === "task" ? [...selection.definition?.inputs ?? []] : [...selection.node.inputDefinitions];
|
|
32553
32989
|
const handles = new Set(definitions.flatMap((definition) => "handle" in definition ? [definition.handle] : []));
|
|
32554
32990
|
for (const handle of Object.keys(revision.inputMappings(selection.node))) if (!handles.has(handle) && !(selection.kind === "task" && selection.node.additionalInputs?.some((port) => port.handle === handle))) definitions.push({
|
|
@@ -32567,6 +33003,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
32567
33003
|
const binding = source?.kind === "binding" ? revision.binding(source.bindingId) : void 0;
|
|
32568
33004
|
return {
|
|
32569
33005
|
definition,
|
|
33006
|
+
sourceOnly: isHttpRequest && definition.handle.startsWith("auth."),
|
|
32570
33007
|
editor: !readOnly && connectors != null && connector?.action == "leina.send_notification" && definition.handle == "leinaId" && mapping?.kind != "sources" ? /* @__PURE__ */ jsx(LeinaBotSelect, {
|
|
32571
33008
|
source: connectors,
|
|
32572
33009
|
flowId: revision.revision.flowId,
|
|
@@ -32714,7 +33151,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
32714
33151
|
readOnly,
|
|
32715
33152
|
groups: true,
|
|
32716
33153
|
layout: "ports",
|
|
32717
|
-
title: t("inspector.ports.outputsTitle"),
|
|
33154
|
+
title: t(isHttpRequest ? "httpRequest.responseOutputs" : "inspector.ports.outputsTitle"),
|
|
32718
33155
|
output: true,
|
|
32719
33156
|
values: presentDecisionOutputs(selection.definition, t),
|
|
32720
33157
|
disabled: disabled || !("moduleId" in selection.node.task || isAgent),
|
|
@@ -37221,6 +37658,7 @@ function WorkspaceDiagnosticsIsland({ checking, items, nodes, onOpenChange, onRe
|
|
|
37221
37658
|
}), /* @__PURE__ */ jsxs(PopoverContent, {
|
|
37222
37659
|
align: "end",
|
|
37223
37660
|
className: "diagnostics-popover nodrag nopan",
|
|
37661
|
+
"data-canvas-control-scope": true,
|
|
37224
37662
|
container: popupContainer,
|
|
37225
37663
|
side: "bottom",
|
|
37226
37664
|
sideOffset: 8,
|