@burdenoff/fluidgrids-fe-sdk 2026.701.6 → 2026.701.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.
@@ -1,4 +1,4 @@
1
- export { WorkflowBuilder } from './chunk-CEK43QSX.js';
1
+ export { WorkflowBuilder } from './chunk-Z24M3SR3.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-NEXLEPY4.js.map
13
- //# sourceMappingURL=WorkflowBuilder-NEXLEPY4.js.map
12
+ //# sourceMappingURL=WorkflowBuilder-ZX7WXPTM.js.map
13
+ //# sourceMappingURL=WorkflowBuilder-ZX7WXPTM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-NEXLEPY4.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-ZX7WXPTM.js"}
@@ -2,7 +2,7 @@ import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as D
2
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
- import { NodeEndpointConfigsDocument, NodeManifestDocument, TriggerWorkflowDocument, WorkflowRunDocument, NodeSchemaIntrospectionDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-FGYVIXQ7.js';
5
+ import { NodeEndpointConfigsDocument, NodeManifestDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, TriggerWorkflowDocument, WorkflowRunDocument, NodeSchemaIntrospectionDocument, 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
8
  import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument } from './chunk-LUGJJ7LL.js';
@@ -10,7 +10,7 @@ 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';
12
12
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
13
- import { useNavigate, useParams } from 'react-router-dom';
13
+ import { useParams, useNavigate } from 'react-router-dom';
14
14
  import { useShallow, shallow } from 'zustand/shallow';
15
15
  import * as React2 from 'react';
16
16
  import React2__default, { forwardRef, useState, useImperativeHandle, useRef, useEffect, useMemo, createContext, lazy, memo, useCallback, useContext, useLayoutEffect, Suspense, useDeferredValue } from 'react';
@@ -7313,6 +7313,179 @@ function ArrayField({
7313
7313
  description && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: description })
7314
7314
  ] });
7315
7315
  }
