@tangle-network/sandbox-cli 0.21.27 → 0.21.29

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.
Files changed (70) hide show
  1. package/dist/graph-viewer/{Analytics-DocMpB6T.js → Analytics-DFWW8Phh.js} +260 -275
  2. package/dist/graph-viewer/Checks-qgqV4xgV.js +155 -0
  3. package/dist/graph-viewer/{Conversations-CISiWrR9.js → Conversations-CGB45kpj.js} +112 -80
  4. package/dist/graph-viewer/{Files-Dh8p_Fpw.js → Files-DtZhf0ii.js} +121 -106
  5. package/dist/graph-viewer/LiveRun-C21wUKAY.js +210 -0
  6. package/dist/graph-viewer/Overview-BjeLsA2I.js +506 -0
  7. package/dist/graph-viewer/{RunPage-nJwCsArn.js → RunPage-CkkcBEUe.js} +22 -22
  8. package/dist/graph-viewer/{Timeline-bPjhV3il.js → Timeline-C2Xolk0t.js} +84 -84
  9. package/dist/graph-viewer/{Today-pebCsPJ1.js → Today-BVVDtSVN.js} +65 -58
  10. package/dist/graph-viewer/Topology-DO5XX8e4.js +545 -0
  11. package/dist/graph-viewer/{Traces-C5x2UvJh.js → Traces-BhMxjNgw.js} +79 -52
  12. package/dist/graph-viewer/{WallPages-DSmRm2v3.js → WallPages-4d9QUZDq.js} +3 -3
  13. package/dist/graph-viewer/index.js +103 -102
  14. package/dist/graph-viewer/{lazy-pages-CpmkG5o2.js → lazy-pages-DM0cZM10.js} +4 -4
  15. package/dist/graph-viewer/{record-part-Cx9GDQeo.js → record-part-CZal_IMH.js} +382 -352
  16. package/dist/graph-viewer/report-viewer.js +7 -7
  17. package/dist/graph-viewer/styles.css +596 -284
  18. package/dist/graph-viewer/{ui-CEhDqce8.js → ui-D8QZRsC3.js} +143 -111
  19. package/dist/graph-viewer/viewer/{AgentGraphCanvas-D7jjAE6i-DecKyUGA.js → AgentGraphCanvas-CMdOlSlh-4EervjeC.js} +54 -48
  20. package/dist/graph-viewer/viewer/{Analytics-CtKucZjs.js → Analytics-DD__nbLm.js} +203 -218
  21. package/dist/graph-viewer/viewer/{AnswerStrip-DsI9aF-i.js → AnswerStrip-CGUyXuYH.js} +2 -2
  22. package/dist/graph-viewer/viewer/Checks-Ds5M7eAW.js +156 -0
  23. package/dist/graph-viewer/viewer/{Conversations-DQBCyko6.js → Conversations-C1n0EBBd.js} +124 -92
  24. package/dist/graph-viewer/viewer/{Files-B-g25gSO.js → Files-Cjr7NMU_.js} +63 -48
  25. package/dist/graph-viewer/viewer/{LiveRun-BMQnTpTZ.js → LiveRun-uPTkPSjo.js} +1223 -1164
  26. package/dist/graph-viewer/viewer/{Outputs-DXnN1wEQ.js → Outputs-CumGyjQo.js} +6 -6
  27. package/dist/graph-viewer/viewer/Overview-4Umk14_2.js +507 -0
  28. package/dist/graph-viewer/viewer/{RunPage-ChipoSdO.js → RunPage-DZlBW7Va.js} +28 -28
  29. package/dist/graph-viewer/viewer/{Scores-CjriXjf_.js → Scores-ZS16yk0n.js} +3 -3
  30. package/dist/graph-viewer/viewer/{Timeline-DzEzobA0.js → Timeline-BnK6-yBR.js} +24 -24
  31. package/dist/graph-viewer/viewer/{Today-DLHe_wTA.js → Today-a_-oNigi.js} +69 -62
  32. package/dist/graph-viewer/viewer/Topology-CQPCLQT6.js +546 -0
  33. package/dist/graph-viewer/viewer/{Traces-BWBulSPE.js → Traces-C0IGk0L4.js} +75 -48
  34. package/dist/graph-viewer/viewer/{WallPages-Crj-qPoK.js → WallPages-CzWpyIfp.js} +8 -8
  35. package/dist/graph-viewer/viewer/{WorkflowGraph-DYsP_Kcg-C0O7M5iH.js → WorkflowGraph-DZ3xejKE-jRXKeSrg.js} +6 -6
  36. package/dist/graph-viewer/viewer/{agent-timeline-C-UIhXgu.js → agent-timeline-Cs9Qbpvo.js} +437 -425
  37. package/dist/graph-viewer/viewer/{bot-Bivadvxn.js → bot-D6Nrej7Z.js} +1 -1
  38. package/dist/graph-viewer/viewer/{chevron-right-WW7tFY6B.js → chevron-right-D_5IKLxu.js} +1 -1
  39. package/dist/graph-viewer/viewer/{createLucideIcon-Z6KTw8ff.js → createLucideIcon-yH0cxLMy.js} +1 -1
  40. package/dist/graph-viewer/viewer/{data-azhapQrS.js → data-CkWfWr7i.js} +1 -1
  41. package/dist/graph-viewer/viewer/{dist-CyOc-K4O.js → dist-C1-7EfoW.js} +3 -3
  42. package/dist/graph-viewer/viewer/{file-text-B34N7Soo.js → file-text-m7a3piQF.js} +1 -1
  43. package/dist/graph-viewer/viewer/{final-output-Db2D9cMT.js → final-output-kwY11u9X.js} +1 -1
  44. package/dist/graph-viewer/viewer/{highlights-Bgg6O5ub.js → highlights-Btsi5OXl.js} +2 -2
  45. package/dist/graph-viewer/viewer/{jsx-runtime-BSzbUOFc.js → jsx-runtime-DQWyJOhv.js} +1 -1
  46. package/dist/graph-viewer/viewer/{lazy-pages-fgtpXQ00.js → lazy-pages-BowaGsg-.js} +6 -6
  47. package/dist/graph-viewer/viewer/{markdown-BpJEJUTW.js → markdown-CX_sVrXB.js} +17 -17
  48. package/dist/graph-viewer/viewer/{model-brand-bTcMjQtB-C9bHPsPk.js → model-brand-bTcMjQtB-fagiBQam.js} +3 -3
  49. package/dist/graph-viewer/viewer/{page-header-C6YCPkzJ.js → page-header-Brq611fd.js} +3 -3
  50. package/dist/graph-viewer/viewer/{popover-DrLB9iar.js → popover-CvOAjlnk.js} +4 -4
  51. package/dist/graph-viewer/viewer/{react-CisnW4fB.js → react-CY3IbSNO.js} +24 -24
  52. package/dist/graph-viewer/viewer/{react-dom-C5NDYQCD.js → react-dom-t1L4_-il.js} +1 -1
  53. package/dist/graph-viewer/viewer/{record-part-d0gKKrMI.js → record-part-D3_Anfpe.js} +455 -425
  54. package/dist/graph-viewer/viewer/{segmented-control-ChhLMa6h.js → segmented-control-BaJmvTNd.js} +39 -39
  55. package/dist/graph-viewer/viewer/{shiki-BwlTRTY6.js → shiki-Qnby7Sh6.js} +2 -2
  56. package/dist/graph-viewer/viewer/{stream-tokenizer-CaVb21TO.js → stream-tokenizer-CWtnjmRd.js} +1 -1
  57. package/dist/graph-viewer/viewer/{terminal-BxRacTx0.js → terminal-83J_I4Ne.js} +1 -1
  58. package/dist/graph-viewer/viewer/{themes-BxrCCwH5.js → themes-1i1fzpRk.js} +1 -1
  59. package/dist/graph-viewer/viewer/{ui-DZiGjPwl.js → ui-C9b1rIUH.js} +222 -190
  60. package/dist/graph-viewer/viewer/{workspace-DalRxssx.js → workspace-CekmOBs3.js} +76 -76
  61. package/dist/graph-viewer/viewer/{x-B_F8B4lq.js → x-DOc2URqZ.js} +1 -1
  62. package/dist/graph-viewer/workspace-viewer.js +103 -102
  63. package/package.json +6 -6
  64. package/dist/graph-viewer/Checks-CbnY4tuh.js +0 -113
  65. package/dist/graph-viewer/LiveRun-C-yKwkKs.js +0 -190
  66. package/dist/graph-viewer/Overview-BaXPdCFC.js +0 -477
  67. package/dist/graph-viewer/Topology-CyhuK6XW.js +0 -550
  68. package/dist/graph-viewer/viewer/Checks-DZTgeYlV.js +0 -114
  69. package/dist/graph-viewer/viewer/Overview-u7-8-rGx.js +0 -478
  70. package/dist/graph-viewer/viewer/Topology-Dsmuu27J.js +0 -551
