@devqubit/ui 0.1.10 → 0.1.11
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/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/index.cjs +8 -8
- package/dist/index.js +1627 -1236
- 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 ks, { useState as T, useEffect as je, useContext as Ss, useCallback as _e, createContext as Ps, useRef as _s, forwardRef as Xe } from "react";
|
|
2
|
+
import { useLocation as ur, Link as z, useSearchParams as $e, useParams as Qe, useNavigate as hr, Navigate as xr, createBrowserRouter as mr, RouterProvider as fr } from "react-router-dom";
|
|
3
|
+
var Fe = { exports: {} }, be = {};
|
|
4
|
+
var ws;
|
|
5
|
+
function jr() {
|
|
6
|
+
if (ws) return be;
|
|
7
|
+
ws = 1;
|
|
8
|
+
var r = ks, 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 ye = {};
|
|
19
|
+
var Rs;
|
|
20
|
+
function pr() {
|
|
21
|
+
return Rs || (Rs = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
22
|
+
var r = ks, 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 S(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 Ie(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 y(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" && S("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 Ie(s, s.render, "ForwardRef");
|
|
97
|
+
case p:
|
|
98
|
+
var g = s.displayName || null;
|
|
99
|
+
return g !== null ? g : y(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 y(R(C));
|
|
104
104
|
} catch {
|
|
105
105
|
return null;
|
|
106
106
|
}
|
|
@@ -108,999 +108,1052 @@ function hs() {
|
|
|
108
108
|
}
|
|
109
109
|
return null;
|
|
110
110
|
}
|
|
111
|
-
var
|
|
112
|
-
function
|
|
111
|
+
var P = Object.assign, ce = 0, ge, Se, le, ts, ns, as, is;
|
|
112
|
+
function cs() {
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
function
|
|
114
|
+
cs.__reactDisabledLog = !0;
|
|
115
|
+
function Bs() {
|
|
116
116
|
{
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
var
|
|
117
|
+
if (ce === 0) {
|
|
118
|
+
ge = console.log, Se = console.info, le = console.warn, ts = console.error, ns = console.group, as = console.groupCollapsed, is = console.groupEnd;
|
|
119
|
+
var s = {
|
|
120
120
|
configurable: !0,
|
|
121
121
|
enumerable: !0,
|
|
122
|
-
value:
|
|
122
|
+
value: cs,
|
|
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: Se
|
|
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: ts
|
|
158
158
|
}),
|
|
159
|
-
group:
|
|
160
|
-
value:
|
|
159
|
+
group: P({}, s, {
|
|
160
|
+
value: ns
|
|
161
161
|
}),
|
|
162
|
-
groupCollapsed:
|
|
163
|
-
value:
|
|
162
|
+
groupCollapsed: P({}, s, {
|
|
163
|
+
value: as
|
|
164
164
|
}),
|
|
165
|
-
groupEnd:
|
|
166
|
-
value:
|
|
165
|
+
groupEnd: P({}, s, {
|
|
166
|
+
value: is
|
|
167
167
|
})
|
|
168
168
|
});
|
|
169
169
|
}
|
|
170
|
-
|
|
170
|
+
ce < 0 && S("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
var
|
|
174
|
-
function
|
|
173
|
+
var qe = 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, Te;
|
|
188
188
|
{
|
|
189
|
-
var
|
|
190
|
-
|
|
189
|
+
var qs = typeof WeakMap == "function" ? WeakMap : Map;
|
|
190
|
+
Te = new qs();
|
|
191
191
|
}
|
|
192
|
-
function
|
|
193
|
-
if (!
|
|
192
|
+
function ls(s, l) {
|
|
193
|
+
if (!s || Me)
|
|
194
194
|
return "";
|
|
195
195
|
{
|
|
196
|
-
var
|
|
197
|
-
if (
|
|
198
|
-
return
|
|
196
|
+
var x = Te.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 = qe.current, qe.current = null, Bs();
|
|
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
|
-
`),
|
|
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
|
+
`), q = g.stack.split(`
|
|
242
|
+
`), A = v.length - 1, F = q.length - 1; A >= 1 && F >= 0 && v[A] !== q[F]; )
|
|
243
|
+
F--;
|
|
244
|
+
for (; A >= 1 && F >= 0; A--, F--)
|
|
245
|
+
if (v[A] !== q[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] !== q[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" && Te.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, qe.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" && Te.set(s, oe), oe;
|
|
262
262
|
}
|
|
263
|
-
function
|
|
264
|
-
return
|
|
263
|
+
function Us(s, l, x) {
|
|
264
|
+
return ls(s, !1);
|
|
265
265
|
}
|
|
266
|
-
function
|
|
267
|
-
var l =
|
|
266
|
+
function Ms(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 ls(s, Ms(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 Us(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, os = {}, ds = 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
|
+
ds.setExtraStackFrame(x);
|
|
304
304
|
} else
|
|
305
|
-
|
|
305
|
+
ds.setExtraStackFrame(null);
|
|
306
306
|
}
|
|
307
|
-
function
|
|
307
|
+
function Ws(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
|
|
316
|
-
throw
|
|
314
|
+
if (typeof s[R] != "function") {
|
|
315
|
+
var q = 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
|
+
throw q.name = "Invariant Violation", q;
|
|
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), S("%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 os) && (os[v.message] = !0, Ae(E), S("Failed %s type: %s", x, v.message), Ae(null));
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
-
var
|
|
327
|
-
function
|
|
328
|
-
return
|
|
326
|
+
var Gs = Array.isArray;
|
|
327
|
+
function We(s) {
|
|
328
|
+
return Gs(s);
|
|
329
329
|
}
|
|
330
|
-
function
|
|
330
|
+
function Vs(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 zs(s) {
|
|
337
337
|
try {
|
|
338
|
-
return
|
|
338
|
+
return us(s), !1;
|
|
339
339
|
} catch {
|
|
340
340
|
return !0;
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
|
-
function
|
|
344
|
-
return "" +
|
|
343
|
+
function us(s) {
|
|
344
|
+
return "" + s;
|
|
345
345
|
}
|
|
346
|
-
function
|
|
347
|
-
if (
|
|
348
|
-
return
|
|
346
|
+
function hs(s) {
|
|
347
|
+
if (zs(s))
|
|
348
|
+
return S("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Vs(s)), us(s);
|
|
349
349
|
}
|
|
350
|
-
var
|
|
350
|
+
var xs = O.ReactCurrentOwner, Ys = {
|
|
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
|
+
}, ms, fs;
|
|
356
|
+
function Ks(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 Hs(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 Js(s, l) {
|
|
373
|
+
typeof s.ref == "string" && xs.current;
|
|
374
374
|
}
|
|
375
|
-
function
|
|
375
|
+
function Xs(s, l) {
|
|
376
376
|
{
|
|
377
|
-
var
|
|
378
|
-
|
|
377
|
+
var x = function() {
|
|
378
|
+
ms || (ms = !0, S("%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 Qs(s, l) {
|
|
387
387
|
{
|
|
388
|
-
var
|
|
389
|
-
|
|
388
|
+
var x = function() {
|
|
389
|
+
fs || (fs = !0, S("%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 Zs = 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 er(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, q = null;
|
|
429
|
+
x !== void 0 && (hs(x), v = "" + x), Hs(l) && (hs(l.key), v = "" + l.key), Ks(l) && (q = l.ref, Js(l, E));
|
|
430
|
+
for (C in l)
|
|
431
|
+
ve.call(l, C) && !Ys.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 || q) {
|
|
438
|
+
var F = typeof s == "function" ? s.displayName || s.name || "Unknown" : s;
|
|
439
|
+
v && Xs(R, F), q && Qs(R, F);
|
|
440
440
|
}
|
|
441
|
-
return
|
|
441
|
+
return Zs(s, v, q, E, g, xs.current, R);
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
|
-
var
|
|
445
|
-
function
|
|
446
|
-
if (
|
|
447
|
-
var l =
|
|
448
|
-
|
|
444
|
+
var Ge = O.ReactCurrentOwner, js = 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
|
+
js.setExtraStackFrame(x);
|
|
449
449
|
} else
|
|
450
|
-
|
|
450
|
+
js.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 ps() {
|
|
458
458
|
{
|
|
459
|
-
if (
|
|
460
|
-
var
|
|
461
|
-
if (
|
|
459
|
+
if (Ge.current) {
|
|
460
|
+
var s = y(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 sr(s) {
|
|
470
470
|
return "";
|
|
471
471
|
}
|
|
472
|
-
var
|
|
473
|
-
function
|
|
472
|
+
var gs = {};
|
|
473
|
+
function rr(s) {
|
|
474
474
|
{
|
|
475
|
-
var l =
|
|
475
|
+
var l = ps();
|
|
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 vs(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 = rr(l);
|
|
491
|
+
if (gs[x])
|
|
492
492
|
return;
|
|
493
|
-
|
|
494
|
-
var
|
|
495
|
-
|
|
493
|
+
gs[x] = !0;
|
|
494
|
+
var g = "";
|
|
495
|
+
s && s._owner && s._owner !== Ge.current && (g = " It was passed a child from " + y(s._owner.type) + "."), me(s), S('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 bs(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) && vs(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) && vs(R.value, l);
|
|
514
514
|
}
|
|
515
515
|
}
|
|
516
516
|
}
|
|
517
|
-
function
|
|
517
|
+
function tr(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 = y(l);
|
|
533
|
+
Ws(x, s.props, "prop", g, s);
|
|
534
|
+
} else if (l.PropTypes !== void 0 && !Ve) {
|
|
535
|
+
Ve = !0;
|
|
536
|
+
var E = y(l);
|
|
537
|
+
S("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 && S("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
|
|
540
540
|
}
|
|
541
541
|
}
|
|
542
|
-
function
|
|
542
|
+
function nr(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), S("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), S("Invalid attribute `ref` supplied to `React.Fragment`."), me(null));
|
|
552
552
|
}
|
|
553
553
|
}
|
|
554
|
-
var
|
|
555
|
-
function
|
|
554
|
+
var ys = {};
|
|
555
|
+
function Ns(s, l, x, g, E, C) {
|
|
556
556
|
{
|
|
557
|
-
var
|
|
558
|
-
if (!
|
|
559
|
-
var
|
|
560
|
-
(
|
|
561
|
-
var
|
|
562
|
-
|
|
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 q = sr();
|
|
562
|
+
q ? v += q : v += ps();
|
|
563
|
+
var A;
|
|
564
|
+
s === null ? A = "null" : We(s) ? A = "array" : s !== void 0 && s.$$typeof === t ? (A = "<" + (y(s.type) || "Unknown") + " />", v = " Did you accidentally export a JSX literal instead of a component?") : A = typeof s, S("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 = er(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
|
+
bs(X[fe], s);
|
|
576
|
+
Object.freeze && Object.freeze(X);
|
|
577
577
|
} else
|
|
578
|
-
|
|
578
|
+
S("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
|
+
bs(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 = y(s), M = Object.keys(l).filter(function(dr) {
|
|
584
|
+
return dr !== "key";
|
|
585
|
+
}), Ye = M.length > 0 ? "{key: someKey, " + M.join(": ..., ") + ": ...}" : "{key: someKey}";
|
|
586
|
+
if (!ys[oe + Ye]) {
|
|
587
|
+
var or = M.length > 0 ? "{" + M.join(": ..., ") + ": ...}" : "{}";
|
|
588
|
+
S(`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, or, oe), ys[oe + Ye] = !0;
|
|
594
594
|
}
|
|
595
595
|
}
|
|
596
|
-
return
|
|
596
|
+
return s === a ? nr(F) : tr(F), F;
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
|
-
function
|
|
600
|
-
return
|
|
599
|
+
function ar(s, l, x) {
|
|
600
|
+
return Ns(s, l, x, !0);
|
|
601
601
|
}
|
|
602
|
-
function
|
|
603
|
-
return
|
|
602
|
+
function ir(s, l, x) {
|
|
603
|
+
return Ns(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 cr = ir, lr = ar;
|
|
606
|
+
ye.Fragment = a, ye.jsx = cr, ye.jsxs = lr;
|
|
607
|
+
})()), ye;
|
|
608
|
+
}
|
|
609
|
+
var Es;
|
|
610
|
+
function gr() {
|
|
611
|
+
return Es || (Es = 1, process.env.NODE_ENV === "production" ? Fe.exports = jr() : Fe.exports = pr()), Fe.exports;
|
|
612
|
+
}
|
|
613
|
+
var e = gr();
|
|
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 vr {
|
|
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
|
-
children:
|
|
691
|
-
api:
|
|
692
|
-
initialWorkspace:
|
|
697
|
+
const br = new vr(), Ts = Ps(null);
|
|
698
|
+
function yr({
|
|
699
|
+
children: r,
|
|
700
|
+
api: t = br,
|
|
701
|
+
initialWorkspace: n = null
|
|
693
702
|
}) {
|
|
694
|
-
const [a,
|
|
695
|
-
return
|
|
696
|
-
|
|
697
|
-
}, [
|
|
698
|
-
}
|
|
699
|
-
function
|
|
700
|
-
const
|
|
701
|
-
if (!
|
|
702
|
-
return
|
|
703
|
-
}
|
|
704
|
-
function
|
|
705
|
-
const [
|
|
703
|
+
const [a, u] = T(null), [o, d] = T(n);
|
|
704
|
+
return je(() => {
|
|
705
|
+
t.getCapabilities().then(u).catch(console.error);
|
|
706
|
+
}, [t]), /* @__PURE__ */ e.jsx(Ts.Provider, { value: { api: t, capabilities: a, currentWorkspace: o, setCurrentWorkspace: d }, children: r });
|
|
707
|
+
}
|
|
708
|
+
function K() {
|
|
709
|
+
const r = Ss(Ts);
|
|
710
|
+
if (!r) throw new Error("useApp must be used within AppProvider");
|
|
711
|
+
return r;
|
|
712
|
+
}
|
|
713
|
+
function ue(r, t = []) {
|
|
714
|
+
const [n, a] = T({
|
|
706
715
|
data: null,
|
|
707
716
|
loading: !0,
|
|
708
717
|
error: null
|
|
709
|
-
}),
|
|
710
|
-
|
|
711
|
-
const
|
|
718
|
+
}), u = _s(!0), o = _s(r);
|
|
719
|
+
o.current = r;
|
|
720
|
+
const d = _e(async () => {
|
|
712
721
|
a((i) => ({ ...i, loading: !0, error: null }));
|
|
713
722
|
try {
|
|
714
|
-
const i = await
|
|
715
|
-
|
|
723
|
+
const i = await o.current();
|
|
724
|
+
u.current && a({ data: i, loading: !1, error: null });
|
|
716
725
|
} catch (i) {
|
|
717
|
-
|
|
726
|
+
u.current && a({
|
|
718
727
|
data: null,
|
|
719
728
|
loading: !1,
|
|
720
|
-
error: i instanceof
|
|
729
|
+
error: i instanceof we ? i : new we(500, String(i))
|
|
721
730
|
});
|
|
722
731
|
}
|
|
723
732
|
}, []);
|
|
724
|
-
return
|
|
725
|
-
|
|
726
|
-
}),
|
|
727
|
-
}
|
|
728
|
-
function
|
|
729
|
-
const { api:
|
|
730
|
-
return
|
|
731
|
-
() =>
|
|
732
|
-
[
|
|
733
|
+
return je(() => (u.current = !0, d(), () => {
|
|
734
|
+
u.current = !1;
|
|
735
|
+
}), t), { ...n, refetch: d };
|
|
736
|
+
}
|
|
737
|
+
function Ds(r) {
|
|
738
|
+
const { api: t, currentWorkspace: n } = K();
|
|
739
|
+
return ue(
|
|
740
|
+
() => t.listRuns({ ...r, workspace: n?.id }),
|
|
741
|
+
[t, n?.id, r?.project, r?.status, r?.q, r?.limit]
|
|
733
742
|
);
|
|
734
743
|
}
|
|
735
|
-
function
|
|
736
|
-
const { api:
|
|
737
|
-
return
|
|
744
|
+
function As(r) {
|
|
745
|
+
const { api: t } = K();
|
|
746
|
+
return ue(
|
|
738
747
|
async () => {
|
|
739
|
-
const { run:
|
|
740
|
-
return
|
|
748
|
+
const { run: n } = await t.getRun(r);
|
|
749
|
+
return n;
|
|
741
750
|
},
|
|
742
|
-
[
|
|
751
|
+
[t, r]
|
|
743
752
|
);
|
|
744
753
|
}
|
|
745
|
-
function
|
|
746
|
-
const { api:
|
|
747
|
-
return
|
|
754
|
+
function Le() {
|
|
755
|
+
const { api: r, currentWorkspace: t } = K();
|
|
756
|
+
return ue(
|
|
748
757
|
async () => {
|
|
749
|
-
const { projects:
|
|
750
|
-
return
|
|
758
|
+
const { projects: n } = await r.listProjects({ workspace: t?.id });
|
|
759
|
+
return n;
|
|
751
760
|
},
|
|
752
|
-
[
|
|
761
|
+
[r, t?.id]
|
|
753
762
|
);
|
|
754
763
|
}
|
|
755
|
-
function
|
|
756
|
-
const { api:
|
|
757
|
-
return
|
|
764
|
+
function Nr(r) {
|
|
765
|
+
const { api: t, currentWorkspace: n } = K();
|
|
766
|
+
return ue(
|
|
758
767
|
async () => {
|
|
759
|
-
const { groups: a } = await
|
|
768
|
+
const { groups: a } = await t.listGroups({ ...r, workspace: n?.id });
|
|
760
769
|
return a;
|
|
761
770
|
},
|
|
762
|
-
[
|
|
771
|
+
[t, n?.id, r?.project]
|
|
763
772
|
);
|
|
764
773
|
}
|
|
765
|
-
function
|
|
766
|
-
const { api:
|
|
767
|
-
return
|
|
768
|
-
() =>
|
|
769
|
-
[
|
|
774
|
+
function _r(r) {
|
|
775
|
+
const { api: t } = K();
|
|
776
|
+
return ue(
|
|
777
|
+
() => t.getGroup(r),
|
|
778
|
+
[t, r]
|
|
770
779
|
);
|
|
771
780
|
}
|
|
772
|
-
function
|
|
773
|
-
const { api:
|
|
774
|
-
return
|
|
775
|
-
() =>
|
|
776
|
-
[
|
|
781
|
+
function wr(r, t) {
|
|
782
|
+
const { api: n } = K();
|
|
783
|
+
return ue(
|
|
784
|
+
() => n.getDiff(r, t),
|
|
785
|
+
[n, r, t]
|
|
777
786
|
);
|
|
778
787
|
}
|
|
779
|
-
function
|
|
780
|
-
const { api:
|
|
781
|
-
return
|
|
782
|
-
() =>
|
|
783
|
-
[
|
|
788
|
+
function Rr(r, t) {
|
|
789
|
+
const { api: n } = K();
|
|
790
|
+
return ue(
|
|
791
|
+
() => n.getArtifact(r, t),
|
|
792
|
+
[n, r, t]
|
|
784
793
|
);
|
|
785
794
|
}
|
|
786
|
-
function
|
|
787
|
-
const [
|
|
788
|
-
return { mutate:
|
|
789
|
-
|
|
795
|
+
function Re(r) {
|
|
796
|
+
const [t, n] = T(!1), [a, u] = T(null);
|
|
797
|
+
return { mutate: _e(async (...d) => {
|
|
798
|
+
n(!0), u(null);
|
|
790
799
|
try {
|
|
791
|
-
return await
|
|
800
|
+
return await r(...d);
|
|
792
801
|
} catch (i) {
|
|
793
|
-
const
|
|
794
|
-
throw
|
|
802
|
+
const f = i instanceof we ? i : new we(500, String(i));
|
|
803
|
+
throw u(f), f;
|
|
795
804
|
} finally {
|
|
796
|
-
|
|
805
|
+
n(!1);
|
|
797
806
|
}
|
|
798
|
-
}, [
|
|
807
|
+
}, [r]), loading: t, error: a };
|
|
799
808
|
}
|
|
800
|
-
function
|
|
801
|
-
return
|
|
809
|
+
function Q(r) {
|
|
810
|
+
return r?.slice(0, 8) ?? "";
|
|
802
811
|
}
|
|
803
|
-
function
|
|
804
|
-
return
|
|
812
|
+
function He(r) {
|
|
813
|
+
return r?.slice(0, 12) ?? "N/A";
|
|
805
814
|
}
|
|
806
|
-
function
|
|
807
|
-
const
|
|
815
|
+
function Ze(r) {
|
|
816
|
+
const t = new Date(r), a = Math.floor(((/* @__PURE__ */ new Date()).getTime() - t.getTime()) / 1e3);
|
|
808
817
|
if (a < 60) return "just now";
|
|
809
818
|
if (a < 3600) {
|
|
810
|
-
const
|
|
811
|
-
return `${
|
|
819
|
+
const o = Math.floor(a / 60);
|
|
820
|
+
return `${o} minute${o !== 1 ? "s" : ""} ago`;
|
|
812
821
|
}
|
|
813
822
|
if (a < 86400) {
|
|
814
|
-
const
|
|
815
|
-
return `${
|
|
823
|
+
const o = Math.floor(a / 3600);
|
|
824
|
+
return `${o} hour${o !== 1 ? "s" : ""} ago`;
|
|
816
825
|
}
|
|
817
826
|
if (a < 2592e3) {
|
|
818
|
-
const
|
|
819
|
-
return `${
|
|
827
|
+
const o = Math.floor(a / 86400);
|
|
828
|
+
return `${o} day${o !== 1 ? "s" : ""} ago`;
|
|
820
829
|
}
|
|
821
830
|
if (a < 31536e3) {
|
|
822
|
-
const
|
|
823
|
-
return `${
|
|
831
|
+
const o = Math.floor(a / 2592e3);
|
|
832
|
+
return `${o} month${o !== 1 ? "s" : ""} ago`;
|
|
824
833
|
}
|
|
825
|
-
const
|
|
826
|
-
return `${
|
|
834
|
+
const u = Math.floor(a / 31536e3);
|
|
835
|
+
return `${u} year${u !== 1 ? "s" : ""} ago`;
|
|
827
836
|
}
|
|
828
|
-
function
|
|
829
|
-
return typeof
|
|
837
|
+
function Er(r, t = 6) {
|
|
838
|
+
return typeof r != "number" || isNaN(r) ? String(r) : Number(r.toPrecision(t)).toString();
|
|
830
839
|
}
|
|
831
|
-
function
|
|
832
|
-
return
|
|
840
|
+
function Oe(r) {
|
|
841
|
+
return r < 1024 ? `${r} bytes` : r < 1048576 ? `${(r / 1024).toFixed(1)} KB` : `${(r / 1048576).toFixed(1)} MB`;
|
|
833
842
|
}
|
|
834
|
-
function
|
|
835
|
-
return JSON.stringify(
|
|
843
|
+
function Cr(r) {
|
|
844
|
+
return JSON.stringify(r, null, 2);
|
|
836
845
|
}
|
|
837
|
-
function
|
|
838
|
-
return
|
|
846
|
+
function kr(r, t = 60) {
|
|
847
|
+
return r ? r.length <= t ? r : r.slice(0, t - 3) + "..." : "";
|
|
839
848
|
}
|
|
840
|
-
function
|
|
841
|
-
const
|
|
842
|
-
Object.entries(
|
|
843
|
-
|
|
849
|
+
function rt(r, t) {
|
|
850
|
+
const n = new URLSearchParams();
|
|
851
|
+
Object.entries(t).forEach(([u, o]) => {
|
|
852
|
+
o != null && o !== "" && n.set(u, String(o));
|
|
844
853
|
});
|
|
845
|
-
const a =
|
|
846
|
-
return a ? `${
|
|
854
|
+
const a = n.toString();
|
|
855
|
+
return a ? `${r}?${a}` : r;
|
|
847
856
|
}
|
|
848
|
-
function
|
|
849
|
-
return
|
|
857
|
+
function $(...r) {
|
|
858
|
+
return r.filter(Boolean).join(" ");
|
|
850
859
|
}
|
|
851
|
-
const
|
|
860
|
+
const Sr = [
|
|
852
861
|
{ href: "/runs", label: "Runs", matchPaths: ["/runs"] },
|
|
853
862
|
{ href: "/projects", label: "Projects", matchPaths: ["/projects"] },
|
|
854
863
|
{ href: "/groups", label: "Groups", matchPaths: ["/groups"] },
|
|
855
864
|
{ href: "/diff", label: "Compare", matchPaths: ["/diff"] },
|
|
856
865
|
{ href: "/search", label: "Search", matchPaths: ["/search"] }
|
|
857
|
-
],
|
|
858
|
-
function
|
|
859
|
-
config:
|
|
860
|
-
children:
|
|
866
|
+
], Fs = Ps(null);
|
|
867
|
+
function tt({
|
|
868
|
+
config: r,
|
|
869
|
+
children: t
|
|
861
870
|
}) {
|
|
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: "min-h-screen bg-
|
|
874
|
-
/* @__PURE__ */ e.jsx("header", { className: "bg-gray-900 h-14 sticky top-0 z-50", children: /* @__PURE__ */ e.jsxs("div", { className: "max-w-container mx-auto px-6 h-full flex items-center justify-between", children: [
|
|
871
|
+
return /* @__PURE__ */ e.jsx(Fs.Provider, { value: r, children: t });
|
|
872
|
+
}
|
|
873
|
+
function Pr() {
|
|
874
|
+
return Ss(Fs);
|
|
875
|
+
}
|
|
876
|
+
function V({ children: r, config: t }) {
|
|
877
|
+
const n = ur(), u = { ...Pr(), ...t }, o = u?.navLinks ?? Sr, d = [
|
|
878
|
+
...u?.prependNavLinks ?? [],
|
|
879
|
+
...o,
|
|
880
|
+
...u?.appendNavLinks ?? []
|
|
881
|
+
], i = u?.logo ?? { text: "devqubit", icon: "⚛" }, f = (h) => h.matchPaths ? h.matchPaths.some((m) => n.pathname.startsWith(m)) : n.pathname === h.href;
|
|
882
|
+
return /* @__PURE__ */ e.jsxs("div", { className: "min-h-screen bg-gray-50", children: [
|
|
883
|
+
/* @__PURE__ */ e.jsx("header", { className: "bg-gray-900 h-14 sticky top-0 z-50 shadow-sm", children: /* @__PURE__ */ e.jsxs("div", { className: "max-w-container mx-auto px-6 h-full flex items-center justify-between", children: [
|
|
875
884
|
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-8", children: [
|
|
876
|
-
/* @__PURE__ */ e.jsxs(
|
|
877
|
-
i.icon && /* @__PURE__ */ e.jsx("span", { children: i.icon }),
|
|
885
|
+
/* @__PURE__ */ e.jsxs(z, { to: "/", className: "text-lg font-semibold text-primary hover:text-primary-light flex items-center gap-2 transition-colors", children: [
|
|
886
|
+
i.icon && /* @__PURE__ */ e.jsx("span", { className: "text-xl", children: i.icon }),
|
|
878
887
|
i.text
|
|
879
888
|
] }),
|
|
880
|
-
/* @__PURE__ */ e.jsx("nav", { className: "flex gap-1", children:
|
|
881
|
-
|
|
889
|
+
/* @__PURE__ */ e.jsx("nav", { className: "flex gap-1", children: d.map((h) => /* @__PURE__ */ e.jsx(
|
|
890
|
+
z,
|
|
882
891
|
{
|
|
883
|
-
to:
|
|
884
|
-
className:
|
|
885
|
-
"px-3 py-2 rounded-md text-sm font-medium transition-
|
|
886
|
-
|
|
892
|
+
to: h.href,
|
|
893
|
+
className: $(
|
|
894
|
+
"px-3 py-2 rounded-md text-sm font-medium transition-colors duration-150",
|
|
895
|
+
f(h) ? "text-white bg-white/10" : "text-gray-400 hover:text-white hover:bg-white/5"
|
|
887
896
|
),
|
|
888
|
-
children:
|
|
897
|
+
children: h.label
|
|
889
898
|
},
|
|
890
|
-
|
|
899
|
+
h.href
|
|
891
900
|
)) })
|
|
892
901
|
] }),
|
|
893
|
-
/* @__PURE__ */ e.jsx("div", { className: "flex items-center gap-4", children:
|
|
902
|
+
/* @__PURE__ */ e.jsx("div", { className: "flex items-center gap-4", children: u?.headerRight })
|
|
894
903
|
] }) }),
|
|
895
|
-
/* @__PURE__ */ e.jsx("main", { className: "max-w-container mx-auto p-6", children:
|
|
904
|
+
/* @__PURE__ */ e.jsx("main", { className: "max-w-container mx-auto p-6 fade-in", children: r })
|
|
896
905
|
] });
|
|
897
906
|
}
|
|
898
|
-
function
|
|
907
|
+
function Ee({ title: r, subtitle: t, actions: n }) {
|
|
899
908
|
return /* @__PURE__ */ e.jsxs("div", { className: "flex items-start justify-between mb-6 gap-4 flex-wrap", children: [
|
|
900
909
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
901
|
-
/* @__PURE__ */ e.jsx("h1", { className: "text-2xl font-semibold text-gray-900 flex items-center gap-2 flex-wrap", children:
|
|
902
|
-
|
|
910
|
+
/* @__PURE__ */ e.jsx("h1", { className: "text-2xl font-semibold text-gray-900 flex items-center gap-2 flex-wrap", children: r }),
|
|
911
|
+
t && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-1", children: t })
|
|
903
912
|
] }),
|
|
904
|
-
|
|
913
|
+
n && /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: n })
|
|
905
914
|
] });
|
|
906
915
|
}
|
|
907
|
-
function
|
|
908
|
-
return /* @__PURE__ */ e.jsx("span", { className:
|
|
916
|
+
function Y({ variant: r = "gray", className: t, children: n, ...a }) {
|
|
917
|
+
return /* @__PURE__ */ e.jsx("span", { className: $("badge", `badge-${r}`, t), ...a, children: n });
|
|
909
918
|
}
|
|
910
|
-
const
|
|
911
|
-
({ variant:
|
|
919
|
+
const D = Xe(
|
|
920
|
+
({ variant: r = "secondary", size: t = "default", loading: n, className: a, children: u, disabled: o, ...d }, i) => /* @__PURE__ */ e.jsxs(
|
|
912
921
|
"button",
|
|
913
922
|
{
|
|
914
923
|
ref: i,
|
|
915
|
-
className:
|
|
924
|
+
className: $(
|
|
916
925
|
"btn",
|
|
917
|
-
|
|
918
|
-
|
|
926
|
+
r === "ghost-danger" ? "btn-ghost-danger" : `btn-${r}`,
|
|
927
|
+
t === "sm" && "btn-sm",
|
|
919
928
|
a
|
|
920
929
|
),
|
|
921
|
-
disabled:
|
|
922
|
-
...
|
|
930
|
+
disabled: o || n,
|
|
931
|
+
...d,
|
|
923
932
|
children: [
|
|
924
|
-
|
|
925
|
-
|
|
933
|
+
n && /* @__PURE__ */ e.jsx(I, {}),
|
|
934
|
+
u
|
|
926
935
|
]
|
|
927
936
|
}
|
|
928
937
|
)
|
|
929
938
|
);
|
|
930
|
-
|
|
931
|
-
function
|
|
932
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
939
|
+
D.displayName = "Button";
|
|
940
|
+
function b({ className: r, children: t, ...n }) {
|
|
941
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("card", r), ...n, children: t });
|
|
933
942
|
}
|
|
934
|
-
function
|
|
935
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
943
|
+
function W({ className: r, children: t, ...n }) {
|
|
944
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("card-header", r), ...n, children: t });
|
|
936
945
|
}
|
|
937
|
-
function
|
|
938
|
-
return /* @__PURE__ */ e.jsx("h3", { className:
|
|
946
|
+
function G({ className: r, children: t, ...n }) {
|
|
947
|
+
return /* @__PURE__ */ e.jsx("h3", { className: $("card-title", r), ...n, children: t });
|
|
939
948
|
}
|
|
940
|
-
function
|
|
941
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
949
|
+
function nt({ variant: r = "info", className: t, children: n, ...a }) {
|
|
950
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("alert", `alert-${r}`, t), ...a, children: n });
|
|
942
951
|
}
|
|
943
|
-
function
|
|
944
|
-
return /* @__PURE__ */ e.jsx("span", { className:
|
|
952
|
+
function I({ className: r, ...t }) {
|
|
953
|
+
return /* @__PURE__ */ e.jsx("span", { className: $("spinner", r), ...t });
|
|
945
954
|
}
|
|
946
|
-
function
|
|
947
|
-
return /* @__PURE__ */ e.jsxs("div", { className:
|
|
948
|
-
/* @__PURE__ */ e.jsx("p", { children:
|
|
949
|
-
|
|
955
|
+
function he({ message: r, hint: t, className: n, ...a }) {
|
|
956
|
+
return /* @__PURE__ */ e.jsxs("div", { className: $("empty-state", n), ...a, children: [
|
|
957
|
+
/* @__PURE__ */ e.jsx("p", { children: r }),
|
|
958
|
+
t && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-2", children: t })
|
|
950
959
|
] });
|
|
951
960
|
}
|
|
952
|
-
function
|
|
953
|
-
return /* @__PURE__ */ e.jsx("dl", { className:
|
|
961
|
+
function Je({ items: r, className: t, ...n }) {
|
|
962
|
+
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
963
|
/* @__PURE__ */ e.jsx("dt", { children: a }),
|
|
955
|
-
/* @__PURE__ */ e.jsx("dd", { children:
|
|
964
|
+
/* @__PURE__ */ e.jsx("dd", { children: u })
|
|
956
965
|
] }, a)) });
|
|
957
966
|
}
|
|
958
|
-
function
|
|
959
|
-
return
|
|
967
|
+
function es({ open: r, onClose: t, title: n, children: a, actions: u }) {
|
|
968
|
+
return r ? /* @__PURE__ */ e.jsx(
|
|
960
969
|
"div",
|
|
961
970
|
{
|
|
962
|
-
className:
|
|
963
|
-
onClick: (
|
|
964
|
-
children: /* @__PURE__ */ e.jsxs("div", { className: "modal", onClick: (
|
|
965
|
-
/* @__PURE__ */ e.jsx("h3", { className: "modal-title", children:
|
|
971
|
+
className: $("modal-backdrop", r && "active"),
|
|
972
|
+
onClick: (o) => o.target === o.currentTarget && t(),
|
|
973
|
+
children: /* @__PURE__ */ e.jsxs("div", { className: "modal", onClick: (o) => o.stopPropagation(), children: [
|
|
974
|
+
/* @__PURE__ */ e.jsx("h3", { className: "modal-title", children: n }),
|
|
966
975
|
/* @__PURE__ */ e.jsx("div", { className: "modal-body", children: a }),
|
|
967
|
-
|
|
976
|
+
u && /* @__PURE__ */ e.jsx("div", { className: "modal-actions", children: u })
|
|
968
977
|
] })
|
|
969
978
|
}
|
|
970
979
|
) : null;
|
|
971
980
|
}
|
|
972
|
-
function
|
|
973
|
-
if (!
|
|
974
|
-
const
|
|
975
|
-
success: "
|
|
976
|
-
error: "
|
|
977
|
-
info: "
|
|
978
|
-
}[
|
|
979
|
-
|
|
981
|
+
function Ce({ message: r, variant: t = "info", visible: n, onClose: a }) {
|
|
982
|
+
if (!n) return null;
|
|
983
|
+
const u = {
|
|
984
|
+
success: "✓",
|
|
985
|
+
error: "✕",
|
|
986
|
+
info: "i"
|
|
987
|
+
}[t], o = {
|
|
988
|
+
success: "text-[#059669]",
|
|
989
|
+
error: "text-[#DC4A4A]",
|
|
990
|
+
info: "text-[#2563EB]"
|
|
991
|
+
}[t];
|
|
992
|
+
return /* @__PURE__ */ e.jsxs("div", { className: "toast", onClick: a, children: [
|
|
993
|
+
/* @__PURE__ */ e.jsx("span", { className: $("mr-2 font-bold", o), children: u }),
|
|
994
|
+
r
|
|
995
|
+
] });
|
|
980
996
|
}
|
|
981
|
-
function
|
|
982
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
997
|
+
function ee({ children: r, className: t }) {
|
|
998
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("form-group", t), children: r });
|
|
983
999
|
}
|
|
984
|
-
function
|
|
985
|
-
return /* @__PURE__ */ e.jsx("label", { className:
|
|
1000
|
+
function ie({ className: r, children: t, ...n }) {
|
|
1001
|
+
return /* @__PURE__ */ e.jsx("label", { className: $("form-label", r), ...n, children: t });
|
|
986
1002
|
}
|
|
987
|
-
const
|
|
988
|
-
({ className:
|
|
1003
|
+
const ss = Xe(
|
|
1004
|
+
({ className: r, ...t }, n) => /* @__PURE__ */ e.jsx("input", { ref: n, className: $("form-input", r), ...t })
|
|
989
1005
|
);
|
|
990
|
-
|
|
991
|
-
const
|
|
992
|
-
({ className:
|
|
1006
|
+
ss.displayName = "Input";
|
|
1007
|
+
const de = Xe(
|
|
1008
|
+
({ className: r, children: t, ...n }, a) => /* @__PURE__ */ e.jsx("select", { ref: a, className: $("form-input", r), ...n, children: t })
|
|
993
1009
|
);
|
|
994
|
-
|
|
995
|
-
function
|
|
996
|
-
return /* @__PURE__ */ e.jsx("div", { className:
|
|
1010
|
+
de.displayName = "Select";
|
|
1011
|
+
function Os({ children: r, className: t }) {
|
|
1012
|
+
return /* @__PURE__ */ e.jsx("div", { className: $("form-row", t), children: r });
|
|
997
1013
|
}
|
|
998
|
-
function
|
|
999
|
-
return /* @__PURE__ */ e.jsx("table", { className:
|
|
1014
|
+
function L({ className: r, children: t, ...n }) {
|
|
1015
|
+
return /* @__PURE__ */ e.jsx("table", { className: $("table", r), ...n, children: t });
|
|
1000
1016
|
}
|
|
1001
|
-
function
|
|
1002
|
-
return /* @__PURE__ */ e.jsx("thead", { className:
|
|
1017
|
+
function re({ className: r, children: t, ...n }) {
|
|
1018
|
+
return /* @__PURE__ */ e.jsx("thead", { className: r, ...n, children: t });
|
|
1003
1019
|
}
|
|
1004
|
-
function
|
|
1005
|
-
return /* @__PURE__ */ e.jsx("tbody", { className:
|
|
1020
|
+
function B({ className: r, children: t, ...n }) {
|
|
1021
|
+
return /* @__PURE__ */ e.jsx("tbody", { className: r, ...n, children: t });
|
|
1006
1022
|
}
|
|
1007
|
-
function
|
|
1008
|
-
return /* @__PURE__ */ e.jsx("tr", { className:
|
|
1023
|
+
function j({ className: r, children: t, ...n }) {
|
|
1024
|
+
return /* @__PURE__ */ e.jsx("tr", { className: r, ...n, children: t });
|
|
1009
1025
|
}
|
|
1010
|
-
function
|
|
1011
|
-
return /* @__PURE__ */ e.jsx("th", { className:
|
|
1026
|
+
function N({ className: r, children: t, ...n }) {
|
|
1027
|
+
return /* @__PURE__ */ e.jsx("th", { className: r, ...n, children: t });
|
|
1012
1028
|
}
|
|
1013
|
-
function c({ className:
|
|
1014
|
-
return /* @__PURE__ */ e.jsx("td", { className:
|
|
1029
|
+
function c({ className: r, children: t, ...n }) {
|
|
1030
|
+
return /* @__PURE__ */ e.jsx("td", { className: r, ...n, children: t });
|
|
1015
1031
|
}
|
|
1016
|
-
function
|
|
1017
|
-
const
|
|
1032
|
+
function $s({ status: r }) {
|
|
1033
|
+
const t = {
|
|
1018
1034
|
FINISHED: "success",
|
|
1019
1035
|
FAILED: "danger",
|
|
1020
1036
|
RUNNING: "warning",
|
|
1021
1037
|
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
|
-
|
|
1038
|
+
}[r];
|
|
1039
|
+
return /* @__PURE__ */ e.jsx(Y, { variant: t, children: r });
|
|
1040
|
+
}
|
|
1041
|
+
function rs({ runs: r, onDelete: t, loading: n, emptyHint: a, baselineRunId: u }) {
|
|
1042
|
+
const [o, d] = T(null), i = () => {
|
|
1043
|
+
o && t && (t(o.run_id), d(null));
|
|
1044
|
+
};
|
|
1045
|
+
return r.length ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1046
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
1047
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1048
|
+
/* @__PURE__ */ e.jsx(N, { children: "Run ID" }),
|
|
1049
|
+
/* @__PURE__ */ e.jsx(N, { children: "Name" }),
|
|
1050
|
+
/* @__PURE__ */ e.jsx(N, { children: "Project" }),
|
|
1051
|
+
/* @__PURE__ */ e.jsx(N, { children: "Status" }),
|
|
1052
|
+
/* @__PURE__ */ e.jsx(N, { children: "Created" }),
|
|
1053
|
+
/* @__PURE__ */ e.jsx(N, { children: "Actions" })
|
|
1054
|
+
] }) }),
|
|
1055
|
+
/* @__PURE__ */ e.jsx(B, { children: r.map((f) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1056
|
+
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
1057
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${f.run_id}`, className: "font-mono", children: Q(f.run_id) }),
|
|
1058
|
+
f.run_id === u && /* @__PURE__ */ e.jsx(Y, { variant: "info", className: "ml-2", children: "Baseline" })
|
|
1059
|
+
] }),
|
|
1060
|
+
/* @__PURE__ */ e.jsx(c, { children: f.run_name || "—" }),
|
|
1061
|
+
/* @__PURE__ */ e.jsx(c, { children: f.project }),
|
|
1062
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx($s, { status: f.status }) }),
|
|
1063
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-muted", children: Ze(f.created_at) }),
|
|
1064
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
|
|
1065
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${f.run_id}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View" }) }),
|
|
1066
|
+
t && /* @__PURE__ */ e.jsx(
|
|
1067
|
+
D,
|
|
1068
|
+
{
|
|
1069
|
+
variant: "ghost-danger",
|
|
1070
|
+
size: "sm",
|
|
1071
|
+
onClick: () => d(f),
|
|
1072
|
+
disabled: n,
|
|
1073
|
+
children: "Delete"
|
|
1074
|
+
}
|
|
1075
|
+
)
|
|
1076
|
+
] }) })
|
|
1077
|
+
] }, f.run_id)) })
|
|
1078
|
+
] }),
|
|
1079
|
+
/* @__PURE__ */ e.jsxs(
|
|
1080
|
+
es,
|
|
1081
|
+
{
|
|
1082
|
+
open: !!o,
|
|
1083
|
+
onClose: () => d(null),
|
|
1084
|
+
title: "Delete Run",
|
|
1085
|
+
actions: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1086
|
+
/* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: () => d(null), children: "Cancel" }),
|
|
1087
|
+
/* @__PURE__ */ e.jsxs(D, { variant: "danger", onClick: i, disabled: n, children: [
|
|
1088
|
+
n && /* @__PURE__ */ e.jsx(I, {}),
|
|
1089
|
+
"Delete"
|
|
1090
|
+
] })
|
|
1091
|
+
] }),
|
|
1092
|
+
children: [
|
|
1093
|
+
/* @__PURE__ */ e.jsx("p", { children: "Are you sure you want to delete this run?" }),
|
|
1094
|
+
o && /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children: Q(o.run_id) }),
|
|
1095
|
+
/* @__PURE__ */ e.jsx("p", { className: "text-sm text-danger mt-2", children: "This action cannot be undone." })
|
|
1096
|
+
]
|
|
1097
|
+
}
|
|
1098
|
+
)
|
|
1057
1099
|
] }) : /* @__PURE__ */ e.jsx(
|
|
1058
|
-
|
|
1100
|
+
he,
|
|
1059
1101
|
{
|
|
1060
1102
|
message: "No runs found",
|
|
1061
1103
|
hint: a ?? "Try adjusting your filters"
|
|
1062
1104
|
}
|
|
1063
1105
|
);
|
|
1064
1106
|
}
|
|
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
|
-
|
|
1107
|
+
function Tr() {
|
|
1108
|
+
const [r, t] = $e(), { api: n } = K(), { data: a } = Le(), [u, o] = T(null), [d, i] = T({
|
|
1109
|
+
project: r.get("project") || "",
|
|
1110
|
+
status: r.get("status") || "",
|
|
1111
|
+
q: r.get("q") || "",
|
|
1112
|
+
limit: parseInt(r.get("limit") || "25", 10)
|
|
1113
|
+
}), { data: f, loading: h, refetch: m } = Ds(d), p = Re((w) => n.deleteRun(w));
|
|
1114
|
+
je(() => {
|
|
1115
|
+
if (u) {
|
|
1116
|
+
const w = setTimeout(() => o(null), 3e3);
|
|
1117
|
+
return () => clearTimeout(w);
|
|
1118
|
+
}
|
|
1119
|
+
}, [u]);
|
|
1120
|
+
const _ = _e((w, H) => {
|
|
1121
|
+
i((O) => ({ ...O, [w]: H }));
|
|
1122
|
+
const k = new URLSearchParams(r);
|
|
1123
|
+
H ? k.set(w, String(H)) : k.delete(w), t(k, { replace: !0 });
|
|
1124
|
+
}, [r, t]), U = _e(async (w) => {
|
|
1125
|
+
try {
|
|
1126
|
+
await p.mutate(w), o({ message: "Run deleted", variant: "success" }), m();
|
|
1127
|
+
} catch {
|
|
1128
|
+
o({ message: "Failed to delete run", variant: "error" });
|
|
1129
|
+
}
|
|
1130
|
+
}, [p, m]);
|
|
1131
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1132
|
+
/* @__PURE__ */ e.jsx(Ee, { title: "Runs" }),
|
|
1133
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs(Os, { children: [
|
|
1134
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1135
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "project", children: "Project" }),
|
|
1083
1136
|
/* @__PURE__ */ e.jsxs(
|
|
1084
|
-
|
|
1137
|
+
de,
|
|
1085
1138
|
{
|
|
1086
1139
|
id: "project",
|
|
1087
1140
|
value: d.project,
|
|
1088
|
-
onChange: (
|
|
1141
|
+
onChange: (w) => _("project", w.target.value),
|
|
1089
1142
|
children: [
|
|
1090
1143
|
/* @__PURE__ */ e.jsx("option", { value: "", children: "All projects" }),
|
|
1091
|
-
a?.map((
|
|
1144
|
+
a?.map((w) => /* @__PURE__ */ e.jsx("option", { value: w.name, children: w.name }, w.name))
|
|
1092
1145
|
]
|
|
1093
1146
|
}
|
|
1094
1147
|
)
|
|
1095
1148
|
] }),
|
|
1096
|
-
/* @__PURE__ */ e.jsxs(
|
|
1097
|
-
/* @__PURE__ */ e.jsx(
|
|
1149
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1150
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "status", children: "Status" }),
|
|
1098
1151
|
/* @__PURE__ */ e.jsxs(
|
|
1099
|
-
|
|
1152
|
+
de,
|
|
1100
1153
|
{
|
|
1101
1154
|
id: "status",
|
|
1102
1155
|
value: d.status,
|
|
1103
|
-
onChange: (
|
|
1156
|
+
onChange: (w) => _("status", w.target.value),
|
|
1104
1157
|
children: [
|
|
1105
1158
|
/* @__PURE__ */ e.jsx("option", { value: "", children: "All" }),
|
|
1106
1159
|
/* @__PURE__ */ e.jsx("option", { value: "FINISHED", children: "Finished" }),
|
|
@@ -1110,26 +1163,26 @@ function Ps() {
|
|
|
1110
1163
|
}
|
|
1111
1164
|
)
|
|
1112
1165
|
] }),
|
|
1113
|
-
/* @__PURE__ */ e.jsxs(
|
|
1114
|
-
/* @__PURE__ */ e.jsx(
|
|
1166
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1167
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "q", children: "Query" }),
|
|
1115
1168
|
/* @__PURE__ */ e.jsx(
|
|
1116
|
-
|
|
1169
|
+
ss,
|
|
1117
1170
|
{
|
|
1118
1171
|
id: "q",
|
|
1119
1172
|
value: d.q,
|
|
1120
|
-
onChange: (
|
|
1173
|
+
onChange: (w) => _("q", w.target.value),
|
|
1121
1174
|
placeholder: "metric.fidelity > 0.9"
|
|
1122
1175
|
}
|
|
1123
1176
|
)
|
|
1124
1177
|
] }),
|
|
1125
|
-
/* @__PURE__ */ e.jsxs(
|
|
1126
|
-
/* @__PURE__ */ e.jsx(
|
|
1178
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1179
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "limit", children: "Limit" }),
|
|
1127
1180
|
/* @__PURE__ */ e.jsxs(
|
|
1128
|
-
|
|
1181
|
+
de,
|
|
1129
1182
|
{
|
|
1130
1183
|
id: "limit",
|
|
1131
1184
|
value: d.limit,
|
|
1132
|
-
onChange: (
|
|
1185
|
+
onChange: (w) => _("limit", parseInt(w.target.value, 10)),
|
|
1133
1186
|
children: [
|
|
1134
1187
|
/* @__PURE__ */ e.jsx("option", { value: "25", children: "25" }),
|
|
1135
1188
|
/* @__PURE__ */ e.jsx("option", { value: "50", children: "50" }),
|
|
@@ -1138,567 +1191,892 @@ function Ps() {
|
|
|
1138
1191
|
}
|
|
1139
1192
|
)
|
|
1140
1193
|
] }),
|
|
1141
|
-
/* @__PURE__ */ e.jsxs(
|
|
1142
|
-
/* @__PURE__ */ e.jsx(
|
|
1143
|
-
|
|
1194
|
+
/* @__PURE__ */ e.jsxs(ee, { className: "flex items-end gap-2", children: [
|
|
1195
|
+
/* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: () => m(), children: "Filter" }),
|
|
1196
|
+
h && /* @__PURE__ */ e.jsx(I, {})
|
|
1144
1197
|
] })
|
|
1145
1198
|
] }) }),
|
|
1146
|
-
/* @__PURE__ */ e.jsx(
|
|
1147
|
-
|
|
1199
|
+
/* @__PURE__ */ e.jsx(b, { children: h && !f ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(I, {}) }) : /* @__PURE__ */ e.jsx(
|
|
1200
|
+
rs,
|
|
1148
1201
|
{
|
|
1149
1202
|
runs: f?.runs ?? [],
|
|
1150
|
-
onDelete:
|
|
1151
|
-
loading:
|
|
1203
|
+
onDelete: U,
|
|
1204
|
+
loading: p.loading,
|
|
1205
|
+
baselineRunId: d.project ? a?.find((w) => w.name === d.project)?.baseline?.run_id : void 0
|
|
1152
1206
|
}
|
|
1153
|
-
) })
|
|
1207
|
+
) }),
|
|
1208
|
+
u && /* @__PURE__ */ e.jsx(
|
|
1209
|
+
Ce,
|
|
1210
|
+
{
|
|
1211
|
+
message: u.message,
|
|
1212
|
+
variant: u.variant,
|
|
1213
|
+
visible: !!u,
|
|
1214
|
+
onClose: () => o(null)
|
|
1215
|
+
}
|
|
1216
|
+
)
|
|
1154
1217
|
] });
|
|
1155
1218
|
}
|
|
1156
|
-
function
|
|
1157
|
-
if (!
|
|
1219
|
+
function Dr({ projects: r, currentWorkspace: t }) {
|
|
1220
|
+
if (!r.length)
|
|
1158
1221
|
return /* @__PURE__ */ e.jsx(
|
|
1159
|
-
|
|
1222
|
+
he,
|
|
1160
1223
|
{
|
|
1161
1224
|
message: "No projects yet",
|
|
1162
1225
|
hint: "Projects are created automatically when you log runs"
|
|
1163
1226
|
}
|
|
1164
1227
|
);
|
|
1165
|
-
const
|
|
1166
|
-
const
|
|
1167
|
-
return
|
|
1228
|
+
const n = (a) => {
|
|
1229
|
+
const u = new URLSearchParams({ project: a });
|
|
1230
|
+
return t && u.set("workspace", t.id), `/runs?${u}`;
|
|
1168
1231
|
};
|
|
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(
|
|
1232
|
+
return /* @__PURE__ */ e.jsxs(L, { children: [
|
|
1233
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1234
|
+
/* @__PURE__ */ e.jsx(N, { children: "Project" }),
|
|
1235
|
+
/* @__PURE__ */ e.jsx(N, { children: "Runs" }),
|
|
1236
|
+
/* @__PURE__ */ e.jsx(N, { children: "Baseline" }),
|
|
1237
|
+
/* @__PURE__ */ e.jsx(N, {})
|
|
1175
1238
|
] }) }),
|
|
1176
|
-
/* @__PURE__ */ e.jsx(
|
|
1239
|
+
/* @__PURE__ */ e.jsx(B, { children: r.map((a) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1177
1240
|
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
1178
1241
|
/* @__PURE__ */ e.jsx("span", { className: "font-medium", children: a.name }),
|
|
1179
|
-
a.description && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children:
|
|
1242
|
+
a.description && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: kr(a.description) })
|
|
1180
1243
|
] }),
|
|
1181
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1244
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: a.run_count ?? 0 }) }),
|
|
1182
1245
|
/* @__PURE__ */ e.jsx(c, { children: a.baseline ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1183
|
-
/* @__PURE__ */ e.jsx(
|
|
1246
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${a.baseline.run_id}`, className: "font-mono text-sm", children: Q(a.baseline.run_id) }),
|
|
1184
1247
|
a.baseline.run_name && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: a.baseline.run_name })
|
|
1185
1248
|
] }) : /* @__PURE__ */ e.jsx("span", { className: "text-muted", children: "—" }) }),
|
|
1186
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-right", children: /* @__PURE__ */ e.jsx(
|
|
1249
|
+
/* @__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
1250
|
] }, a.name)) })
|
|
1188
1251
|
] });
|
|
1189
1252
|
}
|
|
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(
|
|
1253
|
+
function Ar({ groups: r }) {
|
|
1254
|
+
return r.length ? /* @__PURE__ */ e.jsxs(L, { children: [
|
|
1255
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1256
|
+
/* @__PURE__ */ e.jsx(N, { children: "Group ID" }),
|
|
1257
|
+
/* @__PURE__ */ e.jsx(N, { children: "Name" }),
|
|
1258
|
+
/* @__PURE__ */ e.jsx(N, { children: "Project" }),
|
|
1259
|
+
/* @__PURE__ */ e.jsx(N, { children: "Runs" }),
|
|
1260
|
+
/* @__PURE__ */ e.jsx(N, { children: "Actions" })
|
|
1198
1261
|
] }) }),
|
|
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
|
-
] },
|
|
1262
|
+
/* @__PURE__ */ e.jsx(B, { children: r.map((t) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1263
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: Q(t.group_id) }),
|
|
1264
|
+
/* @__PURE__ */ e.jsx(c, { children: t.group_name || "—" }),
|
|
1265
|
+
/* @__PURE__ */ e.jsx(c, { children: t.project }),
|
|
1266
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: t.run_count }) }),
|
|
1267
|
+
/* @__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" }) }) })
|
|
1268
|
+
] }, t.group_id)) })
|
|
1206
1269
|
] }) : /* @__PURE__ */ e.jsx(
|
|
1207
|
-
|
|
1270
|
+
he,
|
|
1208
1271
|
{
|
|
1209
1272
|
message: "No groups found",
|
|
1210
1273
|
hint: "Groups are created when runs have a group_id set"
|
|
1211
1274
|
}
|
|
1212
1275
|
);
|
|
1213
1276
|
}
|
|
1214
|
-
function
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1277
|
+
function Fr({
|
|
1278
|
+
runId: r,
|
|
1279
|
+
runName: t,
|
|
1280
|
+
variant: n = "secondary",
|
|
1281
|
+
size: a = "sm",
|
|
1282
|
+
className: u = "",
|
|
1283
|
+
apiBaseUrl: o = ""
|
|
1284
|
+
}) {
|
|
1285
|
+
const [d, i] = T({ status: "idle" }), [f, h] = T(!1), [m, p] = T(null), _ = async () => {
|
|
1286
|
+
i({ status: "preparing", message: "Preparing bundle..." }), h(!0);
|
|
1287
|
+
try {
|
|
1288
|
+
const k = await fetch(`${o}/api/runs/${r}/export`, {
|
|
1289
|
+
method: "POST",
|
|
1290
|
+
headers: { "Content-Type": "application/json" }
|
|
1291
|
+
});
|
|
1292
|
+
if (!k.ok) {
|
|
1293
|
+
const ne = await k.json().catch(() => ({ detail: "Export failed" }));
|
|
1294
|
+
throw new Error(ne.detail || `Export failed: ${k.statusText}`);
|
|
1295
|
+
}
|
|
1296
|
+
const O = await k.json();
|
|
1297
|
+
i({
|
|
1298
|
+
status: "packing",
|
|
1299
|
+
message: "Creating bundle...",
|
|
1300
|
+
artifactCount: O.artifact_count,
|
|
1301
|
+
objectCount: O.object_count
|
|
1302
|
+
}), i((ne) => ({
|
|
1303
|
+
...ne,
|
|
1304
|
+
status: "downloading",
|
|
1305
|
+
message: "Downloading bundle..."
|
|
1306
|
+
}));
|
|
1307
|
+
const S = await fetch(`${o}/api/runs/${r}/export/download`);
|
|
1308
|
+
if (!S.ok)
|
|
1309
|
+
throw new Error("Download failed");
|
|
1310
|
+
const se = await S.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");
|
|
1311
|
+
Z.href = J, Z.download = te, document.body.appendChild(Z), Z.click(), document.body.removeChild(Z), URL.revokeObjectURL(J), i({
|
|
1312
|
+
status: "complete",
|
|
1313
|
+
message: "Export complete!",
|
|
1314
|
+
bundleSize: se.size,
|
|
1315
|
+
artifactCount: O.artifact_count,
|
|
1316
|
+
objectCount: O.object_count
|
|
1317
|
+
}), p({ message: "Bundle downloaded successfully", variant: "success" }), setTimeout(() => {
|
|
1318
|
+
h(!1), i({ status: "idle" });
|
|
1319
|
+
}, 2e3);
|
|
1320
|
+
} catch (k) {
|
|
1321
|
+
const O = k instanceof Error ? k.message : "Export failed";
|
|
1322
|
+
i({ status: "error", message: O }), p({ message: O, variant: "error" });
|
|
1323
|
+
}
|
|
1324
|
+
}, U = () => {
|
|
1325
|
+
d.status !== "preparing" && d.status !== "packing" && d.status !== "downloading" && (h(!1), i({ status: "idle" }));
|
|
1326
|
+
}, 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);
|
|
1327
|
+
return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1328
|
+
/* @__PURE__ */ e.jsxs(
|
|
1329
|
+
D,
|
|
1330
|
+
{
|
|
1331
|
+
variant: n,
|
|
1332
|
+
size: a,
|
|
1333
|
+
onClick: _,
|
|
1334
|
+
disabled: H,
|
|
1335
|
+
className: u,
|
|
1336
|
+
children: [
|
|
1337
|
+
H && /* @__PURE__ */ e.jsx(I, {}),
|
|
1338
|
+
/* @__PURE__ */ e.jsx(Or, {}),
|
|
1339
|
+
"Export"
|
|
1340
|
+
]
|
|
1341
|
+
}
|
|
1342
|
+
),
|
|
1343
|
+
/* @__PURE__ */ e.jsx(
|
|
1344
|
+
es,
|
|
1345
|
+
{
|
|
1346
|
+
open: f,
|
|
1347
|
+
onClose: U,
|
|
1348
|
+
title: "Export Run",
|
|
1349
|
+
actions: d.status === "error" || d.status === "complete" ? /* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: U, children: "Close" }) : void 0,
|
|
1350
|
+
children: /* @__PURE__ */ e.jsxs("div", { className: "py-4", children: [
|
|
1351
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
1352
|
+
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(Lr, {}) }) : 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($r, {}) }) : /* @__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(I, {}) }),
|
|
1353
|
+
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
1354
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-medium", children: d.message }),
|
|
1355
|
+
d.status === "error" && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-[var(--dq-text-muted)]", children: "Please try again or contact support." })
|
|
1356
|
+
] })
|
|
1357
|
+
] }),
|
|
1358
|
+
(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: [
|
|
1359
|
+
d.artifactCount !== void 0 && /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
|
|
1360
|
+
d.artifactCount,
|
|
1361
|
+
" artifacts"
|
|
1362
|
+
] }),
|
|
1363
|
+
d.objectCount !== void 0 && /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
|
|
1364
|
+
d.objectCount,
|
|
1365
|
+
" objects"
|
|
1366
|
+
] }),
|
|
1367
|
+
d.bundleSize !== void 0 && /* @__PURE__ */ e.jsx(Y, { variant: "info", children: w(d.bundleSize) })
|
|
1368
|
+
] }),
|
|
1369
|
+
/* @__PURE__ */ e.jsxs("div", { className: "mt-4 pt-4 border-t border-[var(--dq-border-light)]", children: [
|
|
1370
|
+
/* @__PURE__ */ e.jsxs("p", { className: "text-sm text-[var(--dq-text-muted)]", children: [
|
|
1371
|
+
"Run ID: ",
|
|
1372
|
+
/* @__PURE__ */ e.jsx("code", { className: "text-xs", children: r })
|
|
1373
|
+
] }),
|
|
1374
|
+
t && /* @__PURE__ */ e.jsxs("p", { className: "text-sm text-[var(--dq-text-muted)]", children: [
|
|
1375
|
+
"Name: ",
|
|
1376
|
+
t
|
|
1377
|
+
] })
|
|
1378
|
+
] })
|
|
1379
|
+
] })
|
|
1380
|
+
}
|
|
1381
|
+
),
|
|
1382
|
+
m && /* @__PURE__ */ e.jsx(
|
|
1383
|
+
Ce,
|
|
1384
|
+
{
|
|
1385
|
+
message: m.message,
|
|
1386
|
+
variant: m.variant,
|
|
1387
|
+
visible: !!m,
|
|
1388
|
+
onClose: () => p(null)
|
|
1389
|
+
}
|
|
1390
|
+
)
|
|
1391
|
+
] });
|
|
1392
|
+
}
|
|
1393
|
+
function Or() {
|
|
1394
|
+
return /* @__PURE__ */ e.jsxs(
|
|
1395
|
+
"svg",
|
|
1396
|
+
{
|
|
1397
|
+
width: "16",
|
|
1398
|
+
height: "16",
|
|
1399
|
+
viewBox: "0 0 24 24",
|
|
1400
|
+
fill: "none",
|
|
1401
|
+
stroke: "currentColor",
|
|
1402
|
+
strokeWidth: "2",
|
|
1403
|
+
strokeLinecap: "round",
|
|
1404
|
+
strokeLinejoin: "round",
|
|
1405
|
+
children: [
|
|
1406
|
+
/* @__PURE__ */ e.jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
|
|
1407
|
+
/* @__PURE__ */ e.jsx("polyline", { points: "7 10 12 15 17 10" }),
|
|
1408
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })
|
|
1409
|
+
]
|
|
1410
|
+
}
|
|
1219
1411
|
);
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1412
|
+
}
|
|
1413
|
+
function $r() {
|
|
1414
|
+
return /* @__PURE__ */ e.jsx(
|
|
1415
|
+
"svg",
|
|
1416
|
+
{
|
|
1417
|
+
width: "20",
|
|
1418
|
+
height: "20",
|
|
1419
|
+
viewBox: "0 0 24 24",
|
|
1420
|
+
fill: "none",
|
|
1421
|
+
stroke: "var(--dq-success)",
|
|
1422
|
+
strokeWidth: "2",
|
|
1423
|
+
strokeLinecap: "round",
|
|
1424
|
+
strokeLinejoin: "round",
|
|
1425
|
+
children: /* @__PURE__ */ e.jsx("polyline", { points: "20 6 9 17 4 12" })
|
|
1426
|
+
}
|
|
1427
|
+
);
|
|
1428
|
+
}
|
|
1429
|
+
function Lr() {
|
|
1430
|
+
return /* @__PURE__ */ e.jsxs(
|
|
1431
|
+
"svg",
|
|
1432
|
+
{
|
|
1433
|
+
width: "20",
|
|
1434
|
+
height: "20",
|
|
1435
|
+
viewBox: "0 0 24 24",
|
|
1436
|
+
fill: "none",
|
|
1437
|
+
stroke: "var(--dq-danger)",
|
|
1438
|
+
strokeWidth: "2",
|
|
1439
|
+
strokeLinecap: "round",
|
|
1440
|
+
strokeLinejoin: "round",
|
|
1441
|
+
children: [
|
|
1442
|
+
/* @__PURE__ */ e.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
1443
|
+
/* @__PURE__ */ e.jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
|
|
1444
|
+
/* @__PURE__ */ e.jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
|
|
1445
|
+
]
|
|
1446
|
+
}
|
|
1447
|
+
);
|
|
1448
|
+
}
|
|
1449
|
+
function Br() {
|
|
1450
|
+
const { runId: r } = Qe(), t = hr(), { api: n } = K(), { data: a, loading: u, error: o, refetch: d } = As(r), { data: i, refetch: f } = Le(), [h, m] = T(!1), [p, _] = T(null), { mutate: U, loading: w } = Re(
|
|
1451
|
+
() => n.setBaseline(a.project, a.run_id)
|
|
1452
|
+
), { mutate: H, loading: k } = Re(
|
|
1453
|
+
() => n.deleteRun(r)
|
|
1454
|
+
), S = i?.find((y) => y.name === a?.project)?.baseline?.run_id === r;
|
|
1455
|
+
if (je(() => {
|
|
1456
|
+
if (p) {
|
|
1457
|
+
const y = setTimeout(() => _(null), 3e3);
|
|
1458
|
+
return () => clearTimeout(y);
|
|
1224
1459
|
}
|
|
1225
|
-
}, [
|
|
1226
|
-
return /* @__PURE__ */ e.jsx(
|
|
1227
|
-
if (
|
|
1228
|
-
return /* @__PURE__ */ e.jsx(
|
|
1229
|
-
|
|
1460
|
+
}, [p]), u)
|
|
1461
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(I, {}) }) });
|
|
1462
|
+
if (o || !a)
|
|
1463
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(
|
|
1464
|
+
he,
|
|
1230
1465
|
{
|
|
1231
1466
|
message: "Run not found",
|
|
1232
|
-
hint:
|
|
1467
|
+
hint: o?.message || `Run ${r} does not exist`
|
|
1233
1468
|
}
|
|
1234
1469
|
) }) });
|
|
1235
|
-
const
|
|
1236
|
-
await $(), f();
|
|
1237
|
-
}, ke = async () => {
|
|
1238
|
-
await G(), n("/runs");
|
|
1239
|
-
}, Ae = async (w) => {
|
|
1470
|
+
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
1471
|
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" });
|
|
1472
|
+
await U(), await f(), d(), _({ message: "Baseline updated", variant: "success" });
|
|
1245
1473
|
} catch {
|
|
1246
|
-
|
|
1474
|
+
_({ message: "Failed to set baseline", variant: "error" });
|
|
1475
|
+
}
|
|
1476
|
+
}, Ie = async () => {
|
|
1477
|
+
try {
|
|
1478
|
+
await H(), m(!1), _({ message: "Run deleted", variant: "success" }), setTimeout(() => t("/runs"), 1e3);
|
|
1479
|
+
} catch {
|
|
1480
|
+
_({ message: "Failed to delete run", variant: "error" }), m(!1);
|
|
1481
|
+
}
|
|
1482
|
+
}, ke = async (y) => {
|
|
1483
|
+
const P = xe[y];
|
|
1484
|
+
try {
|
|
1485
|
+
const ce = n.getArtifactDownloadUrl(a.run_id, y), ge = await fetch(ce);
|
|
1486
|
+
if (!ge.ok) throw new Error("Download failed");
|
|
1487
|
+
const Se = await ge.blob(), le = document.createElement("a");
|
|
1488
|
+
le.href = URL.createObjectURL(Se), le.download = P?.kind || `artifact-${y}`, le.click(), URL.revokeObjectURL(le.href), _({ message: "Download started", variant: "success" });
|
|
1489
|
+
} catch {
|
|
1490
|
+
_({ message: "Download failed", variant: "error" });
|
|
1247
1491
|
}
|
|
1248
1492
|
};
|
|
1249
|
-
return /* @__PURE__ */ e.jsxs(
|
|
1493
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1494
|
+
S && /* @__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: [
|
|
1495
|
+
'This run is the current baseline for project "',
|
|
1496
|
+
a.project,
|
|
1497
|
+
'"'
|
|
1498
|
+
] }),
|
|
1250
1499
|
/* @__PURE__ */ e.jsxs("div", { className: "page-header", children: [
|
|
1251
1500
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
1252
1501
|
/* @__PURE__ */ e.jsx("h1", { className: "page-title", children: a.run_name || "Unnamed Run" }),
|
|
1253
1502
|
/* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm font-mono", children: a.run_id })
|
|
1254
1503
|
] }),
|
|
1255
1504
|
/* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
|
|
1256
|
-
/* @__PURE__ */ e.
|
|
1257
|
-
|
|
1505
|
+
/* @__PURE__ */ e.jsx(Fr, { runId: a.run_id, runName: a.run_name }),
|
|
1506
|
+
!S && /* @__PURE__ */ e.jsxs(D, { variant: "secondary", size: "sm", onClick: Be, disabled: w, children: [
|
|
1507
|
+
w && /* @__PURE__ */ e.jsx(I, {}),
|
|
1258
1508
|
"Set as Baseline"
|
|
1259
1509
|
] }),
|
|
1260
|
-
/* @__PURE__ */ e.jsx(
|
|
1510
|
+
/* @__PURE__ */ e.jsx(D, { variant: "ghost-danger", size: "sm", onClick: () => m(!0), children: "Delete" })
|
|
1261
1511
|
] })
|
|
1262
1512
|
] }),
|
|
1263
1513
|
/* @__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(
|
|
1514
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1515
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Overview" }) }),
|
|
1516
|
+
/* @__PURE__ */ e.jsx(Je, { items: [
|
|
1517
|
+
{ label: "Project", value: /* @__PURE__ */ e.jsx(z, { to: `/runs?project=${a.project}`, children: a.project }) },
|
|
1268
1518
|
{ label: "Name", value: a.run_name || "—" },
|
|
1269
1519
|
{ 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:
|
|
1520
|
+
{ label: "Status", value: /* @__PURE__ */ e.jsx($s, { status: a.status }) },
|
|
1521
|
+
{ label: "Created", value: `${a.created_at} (${Ze(a.created_at)})` },
|
|
1522
|
+
{ label: "Backend", value: se.name || "N/A" },
|
|
1273
1523
|
...a.group_id ? [{
|
|
1274
1524
|
label: "Group",
|
|
1275
|
-
value: /* @__PURE__ */ e.jsx(
|
|
1525
|
+
value: /* @__PURE__ */ e.jsx(z, { to: `/groups/${a.group_id}`, children: a.group_name || Q(a.group_id) })
|
|
1276
1526
|
}] : []
|
|
1277
1527
|
] })
|
|
1278
1528
|
] }),
|
|
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:
|
|
1529
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1530
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Fingerprints" }) }),
|
|
1531
|
+
/* @__PURE__ */ e.jsx(Je, { items: [
|
|
1532
|
+
{ label: "Run", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: te.run || "N/A" }) },
|
|
1533
|
+
{ label: "Program", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: te.program || "N/A" }) }
|
|
1284
1534
|
] })
|
|
1285
1535
|
] })
|
|
1286
1536
|
] }),
|
|
1287
1537
|
/* @__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
|
-
] },
|
|
1538
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1539
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Parameters" }) }),
|
|
1540
|
+
Object.keys(J).length ? /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsx(B, { children: Object.entries(J).map(([y, P]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1541
|
+
/* @__PURE__ */ e.jsx(c, { children: y }),
|
|
1542
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(P) })
|
|
1543
|
+
] }, y)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No parameters" })
|
|
1294
1544
|
] }),
|
|
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
|
-
] },
|
|
1545
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1546
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Metrics" }) }),
|
|
1547
|
+
Object.keys(Z).length ? /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsx(B, { children: Object.entries(Z).map(([y, P]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1548
|
+
/* @__PURE__ */ e.jsx(c, { children: y }),
|
|
1549
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: typeof P == "number" ? Er(P) : String(P) })
|
|
1550
|
+
] }, y)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No metrics" })
|
|
1301
1551
|
] }),
|
|
1302
|
-
/* @__PURE__ */ e.jsxs(
|
|
1303
|
-
/* @__PURE__ */ e.jsx(
|
|
1304
|
-
Object.keys(
|
|
1305
|
-
|
|
1552
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1553
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Tags" }) }),
|
|
1554
|
+
Object.keys(ne).length ? /* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-2", children: Object.entries(ne).map(([y, P]) => /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
|
|
1555
|
+
y,
|
|
1306
1556
|
": ",
|
|
1307
|
-
String(
|
|
1308
|
-
] },
|
|
1557
|
+
String(P)
|
|
1558
|
+
] }, y)) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No tags" })
|
|
1309
1559
|
] })
|
|
1310
1560
|
] }),
|
|
1311
|
-
/* @__PURE__ */ e.jsxs(
|
|
1312
|
-
/* @__PURE__ */ e.jsx(
|
|
1561
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
1562
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsxs(G, { children: [
|
|
1313
1563
|
"Artifacts (",
|
|
1314
|
-
|
|
1564
|
+
xe.length,
|
|
1315
1565
|
")"
|
|
1316
1566
|
] }) }),
|
|
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(
|
|
1567
|
+
xe.length ? /* @__PURE__ */ e.jsxs(L, { children: [
|
|
1568
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1569
|
+
/* @__PURE__ */ e.jsx(N, { children: "#" }),
|
|
1570
|
+
/* @__PURE__ */ e.jsx(N, { children: "Kind" }),
|
|
1571
|
+
/* @__PURE__ */ e.jsx(N, { children: "Role" }),
|
|
1572
|
+
/* @__PURE__ */ e.jsx(N, { children: "Media Type" }),
|
|
1573
|
+
/* @__PURE__ */ e.jsx(N, { children: "Digest" }),
|
|
1574
|
+
/* @__PURE__ */ e.jsx(N, { children: "Actions" })
|
|
1325
1575
|
] }) }),
|
|
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:
|
|
1576
|
+
/* @__PURE__ */ e.jsx(B, { children: xe.map((y, P) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1577
|
+
/* @__PURE__ */ e.jsx(c, { children: P }),
|
|
1578
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: y.kind }),
|
|
1579
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: y.role }) }),
|
|
1580
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: y.media_type }),
|
|
1581
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(y.digest) }),
|
|
1332
1582
|
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
|
|
1333
|
-
/* @__PURE__ */ e.jsx(
|
|
1334
|
-
/* @__PURE__ */ e.jsx(
|
|
1583
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${a.run_id}/artifacts/${P}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View" }) }),
|
|
1584
|
+
/* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", onClick: () => ke(P), children: "Download" })
|
|
1335
1585
|
] }) })
|
|
1336
|
-
] },
|
|
1586
|
+
] }, P)) })
|
|
1337
1587
|
] }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No artifacts" })
|
|
1338
1588
|
] }),
|
|
1339
|
-
|
|
1340
|
-
/* @__PURE__ */ e.jsx(
|
|
1341
|
-
|
|
1342
|
-
/* @__PURE__ */ e.jsx("strong", { children:
|
|
1589
|
+
pe.length > 0 && /* @__PURE__ */ e.jsxs(b, { children: [
|
|
1590
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { className: "text-danger", children: "Errors" }) }),
|
|
1591
|
+
pe.map((y, P) => /* @__PURE__ */ e.jsxs("div", { className: "mb-2", children: [
|
|
1592
|
+
/* @__PURE__ */ e.jsx("strong", { children: y.type }),
|
|
1343
1593
|
": ",
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
] },
|
|
1594
|
+
y.message,
|
|
1595
|
+
y.traceback && /* @__PURE__ */ e.jsx("pre", { className: "mt-2", children: y.traceback })
|
|
1596
|
+
] }, P))
|
|
1347
1597
|
] }),
|
|
1348
1598
|
/* @__PURE__ */ e.jsxs(
|
|
1349
|
-
|
|
1599
|
+
es,
|
|
1350
1600
|
{
|
|
1351
|
-
open:
|
|
1352
|
-
onClose: () =>
|
|
1601
|
+
open: h,
|
|
1602
|
+
onClose: () => m(!1),
|
|
1353
1603
|
title: "Delete Run",
|
|
1354
1604
|
actions: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1355
|
-
/* @__PURE__ */ e.jsx(
|
|
1356
|
-
/* @__PURE__ */ e.jsxs(
|
|
1357
|
-
|
|
1605
|
+
/* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: () => m(!1), children: "Cancel" }),
|
|
1606
|
+
/* @__PURE__ */ e.jsxs(D, { variant: "danger", onClick: Ie, disabled: k, children: [
|
|
1607
|
+
k && /* @__PURE__ */ e.jsx(I, {}),
|
|
1358
1608
|
"Delete"
|
|
1359
1609
|
] })
|
|
1360
1610
|
] }),
|
|
1361
1611
|
children: [
|
|
1362
1612
|
/* @__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:
|
|
1613
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children: Q(a.run_id) }),
|
|
1364
1614
|
/* @__PURE__ */ e.jsx("p", { className: "text-sm text-danger mt-2", children: "This action cannot be undone." })
|
|
1365
1615
|
]
|
|
1366
1616
|
}
|
|
1367
1617
|
),
|
|
1368
|
-
|
|
1369
|
-
|
|
1618
|
+
p && /* @__PURE__ */ e.jsx(
|
|
1619
|
+
Ce,
|
|
1370
1620
|
{
|
|
1371
|
-
message:
|
|
1372
|
-
variant:
|
|
1373
|
-
visible: !!
|
|
1374
|
-
onClose: () =>
|
|
1621
|
+
message: p.message,
|
|
1622
|
+
variant: p.variant,
|
|
1623
|
+
visible: !!p,
|
|
1624
|
+
onClose: () => _(null)
|
|
1375
1625
|
}
|
|
1376
1626
|
)
|
|
1377
1627
|
] });
|
|
1378
1628
|
}
|
|
1379
|
-
function
|
|
1380
|
-
const { currentWorkspace:
|
|
1381
|
-
return /* @__PURE__ */ e.jsxs(
|
|
1382
|
-
/* @__PURE__ */ e.jsx(
|
|
1383
|
-
/* @__PURE__ */ e.jsx(
|
|
1629
|
+
function Ir() {
|
|
1630
|
+
const { currentWorkspace: r } = K(), { data: t, loading: n } = Le();
|
|
1631
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1632
|
+
/* @__PURE__ */ e.jsx(Ee, { title: "Projects" }),
|
|
1633
|
+
/* @__PURE__ */ e.jsx(b, { children: n ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(I, {}) }) : /* @__PURE__ */ e.jsx(Dr, { projects: t ?? [], currentWorkspace: r }) })
|
|
1384
1634
|
] });
|
|
1385
1635
|
}
|
|
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(
|
|
1636
|
+
function qr() {
|
|
1637
|
+
const [r, t] = $e(), { data: n } = Le(), [a, u] = T(r.get("project") || ""), { data: o, loading: d, refetch: i } = Nr({ project: a || void 0 }), f = _e((h) => {
|
|
1638
|
+
u(h);
|
|
1639
|
+
const m = new URLSearchParams(r);
|
|
1640
|
+
h ? m.set("project", h) : m.delete("project"), t(m, { replace: !0 });
|
|
1641
|
+
}, [r, t]);
|
|
1642
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1643
|
+
/* @__PURE__ */ e.jsx(Ee, { title: "Run Groups" }),
|
|
1644
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs(Os, { children: [
|
|
1645
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1646
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "project", children: "Project" }),
|
|
1397
1647
|
/* @__PURE__ */ e.jsxs(
|
|
1398
|
-
|
|
1648
|
+
de,
|
|
1399
1649
|
{
|
|
1400
1650
|
id: "project",
|
|
1401
1651
|
value: a,
|
|
1402
|
-
onChange: (
|
|
1652
|
+
onChange: (h) => f(h.target.value),
|
|
1403
1653
|
children: [
|
|
1404
1654
|
/* @__PURE__ */ e.jsx("option", { value: "", children: "All projects" }),
|
|
1405
|
-
|
|
1655
|
+
n?.map((h) => /* @__PURE__ */ e.jsx("option", { value: h.name, children: h.name }, h.name))
|
|
1406
1656
|
]
|
|
1407
1657
|
}
|
|
1408
1658
|
)
|
|
1409
1659
|
] }),
|
|
1410
|
-
/* @__PURE__ */ e.jsxs(
|
|
1411
|
-
/* @__PURE__ */ e.jsx(
|
|
1412
|
-
|
|
1660
|
+
/* @__PURE__ */ e.jsxs(ee, { className: "flex items-end gap-2", children: [
|
|
1661
|
+
/* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: () => i(), children: "Filter" }),
|
|
1662
|
+
d && /* @__PURE__ */ e.jsx(I, {})
|
|
1413
1663
|
] })
|
|
1414
1664
|
] }) }),
|
|
1415
|
-
/* @__PURE__ */ e.jsx(
|
|
1665
|
+
/* @__PURE__ */ e.jsx(b, { children: d && !o ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(I, {}) }) : /* @__PURE__ */ e.jsx(Ar, { groups: o ?? [] }) })
|
|
1416
1666
|
] });
|
|
1417
1667
|
}
|
|
1418
|
-
function
|
|
1419
|
-
const { groupId:
|
|
1420
|
-
|
|
1668
|
+
function Ur() {
|
|
1669
|
+
const { groupId: r } = Qe(), { api: t } = K(), { data: n, loading: a, error: u, refetch: o } = _r(r), [d, i] = T(null), f = Re((m) => t.deleteRun(m));
|
|
1670
|
+
je(() => {
|
|
1671
|
+
if (d) {
|
|
1672
|
+
const m = setTimeout(() => i(null), 3e3);
|
|
1673
|
+
return () => clearTimeout(m);
|
|
1674
|
+
}
|
|
1675
|
+
}, [d]);
|
|
1676
|
+
const h = async (m) => {
|
|
1677
|
+
try {
|
|
1678
|
+
await f.mutate(m), i({ message: "Run deleted", variant: "success" }), o();
|
|
1679
|
+
} catch {
|
|
1680
|
+
i({ message: "Failed to delete run", variant: "error" });
|
|
1681
|
+
}
|
|
1421
1682
|
};
|
|
1422
|
-
return a ? /* @__PURE__ */ e.jsx(
|
|
1683
|
+
return a ? /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(I, {}) }) }) : 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
1684
|
/* @__PURE__ */ e.jsx(
|
|
1424
|
-
|
|
1685
|
+
Ee,
|
|
1425
1686
|
{
|
|
1426
1687
|
title: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1427
1688
|
"Group ",
|
|
1428
|
-
/* @__PURE__ */ e.jsx("span", { className: "font-mono", children:
|
|
1689
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-mono", children: Q(r) })
|
|
1429
1690
|
] }),
|
|
1430
|
-
subtitle: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-muted", children:
|
|
1691
|
+
subtitle: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-muted", children: r })
|
|
1431
1692
|
}
|
|
1432
1693
|
),
|
|
1433
|
-
/* @__PURE__ */ e.jsxs(
|
|
1434
|
-
/* @__PURE__ */ e.jsx(
|
|
1694
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1695
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsxs(G, { children: [
|
|
1435
1696
|
"Runs in Group (",
|
|
1436
|
-
|
|
1697
|
+
n.runs.length,
|
|
1437
1698
|
")"
|
|
1438
1699
|
] }) }),
|
|
1439
1700
|
/* @__PURE__ */ e.jsx(
|
|
1440
|
-
|
|
1701
|
+
rs,
|
|
1441
1702
|
{
|
|
1442
|
-
runs:
|
|
1443
|
-
onDelete:
|
|
1703
|
+
runs: n.runs,
|
|
1704
|
+
onDelete: h,
|
|
1444
1705
|
loading: f.loading
|
|
1445
1706
|
}
|
|
1446
1707
|
)
|
|
1447
|
-
] })
|
|
1708
|
+
] }),
|
|
1709
|
+
d && /* @__PURE__ */ e.jsx(
|
|
1710
|
+
Ce,
|
|
1711
|
+
{
|
|
1712
|
+
message: d.message,
|
|
1713
|
+
variant: d.variant,
|
|
1714
|
+
visible: !!d,
|
|
1715
|
+
onClose: () => i(null)
|
|
1716
|
+
}
|
|
1717
|
+
)
|
|
1448
1718
|
] });
|
|
1449
1719
|
}
|
|
1450
|
-
function
|
|
1451
|
-
return /* @__PURE__ */ e.jsx("
|
|
1720
|
+
function Mr({ className: r = "" }) {
|
|
1721
|
+
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" }) });
|
|
1722
|
+
}
|
|
1723
|
+
function Wr({ className: r = "" }) {
|
|
1724
|
+
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: [
|
|
1725
|
+
/* @__PURE__ */ e.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
1726
|
+
/* @__PURE__ */ e.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
1727
|
+
] });
|
|
1728
|
+
}
|
|
1729
|
+
function Gr({ className: r = "" }) {
|
|
1730
|
+
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: [
|
|
1731
|
+
/* @__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" }),
|
|
1732
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
|
|
1733
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
|
|
1734
|
+
] });
|
|
1735
|
+
}
|
|
1736
|
+
function Ke({ className: r = "" }) {
|
|
1737
|
+
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: [
|
|
1738
|
+
/* @__PURE__ */ e.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
1739
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
|
|
1740
|
+
/* @__PURE__ */ e.jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
|
|
1741
|
+
] });
|
|
1742
|
+
}
|
|
1743
|
+
function Ne({ match: r }) {
|
|
1744
|
+
return r ? /* @__PURE__ */ e.jsxs("span", { className: "diff-match inline-flex items-center gap-1.5", children: [
|
|
1745
|
+
/* @__PURE__ */ e.jsx(Mr, { className: "flex-shrink-0" }),
|
|
1746
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-medium", children: "Match" })
|
|
1747
|
+
] }) : /* @__PURE__ */ e.jsxs("span", { className: "diff-mismatch inline-flex items-center gap-1.5", children: [
|
|
1748
|
+
/* @__PURE__ */ e.jsx(Wr, { className: "flex-shrink-0" }),
|
|
1749
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-medium", children: "Different" })
|
|
1750
|
+
] });
|
|
1751
|
+
}
|
|
1752
|
+
function Vr({ warnings: r }) {
|
|
1753
|
+
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: [
|
|
1754
|
+
/* @__PURE__ */ e.jsx(Gr, { className: "flex-shrink-0 mt-0.5" }),
|
|
1755
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex-1", children: [
|
|
1756
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-semibold mb-1", children: r.length === 1 ? "Warning" : `${r.length} Warnings` }),
|
|
1757
|
+
/* @__PURE__ */ e.jsx("ul", { className: "space-y-1", children: r.map((t, n) => /* @__PURE__ */ e.jsx("li", { className: "text-sm", children: t }, n)) })
|
|
1758
|
+
] })
|
|
1759
|
+
] }) });
|
|
1760
|
+
}
|
|
1761
|
+
function Cs({
|
|
1762
|
+
label: r,
|
|
1763
|
+
run: t,
|
|
1764
|
+
variant: n
|
|
1765
|
+
}) {
|
|
1766
|
+
return /* @__PURE__ */ e.jsxs("div", { className: "relative", children: [
|
|
1767
|
+
/* @__PURE__ */ e.jsx("div", { className: `absolute top-0 left-0 w-1 h-full rounded-l ${n === "a" ? "bg-info" : "bg-primary"}` }),
|
|
1768
|
+
/* @__PURE__ */ e.jsxs("div", { className: "pl-4", children: [
|
|
1769
|
+
/* @__PURE__ */ e.jsx("p", { className: `text-xs font-semibold uppercase tracking-wider mb-2 ${n === "a" ? "text-info" : "text-primary"}`, children: r }),
|
|
1770
|
+
/* @__PURE__ */ e.jsx(z, { to: `/runs/${t.run_id}`, className: "text-base font-medium hover:underline", children: t.run_name || "Unnamed Run" }),
|
|
1771
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-mono text-xs mt-1 text-muted", children: Q(t.run_id) }),
|
|
1772
|
+
/* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-1 text-muted", children: [
|
|
1773
|
+
t.project,
|
|
1774
|
+
" · ",
|
|
1775
|
+
Ze(t.created_at)
|
|
1776
|
+
] })
|
|
1777
|
+
] })
|
|
1778
|
+
] });
|
|
1452
1779
|
}
|
|
1453
|
-
function
|
|
1454
|
-
|
|
1455
|
-
|
|
1780
|
+
function ae({
|
|
1781
|
+
children: r,
|
|
1782
|
+
badge: t
|
|
1783
|
+
}) {
|
|
1784
|
+
return /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: /* @__PURE__ */ e.jsxs("span", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
1785
|
+
r,
|
|
1786
|
+
t && /* @__PURE__ */ e.jsx(Y, { variant: t.variant, children: t.label })
|
|
1787
|
+
] }) }) });
|
|
1788
|
+
}
|
|
1789
|
+
function zr({
|
|
1790
|
+
tvd: r,
|
|
1791
|
+
noiseContext: t
|
|
1792
|
+
}) {
|
|
1793
|
+
if (r === 0)
|
|
1794
|
+
return /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4 text-success", children: "✓ Distributions are identical (TVD = 0)" });
|
|
1795
|
+
if (!t) return null;
|
|
1796
|
+
const { p_value: n, noise_ratio: a } = t;
|
|
1797
|
+
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: [
|
|
1798
|
+
"⚠ Borderline (p=",
|
|
1799
|
+
n.toFixed(2),
|
|
1800
|
+
") — consider increasing shots"
|
|
1801
|
+
] }) : /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-danger", children: [
|
|
1802
|
+
"✗ Statistically significant difference (p=",
|
|
1803
|
+
n.toFixed(2),
|
|
1804
|
+
") — results show meaningful divergence"
|
|
1805
|
+
] }) : 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: [
|
|
1806
|
+
"⚠ Ambiguous (",
|
|
1807
|
+
a.toFixed(1),
|
|
1808
|
+
"× expected noise) — consider increasing shots"
|
|
1809
|
+
] }) : /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-danger", children: [
|
|
1810
|
+
"✗ TVD exceeds expected noise (",
|
|
1811
|
+
a.toFixed(1),
|
|
1812
|
+
"×) — results show meaningful differences"
|
|
1813
|
+
] }) : null;
|
|
1814
|
+
}
|
|
1815
|
+
function Yr() {
|
|
1816
|
+
const [r, t] = $e(), { data: n } = Ds({ limit: 100 }), a = n?.runs ?? [], [u, o] = T(r.get("a") || ""), [d, i] = T(r.get("b") || ""), [f, h] = T(""), m = (p) => {
|
|
1817
|
+
if (p.preventDefault(), !u || !d) {
|
|
1818
|
+
h("Please select both runs to compare");
|
|
1819
|
+
return;
|
|
1820
|
+
}
|
|
1821
|
+
if (u === d) {
|
|
1822
|
+
h("Please select two different runs");
|
|
1823
|
+
return;
|
|
1824
|
+
}
|
|
1825
|
+
h(""), t({ a: u, b: d });
|
|
1456
1826
|
};
|
|
1457
1827
|
return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1458
|
-
/* @__PURE__ */ e.jsx(
|
|
1828
|
+
/* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsxs("form", { onSubmit: m, children: [
|
|
1459
1829
|
/* @__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
|
-
|
|
1830
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1831
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "a", children: "Run A (Baseline)" }),
|
|
1832
|
+
/* @__PURE__ */ e.jsxs(
|
|
1833
|
+
de,
|
|
1834
|
+
{
|
|
1835
|
+
id: "a",
|
|
1836
|
+
value: u,
|
|
1837
|
+
onChange: (p) => {
|
|
1838
|
+
o(p.target.value), h("");
|
|
1839
|
+
},
|
|
1840
|
+
children: [
|
|
1841
|
+
/* @__PURE__ */ e.jsx("option", { value: "", children: "Select run..." }),
|
|
1842
|
+
a.map((p) => /* @__PURE__ */ e.jsxs("option", { value: p.run_id, children: [
|
|
1843
|
+
p.run_name || "Unnamed",
|
|
1844
|
+
" (",
|
|
1845
|
+
Q(p.run_id),
|
|
1846
|
+
") — ",
|
|
1847
|
+
p.project
|
|
1848
|
+
] }, p.run_id))
|
|
1849
|
+
]
|
|
1850
|
+
}
|
|
1851
|
+
)
|
|
1472
1852
|
] }),
|
|
1473
|
-
/* @__PURE__ */ e.jsxs(
|
|
1474
|
-
/* @__PURE__ */ e.jsx(
|
|
1475
|
-
/* @__PURE__ */ e.jsxs(
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1853
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
1854
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "b", children: "Run B (Candidate)" }),
|
|
1855
|
+
/* @__PURE__ */ e.jsxs(
|
|
1856
|
+
de,
|
|
1857
|
+
{
|
|
1858
|
+
id: "b",
|
|
1859
|
+
value: d,
|
|
1860
|
+
onChange: (p) => {
|
|
1861
|
+
i(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
|
+
)
|
|
1485
1875
|
] })
|
|
1486
1876
|
] }),
|
|
1487
|
-
/* @__PURE__ */ e.jsx(
|
|
1877
|
+
f && /* @__PURE__ */ e.jsx("p", { className: "text-sm mb-3 text-danger", children: f }),
|
|
1878
|
+
/* @__PURE__ */ e.jsx(D, { type: "submit", variant: "primary", children: "Compare" })
|
|
1488
1879
|
] }) }),
|
|
1489
|
-
/* @__PURE__ */ e.jsxs(
|
|
1490
|
-
/* @__PURE__ */ e.jsx(
|
|
1491
|
-
/* @__PURE__ */ e.jsxs("
|
|
1492
|
-
/* @__PURE__ */ e.
|
|
1493
|
-
|
|
1494
|
-
|
|
1880
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mt-4", children: [
|
|
1881
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "How it works" }) }),
|
|
1882
|
+
/* @__PURE__ */ e.jsxs("div", { className: "space-y-2 text-sm text-muted", children: [
|
|
1883
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
1884
|
+
/* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
|
|
1885
|
+
/* @__PURE__ */ e.jsx("span", { children: "Select two runs to compare their parameters, metrics, and artifacts" })
|
|
1886
|
+
] }),
|
|
1887
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
1888
|
+
/* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
|
|
1889
|
+
/* @__PURE__ */ e.jsx("span", { children: "The diff shows changed values and computes TVD for result distributions" })
|
|
1890
|
+
] }),
|
|
1891
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
1892
|
+
/* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
|
|
1893
|
+
/* @__PURE__ */ e.jsx("span", { children: "You can also compare from the run detail page" })
|
|
1894
|
+
] })
|
|
1495
1895
|
] })
|
|
1496
1896
|
] })
|
|
1497
1897
|
] });
|
|
1498
1898
|
}
|
|
1499
|
-
function
|
|
1500
|
-
const { data:
|
|
1501
|
-
if (a)
|
|
1502
|
-
|
|
1503
|
-
|
|
1899
|
+
function Kr({ runIdA: r, runIdB: t }) {
|
|
1900
|
+
const { data: n, loading: a, error: u } = wr(r, t);
|
|
1901
|
+
if (a)
|
|
1902
|
+
return /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col items-center justify-center py-12 gap-3", children: [
|
|
1903
|
+
/* @__PURE__ */ e.jsx(I, {}),
|
|
1904
|
+
/* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted", children: "Comparing runs..." })
|
|
1905
|
+
] }) });
|
|
1906
|
+
if (u || !n)
|
|
1907
|
+
return /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Failed to load diff", hint: u?.message }) });
|
|
1908
|
+
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
1909
|
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
|
-
] })
|
|
1910
|
+
/* @__PURE__ */ e.jsx(Vr, { warnings: i.warnings || [] }),
|
|
1911
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
1912
|
+
/* @__PURE__ */ e.jsx(Cs, { label: "Run A (Baseline)", run: o, variant: "a" }),
|
|
1913
|
+
/* @__PURE__ */ e.jsx(Cs, { label: "Run B (Candidate)", run: d, variant: "b" })
|
|
1530
1914
|
] }) }),
|
|
1531
1915
|
/* @__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(
|
|
1916
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1917
|
+
/* @__PURE__ */ e.jsx(ae, { children: "Metadata" }),
|
|
1918
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
1919
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1536
1920
|
/* @__PURE__ */ e.jsx(c, { children: "Project" }),
|
|
1537
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1921
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.metadata.project_match }) })
|
|
1538
1922
|
] }),
|
|
1539
|
-
/* @__PURE__ */ e.jsxs(
|
|
1923
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1540
1924
|
/* @__PURE__ */ e.jsx(c, { children: "Backend" }),
|
|
1541
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1925
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.metadata.backend_match }) })
|
|
1542
1926
|
] }),
|
|
1543
1927
|
!i.metadata.project_match && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1544
|
-
/* @__PURE__ */ e.jsxs(
|
|
1545
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1928
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1929
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Project A" }),
|
|
1546
1930
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.project_a || "N/A" })
|
|
1547
1931
|
] }),
|
|
1548
|
-
/* @__PURE__ */ e.jsxs(
|
|
1549
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1932
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1933
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Project B" }),
|
|
1550
1934
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.project_b || "N/A" })
|
|
1551
1935
|
] })
|
|
1552
1936
|
] }),
|
|
1553
1937
|
!i.metadata.backend_match && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1554
|
-
/* @__PURE__ */ e.jsxs(
|
|
1555
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1938
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1939
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Backend A" }),
|
|
1556
1940
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.backend_a || "N/A" })
|
|
1557
1941
|
] }),
|
|
1558
|
-
/* @__PURE__ */ e.jsxs(
|
|
1559
|
-
/* @__PURE__ */ e.jsx(c, { className: "text-
|
|
1942
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1943
|
+
/* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Backend B" }),
|
|
1560
1944
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.backend_b || "N/A" })
|
|
1561
1945
|
] })
|
|
1562
1946
|
] })
|
|
1563
1947
|
] }) })
|
|
1564
1948
|
] }),
|
|
1565
|
-
/* @__PURE__ */ e.jsxs(
|
|
1566
|
-
/* @__PURE__ */ e.jsx(
|
|
1567
|
-
/* @__PURE__ */ e.jsx(
|
|
1568
|
-
/* @__PURE__ */ e.jsxs(
|
|
1949
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1950
|
+
/* @__PURE__ */ e.jsx(ae, { children: "Fingerprints" }),
|
|
1951
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
1952
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1569
1953
|
/* @__PURE__ */ e.jsx(c, { children: "Run A" }),
|
|
1570
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children:
|
|
1954
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(i.fingerprints.a) })
|
|
1571
1955
|
] }),
|
|
1572
|
-
/* @__PURE__ */ e.jsxs(
|
|
1956
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1573
1957
|
/* @__PURE__ */ e.jsx(c, { children: "Run B" }),
|
|
1574
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children:
|
|
1958
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(i.fingerprints.b) })
|
|
1575
1959
|
] }),
|
|
1576
|
-
/* @__PURE__ */ e.jsxs(
|
|
1960
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1577
1961
|
/* @__PURE__ */ e.jsx(c, { children: "Match" }),
|
|
1578
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1962
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.fingerprints.a === i.fingerprints.b }) })
|
|
1579
1963
|
] })
|
|
1580
1964
|
] }) })
|
|
1581
1965
|
] })
|
|
1582
1966
|
] }),
|
|
1583
1967
|
/* @__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
|
-
|
|
1968
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1969
|
+
/* @__PURE__ */ e.jsx(
|
|
1970
|
+
ae,
|
|
1971
|
+
{
|
|
1972
|
+
badge: {
|
|
1973
|
+
variant: i.program.exact_match ? "success" : i.program.structural_match ? "info" : "warning",
|
|
1974
|
+
label: i.program.exact_match ? "Exact Match" : i.program.structural_match ? "Structural Match" : "Different"
|
|
1975
|
+
},
|
|
1976
|
+
children: "Program"
|
|
1977
|
+
}
|
|
1978
|
+
),
|
|
1979
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
1980
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1591
1981
|
/* @__PURE__ */ e.jsx(c, { children: "Exact Match" }),
|
|
1592
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1982
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.program.exact_match }) })
|
|
1593
1983
|
] }),
|
|
1594
|
-
/* @__PURE__ */ e.jsxs(
|
|
1984
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1595
1985
|
/* @__PURE__ */ e.jsx(c, { children: "Structural Match" }),
|
|
1596
|
-
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(
|
|
1986
|
+
/* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.program.structural_match }) })
|
|
1597
1987
|
] })
|
|
1598
1988
|
] }) })
|
|
1599
1989
|
] }),
|
|
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" })
|
|
1990
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
1991
|
+
/* @__PURE__ */ e.jsx(ae, { badge: f, children: "Device Calibration" }),
|
|
1992
|
+
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
1993
|
] })
|
|
1607
1994
|
] }),
|
|
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" })
|
|
1995
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
1996
|
+
/* @__PURE__ */ e.jsx(ae, { badge: { variant: i.params.match ? "success" : "warning", label: i.params.match ? "Match" : "Different" }, children: "Parameters" }),
|
|
1997
|
+
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: [
|
|
1998
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1999
|
+
/* @__PURE__ */ e.jsx(N, { children: "Parameter" }),
|
|
2000
|
+
/* @__PURE__ */ e.jsx(N, { children: "Run A" }),
|
|
2001
|
+
/* @__PURE__ */ e.jsx(N, { children: "Run B" })
|
|
1618
2002
|
] }) }),
|
|
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
|
-
] },
|
|
2003
|
+
/* @__PURE__ */ e.jsx(B, { children: Object.entries(i.params.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2004
|
+
/* @__PURE__ */ e.jsx(c, { children: h }),
|
|
2005
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.a) }),
|
|
2006
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.b) })
|
|
2007
|
+
] }, h)) })
|
|
1624
2008
|
] }) })
|
|
1625
2009
|
] }),
|
|
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" })
|
|
2010
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
2011
|
+
/* @__PURE__ */ e.jsx(ae, { badge: { variant: i.metrics.match ? "success" : "warning", label: i.metrics.match ? "Match" : "Different" }, children: "Metrics" }),
|
|
2012
|
+
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: [
|
|
2013
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2014
|
+
/* @__PURE__ */ e.jsx(N, { children: "Metric" }),
|
|
2015
|
+
/* @__PURE__ */ e.jsx(N, { children: "Run A" }),
|
|
2016
|
+
/* @__PURE__ */ e.jsx(N, { children: "Run B" })
|
|
1636
2017
|
] }) }),
|
|
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
|
-
] },
|
|
2018
|
+
/* @__PURE__ */ e.jsx(B, { children: Object.entries(i.metrics.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2019
|
+
/* @__PURE__ */ e.jsx(c, { children: h }),
|
|
2020
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.a }),
|
|
2021
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.b })
|
|
2022
|
+
] }, h)) })
|
|
1642
2023
|
] }) })
|
|
1643
2024
|
] }),
|
|
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" })
|
|
2025
|
+
i.circuit_diff && /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
2026
|
+
/* @__PURE__ */ e.jsx(ae, { badge: { variant: i.circuit_diff.match ? "success" : "warning", label: i.circuit_diff.match ? "Match" : "Different" }, children: "Circuit" }),
|
|
2027
|
+
i.circuit_diff.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Circuit structure matches" }) : /* @__PURE__ */ e.jsxs("div", { className: "space-y-4", children: [
|
|
2028
|
+
i.circuit_diff.changed && Object.keys(i.circuit_diff.changed).length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2029
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Changed Properties" }),
|
|
2030
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
2031
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2032
|
+
/* @__PURE__ */ e.jsx(N, { children: "Property" }),
|
|
2033
|
+
/* @__PURE__ */ e.jsx(N, { children: "Run A" }),
|
|
2034
|
+
/* @__PURE__ */ e.jsx(N, { children: "Run B" }),
|
|
2035
|
+
/* @__PURE__ */ e.jsx(N, { children: "Delta" })
|
|
1658
2036
|
] }) }),
|
|
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
|
-
|
|
2037
|
+
/* @__PURE__ */ e.jsx(B, { children: Object.entries(i.circuit_diff.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2038
|
+
/* @__PURE__ */ e.jsx(c, { children: m.label || h }),
|
|
2039
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.a) }),
|
|
2040
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.b) }),
|
|
2041
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.delta != null && /* @__PURE__ */ e.jsxs("span", { className: m.delta > 0 ? "text-danger" : "text-success", children: [
|
|
2042
|
+
m.delta > 0 ? "+" : "",
|
|
2043
|
+
m.delta,
|
|
2044
|
+
m.pct != null && ` (${m.pct > 0 ? "+" : ""}${m.pct.toFixed(1)}%)`
|
|
1667
2045
|
] }) })
|
|
1668
|
-
] },
|
|
2046
|
+
] }, h)) })
|
|
1669
2047
|
] })
|
|
1670
2048
|
] }),
|
|
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(
|
|
2049
|
+
i.circuit_diff.is_clifford_changed && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2050
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Clifford Status" }),
|
|
2051
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
2052
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1675
2053
|
/* @__PURE__ */ e.jsx(c, { children: "Run A" }),
|
|
1676
2054
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.circuit_diff.is_clifford_a != null ? String(i.circuit_diff.is_clifford_a) : "unknown" })
|
|
1677
2055
|
] }),
|
|
1678
|
-
/* @__PURE__ */ e.jsxs(
|
|
2056
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1679
2057
|
/* @__PURE__ */ e.jsx(c, { children: "Run B" }),
|
|
1680
2058
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.circuit_diff.is_clifford_b != null ? String(i.circuit_diff.is_clifford_b) : "unknown" })
|
|
1681
2059
|
] })
|
|
1682
2060
|
] }) })
|
|
1683
2061
|
] }),
|
|
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("
|
|
2062
|
+
i.circuit_diff.added_gates && i.circuit_diff.added_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2063
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "New Gate Types (in B)" }),
|
|
2064
|
+
/* @__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
2065
|
] }),
|
|
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("
|
|
2066
|
+
i.circuit_diff.removed_gates && i.circuit_diff.removed_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
|
|
2067
|
+
/* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Removed Gate Types (from A)" }),
|
|
2068
|
+
/* @__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
2069
|
] })
|
|
1692
2070
|
] })
|
|
1693
2071
|
] }),
|
|
1694
|
-
i.tvd != null && /* @__PURE__ */ e.jsxs(
|
|
1695
|
-
/* @__PURE__ */ e.jsx(
|
|
1696
|
-
/* @__PURE__ */ e.jsx(
|
|
1697
|
-
/* @__PURE__ */ e.jsxs(
|
|
2072
|
+
i.tvd != null && /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
|
|
2073
|
+
/* @__PURE__ */ e.jsx(ae, { children: "Results Distribution" }),
|
|
2074
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
2075
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1698
2076
|
/* @__PURE__ */ e.jsx(c, { children: "Total Variation Distance (TVD)" }),
|
|
1699
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.tvd.toFixed(6) })
|
|
2077
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono font-medium", children: i.tvd.toFixed(6) })
|
|
1700
2078
|
] }),
|
|
1701
|
-
i.shots && /* @__PURE__ */ e.jsxs(
|
|
2079
|
+
i.shots && /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1702
2080
|
/* @__PURE__ */ e.jsx(c, { children: "Total Shots (A / B)" }),
|
|
1703
2081
|
/* @__PURE__ */ e.jsxs(c, { className: "font-mono", children: [
|
|
1704
2082
|
i.shots.a,
|
|
@@ -1706,154 +2084,142 @@ function $s({ runIdA: s, runIdB: n }) {
|
|
|
1706
2084
|
i.shots.b
|
|
1707
2085
|
] })
|
|
1708
2086
|
] }),
|
|
1709
|
-
i.noise_context?.noise_p95 && /* @__PURE__ */ e.jsxs(
|
|
2087
|
+
i.noise_context?.noise_p95 && /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1710
2088
|
/* @__PURE__ */ e.jsx(c, { children: "Noise Threshold (p95)" }),
|
|
1711
2089
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.noise_p95.toFixed(6) })
|
|
1712
2090
|
] }),
|
|
1713
|
-
i.noise_context?.p_value != null && /* @__PURE__ */ e.jsxs(
|
|
2091
|
+
i.noise_context?.p_value != null && /* @__PURE__ */ e.jsxs(j, { children: [
|
|
1714
2092
|
/* @__PURE__ */ e.jsx(c, { children: "p-value" }),
|
|
1715
|
-
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.p_value.toFixed(
|
|
2093
|
+
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.p_value.toFixed(4) })
|
|
1716
2094
|
] })
|
|
1717
2095
|
] }) }),
|
|
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 })
|
|
2096
|
+
/* @__PURE__ */ e.jsx(zr, { tvd: i.tvd, noiseContext: i.noise_context })
|
|
1735
2097
|
] })
|
|
1736
2098
|
] });
|
|
1737
2099
|
}
|
|
1738
|
-
function
|
|
1739
|
-
const [
|
|
1740
|
-
return /* @__PURE__ */ e.jsxs(
|
|
2100
|
+
function Hr() {
|
|
2101
|
+
const [r] = $e(), t = r.get("a"), n = r.get("b"), a = t && n;
|
|
2102
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1741
2103
|
/* @__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" }) })
|
|
2104
|
+
/* @__PURE__ */ e.jsx("h1", { className: "page-title", children: "Compare Runs" }),
|
|
2105
|
+
a && /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-1 text-muted", children: /* @__PURE__ */ e.jsx(z, { to: "/diff", children: "← Select different runs" }) })
|
|
1747
2106
|
] }) }),
|
|
1748
|
-
a ? /* @__PURE__ */ e.jsx(
|
|
2107
|
+
a ? /* @__PURE__ */ e.jsx(Kr, { runIdA: t, runIdB: n }) : /* @__PURE__ */ e.jsx(Yr, {})
|
|
1749
2108
|
] });
|
|
1750
2109
|
}
|
|
1751
|
-
function
|
|
1752
|
-
const { api:
|
|
1753
|
-
const
|
|
1754
|
-
return
|
|
1755
|
-
}),
|
|
1756
|
-
|
|
2110
|
+
function Jr() {
|
|
2111
|
+
const { api: r } = K(), [t, n] = T(""), [a, u] = T(null), [o, d] = T(!1), [i, f] = T(""), { mutate: h, loading: m } = Re(async () => {
|
|
2112
|
+
const _ = await r.listRuns({ q: t, limit: 100 });
|
|
2113
|
+
return u(_.runs), d(!0), _;
|
|
2114
|
+
}), p = (_) => {
|
|
2115
|
+
if (_.preventDefault(), !t.trim()) {
|
|
2116
|
+
f("Please enter a search query");
|
|
2117
|
+
return;
|
|
2118
|
+
}
|
|
2119
|
+
f(""), h();
|
|
1757
2120
|
};
|
|
1758
|
-
return /* @__PURE__ */ e.jsxs(
|
|
2121
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1759
2122
|
/* @__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(
|
|
2123
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("form", { onSubmit: p, children: [
|
|
2124
|
+
/* @__PURE__ */ e.jsxs(ee, { children: [
|
|
2125
|
+
/* @__PURE__ */ e.jsx(ie, { htmlFor: "q", children: "Query" }),
|
|
1763
2126
|
/* @__PURE__ */ e.jsx(
|
|
1764
|
-
|
|
2127
|
+
ss,
|
|
1765
2128
|
{
|
|
1766
2129
|
id: "q",
|
|
1767
2130
|
type: "text",
|
|
1768
|
-
value:
|
|
1769
|
-
onChange: (
|
|
2131
|
+
value: t,
|
|
2132
|
+
onChange: (_) => {
|
|
2133
|
+
n(_.target.value), f("");
|
|
2134
|
+
},
|
|
1770
2135
|
placeholder: "metric.fidelity > 0.95 and params.shots = 1000",
|
|
1771
2136
|
className: "font-mono"
|
|
1772
2137
|
}
|
|
1773
2138
|
)
|
|
1774
2139
|
] }),
|
|
2140
|
+
i && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-[#DC4A4A] mb-3", children: i }),
|
|
1775
2141
|
/* @__PURE__ */ e.jsxs("div", { className: "flex gap-2 items-center", children: [
|
|
1776
|
-
/* @__PURE__ */ e.jsxs(
|
|
1777
|
-
|
|
2142
|
+
/* @__PURE__ */ e.jsxs(D, { type: "submit", variant: "primary", disabled: m, children: [
|
|
2143
|
+
m && /* @__PURE__ */ e.jsx(I, {}),
|
|
1778
2144
|
"Search"
|
|
1779
2145
|
] }),
|
|
1780
|
-
|
|
2146
|
+
m && /* @__PURE__ */ e.jsx("span", { className: "text-muted text-sm", children: "Searching..." })
|
|
1781
2147
|
] })
|
|
1782
2148
|
] }) }),
|
|
1783
|
-
|
|
2149
|
+
o && a && /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: a.length > 0 ? /* @__PURE__ */ e.jsx(rs, { runs: a }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted text-center py-8", children: "No runs match your query" }) }),
|
|
1784
2150
|
/* @__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(
|
|
2151
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
2152
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Query Syntax" }) }),
|
|
2153
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
2154
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2155
|
+
/* @__PURE__ */ e.jsx(N, { children: "Field" }),
|
|
2156
|
+
/* @__PURE__ */ e.jsx(N, { children: "Description" })
|
|
1791
2157
|
] }) }),
|
|
1792
|
-
/* @__PURE__ */ e.jsxs(
|
|
1793
|
-
/* @__PURE__ */ e.jsxs(
|
|
2158
|
+
/* @__PURE__ */ e.jsxs(B, { children: [
|
|
2159
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1794
2160
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "params.X" }),
|
|
1795
2161
|
/* @__PURE__ */ e.jsx(c, { children: "Parameter value" })
|
|
1796
2162
|
] }),
|
|
1797
|
-
/* @__PURE__ */ e.jsxs(
|
|
2163
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1798
2164
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.X" }),
|
|
1799
2165
|
/* @__PURE__ */ e.jsx(c, { children: "Metric value" })
|
|
1800
2166
|
] }),
|
|
1801
|
-
/* @__PURE__ */ e.jsxs(
|
|
2167
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1802
2168
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "tags.X" }),
|
|
1803
2169
|
/* @__PURE__ */ e.jsx(c, { children: "Tag value" })
|
|
1804
2170
|
] }),
|
|
1805
|
-
/* @__PURE__ */ e.jsxs(
|
|
2171
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1806
2172
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "status" }),
|
|
1807
2173
|
/* @__PURE__ */ e.jsx(c, { children: "Run status" })
|
|
1808
2174
|
] }),
|
|
1809
|
-
/* @__PURE__ */ e.jsxs(
|
|
2175
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1810
2176
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "project" }),
|
|
1811
2177
|
/* @__PURE__ */ e.jsx(c, { children: "Project name" })
|
|
1812
2178
|
] }),
|
|
1813
|
-
/* @__PURE__ */ e.jsxs(
|
|
2179
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1814
2180
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "backend" }),
|
|
1815
2181
|
/* @__PURE__ */ e.jsx(c, { children: "Backend name" })
|
|
1816
2182
|
] })
|
|
1817
2183
|
] })
|
|
1818
2184
|
] })
|
|
1819
2185
|
] }),
|
|
1820
|
-
/* @__PURE__ */ e.jsxs(
|
|
1821
|
-
/* @__PURE__ */ e.jsx(
|
|
1822
|
-
/* @__PURE__ */ e.jsxs(
|
|
1823
|
-
/* @__PURE__ */ e.jsx(
|
|
1824
|
-
/* @__PURE__ */ e.jsx(
|
|
1825
|
-
/* @__PURE__ */ e.jsx(
|
|
2186
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
2187
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Operators" }) }),
|
|
2188
|
+
/* @__PURE__ */ e.jsxs(L, { children: [
|
|
2189
|
+
/* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
|
|
2190
|
+
/* @__PURE__ */ e.jsx(N, { children: "Operator" }),
|
|
2191
|
+
/* @__PURE__ */ e.jsx(N, { children: "Description" })
|
|
1826
2192
|
] }) }),
|
|
1827
|
-
/* @__PURE__ */ e.jsxs(
|
|
1828
|
-
/* @__PURE__ */ e.jsxs(
|
|
2193
|
+
/* @__PURE__ */ e.jsxs(B, { children: [
|
|
2194
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1829
2195
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "=" }),
|
|
1830
2196
|
/* @__PURE__ */ e.jsx(c, { children: "Equals" })
|
|
1831
2197
|
] }),
|
|
1832
|
-
/* @__PURE__ */ e.jsxs(
|
|
2198
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1833
2199
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "!=" }),
|
|
1834
2200
|
/* @__PURE__ */ e.jsx(c, { children: "Not equals" })
|
|
1835
2201
|
] }),
|
|
1836
|
-
/* @__PURE__ */ e.jsxs(
|
|
2202
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1837
2203
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: ">" }),
|
|
1838
2204
|
/* @__PURE__ */ e.jsx(c, { children: "Greater than" })
|
|
1839
2205
|
] }),
|
|
1840
|
-
/* @__PURE__ */ e.jsxs(
|
|
2206
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1841
2207
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: ">=" }),
|
|
1842
2208
|
/* @__PURE__ */ e.jsx(c, { children: "Greater or equal" })
|
|
1843
2209
|
] }),
|
|
1844
|
-
/* @__PURE__ */ e.jsxs(
|
|
2210
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1845
2211
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "<" }),
|
|
1846
2212
|
/* @__PURE__ */ e.jsx(c, { children: "Less than" })
|
|
1847
2213
|
] }),
|
|
1848
|
-
/* @__PURE__ */ e.jsxs(
|
|
2214
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1849
2215
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "<=" }),
|
|
1850
2216
|
/* @__PURE__ */ e.jsx(c, { children: "Less or equal" })
|
|
1851
2217
|
] }),
|
|
1852
|
-
/* @__PURE__ */ e.jsxs(
|
|
2218
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1853
2219
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "~" }),
|
|
1854
2220
|
/* @__PURE__ */ e.jsx(c, { children: "Contains" })
|
|
1855
2221
|
] }),
|
|
1856
|
-
/* @__PURE__ */ e.jsxs(
|
|
2222
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1857
2223
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "and" }),
|
|
1858
2224
|
/* @__PURE__ */ e.jsx(c, { children: "Combine conditions" })
|
|
1859
2225
|
] })
|
|
@@ -1861,26 +2227,26 @@ function Is() {
|
|
|
1861
2227
|
] })
|
|
1862
2228
|
] })
|
|
1863
2229
|
] }),
|
|
1864
|
-
/* @__PURE__ */ e.jsxs(
|
|
1865
|
-
/* @__PURE__ */ e.jsx(
|
|
1866
|
-
/* @__PURE__ */ e.jsx(
|
|
1867
|
-
/* @__PURE__ */ e.jsxs(
|
|
2230
|
+
/* @__PURE__ */ e.jsxs(b, { className: "mt-4", children: [
|
|
2231
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Examples" }) }),
|
|
2232
|
+
/* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
|
|
2233
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1868
2234
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.fidelity > 0.95" }),
|
|
1869
2235
|
/* @__PURE__ */ e.jsx(c, { children: "High fidelity runs" })
|
|
1870
2236
|
] }),
|
|
1871
|
-
/* @__PURE__ */ e.jsxs(
|
|
2237
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1872
2238
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "params.shots = 1000 and status = FINISHED" }),
|
|
1873
2239
|
/* @__PURE__ */ e.jsx(c, { children: "Finished runs with 1000 shots" })
|
|
1874
2240
|
] }),
|
|
1875
|
-
/* @__PURE__ */ e.jsxs(
|
|
2241
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1876
2242
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "tags.backend ~ ibm" }),
|
|
1877
2243
|
/* @__PURE__ */ e.jsx(c, { children: "Runs with IBM backends" })
|
|
1878
2244
|
] }),
|
|
1879
|
-
/* @__PURE__ */ e.jsxs(
|
|
2245
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1880
2246
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.error < 0.01" }),
|
|
1881
2247
|
/* @__PURE__ */ e.jsx(c, { children: "Low error runs" })
|
|
1882
2248
|
] }),
|
|
1883
|
-
/* @__PURE__ */ e.jsxs(
|
|
2249
|
+
/* @__PURE__ */ e.jsxs(j, { children: [
|
|
1884
2250
|
/* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "project = vqe and metric.energy < -2.0" }),
|
|
1885
2251
|
/* @__PURE__ */ e.jsx(c, { children: "VQE runs with low energy" })
|
|
1886
2252
|
] })
|
|
@@ -1888,144 +2254,169 @@ function Is() {
|
|
|
1888
2254
|
] })
|
|
1889
2255
|
] });
|
|
1890
2256
|
}
|
|
1891
|
-
function
|
|
1892
|
-
const { runId:
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
2257
|
+
function Xr() {
|
|
2258
|
+
const { runId: r, index: t } = Qe(), n = parseInt(t, 10), { api: a } = K(), { data: u } = As(r), { data: o, loading: d, error: i } = Rr(r, n), [f, h] = T(null);
|
|
2259
|
+
je(() => {
|
|
2260
|
+
if (f) {
|
|
2261
|
+
const S = setTimeout(() => h(null), 3e3);
|
|
2262
|
+
return () => clearTimeout(S);
|
|
2263
|
+
}
|
|
2264
|
+
}, [f]);
|
|
2265
|
+
const m = async () => {
|
|
2266
|
+
try {
|
|
2267
|
+
const S = a.getArtifactDownloadUrl(r, n), se = await fetch(S);
|
|
2268
|
+
if (!se.ok) throw new Error("Download failed");
|
|
2269
|
+
const te = await se.blob(), J = document.createElement("a");
|
|
2270
|
+
J.href = URL.createObjectURL(te), J.download = p?.kind || `artifact-${n}`, J.click(), URL.revokeObjectURL(J.href), h({ message: "Download started", variant: "success" });
|
|
2271
|
+
} catch {
|
|
2272
|
+
h({ message: "Download failed", variant: "error" });
|
|
2273
|
+
}
|
|
2274
|
+
};
|
|
2275
|
+
if (d)
|
|
2276
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(I, {}) }) });
|
|
2277
|
+
if (i || !o)
|
|
2278
|
+
return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Artifact not found", hint: i?.message }) }) });
|
|
2279
|
+
const { artifact: p, size: _, content: U, content_json: w, preview_available: H, error: k } = o, O = 10 * 1024 * 1024;
|
|
2280
|
+
return /* @__PURE__ */ e.jsxs(V, { children: [
|
|
1899
2281
|
/* @__PURE__ */ e.jsx(
|
|
1900
|
-
|
|
2282
|
+
Ee,
|
|
1901
2283
|
{
|
|
1902
|
-
title:
|
|
2284
|
+
title: p.kind,
|
|
1903
2285
|
subtitle: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1904
2286
|
"← Back to run ",
|
|
1905
|
-
/* @__PURE__ */ e.jsxs(
|
|
1906
|
-
|
|
1907
|
-
|
|
2287
|
+
/* @__PURE__ */ e.jsxs(z, { to: `/runs/${r}`, children: [
|
|
2288
|
+
Q(r),
|
|
2289
|
+
u?.run_name && ` — ${u.run_name}`
|
|
1908
2290
|
] })
|
|
1909
2291
|
] }),
|
|
1910
|
-
actions: /* @__PURE__ */ e.jsx(
|
|
2292
|
+
actions: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download" })
|
|
1911
2293
|
}
|
|
1912
2294
|
),
|
|
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:
|
|
2295
|
+
/* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsx(Je, { items: [
|
|
2296
|
+
{ label: "Kind", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono", children: p.kind }) },
|
|
2297
|
+
{ label: "Role", value: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: p.role }) },
|
|
2298
|
+
{ label: "Media Type", value: p.media_type },
|
|
2299
|
+
{ label: "Digest", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm", children: p.digest }) },
|
|
2300
|
+
{ label: "Size", value: Oe(_) }
|
|
1919
2301
|
] }) }),
|
|
1920
|
-
/* @__PURE__ */ e.jsxs(
|
|
1921
|
-
/* @__PURE__ */ e.jsx(
|
|
1922
|
-
|
|
2302
|
+
/* @__PURE__ */ e.jsxs(b, { children: [
|
|
2303
|
+
/* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Content" }) }),
|
|
2304
|
+
k ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1923
2305
|
/* @__PURE__ */ e.jsxs("p", { className: "text-sm text-danger", children: [
|
|
1924
|
-
"
|
|
1925
|
-
|
|
2306
|
+
"Error loading artifact: ",
|
|
2307
|
+
k
|
|
1926
2308
|
] }),
|
|
1927
|
-
/* @__PURE__ */ e.jsx("p", { className: "text-muted mt-2", children: /* @__PURE__ */ e.jsx(
|
|
1928
|
-
] }) :
|
|
2309
|
+
/* @__PURE__ */ e.jsx("p", { className: "text-muted mt-2", children: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download to view" }) })
|
|
2310
|
+
] }) : H ? w ? /* @__PURE__ */ e.jsx("pre", { children: Cr(w) }) : U ? /* @__PURE__ */ e.jsx("pre", { children: U }) : /* @__PURE__ */ e.jsxs("p", { className: "text-muted", children: [
|
|
1929
2311
|
"Binary content (",
|
|
1930
|
-
|
|
2312
|
+
Oe(_),
|
|
1931
2313
|
") — download to view"
|
|
1932
2314
|
] }) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
1933
2315
|
/* @__PURE__ */ e.jsxs("p", { className: "text-muted", children: [
|
|
1934
2316
|
/* @__PURE__ */ e.jsx("strong", { children: "Artifact too large for preview" }),
|
|
1935
2317
|
" (",
|
|
1936
|
-
|
|
2318
|
+
Oe(_),
|
|
1937
2319
|
" exceeds ",
|
|
1938
|
-
|
|
2320
|
+
Oe(O),
|
|
1939
2321
|
" limit)"
|
|
1940
2322
|
] }),
|
|
1941
2323
|
/* @__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(
|
|
2324
|
+
/* @__PURE__ */ e.jsx("p", { className: "mt-4", children: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download" }) })
|
|
1943
2325
|
] })
|
|
1944
|
-
] })
|
|
2326
|
+
] }),
|
|
2327
|
+
f && /* @__PURE__ */ e.jsx(
|
|
2328
|
+
Ce,
|
|
2329
|
+
{
|
|
2330
|
+
message: f.message,
|
|
2331
|
+
variant: f.variant,
|
|
2332
|
+
visible: !!f,
|
|
2333
|
+
onClose: () => h(null)
|
|
2334
|
+
}
|
|
2335
|
+
)
|
|
1945
2336
|
] });
|
|
1946
2337
|
}
|
|
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(
|
|
2338
|
+
const Qr = [
|
|
2339
|
+
{ path: "/", element: /* @__PURE__ */ e.jsx(xr, { to: "/runs", replace: !0 }) },
|
|
2340
|
+
{ path: "/runs", element: /* @__PURE__ */ e.jsx(Tr, {}) },
|
|
2341
|
+
{ path: "/runs/:runId", element: /* @__PURE__ */ e.jsx(Br, {}) },
|
|
2342
|
+
{ path: "/runs/:runId/artifacts/:index", element: /* @__PURE__ */ e.jsx(Xr, {}) },
|
|
2343
|
+
{ path: "/projects", element: /* @__PURE__ */ e.jsx(Ir, {}) },
|
|
2344
|
+
{ path: "/groups", element: /* @__PURE__ */ e.jsx(qr, {}) },
|
|
2345
|
+
{ path: "/groups/:groupId", element: /* @__PURE__ */ e.jsx(Ur, {}) },
|
|
2346
|
+
{ path: "/diff", element: /* @__PURE__ */ e.jsx(Hr, {}) },
|
|
2347
|
+
{ path: "/search", element: /* @__PURE__ */ e.jsx(Jr, {}) }
|
|
1957
2348
|
];
|
|
1958
|
-
function
|
|
1959
|
-
return
|
|
2349
|
+
function Ls(r = []) {
|
|
2350
|
+
return mr([...Qr, ...r]);
|
|
1960
2351
|
}
|
|
1961
|
-
const
|
|
1962
|
-
function
|
|
1963
|
-
const
|
|
1964
|
-
return /* @__PURE__ */ e.jsx(
|
|
2352
|
+
const Zr = Ls();
|
|
2353
|
+
function at({ additionalRoutes: r, ...t }) {
|
|
2354
|
+
const n = r?.length ? Ls(r) : Zr;
|
|
2355
|
+
return /* @__PURE__ */ e.jsx(yr, { ...t, children: /* @__PURE__ */ e.jsx(fr, { router: n }) });
|
|
1965
2356
|
}
|
|
1966
2357
|
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
|
-
|
|
2358
|
+
nt as Alert,
|
|
2359
|
+
vr as ApiClient,
|
|
2360
|
+
we as ApiError,
|
|
2361
|
+
at as App,
|
|
2362
|
+
yr as AppProvider,
|
|
2363
|
+
Xr as ArtifactPage,
|
|
2364
|
+
Y as Badge,
|
|
2365
|
+
D as Button,
|
|
2366
|
+
b as Card,
|
|
2367
|
+
W as CardHeader,
|
|
2368
|
+
G as CardTitle,
|
|
2369
|
+
Hr as DiffPage,
|
|
2370
|
+
he as EmptyState,
|
|
2371
|
+
ee as FormGroup,
|
|
2372
|
+
Os as FormRow,
|
|
2373
|
+
Ur as GroupDetailPage,
|
|
2374
|
+
qr as GroupsPage,
|
|
2375
|
+
Ar as GroupsTable,
|
|
2376
|
+
ss as Input,
|
|
2377
|
+
Je as KVList,
|
|
2378
|
+
ie as Label,
|
|
2379
|
+
V as Layout,
|
|
2380
|
+
tt as LayoutConfigProvider,
|
|
2381
|
+
es as Modal,
|
|
2382
|
+
Ee as PageHeader,
|
|
2383
|
+
Ir as ProjectsPage,
|
|
2384
|
+
Dr as ProjectsTable,
|
|
2385
|
+
Br as RunDetailPage,
|
|
2386
|
+
Tr as RunsPage,
|
|
2387
|
+
rs as RunsTable,
|
|
2388
|
+
Jr as SearchPage,
|
|
2389
|
+
de as Select,
|
|
2390
|
+
I as Spinner,
|
|
2391
|
+
$s as StatusBadge,
|
|
2392
|
+
L as Table,
|
|
2393
|
+
B as TableBody,
|
|
2003
2394
|
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
|
-
|
|
2395
|
+
re as TableHead,
|
|
2396
|
+
N as TableHeader,
|
|
2397
|
+
j as TableRow,
|
|
2398
|
+
Ce as Toast,
|
|
2399
|
+
br as api,
|
|
2400
|
+
rt as buildUrl,
|
|
2401
|
+
$ as cn,
|
|
2402
|
+
Qr as coreRoutes,
|
|
2403
|
+
Ls as createRouter,
|
|
2404
|
+
Oe as formatBytes,
|
|
2405
|
+
Er as formatNumber,
|
|
2406
|
+
Cr as jsonPretty,
|
|
2407
|
+
Zr as router,
|
|
2408
|
+
He as shortDigest,
|
|
2409
|
+
Q as shortId,
|
|
2410
|
+
Ze as timeAgo,
|
|
2411
|
+
kr as truncate,
|
|
2412
|
+
K as useApp,
|
|
2413
|
+
Rr as useArtifact,
|
|
2414
|
+
wr as useDiff,
|
|
2415
|
+
_r as useGroup,
|
|
2416
|
+
Nr as useGroups,
|
|
2417
|
+
Pr as useLayoutConfig,
|
|
2418
|
+
Re as useMutation,
|
|
2419
|
+
Le as useProjects,
|
|
2420
|
+
As as useRun,
|
|
2421
|
+
Ds as useRuns
|
|
2031
2422
|
};
|