@devqubit/ui 0.1.10 → 0.1.11-beta.1
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 +3 -2
- package/dist/api/client.d.ts +17 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/components/ExportRunButton/ExportRunButton.d.ts +32 -0
- package/dist/components/ExportRunButton/ExportRunButton.d.ts.map +1 -0
- package/dist/components/ExportRunButton/index.d.ts +6 -0
- package/dist/components/ExportRunButton/index.d.ts.map +1 -0
- package/dist/components/Layout/Layout.d.ts.map +1 -1
- package/dist/components/RunsTable/RunsTable.d.ts +2 -1
- package/dist/components/RunsTable/RunsTable.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/ui/index.d.ts +2 -2
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/primitives.d.ts +10 -0
- package/dist/components/ui/primitives.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useTheme.d.ts +29 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/index.cjs +8 -8
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1655 -1238
- package/dist/pages/ArtifactPage.d.ts.map +1 -1
- package/dist/pages/DiffPage.d.ts.map +1 -1
- package/dist/pages/GroupDetailPage.d.ts.map +1 -1
- package/dist/pages/RunDetailPage.d.ts.map +1 -1
- package/dist/pages/RunsPage.d.ts.map +1 -1
- package/dist/pages/SearchPage.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useLocation as
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
function
|
|
6
|
-
if (
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
function
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
for (
|
|
13
|
-
if (i && i.defaultProps) for (
|
|
14
|
-
return { $$typeof:
|
|
1
|
+
import Ps, { useContext as Xe, createContext as Qe, useState as S, useEffect as je, useCallback as _e, useRef as Rs, forwardRef as Ze } from "react";
|
|
2
|
+
import { useLocation as hr, Link as z, useSearchParams as $e, useParams as es, useNavigate as xr, Navigate as mr, createBrowserRouter as fr, RouterProvider as jr } from "react-router-dom";
|
|
3
|
+
var Fe = { exports: {} }, be = {};
|
|
4
|
+
var Es;
|
|
5
|
+
function pr() {
|
|
6
|
+
if (Es) return be;
|
|
7
|
+
Es = 1;
|
|
8
|
+
var r = Ps, t = /* @__PURE__ */ Symbol.for("react.element"), n = /* @__PURE__ */ Symbol.for("react.fragment"), a = Object.prototype.hasOwnProperty, u = r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, o = { key: !0, ref: !0, __self: !0, __source: !0 };
|
|
9
|
+
function d(i, f, h) {
|
|
10
|
+
var m, p = {}, _ = null, U = null;
|
|
11
|
+
h !== void 0 && (_ = "" + h), f.key !== void 0 && (_ = "" + f.key), f.ref !== void 0 && (U = f.ref);
|
|
12
|
+
for (m in f) a.call(f, m) && !o.hasOwnProperty(m) && (p[m] = f[m]);
|
|
13
|
+
if (i && i.defaultProps) for (m in f = i.defaultProps, f) p[m] === void 0 && (p[m] = f[m]);
|
|
14
|
+
return { $$typeof: t, type: i, key: _, ref: U, props: p, _owner: u.current };
|
|
15
15
|
}
|
|
16
|
-
return
|
|
17
|
-
}
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
function
|
|
21
|
-
return
|
|
22
|
-
var
|
|
23
|
-
function
|
|
24
|
-
if (
|
|
16
|
+
return be.Fragment = n, be.jsx = d, be.jsxs = d, be;
|
|
17
|
+
}
|
|
18
|
+
var Ne = {};
|
|
19
|
+
var Cs;
|
|
20
|
+
function gr() {
|
|
21
|
+
return Cs || (Cs = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
22
|
+
var r = Ps, t = /* @__PURE__ */ Symbol.for("react.element"), n = /* @__PURE__ */ Symbol.for("react.portal"), a = /* @__PURE__ */ Symbol.for("react.fragment"), u = /* @__PURE__ */ Symbol.for("react.strict_mode"), o = /* @__PURE__ */ Symbol.for("react.profiler"), d = /* @__PURE__ */ Symbol.for("react.provider"), i = /* @__PURE__ */ Symbol.for("react.context"), f = /* @__PURE__ */ Symbol.for("react.forward_ref"), h = /* @__PURE__ */ Symbol.for("react.suspense"), m = /* @__PURE__ */ Symbol.for("react.suspense_list"), p = /* @__PURE__ */ Symbol.for("react.memo"), _ = /* @__PURE__ */ Symbol.for("react.lazy"), U = /* @__PURE__ */ Symbol.for("react.offscreen"), w = Symbol.iterator, H = "@@iterator";
|
|
23
|
+
function k(s) {
|
|
24
|
+
if (s === null || typeof s != "object")
|
|
25
25
|
return null;
|
|
26
|
-
var l =
|
|
26
|
+
var l = w && s[w] || s[H];
|
|
27
27
|
return typeof l == "function" ? l : null;
|
|
28
28
|
}
|
|
29
|
-
var
|
|
30
|
-
function
|
|
29
|
+
var O = r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
30
|
+
function T(s) {
|
|
31
31
|
{
|
|
32
|
-
for (var l = arguments.length,
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
for (var l = arguments.length, x = new Array(l > 1 ? l - 1 : 0), g = 1; g < l; g++)
|
|
33
|
+
x[g - 1] = arguments[g];
|
|
34
|
+
se("error", s, x);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
function
|
|
37
|
+
function se(s, l, x) {
|
|
38
38
|
{
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
return String(
|
|
39
|
+
var g = O.ReactDebugCurrentFrame, E = g.getStackAddendum();
|
|
40
|
+
E !== "" && (l += "%s", x = x.concat([E]));
|
|
41
|
+
var C = x.map(function(R) {
|
|
42
|
+
return String(R);
|
|
43
43
|
});
|
|
44
|
-
|
|
44
|
+
C.unshift("Warning: " + l), Function.prototype.apply.call(console[s], console, C);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
function
|
|
50
|
-
return !!(typeof
|
|
47
|
+
var te = !1, J = !1, Z = !1, ne = !1, xe = !1, pe;
|
|
48
|
+
pe = /* @__PURE__ */ Symbol.for("react.module.reference");
|
|
49
|
+
function Be(s) {
|
|
50
|
+
return !!(typeof s == "string" || typeof s == "function" || s === a || s === o || xe || s === u || s === h || s === m || ne || s === U || te || J || Z || typeof s == "object" && s !== null && (s.$$typeof === _ || s.$$typeof === p || s.$$typeof === d || s.$$typeof === i || s.$$typeof === f || // This needs to include all possible module reference object
|
|
51
51
|
// types supported by any Flight configuration anywhere since
|
|
52
52
|
// we don't know which Flight build this will end up being used
|
|
53
53
|
// with.
|
|
54
|
-
|
|
54
|
+
s.$$typeof === pe || s.getModuleId !== void 0));
|
|
55
55
|
}
|
|
56
|
-
function
|
|
57
|
-
var
|
|
58
|
-
if (
|
|
59
|
-
return
|
|
60
|
-
var
|
|
61
|
-
return
|
|
56
|
+
function qe(s, l, x) {
|
|
57
|
+
var g = s.displayName;
|
|
58
|
+
if (g)
|
|
59
|
+
return g;
|
|
60
|
+
var E = l.displayName || l.name || "";
|
|
61
|
+
return E !== "" ? x + "(" + E + ")" : x;
|
|
62
62
|
}
|
|
63
|
-
function
|
|
64
|
-
return
|
|
63
|
+
function ke(s) {
|
|
64
|
+
return s.displayName || "Context";
|
|
65
65
|
}
|
|
66
|
-
function
|
|
67
|
-
if (
|
|
66
|
+
function N(s) {
|
|
67
|
+
if (s == null)
|
|
68
68
|
return null;
|
|
69
|
-
if (typeof
|
|
70
|
-
return
|
|
71
|
-
if (typeof
|
|
72
|
-
return
|
|
73
|
-
switch (
|
|
69
|
+
if (typeof s.tag == "number" && T("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof s == "function")
|
|
70
|
+
return s.displayName || s.name || null;
|
|
71
|
+
if (typeof s == "string")
|
|
72
|
+
return s;
|
|
73
|
+
switch (s) {
|
|
74
74
|
case a:
|
|
75
75
|
return "Fragment";
|
|
76
|
-
case
|
|
76
|
+
case n:
|
|
77
77
|
return "Portal";
|
|
78
|
-
case
|
|
78
|
+
case o:
|
|
79
79
|
return "Profiler";
|
|
80
|
-
case
|
|
80
|
+
case u:
|
|
81
81
|
return "StrictMode";
|
|
82
|
-
case
|
|
82
|
+
case h:
|
|
83
83
|
return "Suspense";
|
|
84
|
-
case
|
|
84
|
+
case m:
|
|
85
85
|
return "SuspenseList";
|
|
86
86
|
}
|
|
87
|
-
if (typeof
|
|
88
|
-
switch (
|
|
87
|
+
if (typeof s == "object")
|
|
88
|
+
switch (s.$$typeof) {
|
|
89
89
|
case i:
|
|
90
|
-
var l =
|
|
91
|
-
return
|
|
90
|
+
var l = s;
|
|
91
|
+
return ke(l) + ".Consumer";
|
|
92
|
+
case d:
|
|
93
|
+
var x = s;
|
|
94
|
+
return ke(x._context) + ".Provider";
|
|
92
95
|
case f:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return
|
|
97
|
-
case $:
|
|
98
|
-
var j = r.displayName || null;
|
|
99
|
-
return j !== null ? j : W(r.type) || "Memo";
|
|
96
|
+
return qe(s, s.render, "ForwardRef");
|
|
97
|
+
case p:
|
|
98
|
+
var g = s.displayName || null;
|
|
99
|
+
return g !== null ? g : N(s.type) || "Memo";
|
|
100
100
|
case _: {
|
|
101
|
-
var
|
|
101
|
+
var E = s, C = E._payload, R = E._init;
|
|
102
102
|
try {
|
|
103
|
-
return
|
|
103
|
+
return N(R(C));
|
|
104
104
|
} catch {
|
|
105
105
|
return null;
|
|
106
106
|
}
|
|
@@ -108,999 +108,1075 @@ function hs() {
|
|
|
108
108
|
}
|
|
109
109
|
return null;
|
|
110
110
|
}
|
|
111
|
-
var
|
|
112
|
-
function
|
|
111
|
+
var P = Object.assign, ce = 0, ge, Te, le, as, is, cs, ls;
|
|
112
|
+
function os() {
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
function
|
|
114
|
+
os.__reactDisabledLog = !0;
|
|
115
|
+
function qs() {
|
|
116
116
|
{
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
var
|
|
117
|
+
if (ce === 0) {
|
|
118
|
+
ge = console.log, Te = console.info, le = console.warn, as = console.error, is = console.group, cs = console.groupCollapsed, ls = console.groupEnd;
|
|
119
|
+
var s = {
|
|
120
120
|
configurable: !0,
|
|
121
121
|
enumerable: !0,
|
|
122
|
-
value:
|
|
122
|
+
value: os,
|
|
123
123
|
writable: !0
|
|
124
124
|
};
|
|
125
125
|
Object.defineProperties(console, {
|
|
126
|
-
info:
|
|
127
|
-
log:
|
|
128
|
-
warn:
|
|
129
|
-
error:
|
|
130
|
-
group:
|
|
131
|
-
groupCollapsed:
|
|
132
|
-
groupEnd:
|
|
126
|
+
info: s,
|
|
127
|
+
log: s,
|
|
128
|
+
warn: s,
|
|
129
|
+
error: s,
|
|
130
|
+
group: s,
|
|
131
|
+
groupCollapsed: s,
|
|
132
|
+
groupEnd: s
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
ce++;
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
function
|
|
138
|
+
function Is() {
|
|
139
139
|
{
|
|
140
|
-
if (
|
|
141
|
-
var
|
|
140
|
+
if (ce--, ce === 0) {
|
|
141
|
+
var s = {
|
|
142
142
|
configurable: !0,
|
|
143
143
|
enumerable: !0,
|
|
144
144
|
writable: !0
|
|
145
145
|
};
|
|
146
146
|
Object.defineProperties(console, {
|
|
147
|
-
log:
|
|
148
|
-
value:
|
|
147
|
+
log: P({}, s, {
|
|
148
|
+
value: ge
|
|
149
149
|
}),
|
|
150
|
-
info:
|
|
151
|
-
value:
|
|
150
|
+
info: P({}, s, {
|
|
151
|
+
value: Te
|
|
152
152
|
}),
|
|
153
|
-
warn:
|
|
154
|
-
value:
|
|
153
|
+
warn: P({}, s, {
|
|
154
|
+
value: le
|
|
155
155
|
}),
|
|
156
|
-
error:
|
|
157
|
-
value:
|
|
156
|
+
error: P({}, s, {
|
|
157
|
+
value: as
|
|
158
158
|
}),
|
|
159
|
-
group:
|
|
160
|
-
value:
|
|
159
|
+
group: P({}, s, {
|
|
160
|
+
value: is
|
|
161
161
|
}),
|
|
162
|
-
groupCollapsed:
|
|
163
|
-
value:
|
|
162
|
+
groupCollapsed: P({}, s, {
|
|
163
|
+
value: cs
|
|
164
164
|
}),
|
|
165
|
-
groupEnd:
|
|
166
|
-
value:
|
|
165
|
+
groupEnd: P({}, s, {
|
|
166
|
+
value: ls
|
|
167
167
|
})
|
|
168
168
|
});
|
|
169
169
|
}
|
|
170
|
-
|
|
170
|
+
ce < 0 && T("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
var
|
|
174
|
-
function
|
|
173
|
+
var Ie = O.ReactCurrentDispatcher, Ue;
|
|
174
|
+
function Pe(s, l, x) {
|
|
175
175
|
{
|
|
176
|
-
if (
|
|
176
|
+
if (Ue === void 0)
|
|
177
177
|
try {
|
|
178
178
|
throw Error();
|
|
179
|
-
} catch (
|
|
180
|
-
var
|
|
181
|
-
|
|
179
|
+
} catch (E) {
|
|
180
|
+
var g = E.stack.trim().match(/\n( *(at )?)/);
|
|
181
|
+
Ue = g && g[1] || "";
|
|
182
182
|
}
|
|
183
183
|
return `
|
|
184
|
-
` +
|
|
184
|
+
` + Ue + s;
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
|
-
var
|
|
187
|
+
var Me = !1, Se;
|
|
188
188
|
{
|
|
189
|
-
var
|
|
190
|
-
|
|
189
|
+
var Us = typeof WeakMap == "function" ? WeakMap : Map;
|
|
190
|
+
Se = new Us();
|
|
191
191
|
}
|
|
192
|
-
function
|
|
193
|
-
if (!
|
|
192
|
+
function ds(s, l) {
|
|
193
|
+
if (!s || Me)
|
|
194
194
|
return "";
|
|
195
195
|
{
|
|
196
|
-
var
|
|
197
|
-
if (
|
|
198
|
-
return
|
|
196
|
+
var x = Se.get(s);
|
|
197
|
+
if (x !== void 0)
|
|
198
|
+
return x;
|
|
199
199
|
}
|
|
200
|
-
var
|
|
201
|
-
|
|
202
|
-
var
|
|
200
|
+
var g;
|
|
201
|
+
Me = !0;
|
|
202
|
+
var E = Error.prepareStackTrace;
|
|
203
203
|
Error.prepareStackTrace = void 0;
|
|
204
|
-
var
|
|
205
|
-
|
|
204
|
+
var C;
|
|
205
|
+
C = Ie.current, Ie.current = null, qs();
|
|
206
206
|
try {
|
|
207
207
|
if (l) {
|
|
208
|
-
var
|
|
208
|
+
var R = function() {
|
|
209
209
|
throw Error();
|
|
210
210
|
};
|
|
211
|
-
if (Object.defineProperty(
|
|
211
|
+
if (Object.defineProperty(R.prototype, "props", {
|
|
212
212
|
set: function() {
|
|
213
213
|
throw Error();
|
|
214
214
|
}
|
|
215
215
|
}), typeof Reflect == "object" && Reflect.construct) {
|
|
216
216
|
try {
|
|
217
|
-
Reflect.construct(
|
|
218
|
-
} catch (
|
|
219
|
-
|
|
217
|
+
Reflect.construct(R, []);
|
|
218
|
+
} catch (M) {
|
|
219
|
+
g = M;
|
|
220
220
|
}
|
|
221
|
-
Reflect.construct(
|
|
221
|
+
Reflect.construct(s, [], R);
|
|
222
222
|
} else {
|
|
223
223
|
try {
|
|
224
|
-
|
|
225
|
-
} catch (
|
|
226
|
-
|
|
224
|
+
R.call();
|
|
225
|
+
} catch (M) {
|
|
226
|
+
g = M;
|
|
227
227
|
}
|
|
228
|
-
|
|
228
|
+
s.call(R.prototype);
|
|
229
229
|
}
|
|
230
230
|
} else {
|
|
231
231
|
try {
|
|
232
232
|
throw Error();
|
|
233
|
-
} catch (
|
|
234
|
-
|
|
233
|
+
} catch (M) {
|
|
234
|
+
g = M;
|
|
235
235
|
}
|
|
236
|
-
|
|
236
|
+
s();
|
|
237
237
|
}
|
|
238
|
-
} catch (
|
|
239
|
-
if (
|
|
240
|
-
for (var
|
|
241
|
-
`), I =
|
|
242
|
-
`),
|
|
243
|
-
|
|
244
|
-
for (;
|
|
245
|
-
if (
|
|
246
|
-
if (
|
|
238
|
+
} catch (M) {
|
|
239
|
+
if (M && g && typeof M.stack == "string") {
|
|
240
|
+
for (var v = M.stack.split(`
|
|
241
|
+
`), I = g.stack.split(`
|
|
242
|
+
`), A = v.length - 1, F = I.length - 1; A >= 1 && F >= 0 && v[A] !== I[F]; )
|
|
243
|
+
F--;
|
|
244
|
+
for (; A >= 1 && F >= 0; A--, F--)
|
|
245
|
+
if (v[A] !== I[F]) {
|
|
246
|
+
if (A !== 1 || F !== 1)
|
|
247
247
|
do
|
|
248
|
-
if (
|
|
249
|
-
var
|
|
250
|
-
` +
|
|
251
|
-
return
|
|
248
|
+
if (A--, F--, F < 0 || v[A] !== I[F]) {
|
|
249
|
+
var X = `
|
|
250
|
+
` + v[A].replace(" at new ", " at ");
|
|
251
|
+
return s.displayName && X.includes("<anonymous>") && (X = X.replace("<anonymous>", s.displayName)), typeof s == "function" && Se.set(s, X), X;
|
|
252
252
|
}
|
|
253
|
-
while (
|
|
253
|
+
while (A >= 1 && F >= 0);
|
|
254
254
|
break;
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
257
|
} finally {
|
|
258
|
-
|
|
258
|
+
Me = !1, Ie.current = C, Is(), Error.prepareStackTrace = E;
|
|
259
259
|
}
|
|
260
|
-
var
|
|
261
|
-
return typeof
|
|
260
|
+
var fe = s ? s.displayName || s.name : "", oe = fe ? Pe(fe) : "";
|
|
261
|
+
return typeof s == "function" && Se.set(s, oe), oe;
|
|
262
262
|
}
|
|
263
|
-
function
|
|
264
|
-
return
|
|
263
|
+
function Ms(s, l, x) {
|
|
264
|
+
return ds(s, !1);
|
|
265
265
|
}
|
|
266
|
-
function
|
|
267
|
-
var l =
|
|
266
|
+
function Ws(s) {
|
|
267
|
+
var l = s.prototype;
|
|
268
268
|
return !!(l && l.isReactComponent);
|
|
269
269
|
}
|
|
270
|
-
function
|
|
271
|
-
if (
|
|
270
|
+
function De(s, l, x) {
|
|
271
|
+
if (s == null)
|
|
272
272
|
return "";
|
|
273
|
-
if (typeof
|
|
274
|
-
return
|
|
275
|
-
if (typeof
|
|
276
|
-
return
|
|
277
|
-
switch (
|
|
278
|
-
case
|
|
279
|
-
return
|
|
280
|
-
case
|
|
281
|
-
return
|
|
273
|
+
if (typeof s == "function")
|
|
274
|
+
return ds(s, Ws(s));
|
|
275
|
+
if (typeof s == "string")
|
|
276
|
+
return Pe(s);
|
|
277
|
+
switch (s) {
|
|
278
|
+
case h:
|
|
279
|
+
return Pe("Suspense");
|
|
280
|
+
case m:
|
|
281
|
+
return Pe("SuspenseList");
|
|
282
282
|
}
|
|
283
|
-
if (typeof
|
|
284
|
-
switch (
|
|
285
|
-
case
|
|
286
|
-
return
|
|
287
|
-
case
|
|
288
|
-
return
|
|
283
|
+
if (typeof s == "object")
|
|
284
|
+
switch (s.$$typeof) {
|
|
285
|
+
case f:
|
|
286
|
+
return Ms(s.render);
|
|
287
|
+
case p:
|
|
288
|
+
return De(s.type, l, x);
|
|
289
289
|
case _: {
|
|
290
|
-
var
|
|
290
|
+
var g = s, E = g._payload, C = g._init;
|
|
291
291
|
try {
|
|
292
|
-
return
|
|
292
|
+
return De(C(E), l, x);
|
|
293
293
|
} catch {
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
297
|
return "";
|
|
298
298
|
}
|
|
299
|
-
var
|
|
300
|
-
function
|
|
301
|
-
if (
|
|
302
|
-
var l =
|
|
303
|
-
|
|
299
|
+
var ve = Object.prototype.hasOwnProperty, us = {}, hs = O.ReactDebugCurrentFrame;
|
|
300
|
+
function Ae(s) {
|
|
301
|
+
if (s) {
|
|
302
|
+
var l = s._owner, x = De(s.type, s._source, l ? l.type : null);
|
|
303
|
+
hs.setExtraStackFrame(x);
|
|
304
304
|
} else
|
|
305
|
-
|
|
305
|
+
hs.setExtraStackFrame(null);
|
|
306
306
|
}
|
|
307
|
-
function
|
|
307
|
+
function Gs(s, l, x, g, E) {
|
|
308
308
|
{
|
|
309
|
-
var
|
|
310
|
-
for (var
|
|
311
|
-
if (
|
|
312
|
-
var
|
|
309
|
+
var C = Function.call.bind(ve);
|
|
310
|
+
for (var R in s)
|
|
311
|
+
if (C(s, R)) {
|
|
312
|
+
var v = void 0;
|
|
313
313
|
try {
|
|
314
|
-
if (typeof
|
|
315
|
-
var I = Error((
|
|
314
|
+
if (typeof s[R] != "function") {
|
|
315
|
+
var I = Error((g || "React class") + ": " + x + " type `" + R + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof s[R] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
|
|
316
316
|
throw I.name = "Invariant Violation", I;
|
|
317
317
|
}
|
|
318
|
-
|
|
319
|
-
} catch (
|
|
320
|
-
|
|
318
|
+
v = s[R](l, R, g, x, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
|
|
319
|
+
} catch (A) {
|
|
320
|
+
v = A;
|
|
321
321
|
}
|
|
322
|
-
|
|
322
|
+
v && !(v instanceof Error) && (Ae(E), T("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", g || "React class", x, R, typeof v), Ae(null)), v instanceof Error && !(v.message in us) && (us[v.message] = !0, Ae(E), T("Failed %s type: %s", x, v.message), Ae(null));
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
-
var
|
|
327
|
-
function
|
|
328
|
-
return
|
|
326
|
+
var Vs = Array.isArray;
|
|
327
|
+
function We(s) {
|
|
328
|
+
return Vs(s);
|
|
329
329
|
}
|
|
330
|
-
function
|
|
330
|
+
function zs(s) {
|
|
331
331
|
{
|
|
332
|
-
var l = typeof Symbol == "function" && Symbol.toStringTag,
|
|
333
|
-
return
|
|
332
|
+
var l = typeof Symbol == "function" && Symbol.toStringTag, x = l && s[Symbol.toStringTag] || s.constructor.name || "Object";
|
|
333
|
+
return x;
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
|
-
function
|
|
336
|
+
function Ys(s) {
|
|
337
337
|
try {
|
|
338
|
-
return
|
|
338
|
+
return xs(s), !1;
|
|
339
339
|
} catch {
|
|
340
340
|
return !0;
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
|
-
function
|
|
344
|
-
return "" +
|
|
343
|
+
function xs(s) {
|
|
344
|
+
return "" + s;
|
|
345
345
|
}
|
|
346
|
-
function
|
|
347
|
-
if (
|
|
348
|
-
return
|
|
346
|
+
function ms(s) {
|
|
347
|
+
if (Ys(s))
|
|
348
|
+
return T("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", zs(s)), xs(s);
|
|
349
349
|
}
|
|
350
|
-
var
|
|
350
|
+
var fs = O.ReactCurrentOwner, Ks = {
|
|
351
351
|
key: !0,
|
|
352
352
|
ref: !0,
|
|
353
353
|
__self: !0,
|
|
354
354
|
__source: !0
|
|
355
|
-
},
|
|
356
|
-
function
|
|
357
|
-
if (
|
|
358
|
-
var l = Object.getOwnPropertyDescriptor(
|
|
355
|
+
}, js, ps;
|
|
356
|
+
function Hs(s) {
|
|
357
|
+
if (ve.call(s, "ref")) {
|
|
358
|
+
var l = Object.getOwnPropertyDescriptor(s, "ref").get;
|
|
359
359
|
if (l && l.isReactWarning)
|
|
360
360
|
return !1;
|
|
361
361
|
}
|
|
362
|
-
return
|
|
362
|
+
return s.ref !== void 0;
|
|
363
363
|
}
|
|
364
|
-
function
|
|
365
|
-
if (
|
|
366
|
-
var l = Object.getOwnPropertyDescriptor(
|
|
364
|
+
function Js(s) {
|
|
365
|
+
if (ve.call(s, "key")) {
|
|
366
|
+
var l = Object.getOwnPropertyDescriptor(s, "key").get;
|
|
367
367
|
if (l && l.isReactWarning)
|
|
368
368
|
return !1;
|
|
369
369
|
}
|
|
370
|
-
return
|
|
370
|
+
return s.key !== void 0;
|
|
371
371
|
}
|
|
372
|
-
function
|
|
373
|
-
typeof
|
|
372
|
+
function Xs(s, l) {
|
|
373
|
+
typeof s.ref == "string" && fs.current;
|
|
374
374
|
}
|
|
375
|
-
function
|
|
375
|
+
function Qs(s, l) {
|
|
376
376
|
{
|
|
377
|
-
var
|
|
378
|
-
|
|
377
|
+
var x = function() {
|
|
378
|
+
js || (js = !0, T("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
|
|
379
379
|
};
|
|
380
|
-
|
|
381
|
-
get:
|
|
380
|
+
x.isReactWarning = !0, Object.defineProperty(s, "key", {
|
|
381
|
+
get: x,
|
|
382
382
|
configurable: !0
|
|
383
383
|
});
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
|
-
function
|
|
386
|
+
function Zs(s, l) {
|
|
387
387
|
{
|
|
388
|
-
var
|
|
389
|
-
|
|
388
|
+
var x = function() {
|
|
389
|
+
ps || (ps = !0, T("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
|
|
390
390
|
};
|
|
391
|
-
|
|
392
|
-
get:
|
|
391
|
+
x.isReactWarning = !0, Object.defineProperty(s, "ref", {
|
|
392
|
+
get: x,
|
|
393
393
|
configurable: !0
|
|
394
394
|
});
|
|
395
395
|
}
|
|
396
396
|
}
|
|
397
|
-
var
|
|
398
|
-
var
|
|
397
|
+
var er = function(s, l, x, g, E, C, R) {
|
|
398
|
+
var v = {
|
|
399
399
|
// This tag allows us to uniquely identify this as a React Element
|
|
400
|
-
$$typeof:
|
|
400
|
+
$$typeof: t,
|
|
401
401
|
// Built-in properties that belong on the element
|
|
402
|
-
type:
|
|
402
|
+
type: s,
|
|
403
403
|
key: l,
|
|
404
|
-
ref:
|
|
405
|
-
props:
|
|
404
|
+
ref: x,
|
|
405
|
+
props: R,
|
|
406
406
|
// Record the component responsible for creating this element.
|
|
407
|
-
_owner:
|
|
407
|
+
_owner: C
|
|
408
408
|
};
|
|
409
|
-
return
|
|
409
|
+
return v._store = {}, Object.defineProperty(v._store, "validated", {
|
|
410
410
|
configurable: !1,
|
|
411
411
|
enumerable: !1,
|
|
412
412
|
writable: !0,
|
|
413
413
|
value: !1
|
|
414
|
-
}), Object.defineProperty(
|
|
414
|
+
}), Object.defineProperty(v, "_self", {
|
|
415
415
|
configurable: !1,
|
|
416
416
|
enumerable: !1,
|
|
417
417
|
writable: !1,
|
|
418
|
-
value:
|
|
419
|
-
}), Object.defineProperty(
|
|
418
|
+
value: g
|
|
419
|
+
}), Object.defineProperty(v, "_source", {
|
|
420
420
|
configurable: !1,
|
|
421
421
|
enumerable: !1,
|
|
422
422
|
writable: !1,
|
|
423
|
-
value:
|
|
424
|
-
}), Object.freeze && (Object.freeze(
|
|
423
|
+
value: E
|
|
424
|
+
}), Object.freeze && (Object.freeze(v.props), Object.freeze(v)), v;
|
|
425
425
|
};
|
|
426
|
-
function
|
|
426
|
+
function sr(s, l, x, g, E) {
|
|
427
427
|
{
|
|
428
|
-
var
|
|
429
|
-
|
|
430
|
-
for (
|
|
431
|
-
|
|
432
|
-
if (
|
|
433
|
-
var
|
|
434
|
-
for (
|
|
435
|
-
|
|
428
|
+
var C, R = {}, v = null, I = null;
|
|
429
|
+
x !== void 0 && (ms(x), v = "" + x), Js(l) && (ms(l.key), v = "" + l.key), Hs(l) && (I = l.ref, Xs(l, E));
|
|
430
|
+
for (C in l)
|
|
431
|
+
ve.call(l, C) && !Ks.hasOwnProperty(C) && (R[C] = l[C]);
|
|
432
|
+
if (s && s.defaultProps) {
|
|
433
|
+
var A = s.defaultProps;
|
|
434
|
+
for (C in A)
|
|
435
|
+
R[C] === void 0 && (R[C] = A[C]);
|
|
436
436
|
}
|
|
437
|
-
if (
|
|
438
|
-
var
|
|
439
|
-
|
|
437
|
+
if (v || I) {
|
|
438
|
+
var F = typeof s == "function" ? s.displayName || s.name || "Unknown" : s;
|
|
439
|
+
v && Qs(R, F), I && Zs(R, F);
|
|
440
440
|
}
|
|
441
|
-
return
|
|
441
|
+
return er(s, v, I, E, g, fs.current, R);
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
|
-
var
|
|
445
|
-
function
|
|
446
|
-
if (
|
|
447
|
-
var l =
|
|
448
|
-
|
|
444
|
+
var Ge = O.ReactCurrentOwner, gs = O.ReactDebugCurrentFrame;
|
|
445
|
+
function me(s) {
|
|
446
|
+
if (s) {
|
|
447
|
+
var l = s._owner, x = De(s.type, s._source, l ? l.type : null);
|
|
448
|
+
gs.setExtraStackFrame(x);
|
|
449
449
|
} else
|
|
450
|
-
|
|
450
|
+
gs.setExtraStackFrame(null);
|
|
451
451
|
}
|
|
452
|
-
var
|
|
453
|
-
|
|
454
|
-
function
|
|
455
|
-
return typeof
|
|
452
|
+
var Ve;
|
|
453
|
+
Ve = !1;
|
|
454
|
+
function ze(s) {
|
|
455
|
+
return typeof s == "object" && s !== null && s.$$typeof === t;
|
|
456
456
|
}
|
|
457
|
-
function
|
|
457
|
+
function vs() {
|
|
458
458
|
{
|
|
459
|
-
if (
|
|
460
|
-
var
|
|
461
|
-
if (
|
|
459
|
+
if (Ge.current) {
|
|
460
|
+
var s = N(Ge.current.type);
|
|
461
|
+
if (s)
|
|
462
462
|
return `
|
|
463
463
|
|
|
464
|
-
Check the render method of \`` +
|
|
464
|
+
Check the render method of \`` + s + "`.";
|
|
465
465
|
}
|
|
466
466
|
return "";
|
|
467
467
|
}
|
|
468
468
|
}
|
|
469
|
-
function
|
|
469
|
+
function rr(s) {
|
|
470
470
|
return "";
|
|
471
471
|
}
|
|
472
|
-
var
|
|
473
|
-
function
|
|
472
|
+
var bs = {};
|
|
473
|
+
function tr(s) {
|
|
474
474
|
{
|
|
475
|
-
var l =
|
|
475
|
+
var l = vs();
|
|
476
476
|
if (!l) {
|
|
477
|
-
var
|
|
478
|
-
|
|
477
|
+
var x = typeof s == "string" ? s : s.displayName || s.name;
|
|
478
|
+
x && (l = `
|
|
479
479
|
|
|
480
|
-
Check the top-level render call using <` +
|
|
480
|
+
Check the top-level render call using <` + x + ">.");
|
|
481
481
|
}
|
|
482
482
|
return l;
|
|
483
483
|
}
|
|
484
484
|
}
|
|
485
|
-
function
|
|
485
|
+
function Ns(s, l) {
|
|
486
486
|
{
|
|
487
|
-
if (!
|
|
487
|
+
if (!s._store || s._store.validated || s.key != null)
|
|
488
488
|
return;
|
|
489
|
-
|
|
490
|
-
var
|
|
491
|
-
if (
|
|
489
|
+
s._store.validated = !0;
|
|
490
|
+
var x = tr(l);
|
|
491
|
+
if (bs[x])
|
|
492
492
|
return;
|
|
493
|
-
|
|
494
|
-
var
|
|
495
|
-
|
|
493
|
+
bs[x] = !0;
|
|
494
|
+
var g = "";
|
|
495
|
+
s && s._owner && s._owner !== Ge.current && (g = " It was passed a child from " + N(s._owner.type) + "."), me(s), T('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', x, g), me(null);
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
|
-
function
|
|
498
|
+
function ys(s, l) {
|
|
499
499
|
{
|
|
500
|
-
if (typeof
|
|
500
|
+
if (typeof s != "object")
|
|
501
501
|
return;
|
|
502
|
-
if (
|
|
503
|
-
for (var
|
|
504
|
-
var
|
|
505
|
-
|
|
502
|
+
if (We(s))
|
|
503
|
+
for (var x = 0; x < s.length; x++) {
|
|
504
|
+
var g = s[x];
|
|
505
|
+
ze(g) && Ns(g, l);
|
|
506
506
|
}
|
|
507
|
-
else if (
|
|
508
|
-
|
|
509
|
-
else if (
|
|
510
|
-
var
|
|
511
|
-
if (typeof
|
|
512
|
-
for (var
|
|
513
|
-
|
|
507
|
+
else if (ze(s))
|
|
508
|
+
s._store && (s._store.validated = !0);
|
|
509
|
+
else if (s) {
|
|
510
|
+
var E = k(s);
|
|
511
|
+
if (typeof E == "function" && E !== s.entries)
|
|
512
|
+
for (var C = E.call(s), R; !(R = C.next()).done; )
|
|
513
|
+
ze(R.value) && Ns(R.value, l);
|
|
514
514
|
}
|
|
515
515
|
}
|
|
516
516
|
}
|
|
517
|
-
function
|
|
517
|
+
function nr(s) {
|
|
518
518
|
{
|
|
519
|
-
var l =
|
|
519
|
+
var l = s.type;
|
|
520
520
|
if (l == null || typeof l == "string")
|
|
521
521
|
return;
|
|
522
|
-
var
|
|
522
|
+
var x;
|
|
523
523
|
if (typeof l == "function")
|
|
524
|
-
|
|
525
|
-
else if (typeof l == "object" && (l.$$typeof ===
|
|
524
|
+
x = l.propTypes;
|
|
525
|
+
else if (typeof l == "object" && (l.$$typeof === f || // Note: Memo only checks outer props here.
|
|
526
526
|
// Inner props are checked in the reconciler.
|
|
527
|
-
l.$$typeof ===
|
|
528
|
-
|
|
527
|
+
l.$$typeof === p))
|
|
528
|
+
x = l.propTypes;
|
|
529
529
|
else
|
|
530
530
|
return;
|
|
531
|
-
if (
|
|
532
|
-
var
|
|
533
|
-
|
|
534
|
-
} else if (l.PropTypes !== void 0 && !
|
|
535
|
-
|
|
536
|
-
var
|
|
537
|
-
|
|
531
|
+
if (x) {
|
|
532
|
+
var g = N(l);
|
|
533
|
+
Gs(x, s.props, "prop", g, s);
|
|
534
|
+
} else if (l.PropTypes !== void 0 && !Ve) {
|
|
535
|
+
Ve = !0;
|
|
536
|
+
var E = N(l);
|
|
537
|
+
T("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", E || "Unknown");
|
|
538
538
|
}
|
|
539
|
-
typeof l.getDefaultProps == "function" && !l.getDefaultProps.isReactClassApproved &&
|
|
539
|
+
typeof l.getDefaultProps == "function" && !l.getDefaultProps.isReactClassApproved && T("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
|
|
540
540
|
}
|
|
541
541
|
}
|
|
542
|
-
function
|
|
542
|
+
function ar(s) {
|
|
543
543
|
{
|
|
544
|
-
for (var l = Object.keys(
|
|
545
|
-
var
|
|
546
|
-
if (
|
|
547
|
-
|
|
544
|
+
for (var l = Object.keys(s.props), x = 0; x < l.length; x++) {
|
|
545
|
+
var g = l[x];
|
|
546
|
+
if (g !== "children" && g !== "key") {
|
|
547
|
+
me(s), T("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", g), me(null);
|
|
548
548
|
break;
|
|
549
549
|
}
|
|
550
550
|
}
|
|
551
|
-
|
|
551
|
+
s.ref !== null && (me(s), T("Invalid attribute `ref` supplied to `React.Fragment`."), me(null));
|
|
552
552
|
}
|
|
553
553
|
}
|
|
554
|
-
var
|
|
555
|
-
function
|
|
554
|
+
var _s = {};
|
|
555
|
+
function ws(s, l, x, g, E, C) {
|
|
556
556
|
{
|
|
557
|
-
var
|
|
558
|
-
if (!
|
|
559
|
-
var
|
|
560
|
-
(
|
|
561
|
-
var I =
|
|
562
|
-
I ?
|
|
563
|
-
var
|
|
564
|
-
|
|
557
|
+
var R = Be(s);
|
|
558
|
+
if (!R) {
|
|
559
|
+
var v = "";
|
|
560
|
+
(s === void 0 || typeof s == "object" && s !== null && Object.keys(s).length === 0) && (v += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
|
|
561
|
+
var I = rr();
|
|
562
|
+
I ? v += I : v += vs();
|
|
563
|
+
var A;
|
|
564
|
+
s === null ? A = "null" : We(s) ? A = "array" : s !== void 0 && s.$$typeof === t ? (A = "<" + (N(s.type) || "Unknown") + " />", v = " Did you accidentally export a JSX literal instead of a component?") : A = typeof s, T("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", A, v);
|
|
565
565
|
}
|
|
566
|
-
var
|
|
567
|
-
if (
|
|
568
|
-
return
|
|
569
|
-
if (
|
|
570
|
-
var
|
|
571
|
-
if (
|
|
572
|
-
if (
|
|
573
|
-
if (
|
|
574
|
-
for (var
|
|
575
|
-
|
|
576
|
-
Object.freeze && Object.freeze(
|
|
566
|
+
var F = sr(s, l, x, E, C);
|
|
567
|
+
if (F == null)
|
|
568
|
+
return F;
|
|
569
|
+
if (R) {
|
|
570
|
+
var X = l.children;
|
|
571
|
+
if (X !== void 0)
|
|
572
|
+
if (g)
|
|
573
|
+
if (We(X)) {
|
|
574
|
+
for (var fe = 0; fe < X.length; fe++)
|
|
575
|
+
ys(X[fe], s);
|
|
576
|
+
Object.freeze && Object.freeze(X);
|
|
577
577
|
} else
|
|
578
|
-
|
|
578
|
+
T("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
|
|
579
579
|
else
|
|
580
|
-
|
|
580
|
+
ys(X, s);
|
|
581
581
|
}
|
|
582
|
-
if (
|
|
583
|
-
var
|
|
584
|
-
return
|
|
585
|
-
}),
|
|
586
|
-
if (!
|
|
587
|
-
var
|
|
588
|
-
|
|
582
|
+
if (ve.call(l, "key")) {
|
|
583
|
+
var oe = N(s), M = Object.keys(l).filter(function(ur) {
|
|
584
|
+
return ur !== "key";
|
|
585
|
+
}), Ye = M.length > 0 ? "{key: someKey, " + M.join(": ..., ") + ": ...}" : "{key: someKey}";
|
|
586
|
+
if (!_s[oe + Ye]) {
|
|
587
|
+
var dr = M.length > 0 ? "{" + M.join(": ..., ") + ": ...}" : "{}";
|
|
588
|
+
T(`A props object containing a "key" prop is being spread into JSX:
|
|
589
589
|
let props = %s;
|
|
590
590
|
<%s {...props} />
|
|
591
591
|
React keys must be passed directly to JSX without using spread:
|
|
592
592
|
let props = %s;
|
|
593
|
-
<%s key={someKey} {...props} />`,
|
|
593
|
+
<%s key={someKey} {...props} />`, Ye, oe, dr, oe), _s[oe + Ye] = !0;
|
|
594
594
|
}
|
|
595
595
|
}
|
|
596
|
-
return
|
|
596
|
+
return s === a ? ar(F) : nr(F), F;
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
|
-
function
|
|
600
|
-
return
|
|
599
|
+
function ir(s, l, x) {
|
|
600
|
+
return ws(s, l, x, !0);
|
|
601
601
|
}
|
|
602
|
-
function
|
|
603
|
-
return
|
|
602
|
+
function cr(s, l, x) {
|
|
603
|
+
return ws(s, l, x, !1);
|
|
604
604
|
}
|
|
605
|
-
var
|
|
606
|
-
|
|
607
|
-
})()),
|
|
608
|
-
}
|
|
609
|
-
var
|
|
610
|
-
function
|
|
611
|
-
return
|
|
612
|
-
}
|
|
613
|
-
var e =
|
|
614
|
-
class
|
|
615
|
-
constructor(
|
|
616
|
-
super(
|
|
605
|
+
var lr = cr, or = ir;
|
|
606
|
+
Ne.Fragment = a, Ne.jsx = lr, Ne.jsxs = or;
|
|
607
|
+
})()), Ne;
|
|
608
|
+
}
|
|
609
|
+
var ks;
|
|
610
|
+
function vr() {
|
|
611
|
+
return ks || (ks = 1, process.env.NODE_ENV === "production" ? Fe.exports = pr() : Fe.exports = gr()), Fe.exports;
|
|
612
|
+
}
|
|
613
|
+
var e = vr();
|
|
614
|
+
class we extends Error {
|
|
615
|
+
constructor(t, n) {
|
|
616
|
+
super(n), this.status = t, this.name = "ApiError";
|
|
617
617
|
}
|
|
618
618
|
}
|
|
619
|
-
class
|
|
619
|
+
class br {
|
|
620
620
|
baseUrl;
|
|
621
621
|
headers;
|
|
622
|
-
constructor(
|
|
623
|
-
this.baseUrl =
|
|
622
|
+
constructor(t = {}) {
|
|
623
|
+
this.baseUrl = t.baseUrl ?? "", this.headers = {
|
|
624
624
|
"Content-Type": "application/json",
|
|
625
|
-
...
|
|
625
|
+
...t.headers
|
|
626
626
|
};
|
|
627
627
|
}
|
|
628
|
-
async request(
|
|
629
|
-
let
|
|
628
|
+
async request(t, n, a = {}) {
|
|
629
|
+
let u = `${this.baseUrl}${n}`;
|
|
630
630
|
if (a.params) {
|
|
631
|
-
const
|
|
632
|
-
Object.entries(a.params).forEach(([
|
|
633
|
-
|
|
631
|
+
const d = new URLSearchParams();
|
|
632
|
+
Object.entries(a.params).forEach(([f, h]) => {
|
|
633
|
+
h != null && h !== "" && d.set(f, String(h));
|
|
634
634
|
});
|
|
635
|
-
const i =
|
|
636
|
-
i && (
|
|
635
|
+
const i = d.toString();
|
|
636
|
+
i && (u += `?${i}`);
|
|
637
637
|
}
|
|
638
|
-
const
|
|
639
|
-
method:
|
|
638
|
+
const o = await fetch(u, {
|
|
639
|
+
method: t,
|
|
640
640
|
headers: this.headers,
|
|
641
641
|
body: a.body ? JSON.stringify(a.body) : void 0
|
|
642
642
|
});
|
|
643
|
-
if (!
|
|
644
|
-
const
|
|
645
|
-
throw new
|
|
643
|
+
if (!o.ok) {
|
|
644
|
+
const d = await o.json().catch(() => ({ detail: "Unknown error" }));
|
|
645
|
+
throw new we(o.status, d.detail || o.statusText);
|
|
646
646
|
}
|
|
647
|
-
if (!(
|
|
648
|
-
return
|
|
647
|
+
if (!(o.status === 204 || o.headers.get("content-length") === "0"))
|
|
648
|
+
return o.json();
|
|
649
649
|
}
|
|
650
650
|
async getCapabilities() {
|
|
651
651
|
return this.request("GET", "/api/v1/capabilities");
|
|
652
652
|
}
|
|
653
|
-
async listRuns(
|
|
654
|
-
return this.request("GET", "/api/runs", { params:
|
|
653
|
+
async listRuns(t) {
|
|
654
|
+
return this.request("GET", "/api/runs", { params: t });
|
|
655
655
|
}
|
|
656
|
-
async getRun(
|
|
657
|
-
return this.request("GET", `/api/runs/${
|
|
656
|
+
async getRun(t) {
|
|
657
|
+
return this.request("GET", `/api/runs/${t}`);
|
|
658
658
|
}
|
|
659
|
-
async deleteRun(
|
|
660
|
-
await this.request("DELETE", `/api/runs/${
|
|
659
|
+
async deleteRun(t) {
|
|
660
|
+
await this.request("DELETE", `/api/runs/${t}`);
|
|
661
661
|
}
|
|
662
|
-
async setBaseline(
|
|
663
|
-
return this.request("POST", `/api/projects/${
|
|
662
|
+
async setBaseline(t, n) {
|
|
663
|
+
return this.request("POST", `/api/projects/${t}/baseline/${n}`, {
|
|
664
664
|
params: { redirect: "false" }
|
|
665
665
|
});
|
|
666
666
|
}
|
|
667
|
-
async listProjects(
|
|
668
|
-
return this.request("GET", "/api/projects", { params:
|
|
667
|
+
async listProjects(t) {
|
|
668
|
+
return this.request("GET", "/api/projects", { params: t });
|
|
669
669
|
}
|
|
670
|
-
async listGroups(
|
|
671
|
-
return this.request("GET", "/api/groups", { params:
|
|
670
|
+
async listGroups(t) {
|
|
671
|
+
return this.request("GET", "/api/groups", { params: t });
|
|
672
672
|
}
|
|
673
|
-
async getGroup(
|
|
674
|
-
return this.request("GET", `/api/groups/${
|
|
673
|
+
async getGroup(t) {
|
|
674
|
+
return this.request("GET", `/api/groups/${t}`);
|
|
675
675
|
}
|
|
676
|
-
async getDiff(
|
|
676
|
+
async getDiff(t, n) {
|
|
677
677
|
return this.request("GET", "/api/diff", {
|
|
678
|
-
params: { a:
|
|
678
|
+
params: { a: t, b: n }
|
|
679
679
|
});
|
|
680
680
|
}
|
|
681
|
-
async getArtifact(
|
|
682
|
-
return this.request("GET", `/api/runs/${
|
|
681
|
+
async getArtifact(t, n) {
|
|
682
|
+
return this.request("GET", `/api/runs/${t}/artifacts/${n}`);
|
|
683
|
+
}
|
|
684
|
+
getArtifactDownloadUrl(t, n) {
|
|
685
|
+
return `${this.baseUrl}/api/runs/${t}/artifacts/${n}/raw`;
|
|
686
|
+
}
|
|
687
|
+
async createExport(t) {
|
|
688
|
+
return this.request("POST", `/api/runs/${t}/export`);
|
|
683
689
|
}
|
|
684
|
-
|
|
685
|
-
return
|
|
690
|
+
async getExportInfo(t) {
|
|
691
|
+
return this.request("GET", `/api/runs/${t}/export/info`);
|
|
692
|
+
}
|
|
693
|
+
getExportDownloadUrl(t) {
|
|
694
|
+
return `${this.baseUrl}/api/runs/${t}/export/download`;
|
|
686
695
|
}
|
|
687
696
|
}
|
|
688
|
-
const
|
|
689
|
-
function
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
697
|
+
const Nr = new br(), Ss = Qe(null);
|
|
698
|
+
function nt({ children: r }) {
|
|
699
|
+
const t = {
|
|
700
|
+
theme: "light",
|
|
701
|
+
resolvedTheme: "light",
|
|
702
|
+
setTheme: () => {
|
|
703
|
+
},
|
|
704
|
+
toggleTheme: () => {
|
|
705
|
+
}
|
|
706
|
+
};
|
|
707
|
+
return /* @__PURE__ */ e.jsx(Ss.Provider, { value: t, children: r });
|
|
708
|
+
}
|
|
709
|
+
function yr() {
|
|
710
|
+
const r = Xe(Ss);
|
|
711
|
+
return r || {
|
|
712
|
+
theme: "light",
|
|
713
|
+
resolvedTheme: "light",
|
|
714
|
+
setTheme: () => {
|
|
715
|
+
},
|
|
716
|
+
toggleTheme: () => {
|
|
717
|
+
}
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
function at() {
|
|
721
|
+
return yr();
|
|
722
|
+
}
|
|
723
|
+
const Ds = Qe(null);
|
|
724
|
+
function _r({
|
|
725
|
+
children: r,
|
|
726
|
+
api: t = Nr,
|
|
727
|
+
initialWorkspace: n = null
|
|
693
728
|
}) {
|
|
694
|
-
const [a,
|
|
695
|
-
return
|
|
696
|
-
|
|
697
|
-
}, [
|
|
698
|
-
}
|
|
699
|
-
function
|
|
700
|
-
const
|
|
701
|
-
if (!
|
|
702
|
-
return
|
|
703
|
-
}
|
|
704
|
-
function
|
|
705
|
-
const [
|
|
729
|
+
const [a, u] = S(null), [o, d] = S(n);
|
|
730
|
+
return je(() => {
|
|
731
|
+
t.getCapabilities().then(u).catch(console.error);
|
|
732
|
+
}, [t]), /* @__PURE__ */ e.jsx(Ds.Provider, { value: { api: t, capabilities: a, currentWorkspace: o, setCurrentWorkspace: d }, children: r });
|
|
733
|
+
}
|
|
734
|
+
function K() {
|
|
735
|
+
const r = Xe(Ds);
|
|
736
|
+
if (!r) throw new Error("useApp must be used within AppProvider");
|
|
737
|
+
return r;
|
|
738
|
+
}
|
|
739
|
+
function ue(r, t = []) {
|
|
740
|
+
const [n, a] = S({
|
|
706
741
|
data: null,
|
|
707
742
|
loading: !0,
|
|
708
743
|
error: null
|
|
709
|
-
}),
|
|
710
|
-
|
|
711
|
-
const
|
|
744
|
+
}), u = Rs(!0), o = Rs(r);
|
|
745
|
+
o.current = r;
|
|
746
|
+
const d = _e(async () => {
|
|
712
747
|
a((i) => ({ ...i, loading: !0, error: null }));
|
|
713
748
|
try {
|
|
714
|
-
const i = await
|
|
715
|
-
|
|
749
|
+
const i = await o.current();
|
|
750
|
+
u.current && a({ data: i, loading: !1, error: null });
|
|
716
751
|
} catch (i) {
|
|
717
|
-
|
|
752
|
+
u.current && a({
|
|
718
753
|
data: null,
|
|
719
754
|
loading: !1,
|
|
720
|
-
error: i instanceof
|
|
755
|
+
error: i instanceof we ? i : new we(500, String(i))
|
|
721
756
|
});
|
|
722
757
|
}
|
|
723
758
|
}, []);
|
|
724
|
-
return
|
|
725
|
-
|
|
726
|
-
}),
|
|
727
|
-
}
|
|
728
|
-
function
|
|
729
|
-
const { api:
|
|
730
|
-
return
|
|
731
|
-
() =>
|
|
732
|
-
[
|
|
759
|
+
return je(() => (u.current = !0, d(), () => {
|
|
760
|
+
u.current = !1;
|
|
761
|
+
}), t), { ...n, refetch: d };
|
|
762
|
+
}
|
|
763
|
+
function As(r) {
|
|
764
|
+
const { api: t, currentWorkspace: n } = K();
|
|
765
|
+
return ue(
|
|
766
|
+
() => t.listRuns({ ...r, workspace: n?.id }),
|
|
767
|
+
[t, n?.id, r?.project, r?.status, r?.q, r?.limit]
|
|
733
768
|
);
|
|
734
769
|
}
|
|
735
|
-
function
|
|
736
|
-
const { api:
|
|
737
|
-
return
|
|
770
|
+
function Fs(r) {
|
|
771
|
+
const { api: t } = K();
|
|
772
|
+
return ue(
|
|
738
773
|
async () => {
|
|
739
|
-
const { run:
|
|
740
|
-
return
|
|
774
|
+
const { run: n } = await t.getRun(r);
|
|
775
|
+
return n;
|
|
741
776
|
},
|
|
742
|
-
[
|
|
777
|
+
[t, r]
|
|
743
778
|
);
|
|
744
779
|
}
|
|
745
|
-
function
|
|
746
|
-
const { api:
|
|
747
|
-
return
|
|
780
|
+
function Le() {
|
|
781
|
+
const { api: r, currentWorkspace: t } = K();
|
|
782
|
+
return ue(
|
|
748
783
|
async () => {
|
|
749
|
-
const { projects:
|
|
750
|
-
return
|
|
784
|
+
const { projects: n } = await r.listProjects({ workspace: t?.id });
|
|
785
|
+
return n;
|
|
751
786
|
},
|
|
752
|
-
[
|
|
787
|
+
[r, t?.id]
|
|
753
788
|
);
|
|
754
789
|
}
|
|
755
|
-
function
|
|
756
|
-
const { api:
|
|
757
|
-
return
|
|
790
|
+
function wr(r) {
|
|
791
|
+
const { api: t, currentWorkspace: n } = K();
|
|
792
|
+
return ue(
|
|
758
793
|
async () => {
|
|
759
|
-
const { groups: a } = await
|
|
794
|
+
const { groups: a } = await t.listGroups({ ...r, workspace: n?.id });
|
|
760
795
|
return a;
|
|
761
796
|
},
|
|
762
|
-
[
|
|
797
|
+
[t, n?.id, r?.project]
|
|
763
798
|
);
|
|
764
799
|
}
|
|
765
|
-
function
|
|
766
|
-
const { api:
|
|
767
|
-
return
|
|
768
|
-
() =>
|
|
769
|
-
[
|
|
800
|
+
function Rr(r) {
|
|
801
|
+
const { api: t } = K();
|
|
802
|
+
return ue(
|
|
803
|
+
() => t.getGroup(r),
|
|
804
|
+
[t, r]
|
|
770
805
|
);
|
|
771
806
|
}
|
|
772
|
-
function
|
|
773
|
-
const { api:
|
|
774
|
-
return
|
|
775
|
-
() =>
|
|
776
|
-
[
|
|
807
|
+
function Er(r, t) {
|
|
808
|
+
const { api: n } = K();
|
|
809
|
+
return ue(
|
|
810
|
+
() => n.getDiff(r, t),
|
|
811
|
+
[n, r, t]
|
|
777
812
|
);
|
|
778
813
|
}
|
|
779
|
-
function
|
|
780
|
-
const { api:
|
|
781
|
-
return
|
|
782
|
-
() =>
|
|
783
|
-
[
|
|
814
|
+
function Cr(r, t) {
|
|
815
|
+
const { api: n } = K();
|
|
816
|
+
return ue(
|
|
817
|
+
() => n.getArtifact(r, t),
|
|
818
|
+
[n, r, t]
|
|
784
819
|
);
|
|
785
820
|
}
|
|
786
|
-
function
|
|
787
|
-
const [
|
|
788
|
-
return { mutate:
|
|
789
|
-
|
|
821
|
+
function Re(r) {
|
|
822
|
+
const [t, n] = S(!1), [a, u] = S(null);
|
|
823
|
+
return { mutate: _e(async (...d) => {
|
|
824
|
+
n(!0), u(null);
|
|
790
825
|
try {
|
|
791
|
-
return await
|
|
826
|
+
return await r(...d);
|
|
792
827
|
} catch (i) {
|
|
793
|
-
const
|
|
794
|
-
throw
|
|
828
|
+
const f = i instanceof we ? i : new we(500, String(i));
|
|
829
|
+
throw u(f), f;
|
|
795
830
|
} finally {
|
|
796
|
-
|
|
831
|
+
n(!1);
|
|
797
832
|
}
|
|
798
|
-
}, [
|
|
833
|
+
}, [r]), loading: t, error: a };
|
|
799
834
|
}
|
|
800
|
-
function
|
|
801
|
-
return
|
|
835
|
+
function Q(r) {
|
|
836
|
+
return r?.slice(0, 8) ?? "";
|
|
802
837
|
}
|
|
803
|
-
function
|
|
804
|
-
return
|
|
838
|
+
function He(r) {
|
|
839
|
+
return r?.slice(0, 12) ?? "N/A";
|
|
805
840
|
}
|
|
806
|
-
function
|
|
807
|
-
const
|
|
841
|
+
function ss(r) {
|
|
842
|
+
const t = new Date(r), a = Math.floor(((/* @__PURE__ */ new Date()).getTime() - t.getTime()) / 1e3);
|
|
808
843
|
if (a < 60) return "just now";
|
|
809
844
|
if (a < 3600) {
|
|
810
|
-
const
|
|
811
|
-
return `${
|
|
845
|
+
const o = Math.floor(a / 60);
|
|
846
|
+
return `${o} minute${o !== 1 ? "s" : ""} ago`;
|
|
812
847
|
}
|
|
813
848
|
if (a < 86400) {
|
|
814
|
-
const
|
|
815
|
-
return `${
|
|
849
|
+
const o = Math.floor(a / 3600);
|
|
850
|
+
return `${o} hour${o !== 1 ? "s" : ""} ago`;
|
|
816
851
|
}
|
|
817
852
|
if (a < 2592e3) {
|
|
818
|
-
const
|
|
819
|
-
return `${
|
|
853
|
+
const o = Math.floor(a / 86400);
|
|
854
|
+
return `${o} day${o !== 1 ? "s" : ""} ago`;
|
|
820
855
|
}
|
|
821
856
|
if (a < 31536e3) {
|
|
822
|
-
const
|
|
823
|
-
return `${
|
|
857
|
+
const o = Math.floor(a / 2592e3);
|
|
858
|
+
return `${o} month${o !== 1 ? "s" : ""} ago`;
|
|
824
859
|
}
|
|
825
|
-
const
|
|
826
|
-
return `${
|
|
860
|
+
const u = Math.floor(a / 31536e3);
|
|
861
|
+
return `${u} year${u !== 1 ? "s" : ""} ago`;
|
|
827
862
|
}
|
|
828
|
-
function
|
|
829
|
-
return typeof
|
|
863
|
+
function kr(r, t = 6) {
|
|
864
|
+
return typeof r != "number" || isNaN(r) ? String(r) : Number(r.toPrecision(t)).toString();
|
|
830
865
|
}
|
|
831
|
-
function
|
|
832
|
-
return
|
|
866
|
+
function Oe(r) {
|
|
867
|
+
return r < 1024 ? `${r} bytes` : r < 1048576 ? `${(r / 1024).toFixed(1)} KB` : `${(r / 1048576).toFixed(1)} MB`;
|
|
833
868
|
}
|
|
834
|
-
function
|
|
835
|
-
return JSON.stringify(
|
|
869
|
+
function Tr(r) {
|
|
870
|
+
return JSON.stringify(r, null, 2);
|
|
836
871
|
}
|
|
837
|
-
function
|
|
838
|
-
return
|
|
872
|
+
function Pr(r, t = 60) {
|
|
873
|
+
return r ? r.length <= t ? r : r.slice(0, t - 3) + "..." : "";
|
|
839
874
|
}
|
|
840
|
-
function
|
|
841
|
-
const
|
|
842
|
-
Object.entries(
|
|
843
|
-
|
|
875
|
+
function it(r, t) {
|
|
876
|
+
const n = new URLSearchParams();
|
|
877
|
+
Object.entries(t).forEach(([u, o]) => {
|
|
878
|
+
o != null && o !== "" && n.set(u, String(o));
|
|
844
879
|
});
|
|
845
|
-
const a =
|
|
846
|
-
return a ? `${
|
|
880
|
+
const a = n.toString();
|
|
881
|
+
return a ? `${r}?${a}` : r;
|
|
847
882
|
}
|
|
848
|
-
function
|
|
849
|
-
return
|
|
883
|
+
function $(...r) {
|
|
884
|
+
return r.filter(Boolean).join(" ");
|
|
850
885
|
}
|
|
851
|
-
const
|
|
886
|
+
const Sr = [
|
|
852
887
|
{ href: "/runs", label: "Runs", matchPaths: ["/runs"] },
|
|
853
888
|
{ href: "/projects", label: "Projects", matchPaths: ["/projects"] },
|
|
854
889
|
{ href: "/groups", label: "Groups", matchPaths: ["/groups"] },
|
|
855
890
|
{ href: "/diff", label: "Compare", matchPaths: ["/diff"] },
|
|
856
891
|
{ href: "/search", label: "Search", matchPaths: ["/search"] }
|
|
857
|
-
],
|
|
858
|
-
function
|
|
859
|
-
config:
|
|
860
|
-
children:
|
|
892
|
+
], Os = Qe(null);
|
|
893
|
+
function ct({
|
|
894
|
+
config: r,
|
|
895
|
+
children: t
|
|
861
896
|
}) {
|
|
862
|
-
return /* @__PURE__ */ e.jsx(
|
|
863
|
-
}
|
|
864
|
-
function
|
|
865
|
-
return
|
|
866
|
-
}
|
|
867
|
-
function
|
|
868
|
-
const
|
|
869
|
-
...
|
|
870
|
-
...
|
|
871
|
-
...
|
|
872
|
-
], i =
|
|
873
|
-
return /* @__PURE__ */ e.jsxs("div", { className: "
|
|
874
|
-
/* @__PURE__ */ e.jsx("header", { className: "
|
|
875
|
-
/* @__PURE__ */ e.jsxs("div", { className: "
|
|
876
|
-
/* @__PURE__ */ e.jsxs(
|
|
877
|
-
i.icon && /* @__PURE__ */ e.jsx("span", { children: i.icon }),
|
|
897
|
+
return /* @__PURE__ */ e.jsx(Os.Provider, { value: r, children: t });
|
|
898
|
+
}
|
|
899
|
+
function Dr() {
|
|
900
|
+
return Xe(Os);
|
|
901
|
+
}
|
|
902
|
+
function V({ children: r, config: t }) {
|
|
903
|
+
const n = hr(), u = { ...Dr(), ...t }, o = u?.navLinks ?? Sr, d = [
|
|
904
|
+
...u?.prependNavLinks ?? [],
|
|
905
|
+
...o,
|
|
906
|
+
...u?.appendNavLinks ?? []
|
|
907
|
+
], i = u?.logo ?? { text: "devqubit", icon: "⚛" }, f = (h) => h.matchPaths ? h.matchPaths.some((m) => n.pathname.startsWith(m)) : n.pathname === h.href;
|
|
908
|
+
return /* @__PURE__ */ e.jsxs("div", { className: "dq-layout", children: [
|
|
909
|
+
/* @__PURE__ */ e.jsx("header", { className: "dq-header", children: /* @__PURE__ */ e.jsxs("div", { className: "dq-header-inner", children: [
|
|
910
|
+
/* @__PURE__ */ e.jsxs("div", { className: "dq-header-left", children: [
|
|
911
|
+
/* @__PURE__ */ e.jsxs(z, { to: "/", className: "dq-logo", children: [
|
|
912
|
+
i.icon && /* @__PURE__ */ e.jsx("span", { className: "dq-logo-icon", children: i.icon }),
|
|
878
913
|
i.text
|
|
879
914
|
] }),
|
|
880
|
-
/* @__PURE__ */ e.jsx("nav", { className: "
|
|
881
|
-
|
|
915
|
+
/* @__PURE__ */ e.jsx("nav", { className: "dq-nav", children: d.map((h) => /* @__PURE__ */ e.jsx(
|
|
916
|
+
z,
|
|
882
917
|
{
|
|
883
|
-
to:
|
|
884
|
-
className:
|
|
885
|
-
|
|
886
|
-
x(o) ? "text-white bg-primary/20" : "text-gray-400 hover:text-white hover:bg-white/10"
|
|
887
|
-
),
|
|
888
|
-
children: o.label
|
|
918
|
+
to: h.href,
|
|
919
|
+
className: $("dq-nav-link", f(h) && "active"),
|
|
920
|
+
children: h.label
|
|
889
921
|
},
|
|
890
|
-
|
|
922
|
+
h.href
|
|
891
923
|
)) })
|
|
892
924
|
] }),
|
|
893
|
-
/* @__PURE__ */ e.jsx("div", { className: "
|
|
925
|
+
/* @__PURE__ */ e.jsx("div", { className: "dq-header-right", children: u?.headerRight })
|
|
894
926
|
] }) }),
|
|
895
|
-
/* @__PURE__ */ e.jsx("main", { className: "
|
|
927
|
+
/* @__PURE__ */ e.jsx("main", { className: "dq-main fade-in", children: r })
|
|
896
928
|
] });
|
|
897
929
|
}
|
|
898
|
-
function
|
|
899
|
-
return /* @__PURE__ */ e.jsxs("div", { className: "
|
|
930
|
+
function Ee({ title: r, subtitle: t, actions: n }) {
|
|
931
|
+
return /* @__PURE__ */ e.jsxs("div", { className: "page-header", children: [
|
|
900
932
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
901
|
-
/* @__PURE__ */ e.jsx("h1", { className: "
|
|
902
|
-
|
|
933
|
+
/* @__PURE__ */ e.jsx("h1", { className: "page-title", children: r }),
|
|
934
|
+
t && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-1", children: t })
|
|
903
935
|
] }),
|
|
904
|
-
|
|
936
|
+
n && /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: n })
|
|
905
937
|
] });
|
|
906
938
|
}
|
|
907
|
-
function
|
|
908
|
-
return /* @__PURE__ */ e.jsx("span", { className:
|
|
939
|
+
function Y({ variant: r = "gray", className: t, children: n, ...a }) {
|
|
940
|
+
return /* @__PURE__ */ e.jsx("span", { className: $("badge", `badge-${r}`, t), ...a, children: n });
|
|
909
941
|
}
|
|
910
|
-
const
|
|
911
|
-
({ variant:
|
|
942
|
+
const D = Ze(
|
|
943
|
+
({ variant: r = "secondary", size: t = "default", loading: n, className: a, children: u, disabled: o, ...d }, i) => /* @__PURE__ */ e.jsxs(
|
|
912
944
|
"button",
|
|
913
945
|
{
|
|
914
946
|
ref: i,
|
|
915
|
-
className:
|
|
947
|
+
className: $(
|
|
916
948
|
"btn",
|
|
917
|
-
|
|
918
|
-
|
|
949
|
+
r === "ghost-danger" ? "btn-ghost-danger" : `btn-${r}`,
|
|
950
|
+
t === "sm" && "btn-sm",
|
|
919
951
|
a
|
|
920
952
|
),
|
|
921
|
-
disabled:
|
|
922
|
-
...
|
|
953
|
+
disabled: o || n,
|
|
954
|
+
...d,
|
|
923
955
|
children: [
|
|
924
|
-
|
|
925
|
-
|
|
956
|
+
n && /* @__PURE__ */ e.jsx(q, {}),
|
|
957
|
+
u
|
|
926
958
|
]
|
|
927
959
|
}
|
|
928
960
|
)
|
|
929
961
|
);
|
|
930
|
-
|
|
931
|
-
function
|
|
932
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
962
|
+
D.displayName = "Button";
|
|
963
|
+
function b({ className: r, children: t, ...n }) {
|
|
964
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("card", r), ...n, children: t });
|
|
933
965
|
}
|
|
934
|
-
function
|
|
935
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
966
|
+
function W({ className: r, children: t, ...n }) {
|
|
967
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("card-header", r), ...n, children: t });
|
|
936
968
|
}
|
|
937
|
-
function
|
|
938
|
-
return /* @__PURE__ */ e.jsx("h3", { className:
|
|
969
|
+
function G({ className: r, children: t, ...n }) {
|
|
970
|
+
return /* @__PURE__ */ e.jsx("h3", { className: $("card-title", r), ...n, children: t });
|
|
939
971
|
}
|
|
940
|
-
function
|
|
941
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
972
|
+
function lt({ variant: r = "info", className: t, children: n, ...a }) {
|
|
973
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("alert", `alert-${r}`, t), ...a, children: n });
|
|
942
974
|
}
|
|
943
|
-
function
|
|
944
|
-
return /* @__PURE__ */ e.jsx("span", { className:
|
|
975
|
+
function q({ className: r, ...t }) {
|
|
976
|
+
return /* @__PURE__ */ e.jsx("span", { className: $("spinner", r), ...t });
|
|
945
977
|
}
|
|
946
|
-
function
|
|
947
|
-
return /* @__PURE__ */ e.jsxs("div", { className:
|
|
948
|
-
/* @__PURE__ */ e.jsx("p", { children:
|
|
949
|
-
|
|
978
|
+
function he({ message: r, hint: t, className: n, ...a }) {
|
|
979
|
+
return /* @__PURE__ */ e.jsxs("div", { className: $("empty-state", n), ...a, children: [
|
|
980
|
+
/* @__PURE__ */ e.jsx("p", { children: r }),
|
|
981
|
+
t && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-2", children: t })
|
|
950
982
|
] });
|
|
951
983
|
}
|
|
952
|
-
function
|
|
953
|
-
return /* @__PURE__ */ e.jsx("dl", { className:
|
|
984
|
+
function Je({ items: r, className: t, ...n }) {
|
|
985
|
+
return /* @__PURE__ */ e.jsx("dl", { className: $("kv-list", t), ...n, children: r.map(({ label: a, value: u }) => /* @__PURE__ */ e.jsxs("div", { className: "contents", children: [
|
|
954
986
|
/* @__PURE__ */ e.jsx("dt", { children: a }),
|
|
955
|
-
/* @__PURE__ */ e.jsx("dd", { children:
|
|
987
|
+
/* @__PURE__ */ e.jsx("dd", { children: u })
|
|
956
988
|
] }, a)) });
|
|
957
989
|
}
|
|
958
|
-
function
|
|
959
|
-
return
|
|
990
|
+
function rs({ open: r, onClose: t, title: n, children: a, actions: u }) {
|
|
991
|
+
return r ? /* @__PURE__ */ e.jsx(
|
|
960
992
|
"div",
|
|
961
993
|
{
|
|
962
|
-
className:
|
|
963
|
-
onClick: (
|
|
964
|
-
children: /* @__PURE__ */ e.jsxs("div", { className: "modal", onClick: (
|
|
965
|
-
/* @__PURE__ */ e.jsx("h3", { className: "modal-title", children:
|
|
994
|
+
className: $("modal-backdrop", r && "active"),
|
|
995
|
+
onClick: (o) => o.target === o.currentTarget && t(),
|
|
996
|
+
children: /* @__PURE__ */ e.jsxs("div", { className: "modal", onClick: (o) => o.stopPropagation(), children: [
|
|
997
|
+
/* @__PURE__ */ e.jsx("h3", { className: "modal-title", children: n }),
|
|
966
998
|
/* @__PURE__ */ e.jsx("div", { className: "modal-body", children: a }),
|
|
967
|
-
|
|
999
|
+
u && /* @__PURE__ */ e.jsx("div", { className: "modal-actions", children: u })
|
|
968
1000
|
] })
|
|
969
1001
|
}
|
|
970
1002
|
) : null;
|
|
971
1003
|
}
|
|
972
|
-
function
|
|
973
|
-
if (!
|
|
974
|
-
const
|
|
975
|
-
success: "
|
|
976
|
-
error: "
|
|
977
|
-
info: "
|
|
978
|
-
}[
|
|
979
|
-
|
|
1004
|
+
function Ce({ message: r, variant: t = "info", visible: n, onClose: a }) {
|
|
1005
|
+
if (!n) return null;
|
|
1006
|
+
const u = {
|
|
1007
|
+
success: "✓",
|
|
1008
|
+
error: "✕",
|
|
1009
|
+
info: "i"
|
|
1010
|
+
}[t], o = {
|
|
1011
|
+
success: "text-[#059669]",
|
|
1012
|
+
error: "text-[#DC4A4A]",
|
|
1013
|
+
info: "text-[#2563EB]"
|
|
1014
|
+
}[t];
|
|
1015
|
+
return /* @__PURE__ */ e.jsxs("div", { className: "toast", onClick: a, children: [
|
|
1016
|
+
/* @__PURE__ */ e.jsx("span", { className: $("mr-2 font-bold", o), children: u }),
|
|
1017
|
+
r
|
|
1018
|
+
] });
|
|
980
1019
|
}
|
|
981
|
-
function
|
|
982
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
1020
|
+
function ee({ children: r, className: t }) {
|
|
1021
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("form-group", t), children: r });
|
|
983
1022
|
}
|
|
984
|
-
function
|
|
985
|
-
return /* @__PURE__ */ e.jsx("label", { className:
|
|
1023
|
+
function ie({ className: r, children: t, ...n }) {
|
|
1024
|
+
return /* @__PURE__ */ e.jsx("label", { className: $("form-label", r), ...n, children: t });
|
|
986
1025
|
}
|
|
987
|
-
const
|
|
988
|
-
({ className:
|
|
1026
|
+
const ts = Ze(
|
|
1027
|
+
({ className: r, ...t }, n) => /* @__PURE__ */ e.jsx("input", { ref: n, className: $("form-input", r), ...t })
|
|
989
1028
|
);
|
|
990
|
-
|
|
991
|
-
const
|
|
992
|
-
({ className:
|
|
1029
|
+
ts.displayName = "Input";
|
|
1030
|
+
const de = Ze(
|
|
1031
|
+
({ className: r, children: t, ...n }, a) => /* @__PURE__ */ e.jsx("select", { ref: a, className: $("form-input", r), ...n, children: t })
|
|
993
1032
|
);
|
|
994
|
-
|
|
995
|
-
function
|
|
996
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
1033
|
+
de.displayName = "Select";
|
|
1034
|
+
function $s({ children: r, className: t }) {
|
|
1035
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("form-row", t), children: r });
|
|
997
1036
|
}
|
|
998
|
-
function
|
|
999
|
-
return /* @__PURE__ */ e.jsx("table", { className:
|
|
1037
|
+
function L({ className: r, children: t, ...n }) {
|
|
1038
|
+
return /* @__PURE__ */ e.jsx("table", { className: $("table", r), ...n, children: t });
|
|
1000
1039
|
}
|
|
1001
|
-
function
|
|
1002
|
-
return /* @__PURE__ */ e.jsx("thead", { className:
|
|
1040
|
+
function re({ className: r, children: t, ...n }) {
|
|
1041
|
+
return /* @__PURE__ */ e.jsx("thead", { className: r, ...n, children: t });
|
|
1003
1042
|
}
|
|
1004
|
-
function
|
|
1005
|
-
return /* @__PURE__ */ e.jsx("tbody", { className:
|
|
1043
|
+
function B({ className: r, children: t, ...n }) {
|
|
1044
|
+
return /* @__PURE__ */ e.jsx("tbody", { className: r, ...n, children: t });
|
|
1006
1045
|
}
|
|
1007
|
-
function
|
|
1008
|
-
return /* @__PURE__ */ e.jsx("tr", { className:
|
|
1046
|
+
function j({ className: r, children: t, ...n }) {
|
|
1047
|
+
return /* @__PURE__ */ e.jsx("tr", { className: r, ...n, children: t });
|
|
1009
1048
|
}
|
|
1010
|
-
function
|
|
1011
|
-
return /* @__PURE__ */ e.jsx("th", { className:
|
|
1049
|
+
function y({ className: r, children: t, ...n }) {
|
|
1050
|
+
return /* @__PURE__ */ e.jsx("th", { className: r, ...n, children: t });
|
|
1012
1051
|
}
|
|
1013
|
-
function c({ className:
|
|
1014
|
-
return /* @__PURE__ */ e.jsx("td", { className:
|
|
1052
|
+
function c({ className: r, children: t, ...n }) {
|
|
1053
|
+
return /* @__PURE__ */ e.jsx("td", { className: r, ...n, children: t });
|
|
1015
1054
|
}
|
|
1016
|
-
function
|
|
1017
|
-
const
|
|
1055
|
+
function Ls({ status: r }) {
|
|
1056
|
+
const t = {
|
|
1018
1057
|
FINISHED: "success",
|
|
1019
1058
|
FAILED: "danger",
|
|
1020
1059
|
RUNNING: "warning",
|
|
1021
1060
|
UNKNOWN: "gray"
|
|
1022
|
-
}[
|
|
1023
|
-
return /* @__PURE__ */ e.jsx(
|
|
1024
|
-
}
|
|
1025
|
-
function
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
/* @__PURE__ */ e.jsx(
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
/* @__PURE__ */ e.jsx(
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1061
|
+
}[r];
|
|
1062
|
+
return /* @__PURE__ */ e.jsx(Y, { variant: t, children: r });
|
|
1063
|
+
}
|
|
1064
|
+
function ns({ runs: r, onDelete: t, loading: n, emptyHint: a, baselineRunId: u }) {
|
|
1065
|
+
const [o, d] = S(null), i = () => {
|
|
1066
|
+
o && t && (t(o.run_id), d(null));
|
|
1067
|
+
};
|
|
1068
|
+
return r.length ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1069
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
1070
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1071
|
+
/* @__PURE__ */ e.jsx(y, { children: "Run ID" }),
|
|
1072
|
+
/* @__PURE__ */ e.jsx(y, { children: "Name" }),
|
|
1073
|
+
/* @__PURE__ */ e.jsx(y, { children: "Project" }),
|
|
1074
|
+
/* @__PURE__ */ e.jsx(y, { children: "Status" }),
|
|
1075
|
+
/* @__PURE__ */ e.jsx(y, { children: "Created" }),
|
|
1076
|
+
/* @__PURE__ */ e.jsx(y, { children: "Actions" })
|
|
1077
|
+
] }) }),
|
|
1078
|
+
/* @__PURE__ */ e.jsx(B, { children: r.map((f) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1079
|
+
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
1080
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${f.run_id}`, className: "font-mono", children: Q(f.run_id) }),
|
|
1081
|
+
f.run_id === u && /* @__PURE__ */ e.jsx(Y, { variant: "info", className: "ml-2", children: "Baseline" })
|
|
1082
|
+
] }),
|
|
1083
|
+
/* @__PURE__ */ e.jsx(c, { children: f.run_name || "—" }),
|
|
1084
|
+
/* @__PURE__ */ e.jsx(c, { children: f.project }),
|
|
1085
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ls, { status: f.status }) }),
|
|
1086
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-muted", children: ss(f.created_at) }),
|
|
1087
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
|
|
1088
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${f.run_id}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View" }) }),
|
|
1089
|
+
t && /* @__PURE__ */ e.jsx(
|
|
1090
|
+
D,
|
|
1091
|
+
{
|
|
1092
|
+
variant: "ghost-danger",
|
|
1093
|
+
size: "sm",
|
|
1094
|
+
onClick: () => d(f),
|
|
1095
|
+
disabled: n,
|
|
1096
|
+
children: "Delete"
|
|
1097
|
+
}
|
|
1098
|
+
)
|
|
1099
|
+
] }) })
|
|
1100
|
+
] }, f.run_id)) })
|
|
1101
|
+
] }),
|
|
1102
|
+
/* @__PURE__ */ e.jsxs(
|
|
1103
|
+
rs,
|
|
1104
|
+
{
|
|
1105
|
+
open: !!o,
|
|
1106
|
+
onClose: () => d(null),
|
|
1107
|
+
title: "Delete Run",
|
|
1108
|
+
actions: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1109
|
+
/* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: () => d(null), children: "Cancel" }),
|
|
1110
|
+
/* @__PURE__ */ e.jsxs(D, { variant: "danger", onClick: i, disabled: n, children: [
|
|
1111
|
+
n && /* @__PURE__ */ e.jsx(q, {}),
|
|
1112
|
+
"Delete"
|
|
1113
|
+
] })
|
|
1114
|
+
] }),
|
|
1115
|
+
children: [
|
|
1116
|
+
/* @__PURE__ */ e.jsx("p", { children: "Are you sure you want to delete this run?" }),
|
|
1117
|
+
o && /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children: Q(o.run_id) }),
|
|
1118
|
+
/* @__PURE__ */ e.jsx("p", { className: "text-sm text-danger mt-2", children: "This action cannot be undone." })
|
|
1119
|
+
]
|
|
1120
|
+
}
|
|
1121
|
+
)
|
|
1057
1122
|
] }) : /* @__PURE__ */ e.jsx(
|
|
1058
|
-
|
|
1123
|
+
he,
|
|
1059
1124
|
{
|
|
1060
1125
|
message: "No runs found",
|
|
1061
1126
|
hint: a ?? "Try adjusting your filters"
|
|
1062
1127
|
}
|
|
1063
1128
|
);
|
|
1064
1129
|
}
|
|
1065
|
-
function
|
|
1066
|
-
const [
|
|
1067
|
-
project:
|
|
1068
|
-
status:
|
|
1069
|
-
q:
|
|
1070
|
-
limit: parseInt(
|
|
1071
|
-
}), { data: f, loading:
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
}, [
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1130
|
+
function Ar() {
|
|
1131
|
+
const [r, t] = $e(), { api: n } = K(), { data: a } = Le(), [u, o] = S(null), [d, i] = S({
|
|
1132
|
+
project: r.get("project") || "",
|
|
1133
|
+
status: r.get("status") || "",
|
|
1134
|
+
q: r.get("q") || "",
|
|
1135
|
+
limit: parseInt(r.get("limit") || "25", 10)
|
|
1136
|
+
}), { data: f, loading: h, refetch: m } = As(d), p = Re((w) => n.deleteRun(w));
|
|
1137
|
+
je(() => {
|
|
1138
|
+
if (u) {
|
|
1139
|
+
const w = setTimeout(() => o(null), 3e3);
|
|
1140
|
+
return () => clearTimeout(w);
|
|
1141
|
+
}
|
|
1142
|
+
}, [u]);
|
|
1143
|
+
const _ = _e((w, H) => {
|
|
1144
|
+
i((O) => ({ ...O, [w]: H }));
|
|
1145
|
+
const k = new URLSearchParams(r);
|
|
1146
|
+
H ? k.set(w, String(H)) : k.delete(w), t(k, { replace: !0 });
|
|
1147
|
+
}, [r, t]), U = _e(async (w) => {
|
|
1148
|
+
try {
|
|
1149
|
+
await p.mutate(w), o({ message: "Run deleted", variant: "success" }), m();
|
|
1150
|
+
} catch {
|
|
1151
|
+
o({ message: "Failed to delete run", variant: "error" });
|
|
1152
|
+
}
|
|
1153
|
+
}, [p, m]);
|
|
1154
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1155
|
+
/* @__PURE__ */ e.jsx(Ee, { title: "Runs" }),
|
|
1156
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs($s, { children: [
|
|
1157
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1158
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "project", children: "Project" }),
|
|
1083
1159
|
/* @__PURE__ */ e.jsxs(
|
|
1084
|
-
|
|
1160
|
+
de,
|
|
1085
1161
|
{
|
|
1086
1162
|
id: "project",
|
|
1087
1163
|
value: d.project,
|
|
1088
|
-
onChange: (
|
|
1164
|
+
onChange: (w) => _("project", w.target.value),
|
|
1089
1165
|
children: [
|
|
1090
1166
|
/* @__PURE__ */ e.jsx("option", { value: "", children: "All projects" }),
|
|
1091
|
-
a?.map((
|
|
1167
|
+
a?.map((w) => /* @__PURE__ */ e.jsx("option", { value: w.name, children: w.name }, w.name))
|
|
1092
1168
|
]
|
|
1093
1169
|
}
|
|
1094
1170
|
)
|
|
1095
1171
|
] }),
|
|
1096
|
-
/* @__PURE__ */ e.jsxs(
|
|
1097
|
-
/* @__PURE__ */ e.jsx(
|
|
1172
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1173
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "status", children: "Status" }),
|
|
1098
1174
|
/* @__PURE__ */ e.jsxs(
|
|
1099
|
-
|
|
1175
|
+
de,
|
|
1100
1176
|
{
|
|
1101
1177
|
id: "status",
|
|
1102
1178
|
value: d.status,
|
|
1103
|
-
onChange: (
|
|
1179
|
+
onChange: (w) => _("status", w.target.value),
|
|
1104
1180
|
children: [
|
|
1105
1181
|
/* @__PURE__ */ e.jsx("option", { value: "", children: "All" }),
|
|
1106
1182
|
/* @__PURE__ */ e.jsx("option", { value: "FINISHED", children: "Finished" }),
|
|
@@ -1110,26 +1186,26 @@ function Ps() {
|
|
|
1110
1186
|
}
|
|
1111
1187
|
)
|
|
1112
1188
|
] }),
|
|
1113
|
-
/* @__PURE__ */ e.jsxs(
|
|
1114
|
-
/* @__PURE__ */ e.jsx(
|
|
1189
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1190
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "q", children: "Query" }),
|
|
1115
1191
|
/* @__PURE__ */ e.jsx(
|
|
1116
|
-
|
|
1192
|
+
ts,
|
|
1117
1193
|
{
|
|
1118
1194
|
id: "q",
|
|
1119
1195
|
value: d.q,
|
|
1120
|
-
onChange: (
|
|
1196
|
+
onChange: (w) => _("q", w.target.value),
|
|
1121
1197
|
placeholder: "metric.fidelity > 0.9"
|
|
1122
1198
|
}
|
|
1123
1199
|
)
|
|
1124
1200
|
] }),
|
|
1125
|
-
/* @__PURE__ */ e.jsxs(
|
|
1126
|
-
/* @__PURE__ */ e.jsx(
|
|
1201
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1202
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "limit", children: "Limit" }),
|
|
1127
1203
|
/* @__PURE__ */ e.jsxs(
|
|
1128
|
-
|
|
1204
|
+
de,
|
|
1129
1205
|
{
|
|
1130
1206
|
id: "limit",
|
|
1131
1207
|
value: d.limit,
|
|
1132
|
-
onChange: (
|
|
1208
|
+
onChange: (w) => _("limit", parseInt(w.target.value, 10)),
|
|
1133
1209
|
children: [
|
|
1134
1210
|
/* @__PURE__ */ e.jsx("option", { value: "25", children: "25" }),
|
|
1135
1211
|
/* @__PURE__ */ e.jsx("option", { value: "50", children: "50" }),
|
|
@@ -1138,567 +1214,892 @@ function Ps() {
|
|
|
1138
1214
|
}
|
|
1139
1215
|
)
|
|
1140
1216
|
] }),
|
|
1141
|
-
/* @__PURE__ */ e.jsxs(
|
|
1142
|
-
/* @__PURE__ */ e.jsx(
|
|
1143
|
-
|
|
1217
|
+
/* @__PURE__ */ e.jsxs(ee, { className: "flex items-end gap-2", children: [
|
|
1218
|
+
/* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: () => m(), children: "Filter" }),
|
|
1219
|
+
h && /* @__PURE__ */ e.jsx(q, {})
|
|
1144
1220
|
] })
|
|
1145
1221
|
] }) }),
|
|
1146
|
-
/* @__PURE__ */ e.jsx(
|
|
1147
|
-
|
|
1222
|
+
/* @__PURE__ */ e.jsx(b, { children: h && !f ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(q, {}) }) : /* @__PURE__ */ e.jsx(
|
|
1223
|
+
ns,
|
|
1148
1224
|
{
|
|
1149
1225
|
runs: f?.runs ?? [],
|
|
1150
|
-
onDelete:
|
|
1151
|
-
loading:
|
|
1226
|
+
onDelete: U,
|
|
1227
|
+
loading: p.loading,
|
|
1228
|
+
baselineRunId: d.project ? a?.find((w) => w.name === d.project)?.baseline?.run_id : void 0
|
|
1229
|
+
}
|
|
1230
|
+
) }),
|
|
1231
|
+
u && /* @__PURE__ */ e.jsx(
|
|
1232
|
+
Ce,
|
|
1233
|
+
{
|
|
1234
|
+
message: u.message,
|
|
1235
|
+
variant: u.variant,
|
|
1236
|
+
visible: !!u,
|
|
1237
|
+
onClose: () => o(null)
|
|
1152
1238
|
}
|
|
1153
|
-
)
|
|
1239
|
+
)
|
|
1154
1240
|
] });
|
|
1155
1241
|
}
|
|
1156
|
-
function
|
|
1157
|
-
if (!
|
|
1242
|
+
function Fr({ projects: r, currentWorkspace: t }) {
|
|
1243
|
+
if (!r.length)
|
|
1158
1244
|
return /* @__PURE__ */ e.jsx(
|
|
1159
|
-
|
|
1245
|
+
he,
|
|
1160
1246
|
{
|
|
1161
1247
|
message: "No projects yet",
|
|
1162
1248
|
hint: "Projects are created automatically when you log runs"
|
|
1163
1249
|
}
|
|
1164
1250
|
);
|
|
1165
|
-
const
|
|
1166
|
-
const
|
|
1167
|
-
return
|
|
1251
|
+
const n = (a) => {
|
|
1252
|
+
const u = new URLSearchParams({ project: a });
|
|
1253
|
+
return t && u.set("workspace", t.id), `/runs?${u}`;
|
|
1168
1254
|
};
|
|
1169
|
-
return /* @__PURE__ */ e.jsxs(
|
|
1170
|
-
/* @__PURE__ */ e.jsx(
|
|
1171
|
-
/* @__PURE__ */ e.jsx(
|
|
1172
|
-
/* @__PURE__ */ e.jsx(
|
|
1173
|
-
/* @__PURE__ */ e.jsx(
|
|
1174
|
-
/* @__PURE__ */ e.jsx(
|
|
1255
|
+
return /* @__PURE__ */ e.jsxs(L, { children: [
|
|
1256
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1257
|
+
/* @__PURE__ */ e.jsx(y, { children: "Project" }),
|
|
1258
|
+
/* @__PURE__ */ e.jsx(y, { children: "Runs" }),
|
|
1259
|
+
/* @__PURE__ */ e.jsx(y, { children: "Baseline" }),
|
|
1260
|
+
/* @__PURE__ */ e.jsx(y, {})
|
|
1175
1261
|
] }) }),
|
|
1176
|
-
/* @__PURE__ */ e.jsx(
|
|
1262
|
+
/* @__PURE__ */ e.jsx(B, { children: r.map((a) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1177
1263
|
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
1178
1264
|
/* @__PURE__ */ e.jsx("span", { className: "font-medium", children: a.name }),
|
|
1179
|
-
a.description && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children:
|
|
1265
|
+
a.description && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: Pr(a.description) })
|
|
1180
1266
|
] }),
|
|
1181
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1267
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: a.run_count ?? 0 }) }),
|
|
1182
1268
|
/* @__PURE__ */ e.jsx(c, { children: a.baseline ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1183
|
-
/* @__PURE__ */ e.jsx(
|
|
1269
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${a.baseline.run_id}`, className: "font-mono text-sm", children: Q(a.baseline.run_id) }),
|
|
1184
1270
|
a.baseline.run_name && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: a.baseline.run_name })
|
|
1185
1271
|
] }) : /* @__PURE__ */ e.jsx("span", { className: "text-muted", children: "—" }) }),
|
|
1186
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-right", children: /* @__PURE__ */ e.jsx(
|
|
1272
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-right", children: /* @__PURE__ */ e.jsx(z, { to: n(a.name), children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View Runs" }) }) })
|
|
1187
1273
|
] }, a.name)) })
|
|
1188
1274
|
] });
|
|
1189
1275
|
}
|
|
1190
|
-
function
|
|
1191
|
-
return
|
|
1192
|
-
/* @__PURE__ */ e.jsx(
|
|
1193
|
-
/* @__PURE__ */ e.jsx(
|
|
1194
|
-
/* @__PURE__ */ e.jsx(
|
|
1195
|
-
/* @__PURE__ */ e.jsx(
|
|
1196
|
-
/* @__PURE__ */ e.jsx(
|
|
1197
|
-
/* @__PURE__ */ e.jsx(
|
|
1276
|
+
function Or({ groups: r }) {
|
|
1277
|
+
return r.length ? /* @__PURE__ */ e.jsxs(L, { children: [
|
|
1278
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1279
|
+
/* @__PURE__ */ e.jsx(y, { children: "Group ID" }),
|
|
1280
|
+
/* @__PURE__ */ e.jsx(y, { children: "Name" }),
|
|
1281
|
+
/* @__PURE__ */ e.jsx(y, { children: "Project" }),
|
|
1282
|
+
/* @__PURE__ */ e.jsx(y, { children: "Runs" }),
|
|
1283
|
+
/* @__PURE__ */ e.jsx(y, { children: "Actions" })
|
|
1198
1284
|
] }) }),
|
|
1199
|
-
/* @__PURE__ */ e.jsx(
|
|
1200
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children:
|
|
1201
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1202
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1203
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1204
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1205
|
-
] },
|
|
1285
|
+
/* @__PURE__ */ e.jsx(B, { children: r.map((t) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1286
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: Q(t.group_id) }),
|
|
1287
|
+
/* @__PURE__ */ e.jsx(c, { children: t.group_name || "—" }),
|
|
1288
|
+
/* @__PURE__ */ e.jsx(c, { children: t.project }),
|
|
1289
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: t.run_count }) }),
|
|
1290
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(z, { to: `/groups/${t.group_id}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View Runs" }) }) })
|
|
1291
|
+
] }, t.group_id)) })
|
|
1206
1292
|
] }) : /* @__PURE__ */ e.jsx(
|
|
1207
|
-
|
|
1293
|
+
he,
|
|
1208
1294
|
{
|
|
1209
1295
|
message: "No groups found",
|
|
1210
1296
|
hint: "Groups are created when runs have a group_id set"
|
|
1211
1297
|
}
|
|
1212
1298
|
);
|
|
1213
1299
|
}
|
|
1214
|
-
function
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1300
|
+
function $r({
|
|
1301
|
+
runId: r,
|
|
1302
|
+
runName: t,
|
|
1303
|
+
variant: n = "secondary",
|
|
1304
|
+
size: a = "sm",
|
|
1305
|
+
className: u = "",
|
|
1306
|
+
apiBaseUrl: o = ""
|
|
1307
|
+
}) {
|
|
1308
|
+
const [d, i] = S({ status: "idle" }), [f, h] = S(!1), [m, p] = S(null), _ = async () => {
|
|
1309
|
+
i({ status: "preparing", message: "Preparing bundle..." }), h(!0);
|
|
1310
|
+
try {
|
|
1311
|
+
const k = await fetch(`${o}/api/runs/${r}/export`, {
|
|
1312
|
+
method: "POST",
|
|
1313
|
+
headers: { "Content-Type": "application/json" }
|
|
1314
|
+
});
|
|
1315
|
+
if (!k.ok) {
|
|
1316
|
+
const ne = await k.json().catch(() => ({ detail: "Export failed" }));
|
|
1317
|
+
throw new Error(ne.detail || `Export failed: ${k.statusText}`);
|
|
1318
|
+
}
|
|
1319
|
+
const O = await k.json();
|
|
1320
|
+
i({
|
|
1321
|
+
status: "packing",
|
|
1322
|
+
message: "Creating bundle...",
|
|
1323
|
+
artifactCount: O.artifact_count,
|
|
1324
|
+
objectCount: O.object_count
|
|
1325
|
+
}), i((ne) => ({
|
|
1326
|
+
...ne,
|
|
1327
|
+
status: "downloading",
|
|
1328
|
+
message: "Downloading bundle..."
|
|
1329
|
+
}));
|
|
1330
|
+
const T = await fetch(`${o}/api/runs/${r}/export/download`);
|
|
1331
|
+
if (!T.ok)
|
|
1332
|
+
throw new Error("Download failed");
|
|
1333
|
+
const se = await T.blob(), te = t ? `${t.replace(/[^a-zA-Z0-9_-]/g, "_")}_${r.slice(0, 8)}.zip` : `run_${r.slice(0, 8)}.zip`, J = URL.createObjectURL(se), Z = document.createElement("a");
|
|
1334
|
+
Z.href = J, Z.download = te, document.body.appendChild(Z), Z.click(), document.body.removeChild(Z), URL.revokeObjectURL(J), i({
|
|
1335
|
+
status: "complete",
|
|
1336
|
+
message: "Export complete!",
|
|
1337
|
+
bundleSize: se.size,
|
|
1338
|
+
artifactCount: O.artifact_count,
|
|
1339
|
+
objectCount: O.object_count
|
|
1340
|
+
}), p({ message: "Bundle downloaded successfully", variant: "success" }), setTimeout(() => {
|
|
1341
|
+
h(!1), i({ status: "idle" });
|
|
1342
|
+
}, 2e3);
|
|
1343
|
+
} catch (k) {
|
|
1344
|
+
const O = k instanceof Error ? k.message : "Export failed";
|
|
1345
|
+
i({ status: "error", message: O }), p({ message: O, variant: "error" });
|
|
1346
|
+
}
|
|
1347
|
+
}, U = () => {
|
|
1348
|
+
d.status !== "preparing" && d.status !== "packing" && d.status !== "downloading" && (h(!1), i({ status: "idle" }));
|
|
1349
|
+
}, w = (k) => k < 1024 ? `${k} B` : k < 1024 * 1024 ? `${(k / 1024).toFixed(1)} KB` : `${(k / (1024 * 1024)).toFixed(1)} MB`, H = ["preparing", "packing", "downloading"].includes(d.status);
|
|
1350
|
+
return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1351
|
+
/* @__PURE__ */ e.jsxs(
|
|
1352
|
+
D,
|
|
1353
|
+
{
|
|
1354
|
+
variant: n,
|
|
1355
|
+
size: a,
|
|
1356
|
+
onClick: _,
|
|
1357
|
+
disabled: H,
|
|
1358
|
+
className: u,
|
|
1359
|
+
children: [
|
|
1360
|
+
H && /* @__PURE__ */ e.jsx(q, {}),
|
|
1361
|
+
/* @__PURE__ */ e.jsx(Lr, {}),
|
|
1362
|
+
"Export"
|
|
1363
|
+
]
|
|
1364
|
+
}
|
|
1365
|
+
),
|
|
1366
|
+
/* @__PURE__ */ e.jsx(
|
|
1367
|
+
rs,
|
|
1368
|
+
{
|
|
1369
|
+
open: f,
|
|
1370
|
+
onClose: U,
|
|
1371
|
+
title: "Export Run",
|
|
1372
|
+
actions: d.status === "error" || d.status === "complete" ? /* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: U, children: "Close" }) : void 0,
|
|
1373
|
+
children: /* @__PURE__ */ e.jsxs("div", { className: "py-4", children: [
|
|
1374
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
1375
|
+
d.status === "error" ? /* @__PURE__ */ e.jsx("div", { className: "w-10 h-10 rounded-full bg-[var(--dq-danger-bg)] flex items-center justify-center", children: /* @__PURE__ */ e.jsx(qr, {}) }) : d.status === "complete" ? /* @__PURE__ */ e.jsx("div", { className: "w-10 h-10 rounded-full bg-[var(--dq-success-bg)] flex items-center justify-center", children: /* @__PURE__ */ e.jsx(Br, {}) }) : /* @__PURE__ */ e.jsx("div", { className: "w-10 h-10 rounded-full bg-[var(--dq-primary-bg)] flex items-center justify-center", children: /* @__PURE__ */ e.jsx(q, {}) }),
|
|
1376
|
+
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
1377
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-medium", children: d.message }),
|
|
1378
|
+
d.status === "error" && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-[var(--dq-text-muted)]", children: "Please try again or contact support." })
|
|
1379
|
+
] })
|
|
1380
|
+
] }),
|
|
1381
|
+
(d.artifactCount !== void 0 || d.objectCount !== void 0 || d.bundleSize !== void 0) && /* @__PURE__ */ e.jsxs("div", { className: "flex flex-wrap gap-2 mt-4", children: [
|
|
1382
|
+
d.artifactCount !== void 0 && /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
|
|
1383
|
+
d.artifactCount,
|
|
1384
|
+
" artifacts"
|
|
1385
|
+
] }),
|
|
1386
|
+
d.objectCount !== void 0 && /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
|
|
1387
|
+
d.objectCount,
|
|
1388
|
+
" objects"
|
|
1389
|
+
] }),
|
|
1390
|
+
d.bundleSize !== void 0 && /* @__PURE__ */ e.jsx(Y, { variant: "info", children: w(d.bundleSize) })
|
|
1391
|
+
] }),
|
|
1392
|
+
/* @__PURE__ */ e.jsxs("div", { className: "mt-4 pt-4 border-t border-[var(--dq-border-light)]", children: [
|
|
1393
|
+
/* @__PURE__ */ e.jsxs("p", { className: "text-sm text-[var(--dq-text-muted)]", children: [
|
|
1394
|
+
"Run ID: ",
|
|
1395
|
+
/* @__PURE__ */ e.jsx("code", { className: "text-xs", children: r })
|
|
1396
|
+
] }),
|
|
1397
|
+
t && /* @__PURE__ */ e.jsxs("p", { className: "text-sm text-[var(--dq-text-muted)]", children: [
|
|
1398
|
+
"Name: ",
|
|
1399
|
+
t
|
|
1400
|
+
] })
|
|
1401
|
+
] })
|
|
1402
|
+
] })
|
|
1403
|
+
}
|
|
1404
|
+
),
|
|
1405
|
+
m && /* @__PURE__ */ e.jsx(
|
|
1406
|
+
Ce,
|
|
1407
|
+
{
|
|
1408
|
+
message: m.message,
|
|
1409
|
+
variant: m.variant,
|
|
1410
|
+
visible: !!m,
|
|
1411
|
+
onClose: () => p(null)
|
|
1412
|
+
}
|
|
1413
|
+
)
|
|
1414
|
+
] });
|
|
1415
|
+
}
|
|
1416
|
+
function Lr() {
|
|
1417
|
+
return /* @__PURE__ */ e.jsxs(
|
|
1418
|
+
"svg",
|
|
1419
|
+
{
|
|
1420
|
+
width: "16",
|
|
1421
|
+
height: "16",
|
|
1422
|
+
viewBox: "0 0 24 24",
|
|
1423
|
+
fill: "none",
|
|
1424
|
+
stroke: "currentColor",
|
|
1425
|
+
strokeWidth: "2",
|
|
1426
|
+
strokeLinecap: "round",
|
|
1427
|
+
strokeLinejoin: "round",
|
|
1428
|
+
children: [
|
|
1429
|
+
/* @__PURE__ */ e.jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
|
|
1430
|
+
/* @__PURE__ */ e.jsx("polyline", { points: "7 10 12 15 17 10" }),
|
|
1431
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })
|
|
1432
|
+
]
|
|
1433
|
+
}
|
|
1434
|
+
);
|
|
1435
|
+
}
|
|
1436
|
+
function Br() {
|
|
1437
|
+
return /* @__PURE__ */ e.jsx(
|
|
1438
|
+
"svg",
|
|
1439
|
+
{
|
|
1440
|
+
width: "20",
|
|
1441
|
+
height: "20",
|
|
1442
|
+
viewBox: "0 0 24 24",
|
|
1443
|
+
fill: "none",
|
|
1444
|
+
stroke: "var(--dq-success)",
|
|
1445
|
+
strokeWidth: "2",
|
|
1446
|
+
strokeLinecap: "round",
|
|
1447
|
+
strokeLinejoin: "round",
|
|
1448
|
+
children: /* @__PURE__ */ e.jsx("polyline", { points: "20 6 9 17 4 12" })
|
|
1449
|
+
}
|
|
1219
1450
|
);
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1451
|
+
}
|
|
1452
|
+
function qr() {
|
|
1453
|
+
return /* @__PURE__ */ e.jsxs(
|
|
1454
|
+
"svg",
|
|
1455
|
+
{
|
|
1456
|
+
width: "20",
|
|
1457
|
+
height: "20",
|
|
1458
|
+
viewBox: "0 0 24 24",
|
|
1459
|
+
fill: "none",
|
|
1460
|
+
stroke: "var(--dq-danger)",
|
|
1461
|
+
strokeWidth: "2",
|
|
1462
|
+
strokeLinecap: "round",
|
|
1463
|
+
strokeLinejoin: "round",
|
|
1464
|
+
children: [
|
|
1465
|
+
/* @__PURE__ */ e.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
1466
|
+
/* @__PURE__ */ e.jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
|
|
1467
|
+
/* @__PURE__ */ e.jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
|
|
1468
|
+
]
|
|
1469
|
+
}
|
|
1470
|
+
);
|
|
1471
|
+
}
|
|
1472
|
+
function Ir() {
|
|
1473
|
+
const { runId: r } = es(), t = xr(), { api: n } = K(), { data: a, loading: u, error: o, refetch: d } = Fs(r), { data: i, refetch: f } = Le(), [h, m] = S(!1), [p, _] = S(null), { mutate: U, loading: w } = Re(
|
|
1474
|
+
() => n.setBaseline(a.project, a.run_id)
|
|
1475
|
+
), { mutate: H, loading: k } = Re(
|
|
1476
|
+
() => n.deleteRun(r)
|
|
1477
|
+
), T = i?.find((N) => N.name === a?.project)?.baseline?.run_id === r;
|
|
1478
|
+
if (je(() => {
|
|
1479
|
+
if (p) {
|
|
1480
|
+
const N = setTimeout(() => _(null), 3e3);
|
|
1481
|
+
return () => clearTimeout(N);
|
|
1224
1482
|
}
|
|
1225
|
-
}, [
|
|
1226
|
-
return /* @__PURE__ */ e.jsx(
|
|
1227
|
-
if (
|
|
1228
|
-
return /* @__PURE__ */ e.jsx(
|
|
1229
|
-
|
|
1483
|
+
}, [p]), u)
|
|
1484
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(q, {}) }) });
|
|
1485
|
+
if (o || !a)
|
|
1486
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(
|
|
1487
|
+
he,
|
|
1230
1488
|
{
|
|
1231
1489
|
message: "Run not found",
|
|
1232
|
-
hint:
|
|
1490
|
+
hint: o?.message || `Run ${r} does not exist`
|
|
1233
1491
|
}
|
|
1234
1492
|
) }) });
|
|
1235
|
-
const
|
|
1236
|
-
await $(), f();
|
|
1237
|
-
}, ke = async () => {
|
|
1238
|
-
await G(), n("/runs");
|
|
1239
|
-
}, Ae = async (w) => {
|
|
1493
|
+
const se = a.backend || {}, te = a.fingerprints || {}, J = a.data?.params || {}, Z = a.data?.metrics || {}, ne = a.data?.tags || {}, xe = a.artifacts || [], pe = a.errors || [], Be = async () => {
|
|
1240
1494
|
try {
|
|
1241
|
-
|
|
1242
|
-
if (!Ne.ok) throw new Error("Download failed");
|
|
1243
|
-
const _e = await Ne.blob(), W = document.createElement("a");
|
|
1244
|
-
W.href = URL.createObjectURL(_e), W.download = `artifact-${w}`, W.click(), URL.revokeObjectURL(W.href), p({ message: "Download started", variant: "success" });
|
|
1495
|
+
await U(), await f(), d(), _({ message: "Baseline updated", variant: "success" });
|
|
1245
1496
|
} catch {
|
|
1246
|
-
|
|
1497
|
+
_({ message: "Failed to set baseline", variant: "error" });
|
|
1498
|
+
}
|
|
1499
|
+
}, qe = async () => {
|
|
1500
|
+
try {
|
|
1501
|
+
await H(), m(!1), _({ message: "Run deleted", variant: "success" }), setTimeout(() => t("/runs"), 1e3);
|
|
1502
|
+
} catch {
|
|
1503
|
+
_({ message: "Failed to delete run", variant: "error" }), m(!1);
|
|
1504
|
+
}
|
|
1505
|
+
}, ke = async (N) => {
|
|
1506
|
+
const P = xe[N];
|
|
1507
|
+
try {
|
|
1508
|
+
const ce = n.getArtifactDownloadUrl(a.run_id, N), ge = await fetch(ce);
|
|
1509
|
+
if (!ge.ok) throw new Error("Download failed");
|
|
1510
|
+
const Te = await ge.blob(), le = document.createElement("a");
|
|
1511
|
+
le.href = URL.createObjectURL(Te), le.download = P?.kind || `artifact-${N}`, le.click(), URL.revokeObjectURL(le.href), _({ message: "Download started", variant: "success" });
|
|
1512
|
+
} catch {
|
|
1513
|
+
_({ message: "Download failed", variant: "error" });
|
|
1247
1514
|
}
|
|
1248
1515
|
};
|
|
1249
|
-
return /* @__PURE__ */ e.jsxs(
|
|
1516
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1517
|
+
T && /* @__PURE__ */ e.jsxs("div", { className: "mb-4 px-4 py-3 bg-[#EFF6FF] border border-[#2563EB]/20 rounded-md text-[#2563EB] text-sm font-medium", children: [
|
|
1518
|
+
'This run is the current baseline for project "',
|
|
1519
|
+
a.project,
|
|
1520
|
+
'"'
|
|
1521
|
+
] }),
|
|
1250
1522
|
/* @__PURE__ */ e.jsxs("div", { className: "page-header", children: [
|
|
1251
1523
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
1252
1524
|
/* @__PURE__ */ e.jsx("h1", { className: "page-title", children: a.run_name || "Unnamed Run" }),
|
|
1253
1525
|
/* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm font-mono", children: a.run_id })
|
|
1254
1526
|
] }),
|
|
1255
1527
|
/* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
|
|
1256
|
-
/* @__PURE__ */ e.
|
|
1257
|
-
|
|
1528
|
+
/* @__PURE__ */ e.jsx($r, { runId: a.run_id, runName: a.run_name }),
|
|
1529
|
+
!T && /* @__PURE__ */ e.jsxs(D, { variant: "secondary", size: "sm", onClick: Be, disabled: w, children: [
|
|
1530
|
+
w && /* @__PURE__ */ e.jsx(q, {}),
|
|
1258
1531
|
"Set as Baseline"
|
|
1259
1532
|
] }),
|
|
1260
|
-
/* @__PURE__ */ e.jsx(
|
|
1533
|
+
/* @__PURE__ */ e.jsx(D, { variant: "ghost-danger", size: "sm", onClick: () => m(!0), children: "Delete" })
|
|
1261
1534
|
] })
|
|
1262
1535
|
] }),
|
|
1263
1536
|
/* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
|
|
1264
|
-
/* @__PURE__ */ e.jsxs(
|
|
1265
|
-
/* @__PURE__ */ e.jsx(
|
|
1266
|
-
/* @__PURE__ */ e.jsx(
|
|
1267
|
-
{ label: "Project", value: /* @__PURE__ */ e.jsx(
|
|
1537
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1538
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Overview" }) }),
|
|
1539
|
+
/* @__PURE__ */ e.jsx(Je, { items: [
|
|
1540
|
+
{ label: "Project", value: /* @__PURE__ */ e.jsx(z, { to: `/runs?project=${a.project}`, children: a.project }) },
|
|
1268
1541
|
{ label: "Name", value: a.run_name || "—" },
|
|
1269
1542
|
{ label: "Adapter", value: a.adapter || "N/A" },
|
|
1270
|
-
{ label: "Status", value: /* @__PURE__ */ e.jsx(
|
|
1271
|
-
{ label: "Created", value: `${a.created_at} (${
|
|
1272
|
-
{ label: "Backend", value:
|
|
1543
|
+
{ label: "Status", value: /* @__PURE__ */ e.jsx(Ls, { status: a.status }) },
|
|
1544
|
+
{ label: "Created", value: `${a.created_at} (${ss(a.created_at)})` },
|
|
1545
|
+
{ label: "Backend", value: se.name || "N/A" },
|
|
1273
1546
|
...a.group_id ? [{
|
|
1274
1547
|
label: "Group",
|
|
1275
|
-
value: /* @__PURE__ */ e.jsx(
|
|
1548
|
+
value: /* @__PURE__ */ e.jsx(z, { to: `/groups/${a.group_id}`, children: a.group_name || Q(a.group_id) })
|
|
1276
1549
|
}] : []
|
|
1277
1550
|
] })
|
|
1278
1551
|
] }),
|
|
1279
|
-
/* @__PURE__ */ e.jsxs(
|
|
1280
|
-
/* @__PURE__ */ e.jsx(
|
|
1281
|
-
/* @__PURE__ */ e.jsx(
|
|
1282
|
-
{ label: "Run", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children:
|
|
1283
|
-
{ label: "Program", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children:
|
|
1552
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1553
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Fingerprints" }) }),
|
|
1554
|
+
/* @__PURE__ */ e.jsx(Je, { items: [
|
|
1555
|
+
{ label: "Run", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: te.run || "N/A" }) },
|
|
1556
|
+
{ label: "Program", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: te.program || "N/A" }) }
|
|
1284
1557
|
] })
|
|
1285
1558
|
] })
|
|
1286
1559
|
] }),
|
|
1287
1560
|
/* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4 mb-4", children: [
|
|
1288
|
-
/* @__PURE__ */ e.jsxs(
|
|
1289
|
-
/* @__PURE__ */ e.jsx(
|
|
1290
|
-
Object.keys(
|
|
1291
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1292
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(
|
|
1293
|
-
] },
|
|
1561
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1562
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Parameters" }) }),
|
|
1563
|
+
Object.keys(J).length ? /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsx(B, { children: Object.entries(J).map(([N, P]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1564
|
+
/* @__PURE__ */ e.jsx(c, { children: N }),
|
|
1565
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(P) })
|
|
1566
|
+
] }, N)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No parameters" })
|
|
1294
1567
|
] }),
|
|
1295
|
-
/* @__PURE__ */ e.jsxs(
|
|
1296
|
-
/* @__PURE__ */ e.jsx(
|
|
1297
|
-
Object.keys(
|
|
1298
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1299
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: typeof
|
|
1300
|
-
] },
|
|
1568
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1569
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Metrics" }) }),
|
|
1570
|
+
Object.keys(Z).length ? /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsx(B, { children: Object.entries(Z).map(([N, P]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1571
|
+
/* @__PURE__ */ e.jsx(c, { children: N }),
|
|
1572
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: typeof P == "number" ? kr(P) : String(P) })
|
|
1573
|
+
] }, N)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No metrics" })
|
|
1301
1574
|
] }),
|
|
1302
|
-
/* @__PURE__ */ e.jsxs(
|
|
1303
|
-
/* @__PURE__ */ e.jsx(
|
|
1304
|
-
Object.keys(
|
|
1305
|
-
|
|
1575
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1576
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Tags" }) }),
|
|
1577
|
+
Object.keys(ne).length ? /* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-2", children: Object.entries(ne).map(([N, P]) => /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
|
|
1578
|
+
N,
|
|
1306
1579
|
": ",
|
|
1307
|
-
String(
|
|
1308
|
-
] },
|
|
1580
|
+
String(P)
|
|
1581
|
+
] }, N)) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No tags" })
|
|
1309
1582
|
] })
|
|
1310
1583
|
] }),
|
|
1311
|
-
/* @__PURE__ */ e.jsxs(
|
|
1312
|
-
/* @__PURE__ */ e.jsx(
|
|
1584
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
1585
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsxs(G, { children: [
|
|
1313
1586
|
"Artifacts (",
|
|
1314
|
-
|
|
1587
|
+
xe.length,
|
|
1315
1588
|
")"
|
|
1316
1589
|
] }) }),
|
|
1317
|
-
|
|
1318
|
-
/* @__PURE__ */ e.jsx(
|
|
1319
|
-
/* @__PURE__ */ e.jsx(
|
|
1320
|
-
/* @__PURE__ */ e.jsx(
|
|
1321
|
-
/* @__PURE__ */ e.jsx(
|
|
1322
|
-
/* @__PURE__ */ e.jsx(
|
|
1323
|
-
/* @__PURE__ */ e.jsx(
|
|
1324
|
-
/* @__PURE__ */ e.jsx(
|
|
1590
|
+
xe.length ? /* @__PURE__ */ e.jsxs(L, { children: [
|
|
1591
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1592
|
+
/* @__PURE__ */ e.jsx(y, { children: "#" }),
|
|
1593
|
+
/* @__PURE__ */ e.jsx(y, { children: "Kind" }),
|
|
1594
|
+
/* @__PURE__ */ e.jsx(y, { children: "Role" }),
|
|
1595
|
+
/* @__PURE__ */ e.jsx(y, { children: "Media Type" }),
|
|
1596
|
+
/* @__PURE__ */ e.jsx(y, { children: "Digest" }),
|
|
1597
|
+
/* @__PURE__ */ e.jsx(y, { children: "Actions" })
|
|
1325
1598
|
] }) }),
|
|
1326
|
-
/* @__PURE__ */ e.jsx(
|
|
1327
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1328
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children:
|
|
1329
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1330
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children:
|
|
1331
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children:
|
|
1599
|
+
/* @__PURE__ */ e.jsx(B, { children: xe.map((N, P) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1600
|
+
/* @__PURE__ */ e.jsx(c, { children: P }),
|
|
1601
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: N.kind }),
|
|
1602
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: N.role }) }),
|
|
1603
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: N.media_type }),
|
|
1604
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(N.digest) }),
|
|
1332
1605
|
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
|
|
1333
|
-
/* @__PURE__ */ e.jsx(
|
|
1334
|
-
/* @__PURE__ */ e.jsx(
|
|
1606
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${a.run_id}/artifacts/${P}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View" }) }),
|
|
1607
|
+
/* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", onClick: () => ke(P), children: "Download" })
|
|
1335
1608
|
] }) })
|
|
1336
|
-
] },
|
|
1609
|
+
] }, P)) })
|
|
1337
1610
|
] }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No artifacts" })
|
|
1338
1611
|
] }),
|
|
1339
|
-
|
|
1340
|
-
/* @__PURE__ */ e.jsx(
|
|
1341
|
-
|
|
1342
|
-
/* @__PURE__ */ e.jsx("strong", { children:
|
|
1612
|
+
pe.length > 0 && /* @__PURE__ */ e.jsxs(b, { children: [
|
|
1613
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { className: "text-danger", children: "Errors" }) }),
|
|
1614
|
+
pe.map((N, P) => /* @__PURE__ */ e.jsxs("div", { className: "mb-2", children: [
|
|
1615
|
+
/* @__PURE__ */ e.jsx("strong", { children: N.type }),
|
|
1343
1616
|
": ",
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
] },
|
|
1617
|
+
N.message,
|
|
1618
|
+
N.traceback && /* @__PURE__ */ e.jsx("pre", { className: "mt-2", children: N.traceback })
|
|
1619
|
+
] }, P))
|
|
1347
1620
|
] }),
|
|
1348
1621
|
/* @__PURE__ */ e.jsxs(
|
|
1349
|
-
|
|
1622
|
+
rs,
|
|
1350
1623
|
{
|
|
1351
|
-
open:
|
|
1352
|
-
onClose: () =>
|
|
1624
|
+
open: h,
|
|
1625
|
+
onClose: () => m(!1),
|
|
1353
1626
|
title: "Delete Run",
|
|
1354
1627
|
actions: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1355
|
-
/* @__PURE__ */ e.jsx(
|
|
1356
|
-
/* @__PURE__ */ e.jsxs(
|
|
1357
|
-
|
|
1628
|
+
/* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: () => m(!1), children: "Cancel" }),
|
|
1629
|
+
/* @__PURE__ */ e.jsxs(D, { variant: "danger", onClick: qe, disabled: k, children: [
|
|
1630
|
+
k && /* @__PURE__ */ e.jsx(q, {}),
|
|
1358
1631
|
"Delete"
|
|
1359
1632
|
] })
|
|
1360
1633
|
] }),
|
|
1361
1634
|
children: [
|
|
1362
1635
|
/* @__PURE__ */ e.jsx("p", { children: "Are you sure you want to delete this run?" }),
|
|
1363
|
-
/* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children:
|
|
1636
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children: Q(a.run_id) }),
|
|
1364
1637
|
/* @__PURE__ */ e.jsx("p", { className: "text-sm text-danger mt-2", children: "This action cannot be undone." })
|
|
1365
1638
|
]
|
|
1366
1639
|
}
|
|
1367
1640
|
),
|
|
1368
|
-
|
|
1369
|
-
|
|
1641
|
+
p && /* @__PURE__ */ e.jsx(
|
|
1642
|
+
Ce,
|
|
1370
1643
|
{
|
|
1371
|
-
message:
|
|
1372
|
-
variant:
|
|
1373
|
-
visible: !!
|
|
1374
|
-
onClose: () =>
|
|
1644
|
+
message: p.message,
|
|
1645
|
+
variant: p.variant,
|
|
1646
|
+
visible: !!p,
|
|
1647
|
+
onClose: () => _(null)
|
|
1375
1648
|
}
|
|
1376
1649
|
)
|
|
1377
1650
|
] });
|
|
1378
1651
|
}
|
|
1379
|
-
function
|
|
1380
|
-
const { currentWorkspace:
|
|
1381
|
-
return /* @__PURE__ */ e.jsxs(
|
|
1382
|
-
/* @__PURE__ */ e.jsx(
|
|
1383
|
-
/* @__PURE__ */ e.jsx(
|
|
1652
|
+
function Ur() {
|
|
1653
|
+
const { currentWorkspace: r } = K(), { data: t, loading: n } = Le();
|
|
1654
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1655
|
+
/* @__PURE__ */ e.jsx(Ee, { title: "Projects" }),
|
|
1656
|
+
/* @__PURE__ */ e.jsx(b, { children: n ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(q, {}) }) : /* @__PURE__ */ e.jsx(Fr, { projects: t ?? [], currentWorkspace: r }) })
|
|
1384
1657
|
] });
|
|
1385
1658
|
}
|
|
1386
|
-
function
|
|
1387
|
-
const [
|
|
1388
|
-
|
|
1389
|
-
const
|
|
1390
|
-
|
|
1391
|
-
}, [
|
|
1392
|
-
return /* @__PURE__ */ e.jsxs(
|
|
1393
|
-
/* @__PURE__ */ e.jsx(
|
|
1394
|
-
/* @__PURE__ */ e.jsx(
|
|
1395
|
-
/* @__PURE__ */ e.jsxs(
|
|
1396
|
-
/* @__PURE__ */ e.jsx(
|
|
1659
|
+
function Mr() {
|
|
1660
|
+
const [r, t] = $e(), { data: n } = Le(), [a, u] = S(r.get("project") || ""), { data: o, loading: d, refetch: i } = wr({ project: a || void 0 }), f = _e((h) => {
|
|
1661
|
+
u(h);
|
|
1662
|
+
const m = new URLSearchParams(r);
|
|
1663
|
+
h ? m.set("project", h) : m.delete("project"), t(m, { replace: !0 });
|
|
1664
|
+
}, [r, t]);
|
|
1665
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1666
|
+
/* @__PURE__ */ e.jsx(Ee, { title: "Run Groups" }),
|
|
1667
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs($s, { children: [
|
|
1668
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1669
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "project", children: "Project" }),
|
|
1397
1670
|
/* @__PURE__ */ e.jsxs(
|
|
1398
|
-
|
|
1671
|
+
de,
|
|
1399
1672
|
{
|
|
1400
1673
|
id: "project",
|
|
1401
1674
|
value: a,
|
|
1402
|
-
onChange: (
|
|
1675
|
+
onChange: (h) => f(h.target.value),
|
|
1403
1676
|
children: [
|
|
1404
1677
|
/* @__PURE__ */ e.jsx("option", { value: "", children: "All projects" }),
|
|
1405
|
-
|
|
1678
|
+
n?.map((h) => /* @__PURE__ */ e.jsx("option", { value: h.name, children: h.name }, h.name))
|
|
1406
1679
|
]
|
|
1407
1680
|
}
|
|
1408
1681
|
)
|
|
1409
1682
|
] }),
|
|
1410
|
-
/* @__PURE__ */ e.jsxs(
|
|
1411
|
-
/* @__PURE__ */ e.jsx(
|
|
1412
|
-
|
|
1683
|
+
/* @__PURE__ */ e.jsxs(ee, { className: "flex items-end gap-2", children: [
|
|
1684
|
+
/* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: () => i(), children: "Filter" }),
|
|
1685
|
+
d && /* @__PURE__ */ e.jsx(q, {})
|
|
1413
1686
|
] })
|
|
1414
1687
|
] }) }),
|
|
1415
|
-
/* @__PURE__ */ e.jsx(
|
|
1688
|
+
/* @__PURE__ */ e.jsx(b, { children: d && !o ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(q, {}) }) : /* @__PURE__ */ e.jsx(Or, { groups: o ?? [] }) })
|
|
1416
1689
|
] });
|
|
1417
1690
|
}
|
|
1418
|
-
function
|
|
1419
|
-
const { groupId:
|
|
1420
|
-
|
|
1691
|
+
function Wr() {
|
|
1692
|
+
const { groupId: r } = es(), { api: t } = K(), { data: n, loading: a, error: u, refetch: o } = Rr(r), [d, i] = S(null), f = Re((m) => t.deleteRun(m));
|
|
1693
|
+
je(() => {
|
|
1694
|
+
if (d) {
|
|
1695
|
+
const m = setTimeout(() => i(null), 3e3);
|
|
1696
|
+
return () => clearTimeout(m);
|
|
1697
|
+
}
|
|
1698
|
+
}, [d]);
|
|
1699
|
+
const h = async (m) => {
|
|
1700
|
+
try {
|
|
1701
|
+
await f.mutate(m), i({ message: "Run deleted", variant: "success" }), o();
|
|
1702
|
+
} catch {
|
|
1703
|
+
i({ message: "Failed to delete run", variant: "error" });
|
|
1704
|
+
}
|
|
1421
1705
|
};
|
|
1422
|
-
return a ? /* @__PURE__ */ e.jsx(
|
|
1706
|
+
return a ? /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(q, {}) }) }) : u || !n ? /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Group not found", hint: u?.message }) }) }) : /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1423
1707
|
/* @__PURE__ */ e.jsx(
|
|
1424
|
-
|
|
1708
|
+
Ee,
|
|
1425
1709
|
{
|
|
1426
1710
|
title: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1427
1711
|
"Group ",
|
|
1428
|
-
/* @__PURE__ */ e.jsx("span", { className: "font-mono", children:
|
|
1712
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-mono", children: Q(r) })
|
|
1429
1713
|
] }),
|
|
1430
|
-
subtitle: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-muted", children:
|
|
1714
|
+
subtitle: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-muted", children: r })
|
|
1431
1715
|
}
|
|
1432
1716
|
),
|
|
1433
|
-
/* @__PURE__ */ e.jsxs(
|
|
1434
|
-
/* @__PURE__ */ e.jsx(
|
|
1717
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1718
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsxs(G, { children: [
|
|
1435
1719
|
"Runs in Group (",
|
|
1436
|
-
|
|
1720
|
+
n.runs.length,
|
|
1437
1721
|
")"
|
|
1438
1722
|
] }) }),
|
|
1439
1723
|
/* @__PURE__ */ e.jsx(
|
|
1440
|
-
|
|
1724
|
+
ns,
|
|
1441
1725
|
{
|
|
1442
|
-
runs:
|
|
1443
|
-
onDelete:
|
|
1726
|
+
runs: n.runs,
|
|
1727
|
+
onDelete: h,
|
|
1444
1728
|
loading: f.loading
|
|
1445
1729
|
}
|
|
1446
1730
|
)
|
|
1447
|
-
] })
|
|
1731
|
+
] }),
|
|
1732
|
+
d && /* @__PURE__ */ e.jsx(
|
|
1733
|
+
Ce,
|
|
1734
|
+
{
|
|
1735
|
+
message: d.message,
|
|
1736
|
+
variant: d.variant,
|
|
1737
|
+
visible: !!d,
|
|
1738
|
+
onClose: () => i(null)
|
|
1739
|
+
}
|
|
1740
|
+
)
|
|
1741
|
+
] });
|
|
1742
|
+
}
|
|
1743
|
+
function Gr({ className: r = "" }) {
|
|
1744
|
+
return /* @__PURE__ */ e.jsx("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ e.jsx("polyline", { points: "20 6 9 17 4 12" }) });
|
|
1745
|
+
}
|
|
1746
|
+
function Vr({ className: r = "" }) {
|
|
1747
|
+
return /* @__PURE__ */ e.jsxs("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
1748
|
+
/* @__PURE__ */ e.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
1749
|
+
/* @__PURE__ */ e.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
1750
|
+
] });
|
|
1751
|
+
}
|
|
1752
|
+
function zr({ className: r = "" }) {
|
|
1753
|
+
return /* @__PURE__ */ e.jsxs("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
1754
|
+
/* @__PURE__ */ e.jsx("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
|
|
1755
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
|
|
1756
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
|
|
1757
|
+
] });
|
|
1758
|
+
}
|
|
1759
|
+
function Ke({ className: r = "" }) {
|
|
1760
|
+
return /* @__PURE__ */ e.jsxs("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
1761
|
+
/* @__PURE__ */ e.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
1762
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
|
|
1763
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
|
|
1448
1764
|
] });
|
|
1449
1765
|
}
|
|
1450
|
-
function
|
|
1451
|
-
return /* @__PURE__ */ e.
|
|
1766
|
+
function ye({ match: r }) {
|
|
1767
|
+
return r ? /* @__PURE__ */ e.jsxs("span", { className: "diff-match inline-flex items-center gap-1.5", children: [
|
|
1768
|
+
/* @__PURE__ */ e.jsx(Gr, { className: "flex-shrink-0" }),
|
|
1769
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-medium", children: "Match" })
|
|
1770
|
+
] }) : /* @__PURE__ */ e.jsxs("span", { className: "diff-mismatch inline-flex items-center gap-1.5", children: [
|
|
1771
|
+
/* @__PURE__ */ e.jsx(Vr, { className: "flex-shrink-0" }),
|
|
1772
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-medium", children: "Different" })
|
|
1773
|
+
] });
|
|
1774
|
+
}
|
|
1775
|
+
function Yr({ warnings: r }) {
|
|
1776
|
+
return !r || r.length === 0 ? null : /* @__PURE__ */ e.jsx("div", { className: "alert alert-warning mb-4", children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-3", children: [
|
|
1777
|
+
/* @__PURE__ */ e.jsx(zr, { className: "flex-shrink-0 mt-0.5" }),
|
|
1778
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex-1", children: [
|
|
1779
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-semibold mb-1", children: r.length === 1 ? "Warning" : `${r.length} Warnings` }),
|
|
1780
|
+
/* @__PURE__ */ e.jsx("ul", { className: "space-y-1", children: r.map((t, n) => /* @__PURE__ */ e.jsx("li", { className: "text-sm", children: t }, n)) })
|
|
1781
|
+
] })
|
|
1782
|
+
] }) });
|
|
1783
|
+
}
|
|
1784
|
+
function Ts({
|
|
1785
|
+
label: r,
|
|
1786
|
+
run: t,
|
|
1787
|
+
variant: n
|
|
1788
|
+
}) {
|
|
1789
|
+
return /* @__PURE__ */ e.jsxs("div", { className: "relative", children: [
|
|
1790
|
+
/* @__PURE__ */ e.jsx("div", { className: `absolute top-0 left-0 w-1 h-full rounded-l ${n === "a" ? "bg-info" : "bg-primary"}` }),
|
|
1791
|
+
/* @__PURE__ */ e.jsxs("div", { className: "pl-4", children: [
|
|
1792
|
+
/* @__PURE__ */ e.jsx("p", { className: `text-xs font-semibold uppercase tracking-wider mb-2 ${n === "a" ? "text-info" : "text-primary"}`, children: r }),
|
|
1793
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${t.run_id}`, className: "text-base font-medium hover:underline", children: t.run_name || "Unnamed Run" }),
|
|
1794
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-mono text-xs mt-1 text-muted", children: Q(t.run_id) }),
|
|
1795
|
+
/* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-1 text-muted", children: [
|
|
1796
|
+
t.project,
|
|
1797
|
+
" · ",
|
|
1798
|
+
ss(t.created_at)
|
|
1799
|
+
] })
|
|
1800
|
+
] })
|
|
1801
|
+
] });
|
|
1452
1802
|
}
|
|
1453
|
-
function
|
|
1454
|
-
|
|
1455
|
-
|
|
1803
|
+
function ae({
|
|
1804
|
+
children: r,
|
|
1805
|
+
badge: t
|
|
1806
|
+
}) {
|
|
1807
|
+
return /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: /* @__PURE__ */ e.jsxs("span", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
1808
|
+
r,
|
|
1809
|
+
t && /* @__PURE__ */ e.jsx(Y, { variant: t.variant, children: t.label })
|
|
1810
|
+
] }) }) });
|
|
1811
|
+
}
|
|
1812
|
+
function Kr({
|
|
1813
|
+
tvd: r,
|
|
1814
|
+
noiseContext: t
|
|
1815
|
+
}) {
|
|
1816
|
+
if (r === 0)
|
|
1817
|
+
return /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4 text-success", children: "✓ Distributions are identical (TVD = 0)" });
|
|
1818
|
+
if (!t) return null;
|
|
1819
|
+
const { p_value: n, noise_ratio: a } = t;
|
|
1820
|
+
return n != null ? n >= 0.1 ? /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4 text-success", children: "✓ Consistent with sampling noise — difference is not statistically significant" }) : n >= 0.05 ? /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-warning", children: [
|
|
1821
|
+
"⚠ Borderline (p=",
|
|
1822
|
+
n.toFixed(2),
|
|
1823
|
+
") — consider increasing shots"
|
|
1824
|
+
] }) : /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-danger", children: [
|
|
1825
|
+
"✗ Statistically significant difference (p=",
|
|
1826
|
+
n.toFixed(2),
|
|
1827
|
+
") — results show meaningful divergence"
|
|
1828
|
+
] }) : a != null ? a < 1.5 ? /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4 text-success", children: "✓ TVD is within expected shot noise range" }) : a < 3 ? /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-warning", children: [
|
|
1829
|
+
"⚠ Ambiguous (",
|
|
1830
|
+
a.toFixed(1),
|
|
1831
|
+
"× expected noise) — consider increasing shots"
|
|
1832
|
+
] }) : /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-danger", children: [
|
|
1833
|
+
"✗ TVD exceeds expected noise (",
|
|
1834
|
+
a.toFixed(1),
|
|
1835
|
+
"×) — results show meaningful differences"
|
|
1836
|
+
] }) : null;
|
|
1837
|
+
}
|
|
1838
|
+
function Hr() {
|
|
1839
|
+
const [r, t] = $e(), { data: n } = As({ limit: 100 }), a = n?.runs ?? [], [u, o] = S(r.get("a") || ""), [d, i] = S(r.get("b") || ""), [f, h] = S(""), m = (p) => {
|
|
1840
|
+
if (p.preventDefault(), !u || !d) {
|
|
1841
|
+
h("Please select both runs to compare");
|
|
1842
|
+
return;
|
|
1843
|
+
}
|
|
1844
|
+
if (u === d) {
|
|
1845
|
+
h("Please select two different runs");
|
|
1846
|
+
return;
|
|
1847
|
+
}
|
|
1848
|
+
h(""), t({ a: u, b: d });
|
|
1456
1849
|
};
|
|
1457
1850
|
return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1458
|
-
/* @__PURE__ */ e.jsx(
|
|
1851
|
+
/* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsxs("form", { onSubmit: m, children: [
|
|
1459
1852
|
/* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
|
|
1460
|
-
/* @__PURE__ */ e.jsxs(
|
|
1461
|
-
/* @__PURE__ */ e.jsx(
|
|
1462
|
-
/* @__PURE__ */ e.jsxs(
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1853
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1854
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "a", children: "Run A (Baseline)" }),
|
|
1855
|
+
/* @__PURE__ */ e.jsxs(
|
|
1856
|
+
de,
|
|
1857
|
+
{
|
|
1858
|
+
id: "a",
|
|
1859
|
+
value: u,
|
|
1860
|
+
onChange: (p) => {
|
|
1861
|
+
o(p.target.value), h("");
|
|
1862
|
+
},
|
|
1863
|
+
children: [
|
|
1864
|
+
/* @__PURE__ */ e.jsx("option", { value: "", children: "Select run..." }),
|
|
1865
|
+
a.map((p) => /* @__PURE__ */ e.jsxs("option", { value: p.run_id, children: [
|
|
1866
|
+
p.run_name || "Unnamed",
|
|
1867
|
+
" (",
|
|
1868
|
+
Q(p.run_id),
|
|
1869
|
+
") — ",
|
|
1870
|
+
p.project
|
|
1871
|
+
] }, p.run_id))
|
|
1872
|
+
]
|
|
1873
|
+
}
|
|
1874
|
+
)
|
|
1472
1875
|
] }),
|
|
1473
|
-
/* @__PURE__ */ e.jsxs(
|
|
1474
|
-
/* @__PURE__ */ e.jsx(
|
|
1475
|
-
/* @__PURE__ */ e.jsxs(
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1876
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1877
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "b", children: "Run B (Candidate)" }),
|
|
1878
|
+
/* @__PURE__ */ e.jsxs(
|
|
1879
|
+
de,
|
|
1880
|
+
{
|
|
1881
|
+
id: "b",
|
|
1882
|
+
value: d,
|
|
1883
|
+
onChange: (p) => {
|
|
1884
|
+
i(p.target.value), h("");
|
|
1885
|
+
},
|
|
1886
|
+
children: [
|
|
1887
|
+
/* @__PURE__ */ e.jsx("option", { value: "", children: "Select run..." }),
|
|
1888
|
+
a.map((p) => /* @__PURE__ */ e.jsxs("option", { value: p.run_id, children: [
|
|
1889
|
+
p.run_name || "Unnamed",
|
|
1890
|
+
" (",
|
|
1891
|
+
Q(p.run_id),
|
|
1892
|
+
") — ",
|
|
1893
|
+
p.project
|
|
1894
|
+
] }, p.run_id))
|
|
1895
|
+
]
|
|
1896
|
+
}
|
|
1897
|
+
)
|
|
1485
1898
|
] })
|
|
1486
1899
|
] }),
|
|
1487
|
-
/* @__PURE__ */ e.jsx(
|
|
1900
|
+
f && /* @__PURE__ */ e.jsx("p", { className: "text-sm mb-3 text-danger", children: f }),
|
|
1901
|
+
/* @__PURE__ */ e.jsx(D, { type: "submit", variant: "primary", children: "Compare" })
|
|
1488
1902
|
] }) }),
|
|
1489
|
-
/* @__PURE__ */ e.jsxs(
|
|
1490
|
-
/* @__PURE__ */ e.jsx(
|
|
1491
|
-
/* @__PURE__ */ e.jsxs("
|
|
1492
|
-
/* @__PURE__ */ e.
|
|
1493
|
-
|
|
1494
|
-
|
|
1903
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mt-4", children: [
|
|
1904
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "How it works" }) }),
|
|
1905
|
+
/* @__PURE__ */ e.jsxs("div", { className: "space-y-2 text-sm text-muted", children: [
|
|
1906
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
1907
|
+
/* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
|
|
1908
|
+
/* @__PURE__ */ e.jsx("span", { children: "Select two runs to compare their parameters, metrics, and artifacts" })
|
|
1909
|
+
] }),
|
|
1910
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
1911
|
+
/* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
|
|
1912
|
+
/* @__PURE__ */ e.jsx("span", { children: "The diff shows changed values and computes TVD for result distributions" })
|
|
1913
|
+
] }),
|
|
1914
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
1915
|
+
/* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
|
|
1916
|
+
/* @__PURE__ */ e.jsx("span", { children: "You can also compare from the run detail page" })
|
|
1917
|
+
] })
|
|
1495
1918
|
] })
|
|
1496
1919
|
] })
|
|
1497
1920
|
] });
|
|
1498
1921
|
}
|
|
1499
|
-
function
|
|
1500
|
-
const { data:
|
|
1501
|
-
if (a)
|
|
1502
|
-
|
|
1503
|
-
|
|
1922
|
+
function Jr({ runIdA: r, runIdB: t }) {
|
|
1923
|
+
const { data: n, loading: a, error: u } = Er(r, t);
|
|
1924
|
+
if (a)
|
|
1925
|
+
return /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col items-center justify-center py-12 gap-3", children: [
|
|
1926
|
+
/* @__PURE__ */ e.jsx(q, {}),
|
|
1927
|
+
/* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted", children: "Comparing runs..." })
|
|
1928
|
+
] }) });
|
|
1929
|
+
if (u || !n)
|
|
1930
|
+
return /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Failed to load diff", hint: u?.message }) });
|
|
1931
|
+
const { run_a: o, run_b: d, report: i } = n, f = i.device_drift?.significant_drift ? { variant: "warning", label: "Drift Detected" } : i.device_drift?.has_calibration_data ? { variant: "success", label: "Stable" } : { variant: "gray", label: "No Data" };
|
|
1504
1932
|
return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
/* @__PURE__ */ e.jsx(
|
|
1508
|
-
|
|
1509
|
-
/* @__PURE__ */ e.jsx(v, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
1510
|
-
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
1511
|
-
/* @__PURE__ */ e.jsx("h3", { className: "text-sm text-muted uppercase tracking-wider mb-1", children: "Run A (Baseline)" }),
|
|
1512
|
-
/* @__PURE__ */ e.jsx("p", { children: /* @__PURE__ */ e.jsx(M, { to: `/runs/${h.run_id}`, children: h.run_name || "Unnamed Run" }) }),
|
|
1513
|
-
/* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm text-muted", children: K(h.run_id) }),
|
|
1514
|
-
/* @__PURE__ */ e.jsxs("p", { className: "text-muted text-sm", children: [
|
|
1515
|
-
h.project,
|
|
1516
|
-
" · ",
|
|
1517
|
-
Te(h.created_at)
|
|
1518
|
-
] })
|
|
1519
|
-
] }),
|
|
1520
|
-
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
1521
|
-
/* @__PURE__ */ e.jsx("h3", { className: "text-sm text-muted uppercase tracking-wider mb-1", children: "Run B (Candidate)" }),
|
|
1522
|
-
/* @__PURE__ */ e.jsx("p", { children: /* @__PURE__ */ e.jsx(M, { to: `/runs/${f.run_id}`, children: f.run_name || "Unnamed Run" }) }),
|
|
1523
|
-
/* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm text-muted", children: K(f.run_id) }),
|
|
1524
|
-
/* @__PURE__ */ e.jsxs("p", { className: "text-muted text-sm", children: [
|
|
1525
|
-
f.project,
|
|
1526
|
-
" · ",
|
|
1527
|
-
Te(f.created_at)
|
|
1528
|
-
] })
|
|
1529
|
-
] })
|
|
1933
|
+
/* @__PURE__ */ e.jsx(Yr, { warnings: i.warnings || [] }),
|
|
1934
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
1935
|
+
/* @__PURE__ */ e.jsx(Ts, { label: "Run A (Baseline)", run: o, variant: "a" }),
|
|
1936
|
+
/* @__PURE__ */ e.jsx(Ts, { label: "Run B (Candidate)", run: d, variant: "b" })
|
|
1530
1937
|
] }) }),
|
|
1531
1938
|
/* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
|
|
1532
|
-
/* @__PURE__ */ e.jsxs(
|
|
1533
|
-
/* @__PURE__ */ e.jsx(
|
|
1534
|
-
/* @__PURE__ */ e.jsx(
|
|
1535
|
-
/* @__PURE__ */ e.jsxs(
|
|
1939
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1940
|
+
/* @__PURE__ */ e.jsx(ae, { children: "Metadata" }),
|
|
1941
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
1942
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1536
1943
|
/* @__PURE__ */ e.jsx(c, { children: "Project" }),
|
|
1537
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1944
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(ye, { match: i.metadata.project_match }) })
|
|
1538
1945
|
] }),
|
|
1539
|
-
/* @__PURE__ */ e.jsxs(
|
|
1946
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1540
1947
|
/* @__PURE__ */ e.jsx(c, { children: "Backend" }),
|
|
1541
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1948
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(ye, { match: i.metadata.backend_match }) })
|
|
1542
1949
|
] }),
|
|
1543
1950
|
!i.metadata.project_match && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1544
|
-
/* @__PURE__ */ e.jsxs(
|
|
1545
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1951
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1952
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Project A" }),
|
|
1546
1953
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.project_a || "N/A" })
|
|
1547
1954
|
] }),
|
|
1548
|
-
/* @__PURE__ */ e.jsxs(
|
|
1549
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1955
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1956
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Project B" }),
|
|
1550
1957
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.project_b || "N/A" })
|
|
1551
1958
|
] })
|
|
1552
1959
|
] }),
|
|
1553
1960
|
!i.metadata.backend_match && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1554
|
-
/* @__PURE__ */ e.jsxs(
|
|
1555
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1961
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1962
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Backend A" }),
|
|
1556
1963
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.backend_a || "N/A" })
|
|
1557
1964
|
] }),
|
|
1558
|
-
/* @__PURE__ */ e.jsxs(
|
|
1559
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1965
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1966
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Backend B" }),
|
|
1560
1967
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.backend_b || "N/A" })
|
|
1561
1968
|
] })
|
|
1562
1969
|
] })
|
|
1563
1970
|
] }) })
|
|
1564
1971
|
] }),
|
|
1565
|
-
/* @__PURE__ */ e.jsxs(
|
|
1566
|
-
/* @__PURE__ */ e.jsx(
|
|
1567
|
-
/* @__PURE__ */ e.jsx(
|
|
1568
|
-
/* @__PURE__ */ e.jsxs(
|
|
1972
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1973
|
+
/* @__PURE__ */ e.jsx(ae, { children: "Fingerprints" }),
|
|
1974
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
1975
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1569
1976
|
/* @__PURE__ */ e.jsx(c, { children: "Run A" }),
|
|
1570
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children:
|
|
1977
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(i.fingerprints.a) })
|
|
1571
1978
|
] }),
|
|
1572
|
-
/* @__PURE__ */ e.jsxs(
|
|
1979
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1573
1980
|
/* @__PURE__ */ e.jsx(c, { children: "Run B" }),
|
|
1574
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children:
|
|
1981
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(i.fingerprints.b) })
|
|
1575
1982
|
] }),
|
|
1576
|
-
/* @__PURE__ */ e.jsxs(
|
|
1983
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1577
1984
|
/* @__PURE__ */ e.jsx(c, { children: "Match" }),
|
|
1578
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1985
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(ye, { match: i.fingerprints.a === i.fingerprints.b }) })
|
|
1579
1986
|
] })
|
|
1580
1987
|
] }) })
|
|
1581
1988
|
] })
|
|
1582
1989
|
] }),
|
|
1583
1990
|
/* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
|
|
1584
|
-
/* @__PURE__ */ e.jsxs(
|
|
1585
|
-
/* @__PURE__ */ e.jsx(
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1991
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1992
|
+
/* @__PURE__ */ e.jsx(
|
|
1993
|
+
ae,
|
|
1994
|
+
{
|
|
1995
|
+
badge: {
|
|
1996
|
+
variant: i.program.exact_match ? "success" : i.program.structural_match ? "info" : "warning",
|
|
1997
|
+
label: i.program.exact_match ? "Exact Match" : i.program.structural_match ? "Structural Match" : "Different"
|
|
1998
|
+
},
|
|
1999
|
+
children: "Program"
|
|
2000
|
+
}
|
|
2001
|
+
),
|
|
2002
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
2003
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1591
2004
|
/* @__PURE__ */ e.jsx(c, { children: "Exact Match" }),
|
|
1592
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
2005
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(ye, { match: i.program.exact_match }) })
|
|
1593
2006
|
] }),
|
|
1594
|
-
/* @__PURE__ */ e.jsxs(
|
|
2007
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1595
2008
|
/* @__PURE__ */ e.jsx(c, { children: "Structural Match" }),
|
|
1596
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
2009
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(ye, { match: i.program.structural_match }) })
|
|
1597
2010
|
] })
|
|
1598
2011
|
] }) })
|
|
1599
2012
|
] }),
|
|
1600
|
-
/* @__PURE__ */ e.jsxs(
|
|
1601
|
-
/* @__PURE__ */ e.jsx(
|
|
1602
|
-
|
|
1603
|
-
i.device_drift?.significant_drift ? /* @__PURE__ */ e.jsx(B, { variant: "warning", children: "Drifted" }) : i.device_drift?.has_calibration_data ? /* @__PURE__ */ e.jsx(B, { variant: "success", children: "Stable" }) : /* @__PURE__ */ e.jsx(B, { variant: "gray", children: "N/A" })
|
|
1604
|
-
] }) }),
|
|
1605
|
-
i.device_drift?.significant_drift ? /* @__PURE__ */ e.jsx("p", { className: "text-sm text-warning", children: "⚠ Significant calibration drift detected" }) : i.device_drift?.has_calibration_data ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Calibration within acceptable thresholds" }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No calibration data available" })
|
|
2013
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
2014
|
+
/* @__PURE__ */ e.jsx(ae, { badge: f, children: "Device Calibration" }),
|
|
2015
|
+
i.device_drift?.significant_drift ? /* @__PURE__ */ e.jsx("p", { className: "text-sm text-warning", children: "Significant calibration drift detected between runs" }) : i.device_drift?.has_calibration_data ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Calibration within acceptable thresholds" }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No calibration data available" })
|
|
1606
2016
|
] })
|
|
1607
2017
|
] }),
|
|
1608
|
-
/* @__PURE__ */ e.jsxs(
|
|
1609
|
-
/* @__PURE__ */ e.jsx(
|
|
1610
|
-
|
|
1611
|
-
/* @__PURE__ */ e.jsx(
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
/* @__PURE__ */ e.jsx(b, { children: "Parameter" }),
|
|
1616
|
-
/* @__PURE__ */ e.jsx(b, { children: "Run A" }),
|
|
1617
|
-
/* @__PURE__ */ e.jsx(b, { children: "Run B" })
|
|
2018
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
2019
|
+
/* @__PURE__ */ e.jsx(ae, { badge: { variant: i.params.match ? "success" : "warning", label: i.params.match ? "Match" : "Different" }, children: "Parameters" }),
|
|
2020
|
+
i.params.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "All parameters match" }) : /* @__PURE__ */ e.jsx(e.Fragment, { children: i.params.changed && Object.keys(i.params.changed).length > 0 && /* @__PURE__ */ e.jsxs(L, { children: [
|
|
2021
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2022
|
+
/* @__PURE__ */ e.jsx(y, { children: "Parameter" }),
|
|
2023
|
+
/* @__PURE__ */ e.jsx(y, { children: "Run A" }),
|
|
2024
|
+
/* @__PURE__ */ e.jsx(y, { children: "Run B" })
|
|
1618
2025
|
] }) }),
|
|
1619
|
-
/* @__PURE__ */ e.jsx(
|
|
1620
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1621
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(
|
|
1622
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(
|
|
1623
|
-
] },
|
|
2026
|
+
/* @__PURE__ */ e.jsx(B, { children: Object.entries(i.params.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2027
|
+
/* @__PURE__ */ e.jsx(c, { children: h }),
|
|
2028
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.a) }),
|
|
2029
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.b) })
|
|
2030
|
+
] }, h)) })
|
|
1624
2031
|
] }) })
|
|
1625
2032
|
] }),
|
|
1626
|
-
/* @__PURE__ */ e.jsxs(
|
|
1627
|
-
/* @__PURE__ */ e.jsx(
|
|
1628
|
-
|
|
1629
|
-
/* @__PURE__ */ e.jsx(
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
/* @__PURE__ */ e.jsx(b, { children: "Metric" }),
|
|
1634
|
-
/* @__PURE__ */ e.jsx(b, { children: "Run A" }),
|
|
1635
|
-
/* @__PURE__ */ e.jsx(b, { children: "Run B" })
|
|
2033
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
2034
|
+
/* @__PURE__ */ e.jsx(ae, { badge: { variant: i.metrics.match ? "success" : "warning", label: i.metrics.match ? "Match" : "Different" }, children: "Metrics" }),
|
|
2035
|
+
i.metrics.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "All metrics match" }) : /* @__PURE__ */ e.jsx(e.Fragment, { children: i.metrics.changed && Object.keys(i.metrics.changed).length > 0 && /* @__PURE__ */ e.jsxs(L, { children: [
|
|
2036
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2037
|
+
/* @__PURE__ */ e.jsx(y, { children: "Metric" }),
|
|
2038
|
+
/* @__PURE__ */ e.jsx(y, { children: "Run A" }),
|
|
2039
|
+
/* @__PURE__ */ e.jsx(y, { children: "Run B" })
|
|
1636
2040
|
] }) }),
|
|
1637
|
-
/* @__PURE__ */ e.jsx(
|
|
1638
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1639
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children:
|
|
1640
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children:
|
|
1641
|
-
] },
|
|
2041
|
+
/* @__PURE__ */ e.jsx(B, { children: Object.entries(i.metrics.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2042
|
+
/* @__PURE__ */ e.jsx(c, { children: h }),
|
|
2043
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.a }),
|
|
2044
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.b })
|
|
2045
|
+
] }, h)) })
|
|
1642
2046
|
] }) })
|
|
1643
2047
|
] }),
|
|
1644
|
-
i.circuit_diff && /* @__PURE__ */ e.jsxs(
|
|
1645
|
-
/* @__PURE__ */ e.jsx(
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
/* @__PURE__ */ e.jsx(
|
|
1655
|
-
/* @__PURE__ */ e.jsx(b, { children: "Run A" }),
|
|
1656
|
-
/* @__PURE__ */ e.jsx(b, { children: "Run B" }),
|
|
1657
|
-
/* @__PURE__ */ e.jsx(b, { children: "Delta" })
|
|
2048
|
+
i.circuit_diff && /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
2049
|
+
/* @__PURE__ */ e.jsx(ae, { badge: { variant: i.circuit_diff.match ? "success" : "warning", label: i.circuit_diff.match ? "Match" : "Different" }, children: "Circuit" }),
|
|
2050
|
+
i.circuit_diff.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Circuit structure matches" }) : /* @__PURE__ */ e.jsxs("div", { className: "space-y-4", children: [
|
|
2051
|
+
i.circuit_diff.changed && Object.keys(i.circuit_diff.changed).length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2052
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Changed Properties" }),
|
|
2053
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
2054
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2055
|
+
/* @__PURE__ */ e.jsx(y, { children: "Property" }),
|
|
2056
|
+
/* @__PURE__ */ e.jsx(y, { children: "Run A" }),
|
|
2057
|
+
/* @__PURE__ */ e.jsx(y, { children: "Run B" }),
|
|
2058
|
+
/* @__PURE__ */ e.jsx(y, { children: "Delta" })
|
|
1658
2059
|
] }) }),
|
|
1659
|
-
/* @__PURE__ */ e.jsx(
|
|
1660
|
-
/* @__PURE__ */ e.jsx(c, { children:
|
|
1661
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(
|
|
1662
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(
|
|
1663
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children:
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
2060
|
+
/* @__PURE__ */ e.jsx(B, { children: Object.entries(i.circuit_diff.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2061
|
+
/* @__PURE__ */ e.jsx(c, { children: m.label || h }),
|
|
2062
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.a) }),
|
|
2063
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.b) }),
|
|
2064
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.delta != null && /* @__PURE__ */ e.jsxs("span", { className: m.delta > 0 ? "text-danger" : "text-success", children: [
|
|
2065
|
+
m.delta > 0 ? "+" : "",
|
|
2066
|
+
m.delta,
|
|
2067
|
+
m.pct != null && ` (${m.pct > 0 ? "+" : ""}${m.pct.toFixed(1)}%)`
|
|
1667
2068
|
] }) })
|
|
1668
|
-
] },
|
|
2069
|
+
] }, h)) })
|
|
1669
2070
|
] })
|
|
1670
2071
|
] }),
|
|
1671
|
-
i.circuit_diff.is_clifford_changed && /* @__PURE__ */ e.jsxs("div", {
|
|
1672
|
-
/* @__PURE__ */ e.jsx("h4", { className: "text-sm
|
|
1673
|
-
/* @__PURE__ */ e.jsx(
|
|
1674
|
-
/* @__PURE__ */ e.jsxs(
|
|
2072
|
+
i.circuit_diff.is_clifford_changed && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2073
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Clifford Status" }),
|
|
2074
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
2075
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1675
2076
|
/* @__PURE__ */ e.jsx(c, { children: "Run A" }),
|
|
1676
2077
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.circuit_diff.is_clifford_a != null ? String(i.circuit_diff.is_clifford_a) : "unknown" })
|
|
1677
2078
|
] }),
|
|
1678
|
-
/* @__PURE__ */ e.jsxs(
|
|
2079
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1679
2080
|
/* @__PURE__ */ e.jsx(c, { children: "Run B" }),
|
|
1680
2081
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.circuit_diff.is_clifford_b != null ? String(i.circuit_diff.is_clifford_b) : "unknown" })
|
|
1681
2082
|
] })
|
|
1682
2083
|
] }) })
|
|
1683
2084
|
] }),
|
|
1684
|
-
i.circuit_diff.added_gates && i.circuit_diff.added_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", {
|
|
1685
|
-
/* @__PURE__ */ e.jsx("h4", { className: "text-sm
|
|
1686
|
-
/* @__PURE__ */ e.jsx("
|
|
2085
|
+
i.circuit_diff.added_gates && i.circuit_diff.added_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2086
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "New Gate Types (in B)" }),
|
|
2087
|
+
/* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-1", children: i.circuit_diff.added_gates.map((h) => /* @__PURE__ */ e.jsx(Y, { variant: "success", children: h }, h)) })
|
|
1687
2088
|
] }),
|
|
1688
|
-
i.circuit_diff.removed_gates && i.circuit_diff.removed_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", {
|
|
1689
|
-
/* @__PURE__ */ e.jsx("h4", { className: "text-sm
|
|
1690
|
-
/* @__PURE__ */ e.jsx("
|
|
2089
|
+
i.circuit_diff.removed_gates && i.circuit_diff.removed_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2090
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Removed Gate Types (from A)" }),
|
|
2091
|
+
/* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-1", children: i.circuit_diff.removed_gates.map((h) => /* @__PURE__ */ e.jsx(Y, { variant: "danger", children: h }, h)) })
|
|
1691
2092
|
] })
|
|
1692
2093
|
] })
|
|
1693
2094
|
] }),
|
|
1694
|
-
i.tvd != null && /* @__PURE__ */ e.jsxs(
|
|
1695
|
-
/* @__PURE__ */ e.jsx(
|
|
1696
|
-
/* @__PURE__ */ e.jsx(
|
|
1697
|
-
/* @__PURE__ */ e.jsxs(
|
|
2095
|
+
i.tvd != null && /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
2096
|
+
/* @__PURE__ */ e.jsx(ae, { children: "Results Distribution" }),
|
|
2097
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
2098
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1698
2099
|
/* @__PURE__ */ e.jsx(c, { children: "Total Variation Distance (TVD)" }),
|
|
1699
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.tvd.toFixed(6) })
|
|
2100
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono font-medium", children: i.tvd.toFixed(6) })
|
|
1700
2101
|
] }),
|
|
1701
|
-
i.shots && /* @__PURE__ */ e.jsxs(
|
|
2102
|
+
i.shots && /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1702
2103
|
/* @__PURE__ */ e.jsx(c, { children: "Total Shots (A / B)" }),
|
|
1703
2104
|
/* @__PURE__ */ e.jsxs(c, { className: "font-mono", children: [
|
|
1704
2105
|
i.shots.a,
|
|
@@ -1706,154 +2107,142 @@ function $s({ runIdA: s, runIdB: n }) {
|
|
|
1706
2107
|
i.shots.b
|
|
1707
2108
|
] })
|
|
1708
2109
|
] }),
|
|
1709
|
-
i.noise_context?.noise_p95 && /* @__PURE__ */ e.jsxs(
|
|
2110
|
+
i.noise_context?.noise_p95 && /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1710
2111
|
/* @__PURE__ */ e.jsx(c, { children: "Noise Threshold (p95)" }),
|
|
1711
2112
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.noise_p95.toFixed(6) })
|
|
1712
2113
|
] }),
|
|
1713
|
-
i.noise_context?.p_value != null && /* @__PURE__ */ e.jsxs(
|
|
2114
|
+
i.noise_context?.p_value != null && /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1714
2115
|
/* @__PURE__ */ e.jsx(c, { children: "p-value" }),
|
|
1715
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.p_value.toFixed(
|
|
2116
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.p_value.toFixed(4) })
|
|
1716
2117
|
] })
|
|
1717
2118
|
] }) }),
|
|
1718
|
-
|
|
1719
|
-
"⚠ Borderline (p=",
|
|
1720
|
-
i.noise_context.p_value.toFixed(2),
|
|
1721
|
-
"). Consider increasing shots."
|
|
1722
|
-
] }) : /* @__PURE__ */ e.jsxs("span", { className: "text-danger", children: [
|
|
1723
|
-
"✗ Statistically significant difference (p=",
|
|
1724
|
-
i.noise_context.p_value.toFixed(2),
|
|
1725
|
-
") — results show meaningful divergence."
|
|
1726
|
-
] }) : i.noise_context.noise_ratio != null ? i.noise_context.noise_ratio < 1.5 ? /* @__PURE__ */ e.jsx("span", { className: "text-success", children: "✓ TVD is within expected shot noise range." }) : i.noise_context.noise_ratio < 3 ? /* @__PURE__ */ e.jsxs("span", { className: "text-warning", children: [
|
|
1727
|
-
"⚠ Ambiguous (",
|
|
1728
|
-
i.noise_context.noise_ratio.toFixed(1),
|
|
1729
|
-
"× expected noise). Consider increasing shots."
|
|
1730
|
-
] }) : /* @__PURE__ */ e.jsxs("span", { className: "text-danger", children: [
|
|
1731
|
-
"✗ TVD exceeds expected noise (",
|
|
1732
|
-
i.noise_context.noise_ratio.toFixed(1),
|
|
1733
|
-
"×) — results show meaningful differences."
|
|
1734
|
-
] }) : null })
|
|
2119
|
+
/* @__PURE__ */ e.jsx(Kr, { tvd: i.tvd, noiseContext: i.noise_context })
|
|
1735
2120
|
] })
|
|
1736
2121
|
] });
|
|
1737
2122
|
}
|
|
1738
|
-
function
|
|
1739
|
-
const [
|
|
1740
|
-
return /* @__PURE__ */ e.jsxs(
|
|
2123
|
+
function Xr() {
|
|
2124
|
+
const [r] = $e(), t = r.get("a"), n = r.get("b"), a = t && n;
|
|
2125
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1741
2126
|
/* @__PURE__ */ e.jsx("div", { className: "page-header", children: /* @__PURE__ */ e.jsxs("div", { children: [
|
|
1742
|
-
/* @__PURE__ */ e.
|
|
1743
|
-
|
|
1744
|
-
a && /* @__PURE__ */ e.jsx(B, { variant: "info", children: "Comparing" })
|
|
1745
|
-
] }),
|
|
1746
|
-
a && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: /* @__PURE__ */ e.jsx(M, { to: "/diff", children: "← Select different runs" }) })
|
|
2127
|
+
/* @__PURE__ */ e.jsx("h1", { className: "page-title", children: "Compare Runs" }),
|
|
2128
|
+
a && /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-1 text-muted", children: /* @__PURE__ */ e.jsx(z, { to: "/diff", children: "← Select different runs" }) })
|
|
1747
2129
|
] }) }),
|
|
1748
|
-
a ? /* @__PURE__ */ e.jsx(
|
|
2130
|
+
a ? /* @__PURE__ */ e.jsx(Jr, { runIdA: t, runIdB: n }) : /* @__PURE__ */ e.jsx(Hr, {})
|
|
1749
2131
|
] });
|
|
1750
2132
|
}
|
|
1751
|
-
function
|
|
1752
|
-
const { api:
|
|
1753
|
-
const
|
|
1754
|
-
return
|
|
1755
|
-
}),
|
|
1756
|
-
|
|
2133
|
+
function Qr() {
|
|
2134
|
+
const { api: r } = K(), [t, n] = S(""), [a, u] = S(null), [o, d] = S(!1), [i, f] = S(""), { mutate: h, loading: m } = Re(async () => {
|
|
2135
|
+
const _ = await r.listRuns({ q: t, limit: 100 });
|
|
2136
|
+
return u(_.runs), d(!0), _;
|
|
2137
|
+
}), p = (_) => {
|
|
2138
|
+
if (_.preventDefault(), !t.trim()) {
|
|
2139
|
+
f("Please enter a search query");
|
|
2140
|
+
return;
|
|
2141
|
+
}
|
|
2142
|
+
f(""), h();
|
|
1757
2143
|
};
|
|
1758
|
-
return /* @__PURE__ */ e.jsxs(
|
|
2144
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1759
2145
|
/* @__PURE__ */ e.jsx("div", { className: "page-header", children: /* @__PURE__ */ e.jsx("h1", { className: "page-title", children: "Search Runs" }) }),
|
|
1760
|
-
/* @__PURE__ */ e.jsx(
|
|
1761
|
-
/* @__PURE__ */ e.jsxs(
|
|
1762
|
-
/* @__PURE__ */ e.jsx(
|
|
2146
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("form", { onSubmit: p, children: [
|
|
2147
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
2148
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "q", children: "Query" }),
|
|
1763
2149
|
/* @__PURE__ */ e.jsx(
|
|
1764
|
-
|
|
2150
|
+
ts,
|
|
1765
2151
|
{
|
|
1766
2152
|
id: "q",
|
|
1767
2153
|
type: "text",
|
|
1768
|
-
value:
|
|
1769
|
-
onChange: (
|
|
2154
|
+
value: t,
|
|
2155
|
+
onChange: (_) => {
|
|
2156
|
+
n(_.target.value), f("");
|
|
2157
|
+
},
|
|
1770
2158
|
placeholder: "metric.fidelity > 0.95 and params.shots = 1000",
|
|
1771
2159
|
className: "font-mono"
|
|
1772
2160
|
}
|
|
1773
2161
|
)
|
|
1774
2162
|
] }),
|
|
2163
|
+
i && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-[#DC4A4A] mb-3", children: i }),
|
|
1775
2164
|
/* @__PURE__ */ e.jsxs("div", { className: "flex gap-2 items-center", children: [
|
|
1776
|
-
/* @__PURE__ */ e.jsxs(
|
|
1777
|
-
|
|
2165
|
+
/* @__PURE__ */ e.jsxs(D, { type: "submit", variant: "primary", disabled: m, children: [
|
|
2166
|
+
m && /* @__PURE__ */ e.jsx(q, {}),
|
|
1778
2167
|
"Search"
|
|
1779
2168
|
] }),
|
|
1780
|
-
|
|
2169
|
+
m && /* @__PURE__ */ e.jsx("span", { className: "text-muted text-sm", children: "Searching..." })
|
|
1781
2170
|
] })
|
|
1782
2171
|
] }) }),
|
|
1783
|
-
|
|
2172
|
+
o && a && /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: a.length > 0 ? /* @__PURE__ */ e.jsx(ns, { runs: a }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted text-center py-8", children: "No runs match your query" }) }),
|
|
1784
2173
|
/* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
1785
|
-
/* @__PURE__ */ e.jsxs(
|
|
1786
|
-
/* @__PURE__ */ e.jsx(
|
|
1787
|
-
/* @__PURE__ */ e.jsxs(
|
|
1788
|
-
/* @__PURE__ */ e.jsx(
|
|
1789
|
-
/* @__PURE__ */ e.jsx(
|
|
1790
|
-
/* @__PURE__ */ e.jsx(
|
|
2174
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
2175
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Query Syntax" }) }),
|
|
2176
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
2177
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2178
|
+
/* @__PURE__ */ e.jsx(y, { children: "Field" }),
|
|
2179
|
+
/* @__PURE__ */ e.jsx(y, { children: "Description" })
|
|
1791
2180
|
] }) }),
|
|
1792
|
-
/* @__PURE__ */ e.jsxs(
|
|
1793
|
-
/* @__PURE__ */ e.jsxs(
|
|
2181
|
+
/* @__PURE__ */ e.jsxs(B, { children: [
|
|
2182
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1794
2183
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "params.X" }),
|
|
1795
2184
|
/* @__PURE__ */ e.jsx(c, { children: "Parameter value" })
|
|
1796
2185
|
] }),
|
|
1797
|
-
/* @__PURE__ */ e.jsxs(
|
|
2186
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1798
2187
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.X" }),
|
|
1799
2188
|
/* @__PURE__ */ e.jsx(c, { children: "Metric value" })
|
|
1800
2189
|
] }),
|
|
1801
|
-
/* @__PURE__ */ e.jsxs(
|
|
2190
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1802
2191
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "tags.X" }),
|
|
1803
2192
|
/* @__PURE__ */ e.jsx(c, { children: "Tag value" })
|
|
1804
2193
|
] }),
|
|
1805
|
-
/* @__PURE__ */ e.jsxs(
|
|
2194
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1806
2195
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "status" }),
|
|
1807
2196
|
/* @__PURE__ */ e.jsx(c, { children: "Run status" })
|
|
1808
2197
|
] }),
|
|
1809
|
-
/* @__PURE__ */ e.jsxs(
|
|
2198
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1810
2199
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "project" }),
|
|
1811
2200
|
/* @__PURE__ */ e.jsx(c, { children: "Project name" })
|
|
1812
2201
|
] }),
|
|
1813
|
-
/* @__PURE__ */ e.jsxs(
|
|
2202
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1814
2203
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "backend" }),
|
|
1815
2204
|
/* @__PURE__ */ e.jsx(c, { children: "Backend name" })
|
|
1816
2205
|
] })
|
|
1817
2206
|
] })
|
|
1818
2207
|
] })
|
|
1819
2208
|
] }),
|
|
1820
|
-
/* @__PURE__ */ e.jsxs(
|
|
1821
|
-
/* @__PURE__ */ e.jsx(
|
|
1822
|
-
/* @__PURE__ */ e.jsxs(
|
|
1823
|
-
/* @__PURE__ */ e.jsx(
|
|
1824
|
-
/* @__PURE__ */ e.jsx(
|
|
1825
|
-
/* @__PURE__ */ e.jsx(
|
|
2209
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
2210
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Operators" }) }),
|
|
2211
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
2212
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2213
|
+
/* @__PURE__ */ e.jsx(y, { children: "Operator" }),
|
|
2214
|
+
/* @__PURE__ */ e.jsx(y, { children: "Description" })
|
|
1826
2215
|
] }) }),
|
|
1827
|
-
/* @__PURE__ */ e.jsxs(
|
|
1828
|
-
/* @__PURE__ */ e.jsxs(
|
|
2216
|
+
/* @__PURE__ */ e.jsxs(B, { children: [
|
|
2217
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1829
2218
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "=" }),
|
|
1830
2219
|
/* @__PURE__ */ e.jsx(c, { children: "Equals" })
|
|
1831
2220
|
] }),
|
|
1832
|
-
/* @__PURE__ */ e.jsxs(
|
|
2221
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1833
2222
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "!=" }),
|
|
1834
2223
|
/* @__PURE__ */ e.jsx(c, { children: "Not equals" })
|
|
1835
2224
|
] }),
|
|
1836
|
-
/* @__PURE__ */ e.jsxs(
|
|
2225
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1837
2226
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: ">" }),
|
|
1838
2227
|
/* @__PURE__ */ e.jsx(c, { children: "Greater than" })
|
|
1839
2228
|
] }),
|
|
1840
|
-
/* @__PURE__ */ e.jsxs(
|
|
2229
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1841
2230
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: ">=" }),
|
|
1842
2231
|
/* @__PURE__ */ e.jsx(c, { children: "Greater or equal" })
|
|
1843
2232
|
] }),
|
|
1844
|
-
/* @__PURE__ */ e.jsxs(
|
|
2233
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1845
2234
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "<" }),
|
|
1846
2235
|
/* @__PURE__ */ e.jsx(c, { children: "Less than" })
|
|
1847
2236
|
] }),
|
|
1848
|
-
/* @__PURE__ */ e.jsxs(
|
|
2237
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1849
2238
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "<=" }),
|
|
1850
2239
|
/* @__PURE__ */ e.jsx(c, { children: "Less or equal" })
|
|
1851
2240
|
] }),
|
|
1852
|
-
/* @__PURE__ */ e.jsxs(
|
|
2241
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1853
2242
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "~" }),
|
|
1854
2243
|
/* @__PURE__ */ e.jsx(c, { children: "Contains" })
|
|
1855
2244
|
] }),
|
|
1856
|
-
/* @__PURE__ */ e.jsxs(
|
|
2245
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1857
2246
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "and" }),
|
|
1858
2247
|
/* @__PURE__ */ e.jsx(c, { children: "Combine conditions" })
|
|
1859
2248
|
] })
|
|
@@ -1861,26 +2250,26 @@ function Is() {
|
|
|
1861
2250
|
] })
|
|
1862
2251
|
] })
|
|
1863
2252
|
] }),
|
|
1864
|
-
/* @__PURE__ */ e.jsxs(
|
|
1865
|
-
/* @__PURE__ */ e.jsx(
|
|
1866
|
-
/* @__PURE__ */ e.jsx(
|
|
1867
|
-
/* @__PURE__ */ e.jsxs(
|
|
2253
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mt-4", children: [
|
|
2254
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Examples" }) }),
|
|
2255
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
2256
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1868
2257
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.fidelity > 0.95" }),
|
|
1869
2258
|
/* @__PURE__ */ e.jsx(c, { children: "High fidelity runs" })
|
|
1870
2259
|
] }),
|
|
1871
|
-
/* @__PURE__ */ e.jsxs(
|
|
2260
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1872
2261
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "params.shots = 1000 and status = FINISHED" }),
|
|
1873
2262
|
/* @__PURE__ */ e.jsx(c, { children: "Finished runs with 1000 shots" })
|
|
1874
2263
|
] }),
|
|
1875
|
-
/* @__PURE__ */ e.jsxs(
|
|
2264
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1876
2265
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "tags.backend ~ ibm" }),
|
|
1877
2266
|
/* @__PURE__ */ e.jsx(c, { children: "Runs with IBM backends" })
|
|
1878
2267
|
] }),
|
|
1879
|
-
/* @__PURE__ */ e.jsxs(
|
|
2268
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1880
2269
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.error < 0.01" }),
|
|
1881
2270
|
/* @__PURE__ */ e.jsx(c, { children: "Low error runs" })
|
|
1882
2271
|
] }),
|
|
1883
|
-
/* @__PURE__ */ e.jsxs(
|
|
2272
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1884
2273
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "project = vqe and metric.energy < -2.0" }),
|
|
1885
2274
|
/* @__PURE__ */ e.jsx(c, { children: "VQE runs with low energy" })
|
|
1886
2275
|
] })
|
|
@@ -1888,144 +2277,172 @@ function Is() {
|
|
|
1888
2277
|
] })
|
|
1889
2278
|
] });
|
|
1890
2279
|
}
|
|
1891
|
-
function
|
|
1892
|
-
const { runId:
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
2280
|
+
function Zr() {
|
|
2281
|
+
const { runId: r, index: t } = es(), n = parseInt(t, 10), { api: a } = K(), { data: u } = Fs(r), { data: o, loading: d, error: i } = Cr(r, n), [f, h] = S(null);
|
|
2282
|
+
je(() => {
|
|
2283
|
+
if (f) {
|
|
2284
|
+
const T = setTimeout(() => h(null), 3e3);
|
|
2285
|
+
return () => clearTimeout(T);
|
|
2286
|
+
}
|
|
2287
|
+
}, [f]);
|
|
2288
|
+
const m = async () => {
|
|
2289
|
+
try {
|
|
2290
|
+
const T = a.getArtifactDownloadUrl(r, n), se = await fetch(T);
|
|
2291
|
+
if (!se.ok) throw new Error("Download failed");
|
|
2292
|
+
const te = await se.blob(), J = document.createElement("a");
|
|
2293
|
+
J.href = URL.createObjectURL(te), J.download = p?.kind || `artifact-${n}`, J.click(), URL.revokeObjectURL(J.href), h({ message: "Download started", variant: "success" });
|
|
2294
|
+
} catch {
|
|
2295
|
+
h({ message: "Download failed", variant: "error" });
|
|
2296
|
+
}
|
|
2297
|
+
};
|
|
2298
|
+
if (d)
|
|
2299
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(q, {}) }) });
|
|
2300
|
+
if (i || !o)
|
|
2301
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Artifact not found", hint: i?.message }) }) });
|
|
2302
|
+
const { artifact: p, size: _, content: U, content_json: w, preview_available: H, error: k } = o, O = 10 * 1024 * 1024;
|
|
2303
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1899
2304
|
/* @__PURE__ */ e.jsx(
|
|
1900
|
-
|
|
2305
|
+
Ee,
|
|
1901
2306
|
{
|
|
1902
|
-
title:
|
|
2307
|
+
title: p.kind,
|
|
1903
2308
|
subtitle: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1904
2309
|
"← Back to run ",
|
|
1905
|
-
/* @__PURE__ */ e.jsxs(
|
|
1906
|
-
|
|
1907
|
-
|
|
2310
|
+
/* @__PURE__ */ e.jsxs(z, { to: `/runs/${r}`, children: [
|
|
2311
|
+
Q(r),
|
|
2312
|
+
u?.run_name && ` — ${u.run_name}`
|
|
1908
2313
|
] })
|
|
1909
2314
|
] }),
|
|
1910
|
-
actions: /* @__PURE__ */ e.jsx(
|
|
2315
|
+
actions: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download" })
|
|
1911
2316
|
}
|
|
1912
2317
|
),
|
|
1913
|
-
/* @__PURE__ */ e.jsx(
|
|
1914
|
-
{ label: "Kind", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono", children:
|
|
1915
|
-
{ label: "Role", value: /* @__PURE__ */ e.jsx(
|
|
1916
|
-
{ label: "Media Type", value:
|
|
1917
|
-
{ label: "Digest", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm", children:
|
|
1918
|
-
{ label: "Size", value:
|
|
2318
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsx(Je, { items: [
|
|
2319
|
+
{ label: "Kind", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono", children: p.kind }) },
|
|
2320
|
+
{ label: "Role", value: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: p.role }) },
|
|
2321
|
+
{ label: "Media Type", value: p.media_type },
|
|
2322
|
+
{ label: "Digest", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm", children: p.digest }) },
|
|
2323
|
+
{ label: "Size", value: Oe(_) }
|
|
1919
2324
|
] }) }),
|
|
1920
|
-
/* @__PURE__ */ e.jsxs(
|
|
1921
|
-
/* @__PURE__ */ e.jsx(
|
|
1922
|
-
|
|
2325
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
2326
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Content" }) }),
|
|
2327
|
+
k ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1923
2328
|
/* @__PURE__ */ e.jsxs("p", { className: "text-sm text-danger", children: [
|
|
1924
|
-
"
|
|
1925
|
-
|
|
2329
|
+
"Error loading artifact: ",
|
|
2330
|
+
k
|
|
1926
2331
|
] }),
|
|
1927
|
-
/* @__PURE__ */ e.jsx("p", { className: "text-muted mt-2", children: /* @__PURE__ */ e.jsx(
|
|
1928
|
-
] }) :
|
|
2332
|
+
/* @__PURE__ */ e.jsx("p", { className: "text-muted mt-2", children: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download to view" }) })
|
|
2333
|
+
] }) : H ? w ? /* @__PURE__ */ e.jsx("pre", { children: Tr(w) }) : U ? /* @__PURE__ */ e.jsx("pre", { children: U }) : /* @__PURE__ */ e.jsxs("p", { className: "text-muted", children: [
|
|
1929
2334
|
"Binary content (",
|
|
1930
|
-
|
|
2335
|
+
Oe(_),
|
|
1931
2336
|
") — download to view"
|
|
1932
2337
|
] }) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1933
2338
|
/* @__PURE__ */ e.jsxs("p", { className: "text-muted", children: [
|
|
1934
2339
|
/* @__PURE__ */ e.jsx("strong", { children: "Artifact too large for preview" }),
|
|
1935
2340
|
" (",
|
|
1936
|
-
|
|
2341
|
+
Oe(_),
|
|
1937
2342
|
" exceeds ",
|
|
1938
|
-
|
|
2343
|
+
Oe(O),
|
|
1939
2344
|
" limit)"
|
|
1940
2345
|
] }),
|
|
1941
2346
|
/* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-2", children: "Download the artifact to view its contents." }),
|
|
1942
|
-
/* @__PURE__ */ e.jsx("p", { className: "mt-4", children: /* @__PURE__ */ e.jsx(
|
|
2347
|
+
/* @__PURE__ */ e.jsx("p", { className: "mt-4", children: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download" }) })
|
|
1943
2348
|
] })
|
|
1944
|
-
] })
|
|
2349
|
+
] }),
|
|
2350
|
+
f && /* @__PURE__ */ e.jsx(
|
|
2351
|
+
Ce,
|
|
2352
|
+
{
|
|
2353
|
+
message: f.message,
|
|
2354
|
+
variant: f.variant,
|
|
2355
|
+
visible: !!f,
|
|
2356
|
+
onClose: () => h(null)
|
|
2357
|
+
}
|
|
2358
|
+
)
|
|
1945
2359
|
] });
|
|
1946
2360
|
}
|
|
1947
|
-
const
|
|
1948
|
-
{ path: "/", element: /* @__PURE__ */ e.jsx(
|
|
1949
|
-
{ path: "/runs", element: /* @__PURE__ */ e.jsx(
|
|
1950
|
-
{ path: "/runs/:runId", element: /* @__PURE__ */ e.jsx(
|
|
1951
|
-
{ path: "/runs/:runId/artifacts/:index", element: /* @__PURE__ */ e.jsx(
|
|
1952
|
-
{ path: "/projects", element: /* @__PURE__ */ e.jsx(
|
|
1953
|
-
{ path: "/groups", element: /* @__PURE__ */ e.jsx(
|
|
1954
|
-
{ path: "/groups/:groupId", element: /* @__PURE__ */ e.jsx(
|
|
1955
|
-
{ path: "/diff", element: /* @__PURE__ */ e.jsx(
|
|
1956
|
-
{ path: "/search", element: /* @__PURE__ */ e.jsx(
|
|
2361
|
+
const et = [
|
|
2362
|
+
{ path: "/", element: /* @__PURE__ */ e.jsx(mr, { to: "/runs", replace: !0 }) },
|
|
2363
|
+
{ path: "/runs", element: /* @__PURE__ */ e.jsx(Ar, {}) },
|
|
2364
|
+
{ path: "/runs/:runId", element: /* @__PURE__ */ e.jsx(Ir, {}) },
|
|
2365
|
+
{ path: "/runs/:runId/artifacts/:index", element: /* @__PURE__ */ e.jsx(Zr, {}) },
|
|
2366
|
+
{ path: "/projects", element: /* @__PURE__ */ e.jsx(Ur, {}) },
|
|
2367
|
+
{ path: "/groups", element: /* @__PURE__ */ e.jsx(Mr, {}) },
|
|
2368
|
+
{ path: "/groups/:groupId", element: /* @__PURE__ */ e.jsx(Wr, {}) },
|
|
2369
|
+
{ path: "/diff", element: /* @__PURE__ */ e.jsx(Xr, {}) },
|
|
2370
|
+
{ path: "/search", element: /* @__PURE__ */ e.jsx(Qr, {}) }
|
|
1957
2371
|
];
|
|
1958
|
-
function
|
|
1959
|
-
return
|
|
2372
|
+
function Bs(r = []) {
|
|
2373
|
+
return fr([...et, ...r]);
|
|
1960
2374
|
}
|
|
1961
|
-
const
|
|
1962
|
-
function
|
|
1963
|
-
const
|
|
1964
|
-
return /* @__PURE__ */ e.jsx(
|
|
2375
|
+
const st = Bs();
|
|
2376
|
+
function ot({ additionalRoutes: r, ...t }) {
|
|
2377
|
+
const n = r?.length ? Bs(r) : st;
|
|
2378
|
+
return /* @__PURE__ */ e.jsx(_r, { ...t, children: /* @__PURE__ */ e.jsx(jr, { router: n }) });
|
|
1965
2379
|
}
|
|
1966
2380
|
export {
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2381
|
+
lt as Alert,
|
|
2382
|
+
br as ApiClient,
|
|
2383
|
+
we as ApiError,
|
|
2384
|
+
ot as App,
|
|
2385
|
+
_r as AppProvider,
|
|
2386
|
+
Zr as ArtifactPage,
|
|
2387
|
+
Y as Badge,
|
|
2388
|
+
D as Button,
|
|
2389
|
+
b as Card,
|
|
2390
|
+
W as CardHeader,
|
|
2391
|
+
G as CardTitle,
|
|
2392
|
+
Xr as DiffPage,
|
|
2393
|
+
he as EmptyState,
|
|
2394
|
+
ee as FormGroup,
|
|
2395
|
+
$s as FormRow,
|
|
2396
|
+
Wr as GroupDetailPage,
|
|
2397
|
+
Mr as GroupsPage,
|
|
2398
|
+
Or as GroupsTable,
|
|
2399
|
+
ts as Input,
|
|
2400
|
+
Je as KVList,
|
|
2401
|
+
ie as Label,
|
|
2402
|
+
V as Layout,
|
|
2403
|
+
ct as LayoutConfigProvider,
|
|
2404
|
+
rs as Modal,
|
|
2405
|
+
Ee as PageHeader,
|
|
2406
|
+
Ur as ProjectsPage,
|
|
2407
|
+
Fr as ProjectsTable,
|
|
2408
|
+
Ir as RunDetailPage,
|
|
2409
|
+
Ar as RunsPage,
|
|
2410
|
+
ns as RunsTable,
|
|
2411
|
+
Qr as SearchPage,
|
|
2412
|
+
de as Select,
|
|
2413
|
+
q as Spinner,
|
|
2414
|
+
Ls as StatusBadge,
|
|
2415
|
+
L as Table,
|
|
2416
|
+
B as TableBody,
|
|
2003
2417
|
c as TableCell,
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2418
|
+
re as TableHead,
|
|
2419
|
+
y as TableHeader,
|
|
2420
|
+
j as TableRow,
|
|
2421
|
+
nt as ThemeProvider,
|
|
2422
|
+
Ce as Toast,
|
|
2423
|
+
Nr as api,
|
|
2424
|
+
it as buildUrl,
|
|
2425
|
+
$ as cn,
|
|
2426
|
+
et as coreRoutes,
|
|
2427
|
+
Bs as createRouter,
|
|
2428
|
+
Oe as formatBytes,
|
|
2429
|
+
kr as formatNumber,
|
|
2430
|
+
Tr as jsonPretty,
|
|
2431
|
+
st as router,
|
|
2432
|
+
He as shortDigest,
|
|
2433
|
+
Q as shortId,
|
|
2434
|
+
ss as timeAgo,
|
|
2435
|
+
Pr as truncate,
|
|
2436
|
+
K as useApp,
|
|
2437
|
+
Cr as useArtifact,
|
|
2438
|
+
Er as useDiff,
|
|
2439
|
+
Rr as useGroup,
|
|
2440
|
+
wr as useGroups,
|
|
2441
|
+
Dr as useLayoutConfig,
|
|
2442
|
+
Re as useMutation,
|
|
2443
|
+
Le as useProjects,
|
|
2444
|
+
Fs as useRun,
|
|
2445
|
+
As as useRuns,
|
|
2446
|
+
yr as useTheme,
|
|
2447
|
+
at as useThemeOptional
|
|
2031
2448
|
};
|