@burdenoff/fluidgrids-fe-sdk 2026.1111.20 → 2026.1111.22

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.
Files changed (65) hide show
  1. package/README.md +13 -0
  2. package/dist/{AiStudioPage-CmjZwaoy.js → AiStudioPage-DIfF4LhQ.js} +5 -5
  3. package/dist/{DataSinkDashboardPage-auvILMSt.js → DataSinkDashboardPage-DDvNPS8Z.js} +1 -1
  4. package/dist/{DataTablesPage-BZy2z0LB.js → DataTablesPage-BpnF13UT.js} +9 -1
  5. package/dist/{ExecutionDetailPage-C0q5brcQ.js → ExecutionDetailPage-DYLWtHRG.js} +60 -13
  6. package/dist/{ExecutionsListPage-Dcc6wi-8.js → ExecutionsListPage-D63aCXJH.js} +4 -4
  7. package/dist/{FluidGridsProvider-CRGXDZX1.js → FluidGridsProvider-CWyQ8ziM.js} +364 -98
  8. package/dist/{HistoryPage-B5Np7Dd_.js → HistoryPage-CNXgUMb0.js} +1 -1
  9. package/dist/{InsightsPage-CQ8sB4d6.js → InsightsPage-Duo83yAM.js} +1 -1
  10. package/dist/{MissingNodesInstallModal-Dm1m3Ysp.js → MissingNodesInstallModal-Q3RYBvS8.js} +1 -1
  11. package/dist/{QuotaExhaustedDialog-DYCpMOyQ.js → QuotaExhaustedDialog-ChBoJnRo.js} +3 -2
  12. package/dist/{SettingsPage-BNJV7nwG.js → SettingsPage-DI_vIG7t.js} +2 -2
  13. package/dist/{TemplateCard-BuP6_QX8.js → TemplateCard-6W2q2wiK.js} +4 -3
  14. package/dist/{TemplateConfigurationModal--YswnkOD.js → TemplateConfigurationModal-qNQGP7cm.js} +1 -1
  15. package/dist/{TemplateDetailPanel-CtUjihCQ.js → TemplateDetailPanel-CQvYqhVO.js} +1 -1
  16. package/dist/{TemplatePreview-TH3zVEtT.js → TemplatePreview-t3251W_n.js} +4 -4
  17. package/dist/{TemplatesPage-BDiIswSv.js → TemplatesPage-Bvg6R2P9.js} +6 -5
  18. package/dist/{WorkflowBuilder-KypUzhmK.js → WorkflowBuilder-C-hgvww2.js} +3 -3
  19. package/dist/{WorkflowBuilder-DnTqzYD5.js → WorkflowBuilder-DdvSGsxr.js} +8 -8
  20. package/dist/{WorkflowSearchRedirect-DAA2K0Md.js → WorkflowSearchRedirect-33Vs4FKc.js} +1 -1
  21. package/dist/{WorkflowsList-BWdu8wj0.js → WorkflowsList-C3bHLpSv.js} +147 -22
  22. package/dist/agent-tools.js +1 -1
  23. package/dist/{agentTools-VQXDvw4O.js → agentTools-BjhxAdlt.js} +3 -4
  24. package/dist/askAboutBridge-BV8m95kk.js +65 -0
  25. package/dist/assistant.d.ts +30 -1
  26. package/dist/assistant.js +2 -1
  27. package/dist/{canvasNoteTools-CCQtxq7U.js → canvasNoteTools-CZEFFhRp.js} +2 -2
  28. package/dist/{code-editor-field-4j1LiULY.js → code-editor-field-CfP0QYUD.js} +1 -1
  29. package/dist/executions.js +2 -2
  30. package/dist/{flow-builder-KbM4vIW8.js → flow-builder-CE8cNXNi.js} +16 -73
  31. package/dist/fluidgridsEvents-Dm5CaHtr.js +162 -0
  32. package/dist/history.js +1 -1
  33. package/dist/{index-6JR2vD9J.d.ts → index-7eJQwsNS.d.ts} +3 -19
  34. package/dist/index.d.ts +2 -1
  35. package/dist/index.js +29 -27
  36. package/dist/{node-detail-view-CeOkSF2C.js → node-detail-view-BoR0vYZ3.js} +5 -5
  37. package/dist/{node-editor-tab-body-CN89wDV7.js → node-editor-tab-body-DxMbKspp.js} +2 -2
  38. package/dist/observability.d.ts +1 -1
  39. package/dist/observability.js +2 -2
  40. package/dist/{popover-CxKbvYSJ.js → popover-B1aKz7DC.js} +1 -1
  41. package/dist/{quick-config-panel-wfP0s4QO.js → quick-config-panel-DXvLJdeW.js} +3 -3
  42. package/dist/quota-Cdt8yz7N.js +152 -0
  43. package/dist/quota.d.ts +3 -0
  44. package/dist/quota.js +4 -0
  45. package/dist/runsQuota-DsniKiSg.d.ts +20 -0
  46. package/dist/runsQuota-DvXR6mRN.js +100 -0
  47. package/dist/{schedule-panel-2HgyHvO8.js → schedule-panel-CY6S4JMd.js} +5 -5
  48. package/dist/settings.js +1 -1
  49. package/dist/{sidebar-node-editor-DLOVQATw.js → sidebar-node-editor-FU3fvOjh.js} +3 -3
  50. package/dist/templates.js +2 -2
  51. package/dist/{uiMarkTools-nlmzsHQM.js → uiMarkTools-DZ6akjQK.js} +1 -1
  52. package/dist/useActionParam-B0ebTZmg.js +83 -0
  53. package/dist/{useDurableParity-CJvnfF3T.js → useDurableParity-BApRraSO.js} +1 -1
  54. package/dist/{useExecutions-CyXkJtpk.js → useExecutions-C2a4EcvC.js} +2 -2
  55. package/dist/{useObservability-QZjFuXnI.js → useObservability-BmbeK5bG.js} +2 -2
  56. package/dist/{useRunHistory-D4gaa81A.js → useRunHistory-CqfDFRzr.js} +1 -1
  57. package/dist/{useWorkflowCodeExport-BNGq3BJ9.js → useWorkflowCodeExport-DebpM48M.js} +1 -1
  58. package/dist/{useWorkflows-XsfD7JA-.js → useWorkflows-D1-rYzGK.js} +2 -2
  59. package/dist/workflow-builder.js +4 -4
  60. package/dist/workflow-pages.d.ts +1 -1
  61. package/dist/workflow-pages.js +14 -14
  62. package/dist/workflows-list.d.ts +6 -0
  63. package/dist/workflows-list.js +3 -2
  64. package/package.json +5 -1
  65. package/dist/fluidgridsEvents-CNdcrUNN.js +0 -310
