@tangle-network/sandbox-cli 0.21.64 → 0.21.65
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 +31 -3
- package/SKILL.md +29 -1
- package/dist/graph-native-CS_TmaCK.mjs +1 -0
- package/dist/graph-viewer/Analytics-bWsqhurt.js +1001 -0
- package/dist/graph-viewer/{AnswerStrip-DhwqOyxI.js → AnswerStrip-COxV7gLW.js} +2 -2
- package/dist/graph-viewer/Checks-CQGmKcQ0.js +164 -0
- package/dist/graph-viewer/Conversations-DgCshBAf.js +627 -0
- package/dist/graph-viewer/{Files-DtZhf0ii.js → Files-CvIOGrAs.js} +81 -90
- package/dist/graph-viewer/LiveRun-DHmsr6F7.js +311 -0
- package/dist/graph-viewer/{Outputs-QET3nPPp.js → Outputs-rwBg_x36.js} +4 -4
- package/dist/graph-viewer/Overview-C150tkVa.js +194 -0
- package/dist/graph-viewer/{RunOverview-DJQDAMIx.js → RunOverview-CSqsunqf.js} +2 -2
- package/dist/graph-viewer/RunPage-F_prVwiV.js +286 -0
- package/dist/graph-viewer/Timeline-BFDywlmz.js +335 -0
- package/dist/graph-viewer/Today-BdDuqZGF.js +623 -0
- package/dist/graph-viewer/Topology-SAfGtd5u.js +238 -0
- package/dist/graph-viewer/Traces-BYqXaS_s.js +254 -0
- package/dist/graph-viewer/{WallPages-4d9QUZDq.js → WallPages-MM70VZrC.js} +48 -30
- package/dist/graph-viewer/agent-runtime.js +55 -55
- package/dist/graph-viewer/{data-BJmP7F1M.js → data-DTGmre1W.js} +31 -27
- package/dist/graph-viewer/harness-sessions.js +1 -1
- package/dist/graph-viewer/index.js +1357 -1392
- package/dist/graph-viewer/{lazy-pages-DM0cZM10.js → lazy-pages-BYuq_L_n.js} +9 -5
- package/dist/graph-viewer/{outputs-model-CGdvjkQh.js → outputs-model-CHTx8rMz.js} +2 -2
- package/dist/graph-viewer/{viewer/plain-words-CgvxtEOa.js → plain-words-BrMHl0On.js} +9 -4
- package/dist/graph-viewer/receipt.js +2 -2
- package/dist/graph-viewer/record-CsP_3NJS.js +612 -0
- package/dist/graph-viewer/record-part-CuT9Xw37.js +334 -0
- package/dist/graph-viewer/record.js +2 -336
- package/dist/graph-viewer/report-viewer.js +65 -65
- package/dist/graph-viewer/report.js +1 -1
- package/dist/graph-viewer/research-publication.js +1 -1
- package/dist/graph-viewer/{run-files-C1NgzM0l.js → run-files-BckQDdTD.js} +1 -1
- package/dist/graph-viewer/{run-receipt-Bvi4-KVM.js → run-receipt-Bt2iXJUy.js} +1 -0
- package/dist/graph-viewer/schemas/agent-workspace.play.v1.json +3 -0
- package/dist/graph-viewer/schemas/agent-workspace.plays.v1.json +2 -0
- package/dist/graph-viewer/schemas/agent-workspace.run.v1.json +1 -0
- package/dist/graph-viewer/styles.css +4559 -2385
- package/dist/graph-viewer/trace-spans.js +1 -1
- package/dist/graph-viewer/ui-xa5w5bEN.js +889 -0
- package/dist/graph-viewer/viewer/{AgentGraphCanvas-CMdOlSlh-4EervjeC.js → AgentGraphCanvas-B74GN1o6-BZEumF7-.js} +2610 -2707
- package/dist/graph-viewer/viewer/Analytics-E3XS570U.js +1002 -0
- package/dist/graph-viewer/viewer/{AnswerStrip-CGUyXuYH.js → AnswerStrip-B7xMU57A.js} +2 -2
- package/dist/graph-viewer/viewer/Checks-CJ5XSHbv.js +165 -0
- package/dist/graph-viewer/viewer/Conversations-AX8G7Qyl.js +904 -0
- package/dist/graph-viewer/viewer/Files-DxL1576V.js +630 -0
- package/dist/graph-viewer/viewer/LiveRun-B-BckyEj.js +820 -0
- package/dist/graph-viewer/viewer/{Outputs-CumGyjQo.js → Outputs-BoIpgfMv.js} +24 -23
- package/dist/graph-viewer/viewer/Overview-Dzg5XJgy.js +436 -0
- package/dist/graph-viewer/viewer/RunPage-NtevWXBs.js +285 -0
- package/dist/graph-viewer/viewer/{Scores-ZS16yk0n.js → Scores-Dgv4WePL.js} +3 -3
- package/dist/graph-viewer/viewer/Timeline-CzY3LVDu.js +335 -0
- package/dist/graph-viewer/viewer/Today-Bi9IIwuh.js +623 -0
- package/dist/graph-viewer/viewer/Topology-CzjqSFXH.js +239 -0
- package/dist/graph-viewer/viewer/Traces-CMX0H1VU.js +254 -0
- package/dist/graph-viewer/viewer/{WallPages-CzWpyIfp.js → WallPages-Clj4bORg.js} +50 -32
- package/dist/graph-viewer/viewer/addon-webgl-BSCscllv.js +4027 -0
- package/dist/graph-viewer/viewer/agent-record-BrP-ENHg.css +2 -0
- package/dist/graph-viewer/viewer/{bot-D6Nrej7Z.js → bot-BaQU59LG.js} +1 -1
- package/dist/graph-viewer/viewer/{chevron-right-D_5IKLxu.js → chevron-right-Xn05jYLT.js} +1 -1
- package/dist/graph-viewer/viewer/{createLucideIcon-yH0cxLMy.js → createLucideIcon-BSphcoOJ.js} +1 -1
- package/dist/graph-viewer/viewer/dashboard-D3JhmRhe-DSl0zhkw.js +371 -0
- package/dist/graph-viewer/viewer/{data-CkWfWr7i.js → data-CVHeKhrh.js} +144 -139
- package/dist/graph-viewer/viewer/dist-4_KJz8ZM.js +349 -0
- package/dist/graph-viewer/viewer/dist-Dy-wrdTt.js +1615 -0
- package/dist/graph-viewer/viewer/es2015-utW4DTOJ.js +3506 -0
- package/dist/graph-viewer/viewer/{final-output-kwY11u9X.js → final-output-BYT-g-9j.js} +1 -1
- package/dist/graph-viewer/viewer/flow-waterfall-model-DvrgPLGS-BdThSFH-.js +2696 -0
- package/dist/graph-viewer/viewer/git-branch-BzTbIcYL.js +28 -0
- package/dist/graph-viewer/viewer/{highlights-Btsi5OXl.js → highlights-DWeSCtiR.js} +4 -4
- package/dist/graph-viewer/viewer/jsx-runtime-DPT6sCLq.js +319 -0
- package/dist/graph-viewer/viewer/lazy-pages-ChiMJ8r_.js +803 -0
- package/dist/graph-viewer/viewer/{markdown-CX_sVrXB.js → markdown-lADwhD7y.js} +2324 -2608
- package/dist/graph-viewer/viewer/model-brand-bTcMjQtB-RSb7EbGB.js +476 -0
- package/dist/graph-viewer/viewer/{page-header-Brq611fd.js → page-header-QbUg8F8i.js} +12 -11
- package/dist/graph-viewer/{plain-words-CgvxtEOa.js → viewer/plain-words-BrMHl0On.js} +9 -4
- package/dist/graph-viewer/viewer/primitives-znfPK9NP-B6UO7uDr.js +346 -0
- package/dist/graph-viewer/viewer/react-DQ7E2Epi.js +4254 -0
- package/dist/graph-viewer/viewer/{react-dom-t1L4_-il.js → react-dom-BEusmvQH.js} +1 -1
- package/dist/graph-viewer/viewer/record-DZnT6SWN-H-ul3U3a.js +3523 -0
- package/dist/graph-viewer/viewer/record-W39D5MO-.js +1 -0
- package/dist/graph-viewer/viewer/record-part-CbweyYoV.js +335 -0
- package/dist/graph-viewer/viewer/{segmented-control-BaJmvTNd.js → segmented-control-Di1mbQlP.js} +27 -26
- package/dist/graph-viewer/viewer/{shiki-Qnby7Sh6.js → shiki-BfNNlmfZ.js} +15 -15
- package/dist/graph-viewer/viewer/status-meta-S0kV_RDp.js +273 -0
- package/dist/graph-viewer/viewer/{stream-tokenizer-CWtnjmRd.js → stream-tokenizer-B5wWaM3U.js} +12 -12
- package/dist/graph-viewer/viewer/{themes-1i1fzpRk.js → themes-DuRxHiga.js} +1 -1
- package/dist/graph-viewer/viewer/ui-Co03nZUX.js +889 -0
- package/dist/graph-viewer/viewer/utils-BuObIC0n.js +1815 -0
- package/dist/graph-viewer/viewer/workbench-E6_5q_oL.js +28351 -0
- package/dist/graph-viewer/viewer/workflows--mZpHYqo.js +3298 -0
- package/dist/graph-viewer/viewer/workspace-cKs9sGEO.js +2468 -0
- package/dist/graph-viewer/{workspace-model-Ewf17pTW.js → workspace-model-BkPl_J8E.js} +1 -1
- package/dist/graph-viewer/workspace-viewer.js +7452 -7489
- package/dist/graph-viewer/workspace.js +1 -1
- package/dist/index.mjs +27 -22
- package/package.json +9 -8
- package/dist/graph-viewer/Analytics-DFWW8Phh.js +0 -938
- package/dist/graph-viewer/Checks-qgqV4xgV.js +0 -155
- package/dist/graph-viewer/Conversations-CGB45kpj.js +0 -545
- package/dist/graph-viewer/LiveRun-C21wUKAY.js +0 -210
- package/dist/graph-viewer/Overview-BjeLsA2I.js +0 -506
- package/dist/graph-viewer/RunPage-CkkcBEUe.js +0 -258
- package/dist/graph-viewer/Timeline-C2Xolk0t.js +0 -293
- package/dist/graph-viewer/Today-BVVDtSVN.js +0 -660
- package/dist/graph-viewer/Topology-DO5XX8e4.js +0 -545
- package/dist/graph-viewer/Traces-BhMxjNgw.js +0 -259
- package/dist/graph-viewer/part-events-BrLrg_EV.js +0 -276
- package/dist/graph-viewer/record-part-CZal_IMH.js +0 -1408
- package/dist/graph-viewer/ui-D8QZRsC3.js +0 -938
- package/dist/graph-viewer/viewer/Analytics-DD__nbLm.js +0 -939
- package/dist/graph-viewer/viewer/Checks-Ds5M7eAW.js +0 -156
- package/dist/graph-viewer/viewer/Conversations-C1n0EBBd.js +0 -819
- package/dist/graph-viewer/viewer/Files-Cjr7NMU_.js +0 -448
- package/dist/graph-viewer/viewer/LiveRun-uPTkPSjo.js +0 -6772
- package/dist/graph-viewer/viewer/Overview-4Umk14_2.js +0 -507
- package/dist/graph-viewer/viewer/RunPage-DZlBW7Va.js +0 -257
- package/dist/graph-viewer/viewer/Timeline-BnK6-yBR.js +0 -294
- package/dist/graph-viewer/viewer/Today-a_-oNigi.js +0 -660
- package/dist/graph-viewer/viewer/Topology-CQPCLQT6.js +0 -546
- package/dist/graph-viewer/viewer/Traces-C0IGk0L4.js +0 -259
- package/dist/graph-viewer/viewer/WorkflowGraph-DZ3xejKE-jRXKeSrg.js +0 -1559
- package/dist/graph-viewer/viewer/agent-record-Dw772ROs.css +0 -2
- package/dist/graph-viewer/viewer/agent-timeline-Cs9Qbpvo.js +0 -1798
- package/dist/graph-viewer/viewer/dist-C1-7EfoW.js +0 -488
- package/dist/graph-viewer/viewer/file-text-m7a3piQF.js +0 -47
- package/dist/graph-viewer/viewer/jsx-runtime-DQWyJOhv.js +0 -2136
- package/dist/graph-viewer/viewer/lazy-pages-BowaGsg-.js +0 -20
- package/dist/graph-viewer/viewer/model-brand-bTcMjQtB-fagiBQam.js +0 -723
- package/dist/graph-viewer/viewer/popover-CvOAjlnk.js +0 -5329
- package/dist/graph-viewer/viewer/react-CY3IbSNO.js +0 -4262
- package/dist/graph-viewer/viewer/record-part-D3_Anfpe.js +0 -1329
- package/dist/graph-viewer/viewer/terminal-83J_I4Ne.js +0 -52
- package/dist/graph-viewer/viewer/ui-C9b1rIUH.js +0 -938
- package/dist/graph-viewer/viewer/workspace-CekmOBs3.js +0 -25100
- package/dist/graph-viewer/viewer/x-DOc2URqZ.js +0 -56
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { c as e, k as t, x as n } from "./ui-xa5w5bEN.js";
|
|
2
|
+
import { n as r, r as i, t as a } from "./plain-words-BrMHl0On.js";
|
|
3
|
+
import { agentParam as o } from "./RunPage-F_prVwiV.js";
|
|
4
|
+
import { useRef as s } from "react";
|
|
5
|
+
import { VirtualList as c } from "@tangle-network/sandbox-ui/run/record";
|
|
6
|
+
import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
7
|
+
import { Gantt as f, Meter as p } from "@tangle-network/charts/react";
|
|
8
|
+
import { ENDING_COLORS as m } from "@tangle-network/charts";
|
|
9
|
+
import { Sheet as h, SheetContent as g, SheetHeader as _, SheetTitle as v } from "@tangle-network/sandbox-ui/primitives";
|
|
10
|
+
import { detectFileFormat as y } from "@tangle-network/sandbox-ui/files";
|
|
11
|
+
//#region src/workspace/run/Overview.tsx
|
|
12
|
+
function b(e, t = Infinity) {
|
|
13
|
+
if (!e) return "";
|
|
14
|
+
let n = e.replace(/\/(home|mnt|Users|tmp|private)\/\S+/g, "").replace(/:?\s*\b[0-9a-f]{10,40}\b/g, "").replace(/\s+/g, " ").trim();
|
|
15
|
+
n = n.replace(/^(?:[\w-]+(?: [\w-]+){0,3}: )+(?=\S)/, (e) => e.split(": ").length > 2 ? "" : e), n = n.split(/(?<=[.;])\s|;\s|, the |, starting /)[0] ?? n;
|
|
16
|
+
let r = n.split(" ");
|
|
17
|
+
return r.length > t ? `${r.slice(0, t).join(" ").replace(/[.;,:]+$/, "")}…` : n.replace(/[.;,:]$/, "");
|
|
18
|
+
}
|
|
19
|
+
var x = (e) => e.checked && typeof e.total == "number" && e.total > 0 && e.passed === e.total;
|
|
20
|
+
function S({ m: b, doc: S, route: C, agent: w, selectAgent: T }) {
|
|
21
|
+
let E = t(), D = s(null), O = b.best, k = b.releases.filter((e) => e.taggedAt), A = O ? k.find((e) => e.passed === O.passed) ?? O : null, j = O?.steps?.find((e) => e.state !== "pass"), M = A?.taggedAt ? n(Math.max(0, b.t0 + b.duration - Date.parse(A.taggedAt))) : null, N = [];
|
|
22
|
+
for (let e of k) {
|
|
23
|
+
let t = N.at(-1), n = t?.at(-1);
|
|
24
|
+
n && n.passed === e.passed && n.total === e.total && n.checker === e.checker ? t.push(e) : N.push([e]);
|
|
25
|
+
}
|
|
26
|
+
let P = S.view?.blocker, F = C.params.has("agent") && w ? b.byId.get(w) : null, I = [...new Set(k.flatMap((e) => F ? e.files?.[F.id] ?? [] : []))].sort((e, t) => Number(y(t) === "code") - Number(y(e) === "code") || e.localeCompare(t)), L = b.tree.filter((e) => e.start !== null).map((t) => ({
|
|
27
|
+
id: t.id,
|
|
28
|
+
label: t.name,
|
|
29
|
+
count: t.commits ?? (t.modelCalls !== null && t.toolCalls !== null ? t.modelCalls + t.toolCalls : void 0),
|
|
30
|
+
countLabel: t.commits === null ? "calls" : "commits",
|
|
31
|
+
spans: [{
|
|
32
|
+
start: b.t0 + Math.max(0, t.start),
|
|
33
|
+
end: b.live && [
|
|
34
|
+
"running",
|
|
35
|
+
"waiting",
|
|
36
|
+
"needs-you"
|
|
37
|
+
].includes(t.status) ? null : b.t0 + Math.max(t.start, t.end ?? t.last ?? t.start),
|
|
38
|
+
state: t.id === b.root?.id ? "lead" : t.state.tone || "none",
|
|
39
|
+
note: t.state.label,
|
|
40
|
+
endLabel: `${n(Math.max(0, (b.live && [
|
|
41
|
+
"running",
|
|
42
|
+
"waiting",
|
|
43
|
+
"needs-you"
|
|
44
|
+
].includes(t.status) ? b.duration : t.end ?? t.last ?? t.start) - t.start))} · ${e(t)}`
|
|
45
|
+
}]
|
|
46
|
+
})), R = k.map((e) => ({
|
|
47
|
+
at: Date.parse(e.taggedAt),
|
|
48
|
+
kind: "release",
|
|
49
|
+
label: e.release,
|
|
50
|
+
verdict: x(e) ? "pass" : "unknown"
|
|
51
|
+
})), z = (e) => new Date(e).toISOString().slice(5, 16).replace("T", " "), B = F ? /* @__PURE__ */ u("section", {
|
|
52
|
+
ref: D,
|
|
53
|
+
tabIndex: 0,
|
|
54
|
+
role: "list",
|
|
55
|
+
className: "rp-card rj-drill rj-files",
|
|
56
|
+
"aria-label": `${F.name}: what it did`,
|
|
57
|
+
children: /* @__PURE__ */ u(c, {
|
|
58
|
+
items: [null, ...I],
|
|
59
|
+
keyOf: (e) => e === null ? "summary" : `file:${e}`,
|
|
60
|
+
scroller: D,
|
|
61
|
+
estimate: 28,
|
|
62
|
+
overscan: 280,
|
|
63
|
+
render: (e) => /* @__PURE__ */ u("div", {
|
|
64
|
+
role: "listitem",
|
|
65
|
+
children: e === null ? /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ d("div", {
|
|
66
|
+
className: "rp-hd",
|
|
67
|
+
children: [/* @__PURE__ */ u("h2", { children: F.name }), /* @__PURE__ */ u("a", {
|
|
68
|
+
className: "rp-btn end",
|
|
69
|
+
href: C.href("conversations", { agent: o(S.run.id, F.id) }),
|
|
70
|
+
children: "Conversation →"
|
|
71
|
+
})]
|
|
72
|
+
}), /* @__PURE__ */ d("dl", { children: [
|
|
73
|
+
/* @__PURE__ */ u("dt", { children: "Task" }),
|
|
74
|
+
/* @__PURE__ */ u("dd", { children: r(F.node.assignment) || F.id === S.run.id && r(a(S.input?.objective)) || "Not recorded" }),
|
|
75
|
+
/* @__PURE__ */ u("dt", { children: "Result" }),
|
|
76
|
+
/* @__PURE__ */ u("dd", { children: r(F.node.turn) || "No result recorded yet" }),
|
|
77
|
+
/* @__PURE__ */ u("dt", { children: "Changed" }),
|
|
78
|
+
/* @__PURE__ */ u("dd", { children: I.length ? `${I.length} files in released work` : "No files in released work" })
|
|
79
|
+
] })] }) : /* @__PURE__ */ u("code", { children: e })
|
|
80
|
+
})
|
|
81
|
+
})
|
|
82
|
+
}, F.id) : null;
|
|
83
|
+
return /* @__PURE__ */ d("section", {
|
|
84
|
+
className: "rp-journey",
|
|
85
|
+
"aria-label": "Run overview",
|
|
86
|
+
children: [/* @__PURE__ */ d("section", {
|
|
87
|
+
className: "rj-hero",
|
|
88
|
+
"aria-label": "How close the best release is",
|
|
89
|
+
children: [
|
|
90
|
+
O?.steps?.length ? /* @__PURE__ */ u(p, {
|
|
91
|
+
total: O.total,
|
|
92
|
+
used: O.passed,
|
|
93
|
+
steps: O.steps,
|
|
94
|
+
text: "How close the best release is"
|
|
95
|
+
}) : /* @__PURE__ */ u("p", { children: "No release was checked." }),
|
|
96
|
+
O && /* @__PURE__ */ d("p", { children: [
|
|
97
|
+
/* @__PURE__ */ u("b", { children: O.release }),
|
|
98
|
+
" · ",
|
|
99
|
+
j ? `stuck at ${j.label}${M ? ` for ${M}, since ${A?.release}` : ""}` : "every step passes"
|
|
100
|
+
] }),
|
|
101
|
+
/* @__PURE__ */ u("p", {
|
|
102
|
+
className: "rj-next",
|
|
103
|
+
children: S.view?.paused ? /* @__PURE__ */ d(l, { children: [
|
|
104
|
+
/* @__PURE__ */ u("b", { children: "Next:" }),
|
|
105
|
+
" Decide whether to resume research. ",
|
|
106
|
+
/* @__PURE__ */ u("a", {
|
|
107
|
+
href: "/today",
|
|
108
|
+
children: "Today →"
|
|
109
|
+
})
|
|
110
|
+
] }) : P?.owner === "Drew" ? /* @__PURE__ */ d(l, { children: [
|
|
111
|
+
/* @__PURE__ */ u("b", { children: "Next:" }),
|
|
112
|
+
" ",
|
|
113
|
+
P.action
|
|
114
|
+
] }) : /* @__PURE__ */ d(l, { children: [
|
|
115
|
+
/* @__PURE__ */ u("b", { children: "Nothing for you." }),
|
|
116
|
+
" ",
|
|
117
|
+
P?.owner ?? "Discovery operator",
|
|
118
|
+
" is on it",
|
|
119
|
+
P?.since ? ` since ${i(P.since)}` : "",
|
|
120
|
+
P?.action ? `: ${P.action}` : "."
|
|
121
|
+
] })
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ u("p", {
|
|
124
|
+
className: "rj-releases",
|
|
125
|
+
children: N.map((e) => {
|
|
126
|
+
let t = e[0], n = e.at(-1);
|
|
127
|
+
return /* @__PURE__ */ d("a", {
|
|
128
|
+
"data-pass": x(n) || void 0,
|
|
129
|
+
href: C.href("checks", { release: n.release }),
|
|
130
|
+
children: [
|
|
131
|
+
t.release,
|
|
132
|
+
e.length > 1 ? `–${n.release}: all` : "",
|
|
133
|
+
" ",
|
|
134
|
+
n.passed ?? "?",
|
|
135
|
+
"/",
|
|
136
|
+
n.total ?? "?"
|
|
137
|
+
]
|
|
138
|
+
}, t.release);
|
|
139
|
+
})
|
|
140
|
+
})
|
|
141
|
+
]
|
|
142
|
+
}), /* @__PURE__ */ d("div", {
|
|
143
|
+
className: "rj-main",
|
|
144
|
+
"data-picked": F && !E || void 0,
|
|
145
|
+
children: [/* @__PURE__ */ d("section", {
|
|
146
|
+
className: "rp-card rj-work",
|
|
147
|
+
"aria-label": "What the agents did",
|
|
148
|
+
children: [/* @__PURE__ */ d("div", {
|
|
149
|
+
className: "rp-hd",
|
|
150
|
+
children: [/* @__PURE__ */ u("h2", { children: "What the agents did" }), /* @__PURE__ */ d("span", {
|
|
151
|
+
className: "muted",
|
|
152
|
+
children: [b.agents.length, " agents"]
|
|
153
|
+
})]
|
|
154
|
+
}), /* @__PURE__ */ u(f, {
|
|
155
|
+
lanes: L,
|
|
156
|
+
marks: R,
|
|
157
|
+
bestMark: O?.release,
|
|
158
|
+
selectedId: F?.id,
|
|
159
|
+
onSelect: (e) => T(e),
|
|
160
|
+
maxHeight: 420,
|
|
161
|
+
now: b.live ? b.t0 + b.duration : void 0,
|
|
162
|
+
colors: {
|
|
163
|
+
ok: m.solved,
|
|
164
|
+
done: m.cancelled,
|
|
165
|
+
live: m.live,
|
|
166
|
+
lead: m.cancelled,
|
|
167
|
+
fail: m.died,
|
|
168
|
+
waiting: m.stalled,
|
|
169
|
+
"needs-you": m.stalled,
|
|
170
|
+
none: m.cancelled
|
|
171
|
+
},
|
|
172
|
+
axis: z,
|
|
173
|
+
span: (e, t) => n(t - e)
|
|
174
|
+
})]
|
|
175
|
+
}), E ? /* @__PURE__ */ u(h, {
|
|
176
|
+
open: !!F,
|
|
177
|
+
onOpenChange: (e) => {
|
|
178
|
+
e || T(null);
|
|
179
|
+
},
|
|
180
|
+
children: /* @__PURE__ */ d(g, {
|
|
181
|
+
side: "bottom",
|
|
182
|
+
className: "rj-agent-sheet agent-record rp",
|
|
183
|
+
children: [/* @__PURE__ */ d(_, { children: [/* @__PURE__ */ u(v, { children: F?.name }), F && /* @__PURE__ */ u("a", {
|
|
184
|
+
className: "rp-btn",
|
|
185
|
+
href: C.href("conversations", { agent: o(S.run.id, F.id) }),
|
|
186
|
+
children: "Conversation →"
|
|
187
|
+
})] }), B]
|
|
188
|
+
})
|
|
189
|
+
}) : B]
|
|
190
|
+
})]
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
//#endregion
|
|
194
|
+
export { S as Overview, b as clause };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { O as e, a as t, b as n, d as r, i, l as a, r as o, t as s, y as c } from "./run-receipt-
|
|
2
|
-
import { d as l, n as u, r as d } from "./data-
|
|
1
|
+
import { O as e, a as t, b as n, d as r, i, l as a, r as o, t as s, y as c } from "./run-receipt-Bt2iXJUy.js";
|
|
2
|
+
import { d as l, n as u, r as d } from "./data-DTGmre1W.js";
|
|
3
3
|
import { useState as f } from "react";
|
|
4
4
|
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
5
5
|
import g from "react-markdown";
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { A as e, y as t } from "./run-receipt-Bt2iXJUy.js";
|
|
2
|
+
import { d as n, n as r, p as i } from "./data-DTGmre1W.js";
|
|
3
|
+
import { a, b as o, g as s, o as c, r as ee, x as te } from "./ui-xa5w5bEN.js";
|
|
4
|
+
import { o as l } from "./lazy-pages-BYuq_L_n.js";
|
|
5
|
+
import { Suspense as u, lazy as d, useCallback as f, useEffect as p, useMemo as m, useRef as h, useState as g } from "react";
|
|
6
|
+
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
7
|
+
import { PageHeader as ne, Tabs as re, TabsContent as b, TabsList as ie, TabsTrigger as ae } from "@tangle-network/sandbox-ui/primitives";
|
|
8
|
+
//#region src/workspace/run/RunPage.tsx
|
|
9
|
+
var x = [
|
|
10
|
+
"overview",
|
|
11
|
+
"timeline",
|
|
12
|
+
"files",
|
|
13
|
+
"topology",
|
|
14
|
+
"conversations",
|
|
15
|
+
"traces",
|
|
16
|
+
"analytics",
|
|
17
|
+
"checks"
|
|
18
|
+
], S = {
|
|
19
|
+
overview: "Overview",
|
|
20
|
+
timeline: "Waterfall",
|
|
21
|
+
files: "Files",
|
|
22
|
+
topology: "Topology",
|
|
23
|
+
conversations: "Conversations",
|
|
24
|
+
traces: "Traces",
|
|
25
|
+
analytics: "Analytics",
|
|
26
|
+
checks: "Checks"
|
|
27
|
+
}, oe = d(() => import("./Overview-C150tkVa.js").catch(l).then((e) => ({ default: e.Overview }))), se = d(() => import("./Timeline-BFDywlmz.js").catch(l).then((e) => ({ default: e.TimelineTab }))), C = d(() => import("./Files-CvIOGrAs.js").catch(l).then((e) => ({ default: e.Files }))), w = d(() => import("./Topology-SAfGtd5u.js").catch(l).then((e) => ({ default: e.Topology }))), ce = d(() => import("./Conversations-DgCshBAf.js").catch(l).then((e) => ({ default: e.Conversations }))), le = d(() => import("./Traces-BYqXaS_s.js").catch(l).then((e) => ({ default: e.Traces }))), T = d(() => import("./Analytics-bWsqhurt.js").catch(l).then((e) => ({ default: e.Analytics }))), E = d(() => import("./Checks-CQGmKcQ0.js").catch(l).then((e) => ({ default: e.Checks }))), D = {
|
|
28
|
+
agents: "conversations",
|
|
29
|
+
spend: "analytics",
|
|
30
|
+
progress: "overview"
|
|
31
|
+
}, O = [
|
|
32
|
+
["findings", "Findings"],
|
|
33
|
+
["outputs", "Outputs and grades"],
|
|
34
|
+
["readout", "Readout"],
|
|
35
|
+
["versions", "Versions"],
|
|
36
|
+
["graph", "Knowledge graph"],
|
|
37
|
+
["profiles", "Profiles"],
|
|
38
|
+
["assessments", "Assessments"],
|
|
39
|
+
["coverage", "Capture"],
|
|
40
|
+
["input", "Input"]
|
|
41
|
+
];
|
|
42
|
+
function k(e) {
|
|
43
|
+
let t = () => {
|
|
44
|
+
let e = window.location.pathname.split("/").filter(Boolean), t = e[0] === "run" ? decodeURIComponent(e[2] ?? "") : "";
|
|
45
|
+
return {
|
|
46
|
+
tab: x.includes(t) ? t : null,
|
|
47
|
+
search: window.location.search
|
|
48
|
+
};
|
|
49
|
+
}, [n, r] = g(t);
|
|
50
|
+
p(() => {
|
|
51
|
+
let e = () => r(t());
|
|
52
|
+
return window.addEventListener("popstate", e), () => window.removeEventListener("popstate", e);
|
|
53
|
+
}, []);
|
|
54
|
+
let i = m(() => new URLSearchParams(n.search), [n.search]), a = f((t, n = {}, r = !0) => {
|
|
55
|
+
let i = r ? new URLSearchParams(window.location.search) : new URLSearchParams();
|
|
56
|
+
for (let e of [
|
|
57
|
+
"section",
|
|
58
|
+
"node",
|
|
59
|
+
"view",
|
|
60
|
+
"details",
|
|
61
|
+
"tab"
|
|
62
|
+
]) i.delete(e);
|
|
63
|
+
let a = new URLSearchParams(window.location.search).get("theme");
|
|
64
|
+
a && i.set("theme", a);
|
|
65
|
+
for (let [e, t] of Object.entries(n)) t == null || t === "" ? i.delete(e) : i.set(e, t);
|
|
66
|
+
let o = i.toString();
|
|
67
|
+
return `/run/${encodeURIComponent(e)}/${t}${o ? `?${o}` : ""}`;
|
|
68
|
+
}, [e]), o = f((e, t = {}, n = !1) => {
|
|
69
|
+
let r = a(e, t);
|
|
70
|
+
r !== window.location.pathname + window.location.search && (n ? window.history.replaceState(null, "", r) : window.history.pushState(null, "", r), window.dispatchEvent(new PopStateEvent("popstate")));
|
|
71
|
+
}, [a]);
|
|
72
|
+
return {
|
|
73
|
+
tab: n.tab,
|
|
74
|
+
params: i,
|
|
75
|
+
href: a,
|
|
76
|
+
go: o
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
var A = (e, t) => t === e ? "root" : t.startsWith(`${e}:`) ? t.slice(e.length + 1) : t, j = (e, t, n) => {
|
|
80
|
+
if (!n) return null;
|
|
81
|
+
let r = n === "root" ? e.root?.id ?? t : e.byId.has(n) ? n : `${t}:${n}`;
|
|
82
|
+
return e.byId.has(r) ? r : null;
|
|
83
|
+
};
|
|
84
|
+
function M({ api: l, id: d, legacy: M }) {
|
|
85
|
+
let N = k(d), P = `${l}/runs/${encodeURIComponent(d)}`, F = i(P, void 0, !0), I = i(`${P}/workspace`, void 0, !0), [L, R] = g(null), [z, B] = g(Date.now), V = L?.url === P ? L : null, H = V?.run ?? F.data, U = {
|
|
86
|
+
...I,
|
|
87
|
+
data: V?.workspace ?? I.data
|
|
88
|
+
}, W = !!(H?.execution?.alive || U.data?.live);
|
|
89
|
+
p(() => {
|
|
90
|
+
if (!W) return;
|
|
91
|
+
let e = new EventSource(`${P}/agents/${encodeURIComponent(d)}/stream?workspace=1`);
|
|
92
|
+
e.addEventListener("workspace", (e) => {
|
|
93
|
+
try {
|
|
94
|
+
let t = JSON.parse(e.data);
|
|
95
|
+
t.workspace?.runId === d && t.run?.run?.id === d && R({
|
|
96
|
+
...t,
|
|
97
|
+
url: P
|
|
98
|
+
});
|
|
99
|
+
} catch {}
|
|
100
|
+
}), e.addEventListener("end", () => e.close());
|
|
101
|
+
let t = window.setInterval(() => B(Date.now()), 1e3);
|
|
102
|
+
return () => {
|
|
103
|
+
e.close(), window.clearInterval(t);
|
|
104
|
+
};
|
|
105
|
+
}, [
|
|
106
|
+
W,
|
|
107
|
+
P,
|
|
108
|
+
d
|
|
109
|
+
]);
|
|
110
|
+
let ue = i(H ? `${l}/plays/${encodeURIComponent(H.run.play)}` : null), G = m(() => U.data && H ? s(U.data, H.run) : null, [
|
|
111
|
+
U.data,
|
|
112
|
+
H,
|
|
113
|
+
z
|
|
114
|
+
]), K = N.params.get("section"), q = K ? D[K] : void 0;
|
|
115
|
+
p(() => {
|
|
116
|
+
if (!q) return;
|
|
117
|
+
let e = N.params.get("node");
|
|
118
|
+
N.go(q, {
|
|
119
|
+
agent: e ? A(d, e) : void 0,
|
|
120
|
+
file: N.params.get("file") ?? void 0
|
|
121
|
+
}, !0);
|
|
122
|
+
}, [q]);
|
|
123
|
+
let J = N.tab ?? "overview", de = G ? j(G, d, N.params.get("agent")) ?? G.root?.id ?? null : null, fe = f((e, t) => N.go(t ?? J, { agent: e ? A(d, e) : null }), [
|
|
124
|
+
N,
|
|
125
|
+
J,
|
|
126
|
+
d
|
|
127
|
+
]), Y = h(null), [X, pe] = g(!1);
|
|
128
|
+
if (p(() => {
|
|
129
|
+
let e = Y.current;
|
|
130
|
+
if (!e) return;
|
|
131
|
+
let t = () => pe(e.scrollLeft + e.clientWidth < e.scrollWidth - 4);
|
|
132
|
+
e.querySelector("[aria-selected=\"true\"]")?.scrollIntoView({
|
|
133
|
+
block: "nearest",
|
|
134
|
+
inline: "nearest"
|
|
135
|
+
}), t(), e.addEventListener("scroll", t, { passive: !0 });
|
|
136
|
+
let n = new ResizeObserver(t);
|
|
137
|
+
return n.observe(e), () => {
|
|
138
|
+
e.removeEventListener("scroll", t), n.disconnect();
|
|
139
|
+
};
|
|
140
|
+
}, [J, F.data]), F.error && !F.data) return /* @__PURE__ */ y("p", {
|
|
141
|
+
className: "ws-status",
|
|
142
|
+
role: "alert",
|
|
143
|
+
children: ["This run is unavailable: ", F.error]
|
|
144
|
+
});
|
|
145
|
+
if (!H) return /* @__PURE__ */ v("p", {
|
|
146
|
+
className: "ws-status",
|
|
147
|
+
role: "status",
|
|
148
|
+
children: "Loading…"
|
|
149
|
+
});
|
|
150
|
+
let Z = G ? {
|
|
151
|
+
conversations: o(G.agents.length),
|
|
152
|
+
traces: o(G.totals.steps),
|
|
153
|
+
checks: o(H.run.check?.counts?.checks ?? G.releases.length)
|
|
154
|
+
} : {}, Q = K && !q && M ? M(K) : null, $ = G ? {
|
|
155
|
+
api: l,
|
|
156
|
+
runUrl: P,
|
|
157
|
+
doc: H,
|
|
158
|
+
play: ue.data ?? null,
|
|
159
|
+
m: G,
|
|
160
|
+
route: {
|
|
161
|
+
...N,
|
|
162
|
+
tab: J
|
|
163
|
+
},
|
|
164
|
+
agent: de,
|
|
165
|
+
selectAgent: fe
|
|
166
|
+
} : null;
|
|
167
|
+
return /* @__PURE__ */ v(ee, { children: /* @__PURE__ */ y(re, {
|
|
168
|
+
value: J,
|
|
169
|
+
onValueChange: (e) => N.go(e),
|
|
170
|
+
className: "rp rp-run",
|
|
171
|
+
"data-run": d,
|
|
172
|
+
"data-tab": Q ? void 0 : J,
|
|
173
|
+
children: [
|
|
174
|
+
/* @__PURE__ */ v(ne, {
|
|
175
|
+
className: "rp-head",
|
|
176
|
+
title: /* @__PURE__ */ y(_, { children: [
|
|
177
|
+
/* @__PURE__ */ v("a", {
|
|
178
|
+
href: `/play/${encodeURIComponent(H.run.play)}`,
|
|
179
|
+
children: H.run.play
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ v("span", {
|
|
182
|
+
className: "sep",
|
|
183
|
+
"aria-hidden": "true",
|
|
184
|
+
children: "/"
|
|
185
|
+
}),
|
|
186
|
+
/* @__PURE__ */ y("span", { children: ["Run ", t(H.run.play, H.run.id)] })
|
|
187
|
+
] }),
|
|
188
|
+
description: /* @__PURE__ */ v(r, {
|
|
189
|
+
status: H.view ? e(H.view.status) : n({
|
|
190
|
+
axis: "run",
|
|
191
|
+
state: H.run.state
|
|
192
|
+
}),
|
|
193
|
+
title: H.view?.status.reason ?? void 0
|
|
194
|
+
}),
|
|
195
|
+
actions: G ? /* @__PURE__ */ v("time", {
|
|
196
|
+
className: "rp-elapsed",
|
|
197
|
+
"aria-label": "Elapsed",
|
|
198
|
+
children: te(G.duration)
|
|
199
|
+
}) : void 0
|
|
200
|
+
}),
|
|
201
|
+
/* @__PURE__ */ y("div", {
|
|
202
|
+
className: "rp-tabs-wrap",
|
|
203
|
+
"data-more": X || void 0,
|
|
204
|
+
children: [/* @__PURE__ */ y(ie, {
|
|
205
|
+
ref: Y,
|
|
206
|
+
variant: "underline",
|
|
207
|
+
className: "rp-tabs",
|
|
208
|
+
"aria-label": "Run",
|
|
209
|
+
children: [x.map((e) => /* @__PURE__ */ v(ae, {
|
|
210
|
+
value: e,
|
|
211
|
+
variant: "underline",
|
|
212
|
+
asChild: !0,
|
|
213
|
+
children: /* @__PURE__ */ y("a", {
|
|
214
|
+
"data-tab": e,
|
|
215
|
+
href: N.href(e),
|
|
216
|
+
onClick: (t) => {
|
|
217
|
+
t.metaKey || t.ctrlKey || t.shiftKey || t.button !== 0 || (t.preventDefault(), N.go(e));
|
|
218
|
+
},
|
|
219
|
+
children: [S[e], Z[e] ? /* @__PURE__ */ v("span", {
|
|
220
|
+
className: "ct",
|
|
221
|
+
children: Z[e]
|
|
222
|
+
}) : null]
|
|
223
|
+
})
|
|
224
|
+
}, e)), /* @__PURE__ */ v("span", {
|
|
225
|
+
className: "rp-more",
|
|
226
|
+
children: /* @__PURE__ */ v(c, {
|
|
227
|
+
label: "More run sections",
|
|
228
|
+
options: O.map(([e, t]) => ({
|
|
229
|
+
id: e,
|
|
230
|
+
label: t
|
|
231
|
+
})),
|
|
232
|
+
value: Q ? K : null,
|
|
233
|
+
width: 260,
|
|
234
|
+
placeholder: "Find a section",
|
|
235
|
+
onChange: (e) => {
|
|
236
|
+
e && (window.history.pushState(null, "", `/run/${encodeURIComponent(d)}?section=${e}`), window.dispatchEvent(new PopStateEvent("popstate")));
|
|
237
|
+
},
|
|
238
|
+
children: Q ? O.find(([e]) => e === K)?.[1] ?? "More" : "More"
|
|
239
|
+
})
|
|
240
|
+
})]
|
|
241
|
+
}), X && /* @__PURE__ */ v("button", {
|
|
242
|
+
type: "button",
|
|
243
|
+
className: "rp-tabs-next",
|
|
244
|
+
"aria-label": "More tabs",
|
|
245
|
+
onClick: () => Y.current?.scrollBy({
|
|
246
|
+
left: 160,
|
|
247
|
+
behavior: "smooth"
|
|
248
|
+
}),
|
|
249
|
+
children: /* @__PURE__ */ v(a, { name: "chevron" })
|
|
250
|
+
})]
|
|
251
|
+
}),
|
|
252
|
+
/* @__PURE__ */ v(b, {
|
|
253
|
+
value: J,
|
|
254
|
+
forceMount: !0,
|
|
255
|
+
asChild: !0,
|
|
256
|
+
children: /* @__PURE__ */ v("main", {
|
|
257
|
+
className: "rp-work",
|
|
258
|
+
"aria-label": Q ? K ?? void 0 : S[J],
|
|
259
|
+
children: Q ?? ($ ? /* @__PURE__ */ y(u, {
|
|
260
|
+
fallback: /* @__PURE__ */ v("p", {
|
|
261
|
+
className: "ws-status",
|
|
262
|
+
role: "status",
|
|
263
|
+
children: "Loading…"
|
|
264
|
+
}),
|
|
265
|
+
children: [
|
|
266
|
+
J === "overview" && /* @__PURE__ */ v(oe, { ...$ }),
|
|
267
|
+
J === "timeline" && /* @__PURE__ */ v(se, { ...$ }),
|
|
268
|
+
J === "files" && /* @__PURE__ */ v(C, { ...$ }),
|
|
269
|
+
J === "topology" && /* @__PURE__ */ v(w, { ...$ }),
|
|
270
|
+
J === "conversations" && /* @__PURE__ */ v(ce, { ...$ }),
|
|
271
|
+
J === "traces" && /* @__PURE__ */ v(le, { ...$ }),
|
|
272
|
+
J === "analytics" && /* @__PURE__ */ v(T, { ...$ }),
|
|
273
|
+
J === "checks" && /* @__PURE__ */ v(E, { ...$ })
|
|
274
|
+
]
|
|
275
|
+
}) : /* @__PURE__ */ v("p", {
|
|
276
|
+
className: "ws-status",
|
|
277
|
+
role: U.error ? "alert" : "status",
|
|
278
|
+
children: U.error ? `The run's agents are unavailable: ${U.error}` : "Reading the run…"
|
|
279
|
+
}))
|
|
280
|
+
})
|
|
281
|
+
})
|
|
282
|
+
]
|
|
283
|
+
}) });
|
|
284
|
+
}
|
|
285
|
+
//#endregion
|
|
286
|
+
export { x as RUN_PAGE_TABS, M as RunPage, j as agentFromParam, A as agentParam, k as useRunRoute };
|