@burdenoff/fluidgrids-fe-sdk 2026.1111.6 → 2026.1111.7
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/dist/{ExecutionDetailPage-wWQocYtw.js → ExecutionDetailPage-DoxxG0b1.js} +11 -11
- package/dist/{FailureTriagePanel-LodnXzJr.js → FailureTriagePanel-BqRG9qxu.js} +2 -2
- package/dist/{FluidGridsProvider-BNzMznqt.js → FluidGridsProvider-_Nc4kFsk.js} +295 -136
- package/dist/{HistoryPage-DIioKCod.js → HistoryPage-joRHOTwx.js} +3 -3
- package/dist/{InsightsPage-Bm2oCTqf.js → InsightsPage-BRkCoTkd.js} +6 -6
- package/dist/{ManagedAiPolicyAuthority-D624rJtj.js → ManagedAiPolicyAuthority-Dm1Yi75K.js} +7 -7
- package/dist/{MissingNodesInstallModal-5iwp-P3H.js → MissingNodesInstallModal-CdvMiEN_.js} +2 -2
- package/dist/{NodesPage-CYijlEFV.js → NodesPage-bYLDn1Jp.js} +2 -2
- package/dist/{PublishCustomNodeAction-CGrwIjy-.js → PublishCustomNodeAction-DS71F2-x.js} +1 -1
- package/dist/{TemplateConfigurationModal-BRjVScYa.js → TemplateConfigurationModal-C2CNNLte.js} +2 -2
- package/dist/{TemplateDetailPanel-BP43BIne.js → TemplateDetailPanel-DLe16zdY.js} +3 -3
- package/dist/{TemplatesPage-Bw--Ybm9.js → TemplatesPage-8J86X9lY.js} +6 -6
- package/dist/{VersionDiffDialog-87FMkJQb.js → VersionDiffDialog--pbvNYM3.js} +1 -1
- package/dist/{WorkflowProposalCard-1Av72TtA.js → WorkflowProposalCard-ADSfSaKK.js} +2 -2
- package/dist/{WorkflowSearchRedirect-IDjgBWKT.js → WorkflowSearchRedirect-CpmX2vSG.js} +13 -12
- package/dist/{WorkflowShareDialog-EsWpP8h1.js → WorkflowShareDialog-CNg_qWNL.js} +3 -3
- package/dist/{WorkflowsList-C-beGZ58.js → WorkflowsList-DOhUHH4j.js} +6 -6
- package/dist/{agent-form-IKft_4iz.js → agent-form-D25lAEWg.js} +1 -1
- package/dist/{agentTools-BQY87HJw.js → agentTools-CBqnXeop.js} +2 -2
- package/dist/{ai-usage-CMWDlKmM.js → ai-usage-D5p7ZeRR.js} +1 -1
- package/dist/{codec-client-DEBa-Wl0.js → codec-client-Cz_myeH8.js} +1 -1
- package/dist/executions.js +1 -1
- package/dist/{flow-builder-DOw2DgVO.js → flow-builder-BkD07RI7.js} +32 -27
- package/dist/{graphql-types-Bi7XFTD2.js → graphql-types-XcDLtFwU.js} +72 -1
- package/dist/history.js +1 -1
- package/dist/{index-CavhNsSY.d.ts → index-BQ5tXKOZ.d.ts} +423 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +26 -26
- package/dist/{node-detail-view-D56v1bff.js → node-detail-view-COi4XrCg.js} +8 -8
- package/dist/{node-endpoint-configs-Dol5ckHv.js → node-endpoint-configs-DW1ZSZZI.js} +773 -180
- package/dist/nodes.js +1 -1
- package/dist/observability.d.ts +1 -1
- package/dist/observability.js +1 -1
- package/dist/{quick-config-panel-BhkLeEy4.js → quick-config-panel-DQ04YDLl.js} +2 -2
- package/dist/settings.js +1 -1
- package/dist/templates.js +1 -1
- package/dist/{useAgentDefinitions-CUXSBw0L.js → useAgentDefinitions-DQqibfr4.js} +1 -1
- package/dist/{useExecutions-CvGl7yhb.js → useExecutions-RFROujCH.js} +3 -3
- package/dist/{useObservability--lPyvKqs.js → useObservability-QPQRRmAZ.js} +2 -2
- package/dist/{useRunHistory-Cu_oiZBw.js → useRunHistory-BDOic15z.js} +3 -3
- package/dist/{useWorkflows-CGF0B59E.js → useWorkflows-DNIgOcAG.js} +6 -8
- package/dist/workflow-builder.js +2 -2
- package/dist/workflows-list.js +1 -1
- package/package.json +1 -1
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import { $r as
|
|
4
|
-
import { $
|
|
3
|
+
import { $r as WorkflowRunPendingDocument, A as CreateWorkerTokenDocument, Bi as describeOperationError, Ci as WorkflowWorkersDocument, Oi as getFluidGridsClient, Qr as WorkflowRunMetadataDocument, Sn as RunLogsDocument, U as DeleteTaskQueueDocument, Ui as throwIfResultError, Un as TaskQueueStatsDocument, W as DeleteWorkerTokenDocument, Wn as TaskQueuesDocument, Yr as WorkflowRunHierarchyDocument, aa as useExecutionsStore, ar as UpdateTaskQueueDocument, bn as RunLogAppendedDocument, c as AgentTraceDocument, dn as RotateWorkerTokenDocument, dt as ExplainRunDocument, fn as RunAiUsageDocument, ia as DEFAULT_EXECUTIONS_FILTER, jn as SetWorkflowRunVersioningOverrideDocument, k as CreateTaskQueueDocument, ki as getFluidGridsClientSafe, kn as SetWorkerTokenConnectionAllowlistDocument, mr as WorkerTokensDocument, ni as WorkflowRunsCountDocument, nt as DurableParityRunFieldsDocument, qi as getFluidGridsConfig, s as AgentStepUpdatedDocument, xr as WorkflowBatchOperationUpdatedDocument } from "./node-endpoint-configs-DW1ZSZZI.js";
|
|
4
|
+
import { $n as useWorkflowTestsEnabled, Fn as durableInterfaceOf, Kn as useDurableFunctionNodesEnabled, Nn as canSignalRun, Rn as runSignalTargets, Zn as usePhaseCFlags, en as formatElapsedMs, nn as runDurationMs, qn as useDurableParityEnabled, tn as nodeStateDurationMs } from "./FluidGridsProvider-_Nc4kFsk.js";
|
|
5
5
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
|
-
import { h as useWorkflowDefinitions, v as useWorkflowVersions } from "./useWorkflows-
|
|
7
|
-
import { $u as ErrorType,
|
|
8
|
-
import { _ as statusCountFilter, c as OPERATORS_BY_TYPE, d as STATUS_COUNT_GROUP_BY, f as callbackTone, g as shortRunId, h as runChainLinks, i as useExecutionStats, l as buildSearchAttributeFilter, m as parseMetadataDefinition, n as useExecution, o as useExecutionsWithStore, p as overrideRequestOf, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, v as statusCountsOf, y as validateDateRange } from "./useExecutions-
|
|
6
|
+
import { h as useWorkflowDefinitions, v as useWorkflowVersions } from "./useWorkflows-DNIgOcAG.js";
|
|
7
|
+
import { $u as ErrorType, L as AgentStepKind, LF as WorkflowQueryRejectCondition, RF as WorkflowResetType, bF as WorkflowBatchOperationType, hI as FLUIDGRIDS_PERMISSIONS, tI as WorkflowUpdateWaitFor, vI as SdkPermissionButton, xI as useFluidGridsPermission, yP as VersioningBehavior } from "./graphql-types-XcDLtFwU.js";
|
|
8
|
+
import { _ as statusCountFilter, c as OPERATORS_BY_TYPE, d as STATUS_COUNT_GROUP_BY, f as callbackTone, g as shortRunId, h as runChainLinks, i as useExecutionStats, l as buildSearchAttributeFilter, m as parseMetadataDefinition, n as useExecution, o as useExecutionsWithStore, p as overrideRequestOf, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, v as statusCountsOf, y as validateDateRange } from "./useExecutions-RFROujCH.js";
|
|
9
9
|
import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
|
|
10
10
|
import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
|
|
11
11
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
12
|
-
import { $ as startBatchTerminate, A as fetchBatchOperation, B as jsonArg, F as fetchRunControlFields, G as resetRun, I as fetchRunHistoryArchive, K as resetRunToLastCleanTask, L as fetchRunUpdate, N as fetchCodecServerSettings, O as failActivityById, P as fetchPauseRules, Q as startBatchOperation, R as fetchSearchAttributes, U as queryRun, V as pauseActivities, W as resetActivities, X as sendRunUpdate, Z as startBatchExport, _ as useResource, at as readTyped, c as FieldError, d as NativeSelect, f as RUN_CONTROL_DIALOG_STYLE, g as parseJsonObjectInput, h as parseJsonInput, it as upsertRunSearchAttributes, j as fetchBatchOperations, l as JsonBlock, m as newRunControlId, ot as writeTyped, p as StatusPill, q as revokeSignalToken, rt as updateActivityOptions, s as isAgentNodeType, tt as unpauseActivities, u as JsonField, w as createSignalToken, x as completeActivityById, y as cancelBatchOperation, z as fetchSignalTokens } from "./agent-form-
|
|
13
|
-
import { C as useAvailableTags, _ as buildNodeDisplayMap, b as EntityTagPicker, n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard, v as formatRunVersion, y as nodeDisplayTitle } from "./WorkflowProposalCard-
|
|
12
|
+
import { $ as startBatchTerminate, A as fetchBatchOperation, B as jsonArg, F as fetchRunControlFields, G as resetRun, I as fetchRunHistoryArchive, K as resetRunToLastCleanTask, L as fetchRunUpdate, N as fetchCodecServerSettings, O as failActivityById, P as fetchPauseRules, Q as startBatchOperation, R as fetchSearchAttributes, U as queryRun, V as pauseActivities, W as resetActivities, X as sendRunUpdate, Z as startBatchExport, _ as useResource, at as readTyped, c as FieldError, d as NativeSelect, f as RUN_CONTROL_DIALOG_STYLE, g as parseJsonObjectInput, h as parseJsonInput, it as upsertRunSearchAttributes, j as fetchBatchOperations, l as JsonBlock, m as newRunControlId, ot as writeTyped, p as StatusPill, q as revokeSignalToken, rt as updateActivityOptions, s as isAgentNodeType, tt as unpauseActivities, u as JsonField, w as createSignalToken, x as completeActivityById, y as cancelBatchOperation, z as fetchSignalTokens } from "./agent-form-D25lAEWg.js";
|
|
13
|
+
import { C as useAvailableTags, _ as buildNodeDisplayMap, b as EntityTagPicker, n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard, v as formatRunVersion, y as nodeDisplayTitle } from "./WorkflowProposalCard-ADSfSaKK.js";
|
|
14
14
|
import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
|
|
15
|
-
import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, o as runListFilterFromSearch, r as OPEN_STATUSES, s as runListLinkKey, t as BUCKET_LABELS } from "./FailureTriagePanel-
|
|
16
|
-
import { a as encodedPayloadBytes, f as EffectBadge, h as useRunPolicyDecisions, i as decodePayloads, l as formatBudgetUsd, n as checkCodecServerUrl, o as isEncodedPayload, r as containsEncodedPayload, t as CodecServerError } from "./codec-client-
|
|
17
|
-
import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-
|
|
18
|
-
import { a as formatTokens, d as formatMicroUsd, o as modelLabel, r as aiCost } from "./ai-usage-
|
|
15
|
+
import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, o as runListFilterFromSearch, r as OPEN_STATUSES, s as runListLinkKey, t as BUCKET_LABELS } from "./FailureTriagePanel-BqRG9qxu.js";
|
|
16
|
+
import { a as encodedPayloadBytes, f as EffectBadge, h as useRunPolicyDecisions, i as decodePayloads, l as formatBudgetUsd, n as checkCodecServerUrl, o as isEncodedPayload, r as containsEncodedPayload, t as CodecServerError } from "./codec-client-Cz_myeH8.js";
|
|
17
|
+
import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-BDOic15z.js";
|
|
18
|
+
import { a as formatTokens, d as formatMicroUsd, o as modelLabel, r as aiCost } from "./ai-usage-D5p7ZeRR.js";
|
|
19
19
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
20
20
|
import { Link, useNavigate, useParams, useSearchParams } from "react-router";
|
|
21
21
|
import { Icon } from "@iconify/react";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { $ as DismissRunFailureClusterDocument,
|
|
2
|
+
import { $ as DismissRunFailureClusterDocument, Oi as getFluidGridsClient, On as SetRunFailureTriageEnabledDocument, Ui as throwIfResultError, _n as RunFailureTriageSettingsDocument, gn as RunFailureClustersDocument, ht as FgTriageFailedRunsDocument } from "./node-endpoint-configs-DW1ZSZZI.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
|
-
import { $u as ErrorType,
|
|
4
|
+
import { $u as ErrorType, mD as RunFailureClusterStatus } from "./graphql-types-XcDLtFwU.js";
|
|
5
5
|
import { useCallback, useEffect, useState } from "react";
|
|
6
6
|
import { Icon } from "@iconify/react";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import {
|
|
3
|
+
import { At as NodeManifestsDocument, Bi as describeOperationError, Di as createFluidGridsClient, Er as WorkflowDefinitionDocument, Li as emitFluidGridsEvent, Mi as setFluidGridsClient, Ni as waitForFluidGridsClient, Oi as getFluidGridsClient, Pi as createFluidGridsTokenRefreshLink, Qi as validateTrustedOrigin, R as CreateWorkflowVersionDocument, Ri as emitOperationErrorEvent, Ui as throwIfResultError, Wi as createLiveTokenReader, Xi as resetFluidGridsExecutionState, Yi as resetFluidGridsConfig, Zi as setFluidGridsConfig, at as EventRegistrationsDocument, j as CreateWorkflowDefinitionDocument, ji as resetFluidGridsClient, jt as NodePaletteEntriesDocument, ki as getFluidGridsClientSafe, or as UpdateWorkflowDefinitionDocument, ot as ExecuteStepDocument, qi as getFluidGridsConfig, qn as TriggerWorkflowDocument, qr as WorkflowRunDocument, st as ExecutionDetailDocument, t as fetchAllNodeEndpointConfigs, vn as RunFromNodeDocument, zi as emitRunCompletedOnce } from "./node-endpoint-configs-DW1ZSZZI.js";
|
|
4
4
|
import { A as nodeAccent, C as nodeAdaptersOf, D as NodeCard, E as resolveOutputHandles, H as useFlowStore, I as partitionStickyNotes, L as resolveStickyColor, N as DEFAULT_STICKY_COLOR, O as NodeCardBody, P as STICKY_COLORS, R as stickySurfaceStyle, T as resolveInputHandles, V as STICKY_NOTE_TYPE, W as isNodeTrigger, _ as LogicNodeCard, b as alignPlainOutputEdges, i as WAIT_FOR_SIGNAL_NODE_TYPE, j as NodeTypeIcon, k as NodeCardHeader, l as interfaceFields, m as readSignalName, n as synchronizeOperationUpdate, p as readCodeWorkflowState, r as CODE_WORKFLOW_NODE_TYPE, t as resolveOperationName, u as interfaceHandlers, v as InputHandles, w as outputHandlesSpacerHeight, x as hasNodeManifest, y as OutputHandles } from "./node-operation-selection--oy-yEq_.js";
|
|
5
5
|
import { n as FluidGridsTranslationProvider, r as useTr, t as ENGLISH_FALLBACK_TRANSLATOR } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
6
|
import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
@@ -10109,38 +10109,88 @@ const OrganizationPrivateNodesDocument = {
|
|
|
10109
10109
|
// src/graphql/global-operations.ts
|
|
10110
10110
|
var global_operations_exports = /* @__PURE__ */ __exportAll({ InstallWorkflowNodeDocument: () => InstallWorkflowNodeDocument });
|
|
10111
10111
|
|
|
10112
|
-
// src/builder/components/flow-builder/components/blocks/
|
|
10113
|
-
|
|
10114
|
-
|
|
10115
|
-
|
|
10116
|
-
*
|
|
10117
|
-
*/
|
|
10118
|
-
|
|
10119
|
-
|
|
10120
|
-
|
|
10121
|
-
|
|
10122
|
-
|
|
10123
|
-
|
|
10124
|
-
|
|
10125
|
-
|
|
10126
|
-
|
|
10127
|
-
|
|
10128
|
-
|
|
10129
|
-
|
|
10130
|
-
|
|
10131
|
-
|
|
10112
|
+
// src/builder/components/flow-builder/components/blocks/node-manifests.ts
|
|
10113
|
+
/**
|
|
10114
|
+
* Refs per request. The server takes up to 500; smaller requests keep each
|
|
10115
|
+
* response to a few megabytes (store manifests reach 370 KB each) and let the
|
|
10116
|
+
* gateway resolve them side by side.
|
|
10117
|
+
*/
|
|
10118
|
+
const NODE_MANIFEST_BATCH_SIZE = 100;
|
|
10119
|
+
const manifestCache = /* @__PURE__ */ new Map();
|
|
10120
|
+
function manifestKey(nodeType, version) {
|
|
10121
|
+
return `${nodeType}@${version}`;
|
|
10122
|
+
}
|
|
10123
|
+
/** The value as a node manifest, or null when it lacks the identifying fields. */
|
|
10124
|
+
function asNodeManifest(value) {
|
|
10125
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
|
|
10126
|
+
const record = value;
|
|
10127
|
+
if (typeof record.nodeType !== "string" || !record.nodeType || typeof record.version !== "string" || !record.version) return null;
|
|
10128
|
+
return {
|
|
10129
|
+
...record,
|
|
10130
|
+
name: typeof record.name === "string" ? record.name : record.nodeType
|
|
10131
|
+
};
|
|
10132
|
+
}
|
|
10133
|
+
/** Keep manifests that arrived some other way (with a workflow) for the session. */
|
|
10134
|
+
function rememberNodeManifests(values) {
|
|
10135
|
+
const manifests = [];
|
|
10136
|
+
for (const value of values) {
|
|
10137
|
+
const manifest = asNodeManifest(value);
|
|
10138
|
+
if (!manifest) continue;
|
|
10139
|
+
manifestCache.set(manifestKey(manifest.nodeType, manifest.version), manifest);
|
|
10140
|
+
manifests.push(manifest);
|
|
10132
10141
|
}
|
|
10142
|
+
return manifests;
|
|
10143
|
+
}
|
|
10144
|
+
/** The cached manifest of an exact node version, if this session loaded it. */
|
|
10145
|
+
function cachedNodeManifest(nodeType, version) {
|
|
10146
|
+
return manifestCache.get(manifestKey(nodeType, version));
|
|
10133
10147
|
}
|
|
10134
10148
|
/**
|
|
10135
|
-
*
|
|
10136
|
-
*
|
|
10137
|
-
*
|
|
10149
|
+
* Manifests for `refs`: exact versions already in the session cache are served
|
|
10150
|
+
* from it; the rest are fetched with `nodeManifests`, at most
|
|
10151
|
+
* `NODE_MANIFEST_BATCH_SIZE` refs per request, all requests in parallel. Refs the
|
|
10152
|
+
* registry does not know are absent from the result. A failed request is logged
|
|
10153
|
+
* and its refs are treated as unknown, so one bad batch never empties the palette.
|
|
10138
10154
|
*/
|
|
10139
|
-
function
|
|
10140
|
-
|
|
10155
|
+
async function loadNodeManifests(client, refs) {
|
|
10156
|
+
const result = [];
|
|
10157
|
+
const missing = [];
|
|
10158
|
+
const seen = /* @__PURE__ */ new Set();
|
|
10159
|
+
for (const ref of refs) {
|
|
10160
|
+
const key = manifestKey(ref.nodeType, ref.version ?? "");
|
|
10161
|
+
if (!ref.nodeType || seen.has(key)) continue;
|
|
10162
|
+
seen.add(key);
|
|
10163
|
+
const cached = ref.version ? cachedNodeManifest(ref.nodeType, ref.version) : void 0;
|
|
10164
|
+
if (cached) result.push(cached);
|
|
10165
|
+
else missing.push(ref.version ? ref : { nodeType: ref.nodeType });
|
|
10166
|
+
}
|
|
10167
|
+
const batches = [];
|
|
10168
|
+
for (let i = 0; i < missing.length; i += 100) batches.push(missing.slice(i, i + 100));
|
|
10169
|
+
const fetched = await Promise.all(batches.map(async (batch) => {
|
|
10170
|
+
try {
|
|
10171
|
+
const { data } = await client.query({
|
|
10172
|
+
query: NodeManifestsDocument,
|
|
10173
|
+
variables: { refs: batch },
|
|
10174
|
+
fetchPolicy: "no-cache"
|
|
10175
|
+
});
|
|
10176
|
+
return rememberNodeManifests(data?.nodeManifests ?? []);
|
|
10177
|
+
} catch (error) {
|
|
10178
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
10179
|
+
console.error(`[Workflows] Could not load ${batch.length} node manifest(s):`, message);
|
|
10180
|
+
return [];
|
|
10181
|
+
}
|
|
10182
|
+
}));
|
|
10183
|
+
for (const manifests of fetched) result.push(...manifests);
|
|
10184
|
+
return result;
|
|
10185
|
+
}
|
|
10186
|
+
|
|
10187
|
+
// src/builder/components/flow-builder/components/blocks/index.ts
|
|
10188
|
+
const NODE_CONFIGS = [];
|
|
10189
|
+
/** The registry entry for one manifest. */
|
|
10190
|
+
function toNodeConfig(manifest, publishType) {
|
|
10141
10191
|
const manifestOps = manifest.operations;
|
|
10142
10192
|
const operations = Array.isArray(manifestOps) ? manifestOps : manifestOps?.operations ?? manifestOps;
|
|
10143
|
-
|
|
10193
|
+
return {
|
|
10144
10194
|
type: manifest.nodeType,
|
|
10145
10195
|
detail: {
|
|
10146
10196
|
icon: manifest.icon || "mynaui:keyboard-solid",
|
|
@@ -10165,21 +10215,36 @@ function pushStoreNodeConfig(manifest, publishType = "STORE") {
|
|
|
10165
10215
|
},
|
|
10166
10216
|
operations,
|
|
10167
10217
|
publishType
|
|
10168
|
-
}
|
|
10218
|
+
};
|
|
10219
|
+
}
|
|
10220
|
+
function hasNodeConfig(type) {
|
|
10221
|
+
return NODE_CONFIGS.some((config) => config.type === type);
|
|
10222
|
+
}
|
|
10223
|
+
/** Add a config unless its node type is already registered. */
|
|
10224
|
+
function addNodeConfig(config) {
|
|
10225
|
+
if (hasNodeConfig(config.type)) return false;
|
|
10226
|
+
NODE_CONFIGS.push(config);
|
|
10227
|
+
return true;
|
|
10169
10228
|
}
|
|
10229
|
+
/** Only one installations request at a time: the canvas and the palette may both ask. */
|
|
10230
|
+
let installationsRequest = null;
|
|
10170
10231
|
/**
|
|
10171
|
-
*
|
|
10172
|
-
*
|
|
10173
|
-
*
|
|
10174
|
-
*
|
|
10175
|
-
*
|
|
10176
|
-
* Silently no-ops if the global store client or workspaceId is not yet configured.
|
|
10232
|
+
* The manifests of the workspace's ACTIVE store installations, recorded at install
|
|
10233
|
+
* time. Store-svc is the single source of truth for them: no zip download or
|
|
10234
|
+
* workflow-svc registry entry is needed. Empty when the global store client or the
|
|
10235
|
+
* workspace is not configured yet.
|
|
10177
10236
|
*/
|
|
10178
|
-
|
|
10237
|
+
function fetchInstalledStoreNodeManifests() {
|
|
10238
|
+
if (!installationsRequest) installationsRequest = queryInstalledStoreNodeManifests().finally(() => {
|
|
10239
|
+
installationsRequest = null;
|
|
10240
|
+
});
|
|
10241
|
+
return installationsRequest;
|
|
10242
|
+
}
|
|
10243
|
+
async function queryInstalledStoreNodeManifests() {
|
|
10179
10244
|
const globalClient = getGlobalStoreClient();
|
|
10180
|
-
if (!globalClient) return;
|
|
10245
|
+
if (!globalClient) return [];
|
|
10181
10246
|
const { workspaceId } = getFluidGridsConfig();
|
|
10182
|
-
if (!workspaceId) return;
|
|
10247
|
+
if (!workspaceId) return [];
|
|
10183
10248
|
try {
|
|
10184
10249
|
const { data } = await globalClient.query({
|
|
10185
10250
|
query: GetMyNodeInstallationsDocument,
|
|
@@ -10190,25 +10255,36 @@ async function loadInstalledStoreNodes() {
|
|
|
10190
10255
|
},
|
|
10191
10256
|
fetchPolicy: "network-only"
|
|
10192
10257
|
});
|
|
10193
|
-
const
|
|
10194
|
-
|
|
10195
|
-
for (const installation of installations) {
|
|
10258
|
+
const manifests = [];
|
|
10259
|
+
for (const installation of data?.myStoreAppInstallations?.items ?? []) {
|
|
10196
10260
|
if (installation.status !== "ACTIVE") continue;
|
|
10197
10261
|
const manifest = installation.manifest;
|
|
10198
|
-
if (
|
|
10199
|
-
pushStoreNodeConfig(manifest, "STORE");
|
|
10200
|
-
loaded++;
|
|
10262
|
+
if (manifest?.nodeType) manifests.push(manifest);
|
|
10201
10263
|
}
|
|
10202
|
-
|
|
10264
|
+
return manifests;
|
|
10203
10265
|
} catch (error) {
|
|
10204
10266
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
10205
10267
|
console.warn("[Workflows] Could not load installed store nodes:", message);
|
|
10268
|
+
return [];
|
|
10206
10269
|
}
|
|
10207
10270
|
}
|
|
10208
10271
|
/**
|
|
10209
|
-
*
|
|
10210
|
-
*
|
|
10211
|
-
*
|
|
10272
|
+
* Register installed store nodes. Any node type already registered (a built-in, or
|
|
10273
|
+
* a store node the registry vendors) is skipped; only genuinely missing ones are
|
|
10274
|
+
* added. `onlyTypes` limits it to those node types.
|
|
10275
|
+
*/
|
|
10276
|
+
async function loadInstalledStoreNodes(onlyTypes) {
|
|
10277
|
+
const manifests = await fetchInstalledStoreNodeManifests();
|
|
10278
|
+
let loaded = 0;
|
|
10279
|
+
for (const manifest of manifests) {
|
|
10280
|
+
if (onlyTypes && !onlyTypes.has(manifest.nodeType)) continue;
|
|
10281
|
+
if (addNodeConfig(toNodeConfig(manifest, "STORE"))) loaded++;
|
|
10282
|
+
}
|
|
10283
|
+
if (loaded > 0) console.log(`[Workflows] Loaded ${loaded} installed store node(s) from workspace installations.`);
|
|
10284
|
+
}
|
|
10285
|
+
/**
|
|
10286
|
+
* Load the full palette into NODE_CONFIGS: every available registry node in the
|
|
10287
|
+
* registry's order (newest first), then the installed store nodes.
|
|
10212
10288
|
*/
|
|
10213
10289
|
async function initializeNodeConfigs() {
|
|
10214
10290
|
try {
|
|
@@ -10218,81 +10294,123 @@ async function initializeNodeConfigs() {
|
|
|
10218
10294
|
await loadInstalledStoreNodes();
|
|
10219
10295
|
return;
|
|
10220
10296
|
}
|
|
10221
|
-
const
|
|
10222
|
-
if (
|
|
10297
|
+
const entries = await fetchAllNodeEndpointConfigs(client, { status: "AVAILABLE" }, "cache-first", NodePaletteEntriesDocument);
|
|
10298
|
+
if (entries.length === 0) {
|
|
10223
10299
|
console.warn("No node endpoint configs found.");
|
|
10224
10300
|
await loadInstalledStoreNodes();
|
|
10225
10301
|
return;
|
|
10226
10302
|
}
|
|
10227
|
-
const
|
|
10228
|
-
|
|
10229
|
-
|
|
10230
|
-
|
|
10231
|
-
|
|
10232
|
-
|
|
10233
|
-
|
|
10234
|
-
|
|
10235
|
-
|
|
10236
|
-
|
|
10237
|
-
|
|
10238
|
-
|
|
10239
|
-
|
|
10240
|
-
|
|
10241
|
-
const node = nodes[index];
|
|
10242
|
-
const manifestOps = manifest.operations;
|
|
10243
|
-
const operations = Array.isArray(manifestOps) ? manifestOps : manifestOps?.operations ?? manifestOps;
|
|
10244
|
-
NODE_CONFIGS.push({
|
|
10245
|
-
type: manifest.nodeType,
|
|
10246
|
-
detail: {
|
|
10247
|
-
icon: manifest.icon || "mynaui:keyboard-solid",
|
|
10248
|
-
title: manifest.name,
|
|
10249
|
-
description: manifest.description,
|
|
10250
|
-
gradientColor: "yellow"
|
|
10251
|
-
},
|
|
10252
|
-
defaultData: {
|
|
10253
|
-
operation_name: "",
|
|
10254
|
-
operation_type: "",
|
|
10255
|
-
nodeData: manifest,
|
|
10256
|
-
version: manifest.version,
|
|
10257
|
-
args: {
|
|
10258
|
-
context: { node: {
|
|
10259
|
-
id: manifest.nodeType,
|
|
10260
|
-
kind: manifest.kind,
|
|
10261
|
-
type: manifest.nodeType
|
|
10262
|
-
} },
|
|
10263
|
-
state: {},
|
|
10264
|
-
credentials: []
|
|
10265
|
-
}
|
|
10266
|
-
},
|
|
10267
|
-
operations,
|
|
10268
|
-
publishType: node.publishType
|
|
10269
|
-
});
|
|
10270
|
-
});
|
|
10303
|
+
const manifests = await loadNodeManifests(client, entries.map((entry) => ({
|
|
10304
|
+
nodeType: entry.nodeType,
|
|
10305
|
+
version: entry.nodeVersion
|
|
10306
|
+
})));
|
|
10307
|
+
const byVersion = new Map(manifests.map((manifest) => [`${manifest.nodeType}@${manifest.version}`, manifest]));
|
|
10308
|
+
const palette = [];
|
|
10309
|
+
for (const entry of entries) {
|
|
10310
|
+
const manifest = byVersion.get(`${entry.nodeType}@${entry.nodeVersion}`);
|
|
10311
|
+
if (manifest) palette.push(toNodeConfig(manifest, entry.publishType ?? void 0));
|
|
10312
|
+
}
|
|
10313
|
+
const listed = new Set(palette.map((config) => config.type));
|
|
10314
|
+
const earlier = NODE_CONFIGS.filter((config) => !listed.has(config.type));
|
|
10315
|
+
NODE_CONFIGS.length = 0;
|
|
10316
|
+
NODE_CONFIGS.push(...palette, ...earlier);
|
|
10271
10317
|
await loadInstalledStoreNodes();
|
|
10272
10318
|
} catch (error) {
|
|
10273
10319
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
10274
10320
|
console.error("Failed to fetch nodes or manifests:", message);
|
|
10275
10321
|
}
|
|
10276
10322
|
}
|
|
10323
|
+
/** Node types the registry never has: canvas-only annotations. */
|
|
10324
|
+
function isRegistryNodeType(type) {
|
|
10325
|
+
return Boolean(type) && type !== "sticky-note" && type !== "default";
|
|
10326
|
+
}
|
|
10327
|
+
/** Node types being loaded for a canvas, so concurrent callers share one request. */
|
|
10328
|
+
const nodeTypeLoads = /* @__PURE__ */ new Map();
|
|
10329
|
+
async function loadNodeTypes(types) {
|
|
10330
|
+
try {
|
|
10331
|
+
const client = await waitForFluidGridsClient(15e3, 150);
|
|
10332
|
+
if (client) {
|
|
10333
|
+
const manifests = await loadNodeManifests(client, types.map((nodeType) => ({ nodeType })));
|
|
10334
|
+
for (const manifest of manifests) addNodeConfig(toNodeConfig(manifest, manifest.publishType));
|
|
10335
|
+
}
|
|
10336
|
+
const missing = new Set(types.filter((type) => !hasNodeConfig(type)));
|
|
10337
|
+
if (missing.size > 0) await loadInstalledStoreNodes(missing);
|
|
10338
|
+
} catch (error) {
|
|
10339
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
10340
|
+
console.error("[Workflows] Could not load node types:", message);
|
|
10341
|
+
}
|
|
10342
|
+
rebuildNodeArrays();
|
|
10343
|
+
}
|
|
10344
|
+
/**
|
|
10345
|
+
* Make sure the given node types are registered, without loading the rest of the
|
|
10346
|
+
* palette: what a canvas needs before it is drawn. Types already registered cost
|
|
10347
|
+
* nothing; the rest are fetched with one batched request, and a type the registry
|
|
10348
|
+
* does not carry is looked up among the workspace's installed store nodes. Types
|
|
10349
|
+
* that resolve nowhere stay unregistered (the canvas draws them with the fallback
|
|
10350
|
+
* card). Never rejects.
|
|
10351
|
+
*/
|
|
10352
|
+
function ensureNodeTypesLoaded(types) {
|
|
10353
|
+
if (isInitialized) return Promise.resolve();
|
|
10354
|
+
const wanted = [...new Set(types)].filter((type) => isRegistryNodeType(type) && !hasNodeConfig(type));
|
|
10355
|
+
if (wanted.length === 0) return Promise.resolve();
|
|
10356
|
+
const pending = /* @__PURE__ */ new Set();
|
|
10357
|
+
const fresh = [];
|
|
10358
|
+
for (const type of wanted) {
|
|
10359
|
+
const inFlight = nodeTypeLoads.get(type);
|
|
10360
|
+
if (inFlight) pending.add(inFlight);
|
|
10361
|
+
else fresh.push(type);
|
|
10362
|
+
}
|
|
10363
|
+
if (fresh.length > 0) {
|
|
10364
|
+
const load = loadNodeTypes(fresh).finally(() => {
|
|
10365
|
+
for (const type of fresh) if (nodeTypeLoads.get(type) === load) nodeTypeLoads.delete(type);
|
|
10366
|
+
});
|
|
10367
|
+
for (const type of fresh) nodeTypeLoads.set(type, load);
|
|
10368
|
+
pending.add(load);
|
|
10369
|
+
}
|
|
10370
|
+
return Promise.all(pending).then(() => void 0);
|
|
10371
|
+
}
|
|
10277
10372
|
/**
|
|
10278
|
-
*
|
|
10279
|
-
*
|
|
10373
|
+
* Register manifests that arrived with a workflow (`WorkflowDefinition.nodeManifests`)
|
|
10374
|
+
* and keep them in the session cache, so the canvas needs no further request.
|
|
10375
|
+
*/
|
|
10376
|
+
function registerNodeManifests(values) {
|
|
10377
|
+
let added = false;
|
|
10378
|
+
for (const manifest of rememberNodeManifests(values)) if (addNodeConfig(toNodeConfig(manifest, manifest.publishType))) added = true;
|
|
10379
|
+
if (added) rebuildNodeArrays();
|
|
10380
|
+
}
|
|
10381
|
+
/** Register the client-side node components every canvas needs. */
|
|
10382
|
+
function registerBaseNodeTypes() {
|
|
10383
|
+
const fallback = getNodeMetadata({ type: "__default_dynamic__" });
|
|
10384
|
+
if (fallback?.node) NODE_TYPES["default"] = fallback.node;
|
|
10385
|
+
NODE_TYPES[STICKY_NOTE_TYPE] = StickyNoteNode;
|
|
10386
|
+
}
|
|
10387
|
+
/** Empty the registry, keeping only the client-side node components. */
|
|
10388
|
+
function resetNodeRegistry() {
|
|
10389
|
+
NODE_CONFIGS.length = 0;
|
|
10390
|
+
NODES.length = 0;
|
|
10391
|
+
AVAILABLE_NODES.length = 0;
|
|
10392
|
+
for (const key of Object.keys(NODE_TYPES)) delete NODE_TYPES[key];
|
|
10393
|
+
for (const key of Object.keys(NODES_METADATA)) delete NODES_METADATA[key];
|
|
10394
|
+
isInitialized = false;
|
|
10395
|
+
initPromise = null;
|
|
10396
|
+
nodeTypeLoads.clear();
|
|
10397
|
+
registerBaseNodeTypes();
|
|
10398
|
+
}
|
|
10399
|
+
/**
|
|
10400
|
+
* Reload the registry from scratch, as the full palette. Called after installing or
|
|
10401
|
+
* uninstalling a store node, and when the hosts set the workspace's clients.
|
|
10402
|
+
* Manifests stay in the session cache (they are fixed per version), so only new
|
|
10403
|
+
* ones are fetched.
|
|
10280
10404
|
*
|
|
10281
|
-
*
|
|
10282
|
-
*
|
|
10405
|
+
* While nothing is loaded or loading there is nothing stale to refresh, and it does
|
|
10406
|
+
* nothing: the registry loads on demand (BOFF-10387). Hosts call this when they
|
|
10407
|
+
* mount, which used to load the whole palette before the builder had asked for
|
|
10408
|
+
* anything.
|
|
10283
10409
|
*/
|
|
10284
10410
|
async function refetchStoreNodes() {
|
|
10411
|
+
if (NODE_CONFIGS.length === 0 && !initPromise && nodeTypeLoads.size === 0) return;
|
|
10285
10412
|
try {
|
|
10286
|
-
|
|
10287
|
-
NODES.length = 0;
|
|
10288
|
-
AVAILABLE_NODES.length = 0;
|
|
10289
|
-
for (const key of Object.keys(NODE_TYPES)) delete NODE_TYPES[key];
|
|
10290
|
-
for (const key of Object.keys(NODES_METADATA)) delete NODES_METADATA[key];
|
|
10291
|
-
isInitialized = false;
|
|
10292
|
-
initPromise = null;
|
|
10293
|
-
const fallback = getNodeMetadata({ type: "__default_dynamic__" });
|
|
10294
|
-
if (fallback?.node) NODE_TYPES["default"] = fallback.node;
|
|
10295
|
-
NODE_TYPES[STICKY_NOTE_TYPE] = StickyNoteNode;
|
|
10413
|
+
resetNodeRegistry();
|
|
10296
10414
|
await initializeNodeConfigs();
|
|
10297
10415
|
isInitialized = NODE_CONFIGS.length > 0;
|
|
10298
10416
|
rebuildNodeArrays();
|
|
@@ -10350,7 +10468,7 @@ function registryNodeData(type) {
|
|
|
10350
10468
|
return manifest ? manifest : void 0;
|
|
10351
10469
|
}
|
|
10352
10470
|
/**
|
|
10353
|
-
* Ensure
|
|
10471
|
+
* Ensure the full palette is loaded. Safe to call multiple times.
|
|
10354
10472
|
* Returns immediately if already initialized or initializing.
|
|
10355
10473
|
*/
|
|
10356
10474
|
function ensureNodeConfigsLoaded() {
|
|
@@ -10363,33 +10481,74 @@ function ensureNodeConfigsLoaded() {
|
|
|
10363
10481
|
return initPromise;
|
|
10364
10482
|
}
|
|
10365
10483
|
/**
|
|
10366
|
-
* Check if
|
|
10484
|
+
* Check if the full palette has been loaded
|
|
10367
10485
|
*/
|
|
10368
10486
|
function isNodeConfigsInitialized() {
|
|
10369
10487
|
return isInitialized;
|
|
10370
10488
|
}
|
|
10371
10489
|
/**
|
|
10372
|
-
*
|
|
10373
|
-
*
|
|
10490
|
+
* How long an idle palette load may wait for the browser to go idle. A canvas
|
|
10491
|
+
* opens the palette's panels on demand anyway; this only bounds the wait when
|
|
10492
|
+
* the page never idles.
|
|
10374
10493
|
*/
|
|
10375
|
-
|
|
10376
|
-
|
|
10377
|
-
|
|
10378
|
-
|
|
10379
|
-
|
|
10380
|
-
|
|
10381
|
-
|
|
10382
|
-
|
|
10383
|
-
|
|
10384
|
-
|
|
10385
|
-
|
|
10386
|
-
|
|
10387
|
-
|
|
10388
|
-
|
|
10389
|
-
|
|
10390
|
-
|
|
10494
|
+
const NODE_PALETTE_IDLE_TIMEOUT_MS = 5e3;
|
|
10495
|
+
let paletteLoadScheduled = false;
|
|
10496
|
+
/**
|
|
10497
|
+
* Load the full palette once the page is idle (BOFF-10387): after a canvas is
|
|
10498
|
+
* drawn, so the palette is ready when the person opens it without delaying the
|
|
10499
|
+
* canvas. Does nothing when it is loaded, loading or already scheduled.
|
|
10500
|
+
*/
|
|
10501
|
+
function scheduleNodePaletteLoad() {
|
|
10502
|
+
if (isInitialized || initPromise || paletteLoadScheduled) return;
|
|
10503
|
+
paletteLoadScheduled = true;
|
|
10504
|
+
const load = () => {
|
|
10505
|
+
paletteLoadScheduled = false;
|
|
10506
|
+
ensureNodeConfigsLoaded().catch((error) => {
|
|
10507
|
+
console.warn("[Workflows] Idle node palette load failed:", error);
|
|
10508
|
+
});
|
|
10509
|
+
};
|
|
10510
|
+
if (typeof window !== "undefined" && "requestIdleCallback" in window) window.requestIdleCallback(load, { timeout: NODE_PALETTE_IDLE_TIMEOUT_MS });
|
|
10511
|
+
else setTimeout(load, 1e3);
|
|
10512
|
+
}
|
|
10513
|
+
/** The registry entry of each config's node type, created on first sight. */
|
|
10514
|
+
function nodeMetadataFor(config) {
|
|
10515
|
+
const nodeMetadata = {
|
|
10516
|
+
...getNodeMetadata(config),
|
|
10517
|
+
detail: { ...config.detail }
|
|
10518
|
+
};
|
|
10519
|
+
NODE_TYPES[nodeMetadata.type] = nodeMetadata.node;
|
|
10520
|
+
NODES_METADATA[nodeMetadata.type] = {
|
|
10521
|
+
...nodeMetadata,
|
|
10522
|
+
__details: {
|
|
10523
|
+
type: nodeMetadata.type,
|
|
10524
|
+
...nodeMetadata.detail
|
|
10391
10525
|
}
|
|
10392
|
-
}
|
|
10526
|
+
};
|
|
10527
|
+
return nodeMetadata;
|
|
10528
|
+
}
|
|
10529
|
+
/**
|
|
10530
|
+
* Rebuild NODES and derived arrays from NODE_CONFIGS, in its order.
|
|
10531
|
+
*
|
|
10532
|
+
* A node type keeps the entry (and the React component) it was first registered
|
|
10533
|
+
* with: replacing the component would remount every node of that type already on
|
|
10534
|
+
* the canvas. Called whenever the registry grows: the canvas's node types first,
|
|
10535
|
+
* the full palette later.
|
|
10536
|
+
*/
|
|
10537
|
+
function rebuildNodeArrays() {
|
|
10538
|
+
const existing = new Map(NODES.map((node) => [node.type, node]));
|
|
10539
|
+
const ordered = [];
|
|
10540
|
+
const seen = /* @__PURE__ */ new Set();
|
|
10541
|
+
for (const config of NODE_CONFIGS) {
|
|
10542
|
+
if (seen.has(config.type)) continue;
|
|
10543
|
+
seen.add(config.type);
|
|
10544
|
+
ordered.push(existing.get(config.type) ?? nodeMetadataFor(config));
|
|
10545
|
+
}
|
|
10546
|
+
for (const node of NODES) if (!seen.has(node.type)) {
|
|
10547
|
+
seen.add(node.type);
|
|
10548
|
+
ordered.push(node);
|
|
10549
|
+
}
|
|
10550
|
+
NODES.length = 0;
|
|
10551
|
+
NODES.push(...ordered);
|
|
10393
10552
|
const newAvailableNodes = NODES.filter((node) => node.available === void 0 || node.available).map((node) => {
|
|
10394
10553
|
const nodeConfig = NODE_CONFIGS.find((config) => config.type === node.type);
|
|
10395
10554
|
return {
|
|
@@ -10406,18 +10565,17 @@ function rebuildNodeArrays() {
|
|
|
10406
10565
|
AVAILABLE_NODES.push(...newAvailableNodes);
|
|
10407
10566
|
notifyNodeTypesListeners();
|
|
10408
10567
|
}
|
|
10409
|
-
|
|
10410
|
-
console.warn("[Workflows] Background node config initialization failed:", err);
|
|
10411
|
-
});
|
|
10412
|
-
const fallbackDynamic = getNodeMetadata({ type: "__default_dynamic__" });
|
|
10413
|
-
if (fallbackDynamic?.node) NODE_TYPES["default"] = fallbackDynamic.node;
|
|
10414
|
-
NODE_TYPES[STICKY_NOTE_TYPE] = StickyNoteNode;
|
|
10568
|
+
registerBaseNodeTypes();
|
|
10415
10569
|
/**
|
|
10416
10570
|
* Pre-register node types from the workflow definition so React Flow never sees unknown types.
|
|
10417
|
-
* Called by FlowBuilderPage before hydrating the store
|
|
10571
|
+
* Called by FlowBuilderPage before hydrating the store, and for nodes an assistant
|
|
10572
|
+
* adds to an open canvas. Unknown types get a fallback card at once; their real
|
|
10573
|
+
* registry entries load in the background and replace it (BOFF-10387).
|
|
10418
10574
|
*/
|
|
10419
10575
|
function registerWorkflowNodeTypes(workflowNodes) {
|
|
10576
|
+
const unknownTypes = [];
|
|
10420
10577
|
for (const node of workflowNodes) if (node.type && !NODE_TYPES[node.type]) {
|
|
10578
|
+
unknownTypes.push(node.type);
|
|
10421
10579
|
const meta = getNodeMetadata({
|
|
10422
10580
|
type: node.type,
|
|
10423
10581
|
defaultData: {
|
|
@@ -10428,6 +10586,7 @@ function registerWorkflowNodeTypes(workflowNodes) {
|
|
|
10428
10586
|
});
|
|
10429
10587
|
if (meta?.node) NODE_TYPES[node.type] = meta.node;
|
|
10430
10588
|
}
|
|
10589
|
+
ensureNodeTypesLoaded(unknownTypes);
|
|
10431
10590
|
}
|
|
10432
10591
|
|
|
10433
10592
|
// src/components/FluidGridsProvider.tsx
|
|
@@ -10628,4 +10787,4 @@ function useFluidGridsContext() {
|
|
|
10628
10787
|
return context;
|
|
10629
10788
|
}
|
|
10630
10789
|
|
|
10631
|
-
export {
|
|
10790
|
+
export { resolveLoadOptionsSpec as $, useWorkflowTestsEnabled as $n, useNodeExecution as $t, UninstallWorkflowNodeDocument as A, clearCodeWorkflowDefinitionCache as An, bannerOf as At, coerceNumber as B, FLUIDGRIDS_FLAGS as Bn, forgetSessionForReload as Bt, InstallOrganizationPrivateNodeDocument as C, RUNS_QUOTA_NAME as Cn, classifyCreateRefusal as Ct, OrganizationPrivateNodesDocument as D, isQuotaExhaustedFailure as Dn, useSaveStatusStore as Dt, MyWorkflowTemplateSubmissionsDocument as E, findQuotaRefusal as En, saveIndicatorOf as Et, useInsertNode as F, durableInterfaceOf as Fn, phaseAfterTakeOver as Ft, paramsFromOperation as G, useContinuousOptimisationEnabled as Gn, AUTOSAVE_DEBOUNCE_MS as Gt, nodeSubtitle as H, PHASE_C_FLAGS_OFF as Hn, sessionBeforeReload as Ht, MissingParametersDialog as I, parseRawSignalPayload as In, releasesOnClose as It, resolveUiSpec as J, useFluidGridsFlag as Jn, codeBuildIdOf as Jt, selectedOperationOf as K, useDurableFunctionNodesEnabled as Kn, AUTOSAVE_RETRY_DELAYS_MS as Kt, useRunGuard as L, payloadFromCardValues as Ln, shouldReleaseForIdle as Lt, getNodeMetadata as M, useCodeWorkflowInterface as Mn, leaseCallQueue as Mt, buildOperationSeed as N, canSignalRun as Nn, leaseCallSequence as Nt, SubmitWorkflowTemplateDocument as O, useCanvasEdges as On, useEditLeaseLocked as Ot, createConfiguredNode as P, declaredSignals as Pn, phaseAfterAcquire as Pt, optionListValues as Q, useSelfHostedWorkersEnabled as Qn, workflowFingerprint as Qt, workflowParameterIssues as R, runSignalTargets as Rn, tickAction as Rt, GetNodeInstallableVersionsDocument as S, BILLING_PLANS_PATH as Sn, builderPathOf as St, InstallWorkflowNodeDocument as T, collectExtensions as Tn, refusalOfQuota as Tt, nodeTitle as U, resolveFluidGridsFlagsSettled as Un, rememberOwnStatusChange as Ut, fixedParameterState as V, FLUIDGRIDS_FLAG_DEFAULTS as Vn, rememberSessionForReload as Vt, optionText as W, resolvePhaseCFlags as Wn, rememberRevision as Wt, isStringOptionList as X, usePaletteGates as Xn, inAppLeaveTarget as Xt, stripSubmitActions as Y, useFluidGridsFlagsSettled as Yn, findSaveConflict as Yt, optionListText as Z, usePhaseCFlags as Zn, saveFailureActionOf as Zt, global_operations_exports as _, emitWorkflowCreated as _n, watchLeavingLosesChanges as _t, NODES_METADATA as a, structuredParameterType as an, getNodeDetail as ar, latestNodeLog as at, CreateStoreOrderDocument as b, nodesOf as bn, useSaveWorkflow as bt, ensureNodeConfigsLoaded as c, isParamVisible as cn, useBuilderReadOnly as cr, useGuardedNavigate as ct, onNodeTypesUpdate as d, emitNodeInstalled as dn, global_client_exports as dr, departingSave as dt, formatElapsedMs as en, connectionsForAdapter as er, ConditionTreeBuilder as et, refetchStoreNodes as f, emitRunFailed as fn, resetGlobalStoreClient as fr, editStateFor as ft, scheduleNodePaletteLoad as g, emitUpgradeClicked as gn, touchesSavedFields as gt, registryNodeData as h, emitTemplateUsed as hn, savedEverythingBeforeLeaving as ht, AVAILABLE_NODES as i, parseParameterValue as in, replaceAdapterConnections as ir, parseMappingValue as it, WithdrawWorkflowTemplateSubmissionDocument as j, loadDefinitionJson as jn, isLocked as jt, UninstallOrganizationPrivateNodeDocument as k, useNodeRegistryRevision as kn, useEditLeaseStore as kt, ensureNodeTypesLoaded as l, useFluidGridsAnalytics as ln, createGlobalStoreClient as lr, useManualSave as lt, registerWorkflowNodeTypes as m, emitRunStarted as mn, leavingLosesChanges as mt, FluidGridsProvider as n, runDurationMs as nn, matchesAdapterProvider as nr, casesFromRules as nt, NODE_CONFIGS as o, fieldsFromValue as on, buildStickyNode as or, boundFieldsOf as ot, registerNodeManifests as p, emitRunLimitHit as pn, setGlobalStoreClient as pr, editingLeaseLocked as pt, useNodeConfig as q, useDurableParityEnabled as qn, canAutosave as qt, useFluidGridsContext as r, formatParameterValue as rn, newConnectionProviderKey as rr, FieldTree as rt, NODE_TYPES as s, resolveNodeOperation as sn, BuilderReadOnlyProvider as sr, missingRequiredParameters as st, FluidGridsContext as t, nodeStateDurationMs as tn, isOptionalAdapter as tr, SwitchRulesEditor as tt, isNodeConfigsInitialized as u, openRunQuotaUpgradePrompt as un, getGlobalStoreClient as ur, autosaveAllowedFor as ut, BrowseWorkflowNodesDocument as v, emitWorkflowLimitHit as vn, isFlowComplete as vt, InstallPurchasedNodeDocument as w, WORKFLOWS_QUOTA_NAME as wn, createThenOpen as wt, GetMyNodeInstallationsDocument as x, runTriggerFromMode as xn, blankWorkflowCreateInput as xt, BrowseWorkflowTemplatesDocument as y, emitWorkflowPublished as yn, useFlowValidator as yt, asRecord as z, signalPayloadCard as zn, EDIT_SESSION_ID as zt };
|