@@ -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-BuP6_QX8.js";
3
+ import { n as templatePreview, r as Badge } from "./TemplateCard-6W2q2wiK.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,12 +1,12 @@
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-KbM4vIW8.js";
5
- import { a as useTemplateImportFlow, l as useImportWorkflowTemplate } from "./TemplateCard-BuP6_QX8.js";
6
- import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-DYCpMOyQ.js";
4
+ import { t as FlowBuilderPage } from "./flow-builder-CE8cNXNi.js";
5
+ import { a as useTemplateImportFlow, l as useImportWorkflowTemplate } from "./TemplateCard-6W2q2wiK.js";
6
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-ChBoJnRo.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
- import { f as BILLING_PLANS_PATH } from "./fluidgridsEvents-CNdcrUNN.js";
9
+ import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
10
10
  import { useEffect, useState } from "react";
11
11
  import { useNavigate, useParams } from "react-router";
12
12
  import { Icon } from "@iconify/react";
@@ -1,15 +1,16 @@
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-XsfD7JA-.js";
4
- import { a as useTemplateImportFlow, t as TemplateCard, u as useWorkflowTemplates, y as useGlobalStoreClient } from "./TemplateCard-BuP6_QX8.js";
3
+ import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-D1-rYzGK.js";
4
+ import { a as useTemplateImportFlow, t as TemplateCard, u as useWorkflowTemplates, y as useGlobalStoreClient } from "./TemplateCard-6W2q2wiK.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-DYCpMOyQ.js";
7
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-ChBoJnRo.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-CRGXDZX1.js";
10
- import { a as emitTemplateUsed, f as BILLING_PLANS_PATH, y as isQuotaExhaustedFailure } from "./fluidgridsEvents-CNdcrUNN.js";
9
+ import { O as MyWorkflowTemplateSubmissionsDocument, P as WithdrawWorkflowTemplateSubmissionDocument, gn as useFluidGridsAnalytics, j as SubmitWorkflowTemplateDocument } from "./FluidGridsProvider-CWyQ8ziM.js";
10
+ import { a as emitTemplateUsed } from "./fluidgridsEvents-Dm5CaHtr.js";
11
11
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
12
12
  import { r as templatesControls } from "./pageControlSpecs-DZJ9K37m.js";