7316
+ function useSaveWorkflow() {
7317
+ const [isSaving, setIsSaving] = useState(false);
7318
+ const params = useParams();
7319
+ const navigate = useNavigate();
7320
+ const [saveWorkflow, setWorkflow] = useFlowStore(
7321
+ useShallow((s) => [s.actions.saveWorkflow, s.actions.setWorkflow])
7322
+ );
7323
+ const saveToBackend = useCallback(async () => {
7324
+ setIsSaving(true);
7325
+ try {
7326
+ const workflow = saveWorkflow();
7327
+ const workflowKey = params?.id || workflow?.id;
7328
+ if (!workflowKey) {
7329
+ throw new Error(
7330
+ "Workflow key not found. Navigate to /workflow/{key}/v1 to create a workflow."
7331
+ );
7332
+ }
7333
+ const isDraft = !workflow.status || workflow.status === "DRAFT";
7334
+ const client = getFluidGridsClient();
7335
+ const preparedWorkflow = {
7336
+ ...workflow,
7337
+ nodes: workflow.nodes?.map((n) => {
7338
+ const { nodeData: _ignoredNodeData, ...flattenedData } = n.data ?? {};
7339
+ void _ignoredNodeData;
7340
+ return { ...n, ...flattenedData };
7341
+ })
7342
+ };
7343
+ const definitionJson = {
7344
+ key: workflowKey,
7345
+ name: workflow?.name,
7346
+ description: workflow?.name || "Workflow Description",
7347
+ workflow_type: "query-conditional",
7348
+ data: {
7349
+ ...preparedWorkflow,
7350
+ version: workflow.version,
7351
+ alias: workflow?.alias || null
7352
+ },
7353
+ meta: {
7354
+ creator: "api_update",
7355
+ version: workflow.version
7356
+ },
7357
+ tags: [
7358
+ "rag",
7359
+ "cache",
7360
+ "websearch",
7361
+ "conditional",
7362
+ "python_expr",
7363
+ "retry",
7364
+ "api_trigger"
7365
+ ]
7366
+ };
7367
+ let savedVersion = workflow.version;
7368
+ let savedDbId = workflow.dbId;
7369
+ let operation = "updated";
7370
+ if (isDraft && workflow.dbId) {
7371
+ const { data } = await client.mutate({
7372
+ mutation: UpdateWorkflowDefinitionDocument,
7373
+ variables: {
7374
+ id: workflow.dbId,
7375
+ input: {
7376
+ definitionJson,
7377
+ name: workflow?.name,
7378
+ description: workflow?.name || "Workflow update",
7379
+ alias: workflow?.alias || void 0
7380
+ }
7381
+ }
7382
+ });
7383
+ if (data?.updateWorkflowDefinition) {
7384
+ savedVersion = data.updateWorkflowDefinition.version;
7385
+ savedDbId = data.updateWorkflowDefinition.id;
7386
+ operation = "updated";
7387
+ toast.success("Workflow saved", {
7388
+ description: `Updated version ${savedVersion}`,
7389
+ dismissible: true
7390
+ });
7391
+ } else {
7392
+ throw new Error("Failed to save workflow");
7393
+ }
7394
+ } else if (isDraft && !workflow.dbId) {
7395
+ const { data } = await client.mutate({
7396
+ mutation: CreateWorkflowDefinitionDocument,
7397
+ variables: {
7398
+ input: {
7399
+ workflowKey,
7400
+ version: workflow.version || params?.version || "v1",
7401
+ name: workflow?.name || "Untitled Workflow",
7402
+ description: workflow?.name || "Untitled Workflow",
7403
+ definitionJson
7404
+ }
7405
+ }
7406
+ });
7407
+ if (data?.createWorkflowDefinition) {
7408
+ savedVersion = data.createWorkflowDefinition.version;
7409
+ savedDbId = data.createWorkflowDefinition.id;
7410
+ operation = "created";
7411
+ setWorkflow({
7412
+ dbId: savedDbId,
7413
+ status: data.createWorkflowDefinition.status ?? "DRAFT",
7414
+ version: savedVersion
7415
+ });
7416
+ toast.success("Workflow saved", {
7417
+ description: `Created version ${savedVersion}`,
7418
+ dismissible: true
7419
+ });
7420
+ } else {
7421
+ throw new Error("Failed to create workflow");
7422
+ }
7423
+ } else {
7424
+ const { data } = await client.mutate({
7425
+ mutation: CreateWorkflowVersionDocument,
7426
+ variables: {
7427
+ workflowKey,
7428
+ input: {
7429
+ definitionJson,
7430
+ description: workflow?.name || "Workflow update"
7431
+ }
7432
+ }
7433
+ });
7434
+ if (data?.createWorkflowVersion?.success) {
7435
+ const newWorkflow = data.createWorkflowVersion.workflow;
7436
+ savedVersion = newWorkflow?.version ?? workflow.version;
7437
+ savedDbId = newWorkflow?.id ?? workflow.dbId;
7438
+ operation = "versioned";
7439
+ setWorkflow({
7440
+ version: savedVersion,
7441
+ dbId: savedDbId,
7442
+ status: "DRAFT"
7443
+ });
7444
+ navigate(`../workflow/${workflowKey}/${savedVersion}`, {
7445
+ replace: true
7446
+ });
7447
+ toast.success("New version created", {
7448
+ description: `Saved as version ${savedVersion} (Draft)`,
7449
+ dismissible: true
7450
+ });
7451
+ } else {
7452
+ throw new Error(
7453
+ data?.createWorkflowVersion?.message || "Failed to save workflow"
7454
+ );
7455
+ }
7456
+ }
7457
+ if (savedDbId) {
7458
+ const config2 = getFluidGridsConfig();
7459
+ if (config2.onWorkflowSaved) {
7460
+ try {
7461
+ await config2.onWorkflowSaved({
7462
+ dbId: savedDbId,
7463
+ workflowKey,
7464
+ version: savedVersion,
7465
+ name: workflow?.name || "Untitled Workflow",
7466
+ description: workflow?.alias || workflow?.name || void 0,
7467
+ operation
7468
+ });
7469
+ } catch (callbackError) {
7470
+ console.warn(
7471
+ "[useSaveWorkflow] onWorkflowSaved callback failed:",
7472
+ callbackError
7473
+ );
7474
+ }
7475
+ }
7476
+ }
7477
+ } catch (error) {
7478
+ const message = error instanceof Error ? error.message : "Unknown error";
7479
+ console.error("Error saving workflow:", message);
7480
+ toast.error("Failed to save workflow", {
7481
+ description: message
7482
+ });
7483
+ } finally {
7484
+ setIsSaving(false);
7485
+ }
7486
+ }, [saveWorkflow, setWorkflow, params?.id, params?.version, navigate]);
7487
+ return { saveToBackend, isSaving };
7488
+ }
7316
7489
  function NodePropertyPanel({
7317
7490
  id,
7318
7491
  type,
@@ -7334,6 +7507,7 @@ function NodePropertyPanel({
7334
7507
  const [searchTerm, setSearchTerm] = useState("");
7335
7508
  const [isLoading, setIsLoading] = useState(false);
7336
7509
  useFlowStore((s) => s.workflow.id);
7510
+ const { saveToBackend, isSaving } = useSaveWorkflow();
7337
7511
  const operationsArray = useMemo(() => {
7338
7512
  const nodeDataOps = data?.nodeData?.operations;
7339
7513
  if (nodeDataOps) {
@@ -7415,6 +7589,10 @@ function NodePropertyPanel({
7415
7589
  }
7416
7590
  return currentOperation;
7417
7591
  }, [currentOperation, type]);
7592
+ const shouldSaveConfigurationToBackend = useMemo(
7593
+ () => String(type) === "store/bigconsole_datasink" && effectiveCurrentOperation?.name === "postDataToDataSink",
7594
+ [effectiveCurrentOperation?.name, type]
7595
+ );
7418
7596
  const connectionAdapters = useMemo(
7419
7597
  () => effectiveCurrentOperation?.connectionAdapters || effectiveCurrentOperation?.credentialAdapters || data?.nodeData?.connectionAdapters || data?.nodeData?.credentialAdapters || [],
7420
7598
  [
@@ -7491,6 +7669,13 @@ function NodePropertyPanel({
7491
7669
  state: newState
7492
7670
  }
7493
7671
  });
7672
+ if (shouldSaveConfigurationToBackend && !isSaving) {
7673
+ window.setTimeout(() => {
7674
+ void saveToBackend().catch((error) => {
7675
+ console.error("Error saving DataSink configuration:", error);
7676
+ });
7677
+ }, 0);
7678
+ }
7494
7679
  };
7495
7680
  const resolvedUi = useMemo(
7496
7681
  () => resolveUiSpec(effectiveCurrentOperation),
@@ -13919,7 +14104,7 @@ function dispatch(action) {
13919
14104
  listener(memoryState);
13920
14105
  });
13921
14106
  }
13922
- function toast4({ ...props }) {
14107
+ function toast5({ ...props }) {
13923
14108
  const id = genId();
13924
14109
  const update = (props2) => dispatch({
13925
14110
  type: actionTypes.UPDATE_TOAST,
@@ -13956,7 +14141,7 @@ function useToast() {
13956
14141
  }, [state]);
13957
14142
  return {
13958
14143
  ...state,
13959
- toast: toast4,
14144
+ toast: toast5,
13960
14145
  dismiss: (toastId) => dispatch({ type: actionTypes.DISMISS_TOAST, toastId })
13961
14146
  };
13962
14147
  }
@@ -19511,179 +19696,6 @@ function useFlowValidator(onValidate) {
19511
19696
  }, [getNodes, getEdges, onValidate]);
19512
19697
  return [isValidating, validate];
19513
19698
  }
19514
- function useSaveWorkflow() {
19515
- const [isSaving, setIsSaving] = useState(false);
19516
- const params = useParams();
19517
- const navigate = useNavigate();
19518
- const [saveWorkflow, setWorkflow] = useFlowStore(
19519
- useShallow((s) => [s.actions.saveWorkflow, s.actions.setWorkflow])
19520
- );
19521
- const saveToBackend = useCallback(async () => {
19522
- setIsSaving(true);
19523
- try {
19524
- const workflow = saveWorkflow();
19525
- const workflowKey = params?.id || workflow?.id;
19526
- if (!workflowKey) {
19527
- throw new Error(
19528
- "Workflow key not found. Navigate to /workflow/{key}/v1 to create a workflow."
19529
- );
19530
- }
19531
- const isDraft = !workflow.status || workflow.status === "DRAFT";
19532
- const client = getFluidGridsClient();
19533
- const preparedWorkflow = {
19534
- ...workflow,
19535
- nodes: workflow.nodes?.map((n) => {
19536
- const { nodeData: _ignoredNodeData, ...flattenedData } = n.data ?? {};
19537
- void _ignoredNodeData;
19538
- return { ...n, ...flattenedData };
19539
- })
19540
- };
19541
- const definitionJson = {
19542
- key: workflowKey,
19543
- name: workflow?.name,
19544
- description: workflow?.name || "Workflow Description",
19545
- workflow_type: "query-conditional",
19546
- data: {
19547
- ...preparedWorkflow,
19548
- version: workflow.version,
19549
- alias: workflow?.alias || null
19550
- },
19551
- meta: {
19552
- creator: "api_update",
19553
- version: workflow.version
19554
- },
19555
- tags: [
19556
- "rag",
19557
- "cache",
19558
- "websearch",
19559
- "conditional",
19560
- "python_expr",
19561
- "retry",
19562
- "api_trigger"
19563
- ]
19564
- };
19565
- let savedVersion = workflow.version;
19566
- let savedDbId = workflow.dbId;
19567
- let operation = "updated";
19568
- if (isDraft && workflow.dbId) {
19569
- const { data } = await client.mutate({
19570
- mutation: UpdateWorkflowDefinitionDocument,
19571
- variables: {
19572
- id: workflow.dbId,
19573
- input: {
19574
- definitionJson,
19575
- name: workflow?.name,
19576
- description: workflow?.name || "Workflow update",
19577
- alias: workflow?.alias || void 0
19578
- }
19579
- }
19580
- });
19581
- if (data?.updateWorkflowDefinition) {
19582
- savedVersion = data.updateWorkflowDefinition.version;
19583
- savedDbId = data.updateWorkflowDefinition.id;
19584
- operation = "updated";
19585
- toast.success("Workflow saved", {
19586
- description: `Updated version ${savedVersion}`,
19587
- dismissible: true
19588
- });
19589
- } else {
19590
- throw new Error("Failed to save workflow");
19591
- }
19592
- } else if (isDraft && !workflow.dbId) {
19593
- const { data } = await client.mutate({
19594
- mutation: CreateWorkflowDefinitionDocument,
19595
- variables: {
19596
- input: {
19597
- workflowKey,
19598
- version: workflow.version || params?.version || "v1",
19599
- name: workflow?.name || "Untitled Workflow",
19600
- description: workflow?.name || "Untitled Workflow",
19601
- definitionJson
19602
- }
19603
- }
19604
- });
19605
- if (data?.createWorkflowDefinition) {
19606
- savedVersion = data.createWorkflowDefinition.version;
19607
- savedDbId = data.createWorkflowDefinition.id;
19608
- operation = "created";
19609
- setWorkflow({
19610
- dbId: savedDbId,
19611
- status: data.createWorkflowDefinition.status ?? "DRAFT",
19612
- version: savedVersion
19613
- });
19614
- toast.success("Workflow saved", {
19615
- description: `Created version ${savedVersion}`,
19616
- dismissible: true
19617
- });
19618
- } else {
19619
- throw new Error("Failed to create workflow");
19620
- }
19621
- } else {
19622
- const { data } = await client.mutate({
19623
- mutation: CreateWorkflowVersionDocument,
19624
- variables: {
19625
- workflowKey,
19626
- input: {
19627
- definitionJson,
19628
- description: workflow?.name || "Workflow update"
19629
- }
19630
- }
19631
- });
19632
- if (data?.createWorkflowVersion?.success) {
19633
- const newWorkflow = data.createWorkflowVersion.workflow;
19634
- savedVersion = newWorkflow?.version ?? workflow.version;
19635
- savedDbId = newWorkflow?.id ?? workflow.dbId;
19636
- operation = "versioned";
19637
- setWorkflow({
19638
- version: savedVersion,
19639
- dbId: savedDbId,
19640
- status: "DRAFT"
19641
- });
19642
- navigate(`../workflow/${workflowKey}/${savedVersion}`, {
19643
- replace: true
19644
- });
19645
- toast.success("New version created", {
19646
- description: `Saved as version ${savedVersion} (Draft)`,
19647
- dismissible: true
19648
- });
19649
- } else {
19650
- throw new Error(
19651
- data?.createWorkflowVersion?.message || "Failed to save workflow"
19652
- );
19653
- }
19654
- }
19655
- if (savedDbId) {
19656
- const config2 = getFluidGridsConfig();
19657
- if (config2.onWorkflowSaved) {
19658
- try {
19659
- await config2.onWorkflowSaved({
19660
- dbId: savedDbId,
19661
- workflowKey,
19662
- version: savedVersion,
19663
- name: workflow?.name || "Untitled Workflow",
19664
- description: workflow?.alias || workflow?.name || void 0,
19665
- operation
19666
- });
19667
- } catch (callbackError) {
19668
- console.warn(
19669
- "[useSaveWorkflow] onWorkflowSaved callback failed:",
19670
- callbackError
19671
- );
19672
- }
19673
- }
19674
- }
19675
- } catch (error) {
19676
- const message = error instanceof Error ? error.message : "Unknown error";
19677
- console.error("Error saving workflow:", message);
19678
- toast.error("Failed to save workflow", {
19679
- description: message
19680
- });
19681
- } finally {
19682
- setIsSaving(false);
19683
- }
19684
- }, [saveWorkflow, setWorkflow, params?.id, params?.version, navigate]);
19685
- return { saveToBackend, isSaving };
19686
- }
19687
19699
  var SaveFlowButton = () => {
19688
19700
  const { saveToBackend, isSaving } = useSaveWorkflow();
19689
19701
  const [isValidating, validateFlow] = useFlowValidator(async (isValid) => {
@@ -22015,5 +22027,5 @@ function WorkflowBuilder() {
22015
22027
  }
22016
22028
 
22017
22029
  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 };
22018
- //# sourceMappingURL=chunk-CEK43QSX.js.map
22019
- //# sourceMappingURL=chunk-CEK43QSX.js.map
22030
+ //# sourceMappingURL=chunk-Z24M3SR3.js.map
22031
+ //# sourceMappingURL=chunk-Z24M3SR3.js.map