@@ -0,0 +1,545 @@
1
+ import { C as e, E as t, T as n, a as r, c as i, d as a, f as o, g as s, l as c, m as l, n as u, o as d, s as f, t as p, u as m, v as h, x as g } from "./ui-D8QZRsC3.js";
2
+ import { agentParam as _ } from "./RunPage-CkkcBEUe.js";
3
+ import { useEffect as v, useLayoutEffect as y, useMemo as b, useRef as x, useState as S } from "react";
4
+ import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
5
+ //#region src/workspace/run/Topology.tsx
6
+ function E(e, t, n, r, i) {
7
+ let a = new Set(e.teams.map((e) => e.id)), o = i ? Math.min(280, t - 32) : a.size ? 216 : 272, s = o + (a.size ? 56 : 72), c = /* @__PURE__ */ new Map(), l = [], u = (i, d, f) => {
8
+ let p = 24 + d * s;
9
+ if (i.children.length > 8 && a.has(i.id)) {
10
+ let e = 24 + (d + 1) * s, n = Math.max(1, Math.floor((t - e - 48 + 8) / 248)), a = r.has(i.id), u = Math.ceil(i.children.length / n), m = a ? 48 + u * 52 - 8 + 12 : 48;
11
+ return l.push({
12
+ id: i.id,
13
+ x: e,
14
+ y: f,
15
+ w: n * 248 - 8 + 24,
16
+ h: m,
17
+ open: a
18
+ }), a && i.children.forEach((t, r) => c.set(t, {
19
+ x: e + 12 + r % n * 248,
20
+ y: f + 48 + Math.floor(r / n) * 52,
21
+ w: 240,
22
+ h: 44,
23
+ sm: !0,
24
+ team: i.id
25
+ })), c.set(i.id, {
26
+ x: p,
27
+ y: f + 24 - 29 + 4,
28
+ w: o,
29
+ h: 58
30
+ }), Math.max(m, 58) + 16;
31
+ }
32
+ if (!i.children.length) return c.set(i.id, {
33
+ x: p,
34
+ y: f,
35
+ w: o,
36
+ h: 58
37
+ }), 68;
38
+ let m = f;
39
+ for (let t of i.children) m += u(e.byId.get(t), d + 1, m);
40
+ let h = m - f - 10, g = c.get(i.children[0]);
41
+ return c.set(i.id, {
42
+ x: p,
43
+ y: h > n - 48 ? g.y : f + Math.max(0, h / 2 - 29),
44
+ w: o,
45
+ h: 58
46
+ }), Math.max(m - f, 68);
47
+ };
48
+ if (i) {
49
+ let t = 16;
50
+ for (let n of e.tree) c.set(n.id, {
51
+ x: 12 + Math.min(n.depth, 4) * 20,
52
+ y: t,
53
+ w: o - Math.min(n.depth, 4) * 20,
54
+ h: 58
55
+ }), t += 66;
56
+ } else {
57
+ let t = 24;
58
+ for (let n of e.agents.filter((e) => !e.parent)) t += u(n, 0, t);
59
+ }
60
+ let d = [...c.values(), ...l], f = Math.max(0, ...d.map((e) => e.x + e.w)) + 24, p = Math.max(0, ...d.map((e) => e.y + e.h)) + 24, m = i ? 0 : Math.max(0, (t - f) / 2);
61
+ for (let e of d) e.x += m;
62
+ return {
63
+ pos: c,
64
+ frames: l,
65
+ W: Math.max(t, f + m),
66
+ H: Math.max(n, p),
67
+ over: p > n + 160 || f > t + 160
68
+ };
69
+ }
70
+ function D({ m: t, agent: c, selectAgent: u, route: g, doc: C }) {
71
+ let D = x(null), A = s(), [j, M] = S({
72
+ w: 1e3,
73
+ h: 700
74
+ }), [N, P] = S({
75
+ top: 0,
76
+ left: 0
77
+ }), [F, I] = S(() => new Set(t.teams.length === 1 ? [t.teams[0].id] : [])), L = l();
78
+ y(() => {
79
+ let e = D.current;
80
+ if (!e) return;
81
+ let t = () => M({
82
+ w: e.clientWidth,
83
+ h: e.clientHeight
84
+ });
85
+ t();
86
+ let n = new ResizeObserver(t);
87
+ return n.observe(e), () => n.disconnect();
88
+ }, []);
89
+ let R = b(() => E(t, j.w, j.h, F, A), [
90
+ t,
91
+ j,
92
+ F,
93
+ A
94
+ ]), z = c ?? t.root?.id ?? null, { anc: B, desc: V } = b(() => {
95
+ let e = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
96
+ for (let n = z ? t.byId.get(z)?.parent : null; n; n = t.byId.get(n)?.parent ?? null) e.add(n);
97
+ let r = (e) => {
98
+ for (let i of t.byId.get(e)?.children ?? []) n.add(i), r(i);
99
+ };
100
+ return z && r(z), {
101
+ anc: e,
102
+ desc: n
103
+ };
104
+ }, [t, z]), H = z !== null && z !== t.root?.id, U = (e) => !H || e === z || B.has(e) || V.has(e), W = (e) => {
105
+ let t = R.pos.get(e);
106
+ t && D.current && D.current.scrollTo({
107
+ left: t.x + t.w / 2 - j.w / 2,
108
+ top: t.y + t.h / 2 - j.h / 2,
109
+ behavior: "smooth"
110
+ });
111
+ };
112
+ v(() => {
113
+ if (z) {
114
+ let e = t.byId.get(z)?.team;
115
+ e && e !== z && !F.has(e) && I(/* @__PURE__ */ new Set([...F, e]));
116
+ }
117
+ }, [z]);
118
+ let G = (e) => [e.x + e.w, e.y + e.h / 2], K = (e) => [e.x, e.y + e.h / 2], q = (e, t, n, r) => {
119
+ if (A) {
120
+ let [i, a] = K(t);
121
+ return /* @__PURE__ */ w("path", {
122
+ d: `M${e.x + 16} ${e.y + e.h} V${a - 8} q0 8 8 8 H${i}`,
123
+ className: n ? "hot" : ""
124
+ }, r);
125
+ }
126
+ let [i, a] = G(e), [o, s] = K(t), c = (i + o) / 2;
127
+ return /* @__PURE__ */ w("path", {
128
+ d: `M${i} ${a} C${c} ${a} ${c} ${s} ${o} ${s}`,
129
+ className: n ? "hot" : H ? "fade" : ""
130
+ }, r);
131
+ }, J = [];
132
+ for (let e of t.agents) {
133
+ let t = R.pos.get(e.id), n = e.parent ? R.pos.get(e.parent) : null;
134
+ t && n && !t.team && J.push(q(n, t, e.id === z || e.parent === z || B.has(e.id) && (B.has(e.parent) || e.parent === z), e.id));
135
+ }
136
+ for (let e of R.frames) {
137
+ let t = R.pos.get(e.id);
138
+ t && J.push(q(t, {
139
+ x: e.x,
140
+ y: e.y,
141
+ w: e.w,
142
+ h: 48
143
+ }, e.id === z || R.pos.get(z ?? "")?.team === e.id, `f:${e.id}`));
144
+ }
145
+ let Y = t.agents.filter((e) => {
146
+ let t = R.pos.get(e.id);
147
+ return t && t.y + t.h >= N.top - 400 && t.y <= N.top + j.h + 400 && t.x + t.w >= N.left - 400 && t.x <= N.left + j.w + 400;
148
+ }), X = () => D.current?.getBoundingClientRect(), Z = z ? t.byId.get(z) ?? null : null, Q = b(() => {
149
+ let e = /* @__PURE__ */ new Map();
150
+ for (let n of t.agents) e.has(n.state.label) || e.set(n.state.label, n.state);
151
+ return [...e.values()];
152
+ }, [t]);
153
+ return /* @__PURE__ */ T("div", {
154
+ className: "rp-topo",
155
+ children: [/* @__PURE__ */ T("section", {
156
+ className: "rp-card",
157
+ "aria-label": "Spawn tree",
158
+ children: [/* @__PURE__ */ T("div", {
159
+ className: "rp-hd rp-hd-tools",
160
+ children: [/* @__PURE__ */ w("div", {
161
+ className: "rp-legend",
162
+ children: Q.map((e) => /* @__PURE__ */ T("span", {
163
+ className: "rp-key",
164
+ children: [/* @__PURE__ */ w(f, { tone: e.tone }), e.label]
165
+ }, e.label))
166
+ }), /* @__PURE__ */ T("span", {
167
+ className: "end",
168
+ children: [t.teams.length > 0 && !A && /* @__PURE__ */ T("span", {
169
+ className: "rp-group",
170
+ role: "group",
171
+ "aria-label": "Teams",
172
+ children: [/* @__PURE__ */ w("button", {
173
+ type: "button",
174
+ className: "rp-btn",
175
+ onClick: () => I(new Set(t.teams.map((e) => e.id))),
176
+ children: "Expand all"
177
+ }), /* @__PURE__ */ w("button", {
178
+ type: "button",
179
+ className: "rp-btn",
180
+ onClick: () => I(/* @__PURE__ */ new Set()),
181
+ children: "Collapse all"
182
+ })]
183
+ }), /* @__PURE__ */ w(d, {
184
+ label: "Go to agent",
185
+ options: a(t),
186
+ groups: m(t),
187
+ value: z,
188
+ placeholder: `Search ${t.agents.length} agents`,
189
+ width: 340,
190
+ style: { width: 220 },
191
+ onChange: (e) => {
192
+ e && (u(e), window.setTimeout(() => W(e), 60));
193
+ },
194
+ children: /* @__PURE__ */ w("span", {
195
+ className: "dim",
196
+ children: "Go to agent"
197
+ })
198
+ })]
199
+ })]
200
+ }), /* @__PURE__ */ T("div", {
201
+ className: "rp-topo-wrap",
202
+ children: [/* @__PURE__ */ T("div", {
203
+ className: "rp-topo-canvas",
204
+ ref: D,
205
+ onScroll: (e) => P({
206
+ top: e.currentTarget.scrollTop,
207
+ left: e.currentTarget.scrollLeft
208
+ }),
209
+ children: [
210
+ /* @__PURE__ */ w("svg", {
211
+ className: "edges",
212
+ width: R.W,
213
+ height: R.H,
214
+ "aria-hidden": "true",
215
+ children: J
216
+ }),
217
+ R.frames.map((e) => {
218
+ let a = t.teams.find((t) => t.id === e.id), o = a.members.map((e) => t.byId.get(e)), s = o.filter((e) => e.state.tone === "live").length, c = o.filter((e) => n(e.state.tone)).length, l = H && !(e.id === z || B.has(e.id) || R.pos.get(z ?? "")?.team === e.id);
219
+ return /* @__PURE__ */ w("div", {
220
+ className: `rp-team${l ? " fade" : ""}`,
221
+ style: {
222
+ left: e.x,
223
+ top: e.y,
224
+ width: e.w,
225
+ height: e.h
226
+ },
227
+ children: /* @__PURE__ */ T("button", {
228
+ type: "button",
229
+ className: "rp-team-h",
230
+ "aria-expanded": e.open,
231
+ onClick: () => I((t) => {
232
+ let n = new Set(t);
233
+ return n.has(e.id) ? n.delete(e.id) : n.add(e.id), n;
234
+ }),
235
+ onPointerEnter: (e) => L.show({
236
+ content: /* @__PURE__ */ w(i, {
237
+ m: t,
238
+ team: a
239
+ }),
240
+ rect: e.currentTarget.getBoundingClientRect(),
241
+ bounds: X(),
242
+ vertical: !0,
243
+ wide: !0
244
+ }),
245
+ onPointerLeave: () => L.hide(),
246
+ children: [
247
+ /* @__PURE__ */ w("span", {
248
+ className: "cv",
249
+ children: /* @__PURE__ */ w(r, { name: "chevron" })
250
+ }),
251
+ /* @__PURE__ */ w("b", { children: a.label }),
252
+ /* @__PURE__ */ w("span", {
253
+ className: "ct",
254
+ children: o.length
255
+ }),
256
+ /* @__PURE__ */ T("span", {
257
+ className: "st",
258
+ children: [
259
+ /* @__PURE__ */ T("span", {
260
+ className: "mb",
261
+ children: [/* @__PURE__ */ w("i", {
262
+ className: "ok",
263
+ style: { width: `${c / o.length * 100}%` }
264
+ }), /* @__PURE__ */ w("i", {
265
+ className: "live",
266
+ style: { width: `${s / o.length * 100}%` }
267
+ })]
268
+ }),
269
+ s ? `${s} running · ` : "",
270
+ h(o.reduce((e, t) => e + (t.tokens ?? 0), 0))
271
+ ]
272
+ })
273
+ ]
274
+ })
275
+ }, e.id);
276
+ }),
277
+ Y.map((n) => {
278
+ let r = R.pos.get(n.id), i = `rp-node${r.sm ? " sm" : ""}${n.id === z ? " sel" : ""}${U(n.id) || r.team && R.pos.get(z ?? "")?.team === r.team ? "" : " fade"}${n.state.tone === "none" ? " ghost" : ""}`;
279
+ return /* @__PURE__ */ T("button", {
280
+ type: "button",
281
+ className: i,
282
+ style: {
283
+ left: r.x,
284
+ top: r.y,
285
+ width: r.w
286
+ },
287
+ "aria-pressed": n.id === z,
288
+ onClick: () => u(n.id),
289
+ onPointerEnter: (e) => L.show({
290
+ content: /* @__PURE__ */ w(p, {
291
+ m: t,
292
+ a: n
293
+ }),
294
+ rect: e.currentTarget.getBoundingClientRect(),
295
+ bounds: X(),
296
+ vertical: !0,
297
+ wide: n.tools.length > 0
298
+ }),
299
+ onPointerLeave: () => L.hide(),
300
+ onFocus: (e) => L.show({
301
+ content: /* @__PURE__ */ w(p, {
302
+ m: t,
303
+ a: n
304
+ }),
305
+ rect: e.currentTarget.getBoundingClientRect(),
306
+ bounds: X(),
307
+ vertical: !0,
308
+ wide: n.tools.length > 0
309
+ }),
310
+ onBlur: () => L.hide(),
311
+ children: [/* @__PURE__ */ T("span", {
312
+ className: "r1",
313
+ children: [
314
+ /* @__PURE__ */ w(f, { tone: n.state.tone }),
315
+ /* @__PURE__ */ w("span", {
316
+ className: "nm",
317
+ title: n.name,
318
+ children: o(r.sm && n.parent && n.name.startsWith(`${t.byId.get(n.parent)?.name}-`) ? n.name.slice((t.byId.get(n.parent)?.name.length ?? 0) + 1) : n.name.length <= (r.sm ? 18 : 24) ? n.name : n.short, r.sm ? 18 : 24)
319
+ }),
320
+ r.sm && /* @__PURE__ */ w("span", {
321
+ className: "dim",
322
+ children: h(n.tokens)
323
+ })
324
+ ]
325
+ }), !r.sm && /* @__PURE__ */ w("span", {
326
+ className: "r2",
327
+ children: [
328
+ n.state.label,
329
+ n.tokens === null ? "no usage recorded" : `${h(n.tokens)} tokens`,
330
+ n.tokens === null ? "" : `${e(n.steps.length)} steps`,
331
+ n.failedSteps ? `${n.failedSteps} failed` : ""
332
+ ].filter(Boolean).join(" · ")
333
+ })]
334
+ }, n.id);
335
+ }),
336
+ /* @__PURE__ */ w("div", { style: {
337
+ position: "absolute",
338
+ left: 0,
339
+ top: R.H - 1,
340
+ width: R.W,
341
+ height: 1
342
+ } })
343
+ ]
344
+ }), R.over && !A && /* @__PURE__ */ w(O, {
345
+ m: t,
346
+ L: R,
347
+ view: N,
348
+ size: j,
349
+ selected: z,
350
+ onJump: (e, t) => D.current?.scrollTo({
351
+ left: e - j.w / 2,
352
+ top: t - j.h / 2
353
+ })
354
+ })]
355
+ })]
356
+ }), Z && /* @__PURE__ */ w(k, {
357
+ m: t,
358
+ a: Z,
359
+ onSelect: (e) => {
360
+ u(e), window.setTimeout(() => W(e), 60);
361
+ },
362
+ href: g.href("conversations", { agent: _(C.run.id, Z.id) })
363
+ })]
364
+ });
365
+ }
366
+ function O({ m: e, L: t, view: n, size: r, selected: i, onJump: a }) {
367
+ let o = 184 / t.W, s = Math.min(160, t.H * o);
368
+ return /* @__PURE__ */ T("div", {
369
+ className: "rp-mm",
370
+ onClick: (e) => {
371
+ let t = e.currentTarget.querySelector("svg").getBoundingClientRect();
372
+ a((e.clientX - t.left) / o, (e.clientY - t.top) / o);
373
+ },
374
+ children: [/* @__PURE__ */ T("div", {
375
+ className: "mm-h",
376
+ children: [/* @__PURE__ */ w("span", { children: "Map" }), /* @__PURE__ */ T("span", { children: [e.agents.length, " agents"] })]
377
+ }), /* @__PURE__ */ T("svg", {
378
+ viewBox: `0 0 184 ${s}`,
379
+ style: { height: s },
380
+ "aria-hidden": "true",
381
+ children: [
382
+ t.frames.map((e) => /* @__PURE__ */ w("rect", {
383
+ x: e.x * o,
384
+ y: e.y * o,
385
+ width: e.w * o,
386
+ height: e.h * o,
387
+ rx: "1.5",
388
+ className: "fr"
389
+ }, e.id)),
390
+ [...t.pos].map(([t, n]) => /* @__PURE__ */ w("rect", {
391
+ x: n.x * o,
392
+ y: n.y * o,
393
+ width: Math.max(1.5, n.w * o),
394
+ height: Math.max(1.5, n.h * o),
395
+ rx: "1.5",
396
+ className: t === i ? "sel" : e.byId.get(t)?.state.tone === "live" ? "live" : ""
397
+ }, t)),
398
+ /* @__PURE__ */ w("rect", {
399
+ x: n.left * o,
400
+ y: n.top * o,
401
+ width: r.w * o,
402
+ height: r.h * o,
403
+ rx: "2",
404
+ className: "vp"
405
+ })
406
+ ]
407
+ })]
408
+ });
409
+ }
410
+ function k({ m: n, a: i, onSelect: a, href: o }) {
411
+ let s = g(n.t0), l = Math.max(1, ...i.tools.map((e) => e.calls)), d = i.parent ? n.byId.get(i.parent) : null, p = [[
412
+ i.model ?? "model",
413
+ i.latency.p50,
414
+ i.latency.p90,
415
+ i.latency.p99,
416
+ i.modelCalls
417
+ ], ...i.tools.slice(0, 5).map((e) => [
418
+ e.name,
419
+ e.p50,
420
+ e.p90,
421
+ e.p99,
422
+ e.calls
423
+ ])];
424
+ return /* @__PURE__ */ T("aside", {
425
+ className: "rp-card",
426
+ "aria-label": i.name,
427
+ children: [/* @__PURE__ */ T("div", {
428
+ className: "rp-hd",
429
+ children: [/* @__PURE__ */ T("h2", { children: [/* @__PURE__ */ w(f, { tone: i.state.tone }), i.name] }), /* @__PURE__ */ w("span", {
430
+ className: "end",
431
+ children: /* @__PURE__ */ w("span", {
432
+ className: `rp-pill ${i.state.tone}`,
433
+ children: i.state.label
434
+ })
435
+ })]
436
+ }), /* @__PURE__ */ T("div", {
437
+ className: "rp-scroll rp-tinsp",
438
+ children: [
439
+ /* @__PURE__ */ T("dl", {
440
+ className: "rp-kv",
441
+ children: [
442
+ /* @__PURE__ */ w("dt", { children: "Model" }),
443
+ /* @__PURE__ */ w("dd", { children: [i.model, i.harness].filter(Boolean).join(" · ") || "—" }),
444
+ /* @__PURE__ */ w("dt", { children: "Spawned" }),
445
+ /* @__PURE__ */ T("dd", { children: [d ? `by ${d.name} · ` : "", i.start === null ? "—" : `${s(Math.max(0, i.start))} UTC`] }),
446
+ /* @__PURE__ */ w("dt", { children: "Ended" }),
447
+ /* @__PURE__ */ w("dd", { children: i.state.tone === "live" ? "running" : i.end === null ? "—" : `${s(i.end)} UTC` }),
448
+ /* @__PURE__ */ w("dt", { children: "Cost" }),
449
+ /* @__PURE__ */ w("dd", { children: c(i) })
450
+ ]
451
+ }),
452
+ /* @__PURE__ */ T("div", {
453
+ className: "rp-stat3",
454
+ children: [
455
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("b", { children: h(i.tokens) }), /* @__PURE__ */ w("span", { children: "tokens" })] }),
456
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("b", { children: e(i.modelCalls) }), /* @__PURE__ */ w("span", { children: "model calls" })] }),
457
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("b", { children: e(i.toolCalls) }), /* @__PURE__ */ w("span", { children: "tool calls" })] }),
458
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("b", { children: i.failedSteps }), /* @__PURE__ */ w("span", { children: "failed steps" })] }),
459
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("b", { children: i.restarts.length }), /* @__PURE__ */ w("span", { children: "restarts" })] }),
460
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("b", { children: i.commits ?? "—" }), /* @__PURE__ */ w("span", { children: "commits" })] })
461
+ ]
462
+ }),
463
+ i.modelCalls > 0 && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w("h5", {
464
+ className: "rp-subh",
465
+ children: "Latency"
466
+ }), /* @__PURE__ */ T("table", {
467
+ className: "rp-lt",
468
+ children: [/* @__PURE__ */ w("thead", { children: /* @__PURE__ */ T("tr", { children: [
469
+ /* @__PURE__ */ w("th", {}),
470
+ /* @__PURE__ */ w("th", { children: "calls" }),
471
+ /* @__PURE__ */ w("th", { children: "p50" }),
472
+ /* @__PURE__ */ w("th", { children: "p90" }),
473
+ /* @__PURE__ */ w("th", { children: "p99" })
474
+ ] }) }), /* @__PURE__ */ w("tbody", { children: p.map(([n, r, i, a, o]) => /* @__PURE__ */ T("tr", { children: [
475
+ /* @__PURE__ */ w("td", {
476
+ title: n,
477
+ children: n
478
+ }),
479
+ /* @__PURE__ */ w("td", { children: e(o) }),
480
+ /* @__PURE__ */ w("td", { children: t(r) }),
481
+ /* @__PURE__ */ w("td", { children: t(i) }),
482
+ /* @__PURE__ */ w("td", { children: t(a) })
483
+ ] }, n)) })]
484
+ })] }),
485
+ i.tools.length > 0 && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w("h5", {
486
+ className: "rp-subh",
487
+ children: "Tool calls"
488
+ }), /* @__PURE__ */ w("div", {
489
+ className: "rp-tbars four",
490
+ children: i.tools.slice(0, 8).map((t) => /* @__PURE__ */ T("div", {
491
+ className: "row",
492
+ children: [
493
+ /* @__PURE__ */ w("span", {
494
+ className: "l",
495
+ title: t.name,
496
+ children: t.name
497
+ }),
498
+ /* @__PURE__ */ w(u, {
499
+ ok: t.calls - t.failures,
500
+ failed: t.failures,
501
+ max: l
502
+ }),
503
+ /* @__PURE__ */ w("span", {
504
+ className: "n",
505
+ children: e(t.calls)
506
+ }),
507
+ /* @__PURE__ */ w("span", {
508
+ className: "n f",
509
+ children: t.failures ? `${t.failures} ✕` : ""
510
+ })
511
+ ]
512
+ }, t.name))
513
+ })] }),
514
+ i.children.length > 0 && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ T("h5", {
515
+ className: "rp-subh",
516
+ children: ["Spawned · ", i.children.length]
517
+ }), /* @__PURE__ */ T("div", {
518
+ className: "rp-chips",
519
+ children: [i.children.slice(0, 14).map((e) => {
520
+ let t = n.byId.get(e);
521
+ return /* @__PURE__ */ T("button", {
522
+ type: "button",
523
+ className: "rp-chip",
524
+ onClick: () => a(e),
525
+ children: [/* @__PURE__ */ w(f, { tone: t.state.tone }), t.name]
526
+ }, e);
527
+ }), i.children.length > 14 && /* @__PURE__ */ T("span", {
528
+ className: "rp-chip dim",
529
+ children: [i.children.length - 14, " more"]
530
+ })]
531
+ })] }),
532
+ /* @__PURE__ */ w("p", { children: /* @__PURE__ */ T("a", {
533
+ className: "rp-btn sm framed",
534
+ href: o,
535
+ children: ["Conversation", /* @__PURE__ */ w(r, {
536
+ name: "arrow",
537
+ size: 14
538
+ })]
539
+ }) })
540
+ ]
541
+ })]
542
+ });
543
+ }
544
+ //#endregion
545
+ export { D as Topology };