@burdenoff/fluidgrids-fe-sdk 2026.1112.4 → 2026.1112.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AiStudioPage-C-jio5Bz.js → AiStudioPage-BNmXx6LB.js} +10 -10
- package/dist/{ApprovalInboxPage-D8vhnloO.js → ApprovalInboxPage-QAJim81n.js} +3 -2
- package/dist/{DataSinkDashboardPage-CRBsNjoS.js → DataSinkDashboardPage-kyzcjpzL.js} +4 -4
- package/dist/{DataTablesPage-DoVBkb_T.js → DataTablesPage-Dm-dzVPD.js} +4 -4
- package/dist/{EntityTagPicker-Dk3CufFt.js → EntityTagPicker-dxfzv8aO.js} +1 -1
- package/dist/{ExecutionDetailPage-Cw4zyaIG.js → ExecutionDetailPage-B9eEep77.js} +977 -509
- package/dist/{ExecutionsListPage-BgeqwVr2.js → ExecutionsListPage-DuuPSVEj.js} +831 -146
- package/dist/{FailureTriagePanel-BzD4UJU5.js → FailureTriagePanel-D4lJ4zqQ.js} +1 -1
- package/dist/{FluidGridsProvider-BFfTxl9m.js → FluidGridsProvider-B1hgCbxG.js} +7 -7
- package/dist/{HistoryPage-DktteURI.js → HistoryPage-C7NwkVNC.js} +4 -4
- package/dist/{HumanRequestCard-mOhr-Ic9.js → HumanRequestCard-lbWDpWd7.js} +4 -216
- package/dist/{InsightsPage-2jnYlozA.js → InsightsPage-D9B_qW8e.js} +10 -10
- package/dist/{MissingNodesInstallModal-C0wPwR0Q.js → MissingNodesInstallModal-BkkgeFeN.js} +1 -1
- package/dist/{NodesPage-Dhg5Q2R5.js → NodesPage-BEeUbIts.js} +4 -4
- package/dist/{QuotaExhaustedDialog-BKZ9moP8.js → QuotaExhaustedDialog-Bj7AG_0y.js} +1 -1
- package/dist/{RunnersPage-CLCOCclc.js → RunnersPage-D9Bgod_d.js} +4 -4
- package/dist/{SettingsPage-BaM98QU_.js → SettingsPage-k21044-Z.js} +16 -16
- package/dist/{TagFilterSelect-VC6JMK3F.js → TagFilterSelect-CqhxcDjh.js} +1 -1
- package/dist/{TaskQueuesPage-C3R5ZoKs.js → TaskQueuesPage-B86p51gH.js} +2 -2
- package/dist/{TemplateCard-DYDVNYo6.js → TemplateCard-DanOe65C.js} +3 -3
- package/dist/{TemplateConfigurationModal-BzdkGWim.js → TemplateConfigurationModal-CeMpPEhT.js} +3 -3
- package/dist/{TemplateDetailPanel-s4EqQhra.js → TemplateDetailPanel-DnoA6mC3.js} +2 -2
- package/dist/{TemplatePreview-B_-zS_Mm.js → TemplatePreview-CBwvi0ga.js} +4 -4
- package/dist/{TemplatesPage-OIMd6cIl.js → TemplatesPage-C7f2xq12.js} +14 -14
- package/dist/{VariablesPage-67WR_lVE.js → VariablesPage-BtoLjmUA.js} +1 -1
- package/dist/{VersionDiffDialog-Cp2doV3f.js → VersionDiffDialog-pLpG_I1r.js} +4 -4
- package/dist/{WorkflowBuilder-B2tIOPi0.js → WorkflowBuilder-DDgWgnwH.js} +7 -7
- package/dist/{WorkflowBuilder-DD4UIAjC.js → WorkflowBuilder-DmYS5JEY.js} +12 -12
- package/dist/{WorkflowProposalCard-U31u1qcw.js → WorkflowProposalCard-BjYAZH3q.js} +1 -1
- package/dist/{WorkflowSearchRedirect-BhXzWDj7.js → WorkflowSearchRedirect-iPQBL6WO.js} +1 -1
- package/dist/{WorkflowShareDialog-Dv46nAyh.js → WorkflowShareDialog-DB-qJLB2.js} +1 -1
- package/dist/{WorkflowsList-BV-2J_gG.js → WorkflowsList-rOxlI49U.js} +13 -13
- package/dist/{agentTools-EVdEThES.js → agentTools-B4Gjf8R7.js} +4 -4
- package/dist/{api-DwaHAJtA.js → api-Dvitj1aT.js} +1 -1
- package/dist/{api-C8WmUejq.js → api-JpNuowX4.js} +1 -1
- package/dist/{canvasNoteTools-C5Vf0pxu.js → canvasNoteTools-Bve4Fo7R.js} +3 -3
- package/dist/{code-editor-field-o7qp9eTq.js → code-editor-field-yJZEDJBi.js} +2 -2
- package/dist/{constants-B2lhWNoN.js → constants-dcxg6zG6.js} +2 -2
- package/dist/{definition-canvas-F8DGty5m.js → definition-canvas-Bshn_dSP.js} +1 -1
- package/dist/executions.js +2 -2
- package/dist/{flow-builder-Dn4PCWuf.js → flow-builder-BPe5YNF6.js} +48 -48
- package/dist/{graphql-operation-types-BdU65FNm.js → graphql-operation-types-z2oXfQvM.js} +10 -1
- package/dist/history.js +1 -1
- package/dist/{index-DbTgk7dK.d.ts → index-u-kM0seP.d.ts} +3 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +40 -39
- package/dist/{node-detail-view-kWiwJEKr.js → node-detail-view-oAotM2EI.js} +18 -18
- package/dist/{node-editor-tab-body-C71Y0fRJ.js → node-editor-tab-body-DIcmar84.js} +6 -6
- package/dist/{node-endpoint-configs-BrzQMy10.js → node-endpoint-configs-typvqw2c.js} +1 -1
- package/dist/{node-operation-selection-icAhaNza.js → node-operation-selection-DAbS6jSY.js} +4 -4
- package/dist/nodes.js +1 -1
- package/dist/observability.d.ts +1 -1
- package/dist/observability.js +2 -2
- package/dist/{popover-v7g8TWmm.js → popover-DOeSGQOG.js} +3 -3
- package/dist/{quick-config-panel-C84vsDYD.js → quick-config-panel-Pm5nkZVr.js} +6 -6
- package/dist/{schedule-panel-BrNKy9DY.js → schedule-panel-Dizqz9eA.js} +29 -29
- package/dist/settings.js +1 -1
- package/dist/{sidebar-node-editor-D-2lPHwq.js → sidebar-node-editor-BNub2vUq.js} +4 -4
- package/dist/templates.js +2 -2
- package/dist/{useAgentDefinitions-DSU8Eek4.js → useAgentDefinitions-Uy6nhpKN.js} +1 -1
- package/dist/{useDurableParity-fFmfa97r.js → useDurableParity-Cb9nOdE8.js} +191 -4
- package/dist/{useEntityTags-C8rPBi6W.js → useEntityTags-D5C0tdLs.js} +1 -1
- package/dist/{useExecutions-DNGW4yxG.js → useExecutions-DJXtbA15.js} +59 -48
- package/dist/useHumanRequests-ZiR0sSzS.js +218 -0
- package/dist/{useObservability-u-MZCWUV.js → useObservability-Dfgh4yjv.js} +1 -1
- package/dist/{useRunHistory-x9bVUB9T.js → useRunHistory-BZQ3t68Q.js} +2 -2
- package/dist/{useWorkflowCodeExport-CV3SZeKm.js → useWorkflowCodeExport-D0zapXXm.js} +2 -2
- package/dist/{useWorkflows-CVb5zXKt.js → useWorkflows-CP-d3ygY.js} +2 -2
- package/dist/workflow-builder.js +5 -5
- package/dist/workflow-host.js +1 -1
- package/dist/workflow-pages.d.ts +1 -1
- package/dist/workflow-pages.js +19 -19
- package/dist/workflow-preview.js +4 -4
- package/dist/workflows-list.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
3
3
|
import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
4
|
-
import { An as SetRunFailureTriageEnabledDocument, _n as RunFailureClustersDocument, et as DismissRunFailureClusterDocument, gt as FgTriageFailedRunsDocument, vn as RunFailureTriageSettingsDocument } from "./graphql-operation-types-
|
|
4
|
+
import { An as SetRunFailureTriageEnabledDocument, _n as RunFailureClustersDocument, et as DismissRunFailureClusterDocument, gt as FgTriageFailedRunsDocument, vn as RunFailureTriageSettingsDocument } from "./graphql-operation-types-z2oXfQvM.js";
|
|
5
5
|
import { qD as RunFailureClusterStatus } from "./graphql-types-v6CTGwA0.js";
|
|
6
6
|
import { useCallback, useEffect, useState } from "react";
|
|
7
7
|
import { Icon } from "@iconify/react";
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { C as resetFluidGridsConfig, E as validateTrustedOrigin, T as setFluidGridsConfig, _ as throwIfResultError, a as resetFluidGridsClient, d as emitFluidGridsEvent, f as emitOperationErrorEvent, m as describeOperationError, n as getFluidGridsClient, o as setFluidGridsClient, p as emitRunCompletedOnce, r as getFluidGridsClientSafe, s as waitForFluidGridsClient, t as createFluidGridsClient, w as resetFluidGridsExecutionState, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
4
4
|
import { i as getGlobalStoreClient, o as resetGlobalStoreClient, r as createGlobalStoreClient, s as setGlobalStoreClient, t as provideNodeRegistryRefresh } from "./node-registry-refresh-Dy0uRg9f.js";
|
|
5
|
-
import { A as nodeAccent, C as nodeAdaptersOf, D as NodeCard, E as resolveOutputHandles, H as useFlowStore, I as partitionStickyNotes, L as resolveStickyColor, N as DEFAULT_STICKY_COLOR, O as NodeCardBody, P as STICKY_COLORS, R as stickySurfaceStyle, T as resolveInputHandles, V as STICKY_NOTE_TYPE, W as isNodeTrigger, _ as LogicNodeCard, b as alignPlainOutputEdges, i as WAIT_FOR_SIGNAL_NODE_TYPE, j as NodeTypeIcon, k as NodeCardHeader, l as interfaceFields, m as readSignalName, n as synchronizeOperationUpdate, p as readCodeWorkflowState, r as CODE_WORKFLOW_NODE_TYPE, t as resolveOperationName, u as interfaceHandlers, v as InputHandles, w as outputHandlesSpacerHeight, x as hasNodeManifest, y as OutputHandles } from "./node-operation-selection-
|
|
5
|
+
import { A as nodeAccent, C as nodeAdaptersOf, D as NodeCard, E as resolveOutputHandles, H as useFlowStore, I as partitionStickyNotes, L as resolveStickyColor, N as DEFAULT_STICKY_COLOR, O as NodeCardBody, P as STICKY_COLORS, R as stickySurfaceStyle, T as resolveInputHandles, V as STICKY_NOTE_TYPE, W as isNodeTrigger, _ as LogicNodeCard, b as alignPlainOutputEdges, i as WAIT_FOR_SIGNAL_NODE_TYPE, j as NodeTypeIcon, k as NodeCardHeader, l as interfaceFields, m as readSignalName, n as synchronizeOperationUpdate, p as readCodeWorkflowState, r as CODE_WORKFLOW_NODE_TYPE, t as resolveOperationName, u as interfaceHandlers, v as InputHandles, w as outputHandlesSpacerHeight, x as hasNodeManifest, y as OutputHandles } from "./node-operation-selection-DAbS6jSY.js";
|
|
6
6
|
import { n as FluidGridsTranslationProvider, r as useTr, t as ENGLISH_FALLBACK_TRANSLATOR } from "./TranslationBridge-Da-TPgQm.js";
|
|
7
7
|
import { s as useDurableFunctionNodesEnabled } from "./feature-flags-DM5myWaD.js";
|
|
8
|
-
import { Dn as SaveWorkflowDraftDocument, M as CreateWorkflowDefinitionDocument, Mt as NodePaletteEntriesDocument, Or as WorkflowDefinitionDocument, Yn as TriggerWorkflowDocument, ct as ExecutionDetailDocument, h as BuilderRunStatusDocument, jt as NodeManifestsDocument, m as BuilderRunNodeDetailsDocument, ot as EventRegistrationsDocument, st as ExecuteStepDocument, yn as RunFromNodeDocument, z as CreateWorkflowVersionDocument } from "./graphql-operation-types-
|
|
8
|
+
import { Dn as SaveWorkflowDraftDocument, M as CreateWorkflowDefinitionDocument, Mt as NodePaletteEntriesDocument, Or as WorkflowDefinitionDocument, Yn as TriggerWorkflowDocument, ct as ExecutionDetailDocument, h as BuilderRunStatusDocument, jt as NodeManifestsDocument, m as BuilderRunNodeDetailsDocument, ot as EventRegistrationsDocument, st as ExecuteStepDocument, yn as RunFromNodeDocument, z as CreateWorkflowVersionDocument } from "./graphql-operation-types-z2oXfQvM.js";
|
|
9
9
|
import { a as collectExtensions, n as QUOTA_EXHAUSTED_CODE, o as errorCodesOf, r as RUNS_QUOTA_NAME, s as findQuotaRefusal } from "./quota-Cdt8yz7N.js";
|
|
10
10
|
import { i as emitRunStarted, n as emitRunFailed, r as emitRunLimitHit, s as emitWorkflowCreated } from "./fluidgridsEvents-Dm5CaHtr.js";
|
|
11
11
|
import { n as useFgAskable } from "./askAboutBridge-BV8m95kk.js";
|
|
12
|
-
import { t as fetchAllNodeEndpointConfigs } from "./node-endpoint-configs-
|
|
12
|
+
import { t as fetchAllNodeEndpointConfigs } from "./node-endpoint-configs-typvqw2c.js";
|
|
13
13
|
import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
14
14
|
import { useNavigate, useParams } from "react-router";
|
|
15
15
|
import { ApolloProvider } from "@apollo/client/react";
|
|
@@ -19,7 +19,7 @@ import { Icon } from "@iconify/react";
|
|
|
19
19
|
import { nanoid } from "nanoid";
|
|
20
20
|
import { cn } from "@burdenoff/fe-libs/utils";
|
|
21
21
|
import { nanoid as nanoid$1 } from "nanoid/non-secure";
|
|
22
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
23
23
|
import { toast } from "sonner";
|
|
24
24
|
import { nodeCategoryColor } from "@burdenoff/fe-libs/shared/utils";
|
|
25
25
|
import { gql } from "@apollo/client";
|
|
@@ -261,7 +261,7 @@ function StickyNoteNodeComponent({ id, selected, data }) {
|
|
|
261
261
|
className: cn("nodrag size-4 rounded-full border transition-transform hover:scale-125", name === colorKey ? "border-foreground" : "border-transparent"),
|
|
262
262
|
style: { backgroundColor: color }
|
|
263
263
|
}, name))
|
|
264
|
-
}) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
264
|
+
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
265
265
|
/* @__PURE__ */ jsx(ToolbarButton, {
|
|
266
266
|
title: tr("fluidgrids.builder.stickyNote.editNoteTooltip", "Edit note"),
|
|
267
267
|
onClick: startEditing,
|
|
@@ -5806,7 +5806,7 @@ function useRunGuard(startRun, options = {}) {
|
|
|
5806
5806
|
stepNodeId
|
|
5807
5807
|
]),
|
|
5808
5808
|
preparing,
|
|
5809
|
-
dialog: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(UnsavedRunDialog, {
|
|
5809
|
+
dialog: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(UnsavedRunDialog, {
|
|
5810
5810
|
open: confirmOpen,
|
|
5811
5811
|
onOpenChange: setConfirmOpen,
|
|
5812
5812
|
onRunSaved: () => {
|
|
@@ -6409,7 +6409,7 @@ function AdapterPort({ nodeId, adapter, index, total }) {
|
|
|
6409
6409
|
})
|
|
6410
6410
|
]
|
|
6411
6411
|
}),
|
|
6412
|
-
pickerOpen && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
|
|
6412
|
+
pickerOpen && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
6413
6413
|
className: "fixed inset-0 z-40",
|
|
6414
6414
|
onClick: () => setPickerOpen(false)
|
|
6415
6415
|
}), /* @__PURE__ */ jsxs("div", {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-
|
|
4
|
-
import { i as versionsOfWorkflow, t as VersionDiffDialog } from "./VersionDiffDialog-
|
|
3
|
+
import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-CP-d3ygY.js";
|
|
4
|
+
import { i as versionsOfWorkflow, t as VersionDiffDialog } from "./VersionDiffDialog-pLpG_I1r.js";
|
|
5
5
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
6
|
import { x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
7
7
|
import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
|
|
@@ -114,7 +114,7 @@ function HistoryTableSkeleton() {
|
|
|
114
114
|
children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsx(Skeleton, { className: "h-14 w-full rounded-lg bg-card-foreground/10" }, i))
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
|
-
function EmptyState() {
|
|
117
|
+
function EmptyState$1() {
|
|
118
118
|
const tr = useTr();
|
|
119
119
|
return /* @__PURE__ */ jsxs("div", {
|
|
120
120
|
className: "flex flex-col items-center justify-center py-20 text-center",
|
|
@@ -510,7 +510,7 @@ function HistoryPage() {
|
|
|
510
510
|
v2
|
|
511
511
|
})
|
|
512
512
|
}),
|
|
513
|
-
loading && !(v2 && allRows.length > 0) ? /* @__PURE__ */ jsx(HistoryTableSkeleton, {}) : filteredRows.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {}) : /* @__PURE__ */ jsx("div", {
|
|
513
|
+
loading && !(v2 && allRows.length > 0) ? /* @__PURE__ */ jsx(HistoryTableSkeleton, {}) : filteredRows.length === 0 ? /* @__PURE__ */ jsx(EmptyState$1, {}) : /* @__PURE__ */ jsx("div", {
|
|
514
514
|
className: "overflow-x-auto rounded-lg border border-border-secondary",
|
|
515
515
|
children: /* @__PURE__ */ jsxs("table", {
|
|
516
516
|
className: "w-full text-sm",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
4
|
+
import { n as useRespondToHumanRequest } from "./useHumanRequests-ZiR0sSzS.js";
|
|
5
|
+
import { useMemo, useState } from "react";
|
|
5
6
|
import { Icon } from "@iconify/react";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
8
|
import { toast } from "sonner";
|
|
8
|
-
import { gql } from "@apollo/client";
|
|
9
9
|
import { Badge, Card, CardContent, CardHeader, Input, Label, Textarea } from "@burdenoff/fe-libs/ui";
|
|
10
10
|
import { Button as Button$1 } from "@burdenoff/fe-libs/button";
|
|
11
11
|
import { buildActorFallback, useActorProfiles } from "@burdenoff/fe-libs/shared";
|
|
@@ -52,218 +52,6 @@ function useRecipientLabel(request, fallback) {
|
|
|
52
52
|
}).displayName : part).join(", ");
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
// src/modules/human-response/hooks/useHumanRequests.ts
|
|
56
|
-
/**
|
|
57
|
-
* Hooks for "Send and Wait for Response" (BOFF-7651): asks a workflow made of a person, the
|
|
58
|
-
* in-app inbox of asks still waiting, and answering an in-app ask. Mirrors the tool-approval
|
|
59
|
-
* hooks (`modules/tool-approval/hooks/useToolApprovals.ts`).
|
|
60
|
-
*/
|
|
61
|
-
const HUMAN_REQUEST_FIELDS = gql`
|
|
62
|
-
fragment WorkflowHumanRequestFields on WorkflowHumanRequest {
|
|
63
|
-
id
|
|
64
|
-
runId
|
|
65
|
-
nodeId
|
|
66
|
-
workflowKey
|
|
67
|
-
channel
|
|
68
|
-
recipient
|
|
69
|
-
responseType
|
|
70
|
-
title
|
|
71
|
-
message
|
|
72
|
-
approvalType
|
|
73
|
-
approveLabel
|
|
74
|
-
declineLabel
|
|
75
|
-
submitLabel
|
|
76
|
-
fields {
|
|
77
|
-
name
|
|
78
|
-
label
|
|
79
|
-
type
|
|
80
|
-
required
|
|
81
|
-
placeholder
|
|
82
|
-
options
|
|
83
|
-
}
|
|
84
|
-
status
|
|
85
|
-
decision
|
|
86
|
-
response
|
|
87
|
-
respondedBy
|
|
88
|
-
respondedVia
|
|
89
|
-
expiresAt
|
|
90
|
-
respondedAt
|
|
91
|
-
createdAt
|
|
92
|
-
canRespond
|
|
93
|
-
quorum
|
|
94
|
-
requiredApprovals
|
|
95
|
-
myDecision
|
|
96
|
-
approvals {
|
|
97
|
-
id
|
|
98
|
-
requestId
|
|
99
|
-
approverId
|
|
100
|
-
assignedVia
|
|
101
|
-
assignedFrom
|
|
102
|
-
decision
|
|
103
|
-
comment
|
|
104
|
-
answeredAt
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
`;
|
|
108
|
-
const GET_PENDING_HUMAN_REQUESTS = gql`
|
|
109
|
-
${HUMAN_REQUEST_FIELDS}
|
|
110
|
-
query GetPendingWorkflowHumanRequests($limit: Int, $offset: Int) {
|
|
111
|
-
pendingWorkflowHumanRequests(limit: $limit, offset: $offset) {
|
|
112
|
-
totalCount
|
|
113
|
-
items {
|
|
114
|
-
...WorkflowHumanRequestFields
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
`;
|
|
119
|
-
const GET_RUN_HUMAN_REQUESTS = gql`
|
|
120
|
-
${HUMAN_REQUEST_FIELDS}
|
|
121
|
-
query GetWorkflowHumanRequests($runId: ID!) {
|
|
122
|
-
workflowHumanRequests(runId: $runId) {
|
|
123
|
-
...WorkflowHumanRequestFields
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
`;
|
|
127
|
-
const RESPOND_TO_HUMAN_REQUEST = gql`
|
|
128
|
-
${HUMAN_REQUEST_FIELDS}
|
|
129
|
-
mutation RespondToWorkflowHumanRequest(
|
|
130
|
-
$input: RespondToWorkflowHumanRequestInput!
|
|
131
|
-
) {
|
|
132
|
-
respondToWorkflowHumanRequest(input: $input) {
|
|
133
|
-
success
|
|
134
|
-
decision
|
|
135
|
-
error
|
|
136
|
-
request {
|
|
137
|
-
...WorkflowHumanRequestFields
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
`;
|
|
142
|
-
/** Asks still waiting for a person in the workspace (polled, like the tool-approval inbox). */
|
|
143
|
-
function usePendingHumanRequests(options) {
|
|
144
|
-
const limit = options?.limit ?? 50;
|
|
145
|
-
const offset = options?.offset ?? 0;
|
|
146
|
-
const pollIntervalMs = options?.pollIntervalMs ?? 15e3;
|
|
147
|
-
const [items, setItems] = useState([]);
|
|
148
|
-
const [totalCount, setTotalCount] = useState(0);
|
|
149
|
-
const [loading, setLoading] = useState(true);
|
|
150
|
-
const [error, setError] = useState(null);
|
|
151
|
-
const generation = useRef(0);
|
|
152
|
-
const fetchData = useCallback(async () => {
|
|
153
|
-
const ticket = ++generation.current;
|
|
154
|
-
setError(null);
|
|
155
|
-
try {
|
|
156
|
-
const result = throwIfResultError(await getFluidGridsClient().query({
|
|
157
|
-
query: GET_PENDING_HUMAN_REQUESTS,
|
|
158
|
-
variables: {
|
|
159
|
-
limit,
|
|
160
|
-
offset
|
|
161
|
-
},
|
|
162
|
-
fetchPolicy: "network-only"
|
|
163
|
-
}));
|
|
164
|
-
if (ticket !== generation.current) return;
|
|
165
|
-
setItems(result.data?.pendingWorkflowHumanRequests?.items ?? []);
|
|
166
|
-
setTotalCount(result.data?.pendingWorkflowHumanRequests?.totalCount ?? 0);
|
|
167
|
-
} catch (err) {
|
|
168
|
-
if (ticket !== generation.current) return;
|
|
169
|
-
setError(err);
|
|
170
|
-
} finally {
|
|
171
|
-
if (ticket === generation.current) setLoading(false);
|
|
172
|
-
}
|
|
173
|
-
}, [limit, offset]);
|
|
174
|
-
useEffect(() => {
|
|
175
|
-
fetchData();
|
|
176
|
-
if (pollIntervalMs <= 0) return;
|
|
177
|
-
const interval = setInterval(fetchData, pollIntervalMs);
|
|
178
|
-
return () => clearInterval(interval);
|
|
179
|
-
}, [fetchData, pollIntervalMs]);
|
|
180
|
-
return {
|
|
181
|
-
items,
|
|
182
|
-
totalCount,
|
|
183
|
-
loading,
|
|
184
|
-
error,
|
|
185
|
-
refetch: fetchData
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
/** Every ask a run made — who was asked, how, until when, and the answer. */
|
|
189
|
-
function useRunHumanRequests(runId, options) {
|
|
190
|
-
const pollIntervalMs = options?.pollIntervalMs ?? 0;
|
|
191
|
-
const [items, setItems] = useState([]);
|
|
192
|
-
const [error, setError] = useState(null);
|
|
193
|
-
const [loaded, setLoaded] = useState(false);
|
|
194
|
-
const [loadedAt, setLoadedAt] = useState(null);
|
|
195
|
-
const currentRunId = useRef(runId);
|
|
196
|
-
useEffect(() => {
|
|
197
|
-
currentRunId.current = runId;
|
|
198
|
-
setItems([]);
|
|
199
|
-
setError(null);
|
|
200
|
-
setLoaded(false);
|
|
201
|
-
setLoadedAt(null);
|
|
202
|
-
}, [runId]);
|
|
203
|
-
const generation = useRef(0);
|
|
204
|
-
const fetchData = useCallback(async () => {
|
|
205
|
-
if (!runId) return;
|
|
206
|
-
const ticket = ++generation.current;
|
|
207
|
-
const startedAt = Date.now();
|
|
208
|
-
setError(null);
|
|
209
|
-
try {
|
|
210
|
-
const result = throwIfResultError(await getFluidGridsClient().query({
|
|
211
|
-
query: GET_RUN_HUMAN_REQUESTS,
|
|
212
|
-
variables: { runId },
|
|
213
|
-
fetchPolicy: "network-only",
|
|
214
|
-
context: { queryDeduplication: false }
|
|
215
|
-
}));
|
|
216
|
-
if (ticket !== generation.current || currentRunId.current !== runId) return;
|
|
217
|
-
setItems(result.data?.workflowHumanRequests ?? []);
|
|
218
|
-
setLoaded(true);
|
|
219
|
-
setLoadedAt(startedAt);
|
|
220
|
-
} catch (err) {
|
|
221
|
-
if (ticket !== generation.current || currentRunId.current !== runId) return;
|
|
222
|
-
setError(err);
|
|
223
|
-
}
|
|
224
|
-
}, [runId]);
|
|
225
|
-
useEffect(() => {
|
|
226
|
-
fetchData();
|
|
227
|
-
if (pollIntervalMs <= 0) return;
|
|
228
|
-
const interval = setInterval(fetchData, pollIntervalMs);
|
|
229
|
-
return () => clearInterval(interval);
|
|
230
|
-
}, [fetchData, pollIntervalMs]);
|
|
231
|
-
return {
|
|
232
|
-
items,
|
|
233
|
-
error,
|
|
234
|
-
loaded,
|
|
235
|
-
loadedAt,
|
|
236
|
-
refetch: fetchData
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Answer an in-app ask. Resolves to the decision the run continued with, or null when the answer
|
|
241
|
-
* was recorded and an approval quorum still needs more answers (BOFF-9956). Throws with the
|
|
242
|
-
* service's reason.
|
|
243
|
-
*/
|
|
244
|
-
function useRespondToHumanRequest() {
|
|
245
|
-
const [loading, setLoading] = useState(false);
|
|
246
|
-
return {
|
|
247
|
-
respond: useCallback(async (id, answer) => {
|
|
248
|
-
setLoading(true);
|
|
249
|
-
try {
|
|
250
|
-
const payload = throwIfResultError(await getFluidGridsClient().mutate({
|
|
251
|
-
mutation: RESPOND_TO_HUMAN_REQUEST,
|
|
252
|
-
variables: { input: {
|
|
253
|
-
id,
|
|
254
|
-
...answer
|
|
255
|
-
} }
|
|
256
|
-
})).data?.respondToWorkflowHumanRequest;
|
|
257
|
-
if (!payload?.success) throw new Error(payload?.error || "The response was not recorded");
|
|
258
|
-
return payload.decision;
|
|
259
|
-
} finally {
|
|
260
|
-
setLoading(false);
|
|
261
|
-
}
|
|
262
|
-
}, []),
|
|
263
|
-
loading
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
|
|
267
55
|
// src/modules/human-response/utils/approval-progress.ts
|
|
268
56
|
function approvalCounts(approvals) {
|
|
269
57
|
let approved = 0;
|
|
@@ -644,4 +432,4 @@ function HumanRequestCard({ request, onAnswered }) {
|
|
|
644
432
|
});
|
|
645
433
|
}
|
|
646
434
|
|
|
647
|
-
export {
|
|
435
|
+
export { useRecipientLabel as i, channelLabel as n, ApprovalApprovers as r, HumanRequestCard as t };
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
|
-
import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-
|
|
4
|
+
import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-Dfgh4yjv.js";
|
|
5
5
|
import { a as getTopFailingWorkflows, i as getTopFailingNodes, n as formatDuration, o as percentage, r as getFailureBreakdown } from "./utils-uaL5UVxb.js";
|
|
6
|
-
import { n as FailureTriagePanel } from "./FailureTriagePanel-
|
|
6
|
+
import { n as FailureTriagePanel } from "./FailureTriagePanel-D4lJ4zqQ.js";
|
|
7
7
|
import { o as useContinuousOptimisationEnabled } from "./feature-flags-DM5myWaD.js";
|
|
8
|
-
import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-
|
|
8
|
+
import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
|
|
9
9
|
import { Cw as OptimisationSuggestionStatus, Sw as OptimisationKind, xw as OptimisationDismissReason } from "./graphql-types-v6CTGwA0.js";
|
|
10
10
|
import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
11
|
-
import { $ as DismissOptimisationSuggestionDocument, E as ContinuousOptimisationSettingsDocument, Ei as WorkspaceAiUsageDocument, In as SnoozeOptimisationSuggestionDocument, Kr as WorkflowProposalDocument, Lt as OptimisationSuggestionsDocument, Wt as ProposeOptimisationDocument, at as ErrorAnalyticsDocument, ht as FgRunOptimisationScanDocument, kn as SetContinuousOptimisationEnabledDocument } from "./graphql-operation-types-
|
|
11
|
+
import { $ as DismissOptimisationSuggestionDocument, E as ContinuousOptimisationSettingsDocument, Ei as WorkspaceAiUsageDocument, In as SnoozeOptimisationSuggestionDocument, Kr as WorkflowProposalDocument, Lt as OptimisationSuggestionsDocument, Wt as ProposeOptimisationDocument, at as ErrorAnalyticsDocument, ht as FgRunOptimisationScanDocument, kn as SetContinuousOptimisationEnabledDocument } from "./graphql-operation-types-z2oXfQvM.js";
|
|
12
12
|
import { a as formatTokens, c as DISMISS_REASONS, f as monthlySavingLabel, i as aiSpendPeriod, l as evidenceFacts, p as shortRunId, r as aiCost, s as runsOfWorkflowPath, t as AI_SPEND_RANGE_DAYS, u as evidenceWindowDays } from "./ai-usage-bmUn-gJP.js";
|
|
13
13
|
import { i as utcDay, r as runListPath } from "./run-list-links-eUhZB1ju.js";
|
|
14
14
|
import { t as proposalCanvasPath } from "./useRequestedProposal-B7uPXfZB.js";
|
|
15
15
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
16
16
|
import { Link, useNavigate } from "react-router";
|
|
17
17
|
import { Icon } from "@iconify/react";
|
|
18
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
19
19
|
import { toast } from "sonner";
|
|
20
20
|
import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Label, Textarea } from "@burdenoff/fe-libs/ui";
|
|
21
21
|
import { Button as Button$1 } from "@burdenoff/fe-libs/button";
|
|
@@ -364,7 +364,7 @@ function OptimisationSuggestionsSection({ onOpenRun, onOpenProposal }) {
|
|
|
364
364
|
scan: optimisation.lastScan,
|
|
365
365
|
tr
|
|
366
366
|
}),
|
|
367
|
-
optimisation.suggestions.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("ul", {
|
|
367
|
+
optimisation.suggestions.length > 0 ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("ul", {
|
|
368
368
|
className: "mt-4 space-y-2",
|
|
369
369
|
"data-testid": "optimisation-list",
|
|
370
370
|
children: optimisation.suggestions.map((suggestion) => /* @__PURE__ */ jsx(OptimisationSuggestionRow, {
|
|
@@ -383,7 +383,7 @@ function OptimisationSuggestionsSection({ onOpenRun, onOpenProposal }) {
|
|
|
383
383
|
shown: optimisation.suggestions.length,
|
|
384
384
|
total: optimisation.total
|
|
385
385
|
})
|
|
386
|
-
})] }) : !optimisation.loading && /* @__PURE__ */ jsx(EmptyState, {
|
|
386
|
+
})] }) : !optimisation.loading && /* @__PURE__ */ jsx(EmptyState$1, {
|
|
387
387
|
enabled,
|
|
388
388
|
paused,
|
|
389
389
|
tr
|
|
@@ -448,7 +448,7 @@ function ScanSummary({ scan, tr }) {
|
|
|
448
448
|
})
|
|
449
449
|
});
|
|
450
450
|
}
|
|
451
|
-
function EmptyState({ enabled, paused, tr }) {
|
|
451
|
+
function EmptyState$1({ enabled, paused, tr }) {
|
|
452
452
|
let message = tr("fluidgrids.optimisation.emptyOff", "Turn continuous optimisation on to get nightly suggestions for your workflows here.");
|
|
453
453
|
if (paused) message = tr("fluidgrids.optimisation.emptyPaused", "Continuous optimisation is paused for this workspace.");
|
|
454
454
|
else if (enabled) message = tr("fluidgrids.optimisation.empty", "No suggestions right now. New ones appear here the morning after a check finds something.");
|
|
@@ -746,12 +746,12 @@ function rangeLabel(days, tr) {
|
|
|
746
746
|
}
|
|
747
747
|
function Cost({ usage, tr }) {
|
|
748
748
|
const cost = aiCost(usage);
|
|
749
|
-
if (cost.kind === "priced") return /* @__PURE__ */ jsx(Fragment, { children: cost.text });
|
|
749
|
+
if (cost.kind === "priced") return /* @__PURE__ */ jsx(Fragment$1, { children: cost.text });
|
|
750
750
|
if (cost.kind === "unpriced") return /* @__PURE__ */ jsx("span", {
|
|
751
751
|
className: "text-text-secondary",
|
|
752
752
|
children: tr("fluidgrids.insights.aiSpend.notPricedYet", "Not priced yet")
|
|
753
753
|
});
|
|
754
|
-
return /* @__PURE__ */ jsx(Fragment, { children: "—" });
|
|
754
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: "—" });
|
|
755
755
|
}
|
|
756
756
|
function AiSpendPanel() {
|
|
757
757
|
const tr = useTr();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { a as DialogFooter, i as DialogDescription, l as DialogTitle, o as DialogHeader, r as DialogContent, t as Dialog } from "./dialog-Cjb4lB4D.js";
|
|
3
3
|
import { t as Button } from "./button-DG7y_FVJ.js";
|
|
4
|
-
import { r as Badge } from "./TemplateCard-
|
|
4
|
+
import { r as Badge } from "./TemplateCard-DanOe65C.js";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { AlertTriangle, CheckCircle2, Download, ExternalLink, Loader2, Puzzle, ShoppingCart } from "lucide-react";
|
|
7
7
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
4
|
-
import { t as fetchAllNodeEndpointConfigs } from "./node-endpoint-configs-
|
|
5
|
-
import { At as NodeManifestDocument, Ot as NodeEndpointConfigDocument, kt as NodeEndpointConfigsDocument } from "./graphql-operation-types-
|
|
4
|
+
import { t as fetchAllNodeEndpointConfigs } from "./node-endpoint-configs-typvqw2c.js";
|
|
5
|
+
import { At as NodeManifestDocument, Ot as NodeEndpointConfigDocument, kt as NodeEndpointConfigsDocument } from "./graphql-operation-types-z2oXfQvM.js";
|
|
6
6
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
7
7
|
import { t as PublishCustomNodeAction } from "./PublishCustomNodeAction-5XXnSA3H.js";
|
|
8
8
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
@@ -307,7 +307,7 @@ function NodesSkeleton() {
|
|
|
307
307
|
children: Array.from({ length: 8 }).map((_, i) => /* @__PURE__ */ jsx(Skeleton, { className: "h-44 rounded-lg bg-card-foreground/10" }, i))
|
|
308
308
|
});
|
|
309
309
|
}
|
|
310
|
-
function EmptyState({ hasFilters }) {
|
|
310
|
+
function EmptyState$1({ hasFilters }) {
|
|
311
311
|
const tr = useTr();
|
|
312
312
|
return /* @__PURE__ */ jsxs("div", {
|
|
313
313
|
className: "flex flex-col items-center justify-center py-20 text-center",
|
|
@@ -619,7 +619,7 @@ function NodesPage() {
|
|
|
619
619
|
onRetry: refetch
|
|
620
620
|
})
|
|
621
621
|
}),
|
|
622
|
-
loading ? /* @__PURE__ */ jsx(NodesSkeleton, {}) : filtered.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { hasFilters: search.trim().length > 0 || activeCategory !== "all" }) : /* @__PURE__ */ jsx("div", {
|
|
622
|
+
loading ? /* @__PURE__ */ jsx(NodesSkeleton, {}) : filtered.length === 0 ? /* @__PURE__ */ jsx(EmptyState$1, { hasFilters: search.trim().length > 0 || activeCategory !== "all" }) : /* @__PURE__ */ jsx("div", {
|
|
623
623
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",
|
|
624
624
|
children: filtered.map(({ node, category }) => /* @__PURE__ */ jsx(NodeCard, {
|
|
625
625
|
node,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
3
|
-
import { vn as useFluidGridsAnalytics } from "./FluidGridsProvider-
|
|
3
|
+
import { vn as useFluidGridsAnalytics } from "./FluidGridsProvider-B1hgCbxG.js";
|
|
4
4
|
import { c as emitWorkflowLimitHit, o as emitUpgradeClicked } from "./fluidgridsEvents-Dm5CaHtr.js";
|
|
5
5
|
import { i as WORKFLOWS_QUOTA_NAME } from "./quota-Cdt8yz7N.js";
|
|
6
6
|
import { useEffect, useRef } from "react";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
|
-
import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-
|
|
4
|
+
import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
|
|
5
5
|
import { a as useRunners, i as useRunnerActions, r as runnerInstallCommand, t as RunnerStatusPill } from "./RunnerStatusPill-Ctg4TJcP.js";
|
|
6
6
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
7
7
|
import { useCallback, useEffect, useState } from "react";
|
|
8
8
|
import { Icon } from "@iconify/react";
|
|
9
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { toast } from "sonner";
|
|
11
11
|
import { Badge, Card, CardHeader, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Label, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@burdenoff/fe-libs/ui";
|
|
12
12
|
import { Button as Button$1 } from "@burdenoff/fe-libs/button";
|
|
@@ -212,10 +212,10 @@ function AddRunnerDialog({ open, onOpenChange, runners, onCreated }) {
|
|
|
212
212
|
children: [/* @__PURE__ */ jsx(InstallCommand, { issued }), /* @__PURE__ */ jsx("div", {
|
|
213
213
|
className: "flex items-center gap-2 text-sm",
|
|
214
214
|
"data-testid": "runner-connect-status",
|
|
215
|
-
children: live?.status === "ONLINE" ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Icon, {
|
|
215
|
+
children: live?.status === "ONLINE" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Icon, {
|
|
216
216
|
icon: "lucide:check-circle-2",
|
|
217
217
|
className: "h-4 w-4 text-status-success-text"
|
|
218
|
-
}), tr("fluidgrids.runners.connected", "Connected. You can now pick this runner in a node's Settings → Run on.")] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Icon, {
|
|
218
|
+
}), tr("fluidgrids.runners.connected", "Connected. You can now pick this runner in a node's Settings → Run on.")] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Icon, {
|
|
219
219
|
icon: "lucide:loader-2",
|
|
220
220
|
className: "h-4 w-4 animate-spin text-text-secondary"
|
|
221
221
|
}), tr("fluidgrids.runners.waiting", "Waiting for the runner to connect…")] })
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
|
-
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-
|
|
4
|
+
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
|
|
5
5
|
import { n as useManagedAiPolicyAuthority } from "./ManagedAiPolicyAuthorityContext-CNkxIOZ1.js";
|
|
6
|
-
import { Et as ManagedAiWorkspacePolicyDocument, Hr as WorkflowNotificationSettingsDocument, ar as UpdateDurableHistoryCapsDocument, nt as DurableHistoryCapsDocument, or as UpdateManagedAiWorkspacePolicyDocument, ur as UpdateWorkflowNotificationSettingsDocument } from "./graphql-operation-types-
|
|
6
|
+
import { Et as ManagedAiWorkspacePolicyDocument, Hr as WorkflowNotificationSettingsDocument, ar as UpdateDurableHistoryCapsDocument, nt as DurableHistoryCapsDocument, or as UpdateManagedAiWorkspacePolicyDocument, ur as UpdateWorkflowNotificationSettingsDocument } from "./graphql-operation-types-z2oXfQvM.js";
|
|
7
7
|
import { c as budgetInputValue, d as withBudgetMode, f as EffectBadge, m as useActionPolicies, n as checkCodecServerUrl, p as effectLabel, s as BUDGET_DIMENSIONS, u as withBudgetLimit } from "./codec-client-CJ95Rmqo.js";
|
|
8
8
|
import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
9
9
|
import { c as useDurableParityEnabled, f as usePhaseCFlags, l as useFluidGridsFlag, t as FLUIDGRIDS_FLAGS } from "./feature-flags-DM5myWaD.js";
|
|
10
|
-
import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRule, c as deletePauseRule, f as fetchArchiveSettings, g as fetchCodecServerSettings, j as saveArchiveSettings, l as deleteSearchAttribute, o as createSearchAttribute, r as clearArchiveSettings, x as fetchSearchAttributes } from "./api-
|
|
10
|
+
import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRule, c as deletePauseRule, f as fetchArchiveSettings, g as fetchCodecServerSettings, j as saveArchiveSettings, l as deleteSearchAttribute, o as createSearchAttribute, r as clearArchiveSettings, x as fetchSearchAttributes } from "./api-Dvitj1aT.js";
|
|
11
11
|
import { i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
|
|
12
12
|
import { EI as WorkflowSearchAttributeType } from "./graphql-types-v6CTGwA0.js";
|
|
13
|
-
import { H as useFlowStore } from "./node-operation-selection-
|
|
14
|
-
import { Nt as useSaveStatusStore, rn as findSaveConflict } from "./FluidGridsProvider-
|
|
15
|
-
import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-
|
|
13
|
+
import { H as useFlowStore } from "./node-operation-selection-DAbS6jSY.js";
|
|
14
|
+
import { Nt as useSaveStatusStore, rn as findSaveConflict } from "./FluidGridsProvider-B1hgCbxG.js";
|
|
15
|
+
import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-Dfgh4yjv.js";
|
|
16
16
|
import { n as useConnections } from "./useConnections-Cs7LCWEM.js";
|
|
17
|
-
import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-
|
|
17
|
+
import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-Uy6nhpKN.js";
|
|
18
18
|
import { a as formToInput$2, i as emptyAgentForm, n as agentToForm, o as grantDays, r as describeRule, t as AgentFormError } from "./agent-form-Bfvm32j1.js";
|
|
19
19
|
import { i as getGlobalStoreClient } from "./node-registry-refresh-Dy0uRg9f.js";
|
|
20
20
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
@@ -22,7 +22,7 @@ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } fr
|
|
|
22
22
|
import { useNavigate, useParams } from "react-router";
|
|
23
23
|
import { Icon } from "@iconify/react";
|
|
24
24
|
import { cn } from "@burdenoff/fe-libs/utils";
|
|
25
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
25
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
26
26
|
import { toast } from "sonner";
|
|
27
27
|
import { gql } from "@apollo/client";
|
|
28
28
|
import { Badge, Card, CardContent, CardHeader, Checkbox, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@burdenoff/fe-libs/ui";
|
|
@@ -1258,7 +1258,7 @@ function ManagedAiPolicyForm({ policy, loading, error, workspaceWideRequired, ca
|
|
|
1258
1258
|
loading,
|
|
1259
1259
|
error,
|
|
1260
1260
|
workspaceWideRequired,
|
|
1261
|
-
children: policy && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(ManagedAiPolicyControls, {
|
|
1261
|
+
children: policy && /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(ManagedAiPolicyControls, {
|
|
1262
1262
|
policy,
|
|
1263
1263
|
canManage,
|
|
1264
1264
|
activelyEnabled,
|
|
@@ -1285,7 +1285,7 @@ function ManagedAiPolicyForm({ policy, loading, error, workspaceWideRequired, ca
|
|
|
1285
1285
|
/** Owner controls remain separate from request state and bounded status rendering. */
|
|
1286
1286
|
function ManagedAiPolicyControls({ policy, canManage, activelyEnabled, acknowledged, setAcknowledged, saving, saveFailed, change }) {
|
|
1287
1287
|
const tr = useTr();
|
|
1288
|
-
return canManage ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1288
|
+
return canManage ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1289
1289
|
!activelyEnabled && /* @__PURE__ */ jsxs("label", {
|
|
1290
1290
|
className: "flex items-start gap-3 text-sm text-text-secondary",
|
|
1291
1291
|
children: [/* @__PURE__ */ jsx("input", {
|
|
@@ -1326,12 +1326,12 @@ function ManagedAiPolicyStatus({ policy, loading, error, workspaceWideRequired,
|
|
|
1326
1326
|
role: "status",
|
|
1327
1327
|
children: tr("fluidgrids.settings.managedAi.pending", "Workspace AI controls are not active yet. Existing managed AI behavior is unchanged, and no approval change can be saved.")
|
|
1328
1328
|
});
|
|
1329
|
-
if (!policy.enforcementActive) return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
|
|
1329
|
+
if (!policy.enforcementActive) return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
|
|
1330
1330
|
role: "status",
|
|
1331
1331
|
className: "text-sm text-text-secondary",
|
|
1332
1332
|
children: tr("fluidgrids.settings.managedAi.enrollmentAvailable", "Workspace AI controls are available. Existing managed AI behavior continues until an administrator saves a choice. You can turn off new managed requests without approving provider use.")
|
|
1333
1333
|
}), children] });
|
|
1334
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
|
|
1334
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
|
|
1335
1335
|
className: "font-medium text-text-primary",
|
|
1336
1336
|
role: "status",
|
|
1337
1337
|
children: policy.enabled ? tr("fluidgrids.settings.managedAi.enabled", "Managed AI is on for this workspace.") : tr("fluidgrids.settings.managedAi.disabled", "Managed AI is off for this workspace.")
|
|
@@ -1423,7 +1423,7 @@ function rowCopy(tr, dimension) {
|
|
|
1423
1423
|
*/
|
|
1424
1424
|
function RunBudgetSettings({ budget, disabled, onChange }) {
|
|
1425
1425
|
const tr = useTr();
|
|
1426
|
-
return /* @__PURE__ */ jsx(Fragment, { children: BUDGET_DIMENSIONS.map((dimension) => {
|
|
1426
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: BUDGET_DIMENSIONS.map((dimension) => {
|
|
1427
1427
|
const row = rowCopy(tr, dimension);
|
|
1428
1428
|
const limit = budget?.[dimension];
|
|
1429
1429
|
const mode = limit?.mode ?? "HARD";
|
|
@@ -1812,7 +1812,7 @@ function DurableHistoryCapsCard({ canEdit }) {
|
|
|
1812
1812
|
" ",
|
|
1813
1813
|
error
|
|
1814
1814
|
]
|
|
1815
|
-
}) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
1815
|
+
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("div", {
|
|
1816
1816
|
className: "divide-y divide-border-secondary",
|
|
1817
1817
|
children: [/* @__PURE__ */ jsx(SettingRow, {
|
|
1818
1818
|
label: tr("fluidgrids.settings.historyCaps.eventsLabel", "Events per run"),
|
|
@@ -3743,7 +3743,7 @@ function AgentGrants({ agent, loadGrants, onGrant, onRevoke }) {
|
|
|
3743
3743
|
"data-testid": `agent-grants-${agent.id}`,
|
|
3744
3744
|
children: [/* @__PURE__ */ jsx("div", {
|
|
3745
3745
|
className: "flex flex-wrap items-center gap-2",
|
|
3746
|
-
children: mine ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
|
|
3746
|
+
children: mine ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
3747
3747
|
className: "text-sm text-text-primary",
|
|
3748
3748
|
children: mine.expiresAt ? tr("fluidgrids.agents.myGrantUntil", "This agent may act for you until {{date}}.", { date: new Date(mine.expiresAt).toLocaleDateString() }) : tr("fluidgrids.agents.myGrant", "This agent may act for you.")
|
|
3749
3749
|
}), /* @__PURE__ */ jsx(Button$1, {
|
|
@@ -3753,7 +3753,7 @@ function AgentGrants({ agent, loadGrants, onGrant, onRevoke }) {
|
|
|
3753
3753
|
onClick: () => void run(() => onRevoke(agent.id, null), tr("fluidgrids.agents.withdrawn", "Grant withdrawn")),
|
|
3754
3754
|
"data-testid": "agent-grant-withdraw",
|
|
3755
3755
|
children: tr("fluidgrids.agents.withdraw", "Withdraw my grant")
|
|
3756
|
-
})] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3756
|
+
})] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
3757
3757
|
/* @__PURE__ */ jsx(Label, {
|
|
3758
3758
|
htmlFor: `grant-days-${agent.id}`,
|
|
3759
3759
|
className: "text-sm",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { r as useAvailableTags } from "./useEntityTags-
|
|
2
|
+
import { r as useAvailableTags } from "./useEntityTags-D5C0tdLs.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
|
|
@@ -3,9 +3,9 @@ import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
4
|
import { m as describeOperationError } from "./client-C9XSzSXr.js";
|
|
5
5
|
import { p as useSelfHostedWorkersEnabled } from "./feature-flags-DM5myWaD.js";
|
|
6
|
-
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-
|
|
6
|
+
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
|
|
7
7
|
import { a as RUN_CONTROL_DIALOG_STYLE, i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
|
|
8
|
-
import { a as fetchTaskQueueStats, c as fetchWorkflowWorkers, d as updateTaskQueue, i as deleteWorkerToken, l as rotateWorkerToken, n as createWorkerToken, o as fetchTaskQueues, r as deleteTaskQueue, s as fetchWorkerTokens, t as createTaskQueue, u as setWorkerTokenConnectionAllowlist } from "./api-
|
|
8
|
+
import { a as fetchTaskQueueStats, c as fetchWorkflowWorkers, d as updateTaskQueue, i as deleteWorkerToken, l as rotateWorkerToken, n as createWorkerToken, o as fetchTaskQueues, r as deleteTaskQueue, s as fetchWorkerTokens, t as createTaskQueue, u as setWorkerTokenConnectionAllowlist } from "./api-JpNuowX4.js";
|
|
9
9
|
import { nI as WorkflowEnvironment } from "./graphql-types-v6CTGwA0.js";
|
|
10
10
|
import { useState } from "react";
|
|
11
11
|
import { Icon } from "@iconify/react";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { _ as throwIfResultError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
3
3
|
import { i as getGlobalStoreClient } from "./node-registry-refresh-Dy0uRg9f.js";
|
|
4
|
-
import { A as StoreNodeProductsByTypeDocument, C as GetMyNodeInstallationsDocument, D as InstallWorkflowNodeDocument, c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, t as FluidGridsContext, vn as useFluidGridsAnalytics, x as BrowseWorkflowTemplatesDocument } from "./FluidGridsProvider-
|
|
4
|
+
import { A as StoreNodeProductsByTypeDocument, C as GetMyNodeInstallationsDocument, D as InstallWorkflowNodeDocument, c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, t as FluidGridsContext, vn as useFluidGridsAnalytics, x as BrowseWorkflowTemplatesDocument } from "./FluidGridsProvider-B1hgCbxG.js";
|
|
5
5
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
6
|
import { c as isQuotaExhaustedFailure } from "./quota-Cdt8yz7N.js";
|
|
7
7
|
import { a as emitTemplateUsed, s as emitWorkflowCreated, t as emitNodeInstalled } from "./fluidgridsEvents-Dm5CaHtr.js";
|
|
8
8
|
import { t as cn } from "./cn-QqidFIgr.js";
|
|
9
9
|
import { t as Button } from "./button-DG7y_FVJ.js";
|
|
10
|
-
import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-
|
|
10
|
+
import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
|
|
11
11
|
import React, { Suspense, forwardRef, lazy, useCallback, useContext, useMemo, useState } from "react";
|
|
12
12
|
import { useQuery } from "@apollo/client/react";
|
|
13
13
|
import { gql } from "@apollo/client/core";
|
|
@@ -1080,7 +1080,7 @@ async function dismissToastWhenShown(id) {
|
|
|
1080
1080
|
}
|
|
1081
1081
|
|
|
1082
1082
|
// src/hooks/store/useTemplateImportFlow.tsx
|
|
1083
|
-
const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-
|
|
1083
|
+
const LazyTemplateConfigurationModal = lazy(() => import("./TemplateConfigurationModal-CeMpPEhT.js").then((m) => ({ default: m.TemplateConfigurationModal })));
|
|
1084
1084
|
/**
|
|
1085
1085
|
* "Use this template", the same everywhere it is offered: the builder's
|
|
1086
1086
|
* template panel, the Templates page and the template preview page
|