@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.
- package/README.md +13 -0
- package/dist/{AiStudioPage-CmjZwaoy.js → AiStudioPage-DIfF4LhQ.js} +5 -5
- package/dist/{DataSinkDashboardPage-auvILMSt.js → DataSinkDashboardPage-DDvNPS8Z.js} +1 -1
- package/dist/{DataTablesPage-BZy2z0LB.js → DataTablesPage-BpnF13UT.js} +9 -1
- package/dist/{ExecutionDetailPage-C0q5brcQ.js → ExecutionDetailPage-DYLWtHRG.js} +60 -13
- package/dist/{ExecutionsListPage-Dcc6wi-8.js → ExecutionsListPage-D63aCXJH.js} +4 -4
- package/dist/{FluidGridsProvider-CRGXDZX1.js → FluidGridsProvider-CWyQ8ziM.js} +364 -98
- package/dist/{HistoryPage-B5Np7Dd_.js → HistoryPage-CNXgUMb0.js} +1 -1
- package/dist/{InsightsPage-CQ8sB4d6.js → InsightsPage-Duo83yAM.js} +1 -1
- package/dist/{MissingNodesInstallModal-Dm1m3Ysp.js → MissingNodesInstallModal-Q3RYBvS8.js} +1 -1
- package/dist/{QuotaExhaustedDialog-DYCpMOyQ.js → QuotaExhaustedDialog-ChBoJnRo.js} +3 -2
- package/dist/{SettingsPage-BNJV7nwG.js → SettingsPage-DI_vIG7t.js} +2 -2
- package/dist/{TemplateCard-BuP6_QX8.js → TemplateCard-6W2q2wiK.js} +4 -3
- package/dist/{TemplateConfigurationModal--YswnkOD.js → TemplateConfigurationModal-qNQGP7cm.js} +1 -1
- package/dist/{TemplateDetailPanel-CtUjihCQ.js → TemplateDetailPanel-CQvYqhVO.js} +1 -1
- package/dist/{TemplatePreview-TH3zVEtT.js → TemplatePreview-t3251W_n.js} +4 -4
- package/dist/{TemplatesPage-BDiIswSv.js → TemplatesPage-Bvg6R2P9.js} +6 -5
- package/dist/{WorkflowBuilder-KypUzhmK.js → WorkflowBuilder-C-hgvww2.js} +3 -3
- package/dist/{WorkflowBuilder-DnTqzYD5.js → WorkflowBuilder-DdvSGsxr.js} +8 -8
- package/dist/{WorkflowSearchRedirect-DAA2K0Md.js → WorkflowSearchRedirect-33Vs4FKc.js} +1 -1
- package/dist/{WorkflowsList-BWdu8wj0.js → WorkflowsList-C3bHLpSv.js} +147 -22
- package/dist/agent-tools.js +1 -1
- package/dist/{agentTools-VQXDvw4O.js → agentTools-BjhxAdlt.js} +3 -4
- package/dist/askAboutBridge-BV8m95kk.js +65 -0
- package/dist/assistant.d.ts +30 -1
- package/dist/assistant.js +2 -1
- package/dist/{canvasNoteTools-CCQtxq7U.js → canvasNoteTools-CZEFFhRp.js} +2 -2
- package/dist/{code-editor-field-4j1LiULY.js → code-editor-field-CfP0QYUD.js} +1 -1
- package/dist/executions.js +2 -2
- package/dist/{flow-builder-KbM4vIW8.js → flow-builder-CE8cNXNi.js} +16 -73
- package/dist/fluidgridsEvents-Dm5CaHtr.js +162 -0
- package/dist/history.js +1 -1
- package/dist/{index-6JR2vD9J.d.ts → index-7eJQwsNS.d.ts} +3 -19
- package/dist/index.d.ts +2 -1
- package/dist/index.js +29 -27
- package/dist/{node-detail-view-CeOkSF2C.js → node-detail-view-BoR0vYZ3.js} +5 -5
- package/dist/{node-editor-tab-body-CN89wDV7.js → node-editor-tab-body-DxMbKspp.js} +2 -2
- package/dist/observability.d.ts +1 -1
- package/dist/observability.js +2 -2
- package/dist/{popover-CxKbvYSJ.js → popover-B1aKz7DC.js} +1 -1
- package/dist/{quick-config-panel-wfP0s4QO.js → quick-config-panel-DXvLJdeW.js} +3 -3
- package/dist/quota-Cdt8yz7N.js +152 -0
- package/dist/quota.d.ts +3 -0
- package/dist/quota.js +4 -0
- package/dist/runsQuota-DsniKiSg.d.ts +20 -0
- package/dist/runsQuota-DvXR6mRN.js +100 -0
- package/dist/{schedule-panel-2HgyHvO8.js → schedule-panel-CY6S4JMd.js} +5 -5
- package/dist/settings.js +1 -1
- package/dist/{sidebar-node-editor-DLOVQATw.js → sidebar-node-editor-FU3fvOjh.js} +3 -3
- package/dist/templates.js +2 -2
- package/dist/{uiMarkTools-nlmzsHQM.js → uiMarkTools-DZ6akjQK.js} +1 -1
- package/dist/useActionParam-B0ebTZmg.js +83 -0
- package/dist/{useDurableParity-CJvnfF3T.js → useDurableParity-BApRraSO.js} +1 -1
- package/dist/{useExecutions-CyXkJtpk.js → useExecutions-C2a4EcvC.js} +2 -2
- package/dist/{useObservability-QZjFuXnI.js → useObservability-BmbeK5bG.js} +2 -2
- package/dist/{useRunHistory-D4gaa81A.js → useRunHistory-CqfDFRzr.js} +1 -1
- package/dist/{useWorkflowCodeExport-BNGq3BJ9.js → useWorkflowCodeExport-DebpM48M.js} +1 -1
- package/dist/{useWorkflows-XsfD7JA-.js → useWorkflows-D1-rYzGK.js} +2 -2
- package/dist/workflow-builder.js +4 -4
- package/dist/workflow-pages.d.ts +1 -1
- package/dist/workflow-pages.js +14 -14
- package/dist/workflows-list.d.ts +6 -0
- package/dist/workflows-list.js +3 -2
- package/package.json +5 -1
- 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-
|
|
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-
|
|
5
|
-
import { a as useTemplateImportFlow, l as useImportWorkflowTemplate } from "./TemplateCard-
|
|
6
|
-
import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-
|
|
4
|
+
import { t as FlowBuilderPage } from "./flow-builder-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 {
|
|
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-
|
|
4
|
-
import { a as useTemplateImportFlow, t as TemplateCard, u as useWorkflowTemplates, y as useGlobalStoreClient } from "./TemplateCard-
|
|
3
|
+
import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-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-
|
|
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,
|
|
10
|
-
import { a as emitTemplateUsed
|
|
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 {
|
|
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-
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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-
|
|
12
|
-
import { c as getWorkflowNodeTypes, o as buildNodeCheck, s as buildRequiredNodeTypes, v as useInstalledNodes } from "./TemplateCard-
|
|
11
|
+
import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-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 {
|
|
15
|
-
import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
4
|
-
import {
|
|
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-
|
|
6
|
-
import {
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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
|
-
}, [
|
|
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, {
|
|
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(
|
|
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
|
-
|
|
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
|
})
|
package/dist/agent-tools.js
CHANGED
|
@@ -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-
|
|
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 {
|
|
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-
|
|
5
|
-
import {
|
|
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 };
|
package/dist/assistant.d.ts
CHANGED
|
@@ -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 {
|
|
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 {
|
|
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 {
|
|
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";
|
package/dist/executions.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as ExecutionsListPage } from "./ExecutionsListPage-
|
|
3
|
-
import { t as ExecutionDetailPage } from "./ExecutionDetailPage-
|
|
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 };
|