13
+ import { c as isQuotaExhaustedFailure, t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
13
14
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
14
15
  import { _ as throwIfResultError, m as describeOperationError } from "./client-C9XSzSXr.js";
15
16
  import { useCallback, useEffect, useMemo, useState } from "react";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { hn as useCanvasEdges, n as FluidGridsProvider } from "./FluidGridsProvider-CRGXDZX1.js";
2
+ import { n as FluidGridsProvider, vn as useCanvasEdges } from "./FluidGridsProvider-CWyQ8ziM.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-BuP6_QX8.js";
6
+ import { b as Card } from "./TemplateCard-6W2q2wiK.js";
7
7
  import { t as cn } from "./cn-QqidFIgr.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
- import { b as useNodeSelectedEvent, x as FluidGridsMark } from "./flow-builder-KbM4vIW8.js";
9
+ import { _ as useNodeSelectedEvent, v as FluidGridsMark } from "./flow-builder-CE8cNXNi.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,18 +1,18 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { h as useWorkflowReloadStore, m as releaseLeaseKeptForReload, t as FlowBuilderPage } from "./flow-builder-KbM4vIW8.js";
3
+ import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-CE8cNXNi.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-CRGXDZX1.js";
8
+ import { B as createConfiguredNode, Dt as blankWorkflowCreateInput, Nt as useSaveStatusStore, Xt as rememberRevision, Z as paramsFromOperation, an as workflowFingerprint, en as codeBuildIdOf, g as registerWorkflowNodeTypes, h as registerNodeManifests, kt as classifyCreateRefusal, m as refetchStoreNodes, mn as resolveNodeOperation, o as NODE_CONFIGS, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-CWyQ8ziM.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-XsfD7JA-.js";
12
- import { c as getWorkflowNodeTypes, o as buildNodeCheck, s as buildRequiredNodeTypes, v as useInstalledNodes } from "./TemplateCard-BuP6_QX8.js";
11
+ import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-D1-rYzGK.js";
12
+ import { c as getWorkflowNodeTypes, o as buildNodeCheck, s as buildRequiredNodeTypes, v as useInstalledNodes } from "./TemplateCard-6W2q2wiK.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
- import { f as BILLING_PLANS_PATH } from "./fluidgridsEvents-CNdcrUNN.js";
15
- import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-BNGq3BJ9.js";
14
+ import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
15
+ import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-DebpM48M.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-Dm1m3Ysp.js").then((m) => ({ default: m.MissingNodesInstallModal })));
1091
+ const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-Q3RYBvS8.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-CRGXDZX1.js").then((n) => n.y);
1163
+ const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-CWyQ8ziM.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,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-XsfD7JA-.js";
3
+ import { m as useWorkflowDefinition } from "./useWorkflows-D1-rYzGK.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";
@@ -1,25 +1,26 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-XsfD7JA-.js";
4
- import { Dt as createThenOpen, t as FluidGridsContext } from "./FluidGridsProvider-CRGXDZX1.js";
5
- import { C as typeScriptModuleFile, S as typeScriptImportSource, T as CreateWorkflowRefusalDialog, a as parseWorkflowImport, b as readProjectArchive, c as MAX_IMPORT_ARCHIVE_BYTES, d as checkTypeScriptImport, i as downloadWorkflowExport, l as MAX_IMPORT_SOURCE_BYTES, m as importFileKind, n as useExportWorkflowAs, o as CODE_EXPORT_FORMATS, p as importAcceptAttribute, s as ImportSourceError, u as assertImportByteSize, w as workflowNameFromFile, y as primaryImportModule } from "./useWorkflowCodeExport-BNGq3BJ9.js";
6
- import { f as BILLING_PLANS_PATH, y as isQuotaExhaustedFailure } from "./fluidgridsEvents-CNdcrUNN.js";
3
+ import { c as useImportWorkflow, h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, n as useCreateWorkflow, o as useDeleteWorkflow, s as useDuplicateWorkflow, u as usePreviewN8nImport } from "./useWorkflows-D1-rYzGK.js";
4
+ import { At as createThenOpen, t as FluidGridsContext } from "./FluidGridsProvider-CWyQ8ziM.js";
5
+ import { C as typeScriptModuleFile, S as typeScriptImportSource, T as CreateWorkflowRefusalDialog, a as parseWorkflowImport, b as readProjectArchive, c as MAX_IMPORT_ARCHIVE_BYTES, d as checkTypeScriptImport, i as downloadWorkflowExport, l as MAX_IMPORT_SOURCE_BYTES, m as importFileKind, n as useExportWorkflowAs, o as CODE_EXPORT_FORMATS, p as importAcceptAttribute, s as ImportSourceError, u as assertImportByteSize, w as workflowNameFromFile, y as primaryImportModule } from "./useWorkflowCodeExport-DebpM48M.js";
6
+ import { c as isQuotaExhaustedFailure, t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
7
7
  import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
8
8
  import { a as SdkPermissionGate, i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
9
- import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-DYCpMOyQ.js";
9
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-ChBoJnRo.js";
10
10
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
11
11
  import { CF as WorkflowExportFormat, gF as WorkflowAccessFilter } from "./graphql-types-CDKVWH2R.js";
12
12
  import { i as canShareWorkflow, r as canEditWorkflow, t as WorkflowShareDialog } from "./WorkflowShareDialog-mbIwRQUY.js";
13
+ import { i as useOpenRequest, n as ACTION_PARAM_VALUES, r as useActionParam } from "./useActionParam-B0ebTZmg.js";
13
14
  import { l as useFluidGridsFlag, t as FLUIDGRIDS_FLAGS } from "./feature-flags-DM5myWaD.js";
14
15
  import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
15
16
  import { $t as RenameWorkflowProjectDocument, G as DeleteWorkflowFolderDocument, Hr as WorkflowProjectsDocument, K as DeleteWorkflowProjectDocument, M as CreateWorkflowProjectDocument, Nr as WorkflowFoldersDocument, Qt as RenameWorkflowFolderDocument, Tt as MoveWorkflowFolderDocument, g as BulkMoveWorkflowsToFolderDocument, h as BulkDeleteWorkflowsDocument, j as CreateWorkflowFolderDocument, m as BulkAssignWorkflowsToProjectDocument } from "./graphql-operation-types-kX-MMjgW.js";
16
- import { a as useExecutions } from "./useExecutions-CyXkJtpk.js";
17
+ import { a as useExecutions } from "./useExecutions-C2a4EcvC.js";
17
18
  import { a as firstWorkflowProgress, i as builderPathFor, r as GUIDED_TOUR_STATE } from "./firstWorkflow-C_h0KMB2.js";
18
19
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
19
20
  import { i as workflowsListControls } from "./pageControlSpecs-DZJ9K37m.js";
20
21
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
21
22
  import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
22
- import { useNavigate } from "react-router";
23
+ import { useNavigate, useSearchParams } from "react-router";
23
24
  import { Icon } from "@iconify/react";
24
25
  import { cn } from "@burdenoff/fe-libs/utils";
25
26
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -712,11 +713,13 @@ function declaredLength(response) {
712
713
  const value = Number(response.headers.get("content-length"));
713
714
  return Number.isFinite(value) && value > 0 ? value : null;
714
715
  }
715
- function WorkflowImportDialog({ onImported }) {
716
+ function WorkflowImportDialog({ onImported, openRequested, onOpenRequestHandled }) {
716
717
  const tr = useTr();
717
718
  const codeFirst = useFluidGridsFlag(FLUIDGRIDS_FLAGS.codeFirst);
718
719
  const { importWorkflow, loading, error: importError } = useImportWorkflow();
719
720
  const [open, setOpen] = useState(false);
721
+ const openFromRequest = useCallback(() => setOpen(true), []);
722
+ useOpenRequest(openRequested, openFromRequest, onOpenRequestHandled);
720
723
  const [typeScript, setTypeScript] = useState(null);
721
724
  const [issues, setIssues] = useState(null);
722
725
  const [submitted, setSubmitted] = useState(false);
@@ -1447,20 +1450,22 @@ function FolderRow({ folder, depth, selectedFolderId, onSelect, onCreateChild, o
1447
1450
  * itself owns that filtering (see WorkflowsList's `folderFilter` state) so
1448
1451
  * this component stays a pure navigation/management surface.
1449
1452
  */
1450
- function WorkflowFolderSidebar({ selectedFolderId, onSelectFolder }) {
1453
+ function WorkflowFolderSidebar({ selectedFolderId, onSelectFolder, createRequested, onCreateRequestHandled }) {
1451
1454
  const tr = useTr();
1452
1455
  const { folders, loading, refetch } = useWorkflowFolders();
1453
1456
  const { createFolder, renameFolder, deleteFolder } = useWorkflowFolderActions();
1454
1457
  const [dialog, setDialog] = useState(null);
1455
1458
  const [name, setName] = useState("");
1456
1459
  const [deleteTarget, setDeleteTarget] = useState(null);
1457
- const openCreate = (parentId) => {
1460
+ const openCreate = useCallback((parentId) => {
1458
1461
  setName("");
1459
1462
  setDialog({
1460
1463
  mode: "create",
1461
1464
  parentId
1462
1465
  });
1463
- };
1466
+ }, []);
1467
+ const openCreateTopLevel = useCallback(() => openCreate(null), [openCreate]);
1468
+ useOpenRequest(createRequested, openCreateTopLevel, onCreateRequestHandled);
1464
1469
  const openRename = (folder) => {
1465
1470
  setName(folder.name);
1466
1471
  setDialog({
@@ -1975,6 +1980,110 @@ function WorkflowMoveToProjectDialog({ workflow, onClose, onMoved }) {
1975
1980
  });
1976
1981
  }
1977
1982
 
1983
+ // src/pages/workflowsListUrlState.ts
1984
+ /**
1985
+ * URL-driven filter state for the workflows list (BOFF-10854).
1986
+ *
1987
+ * The access, status and folder filters live in the query string so the
1988
+ * shell's navigation ("Shared with me", "Archived", a folder) can link
1989
+ * straight to a filtered list, and a filtered list survives reload and
1990
+ * back/forward. Supported values:
1991
+ *
1992
+ * ?access=mine | shared (absent or "all" = every visible workflow)
1993
+ * ?status=active | draft | archived | deprecated (absent = any status)
1994
+ * ?folder=<folder id> (absent = all folders)
1995
+ *
1996
+ * Unknown values fall back to the default rather than erroring. Writes use
1997
+ * history replace, so toggling chips does not flood the back stack, and a
1998
+ * default value removes its parameter so plain `/workflows/list` stays clean.
1999
+ */
2000
+ const WORKFLOWS_LIST_PARAMS = {
2001
+ access: "access",
2002
+ status: "status",
2003
+ folder: "folder"
2004
+ };
2005
+ /** The workflow statuses the list's status chips offer. */
2006
+ const WORKFLOW_LIST_STATUSES = [
2007
+ "ACTIVE",
2008
+ "DRAFT",
2009
+ "ARCHIVED",
2010
+ "DEPRECATED"
2011
+ ];
2012
+ const ACCESS_BY_PARAM = {
2013
+ all: "ALL",
2014
+ mine: "OWNED_BY_ME",
2015
+ shared: "SHARED_WITH_ME"
2016
+ };
2017
+ const PARAM_BY_ACCESS = {
2018
+ ["ALL"]: null,
2019
+ ["OWNED_BY_ME"]: "mine",
2020
+ ["SHARED_WITH_ME"]: "shared"
2021
+ };
2022
+ function accessFromParam(value) {
2023
+ if (!value) return "ALL";
2024
+ return ACCESS_BY_PARAM[value.trim().toLowerCase()] ?? "ALL";
2025
+ }
2026
+ function accessToParam(access) {
2027
+ return PARAM_BY_ACCESS[access];
2028
+ }
2029
+ function isWorkflowListStatus(value) {
2030
+ return WORKFLOW_LIST_STATUSES.includes(value);
2031
+ }
2032
+ /** `archived` / `ARCHIVED` → `ARCHIVED`; anything unknown → no filter. */
2033
+ function statusFromParam(value) {
2034
+ if (!value) return null;
2035
+ const upper = value.trim().toUpperCase();
2036
+ return isWorkflowListStatus(upper) ? upper : null;
2037
+ }
2038
+ function statusToParam(status) {
2039
+ if (!status) return null;
2040
+ const upper = status.toUpperCase();
2041
+ return isWorkflowListStatus(upper) ? upper.toLowerCase() : null;
2042
+ }
2043
+ function folderFromParam(value) {
2044
+ const trimmed = value?.trim();
2045
+ return trimmed ? trimmed : null;
2046
+ }
2047
+ /**
2048
+ * Applies a filter patch to a copy of `params`. Keys missing from the patch
2049
+ * are left untouched; default values delete their parameter. Unrelated
2050
+ * parameters (e.g. `?action=`) are preserved.
2051
+ */
2052
+ function applyFilterPatch(params, patch) {
2053
+ const next = new URLSearchParams(params);
2054
+ const write = (key, value) => {
2055
+ if (value === null) next.delete(key);
2056
+ else next.set(key, value);
2057
+ };
2058
+ if (patch.access !== void 0) write(WORKFLOWS_LIST_PARAMS.access, accessToParam(patch.access));
2059
+ if (patch.status !== void 0) write(WORKFLOWS_LIST_PARAMS.status, statusToParam(patch.status));
2060
+ if (patch.folder !== void 0) write(WORKFLOWS_LIST_PARAMS.folder, folderFromParam(patch.folder));
2061
+ return next;
2062
+ }
2063
+ function useWorkflowsListUrlState() {
2064
+ const [searchParams, setSearchParams] = useSearchParams();
2065
+ const access = accessFromParam(searchParams.get(WORKFLOWS_LIST_PARAMS.access));
2066
+ const status = statusFromParam(searchParams.get(WORKFLOWS_LIST_PARAMS.status));
2067
+ const folder = folderFromParam(searchParams.get(WORKFLOWS_LIST_PARAMS.folder));
2068
+ const update = useCallback((patch) => {
2069
+ setSearchParams((prev) => applyFilterPatch(prev, patch), { replace: true });
2070
+ }, [setSearchParams]);
2071
+ return useMemo(() => ({
2072
+ access,
2073
+ status,
2074
+ folder,
2075
+ update,
2076
+ setAccess: (next) => update({ access: next }),
2077
+ setStatus: (next) => update({ status: next }),
2078
+ setFolder: (next) => update({ folder: next })
2079
+ }), [
2080
+ access,
2081
+ status,
2082
+ folder,
2083
+ update
2084
+ ]);
2085
+ }
2086
+
1978
2087
  // src/pages/WorkflowsList.tsx
1979
2088
  var WorkflowsList_exports = /* @__PURE__ */ __exportAll({ WorkflowsList: () => WorkflowsList });
1980
2089
  function useStatusFilters() {
@@ -2037,7 +2146,8 @@ function WorkflowsList() {
2037
2146
  const STATUS_FILTERS = useStatusFilters();
2038
2147
  const ACCESS_FILTERS = useAccessFilters();
2039
2148
  const workspaceId = useContext(FluidGridsContext)?.workspaceId ?? "";
2040
- const [accessFilter, setAccessFilter] = useState("ALL");
2149
+ const urlFilters = useWorkflowsListUrlState();
2150
+ const { access: accessFilter, status: statusFilter, folder: folderFilter, setAccess: setAccessFilter, setStatus: setStatusFilter, setFolder: setFolderFilter } = urlFilters;
2041
2151
  const { workflows, loading, error, tagsByKey, refetch } = useWorkflowDefinitions({
2042
2152
  limit: 100,
2043
2153
  latestOnly: true,
@@ -2047,18 +2157,24 @@ function WorkflowsList() {
2047
2157
  const [moving, setMoving] = useState(null);
2048
2158
  const filteredByAccess = accessFilter !== "ALL";
2049
2159
  const { getWorkflow } = useLazyWorkflowDefinition();
2050
- const { allowed: canCreate } = useFluidGridsPermission(FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE);
2160
+ const createPermission = useFluidGridsPermission(FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE);
2161
+ const canCreate = createPermission.allowed;
2162
+ const importRequest = useActionParam(ACTION_PARAM_VALUES.import, createPermission);
2163
+ const newFolderRequest = useActionParam(ACTION_PARAM_VALUES.newFolder);
2051
2164
  const [search, setSearch] = useState("");
2052
- const [statusFilter, setStatusFilter] = useState(null);
2053
2165
  const [tagFilter, setTagFilter] = useState(null);
2054
- const [folderFilter, setFolderFilter] = useState(null);
2055
2166
  const [projectFilter, setProjectFilter] = useState(null);
2056
2167
  const [selectMode, setSelectMode] = useState(false);
2057
2168
  const [selectedIds, setSelectedIds] = useState(/* @__PURE__ */ new Set());
2058
2169
  const presentStatuses = useMemo(() => {
2059
2170
  const seen = new Set(workflows.map((w) => w.status ?? "DRAFT"));
2171
+ if (statusFilter) seen.add(statusFilter);
2060
2172
  return STATUS_FILTERS.filter((s) => seen.has(s.value));
2061
- }, [workflows, STATUS_FILTERS]);
2173
+ }, [
2174
+ workflows,
2175
+ STATUS_FILTERS,
2176
+ statusFilter
2177
+ ]);
2062
2178
  const presentTags = useMemo(() => {
2063
2179
  const byId = /* @__PURE__ */ new Map();
2064
2180
  for (const w of workflows) for (const a of tagsByKey[w.workflowKey] ?? []) if (!byId.has(a.tagId)) byId.set(a.tagId, {
@@ -2188,7 +2304,9 @@ function WorkflowsList() {
2188
2304
  children: [
2189
2305
  /* @__PURE__ */ jsx(WorkflowFolderSidebar, {
2190
2306
  selectedFolderId: folderFilter,
2191
- onSelectFolder: setFolderFilter
2307
+ onSelectFolder: setFolderFilter,
2308
+ createRequested: newFolderRequest.requested,
2309
+ onCreateRequestHandled: newFolderRequest.handled
2192
2310
  }),
2193
2311
  /* @__PURE__ */ jsxs("div", {
2194
2312
  className: "flex flex-1 flex-col gap-5 p-4 sm:p-6",
@@ -2223,7 +2341,11 @@ function WorkflowsList() {
2223
2341
  ]
2224
2342
  }),
2225
2343
  createButton,
2226
- /* @__PURE__ */ jsx(WorkflowImportDialog, { onImported: () => void refetch() })
2344
+ /* @__PURE__ */ jsx(WorkflowImportDialog, {
2345
+ onImported: () => void refetch(),
2346
+ openRequested: importRequest.requested,
2347
+ onOpenRequestHandled: importRequest.handled
2348
+ })
2227
2349
  ]
2228
2350
  }),
2229
2351
  !loading && !error && /* @__PURE__ */ jsx(FirstWorkflowChecklist, {
@@ -2276,7 +2398,7 @@ function WorkflowsList() {
2276
2398
  className: "size-4"
2277
2399
  }), tr("fluidgrids.workflowsList.bulk.selectToggle", "Select")]
2278
2400
  }),
2279
- presentStatuses.length > 1 && /* @__PURE__ */ jsxs("div", {
2401
+ (presentStatuses.length > 1 || statusFilter !== null) && /* @__PURE__ */ jsxs("div", {
2280
2402
  className: "flex flex-wrap items-center gap-1.5",
2281
2403
  children: [/* @__PURE__ */ jsx("button", {
2282
2404
  type: "button",
@@ -2285,7 +2407,7 @@ function WorkflowsList() {
2285
2407
  children: tr("fluidgrids.workflowsList.statusFilterAll", "All")
2286
2408
  }), presentStatuses.map((s) => /* @__PURE__ */ jsx("button", {
2287
2409
  type: "button",
2288
- onClick: () => setStatusFilter((cur) => cur === s.value ? null : s.value),
2410
+ onClick: () => setStatusFilter(statusFilter === s.value ? null : s.value),
2289
2411
  className: cn("rounded-full border px-3 py-1 text-xs font-medium transition-colors", statusFilter === s.value ? "border-transparent bg-primary text-primary-foreground" : "border-border bg-card text-muted-foreground hover:text-foreground"),
2290
2412
  children: s.label
2291
2413
  }, s.value))]
@@ -2365,9 +2487,12 @@ function WorkflowsList() {
2365
2487
  size: "sm",
2366
2488
  onClick: () => {
2367
2489
  setSearch("");
2368
- setStatusFilter(null);
2369
2490
  setTagFilter(null);
2370
- setAccessFilter("ALL");
2491
+ urlFilters.update({
2492
+ status: null,
2493
+ folder: null,
2494
+ access: "ALL"
2495
+ });
2371
2496
  },
2372
2497
  children: tr("fluidgrids.workflowsList.clearFiltersButton", "Clear filters")
2373
2498
  })
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { a as triggerNodesOf, i as pickTriggerNode, n as AgentCalloutOverlay, r as createFluidGridsAgentTools, t as createUiMarkTools } from "./uiMarkTools-nlmzsHQM.js";
2
+ import { a as triggerNodesOf, i as pickTriggerNode, n as AgentCalloutOverlay, r as createFluidGridsAgentTools, t as createUiMarkTools } from "./uiMarkTools-DZ6akjQK.js";
3
3
  import { n as useAgentMarksStore, t as resetAgentMarks } from "./marksStore-DGCXjTmZ.js";
4
4
 
5
5
  export { AgentCalloutOverlay, createFluidGridsAgentTools, createUiMarkTools, pickTriggerNode, resetAgentMarks, triggerNodesOf, useAgentMarksStore };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { At as useSaveStatusStore, J as paramsFromOperation, K as nodeTitle, L as createConfiguredNode, W as fixedParameterState, Y as selectedOperationOf, _ as registryNodeData, f as isNodeConfigsInitialized, o as NODE_CONFIGS, pt as autosaveAllowedFor, xt as isFlowComplete } from "./FluidGridsProvider-CRGXDZX1.js";
2
+ import { B as createConfiguredNode, Nt as useSaveStatusStore, Q as selectedOperationOf, R as SENSITIVE_PARAM, Y as nodeTitle, Z as paramsFromOperation, _ as registryNodeData, f as isNodeConfigsInitialized, gt as autosaveAllowedFor, o as NODE_CONFIGS, q as fixedParameterState, wt as isFlowComplete } from "./FluidGridsProvider-CWyQ8ziM.js";
3
3
  import { E as resolveOutputHandles, H as useFlowStore, T as resolveInputHandles } from "./node-operation-selection--oy-yEq_.js";
4
- import { j as isNodeTypeHiddenFromPalette } from "./TemplateCard-BuP6_QX8.js";
5
- import { y as computeAttachPosition } from "./flow-builder-KbM4vIW8.js";
4
+ import { j as isNodeTypeHiddenFromPalette } from "./TemplateCard-6W2q2wiK.js";
5
+ import { g as computeAttachPosition } from "./flow-builder-CE8cNXNi.js";
6
6
  import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
7
7
  import { z } from "zod";
8
8
 
@@ -33,7 +33,6 @@ const MAX_EDGES_LISTED = 60;
33
33
  const MAX_TYPES_LISTED = 15;
34
34
  const POSITION_GAP_X = 400;
35
35
  const nodeId = z.string().trim().min(1).max(100).describe("A node id from fg_canvas_read.");
36
- const SENSITIVE_PARAM = /pass(word)?|secret|token|api[-_]?key|private[-_]?key|credential|connection/i;
37
36
  function store() {
38
37
  return useFlowStore.getState();
39
38
  }
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { createContext, useContext, useEffect, useRef, useState } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ // src/askAbout/askAboutBridge.tsx
6
+ /**
7
+ * ★ BOFF-11897 "Ask AI about this" bridge.
8
+ *
9
+ * The SDK's pages mark what a person can ask the assistant about (a canvas
10
+ * step, a run's step, a run's error). The menu, the chip and the note the
11
+ * model reads are the HOST's assistant (fe-libs `askAbout`), so the host
12
+ * mounts {@link FluidGridsAskAboutBridge} with its own `attach` functions and
13
+ * the pages call {@link useFgAskable} / {@link useFgAskableSelection}.
14
+ *
15
+ * ★★ The SDK deliberately does NOT import `@burdenoff/fe-libs/shared/assistant/*`
16
+ * (see `assistant/pageControlsBridge.tsx`): many consumers pin an older fe-libs,
17
+ * and a runtime import would raise their floor. The types below are structural
18
+ * mirrors of fe-libs' `AssistantFocusInput` and `attachAskable`, so a host passes
19
+ * fe-libs' functions straight in.
20
+ *
21
+ * Contract:
22
+ * - No provider mounted (a third-party embed): every hook is a no-op and the
23
+ * page renders and behaves exactly as before.
24
+ * - A description holds only what the page already shows the person, and never
25
+ * a secret value (see `describeAskables.ts`).
26
+ * - Give the provider a STABLE `host` (a module constant): a new object every
27
+ * render re-attaches every askable thing every render.
28
+ */
29
+ const AskAboutContext = createContext(null);
30
+ const FluidGridsAskAboutBridge = ({ host, children }) => /* @__PURE__ */ jsx(AskAboutContext.Provider, {
31
+ value: host,
32
+ children
33
+ });
34
+ function useAttached(attach, describe, disabled) {
35
+ const [element, setElement] = useState(null);
36
+ const describeRef = useRef(describe);
37
+ useEffect(() => {
38
+ describeRef.current = describe;
39
+ }, [describe]);
40
+ useEffect(() => {
41
+ if (!attach || !element || disabled) return;
42
+ return attach(element, () => describeRef.current());
43
+ }, [
44
+ attach,
45
+ element,
46
+ disabled
47
+ ]);
48
+ return setElement;
49
+ }
50
+ /**
51
+ * Marks an element as askable (right-click, long-press, the menu key). Returns
52
+ * a ref callback; the latest `describe` is used when the person asks.
53
+ */
54
+ function useFgAskable(describe, options = {}) {
55
+ return useAttached(useContext(AskAboutContext)?.attach ?? null, describe, options.disabled === true);
56
+ }
57
+ /**
58
+ * Marks a block whose text the person can select and ask about. `describe`
59
+ * names the block; the host adds the selected text.
60
+ */
61
+ function useFgAskableSelection(describe) {
62
+ return useAttached(useContext(AskAboutContext)?.attachSelection ?? null, describe, false);
63
+ }
64
+
65
+ export { useFgAskable as n, useFgAskableSelection as r, FluidGridsAskAboutBridge as t };
@@ -14,6 +14,35 @@ interface FluidGridsAiCreditsBridgeProps {
14
14
  export declare const FluidGridsAiCreditsBridge: FC<FluidGridsAiCreditsBridgeProps>;
15
15
  export declare const AiCreditBalanceSlot: FC<FgAiCreditBalanceProps>;
16
16
  export declare function notifyFluidGridsAiCreditsUpdated(): void;
17
+ interface FgAskFact {
18
+ readonly label: string;
19
+ readonly value: string;
20
+ }
21
+ interface FgAskFocusInput {
22
+ readonly kind: string;
23
+ readonly label: string;
24
+ readonly id?: string;
25
+ readonly facts?: readonly FgAskFact[];
26
+ readonly selectedText?: string;
27
+ readonly pointBack?: {
28
+ readonly tool: string;
29
+ readonly args: Readonly<Record<string, string | number>>;
30
+ };
31
+ }
32
+ type FgAskDescribe = () => FgAskFocusInput | null;
33
+ interface FgAskAboutHost {
34
+ readonly attach: (element: HTMLElement, describe: FgAskDescribe) => () => void;
35
+ readonly attachSelection: (element: HTMLElement, describe: FgAskDescribe) => () => void;
36
+ }
37
+ interface FluidGridsAskAboutBridgeProps {
38
+ host: FgAskAboutHost;
39
+ children?: ReactNode;
40
+ }
41
+ export declare const FluidGridsAskAboutBridge: FC<FluidGridsAskAboutBridgeProps>;
42
+ export declare function useFgAskable(describe: FgAskDescribe, options?: {
43
+ disabled?: boolean;
44
+ }): (element: HTMLElement | null) => void;
45
+ export declare function useFgAskableSelection(describe: FgAskDescribe): (element: HTMLElement | null) => void;
17
46
  interface FgAssistantRun {
18
47
  readonly runId: string;
19
48
  readonly conversationId: string;
@@ -44,4 +73,4 @@ interface FluidGridsAssistantLiveCanvasOptions {
44
73
  }
45
74
  export declare function createFluidGridsAssistantLiveCanvas(options?: FluidGridsAssistantLiveCanvasOptions): FgAssistantPreviewController;
46
75
  export declare function useFluidGridsAssistantLiveCanvas(options?: FluidGridsAssistantLiveCanvasOptions): FgAssistantPreviewController;
47
- export { type FgAiCreditBalanceProps, type FgAssistantActionResult, type FgAssistantPreviewController, type FgAssistantPreviewEvent, type FgAssistantRun, type FgEnumFilterSpec, type FgFilterOption, type FgPageControlsSpec, type FgRegisterPageControls, type FgTabsSpec, type FluidGridsAiCreditsBridgeProps, FluidGridsAssistantBridge, type FluidGridsAssistantBridgeProps, type FluidGridsAssistantLiveCanvasOptions, useFluidGridsPageControls };
76
+ export { type FgAiCreditBalanceProps, type FgAskAboutHost, type FgAskDescribe, type FgAskFact, type FgAskFocusInput, type FgAssistantActionResult, type FgAssistantPreviewController, type FgAssistantPreviewEvent, type FgAssistantRun, type FgEnumFilterSpec, type FgFilterOption, type FgPageControlsSpec, type FgRegisterPageControls, type FgTabsSpec, type FluidGridsAiCreditsBridgeProps, type FluidGridsAskAboutBridgeProps, FluidGridsAssistantBridge, type FluidGridsAssistantBridgeProps, type FluidGridsAssistantLiveCanvasOptions, useFluidGridsPageControls };
package/dist/assistant.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { n as useFluidGridsPageControls, t as FluidGridsAssistantBridge } from "./pageControlsBridge-0pX9s-3k.js";
3
3
  import { a as notifyFluidGridsAiCreditsUpdated, i as FluidGridsAiCreditsBridge, n as FLUIDGRIDS_AI_CREDITS_UPDATED_EVENT, r as FLUIDGRIDS_AI_PRODUCT_KEY, t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
4
+ import { n as useFgAskable, r as useFgAskableSelection, t as FluidGridsAskAboutBridge } from "./askAboutBridge-BV8m95kk.js";
4
5
  import { r as useFluidGridsAssistantLiveCanvas, t as createFluidGridsAssistantLiveCanvas } from "./liveCanvas-D5ytXDp8.js";
5
6
 
6
- export { AiCreditBalanceSlot, FLUIDGRIDS_AI_CREDITS_UPDATED_EVENT, FLUIDGRIDS_AI_PRODUCT_KEY, FluidGridsAiCreditsBridge, FluidGridsAssistantBridge, createFluidGridsAssistantLiveCanvas, notifyFluidGridsAiCreditsUpdated, useFluidGridsAssistantLiveCanvas, useFluidGridsPageControls };
7
+ export { AiCreditBalanceSlot, FLUIDGRIDS_AI_CREDITS_UPDATED_EVENT, FLUIDGRIDS_AI_PRODUCT_KEY, FluidGridsAiCreditsBridge, FluidGridsAskAboutBridge, FluidGridsAssistantBridge, createFluidGridsAssistantLiveCanvas, notifyFluidGridsAiCreditsUpdated, useFgAskable, useFgAskableSelection, useFluidGridsAssistantLiveCanvas, useFluidGridsPageControls };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { n as useAgentMarksStore, r as toPlainText } from "./marksStore-DGCXjTmZ.js";
3
- import { J as paramsFromOperation, K as nodeTitle, Y as selectedOperationOf } from "./FluidGridsProvider-CRGXDZX1.js";
3
+ import { Q as selectedOperationOf, Y as nodeTitle, Z as paramsFromOperation } from "./FluidGridsProvider-CWyQ8ziM.js";
4
4
  import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
5
- import { g as notesKeyOf } from "./flow-builder-KbM4vIW8.js";
5
+ import { p as notesKeyOf } from "./flow-builder-CE8cNXNi.js";
6
6
  import { AgentToolError, defineAgentTool } from "@burdenoff/fe-libs/shared/agent-tools";
7
7
  import { z } from "zod";
8
8
 
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { g as toCodeMirrorDiagnostics } from "./node-operation-selection--oy-yEq_.js";
4
- import { Ln as useBuilderReadOnly } from "./FluidGridsProvider-CRGXDZX1.js";
4
+ import { Bn as useBuilderReadOnly } from "./FluidGridsProvider-CWyQ8ziM.js";
5
5
  import { useEffect, useMemo, useRef, useState } from "react";
6
6
  import { cn } from "@burdenoff/fe-libs/utils";
7
7
  import { jsx } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as ExecutionsListPage } from "./ExecutionsListPage-Dcc6wi-8.js";
3
- import { t as ExecutionDetailPage } from "./ExecutionDetailPage-C0q5brcQ.js";
2
+ import { t as ExecutionsListPage } from "./ExecutionsListPage-D63aCXJH.js";
3
+ import { t as ExecutionDetailPage } from "./ExecutionDetailPage-DYLWtHRG.js";
4
4
 
5
5
  export { ExecutionDetailPage, ExecutionsListPage };