@burdenoff/fluidgrids-fe-sdk 2026.1023.2 → 2026.1023.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ExecutionDetailPage-K3MPJLTL.js → ExecutionDetailPage-FDX242B5.js} +1 -1
- package/dist/{chunk-YTLPI7UV.js → chunk-GARL3KYH.js} +21 -8
- package/dist/{chunk-MP7MRTB4.js → chunk-VMVY65DC.js} +53 -1
- package/dist/executions.js +1 -1
- package/dist/index.js +4 -4
- package/dist/settings.js +1 -1
- package/package.json +1 -1
|
@@ -11,9 +11,14 @@ import { Tabs, TabsList, TabsTrigger, TabsContent, Input, Switch, Select, Select
|
|
|
11
11
|
import { toast } from 'sonner';
|
|
12
12
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
13
13
|
|
|
14
|
+
// src/modules/settings/utils/max-parallelism.ts
|
|
15
|
+
function parseMaxParallelism(value) {
|
|
16
|
+
if (value.trim() === "") return void 0;
|
|
17
|
+
const parsed = Number.parseInt(value, 10);
|
|
18
|
+
return Number.isFinite(parsed) ? Math.max(1, parsed) : void 0;
|
|
19
|
+
}
|
|
14
20
|
var DEFAULT_EXECUTION_SETTINGS = {
|
|
15
21
|
timeout: 300,
|
|
16
|
-
maxParallelism: 5,
|
|
17
22
|
onError: "stop"
|
|
18
23
|
};
|
|
19
24
|
var DEFAULT_SETTINGS = {
|
|
@@ -295,25 +300,33 @@ function ExecutionTab({ workflowKey }) {
|
|
|
295
300
|
SettingRow,
|
|
296
301
|
{
|
|
297
302
|
label: tr(
|
|
298
|
-
"fluidgrids.settings.execution.
|
|
299
|
-
"
|
|
303
|
+
"fluidgrids.settings.execution.maxParallelLabel",
|
|
304
|
+
"Max parallel executions"
|
|
300
305
|
),
|
|
301
306
|
description: tr(
|
|
302
|
-
"fluidgrids.settings.execution.
|
|
303
|
-
"
|
|
307
|
+
"fluidgrids.settings.execution.maxParallelDescription",
|
|
308
|
+
"How many production runs of this workflow may run at once. Extra runs wait in a queue and start in order; manual test runs are never held back. Leave empty for no limit."
|
|
304
309
|
),
|
|
305
310
|
children: /* @__PURE__ */ jsx(
|
|
306
311
|
Input,
|
|
307
312
|
{
|
|
308
313
|
type: "number",
|
|
309
314
|
min: 1,
|
|
310
|
-
value: form.maxParallelism ??
|
|
315
|
+
value: form.maxParallelism ?? "",
|
|
316
|
+
placeholder: tr(
|
|
317
|
+
"fluidgrids.settings.execution.maxParallelPlaceholder",
|
|
318
|
+
"No limit"
|
|
319
|
+
),
|
|
320
|
+
"aria-label": tr(
|
|
321
|
+
"fluidgrids.settings.execution.maxParallelLabel",
|
|
322
|
+
"Max parallel executions"
|
|
323
|
+
),
|
|
311
324
|
onChange: (e) => setForm((f) => ({
|
|
312
325
|
...f,
|
|
313
|
-
maxParallelism:
|
|
326
|
+
maxParallelism: parseMaxParallelism(e.target.value)
|
|
314
327
|
})),
|
|
315
328
|
disabled: loading,
|
|
316
|
-
className: "w-[
|
|
329
|
+
className: "w-[100px] text-right"
|
|
317
330
|
}
|
|
318
331
|
)
|
|
319
332
|
}
|
|
@@ -674,7 +674,7 @@ function RunHumanRequests({ requests }) {
|
|
|
674
674
|
children: [
|
|
675
675
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-text-primary", children: [
|
|
676
676
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:account-clock-outline", width: 18 }),
|
|
677
|
-
tr("fluidgrids.humanResponse.runHeading", "Waiting on people")
|
|
677
|
+
requests.some((request) => request.status === "PENDING") ? tr("fluidgrids.humanResponse.runHeading", "Waiting on people") : tr("fluidgrids.humanResponse.runHeadingDone", "People asked")
|
|
678
678
|
] }),
|
|
679
679
|
requests.map((request) => /* @__PURE__ */ jsx(RunHumanRequestRow, { request }, request.id))
|
|
680
680
|
]
|
|
@@ -723,6 +723,57 @@ function RunHumanRequestRow({ request }) {
|
|
|
723
723
|
}
|
|
724
724
|
);
|
|
725
725
|
}
|
|
726
|
+
|
|
727
|
+
// src/modules/executions/utils/run-queue-marker.ts
|
|
728
|
+
function isRecord(value) {
|
|
729
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
730
|
+
}
|
|
731
|
+
function readRunQueueMarker(context) {
|
|
732
|
+
if (!isRecord(context)) return null;
|
|
733
|
+
const marker = context.concurrency;
|
|
734
|
+
if (!isRecord(marker)) return null;
|
|
735
|
+
const { queuedAt, checkedAt, limit, active, position } = marker;
|
|
736
|
+
if (typeof queuedAt !== "string" || typeof checkedAt !== "string" || typeof limit !== "number" || typeof active !== "number" || typeof position !== "number") {
|
|
737
|
+
return null;
|
|
738
|
+
}
|
|
739
|
+
return { queuedAt, checkedAt, limit, active, position };
|
|
740
|
+
}
|
|
741
|
+
function RunQueuedBanner({
|
|
742
|
+
status,
|
|
743
|
+
context
|
|
744
|
+
}) {
|
|
745
|
+
const tr = useTr();
|
|
746
|
+
if (status !== "PENDING") return null;
|
|
747
|
+
const marker = readRunQueueMarker(context);
|
|
748
|
+
if (!marker) return null;
|
|
749
|
+
return /* @__PURE__ */ jsxs(
|
|
750
|
+
"div",
|
|
751
|
+
{
|
|
752
|
+
className: "mb-6 rounded-lg border border-border-secondary bg-background-secondary p-4",
|
|
753
|
+
"data-testid": "run-queued-banner",
|
|
754
|
+
children: [
|
|
755
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-text-primary", children: [
|
|
756
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:tray-full", width: 18 }),
|
|
757
|
+
tr("fluidgrids.executions.queued.heading", "Queued")
|
|
758
|
+
] }),
|
|
759
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-text-secondary", children: tr(
|
|
760
|
+
"fluidgrids.executions.queued.body",
|
|
761
|
+
"This workflow allows {{limit}} runs at a time and {{active}} are in progress. This run is number {{position}} in line and starts automatically when a slot frees up.",
|
|
762
|
+
{
|
|
763
|
+
limit: String(marker.limit),
|
|
764
|
+
active: String(marker.active),
|
|
765
|
+
position: String(marker.position)
|
|
766
|
+
}
|
|
767
|
+
) }),
|
|
768
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-text-tertiary", children: tr(
|
|
769
|
+
"fluidgrids.executions.queued.since",
|
|
770
|
+
"Queued since {{time}} \xB7 change the limit in the workflow's Settings (Max parallel executions)",
|
|
771
|
+
{ time: new Date(marker.queuedAt).toLocaleString() }
|
|
772
|
+
) })
|
|
773
|
+
]
|
|
774
|
+
}
|
|
775
|
+
);
|
|
776
|
+
}
|
|
726
777
|
function ExecutionDetailPage() {
|
|
727
778
|
const tr = useTr();
|
|
728
779
|
const { runId } = useParams();
|
|
@@ -1311,6 +1362,7 @@ function ExecutionDetailPage() {
|
|
|
1311
1362
|
] }),
|
|
1312
1363
|
/* @__PURE__ */ jsx("p", { className: "text-[var(--color-status-error-text)]", children: execution.errorMessage })
|
|
1313
1364
|
] }),
|
|
1365
|
+
/* @__PURE__ */ jsx(RunQueuedBanner, { status: execution.status, context: execution.context }),
|
|
1314
1366
|
/* @__PURE__ */ jsx(RunHumanRequests, { requests: humanRequests }),
|
|
1315
1367
|
/* @__PURE__ */ jsx("div", { className: "border-b border-border-secondary mb-6", children: /* @__PURE__ */ jsx("nav", { className: "flex gap-4 -mb-px", children: tabs.map((tab) => /* @__PURE__ */ jsxs(
|
|
1316
1368
|
"button",
|
package/dist/executions.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './chunk-AD3BXTJS.js';
|
|
2
2
|
export { ExecutionsListPage } from './chunk-OKWH2CHF.js';
|
|
3
|
-
export { ExecutionDetailPage } from './chunk-
|
|
3
|
+
export { ExecutionDetailPage } from './chunk-VMVY65DC.js';
|
|
4
4
|
import './chunk-XCQROWIZ.js';
|
|
5
5
|
import './chunk-LLPLOWMA.js';
|
|
6
6
|
import './chunk-QBFAJNUC.js';
|
package/dist/index.js
CHANGED
|
@@ -5,14 +5,14 @@ export { FirstWorkflowChecklist, FirstWorkflowChecklistView, WorkflowsList } fro
|
|
|
5
5
|
export { GUIDED_FIRST_WORKFLOW_NAV, GUIDED_FIRST_WORKFLOW_STATE, firstWorkflowProgress, isGuidedTourIntent, pickGuidedTour } from './chunk-YGBDZ424.js';
|
|
6
6
|
import './chunk-AD3BXTJS.js';
|
|
7
7
|
export { ExecutionsListPage } from './chunk-OKWH2CHF.js';
|
|
8
|
-
import { usePendingHumanRequests, HumanRequestCard } from './chunk-
|
|
9
|
-
export { ExecutionDetailPage, HumanRequestCard, RunHumanRequests, usePendingHumanRequests, useRespondToHumanRequest, useRunHumanRequests } from './chunk-
|
|
8
|
+
import { usePendingHumanRequests, HumanRequestCard } from './chunk-VMVY65DC.js';
|
|
9
|
+
export { ExecutionDetailPage, HumanRequestCard, RunHumanRequests, usePendingHumanRequests, useRespondToHumanRequest, useRunHumanRequests } from './chunk-VMVY65DC.js';
|
|
10
10
|
import { TagFilterSelect } from './chunk-XCQROWIZ.js';
|
|
11
11
|
import './chunk-LLPLOWMA.js';
|
|
12
12
|
export { HistoryPage } from './chunk-UKMXGBU3.js';
|
|
13
13
|
export { NodesPage, fetchAllNodesWithManifests, useLazyNodeManifest, useNodeEndpoint, useNodeEndpoints, useNodeManifest } from './chunk-HAYSY6TZ.js';
|
|
14
14
|
export { DataSinkDashboardPage, ErrorAnalyticsPage, InsightsPage } from './chunk-KAOLPDNX.js';
|
|
15
|
-
export { SettingsPage } from './chunk-
|
|
15
|
+
export { SettingsPage } from './chunk-GARL3KYH.js';
|
|
16
16
|
export { FLUIDGRIDS_FLAGS, useDataSinkData, useDataSinks, useFluidGridsFlag, useInsightsData, useLogStreamDestinationActions, useLogStreamDestinations, useRunReplayActions } from './chunk-2QTKDR23.js';
|
|
17
17
|
import './chunk-QBFAJNUC.js';
|
|
18
18
|
import { ThemeProvider, extractTemplateGraph } from './chunk-3BK65TDZ.js';
|
|
@@ -81,7 +81,7 @@ var ExecutionsListPage2 = lazy(
|
|
|
81
81
|
}))
|
|
82
82
|
);
|
|
83
83
|
var ExecutionDetailPage2 = lazy(
|
|
84
|
-
() => import('./ExecutionDetailPage-
|
|
84
|
+
() => import('./ExecutionDetailPage-FDX242B5.js').then((m) => ({
|
|
85
85
|
default: m.ExecutionDetailPage
|
|
86
86
|
}))
|
|
87
87
|
);
|
package/dist/settings.js
CHANGED