@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
package/README.md
CHANGED
|
@@ -345,6 +345,19 @@ with the pages and the main entry.
|
|
|
345
345
|
`./flags` carries only the FluidGrids feature flag hooks, for a shell that reads
|
|
346
346
|
a flag on every page (for example to list a navigation item).
|
|
347
347
|
|
|
348
|
+
`./quota` carries only `readRunsQuota` and the `RunsQuota` type, for a host
|
|
349
|
+
surface (a plan or profile popup) that reads the workspace's run allowance
|
|
350
|
+
outside the builder:
|
|
351
|
+
|
|
352
|
+
```ts
|
|
353
|
+
import {
|
|
354
|
+
readRunsQuota,
|
|
355
|
+
type RunsQuota,
|
|
356
|
+
} from "@burdenoff/fluidgrids-fe-sdk/quota";
|
|
357
|
+
|
|
358
|
+
const quota: RunsQuota | null = await readRunsQuota(apolloClient, workspaceId);
|
|
359
|
+
```
|
|
360
|
+
|
|
348
361
|
## Agent tools (optional)
|
|
349
362
|
|
|
350
363
|
`./agent-tools` carries FluidGrids' AI agent tools (`createFluidGridsAgentTools`)
|
|
@@ -1,15 +1,15 @@
|
|
|
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 { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-
|
|
5
|
-
import {
|
|
4
|
+
import { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-CE8cNXNi.js";
|
|
5
|
+
import { Ot as builderPathOf, kt as classifyCreateRefusal, u as ensureNodeTypesLoaded, z as buildOperationSeed } from "./FluidGridsProvider-CWyQ8ziM.js";
|
|
6
6
|
import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
7
7
|
import { a as notifyFluidGridsAiCreditsUpdated, t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
|
|
8
8
|
import { Pr as WorkflowGenerationDocument, y as CancelWorkflowGenerationDocument, yt as GenerateWorkflowFromPromptDocument } from "./graphql-operation-types-kX-MMjgW.js";
|
|
9
|
-
import { n as useCreateWorkflow } from "./useWorkflows-
|
|
9
|
+
import { n as useCreateWorkflow } from "./useWorkflows-D1-rYzGK.js";
|
|
10
10
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
11
|
-
import {
|
|
12
|
-
import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-
|
|
11
|
+
import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
|
|
12
|
+
import { T as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-DebpM48M.js";
|
|
13
13
|
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
14
14
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
15
15
|
import { useNavigate } from "react-router";
|
|
@@ -1,7 +1,7 @@
|
|
|
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 { n as useDataSinks, t as useDataSinkData } from "./useObservability-
|
|
4
|
+
import { n as useDataSinks, t as useDataSinkData } from "./useObservability-BmbeK5bG.js";
|
|
5
5
|
import { s as prettyJson, t as formatBytes } from "./utils-uaL5UVxb.js";
|
|
6
6
|
import { useEffect, useMemo, useState } from "react";
|
|
7
7
|
import { Icon } from "@iconify/react";
|
|
@@ -5,6 +5,7 @@ import { t as TagFilterSelect } from "./TagFilterSelect-DCBOH6Ou.js";
|
|
|
5
5
|
import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
6
6
|
import { a as useDataTableTagOverlay, n as tagLabel } from "./useEntityTags-DhnsZcTl.js";
|
|
7
7
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
8
|
+
import { i as useOpenRequest, n as ACTION_PARAM_VALUES, r as useActionParam } from "./useActionParam-B0ebTZmg.js";
|
|
8
9
|
import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
9
10
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
10
11
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -1356,7 +1357,8 @@ function TableRowsPanel({ table, onTableChanged, onEditTable, onDeleteTable, del
|
|
|
1356
1357
|
function DataTablesPage() {
|
|
1357
1358
|
const tr = useTr();
|
|
1358
1359
|
const navigate = useNavigate();
|
|
1359
|
-
const
|
|
1360
|
+
const createTablePermission = useFluidGridsPermission(FLUIDGRIDS_PERMISSIONS.DATA_TABLE_CREATE);
|
|
1361
|
+
const canCreateTable = createTablePermission.allowed;
|
|
1360
1362
|
const [searchInput, setSearchInput] = useState("");
|
|
1361
1363
|
const [search, setSearch] = useState("");
|
|
1362
1364
|
const [tagFilter, setTagFilter] = useState("");
|
|
@@ -1366,6 +1368,12 @@ function DataTablesPage() {
|
|
|
1366
1368
|
const [selectedId, setSelectedId] = useState(null);
|
|
1367
1369
|
const [tableDialogOpen, setTableDialogOpen] = useState(false);
|
|
1368
1370
|
const [editingTable, setEditingTable] = useState(null);
|
|
1371
|
+
const newTableRequest = useActionParam(ACTION_PARAM_VALUES.new, createTablePermission);
|
|
1372
|
+
const openCreateTable = useCallback(() => {
|
|
1373
|
+
setEditingTable(null);
|
|
1374
|
+
setTableDialogOpen(true);
|
|
1375
|
+
}, []);
|
|
1376
|
+
useOpenRequest(newTableRequest.requested, openCreateTable, newTableRequest.handled);
|
|
1369
1377
|
const selectedTable = useMemo(() => tables.find((table) => table.id === selectedId) ?? null, [selectedId, tables]);
|
|
1370
1378
|
useEffect(() => {
|
|
1371
1379
|
if (tables.length === 0) {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import { i as useRunPending, n as useDurableParityRunFields, o as ExecutionStatusBadge, r as useRunMetadata, s as NodeStatusBadge, t as setRunVersioningOverride } from "./useDurableParity-
|
|
3
|
+
import { i as useRunPending, n as useDurableParityRunFields, o as ExecutionStatusBadge, r as useRunMetadata, s as NodeStatusBadge, t as setRunVersioningOverride } from "./useDurableParity-BApRraSO.js";
|
|
4
4
|
import { n as formatRunVersion, r as nodeDisplayTitle, t as buildNodeDisplayMap } from "./run-display-BycKYSU0.js";
|
|
5
5
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
6
6
|
import { s as isAgentNodeType } from "./agent-form-Bfvm32j1.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { Cn as canSignalRun, I as describeRunError, L as describeRunStep, On as runSignalTargets, Tn as durableInterfaceOf, cn as nodeStateDurationMs, ln as runDurationMs, sn as formatElapsedMs } from "./FluidGridsProvider-CWyQ8ziM.js";
|
|
8
|
+
import { n as useFgAskable, r as useFgAskableSelection } from "./askAboutBridge-BV8m95kk.js";
|
|
9
|
+
import { f as callbackTone, g as shortRunId, h as runChainLinks, m as parseMetadataDefinition, n as useExecution, p as overrideRequestOf, r as useExecutionActions, t as useAutoRefresh } from "./useExecutions-C2a4EcvC.js";
|
|
9
10
|
import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient, r as getFluidGridsClientSafe, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
|
|
10
11
|
import { Yr as WorkflowRunHierarchyDocument, dn as RunAiUsageDocument, o as AgentStepUpdatedDocument, s as AgentTraceDocument, ut as ExplainRunDocument, xn as RunLogsDocument, yn as RunLogAppendedDocument } from "./graphql-operation-types-kX-MMjgW.js";
|
|
11
12
|
import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
@@ -15,14 +16,14 @@ import { a as encodedPayloadBytes, f as EffectBadge, h as useRunPolicyDecisions,
|
|
|
15
16
|
import { n as useWorkflowProposal, o as canSaveRunAsTestCase, r as saveRunAsTestCase, t as WorkflowProposalCard } from "./WorkflowProposalCard-qrEeNyYG.js";
|
|
16
17
|
import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
|
|
17
18
|
import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-B9hDQymi.js";
|
|
18
|
-
import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-
|
|
19
|
+
import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-CqfDFRzr.js";
|
|
19
20
|
import { $u as ErrorType, L as AgentStepKind, LF as WorkflowQueryRejectCondition, tI as WorkflowUpdateWaitFor, yP as VersioningBehavior } from "./graphql-types-CDKVWH2R.js";
|
|
20
21
|
import { a as formatTokens, d as formatMicroUsd, o as modelLabel, r as aiCost } from "./ai-usage-glCwHyQz.js";
|
|
21
22
|
import { c as useDurableParityEnabled, f as usePhaseCFlags, m as useWorkflowTestsEnabled, s as useDurableFunctionNodesEnabled } from "./feature-flags-DM5myWaD.js";
|
|
22
23
|
import { A as revokeSignalToken, B as updateActivityOptions, D as resetActivities, E as queryRun, N as sendRunUpdate, O as resetRun, R as unpauseActivities, S as fetchSignalTokens, V as upsertRunSearchAttributes, _ as fetchPauseRules, b as fetchRunUpdate, d as failActivityById, g as fetchCodecServerSettings, i as completeActivityById, k as resetRunToLastCleanTask, s as createSignalToken, v as fetchRunControlFields, w as pauseActivities, y as fetchRunHistoryArchive } from "./api-BrCHB5oA.js";
|
|
23
24
|
import { a as fetchTaskQueueStats } from "./api-C8e0iV-Q.js";
|
|
24
25
|
import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, l as parseJsonObjectInput, n as JsonBlock, o as StatusPill, r as JsonField, s as newRunControlId, t as FieldError, u as useResource } from "./shared-CMfn30xT.js";
|
|
25
|
-
import { v as useWorkflowVersions } from "./useWorkflows-
|
|
26
|
+
import { v as useWorkflowVersions } from "./useWorkflows-D1-rYzGK.js";
|
|
26
27
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
27
28
|
import { Link, useNavigate, useParams, useSearchParams } from "react-router";
|
|
28
29
|
import { Icon } from "@iconify/react";
|
|
@@ -243,6 +244,22 @@ function agentNodeTraces(nodeStates) {
|
|
|
243
244
|
return (nodeStates ?? []).filter((node) => isAgentNodeType(node.nodeType)).map(parseAgentNodeState);
|
|
244
245
|
}
|
|
245
246
|
|
|
247
|
+
// src/askAbout/Askable.tsx
|
|
248
|
+
const AskableDiv = ({ describe, askDisabled, ...rest }) => {
|
|
249
|
+
const ref = useFgAskable(describe, { disabled: askDisabled });
|
|
250
|
+
return /* @__PURE__ */ jsx("div", {
|
|
251
|
+
ref,
|
|
252
|
+
...rest
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
const AskableSelectionDiv = ({ describe, ...rest }) => {
|
|
256
|
+
const ref = useFgAskableSelection(describe);
|
|
257
|
+
return /* @__PURE__ */ jsx("div", {
|
|
258
|
+
ref,
|
|
259
|
+
...rest
|
|
260
|
+
});
|
|
261
|
+
};
|
|
262
|
+
|
|
246
263
|
// src/modules/executions/components/NodeTimeline.tsx
|
|
247
264
|
/**
|
|
248
265
|
* Order nodes the way they actually executed.
|
|
@@ -271,7 +288,7 @@ function orderNodesByExecution(nodeStates, triggerNodeId) {
|
|
|
271
288
|
return rankA === rankB ? 0 : rankA - rankB;
|
|
272
289
|
});
|
|
273
290
|
}
|
|
274
|
-
function NodeTimeline({ nodeStates, nodeDisplay, loading, triggerNodeId, onRetryNode, onViewChildRun, onViewAgentTrace }) {
|
|
291
|
+
function NodeTimeline({ nodeStates, nodeDisplay, loading, triggerNodeId, onRetryNode, onViewChildRun, onViewAgentTrace, askRun }) {
|
|
275
292
|
const tr = useTr();
|
|
276
293
|
const [expandedNodes, setExpandedNodes] = useState(/* @__PURE__ */ new Set());
|
|
277
294
|
const [selectedTab, setSelectedTab] = useState("output");
|
|
@@ -331,6 +348,17 @@ function NodeTimeline({ nodeStates, nodeDisplay, loading, triggerNodeId, onRetry
|
|
|
331
348
|
const isRunning = node.status === "RUNNING";
|
|
332
349
|
const isWaitingSubworkflow = node.status === "WAITING_SUBWORKFLOW";
|
|
333
350
|
const hasChildRun = Boolean(node.childRunId);
|
|
351
|
+
const stepName = nodeDisplayTitle(nodeDisplay?.[node.nodeId], node.nodeId);
|
|
352
|
+
const describeStep = () => askRun ? describeRunStep({
|
|
353
|
+
run: askRun,
|
|
354
|
+
stepId: node.nodeId,
|
|
355
|
+
stepName,
|
|
356
|
+
stepType: node.nodeType,
|
|
357
|
+
stepVersion: node.nodeVersion,
|
|
358
|
+
status: node.status,
|
|
359
|
+
errorType: node.errorType,
|
|
360
|
+
error: nodeError
|
|
361
|
+
}) : null;
|
|
334
362
|
return /* @__PURE__ */ jsxs("div", {
|
|
335
363
|
className: "relative flex gap-4",
|
|
336
364
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
@@ -342,7 +370,10 @@ function NodeTimeline({ nodeStates, nodeDisplay, loading, triggerNodeId, onRetry
|
|
|
342
370
|
className: "text-xs font-bold",
|
|
343
371
|
children: index + 1
|
|
344
372
|
}), isRunning && /* @__PURE__ */ jsx("span", { className: "absolute inset-0 rounded-full border-2 border-[var(--color-status-info-text)] animate-ping" })]
|
|
345
|
-
}), /* @__PURE__ */ jsxs(
|
|
373
|
+
}), /* @__PURE__ */ jsxs(AskableDiv, {
|
|
374
|
+
describe: describeStep,
|
|
375
|
+
askDisabled: !askRun,
|
|
376
|
+
"data-testid": "run-step-card",
|
|
346
377
|
className: `
|
|
347
378
|
flex-1 rounded-lg border transition-all
|
|
348
379
|
${hasError ? "bg-[var(--color-status-error-bg-subtle)] border-[var(--color-status-error-border)]" : isRunning ? "bg-[var(--color-status-info-bg-subtle)] border-[var(--color-status-info-border)]" : "bg-background-secondary border-border-secondary"}
|
|
@@ -429,7 +460,8 @@ function NodeTimeline({ nodeStates, nodeDisplay, loading, triggerNodeId, onRetry
|
|
|
429
460
|
children: selectedTab === "output" ? formatJsonData(node.output) : formatJsonData(node.inputArgs)
|
|
430
461
|
})
|
|
431
462
|
}),
|
|
432
|
-
node.error && /* @__PURE__ */ jsxs(
|
|
463
|
+
node.error && /* @__PURE__ */ jsxs(AskableSelectionDiv, {
|
|
464
|
+
describe: describeStep,
|
|
433
465
|
className: "mt-3 p-3 bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded",
|
|
434
466
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
435
467
|
className: "flex items-center gap-2 text-[var(--color-status-error-text)] mb-1",
|
|
@@ -6270,6 +6302,15 @@ function ExecutionDetailPage() {
|
|
|
6270
6302
|
icon: "mdi:information-outline"
|
|
6271
6303
|
}
|
|
6272
6304
|
];
|
|
6305
|
+
const askRun = {
|
|
6306
|
+
runId: execution.id,
|
|
6307
|
+
status: execution.status,
|
|
6308
|
+
workflowKey: execution.workflowKey,
|
|
6309
|
+
version: execution.version,
|
|
6310
|
+
errorType: execution.errorType ?? null,
|
|
6311
|
+
errorMessage: execution.errorMessage ?? null,
|
|
6312
|
+
failedSteps: execution.failedNodes
|
|
6313
|
+
};
|
|
6273
6314
|
return /* @__PURE__ */ jsxs("div", {
|
|
6274
6315
|
className: "p-4 pb-24 sm:p-6 sm:pb-24 bg-background-primary min-h-screen",
|
|
6275
6316
|
children: [
|
|
@@ -6591,7 +6632,9 @@ function ExecutionDetailPage() {
|
|
|
6591
6632
|
})
|
|
6592
6633
|
]
|
|
6593
6634
|
}),
|
|
6594
|
-
execution.errorMessage && /* @__PURE__ */ jsxs(
|
|
6635
|
+
execution.errorMessage && /* @__PURE__ */ jsxs(AskableDiv, {
|
|
6636
|
+
describe: () => describeRunError(askRun),
|
|
6637
|
+
"data-testid": "run-error-banner",
|
|
6595
6638
|
className: "mb-6 p-4 bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded-lg",
|
|
6596
6639
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
6597
6640
|
className: "flex items-center gap-2 text-[var(--color-status-error-text)] mb-2",
|
|
@@ -6602,9 +6645,12 @@ function ExecutionDetailPage() {
|
|
|
6602
6645
|
className: "font-medium",
|
|
6603
6646
|
children: [tr("fluidgrids.executions.executionDetail.errorLabel", "Error"), execution.errorType ? ` (${execution.errorType})` : ""]
|
|
6604
6647
|
})]
|
|
6605
|
-
}), /* @__PURE__ */ jsx(
|
|
6606
|
-
|
|
6607
|
-
children:
|
|
6648
|
+
}), /* @__PURE__ */ jsx(AskableSelectionDiv, {
|
|
6649
|
+
describe: () => describeRunError(askRun),
|
|
6650
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
6651
|
+
className: "text-[var(--color-status-error-text)]",
|
|
6652
|
+
children: execution.errorMessage
|
|
6653
|
+
})
|
|
6608
6654
|
})]
|
|
6609
6655
|
}),
|
|
6610
6656
|
isDurableRun && /* @__PURE__ */ jsx(DurableDeterminismBanner, {
|
|
@@ -6717,7 +6763,8 @@ function ExecutionDetailPage() {
|
|
|
6717
6763
|
triggerNodeId: execution.triggerNodeId ?? void 0,
|
|
6718
6764
|
onRetryNode: canControlRuns ? handleRetryNode : void 0,
|
|
6719
6765
|
onViewChildRun: handleViewChildRun,
|
|
6720
|
-
onViewAgentTrace: (nodeId) => setActiveTab("agent", nodeId)
|
|
6766
|
+
onViewAgentTrace: (nodeId) => setActiveTab("agent", nodeId),
|
|
6767
|
+
askRun
|
|
6721
6768
|
})
|
|
6722
6769
|
}),
|
|
6723
6770
|
activeTab === "agent" && hasAgent && /* @__PURE__ */ jsxs("div", {
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { M as DEFAULT_EXECUTIONS_FILTER, N as useExecutionsStore, m as describeOperationError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
4
|
-
import { c as OPERATORS_BY_TYPE, i as useExecutionStats, l as buildSearchAttributeFilter, o as useExecutionsWithStore, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, y as validateDateRange } from "./useExecutions-
|
|
4
|
+
import { c as OPERATORS_BY_TYPE, i as useExecutionStats, l as buildSearchAttributeFilter, o as useExecutionsWithStore, r as useExecutionActions, s as EMPTY_SEARCH_FILTER, t as useAutoRefresh, u as searchFilterConflicts, y as validateDateRange } from "./useExecutions-C2a4EcvC.js";
|
|
5
5
|
import { c as useDurableParityEnabled, f as usePhaseCFlags } from "./feature-flags-DM5myWaD.js";
|
|
6
6
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
7
7
|
import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
|
|
8
8
|
import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
|
|
9
9
|
import { t as TagFilterSelect } from "./TagFilterSelect-DCBOH6Ou.js";
|
|
10
|
-
import { a as useRunStatusCounts, c as runStatusLabels, l as RUN_STATUS_CONFIG, o as ExecutionStatusBadge } from "./useDurableParity-
|
|
10
|
+
import { a as useRunStatusCounts, c as runStatusLabels, l as RUN_STATUS_CONFIG, o as ExecutionStatusBadge } from "./useDurableParity-BApRraSO.js";
|
|
11
11
|
import { n as formatRunVersion } from "./run-display-BycKYSU0.js";
|
|
12
|
-
import {
|
|
12
|
+
import { ln as runDurationMs, sn as formatElapsedMs } from "./FluidGridsProvider-CWyQ8ziM.js";
|
|
13
13
|
import { n as runListLinkKey, t as runListFilterFromSearch } from "./run-list-links-ByYC0OlV.js";
|
|
14
|
-
import { h as useWorkflowDefinitions } from "./useWorkflows-
|
|
14
|
+
import { h as useWorkflowDefinitions } from "./useWorkflows-D1-rYzGK.js";
|
|
15
15
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
16
16
|
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
|
|
17
17
|
import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-BrCHB5oA.js";
|