@burdenoff/microfe-cosmicintersection 2026.704.1 → 2026.704.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/cosmicintersection/CosmicIntersectionRoutes.js +45 -25
- package/dist/cosmicintersection/CosmicIntersectionRoutes.js.map +1 -1
- package/dist/cosmicintersection/api/cosmicApi.js +137 -66
- package/dist/cosmicintersection/api/cosmicApi.js.map +1 -1
- package/dist/cosmicintersection/components/ActivityFeedPanel.js +68 -0
- package/dist/cosmicintersection/components/ActivityFeedPanel.js.map +1 -0
- package/dist/cosmicintersection/components/DiscussionPanel.js +57 -0
- package/dist/cosmicintersection/components/DiscussionPanel.js.map +1 -0
- package/dist/cosmicintersection/components/FacetPanel.js +66 -0
- package/dist/cosmicintersection/components/FacetPanel.js.map +1 -0
- package/dist/cosmicintersection/components/LineageGraph.js +388 -0
- package/dist/cosmicintersection/components/LineageGraph.js.map +1 -0
- package/dist/cosmicintersection/components/ResultsChart.js +329 -0
- package/dist/cosmicintersection/components/ResultsChart.js.map +1 -0
- package/dist/cosmicintersection/components/StepDAG.js +104 -0
- package/dist/cosmicintersection/components/StepDAG.js.map +1 -0
- package/dist/cosmicintersection/components/index.js +5 -3
- package/dist/cosmicintersection/pages/access/AccessPage.js +220 -161
- package/dist/cosmicintersection/pages/access/AccessPage.js.map +1 -1
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js +332 -172
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionDetailPage.js +167 -109
- package/dist/cosmicintersection/pages/collections/CollectionDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionFormPage.js +87 -61
- package/dist/cosmicintersection/pages/collections/CollectionFormPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js +51 -42
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js +31 -18
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js +330 -184
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetFormPage.js +7 -7
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js +321 -163
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js +358 -0
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js.map +1 -0
- package/dist/cosmicintersection/pages/lineage/LineagePage.js +171 -0
- package/dist/cosmicintersection/pages/lineage/LineagePage.js.map +1 -0
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js +339 -260
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js +143 -82
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelineDetailPage.js +286 -142
- package/dist/cosmicintersection/pages/pipelines/PipelineDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelineFormPage.js +305 -103
- package/dist/cosmicintersection/pages/pipelines/PipelineFormPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js +183 -79
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js +346 -204
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js +184 -136
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunsPage.js +182 -120
- package/dist/cosmicintersection/pages/runs/RunsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js +234 -0
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js.map +1 -0
- package/dist/cosmicintersection/pages/sources/SourcesPage.js +250 -133
- package/dist/cosmicintersection/pages/sources/SourcesPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,244 +1,388 @@
|
|
|
1
1
|
import { useCosmicIntersection as e } from "../../context/CosmicIntersectionContext.js";
|
|
2
2
|
import { notify as t } from "../../lib/toast.js";
|
|
3
|
-
import { useCosArchivePipelineMutation as n, useCosPipelineQuery as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
3
|
+
import { useCosArchivePipelineMutation as n, useCosPipelineQuery as r, useCosRunStepsQuery as i, useCosRunsQuery as ee, useCosStartRunMutation as te } from "../../api/cosmicApi.js";
|
|
4
|
+
import a from "../../components/EmptyState.js";
|
|
5
|
+
import o from "../../components/ErrorState.js";
|
|
6
|
+
import s from "../../components/LoadingState.js";
|
|
7
|
+
import c from "../../components/PageLayout.js";
|
|
8
|
+
import l, { usePagination as u } from "../../components/Pagination.js";
|
|
9
|
+
import d, { formatEnumLabel as f } from "../../components/StatusBadge.js";
|
|
10
10
|
import "../../components/index.js";
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
11
|
+
import ne from "../../components/StepDAG.js";
|
|
12
|
+
import { mutationSucceeded as p } from "../../lib/mutationResult.js";
|
|
13
|
+
import { useMemo as m, useState as re } from "react";
|
|
14
|
+
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
15
|
+
import { useParams as ie } from "react-router-dom";
|
|
16
|
+
import { Archive as ae, Clock as oe, Hash as se, Pencil as v, Play as y } from "lucide-react";
|
|
17
|
+
import { AlertDialog as ce, AlertDialogAction as le, AlertDialogCancel as ue, AlertDialogContent as de, AlertDialogDescription as fe, AlertDialogFooter as pe, AlertDialogHeader as me, AlertDialogTitle as he, Button as b, Card as x, CardContent as S, CardHeader as C, CardTitle as w, Table as ge, TableBody as _e, TableCell as T, TableHead as E, TableHeader as ve, TableRow as D, buttonVariants as ye } from "@burdenoff/fe-libs/ui";
|
|
17
18
|
//#region src/cosmicintersection/pages/pipelines/PipelineDetailPage.tsx
|
|
18
|
-
|
|
19
|
+
var O = [
|
|
20
|
+
"INGEST",
|
|
21
|
+
"CALIBRATE",
|
|
22
|
+
"TRANSFORM",
|
|
23
|
+
"ANALYZE",
|
|
24
|
+
"EXPORT",
|
|
25
|
+
"NOTIFY"
|
|
26
|
+
];
|
|
27
|
+
function k(e) {
|
|
28
|
+
return typeof e == "string" && O.includes(e);
|
|
29
|
+
}
|
|
30
|
+
function A(e) {
|
|
31
|
+
if (!e) return [];
|
|
32
|
+
let t = e.steps;
|
|
33
|
+
if (!Array.isArray(t)) return [];
|
|
34
|
+
let n = [];
|
|
35
|
+
for (let e of t) if (e && typeof e == "object" && !Array.isArray(e)) {
|
|
36
|
+
let t = e.kind, r = e.name;
|
|
37
|
+
k(t) && n.push({
|
|
38
|
+
kind: t,
|
|
39
|
+
name: typeof r == "string" ? r : void 0
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return n;
|
|
43
|
+
}
|
|
44
|
+
function j(e) {
|
|
19
45
|
if (!e) return "—";
|
|
20
46
|
let t = new Date(e);
|
|
21
47
|
return Number.isNaN(t.getTime()) ? "—" : t.toLocaleString();
|
|
22
48
|
}
|
|
23
|
-
function
|
|
49
|
+
function M(e) {
|
|
24
50
|
if (e == null) return "—";
|
|
25
51
|
if (e < 1e3) return `${e} ms`;
|
|
26
52
|
let t = e / 1e3;
|
|
27
53
|
return t < 60 ? `${t.toFixed(1)} s` : `${Math.floor(t / 60)}m ${Math.round(t % 60)}s`;
|
|
28
54
|
}
|
|
29
|
-
function
|
|
30
|
-
return /* @__PURE__ */
|
|
55
|
+
function N({ label: e, children: t }) {
|
|
56
|
+
return /* @__PURE__ */ _("div", {
|
|
31
57
|
className: "flex flex-col gap-1 border-b border-border-seam py-3 last:border-0 sm:flex-row sm:items-start sm:gap-4",
|
|
32
|
-
children: [/* @__PURE__ */
|
|
58
|
+
children: [/* @__PURE__ */ g("span", {
|
|
33
59
|
className: "w-40 shrink-0 text-sm font-medium text-text-secondary",
|
|
34
60
|
children: e
|
|
35
|
-
}), /* @__PURE__ */
|
|
61
|
+
}), /* @__PURE__ */ g("span", {
|
|
36
62
|
className: "min-w-0 text-sm text-text-primary",
|
|
37
63
|
children: t
|
|
38
64
|
})]
|
|
39
65
|
});
|
|
40
66
|
}
|
|
41
|
-
function
|
|
42
|
-
|
|
67
|
+
function P({ icon: e, children: t }) {
|
|
68
|
+
return /* @__PURE__ */ _("span", {
|
|
69
|
+
className: "inline-flex items-center gap-1.5 rounded-full border border-border-default bg-bg-elevated px-2.5 py-0.5 text-xs text-text-secondary",
|
|
70
|
+
children: [e ? /* @__PURE__ */ g(e, {
|
|
71
|
+
className: "size-3.5",
|
|
72
|
+
"aria-hidden": "true"
|
|
73
|
+
}) : null, t]
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function F() {
|
|
77
|
+
let { id: O = "" } = ie(), { navigate: k } = e(), { data: F, loading: be, error: xe, refetch: I } = r(O), L = u({
|
|
43
78
|
pageSize: 10,
|
|
44
|
-
resetKey:
|
|
45
|
-
}), { data:
|
|
46
|
-
pipelineId:
|
|
79
|
+
resetKey: O
|
|
80
|
+
}), { data: R, loading: z, error: Se, refetch: B } = ee({
|
|
81
|
+
pipelineId: O,
|
|
47
82
|
pagination: {
|
|
48
|
-
limit:
|
|
49
|
-
offset:
|
|
83
|
+
limit: L.limit,
|
|
84
|
+
offset: L.offset
|
|
50
85
|
}
|
|
51
|
-
}),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
},
|
|
56
|
-
if (!
|
|
57
|
-
let e = await
|
|
58
|
-
|
|
86
|
+
}), V = F?.cosPipeline, H = m(() => R?.cosListRuns.items ?? [], [R]), Ce = R?.cosListRuns.pageInfo, U = m(() => A(V?.definition), [V?.definition]), W = H[0]?.id ?? "", { data: G } = i(V && U.length === 0 && W ? W : ""), K = m(() => [...G?.cosListRunSteps ?? []].sort((e, t) => e.position - t.position).map((e) => ({
|
|
87
|
+
kind: e.kind,
|
|
88
|
+
name: e.name,
|
|
89
|
+
status: e.status
|
|
90
|
+
})), [G]), q = U.length > 0 ? U : K, we = U.length === 0 && K.length > 0, [J, { loading: Y }] = te(), [Te, { loading: X }] = n(), [Ee, Z] = re(!1), Q = async () => {
|
|
91
|
+
if (!V) return;
|
|
92
|
+
let e = await J({ variables: { input: { pipelineId: V.id } } }), n = e.data?.cosStartRun?.id;
|
|
93
|
+
p(e, n, "Could not start a run") && (t.success("Run started", "A new run was queued."), await Promise.all([I(), B()]), n && k(`runs/${n}`));
|
|
94
|
+
}, De = async () => {
|
|
95
|
+
if (!V) return;
|
|
96
|
+
let e = await Te({ variables: { id: V.id } });
|
|
97
|
+
p(e, e.data?.cosArchivePipeline, "Could not archive pipeline") && (Z(!1), t.success("Pipeline archived", `“${V.name}” was archived.`), k("pipelines"));
|
|
59
98
|
};
|
|
60
|
-
if (
|
|
99
|
+
if (be) return /* @__PURE__ */ g(c, {
|
|
61
100
|
title: "Pipeline",
|
|
62
101
|
backPath: "pipelines",
|
|
63
|
-
children: /* @__PURE__ */
|
|
102
|
+
children: /* @__PURE__ */ g(s, { label: "Loading pipeline…" })
|
|
64
103
|
});
|
|
65
|
-
if (
|
|
104
|
+
if (xe) return /* @__PURE__ */ g(c, {
|
|
66
105
|
title: "Pipeline",
|
|
67
106
|
backPath: "pipelines",
|
|
68
|
-
children: /* @__PURE__ */
|
|
107
|
+
children: /* @__PURE__ */ g(o, { onRetry: () => void I() })
|
|
69
108
|
});
|
|
70
|
-
if (!
|
|
109
|
+
if (!V) return /* @__PURE__ */ g(c, {
|
|
71
110
|
title: "Pipeline",
|
|
72
111
|
backPath: "pipelines",
|
|
73
|
-
children: /* @__PURE__ */
|
|
112
|
+
children: /* @__PURE__ */ g(a, {
|
|
74
113
|
title: "Pipeline not found",
|
|
75
114
|
description: "This pipeline may have been archived or you may not have access to it.",
|
|
76
|
-
action: /* @__PURE__ */
|
|
115
|
+
action: /* @__PURE__ */ g(b, {
|
|
77
116
|
type: "button",
|
|
78
117
|
variant: "outline",
|
|
79
|
-
onClick: () =>
|
|
118
|
+
onClick: () => k("pipelines"),
|
|
80
119
|
children: "Back to pipelines"
|
|
81
120
|
})
|
|
82
121
|
})
|
|
83
122
|
});
|
|
84
|
-
let $ =
|
|
85
|
-
return /* @__PURE__ */
|
|
86
|
-
title:
|
|
87
|
-
description:
|
|
123
|
+
let $ = V.status === "ARCHIVED", Oe = !!(V.definition && Object.keys(V.definition).length > 0);
|
|
124
|
+
return /* @__PURE__ */ _(c, {
|
|
125
|
+
title: V.name,
|
|
126
|
+
description: V.description ?? void 0,
|
|
88
127
|
backPath: "pipelines",
|
|
89
|
-
actions: /* @__PURE__ */
|
|
128
|
+
actions: /* @__PURE__ */ _("div", {
|
|
90
129
|
className: "flex flex-wrap items-center gap-2",
|
|
91
130
|
children: [
|
|
92
|
-
/* @__PURE__ */
|
|
131
|
+
/* @__PURE__ */ _(b, {
|
|
93
132
|
type: "button",
|
|
94
133
|
onClick: () => void Q(),
|
|
95
|
-
disabled:
|
|
96
|
-
children: [/* @__PURE__ */
|
|
134
|
+
disabled: Y || $,
|
|
135
|
+
children: [/* @__PURE__ */ g(y, { className: "size-4" }), Y ? "Starting…" : "Start run"]
|
|
97
136
|
}),
|
|
98
|
-
/* @__PURE__ */
|
|
137
|
+
/* @__PURE__ */ _(b, {
|
|
99
138
|
type: "button",
|
|
100
139
|
variant: "outline",
|
|
101
|
-
onClick: () =>
|
|
102
|
-
children: [/* @__PURE__ */
|
|
140
|
+
onClick: () => k(`pipelines/${V.id}/edit`),
|
|
141
|
+
children: [/* @__PURE__ */ g(v, { className: "size-4" }), "Edit"]
|
|
103
142
|
}),
|
|
104
|
-
$ ? null : /* @__PURE__ */
|
|
143
|
+
$ ? null : /* @__PURE__ */ _(b, {
|
|
105
144
|
type: "button",
|
|
106
145
|
variant: "outline",
|
|
107
|
-
onClick: () =>
|
|
108
|
-
children: [/* @__PURE__ */
|
|
146
|
+
onClick: () => Z(!0),
|
|
147
|
+
children: [/* @__PURE__ */ g(ae, { className: "size-4" }), "Archive"]
|
|
109
148
|
})
|
|
110
149
|
]
|
|
111
150
|
}),
|
|
112
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ _("div", {
|
|
113
152
|
className: "space-y-6",
|
|
114
153
|
children: [
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
|
|
154
|
+
/* @__PURE__ */ _("div", {
|
|
155
|
+
className: "flex flex-wrap items-center gap-2",
|
|
156
|
+
children: [
|
|
157
|
+
/* @__PURE__ */ g(d, { status: V.status }),
|
|
158
|
+
/* @__PURE__ */ g(P, {
|
|
159
|
+
icon: oe,
|
|
160
|
+
children: f(V.trigger)
|
|
161
|
+
}),
|
|
162
|
+
V.schedule ? /* @__PURE__ */ g(P, { children: /* @__PURE__ */ g("span", {
|
|
163
|
+
className: "font-mono",
|
|
164
|
+
children: V.schedule
|
|
165
|
+
}) }) : null,
|
|
166
|
+
/* @__PURE__ */ _(P, {
|
|
167
|
+
icon: se,
|
|
168
|
+
children: ["v", V.version]
|
|
169
|
+
})
|
|
170
|
+
]
|
|
171
|
+
}),
|
|
172
|
+
/* @__PURE__ */ _(x, { children: [/* @__PURE__ */ g(C, { children: /* @__PURE__ */ g(w, { children: "Overview" }) }), /* @__PURE__ */ _(S, {
|
|
173
|
+
className: "space-y-4",
|
|
174
|
+
children: [
|
|
175
|
+
/* @__PURE__ */ _("div", {
|
|
176
|
+
className: "flex flex-wrap items-baseline justify-between gap-2",
|
|
177
|
+
children: [/* @__PURE__ */ g("span", {
|
|
178
|
+
className: "text-sm font-medium text-text-secondary",
|
|
179
|
+
children: "Step flow"
|
|
180
|
+
}), we ? /* @__PURE__ */ g("span", {
|
|
181
|
+
className: "text-xs text-text-secondary",
|
|
182
|
+
children: "Derived from the latest run."
|
|
183
|
+
}) : null]
|
|
184
|
+
}),
|
|
185
|
+
q.length > 0 ? /* @__PURE__ */ g(ne, { steps: q }) : /* @__PURE__ */ _("div", {
|
|
186
|
+
className: "rounded-card border border-dashed border-border-default bg-bg-sunken px-4 py-8 text-center",
|
|
187
|
+
children: [/* @__PURE__ */ g("p", {
|
|
188
|
+
className: "text-sm text-text-secondary",
|
|
189
|
+
children: "No steps defined yet. Edit the pipeline to add ingest, calibrate, transform, analyze or export steps."
|
|
190
|
+
}), /* @__PURE__ */ _(b, {
|
|
191
|
+
type: "button",
|
|
192
|
+
variant: "outline",
|
|
193
|
+
size: "sm",
|
|
194
|
+
className: "mt-3",
|
|
195
|
+
onClick: () => k(`pipelines/${V.id}/edit`),
|
|
196
|
+
children: [/* @__PURE__ */ g(v, { className: "size-4" }), "Add steps"]
|
|
197
|
+
})]
|
|
198
|
+
}),
|
|
199
|
+
Oe ? /* @__PURE__ */ _("details", {
|
|
200
|
+
className: "group rounded-card border border-border-default bg-bg-sunken",
|
|
201
|
+
children: [/* @__PURE__ */ _("summary", {
|
|
202
|
+
className: "flex cursor-pointer list-none items-center justify-between px-4 py-2.5 text-sm font-medium text-text-secondary transition-colors hover:text-text-primary",
|
|
203
|
+
children: ["Advanced — raw definition JSON", /* @__PURE__ */ g("span", {
|
|
204
|
+
className: "text-xs text-text-secondary transition-transform group-open:rotate-180",
|
|
205
|
+
children: "▾"
|
|
206
|
+
})]
|
|
207
|
+
}), /* @__PURE__ */ g("pre", {
|
|
208
|
+
className: "overflow-x-auto border-t border-border-seam p-4 font-mono text-xs text-text-primary",
|
|
209
|
+
children: JSON.stringify(V.definition, null, 2)
|
|
210
|
+
})]
|
|
211
|
+
}) : null
|
|
212
|
+
]
|
|
213
|
+
})] }),
|
|
214
|
+
/* @__PURE__ */ _(x, { children: [/* @__PURE__ */ g(C, { children: /* @__PURE__ */ g(w, { children: "Details" }) }), /* @__PURE__ */ _(S, { children: [
|
|
215
|
+
/* @__PURE__ */ g(N, {
|
|
117
216
|
label: "Status",
|
|
118
|
-
children: /* @__PURE__ */
|
|
217
|
+
children: /* @__PURE__ */ g(d, { status: V.status })
|
|
119
218
|
}),
|
|
120
|
-
/* @__PURE__ */
|
|
219
|
+
/* @__PURE__ */ g(N, {
|
|
121
220
|
label: "Trigger",
|
|
122
|
-
children:
|
|
221
|
+
children: f(V.trigger)
|
|
123
222
|
}),
|
|
124
|
-
/* @__PURE__ */
|
|
223
|
+
/* @__PURE__ */ g(N, {
|
|
125
224
|
label: "Schedule",
|
|
126
|
-
children:
|
|
225
|
+
children: V.schedule ? /* @__PURE__ */ g("span", {
|
|
127
226
|
className: "font-mono text-xs",
|
|
128
|
-
children:
|
|
227
|
+
children: V.schedule
|
|
129
228
|
}) : "—"
|
|
130
229
|
}),
|
|
131
|
-
/* @__PURE__ */
|
|
230
|
+
/* @__PURE__ */ _(N, {
|
|
132
231
|
label: "Version",
|
|
133
|
-
children: ["v",
|
|
232
|
+
children: ["v", V.version]
|
|
134
233
|
}),
|
|
135
|
-
/* @__PURE__ */
|
|
234
|
+
/* @__PURE__ */ g(N, {
|
|
136
235
|
label: "Last run",
|
|
137
|
-
children:
|
|
236
|
+
children: j(V.lastRunAt)
|
|
138
237
|
}),
|
|
139
|
-
/* @__PURE__ */
|
|
238
|
+
/* @__PURE__ */ g(N, {
|
|
140
239
|
label: "Created",
|
|
141
|
-
children:
|
|
240
|
+
children: j(V.createdAt)
|
|
142
241
|
}),
|
|
143
|
-
/* @__PURE__ */
|
|
242
|
+
/* @__PURE__ */ g(N, {
|
|
144
243
|
label: "Tags",
|
|
145
|
-
children:
|
|
244
|
+
children: V.tags.length === 0 ? "—" : /* @__PURE__ */ g("span", {
|
|
146
245
|
className: "flex flex-wrap gap-1",
|
|
147
|
-
children:
|
|
246
|
+
children: V.tags.map((e) => /* @__PURE__ */ g("span", {
|
|
148
247
|
className: "rounded-full bg-bg-sunken px-2 py-0.5 text-xs text-text-secondary",
|
|
149
248
|
children: e
|
|
150
249
|
}, e))
|
|
151
250
|
})
|
|
152
251
|
})
|
|
153
252
|
] })] }),
|
|
154
|
-
/* @__PURE__ */
|
|
155
|
-
className: "overflow-x-auto rounded-card border border-border-default bg-bg-sunken p-4 font-mono text-xs text-text-primary",
|
|
156
|
-
children: JSON.stringify(X.definition, null, 2)
|
|
157
|
-
}) : /* @__PURE__ */ m("p", {
|
|
158
|
-
className: "text-sm text-text-secondary",
|
|
159
|
-
children: "No definition configured yet. Edit the pipeline to describe its steps."
|
|
160
|
-
}) })] }),
|
|
161
|
-
/* @__PURE__ */ h(w, { children: [/* @__PURE__ */ m(E, { children: /* @__PURE__ */ m(D, { children: "Runs" }) }), /* @__PURE__ */ m(T, { children: G ? /* @__PURE__ */ m(o, {
|
|
253
|
+
/* @__PURE__ */ _(x, { children: [/* @__PURE__ */ g(C, { children: /* @__PURE__ */ g(w, { children: "Runs" }) }), /* @__PURE__ */ g(S, { children: z ? /* @__PURE__ */ g(s, {
|
|
162
254
|
variant: "rows",
|
|
163
255
|
rows: 4,
|
|
164
256
|
label: "Loading runs…"
|
|
165
|
-
}) :
|
|
257
|
+
}) : Se ? /* @__PURE__ */ g(o, {
|
|
166
258
|
message: "Could not load runs.",
|
|
167
|
-
onRetry: () => void
|
|
168
|
-
}) :
|
|
169
|
-
icon:
|
|
259
|
+
onRetry: () => void B()
|
|
260
|
+
}) : H.length === 0 ? /* @__PURE__ */ g(a, {
|
|
261
|
+
icon: y,
|
|
170
262
|
title: "No runs yet",
|
|
171
263
|
description: "Start a run to process data through this pipeline.",
|
|
172
|
-
action: /* @__PURE__ */
|
|
264
|
+
action: /* @__PURE__ */ _(b, {
|
|
173
265
|
type: "button",
|
|
174
266
|
onClick: () => void Q(),
|
|
175
267
|
disabled: $,
|
|
176
|
-
children: [/* @__PURE__ */
|
|
268
|
+
children: [/* @__PURE__ */ g(y, { className: "size-4" }), "Start run"]
|
|
269
|
+
})
|
|
270
|
+
}) : /* @__PURE__ */ _(h, { children: [
|
|
271
|
+
/* @__PURE__ */ g("div", {
|
|
272
|
+
className: "hidden rounded-card border border-border-default md:block",
|
|
273
|
+
children: /* @__PURE__ */ _(ge, { children: [/* @__PURE__ */ g(ve, { children: /* @__PURE__ */ _(D, { children: [
|
|
274
|
+
/* @__PURE__ */ g(E, { children: "Run" }),
|
|
275
|
+
/* @__PURE__ */ g(E, { children: "Status" }),
|
|
276
|
+
/* @__PURE__ */ g(E, { children: "Started" }),
|
|
277
|
+
/* @__PURE__ */ g(E, { children: "Duration" }),
|
|
278
|
+
/* @__PURE__ */ g(E, { children: "Triggered by" })
|
|
279
|
+
] }) }), /* @__PURE__ */ g(_e, { children: H.map((e) => /* @__PURE__ */ _(D, {
|
|
280
|
+
className: "cursor-pointer",
|
|
281
|
+
onClick: () => k(`runs/${e.id}`),
|
|
282
|
+
children: [
|
|
283
|
+
/* @__PURE__ */ _(T, {
|
|
284
|
+
className: "font-medium text-text-primary",
|
|
285
|
+
children: ["#", e.runNumber]
|
|
286
|
+
}),
|
|
287
|
+
/* @__PURE__ */ g(T, { children: /* @__PURE__ */ g(d, { status: e.status }) }),
|
|
288
|
+
/* @__PURE__ */ g(T, {
|
|
289
|
+
className: "whitespace-nowrap text-text-secondary",
|
|
290
|
+
children: j(e.startedAt)
|
|
291
|
+
}),
|
|
292
|
+
/* @__PURE__ */ g(T, {
|
|
293
|
+
className: "tabular-nums text-text-secondary",
|
|
294
|
+
children: M(e.durationMs)
|
|
295
|
+
}),
|
|
296
|
+
/* @__PURE__ */ g(T, {
|
|
297
|
+
className: "text-text-secondary",
|
|
298
|
+
children: e.triggeredBy || "—"
|
|
299
|
+
})
|
|
300
|
+
]
|
|
301
|
+
}, e.id)) })] })
|
|
302
|
+
}),
|
|
303
|
+
/* @__PURE__ */ g("ul", {
|
|
304
|
+
className: "space-y-3 md:hidden",
|
|
305
|
+
children: H.map((e) => /* @__PURE__ */ g("li", { children: /* @__PURE__ */ _("button", {
|
|
306
|
+
type: "button",
|
|
307
|
+
onClick: () => k(`runs/${e.id}`),
|
|
308
|
+
className: "flex w-full flex-col gap-2 rounded-card border border-border-default bg-bg-elevated p-4 text-left transition-colors hover:border-border-strong",
|
|
309
|
+
children: [/* @__PURE__ */ _("div", {
|
|
310
|
+
className: "flex items-center justify-between gap-2",
|
|
311
|
+
children: [/* @__PURE__ */ _("span", {
|
|
312
|
+
className: "font-medium text-text-primary",
|
|
313
|
+
children: ["#", e.runNumber]
|
|
314
|
+
}), /* @__PURE__ */ g(d, { status: e.status })]
|
|
315
|
+
}), /* @__PURE__ */ _("dl", {
|
|
316
|
+
className: "grid grid-cols-2 gap-x-3 gap-y-1 text-xs text-text-secondary",
|
|
317
|
+
children: [
|
|
318
|
+
/* @__PURE__ */ _("div", {
|
|
319
|
+
className: "flex flex-col",
|
|
320
|
+
children: [/* @__PURE__ */ g("dt", {
|
|
321
|
+
className: "text-text-secondary",
|
|
322
|
+
children: "Started"
|
|
323
|
+
}), /* @__PURE__ */ g("dd", {
|
|
324
|
+
className: "text-text-primary",
|
|
325
|
+
children: j(e.startedAt)
|
|
326
|
+
})]
|
|
327
|
+
}),
|
|
328
|
+
/* @__PURE__ */ _("div", {
|
|
329
|
+
className: "flex flex-col",
|
|
330
|
+
children: [/* @__PURE__ */ g("dt", {
|
|
331
|
+
className: "text-text-secondary",
|
|
332
|
+
children: "Duration"
|
|
333
|
+
}), /* @__PURE__ */ g("dd", {
|
|
334
|
+
className: "tabular-nums text-text-primary",
|
|
335
|
+
children: M(e.durationMs)
|
|
336
|
+
})]
|
|
337
|
+
}),
|
|
338
|
+
/* @__PURE__ */ _("div", {
|
|
339
|
+
className: "col-span-2 flex flex-col",
|
|
340
|
+
children: [/* @__PURE__ */ g("dt", {
|
|
341
|
+
className: "text-text-secondary",
|
|
342
|
+
children: "Triggered by"
|
|
343
|
+
}), /* @__PURE__ */ g("dd", {
|
|
344
|
+
className: "text-text-primary",
|
|
345
|
+
children: e.triggeredBy || "—"
|
|
346
|
+
})]
|
|
347
|
+
})
|
|
348
|
+
]
|
|
349
|
+
})]
|
|
350
|
+
}) }, e.id))
|
|
351
|
+
}),
|
|
352
|
+
/* @__PURE__ */ g(l, {
|
|
353
|
+
offset: L.offset,
|
|
354
|
+
limit: L.limit,
|
|
355
|
+
loadedCount: H.length,
|
|
356
|
+
hasMore: Ce?.hasMore ?? !1,
|
|
357
|
+
onPrev: L.prevPage,
|
|
358
|
+
onNext: L.nextPage,
|
|
359
|
+
itemLabel: "runs",
|
|
360
|
+
loading: z
|
|
177
361
|
})
|
|
178
|
-
})
|
|
179
|
-
className: "overflow-x-auto rounded-card border border-border-default",
|
|
180
|
-
children: /* @__PURE__ */ h(le, { children: [/* @__PURE__ */ m(j, { children: /* @__PURE__ */ h(M, { children: [
|
|
181
|
-
/* @__PURE__ */ m(A, { children: "Run" }),
|
|
182
|
-
/* @__PURE__ */ m(A, { children: "Status" }),
|
|
183
|
-
/* @__PURE__ */ m(A, { children: "Started" }),
|
|
184
|
-
/* @__PURE__ */ m(A, { children: "Duration" }),
|
|
185
|
-
/* @__PURE__ */ m(A, { children: "Triggered by" })
|
|
186
|
-
] }) }), /* @__PURE__ */ m(O, { children: Z.map((e) => /* @__PURE__ */ h(M, {
|
|
187
|
-
className: "cursor-pointer",
|
|
188
|
-
onClick: () => R(`runs/${e.id}`),
|
|
189
|
-
children: [
|
|
190
|
-
/* @__PURE__ */ h(k, {
|
|
191
|
-
className: "font-medium text-text-primary",
|
|
192
|
-
children: ["#", e.runNumber]
|
|
193
|
-
}),
|
|
194
|
-
/* @__PURE__ */ m(k, { children: /* @__PURE__ */ m(c, { status: e.status }) }),
|
|
195
|
-
/* @__PURE__ */ m(k, {
|
|
196
|
-
className: "whitespace-nowrap text-text-secondary",
|
|
197
|
-
children: P(e.startedAt)
|
|
198
|
-
}),
|
|
199
|
-
/* @__PURE__ */ m(k, {
|
|
200
|
-
className: "tabular-nums text-text-secondary",
|
|
201
|
-
children: F(e.durationMs)
|
|
202
|
-
}),
|
|
203
|
-
/* @__PURE__ */ m(k, {
|
|
204
|
-
className: "text-text-secondary",
|
|
205
|
-
children: e.triggeredBy || "—"
|
|
206
|
-
})
|
|
207
|
-
]
|
|
208
|
-
}, e.id)) })] })
|
|
209
|
-
}), /* @__PURE__ */ m(ne, {
|
|
210
|
-
offset: U.offset,
|
|
211
|
-
limit: U.limit,
|
|
212
|
-
loadedCount: Z.length,
|
|
213
|
-
hasMore: me?.hasMore ?? !1,
|
|
214
|
-
onPrev: U.prevPage,
|
|
215
|
-
onNext: U.nextPage,
|
|
216
|
-
itemLabel: "runs",
|
|
217
|
-
loading: G
|
|
218
|
-
})] }) })] })
|
|
362
|
+
] }) })] })
|
|
219
363
|
]
|
|
220
|
-
}), /* @__PURE__ */
|
|
221
|
-
open:
|
|
222
|
-
onOpenChange: (e) =>
|
|
223
|
-
children: /* @__PURE__ */
|
|
364
|
+
}), /* @__PURE__ */ g(ce, {
|
|
365
|
+
open: Ee,
|
|
366
|
+
onOpenChange: (e) => X ? void 0 : Z(e),
|
|
367
|
+
children: /* @__PURE__ */ _(de, { children: [/* @__PURE__ */ _(me, { children: [/* @__PURE__ */ _(he, { children: [
|
|
224
368
|
"Archive “",
|
|
225
|
-
|
|
369
|
+
V.name,
|
|
226
370
|
"”?"
|
|
227
|
-
] }), /* @__PURE__ */
|
|
228
|
-
disabled:
|
|
371
|
+
] }), /* @__PURE__ */ g(fe, { children: "Archiving stops the pipeline from being triggered. Existing runs are kept for reference." })] }), /* @__PURE__ */ _(pe, { children: [/* @__PURE__ */ g(ue, {
|
|
372
|
+
disabled: X,
|
|
229
373
|
children: "Cancel"
|
|
230
|
-
}), /* @__PURE__ */
|
|
374
|
+
}), /* @__PURE__ */ g(le, {
|
|
231
375
|
onClick: (e) => {
|
|
232
|
-
e.preventDefault(),
|
|
376
|
+
e.preventDefault(), De();
|
|
233
377
|
},
|
|
234
|
-
disabled:
|
|
235
|
-
className:
|
|
236
|
-
children:
|
|
378
|
+
disabled: X,
|
|
379
|
+
className: ye({ variant: "destructive" }),
|
|
380
|
+
children: X ? "Archiving…" : "Archive pipeline"
|
|
237
381
|
})] })] })
|
|
238
382
|
})]
|
|
239
383
|
});
|
|
240
384
|
}
|
|
241
385
|
//#endregion
|
|
242
|
-
export {
|
|
386
|
+
export { F as default };
|
|
243
387
|
|
|
244
388
|
//# sourceMappingURL=PipelineDetailPage.js.map
|