@burdenoff/fluidgrids-fe-sdk 2026.1111.18 → 2026.1111.20
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/{AiStudioPage-BHVEU4Wp.js → AiStudioPage-CmjZwaoy.js} +4 -4
- package/dist/ConnectionFormDialog-Bg9_OdHX.js +119 -0
- package/dist/{DataSinkDashboardPage-1h2QsMzH.js → DataSinkDashboardPage-auvILMSt.js} +1 -1
- package/dist/{ExecutionDetailPage-BdcZmLT4.js → ExecutionDetailPage-C0q5brcQ.js} +6 -6
- package/dist/{ExecutionsListPage-BCUJoAIE.js → ExecutionsListPage-Dcc6wi-8.js} +4 -4
- package/dist/{FluidGridsProvider-dvZSNtSW.js → FluidGridsProvider-CRGXDZX1.js} +55 -3
- package/dist/{HistoryPage-U0tqupBN.js → HistoryPage-B5Np7Dd_.js} +1 -1
- package/dist/{InsightsPage-CALo16eB.js → InsightsPage-CQ8sB4d6.js} +1 -1
- package/dist/{MissingNodesInstallModal-CMybsI8h.js → MissingNodesInstallModal-Dm1m3Ysp.js} +1 -1
- package/dist/{QuotaExhaustedDialog-7IFSaLyi.js → QuotaExhaustedDialog-DYCpMOyQ.js} +1 -1
- package/dist/{SettingsPage-CJLZvv4J.js → SettingsPage-BNJV7nwG.js} +2 -2
- package/dist/{TemplateCard-DsC0KNH1.js → TemplateCard-BuP6_QX8.js} +48 -12
- package/dist/{TemplateConfigurationModal-BhGWIzpm.js → TemplateConfigurationModal--YswnkOD.js} +1 -1
- package/dist/{TemplateDetailPanel-D4cUVr-m.js → TemplateDetailPanel-CtUjihCQ.js} +1 -1
- package/dist/{TemplatePreview-FayF6jxh.js → TemplatePreview-TH3zVEtT.js} +3 -3
- package/dist/{TemplatesPage-CsDNT54N.js → TemplatesPage-BDiIswSv.js} +4 -4
- package/dist/{WorkflowBuilder-YXRysvZc.js → WorkflowBuilder-DnTqzYD5.js} +7 -7
- package/dist/{WorkflowBuilder-CPnXEL5J.js → WorkflowBuilder-KypUzhmK.js} +3 -3
- package/dist/{WorkflowSearchRedirect-DwDNZ_q5.js → WorkflowSearchRedirect-DAA2K0Md.js} +1 -1
- package/dist/{WorkflowsList-DiiGyZkT.js → WorkflowsList-BWdu8wj0.js} +5 -5
- package/dist/{agentTools-8s_25Q_F.js → agentTools-VQXDvw4O.js} +3 -3
- package/dist/{canvasNoteTools-B6pYARgU.js → canvasNoteTools-CCQtxq7U.js} +2 -2
- package/dist/{code-editor-field-9-GdVE_8.js → code-editor-field-4j1LiULY.js} +1 -1
- package/dist/executions.js +2 -2
- package/dist/{flow-builder-CZDKRc6f.js → flow-builder-KbM4vIW8.js} +191 -173
- package/dist/history.js +1 -1
- package/dist/index.js +25 -24
- package/dist/{node-detail-view-CV4ZRwqh.js → node-detail-view-CeOkSF2C.js} +5 -5
- package/dist/{node-editor-tab-body-DU-dh35X.js → node-editor-tab-body-CN89wDV7.js} +2 -2
- package/dist/observability.js +2 -2
- package/dist/{popover-BJHvrFGR.js → popover-CxKbvYSJ.js} +2 -2
- package/dist/preloadable-lazy-Pp47mqQ9.js +65 -0
- package/dist/{quick-config-panel-ws3pLvbt.js → quick-config-panel-wfP0s4QO.js} +3 -3
- package/dist/{schedule-panel-C0mfGQSD.js → schedule-panel-2HgyHvO8.js} +4 -4
- package/dist/settings.js +1 -1
- package/dist/{sidebar-node-editor-CR1PiZO-.js → sidebar-node-editor-DLOVQATw.js} +3 -3
- package/dist/templates.js +2 -2
- package/dist/{useDurableParity-CzUQMFJ3.js → useDurableParity-CJvnfF3T.js} +1 -1
- package/dist/{useExecutions-9aLuOt1c.js → useExecutions-CyXkJtpk.js} +1 -1
- package/dist/{useObservability-CfEw3ZFD.js → useObservability-QZjFuXnI.js} +1 -1
- package/dist/{useRunHistory-B1xJDwl1.js → useRunHistory-D4gaa81A.js} +1 -1
- package/dist/{useWorkflowCodeExport-Bu2QYJzA.js → useWorkflowCodeExport-BNGq3BJ9.js} +1 -1
- package/dist/{useWorkflows-BlVVu8NM.js → useWorkflows-XsfD7JA-.js} +1 -1
- package/dist/workflow-builder.js +4 -4
- package/dist/workflow-pages.d.ts +20 -20
- package/dist/workflow-pages.js +16 -24
- package/dist/workflows-list.js +1 -1
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
|
|
4
|
-
import { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-
|
|
5
|
-
import { Et as classifyCreateRefusal, I as buildOperationSeed, Tt as builderPathOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-
|
|
4
|
+
import { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-KbM4vIW8.js";
|
|
5
|
+
import { Et as classifyCreateRefusal, I as buildOperationSeed, Tt as builderPathOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
6
6
|
import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
7
7
|
import { a as notifyFluidGridsAiCreditsUpdated, t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
|
|
8
8
|
import { Pr as WorkflowGenerationDocument, y as CancelWorkflowGenerationDocument, yt as GenerateWorkflowFromPromptDocument } from "./graphql-operation-types-kX-MMjgW.js";
|
|
9
|
-
import { n as useCreateWorkflow } from "./useWorkflows-
|
|
9
|
+
import { n as useCreateWorkflow } from "./useWorkflows-XsfD7JA-.js";
|
|
10
10
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
11
11
|
import { f as BILLING_PLANS_PATH } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
12
|
-
import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-
|
|
12
|
+
import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-BNGq3BJ9.js";
|
|
13
13
|
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
14
14
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
15
15
|
import { useNavigate } from "react-router";
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
+
import { n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
4
|
+
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
5
|
+
import { useCallback } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import { ConnectionDialog } from "@burdenoff/fe-libs/connections";
|
|
8
|
+
|
|
9
|
+
// src/modules/connections/utils/provider-helpers.ts
|
|
10
|
+
/**
|
|
11
|
+
* The OAuth callback URL the builder's connections use.
|
|
12
|
+
*
|
|
13
|
+
* Provider identity (icons, name tiles) and labels moved to
|
|
14
|
+
* `@burdenoff/fe-libs/connections` with the shared connection dialog
|
|
15
|
+
* (BOFF-8174); only what depends on the SDK's own configuration stays here.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Get the OAuth callback URL for the integrations service.
|
|
19
|
+
*
|
|
20
|
+
* Returns an ABSOLUTE URL, since OAuth providers require an absolute
|
|
21
|
+
* redirect_uri. The host is derived from the configured wspace gateway base
|
|
22
|
+
* (`apiGatewayUrl`) — which serves the `/integrations/oauth/callback` path —
|
|
23
|
+
* not the app origin. Falls back to the current window origin only when no
|
|
24
|
+
* gateway base is configured.
|
|
25
|
+
*/
|
|
26
|
+
function getOAuthCallbackUrl() {
|
|
27
|
+
const path = "/integrations/oauth/callback";
|
|
28
|
+
const gatewayBase = getFluidGridsConfig().apiGatewayUrl;
|
|
29
|
+
if (gatewayBase) try {
|
|
30
|
+
return new URL(path, gatewayBase).toString();
|
|
31
|
+
} catch {}
|
|
32
|
+
if (typeof window !== "undefined" && window.location.hostname === "localhost") return `http://localhost:3713${path}`;
|
|
33
|
+
if (typeof window !== "undefined") return `${window.location.origin}${path}`;
|
|
34
|
+
return path;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// src/modules/connections/components/ConnectionFormDialog.tsx
|
|
38
|
+
/**
|
|
39
|
+
* ConnectionFormDialog — a workflow node's "New connection" popup.
|
|
40
|
+
*
|
|
41
|
+
* The dialog itself is `@burdenoff/fe-libs/connections`' ConnectionDialog, the
|
|
42
|
+
* same one the integrations screens use; this component only supplies what the
|
|
43
|
+
* builder has that the shared dialog cannot know: the SDK's GraphQL client, the
|
|
44
|
+
* gateway callback URL and the host's translator. It used to be a separate
|
|
45
|
+
* implementation, and the two drifted (BOFF-8135, BOFF-8170) — see BOFF-8174.
|
|
46
|
+
*
|
|
47
|
+
* Builder-specific choices:
|
|
48
|
+
* - opens on the node's provider by key, or on the whole catalog;
|
|
49
|
+
* - a vault is optional: a node connection should not need a trip to the
|
|
50
|
+
* security module, so the integrations service holds the secret unless the
|
|
51
|
+
* user picks a vault;
|
|
52
|
+
* - shows the Sharing tab.
|
|
53
|
+
*/
|
|
54
|
+
var ConnectionFormDialog_exports = /* @__PURE__ */ __exportAll({ ConnectionFormDialog: () => ConnectionFormDialog });
|
|
55
|
+
/** The shared dialog's categories, back in the service's enum. */
|
|
56
|
+
const SDK_CATEGORIES = {
|
|
57
|
+
cloud_storage: "CLOUD_STORAGE",
|
|
58
|
+
communication: "COMMUNICATION",
|
|
59
|
+
productivity: "PRODUCTIVITY",
|
|
60
|
+
crm: "CRM",
|
|
61
|
+
email: "EMAIL",
|
|
62
|
+
calendar: "CALENDAR",
|
|
63
|
+
developer_tools: "DEVELOPMENT",
|
|
64
|
+
social: "SOCIAL",
|
|
65
|
+
finance: "PAYMENT",
|
|
66
|
+
analytics: "ANALYTICS"
|
|
67
|
+
};
|
|
68
|
+
/** Auth types the SDK's enum can express; anything else is CUSTOM. */
|
|
69
|
+
const SDK_AUTH_TYPES = {
|
|
70
|
+
oauth2: "OAUTH2",
|
|
71
|
+
api_key: "API_KEY",
|
|
72
|
+
basic_auth: "BASIC_AUTH",
|
|
73
|
+
bearer_token: "BEARER_TOKEN"
|
|
74
|
+
};
|
|
75
|
+
/** The shared dialog's provider, in the SDK's GraphQL-enum shape. */
|
|
76
|
+
function toSdkProvider(provider) {
|
|
77
|
+
return {
|
|
78
|
+
id: provider.id,
|
|
79
|
+
key: provider.key,
|
|
80
|
+
name: provider.name,
|
|
81
|
+
description: provider.description,
|
|
82
|
+
category: SDK_CATEGORIES[provider.category] ?? "CUSTOM",
|
|
83
|
+
authType: SDK_AUTH_TYPES[provider.authType] ?? "CUSTOM",
|
|
84
|
+
icon: provider.icon,
|
|
85
|
+
website: provider.website,
|
|
86
|
+
docsUrl: provider.docsUrl,
|
|
87
|
+
isBuiltIn: true,
|
|
88
|
+
isEnabled: provider.isEnabled
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function ConnectionFormDialog({ open, onClose, providerKey, providerId, defaultName, onConnectionCreated, onError }) {
|
|
92
|
+
const tr = useTr();
|
|
93
|
+
const handleCreated = useCallback((connection) => {
|
|
94
|
+
onConnectionCreated?.({
|
|
95
|
+
id: connection.id,
|
|
96
|
+
name: connection.name,
|
|
97
|
+
status: connection.status,
|
|
98
|
+
provider: toSdkProvider(connection.provider)
|
|
99
|
+
});
|
|
100
|
+
}, [onConnectionCreated]);
|
|
101
|
+
return /* @__PURE__ */ jsx(ConnectionDialog, {
|
|
102
|
+
open,
|
|
103
|
+
onClose,
|
|
104
|
+
client: getFluidGridsClient(),
|
|
105
|
+
callbackUrl: getOAuthCallbackUrl(),
|
|
106
|
+
translate: tr,
|
|
107
|
+
providerKey: providerKey ?? null,
|
|
108
|
+
providerId: providerId ?? null,
|
|
109
|
+
providerSource: "catalog",
|
|
110
|
+
requireVault: false,
|
|
111
|
+
defaultName,
|
|
112
|
+
showSharingTab: true,
|
|
113
|
+
defaultVisibility: "RESTRICTED",
|
|
114
|
+
onConnectionCreated: handleCreated,
|
|
115
|
+
onError
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export { ConnectionFormDialog_exports as n, ConnectionFormDialog as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
|
-
import { n as useDataSinks, t as useDataSinkData } from "./useObservability-
|
|
4
|
+
import { n as useDataSinks, t as useDataSinkData } from "./useObservability-QZjFuXnI.js";
|
|
5
5
|
import { s as prettyJson, t as formatBytes } from "./utils-uaL5UVxb.js";
|
|
6
6
|
import { useEffect, useMemo, useState } from "react";
|
|
7
7
|
import { Icon } from "@iconify/react";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import { i as useRunPending, n as useDurableParityRunFields, o as ExecutionStatusBadge, r as useRunMetadata, s as NodeStatusBadge, t as setRunVersioningOverride } from "./useDurableParity-
|
|
3
|
+
import { i as useRunPending, n as useDurableParityRunFields, o as ExecutionStatusBadge, r as useRunMetadata, s as NodeStatusBadge, t as setRunVersioningOverride } from "./useDurableParity-CJvnfF3T.js";
|
|
4
4
|
import { n as formatRunVersion, r as nodeDisplayTitle, t as buildNodeDisplayMap } from "./run-display-BycKYSU0.js";
|
|
5
5
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
6
|
import { s as isAgentNodeType } from "./agent-form-Bfvm32j1.js";
|
|
7
|
-
import { Sn as durableInterfaceOf, Tn as runSignalTargets, an as nodeStateDurationMs, bn as canSignalRun, in as formatElapsedMs, on as runDurationMs } from "./FluidGridsProvider-
|
|
8
|
-
import { f as callbackTone, g as shortRunId, h as runChainLinks, m as parseMetadataDefinition, n as useExecution, p as overrideRequestOf, r as useExecutionActions, t as useAutoRefresh } from "./useExecutions-
|
|
7
|
+
import { Sn as durableInterfaceOf, Tn as runSignalTargets, an as nodeStateDurationMs, bn as canSignalRun, in as formatElapsedMs, on as runDurationMs } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
8
|
+
import { f as callbackTone, g as shortRunId, h as runChainLinks, m as parseMetadataDefinition, n as useExecution, p as overrideRequestOf, r as useExecutionActions, t as useAutoRefresh } from "./useExecutions-CyXkJtpk.js";
|
|
9
9
|
import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient, r as getFluidGridsClientSafe, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
10
10
|
import { Yr as WorkflowRunHierarchyDocument, dn as RunAiUsageDocument, o as AgentStepUpdatedDocument, s as AgentTraceDocument, ut as ExplainRunDocument, xn as RunLogsDocument, yn as RunLogAppendedDocument } from "./graphql-operation-types-kX-MMjgW.js";
|
|
11
11
|
import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
@@ -15,18 +15,17 @@ import { a as encodedPayloadBytes, f as EffectBadge, h as useRunPolicyDecisions,
|
|
|
15
15
|
import { n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard } from "./WorkflowProposalCard-qrEeNyYG.js";
|
|
16
16
|
import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
|
|
17
17
|
import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-B9hDQymi.js";
|
|
18
|
-
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 useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-D4gaa81A.js";
|
|
19
19
|
import { $u as ErrorType, L as AgentStepKind, LF as WorkflowQueryRejectCondition, tI as WorkflowUpdateWaitFor, yP as VersioningBehavior } from "./graphql-types-CDKVWH2R.js";
|
|
20
20
|
import { a as formatTokens, d as formatMicroUsd, o as modelLabel, r as aiCost } from "./ai-usage-glCwHyQz.js";
|
|
21
21
|
import { c as useDurableParityEnabled, f as usePhaseCFlags, m as useWorkflowTestsEnabled, s as useDurableFunctionNodesEnabled } from "./feature-flags-DM5myWaD.js";
|
|
22
22
|
import { A as revokeSignalToken, B as updateActivityOptions, D as resetActivities, E as queryRun, N as sendRunUpdate, O as resetRun, R as unpauseActivities, S as fetchSignalTokens, V as upsertRunSearchAttributes, _ as fetchPauseRules, b as fetchRunUpdate, d as failActivityById, g as fetchCodecServerSettings, i as completeActivityById, k as resetRunToLastCleanTask, s as createSignalToken, v as fetchRunControlFields, w as pauseActivities, y as fetchRunHistoryArchive } from "./api-BrCHB5oA.js";
|
|
23
23
|
import { a as fetchTaskQueueStats } from "./api-C8e0iV-Q.js";
|
|
24
24
|
import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, l as parseJsonObjectInput, n as JsonBlock, o as StatusPill, r as JsonField, s as newRunControlId, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
|
|
25
|
-
import { v as useWorkflowVersions } from "./useWorkflows-
|
|
25
|
+
import { v as useWorkflowVersions } from "./useWorkflows-XsfD7JA-.js";
|
|
26
26
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
27
27
|
import { Link, useNavigate, useParams, useSearchParams } from "react-router";
|
|
28
28
|
import { Icon } from "@iconify/react";
|
|
29
|
-
import ReactMarkdown from "react-markdown";
|
|
30
29
|
import { cn } from "@burdenoff/fe-libs/utils";
|
|
31
30
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
32
31
|
import { toast } from "sonner";
|
|
@@ -34,6 +33,7 @@ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
|
|
|
34
33
|
import { Button as Button$1 } from "@burdenoff/fe-libs/button";
|
|
35
34
|
import { FlaskConical } from "lucide-react";
|
|
36
35
|
import { buildActorFallback, useActorProfiles } from "@burdenoff/fe-libs/shared";
|
|
36
|
+
import ReactMarkdown from "react-markdown";
|
|
37
37
|
|
|
38
38
|
// src/modules/executions/utils/agent-trace.ts
|
|
39
39
|
/**
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { M as DEFAULT_EXECUTIONS_FILTER, N as useExecutionsStore, m as describeOperationError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
4
|
-
import { c as OPERATORS_BY_TYPE, i as useExecutionStats, l as buildSearchAttributeFilter, o as useExecutionsWithStore, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, y as validateDateRange } from "./useExecutions-
|
|
4
|
+
import { c as OPERATORS_BY_TYPE, i as useExecutionStats, l as buildSearchAttributeFilter, o as useExecutionsWithStore, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, y as validateDateRange } from "./useExecutions-CyXkJtpk.js";
|
|
5
5
|
import { c as useDurableParityEnabled, f as usePhaseCFlags } from "./feature-flags-DM5myWaD.js";
|
|
6
6
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
7
7
|
import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
|
|
8
8
|
import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
|
|
9
9
|
import { t as TagFilterSelect } from "./TagFilterSelect-DCBOH6Ou.js";
|
|
10
|
-
import { a as useRunStatusCounts, c as runStatusLabels, l as RUN_STATUS_CONFIG, o as ExecutionStatusBadge } from "./useDurableParity-
|
|
10
|
+
import { a as useRunStatusCounts, c as runStatusLabels, l as RUN_STATUS_CONFIG, o as ExecutionStatusBadge } from "./useDurableParity-CJvnfF3T.js";
|
|
11
11
|
import { n as formatRunVersion } from "./run-display-BycKYSU0.js";
|
|
12
|
-
import { in as formatElapsedMs, on as runDurationMs } from "./FluidGridsProvider-
|
|
12
|
+
import { in as formatElapsedMs, on as runDurationMs } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
13
13
|
import { n as runListLinkKey, t as runListFilterFromSearch } from "./run-list-links-ByYC0OlV.js";
|
|
14
|
-
import { h as useWorkflowDefinitions } from "./useWorkflows-
|
|
14
|
+
import { h as useWorkflowDefinitions } from "./useWorkflows-XsfD7JA-.js";
|
|
15
15
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
16
16
|
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
17
17
|
import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-BrCHB5oA.js";
|
|
@@ -15,7 +15,6 @@ import { create } from "zustand";
|
|
|
15
15
|
import { Handle, NodeResizer, Position, getConnectedEdges, useReactFlow, useStore } from "@xyflow/react";
|
|
16
16
|
import { Icon } from "@iconify/react";
|
|
17
17
|
import { nanoid } from "nanoid";
|
|
18
|
-
import ReactMarkdown from "react-markdown";
|
|
19
18
|
import { cn } from "@burdenoff/fe-libs/utils";
|
|
20
19
|
import { nanoid as nanoid$1 } from "nanoid/non-secure";
|
|
21
20
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -66,6 +65,59 @@ function useBuilderReadOnly() {
|
|
|
66
65
|
return useContext(BuilderReadOnlyContext);
|
|
67
66
|
}
|
|
68
67
|
|
|
68
|
+
// src/components/shared/markdownRenderer.ts
|
|
69
|
+
/**
|
|
70
|
+
* The markdown renderer, loaded on first use (BOFF-11944). See LazyMarkdown.
|
|
71
|
+
*/
|
|
72
|
+
let renderer = null;
|
|
73
|
+
let pending = null;
|
|
74
|
+
/**
|
|
75
|
+
* Loads the markdown renderer once for every caller. A failed load is
|
|
76
|
+
* forgotten, so the next caller asks again.
|
|
77
|
+
*/
|
|
78
|
+
function loadMarkdown() {
|
|
79
|
+
pending ??= import("react-markdown").then((m) => {
|
|
80
|
+
renderer = m.default;
|
|
81
|
+
return m.default;
|
|
82
|
+
}, (error) => {
|
|
83
|
+
pending = null;
|
|
84
|
+
throw error;
|
|
85
|
+
});
|
|
86
|
+
return pending;
|
|
87
|
+
}
|
|
88
|
+
/** The markdown renderer once loaded (it starts the load), else null. */
|
|
89
|
+
function useMarkdownRenderer() {
|
|
90
|
+
const [Markdown, setMarkdown] = useState(() => renderer);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
if (Markdown) return void 0;
|
|
93
|
+
let live = true;
|
|
94
|
+
loadMarkdown().then((loaded) => {
|
|
95
|
+
if (live) setMarkdown(() => loaded);
|
|
96
|
+
}, (error) => {
|
|
97
|
+
console.error("[FluidGrids] Markdown renderer failed to load:", error);
|
|
98
|
+
});
|
|
99
|
+
return () => {
|
|
100
|
+
live = false;
|
|
101
|
+
};
|
|
102
|
+
}, [Markdown]);
|
|
103
|
+
return Markdown;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/components/shared/LazyMarkdown.tsx
|
|
107
|
+
/** `children` as markdown once the renderer is in; plain text until then. */
|
|
108
|
+
function LazyMarkdown({ children, components }) {
|
|
109
|
+
const Markdown = useMarkdownRenderer();
|
|
110
|
+
if (!Markdown) return /* @__PURE__ */ jsx("p", {
|
|
111
|
+
className: "whitespace-pre-wrap",
|
|
112
|
+
"data-markdown-pending": "",
|
|
113
|
+
children
|
|
114
|
+
});
|
|
115
|
+
return /* @__PURE__ */ jsx(Markdown, {
|
|
116
|
+
components,
|
|
117
|
+
children
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
69
121
|
// src/builder/components/flow-builder/components/blocks/nodes/sticky-note/sticky-note-node.tsx
|
|
70
122
|
const STICKY_DEFAULT_SIZE = {
|
|
71
123
|
width: 260,
|
|
@@ -265,7 +317,7 @@ function StickyNoteNodeComponent({ id, selected, data }) {
|
|
|
265
317
|
className: "nodrag nowheel h-full w-full resize-none bg-transparent p-3 font-mono text-xs leading-relaxed text-foreground outline-none placeholder:text-muted-foreground/60"
|
|
266
318
|
}) : content.trim() ? /* @__PURE__ */ jsx("div", {
|
|
267
319
|
className: cn("nowheel h-full w-full overflow-auto p-3 text-xs leading-relaxed text-foreground", "[&_h1]:mb-1.5 [&_h1]:text-sm [&_h1]:font-bold", "[&_h2]:mb-1 [&_h2]:text-[13px] [&_h2]:font-bold", "[&_h3]:mb-1 [&_h3]:text-xs [&_h3]:font-semibold", "[&_p]:mb-1.5 [&_ul]:mb-1.5 [&_ul]:list-disc [&_ul]:pl-4", "[&_ol]:mb-1.5 [&_ol]:list-decimal [&_ol]:pl-4 [&_li]:mb-0.5", "[&_a]:underline [&_code]:rounded [&_code]:bg-muted [&_code]:px-1"),
|
|
268
|
-
children: /* @__PURE__ */ jsx(
|
|
320
|
+
children: /* @__PURE__ */ jsx(LazyMarkdown, { children: content })
|
|
269
321
|
}) : /* @__PURE__ */ jsx("div", {
|
|
270
322
|
className: "flex h-full w-full items-center justify-center p-3 text-xs text-muted-foreground/70",
|
|
271
323
|
children: tr("fluidgrids.builder.stickyNote.emptyStateHint", "Double-click to edit")
|
|
@@ -10417,4 +10469,4 @@ function useFluidGridsContext() {
|
|
|
10417
10469
|
return context;
|
|
10418
10470
|
}
|
|
10419
10471
|
|
|
10420
|
-
export { isStringOptionList as $, inAppLeaveTarget as $t, StoreNodeProductsByTypeDocument as A, newConnectionProviderKey as An, useSaveStatusStore as At, useRunGuard as B, shouldReleaseForIdle as Bt, GetMyNodeInstallationsDocument as C, parseRawSignalPayload as Cn, useSaveWorkflow as Ct, InstallWorkflowNodeDocument as D, connectionsForAdapter as Dn, createThenOpen as Dt, InstallPurchasedNodeDocument as E, signalPayloadCard as En, classifyCreateRefusal as Et, getNodeMetadata as F,
|
|
10472
|
+
export { isStringOptionList as $, inAppLeaveTarget as $t, StoreNodeProductsByTypeDocument as A, newConnectionProviderKey as An, useSaveStatusStore as At, useRunGuard as B, shouldReleaseForIdle as Bt, GetMyNodeInstallationsDocument as C, parseRawSignalPayload as Cn, useSaveWorkflow as Ct, InstallWorkflowNodeDocument as D, connectionsForAdapter as Dn, createThenOpen as Dt, InstallPurchasedNodeDocument as E, signalPayloadCard as En, classifyCreateRefusal as Et, getNodeMetadata as F, useMarkdownRenderer as Fn, leaseCallQueue as Ft, nodeSubtitle as G, sessionBeforeReload as Gt, asRecord as H, EDIT_SESSION_ID as Ht, buildOperationSeed as I, BuilderReadOnlyProvider as In, leaseCallSequence as It, paramsFromOperation as J, AUTOSAVE_DEBOUNCE_MS as Jt, nodeTitle as K, rememberOwnStatusChange as Kt, createConfiguredNode as L, useBuilderReadOnly as Ln, phaseAfterAcquire as Lt, UninstallOrganizationPrivateNodeDocument as M, getNodeDetail as Mn, useEditLeaseStore as Mt, UninstallWorkflowNodeDocument as N, buildStickyNode as Nn, bannerOf as Nt, MyWorkflowTemplateSubmissionsDocument as O, isOptionalAdapter as On, refusalOfQuota as Ot, WithdrawWorkflowTemplateSubmissionDocument as P, loadMarkdown as Pn, isLocked as Pt, stripSubmitActions as Q, findSaveConflict as Qt, useInsertNode as R, phaseAfterTakeOver as Rt, CreateStoreOrderDocument as S, durableInterfaceOf as Sn, useFlowValidator as St, InstallOrganizationPrivateNodeDocument as T, runSignalTargets as Tn, builderPathOf as Tt, coerceNumber as U, forgetSessionForReload as Ut, workflowParameterIssues as V, tickAction as Vt, fixedParameterState as W, rememberSessionForReload as Wt, useNodeConfig as X, canAutosave as Xt, selectedOperationOf as Y, AUTOSAVE_RETRY_DELAYS_MS as Yt, resolveUiSpec as Z, codeBuildIdOf as Zt, registryNodeData as _, clearCodeWorkflowDefinitionCache as _n, leavingLosesChanges as _t, NODES_METADATA as a, nodeStateDurationMs as an, casesFromRules as at, BrowseWorkflowNodesDocument as b, canSignalRun as bn, watchLeavingLosesChanges as bt, ensureInstalledNodeTypesLoaded as c, parseParameterValue as cn, latestNodeLog as ct, ensureRegistryNodeTypesLoaded as d, resolveNodeOperation as dn, useGuardedNavigate as dt, resettledBaseline as en, optionListText as et, isNodeConfigsInitialized as f, isParamVisible as fn, useManualSave as ft, registerWorkflowNodeTypes as g, useNodeRegistryRevision as gn, editingLeaseLocked as gt, registerNodeManifests as h, useCanvasEdges as hn, editStateFor as ht, AVAILABLE_NODES as i, formatElapsedMs as in, SwitchRulesEditor as it, SubmitWorkflowTemplateDocument as j, replaceAdapterConnections as jn, useEditLeaseLocked as jt, OrganizationPrivateNodesDocument as k, matchesAdapterProvider as kn, saveIndicatorOf as kt, ensureNodeConfigsLoaded as l, structuredParameterType as ln, boundFieldsOf as lt, refetchStoreNodes as m, openRunQuotaUpgradePrompt as mn, departingSave as mt, FluidGridsProvider as n, workflowFingerprint as nn, resolveLoadOptionsSpec as nt, NODE_CONFIGS as o, runDurationMs as on, FieldTree as ot, onNodeTypesUpdate as p, useFluidGridsAnalytics as pn, autosaveAllowedFor as pt, optionText as q, rememberRevision as qt, useFluidGridsContext as r, useNodeExecution as rn, ConditionTreeBuilder as rt, NODE_TYPES as s, formatParameterValue as sn, parseMappingValue as st, FluidGridsContext as t, saveFailureActionOf as tn, optionListValues as tt, ensureNodeTypesLoaded as u, fieldsFromValue as un, missingRequiredParameters as ut, scheduleNodePaletteLoad as v, loadDefinitionJson as vn, savedEverythingBeforeLeaving as vt, GetNodeInstallableVersionsDocument as w, payloadFromCardValues as wn, blankWorkflowCreateInput as wt, BrowseWorkflowTemplatesDocument as x, declaredSignals as xn, isFlowComplete as xt, global_operations_exports as y, useCodeWorkflowInterface as yn, touchesSavedFields as yt, MissingParametersDialog as z, releasesOnClose as zt };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-
|
|
3
|
+
import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-XsfD7JA-.js";
|
|
4
4
|
import { i as versionsOfWorkflow, t as VersionDiffDialog } from "./VersionDiffDialog-DSN0mU0f.js";
|
|
5
5
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
6
|
import { x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
|
-
import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-
|
|
4
|
+
import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-QZjFuXnI.js";
|
|
5
5
|
import { a as getTopFailingWorkflows, i as getTopFailingNodes, n as formatDuration, o as percentage, r as getFailureBreakdown } from "./utils-uaL5UVxb.js";
|
|
6
6
|
import { n as FailureTriagePanel } from "./FailureTriagePanel-B9hDQymi.js";
|
|
7
7
|
import { o as useContinuousOptimisationEnabled } from "./feature-flags-DM5myWaD.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { a as DialogFooter, i as DialogDescription, l as DialogTitle, o as DialogHeader, r as DialogContent, t as Dialog } from "./dialog-Cjb4lB4D.js";
|
|
3
3
|
import { t as Button } from "./button-DG7y_FVJ.js";
|
|
4
|
-
import { r as Badge } from "./TemplateCard-
|
|
4
|
+
import { r as Badge } from "./TemplateCard-BuP6_QX8.js";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { AlertTriangle, CheckCircle2, Download, ExternalLink, Loader2, Puzzle, ShoppingCart } from "lucide-react";
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
3
|
-
import { pn as useFluidGridsAnalytics } from "./FluidGridsProvider-
|
|
3
|
+
import { pn as useFluidGridsAnalytics } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
4
4
|
import { c as emitWorkflowLimitHit, h as WORKFLOWS_QUOTA_NAME, o as emitUpgradeClicked } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
5
5
|
import { useEffect, useRef } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -11,8 +11,8 @@ import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRul
|
|
|
11
11
|
import { i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
|
|
12
12
|
import { KF as WorkflowSearchAttributeType } from "./graphql-types-CDKVWH2R.js";
|
|
13
13
|
import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
|
|
14
|
-
import { At as useSaveStatusStore, Qt as findSaveConflict } from "./FluidGridsProvider-
|
|
15
|
-
import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-
|
|
14
|
+
import { At as useSaveStatusStore, Qt as findSaveConflict } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
15
|
+
import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-QZjFuXnI.js";
|
|
16
16
|
import { n as useConnections } from "./useConnections-Cs7LCWEM.js";
|
|
17
17
|
import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-B0dam3_o.js";
|
|
18
18
|
import { a as formToInput$2, i as emptyAgentForm, n as agentToForm, o as grantDays, r as describeRule, t as AgentFormError } from "./agent-form-Bfvm32j1.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { _ as throwIfResultError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
3
3
|
import { i as getGlobalStoreClient } from "./node-registry-refresh-Dy0uRg9f.js";
|
|
4
|
-
import { A as StoreNodeProductsByTypeDocument, C as GetMyNodeInstallationsDocument, D as InstallWorkflowNodeDocument, c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, pn as useFluidGridsAnalytics, t as FluidGridsContext, x as BrowseWorkflowTemplatesDocument } from "./FluidGridsProvider-
|
|
4
|
+
import { A as StoreNodeProductsByTypeDocument, C as GetMyNodeInstallationsDocument, D as InstallWorkflowNodeDocument, c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, pn as useFluidGridsAnalytics, t as FluidGridsContext, x as BrowseWorkflowTemplatesDocument } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
5
5
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
6
|
import { a as emitTemplateUsed, s as emitWorkflowCreated, t as emitNodeInstalled, y as isQuotaExhaustedFailure } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
7
7
|
import { t as cn } from "./cn-QqidFIgr.js";
|
|
@@ -1052,8 +1052,34 @@ function buildNodeCheck(requiredNodeTypes, installedAppIds) {
|
|
|
1052
1052
|
};
|
|
1053
1053
|
}
|
|
1054
1054
|
|
|
1055
|
+
// src/utils/dismiss-toast.ts
|
|
1056
|
+
/** Resolves on the next zero-delay timer. */
|
|
1057
|
+
function nextTimer() {
|
|
1058
|
+
return new Promise((resolve) => setTimeout(resolve, 0));
|
|
1059
|
+
}
|
|
1060
|
+
/**
|
|
1061
|
+
* Dismiss a toast that may have been created a moment ago.
|
|
1062
|
+
*
|
|
1063
|
+
* sonner adds a toast to the screen on a zero-delay timer, but delivers a
|
|
1064
|
+
* dismissal on animation frames. A dismissal sent while the add is still
|
|
1065
|
+
* queued (the work finished fast, or the main thread was busy rendering) is
|
|
1066
|
+
* applied first, finds nothing to remove, and the toast then appears and
|
|
1067
|
+
* stays: "Loading template..." stuck on the template preview page
|
|
1068
|
+
* (BOFF-11153). Timers of equal delay fire in the order they were set, so
|
|
1069
|
+
* waiting one zero-delay timer runs after the queued add, and the dismissal
|
|
1070
|
+
* then lands on the toast.
|
|
1071
|
+
*
|
|
1072
|
+
* Where a toast is followed by another message, replace it through the same
|
|
1073
|
+
* `id` instead (`toast.success(…, { id })`); that goes through the same
|
|
1074
|
+
* queue as the add and needs no dismissal.
|
|
1075
|
+
*/
|
|
1076
|
+
async function dismissToastWhenShown(id) {
|
|
1077
|
+
await nextTimer();
|
|
1078
|
+
toast.dismiss(id);
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1055
1081
|
// src/hooks/store/useTemplateImportFlow.tsx
|
|
1056
|
-
const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal
|
|
1082
|
+
const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal--YswnkOD.js").then((m) => ({ default: m.TemplateConfigurationModal })));
|
|
1057
1083
|
/**
|
|
1058
1084
|
* "Use this template", the same everywhere it is offered: the builder's
|
|
1059
1085
|
* template panel, the Templates page and the template preview page
|
|
@@ -1109,9 +1135,11 @@ function useTemplateImportFlow({ onImported, onQuotaExhausted }) {
|
|
|
1109
1135
|
name: overrides?.name,
|
|
1110
1136
|
templateInputs: overrides?.templateInputs
|
|
1111
1137
|
});
|
|
1112
|
-
toast.dismiss("template-import");
|
|
1113
1138
|
if (result.success && result.workflow) {
|
|
1114
|
-
toast.success(tr("fluidgrids.builder.desktopSidebar.workflowCreatedToast", "Workflow created from template!"), {
|
|
1139
|
+
toast.success(tr("fluidgrids.builder.desktopSidebar.workflowCreatedToast", "Workflow created from template!"), {
|
|
1140
|
+
id: "template-import",
|
|
1141
|
+
description: `"${result.workflow.name}" is ready to edit`
|
|
1142
|
+
});
|
|
1115
1143
|
if ((content.requiredCredentialTypes?.length ?? 0) > 0) toast.info(tr("fluidgrids.builder.desktopSidebar.credentialsNeededToast", "Credentials needed"), {
|
|
1116
1144
|
description: `Configure ${content.requiredCredentialTypes?.join(", ")} in the Credentials page`,
|
|
1117
1145
|
duration: 6e3
|
|
@@ -1120,14 +1148,20 @@ function useTemplateImportFlow({ onImported, onQuotaExhausted }) {
|
|
|
1120
1148
|
return true;
|
|
1121
1149
|
}
|
|
1122
1150
|
if (onQuotaExhausted && isQuotaExhaustedFailure(result.error?.cause ?? result.error)) {
|
|
1151
|
+
dismissToastWhenShown("template-import");
|
|
1123
1152
|
onQuotaExhausted();
|
|
1124
1153
|
return false;
|
|
1125
1154
|
}
|
|
1126
|
-
toast.error(tr("fluidgrids.builder.desktopSidebar.importTemplateErrorToast", "Failed to import template"), {
|
|
1155
|
+
toast.error(tr("fluidgrids.builder.desktopSidebar.importTemplateErrorToast", "Failed to import template"), {
|
|
1156
|
+
id: "template-import",
|
|
1157
|
+
description: result.message || tr("fluidgrids.builder.desktopSidebar.importTemplateErrorFallback", "Unknown error during import")
|
|
1158
|
+
});
|
|
1127
1159
|
return false;
|
|
1128
1160
|
} catch (err) {
|
|
1129
|
-
toast.
|
|
1130
|
-
|
|
1161
|
+
toast.error(tr("fluidgrids.builder.desktopSidebar.importFailedToast", "Import failed"), {
|
|
1162
|
+
id: "template-import",
|
|
1163
|
+
description: err instanceof Error ? err.message : tr("fluidgrids.builder.desktopSidebar.importFailedFallback", "Unknown error")
|
|
1164
|
+
});
|
|
1131
1165
|
return false;
|
|
1132
1166
|
} finally {
|
|
1133
1167
|
setInstallProgress(null);
|
|
@@ -1145,16 +1179,16 @@ function useTemplateImportFlow({ onImported, onQuotaExhausted }) {
|
|
|
1145
1179
|
toast.loading(tr("fluidgrids.builder.desktopSidebar.loadingTemplateToast", "Loading template..."), { id: "template-load" });
|
|
1146
1180
|
try {
|
|
1147
1181
|
const full = await getTemplateDetail(template.id);
|
|
1148
|
-
toast.dismiss("template-load");
|
|
1149
1182
|
if (!full) {
|
|
1150
|
-
toast.error(tr("fluidgrids.builder.desktopSidebar.templateDetailsErrorToast", "Failed to load template details"));
|
|
1183
|
+
toast.error(tr("fluidgrids.builder.desktopSidebar.templateDetailsErrorToast", "Failed to load template details"), { id: "template-load" });
|
|
1151
1184
|
return;
|
|
1152
1185
|
}
|
|
1153
1186
|
const content = await resolveTemplateContent(full, buildRequiredNodeTypes);
|
|
1154
1187
|
if (!content) {
|
|
1155
|
-
toast.error(tr("fluidgrids.builder.desktopSidebar.invalidTemplateDataToast", "Template does not contain valid workflow data"));
|
|
1188
|
+
toast.error(tr("fluidgrids.builder.desktopSidebar.invalidTemplateDataToast", "Template does not contain valid workflow data"), { id: "template-load" });
|
|
1156
1189
|
return;
|
|
1157
1190
|
}
|
|
1191
|
+
await dismissToastWhenShown("template-load");
|
|
1158
1192
|
const nodeCheck = buildNodeCheck(content.requiredNodeTypes ?? [], installedAppIds);
|
|
1159
1193
|
if (needsTemplateConfiguration(content, nodeCheck)) {
|
|
1160
1194
|
setPending({
|
|
@@ -1166,8 +1200,10 @@ function useTemplateImportFlow({ onImported, onQuotaExhausted }) {
|
|
|
1166
1200
|
}
|
|
1167
1201
|
await createCopy(full, content, nodeCheck);
|
|
1168
1202
|
} catch (err) {
|
|
1169
|
-
toast.
|
|
1170
|
-
|
|
1203
|
+
toast.error(tr("fluidgrids.builder.desktopSidebar.genericErrorToast", "Something went wrong"), {
|
|
1204
|
+
id: "template-load",
|
|
1205
|
+
description: err instanceof Error ? err.message : tr("fluidgrids.builder.desktopSidebar.genericErrorFallback", "Failed to process template")
|
|
1206
|
+
});
|
|
1171
1207
|
} finally {
|
|
1172
1208
|
setBusy(false);
|
|
1173
1209
|
}
|
package/dist/{TemplateConfigurationModal-BhGWIzpm.js → TemplateConfigurationModal--YswnkOD.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { a as DialogFooter, d as Input, i as DialogDescription, l as DialogTitle, o as DialogHeader, r as DialogContent, t as Dialog } from "./dialog-Cjb4lB4D.js";
|
|
3
3
|
import { t as Button } from "./button-DG7y_FVJ.js";
|
|
4
|
-
import { r as Badge } from "./TemplateCard-
|
|
4
|
+
import { r as Badge } from "./TemplateCard-BuP6_QX8.js";
|
|
5
5
|
import { t as Label } from "./label-CDy86rIZ.js";
|
|
6
6
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
7
7
|
import { useEffect, useMemo, useState } from "react";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as Button } from "./button-DG7y_FVJ.js";
|
|
3
|
-
import { n as templatePreview, r as Badge } from "./TemplateCard-
|
|
3
|
+
import { n as templatePreview, r as Badge } from "./TemplateCard-BuP6_QX8.js";
|
|
4
4
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
5
5
|
import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
6
6
|
import { Icon } from "@iconify/react";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
|
|
4
|
-
import { t as FlowBuilderPage } from "./flow-builder-
|
|
5
|
-
import { a as useTemplateImportFlow, l as useImportWorkflowTemplate } from "./TemplateCard-
|
|
6
|
-
import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-
|
|
4
|
+
import { t as FlowBuilderPage } from "./flow-builder-KbM4vIW8.js";
|
|
5
|
+
import { a as useTemplateImportFlow, l as useImportWorkflowTemplate } from "./TemplateCard-BuP6_QX8.js";
|
|
6
|
+
import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-DYCpMOyQ.js";
|
|
7
7
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
8
8
|
import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
9
9
|
import { f as BILLING_PLANS_PATH } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-
|
|
4
|
-
import { a as useTemplateImportFlow, t as TemplateCard, u as useWorkflowTemplates, y as useGlobalStoreClient } from "./TemplateCard-
|
|
3
|
+
import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-XsfD7JA-.js";
|
|
4
|
+
import { a as useTemplateImportFlow, t as TemplateCard, u as useWorkflowTemplates, y as useGlobalStoreClient } from "./TemplateCard-BuP6_QX8.js";
|
|
5
5
|
import { YF as WorkflowStatus } from "./graphql-types-CDKVWH2R.js";
|
|
6
6
|
import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
7
|
-
import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-
|
|
7
|
+
import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-DYCpMOyQ.js";
|
|
8
8
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
9
|
-
import { O as MyWorkflowTemplateSubmissionsDocument, P as WithdrawWorkflowTemplateSubmissionDocument, j as SubmitWorkflowTemplateDocument, pn as useFluidGridsAnalytics } from "./FluidGridsProvider-
|
|
9
|
+
import { O as MyWorkflowTemplateSubmissionsDocument, P as WithdrawWorkflowTemplateSubmissionDocument, j as SubmitWorkflowTemplateDocument, pn as useFluidGridsAnalytics } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
10
10
|
import { a as emitTemplateUsed, f as BILLING_PLANS_PATH, y as isQuotaExhaustedFailure } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
11
11
|
import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
|
|
12
12
|
import { r as templatesControls } from "./pageControlSpecs-DZJ9K37m.js";
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import {
|
|
3
|
+
import { h as useWorkflowReloadStore, m as releaseLeaseKeptForReload, t as FlowBuilderPage } from "./flow-builder-KbM4vIW8.js";
|
|
4
4
|
import { n as registerLiveCanvasHandler } from "./liveCanvas-D5ytXDp8.js";
|
|
5
5
|
import { _ as throwIfResultError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
6
6
|
import { Er as WorkflowDefinitionDocument } from "./graphql-operation-types-kX-MMjgW.js";
|
|
7
7
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
8
|
-
import { At as useSaveStatusStore, Et as classifyCreateRefusal, J as paramsFromOperation, L as createConfiguredNode, Zt as codeBuildIdOf, dn as resolveNodeOperation, g as registerWorkflowNodeTypes, h as registerNodeManifests, m as refetchStoreNodes, nn as workflowFingerprint, o as NODE_CONFIGS, qt as rememberRevision, u as ensureNodeTypesLoaded, wt as blankWorkflowCreateInput } from "./FluidGridsProvider-
|
|
8
|
+
import { At as useSaveStatusStore, Et as classifyCreateRefusal, J as paramsFromOperation, L as createConfiguredNode, Zt as codeBuildIdOf, dn as resolveNodeOperation, g as registerWorkflowNodeTypes, h as registerNodeManifests, m as refetchStoreNodes, nn as workflowFingerprint, o as NODE_CONFIGS, qt as rememberRevision, u as ensureNodeTypesLoaded, wt as blankWorkflowCreateInput } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
9
9
|
import { F as mergeStickyNotes, H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
|
|
10
10
|
import { t as canvasFromDefinition } from "./definition-canvas--3MPHoP-.js";
|
|
11
|
-
import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-
|
|
12
|
-
import { c as getWorkflowNodeTypes, o as buildNodeCheck, s as buildRequiredNodeTypes, v as useInstalledNodes } from "./TemplateCard-
|
|
11
|
+
import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-XsfD7JA-.js";
|
|
12
|
+
import { c as getWorkflowNodeTypes, o as buildNodeCheck, s as buildRequiredNodeTypes, v as useInstalledNodes } from "./TemplateCard-BuP6_QX8.js";
|
|
13
13
|
import { c as withoutGuidedTourIntent, l as decideMissingWorkflow, o as isGuidedTourIntent, s as pickGuidedTour, u as isCreateIntent } from "./firstWorkflow-C_h0KMB2.js";
|
|
14
14
|
import { f as BILLING_PLANS_PATH } from "./fluidgridsEvents-CNdcrUNN.js";
|
|
15
|
-
import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-
|
|
15
|
+
import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-BNGq3BJ9.js";
|
|
16
16
|
import { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
17
17
|
import { useLocation, useNavigate, useParams } from "react-router";
|
|
18
18
|
import { Icon } from "@iconify/react";
|
|
@@ -1088,7 +1088,7 @@ function GuidedTourStarter({ ready }) {
|
|
|
1088
1088
|
}
|
|
1089
1089
|
|
|
1090
1090
|
// src/builder/app/workflow/work/page.tsx
|
|
1091
|
-
const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-
|
|
1091
|
+
const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-Dm1m3Ysp.js").then((m) => ({ default: m.MissingNodesInstallModal })));
|
|
1092
1092
|
function WorkflowItem({ readonly = false }) {
|
|
1093
1093
|
if (readonly) {
|
|
1094
1094
|
const queryParams = new URLSearchParams(window.location.search);
|
|
@@ -1160,7 +1160,7 @@ function WorkflowItem({ readonly = false }) {
|
|
|
1160
1160
|
setInstallErrors([]);
|
|
1161
1161
|
try {
|
|
1162
1162
|
const { getGlobalStoreClient } = await import("./node-registry-refresh-Dy0uRg9f.js").then((n) => n.a);
|
|
1163
|
-
const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-
|
|
1163
|
+
const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-CRGXDZX1.js").then((n) => n.y);
|
|
1164
1164
|
const { getFluidGridsConfig } = await import("./client-C9XSzSXr.js").then((n) => n.b);
|
|
1165
1165
|
const storeClient = getGlobalStoreClient();
|
|
1166
1166
|
const cfg = getFluidGridsConfig();
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { hn as useCanvasEdges, n as FluidGridsProvider } from "./FluidGridsProvider-
|
|
2
|
+
import { hn as useCanvasEdges, n as FluidGridsProvider } from "./FluidGridsProvider-CRGXDZX1.js";
|
|
3
3
|
import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
|
|
4
4
|
import { t as Button } from "./button-DG7y_FVJ.js";
|
|
5
5
|
import { d as Input } from "./dialog-Cjb4lB4D.js";
|
|
6
|
-
import { b as Card } from "./TemplateCard-
|
|
6
|
+
import { b as Card } from "./TemplateCard-BuP6_QX8.js";
|
|
7
7
|
import { t as cn } from "./cn-QqidFIgr.js";
|
|
8
8
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
9
|
-
import {
|
|
9
|
+
import { b as useNodeSelectedEvent, x as FluidGridsMark } from "./flow-builder-KbM4vIW8.js";
|
|
10
10
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
11
11
|
import { Background, Controls, Handle, MarkerType, MiniMap, Position, ReactFlow, ReactFlowProvider, useReactFlow } from "@xyflow/react";
|
|
12
12
|
import { Fragment, 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 { m as useWorkflowDefinition } from "./useWorkflows-
|
|
3
|
+
import { m as useWorkflowDefinition } from "./useWorkflows-XsfD7JA-.js";
|
|
4
4
|
import { Navigate, useParams } from "react-router";
|
|
5
5
|
import { Icon } from "@iconify/react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|