@burdenoff/fluidgrids-fe-sdk 2026.1111.14 → 2026.1111.16
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 +41 -0
- package/dist/{ExecutionDetailPage-itor_whl.js → ExecutionDetailPage-D-0_POAf.js} +4 -4
- package/dist/{FluidGridsProvider-B30VcLdX.js → FluidGridsProvider-DmvFADFa.js} +20 -309
- package/dist/{HistoryPage-DueEld8g.js → HistoryPage-BbUgxx1I.js} +1 -1
- package/dist/{InsightsPage-DQ7KCR9h.js → InsightsPage-s6f5bU-8.js} +2 -2
- package/dist/{ManagedAiPolicyAuthority-C0YPTJMS.js → ManagedAiPolicyAuthority-DsSaz-vg.js} +2 -2
- package/dist/{MissingNodesInstallModal-Cj31oMDX.js → MissingNodesInstallModal-B-9gHy2K.js} +1 -1
- package/dist/{TemplateConfigurationModal-BAPCG8y-.js → TemplateConfigurationModal-D_Mvgxqa.js} +1 -1
- package/dist/{TemplateDetailPanel-CZ1uxEQL.js → TemplateDetailPanel-DfFfUcOe.js} +1 -1
- package/dist/{TemplatesPage-DWdgZnIH.js → TemplatesPage-Cku13bav.js} +5 -4
- package/dist/{WorkflowSearchRedirect-C8vhSZK9.js → WorkflowSearchRedirect-CaoOOpEl.js} +13 -9
- package/dist/{WorkflowShareDialog-DnBQA3V6.js → WorkflowShareDialog-6RRDe-_v.js} +2 -1
- package/dist/{WorkflowsList-74jjJFsJ.js → WorkflowsList-B2j1Pehb.js} +5 -4
- package/dist/agent-tools.d.ts +3 -0
- package/dist/agent-tools.js +5 -0
- package/dist/{agentTools-D5AW7zHn.js → agentTools-DJ5o2ekg.js} +2 -2
- package/dist/{canvasNoteTools-BqQTTCll.js → canvasNoteTools-D3zUdEeg.js} +3 -2
- package/dist/executions.js +1 -1
- package/dist/{flow-builder-BR8p5tXG.js → flow-builder-DEzT8TQu.js} +34 -157
- package/dist/fluidgridsEvents-CNdcrUNN.js +310 -0
- package/dist/history.js +1 -1
- package/dist/index-CHeY7_A1.d.ts +105 -0
- package/dist/{index-CLqh2u28.d.ts → index-DRf25-D3.d.ts} +7 -105
- package/dist/index.d.ts +3 -2
- package/dist/index.js +21 -946
- package/dist/marksStore-DGCXjTmZ.js +151 -0
- package/dist/{node-detail-view-Dnhqdn8C.js → node-detail-view-LNqeIqN-.js} +3 -3
- package/dist/observability.d.ts +1 -1
- package/dist/observability.js +1 -1
- package/dist/{quick-config-panel-C4tSpCrt.js → quick-config-panel-D3ogsaFL.js} +2 -2
- package/dist/settings.js +1 -1
- package/dist/templates.js +1 -1
- package/dist/uiMarkTools-nlmzsHQM.js +937 -0
- package/dist/{useExecutions-CNEN1ENQ.js → useExecutions-DAzeWHS6.js} +2 -1
- package/dist/{useObservability-CmFFXmKb.js → useObservability-COCZ0hUS.js} +2 -1
- package/dist/{useRunHistory-DhU_mrzF.js → useRunHistory-CsYUbouO.js} +1 -1
- package/dist/{useWorkflows-D01LC39Y.js → useWorkflows-w4Dx2fF2.js} +25 -5
- package/dist/workflow-builder.js +2 -2
- package/dist/workflow-route.d.ts +33 -0
- package/dist/workflow-route.js +4 -0
- package/dist/workflowRouteData-BkfVOc-O.js +169 -0
- package/dist/workflows-list.js +1 -1
- package/package.json +9 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-
|
|
3
|
-
import {
|
|
4
|
-
import { C as readProjectArchive, D as workflowNameFromFile, E as typeScriptModuleFile, O as CreateWorkflowRefusalDialog, S as primaryImportModule, T as typeScriptImportSource, _ as importFileKind, a as downloadWorkflowExport, c as canShareWorkflow, d as MAX_IMPORT_ARCHIVE_BYTES, f as MAX_IMPORT_SOURCE_BYTES, g as importAcceptAttribute, k as QuotaExhaustedDialog, l as CODE_EXPORT_FORMATS, m as checkTypeScriptImport, o as parseWorkflowImport, p as assertImportByteSize, r as useExportWorkflowAs, s as canEditWorkflow, t as WorkflowShareDialog, u as ImportSourceError } from "./WorkflowShareDialog-
|
|
2
|
+
import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-w4Dx2fF2.js";
|
|
3
|
+
import { Dn as FLUIDGRIDS_FLAGS, Dt as createThenOpen, Fn as useFluidGridsFlag, t as FluidGridsContext } from "./FluidGridsProvider-DmvFADFa.js";
|
|
4
|
+
import { C as readProjectArchive, D as workflowNameFromFile, E as typeScriptModuleFile, O as CreateWorkflowRefusalDialog, S as primaryImportModule, T as typeScriptImportSource, _ as importFileKind, a as downloadWorkflowExport, c as canShareWorkflow, d as MAX_IMPORT_ARCHIVE_BYTES, f as MAX_IMPORT_SOURCE_BYTES, g as importAcceptAttribute, k as QuotaExhaustedDialog, l as CODE_EXPORT_FORMATS, m as checkTypeScriptImport, o as parseWorkflowImport, p as assertImportByteSize, r as useExportWorkflowAs, s as canEditWorkflow, t as WorkflowShareDialog, u as ImportSourceError } from "./WorkflowShareDialog-6RRDe-_v.js";
|
|
5
|
+
import { f as BILLING_PLANS_PATH, y as isQuotaExhaustedFailure } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
5
6
|
import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
|
|
6
7
|
import { CF as WorkflowExportFormat, gF as WorkflowAccessFilter, hI as FLUIDGRIDS_PERMISSIONS, vI as SdkPermissionButton, xI as useFluidGridsPermission, yI as SdkPermissionGate } from "./graphql-types-XcDLtFwU.js";
|
|
7
8
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
8
9
|
import { $t as RenameWorkflowFolderDocument, Bi as describeOperationError, Et as MoveWorkflowFolderDocument, K as DeleteWorkflowFolderDocument, M as CreateWorkflowFolderDocument, N as CreateWorkflowProjectDocument, Oi as getFluidGridsClient, Pr as WorkflowFoldersDocument, Ui as throwIfResultError, Ur as WorkflowProjectsDocument, _ as BulkMoveWorkflowsToFolderDocument, en as RenameWorkflowProjectDocument, g as BulkDeleteWorkflowsDocument, h as BulkAssignWorkflowsToProjectDocument, oa as __exportAll, q as DeleteWorkflowProjectDocument } from "./node-endpoint-configs-DHFGA5MQ.js";
|
|
9
|
-
import { a as useExecutions } from "./useExecutions-
|
|
10
|
+
import { a as useExecutions } from "./useExecutions-DAzeWHS6.js";
|
|
10
11
|
import { a as firstWorkflowProgress, i as builderPathFor, r as GUIDED_TOUR_STATE } from "./firstWorkflow-C_h0KMB2.js";
|
|
11
12
|
import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
|
|
12
13
|
import { i as workflowsListControls } from "./pageControlSpecs-DZJ9K37m.js";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
|
|
2
|
+
import { a as createUiMarkTools, c as FluidGridsAgentToolDeps, d as triggerNodesOf, i as UiMarkToolOptions, l as createFluidGridsAgentTools, n as resetAgentMarks, o as AgentCalloutOverlay, r as useAgentMarksStore, s as AgentCalloutOverlayProps, t as CanvasNote, u as pickTriggerNode } from "./index-CHeY7_A1.js";
|
|
3
|
+
export { AgentCalloutOverlay, type AgentCalloutOverlayProps, type CanvasNote, type FluidGridsAgentToolDeps, type UiMarkToolOptions, createFluidGridsAgentTools, createUiMarkTools, pickTriggerNode, resetAgentMarks, triggerNodesOf, useAgentMarksStore };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { a as triggerNodesOf, i as pickTriggerNode, n as AgentCalloutOverlay, r as createFluidGridsAgentTools, t as createUiMarkTools } from "./uiMarkTools-nlmzsHQM.js";
|
|
3
|
+
import { n as useAgentMarksStore, t as resetAgentMarks } from "./marksStore-DGCXjTmZ.js";
|
|
4
|
+
|
|
5
|
+
export { AgentCalloutOverlay, createFluidGridsAgentTools, createUiMarkTools, pickTriggerNode, resetAgentMarks, triggerNodesOf, useAgentMarksStore };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { At as useSaveStatusStore, J as paramsFromOperation, K as nodeTitle, L as createConfiguredNode, W as fixedParameterState, Y as selectedOperationOf, _ as registryNodeData, f as isNodeConfigsInitialized, o as NODE_CONFIGS, pt as autosaveAllowedFor, xt as isFlowComplete } from "./FluidGridsProvider-
|
|
2
|
+
import { At as useSaveStatusStore, J as paramsFromOperation, K as nodeTitle, L as createConfiguredNode, W as fixedParameterState, Y as selectedOperationOf, _ as registryNodeData, f as isNodeConfigsInitialized, o as NODE_CONFIGS, pt as autosaveAllowedFor, xt as isFlowComplete } from "./FluidGridsProvider-DmvFADFa.js";
|
|
3
3
|
import { E as resolveOutputHandles, H as useFlowStore, T as resolveInputHandles } from "./node-operation-selection--oy-yEq_.js";
|
|
4
|
-
import {
|
|
4
|
+
import { Et as isNodeTypeHiddenFromPalette, N as computeAttachPosition } from "./flow-builder-DEzT8TQu.js";
|
|
5
5
|
import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { J as paramsFromOperation, K as nodeTitle, Y as selectedOperationOf } from "./FluidGridsProvider-
|
|
2
|
+
import { n as useAgentMarksStore, r as toPlainText } from "./marksStore-DGCXjTmZ.js";
|
|
3
|
+
import { J as paramsFromOperation, K as nodeTitle, Y as selectedOperationOf } from "./FluidGridsProvider-DmvFADFa.js";
|
|
4
4
|
import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
|
|
5
|
+
import { g as notesKeyOf } from "./flow-builder-DEzT8TQu.js";
|
|
5
6
|
import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
|
|
6
7
|
import { z } from "zod";
|
|
7
8
|
|
package/dist/executions.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as ExecutionDetailPage, y as ExecutionsListPage } from "./ExecutionDetailPage-
|
|
2
|
+
import { t as ExecutionDetailPage, y as ExecutionsListPage } from "./ExecutionDetailPage-D-0_POAf.js";
|
|
3
3
|
|
|
4
4
|
export { ExecutionDetailPage, ExecutionsListPage };
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { A as nodeAccent, B as NODE_TYPE_DRAG_DATA_FORMAT, G as isTriggerOperation, H as useFlowStore, M as isImageIcon, T as resolveInputHandles, U as useIsValidConnection, V as STICKY_NOTE_TYPE, g as toCodeMirrorDiagnostics, j as NodeTypeIcon, r as CODE_WORKFLOW_NODE_TYPE, z as NODE_OPERATION_DRAG_DATA_FORMAT } from "./node-operation-selection--oy-yEq_.js";
|
|
3
|
-
import { $ as isStringOptionList, $
|
|
3
|
+
import { $ as isStringOptionList, $t as inAppLeaveTarget, A as StoreNodeProductsByTypeDocument, At as useSaveStatusStore, B as useRunGuard, Bn as useWorkflowTestsEnabled, Bt as shouldReleaseForIdle, C as GetMyNodeInstallationsDocument, Ct as useSaveWorkflow, D as InstallWorkflowNodeDocument, Dn as FLUIDGRIDS_FLAGS, E as InstallPurchasedNodeDocument, F as getNodeMetadata, Fn as useFluidGridsFlag, Ft as leaseCallQueue, G as nodeSubtitle, Gn as replaceAdapterConnections, Gt as sessionBeforeReload, H as asRecord, Hn as isOptionalAdapter, Ht as EDIT_SESSION_ID, I as buildOperationSeed, It as leaseCallSequence, J as paramsFromOperation, Jn as BuilderReadOnlyProvider, Jt as AUTOSAVE_DEBOUNCE_MS, K as nodeTitle, Kn as getNodeDetail, Kt as rememberOwnStatusChange, Ln as usePaletteGates, Lt as phaseAfterAcquire, M as UninstallOrganizationPrivateNodeDocument, Mt as useEditLeaseStore, N as UninstallWorkflowNodeDocument, Nn as useDurableFunctionNodesEnabled, Nt as bannerOf, Ot as refusalOfQuota, Pn as useDurableParityEnabled, Pt as isLocked, R as useInsertNode, Rn as usePhaseCFlags, Rt as phaseAfterTakeOver, S as CreateStoreOrderDocument, St as useFlowValidator, T as InstallOrganizationPrivateNodeDocument, U as coerceNumber, Un as matchesAdapterProvider, Ut as forgetSessionForReload, V as workflowParameterIssues, Vn as connectionsForAdapter, Vt as tickAction, Wn as newConnectionProviderKey, Wt as rememberSessionForReload, X as useNodeConfig, Xt as canAutosave, Yn as useBuilderReadOnly, Yt as AUTOSAVE_RETRY_DELAYS_MS, Zn as getGlobalStoreClient, _t as leavingLosesChanges, a as NODES_METADATA, at as casesFromRules, b as BrowseWorkflowNodesDocument, bt as watchLeavingLosesChanges, c as ensureInstalledNodeTypesLoaded, cn as parseParameterValue, d as ensureRegistryNodeTypesLoaded, dt as useGuardedNavigate, en as resettledBaseline, et as optionListText, f as isNodeConfigsInitialized, fn as isParamVisible, ft as useManualSave, g as registerWorkflowNodeTypes, gn as useNodeRegistryRevision, gt as editingLeaseLocked, hn as useCanvasEdges, ht as editStateFor, i as AVAILABLE_NODES, it as SwitchRulesEditor, jt as useEditLeaseLocked, k as OrganizationPrivateNodesDocument, kt as saveIndicatorOf, l as ensureNodeConfigsLoaded, ln as structuredParameterType, lt as boundFieldsOf, m as refetchStoreNodes, mn as openRunQuotaUpgradePrompt, mt as departingSave, nn as workflowFingerprint, nt as resolveLoadOptionsSpec, o as NODE_CONFIGS, ot as FieldTree, p as onNodeTypesUpdate, pn as useFluidGridsAnalytics, pt as autosaveAllowedFor, q as optionText, qn as buildStickyNode, qt as rememberRevision, rn as useNodeExecution, rt as ConditionTreeBuilder, s as NODE_TYPES, sn as formatParameterValue, st as parseMappingValue, t as FluidGridsContext, tn as saveFailureActionOf, tt as optionListValues, ut as missingRequiredParameters, v as scheduleNodePaletteLoad, vn as loadDefinitionJson, vt as savedEverythingBeforeLeaving, w as GetNodeInstallableVersionsDocument, x as BrowseWorkflowTemplatesDocument, xt as isFlowComplete, yt as touchesSavedFields, z as MissingParametersDialog, zt as releasesOnClose } from "./FluidGridsProvider-DmvFADFa.js";
|
|
4
4
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
5
5
|
import { Bi as describeOperationError, Br as WorkflowGitRepositoryDocument, Ct as LinkWorkflowGitRepositoryDocument, Dr as WorkflowDefinitionDocument, Ei as WorkspaceRunsQuotaDocument, Ht as PreviewScheduleDocument, Ir as WorkflowGenerationTemplatesDocument, J as DeleteWorkflowRolloutDocument, Kt as PushWorkflowToGitDocument, Li as emitFluidGridsEvent, Lr as WorkflowGitCommitsDocument, Mt as NodeSchemaIntrospectionDocument, Ni as waitForFluidGridsClient, Nr as WorkflowEnvironmentsDocument, Oi as getFluidGridsClient, Pt as NodeUsageStatusDocument, Qt as RemoveNodeFromWorkflowsDocument, Rr as WorkflowGitDiffDocument, Si as WorkflowVersioningDocument, Ui as throwIfResultError, Vn as TakeOverWorkflowEditLeaseDocument, Wr as WorkflowPromotionRequestsDocument, Xn as UnlinkWorkflowGitRepositoryDocument, Yt as RejectWorkflowPromotionDocument, Z as DeployWorkflowVersionToDevDocument, Zt as ReleaseWorkflowEditLeaseDocument, cr as UpdateWorkflowEnvironmentPolicyDocument, i as ActivateWorkflowVersionCheckedDocument, jn as SetWorkflowRolloutDocument, jr as WorkflowEditLeaseDocument, ki as getFluidGridsClientSafe, mr as WebhookTestListenerDocument, n as AcquireWorkflowEditLeaseDocument, nn as RequestWorkflowPromotionDocument, oa as __exportAll, on as RestoreWorkflowFromGitDocument, qi as getFluidGridsConfig, u as ApproveWorkflowPromotionDocument, wr as WorkflowCallInputsDocument, wt as ListenForWebhookTestEventDocument, x as CancelWorkflowPromotionDocument, xi as WorkflowVersionDrainageDocument, yr as WorkflowAuthoringDocument, zn as StopWebhookTestListenerDocument, zr as WorkflowGitPushesDocument } from "./node-endpoint-configs-DHFGA5MQ.js";
|
|
6
6
|
import { D as describeSchedule, H as pauseSchedule, _ as useResource, c as FieldError, d as NativeSelect, et as triggerSchedule, nt as unpauseSchedule, p as StatusPill, r as describeRule, s as isAgentNodeType, v as backfillSchedule } from "./agent-form-BvMWhQ42.js";
|
|
7
7
|
import { CF as WorkflowExportFormat, Eo as CodeReplaceStatus, PD as ScheduleType, QF as WorkflowTestExpectedStatus, SF as WorkflowEnvironment, VF as WorkflowScheduleOverlapPolicy, hI as FLUIDGRIDS_PERMISSIONS, vI as SdkPermissionButton, xI as useFluidGridsPermission, xu as DrainageStatus, yI as SdkPermissionGate, yP as VersioningBehavior } from "./graphql-types-XcDLtFwU.js";
|
|
8
8
|
import { a as useConnections, r as useAgentsUsingConnection, t as useAgentDefinitionList, wt as useRunFromNodeEligibilityQuery } from "./useAgentDefinitions-NFtLytDR.js";
|
|
9
|
+
import { a as emitTemplateUsed, f as BILLING_PLANS_PATH, g as collectExtensions, m as RUNS_QUOTA_NAME, o as emitUpgradeClicked, s as emitWorkflowCreated, t as emitNodeInstalled, y as isQuotaExhaustedFailure } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
9
10
|
import { F as normaliseAssertRules, I as operatorSpec, L as readAssertRulesSetting, M as ASSERT_OPERATORS, N as describeAssertRuleProblem, P as emptyAssertRuleRow, R as rowsFromRules, _ as buildNodeDisplayMap, a as TEST_STATUS_TONE_CLASS, b as EntityTagPicker, c as draftToInput, d as isTestRunOpen, f as nextSortOrder, g as testStatusTone, h as testStatusLabel, i as useWorkflowTests, l as emptyTestCaseDraft, m as testRunSummaryText, n as useWorkflowProposal, p as pinnedOutputsFromCanvas, s as draftFromTestCase, t as WorkflowProposalCard, u as enabledCaseIds, z as ruleFromRow } from "./WorkflowProposalCard-8Vr56kQa.js";
|
|
10
11
|
import { t as cn$1 } from "./cn-QqidFIgr.js";
|
|
11
12
|
import { i as Button$2, t as PublishCustomNodeAction } from "./PublishCustomNodeAction-D2F7oN0S.js";
|
|
12
|
-
import {
|
|
13
|
+
import { n as useAgentMarksStore } from "./marksStore-DGCXjTmZ.js";
|
|
14
|
+
import { O as CreateWorkflowRefusalDialog, b as lineOfNode, h as fileBaseName, i as useWorkflowCodeExport, n as downloadWorkflowCodeExport, t as WorkflowShareDialog, v as isLosslessReport, w as sortFidelityItems, x as orderedExportFiles, y as isLossyFidelityItem } from "./WorkflowShareDialog-6RRDe-_v.js";
|
|
13
15
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
14
|
-
import { a as useDeactivateWorkflow, d as useRestoreWorkflowVersion, o as useDeleteWorkflow, t as useActivateWorkflow, v as useWorkflowVersions } from "./useWorkflows-
|
|
16
|
+
import { a as useDeactivateWorkflow, d as useRestoreWorkflowVersion, o as useDeleteWorkflow, t as useActivateWorkflow, v as useWorkflowVersions } from "./useWorkflows-w4Dx2fF2.js";
|
|
15
17
|
import { n as VersionLifecycleBar, r as countLifecycle, t as VersionDiffDialog } from "./VersionDiffDialog-Dq2xlPFI.js";
|
|
16
18
|
import { n as useRequestedProposal } from "./useRequestedProposal-B7uPXfZB.js";
|
|
17
19
|
import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
|
|
@@ -10572,7 +10574,7 @@ function buildNodeCheck(requiredNodeTypes, installedAppIds) {
|
|
|
10572
10574
|
}
|
|
10573
10575
|
|
|
10574
10576
|
// src/hooks/store/useTemplateImportFlow.tsx
|
|
10575
|
-
const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-
|
|
10577
|
+
const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-D_Mvgxqa.js").then((m) => ({ default: m.TemplateConfigurationModal })));
|
|
10576
10578
|
/**
|
|
10577
10579
|
* "Use this template", the same everywhere it is offered: the builder's
|
|
10578
10580
|
* template panel, the Templates page and the template preview page
|
|
@@ -12749,7 +12751,7 @@ function TemplatesGrid({ templates, loading, hasMore, onLoadMore, onTemplateClic
|
|
|
12749
12751
|
}
|
|
12750
12752
|
|
|
12751
12753
|
// src/builder/components/flow-builder/components/templates/TemplatesModal.tsx
|
|
12752
|
-
const LazyTemplateDetailPanel = lazy(() => import("./TemplateDetailPanel-
|
|
12754
|
+
const LazyTemplateDetailPanel = lazy(() => import("./TemplateDetailPanel-DfFfUcOe.js").then((m) => ({ default: m.TemplateDetailPanel })));
|
|
12753
12755
|
/**
|
|
12754
12756
|
* Modal for browsing and selecting workflow templates
|
|
12755
12757
|
* Features:
|
|
@@ -20692,153 +20694,6 @@ function WebhookRunFollower() {
|
|
|
20692
20694
|
return null;
|
|
20693
20695
|
}
|
|
20694
20696
|
|
|
20695
|
-
// src/agentMarks/plainText.ts
|
|
20696
|
-
/**
|
|
20697
|
-
* ★ BOFF-11584: the text of a callout or note is model output, and the model
|
|
20698
|
-
* has read workflow content people wrote. It is shown as plain text only:
|
|
20699
|
-
* React renders it as a text node (never `dangerouslySetInnerHTML`, never a
|
|
20700
|
-
* markdown renderer), so markup, links and images in it stay inert characters.
|
|
20701
|
-
*
|
|
20702
|
-
* This keeps it short and printable as well: control characters (other than
|
|
20703
|
-
* line breaks) and bidirectional controls, which can disguise what a line
|
|
20704
|
-
* says, are removed; runs of blank lines collapse; the result is clamped.
|
|
20705
|
-
*/
|
|
20706
|
-
const BIDI_CONTROLS = /* @__PURE__ */ new Set([
|
|
20707
|
-
1564,
|
|
20708
|
-
8206,
|
|
20709
|
-
8207,
|
|
20710
|
-
8234,
|
|
20711
|
-
8235,
|
|
20712
|
-
8236,
|
|
20713
|
-
8237,
|
|
20714
|
-
8238,
|
|
20715
|
-
8294,
|
|
20716
|
-
8295,
|
|
20717
|
-
8296,
|
|
20718
|
-
8297
|
|
20719
|
-
]);
|
|
20720
|
-
function isDroppedCharacter(code) {
|
|
20721
|
-
if (code === 10) return false;
|
|
20722
|
-
if (code <= 31) return true;
|
|
20723
|
-
if (code >= 127 && code <= 159) return true;
|
|
20724
|
-
return BIDI_CONTROLS.has(code);
|
|
20725
|
-
}
|
|
20726
|
-
function toPlainText(text, max) {
|
|
20727
|
-
let kept = "";
|
|
20728
|
-
for (const character of text.replace(/\r\n?/g, "\n").replace(/\t/g, " ")) if (!isDroppedCharacter(character.codePointAt(0) ?? 0)) kept += character;
|
|
20729
|
-
const cleaned = kept.replace(/ {2,}/g, " ").replace(/ *\n */g, "\n").replace(/\n{3,}/g, "\n\n").trim();
|
|
20730
|
-
if (cleaned.length <= max) return cleaned;
|
|
20731
|
-
return `${cleaned.slice(0, max - 1).trimEnd()}…`;
|
|
20732
|
-
}
|
|
20733
|
-
|
|
20734
|
-
// src/agentMarks/marksStore.ts
|
|
20735
|
-
/** The text of a mark is model output: kept as plain text, never markup. */
|
|
20736
|
-
const CALLOUT_LABEL_MAX = 200;
|
|
20737
|
-
const NOTE_MESSAGE_MAX = 280;
|
|
20738
|
-
/** A workflow holds at most this many notes, resolved ones included. */
|
|
20739
|
-
const MAX_NOTES_PER_WORKFLOW = 20;
|
|
20740
|
-
let sequence = 0;
|
|
20741
|
-
const nextId = (prefix) => {
|
|
20742
|
-
sequence += 1;
|
|
20743
|
-
return `${prefix}${sequence}`;
|
|
20744
|
-
};
|
|
20745
|
-
const useAgentMarksStore = create()((set, get) => ({
|
|
20746
|
-
callouts: [],
|
|
20747
|
-
notes: [],
|
|
20748
|
-
nextNumber: {},
|
|
20749
|
-
openNoteId: null,
|
|
20750
|
-
flash: null,
|
|
20751
|
-
actions: {
|
|
20752
|
-
addCallout: ({ label, target, element, route }) => {
|
|
20753
|
-
const callout = {
|
|
20754
|
-
id: nextId("c"),
|
|
20755
|
-
label: toPlainText(label, 200),
|
|
20756
|
-
target,
|
|
20757
|
-
route,
|
|
20758
|
-
element: element ? new WeakRef(element) : null
|
|
20759
|
-
};
|
|
20760
|
-
set((state) => ({ callouts: [...state.callouts, callout].slice(-3) }));
|
|
20761
|
-
return callout;
|
|
20762
|
-
},
|
|
20763
|
-
rebindCallout: (id, element) => set((state) => ({ callouts: state.callouts.map((callout) => callout.id === id ? {
|
|
20764
|
-
...callout,
|
|
20765
|
-
element: new WeakRef(element)
|
|
20766
|
-
} : callout) })),
|
|
20767
|
-
removeCallout: (id) => set((state) => ({ callouts: state.callouts.filter((callout) => callout.id !== id) })),
|
|
20768
|
-
clearCallouts: () => {
|
|
20769
|
-
const count = get().callouts.length;
|
|
20770
|
-
if (count > 0) set({ callouts: [] });
|
|
20771
|
-
return count;
|
|
20772
|
-
},
|
|
20773
|
-
dropCalloutsOffRoute: (route) => {
|
|
20774
|
-
const { callouts } = get();
|
|
20775
|
-
const kept = callouts.filter((callout) => callout.route === route);
|
|
20776
|
-
if (kept.length !== callouts.length) set({ callouts: kept });
|
|
20777
|
-
return callouts.length - kept.length;
|
|
20778
|
-
},
|
|
20779
|
-
addNote: (input) => {
|
|
20780
|
-
const { notes, nextNumber } = get();
|
|
20781
|
-
if (notes.filter((note) => note.workflowKey === input.workflowKey).length >= 20) return null;
|
|
20782
|
-
const number = nextNumber[input.workflowKey] ?? 1;
|
|
20783
|
-
const note = {
|
|
20784
|
-
id: nextId("n"),
|
|
20785
|
-
number,
|
|
20786
|
-
workflowKey: input.workflowKey,
|
|
20787
|
-
nodeId: input.nodeId,
|
|
20788
|
-
nodeLabel: toPlainText(input.nodeLabel, 80),
|
|
20789
|
-
paramKey: input.paramKey ?? null,
|
|
20790
|
-
kind: input.kind,
|
|
20791
|
-
message: toPlainText(input.message, 280),
|
|
20792
|
-
resolved: false
|
|
20793
|
-
};
|
|
20794
|
-
set({
|
|
20795
|
-
notes: [...notes, note],
|
|
20796
|
-
nextNumber: {
|
|
20797
|
-
...nextNumber,
|
|
20798
|
-
[input.workflowKey]: number + 1
|
|
20799
|
-
}
|
|
20800
|
-
});
|
|
20801
|
-
return note;
|
|
20802
|
-
},
|
|
20803
|
-
setResolved: (id, resolved) => set((state) => ({ notes: state.notes.map((note) => note.id === id ? {
|
|
20804
|
-
...note,
|
|
20805
|
-
resolved
|
|
20806
|
-
} : note) })),
|
|
20807
|
-
removeNote: (id) => set((state) => ({
|
|
20808
|
-
notes: state.notes.filter((note) => note.id !== id),
|
|
20809
|
-
openNoteId: state.openNoteId === id ? null : state.openNoteId
|
|
20810
|
-
})),
|
|
20811
|
-
clearNotes: (workflowKey) => {
|
|
20812
|
-
const { notes, openNoteId } = get();
|
|
20813
|
-
const kept = workflowKey === void 0 ? [] : notes.filter((note) => note.workflowKey !== workflowKey);
|
|
20814
|
-
const removed = notes.length - kept.length;
|
|
20815
|
-
if (removed > 0) set({
|
|
20816
|
-
notes: kept,
|
|
20817
|
-
openNoteId: kept.some((note) => note.id === openNoteId) ? openNoteId : null
|
|
20818
|
-
});
|
|
20819
|
-
return removed;
|
|
20820
|
-
},
|
|
20821
|
-
openNote: (id) => set({ openNoteId: id }),
|
|
20822
|
-
flashNode: (nodeId) => {
|
|
20823
|
-
sequence += 1;
|
|
20824
|
-
set({ flash: {
|
|
20825
|
-
nodeId,
|
|
20826
|
-
token: sequence
|
|
20827
|
-
} });
|
|
20828
|
-
}
|
|
20829
|
-
}
|
|
20830
|
-
}));
|
|
20831
|
-
/** Reset everything (tests, and sign-out if a host wants it). */
|
|
20832
|
-
function resetAgentMarks() {
|
|
20833
|
-
useAgentMarksStore.setState({
|
|
20834
|
-
callouts: [],
|
|
20835
|
-
notes: [],
|
|
20836
|
-
nextNumber: {},
|
|
20837
|
-
openNoteId: null,
|
|
20838
|
-
flash: null
|
|
20839
|
-
});
|
|
20840
|
-
}
|
|
20841
|
-
|
|
20842
20697
|
// src/builder/agentNotes/notesKey.ts
|
|
20843
20698
|
/**
|
|
20844
20699
|
* ★ BOFF-11584: which workflow a canvas note belongs to. A saved workflow is
|
|
@@ -21223,6 +21078,26 @@ function takeBaseline() {
|
|
|
21223
21078
|
editRevision: flow.editRevision
|
|
21224
21079
|
});
|
|
21225
21080
|
}
|
|
21081
|
+
/**
|
|
21082
|
+
* Let the canvas settle again whenever the node registry redraws it
|
|
21083
|
+
* (BOFF-11754). The canvas is drawn before every node type on it is
|
|
21084
|
+
* registered, so a card can turn into the real one well after the load (an
|
|
21085
|
+
* installed store node read later, a node installed from the missing-nodes
|
|
21086
|
+
* dialog) and measure and normalise itself then. Until the person edits, that
|
|
21087
|
+
* moves the baseline instead of counting as unsaved work. `subscribe` is the
|
|
21088
|
+
* registry's update feed. Returns the unsubscribe function.
|
|
21089
|
+
*/
|
|
21090
|
+
function settleOnNodeRegistryUpdates(subscribe = onNodeTypesUpdate) {
|
|
21091
|
+
return subscribe(() => {
|
|
21092
|
+
const status = useSaveStatusStore.getState();
|
|
21093
|
+
const flow = useFlowStore.getState();
|
|
21094
|
+
const next = resettledBaseline(status.baseline, {
|
|
21095
|
+
generation: flow.loadGeneration,
|
|
21096
|
+
editRevision: flow.editRevision
|
|
21097
|
+
}, Date.now(), SETTLE_MS);
|
|
21098
|
+
if (next) status.actions.setBaseline(next);
|
|
21099
|
+
});
|
|
21100
|
+
}
|
|
21226
21101
|
/** Unsaved-change tracking, autosave with retries, and saves on the way out. */
|
|
21227
21102
|
function useAutosave(readOnly) {
|
|
21228
21103
|
const tr = useTr();
|
|
@@ -21304,6 +21179,7 @@ function useAutosave(readOnly) {
|
|
|
21304
21179
|
const unsubscribeStatus = useSaveStatusStore.subscribe((state, previous) => {
|
|
21305
21180
|
if (state.baseline !== previous.baseline || state.autosaveEnabled !== previous.autosaveEnabled) scheduleCheck();
|
|
21306
21181
|
});
|
|
21182
|
+
const unsubscribeRegistry = settleOnNodeRegistryUpdates();
|
|
21307
21183
|
const unsubscribeLease = useEditLeaseStore.subscribe((state, previous) => {
|
|
21308
21184
|
if (!isLocked(previous.phase) || isLocked(state.phase)) return;
|
|
21309
21185
|
if (status().failure?.conflict?.reason === "EDIT_LEASE_HELD") {
|
|
@@ -21315,6 +21191,7 @@ function useAutosave(readOnly) {
|
|
|
21315
21191
|
return () => {
|
|
21316
21192
|
unsubscribeFlow();
|
|
21317
21193
|
unsubscribeStatus();
|
|
21194
|
+
unsubscribeRegistry();
|
|
21318
21195
|
unsubscribeLease();
|
|
21319
21196
|
if (checkTimer) clearTimeout(checkTimer);
|
|
21320
21197
|
autosave.cancel();
|
|
@@ -27575,8 +27452,8 @@ function EditLeaseBanner() {
|
|
|
27575
27452
|
}
|
|
27576
27453
|
|
|
27577
27454
|
// src/builder/components/flow-builder/flow-builder.tsx
|
|
27578
|
-
const LazyNodeDetailView = lazy(() => import("./node-detail-view-
|
|
27579
|
-
const LazyQuickConfigPanel = lazy(() => import("./quick-config-panel-
|
|
27455
|
+
const LazyNodeDetailView = lazy(() => import("./node-detail-view-LNqeIqN-.js").then((m) => ({ default: m.NodeDetailView })));
|
|
27456
|
+
const LazyQuickConfigPanel = lazy(() => import("./quick-config-panel-D3ogsaFL.js").then((m) => ({ default: m.QuickConfigPanel })));
|
|
27580
27457
|
const edgeTypes = { deletable: CustomDeletableEdge };
|
|
27581
27458
|
const edgeOptions = {
|
|
27582
27459
|
type: "deletable",
|
|
@@ -27636,7 +27513,7 @@ const FlowBuilder = ({ readOnly = false }) => {
|
|
|
27636
27513
|
const [agentTools, setAgentTools] = useState([]);
|
|
27637
27514
|
useEffect(() => {
|
|
27638
27515
|
let cancelled = false;
|
|
27639
|
-
import("./agentTools-
|
|
27516
|
+
import("./agentTools-DJ5o2ekg.js").then(({ createBuilderAgentTools }) => {
|
|
27640
27517
|
if (cancelled) return;
|
|
27641
27518
|
setAgentTools(createBuilderAgentTools({ durableFunctionsEnabled: () => paletteGatesRef.current }));
|
|
27642
27519
|
}).catch((error) => {
|
|
@@ -27691,7 +27568,7 @@ const FlowBuilder = ({ readOnly = false }) => {
|
|
|
27691
27568
|
const [noteTools, setNoteTools] = useState([]);
|
|
27692
27569
|
useEffect(() => {
|
|
27693
27570
|
let cancelled = false;
|
|
27694
|
-
import("./canvasNoteTools-
|
|
27571
|
+
import("./canvasNoteTools-D3zUdEeg.js").then(({ createCanvasNoteTools }) => {
|
|
27695
27572
|
if (cancelled) return;
|
|
27696
27573
|
setNoteTools(createCanvasNoteTools({ focusNode: (nodeId) => fitViewRef.current({
|
|
27697
27574
|
nodes: [{ id: nodeId }],
|
|
@@ -27999,4 +27876,4 @@ const FlowBuilderPage = ({ workflow, readOnly = false }) => {
|
|
|
27999
27876
|
] });
|
|
28000
27877
|
};
|
|
28001
27878
|
|
|
28002
|
-
export {
|
|
27879
|
+
export { Popover$1 as $, DialogPortal as A, useInstalledNodes as B, Dialog$1 as C, WORKFLOW_TEST_NODE_TYPES as Ct, DialogFooter$1 as D, isRunControlNodeType as Dt, DialogDescription$1 as E, isNodeTypeHiddenFromPalette as Et, buildNodeCheck as F, RunnerStatusPill as G, NodeEditorTabBody as H, buildRequiredNodeTypes as I, useRunnerActions as J, RUNNER_INSTALL_SCRIPT_URL as K, getWorkflowNodeTypes as L, DialogTrigger$1 as M, computeAttachPosition as N, DialogHeader$1 as O, useTemplateImportFlow as P, NDV_Z_INDEX as Q, useImportWorkflowTemplate as R, badgeVariants as S, RUN_CONTROL_NODE_TYPES as St, DialogContent$1 as T, isDurableFunctionNodeType as Tt, NodeSettingsPanel as U, NodeExecutionActions as V, RunOnSection as W, NodeParamsForm as X, useRunners as Y, useGlobalStoreClient as Z, JsonView as _, CardFooter as _t, useAiWorkflowTemplates as a, ReadOnlyFieldset as at, templatePreview as b, Input$1 as bt, RunsUsageMeter as c, SchedulePanel as ct, readRunsQuota as d, NodeInputFields as dt, PopoverContent$1 as et, runsQuotaLevel as f, useNodeSelectedEvent as ft, notesKeyOf as g, CardDescription$1 as gt, useWorkflowReloadStore as h, CardContent$1 as ht, enrichDraftNodes as i, ConnectionFormDialog as it, DialogTitle$1 as j, DialogOverlay as k, RunsUsageMeterView as l, NodeEditorTabs as lt, releaseLeaseKeptForReload as m, Card$1 as mt, AI_DRAFT_MAX_PROMPT_LENGTH as n, CodeEditorField as nt, BUILDER_FULLSCREEN_ATTRIBUTE as o, useNodeEditorTab as ot, summarizeRunsQuota as p, FluidGridsMark as pt, runnerInstallCommand as q, draftToCanvas as r, ConnectionSelector as rt, BUILDER_FULLSCREEN_EVENT as s, SCHEDULE_NODE_TYPE as st, FlowBuilderPage as t, PopoverTrigger$1 as tt, useRunsQuota as u, TabButton as ut, TableView as v, CardHeader$1 as vt, DialogClose as w, filterPaletteNodes as wt, Badge$1 as x, DURABLE_FUNCTION_NODE_TYPES as xt, TemplateCard as y, CardTitle$1 as yt, useWorkflowTemplates as z };
|