@burdenoff/fluidgrids-fe-sdk 2026.1105.2 → 2026.1105.4
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 +42 -3
- package/dist/ExecutionDetailPage-OOHJQR2L.js +30 -0
- package/dist/ExecutionsListPage-6HS5VQOV.js +24 -0
- package/dist/WorkflowBuilder-PICIS7FI.js +35 -0
- package/dist/WorkflowsList-SD5XQC4Q.js +23 -0
- package/dist/{agentTools-5N3ZEZDW.js → agentTools-UH4LU6LA.js} +9 -7
- package/dist/{chunk-6ZK4MRVA.js → chunk-43GSC5Y6.js} +1 -1
- package/dist/{chunk-CH3YUGWR.js → chunk-4XAXF5VP.js} +4 -4
- package/dist/{chunk-6IS7EXIY.js → chunk-5GG2FEKW.js} +2 -2
- package/dist/{chunk-64JN2TVX.js → chunk-5Z4F24QT.js} +10 -39
- package/dist/chunk-6VIG44VF.js +32 -0
- package/dist/{chunk-QFC6E3WD.js → chunk-ASYYYJG2.js} +4 -4
- package/dist/{chunk-OXXXUAWM.js → chunk-CTKWMPQQ.js} +1 -1
- package/dist/{chunk-QFGZXWTM.js → chunk-EIMTOK6E.js} +3 -3
- package/dist/{chunk-AMXJLVZN.js → chunk-EXJW7EKR.js} +2 -2
- package/dist/{chunk-O7CJJNW6.js → chunk-GBJWPSLJ.js} +70 -5
- package/dist/{chunk-X25NCWG2.js → chunk-GBQC5WDH.js} +16 -8
- package/dist/{chunk-3XUWPDKJ.js → chunk-GPABUQTD.js} +650 -636
- package/dist/{chunk-3QCRKKTI.js → chunk-HSTP2RX3.js} +267 -2149
- package/dist/{chunk-US5QSLPV.js → chunk-JKLZ6YZ3.js} +22 -11
- package/dist/{chunk-GKFMK7FF.js → chunk-JRLBPR5U.js} +3 -3
- package/dist/{chunk-IL343FKX.js → chunk-KHS2DZHH.js} +1 -1
- package/dist/{chunk-SALZ3LQB.js → chunk-KJT5TAOE.js} +3 -3
- package/dist/{chunk-AASHQI77.js → chunk-KZCNJAMK.js} +2 -1
- package/dist/{chunk-TNFBRXU7.js → chunk-LLCVVRCE.js} +9 -8
- package/dist/{chunk-5CFCFA6O.js → chunk-M72SMQOS.js} +8 -7
- package/dist/{chunk-TCIBTMJI.js → chunk-NZMUKAXG.js} +3 -69
- package/dist/{chunk-2KUZBEWW.js → chunk-OLRIWGYM.js} +8 -7
- package/dist/{chunk-62CCBMDC.js → chunk-OTOQFZFO.js} +40 -39
- package/dist/{chunk-EYQ7GJRW.js → chunk-PASKZCII.js} +3 -3
- package/dist/{chunk-3IXU7WUC.js → chunk-PDODDDHY.js} +1 -1
- package/dist/chunk-SDZEAIIE.js +9 -0
- package/dist/chunk-TGWDFLEX.js +1932 -0
- package/dist/{chunk-AU7LACOY.js → chunk-TYI2XOSI.js} +1 -1
- package/dist/{chunk-L2N6DDOI.js → chunk-U7UNWR3D.js} +2 -2
- package/dist/{chunk-HK76ZUAK.js → chunk-UIS7KGHW.js} +4 -4
- package/dist/{chunk-QPLFALVV.js → chunk-UWCD7JUU.js} +8 -7
- package/dist/{chunk-CNKTQ5MG.js → chunk-UYTPURFW.js} +16 -50
- package/dist/{chunk-AJVU5YW6.js → chunk-WBRW67HX.js} +4 -3
- package/dist/{chunk-J3YQCEP3.js → chunk-WC526MLS.js} +3 -3
- package/dist/{chunk-XFH6SLDK.js → chunk-XNARCHMT.js} +2 -2
- package/dist/{chunk-W5WML3OO.js → chunk-XWINH6CR.js} +1 -1
- package/dist/{chunk-Y6M7K4UG.js → chunk-Y4UCHFGK.js} +1 -1
- package/dist/{chunk-OCJTTHTS.js → chunk-Y7FKJJMF.js} +1 -9
- package/dist/{client-YVZMLEQX.js → client-62VHXHKN.js} +2 -2
- package/dist/code-editor-field-WWPDMF4O.js +3 -0
- package/dist/executions.js +17 -15
- package/dist/{global-client-N5EIFW6T.js → global-client-PJ5LANJA.js} +2 -2
- package/dist/history.js +11 -8
- package/dist/index.d.ts +10 -4
- package/dist/index.js +69 -52
- package/dist/{node-detail-view-WIWW5N6N.js → node-detail-view-P5NV5CMO.js} +14 -12
- package/dist/nodes.js +3 -3
- package/dist/observability.js +10 -8
- package/dist/{quick-config-panel-O64TXXK3.js → quick-config-panel-ZNSBVF4G.js} +11 -9
- package/dist/settings.js +11 -9
- package/dist/templates.js +17 -14
- package/dist/{workflow-builder-7vv9dCdp.d.ts → workflow-builder-C-ekFbwR.d.ts} +37 -4
- package/dist/workflow-builder.d.ts +1 -1
- package/dist/workflow-builder.js +19 -16
- package/dist/workflow-preview.d.ts +158 -0
- package/dist/workflow-preview.js +721 -0
- package/dist/workflows-list.js +12 -10
- package/package.json +5 -1
- package/dist/ExecutionDetailPage-HQB2SWBP.js +0 -28
- package/dist/ExecutionsListPage-RSLL634L.js +0 -22
- package/dist/WorkflowBuilder-E3PNZX74.js +0 -32
- package/dist/WorkflowsList-473FRRP2.js +0 -21
- package/dist/code-editor-field-XWUVOKTA.js +0 -2
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, RunHistoryView, SignalRunDialog, terminateDurableRun } from './chunk-
|
|
2
|
-
import { useDurableParityRunFields, hasAgentNodeState, agentNodeTraces, orderNodesByExecution, useRunMetadata, useRunPending, ExecutionStatusBadge, NodeTimeline, RunLogViewer, NodeStatusBadge, setRunVersioningOverride } from './chunk-
|
|
3
|
-
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-
|
|
4
|
-
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS
|
|
1
|
+
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, RunHistoryView, SignalRunDialog, terminateDurableRun } from './chunk-ASYYYJG2.js';
|
|
2
|
+
import { useDurableParityRunFields, hasAgentNodeState, agentNodeTraces, orderNodesByExecution, useRunMetadata, useRunPending, ExecutionStatusBadge, NodeTimeline, RunLogViewer, NodeStatusBadge, setRunVersioningOverride } from './chunk-UYTPURFW.js';
|
|
3
|
+
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-WC526MLS.js';
|
|
4
|
+
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-NZMUKAXG.js';
|
|
5
5
|
import { aiCost, formatTokens, modelLabel } from './chunk-NZAYYUQ4.js';
|
|
6
|
-
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-
|
|
7
|
-
import { EntityTagPicker, canSaveRunAsTestCase, useWorkflowProposal, WorkflowProposalCard, MAX_CASE_NAME, saveRunAsTestCase } from './chunk-
|
|
8
|
-
import { buildNodeDisplayMap, formatRunVersion, nodeDisplayTitle } from './chunk-
|
|
6
|
+
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-EXJW7EKR.js';
|
|
7
|
+
import { EntityTagPicker, canSaveRunAsTestCase, useWorkflowProposal, WorkflowProposalCard, MAX_CASE_NAME, saveRunAsTestCase } from './chunk-PASKZCII.js';
|
|
8
|
+
import { buildNodeDisplayMap, formatRunVersion, nodeDisplayTitle } from './chunk-KHS2DZHH.js';
|
|
9
9
|
import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
|
|
10
|
-
import { useWorkflowVersions } from './chunk-
|
|
11
|
-
import { useDurableFunctionNodesEnabled, useDurableParityEnabled, runSignalTargets, canSignalRun, useWorkflowTestsEnabled } from './chunk-
|
|
10
|
+
import { useWorkflowVersions } from './chunk-EIMTOK6E.js';
|
|
11
|
+
import { useDurableFunctionNodesEnabled, useDurableParityEnabled, runSignalTargets, canSignalRun, formatElapsedMs, runDurationMs, useWorkflowTestsEnabled } from './chunk-HSTP2RX3.js';
|
|
12
12
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, SdkPermissionButton } from './chunk-5375NUIO.js';
|
|
13
13
|
import { RunLogsDocument, RunLogAppendedDocument, ExplainRunDocument, RunAiUsageDocument } from './chunk-Z3ABLERJ.js';
|
|
14
14
|
import { useTr } from './chunk-UULVIT25.js';
|
|
15
|
-
import { getFluidGridsClient, getFluidGridsClientSafe } from './chunk-
|
|
16
|
-
import { throwIfResultError, describeOperationError } from './chunk-
|
|
15
|
+
import { getFluidGridsClient, getFluidGridsClientSafe } from './chunk-PDODDDHY.js';
|
|
16
|
+
import { throwIfResultError, describeOperationError } from './chunk-JKLZ6YZ3.js';
|
|
17
17
|
import { getFluidGridsConfig } from './chunk-UEG2WC3G.js';
|
|
18
18
|
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
19
19
|
import { useParams, useNavigate, useSearchParams, Link } from 'react-router';
|
|
@@ -1725,7 +1725,25 @@ function AgentNodeCard({
|
|
|
1725
1725
|
),
|
|
1726
1726
|
/* @__PURE__ */ jsx("h4", { className: "truncate font-medium text-text-primary", children: title })
|
|
1727
1727
|
] }),
|
|
1728
|
-
/* @__PURE__ */ jsx("div", { className: "self-start sm:self-auto", children:
|
|
1728
|
+
/* @__PURE__ */ jsx("div", { className: "self-start sm:self-auto", children: trace.completedWithError ? (
|
|
1729
|
+
// The node finished, but the agent's own call failed (e.g. the
|
|
1730
|
+
// model provider refused it): a plain "Completed" would read as
|
|
1731
|
+
// a success.
|
|
1732
|
+
/* @__PURE__ */ jsxs(
|
|
1733
|
+
"span",
|
|
1734
|
+
{
|
|
1735
|
+
className: "inline-flex items-center gap-1 rounded-full border border-status-error-border bg-status-error-bg-subtle px-1.5 py-0.5 text-xs font-medium text-status-error-text",
|
|
1736
|
+
"data-testid": "agent-completed-with-error",
|
|
1737
|
+
children: [
|
|
1738
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:alert-circle-outline", width: 12, height: 12 }),
|
|
1739
|
+
tr(
|
|
1740
|
+
"fluidgrids.executions.executionDetail.agent.completedWithError",
|
|
1741
|
+
"Completed with error"
|
|
1742
|
+
)
|
|
1743
|
+
]
|
|
1744
|
+
}
|
|
1745
|
+
)
|
|
1746
|
+
) : /* @__PURE__ */ jsx(NodeStatusBadge, { status: trace.status, size: "sm" }) })
|
|
1729
1747
|
] }),
|
|
1730
1748
|
/* @__PURE__ */ jsxs("dl", { className: "mt-3 grid grid-cols-2 gap-x-4 gap-y-2 text-sm sm:grid-cols-4", children: [
|
|
1731
1749
|
/* @__PURE__ */ jsx(
|
|
@@ -1765,7 +1783,7 @@ function AgentNodeCard({
|
|
|
1765
1783
|
"fluidgrids.executions.executionDetail.agent.duration",
|
|
1766
1784
|
"Duration"
|
|
1767
1785
|
),
|
|
1768
|
-
value: trace.durationMs
|
|
1786
|
+
value: formatElapsedMs(trace.durationMs, "\u2014")
|
|
1769
1787
|
}
|
|
1770
1788
|
)
|
|
1771
1789
|
] }),
|
|
@@ -1858,7 +1876,7 @@ function AgentStepRow({ step, tr }) {
|
|
|
1858
1876
|
"fluidgrids.executions.executionDetail.agent.stepFailed",
|
|
1859
1877
|
"Failed"
|
|
1860
1878
|
) }),
|
|
1861
|
-
step.durationMs !== null && /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs text-text-secondary", children:
|
|
1879
|
+
step.durationMs !== null && /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs text-text-secondary", children: formatElapsedMs(step.durationMs) })
|
|
1862
1880
|
] }),
|
|
1863
1881
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2 border-t border-border-secondary px-3 py-2", children: [
|
|
1864
1882
|
marked && step.reason && /* @__PURE__ */ jsx(
|
|
@@ -3114,14 +3132,6 @@ function ExecutionDetailPage() {
|
|
|
3114
3132
|
},
|
|
3115
3133
|
[navigate]
|
|
3116
3134
|
);
|
|
3117
|
-
const formatDuration2 = (ms) => {
|
|
3118
|
-
if (!ms) return "-";
|
|
3119
|
-
if (ms < 1e3) return `${ms}ms`;
|
|
3120
|
-
if (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;
|
|
3121
|
-
if (ms < 36e5)
|
|
3122
|
-
return `${Math.round(ms / 6e4)}m ${Math.round(ms % 6e4 / 1e3)}s`;
|
|
3123
|
-
return `${Math.round(ms / 36e5)}h ${Math.round(ms % 36e5 / 6e4)}m`;
|
|
3124
|
-
};
|
|
3125
3135
|
const formatDateTime2 = (dateStr) => {
|
|
3126
3136
|
if (!dateStr) return "-";
|
|
3127
3137
|
const date = new Date(dateStr);
|
|
@@ -3148,7 +3158,7 @@ function ExecutionDetailPage() {
|
|
|
3148
3158
|
Link,
|
|
3149
3159
|
{
|
|
3150
3160
|
to: "../runs",
|
|
3151
|
-
className: "text-
|
|
3161
|
+
className: "text-text-link hover:text-text-linkHover hover:underline text-sm mb-4 inline-block",
|
|
3152
3162
|
children: [
|
|
3153
3163
|
"\u2190",
|
|
3154
3164
|
" ",
|
|
@@ -3183,7 +3193,7 @@ function ExecutionDetailPage() {
|
|
|
3183
3193
|
Link,
|
|
3184
3194
|
{
|
|
3185
3195
|
to: "../runs",
|
|
3186
|
-
className: "text-
|
|
3196
|
+
className: "text-text-link hover:text-text-linkHover hover:underline text-sm mb-4 inline-block",
|
|
3187
3197
|
children: [
|
|
3188
3198
|
"\u2190",
|
|
3189
3199
|
" ",
|
|
@@ -3270,136 +3280,220 @@ function ExecutionDetailPage() {
|
|
|
3270
3280
|
icon: "mdi:information-outline"
|
|
3271
3281
|
}
|
|
3272
3282
|
];
|
|
3273
|
-
return
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
to: "../runs",
|
|
3278
|
-
className: "text-action-primary-text hover:underline text-sm mb-4 inline-block",
|
|
3279
|
-
children: [
|
|
3280
|
-
"\u2190",
|
|
3281
|
-
" ",
|
|
3282
|
-
tr(
|
|
3283
|
-
"fluidgrids.executions.executionDetail.backToExecutions",
|
|
3284
|
-
"Back to Executions"
|
|
3285
|
-
)
|
|
3286
|
-
]
|
|
3287
|
-
}
|
|
3288
|
-
),
|
|
3289
|
-
execution.parentRunId && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3 text-sm", children: [
|
|
3290
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:sitemap", className: "text-chart-12", width: 16 }),
|
|
3291
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3292
|
-
"fluidgrids.executions.executionDetail.subWorkflowOf",
|
|
3293
|
-
"Sub-workflow of"
|
|
3294
|
-
) }),
|
|
3283
|
+
return (
|
|
3284
|
+
// `pb-24`: the shell's floating assistant bubble sits bottom-right and would
|
|
3285
|
+
// otherwise cover the last card's actions (e.g. "View trace") at the end.
|
|
3286
|
+
/* @__PURE__ */ jsxs("div", { className: "p-4 pb-24 sm:p-6 sm:pb-24 bg-background-primary min-h-screen", children: [
|
|
3295
3287
|
/* @__PURE__ */ jsxs(
|
|
3296
3288
|
Link,
|
|
3297
3289
|
{
|
|
3298
|
-
to:
|
|
3299
|
-
className: "text-
|
|
3290
|
+
to: "../runs",
|
|
3291
|
+
className: "text-text-link hover:text-text-linkHover hover:underline text-sm mb-4 inline-block",
|
|
3300
3292
|
children: [
|
|
3301
|
-
|
|
3302
|
-
"fluidgrids.executions.executionDetail.parentRunLinkPrefix",
|
|
3303
|
-
"Parent Run"
|
|
3304
|
-
),
|
|
3293
|
+
"\u2190",
|
|
3305
3294
|
" ",
|
|
3306
|
-
|
|
3307
|
-
|
|
3295
|
+
tr(
|
|
3296
|
+
"fluidgrids.executions.executionDetail.backToExecutions",
|
|
3297
|
+
"Back to Executions"
|
|
3298
|
+
)
|
|
3308
3299
|
]
|
|
3309
3300
|
}
|
|
3310
|
-
)
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
"Sub-Workflow"
|
|
3320
|
-
) })
|
|
3321
|
-
] }),
|
|
3322
|
-
parityRun?.summary && /* @__PURE__ */ jsx(
|
|
3323
|
-
"p",
|
|
3301
|
+
),
|
|
3302
|
+
execution.parentRunId && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3 text-sm", children: [
|
|
3303
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:sitemap", className: "text-chart-12", width: 16 }),
|
|
3304
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3305
|
+
"fluidgrids.executions.executionDetail.subWorkflowOf",
|
|
3306
|
+
"Sub-workflow of"
|
|
3307
|
+
) }),
|
|
3308
|
+
/* @__PURE__ */ jsxs(
|
|
3309
|
+
Link,
|
|
3324
3310
|
{
|
|
3325
|
-
|
|
3326
|
-
"
|
|
3327
|
-
children:
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
execution.id.slice(0, 12),
|
|
3311
|
+
to: `../runs/${execution.parentRunId}`,
|
|
3312
|
+
className: "text-chart-12 hover:underline font-medium",
|
|
3313
|
+
children: [
|
|
3314
|
+
tr(
|
|
3315
|
+
"fluidgrids.executions.executionDetail.parentRunLinkPrefix",
|
|
3316
|
+
"Parent Run"
|
|
3317
|
+
),
|
|
3318
|
+
" ",
|
|
3319
|
+
execution.parentRunId.slice(0, 12),
|
|
3335
3320
|
"..."
|
|
3336
|
-
]
|
|
3321
|
+
]
|
|
3322
|
+
}
|
|
3323
|
+
)
|
|
3324
|
+
] }),
|
|
3325
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row lg:items-start lg:justify-between gap-4 mb-6", children: [
|
|
3326
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
3327
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-2", children: [
|
|
3328
|
+
/* @__PURE__ */ jsx("h1", { className: "text-2xl sm:text-3xl font-bold text-text-primary", children: execution.workflow?.name || execution.workflowKey }),
|
|
3329
|
+
/* @__PURE__ */ jsx(ExecutionStatusBadge, { status: execution.status, size: "lg" }),
|
|
3330
|
+
execution.parentRunId && /* @__PURE__ */ jsx("span", { className: "px-2 py-0.5 text-xs bg-chart-12/10 text-chart-12 rounded", children: tr(
|
|
3331
|
+
"fluidgrids.executions.executionDetail.subWorkflowBadge",
|
|
3332
|
+
"Sub-Workflow"
|
|
3333
|
+
) })
|
|
3337
3334
|
] }),
|
|
3338
|
-
parityRun?.
|
|
3339
|
-
"
|
|
3335
|
+
parityRun?.summary && /* @__PURE__ */ jsx(
|
|
3336
|
+
"p",
|
|
3340
3337
|
{
|
|
3341
|
-
className: "
|
|
3342
|
-
"data-testid": "run-
|
|
3343
|
-
|
|
3344
|
-
children: [
|
|
3345
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:key-outline", width: 16 }),
|
|
3346
|
-
/* @__PURE__ */ jsx("code", { className: "max-w-[16rem] truncate font-mono", children: parityRun.businessId })
|
|
3347
|
-
]
|
|
3338
|
+
className: "mb-2 text-sm text-text-primary",
|
|
3339
|
+
"data-testid": "run-summary",
|
|
3340
|
+
children: parityRun.summary
|
|
3348
3341
|
}
|
|
3349
3342
|
),
|
|
3350
|
-
/* @__PURE__ */ jsxs("
|
|
3351
|
-
/* @__PURE__ */
|
|
3352
|
-
|
|
3343
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-4 text-sm text-text-secondary", children: [
|
|
3344
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
3345
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:identifier", width: 16 }),
|
|
3346
|
+
/* @__PURE__ */ jsxs("code", { className: "font-mono", children: [
|
|
3347
|
+
execution.id.slice(0, 12),
|
|
3348
|
+
"..."
|
|
3349
|
+
] })
|
|
3350
|
+
] }),
|
|
3351
|
+
parityRun?.businessId && /* @__PURE__ */ jsxs(
|
|
3352
|
+
"span",
|
|
3353
|
+
{
|
|
3354
|
+
className: "flex items-center gap-1",
|
|
3355
|
+
"data-testid": "run-workflow-id",
|
|
3356
|
+
title: parityRun.businessId,
|
|
3357
|
+
children: [
|
|
3358
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:key-outline", width: 16 }),
|
|
3359
|
+
/* @__PURE__ */ jsx("code", { className: "max-w-[16rem] truncate font-mono", children: parityRun.businessId })
|
|
3360
|
+
]
|
|
3361
|
+
}
|
|
3362
|
+
),
|
|
3363
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
3364
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:tag-outline", width: 16 }),
|
|
3365
|
+
formatRunVersion(execution.version)
|
|
3366
|
+
] }),
|
|
3367
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
3368
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:clock-outline", width: 16 }),
|
|
3369
|
+
formatDateTime2(execution.startedAt || execution.createdAt)
|
|
3370
|
+
] })
|
|
3353
3371
|
] }),
|
|
3354
|
-
/* @__PURE__ */
|
|
3355
|
-
|
|
3356
|
-
formatDateTime2(execution.startedAt || execution.createdAt)
|
|
3357
|
-
] })
|
|
3358
|
-
] }),
|
|
3359
|
-
/* @__PURE__ */ jsx("div", { className: "mt-3", "data-testid": "run-tags", children: /* @__PURE__ */ jsx(
|
|
3360
|
-
EntityTagPicker,
|
|
3361
|
-
{
|
|
3362
|
-
entityType: "FLUIDGRIDS_RUN",
|
|
3363
|
-
entityId: execution.id,
|
|
3364
|
-
readOnly: !canTagRun
|
|
3365
|
-
}
|
|
3366
|
-
) })
|
|
3367
|
-
] }),
|
|
3368
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
3369
|
-
isActive && /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-sm text-text-secondary mr-4", children: [
|
|
3370
|
-
/* @__PURE__ */ jsx(
|
|
3371
|
-
"input",
|
|
3372
|
+
/* @__PURE__ */ jsx("div", { className: "mt-3", "data-testid": "run-tags", children: /* @__PURE__ */ jsx(
|
|
3373
|
+
EntityTagPicker,
|
|
3372
3374
|
{
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
className: "w-4 h-4 rounded"
|
|
3375
|
+
entityType: "FLUIDGRIDS_RUN",
|
|
3376
|
+
entityId: execution.id,
|
|
3377
|
+
readOnly: !canTagRun
|
|
3377
3378
|
}
|
|
3378
|
-
)
|
|
3379
|
-
tr(
|
|
3380
|
-
"fluidgrids.executions.executionDetail.autoRefreshToggle",
|
|
3381
|
-
"Auto-refresh"
|
|
3382
|
-
)
|
|
3379
|
+
) })
|
|
3383
3380
|
] }),
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3381
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
3382
|
+
isActive && /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-sm text-text-secondary mr-4", children: [
|
|
3383
|
+
/* @__PURE__ */ jsx(
|
|
3384
|
+
"input",
|
|
3385
|
+
{
|
|
3386
|
+
type: "checkbox",
|
|
3387
|
+
checked: autoRefreshEnabled,
|
|
3388
|
+
onChange: (e) => setAutoRefreshEnabled(e.target.checked),
|
|
3389
|
+
className: "w-4 h-4 rounded"
|
|
3390
|
+
}
|
|
3391
|
+
),
|
|
3392
|
+
tr(
|
|
3393
|
+
"fluidgrids.executions.executionDetail.autoRefreshToggle",
|
|
3394
|
+
"Auto-refresh"
|
|
3395
|
+
)
|
|
3396
|
+
] }),
|
|
3397
|
+
canControlRuns && execution.status === "RUNNING" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3398
|
+
!isDurableRun && /* @__PURE__ */ jsxs(
|
|
3399
|
+
Button,
|
|
3400
|
+
{
|
|
3401
|
+
"data-agent": "confirm",
|
|
3402
|
+
variant: "outline",
|
|
3403
|
+
size: "sm",
|
|
3404
|
+
onClick: handlePause,
|
|
3405
|
+
disabled: actionLoading,
|
|
3406
|
+
children: [
|
|
3407
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:pause", className: "mr-1", width: 16 }),
|
|
3408
|
+
tr(
|
|
3409
|
+
"fluidgrids.executions.executionDetail.pauseButton",
|
|
3410
|
+
"Pause"
|
|
3411
|
+
)
|
|
3412
|
+
]
|
|
3413
|
+
}
|
|
3414
|
+
),
|
|
3415
|
+
/* @__PURE__ */ jsxs(
|
|
3416
|
+
Button,
|
|
3417
|
+
{
|
|
3418
|
+
"data-agent": "confirm",
|
|
3419
|
+
variant: "outline",
|
|
3420
|
+
size: "sm",
|
|
3421
|
+
onClick: handleCancel,
|
|
3422
|
+
disabled: actionLoading,
|
|
3423
|
+
className: "border-[var(--color-status-warning-border)] text-[var(--color-status-warning-text)] hover:bg-[var(--color-status-warning-bg-subtle)]",
|
|
3424
|
+
children: [
|
|
3425
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:stop", className: "mr-1", width: 16 }),
|
|
3426
|
+
tr(
|
|
3427
|
+
"fluidgrids.executions.executionDetail.cancelButton",
|
|
3428
|
+
"Cancel"
|
|
3429
|
+
)
|
|
3430
|
+
]
|
|
3431
|
+
}
|
|
3432
|
+
)
|
|
3433
|
+
] }),
|
|
3434
|
+
canControlRuns && execution.status === "WAITING" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3435
|
+
humanRequestsCurrent && !awaitingPerson && !isDurableRun && !waitingOnSignal && /* @__PURE__ */ jsxs(
|
|
3436
|
+
Button,
|
|
3437
|
+
{
|
|
3438
|
+
"data-agent": "confirm",
|
|
3439
|
+
variant: "outline",
|
|
3440
|
+
size: "sm",
|
|
3441
|
+
onClick: handleResume,
|
|
3442
|
+
disabled: actionLoading,
|
|
3443
|
+
children: [
|
|
3444
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:play", className: "mr-1", width: 16 }),
|
|
3445
|
+
tr(
|
|
3446
|
+
"fluidgrids.executions.executionDetail.resumeButton",
|
|
3447
|
+
"Resume"
|
|
3448
|
+
)
|
|
3449
|
+
]
|
|
3450
|
+
}
|
|
3451
|
+
),
|
|
3452
|
+
!humanRequestsCurrent && humanRequestsError && /* @__PURE__ */ jsxs(
|
|
3453
|
+
"span",
|
|
3454
|
+
{
|
|
3455
|
+
className: "flex items-center gap-2 text-sm text-[var(--color-status-error-text)]",
|
|
3456
|
+
"data-testid": "human-requests-error",
|
|
3457
|
+
children: [
|
|
3458
|
+
tr(
|
|
3459
|
+
"fluidgrids.humanResponse.checkFailed",
|
|
3460
|
+
"Could not check whether this run is waiting on a person."
|
|
3461
|
+
),
|
|
3462
|
+
/* @__PURE__ */ jsxs(
|
|
3463
|
+
Button,
|
|
3464
|
+
{
|
|
3465
|
+
variant: "outline",
|
|
3466
|
+
size: "sm",
|
|
3467
|
+
onClick: () => void refetchHumanRequests(),
|
|
3468
|
+
children: [
|
|
3469
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:refresh", className: "mr-1", width: 16 }),
|
|
3470
|
+
tr("fluidgrids.humanResponse.retry", "Retry")
|
|
3471
|
+
]
|
|
3472
|
+
}
|
|
3473
|
+
)
|
|
3474
|
+
]
|
|
3475
|
+
}
|
|
3476
|
+
),
|
|
3477
|
+
/* @__PURE__ */ jsxs(
|
|
3478
|
+
Button,
|
|
3479
|
+
{
|
|
3480
|
+
"data-agent": "confirm",
|
|
3481
|
+
variant: "outline",
|
|
3482
|
+
size: "sm",
|
|
3483
|
+
onClick: handleCancel,
|
|
3484
|
+
disabled: actionLoading,
|
|
3485
|
+
className: "border-[var(--color-status-warning-border)] text-[var(--color-status-warning-text)] hover:bg-[var(--color-status-warning-bg-subtle)]",
|
|
3486
|
+
children: [
|
|
3487
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:stop", className: "mr-1", width: 16 }),
|
|
3488
|
+
tr(
|
|
3489
|
+
"fluidgrids.executions.executionDetail.cancelButton",
|
|
3490
|
+
"Cancel"
|
|
3491
|
+
)
|
|
3492
|
+
]
|
|
3493
|
+
}
|
|
3494
|
+
)
|
|
3495
|
+
] }),
|
|
3496
|
+
canControlRuns && execution.status === "PENDING" && /* @__PURE__ */ jsxs(
|
|
3403
3497
|
Button,
|
|
3404
3498
|
{
|
|
3405
3499
|
"data-agent": "confirm",
|
|
@@ -3407,7 +3501,6 @@ function ExecutionDetailPage() {
|
|
|
3407
3501
|
size: "sm",
|
|
3408
3502
|
onClick: handleCancel,
|
|
3409
3503
|
disabled: actionLoading,
|
|
3410
|
-
className: "border-[var(--color-status-warning-border)] text-[var(--color-status-warning-text)] hover:bg-[var(--color-status-warning-bg-subtle)]",
|
|
3411
3504
|
children: [
|
|
3412
3505
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:stop", className: "mr-1", width: 16 }),
|
|
3413
3506
|
tr(
|
|
@@ -3416,583 +3509,504 @@ function ExecutionDetailPage() {
|
|
|
3416
3509
|
)
|
|
3417
3510
|
]
|
|
3418
3511
|
}
|
|
3419
|
-
)
|
|
3420
|
-
|
|
3421
|
-
canControlRuns && execution.status === "WAITING" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3422
|
-
humanRequestsCurrent && !awaitingPerson && !isDurableRun && !waitingOnSignal && /* @__PURE__ */ jsxs(
|
|
3512
|
+
),
|
|
3513
|
+
canSendSignal && /* @__PURE__ */ jsxs(
|
|
3423
3514
|
Button,
|
|
3424
3515
|
{
|
|
3425
|
-
"data-agent": "confirm",
|
|
3426
3516
|
variant: "outline",
|
|
3427
3517
|
size: "sm",
|
|
3428
|
-
onClick:
|
|
3429
|
-
|
|
3518
|
+
onClick: () => setShowSignalDialog(true),
|
|
3519
|
+
"data-testid": "run-signal-button",
|
|
3430
3520
|
children: [
|
|
3431
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:
|
|
3521
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:bell-ring-outline", className: "mr-1", width: 16 }),
|
|
3432
3522
|
tr(
|
|
3433
|
-
"fluidgrids.executions.executionDetail.
|
|
3434
|
-
"
|
|
3523
|
+
"fluidgrids.executions.executionDetail.signalButton",
|
|
3524
|
+
"Signal"
|
|
3435
3525
|
)
|
|
3436
3526
|
]
|
|
3437
3527
|
}
|
|
3438
3528
|
),
|
|
3439
|
-
|
|
3440
|
-
|
|
3529
|
+
(isDurableRun ? canTerminateDurable : canControlRuns) && (execution.status === "RUNNING" || execution.status === "WAITING") && /* @__PURE__ */ jsxs(
|
|
3530
|
+
Button,
|
|
3441
3531
|
{
|
|
3442
|
-
|
|
3443
|
-
|
|
3532
|
+
variant: "outline",
|
|
3533
|
+
size: "sm",
|
|
3534
|
+
onClick: () => setShowTerminateDialog(true),
|
|
3535
|
+
disabled: actionLoading,
|
|
3536
|
+
className: "border-[var(--color-status-error-border)] text-[var(--color-status-error-text)] hover:bg-[var(--color-status-error-bg-subtle)]",
|
|
3444
3537
|
children: [
|
|
3538
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:close-octagon", className: "mr-1", width: 16 }),
|
|
3445
3539
|
tr(
|
|
3446
|
-
"fluidgrids.
|
|
3447
|
-
"
|
|
3448
|
-
),
|
|
3449
|
-
/* @__PURE__ */ jsxs(
|
|
3450
|
-
Button,
|
|
3451
|
-
{
|
|
3452
|
-
variant: "outline",
|
|
3453
|
-
size: "sm",
|
|
3454
|
-
onClick: () => void refetchHumanRequests(),
|
|
3455
|
-
children: [
|
|
3456
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:refresh", className: "mr-1", width: 16 }),
|
|
3457
|
-
tr("fluidgrids.humanResponse.retry", "Retry")
|
|
3458
|
-
]
|
|
3459
|
-
}
|
|
3540
|
+
"fluidgrids.executions.executionDetail.terminateButton",
|
|
3541
|
+
"Terminate"
|
|
3460
3542
|
)
|
|
3461
3543
|
]
|
|
3462
3544
|
}
|
|
3463
3545
|
),
|
|
3464
|
-
/* @__PURE__ */ jsxs(
|
|
3546
|
+
isHistoricalTestRun && execution.workflowKey && execution.version && /* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: handleLoadInBuilder, children: [
|
|
3547
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:open-in-new", className: "mr-1", width: 16 }),
|
|
3548
|
+
tr(
|
|
3549
|
+
"fluidgrids.executions.executionDetail.loadTestRunButton",
|
|
3550
|
+
"Load TEST run in builder"
|
|
3551
|
+
)
|
|
3552
|
+
] }),
|
|
3553
|
+
canControlRuns && !isDurableRun && execution.status !== "RUNNING" && execution.status !== "PENDING" && execution.status !== "WAITING" && /* @__PURE__ */ jsxs(
|
|
3465
3554
|
Button,
|
|
3466
3555
|
{
|
|
3467
3556
|
"data-agent": "confirm",
|
|
3468
3557
|
variant: "outline",
|
|
3469
3558
|
size: "sm",
|
|
3470
|
-
onClick:
|
|
3559
|
+
onClick: () => void handleReplay(),
|
|
3471
3560
|
disabled: actionLoading,
|
|
3472
|
-
className: "border-[var(--color-status-warning-border)] text-[var(--color-status-warning-text)] hover:bg-[var(--color-status-warning-bg-subtle)]",
|
|
3473
3561
|
children: [
|
|
3474
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:
|
|
3562
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:replay", className: "mr-1", width: 16 }),
|
|
3475
3563
|
tr(
|
|
3476
|
-
"fluidgrids.executions.executionDetail.
|
|
3477
|
-
"
|
|
3564
|
+
"fluidgrids.executions.executionDetail.replayButton",
|
|
3565
|
+
"Replay in test mode"
|
|
3478
3566
|
)
|
|
3479
3567
|
]
|
|
3480
3568
|
}
|
|
3481
|
-
)
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
Button,
|
|
3485
|
-
{
|
|
3486
|
-
"data-agent": "confirm",
|
|
3487
|
-
variant: "outline",
|
|
3488
|
-
size: "sm",
|
|
3489
|
-
onClick: handleCancel,
|
|
3490
|
-
disabled: actionLoading,
|
|
3491
|
-
children: [
|
|
3492
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:stop", className: "mr-1", width: 16 }),
|
|
3493
|
-
tr(
|
|
3494
|
-
"fluidgrids.executions.executionDetail.cancelButton",
|
|
3495
|
-
"Cancel"
|
|
3496
|
-
)
|
|
3497
|
-
]
|
|
3498
|
-
}
|
|
3499
|
-
),
|
|
3500
|
-
canSendSignal && /* @__PURE__ */ jsxs(
|
|
3501
|
-
Button,
|
|
3502
|
-
{
|
|
3503
|
-
variant: "outline",
|
|
3504
|
-
size: "sm",
|
|
3505
|
-
onClick: () => setShowSignalDialog(true),
|
|
3506
|
-
"data-testid": "run-signal-button",
|
|
3507
|
-
children: [
|
|
3508
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:bell-ring-outline", className: "mr-1", width: 16 }),
|
|
3509
|
-
tr(
|
|
3510
|
-
"fluidgrids.executions.executionDetail.signalButton",
|
|
3511
|
-
"Signal"
|
|
3512
|
-
)
|
|
3513
|
-
]
|
|
3514
|
-
}
|
|
3515
|
-
),
|
|
3516
|
-
(isDurableRun ? canTerminateDurable : canControlRuns) && (execution.status === "RUNNING" || execution.status === "WAITING") && /* @__PURE__ */ jsxs(
|
|
3517
|
-
Button,
|
|
3518
|
-
{
|
|
3519
|
-
variant: "outline",
|
|
3520
|
-
size: "sm",
|
|
3521
|
-
onClick: () => setShowTerminateDialog(true),
|
|
3522
|
-
disabled: actionLoading,
|
|
3523
|
-
className: "border-[var(--color-status-error-border)] text-[var(--color-status-error-text)] hover:bg-[var(--color-status-error-bg-subtle)]",
|
|
3524
|
-
children: [
|
|
3525
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:close-octagon", className: "mr-1", width: 16 }),
|
|
3526
|
-
tr(
|
|
3527
|
-
"fluidgrids.executions.executionDetail.terminateButton",
|
|
3528
|
-
"Terminate"
|
|
3529
|
-
)
|
|
3530
|
-
]
|
|
3531
|
-
}
|
|
3532
|
-
),
|
|
3533
|
-
isHistoricalTestRun && execution.workflowKey && execution.version && /* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: handleLoadInBuilder, children: [
|
|
3534
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:open-in-new", className: "mr-1", width: 16 }),
|
|
3535
|
-
tr(
|
|
3536
|
-
"fluidgrids.executions.executionDetail.loadTestRunButton",
|
|
3537
|
-
"Load TEST run in builder"
|
|
3538
|
-
)
|
|
3539
|
-
] }),
|
|
3540
|
-
canControlRuns && !isDurableRun && execution.status !== "RUNNING" && execution.status !== "PENDING" && execution.status !== "WAITING" && /* @__PURE__ */ jsxs(
|
|
3541
|
-
Button,
|
|
3542
|
-
{
|
|
3543
|
-
"data-agent": "confirm",
|
|
3544
|
-
variant: "outline",
|
|
3545
|
-
size: "sm",
|
|
3546
|
-
onClick: () => void handleReplay(),
|
|
3547
|
-
disabled: actionLoading,
|
|
3548
|
-
children: [
|
|
3549
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:replay", className: "mr-1", width: 16 }),
|
|
3550
|
-
tr(
|
|
3551
|
-
"fluidgrids.executions.executionDetail.replayButton",
|
|
3552
|
-
"Replay in test mode"
|
|
3553
|
-
)
|
|
3554
|
-
]
|
|
3555
|
-
}
|
|
3556
|
-
),
|
|
3557
|
-
/* @__PURE__ */ jsx(
|
|
3558
|
-
SaveRunAsTestCaseButton,
|
|
3559
|
-
{
|
|
3560
|
-
runId: execution.id,
|
|
3561
|
-
status: execution.status,
|
|
3562
|
-
workflowKey: execution.workflowKey,
|
|
3563
|
-
isDurable: isDurableRun || durableEnabled && durableFields.fields?.id !== execution.id
|
|
3564
|
-
}
|
|
3565
|
-
),
|
|
3566
|
-
/* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: refetch, children: [
|
|
3567
|
-
/* @__PURE__ */ jsx(Icon, { icon: "mdi:refresh", className: "mr-1", width: 16 }),
|
|
3568
|
-
tr(
|
|
3569
|
-
"fluidgrids.executions.executionDetail.refreshButton",
|
|
3570
|
-
"Refresh"
|
|
3571
|
-
)
|
|
3572
|
-
] })
|
|
3573
|
-
] })
|
|
3574
|
-
] }),
|
|
3575
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-4 mb-6", children: [
|
|
3576
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
3577
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr(
|
|
3578
|
-
"fluidgrids.executions.executionDetail.durationStat",
|
|
3579
|
-
"Duration"
|
|
3580
|
-
) }),
|
|
3581
|
-
/* @__PURE__ */ jsx("div", { className: "text-xl font-bold text-text-primary mt-1", children: formatDuration2(execution.duration) })
|
|
3582
|
-
] }),
|
|
3583
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
3584
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr(
|
|
3585
|
-
"fluidgrids.executions.executionDetail.progressStat",
|
|
3586
|
-
"Progress"
|
|
3587
|
-
) }),
|
|
3588
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1", children: [
|
|
3589
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 h-2 bg-background-tertiary rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
3590
|
-
"div",
|
|
3569
|
+
),
|
|
3570
|
+
/* @__PURE__ */ jsx(
|
|
3571
|
+
SaveRunAsTestCaseButton,
|
|
3591
3572
|
{
|
|
3592
|
-
|
|
3593
|
-
|
|
3573
|
+
runId: execution.id,
|
|
3574
|
+
status: execution.status,
|
|
3575
|
+
workflowKey: execution.workflowKey,
|
|
3576
|
+
isDurable: isDurableRun || durableEnabled && durableFields.fields?.id !== execution.id
|
|
3594
3577
|
}
|
|
3595
|
-
)
|
|
3596
|
-
/* @__PURE__ */ jsxs(
|
|
3597
|
-
|
|
3598
|
-
|
|
3578
|
+
),
|
|
3579
|
+
/* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: refetch, children: [
|
|
3580
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:refresh", className: "mr-1", width: 16 }),
|
|
3581
|
+
tr(
|
|
3582
|
+
"fluidgrids.executions.executionDetail.refreshButton",
|
|
3583
|
+
"Refresh"
|
|
3584
|
+
)
|
|
3599
3585
|
] })
|
|
3600
3586
|
] })
|
|
3601
3587
|
] }),
|
|
3602
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
3603
|
-
/* @__PURE__ */
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
"
|
|
3588
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-4 mb-6", children: [
|
|
3589
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
3590
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr(
|
|
3591
|
+
"fluidgrids.executions.executionDetail.durationStat",
|
|
3592
|
+
"Duration"
|
|
3593
|
+
) }),
|
|
3594
|
+
/* @__PURE__ */ jsx("div", { className: "text-xl font-bold text-text-primary mt-1", children: formatElapsedMs(runDurationMs(execution)) })
|
|
3595
|
+
] }),
|
|
3596
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
3597
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr(
|
|
3598
|
+
"fluidgrids.executions.executionDetail.progressStat",
|
|
3599
|
+
"Progress"
|
|
3600
|
+
) }),
|
|
3601
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1", children: [
|
|
3602
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 h-2 bg-background-tertiary rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
3603
|
+
"div",
|
|
3604
|
+
{
|
|
3605
|
+
className: `h-full ${execution.status === "FAILED" ? "bg-[var(--color-status-error-bg)]" : execution.status === "COMPLETED" ? "bg-[var(--color-status-success-bg)]" : "bg-[var(--color-status-info-bg)]"}`,
|
|
3606
|
+
style: { width: `${execution.progress}%` }
|
|
3607
|
+
}
|
|
3608
|
+
) }),
|
|
3609
|
+
/* @__PURE__ */ jsxs("span", { className: "text-xl font-bold text-text-primary", children: [
|
|
3610
|
+
Math.round(execution.progress),
|
|
3611
|
+
"%"
|
|
3612
|
+
] })
|
|
3613
|
+
] })
|
|
3614
|
+
] }),
|
|
3615
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
3616
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr("fluidgrids.executions.executionDetail.nodesStat", "Nodes") }),
|
|
3617
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1", children: [
|
|
3618
|
+
/* @__PURE__ */ jsx("span", { className: "text-xl font-bold text-[var(--color-status-success-text)]", children: execution.completedNodes ?? 0 }),
|
|
3619
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: "/" }),
|
|
3620
|
+
/* @__PURE__ */ jsx("span", { className: "text-xl font-bold text-text-primary", children: execution.totalNodes ?? 0 }),
|
|
3621
|
+
(execution.failedNodes ?? 0) > 0 && /* @__PURE__ */ jsxs("span", { className: "text-sm text-[var(--color-status-error-text)] ml-2", children: [
|
|
3622
|
+
"(",
|
|
3623
|
+
execution.failedNodes,
|
|
3624
|
+
" ",
|
|
3625
|
+
tr(
|
|
3626
|
+
"fluidgrids.executions.executionDetail.failedNodesSuffix",
|
|
3627
|
+
"failed"
|
|
3628
|
+
),
|
|
3629
|
+
")"
|
|
3630
|
+
] })
|
|
3617
3631
|
] })
|
|
3632
|
+
] }),
|
|
3633
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
3634
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr("fluidgrids.executions.executionDetail.triggerStat", "Trigger") }),
|
|
3635
|
+
/* @__PURE__ */ jsx("div", { className: "text-lg font-medium text-text-primary mt-1 truncate", children: isDurableRun && execution.workflowFn ? execution.workflowFn : execution.triggerNodeId ? nodeDisplay[execution.triggerNodeId]?.label ?? execution.triggerNodeId : "\u2014" })
|
|
3618
3636
|
] })
|
|
3619
3637
|
] }),
|
|
3620
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
3621
|
-
/* @__PURE__ */
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
/* @__PURE__ */
|
|
3629
|
-
tr("fluidgrids.executions.executionDetail.errorLabel", "Error"),
|
|
3630
|
-
execution.errorType ? ` (${execution.errorType})` : ""
|
|
3631
|
-
] })
|
|
3638
|
+
execution.errorMessage && /* @__PURE__ */ jsxs("div", { className: "mb-6 p-4 bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded-lg", children: [
|
|
3639
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-[var(--color-status-error-text)] mb-2", children: [
|
|
3640
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:alert-circle", width: 20 }),
|
|
3641
|
+
/* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
|
|
3642
|
+
tr("fluidgrids.executions.executionDetail.errorLabel", "Error"),
|
|
3643
|
+
execution.errorType ? ` (${execution.errorType})` : ""
|
|
3644
|
+
] })
|
|
3645
|
+
] }),
|
|
3646
|
+
/* @__PURE__ */ jsx("p", { className: "text-[var(--color-status-error-text)]", children: execution.errorMessage })
|
|
3632
3647
|
] }),
|
|
3633
|
-
/* @__PURE__ */ jsx(
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
),
|
|
3646
|
-
onTerminate: handleTerminateDurable
|
|
3647
|
-
}
|
|
3648
|
-
),
|
|
3649
|
-
/* @__PURE__ */ jsx(
|
|
3650
|
-
RunAiAssistPanel,
|
|
3651
|
-
{
|
|
3652
|
-
runId: execution.id,
|
|
3653
|
-
status: execution.status,
|
|
3654
|
-
canPropose: canProposeFix,
|
|
3655
|
-
canApply: canApplyFix,
|
|
3656
|
-
onOpenWorkflow: (workflowKey, version) => navigate(
|
|
3657
|
-
`../workflow/${encodeURIComponent(workflowKey)}/${encodeURIComponent(version)}`
|
|
3658
|
-
)
|
|
3659
|
-
}
|
|
3660
|
-
),
|
|
3661
|
-
/* @__PURE__ */ jsx(
|
|
3662
|
-
RunFailureClusterCard,
|
|
3663
|
-
{
|
|
3664
|
-
runId: execution.id,
|
|
3665
|
-
status: execution.status,
|
|
3666
|
-
canApply: canApplyFix,
|
|
3667
|
-
onOpenWorkflow: (workflowKey, version) => navigate(
|
|
3668
|
-
`../workflow/${encodeURIComponent(workflowKey)}/${encodeURIComponent(version)}`
|
|
3669
|
-
)
|
|
3670
|
-
}
|
|
3671
|
-
),
|
|
3672
|
-
/* @__PURE__ */ jsx(RunQueuedBanner, { status: execution.status, context: execution.context }),
|
|
3673
|
-
/* @__PURE__ */ jsx(RunDataPrunedNotice, { dataPrunedAt: execution.dataPrunedAt }),
|
|
3674
|
-
/* @__PURE__ */ jsx(RunHumanRequests, { requests: humanRequests }),
|
|
3675
|
-
/* @__PURE__ */ jsx(
|
|
3676
|
-
RunPolicyDecisions,
|
|
3677
|
-
{
|
|
3678
|
-
decisions: policyDecisions,
|
|
3679
|
-
waiting: execution.status === "WAITING",
|
|
3680
|
-
onDecide: async (id, approve) => {
|
|
3681
|
-
await decidePolicyApproval(id, approve);
|
|
3682
|
-
await Promise.all([refetch(), refetchHumanRequests()]);
|
|
3648
|
+
isDurableRun && /* @__PURE__ */ jsx(
|
|
3649
|
+
DurableDeterminismBanner,
|
|
3650
|
+
{
|
|
3651
|
+
status: determinism.status,
|
|
3652
|
+
workflowKey: execution.workflowKey,
|
|
3653
|
+
version: execution.version,
|
|
3654
|
+
canReplaceCode,
|
|
3655
|
+
canTerminate: canTerminateDurable,
|
|
3656
|
+
onOpenSource: () => navigate(
|
|
3657
|
+
`../workflow/${encodeURIComponent(execution.workflowKey)}/${encodeURIComponent(execution.version)}`
|
|
3658
|
+
),
|
|
3659
|
+
onTerminate: handleTerminateDurable
|
|
3683
3660
|
}
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
RunParityPanel,
|
|
3688
|
-
{
|
|
3689
|
-
run: { ...parityRun, parentRunId: execution.parentRunId },
|
|
3690
|
-
open: runCanChange,
|
|
3691
|
-
durable: isDurableRun,
|
|
3692
|
-
canOverride: canControlRuns,
|
|
3693
|
-
onOverride: () => setShowOverrideDialog(true)
|
|
3694
|
-
}
|
|
3695
|
-
),
|
|
3696
|
-
parityEnabled && runCanChange && /* @__PURE__ */ jsx(
|
|
3697
|
-
RunPendingCard,
|
|
3698
|
-
{
|
|
3699
|
-
pending: runPending.pending,
|
|
3700
|
-
loading: runPending.loading,
|
|
3701
|
-
error: runPending.error,
|
|
3702
|
-
onRefresh: () => void runPending.refetch(),
|
|
3703
|
-
onViewChildRun: handleViewChildRun
|
|
3704
|
-
}
|
|
3705
|
-
),
|
|
3706
|
-
/* @__PURE__ */ jsx("div", { className: "border-b border-border-secondary mb-6", children: /* @__PURE__ */ jsx("nav", { className: "flex gap-4 -mb-px overflow-x-auto", children: tabs.map((tab) => /* @__PURE__ */ jsxs(
|
|
3707
|
-
"button",
|
|
3708
|
-
{
|
|
3709
|
-
onClick: () => setActiveTab(tab.id),
|
|
3710
|
-
className: `
|
|
3711
|
-
flex shrink-0 items-center gap-2 whitespace-nowrap px-4 py-3 border-b-2 text-sm font-medium transition-colors
|
|
3712
|
-
${activeTab === tab.id ? "border-action-primary-bg text-action-primary-text" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-primary"}
|
|
3713
|
-
`,
|
|
3714
|
-
children: [
|
|
3715
|
-
/* @__PURE__ */ jsx(Icon, { icon: tab.icon, width: 18 }),
|
|
3716
|
-
tab.label
|
|
3717
|
-
]
|
|
3718
|
-
},
|
|
3719
|
-
tab.id
|
|
3720
|
-
)) }) }),
|
|
3721
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary", children: [
|
|
3722
|
-
activeTab === "timeline" && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsx(
|
|
3723
|
-
NodeTimeline,
|
|
3661
|
+
),
|
|
3662
|
+
/* @__PURE__ */ jsx(
|
|
3663
|
+
RunAiAssistPanel,
|
|
3724
3664
|
{
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3665
|
+
runId: execution.id,
|
|
3666
|
+
status: execution.status,
|
|
3667
|
+
canPropose: canProposeFix,
|
|
3668
|
+
canApply: canApplyFix,
|
|
3669
|
+
onOpenWorkflow: (workflowKey, version) => navigate(
|
|
3670
|
+
`../workflow/${encodeURIComponent(workflowKey)}/${encodeURIComponent(version)}`
|
|
3671
|
+
)
|
|
3731
3672
|
}
|
|
3732
|
-
)
|
|
3733
|
-
|
|
3734
|
-
|
|
3673
|
+
),
|
|
3674
|
+
/* @__PURE__ */ jsx(
|
|
3675
|
+
RunFailureClusterCard,
|
|
3735
3676
|
{
|
|
3736
|
-
|
|
3737
|
-
|
|
3738
|
-
|
|
3739
|
-
|
|
3740
|
-
|
|
3741
|
-
|
|
3742
|
-
focusNodeId: agentFocusNodeId
|
|
3677
|
+
runId: execution.id,
|
|
3678
|
+
status: execution.status,
|
|
3679
|
+
canApply: canApplyFix,
|
|
3680
|
+
onOpenWorkflow: (workflowKey, version) => navigate(
|
|
3681
|
+
`../workflow/${encodeURIComponent(workflowKey)}/${encodeURIComponent(version)}`
|
|
3682
|
+
)
|
|
3743
3683
|
}
|
|
3744
|
-
)
|
|
3745
|
-
|
|
3746
|
-
|
|
3747
|
-
|
|
3684
|
+
),
|
|
3685
|
+
/* @__PURE__ */ jsx(RunQueuedBanner, { status: execution.status, context: execution.context }),
|
|
3686
|
+
/* @__PURE__ */ jsx(RunDataPrunedNotice, { dataPrunedAt: execution.dataPrunedAt }),
|
|
3687
|
+
/* @__PURE__ */ jsx(RunHumanRequests, { requests: humanRequests }),
|
|
3688
|
+
/* @__PURE__ */ jsx(
|
|
3689
|
+
RunPolicyDecisions,
|
|
3690
|
+
{
|
|
3691
|
+
decisions: policyDecisions,
|
|
3692
|
+
waiting: execution.status === "WAITING",
|
|
3693
|
+
onDecide: async (id, approve) => {
|
|
3694
|
+
await decidePolicyApproval(id, approve);
|
|
3695
|
+
await Promise.all([refetch(), refetchHumanRequests()]);
|
|
3696
|
+
}
|
|
3697
|
+
}
|
|
3698
|
+
),
|
|
3699
|
+
parityRun && hasParityDetails(parityRun, isDurableRun) && /* @__PURE__ */ jsx(
|
|
3700
|
+
RunParityPanel,
|
|
3701
|
+
{
|
|
3702
|
+
run: { ...parityRun, parentRunId: execution.parentRunId },
|
|
3703
|
+
open: runCanChange,
|
|
3704
|
+
durable: isDurableRun,
|
|
3705
|
+
canOverride: canControlRuns,
|
|
3706
|
+
onOverride: () => setShowOverrideDialog(true)
|
|
3707
|
+
}
|
|
3708
|
+
),
|
|
3709
|
+
parityEnabled && runCanChange && /* @__PURE__ */ jsx(
|
|
3710
|
+
RunPendingCard,
|
|
3711
|
+
{
|
|
3712
|
+
pending: runPending.pending,
|
|
3713
|
+
loading: runPending.loading,
|
|
3714
|
+
error: runPending.error,
|
|
3715
|
+
onRefresh: () => void runPending.refetch(),
|
|
3716
|
+
onViewChildRun: handleViewChildRun
|
|
3717
|
+
}
|
|
3718
|
+
),
|
|
3719
|
+
/* @__PURE__ */ jsx("div", { className: "border-b border-border-secondary mb-6", children: /* @__PURE__ */ jsx("nav", { className: "flex gap-4 -mb-px overflow-x-auto", children: tabs.map((tab) => /* @__PURE__ */ jsxs(
|
|
3720
|
+
"button",
|
|
3721
|
+
{
|
|
3722
|
+
onClick: () => setActiveTab(tab.id),
|
|
3723
|
+
className: `
|
|
3724
|
+
flex shrink-0 items-center gap-2 whitespace-nowrap px-4 py-3 border-b-2 text-sm font-medium transition-colors
|
|
3725
|
+
${activeTab === tab.id ? "border-action-primary-bg text-text-primary" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-primary"}
|
|
3726
|
+
`,
|
|
3727
|
+
children: [
|
|
3728
|
+
/* @__PURE__ */ jsx(Icon, { icon: tab.icon, width: 18 }),
|
|
3729
|
+
tab.label
|
|
3730
|
+
]
|
|
3731
|
+
},
|
|
3732
|
+
tab.id
|
|
3733
|
+
)) }) }),
|
|
3734
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary", children: [
|
|
3735
|
+
activeTab === "timeline" && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsx(
|
|
3736
|
+
NodeTimeline,
|
|
3748
3737
|
{
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3738
|
+
nodeStates: execution.nodeStates ?? [],
|
|
3739
|
+
nodeDisplay,
|
|
3740
|
+
triggerNodeId: execution.triggerNodeId ?? void 0,
|
|
3741
|
+
onRetryNode: canControlRuns ? handleRetryNode : void 0,
|
|
3742
|
+
onViewChildRun: handleViewChildRun,
|
|
3743
|
+
onViewAgentTrace: (nodeId) => setActiveTab("agent", nodeId)
|
|
3754
3744
|
}
|
|
3755
|
-
),
|
|
3756
|
-
/* @__PURE__ */ jsx(
|
|
3757
|
-
|
|
3745
|
+
) }),
|
|
3746
|
+
activeTab === "agent" && hasAgent && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsx(
|
|
3747
|
+
AgentTracePanel,
|
|
3758
3748
|
{
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3749
|
+
traces: agentTraces,
|
|
3750
|
+
nodeDisplay,
|
|
3751
|
+
usage: runAiUsage.usage,
|
|
3752
|
+
usageLoading: runAiUsage.loading,
|
|
3753
|
+
usageError: runAiUsage.error,
|
|
3754
|
+
onRefreshUsage: () => void runAiUsage.refetch(),
|
|
3755
|
+
focusNodeId: agentFocusNodeId
|
|
3756
|
+
}
|
|
3757
|
+
) }),
|
|
3758
|
+
activeTab === "history" && isDurableRun && /* @__PURE__ */ jsxs("div", { className: "space-y-4 p-4 sm:p-6", children: [
|
|
3759
|
+
runCanChange && /* @__PURE__ */ jsx(
|
|
3760
|
+
WaitingAtPanel,
|
|
3761
|
+
{
|
|
3762
|
+
trace: waitingAt.trace,
|
|
3763
|
+
loading: waitingAt.loading,
|
|
3764
|
+
error: waitingAt.error,
|
|
3765
|
+
onRefresh: () => void waitingAt.refetch(),
|
|
3766
|
+
metadata: parityEnabled ? runMetadata.answer?.metadata : null
|
|
3767
|
+
}
|
|
3768
|
+
),
|
|
3769
|
+
/* @__PURE__ */ jsx(
|
|
3770
|
+
RunHistoryView,
|
|
3771
|
+
{
|
|
3772
|
+
events: runHistory.events,
|
|
3773
|
+
loading: runHistory.loading,
|
|
3774
|
+
error: runHistory.error,
|
|
3775
|
+
active: isActive,
|
|
3776
|
+
streaming: runHistory.streaming,
|
|
3777
|
+
truncated: runHistory.truncated,
|
|
3778
|
+
historyLength: runHistory.historyLength,
|
|
3779
|
+
onRefresh: () => void runHistory.refetch(),
|
|
3780
|
+
onViewChildRun: handleViewChildRun,
|
|
3781
|
+
showBenign: parityEnabled
|
|
3782
|
+
}
|
|
3783
|
+
)
|
|
3784
|
+
] }),
|
|
3785
|
+
activeTab === "logs" && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsx(
|
|
3786
|
+
RunLogViewer,
|
|
3787
|
+
{
|
|
3788
|
+
runId,
|
|
3789
|
+
lines: runLogs.lines,
|
|
3790
|
+
nodeStates: execution.nodeStates ?? [],
|
|
3791
|
+
nodeDisplay,
|
|
3792
|
+
loading: runLogs.loading,
|
|
3793
|
+
error: runLogs.error,
|
|
3794
|
+
hasMore: runLogs.hasMore,
|
|
3795
|
+
limitReached: runLogs.limitReached,
|
|
3796
|
+
streaming: runLogs.streaming,
|
|
3762
3797
|
active: isActive,
|
|
3763
|
-
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
onRefresh: () => void runHistory.refetch(),
|
|
3767
|
-
onViewChildRun: handleViewChildRun,
|
|
3768
|
-
showBenign: parityEnabled
|
|
3798
|
+
minLevel: minLogLevel,
|
|
3799
|
+
onMinLevelChange: setMinLogLevel,
|
|
3800
|
+
onLoadMore: () => void runLogs.loadMore()
|
|
3769
3801
|
}
|
|
3770
|
-
)
|
|
3771
|
-
] }),
|
|
3772
|
-
activeTab === "logs" && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsx(
|
|
3773
|
-
RunLogViewer,
|
|
3774
|
-
{
|
|
3775
|
-
runId,
|
|
3776
|
-
lines: runLogs.lines,
|
|
3777
|
-
nodeStates: execution.nodeStates ?? [],
|
|
3778
|
-
nodeDisplay,
|
|
3779
|
-
loading: runLogs.loading,
|
|
3780
|
-
error: runLogs.error,
|
|
3781
|
-
hasMore: runLogs.hasMore,
|
|
3782
|
-
limitReached: runLogs.limitReached,
|
|
3783
|
-
streaming: runLogs.streaming,
|
|
3784
|
-
active: isActive,
|
|
3785
|
-
minLevel: minLogLevel,
|
|
3786
|
-
onMinLevelChange: setMinLogLevel,
|
|
3787
|
-
onLoadMore: () => void runLogs.loadMore()
|
|
3788
|
-
}
|
|
3789
|
-
) }),
|
|
3790
|
-
activeTab === "input" && /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6", children: [
|
|
3791
|
-
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children: tr(
|
|
3792
|
-
"fluidgrids.executions.executionDetail.triggerDataHeading",
|
|
3793
|
-
"Trigger Data"
|
|
3794
3802
|
) }),
|
|
3795
|
-
|
|
3796
|
-
] }),
|
|
3797
|
-
activeTab === "context" && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
3798
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
3803
|
+
activeTab === "input" && /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6", children: [
|
|
3799
3804
|
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children: tr(
|
|
3800
|
-
"fluidgrids.executions.executionDetail.
|
|
3801
|
-
"
|
|
3805
|
+
"fluidgrids.executions.executionDetail.triggerDataHeading",
|
|
3806
|
+
"Trigger Data"
|
|
3802
3807
|
) }),
|
|
3803
|
-
/* @__PURE__ */ jsx("div", { className: "bg-background-primary rounded p-4 max-h-[
|
|
3808
|
+
/* @__PURE__ */ jsx("div", { className: "bg-background-primary rounded p-4 max-h-[400px] overflow-auto", children: /* @__PURE__ */ jsx("pre", { className: "text-sm text-text-primary font-mono whitespace-pre-wrap break-words", children: JSON.stringify(execution.triggerData ?? null, null, 2) }) })
|
|
3804
3809
|
] }),
|
|
3805
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
3806
|
-
/* @__PURE__ */
|
|
3807
|
-
"
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
/* @__PURE__ */
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
3819
|
-
/* @__PURE__ */
|
|
3820
|
-
"
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3827
|
-
"fluidgrids.executions.executionDetail.workflowKeyRow",
|
|
3828
|
-
"Workflow Key"
|
|
3829
|
-
) }),
|
|
3830
|
-
/* @__PURE__ */ jsx("code", { className: "font-mono text-text-primary", children: execution.workflowKey })
|
|
3831
|
-
] }),
|
|
3832
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3833
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3834
|
-
"fluidgrids.executions.executionDetail.versionRow",
|
|
3835
|
-
"Version"
|
|
3836
|
-
) }),
|
|
3837
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatRunVersion(execution.version) })
|
|
3838
|
-
] }),
|
|
3839
|
-
isDurableRun && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3810
|
+
activeTab === "context" && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
3811
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
3812
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children: tr(
|
|
3813
|
+
"fluidgrids.executions.executionDetail.executionContextHeading",
|
|
3814
|
+
"Execution Context"
|
|
3815
|
+
) }),
|
|
3816
|
+
/* @__PURE__ */ jsx("div", { className: "bg-background-primary rounded p-4 max-h-[300px] overflow-auto", children: /* @__PURE__ */ jsx("pre", { className: "text-sm text-text-primary font-mono whitespace-pre-wrap break-words", children: JSON.stringify(execution.context ?? null, null, 2) }) })
|
|
3817
|
+
] }),
|
|
3818
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
3819
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children: tr(
|
|
3820
|
+
"fluidgrids.executions.executionDetail.executionDetailsHeading",
|
|
3821
|
+
"Execution Details"
|
|
3822
|
+
) }),
|
|
3823
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
3824
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3825
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3826
|
+
"fluidgrids.executions.executionDetail.runIdRow",
|
|
3827
|
+
"Run ID"
|
|
3828
|
+
) }),
|
|
3829
|
+
/* @__PURE__ */ jsx("code", { className: "font-mono text-text-primary", children: execution.id })
|
|
3830
|
+
] }),
|
|
3840
3831
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3841
3832
|
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3842
|
-
"fluidgrids.executions.executionDetail.
|
|
3843
|
-
"
|
|
3833
|
+
"fluidgrids.executions.executionDetail.workflowRow",
|
|
3834
|
+
"Workflow"
|
|
3844
3835
|
) }),
|
|
3845
|
-
/* @__PURE__ */ jsx("
|
|
3836
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: execution.workflow?.name || execution.workflowKey })
|
|
3846
3837
|
] }),
|
|
3847
3838
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3848
3839
|
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3849
|
-
"fluidgrids.executions.executionDetail.
|
|
3850
|
-
"
|
|
3840
|
+
"fluidgrids.executions.executionDetail.workflowKeyRow",
|
|
3841
|
+
"Workflow Key"
|
|
3851
3842
|
) }),
|
|
3852
|
-
/* @__PURE__ */ jsx("
|
|
3843
|
+
/* @__PURE__ */ jsx("code", { className: "font-mono text-text-primary", children: execution.workflowKey })
|
|
3853
3844
|
] }),
|
|
3854
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between
|
|
3845
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3855
3846
|
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3856
|
-
"fluidgrids.executions.executionDetail.
|
|
3857
|
-
"
|
|
3847
|
+
"fluidgrids.executions.executionDetail.versionRow",
|
|
3848
|
+
"Version"
|
|
3849
|
+
) }),
|
|
3850
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatRunVersion(execution.version) })
|
|
3851
|
+
] }),
|
|
3852
|
+
isDurableRun && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3853
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3854
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3855
|
+
"fluidgrids.executions.executionDetail.workflowFnRow",
|
|
3856
|
+
"Function"
|
|
3857
|
+
) }),
|
|
3858
|
+
/* @__PURE__ */ jsx("code", { className: "font-mono text-text-primary", children: execution.workflowFn ?? "\u2014" })
|
|
3859
|
+
] }),
|
|
3860
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3861
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3862
|
+
"fluidgrids.executions.executionDetail.taskQueueRow",
|
|
3863
|
+
"Task queue"
|
|
3864
|
+
) }),
|
|
3865
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: execution.taskQueue ?? "\u2014" })
|
|
3866
|
+
] }),
|
|
3867
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between gap-4 py-2 border-b border-border-secondary", children: [
|
|
3868
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3869
|
+
"fluidgrids.executions.executionDetail.buildIdRow",
|
|
3870
|
+
"Build"
|
|
3871
|
+
) }),
|
|
3872
|
+
/* @__PURE__ */ jsx(
|
|
3873
|
+
"code",
|
|
3874
|
+
{
|
|
3875
|
+
className: "truncate font-mono text-text-primary",
|
|
3876
|
+
title: execution.buildId ?? void 0,
|
|
3877
|
+
children: execution.buildId ?? "\u2014"
|
|
3878
|
+
}
|
|
3879
|
+
)
|
|
3880
|
+
] }),
|
|
3881
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3882
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3883
|
+
"fluidgrids.executions.executionDetail.historyLengthRow",
|
|
3884
|
+
"History events"
|
|
3885
|
+
) }),
|
|
3886
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: execution.historyLength ?? 0 })
|
|
3887
|
+
] })
|
|
3888
|
+
] }),
|
|
3889
|
+
execution.triggeredById && /* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3890
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3891
|
+
"fluidgrids.executions.executionDetail.triggeredByRow",
|
|
3892
|
+
"Triggered By"
|
|
3858
3893
|
) }),
|
|
3859
3894
|
/* @__PURE__ */ jsx(
|
|
3860
|
-
"
|
|
3895
|
+
"span",
|
|
3861
3896
|
{
|
|
3862
|
-
className: "
|
|
3863
|
-
title: execution.
|
|
3864
|
-
children:
|
|
3897
|
+
className: "text-text-primary",
|
|
3898
|
+
title: execution.triggeredById,
|
|
3899
|
+
children: triggeredByLabel
|
|
3900
|
+
}
|
|
3901
|
+
)
|
|
3902
|
+
] }),
|
|
3903
|
+
execution.parentRunId && /* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3904
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3905
|
+
"fluidgrids.executions.executionDetail.parentRunRow",
|
|
3906
|
+
"Parent Run"
|
|
3907
|
+
) }),
|
|
3908
|
+
/* @__PURE__ */ jsxs(
|
|
3909
|
+
Link,
|
|
3910
|
+
{
|
|
3911
|
+
to: `/runs/${execution.parentRunId}`,
|
|
3912
|
+
className: "text-text-link hover:text-text-linkHover hover:underline font-mono",
|
|
3913
|
+
children: [
|
|
3914
|
+
execution.parentRunId.slice(0, 12),
|
|
3915
|
+
"..."
|
|
3916
|
+
]
|
|
3865
3917
|
}
|
|
3866
3918
|
)
|
|
3867
3919
|
] }),
|
|
3868
3920
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3869
3921
|
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3870
|
-
"fluidgrids.executions.executionDetail.
|
|
3871
|
-
"
|
|
3922
|
+
"fluidgrids.executions.executionDetail.createdRow",
|
|
3923
|
+
"Created"
|
|
3872
3924
|
) }),
|
|
3873
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: execution.
|
|
3925
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime2(execution.createdAt) })
|
|
3926
|
+
] }),
|
|
3927
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3928
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3929
|
+
"fluidgrids.executions.executionDetail.startedRow",
|
|
3930
|
+
"Started"
|
|
3931
|
+
) }),
|
|
3932
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime2(execution.startedAt) })
|
|
3933
|
+
] }),
|
|
3934
|
+
execution.completedAt && /* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3935
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3936
|
+
"fluidgrids.executions.executionDetail.completedRow",
|
|
3937
|
+
"Completed"
|
|
3938
|
+
) }),
|
|
3939
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime2(execution.completedAt) })
|
|
3874
3940
|
] })
|
|
3875
|
-
] })
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3941
|
+
] })
|
|
3942
|
+
] })
|
|
3943
|
+
] }) })
|
|
3944
|
+
] }),
|
|
3945
|
+
(canSendSignal || showSignalDialog) && /* @__PURE__ */ jsx(
|
|
3946
|
+
SignalRunDialog,
|
|
3947
|
+
{
|
|
3948
|
+
runId: execution.id,
|
|
3949
|
+
targets: signalTargets,
|
|
3950
|
+
open: showSignalDialog,
|
|
3951
|
+
onOpenChange: setShowSignalDialog,
|
|
3952
|
+
onSent: () => {
|
|
3953
|
+
void refetch();
|
|
3954
|
+
if (isDurableRun) void runHistory.refetch();
|
|
3955
|
+
}
|
|
3956
|
+
}
|
|
3957
|
+
),
|
|
3958
|
+
showOverrideDialog && parityRun && /* @__PURE__ */ jsx(
|
|
3959
|
+
RunVersioningOverrideDialogHost,
|
|
3960
|
+
{
|
|
3961
|
+
workflowKey: execution.workflowKey,
|
|
3962
|
+
runId: execution.id,
|
|
3963
|
+
current: parityRun.versioning ?? null,
|
|
3964
|
+
onOpenChange: setShowOverrideDialog,
|
|
3965
|
+
onChanged: () => void refetch()
|
|
3966
|
+
}
|
|
3967
|
+
),
|
|
3968
|
+
/* @__PURE__ */ jsx(
|
|
3969
|
+
AlertDialog,
|
|
3970
|
+
{
|
|
3971
|
+
open: showTerminateDialog,
|
|
3972
|
+
onOpenChange: setShowTerminateDialog,
|
|
3973
|
+
children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
|
|
3974
|
+
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
3975
|
+
/* @__PURE__ */ jsx(AlertDialogTitle, { children: tr(
|
|
3976
|
+
"fluidgrids.executions.executionDetail.terminateDialogTitle",
|
|
3977
|
+
"Terminate Execution"
|
|
3880
3978
|
) }),
|
|
3881
|
-
/* @__PURE__ */ jsx(
|
|
3882
|
-
"
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
title: execution.triggeredById,
|
|
3886
|
-
children: triggeredByLabel
|
|
3887
|
-
}
|
|
3888
|
-
)
|
|
3979
|
+
/* @__PURE__ */ jsx(AlertDialogDescription, { children: tr(
|
|
3980
|
+
"fluidgrids.executions.executionDetail.terminateDialogDescription",
|
|
3981
|
+
"Are you sure you want to force terminate this execution? This will immediately stop the running workflow and cannot be resumed."
|
|
3982
|
+
) })
|
|
3889
3983
|
] }),
|
|
3890
|
-
|
|
3891
|
-
/* @__PURE__ */ jsx(
|
|
3892
|
-
"fluidgrids.executions.executionDetail.
|
|
3893
|
-
"
|
|
3984
|
+
/* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
|
|
3985
|
+
/* @__PURE__ */ jsx(AlertDialogCancel, { disabled: actionLoading, children: tr(
|
|
3986
|
+
"fluidgrids.executions.executionDetail.cancelButton",
|
|
3987
|
+
"Cancel"
|
|
3894
3988
|
) }),
|
|
3895
|
-
/* @__PURE__ */
|
|
3896
|
-
|
|
3989
|
+
/* @__PURE__ */ jsx(
|
|
3990
|
+
AlertDialogAction,
|
|
3897
3991
|
{
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
|
|
3902
|
-
"
|
|
3903
|
-
|
|
3992
|
+
onClick: handleTerminate,
|
|
3993
|
+
disabled: actionLoading,
|
|
3994
|
+
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
3995
|
+
children: actionLoading ? tr(
|
|
3996
|
+
"fluidgrids.executions.executionDetail.terminatingButton",
|
|
3997
|
+
"Terminating..."
|
|
3998
|
+
) : tr(
|
|
3999
|
+
"fluidgrids.executions.executionDetail.terminateButton",
|
|
4000
|
+
"Terminate"
|
|
4001
|
+
)
|
|
3904
4002
|
}
|
|
3905
4003
|
)
|
|
3906
|
-
] }),
|
|
3907
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3908
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3909
|
-
"fluidgrids.executions.executionDetail.createdRow",
|
|
3910
|
-
"Created"
|
|
3911
|
-
) }),
|
|
3912
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime2(execution.createdAt) })
|
|
3913
|
-
] }),
|
|
3914
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3915
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3916
|
-
"fluidgrids.executions.executionDetail.startedRow",
|
|
3917
|
-
"Started"
|
|
3918
|
-
) }),
|
|
3919
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime2(execution.startedAt) })
|
|
3920
|
-
] }),
|
|
3921
|
-
execution.completedAt && /* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
3922
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
3923
|
-
"fluidgrids.executions.executionDetail.completedRow",
|
|
3924
|
-
"Completed"
|
|
3925
|
-
) }),
|
|
3926
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime2(execution.completedAt) })
|
|
3927
4004
|
] })
|
|
3928
4005
|
] })
|
|
3929
|
-
] })
|
|
3930
|
-
] }) })
|
|
3931
|
-
] }),
|
|
3932
|
-
(canSendSignal || showSignalDialog) && /* @__PURE__ */ jsx(
|
|
3933
|
-
SignalRunDialog,
|
|
3934
|
-
{
|
|
3935
|
-
runId: execution.id,
|
|
3936
|
-
targets: signalTargets,
|
|
3937
|
-
open: showSignalDialog,
|
|
3938
|
-
onOpenChange: setShowSignalDialog,
|
|
3939
|
-
onSent: () => {
|
|
3940
|
-
void refetch();
|
|
3941
|
-
if (isDurableRun) void runHistory.refetch();
|
|
3942
4006
|
}
|
|
3943
|
-
|
|
3944
|
-
)
|
|
3945
|
-
|
|
3946
|
-
RunVersioningOverrideDialogHost,
|
|
3947
|
-
{
|
|
3948
|
-
workflowKey: execution.workflowKey,
|
|
3949
|
-
runId: execution.id,
|
|
3950
|
-
current: parityRun.versioning ?? null,
|
|
3951
|
-
onOpenChange: setShowOverrideDialog,
|
|
3952
|
-
onChanged: () => void refetch()
|
|
3953
|
-
}
|
|
3954
|
-
),
|
|
3955
|
-
/* @__PURE__ */ jsx(
|
|
3956
|
-
AlertDialog,
|
|
3957
|
-
{
|
|
3958
|
-
open: showTerminateDialog,
|
|
3959
|
-
onOpenChange: setShowTerminateDialog,
|
|
3960
|
-
children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
|
|
3961
|
-
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
3962
|
-
/* @__PURE__ */ jsx(AlertDialogTitle, { children: tr(
|
|
3963
|
-
"fluidgrids.executions.executionDetail.terminateDialogTitle",
|
|
3964
|
-
"Terminate Execution"
|
|
3965
|
-
) }),
|
|
3966
|
-
/* @__PURE__ */ jsx(AlertDialogDescription, { children: tr(
|
|
3967
|
-
"fluidgrids.executions.executionDetail.terminateDialogDescription",
|
|
3968
|
-
"Are you sure you want to force terminate this execution? This will immediately stop the running workflow and cannot be resumed."
|
|
3969
|
-
) })
|
|
3970
|
-
] }),
|
|
3971
|
-
/* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
|
|
3972
|
-
/* @__PURE__ */ jsx(AlertDialogCancel, { disabled: actionLoading, children: tr(
|
|
3973
|
-
"fluidgrids.executions.executionDetail.cancelButton",
|
|
3974
|
-
"Cancel"
|
|
3975
|
-
) }),
|
|
3976
|
-
/* @__PURE__ */ jsx(
|
|
3977
|
-
AlertDialogAction,
|
|
3978
|
-
{
|
|
3979
|
-
onClick: handleTerminate,
|
|
3980
|
-
disabled: actionLoading,
|
|
3981
|
-
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
3982
|
-
children: actionLoading ? tr(
|
|
3983
|
-
"fluidgrids.executions.executionDetail.terminatingButton",
|
|
3984
|
-
"Terminating..."
|
|
3985
|
-
) : tr(
|
|
3986
|
-
"fluidgrids.executions.executionDetail.terminateButton",
|
|
3987
|
-
"Terminate"
|
|
3988
|
-
)
|
|
3989
|
-
}
|
|
3990
|
-
)
|
|
3991
|
-
] })
|
|
3992
|
-
] })
|
|
3993
|
-
}
|
|
3994
|
-
)
|
|
3995
|
-
] });
|
|
4007
|
+
)
|
|
4008
|
+
] })
|
|
4009
|
+
);
|
|
3996
4010
|
}
|
|
3997
4011
|
|
|
3998
4012
|
export { ExecutionDetailPage, HumanRequestCard, RunHumanRequests, usePendingHumanRequests, useRespondToHumanRequest, useRunHumanRequests };
|