@burdenoff/fluidgrids-fe-sdk 2026.701.4 → 2026.701.6
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/{TemplateConfigurationModal-VU3Q4RFX.js → TemplateConfigurationModal-ZMCT3ZCH.js} +2 -2
- package/dist/TemplateConfigurationModal-ZMCT3ZCH.js.map +1 -0
- package/dist/{WorkflowBuilder-KV6VFVII.js → WorkflowBuilder-NEXLEPY4.js} +3 -3
- package/dist/{WorkflowBuilder-KV6VFVII.js.map → WorkflowBuilder-NEXLEPY4.js.map} +1 -1
- package/dist/{chunk-QBI22GDG.js → chunk-CEK43QSX.js} +121 -176
- package/dist/chunk-CEK43QSX.js.map +1 -0
- package/dist/index.js +3 -3
- package/package.json +1 -1
- package/dist/TemplateConfigurationModal-VU3Q4RFX.js.map +0 -1
- package/dist/chunk-QBI22GDG.js.map +0 -1
package/dist/{TemplateConfigurationModal-VU3Q4RFX.js → TemplateConfigurationModal-ZMCT3ZCH.js}
RENAMED
|
@@ -303,5 +303,5 @@ function TemplateInputField({
|
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
export { TemplateConfigurationModal };
|
|
306
|
-
//# sourceMappingURL=TemplateConfigurationModal-
|
|
307
|
-
//# sourceMappingURL=TemplateConfigurationModal-
|
|
306
|
+
//# sourceMappingURL=TemplateConfigurationModal-ZMCT3ZCH.js.map
|
|
307
|
+
//# sourceMappingURL=TemplateConfigurationModal-ZMCT3ZCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/builder/components/flow-builder/components/templates/TemplateConfigurationModal.tsx"],"names":[],"mappings":"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","file":"TemplateConfigurationModal-ZMCT3ZCH.js","sourcesContent":["import { useState, useMemo } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from \"../../../../../ui/dialog\";\nimport { Input } from \"../../../../../ui/input\";\nimport { Button } from \"../../../../../ui/button\";\nimport { Badge } from \"../../../../../ui/badge\";\nimport { Label } from \"../../../../../ui/label\";\nimport type { StoreProduct } from \"../../../../../generated/global-types\";\nimport type {\n WorkflowTemplateContent,\n TemplateNodeCheckResult,\n TemplateRequiredInput,\n} from \"../../../../../types/workflow-template-content\";\nimport {\n Loader2,\n CheckCircle2,\n Download,\n ShoppingCart,\n KeyRound,\n Sparkles,\n AlertTriangle,\n ExternalLink,\n} from \"lucide-react\";\n\nexport interface TemplateConfigurationModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n template: StoreProduct | null;\n content: WorkflowTemplateContent | null;\n nodeCheckResult: TemplateNodeCheckResult | null;\n onConfirm: (config: {\n name: string;\n templateInputs: Record<string, string | number>;\n }) => void;\n importing?: boolean;\n installProgress?: {\n current: number;\n total: number;\n nodeName: string;\n } | null;\n}\n\nexport function TemplateConfigurationModal({\n open,\n onOpenChange,\n template,\n content,\n nodeCheckResult,\n onConfirm,\n importing = false,\n installProgress,\n}: TemplateConfigurationModalProps) {\n const [workflowName, setWorkflowName] = useState(\n content?.defaultWorkflowName || template?.name || \"\",\n );\n const [inputValues, setInputValues] = useState<Record<string, string>>({});\n\n useMemo(() => {\n if (template) {\n setWorkflowName(content?.defaultWorkflowName || template.name || \"\");\n const defaults: Record<string, string> = {};\n if (content?.requiredInputs) {\n for (const input of content.requiredInputs) {\n if (input.defaultValue) {\n defaults[input.name] = input.defaultValue;\n }\n }\n }\n setInputValues(defaults);\n }\n }, [template?.id]);\n\n const requiredInputs = content?.requiredInputs || [];\n const hasRequiredInputs = requiredInputs.length > 0;\n const hasMissingFreeNodes = (nodeCheckResult?.missing.length ?? 0) > 0;\n const hasRequiredCredentials =\n (content?.requiredCredentialTypes?.length ?? 0) > 0;\n const hasPaidBlockers = (nodeCheckResult?.missingPaid.length ?? 0) > 0;\n\n const isValid = useMemo(() => {\n if (!workflowName.trim()) return false;\n for (const input of requiredInputs) {\n if (input.required && !inputValues[input.name]?.trim()) {\n return false;\n }\n }\n return true;\n }, [workflowName, inputValues, requiredInputs]);\n\n const handleInputChange = (name: string, value: string) => {\n setInputValues((prev) => ({ ...prev, [name]: value }));\n };\n\n const handleConfirm = () => {\n onConfirm({\n name: workflowName.trim(),\n templateInputs: inputValues,\n });\n };\n\n if (!template || !content) return null;\n\n const isInstalling = importing && !!installProgress;\n const isCreating = importing && !installProgress;\n\n const buttonLabel = hasPaidBlockers\n ? \"Purchase Required Nodes First\"\n : isInstalling\n ? `Installing nodes (${installProgress.current}/${installProgress.total})...`\n : isCreating\n ? \"Creating workflow...\"\n : hasMissingFreeNodes\n ? \"Install & Open in Builder\"\n : \"Import & Open in Builder\";\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n size=\"lg\"\n className=\"!flex !flex-col !max-h-[85vh] overflow-hidden p-0 gap-0\"\n >\n <DialogHeader className=\"px-6 pt-6 pb-4 border-b shrink-0\">\n <div className=\"flex items-center gap-2\">\n <Sparkles className=\"size-5 text-primary\" />\n <DialogTitle className=\"text-xl\">\n Import \"{template.name}\"\n </DialogTitle>\n </div>\n <DialogDescription>\n Configure and import this workflow template into your workspace\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"flex-1 overflow-y-auto px-6 py-5 space-y-6\">\n {/* Workflow Name */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"workflow-name\" className=\"text-sm font-medium\">\n Workflow Name\n </Label>\n <Input\n id=\"workflow-name\"\n value={workflowName}\n onChange={(e) => setWorkflowName(e.target.value)}\n placeholder=\"Enter workflow name\"\n />\n </div>\n\n {/* Required Configuration Inputs */}\n {hasRequiredInputs && (\n <div className=\"space-y-3\">\n <h4 className=\"text-sm font-semibold text-foreground flex items-center gap-2\">\n <KeyRound className=\"size-4\" />\n Required Configuration\n </h4>\n <div className=\"space-y-3\">\n {requiredInputs.map((input) => (\n <TemplateInputField\n key={input.name}\n input={input}\n value={inputValues[input.name] || \"\"}\n onChange={(value) => handleInputChange(input.name, value)}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Node Dependencies */}\n {nodeCheckResult && (\n <div className=\"space-y-3\">\n <h4 className=\"text-sm font-semibold text-foreground flex items-center gap-2\">\n <Download className=\"size-4\" />\n Node Dependencies\n </h4>\n <div className=\"space-y-2\">\n {nodeCheckResult.installed.map((node) => (\n <div\n key={node.nodeType}\n className=\"flex items-center gap-2 text-sm\"\n >\n <CheckCircle2 className=\"size-4 text-green-500 shrink-0\" />\n <span>\n {node.displayName || node.nodeType} v{node.nodeVersion}\n </span>\n <Badge variant=\"secondary\" className=\"text-xs ml-auto\">\n Installed\n </Badge>\n </div>\n ))}\n\n {nodeCheckResult.missing.map((node) => (\n <div\n key={node.nodeType}\n className=\"flex items-center gap-2 text-sm\"\n >\n <Download className=\"size-4 text-blue-500 shrink-0\" />\n <span>\n {node.displayName || node.nodeType} v{node.nodeVersion}\n </span>\n <Badge\n variant=\"outline\"\n className=\"text-xs ml-auto border-blue-500/30 text-blue-500\"\n >\n Will install\n </Badge>\n </div>\n ))}\n\n {nodeCheckResult.missingPaid.map((node) => (\n <div\n key={node.nodeType}\n className=\"flex items-center gap-2 text-sm\"\n >\n <ShoppingCart className=\"size-4 text-amber-500 shrink-0\" />\n <span>\n {node.displayName || node.nodeType} v{node.nodeVersion}\n </span>\n <Badge\n variant=\"outline\"\n className=\"text-xs ml-auto border-amber-500/30 text-amber-500\"\n >\n Purchase required\n </Badge>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Required Credentials */}\n {hasRequiredCredentials && (\n <div className=\"space-y-3\">\n <h4 className=\"text-sm font-semibold text-foreground flex items-center gap-2\">\n <KeyRound className=\"size-4\" />\n Credentials Needed\n </h4>\n <p className=\"text-xs text-muted-foreground\">\n You'll need to configure these credentials after importing:\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {content.requiredCredentialTypes?.map((cred) => (\n <Badge key={cred} variant=\"outline\" className=\"text-xs\">\n <KeyRound className=\"size-3 mr-1\" />\n {cred}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n {/* Info Banner */}\n <div className=\"rounded-lg bg-muted/50 p-3 text-sm text-muted-foreground\">\n <p>\n The workflow will be created as a <strong>DRAFT</strong>. You can\n review and edit it in the builder before activating.\n </p>\n </div>\n\n {/* Paid Node Blocker Warning */}\n {hasPaidBlockers && (\n <div className=\"rounded-lg bg-amber-500/10 border border-amber-500/30 p-3 text-sm text-amber-700 dark:text-amber-400 flex items-start gap-2\">\n <AlertTriangle className=\"size-4 mt-0.5 shrink-0\" />\n <div>\n <p className=\"font-medium\">\n Purchase required before importing\n </p>\n <p className=\"mt-1 text-xs\">\n The nodes marked \"Purchase required\" must be purchased from\n the store before this template can be imported.\n </p>\n <Button\n variant=\"link\"\n size=\"sm\"\n className=\"mt-1 h-auto p-0 text-xs text-amber-700 dark:text-amber-400 underline\"\n onClick={() => window.open(\"/store\", \"_blank\")}\n >\n <ExternalLink className=\"size-3 mr-1\" />\n Go to Store\n </Button>\n </div>\n </div>\n )}\n </div>\n\n <DialogFooter className=\"px-6 py-4 border-t shrink-0 flex-col gap-2\">\n {/* Install progress bar */}\n {installProgress && (\n <div className=\"w-full space-y-1.5\">\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1.5\">\n <Loader2 className=\"size-3 animate-spin\" />\n Installing: {installProgress.nodeName}\n </span>\n <span>\n {installProgress.current} / {installProgress.total}\n </span>\n </div>\n <div className=\"h-1.5 w-full rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full bg-primary transition-all duration-300\"\n style={{\n width: `${(installProgress.current / installProgress.total) * 100}%`,\n }}\n />\n </div>\n </div>\n )}\n\n <div className=\"flex w-full justify-end gap-2\">\n <Button\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={importing}\n >\n Cancel\n </Button>\n <Button\n onClick={handleConfirm}\n disabled={!isValid || importing || hasPaidBlockers}\n >\n {importing ? (\n <>\n <Loader2 className=\"size-4 mr-2 animate-spin\" />\n {buttonLabel}\n </>\n ) : (\n <>\n <Sparkles className=\"size-4 mr-2\" />\n {buttonLabel}\n </>\n )}\n </Button>\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n// ============================================================================\n// Sub-component: Template Input Field\n// ============================================================================\n\nfunction TemplateInputField({\n input,\n value,\n onChange,\n}: {\n input: TemplateRequiredInput;\n value: string;\n onChange: (value: string) => void;\n}) {\n return (\n <div className=\"space-y-1.5\">\n <Label htmlFor={`template-input-${input.name}`} className=\"text-sm\">\n {input.label}\n {input.required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n {input.type === \"select\" && input.options ? (\n <select\n id={`template-input-${input.name}`}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <option value=\"\">Select...</option>\n {input.options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n ) : (\n <Input\n id={`template-input-${input.name}`}\n type={\n input.type === \"secret\"\n ? \"password\"\n : input.type === \"number\"\n ? \"number\"\n : \"text\"\n }\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={input.placeholder}\n />\n )}\n {input.helpText && (\n <p className=\"text-xs text-muted-foreground\">{input.helpText}</p>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { WorkflowBuilder } from './chunk-
|
|
1
|
+
export { WorkflowBuilder } from './chunk-CEK43QSX.js';
|
|
2
2
|
import './chunk-7VEOUEIN.js';
|
|
3
3
|
import './chunk-BQXHJIER.js';
|
|
4
4
|
import './chunk-KU64CCSV.js';
|
|
@@ -9,5 +9,5 @@ import './chunk-WWU2O2SR.js';
|
|
|
9
9
|
import './chunk-LUGJJ7LL.js';
|
|
10
10
|
import './chunk-XQP33UJR.js';
|
|
11
11
|
import './chunk-Z54K22LP.js';
|
|
12
|
-
//# sourceMappingURL=WorkflowBuilder-
|
|
13
|
-
//# sourceMappingURL=WorkflowBuilder-
|
|
12
|
+
//# sourceMappingURL=WorkflowBuilder-NEXLEPY4.js.map
|
|
13
|
+
//# sourceMappingURL=WorkflowBuilder-NEXLEPY4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-NEXLEPY4.js"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, DialogFooter, Input as Input$1 } from './chunk-7VEOUEIN.js';
|
|
2
|
-
import {
|
|
2
|
+
import { getGlobalStoreClient, createGlobalStoreClient } from './chunk-BQXHJIER.js';
|
|
3
3
|
import { useFlowStore } from './chunk-KU64CCSV.js';
|
|
4
4
|
import { useLazyWorkflowDefinition, useCreateWorkflow, useWorkflowVersions, useRestoreWorkflowVersion, useActivateWorkflow, useDeactivateWorkflow } from './chunk-4FFPGQD3.js';
|
|
5
5
|
import { NodeEndpointConfigsDocument, NodeManifestDocument, TriggerWorkflowDocument, WorkflowRunDocument, NodeSchemaIntrospectionDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-FGYVIXQ7.js';
|
|
6
6
|
import { waitForFluidGridsClient, getFluidGridsClient, createFluidGridsClient, setFluidGridsClient, resetFluidGridsClient } from './chunk-5BDQNSP3.js';
|
|
7
7
|
import { config, getFluidGridsConfig, validateTrustedOrigin, setFluidGridsConfig, resetFluidGridsConfig } from './chunk-WWU2O2SR.js';
|
|
8
|
-
import { BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument,
|
|
8
|
+
import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument } from './chunk-LUGJJ7LL.js';
|
|
9
9
|
import { deepClone, applyTemplateInputs } from './chunk-XQP33UJR.js';
|
|
10
10
|
import { cn as cn$1, Badge as Badge$1, Button as Button$1 } from './chunk-Z54K22LP.js';
|
|
11
11
|
import { ThemeProvider as ThemeProvider$1 } from '@burdenoff/fe-libs/shared/providers/shell';
|
|
@@ -28,7 +28,7 @@ import { toast } from 'sonner';
|
|
|
28
28
|
import { InfoCircledIcon } from '@radix-ui/react-icons';
|
|
29
29
|
import { isEmpty } from 'radash';
|
|
30
30
|
import { ApolloProvider, useQuery, useMutation } from '@apollo/client/react';
|
|
31
|
-
import
|
|
31
|
+
import 'jszip';
|
|
32
32
|
import { gql as gql$1 } from '@apollo/client/core';
|
|
33
33
|
import { Sparkles, Star, Download, Eye, History, Loader2, RotateCcw, Maximize2, LayoutGrid, Plus, Trash2, GitBranch, AlertCircle, Search, RefreshCw, CheckCircle2, Package, Info, Copy, BadgeCheck, DollarSign, PlusCircle, ChevronDown, Type, Code, Hash, List, Braces, Workflow, ChevronRight, Layers, X, AlertTriangle } from 'lucide-react';
|
|
34
34
|
import { animate, easeOut } from 'popmotion';
|
|
@@ -8789,13 +8789,77 @@ async function fetchNodeManifest(nodeType, nodeVersion) {
|
|
|
8789
8789
|
return null;
|
|
8790
8790
|
}
|
|
8791
8791
|
}
|
|
8792
|
+
function pushStoreNodeConfig(manifest, publishType = "STORE") {
|
|
8793
|
+
if (NODE_CONFIGS.some((c) => c.type === manifest.nodeType)) return;
|
|
8794
|
+
const manifestOps = manifest.operations;
|
|
8795
|
+
const operations = Array.isArray(manifestOps) ? manifestOps : manifestOps?.operations ?? manifestOps;
|
|
8796
|
+
NODE_CONFIGS.push({
|
|
8797
|
+
type: manifest.nodeType,
|
|
8798
|
+
detail: {
|
|
8799
|
+
icon: manifest.icon || "mynaui:keyboard-solid",
|
|
8800
|
+
title: manifest.name,
|
|
8801
|
+
description: manifest.description,
|
|
8802
|
+
gradientColor: "yellow"
|
|
8803
|
+
},
|
|
8804
|
+
defaultData: {
|
|
8805
|
+
operation_name: "",
|
|
8806
|
+
operation_type: "",
|
|
8807
|
+
nodeData: manifest,
|
|
8808
|
+
version: manifest.version,
|
|
8809
|
+
args: {
|
|
8810
|
+
context: {
|
|
8811
|
+
node: {
|
|
8812
|
+
id: manifest.nodeType,
|
|
8813
|
+
kind: manifest.kind,
|
|
8814
|
+
type: manifest.nodeType
|
|
8815
|
+
}
|
|
8816
|
+
},
|
|
8817
|
+
state: {},
|
|
8818
|
+
credentials: []
|
|
8819
|
+
}
|
|
8820
|
+
},
|
|
8821
|
+
operations,
|
|
8822
|
+
publishType
|
|
8823
|
+
});
|
|
8824
|
+
}
|
|
8825
|
+
async function loadInstalledStoreNodes() {
|
|
8826
|
+
const globalClient = getGlobalStoreClient();
|
|
8827
|
+
if (!globalClient) return;
|
|
8828
|
+
const { workspaceId } = getFluidGridsConfig();
|
|
8829
|
+
if (!workspaceId) return;
|
|
8830
|
+
try {
|
|
8831
|
+
const { data } = await globalClient.query({
|
|
8832
|
+
query: GetMyNodeInstallationsDocument,
|
|
8833
|
+
variables: { workspaceId, limit: 200, offset: 0 },
|
|
8834
|
+
fetchPolicy: "network-only"
|
|
8835
|
+
});
|
|
8836
|
+
const installations = data?.myStoreAppInstallations?.items ?? [];
|
|
8837
|
+
let loaded = 0;
|
|
8838
|
+
for (const installation of installations) {
|
|
8839
|
+
if (installation.status !== "ACTIVE") continue;
|
|
8840
|
+
const manifest = installation.manifest;
|
|
8841
|
+
if (!manifest?.nodeType) continue;
|
|
8842
|
+
pushStoreNodeConfig(manifest, "STORE");
|
|
8843
|
+
loaded++;
|
|
8844
|
+
}
|
|
8845
|
+
if (loaded > 0) {
|
|
8846
|
+
console.log(
|
|
8847
|
+
`[Workflows] Loaded ${loaded} installed store node(s) from workspace installations.`
|
|
8848
|
+
);
|
|
8849
|
+
}
|
|
8850
|
+
} catch (error) {
|
|
8851
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
8852
|
+
console.warn("[Workflows] Could not load installed store nodes:", message);
|
|
8853
|
+
}
|
|
8854
|
+
}
|
|
8792
8855
|
async function initializeNodeConfigs() {
|
|
8793
8856
|
try {
|
|
8794
8857
|
const client = await waitForFluidGridsClient(15e3, 150);
|
|
8795
8858
|
if (!client) {
|
|
8796
8859
|
console.warn(
|
|
8797
|
-
"[Workflows] Apollo client not available after timeout \u2014
|
|
8860
|
+
"[Workflows] Apollo client not available after timeout \u2014 loading store nodes only."
|
|
8798
8861
|
);
|
|
8862
|
+
await loadInstalledStoreNodes();
|
|
8799
8863
|
return;
|
|
8800
8864
|
}
|
|
8801
8865
|
const { data } = await client.query({
|
|
@@ -8808,6 +8872,7 @@ async function initializeNodeConfigs() {
|
|
|
8808
8872
|
const nodes = data?.nodeEndpointConfigs?.configs ?? [];
|
|
8809
8873
|
if (!Array.isArray(nodes) || nodes.length === 0) {
|
|
8810
8874
|
console.warn("No nodes found or received data is not an array.");
|
|
8875
|
+
await loadInstalledStoreNodes();
|
|
8811
8876
|
return;
|
|
8812
8877
|
}
|
|
8813
8878
|
const manifestPromises = nodes.map(async (node) => {
|
|
@@ -8867,6 +8932,7 @@ async function initializeNodeConfigs() {
|
|
|
8867
8932
|
// Preserve publishType from GraphQL query
|
|
8868
8933
|
});
|
|
8869
8934
|
});
|
|
8935
|
+
await loadInstalledStoreNodes();
|
|
8870
8936
|
} catch (error) {
|
|
8871
8937
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
8872
8938
|
console.error("Failed to fetch nodes or manifests:", message);
|
|
@@ -10358,136 +10424,6 @@ function useInstalledNodes() {
|
|
|
10358
10424
|
refetch
|
|
10359
10425
|
};
|
|
10360
10426
|
}
|
|
10361
|
-
function useNodePackageLoader() {
|
|
10362
|
-
const downloadZip = useCallback(
|
|
10363
|
-
async (zipUrl) => {
|
|
10364
|
-
try {
|
|
10365
|
-
const response = await fetch(zipUrl);
|
|
10366
|
-
if (!response.ok) {
|
|
10367
|
-
throw new Error(`Failed to download ZIP: ${response.statusText}`);
|
|
10368
|
-
}
|
|
10369
|
-
return await response.arrayBuffer();
|
|
10370
|
-
} catch (error) {
|
|
10371
|
-
console.error("[useNodePackageLoader] Download failed:", error);
|
|
10372
|
-
throw new Error(`Download failed: ${error.message}`);
|
|
10373
|
-
}
|
|
10374
|
-
},
|
|
10375
|
-
[]
|
|
10376
|
-
);
|
|
10377
|
-
const extractManifest = useCallback(
|
|
10378
|
-
async (zipData) => {
|
|
10379
|
-
try {
|
|
10380
|
-
const zip = await JSZip.loadAsync(zipData);
|
|
10381
|
-
const manifestPaths = [
|
|
10382
|
-
"manifest.json",
|
|
10383
|
-
"package/manifest.json",
|
|
10384
|
-
"node/manifest.json"
|
|
10385
|
-
];
|
|
10386
|
-
let manifestFile = null;
|
|
10387
|
-
for (const path of manifestPaths) {
|
|
10388
|
-
manifestFile = zip.file(path);
|
|
10389
|
-
if (manifestFile) break;
|
|
10390
|
-
}
|
|
10391
|
-
if (!manifestFile) {
|
|
10392
|
-
throw new Error("manifest.json not found in ZIP package");
|
|
10393
|
-
}
|
|
10394
|
-
const manifestText = await manifestFile.async("text");
|
|
10395
|
-
const manifest = JSON.parse(manifestText);
|
|
10396
|
-
if (!manifest.nodeType || !manifest.name || !manifest.version) {
|
|
10397
|
-
throw new Error(
|
|
10398
|
-
"Invalid manifest: missing required fields (nodeType, name, version)"
|
|
10399
|
-
);
|
|
10400
|
-
}
|
|
10401
|
-
return manifest;
|
|
10402
|
-
} catch (error) {
|
|
10403
|
-
console.error(
|
|
10404
|
-
"[useNodePackageLoader] Manifest extraction failed:",
|
|
10405
|
-
error
|
|
10406
|
-
);
|
|
10407
|
-
throw new Error(`Manifest extraction failed: ${error.message}`);
|
|
10408
|
-
}
|
|
10409
|
-
},
|
|
10410
|
-
[]
|
|
10411
|
-
);
|
|
10412
|
-
const registerNode = useCallback((manifest) => {
|
|
10413
|
-
try {
|
|
10414
|
-
const existingNode = NODE_CONFIGS.find(
|
|
10415
|
-
(config2) => config2.type === manifest.nodeType
|
|
10416
|
-
);
|
|
10417
|
-
if (existingNode) {
|
|
10418
|
-
console.warn(
|
|
10419
|
-
`[useNodePackageLoader] Node ${manifest.nodeType} already registered, skipping`
|
|
10420
|
-
);
|
|
10421
|
-
return;
|
|
10422
|
-
}
|
|
10423
|
-
const manifestOps = manifest.operations;
|
|
10424
|
-
const operations = Array.isArray(manifestOps) ? manifestOps : manifestOps?.operations ?? manifestOps;
|
|
10425
|
-
NODE_CONFIGS.push({
|
|
10426
|
-
type: manifest.nodeType,
|
|
10427
|
-
detail: {
|
|
10428
|
-
icon: manifest.icon || "mynaui:keyboard-solid",
|
|
10429
|
-
title: manifest.name,
|
|
10430
|
-
description: manifest.description,
|
|
10431
|
-
gradientColor: "yellow"
|
|
10432
|
-
// Default gradient for store nodes
|
|
10433
|
-
},
|
|
10434
|
-
defaultData: {
|
|
10435
|
-
operation_name: "",
|
|
10436
|
-
operation_type: "",
|
|
10437
|
-
nodeData: manifest,
|
|
10438
|
-
version: manifest.version,
|
|
10439
|
-
args: {
|
|
10440
|
-
context: {
|
|
10441
|
-
node: {
|
|
10442
|
-
id: manifest.nodeType,
|
|
10443
|
-
kind: manifest.kind,
|
|
10444
|
-
type: manifest.nodeType
|
|
10445
|
-
}
|
|
10446
|
-
},
|
|
10447
|
-
state: {},
|
|
10448
|
-
credentials: []
|
|
10449
|
-
}
|
|
10450
|
-
},
|
|
10451
|
-
operations
|
|
10452
|
-
});
|
|
10453
|
-
console.log(
|
|
10454
|
-
`[useNodePackageLoader] Successfully registered node: ${manifest.nodeType}`
|
|
10455
|
-
);
|
|
10456
|
-
} catch (error) {
|
|
10457
|
-
console.error("[useNodePackageLoader] Node registration failed:", error);
|
|
10458
|
-
throw new Error(`Node registration failed: ${error.message}`);
|
|
10459
|
-
}
|
|
10460
|
-
}, []);
|
|
10461
|
-
const loadNodePackage = useCallback(
|
|
10462
|
-
async (zipUrl) => {
|
|
10463
|
-
try {
|
|
10464
|
-
console.log(
|
|
10465
|
-
`[useNodePackageLoader] Loading node package from: ${zipUrl}`
|
|
10466
|
-
);
|
|
10467
|
-
const zipData = await downloadZip(zipUrl);
|
|
10468
|
-
const manifest = await extractManifest(zipData);
|
|
10469
|
-
registerNode(manifest);
|
|
10470
|
-
return {
|
|
10471
|
-
success: true,
|
|
10472
|
-
manifest
|
|
10473
|
-
};
|
|
10474
|
-
} catch (error) {
|
|
10475
|
-
console.error("[useNodePackageLoader] Load package failed:", error);
|
|
10476
|
-
return {
|
|
10477
|
-
success: false,
|
|
10478
|
-
error: error.message || "Failed to load node package"
|
|
10479
|
-
};
|
|
10480
|
-
}
|
|
10481
|
-
},
|
|
10482
|
-
[downloadZip, extractManifest, registerNode]
|
|
10483
|
-
);
|
|
10484
|
-
return {
|
|
10485
|
-
loadNodePackage,
|
|
10486
|
-
downloadZip,
|
|
10487
|
-
extractManifest,
|
|
10488
|
-
registerNode
|
|
10489
|
-
};
|
|
10490
|
-
}
|
|
10491
10427
|
function useRefreshAvailableNodes() {
|
|
10492
10428
|
const refreshAvailableNodes = useCallback(async () => {
|
|
10493
10429
|
try {
|
|
@@ -10521,7 +10457,6 @@ function useInstallNode() {
|
|
|
10521
10457
|
const workspaceId = context?.workspaceId ?? getFluidGridsConfig().workspaceId;
|
|
10522
10458
|
const tenantId = context?.tenantId ?? getFluidGridsConfig().tenantId;
|
|
10523
10459
|
const { refetch: refetchInstalled } = useInstalledNodes();
|
|
10524
|
-
const { loadNodePackage } = useNodePackageLoader();
|
|
10525
10460
|
const { refreshAvailableNodes } = useRefreshAvailableNodes();
|
|
10526
10461
|
const [installing, setInstalling] = useState(null);
|
|
10527
10462
|
const [installMutation] = useMutation(InstallWorkflowNodeDocument, {
|
|
@@ -10581,29 +10516,10 @@ function useInstallNode() {
|
|
|
10581
10516
|
"[useInstallNode] Free node installation successful. Node registration handled by backend."
|
|
10582
10517
|
);
|
|
10583
10518
|
}
|
|
10584
|
-
|
|
10519
|
+
const refreshResult = await refreshAvailableNodes();
|
|
10520
|
+
if (refreshResult.success) {
|
|
10585
10521
|
console.log(
|
|
10586
|
-
`[useInstallNode]
|
|
10587
|
-
);
|
|
10588
|
-
const packageResult = await loadNodePackage(node.zipFileUrl);
|
|
10589
|
-
if (!packageResult.success) {
|
|
10590
|
-
console.warn(
|
|
10591
|
-
`[useInstallNode] Package loading failed: ${packageResult.error}. Node installed in database but not loaded in builder.`
|
|
10592
|
-
);
|
|
10593
|
-
} else {
|
|
10594
|
-
console.log(
|
|
10595
|
-
`[useInstallNode] Successfully loaded node package: ${packageResult.manifest?.nodeType}`
|
|
10596
|
-
);
|
|
10597
|
-
const refreshResult = await refreshAvailableNodes();
|
|
10598
|
-
if (refreshResult.success) {
|
|
10599
|
-
console.log(
|
|
10600
|
-
`[useInstallNode] Available nodes refreshed. Total: ${refreshResult.totalNodes}`
|
|
10601
|
-
);
|
|
10602
|
-
}
|
|
10603
|
-
}
|
|
10604
|
-
} else {
|
|
10605
|
-
console.warn(
|
|
10606
|
-
`[useInstallNode] Node ${node.id} has no zipFileUrl. Installed in database but cannot be loaded in builder.`
|
|
10522
|
+
`[useInstallNode] Available nodes refreshed. Total: ${refreshResult.totalNodes}`
|
|
10607
10523
|
);
|
|
10608
10524
|
}
|
|
10609
10525
|
await refetchInstalled();
|
|
@@ -10628,7 +10544,6 @@ function useInstallNode() {
|
|
|
10628
10544
|
workspaceId,
|
|
10629
10545
|
tenantId,
|
|
10630
10546
|
refetchInstalled,
|
|
10631
|
-
loadNodePackage,
|
|
10632
10547
|
refreshAvailableNodes
|
|
10633
10548
|
]
|
|
10634
10549
|
);
|
|
@@ -10638,22 +10553,37 @@ function useInstallNode() {
|
|
|
10638
10553
|
};
|
|
10639
10554
|
}
|
|
10640
10555
|
function useUpdateNode() {
|
|
10556
|
+
const globalClient = useGlobalStoreClient();
|
|
10557
|
+
const context = useContext(FluidGridsContext);
|
|
10558
|
+
const workspaceId = context?.workspaceId ?? getFluidGridsConfig().workspaceId;
|
|
10559
|
+
const tenantId = context?.tenantId ?? getFluidGridsConfig().tenantId;
|
|
10560
|
+
const { refetch: refetchInstalled } = useInstalledNodes();
|
|
10561
|
+
const { refreshAvailableNodes } = useRefreshAvailableNodes();
|
|
10641
10562
|
const [updating, setUpdating] = useState(null);
|
|
10563
|
+
const [installMutation] = useMutation(InstallWorkflowNodeDocument, {
|
|
10564
|
+
client: globalClient
|
|
10565
|
+
});
|
|
10642
10566
|
const updateNode = useCallback(
|
|
10643
|
-
async (node,
|
|
10567
|
+
async (node, _installationId) => {
|
|
10644
10568
|
try {
|
|
10645
10569
|
setUpdating(node.id);
|
|
10646
|
-
|
|
10647
|
-
|
|
10648
|
-
|
|
10649
|
-
|
|
10650
|
-
|
|
10570
|
+
const result = await installMutation({
|
|
10571
|
+
variables: {
|
|
10572
|
+
input: {
|
|
10573
|
+
productId: node.id,
|
|
10574
|
+
workspaceId,
|
|
10575
|
+
organizationId: tenantId,
|
|
10576
|
+
version: node.manifestVersion,
|
|
10577
|
+
manifest: node.manifest
|
|
10578
|
+
}
|
|
10579
|
+
}
|
|
10651
10580
|
});
|
|
10652
|
-
|
|
10653
|
-
|
|
10654
|
-
|
|
10655
|
-
|
|
10656
|
-
|
|
10581
|
+
if (result.error || !result.data?.recordAppInstallation) {
|
|
10582
|
+
throw new Error(result.error?.message || "Update failed");
|
|
10583
|
+
}
|
|
10584
|
+
await refreshAvailableNodes();
|
|
10585
|
+
await refetchInstalled();
|
|
10586
|
+
return { success: true };
|
|
10657
10587
|
} catch (error) {
|
|
10658
10588
|
console.error("[useUpdateNode] Update failed:", error);
|
|
10659
10589
|
return {
|
|
@@ -10664,7 +10594,13 @@ function useUpdateNode() {
|
|
|
10664
10594
|
setUpdating(null);
|
|
10665
10595
|
}
|
|
10666
10596
|
},
|
|
10667
|
-
[
|
|
10597
|
+
[
|
|
10598
|
+
installMutation,
|
|
10599
|
+
workspaceId,
|
|
10600
|
+
tenantId,
|
|
10601
|
+
refetchInstalled,
|
|
10602
|
+
refreshAvailableNodes
|
|
10603
|
+
]
|
|
10668
10604
|
);
|
|
10669
10605
|
return {
|
|
10670
10606
|
updateNode,
|
|
@@ -12505,7 +12441,7 @@ function TemplatesModal({
|
|
|
12505
12441
|
) });
|
|
12506
12442
|
}
|
|
12507
12443
|
var LazyTemplateConfigurationModal = lazy(
|
|
12508
|
-
() => import('./TemplateConfigurationModal-
|
|
12444
|
+
() => import('./TemplateConfigurationModal-ZMCT3ZCH.js').then((m) => ({
|
|
12509
12445
|
default: m.TemplateConfigurationModal
|
|
12510
12446
|
}))
|
|
12511
12447
|
);
|
|
@@ -12589,7 +12525,9 @@ function DesktopSidebarFragment({
|
|
|
12589
12525
|
setInstallProgress(null);
|
|
12590
12526
|
}
|
|
12591
12527
|
toast.loading("Creating workflow...", { id: "template-import" });
|
|
12592
|
-
const rawDef = JSON.parse(
|
|
12528
|
+
const rawDef = JSON.parse(
|
|
12529
|
+
JSON.stringify(content.definitionJson)
|
|
12530
|
+
);
|
|
12593
12531
|
const nestedDef = rawDef?.data?.workflowDefinition?.definitionJson;
|
|
12594
12532
|
let definitionJson = nestedDef && typeof nestedDef === "object" ? nestedDef : rawDef;
|
|
12595
12533
|
if (overrides?.templateInputs) {
|
|
@@ -12670,7 +12608,9 @@ function DesktopSidebarFragment({
|
|
|
12670
12608
|
});
|
|
12671
12609
|
}
|
|
12672
12610
|
} catch {
|
|
12673
|
-
console.warn(
|
|
12611
|
+
console.warn(
|
|
12612
|
+
"[performImport] Failed to record template installation"
|
|
12613
|
+
);
|
|
12674
12614
|
}
|
|
12675
12615
|
toast.success("Workflow created from template!", {
|
|
12676
12616
|
description: `"${importResult.workflow.name}" is ready to edit`
|
|
@@ -12791,7 +12731,12 @@ function DesktopSidebarFragment({
|
|
|
12791
12731
|
async (config2) => {
|
|
12792
12732
|
if (!configTemplate || !configContent) return;
|
|
12793
12733
|
if (configNodeCheck && !configNodeCheck.canImport) return;
|
|
12794
|
-
await performImport(
|
|
12734
|
+
await performImport(
|
|
12735
|
+
configTemplate,
|
|
12736
|
+
configContent,
|
|
12737
|
+
config2,
|
|
12738
|
+
configNodeCheck
|
|
12739
|
+
);
|
|
12795
12740
|
setConfigModalOpen(false);
|
|
12796
12741
|
},
|
|
12797
12742
|
[configTemplate, configContent, configNodeCheck, performImport]
|
|
@@ -22070,5 +22015,5 @@ function WorkflowBuilder() {
|
|
|
22070
22015
|
}
|
|
22071
22016
|
|
|
22072
22017
|
export { Card2 as Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, FluidGridsProvider, ProviderPicker, TemplateCard, WorkflowBuilder, getProviderForm, listCustomBlocks, registerCustomBlock, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useFluidGridsContext, useImportWorkflowTemplate, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useWorkflowTemplates };
|
|
22073
|
-
//# sourceMappingURL=chunk-
|
|
22074
|
-
//# sourceMappingURL=chunk-
|
|
22018
|
+
//# sourceMappingURL=chunk-CEK43QSX.js.map
|
|
22019
|
+
//# sourceMappingURL=chunk-CEK43QSX.js.map
|