agentglow 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,14 @@
1
- var Is = Object.defineProperty;
2
- var Ns = (e, t, n) => t in e ? Is(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
- var Xe = (e, t, n) => Ns(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { jsx as f, jsxs as z, Fragment as be } from "react/jsx-runtime";
5
- import { Text as gn, OrbitControls as Fs } from "@react-three/drei";
6
- import { useThree as at, useFrame as Oe, Canvas as Bs } from "@react-three/fiber";
7
- import { useSyncExternalStore as kt, createContext as es, useRef as L, useMemo as ne, useEffect as Q, Suspense as Ds, useImperativeHandle as Us, useContext as ts, useState as fe, useLayoutEffect as Zs, useCallback as ns, Fragment as Ls } from "react";
8
- import * as x from "three";
9
- import { u as Yt, T as Js } from "./index-jLXx_Wgk.js";
10
- var $n;
11
- const An = typeof window < "u" && !!(($n = window.matchMedia) != null && $n.call(window, "(prefers-reduced-motion: reduce)").matches), g = {
1
+ var Xs = Object.defineProperty;
2
+ var Ks = (e, t, n) => t in e ? Xs(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
+ var Ke = (e, t, n) => Ks(e, typeof t != "symbol" ? t + "" : t, n);
4
+ import { jsx as f, jsxs as R, Fragment as Me } from "react/jsx-runtime";
5
+ import { Text as wn, OrbitControls as Qs } from "@react-three/drei";
6
+ import { useThree as ot, useFrame as ye, Canvas as Ys } from "@react-three/fiber";
7
+ import { useSyncExternalStore as Vt, createContext as is, useRef as B, useMemo as se, useEffect as Y, Suspense as _s, useImperativeHandle as $s, useContext as ls, useState as he, useLayoutEffect as er, useCallback as us, Fragment as tr } from "react";
8
+ import * as v from "three";
9
+ import { u as nn, T as nr } from "./index-CRRHsMqy.js";
10
+ var cs;
11
+ const jt = typeof window < "u" && !!((cs = window.matchMedia) != null && cs.call(window, "(prefers-reduced-motion: reduce)").matches), g = {
12
12
  plane: "xy",
13
13
  agents: /* @__PURE__ */ new Map(),
14
14
  runs: /* @__PURE__ */ new Map(),
@@ -18,12 +18,12 @@ const An = typeof window < "u" && !!(($n = window.matchMedia) != null && $n.call
18
18
  clusterTarget: [],
19
19
  clusterFresh: [],
20
20
  graph: {
21
- pos: new x.Vector3(),
22
- target: new x.Vector3(),
21
+ pos: new v.Vector3(),
22
+ target: new v.Vector3(),
23
23
  radius: 2.6,
24
24
  natural: 1,
25
25
  scale: 0,
26
- out: new x.Vector3(-1, 0, 0),
26
+ out: new v.Vector3(-1, 0, 0),
27
27
  mix: 0,
28
28
  fresh: !0
29
29
  },
@@ -38,56 +38,56 @@ const An = typeof window < "u" && !!(($n = window.matchMedia) != null && $n.call
38
38
  /** visible runs, oldest first (rebuilt when runsVersion bumps) */
39
39
  runOrder: []
40
40
  };
41
- function re(e, t, n) {
41
+ function ae(e, t, n) {
42
42
  return g.plane === "xy" ? n.set(e, t, 0) : n.set(e, 0, -t);
43
43
  }
44
- function oc(e, t, n, s) {
44
+ function Vc(e, t, n, s) {
45
45
  return s.copy(e.origin).addScaledVector(e.side, t - e.cu).addScaledVector(e.axis, n - e.cv);
46
46
  }
47
- function cc(e) {
47
+ function Ec(e) {
48
48
  var t;
49
49
  return (t = g.agents.get(e)) == null ? void 0 : t.live;
50
50
  }
51
- function ic(e) {
51
+ function Rc(e) {
52
52
  var t;
53
53
  return (t = g.mcp.get(e)) == null ? void 0 : t.pos;
54
54
  }
55
- function lc(e, t) {
55
+ function Cc(e, t) {
56
56
  var n, s;
57
57
  return (s = (n = g.mcp.get(e)) == null ? void 0 : n.backends.get(t)) == null ? void 0 : s.pos;
58
58
  }
59
- function uc(e, t) {
59
+ function zc(e, t) {
60
60
  const n = g.graph;
61
61
  return t.copy(e).multiplyScalar(n.scale).add(n.pos);
62
62
  }
63
- function dc(e, t) {
63
+ function Tc(e, t) {
64
64
  const n = g.graph;
65
65
  return t.copy(e).sub(n.pos).divideScalar(Math.max(1e-4, n.scale));
66
66
  }
67
- let Hs = 0;
68
- const bt = () => ++Hs, Ee = (e) => [Math.round(e.x * 100) / 100, Math.round(e.y * 100) / 100, Math.round(e.z * 100) / 100];
69
- function bn() {
67
+ let sr = 0;
68
+ const yt = () => ++sr, Re = (e) => [Math.round(e.x * 100) / 100, Math.round(e.y * 100) / 100, Math.round(e.z * 100) / 100];
69
+ function xn() {
70
70
  return {
71
71
  plane: g.plane,
72
- agents: [...g.agents.values()].map((e) => ({ id: e.id, run: e.run.id, depth: e.depth, scale: Math.round(e.scale * 100) / 100, pos: Ee(e.pos) })),
73
- runs: g.runOrder.map((e) => ({ id: e.id, members: e.members, origin: Ee(e.origin), hu: e.hu, hv: e.hv })),
74
- mcp: [...g.mcp.values()].map((e) => ({ name: e.name, wanted: e.wanted, mix: Math.round(e.mix * 100) / 100, pos: Ee(e.pos), backends: [...e.backends.values()].map((t) => ({ res: t.res.name, mix: Math.round(t.mix * 100) / 100, pos: Ee(t.pos) })) })),
75
- clusters: g.clusterPos.map(Ee),
72
+ agents: [...g.agents.values()].map((e) => ({ id: e.id, run: e.run.id, depth: e.depth, scale: Math.round(e.scale * 100) / 100, pos: Re(e.pos) })),
73
+ runs: g.runOrder.map((e) => ({ id: e.id, members: e.members, origin: Re(e.origin), hu: e.hu, hv: e.hv })),
74
+ mcp: [...g.mcp.values()].map((e) => ({ name: e.name, wanted: e.wanted, mix: Math.round(e.mix * 100) / 100, pos: Re(e.pos), backends: [...e.backends.values()].map((t) => ({ res: t.res.name, mix: Math.round(t.mix * 100) / 100, pos: Re(t.pos) })) })),
75
+ clusters: g.clusterPos.map(Re),
76
76
  core: { ...g.core },
77
- graph: { wanted: g.graphWanted, pos: Ee(g.graph.pos), out: Ee(g.graph.out), radius: g.graph.radius, scale: g.graph.scale, mix: g.graph.mix }
77
+ graph: { wanted: g.graphWanted, pos: Re(g.graph.pos), out: Re(g.graph.out), radius: g.graph.radius, scale: g.graph.scale, mix: g.graph.mix }
78
78
  };
79
79
  }
80
- typeof window < "u" && (Object.defineProperties(g, { toJSON: { value: bn, enumerable: !1 }, summary: { value: bn, enumerable: !1 } }), window.__agentglowKit = g);
81
- const ss = [
80
+ typeof window < "u" && (Object.defineProperties(g, { toJSON: { value: xn, enumerable: !1 }, summary: { value: xn, enumerable: !1 } }), window.__agentglowKit = g);
81
+ const ds = [
82
82
  { type: "planner", label: "Planner", color: "#a78bfa" },
83
83
  { type: "researcher", label: "Researcher", color: "#fbbf24" },
84
84
  { type: "graph_scout", label: "Graph Scout", color: "#22d3ee" },
85
85
  { type: "records_scout", label: "Records Scout", color: "#f472b6" },
86
86
  { type: "data_scout", label: "Data Scout", color: "#fb7185" },
87
87
  { type: "writer", label: "Writer", color: "#4ade80" }
88
- ], Pe = Object.fromEntries(ss.map((e) => [e.type, e.color]));
89
- Object.fromEntries(ss.map((e) => [e.type, e.label]));
90
- const _t = ["plan", "research", "write"], Mt = ["#818cf8", "#f472b6", "#34d399", "#fb923c", "#38bdf8", "#e879f9"], fc = {
88
+ ], Ge = Object.fromEntries(ds.map((e) => [e.type, e.color]));
89
+ Object.fromEntries(ds.map((e) => [e.type, e.label]));
90
+ const sn = ["plan", "research", "write"], vt = ["#818cf8", "#f472b6", "#34d399", "#fb923c", "#38bdf8", "#e879f9"], Pc = {
91
91
  Customer: "#f59e0b",
92
92
  Account: "#38bdf8",
93
93
  Incident: "#22c55e",
@@ -104,14 +104,14 @@ const _t = ["plan", "research", "write"], Mt = ["#818cf8", "#f472b6", "#34d399",
104
104
  Agency: "#ef4444",
105
105
  Topic: "#facc15",
106
106
  Committee: "#2dd4bf"
107
- }, js = {
107
+ }, rr = {
108
108
  warehouse: "#f97316",
109
109
  search: "#22d3ee",
110
110
  github: "#e5e7eb",
111
111
  slack: "#e879f9",
112
112
  "google-drive": "#facc15",
113
113
  analytics: "#06b6d4"
114
- }, rs = 2500, Xs = 6e3, St = { fadeMs: (e) => rs }, hc = (e) => St.fadeMs(e), h = {
114
+ }, rn = (e) => e.doneAt > 0, ne = (e) => !e.doneAt && !e.exitAt, ar = 12e4, fs = 2500, or = 6e3, Et = { fadeMs: (e) => fs }, Gc = (e) => Et.fadeMs(e), h = {
115
115
  runs: /* @__PURE__ */ new Map(),
116
116
  instances: /* @__PURE__ */ new Map(),
117
117
  comets: [],
@@ -155,41 +155,41 @@ const _t = ["plan", "research", "write"], Mt = ["#818cf8", "#f472b6", "#34d399",
155
155
  selected: null,
156
156
  /** the server answered 401 for this scope/run/token (the HUD shows a notice; no simulator fallback) */
157
157
  unauthorized: !1
158
- }, Ks = 500;
159
- let Vt = 0, as = 0;
160
- const $e = /* @__PURE__ */ new Set(), Me = () => {
161
- as++, $e.forEach((e) => e());
158
+ }, cr = 500;
159
+ let Ct = 0, hs = 0;
160
+ const et = /* @__PURE__ */ new Set(), ve = () => {
161
+ hs++, et.forEach((e) => e());
162
162
  };
163
- function st() {
164
- return kt(
165
- (e) => ($e.add(e), () => $e.delete(e)),
166
- () => as
163
+ function rt() {
164
+ return Vt(
165
+ (e) => (et.add(e), () => et.delete(e)),
166
+ () => hs
167
167
  ), h;
168
168
  }
169
- const $t = (e, t = 0) => {
169
+ const an = (e, t = 0) => {
170
170
  let n = 2166136261 ^ t;
171
171
  for (let s = 0; s < e.length; s++) n = Math.imul(n ^ e.charCodeAt(s), 16777619);
172
172
  return (n >>> 0) % 10007 / 10007;
173
173
  };
174
- function Qs() {
174
+ function ir() {
175
175
  const e = new Set([...h.runs.values()].map((s) => s.slot)), t = [0, 1, 2, 3, 4, 5].filter((s) => !e.has(s));
176
176
  if (t.length) return t[Math.floor(Math.random() * t.length)];
177
177
  let n = 6;
178
178
  for (; e.has(n); ) n++;
179
179
  return n;
180
180
  }
181
- function os(e) {
181
+ function ps(e) {
182
182
  var s, o;
183
183
  const t = performance.now();
184
184
  switch (e.type !== "mcp_register" && (h.ticker = [e, ...h.ticker].slice(0, 60)), e.type) {
185
185
  case "run": {
186
186
  if (e.status === "started") {
187
- const r = Qs();
187
+ const r = ir();
188
188
  h.runs.set(e.run_id, {
189
189
  id: e.run_id,
190
190
  topic: e.topic,
191
191
  workflow: e.workflow,
192
- color: Mt[r % Mt.length],
192
+ color: vt[r % vt.length],
193
193
  slot: r,
194
194
  status: "started",
195
195
  steps: { plan: "queued", research: "queued", write: "queued" },
@@ -204,6 +204,7 @@ function os(e) {
204
204
  } else {
205
205
  const r = h.runs.get(e.run_id);
206
206
  r && (r.status = e.status, r.endedAt = t);
207
+ for (const c of h.instances.values()) c.run === e.run_id && !c.exitAt && (c.exitAt = t);
207
208
  }
208
209
  break;
209
210
  }
@@ -211,7 +212,7 @@ function os(e) {
211
212
  const r = h.runs.get(e.run_id);
212
213
  if (!r) break;
213
214
  r.hasSteps = !0;
214
- const c = _t.find((u) => r.steps[u] === "running");
215
+ const c = sn.find((u) => r.steps[u] === "running");
215
216
  r.steps[e.step] = e.status, e.status === "running" && c && c !== e.step && (r.handoffAt = t, r.handoffFrom = c, r.handoffTo = e.step);
216
217
  break;
217
218
  }
@@ -220,12 +221,13 @@ function os(e) {
220
221
  h.instances.set(e.id, {
221
222
  id: e.id,
222
223
  run: e.run_id,
223
- type: er(e.agent, r),
224
+ type: fr(e.agent, r),
224
225
  name: e.agent,
225
226
  parent: e.parent_id,
226
227
  status: "spawning",
227
228
  subagent: r,
228
229
  bornAt: t,
230
+ doneAt: 0,
229
231
  exitAt: 0,
230
232
  pulse: 0.8,
231
233
  pulseAt: t,
@@ -241,7 +243,11 @@ function os(e) {
241
243
  }
242
244
  case "exit": {
243
245
  const r = h.instances.get(e.id);
244
- r && (r.status = e.status, r.exitAt = t);
246
+ if (r) {
247
+ r.status = e.status, r.doneAt = t;
248
+ const c = h.runs.get(r.run);
249
+ (!c || c.endedAt) && (r.exitAt = t);
250
+ }
245
251
  for (const [c, u] of h.mcpPending) u.instance === e.id && h.mcpPending.delete(c);
246
252
  break;
247
253
  }
@@ -256,7 +262,7 @@ function os(e) {
256
262
  break;
257
263
  }
258
264
  case "message":
259
- h.comets.push({ id: ++Vt, run: e.run_id, from: e.from_id, to: e.to_id, start: t, dur: 1300, text: e.text }), h.focus = e.to_id, h.focusAt = t;
265
+ h.comets.push({ id: ++Ct, run: e.run_id, from: e.from_id, to: e.to_id, start: t, dur: 1300, text: e.text }), h.focus = e.to_id, h.focusAt = t;
260
266
  break;
261
267
  case "tool": {
262
268
  h.stats.toolCalls++, /^(task|agent)$/i.test(e.tool) && (h.spawnHintAt = t);
@@ -265,8 +271,8 @@ function os(e) {
265
271
  break;
266
272
  }
267
273
  case "graph":
268
- ls(!0, !1), (s = h.instances.get(e.id)) != null && s.nodes && e.nodes.forEach((r) => h.instances.get(e.id).nodes.add(r));
269
- for (const r of e.nodes.slice(0, 20)) h.flares.push({ id: ++Vt, run: e.run_id, instance: e.id, node: r, op: e.op, start: t });
274
+ As(!0, !1), (s = h.instances.get(e.id)) != null && s.nodes && e.nodes.forEach((r) => h.instances.get(e.id).nodes.add(r));
275
+ for (const r of e.nodes.slice(0, 20)) h.flares.push({ id: ++Ct, run: e.run_id, instance: e.id, node: r, op: e.op, start: t });
270
276
  e.op === "read" ? h.stats.graphReads += e.nodes.length : h.stats.graphWrites += e.nodes.length;
271
277
  break;
272
278
  case "mcp_register": {
@@ -277,13 +283,13 @@ function os(e) {
277
283
  }
278
284
  case "mcp": {
279
285
  let r = h.mcpServers.get(e.server);
280
- r || (r = { name: e.server, color: js[e.server] ?? "#94a3b8", slot: h.mcpServers.size, activeAt: t, calls: 0, inflight: 0, resources: /* @__PURE__ */ new Map() }, h.mcpServers.set(e.server, r)), r.activeAt = t;
286
+ r || (r = { name: e.server, color: rr[e.server] ?? "#94a3b8", slot: h.mcpServers.size, activeAt: t, calls: 0, inflight: 0, resources: /* @__PURE__ */ new Map() }, h.mcpServers.set(e.server, r)), r.activeAt = t;
281
287
  let c;
282
288
  if (e.resource && (c = r.resources.get(e.resource), c || (c = { name: e.resource, kind: e.resource_kind ?? ((o = h.mcpRegistry.get(e.server)) == null ? void 0 : o.get(e.resource)) ?? "api", activeAt: t, inflight: 0, calls: 0 }, r.resources.set(e.resource, c)), c.activeAt = t, e.phase === "call" ? (c.inflight++, c.calls++) : c.inflight = Math.max(0, c.inflight - 1)), e.phase === "call") {
283
289
  const d = h.instances.get(e.id);
284
290
  d && d.mcpCalls++, r.calls++, r.inflight++, h.stats.mcpCalls++;
285
291
  } else r.inflight = Math.max(0, r.inflight - 1);
286
- h.mcpCalls.push({ id: ++Vt, run: e.run_id, instance: e.id, server: e.server, tool: e.tool, resource: e.resource, phase: e.phase, start: t, dur: 900 });
292
+ h.mcpCalls.push({ id: ++Ct, run: e.run_id, instance: e.id, server: e.server, tool: e.tool, resource: e.resource, phase: e.phase, start: t, dur: 900 });
287
293
  const u = `${e.id}|${e.server}|${e.tool}`;
288
294
  if (e.phase === "call") h.mcpPending.set(u, { key: u, run: e.run_id, instance: e.id, server: e.server, tool: e.tool, resource: e.resource, since: t });
289
295
  else {
@@ -303,87 +309,90 @@ function os(e) {
303
309
  const r = h.instances.get(n);
304
310
  r && (r.recent = [e, ...r.recent].slice(0, 40));
305
311
  }
306
- Me();
312
+ ve();
307
313
  }
308
- const Et = /* @__PURE__ */ new Set();
309
- function Ys(e = performance.now()) {
314
+ const zt = /* @__PURE__ */ new Set(), Tt = /* @__PURE__ */ new Set(), ct = /* @__PURE__ */ new Map();
315
+ function lr(e = performance.now()) {
310
316
  let t = !1;
311
- Et.clear();
317
+ zt.clear(), Tt.clear(), ct.clear();
312
318
  for (const [r, c] of h.instances)
313
- Et.add(c.run), c.exitAt && e - c.exitAt > St.fadeMs(c) && (h.instances.delete(r), h.archive.set(r, c), h.archive.size > Ks && h.archive.delete(h.archive.keys().next().value), t = !0);
319
+ zt.add(c.run), c.exitAt || (c.doneAt ? c.doneAt > (ct.get(c.run) ?? 0) && ct.set(c.run, c.doneAt) : Tt.add(c.run)), c.exitAt && e - c.exitAt > Et.fadeMs(c) && (h.instances.delete(r), h.archive.set(r, c), h.archive.size > cr && h.archive.delete(h.archive.keys().next().value), t = !0);
320
+ for (const [r, c] of ct)
321
+ if (!Tt.has(r) && e - c > ar)
322
+ for (const u of h.instances.values()) u.run === r && !u.exitAt && (u.exitAt = e);
314
323
  for (const [r, c] of h.runs)
315
- c.endedAt && e - c.endedAt > Xs && !Et.has(r) && (h.runs.delete(r), t = !0);
324
+ c.endedAt && e - c.endedAt > or && !zt.has(r) && (h.runs.delete(r), t = !0);
316
325
  const n = h.comets.length;
317
326
  h.comets = h.comets.filter((r) => e - r.start < r.dur + 250), h.mcpResolved = h.mcpResolved.filter((r) => e - r.resolvedAt < 700);
318
327
  const s = h.mcpCalls.length;
319
328
  h.mcpCalls = h.mcpCalls.filter((r) => e - r.start < r.dur + 250);
320
329
  const o = h.flares.length;
321
- h.flares = h.flares.filter((r) => e - r.start < 2600), (t || n !== h.comets.length || o !== h.flares.length || s !== h.mcpCalls.length) && Me();
330
+ h.flares = h.flares.filter((r) => e - r.start < 2600), (t || n !== h.comets.length || o !== h.flares.length || s !== h.mcpCalls.length) && ve();
322
331
  }
323
- function pc(e, t = performance.now()) {
332
+ function Wc(e, t = performance.now()) {
324
333
  const n = Math.min(1, (t - e.bornAt) / 600), s = 1 - Math.pow(1 - n, 3);
325
- return e.exitAt ? s * Math.max(0, 1 - (t - e.exitAt) / St.fadeMs(e)) : s;
334
+ return e.exitAt ? s * Math.max(0, 1 - (t - e.exitAt) / Et.fadeMs(e)) : s;
326
335
  }
327
- function en(e, t = performance.now()) {
336
+ function on(e, t = performance.now()) {
328
337
  return e.pulse * Math.exp(-((t - e.pulseAt) / 1e3) * 2.2);
329
338
  }
330
- function _s(e, t = performance.now()) {
339
+ function ur(e, t = performance.now()) {
331
340
  return (t - e.since) / 1e3;
332
341
  }
333
- const $s = /* @__PURE__ */ new Set(["planner", "researcher", "graph_scout", "records_scout", "data_scout", "writer"]);
334
- function er(e, t) {
335
- if ($s.has(e)) return e;
342
+ const dr = /* @__PURE__ */ new Set(["planner", "researcher", "graph_scout", "records_scout", "data_scout", "writer"]);
343
+ function fr(e, t) {
344
+ if (dr.has(e)) return e;
336
345
  const n = e.toLowerCase();
337
346
  return /plan|orchestr|router|supervis|manager|coordinat/.test(n) ? "planner" : /writ|report|summar|answer|final|compose|draft/.test(n) ? "writer" : t ? /graph|kg|memory|retriev|search|web/.test(n) ? "graph_scout" : /record|doc|file/.test(n) ? "records_scout" : "data_scout" : "researcher";
338
347
  }
339
- function cs(e) {
348
+ function ms(e) {
340
349
  return e.subagent ? 0.6 : 1.35;
341
350
  }
342
- function tn(e) {
351
+ function cn(e) {
343
352
  if (e)
344
353
  return h.instances.get(e) ?? h.archive.get(e);
345
354
  }
346
- function Ze(e) {
347
- h.selected !== e && (h.selected = e, Me());
355
+ function Le(e) {
356
+ h.selected !== e && (h.selected = e, ve());
348
357
  }
349
- function Mn(e) {
350
- h.simulated = e, Me();
358
+ function kn(e) {
359
+ h.simulated = e, ve();
351
360
  }
352
- function tr(e) {
353
- h.graphLabel !== e && (h.graphLabel = e, Me());
361
+ function hr(e) {
362
+ h.graphLabel !== e && (h.graphLabel = e, ve());
354
363
  }
355
- function is(e) {
356
- h.unauthorized !== e && (h.unauthorized = e, Me());
364
+ function gs(e) {
365
+ h.unauthorized !== e && (h.unauthorized = e, ve());
357
366
  }
358
- function nr() {
367
+ function pr() {
359
368
  h.runs.clear(), h.instances.clear(), h.comets.length = 0, h.flares.length = 0, h.mcpServers.clear(), h.mcpRegistry.clear(), h.mcpCalls.length = 0, h.mcpPending.clear(), h.mcpResolved.length = 0, h.ticker.length = 0;
360
369
  for (const e of Object.keys(h.stats)) h.stats[e] = 0;
361
- h.lastFinal = "", h.simulated = !1, h.mode = "connecting", h.focus = null, h.focusAt = 0, h.spawnHintAt = 0, h.archive.clear(), h.selected = null, h.unauthorized = !1, h.hasGraph = !1, h.hasGraphAt = 0, Me();
370
+ h.lastFinal = "", h.simulated = !1, h.mode = "connecting", h.focus = null, h.focusAt = 0, h.spawnHintAt = 0, h.archive.clear(), h.selected = null, h.unauthorized = !1, h.hasGraph = !1, h.hasGraphAt = 0, ve();
362
371
  }
363
- function yn(e) {
364
- h.mode = e, h.simulated = e === "sim", e === "sim" && ls(!0, !1), Me();
372
+ function Sn(e) {
373
+ h.mode = e, h.simulated = e === "sim", e === "sim" && As(!0, !1), ve();
365
374
  }
366
- function ls(e, t = !0) {
367
- h.hasGraph || (h.hasGraph = !0, h.hasGraphAt = h.mode === "sim" ? -1e9 : performance.now(), t && Me());
375
+ function As(e, t = !0) {
376
+ h.hasGraph || (h.hasGraph = !0, h.hasGraphAt = h.mode === "sim" ? -1e9 : performance.now(), t && ve());
368
377
  }
369
- const sr = 9e4;
370
- function rr(e, t = performance.now()) {
371
- return e.calls > 0 && (e.inflight > 0 || t - e.activeAt < sr);
378
+ const mr = 9e4;
379
+ function gr(e, t = performance.now()) {
380
+ return e.calls > 0 && (e.inflight > 0 || t - e.activeAt < mr);
372
381
  }
373
- const ar = 1800;
374
- function or(e = performance.now()) {
382
+ const Ar = 1800;
383
+ function br(e = performance.now()) {
375
384
  if (!h.hasGraph) return 0;
376
- const t = Math.min(1, Math.max(0, (e - h.hasGraphAt) / ar));
385
+ const t = Math.min(1, Math.max(0, (e - h.hasGraphAt) / Ar));
377
386
  return t * t * (3 - 2 * t);
378
387
  }
379
- function cr() {
380
- return kt(
381
- (e) => ($e.add(e), () => $e.delete(e)),
388
+ function Mr() {
389
+ return Vt(
390
+ (e) => (et.add(e), () => et.delete(e)),
382
391
  () => h.hasGraph,
383
392
  () => !1
384
393
  );
385
394
  }
386
- const zt = { agent: 600, run: 400, mcp: 300, resource: 290, cluster: 250, backend: 150, graph: 140, extra: 120, sub: 100 }, We = es({ kind: "extra" }), U = {
395
+ const Pt = { agent: 600, run: 400, mcp: 300, resource: 290, cluster: 250, backend: 150, graph: 140, extra: 120, sub: 100 }, qe = is({ kind: "extra" }), U = {
387
396
  entries: [],
388
397
  /** a KitScene is mounted (outside one, nothing is ever hidden) */
389
398
  active: 0,
@@ -397,72 +406,72 @@ const zt = { agent: 600, run: 400, mcp: 300, resource: 290, cluster: 250, backen
397
406
  /** measured on-screen size of the largest cluster badge (css px; 0 = none seen yet): presets space clusters by it */
398
407
  badge: { w: 0, h: 0 }
399
408
  };
400
- function ir(e, t, n) {
409
+ function yr(e, t, n) {
401
410
  return { kind: e, agent: t, size: n, live: !1, clip: !1, x: 0, y: 0, w: 0, h: 0, x1: 0, y1: 0, w1: 0, h1: 0, ax: 0, ay: 0, az: 0, ox0: 0, ox1: 0, oy0: 0, oy1: 0, seen: -1e9, drawn: !1, show: U.active ? 0 : 1, subOff: !1, placed: !1, score: 0 };
402
411
  }
403
- function lr(e) {
412
+ function vr(e) {
404
413
  U.entries.push(e);
405
414
  }
406
- function ur(e) {
415
+ function wr(e) {
407
416
  const t = U.entries, n = t.indexOf(e);
408
417
  n < 0 || (t[n] = t[t.length - 1], t.pop());
409
418
  }
410
- const dr = 100, fr = { agent: !1, run: !1, mcp: !1, resource: !1, cluster: !1, backend: !0, graph: !0, extra: !0, sub: !0 }, ot = 3, ze = [];
411
- let de = new Float64Array(256 * 4);
412
- const hr = (e, t) => t.score - e.score;
413
- function pr(e, t) {
414
- let n = zt[e.kind];
419
+ const xr = 100, kr = { agent: !1, run: !1, mcp: !1, resource: !1, cluster: !1, backend: !0, graph: !0, extra: !0, sub: !0 }, it = 3, Ce = [];
420
+ let fe = new Float64Array(256 * 4);
421
+ const Sr = (e, t) => t.score - e.score;
422
+ function Or(e, t) {
423
+ let n = Pt[e.kind];
415
424
  const s = e.agent;
416
425
  if (s && (e.kind === "agent" || e.kind === "sub")) {
417
426
  const o = s.inst;
418
427
  if (h.selected === s.id) return 1e4;
419
- const r = Math.min(1, en(o, t)) * 60 + (o.status === "thinking" ? 30 : 0);
420
- n = s.depth > 0 ? zt.sub + r * 0.5 : zt.agent + r, o.exitAt && (n -= s.depth > 0 ? 60 : 350);
428
+ const r = Math.min(1, on(o, t)) * 60 + (o.status === "thinking" ? 30 : 0);
429
+ n = s.depth > 0 ? Pt.sub + r * 0.5 : Pt.agent + r, (o.exitAt || o.doneAt) && (n -= s.depth > 0 ? 60 : 350);
421
430
  }
422
431
  return n + e.size * 10 + (e.placed ? 8 : 0);
423
432
  }
424
- function vn(e, t, n, s, o) {
425
- const r = e - n / 2 - ot, c = e + n / 2 + ot, u = t - s / 2 - ot, d = t + s / 2 + ot;
433
+ function On(e, t, n, s, o) {
434
+ const r = e - n / 2 - it, c = e + n / 2 + it, u = t - s / 2 - it, d = t + s / 2 + it;
426
435
  for (let p = 0; p < o; p++) {
427
436
  const i = p * 4;
428
- if (r < de[i + 2] && c > de[i] && u < de[i + 3] && d > de[i + 1]) return !1;
437
+ if (r < fe[i + 2] && c > fe[i] && u < fe[i + 3] && d > fe[i + 1]) return !1;
429
438
  }
430
439
  return !0;
431
440
  }
432
- function xn(e, t, n, s, o) {
433
- if ((o + 1) * 4 > de.length) {
434
- const c = new Float64Array(de.length * 2);
435
- c.set(de), de = c;
441
+ function Vn(e, t, n, s, o) {
442
+ if ((o + 1) * 4 > fe.length) {
443
+ const c = new Float64Array(fe.length * 2);
444
+ c.set(fe), fe = c;
436
445
  }
437
446
  const r = o * 4;
438
- de[r] = e - n / 2, de[r + 1] = t - s / 2, de[r + 2] = e + n / 2, de[r + 3] = t + s / 2;
447
+ fe[r] = e - n / 2, fe[r + 1] = t - s / 2, fe[r + 2] = e + n / 2, fe[r + 3] = t + s / 2;
439
448
  }
440
- function mr(e) {
441
- ze.length = 0;
449
+ function Vr(e) {
450
+ Ce.length = 0;
442
451
  for (const d of U.entries)
443
- d.live ? (d.score = pr(d, e), ze.push(d)) : d.placed = !1;
444
- ze.sort(hr);
452
+ d.live ? (d.score = Or(d, e), Ce.push(d)) : d.placed = !1;
453
+ Ce.sort(Sr);
445
454
  let t = 0, n = 0, s = 0;
446
- for (const d of ze)
447
- d.clip && fr[d.kind] ? (d.show = 0, d.placed = !1, n++) : vn(d.x, d.y, d.w, d.h, t) ? (xn(d.x, d.y, d.w, d.h, t++), d.show = 1, d.subOff = !1, d.placed = !0) : d.w1 > 0 && vn(d.x1, d.y1, d.w1, d.h1, t) ? (xn(d.x1, d.y1, d.w1, d.h1, t++), d.show = 1, d.subOff = !0, d.placed = !0, s++) : (d.show = 0, d.placed = !1, n++);
455
+ for (const d of Ce)
456
+ d.clip && kr[d.kind] ? (d.show = 0, d.placed = !1, n++) : On(d.x, d.y, d.w, d.h, t) ? (Vn(d.x, d.y, d.w, d.h, t++), d.show = 1, d.subOff = !1, d.placed = !0) : d.w1 > 0 && On(d.x1, d.y1, d.w1, d.h1, t) ? (Vn(d.x1, d.y1, d.w1, d.h1, t++), d.show = 1, d.subOff = !0, d.placed = !0, s++) : (d.show = 0, d.placed = !1, n++);
448
457
  let o = 0, r = 0;
449
- for (const d of ze) d.kind === "cluster" && (o = Math.max(o, d.w), r = Math.max(r, d.h));
458
+ for (const d of Ce) d.kind === "cluster" && (o = Math.max(o, d.w), r = Math.max(r, d.h));
450
459
  const c = U.badge;
451
460
  o > 0 && ((!c.w || Math.abs(o - c.w) / c.w > 0.12) && (c.w = o), (!c.h || Math.abs(r - c.h) / c.h > 0.12) && (c.h = r));
452
461
  const u = U.stats;
453
- u.shown = t, u.hidden = n, u.dropped = s, u.off = U.entries.length - ze.length, ze.length = 0;
462
+ u.shown = t, u.hidden = n, u.dropped = s, u.off = U.entries.length - Ce.length, Ce.length = 0;
454
463
  }
455
- function gr(e, t, n) {
464
+ function Er(e, t, n) {
456
465
  if (U.pxk = Math.min(1, Math.max(0.78, Math.sqrt(Math.min(t / 1280, n / 760)))), U.due) {
457
- U.due = !1, mr(e);
466
+ U.due = !1, Vr(e);
458
467
  for (const s of U.entries) s.live = !1;
459
- } else e - U.last >= dr && (U.last = e, U.due = !0);
468
+ } else e - U.last >= xr && (U.last = e, U.due = !0);
460
469
  }
461
- const Ar = { agent: !1, sub: !1, run: !0, mcp: !0, resource: !0, backend: !0, cluster: !0, graph: !1, extra: !1 };
462
- function br(e, t) {
463
- for (const n of U.entries) Ar[n.kind] && e - n.seen < 600 && (n.show > 0 || !U.active) && t(n);
470
+ const Rr = { agent: !1, sub: !1, run: !0, mcp: !0, resource: !0, backend: !0, cluster: !0, graph: !1, extra: !1 };
471
+ function Cr(e, t) {
472
+ for (const n of U.entries) Rr[n.kind] && e - n.seen < 600 && (n.show > 0 || !U.active) && t(n);
464
473
  }
465
- function Mr() {
474
+ function zr() {
466
475
  const e = U.entries.filter((n) => n.drawn && performance.now() - n.seen < 300);
467
476
  let t = 0;
468
477
  for (let n = 0; n < e.length; n++)
@@ -474,15 +483,15 @@ function Mr() {
474
483
  }
475
484
  typeof window < "u" && (window.__agentglowLabels = {
476
485
  labels: U,
477
- snapshot: () => ({ ...U.stats, total: U.entries.length, overlaps: Mr() })
486
+ snapshot: () => ({ ...U.stats, total: U.entries.length, overlaps: zr() })
478
487
  });
479
- const us = { nRef: 4, min: 0.6, max: 1.6, minRadius: 5, maxRadius: 80, margin: 1.12 }, R = {
488
+ const bs = { nRef: 4, min: 0.6, max: 1.6, minRadius: 5, maxRadius: 80, margin: 1.12 }, C = {
480
489
  scale: 1,
481
490
  spread: 1,
482
491
  label: 1,
483
492
  /** weighted visible agent count used for the current target */
484
493
  n: 0,
485
- profile: { ...us },
494
+ profile: { ...bs },
486
495
  /** canvas css px + HUD insets (px) measured by FitCamera */
487
496
  w: 1600,
488
497
  h: 900,
@@ -502,29 +511,29 @@ const us = { nRef: 4, min: 0.6, max: 1.6, minRadius: 5, maxRadius: 80, margin: 1
502
511
  /** screen shrink of a stage "up" (b) step: 1 for xy stages, |sin(elevation)| for a tilted xz ground plane */
503
512
  foreshorten: 1
504
513
  };
505
- function yr(e) {
506
- R.profile = { ...us, ...e }, ie = -1;
507
- }
508
- let ie = -1, Rt = NaN;
509
- const Ae = { from: 1, t0: 0, dur: 0 }, nn = (e) => x.MathUtils.clamp(Math.sqrt(R.profile.nRef / Math.max(1, e)), R.profile.min, R.profile.max), ds = (e) => e * e * (3 - 2 * e), et = { nLive: 0, activityAt: -1e9 };
510
- function vr(e, t, n = t) {
511
- et.nLive = t, n !== Rt && (Number.isNaN(Rt) || (et.activityAt = e), Rt = n), ie < 0 && (R.n = t, ie = nn(t), R.scale = ie, Ae.dur = 0);
512
- const s = Ae.dur > 0 ? Math.min(1, (e - Ae.t0) / Ae.dur) : 1;
513
- R.scale = Ae.from + (ie - Ae.from) * ds(s), s >= 1 && (R.scale = ie), R.spread = Math.max(0.85, Math.pow(R.scale, 0.8)), R.label = x.MathUtils.clamp(Math.pow(R.scale, 0.5), 0.85, 1.25);
514
- }
515
- const xr = () => ie > 0 && Math.abs(nn(et.nLive) - ie) / ie > 0.06;
516
- function wn(e, t) {
517
- R.n = et.nLive;
518
- const n = nn(R.n);
519
- ie > 0 && Math.abs(n - ie) / ie <= 0.06 || (Ae.from = R.scale, Ae.t0 = e, Ae.dur = t, ie = n);
520
- }
521
- const fs = [".hud-top", ".hud-dock", ".hud-side"], Zt = "agentglow:hud-layout";
522
- function wr(e, t = 1.6) {
514
+ function Tr(e) {
515
+ C.profile = { ...bs, ...e }, le = -1;
516
+ }
517
+ let le = -1, Gt = NaN;
518
+ const be = { from: 1, t0: 0, dur: 0 }, ln = (e) => v.MathUtils.clamp(Math.sqrt(C.profile.nRef / Math.max(1, e)), C.profile.min, C.profile.max), Ms = (e) => e * e * (3 - 2 * e), tt = { nLive: 0, activityAt: -1e9 };
519
+ function Pr(e, t, n = t) {
520
+ tt.nLive = t, n !== Gt && (Number.isNaN(Gt) || (tt.activityAt = e), Gt = n), le < 0 && (C.n = t, le = ln(t), C.scale = le, be.dur = 0);
521
+ const s = be.dur > 0 ? Math.min(1, (e - be.t0) / be.dur) : 1;
522
+ C.scale = be.from + (le - be.from) * Ms(s), s >= 1 && (C.scale = le), C.spread = Math.max(0.85, Math.pow(C.scale, 0.8)), C.label = v.MathUtils.clamp(Math.pow(C.scale, 0.5), 0.85, 1.25);
523
+ }
524
+ const Gr = () => le > 0 && Math.abs(ln(tt.nLive) - le) / le > 0.06;
525
+ function En(e, t) {
526
+ C.n = tt.nLive;
527
+ const n = ln(C.n);
528
+ le > 0 && Math.abs(n - le) / le <= 0.06 || (be.from = C.scale, be.t0 = e, be.dur = t, le = n);
529
+ }
530
+ const ys = [".hud-top", ".hud-dock", ".hud-side"], Xt = "agentglow:hud-layout";
531
+ function Wr(e, t = 1.6) {
523
532
  var l;
524
533
  const n = e.closest(".scene-root") ?? ((l = e.parentElement) == null ? void 0 : l.parentElement), s = e.getBoundingClientRect(), o = { top: 0, right: 0, bottom: 0, left: 0 };
525
534
  if (!n || s.width < 1) return o;
526
535
  const r = [];
527
- for (const k of fs) {
536
+ for (const k of ys) {
528
537
  const b = n.querySelector(k);
529
538
  if (!b || b.offsetParent === null) continue;
530
539
  const m = b.getBoundingClientRect();
@@ -541,8 +550,8 @@ function wr(e, t = 1.6) {
541
550
  for (let k = 0; k < 1 << 2 * p; k++) {
542
551
  let b = 0, m = 0, M = 0, A = 0;
543
552
  for (let O = 0; O < p; O++) {
544
- const V = r[O], T = k >> 2 * O & 3;
545
- T === 0 ? b = Math.max(b, V.right) : T === 1 ? M = Math.max(M, c - V.left) : T === 2 ? m = Math.max(m, V.bottom) : A = Math.max(A, u - V.top);
553
+ const V = r[O], z = k >> 2 * O & 3;
554
+ z === 0 ? b = Math.max(b, V.right) : z === 1 ? M = Math.max(M, c - V.left) : z === 2 ? m = Math.max(m, V.bottom) : A = Math.max(A, u - V.top);
546
555
  }
547
556
  const S = d(c - b - M, u - m - A);
548
557
  S > i && (i = S, o.left = b, o.right = M, o.top = m, o.bottom = A);
@@ -558,11 +567,11 @@ function wr(e, t = 1.6) {
558
567
  }
559
568
  return o;
560
569
  }
561
- const kn = new x.Vector3();
562
- new x.Vector3();
563
- const ct = new x.Vector3(), Sn = new x.Matrix4(), ge = 0.85, Ge = 8, kr = 1100, On = 2500, Sr = 1.04, Or = 1e3, Vr = 1.18, Vn = 7e3, Er = 2e3, zr = 1e4, Rr = 450, En = 300, zn = 0.985;
564
- function Tr({ points: e, origin: t }) {
565
- const n = at((i) => i.camera), s = at((i) => i.controls), o = at((i) => i.gl), r = at((i) => i.size), c = L({
570
+ const Rn = new v.Vector3();
571
+ new v.Vector3();
572
+ const lt = new v.Vector3(), Cn = new v.Matrix4(), Ae = 0.85, We = 8, qr = 1100, zn = 2500, Nr = 1.04, Ir = 1e3, Dr = 1.18, Tn = 7e3, Fr = 2e3, Br = 1e4, Ur = 450, Pn = 300, Gn = 0.985;
573
+ function Zr({ points: e, origin: t }) {
574
+ const n = ot((i) => i.camera), s = ot((i) => i.controls), o = ot((i) => i.gl), r = ot((i) => i.size), c = B({
566
575
  base: 0,
567
576
  user: 1,
568
577
  userActive: !1,
@@ -570,7 +579,7 @@ function Tr({ points: e, origin: t }) {
570
579
  want: 0,
571
580
  lastMeasure: -1e9,
572
581
  hudMoved: !1,
573
- dir: new x.Vector3(),
582
+ dir: new v.Vector3(),
574
583
  aspect: 1.6,
575
584
  refit: !0,
576
585
  // committed move: fitted distance (before the user factor) + projection shift tween from -> to
@@ -594,16 +603,16 @@ function Tr({ points: e, origin: t }) {
594
603
  // the instantaneous fit has been steady (<0.5%/frame) since: layout / grouping / labels still easing otherwise
595
604
  lastDesired: 0,
596
605
  steadySince: 0
597
- }), u = L({ a: new Float64Array(512 * Ge), n: 0, tgt: new x.Vector3(), tpp: 0 }), { visit: d, visitLabel: p } = ne(() => {
606
+ }), u = B({ a: new Float64Array(512 * We), n: 0, tgt: new v.Vector3(), tpp: 0 }), { visit: d, visitLabel: p } = se(() => {
598
607
  const i = u.current, w = (a, l, k, b, m, M, A, S) => {
599
608
  if (!Number.isFinite(a) || !Number.isFinite(l) || !Number.isFinite(k)) return;
600
- if ((i.n + 1) * Ge > i.a.length) {
609
+ if ((i.n + 1) * We > i.a.length) {
601
610
  const V = new Float64Array(i.a.length * 2);
602
611
  V.set(i.a), i.a = V;
603
612
  }
604
- ct.set(a - i.tgt.x, l - i.tgt.y, k - i.tgt.z).applyMatrix4(Sn);
605
- const O = i.n * Ge;
606
- i.a[O] = ct.x, i.a[O + 1] = ct.y, i.a[O + 2] = ct.z, i.a[O + 3] = b, i.a[O + 4] = m, i.a[O + 5] = M, i.a[O + 6] = A, i.a[O + 7] = S, i.n++;
613
+ lt.set(a - i.tgt.x, l - i.tgt.y, k - i.tgt.z).applyMatrix4(Cn);
614
+ const O = i.n * We;
615
+ i.a[O] = lt.x, i.a[O + 1] = lt.y, i.a[O + 2] = lt.z, i.a[O + 3] = b, i.a[O + 4] = m, i.a[O + 5] = M, i.a[O + 6] = A, i.a[O + 7] = S, i.n++;
607
616
  };
608
617
  return {
609
618
  visit: (a, l) => w(a.x + t.x, a.y + t.y, a.z + t.z, l, 0, 0, 0, 0),
@@ -611,130 +620,130 @@ function Tr({ points: e, origin: t }) {
611
620
  visitLabel: (a) => w(a.ax, a.ay, a.az, 0, a.ox0 * i.tpp, a.ox1 * i.tpp, -a.oy1 * i.tpp, -a.oy0 * i.tpp)
612
621
  };
613
622
  }, [t]);
614
- return Q(() => {
615
- R.w = r.width, R.h = r.height, c.current.lastMeasure = -1e9, c.current.refit = !0;
616
- }, [r.width, r.height]), Q(() => () => n.clearViewOffset(), [n]), Q(() => {
623
+ return Y(() => {
624
+ C.w = r.width, C.h = r.height, c.current.lastMeasure = -1e9, c.current.refit = !0;
625
+ }, [r.width, r.height]), Y(() => () => n.clearViewOffset(), [n]), Y(() => {
617
626
  const i = o.domElement.closest(".scene-root");
618
627
  if (!i) return;
619
628
  const w = () => {
620
629
  c.current.lastMeasure = -1e9, c.current.hudMoved = !0;
621
630
  };
622
- return i.addEventListener(Zt, w), () => i.removeEventListener(Zt, w);
623
- }, [o]), Q(() => {
631
+ return i.addEventListener(Xt, w), () => i.removeEventListener(Xt, w);
632
+ }, [o]), Y(() => {
624
633
  if (!s) return;
625
634
  const i = c.current, w = () => i.userActive = !0, a = () => {
626
- i.userActive = !1, i.userUntil = performance.now() + zr, i.want = i.from = i.cur, i.dur = 0;
627
- const l = s.target ?? kn.set(0, 0, 0), k = n.position.distanceTo(l);
628
- i.cur > 0 && (i.user = x.MathUtils.clamp(k / i.cur, 0.35, 3));
635
+ i.userActive = !1, i.userUntil = performance.now() + Br, i.want = i.from = i.cur, i.dur = 0;
636
+ const l = s.target ?? Rn.set(0, 0, 0), k = n.position.distanceTo(l);
637
+ i.cur > 0 && (i.user = v.MathUtils.clamp(k / i.cur, 0.35, 3));
629
638
  };
630
639
  return s.addEventListener("start", w), s.addEventListener("end", a), () => {
631
640
  s.removeEventListener("start", w), s.removeEventListener("end", a);
632
641
  };
633
- }, [s, n]), Oe((i, w) => {
634
- var Ve;
642
+ }, [s, n]), ye((i, w) => {
643
+ var Ee;
635
644
  const a = c.current, l = u.current;
636
- hs = l, Lt = { camera: n, points: e, origin: t, canvas: o.domElement };
645
+ vs = l, Kt = { camera: n, points: e, origin: t, canvas: o.domElement };
637
646
  const k = Math.min(0.1, w), b = performance.now(), m = Math.max(1, r.width), M = Math.max(1, r.height);
638
647
  if (b - a.lastMeasure > 700) {
639
648
  a.lastMeasure = b;
640
- const N = R.insets;
641
- R.insets = wr(o.domElement, a.aspect), a.hudMoved && (Math.max(Math.abs(N.top - R.insets.top), Math.abs(N.right - R.insets.right), Math.abs(N.bottom - R.insets.bottom), Math.abs(N.left - R.insets.left)) > 12 && (a.refit = !0), a.hudMoved = !1);
649
+ const N = C.insets;
650
+ C.insets = Wr(o.domElement, a.aspect), a.hudMoved && (Math.max(Math.abs(N.top - C.insets.top), Math.abs(N.right - C.insets.right), Math.abs(N.bottom - C.insets.bottom), Math.abs(N.left - C.insets.left)) > 12 && (a.refit = !0), a.hudMoved = !1);
642
651
  }
643
- const A = R.insets, S = Math.max(m * 0.3, m - A.left - A.right), O = Math.max(M * 0.3, M - A.top - A.bottom);
644
- R.aspect = S / O;
645
- const V = (s == null ? void 0 : s.target) ?? kn.set(0, 0, 0);
652
+ const A = C.insets, S = Math.max(m * 0.3, m - A.left - A.right), O = Math.max(M * 0.3, M - A.top - A.bottom);
653
+ C.aspect = S / O;
654
+ const V = (s == null ? void 0 : s.target) ?? Rn.set(0, 0, 0);
646
655
  a.base || (a.base = n.position.distanceTo(V) || 20), a.dir.subVectors(n.position, V);
647
- const T = a.dir.length() || 1;
648
- a.dir.divideScalar(T), Sn.extractRotation(n.matrixWorld).invert(), R.foreshorten = x.MathUtils.clamp(g.plane === "xz" ? Math.abs(a.dir.y) : Math.sqrt(1 - a.dir.y * a.dir.y), 0.35, 1);
649
- const P = Math.tan(x.MathUtils.degToRad(n.fov) / 2), F = S / m * P * n.aspect, Z = O / M * P;
650
- l.n = 0, l.tgt.copy(V), l.tpp = 2 * P / M, e(d), br(b, p);
651
- const E = l.n, v = R.profile, q = v.minRadius / Math.min(F, Z), D = v.maxRadius / Math.min(F, Z);
652
- let G;
653
- if (!E) G = a.want || a.base;
656
+ const z = a.dir.length() || 1;
657
+ a.dir.divideScalar(z), Cn.extractRotation(n.matrixWorld).invert(), C.foreshorten = v.MathUtils.clamp(g.plane === "xz" ? Math.abs(a.dir.y) : Math.sqrt(1 - a.dir.y * a.dir.y), 0.35, 1);
658
+ const P = Math.tan(v.MathUtils.degToRad(n.fov) / 2), I = S / m * P * n.aspect, Z = O / M * P;
659
+ l.n = 0, l.tgt.copy(V), l.tpp = 2 * P / M, e(d), Cr(b, p);
660
+ const E = l.n, y = C.profile, q = y.minRadius / Math.min(I, Z), F = y.maxRadius / Math.min(I, Z);
661
+ let W;
662
+ if (!E) W = a.want || a.base;
654
663
  else {
655
- const N = v.margin;
656
- if (Rn(l.a, E, D, N, F, Z)) {
657
- let Y = Math.max(0.5, Math.min(q, D) * 0.25), ue = D;
658
- for (let Je = 0; Je < 22; Je++) {
659
- const Ie = (Y + ue) / 2;
660
- Rn(l.a, E, Ie, N, F, Z) ? ue = Ie : Y = Ie;
664
+ const N = y.margin;
665
+ if (Wn(l.a, E, F, N, I, Z)) {
666
+ let _ = Math.max(0.5, Math.min(q, F) * 0.25), de = F;
667
+ for (let He = 0; He < 22; He++) {
668
+ const Ie = (_ + de) / 2;
669
+ Wn(l.a, E, Ie, N, I, Z) ? de = Ie : _ = Ie;
661
670
  }
662
- G = x.MathUtils.clamp(ue, q, D);
663
- } else G = D;
671
+ W = v.MathUtils.clamp(de, q, F);
672
+ } else W = F;
664
673
  }
665
- let J = !1;
674
+ let H = !1;
666
675
  if (E) {
667
- mt(l.a, E, T);
668
- const N = F * zn, Y = Z * zn;
669
- J = B[0] < a.sx - N || B[1] > a.sx + N || B[2] < a.sy - Y || B[3] > a.sy + Y, a.aspect += (x.MathUtils.clamp((B[1] - B[0]) / Math.max(1e-4, B[3] - B[2]), 0.5, 4) - a.aspect) * 0.1, R.fill[0] = (B[1] - B[0]) / (2 * F), R.fill[1] = (B[3] - B[2]) / (2 * Z);
676
+ At(l.a, E, z);
677
+ const N = I * Gn, _ = Z * Gn;
678
+ H = D[0] < a.sx - N || D[1] > a.sx + N || D[2] < a.sy - _ || D[3] > a.sy + _, a.aspect += (v.MathUtils.clamp((D[1] - D[0]) / Math.max(1e-4, D[3] - D[2]), 0.5, 4) - a.aspect) * 0.1, C.fill[0] = (D[1] - D[0]) / (2 * I), C.fill[1] = (D[3] - D[2]) / (2 * Z);
670
679
  }
671
- (!a.lastDesired || Math.abs(G - a.lastDesired) / a.lastDesired > 5e-3) && (a.steadySince = b), a.lastDesired = G;
672
- const H = b - a.steadySince, j = a.userActive || b < a.userUntil;
673
- let I = -1, y = 0, W = !1;
680
+ (!a.lastDesired || Math.abs(W - a.lastDesired) / a.lastDesired > 5e-3) && (a.steadySince = b), a.lastDesired = W;
681
+ const j = b - a.steadySince, K = a.userActive || b < a.userUntil;
682
+ let L = -1, x = 0, G = !1;
674
683
  if (!a.want || a.refit)
675
- I = G, y = a.want ? Rr : 0, a.refit = !1;
684
+ L = W, x = a.want ? Ur : 0, a.refit = !1;
676
685
  else if (a.phase2) {
677
- if (b >= a.phase2 && (H >= En || b - a.phase2 >= On)) {
686
+ if (b >= a.phase2 && (j >= Pn || b - a.phase2 >= zn)) {
678
687
  a.phase2 = 0;
679
- const N = G / a.want;
680
- (N > 1.02 || N < 1 / 1.02) && (I = G, y = a.phase2Ms);
688
+ const N = W / a.want;
689
+ (N > 1.02 || N < 1 / 1.02) && (L = W, x = a.phase2Ms);
681
690
  }
682
- } else if (!j) {
683
- const N = G / a.want, Y = b - Math.max(et.activityAt, h.spawnHintAt), ue = J && a.user >= 0.99 && (a.dur <= 0 || b - a.t0 >= a.dur);
684
- N > Sr || ue ? (a.inSince = 0, a.outSince ? a.outMax = Math.max(a.outMax, G) : (a.outSince = b, a.outMax = G), (Y >= kr && H >= En || b - a.outSince >= On) && (I = Math.max(a.outMax, G, ue ? a.want : 0), y = Or, W = !0)) : (a.outSince = 0, N < 1 / Vr ? (a.inSince || (a.inSince = b), b - a.inSince >= Vn && Y >= Vn && (I = G, y = Er, W = !0)) : a.inSince = 0);
691
+ } else if (!K) {
692
+ const N = W / a.want, _ = b - Math.max(tt.activityAt, h.spawnHintAt), de = H && a.user >= 0.99 && (a.dur <= 0 || b - a.t0 >= a.dur);
693
+ N > Nr || de ? (a.inSince = 0, a.outSince ? a.outMax = Math.max(a.outMax, W) : (a.outSince = b, a.outMax = W), (_ >= qr && j >= Pn || b - a.outSince >= zn) && (L = Math.max(a.outMax, W, de ? a.want : 0), x = Ir, G = !0)) : (a.outSince = 0, N < 1 / Dr ? (a.inSince || (a.inSince = b), b - a.inSince >= Tn && _ >= Tn && (L = W, x = Fr, G = !0)) : a.inSince = 0);
685
694
  }
686
- if (I >= 0)
687
- if (a.outSince = a.inSince = 0, W && xr() && !An)
688
- wn(b, y * 0.8), a.phase2 = b + y * 0.8 + 250, a.phase2Ms = y;
695
+ if (L >= 0)
696
+ if (a.outSince = a.inSince = 0, G && Gr() && !jt)
697
+ En(b, x * 0.8), a.phase2 = b + x * 0.8 + 250, a.phase2Ms = x;
689
698
  else {
690
- const N = An ? 0 : y;
691
- a.from = a.cur || I, a.want = I, a.t0 = b, a.dur = N, a.fx = a.sx, a.fy = a.sy, E && (mt(l.a, E, I * a.user), a.tx = x.MathUtils.clamp((B[0] + B[1]) / 2, -F * ge, F * ge), a.ty = x.MathUtils.clamp((B[2] + B[3]) / 2, -Z * ge, Z * ge)), wn(b, N);
699
+ const N = jt ? 0 : x;
700
+ a.from = a.cur || L, a.want = L, a.t0 = b, a.dur = N, a.fx = a.sx, a.fy = a.sy, E && (At(l.a, E, L * a.user), a.tx = v.MathUtils.clamp((D[0] + D[1]) / 2, -I * Ae, I * Ae), a.ty = v.MathUtils.clamp((D[2] + D[3]) / 2, -Z * Ae, Z * Ae)), En(b, N);
692
701
  }
693
- const X = 2 * P * a.want * a.user / M;
694
- Math.abs(X - R.wpp) / R.wpp > 0.1 && (R.wpp = X);
695
- const $ = a.dur > 0 ? Math.min(1, (b - a.t0) / a.dur) : 1, le = ds($);
696
- if (a.cur = a.from + (a.want - a.from) * le, j && E) {
697
- mt(l.a, E, T);
702
+ const J = 2 * P * a.want * a.user / M;
703
+ Math.abs(J - C.wpp) / C.wpp > 0.1 && (C.wpp = J);
704
+ const X = a.dur > 0 ? Math.min(1, (b - a.t0) / a.dur) : 1, ue = Ms(X);
705
+ if (a.cur = a.from + (a.want - a.from) * ue, K && E) {
706
+ At(l.a, E, z);
698
707
  const N = 1 - Math.exp(-k / 0.3);
699
- a.tx = x.MathUtils.clamp((B[0] + B[1]) / 2, -F * ge, F * ge), a.ty = x.MathUtils.clamp((B[2] + B[3]) / 2, -Z * ge, Z * ge), a.sx += (a.tx - a.sx) * N, a.sy += (a.ty - a.sy) * N, a.fx = a.sx, a.fy = a.sy;
708
+ a.tx = v.MathUtils.clamp((D[0] + D[1]) / 2, -I * Ae, I * Ae), a.ty = v.MathUtils.clamp((D[2] + D[3]) / 2, -Z * Ae, Z * Ae), a.sx += (a.tx - a.sx) * N, a.sy += (a.ty - a.sy) * N, a.fx = a.sx, a.fy = a.sy;
700
709
  } else
701
- a.sx = a.fx + (a.tx - a.fx) * le, a.sy = a.fy + (a.ty - a.fy) * le;
702
- R.cam.want = a.want, R.cam.fit = G, R.cam.dist = T, R.cam.user = a.user, R.cam.points = E;
703
- const me = A.left + S / 2, ee = A.top + O / 2, he = m / 2 - me + a.sx / (P * n.aspect) * (m / 2), ye = M / 2 - ee - a.sy / P * (M / 2), te = n.view;
704
- if ((!te || !te.enabled || te.fullWidth !== m || te.fullHeight !== M || Math.abs(te.offsetX - he) > 0.25 || Math.abs(te.offsetY - ye) > 0.25) && n.setViewOffset(m, M, he, ye, m, M), a.userActive) return;
705
- let se = a.cur * a.user;
706
- (s == null ? void 0 : s.minDistance) !== void 0 && (se = Math.max(se, s.minDistance)), (s == null ? void 0 : s.maxDistance) !== void 0 && Number.isFinite(s.maxDistance) && (se = Math.min(se, s.maxDistance)), !(Math.abs(se - T) < 1e-4) && (n.position.copy(V).addScaledVector(a.dir, se), (Ve = s == null ? void 0 : s.update) == null || Ve.call(s));
710
+ a.sx = a.fx + (a.tx - a.fx) * ue, a.sy = a.fy + (a.ty - a.fy) * ue;
711
+ C.cam.want = a.want, C.cam.fit = W, C.cam.dist = z, C.cam.user = a.user, C.cam.points = E;
712
+ const ge = A.left + S / 2, ee = A.top + O / 2, pe = m / 2 - ge + a.sx / (P * n.aspect) * (m / 2), we = M / 2 - ee - a.sy / P * (M / 2), te = n.view;
713
+ if ((!te || !te.enabled || te.fullWidth !== m || te.fullHeight !== M || Math.abs(te.offsetX - pe) > 0.25 || Math.abs(te.offsetY - we) > 0.25) && n.setViewOffset(m, M, pe, we, m, M), a.userActive) return;
714
+ let re = a.cur * a.user;
715
+ (s == null ? void 0 : s.minDistance) !== void 0 && (re = Math.max(re, s.minDistance)), (s == null ? void 0 : s.maxDistance) !== void 0 && Number.isFinite(s.maxDistance) && (re = Math.min(re, s.maxDistance)), !(Math.abs(re - z) < 1e-4) && (n.position.copy(V).addScaledVector(a.dir, re), (Ee = s == null ? void 0 : s.update) == null || Ee.call(s));
707
716
  }), null;
708
717
  }
709
- const B = new Float64Array(4);
710
- function mt(e, t, n) {
718
+ const D = new Float64Array(4);
719
+ function At(e, t, n) {
711
720
  let s = 1 / 0, o = -1 / 0, r = 1 / 0, c = -1 / 0;
712
721
  for (let u = 0; u < t; u++) {
713
- const d = u * Ge, p = e[d + 3], i = Math.max(0.05, n - e[d + 2] - p), w = e[d], a = e[d + 1];
722
+ const d = u * We, p = e[d + 3], i = Math.max(0.05, n - e[d + 2] - p), w = e[d], a = e[d + 1];
714
723
  s = Math.min(s, (w - p) / i + e[d + 4]), o = Math.max(o, (w + p) / i + e[d + 5]), r = Math.min(r, (a - p) / i + e[d + 6]), c = Math.max(c, (a + p) / i + e[d + 7]);
715
724
  }
716
- B[0] = s, B[1] = o, B[2] = r, B[3] = c;
717
- }
718
- function Rn(e, t, n, s, o, r) {
719
- for (let i = 0; i < t; i++) if (n - e[i * Ge + 2] - e[i * Ge + 3] <= 0.05) return !1;
720
- mt(e, t, n);
721
- const c = (B[0] + B[1]) / 2, u = (B[2] + B[3]) / 2, d = Math.max(0, Math.abs(c) - o * ge), p = Math.max(0, Math.abs(u) - r * ge);
722
- return ((B[1] - B[0]) / 2 + d) * s <= o && ((B[3] - B[2]) / 2 + p) * s <= r;
723
- }
724
- let hs = null, Lt = null;
725
- function Cr() {
726
- if (!Lt) return null;
727
- const { camera: e, points: t, origin: n, canvas: s } = Lt, o = s.getBoundingClientRect(), r = o.width, c = o.height, u = s.closest(".scene-root") ?? document, d = [];
728
- for (const b of fs) {
725
+ D[0] = s, D[1] = o, D[2] = r, D[3] = c;
726
+ }
727
+ function Wn(e, t, n, s, o, r) {
728
+ for (let i = 0; i < t; i++) if (n - e[i * We + 2] - e[i * We + 3] <= 0.05) return !1;
729
+ At(e, t, n);
730
+ const c = (D[0] + D[1]) / 2, u = (D[2] + D[3]) / 2, d = Math.max(0, Math.abs(c) - o * Ae), p = Math.max(0, Math.abs(u) - r * Ae);
731
+ return ((D[1] - D[0]) / 2 + d) * s <= o && ((D[3] - D[2]) / 2 + p) * s <= r;
732
+ }
733
+ let vs = null, Kt = null;
734
+ function Lr() {
735
+ if (!Kt) return null;
736
+ const { camera: e, points: t, origin: n, canvas: s } = Kt, o = s.getBoundingClientRect(), r = o.width, c = o.height, u = s.closest(".scene-root") ?? document, d = [];
737
+ for (const b of ys) {
729
738
  const m = u.querySelector(b);
730
739
  if (!m || m.offsetParent === null) continue;
731
740
  const M = m.getBoundingClientRect();
732
741
  M.width < 2 || M.height < 2 || d.push({ sel: b, l: M.left - o.left, t: M.top - o.top, r: M.right - o.left, b: M.bottom - o.top });
733
742
  }
734
- const p = Math.tan(x.MathUtils.degToRad(e.fov) / 2), i = [], w = (b, m, M, A, S, O) => {
735
- const V = d.filter((T) => M < T.r && S > T.l && A < T.b && O > T.t).map((T) => T.sel);
743
+ const p = Math.tan(v.MathUtils.degToRad(e.fov) / 2), i = [], w = (b, m, M, A, S, O) => {
744
+ const V = d.filter((z) => M < z.r && S > z.l && A < z.b && O > z.t).map((z) => z.sel);
736
745
  (M < 0 || A < 0 || S > r || O > c) && V.push("edge"), i.push({ kind: b, name: m, l: Math.round(M), t: Math.round(A), r: Math.round(S), b: Math.round(O), hits: V });
737
- }, a = new x.Vector3();
746
+ }, a = new v.Vector3();
738
747
  t((b, m) => {
739
748
  a.set(b.x + n.x, b.y + n.y, b.z + n.z);
740
749
  const M = a.clone().applyMatrix4(e.matrixWorldInverse).z * -1;
@@ -749,69 +758,69 @@ function Cr() {
749
758
  w(`label:${b.kind}`, "", A - m / 2, S - M / 2, A + m / 2, S + M / 2);
750
759
  }
751
760
  const k = i.filter((b) => b.hits.length);
752
- return { W: r, H: c, huds: d, insets: R.insets, total: i.length, clipped: k.length, items: k };
761
+ return { W: r, H: c, huds: d, insets: C.insets, total: i.length, clipped: k.length, items: k };
753
762
  }
754
- function Pr() {
755
- const e = hs;
763
+ function Jr() {
764
+ const e = vs;
756
765
  if (!e) return [];
757
766
  const t = [];
758
767
  for (let n = 0; n < e.n; n++) {
759
- const s = n * Ge, o = R.cam.dist - e.a[s + 2];
768
+ const s = n * We, o = C.cam.dist - e.a[s + 2];
760
769
  t.push([+(e.a[s] / o).toFixed(3), +(e.a[s + 1] / o).toFixed(3), +e.a[s + 3].toFixed(2), +e.a[s + 4].toFixed(3), +e.a[s + 5].toFixed(3)]);
761
770
  }
762
771
  return t;
763
772
  }
764
- typeof window < "u" && (window.__agentglowFit = Object.assign(R, { framedPoints: Pr, clipReport: Cr }));
765
- const pe = Math.PI, ps = pe * 2, qe = 2.2, ms = (e) => ({
773
+ typeof window < "u" && (window.__agentglowFit = Object.assign(C, { framedPoints: Jr, clipReport: Lr }));
774
+ const me = Math.PI, ws = me * 2, Ne = 2.2, xs = (e) => ({
766
775
  sx: e > 1 ? Math.min(1.7, Math.pow(e, 0.6)) : 1,
767
776
  sy: e < 1 ? Math.min(1.7, Math.pow(1 / e, 0.6)) : 1
768
777
  });
769
- function sn(e, t, n, s, o) {
778
+ function un(e, t, n, s, o) {
770
779
  const r = t.n;
771
780
  if (r <= 1) {
772
- n.a = 0, n.b = 0, n.angle = -pe / 2;
781
+ n.a = 0, n.b = 0, n.angle = -me / 2;
773
782
  return;
774
783
  }
775
- const u = (r === 2 ? 0 : r === 4 ? pe / 4 : pe / 2) - e * ps / r, p = (Math.max(t.hu, t.hv) + o / 2) / Math.sin(pe / r), { sx: i, sy: w } = s ? ms(t.aspect) : { sx: 1, sy: 1 };
784
+ const u = (r === 2 ? 0 : r === 4 ? me / 4 : me / 2) - e * ws / r, p = (Math.max(t.hu, t.hv) + o / 2) / Math.sin(me / r), { sx: i, sy: w } = s ? xs(t.aspect) : { sx: 1, sy: 1 };
776
785
  n.a = Math.cos(u) * p * i, n.b = Math.sin(u) * p * w, n.angle = Math.atan2(n.b, n.a);
777
786
  }
778
- const Gr = 186, Wr = 46, qr = 34, Tt = { w: 7, h: 6.5 };
779
- function gs(e = 0) {
780
- const t = U.pxk, n = Math.max(120, R.w - R.insets.left - R.insets.right), s = Math.max(100, R.h - R.insets.top - R.insets.bottom);
781
- let o = (U.badge.w || Gr * t) * 1.12;
782
- o = e > 1 ? Math.min(o, 0.85 * Math.min(n, s * 1.3) / (1 / Math.sin(pe / e) + 1)) : Math.min(o, 0.85 * n / 2);
783
- const r = Math.min((U.badge.h || Wr * t) * 1.15, 0.22 * s);
784
- return Tt.w = Math.max(7, o * R.wpp), Tt.h = Math.max(6.5, 5 + r * R.wpp), Tt;
787
+ const Hr = 186, jr = 46, Xr = 34, Wt = { w: 7, h: 6.5 };
788
+ function ks(e = 0) {
789
+ const t = U.pxk, n = Math.max(120, C.w - C.insets.left - C.insets.right), s = Math.max(100, C.h - C.insets.top - C.insets.bottom);
790
+ let o = (U.badge.w || Hr * t) * 1.12;
791
+ o = e > 1 ? Math.min(o, 0.85 * Math.min(n, s * 1.3) / (1 / Math.sin(me / e) + 1)) : Math.min(o, 0.85 * n / 2);
792
+ const r = Math.min((U.badge.h || jr * t) * 1.15, 0.22 * s);
793
+ return Wt.w = Math.max(7, o * C.wpp), Wt.h = Math.max(6.5, 5 + r * C.wpp), Wt;
785
794
  }
786
- function As(e, t, n, s, o) {
787
- const r = gs(), c = Math.min(t, Math.max(2, Math.floor(Math.max(2 * n.hw + r.w * 0.6, r.w * 2) / r.w))), u = Math.floor(e / c), d = Math.min(c, t - u * c), p = Math.min(1.7, 1 / Math.max(0.35, R.foreshorten));
795
+ function Ss(e, t, n, s, o) {
796
+ const r = ks(), c = Math.min(t, Math.max(2, Math.floor(Math.max(2 * n.hw + r.w * 0.6, r.w * 2) / r.w))), u = Math.floor(e / c), d = Math.min(c, t - u * c), p = Math.min(1.7, 1 / Math.max(0.35, C.foreshorten));
788
797
  o.a = (e % c - (d - 1) / 2) * r.w, o.b = s - u * r.h * p;
789
798
  }
790
- function rn(e, t, n, s, o) {
791
- const r = gs(t), c = pe / 2 + pe / Math.max(1, t) - e * ps / Math.max(1, t), u = Math.max(n.hw, n.hh) + qr * R.wpp * U.pxk, d = Math.max(u + 3.6, t > 1 ? r.w / (2 * Math.sin(pe / t)) : 0), { sx: p, sy: i } = o ? ms(n.aspect) : { sx: 1, sy: 1 };
799
+ function dn(e, t, n, s, o) {
800
+ const r = ks(t), c = me / 2 + me / Math.max(1, t) - e * ws / Math.max(1, t), u = Math.max(n.hw, n.hh) + Xr * C.wpp * U.pxk, d = Math.max(u + 3.6, t > 1 ? r.w / (2 * Math.sin(me / t)) : 0), { sx: p, sy: i } = o ? xs(n.aspect) : { sx: 1, sy: 1 };
792
801
  s.a = Math.cos(c) * d * p, s.b = Math.sin(c) * d * i;
793
802
  }
794
- const bs = {
803
+ const Os = {
795
804
  name: "radial",
796
805
  local: { topGap: 3.6, fanLen: 3.4, subGap: 2.7, fan: "spread", stackGap: 2, pad: 1.3 },
797
- run: (e, t, n) => sn(e, t, n, !0, qe),
798
- cluster: (e, t, n, s, o) => rn(t, n, s, o, !0),
806
+ run: (e, t, n) => un(e, t, n, !0, Ne),
807
+ cluster: (e, t, n, s, o) => dn(t, n, s, o, !0),
799
808
  periphery: "sides"
800
- }, Ir = {
809
+ }, Kr = {
801
810
  name: "radar",
802
811
  local: { topGap: 3.2, fanLen: 3, subGap: 2.5, fan: "spread", stackGap: 2, pad: 1.2 },
803
- run: (e, t, n) => sn(e, t, n, !1, qe),
804
- cluster: (e, t, n, s, o) => rn(t, n, s, o, !1),
812
+ run: (e, t, n) => un(e, t, n, !1, Ne),
813
+ cluster: (e, t, n, s, o) => dn(t, n, s, o, !1),
805
814
  periphery: "rim",
806
815
  round: !0
807
- }, Nr = {
816
+ }, Qr = {
808
817
  name: "drift",
809
818
  local: { topGap: 4, fanLen: 3.8, subGap: 3, fan: "spread", stackGap: 2.2, pad: 1.5 },
810
- run: (e, t, n) => sn(e, t, n, !0, qe * 1.6),
811
- cluster: (e, t, n, s, o) => rn(t, n, s, o, !0),
819
+ run: (e, t, n) => un(e, t, n, !0, Ne * 1.6),
820
+ cluster: (e, t, n, s, o) => dn(t, n, s, o, !0),
812
821
  periphery: "sides"
813
822
  };
814
- function Ms(e, t, n, s) {
823
+ function Vs(e, t, n, s) {
815
824
  let o = 1, r = 1 / 0;
816
825
  for (let c = 1; c <= e; c++) {
817
826
  const u = Math.ceil(e / c), d = Math.abs(Math.log(c * t / (u * n) / s));
@@ -819,29 +828,29 @@ function Ms(e, t, n, s) {
819
828
  }
820
829
  return o;
821
830
  }
822
- const Tn = 2.4, Fr = {
831
+ const qn = 2.4, Yr = {
823
832
  name: "lanes",
824
833
  local: { topGap: 4.6, fanLen: 2, subGap: 1.6, fan: "stack", stackGap: 1.5, pad: 1.2, subShift: 2.8 },
825
834
  run(e, t, n) {
826
- const s = t.n, o = 2 * t.hu + qe * 2.5, r = 2 * t.hv + qe + Tn, c = Ms(s, o, r, t.aspect), u = Math.ceil(s / c), d = e % c, p = Math.floor(e / c), i = Math.min(c, s - p * c);
827
- n.a = (d - (i - 1) / 2) * o, n.b = ((u - 1) / 2 - p) * r - Tn / 2, n.angle = -pe / 2;
835
+ const s = t.n, o = 2 * t.hu + Ne * 2.5, r = 2 * t.hv + Ne + qn, c = Vs(s, o, r, t.aspect), u = Math.ceil(s / c), d = e % c, p = Math.floor(e / c), i = Math.min(c, s - p * c);
836
+ n.a = (d - (i - 1) / 2) * o, n.b = ((u - 1) / 2 - p) * r - qn / 2, n.angle = -me / 2;
828
837
  },
829
838
  cluster(e, t, n, s, o) {
830
- As(t, n, s, -(s.hh + 4), o);
839
+ Ss(t, n, s, -(s.hh + 4), o);
831
840
  },
832
841
  periphery: "sides"
833
- }, Br = {
842
+ }, _r = {
834
843
  name: "grid",
835
844
  local: { topGap: 3.4, fanLen: 3, subGap: 2.4, fan: "spread", stackGap: 2, pad: 1.3 },
836
845
  run(e, t, n) {
837
- const s = t.n, o = 2 * t.hu + qe, r = 2 * t.hv + qe, c = Ms(s, o, r, t.aspect), u = Math.ceil(s / c), d = e % c, p = Math.floor(e / c), i = Math.min(c, s - p * c);
838
- n.a = (d - (i - 1) / 2) * o, n.b = ((u - 1) / 2 - p) * r, n.angle = -pe / 2;
846
+ const s = t.n, o = 2 * t.hu + Ne, r = 2 * t.hv + Ne, c = Vs(s, o, r, t.aspect), u = Math.ceil(s / c), d = e % c, p = Math.floor(e / c), i = Math.min(c, s - p * c);
847
+ n.a = (d - (i - 1) / 2) * o, n.b = ((u - 1) / 2 - p) * r, n.angle = -me / 2;
839
848
  },
840
849
  cluster(e, t, n, s, o) {
841
- As(t, n, s, -(s.hh + 4), o);
850
+ Ss(t, n, s, -(s.hh + 4), o);
842
851
  },
843
852
  periphery: "sides"
844
- }, Dr = { radial: bs, radar: Ir, drift: Nr, lanes: Fr, grid: Br }, _ = 6, ys = 12, Ur = 9, Zr = 10, Lr = 12, Jr = 6, Hr = 8e3, jr = 250, Xr = 1500, Kr = 300, Qr = ["planner", "researcher", "graph_scout", "records_scout", "data_scout", "writer"], Yr = (e) => ({
853
+ }, $r = { radial: Os, radar: Kr, drift: Qr, lanes: Yr, grid: _r }, $ = 6, Es = 12, ea = 9, ta = 10, na = 12, sa = 6, ra = 8e3, aa = 250, oa = 1500, ca = 300, ia = ["planner", "researcher", "graph_scout", "records_scout", "data_scout", "writer"], la = (e) => ({
845
854
  lane: e,
846
855
  active: !1,
847
856
  runs: 0,
@@ -849,11 +858,11 @@ const Tn = 2.4, Fr = {
849
858
  thinking: 0,
850
859
  tokens: 0,
851
860
  energy: 0,
852
- color: Mt[e % Mt.length],
861
+ color: vt[e % vt.length],
853
862
  types: { planner: 0, researcher: 0, graph_scout: 0, records_scout: 0, data_scout: 0, writer: 0 },
854
863
  version: 0,
855
864
  runIds: []
856
- }), C = {
865
+ }), T = {
857
866
  /** grouping in effect (crowded and not "show all") */
858
867
  grouped: !1,
859
868
  /** crowded per hysteresis, regardless of "show all" (HUD offers "group" again) */
@@ -869,172 +878,172 @@ const Tn = 2.4, Fr = {
869
878
  expandedRuns: 0,
870
879
  collapsedRuns: 0,
871
880
  activeClusters: 0,
872
- clusters: Array.from({ length: _ }, (e, t) => Yr(t))
873
- }, ce = /* @__PURE__ */ new Set(), De = /* @__PURE__ */ new Map(), xe = /* @__PURE__ */ new Set(), Ke = /* @__PURE__ */ new Map(), it = /* @__PURE__ */ new Map(), Ne = [], we = /* @__PURE__ */ new Map(), yt = /* @__PURE__ */ new Map(), Re = [], Ct = new Uint16Array(_), lt = /* @__PURE__ */ new Map();
874
- let Cn = -1e9, Pn = -1, Ce = !0, Gn = null, Wn = -1;
875
- const Jt = /* @__PURE__ */ new Set();
876
- let vs = 0;
877
- const Le = () => {
878
- vs++, Jt.forEach((e) => e());
879
- }, an = (e) => (e % _ + _) % _;
880
- function gt(e) {
881
+ clusters: Array.from({ length: $ }, (e, t) => la(t))
882
+ }, ie = /* @__PURE__ */ new Set(), Ue = /* @__PURE__ */ new Map(), ke = /* @__PURE__ */ new Set(), Qe = /* @__PURE__ */ new Map(), ua = 0.25, ut = /* @__PURE__ */ new Map(), De = [], Se = /* @__PURE__ */ new Map(), wt = /* @__PURE__ */ new Map(), ze = [], qt = new Uint16Array($), dt = /* @__PURE__ */ new Map();
883
+ let Nn = -1e9, In = -1, Pe = !0, Dn = null, Fn = -1;
884
+ const Qt = /* @__PURE__ */ new Set();
885
+ let Rs = 0;
886
+ const Je = () => {
887
+ Rs++, Qt.forEach((e) => e());
888
+ }, fn = (e) => (e % $ + $) % $;
889
+ function bt(e) {
881
890
  const t = h.runs.get(e);
882
- return t ? an(t.slot) : Math.floor($t(e, 77) * _) % _;
891
+ return t ? fn(t.slot) : Math.floor(an(e, 77) * $) % $;
883
892
  }
884
- const _r = (e) => gt(e.run);
885
- function Pt(e) {
886
- if (!C.grouped) return !0;
893
+ const da = (e) => bt(e.run);
894
+ function Nt(e) {
895
+ if (!T.grouped) return !0;
887
896
  const t = typeof e == "string" ? h.instances.get(e) : e;
888
- return t ? ce.has(t.run) : !1;
897
+ return t ? ie.has(t.run) : !1;
889
898
  }
890
- function qn(e) {
891
- return !C.grouped || ce.has(e);
899
+ function Bn(e) {
900
+ return !T.grouped || ie.has(e);
892
901
  }
893
- function mc(e) {
894
- return C.grouped ? e === h.selected || xe.has(e) : !0;
902
+ function qc(e) {
903
+ return T.grouped ? e === h.selected || ke.has(e) : !0;
895
904
  }
896
- const Ht = (e) => C.clusters[an(e)];
897
- function $r(e) {
898
- C.expandedLane = an(e), C.showAll = !1, De.clear(), Ce = !0, Le();
905
+ const Yt = (e) => T.clusters[fn(e)];
906
+ function fa(e) {
907
+ T.expandedLane = fn(e), T.showAll = !1, Ue.clear(), Pe = !0, Je();
899
908
  }
900
- function ea() {
901
- C.expandedLane = -1, De.clear(), Ce = !0, Le();
909
+ function ha() {
910
+ T.expandedLane = -1, Ue.clear(), Pe = !0, Je();
902
911
  }
903
- function In(e) {
904
- C.showAll = e, e && (C.expandedLane = -1), Ce = !0, Le();
912
+ function Un(e) {
913
+ T.showAll = e, e && (T.expandedLane = -1), Pe = !0, Je();
905
914
  }
906
- function ta() {
907
- return kt(
908
- (e) => (Jt.add(e), () => Jt.delete(e)),
909
- () => vs
910
- ), C;
915
+ function pa() {
916
+ return Vt(
917
+ (e) => (Qt.add(e), () => Qt.delete(e)),
918
+ () => Rs
919
+ ), T;
911
920
  }
912
- const na = (e, t) => we.get(e) - we.get(t) || yt.get(t) - yt.get(e);
913
- function sa(e) {
914
- Ke.clear(), it.clear();
921
+ const ma = (e, t) => Se.get(e) - Se.get(t) || wt.get(t) - wt.get(e);
922
+ function ga(e) {
923
+ Qe.clear(), ut.clear();
915
924
  let t = 0;
916
925
  for (const l of h.instances.values())
917
- Ke.set(l.run, (Ke.get(l.run) ?? 0) + 1), l.exitAt || (t++, it.set(l.run, (it.get(l.run) ?? 0) + 1));
918
- C.alive = t;
919
- const n = C.crowded;
920
- !C.crowded && t > ys ? C.crowded = !0 : C.crowded && t < Ur && (C.crowded = !1), !C.crowded && n && (C.showAll = !1, C.expandedLane = -1);
921
- const s = C.crowded && !C.showAll;
922
- let o = s !== C.grouped;
923
- if (C.grouped = s, !s) {
924
- (ce.size || xe.size) && (o = !0), ce.clear(), De.clear(), xe.clear(), C.expandedAgents = t, C.expandedRuns = h.runs.size, C.collapsedRuns = 0, C.activeClusters = 0;
925
- for (const l of C.clusters) l.active && (l.active = !1, l.runIds.length = 0, l.version++);
926
- o && C.version++, (o || n !== C.crowded) && Le();
926
+ Qe.set(l.run, (Qe.get(l.run) ?? 0) + (l.doneAt && !l.exitAt ? ua : 1)), ne(l) && (t++, ut.set(l.run, (ut.get(l.run) ?? 0) + 1));
927
+ T.alive = t;
928
+ const n = T.crowded;
929
+ !T.crowded && t > Es ? T.crowded = !0 : T.crowded && t < ea && (T.crowded = !1), !T.crowded && n && (T.showAll = !1, T.expandedLane = -1);
930
+ const s = T.crowded && !T.showAll;
931
+ let o = s !== T.grouped;
932
+ if (T.grouped = s, !s) {
933
+ (ie.size || ke.size) && (o = !0), ie.clear(), Ue.clear(), ke.clear(), T.expandedAgents = t, T.expandedRuns = h.runs.size, T.collapsedRuns = 0, T.activeClusters = 0;
934
+ for (const l of T.clusters) l.active && (l.active = !1, l.runIds.length = 0, l.version++);
935
+ o && T.version++, (o || n !== T.crowded) && Je();
927
936
  return;
928
937
  }
929
938
  const r = h.selected ? h.instances.get(h.selected) : void 0, c = (r == null ? void 0 : r.run) ?? null;
930
- Ne.length = 0, we.clear(), yt.clear();
931
- for (const [l, k] of Ke) {
939
+ De.length = 0, Se.clear(), wt.clear();
940
+ for (const [l, k] of Qe) {
932
941
  if (k <= 0) continue;
933
- const b = h.runs.get(l), m = gt(l), M = ce.has(l) && e - (De.get(l) ?? 0) < Hr, A = l === c ? 0 : C.expandedLane === m ? 1 : M ? 2 : (it.get(l) ?? 0) > 0 ? 3 : 4;
934
- we.set(l, A), yt.set(l, (b == null ? void 0 : b.startedAt) ?? 0), Ne.push(l);
942
+ const b = h.runs.get(l), m = bt(l), M = ie.has(l) && e - (Ue.get(l) ?? 0) < ra, A = l === c ? 0 : T.expandedLane === m ? 1 : M ? 2 : (ut.get(l) ?? 0) > 0 ? 3 : 4;
943
+ Se.set(l, A), wt.set(l, (b == null ? void 0 : b.startedAt) ?? 0), De.push(l);
935
944
  }
936
- Ne.sort(na);
937
- const u = C.expandedLane >= 0 ? Lr : Zr;
945
+ De.sort(ma);
946
+ const u = T.expandedLane >= 0 ? na : ta;
938
947
  let d = 0, p = 0;
939
- Ct.fill(0);
948
+ qt.fill(0);
940
949
  for (let l = 0; l < 2; l++)
941
- for (const k of Ne) {
942
- const b = we.get(k);
950
+ for (const k of De) {
951
+ const b = Se.get(k);
943
952
  if (b === -1) continue;
944
- const m = gt(k);
945
- if (l === 0 && b >= 2 && Ct[m]) continue;
946
- const M = Ke.get(k);
947
- (b === 0 || d === 0 || d + M <= u) && (d += M, p++, Ct[m]++, we.set(k, -1));
953
+ const m = bt(k);
954
+ if (l === 0 && b >= 2 && qt[m]) continue;
955
+ const M = Qe.get(k);
956
+ (b === 0 || d === 0 || d + M <= u) && (d += M, p++, qt[m]++, Se.set(k, -1));
948
957
  }
949
- for (const l of ce)
950
- we.get(l) !== -1 && (ce.delete(l), De.delete(l), o = !0);
951
- for (const l of Ne)
952
- we.get(l) === -1 && !ce.has(l) && (ce.add(l), De.set(l, e), o = !0);
953
- C.expandedRuns = p;
958
+ for (const l of ie)
959
+ Se.get(l) !== -1 && (ie.delete(l), Ue.delete(l), o = !0);
960
+ for (const l of De)
961
+ Se.get(l) === -1 && !ie.has(l) && (ie.add(l), Ue.set(l, e), o = !0);
962
+ T.expandedRuns = p;
954
963
  let i = 0;
955
- for (const l of C.clusters) l.runIds.length = 0;
956
- for (const l of Ne)
957
- ce.has(l) || (C.clusters[gt(l)].runIds.push(l), i++);
958
- C.collapsedRuns = i, Re.length = 0, lt.clear();
964
+ for (const l of T.clusters) l.runIds.length = 0;
965
+ for (const l of De)
966
+ ie.has(l) || (T.clusters[bt(l)].runIds.push(l), i++);
967
+ T.collapsedRuns = i, ze.length = 0, dt.clear();
959
968
  for (const l of h.instances.values()) {
960
- if (l.exitAt || !ce.has(l.run)) continue;
961
- const k = en(l, e) + (l.status === "thinking" ? 0.6 : 0) + (xe.has(l.id) ? 0.4 : 0) + (e - l.bornAt < 3e3 ? 1 : 0) + (l.subagent ? 0 : 0.2);
962
- lt.set(l.id, k), Re.push(l);
969
+ if (!ne(l) || !ie.has(l.run)) continue;
970
+ const k = on(l, e) + (l.status === "thinking" ? 0.6 : 0) + (ke.has(l.id) ? 0.4 : 0) + (e - l.bornAt < 3e3 ? 1 : 0) + (l.subagent ? 0 : 0.2);
971
+ dt.set(l.id, k), ze.push(l);
963
972
  }
964
- Re.sort((l, k) => lt.get(k.id) - lt.get(l.id));
965
- const w = Math.min(Jr, Re.length);
966
- let a = xe.size !== w;
973
+ ze.sort((l, k) => dt.get(k.id) - dt.get(l.id));
974
+ const w = Math.min(sa, ze.length);
975
+ let a = ke.size !== w;
967
976
  if (!a)
968
- for (let l = 0; l < w; l++) xe.has(Re[l].id) || (a = !0);
977
+ for (let l = 0; l < w; l++) ke.has(ze[l].id) || (a = !0);
969
978
  if (a) {
970
- xe.clear();
971
- for (let l = 0; l < w; l++) xe.add(Re[l].id);
979
+ ke.clear();
980
+ for (let l = 0; l < w; l++) ke.add(ze[l].id);
972
981
  o = !0;
973
982
  }
974
- Re.length = 0, o && (C.version++, Le());
983
+ ze.length = 0, o && (T.version++, Je());
975
984
  }
976
- function ra() {
977
- const e = performance.now(), t = C.clusters, n = aa;
978
- for (let r = 0; r < _; r++) {
985
+ function Aa() {
986
+ const e = performance.now(), t = T.clusters, n = ba;
987
+ for (let r = 0; r < $; r++) {
979
988
  const c = t[r];
980
989
  n[r * 3] = c.agents, n[r * 3 + 1] = c.thinking, n[r * 3 + 2] = c.runs, c.agents = c.thinking = c.tokens = 0;
981
- for (const u of Qr) c.types[u] = 0;
982
- Gt[r] = 0;
990
+ for (const u of ia) c.types[u] = 0;
991
+ It[r] = 0;
983
992
  }
984
993
  let s = 0;
985
994
  for (const r of h.instances.values()) {
986
- if (ce.has(r.run)) {
987
- r.exitAt || s++;
995
+ if (ie.has(r.run)) {
996
+ ne(r) && s++;
988
997
  continue;
989
998
  }
990
- if (r.exitAt) continue;
991
- const c = t[_r(r)];
992
- c.agents++, c.tokens += r.tokens, c.types[r.type]++, r.status === "thinking" && c.thinking++, Gt[c.lane] += en(r, e);
999
+ if (!ne(r)) continue;
1000
+ const c = t[da(r)];
1001
+ c.agents++, c.tokens += r.tokens, c.types[r.type]++, r.status === "thinking" && c.thinking++, It[c.lane] += on(r, e);
993
1002
  }
994
- C.expandedAgents = s;
1003
+ T.expandedAgents = s;
995
1004
  let o = 0;
996
- for (let r = 0; r < _; r++) {
1005
+ for (let r = 0; r < $; r++) {
997
1006
  const c = t[r];
998
1007
  c.runs = c.runIds.length;
999
1008
  const u = c.runs > 0;
1000
1009
  u && o++;
1001
- const d = c.agents ? Math.min(1, Gt[r] / c.agents * 0.9 + c.thinking / c.agents * 0.35) : 0;
1010
+ const d = c.agents ? Math.min(1, It[r] / c.agents * 0.9 + c.thinking / c.agents * 0.35) : 0;
1002
1011
  c.energy += (d - c.energy) * 0.08, (u !== c.active || n[r * 3] !== c.agents || n[r * 3 + 1] !== c.thinking || n[r * 3 + 2] !== c.runs) && c.version++, c.active = u;
1003
1012
  }
1004
- o !== C.activeClusters && (C.activeClusters = o, Le());
1013
+ o !== T.activeClusters && (T.activeClusters = o, Je());
1005
1014
  }
1006
- const aa = new Float64Array(_ * 3), Gt = new Float64Array(_);
1007
- function oa(e = performance.now()) {
1008
- if (e === Pn) return;
1009
- Pn = e, h.selected !== Gn && (Gn = h.selected, Ce = !0);
1015
+ const ba = new Float64Array($ * 3), It = new Float64Array($);
1016
+ function Ma(e = performance.now()) {
1017
+ if (e === In) return;
1018
+ In = e, h.selected !== Dn && (Dn = h.selected, Pe = !0);
1010
1019
  const t = h.instances.size;
1011
- t !== Wn && (!C.grouped || t < ys + 4) && (Ce = !0), Wn = t, (Ce || e - Cn > jr) && (Ce = !1, Cn = e, sa(e)), C.grouped && ra();
1020
+ t !== Fn && (!T.grouped || t < Es + 4) && (Pe = !0), Fn = t, (Pe || e - Nn > aa) && (Pe = !1, Nn = e, ga(e)), T.grouped && Aa();
1012
1021
  }
1013
- St.fadeMs = (e) => C.crowded ? ce.has(e.run) || !C.grouped ? Xr : Kr : rs;
1014
- const gc = (e) => e === "graph_scout" || e === "records_scout" || e === "data_scout", Qe = (e, t) => $t(e, t) - 0.5, ca = (e) => e === 0 ? 0 : e % 2 ? (e + 1) / 2 : -e / 2, ae = { preset: bs, graphNatural: 1, graphRadius: 2.6, peripheryGap: 3.6 }, xs = { planner: -1, researcher: 0, writer: 1, graph_scout: 0, records_scout: 0, data_scout: 0 };
1015
- function Ac(e) {
1016
- return xs[e] * ae.preset.local.topGap * R.spread;
1022
+ Et.fadeMs = (e) => T.crowded ? ie.has(e.run) || !T.grouped ? oa : ca : fs;
1023
+ const Nc = (e) => e === "graph_scout" || e === "records_scout" || e === "data_scout", Ye = (e, t) => an(e, t) - 0.5, ya = (e) => e === 0 ? 0 : e % 2 ? (e + 1) / 2 : -e / 2, oe = { preset: Os, graphNatural: 1, graphRadius: 2.6, peripheryGap: 3.6 }, Cs = { planner: -1, researcher: 0, writer: 1, graph_scout: 0, records_scout: 0, data_scout: 0 };
1024
+ function Ic(e) {
1025
+ return Cs[e] * oe.preset.local.topGap * C.spread;
1017
1026
  }
1018
- const vt = new x.Vector3(), xt = new x.Vector3(), Wt = new x.Vector3(), ut = { a: 0, b: 0, angle: 0 }, Ye = { a: 0, b: 0 }, ke = { n: 0, aspect: 1.6, hu: 2, hv: 2, hw: 2, hh: 2 }, Se = [];
1019
- let qt = -1;
1020
- const ia = (e, t) => 1 - Math.exp(-e / t);
1021
- function la(e, t, n) {
1027
+ const xt = new v.Vector3(), kt = new v.Vector3(), Dt = new v.Vector3(), ft = { a: 0, b: 0, angle: 0 }, _e = { a: 0, b: 0 }, Oe = { n: 0, aspect: 1.6, hu: 2, hv: 2, hw: 2, hh: 2 }, Ve = [];
1028
+ let Ft = -1;
1029
+ const va = (e, t) => 1 - Math.exp(-e / t);
1030
+ function wa(e, t, n) {
1022
1031
  let s = (t - e) % (Math.PI * 2);
1023
1032
  return s > Math.PI && (s -= Math.PI * 2), s < -Math.PI && (s += Math.PI * 2), e + s * n;
1024
1033
  }
1025
- function ws(e) {
1034
+ function zs(e) {
1026
1035
  const t = h.runs.get(e);
1027
1036
  return {
1028
- uid: bt(),
1037
+ uid: yt(),
1029
1038
  id: e,
1030
1039
  run: t,
1031
1040
  index: 0,
1032
1041
  count: 1,
1033
1042
  color: (t == null ? void 0 : t.color) ?? "#94a3b8",
1034
- origin: new x.Vector3(),
1035
- target: new x.Vector3(),
1036
- axis: new x.Vector3(0, -1, 0),
1037
- side: new x.Vector3(1, 0, 0),
1043
+ origin: new v.Vector3(),
1044
+ target: new v.Vector3(),
1045
+ axis: new v.Vector3(0, -1, 0),
1046
+ side: new v.Vector3(1, 0, 0),
1038
1047
  angle: -Math.PI / 2,
1039
1048
  targetAngle: -Math.PI / 2,
1040
1049
  cu: 0,
@@ -1051,7 +1060,7 @@ function ws(e) {
1051
1060
  v1: 0
1052
1061
  };
1053
1062
  }
1054
- function Nn(e) {
1063
+ function Zn(e) {
1055
1064
  let t = 0;
1056
1065
  for (let n = !0; n; ) {
1057
1066
  n = !1;
@@ -1063,13 +1072,13 @@ function Nn(e) {
1063
1072
  }
1064
1073
  return t;
1065
1074
  }
1066
- function ua(e) {
1075
+ function xa(e) {
1067
1076
  let t = g.runs.get(e.run);
1068
- t || (t = ws(e.run), g.runs.set(e.run, t), g.runsVersion++);
1077
+ t || (t = zs(e.run), g.runs.set(e.run, t), g.runsVersion++);
1069
1078
  const n = e.parent ? g.agents.get(e.parent) : void 0, s = e.subagent ? n ? n.depth + 1 : 1 : 0;
1070
1079
  let o;
1071
- return s === 0 ? o = Nn((r) => r.depth === 0 && r.inst.run === e.run && r.inst.type === e.type) : o = Nn((r) => r.depth > 0 && r.inst.parent === e.parent), n && s > 0 && (n.kidsMax = Math.max(n.kidsMax, o + 1)), {
1072
- uid: bt(),
1080
+ return s === 0 ? o = Zn((r) => r.depth === 0 && r.inst.run === e.run && r.inst.type === e.type) : o = Zn((r) => r.depth > 0 && r.inst.parent === e.parent), n && s > 0 && (n.kidsMax = Math.max(n.kidsMax, o + 1)), {
1081
+ uid: yt(),
1073
1082
  id: e.id,
1074
1083
  inst: e,
1075
1084
  run: t,
@@ -1077,59 +1086,60 @@ function ua(e) {
1077
1086
  v: 0,
1078
1087
  eu: 0,
1079
1088
  ev: 0,
1080
- target: new x.Vector3(),
1081
- pos: new x.Vector3(),
1082
- live: new x.Vector3(),
1083
- scale: cs(e) * R.scale,
1089
+ target: new v.Vector3(),
1090
+ pos: new v.Vector3(),
1091
+ live: new v.Vector3(),
1092
+ scale: ms(e) * C.scale,
1084
1093
  depth: s,
1085
1094
  sib: o,
1086
1095
  sibs: 1,
1087
1096
  kidsMax: 0,
1088
- fresh: !0
1097
+ fresh: !0,
1098
+ dim: rn(e) ? 1 : 0
1089
1099
  };
1090
1100
  }
1091
- const da = 16;
1092
- function fa() {
1101
+ const ka = 0.6, Sa = 16;
1102
+ function Oa() {
1093
1103
  let e = 0;
1094
1104
  for (const n of h.instances.values()) {
1095
- if (g.agents.has(n.id) || n.exitAt || !Pt(n)) continue;
1096
- if (e >= da) break;
1105
+ if (g.agents.has(n.id) || n.exitAt || !Nt(n)) continue;
1106
+ if (e >= Sa) break;
1097
1107
  const s = n.parent ? h.instances.get(n.parent) : void 0;
1098
- s && !s.exitAt && !g.agents.has(s.id) && Pt(s) || (g.agents.set(n.id, ua(n)), g.agentsVersion++, e++);
1108
+ s && !s.exitAt && !g.agents.has(s.id) && Nt(s) || (g.agents.set(n.id, xa(n)), g.agentsVersion++, e++);
1099
1109
  }
1100
1110
  for (const [n, s] of g.agents)
1101
- (!h.instances.has(n) || !Pt(s.inst)) && (g.agents.delete(n), g.agentsVersion++);
1111
+ (!h.instances.has(n) || !Nt(s.inst)) && (g.agents.delete(n), g.agentsVersion++);
1102
1112
  for (const n of g.runs.values()) n.members = 0;
1103
1113
  for (const n of g.agents.values()) n.run.members++;
1104
1114
  for (const n of h.runs.values())
1105
- g.runs.has(n.id) || n.endedAt || !qn(n.id) || (g.runs.set(n.id, ws(n.id)), g.runsVersion++);
1115
+ g.runs.has(n.id) || n.endedAt || !Bn(n.id) || (g.runs.set(n.id, zs(n.id)), g.runsVersion++);
1106
1116
  for (const [n, s] of g.runs) {
1107
1117
  const o = h.runs.get(n);
1108
- o && !s.run && (s.run = o, s.color = o.color), !(s.members > 0) && (o && !o.endedAt && qn(n) || (g.runs.delete(n), g.runsVersion++));
1118
+ o && !s.run && (s.run = o, s.color = o.color), !(s.members > 0) && (o && !o.endedAt && Bn(n) || (g.runs.delete(n), g.runsVersion++));
1109
1119
  }
1110
1120
  const t = performance.now();
1111
1121
  for (const n of h.mcpServers.values()) {
1112
1122
  let s = g.mcp.get(n.name);
1113
- const o = rr(n, t);
1114
- if (s && (s.wanted = o), !(!o && !s) && (s || (s = { uid: bt(), name: n.name, srv: n, out: new x.Vector3(1, 0, 0), target: new x.Vector3(), pos: new x.Vector3(), backends: /* @__PURE__ */ new Map(), fresh: !0, wanted: !0, mix: 0 }, g.mcp.set(n.name, s), g.mcpVersion++), s.backends.size !== n.resources.size)) {
1123
+ const o = gr(n, t);
1124
+ if (s && (s.wanted = o), !(!o && !s) && (s || (s = { uid: yt(), name: n.name, srv: n, out: new v.Vector3(1, 0, 0), target: new v.Vector3(), pos: new v.Vector3(), backends: /* @__PURE__ */ new Map(), fresh: !0, wanted: !0, mix: 0 }, g.mcp.set(n.name, s), g.mcpVersion++), s.backends.size !== n.resources.size)) {
1115
1125
  for (const r of n.resources.values())
1116
- s.backends.has(r.name) || s.backends.set(r.name, { uid: bt(), res: r, k: 0, n: 0, target: new x.Vector3(), pos: new x.Vector3(), fresh: !0, mix: 0 });
1126
+ s.backends.has(r.name) || s.backends.set(r.name, { uid: yt(), res: r, k: 0, n: 0, target: new v.Vector3(), pos: new v.Vector3(), fresh: !0, mix: 0 });
1117
1127
  g.mcpVersion++;
1118
1128
  }
1119
1129
  }
1120
1130
  }
1121
- let Fn = -1;
1122
- function ha() {
1123
- Fn === g.runsVersion && g.runOrder.length === g.runs.size || (Fn = g.runsVersion, g.runOrder = [...g.runs.values()].sort((e, t) => {
1131
+ let Ln = -1;
1132
+ function Va() {
1133
+ Ln === g.runsVersion && g.runOrder.length === g.runs.size || (Ln = g.runsVersion, g.runOrder = [...g.runs.values()].sort((e, t) => {
1124
1134
  var n, s;
1125
1135
  return (((n = e.run) == null ? void 0 : n.startedAt) ?? 0) - (((s = t.run) == null ? void 0 : s.startedAt) ?? 0) || (e.id < t.id ? -1 : 1);
1126
1136
  }));
1127
1137
  }
1128
- function pa(e) {
1129
- const t = ae.preset.local, n = R.spread, s = e.inst;
1138
+ function Ea(e) {
1139
+ const t = oe.preset.local, n = C.spread, s = e.inst;
1130
1140
  if (e.depth === 0) {
1131
- let u = xs[s.type] * t.topGap, d = 0;
1132
- e.sib && (u += (e.sib % 2 ? 1 : -1) * t.topGap * 0.5, d -= Math.ceil(e.sib / 2) * t.fanLen * 0.55), e.u = (u + Qe(e.id, 31) * 0.5) * n, e.v = (d + Qe(e.id, 32) * 0.4) * n;
1141
+ let u = Cs[s.type] * t.topGap, d = 0;
1142
+ e.sib && (u += (e.sib % 2 ? 1 : -1) * t.topGap * 0.5, d -= Math.ceil(e.sib / 2) * t.fanLen * 0.55), e.u = (u + Ye(e.id, 31) * 0.5) * n, e.v = (d + Ye(e.id, 32) * 0.4) * n;
1133
1143
  return;
1134
1144
  }
1135
1145
  const o = s.parent ? g.agents.get(s.parent) : void 0;
@@ -1137,22 +1147,22 @@ function pa(e) {
1137
1147
  e.sibs = Math.max(1, o.kidsMax);
1138
1148
  const r = e.depth > 1 ? 0.75 : 1, c = (t.subShift ?? 0) * r;
1139
1149
  if (t.fan === "stack")
1140
- e.u = o.u + (c + ca(e.sib) * 0.35 + Qe(e.id, 31) * 0.4) * n, e.v = o.v + (t.fanLen + e.sib * t.stackGap) * r * n;
1150
+ e.u = o.u + (c + ya(e.sib) * 0.35 + Ye(e.id, 31) * 0.4) * n, e.v = o.v + (t.fanLen + e.sib * t.stackGap) * r * n;
1141
1151
  else {
1142
1152
  const u = e.sib - (e.sibs - 1) / 2;
1143
- e.u = o.u + (c + u * t.subGap * r + Qe(e.id, 31) * 0.45) * n, e.v = o.v + (t.fanLen * r + Math.abs(u) * 0.3 + Qe(e.id, 32) * 0.45) * n;
1153
+ e.u = o.u + (c + u * t.subGap * r + Ye(e.id, 31) * 0.45) * n, e.v = o.v + (t.fanLen * r + Math.abs(u) * 0.3 + Ye(e.id, 32) * 0.45) * n;
1144
1154
  }
1145
1155
  }
1146
- function ma() {
1156
+ function Ra() {
1147
1157
  var n;
1148
- for (let s = 0; s < 6; s++) for (const o of g.agents.values()) (o.depth === s || s === 5 && o.depth >= 5) && pa(o);
1149
- const e = ae.preset.local.pad;
1158
+ for (let s = 0; s < 6; s++) for (const o of g.agents.values()) (o.depth === s || s === 5 && o.depth >= 5) && Ea(o);
1159
+ const e = oe.preset.local.pad;
1150
1160
  for (const s of g.runs.values()) s.u0 = 1 / 0;
1151
1161
  for (const s of g.agents.values()) {
1152
1162
  const o = s.run, r = e * Math.max(0.7, s.scale);
1153
1163
  o.u0 === 1 / 0 ? (o.u0 = s.u - r, o.u1 = s.u + r, o.v0 = s.v - r, o.v1 = s.v + r) : (o.u0 = Math.min(o.u0, s.u - r), o.u1 = Math.max(o.u1, s.u + r), o.v0 = Math.min(o.v0, s.v - r), o.v1 = Math.max(o.v1, s.v + r));
1154
1164
  }
1155
- const t = ae.preset.local.topGap * R.spread;
1165
+ const t = oe.preset.local.topGap * C.spread;
1156
1166
  for (const s of g.runs.values())
1157
1167
  (n = s.run) != null && n.hasSteps && s.u0 !== 1 / 0 && (s.u0 = Math.min(s.u0, -t - e), s.u1 = Math.max(s.u1, t + e));
1158
1168
  for (const s of g.runs.values()) {
@@ -1163,80 +1173,80 @@ function ma() {
1163
1173
  s.tcu = (s.u0 + s.u1) / 2, s.tcv = (s.v0 + s.v1) / 2, s.hu = (s.u1 - s.u0) / 2, s.hv = (s.v1 - s.v0) / 2;
1164
1174
  }
1165
1175
  }
1166
- function on(e, t, n) {
1176
+ function hn(e, t, n) {
1167
1177
  const s = Math.cos(e), o = Math.sin(e);
1168
- re(s, o, t);
1178
+ ae(s, o, t);
1169
1179
  let r = -o, c = s;
1170
- r < -1e-3 && (r = -r, c = -c), re(r, c, n);
1180
+ r < -1e-3 && (r = -r, c = -c), ae(r, c, n);
1171
1181
  }
1172
- function ga(e, t, n, s) {
1173
- return on(e.targetAngle, vt, xt), s.copy(e.target).addScaledVector(xt, t - e.tcu).addScaledVector(vt, n - e.tcv);
1182
+ function Ca(e, t, n, s) {
1183
+ return hn(e.targetAngle, xt, kt), s.copy(e.target).addScaledVector(kt, t - e.tcu).addScaledVector(xt, n - e.tcv);
1174
1184
  }
1175
- const jt = (e) => e.x, _e = (e) => g.plane === "xy" ? e.y : -e.z;
1176
- function Aa() {
1177
- const e = ae.preset, t = g.runOrder;
1185
+ const _t = (e) => e.x, $e = (e) => g.plane === "xy" ? e.y : -e.z;
1186
+ function za() {
1187
+ const e = oe.preset, t = g.runOrder;
1178
1188
  let n = 0, s = 0;
1179
1189
  for (const o of t)
1180
1190
  n = Math.max(n, o.hu), s = Math.max(s, o.hv);
1181
- ke.n = t.length, ke.aspect = R.aspect * (e.periphery === "sides" ? 0.72 : 1), ke.hu = n, ke.hv = s;
1191
+ Oe.n = t.length, Oe.aspect = C.aspect * (e.periphery === "sides" ? 0.72 : 1), Oe.hu = n, Oe.hv = s;
1182
1192
  for (let o = 0; o < t.length; o++) {
1183
1193
  const r = t[o];
1184
- r.index = o, r.count = t.length, e.run(o, ke, ut), re(ut.a, ut.b, r.target), r.targetAngle = ut.angle;
1194
+ r.index = o, r.count = t.length, e.run(o, Oe, ft), ae(ft.a, ft.b, r.target), r.targetAngle = ft.angle;
1185
1195
  }
1186
1196
  }
1187
- let At = 1;
1188
- function ba() {
1189
- const e = ae.preset, t = Math.min(1.7, 1 / Math.max(0.35, R.foreshorten));
1190
- Math.abs(t - At) / At > 0.1 && (At = t);
1197
+ let Mt = 1;
1198
+ function Ta() {
1199
+ const e = oe.preset, t = Math.min(1.7, 1 / Math.max(0.35, C.foreshorten));
1200
+ Math.abs(t - Mt) / Mt > 0.1 && (Mt = t);
1191
1201
  let n = 0, s = 0;
1192
1202
  for (const i of g.agents.values()) {
1193
- const w = ae.preset.local.pad * Math.max(0.7, i.scale);
1194
- n = Math.max(n, Math.abs(jt(i.target)) + w), s = Math.max(s, Math.abs(_e(i.target)) + w);
1203
+ const w = oe.preset.local.pad * Math.max(0.7, i.scale);
1204
+ n = Math.max(n, Math.abs(_t(i.target)) + w), s = Math.max(s, Math.abs($e(i.target)) + w);
1195
1205
  }
1196
1206
  for (const i of g.runs.values())
1197
- i.members || (n = Math.max(n, Math.abs(jt(i.target)) + i.hu), s = Math.max(s, Math.abs(_e(i.target)) + i.hv));
1198
- if (ke.hw = n, ke.hh = s, Se.length = 0, C.grouped)
1199
- for (let i = 0; i < _; i++) Ht(i).active && Se.push(i);
1200
- for (let i = 0; i < Se.length; i++) {
1201
- const w = Se[i];
1202
- e.cluster(w, i, Se.length, ke, Ye), re(Ye.a, Ye.b, g.clusterTarget[w]), n = Math.max(n, Math.abs(Ye.a) + 2.4), s = Math.max(s, Math.abs(Ye.b) + 2.4);
1207
+ i.members || (n = Math.max(n, Math.abs(_t(i.target)) + i.hu), s = Math.max(s, Math.abs($e(i.target)) + i.hv));
1208
+ if (Oe.hw = n, Oe.hh = s, Ve.length = 0, T.grouped)
1209
+ for (let i = 0; i < $; i++) Yt(i).active && Ve.push(i);
1210
+ for (let i = 0; i < Ve.length; i++) {
1211
+ const w = Ve[i];
1212
+ e.cluster(w, i, Ve.length, Oe, _e), ae(_e.a, _e.b, g.clusterTarget[w]), n = Math.max(n, Math.abs(_e.a) + 2.4), s = Math.max(s, Math.abs(_e.b) + 2.4);
1203
1213
  }
1204
1214
  e.round && (n = s = Math.max(n, s));
1205
1215
  const o = g.core;
1206
1216
  (Math.abs(n - o.thw) / Math.max(1, o.thw) > 0.08 || n < o.thw * 0.75) && (o.thw = n), (Math.abs(s - o.thh) / Math.max(1, o.thh) > 0.08 || s < o.thh * 0.75) && (o.thh = s), n = Math.max(2.5, o.thw), s = Math.max(2.5, o.thh);
1207
- const r = ae.peripheryGap, c = g.graph, u = g.graphWanted && h.hasGraph, d = ae.graphRadius;
1217
+ const r = oe.peripheryGap, c = g.graph, u = g.graphWanted && h.hasGraph, d = oe.graphRadius;
1208
1218
  c.radius = d;
1209
- const p = Ma;
1219
+ const p = Pa;
1210
1220
  p.length = 0;
1211
1221
  for (const i of g.mcp.values()) i.wanted && p.push(i);
1212
- if (p.sort(ya), e.periphery === "rim") {
1222
+ if (p.sort(Ga), e.periphery === "rim") {
1213
1223
  const i = Math.max(n, s) + r;
1214
- u && re(-(i + d), 0, c.target);
1215
- const w = u ? va : xa;
1224
+ u && ae(-(i + d), 0, c.target);
1225
+ const w = u ? Wa : qa;
1216
1226
  for (let a = 0; a < p.length; a++) {
1217
1227
  const l = p[a], k = Math.floor(a / w.length), b = w[a % w.length] + k * 0.18, m = i + 1 + k * 2.6;
1218
- re(Math.cos(b), Math.sin(b), l.out), re(Math.cos(b) * m, Math.sin(b) * m, l.target);
1228
+ ae(Math.cos(b), Math.sin(b), l.out), ae(Math.cos(b) * m, Math.sin(b) * m, l.target);
1219
1229
  const M = l.backends.size;
1220
1230
  let A = 0;
1221
1231
  for (const S of l.backends.values()) {
1222
1232
  S.k = A, S.n = M;
1223
1233
  const O = m + 3.2, V = b + (A - (M - 1) / 2) * (2.1 / O);
1224
- re(Math.cos(V) * O, Math.sin(V) * O, S.target), A++;
1234
+ ae(Math.cos(V) * O, Math.sin(V) * O, S.target), A++;
1225
1235
  }
1226
1236
  }
1227
1237
  } else {
1228
- const i = R.aspect >= 0.85;
1229
- u && (i ? re(-(n + r + d), 0, c.target) : re(0, -(s + r + d), c.target)), It.length = 0, Nt.length = 0;
1238
+ const i = C.aspect >= 0.85;
1239
+ u && (i ? ae(-(n + r + d), 0, c.target) : ae(0, -(s + r + d), c.target)), Bt.length = 0, Ut.length = 0;
1230
1240
  for (let w = 0; w < p.length; w++)
1231
- ((u ? w < Math.max(3, Math.ceil(p.length * 0.6)) : w % 2 === 0) ? Nt : It).push(p[w]);
1232
- Bn(Nt, 1, n + r, 0), Bn(It, -1, n + r, u && i ? d * 2 + 3.5 : 0);
1241
+ ((u ? w < Math.max(3, Math.ceil(p.length * 0.6)) : w % 2 === 0) ? Ut : Bt).push(p[w]);
1242
+ Jn(Ut, 1, n + r, 0), Jn(Bt, -1, n + r, u && i ? d * 2 + 3.5 : 0);
1233
1243
  }
1234
1244
  u && c.target.lengthSq() > 1e-6 && c.out.copy(c.target).normalize();
1235
1245
  }
1236
- const Ma = [], It = [], Nt = [], ya = (e, t) => e.srv.slot - t.srv.slot, ks = Math.PI / 180, va = [0, 35, -35, 70, -70, 110, -110, 145, -145].map((e) => e * ks), xa = [0, 180, 35, -145, -35, 145, 70, -110, -70, 110].map((e) => e * ks);
1237
- function Bn(e, t, n, s) {
1246
+ const Pa = [], Bt = [], Ut = [], Ga = (e, t) => e.srv.slot - t.srv.slot, Ts = Math.PI / 180, Wa = [0, 35, -35, 70, -70, 110, -110, 145, -145].map((e) => e * Ts), qa = [0, 180, 35, -145, -35, 145, 70, -110, -70, 110].map((e) => e * Ts);
1247
+ function Jn(e, t, n, s) {
1238
1248
  if (!e.length) return;
1239
- const o = At, r = (d) => Math.max(3, d.backends.size * 2.1 + 0.6) * o, c = s > 0 ? Math.ceil(e.length / 2) : e.length;
1249
+ const o = Mt, r = (d) => Math.max(3, d.backends.size * 2.1 + 0.6) * o, c = s > 0 ? Math.ceil(e.length / 2) : e.length;
1240
1250
  let u = 0;
1241
1251
  if (s > 0) {
1242
1252
  u = s / 2;
@@ -1245,66 +1255,68 @@ function Bn(e, t, n, s) {
1245
1255
  for (let d = 0; d < e.length; d++) {
1246
1256
  s > 0 && d === c && (u = -s / 2);
1247
1257
  const p = e[d], i = r(p), w = u - i / 2;
1248
- re(t, 0, p.out), re(t * (n + 1), w, p.target);
1258
+ ae(t, 0, p.out), ae(t * (n + 1), w, p.target);
1249
1259
  const a = p.backends.size;
1250
1260
  let l = 0;
1251
1261
  for (const k of p.backends.values())
1252
- k.k = l, k.n = a, re(t * (n + 1 + 3.6), w + ((a - 1) / 2 - l) * 2.1 * o, k.target), l++;
1262
+ k.k = l, k.n = a, ae(t * (n + 1 + 3.6), w + ((a - 1) / 2 - l) * 2.1 * o, k.target), l++;
1253
1263
  u -= i;
1254
1264
  }
1255
1265
  }
1256
- function wa(e = performance.now()) {
1257
- const t = qt < 0 ? 0.016 : Math.min(0.1, (e - qt) / 1e3);
1258
- if (qt = e, !g.clusterPos.length)
1259
- for (let a = 0; a < _; a++)
1260
- g.clusterPos.push(new x.Vector3()), g.clusterTarget.push(new x.Vector3()), g.clusterFresh.push(!0);
1261
- fa(), ha();
1266
+ function Na(e = performance.now()) {
1267
+ const t = Ft < 0 ? 0.016 : Math.min(0.1, (e - Ft) / 1e3);
1268
+ if (Ft = e, !g.clusterPos.length)
1269
+ for (let a = 0; a < $; a++)
1270
+ g.clusterPos.push(new v.Vector3()), g.clusterTarget.push(new v.Vector3()), g.clusterFresh.push(!0);
1271
+ Oa(), Va();
1262
1272
  let n = 0, s = 0;
1263
1273
  for (const a of g.agents.values())
1264
1274
  n += a.inst.subagent ? 0.5 : 1, a.inst.exitAt || s++;
1265
1275
  let o = 0;
1266
- if (C.grouped)
1267
- for (let a = 0; a < _; a++) Ht(a).active && o++;
1276
+ if (T.grouped)
1277
+ for (let a = 0; a < $; a++) Yt(a).active && o++;
1268
1278
  let r = 0;
1269
1279
  for (const a of g.mcp.values()) a.wanted && r++;
1270
- vr(e, n + o * 1.5, g.agents.size + s * 1e3 + o * 1e6 + g.runs.size * 1e8 + r * 1e10 + (g.graphWanted ? 1e13 : 0));
1271
- for (const a of g.agents.values()) a.scale = cs(a.inst) * R.scale;
1272
- ma(), Aa();
1273
- for (const a of g.agents.values()) ga(a.run, a.u, a.v, a.target);
1274
- ba();
1275
- const c = ia(t, 0.2);
1280
+ Pr(e, n + o * 1.5, g.agents.size + s * 1e3 + o * 1e6 + g.runs.size * 1e8 + r * 1e10 + (g.graphWanted ? 1e13 : 0));
1281
+ for (const a of g.agents.values()) a.scale = ms(a.inst) * C.scale;
1282
+ Ra(), za();
1283
+ for (const a of g.agents.values()) Ca(a.run, a.u, a.v, a.target);
1284
+ Ta();
1285
+ const c = va(t, 0.2);
1276
1286
  for (const a of g.runs.values())
1277
- a.fresh ? (a.origin.copy(a.target), a.angle = a.targetAngle, a.cu = a.tcu, a.cv = a.tcv, a.fresh = !1) : (a.origin.lerp(a.target, c), a.angle = la(a.angle, a.targetAngle, c), a.cu += (a.tcu - a.cu) * c, a.cv += (a.tcv - a.cv) * c), on(a.angle, a.axis, a.side);
1287
+ a.fresh ? (a.origin.copy(a.target), a.angle = a.targetAngle, a.cu = a.tcu, a.cv = a.tcv, a.fresh = !1) : (a.origin.lerp(a.target, c), a.angle = wa(a.angle, a.targetAngle, c), a.cu += (a.tcu - a.cu) * c, a.cv += (a.tcv - a.cv) * c), hn(a.angle, a.axis, a.side);
1278
1288
  for (const a of g.agents.values()) {
1279
1289
  a.fresh ? (a.eu = a.u, a.ev = a.v, a.fresh = !1) : (a.eu += (a.u - a.eu) * c, a.ev += (a.v - a.ev) * c);
1280
1290
  const l = a.run;
1281
1291
  a.pos.copy(l.origin).addScaledVector(l.side, a.eu - l.cu).addScaledVector(l.axis, a.ev - l.cv), a.live.copy(a.pos);
1292
+ const k = rn(a.inst) ? 1 : 0;
1293
+ a.dim = jt ? k : a.dim + (k - a.dim) * Math.min(1, t / ka);
1282
1294
  }
1283
- for (const a of Se)
1295
+ for (const a of Ve)
1284
1296
  g.clusterFresh[a] ? (g.clusterPos[a].copy(g.clusterTarget[a]), g.clusterFresh[a] = !1) : g.clusterPos[a].lerp(g.clusterTarget[a], c);
1285
- for (let a = 0; a < _; a++) Ht(a).active || (g.clusterFresh[a] = !0);
1297
+ for (let a = 0; a < $; a++) Yt(a).active || (g.clusterFresh[a] = !0);
1286
1298
  const u = g.core;
1287
1299
  u.hw += (Math.max(2.5, u.thw) - u.hw) * c, u.hh += (Math.max(2.5, u.thh) - u.hh) * c, u.r = Math.max(u.hw, u.hh);
1288
- const d = Math.min(1, t / ka);
1300
+ const d = Math.min(1, t / Ia);
1289
1301
  for (const a of g.mcp.values()) {
1290
1302
  a.fresh ? (a.pos.copy(a.target), a.fresh = !1) : a.pos.lerp(a.target, c), a.mix = a.wanted ? Math.min(1, a.mix + d) : Math.max(0, a.mix - d);
1291
1303
  for (const l of a.backends.values())
1292
1304
  l.fresh ? (l.pos.copy(l.target), l.fresh = !1) : l.pos.lerp(l.target, c), l.mix = a.wanted ? Math.min(1, l.mix + d) : Math.min(l.mix, a.mix);
1293
1305
  !a.wanted && a.mix <= 0 && (g.mcp.delete(a.name), g.mcpVersion++);
1294
1306
  }
1295
- const p = g.graph, i = g.graphWanted && h.hasGraph, w = i ? or(e) : 0;
1296
- p.mix += (w - p.mix) * (i ? 1 : c), p.fresh || p.mix < 0.01 ? (p.pos.copy(p.target), p.fresh = !i) : p.pos.lerp(p.target, c), p.natural = ae.graphNatural, p.scale = p.radius / Math.max(1e-3, p.natural) * Math.max(1e-3, p.mix);
1307
+ const p = g.graph, i = g.graphWanted && h.hasGraph, w = i ? br(e) : 0;
1308
+ p.mix += (w - p.mix) * (i ? 1 : c), p.fresh || p.mix < 0.01 ? (p.pos.copy(p.target), p.fresh = !i) : p.pos.lerp(p.target, c), p.natural = oe.graphNatural, p.scale = p.radius / Math.max(1e-3, p.natural) * Math.max(1e-3, p.mix);
1297
1309
  }
1298
- const ka = 0.9;
1299
- function Sa(e, t, n = 0) {
1310
+ const Ia = 0.9;
1311
+ function Da(e, t, n = 0) {
1300
1312
  const s = g.plane === "xz" && n > 0;
1301
1313
  for (const r of g.agents.values())
1302
- e(r.target, t * r.scale), s && e(Wt.copy(r.target).setY(r.target.y + n * r.scale), t * r.scale * 0.6);
1303
- for (const r of Se) e(g.clusterTarget[r], 2.4);
1314
+ e(r.target, t * r.scale), s && e(Dt.copy(r.target).setY(r.target.y + n * r.scale), t * r.scale * 0.6);
1315
+ for (const r of Ve) e(g.clusterTarget[r], 2.4);
1304
1316
  for (const r of g.runs.values()) {
1305
- r.members || e(r.target, r.hu), on(r.targetAngle, vt, xt);
1306
- const c = Math.abs(_e(xt)) * r.hu + Math.abs(_e(vt)) * r.hv;
1307
- re(jt(r.target), _e(r.target) + c + 1.4, Wt), e(Wt, 1.2);
1317
+ r.members || e(r.target, r.hu), hn(r.targetAngle, xt, kt);
1318
+ const c = Math.abs($e(kt)) * r.hu + Math.abs($e(xt)) * r.hv;
1319
+ ae(_t(r.target), $e(r.target) + c + 1.4, Dt), e(Dt, 1.2);
1308
1320
  }
1309
1321
  for (const r of g.mcp.values())
1310
1322
  if (r.wanted) {
@@ -1314,7 +1326,7 @@ function Sa(e, t, n = 0) {
1314
1326
  const o = g.graph;
1315
1327
  g.graphWanted && h.hasGraph && e(o.target, o.radius + 0.8);
1316
1328
  }
1317
- const bc = () => Se, Oa = "data:font/woff;base64,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", Va = "data:font/woff;base64,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", Dn = { sans: Oa, mono: Va }, Un = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~·›…—–ו", Ea = [
1329
+ const Dc = () => Ve, Fa = "data:font/woff;base64,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", Ba = "data:font/woff;base64,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", Ua = { kitNoDim: !0 }, Hn = { sans: Fa, mono: Ba }, jn = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~·›…—–ו", Za = [
1318
1330
  [32, 126],
1319
1331
  [160, 255],
1320
1332
  [305, 305],
@@ -1330,35 +1342,35 @@ const bc = () => Se, Oa = "data:font/woff;base64,d09GRgABAAAAAHo0AA8AAAABCagAAQA
1330
1342
  [8595, 8595],
1331
1343
  [8722, 8722],
1332
1344
  [8725, 8725]
1333
- ], za = (e) => {
1334
- for (const [t, n] of Ea) if (e >= t && e <= n) return !0;
1345
+ ], La = (e) => {
1346
+ for (const [t, n] of Za) if (e >= t && e <= n) return !0;
1335
1347
  return !1;
1336
- }, Ra = { "▶": "›", "▸": "›", "→": "›", "⟶": "›", "←": "‹", "✓": "·", "✔": "·", "✕": "×", "✗": "×", "✖": "×", "⋯": "…" };
1337
- function Ss(e) {
1348
+ }, Ja = { "▶": "›", "▸": "›", "→": "›", "⟶": "›", "←": "‹", "✓": "·", "✔": "·", "✕": "×", "✗": "×", "✖": "×", "⋯": "…" };
1349
+ function Ps(e) {
1338
1350
  let t = "";
1339
1351
  for (const n of e) {
1340
- const s = Ra[n];
1341
- s !== void 0 ? t += s : za(n.codePointAt(0)) && (t += n);
1352
+ const s = Ja[n];
1353
+ s !== void 0 ? t += s : La(n.codePointAt(0)) && (t += n);
1342
1354
  }
1343
1355
  return t;
1344
1356
  }
1345
- const dt = /* @__PURE__ */ new Map();
1346
- function Ta(e) {
1347
- const t = dt.get(e);
1357
+ const ht = /* @__PURE__ */ new Map();
1358
+ function Ha(e) {
1359
+ const t = ht.get(e);
1348
1360
  if (t !== void 0) return t;
1349
- const n = Ss(e).replace(/\s+/g, " ").replace(/^[\s·›]+|[\s·›]+$/g, "");
1350
- return dt.size > 2e3 && dt.clear(), dt.set(e, n), n;
1351
- }
1352
- const Zn = (e, t) => t > 0 && e.length > t ? e.slice(0, Math.max(1, t - 1)).trimEnd() + "…" : e, Ln = new x.PlaneGeometry(1, 1), ft = () => {
1353
- }, Jn = {
1354
- top: new x.MeshBasicMaterial({ color: 16777215, transparent: !0, depthTest: !1, depthWrite: !1, toneMapped: !1, fog: !1, side: x.DoubleSide }),
1355
- depth: new x.MeshBasicMaterial({ color: 16777215, transparent: !0, depthTest: !0, depthWrite: !1, toneMapped: !1, fog: !1, side: x.DoubleSide })
1356
- }, Ca = (
1361
+ const n = Ps(e).replace(/\s+/g, " ").replace(/^[\s·›]+|[\s·›]+$/g, "");
1362
+ return ht.size > 2e3 && ht.clear(), ht.set(e, n), n;
1363
+ }
1364
+ const Xn = (e, t) => t > 0 && e.length > t ? e.slice(0, Math.max(1, t - 1)).trimEnd() + "…" : e, Kn = new v.PlaneGeometry(1, 1), pt = () => {
1365
+ }, Qn = {
1366
+ top: new v.MeshBasicMaterial({ color: 16777215, transparent: !0, depthTest: !1, depthWrite: !1, toneMapped: !1, fog: !1, side: v.DoubleSide }),
1367
+ depth: new v.MeshBasicMaterial({ color: 16777215, transparent: !0, depthTest: !0, depthWrite: !1, toneMapped: !1, fog: !1, side: v.DoubleSide })
1368
+ }, ja = (
1357
1369
  /* glsl */
1358
1370
  `
1359
1371
  varying vec2 vUv;
1360
1372
  void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); }`
1361
- ), Pa = (
1373
+ ), Xa = (
1362
1374
  /* glsl */
1363
1375
  `
1364
1376
  uniform vec2 uSize; uniform float uRadius; uniform float uBorder; uniform float uBar; uniform float uUnder;
@@ -1379,49 +1391,49 @@ void main() {
1379
1391
  if (a < 0.002) discard;
1380
1392
  gl_FragColor = vec4(col, a);
1381
1393
  }`
1382
- ), Hn = {
1394
+ ), Yn = {
1383
1395
  // border / bar / under in × font size; round in × plate height (0.5 = pill)
1384
1396
  pill: { fillA: 0.52, edgeA: 0.6, border: 0.055, bar: 0, under: 0, round: 0.5 },
1385
1397
  box: { fillA: 0.62, edgeA: 0.55, border: 0.055, bar: 0, under: 0, round: 0.14 },
1386
1398
  bar: { fillA: 0.66, edgeA: 0.95, border: 0, bar: 0.14, under: 0, round: 0.06 },
1387
1399
  underline: { fillA: 0.52, edgeA: 0.8, border: 0, bar: 0, under: 0.07, round: 0.06 },
1388
1400
  none: { fillA: 0, edgeA: 0, border: 0, bar: 0, under: 0, round: 0 }
1389
- }, Os = new x.Color("#03050b"), Ft = new x.Color("#eef2f8"), jn = new x.Color("#94a3b8");
1390
- function ht(e, t, n) {
1401
+ }, Gs = new v.Color("#03050b"), Zt = new v.Color("#eef2f8"), _n = new v.Color("#94a3b8");
1402
+ function mt(e, t, n) {
1391
1403
  if (e == null) return { text: "", ranges: null, key: "" };
1392
1404
  if (typeof e == "string") {
1393
- const c = Ta(t ? e.toUpperCase() : e);
1405
+ const c = Ha(t ? e.toUpperCase() : e);
1394
1406
  return { text: c, ranges: null, key: c };
1395
1407
  }
1396
1408
  let s = "", o = "";
1397
1409
  const r = {};
1398
1410
  for (const c of e) {
1399
- let u = Ss(t ? c.text.toUpperCase() : c.text);
1411
+ let u = Ps(t ? c.text.toUpperCase() : c.text);
1400
1412
  if (s || (u = u.trimStart()), !u) continue;
1401
1413
  const d = c.color != null ? n.set(c.color).getHex() : -1;
1402
1414
  d >= 0 && (r[s.length] = d), o += `${u}${d}`, s += u;
1403
1415
  }
1404
1416
  return { text: s.trimEnd(), ranges: r, key: o };
1405
1417
  }
1406
- function Mc(e, t, n = ["working…", "done"]) {
1418
+ function Fc(e, t, n = ["working…", "done"]) {
1407
1419
  const s = e.status !== "started";
1408
1420
  if (!e.hasSteps) return [{ text: s ? e.status === "failed" ? n[2] ?? "failed" : n[1] : n[0], color: t.base }];
1409
1421
  const o = [{ text: "hatchet · ", color: t.base }];
1410
- return _t.forEach((r, c) => {
1422
+ return sn.forEach((r, c) => {
1411
1423
  c && o.push({ text: " › ", color: t.base });
1412
1424
  const u = e.steps[r];
1413
- o.push({ text: r, color: u === "running" ? t.current : u === "done" ? t.done : u === "failed" ? "#ff5d5d" : t.queued ?? Wa(t.base) });
1425
+ o.push({ text: r, color: u === "running" ? t.current : u === "done" ? t.done : u === "failed" ? "#ff5d5d" : t.queued ?? Qa(t.base) });
1414
1426
  }), o;
1415
1427
  }
1416
- const Ga = new x.Color(), Wa = (e) => "#" + Ga.set(e).lerp(Os, 0.45).getHexString();
1417
- function yc({ prefix: e = "", suffix: t = "", ...n }) {
1418
- const s = st();
1419
- return /* @__PURE__ */ f(Vs, { declutter: "resource", ...n, text: e + s.graphLabel + t });
1428
+ const Ka = new v.Color(), Qa = (e) => "#" + Ka.set(e).lerp(Gs, 0.45).getHexString();
1429
+ function Bc({ prefix: e = "", suffix: t = "", ...n }) {
1430
+ const s = rt();
1431
+ return /* @__PURE__ */ f(Ws, { declutter: "resource", ...n, text: e + s.graphLabel + t });
1420
1432
  }
1421
- function Vs(e) {
1422
- return /* @__PURE__ */ f(Ds, { fallback: null, children: /* @__PURE__ */ f(Ia, { ...e }) });
1433
+ function Ws(e) {
1434
+ return /* @__PURE__ */ f(_s, { fallback: null, children: /* @__PURE__ */ f(_a, { ...e }) });
1423
1435
  }
1424
- const qa = {
1436
+ const Ya = {
1425
1437
  color: "#818cf8",
1426
1438
  size: 0.24,
1427
1439
  opacity: 1,
@@ -1443,23 +1455,23 @@ const qa = {
1443
1455
  leader: !1,
1444
1456
  fit: !1
1445
1457
  };
1446
- function Ia(e) {
1458
+ function _a(e) {
1447
1459
  var S, O;
1448
- const t = { ...qa, ...Na(e) }, n = L(t);
1460
+ const t = { ...Ya, ...$a(e) }, n = B(t);
1449
1461
  n.current = t;
1450
- const s = L(null), o = L(null), r = L(null), c = L(null), u = L(null), d = L(null), p = L(null), i = ne(
1462
+ const s = B(null), o = B(null), r = B(null), c = B(null), u = B(null), d = B(null), p = B(null), i = se(
1451
1463
  () => ({
1452
1464
  target: t.opacity,
1453
1465
  cur: t.opacity,
1454
1466
  emph: !1,
1455
- accent: new x.Color(t.color),
1456
- textCol: new x.Color(t.textColor ?? Ft),
1457
- subCol: new x.Color(t.secondaryColor ?? jn),
1458
- mainColor: new x.Color(),
1459
- subColor: new x.Color(),
1460
- tmp: new x.Color(),
1461
- wp: new x.Vector3(),
1462
- q: new x.Quaternion(),
1467
+ accent: new v.Color(t.color),
1468
+ textCol: new v.Color(t.textColor ?? Zt),
1469
+ subCol: new v.Color(t.secondaryColor ?? _n),
1470
+ mainColor: new v.Color(),
1471
+ subColor: new v.Color(),
1472
+ tmp: new v.Color(),
1473
+ wp: new v.Vector3(),
1474
+ q: new v.Quaternion(),
1463
1475
  hasSub: !1,
1464
1476
  /** declutter: eased visibility factor, secondary line dropped, plate rects (billboard units) */
1465
1477
  dc: 1,
@@ -1472,99 +1484,99 @@ function Ia(e) {
1472
1484
  H1: 0,
1473
1485
  bx1: 0,
1474
1486
  by1: 0,
1475
- ndc: new x.Vector3(),
1487
+ ndc: new v.Vector3(),
1476
1488
  keyM: "\0",
1477
1489
  keyS: "\0"
1478
1490
  }),
1479
1491
  // eslint-disable-next-line react-hooks/exhaustive-deps
1480
1492
  []
1481
- ), w = ne(
1493
+ ), w = se(
1482
1494
  () => ({
1483
- plate: new x.ShaderMaterial({
1484
- vertexShader: Ca,
1485
- fragmentShader: Pa,
1495
+ plate: new v.ShaderMaterial({
1496
+ vertexShader: ja,
1497
+ fragmentShader: Xa,
1486
1498
  transparent: !0,
1487
1499
  depthWrite: !1,
1488
1500
  toneMapped: !1,
1489
1501
  uniforms: {
1490
- uSize: { value: new x.Vector2(1, 1) },
1502
+ uSize: { value: new v.Vector2(1, 1) },
1491
1503
  uRadius: { value: 0.1 },
1492
1504
  uBorder: { value: 0 },
1493
1505
  uBar: { value: 0 },
1494
1506
  uUnder: { value: 0 },
1495
- uFill: { value: Os.clone() },
1507
+ uFill: { value: Gs.clone() },
1496
1508
  uFillA: { value: 0.5 },
1497
- uEdge: { value: new x.Color() },
1509
+ uEdge: { value: new v.Color() },
1498
1510
  uEdgeA: { value: 0.5 },
1499
1511
  uOpacity: { value: 1 }
1500
1512
  }
1501
1513
  }),
1502
- leader: new x.MeshBasicMaterial({ transparent: !0, depthWrite: !1, toneMapped: !1, fog: !1 })
1514
+ leader: new v.MeshBasicMaterial({ transparent: !0, depthWrite: !1, toneMapped: !1, fog: !1 })
1503
1515
  }),
1504
1516
  []
1505
1517
  );
1506
- Q(() => () => (w.plate.dispose(), w.leader.dispose()), [w]), w.plate.depthTest = t.depthTest, w.leader.depthTest = t.depthTest;
1507
- const a = ne(() => {
1508
- const V = () => n.current.secondarySize ?? n.current.size * 0.78, T = () => {
1518
+ Y(() => () => (w.plate.dispose(), w.leader.dispose()), [w]), w.plate.depthTest = t.depthTest, w.leader.depthTest = t.depthTest;
1519
+ const a = se(() => {
1520
+ const V = () => n.current.secondarySize ?? n.current.size * 0.78, z = () => {
1509
1521
  const E = n.current;
1510
1522
  return E.maxWidth > 0 ? Math.max(4, Math.floor(E.maxWidth / (E.size * (E.font === "mono" ? 0.62 : 0.56) * (1 + E.letterSpacing)))) : 0;
1511
1523
  };
1512
1524
  return { applyColors: () => {
1513
- const E = n.current, v = w.plate.uniforms, q = Hn[E.plate];
1514
- v.uEdge.value.copy(i.accent).lerp(Ft, i.emph ? 0.3 : 0), v.uEdgeA.value = Math.min(1, q.edgeA * (i.emph ? 1.45 : 1)), v.uFillA.value = q.fillA, w.leader.color.copy(i.accent).multiplyScalar(0.85);
1515
- const D = E.glow * (i.emph ? 1.12 : 0.95);
1516
- i.mainColor.copy(i.textCol).multiplyScalar(D), i.subColor.copy(i.subCol).multiplyScalar(D);
1525
+ const E = n.current, y = w.plate.uniforms, q = Yn[E.plate];
1526
+ y.uEdge.value.copy(i.accent).lerp(Zt, i.emph ? 0.3 : 0), y.uEdgeA.value = Math.min(1, q.edgeA * (i.emph ? 1.45 : 1)), y.uFillA.value = q.fillA, w.leader.color.copy(i.accent).multiplyScalar(0.85);
1527
+ const F = E.glow * (i.emph ? 1.12 : 0.95);
1528
+ i.mainColor.copy(i.textCol).multiplyScalar(F), i.subColor.copy(i.subCol).multiplyScalar(F);
1517
1529
  }, layout: () => {
1518
- var ue, Je, Ie, ln, un;
1530
+ var de, He, Ie, mn, gn;
1519
1531
  const E = d.current;
1520
1532
  if (!E || !c.current || !r.current) return;
1521
- const v = n.current, q = v.size, D = (ue = E.textRenderInfo) == null ? void 0 : ue.blockBounds, G = i.hasSub ? (Ie = (Je = p.current) == null ? void 0 : Je.textRenderInfo) == null ? void 0 : Ie.blockBounds : void 0, J = D && E.text ? D[2] - D[0] : 0, H = G ? G[2] - G[0] : 0, j = q * 1.16, I = Hn[v.plate], y = I.bar * q, W = v.plate === "none", X = W ? 0 : q * 0.28, $ = ((ln = v.offset) == null ? void 0 : ln[0]) ?? 0, le = ((un = v.offset) == null ? void 0 : un[1]) ?? 0;
1522
- let me = 0, ee = 0, he = 0, ye = 0, te = 0;
1523
- for (let ve = 0; ve < 2; ve++) {
1524
- const rt = ve === 0 && i.hasSub, qs = W ? 0 : q * (v.plate === "pill" && !rt ? 0.6 : 0.5), dn = rt ? Math.max(J, H) : J, fn = rt ? V() * 1.2 : 0, hn = rt ? q * 0.1 : 0, He = dn + qs * 2 + y, je = j + hn + fn + X * 2, pn = $ + (v.anchorX === "left" ? He / 2 : v.anchorX === "right" ? -He / 2 : 0), mn = le + (v.anchorY === "bottom" ? je / 2 : v.anchorY === "top" ? -je / 2 : 0);
1525
- ve === 0 ? (i.W = He, i.H = je, i.bx = pn, i.by = mn) : (i.W1 = i.hasSub ? He : 0, i.H1 = je, i.bx1 = pn, i.by1 = mn), ve === 0 == !(i.hasSub && i.subOff) && (me = He, ee = je, he = dn, ye = fn, te = hn);
1533
+ const y = n.current, q = y.size, F = (de = E.textRenderInfo) == null ? void 0 : de.blockBounds, W = i.hasSub ? (Ie = (He = p.current) == null ? void 0 : He.textRenderInfo) == null ? void 0 : Ie.blockBounds : void 0, H = F && E.text ? F[2] - F[0] : 0, j = W ? W[2] - W[0] : 0, K = q * 1.16, L = Yn[y.plate], x = L.bar * q, G = y.plate === "none", J = G ? 0 : q * 0.28, X = ((mn = y.offset) == null ? void 0 : mn[0]) ?? 0, ue = ((gn = y.offset) == null ? void 0 : gn[1]) ?? 0;
1534
+ let ge = 0, ee = 0, pe = 0, we = 0, te = 0;
1535
+ for (let xe = 0; xe < 2; xe++) {
1536
+ const at = xe === 0 && i.hasSub, js = G ? 0 : q * (y.plate === "pill" && !at ? 0.6 : 0.5), An = at ? Math.max(H, j) : H, bn = at ? V() * 1.2 : 0, Mn = at ? q * 0.1 : 0, je = An + js * 2 + x, Xe = K + Mn + bn + J * 2, yn = X + (y.anchorX === "left" ? je / 2 : y.anchorX === "right" ? -je / 2 : 0), vn = ue + (y.anchorY === "bottom" ? Xe / 2 : y.anchorY === "top" ? -Xe / 2 : 0);
1537
+ xe === 0 ? (i.W = je, i.H = Xe, i.bx = yn, i.by = vn) : (i.W1 = i.hasSub ? je : 0, i.H1 = Xe, i.bx1 = yn, i.by1 = vn), xe === 0 == !(i.hasSub && i.subOff) && (ge = je, ee = Xe, pe = An, we = bn, te = Mn);
1526
1538
  }
1527
- const se = w.plate.uniforms;
1528
- se.uSize.value.set(me, ee), se.uRadius.value = Math.min(ee * I.round, ee * 0.5), se.uBorder.value = I.border * q, se.uBar.value = y, se.uUnder.value = I.under * q, c.current.scale.set(Math.max(me, 1e-4), Math.max(ee, 1e-4), 1), c.current.visible = !W && he > 0;
1529
- const Ve = v.textAlign === "left" ? -he / 2 + y / 2 : v.textAlign === "right" ? he / 2 + y / 2 : y / 2, N = ee / 2 - X - j / 2;
1530
- E.position.set(Ve, N, 1e-3), p.current && (p.current.position.set(Ve, N - j / 2 - te - ye / 2, 1e-3), p.current.visible = i.hasSub && !i.subOff), r.current.position.set($ + (v.anchorX === "left" ? me / 2 : v.anchorX === "right" ? -me / 2 : 0), le + (v.anchorY === "bottom" ? ee / 2 : v.anchorY === "top" ? -ee / 2 : 0), 0);
1531
- const Y = u.current;
1532
- if (Y) {
1533
- const ve = Math.hypot($, le);
1534
- Y.visible = ve > 1e-3, Y.position.set($ / 2, le / 2, 0), Y.rotation.z = Math.atan2(le, $), Y.scale.set(Math.max(ve, 1e-4), q * 0.05, 1);
1539
+ const re = w.plate.uniforms;
1540
+ re.uSize.value.set(ge, ee), re.uRadius.value = Math.min(ee * L.round, ee * 0.5), re.uBorder.value = L.border * q, re.uBar.value = x, re.uUnder.value = L.under * q, c.current.scale.set(Math.max(ge, 1e-4), Math.max(ee, 1e-4), 1), c.current.visible = !G && pe > 0;
1541
+ const Ee = y.textAlign === "left" ? -pe / 2 + x / 2 : y.textAlign === "right" ? pe / 2 + x / 2 : x / 2, N = ee / 2 - J - K / 2;
1542
+ E.position.set(Ee, N, 1e-3), p.current && (p.current.position.set(Ee, N - K / 2 - te - we / 2, 1e-3), p.current.visible = i.hasSub && !i.subOff), r.current.position.set(X + (y.anchorX === "left" ? ge / 2 : y.anchorX === "right" ? -ge / 2 : 0), ue + (y.anchorY === "bottom" ? ee / 2 : y.anchorY === "top" ? -ee / 2 : 0), 0);
1543
+ const _ = u.current;
1544
+ if (_) {
1545
+ const xe = Math.hypot(X, ue);
1546
+ _.visible = xe > 1e-3, _.position.set(X / 2, ue / 2, 0), _.rotation.z = Math.atan2(ue, X), _.scale.set(Math.max(xe, 1e-4), q * 0.05, 1);
1535
1547
  }
1536
- }, setLines: (E, v) => {
1537
- const q = d.current, D = p.current;
1548
+ }, setLines: (E, y) => {
1549
+ const q = d.current, F = p.current;
1538
1550
  if (!q) return;
1539
- const G = n.current, J = T(), H = ht(E, G.uppercase, i.tmp), j = ht(v, G.uppercase, i.tmp), I = `${H.key}|${J}`, y = `${j.key}|${J}`;
1540
- if (I !== i.keyM && (i.keyM = I, q.text = Zn(H.text, J), q.colorRanges = H.ranges, q.sync()), D && y !== i.keyS) {
1541
- i.keyS = y;
1542
- const W = Zn(j.text, J ? Math.round(J * G.size / V()) : 0);
1543
- i.hasSub = !!W, D.visible = i.hasSub && !i.subOff, D.text = W, D.colorRanges = j.ranges, D.sync();
1551
+ const W = n.current, H = z(), j = mt(E, W.uppercase, i.tmp), K = mt(y, W.uppercase, i.tmp), L = `${j.key}|${H}`, x = `${K.key}|${H}`;
1552
+ if (L !== i.keyM && (i.keyM = L, q.text = Xn(j.text, H), q.colorRanges = j.ranges, q.sync()), F && x !== i.keyS) {
1553
+ i.keyS = x;
1554
+ const G = Xn(K.text, H ? Math.round(H * W.size / V()) : 0);
1555
+ i.hasSub = !!G, F.visible = i.hasSub && !i.subOff, F.text = G, F.colorRanges = K.ranges, F.sync();
1544
1556
  }
1545
1557
  } };
1546
1558
  }, [w, i]);
1547
- Q(() => {
1548
- const V = [d.current, p.current].filter(Boolean), T = () => a.layout();
1549
- for (const P of V) P.addEventListener("synccomplete", T);
1559
+ Y(() => {
1560
+ const V = [d.current, p.current].filter(Boolean), z = () => a.layout();
1561
+ for (const P of V) P.addEventListener("synccomplete", z);
1550
1562
  return a.applyColors(), a.setLines(n.current.text, n.current.secondary), a.layout(), () => {
1551
- for (const P of V) P.removeEventListener("synccomplete", T);
1563
+ for (const P of V) P.removeEventListener("synccomplete", z);
1552
1564
  };
1553
1565
  }, [a]);
1554
- const l = ht(t.text, t.uppercase, i.tmp).key, k = ht(t.secondary, t.uppercase, i.tmp).key;
1555
- Q(() => a.setLines(n.current.text, n.current.secondary), [a, l, k, t.uppercase, t.maxWidth, t.size]), Q(() => {
1556
- i.accent.set(n.current.color), i.textCol.set(n.current.textColor ?? Ft), i.subCol.set(n.current.secondaryColor ?? jn), a.applyColors();
1557
- }, [a, i, t.color, t.textColor, t.secondaryColor, t.glow, t.plate]), Q(() => void (i.target = t.opacity), [i, t.opacity]), Q(() => a.layout(), [a, t.size, t.plate, t.anchorX, t.anchorY, t.textAlign, (S = t.offset) == null ? void 0 : S[0], (O = t.offset) == null ? void 0 : O[1]]), Us(
1566
+ const l = mt(t.text, t.uppercase, i.tmp).key, k = mt(t.secondary, t.uppercase, i.tmp).key;
1567
+ Y(() => a.setLines(n.current.text, n.current.secondary), [a, l, k, t.uppercase, t.maxWidth, t.size]), Y(() => {
1568
+ i.accent.set(n.current.color), i.textCol.set(n.current.textColor ?? Zt), i.subCol.set(n.current.secondaryColor ?? _n), a.applyColors();
1569
+ }, [a, i, t.color, t.textColor, t.secondaryColor, t.glow, t.plate]), Y(() => void (i.target = t.opacity), [i, t.opacity]), Y(() => a.layout(), [a, t.size, t.plate, t.anchorX, t.anchorY, t.textAlign, (S = t.offset) == null ? void 0 : S[0], (O = t.offset) == null ? void 0 : O[1]]), $s(
1558
1570
  t.ref,
1559
1571
  () => ({
1560
1572
  get object() {
1561
1573
  return s.current;
1562
1574
  },
1563
- setOpacity(V, T = !1) {
1564
- i.target = V, T && (i.cur = V);
1575
+ setOpacity(V, z = !1) {
1576
+ i.target = V, z && (i.cur = V);
1565
1577
  },
1566
- setText(V, T) {
1567
- a.setLines(V, T ?? null);
1578
+ setText(V, z) {
1579
+ a.setLines(V, z ?? null);
1568
1580
  },
1569
1581
  setColor(V) {
1570
1582
  i.tmp.set(V), i.tmp.equals(i.accent) || (i.accent.copy(i.tmp), a.applyColors());
@@ -1575,60 +1587,60 @@ function Ia(e) {
1575
1587
  }),
1576
1588
  [a, i]
1577
1589
  );
1578
- const b = ts(We), m = ne(
1579
- () => t.declutter === !1 ? null : ir(t.declutter ?? b.kind, b.agent, t.size),
1590
+ const b = ls(qe), m = se(
1591
+ () => t.declutter === !1 ? null : yr(t.declutter ?? b.kind, b.agent, t.size),
1580
1592
  [t.declutter, b, t.size]
1581
1593
  );
1582
- Q(() => {
1594
+ Y(() => {
1583
1595
  if (m)
1584
- return lr(m), () => ur(m);
1585
- }, [m]), Oe(({ camera: V, size: T }, P) => {
1586
- const F = s.current, Z = o.current;
1587
- if (!F || !Z) return;
1596
+ return vr(m), () => wr(m);
1597
+ }, [m]), ye(({ camera: V, size: z }, P) => {
1598
+ const I = s.current, Z = o.current;
1599
+ if (!I || !Z) return;
1588
1600
  const E = n.current;
1589
1601
  i.cur !== i.target && (E.fadeMs <= 0 ? i.cur = i.target : (i.cur += (i.target - i.cur) * Math.min(1, P * 1e3 / E.fadeMs), Math.abs(i.target - i.cur) < 4e-3 && (i.cur = i.target)));
1590
- const v = m;
1591
- if (v) {
1592
- const y = U.active ? v.show : 1;
1593
- i.dc += (y - i.dc) * Math.min(1, P / 0.12), Math.abs(y - i.dc) < 0.01 && (i.dc = y);
1594
- const W = U.active ? v.subOff : !1;
1595
- W !== i.subOff && i.hasSub && (i.subOff = W, a.layout()), v.live = !1;
1602
+ const y = m;
1603
+ if (y) {
1604
+ const G = U.active ? y.show : 1;
1605
+ i.dc += (G - i.dc) * Math.min(1, P / 0.12), Math.abs(G - i.dc) < 0.01 && (i.dc = G);
1606
+ const J = U.active ? y.subOff : !1;
1607
+ J !== i.subOff && i.hasSub && (i.subOff = J, a.layout()), y.live = !1;
1596
1608
  }
1597
- if (v && (v.drawn = !1), i.cur <= 4e-3 || !F.visible) {
1609
+ if (y && (y.drawn = !1), i.cur <= 4e-3 || !I.visible) {
1598
1610
  Z.visible = !1;
1599
1611
  return;
1600
1612
  }
1601
- F.getWorldPosition(i.wp), F.getWorldQuaternion(i.q);
1602
- const q = i.wp.distanceTo(V.position), D = E.fit ? R.label : 1;
1603
- let G = D;
1604
- const J = V, H = V, j = J.isPerspectiveCamera ? 2 * q * Math.tan(x.MathUtils.degToRad(J.fov) / 2) / (J.zoom * T.height) : (H.top - H.bottom) / (H.zoom * T.height);
1613
+ I.getWorldPosition(i.wp), I.getWorldQuaternion(i.q);
1614
+ const q = i.wp.distanceTo(V.position), F = E.fit ? C.label : 1;
1615
+ let W = F;
1616
+ const H = V, j = V, K = H.isPerspectiveCamera ? 2 * q * Math.tan(v.MathUtils.degToRad(H.fov) / 2) / (H.zoom * z.height) : (j.top - j.bottom) / (j.zoom * z.height);
1605
1617
  if (E.pxRange) {
1606
- const y = E.size * D / Math.max(j, 1e-6), W = U.pxk;
1607
- G = x.MathUtils.clamp(y, E.pxRange[0] * W, E.pxRange[1] * W) / y * D;
1618
+ const G = E.size * F / Math.max(K, 1e-6), J = U.pxk;
1619
+ W = v.MathUtils.clamp(G, E.pxRange[0] * J, E.pxRange[1] * J) / G * F;
1608
1620
  }
1609
- if (v && U.due && Xn(F) && (i.ndc.copy(i.wp).project(V), i.ndc.z < 1 && i.ndc.z > -1)) {
1610
- const y = G / Math.max(j, 1e-6), W = (i.ndc.x + 1) / 2 * T.width, X = (1 - i.ndc.y) / 2 * T.height;
1611
- v.x = W + i.bx * y, v.y = X - i.by * y, v.w = i.W * y, v.h = i.H * y, v.x1 = W + i.bx1 * y, v.y1 = X - i.by1 * y, v.w1 = i.W1 * y, v.h1 = i.H1 * y, v.live = v.w > 1 && v.x + v.w / 2 > 0 && v.x - v.w / 2 < T.width && v.y + v.h / 2 > 0 && v.y - v.h / 2 < T.height, v.clip = v.x - v.w / 2 < -2 || v.x + v.w / 2 > T.width + 2 || v.y - v.h / 2 < -2 || v.y + v.h / 2 > T.height + 2, v.ax = i.wp.x, v.ay = i.wp.y, v.az = i.wp.z, v.ox0 = v.x - v.w / 2 - W, v.ox1 = v.x + v.w / 2 - W, v.oy0 = v.y - v.h / 2 - X, v.oy1 = v.y + v.h / 2 - X, v.w > 1 && (v.seen = performance.now());
1621
+ if (y && U.due && $n(I) && (i.ndc.copy(i.wp).project(V), i.ndc.z < 1 && i.ndc.z > -1)) {
1622
+ const G = W / Math.max(K, 1e-6), J = (i.ndc.x + 1) / 2 * z.width, X = (1 - i.ndc.y) / 2 * z.height;
1623
+ y.x = J + i.bx * G, y.y = X - i.by * G, y.w = i.W * G, y.h = i.H * G, y.x1 = J + i.bx1 * G, y.y1 = X - i.by1 * G, y.w1 = i.W1 * G, y.h1 = i.H1 * G, y.live = y.w > 1 && y.x + y.w / 2 > 0 && y.x - y.w / 2 < z.width && y.y + y.h / 2 > 0 && y.y - y.h / 2 < z.height, y.clip = y.x - y.w / 2 < -2 || y.x + y.w / 2 > z.width + 2 || y.y - y.h / 2 < -2 || y.y + y.h / 2 > z.height + 2, y.ax = i.wp.x, y.ay = i.wp.y, y.az = i.wp.z, y.ox0 = y.x - y.w / 2 - J, y.ox1 = y.x + y.w / 2 - J, y.oy0 = y.y - y.h / 2 - X, y.oy1 = y.y + y.h / 2 - X, y.w > 1 && (y.seen = performance.now());
1612
1624
  }
1613
- const I = i.cur * i.dc * (1 - E.depthFade * x.MathUtils.smoothstep(q, E.fadeRange[0], E.fadeRange[1]));
1614
- if (I <= 4e-3) {
1625
+ const L = b.agent, x = i.cur * i.dc * (L ? 1 - 0.55 * L.dim : 1) * (1 - E.depthFade * v.MathUtils.smoothstep(q, E.fadeRange[0], E.fadeRange[1]));
1626
+ if (x <= 4e-3) {
1615
1627
  Z.visible = !1;
1616
1628
  return;
1617
1629
  }
1618
- Z.visible = !0, v && (v.drawn = I > 0.05 && Xn(F.parent)), Z.quaternion.copy(i.q.invert()).multiply(V.quaternion), Z.scale.setScalar(G / (F.matrixWorld.getMaxScaleOnAxis() || 1)), w.plate.uniforms.uOpacity.value = I, w.leader.opacity = I * 0.65, d.current && (d.current.fillOpacity = I), p.current && (p.current.fillOpacity = I * 0.92);
1630
+ Z.visible = !0, y && (y.drawn = x > 0.05 && $n(I.parent)), Z.quaternion.copy(i.q.invert()).multiply(V.quaternion), Z.scale.setScalar(W / (I.matrixWorld.getMaxScaleOnAxis() || 1)), w.plate.uniforms.uOpacity.value = x, w.leader.opacity = x * 0.65, d.current && (d.current.fillOpacity = x), p.current && (p.current.fillOpacity = x * 0.92);
1619
1631
  });
1620
- const M = t.depthTest ? Jn.depth : Jn.top, A = !!t.onClick;
1621
- return /* @__PURE__ */ f("group", { ref: s, position: t.position, visible: t.visible ?? !0, children: /* @__PURE__ */ z("group", { ref: o, visible: !1, children: [
1622
- t.leader && /* @__PURE__ */ f("mesh", { ref: u, geometry: Ln, material: w.leader, renderOrder: t.renderOrder, raycast: ft }),
1623
- /* @__PURE__ */ z("group", { ref: r, children: [
1632
+ const M = t.depthTest ? Qn.depth : Qn.top, A = !!t.onClick;
1633
+ return /* @__PURE__ */ f("group", { ref: s, position: t.position, visible: t.visible ?? !0, userData: Ua, children: /* @__PURE__ */ R("group", { ref: o, visible: !1, children: [
1634
+ t.leader && /* @__PURE__ */ f("mesh", { ref: u, geometry: Kn, material: w.leader, renderOrder: t.renderOrder, raycast: pt }),
1635
+ /* @__PURE__ */ R("group", { ref: r, children: [
1624
1636
  /* @__PURE__ */ f(
1625
1637
  "mesh",
1626
1638
  {
1627
1639
  ref: c,
1628
- geometry: Ln,
1640
+ geometry: Kn,
1629
1641
  material: w.plate,
1630
1642
  renderOrder: t.renderOrder,
1631
- raycast: A ? x.Mesh.prototype.raycast : ft,
1643
+ raycast: A ? v.Mesh.prototype.raycast : pt,
1632
1644
  onClick: t.onClick,
1633
1645
  onPointerOver: A ? () => {
1634
1646
  var V;
@@ -1641,35 +1653,35 @@ function Ia(e) {
1641
1653
  }
1642
1654
  ),
1643
1655
  /* @__PURE__ */ f(
1644
- gn,
1656
+ wn,
1645
1657
  {
1646
1658
  ref: d,
1647
- font: Dn[t.font],
1648
- characters: Un,
1659
+ font: Hn[t.font],
1660
+ characters: jn,
1649
1661
  fontSize: t.size,
1650
1662
  letterSpacing: t.letterSpacing,
1651
1663
  anchorX: t.textAlign,
1652
1664
  anchorY: "middle",
1653
1665
  material: M,
1654
1666
  renderOrder: t.renderOrder + 1,
1655
- raycast: ft,
1667
+ raycast: pt,
1656
1668
  color: i.mainColor,
1657
1669
  children: ""
1658
1670
  }
1659
1671
  ),
1660
1672
  /* @__PURE__ */ f(
1661
- gn,
1673
+ wn,
1662
1674
  {
1663
1675
  ref: p,
1664
- font: Dn[t.font],
1665
- characters: Un,
1676
+ font: Hn[t.font],
1677
+ characters: jn,
1666
1678
  fontSize: t.secondarySize ?? t.size * 0.78,
1667
1679
  letterSpacing: t.letterSpacing,
1668
1680
  anchorX: t.textAlign,
1669
1681
  anchorY: "middle",
1670
1682
  material: M,
1671
1683
  renderOrder: t.renderOrder + 1,
1672
- raycast: ft,
1684
+ raycast: pt,
1673
1685
  color: i.subColor,
1674
1686
  visible: !1,
1675
1687
  children: ""
@@ -1679,25 +1691,25 @@ function Ia(e) {
1679
1691
  ] })
1680
1692
  ] }) });
1681
1693
  }
1682
- function Xn(e) {
1694
+ function $n(e) {
1683
1695
  for (; e; e = e.parent) if (!e.visible) return !1;
1684
1696
  return !0;
1685
1697
  }
1686
- function Na(e) {
1698
+ function $a(e) {
1687
1699
  const t = {};
1688
1700
  for (const n in e) e[n] !== void 0 && (t[n] = e[n]);
1689
1701
  return t;
1690
1702
  }
1691
- const Fe = 220, Es = ["planner", "researcher", "writer", "graph_scout", "records_scout", "data_scout"], Fa = Object.fromEntries(Es.map((e) => [e, new x.Color(Pe[e])]));
1692
- let pt = null;
1693
- function Ba() {
1694
- if (pt) return pt;
1703
+ const Fe = 220, qs = ["planner", "researcher", "writer", "graph_scout", "records_scout", "data_scout"], eo = Object.fromEntries(qs.map((e) => [e, new v.Color(Ge[e])]));
1704
+ let gt = null;
1705
+ function to() {
1706
+ if (gt) return gt;
1695
1707
  const e = document.createElement("canvas");
1696
1708
  e.width = e.height = 128;
1697
1709
  const t = e.getContext("2d"), n = t.createRadialGradient(64, 64, 0, 64, 64, 64);
1698
- return n.addColorStop(0, "rgba(255,255,255,1)"), n.addColorStop(0.18, "rgba(255,255,255,0.55)"), n.addColorStop(0.5, "rgba(255,255,255,0.12)"), n.addColorStop(1, "rgba(255,255,255,0)"), t.fillStyle = n, t.fillRect(0, 0, 128, 128), pt = new x.CanvasTexture(e), pt;
1710
+ return n.addColorStop(0, "rgba(255,255,255,1)"), n.addColorStop(0.18, "rgba(255,255,255,0.55)"), n.addColorStop(0.5, "rgba(255,255,255,0.12)"), n.addColorStop(1, "rgba(255,255,255,0)"), t.fillStyle = n, t.fillRect(0, 0, 128, 128), gt = new v.CanvasTexture(e), gt;
1699
1711
  }
1700
- const Da = (
1712
+ const no = (
1701
1713
  /* glsl */
1702
1714
  `
1703
1715
  attribute vec4 aSeed; // theta, phi(cos), radius 0..1, speed
@@ -1722,7 +1734,7 @@ const Da = (
1722
1734
  vA = tw;
1723
1735
  }
1724
1736
  `
1725
- ), Ua = (
1737
+ ), so = (
1726
1738
  /* glsl */
1727
1739
  `
1728
1740
  uniform float uOpacity;
@@ -1737,20 +1749,20 @@ const Da = (
1737
1749
  }
1738
1750
  `
1739
1751
  );
1740
- function Za() {
1741
- const e = new x.BufferGeometry(), t = new Float32Array(Fe * 3), n = new Float32Array(Fe * 4);
1752
+ function ro() {
1753
+ const e = new v.BufferGeometry(), t = new Float32Array(Fe * 3), n = new Float32Array(Fe * 4);
1742
1754
  for (let s = 0; s < Fe; s++)
1743
1755
  n[s * 4] = s * 2.39996 + Math.random() * 0.3, n[s * 4 + 1] = 1 - 2 * (s * 0.618034 % 1), n[s * 4 + 2] = Math.pow(Math.random(), 0.45), n[s * 4 + 3] = (0.25 + Math.random() * 0.6) * (Math.random() < 0.5 ? -1 : 1);
1744
- return e.setAttribute("position", new x.BufferAttribute(t, 3)), e.setAttribute("aSeed", new x.BufferAttribute(n, 4)), e.setAttribute("aColor", new x.BufferAttribute(new Float32Array(Fe * 3), 3)), e.setAttribute("aBright", new x.BufferAttribute(new Float32Array(Fe), 1)), e.setDrawRange(0, 0), e.boundingSphere = new x.Sphere(new x.Vector3(), 50), e;
1756
+ return e.setAttribute("position", new v.BufferAttribute(t, 3)), e.setAttribute("aSeed", new v.BufferAttribute(n, 4)), e.setAttribute("aColor", new v.BufferAttribute(new Float32Array(Fe * 3), 3)), e.setAttribute("aBright", new v.BufferAttribute(new Float32Array(Fe), 1)), e.setDrawRange(0, 0), e.boundingSphere = new v.Sphere(new v.Vector3(), 50), e;
1745
1757
  }
1746
- function La({ cluster: e, position: t, place: n, color: s, radius: o = 1.4, variant: r = "orb", pointSize: c = 1, labelBelow: u = 1.25, glowGain: d = 1, onClick: p }) {
1747
- const i = L(null), w = L(null), a = L(null), l = L(null), k = L(null), b = L(null), m = L(null), M = ne(() => new x.Color(s ?? e.color), [s, e.color]), A = ne(() => ({ l1: "", l2: "", seen: -1, vis: 0, hover: 0, over: !1, r: o, pos: new x.Vector3(), c: new x.Color(), tokSeen: -1, thSeen: -1, fresh: !0 }), [o]), S = ne(Za, []), O = ne(() => {
1748
- const P = (Z) => new x.SpriteMaterial({ map: Ba(), color: "#000", blending: x.AdditiveBlending, depthWrite: !1, transparent: !0, toneMapped: !1, opacity: Z }), F = new x.ShaderMaterial({
1749
- vertexShader: Da,
1750
- fragmentShader: Ua,
1758
+ function ao({ cluster: e, position: t, place: n, color: s, radius: o = 1.4, variant: r = "orb", pointSize: c = 1, labelBelow: u = 1.25, glowGain: d = 1, onClick: p }) {
1759
+ const i = B(null), w = B(null), a = B(null), l = B(null), k = B(null), b = B(null), m = B(null), M = se(() => new v.Color(s ?? e.color), [s, e.color]), A = se(() => ({ l1: "", l2: "", seen: -1, vis: 0, hover: 0, over: !1, r: o, pos: new v.Vector3(), c: new v.Color(), tokSeen: -1, thSeen: -1, fresh: !0 }), [o]), S = se(ro, []), O = se(() => {
1760
+ const P = (Z) => new v.SpriteMaterial({ map: to(), color: "#000", blending: v.AdditiveBlending, depthWrite: !1, transparent: !0, toneMapped: !1, opacity: Z }), I = new v.ShaderMaterial({
1761
+ vertexShader: no,
1762
+ fragmentShader: so,
1751
1763
  transparent: !0,
1752
1764
  depthWrite: !1,
1753
- blending: x.AdditiveBlending,
1765
+ blending: v.AdditiveBlending,
1754
1766
  toneMapped: !1,
1755
1767
  uniforms: {
1756
1768
  uTime: { value: 0 },
@@ -1763,57 +1775,57 @@ function La({ cluster: e, position: t, place: n, color: s, radius: o = 1.4, vari
1763
1775
  uOpacity: { value: 0 }
1764
1776
  }
1765
1777
  });
1766
- return { core: P(1), hot: P(1), halo: P(1), points: F, hit: new x.MeshBasicMaterial({ visible: !1 }) };
1778
+ return { core: P(1), hot: P(1), halo: P(1), points: I, hit: new v.MeshBasicMaterial({ visible: !1 }) };
1767
1779
  }, [o, c, r]);
1768
- Oe(({ clock: P, gl: F, camera: Z }) => {
1769
- var le, me;
1770
- const E = e, v = P.elapsedTime, q = E.active && C.grouped ? 1 : 0;
1780
+ ye(({ clock: P, gl: I, camera: Z }) => {
1781
+ var ue, ge;
1782
+ const E = e, y = P.elapsedTime, q = E.active && T.grouped ? 1 : 0;
1771
1783
  A.vis += (q - A.vis) * (q ? 0.06 : 0.12), A.vis < 3e-3 && (A.vis = 0);
1772
- const D = A.vis > 0;
1773
- if (i.current && (i.current.visible = D), m.current && !(D && q) && m.current.setOpacity(0, !0), !D) {
1784
+ const F = A.vis > 0;
1785
+ if (i.current && (i.current.visible = F), m.current && !(F && q) && m.current.setOpacity(0, !0), !F) {
1774
1786
  A.fresh = !0;
1775
1787
  return;
1776
1788
  }
1777
- i.current && (n ? n(E.lane, A.pos, v) : t && A.pos.set(t[0], t[1], t[2]), A.fresh ? (i.current.position.copy(A.pos), A.fresh = !1) : i.current.position.lerp(A.pos, 0.06));
1778
- const G = E.energy, J = 0.8 + 0.22 * Math.log2(1 + E.agents / 6);
1789
+ i.current && (n ? n(E.lane, A.pos, y) : t && A.pos.set(t[0], t[1], t[2]), A.fresh ? (i.current.position.copy(A.pos), A.fresh = !1) : i.current.position.lerp(A.pos, 0.06));
1790
+ const W = E.energy, H = 0.8 + 0.22 * Math.log2(1 + E.agents / 6);
1779
1791
  A.hover += ((A.over ? 1 : 0) - A.hover) * 0.15;
1780
- const H = o * Math.min(1.7, J) * (0.6 + 0.4 * A.vis) * (1 + A.hover * 0.08), j = Math.sin(v * (1.1 + G * 2.6) + E.lane), I = 1 + j * (0.04 + G * 0.1), y = O.points.uniforms;
1781
- y.uTime.value = v, y.uRadius.value = H, y.uEnergy.value = G;
1782
- const W = Z.fov ?? 50;
1783
- y.uPix.value = F.domElement.height / (2 * Math.tan(W * Math.PI / 360)), y.uOpacity.value = A.vis;
1784
- const X = d * A.vis;
1785
- if (w.current && (w.current.scale.setScalar(H * 2.4 * I), O.core.color.copy(M).multiplyScalar((0.32 + G * 0.45 + A.hover * 0.2) * X)), a.current && (a.current.scale.setScalar(H * 0.9 * I), O.hot.color.copy(M).lerp(Ja, 0.55).multiplyScalar((0.35 + G * 0.6) * X)), l.current && (l.current.scale.setScalar(H * 5.5 * (1 + j * 0.03)), O.halo.color.copy(M).multiplyScalar((0.07 + G * 0.08) * X)), (le = k.current) == null || le.scale.setScalar(H * 1.15), (me = b.current) == null || me.position.set(0, -H * u - 0.35, 0), E.version !== A.seen) {
1792
+ const j = o * Math.min(1.7, H) * (0.6 + 0.4 * A.vis) * (1 + A.hover * 0.08), K = Math.sin(y * (1.1 + W * 2.6) + E.lane), L = 1 + K * (0.04 + W * 0.1), x = O.points.uniforms;
1793
+ x.uTime.value = y, x.uRadius.value = j, x.uEnergy.value = W;
1794
+ const G = Z.fov ?? 50;
1795
+ x.uPix.value = I.domElement.height / (2 * Math.tan(G * Math.PI / 360)), x.uOpacity.value = A.vis;
1796
+ const J = d * A.vis;
1797
+ if (w.current && (w.current.scale.setScalar(j * 2.4 * L), O.core.color.copy(M).multiplyScalar((0.32 + W * 0.45 + A.hover * 0.2) * J)), a.current && (a.current.scale.setScalar(j * 0.9 * L), O.hot.color.copy(M).lerp(oo, 0.55).multiplyScalar((0.35 + W * 0.6) * J)), l.current && (l.current.scale.setScalar(j * 5.5 * (1 + K * 0.03)), O.halo.color.copy(M).multiplyScalar((0.07 + W * 0.08) * J)), (ue = k.current) == null || ue.scale.setScalar(j * 1.15), (ge = b.current) == null || ge.position.set(0, -j * u - 0.35, 0), E.version !== A.seen) {
1786
1798
  A.seen = E.version;
1787
- const ee = Math.min(Fe, Math.max(18, E.agents * 2)), he = S.getAttribute("aColor"), ye = S.getAttribute("aBright");
1799
+ const ee = Math.min(Fe, Math.max(18, E.agents * 2)), pe = S.getAttribute("aColor"), we = S.getAttribute("aBright");
1788
1800
  let te = 0;
1789
- const se = E.agents ? ee / E.agents : 1;
1790
- for (const N of Es) {
1791
- const Y = Math.round(E.types[N] * se);
1792
- for (let ue = 0; ue < Y && te < ee; ue++, te++)
1793
- A.c.copy(Fa[N]).lerp(M, 0.25), he.setXYZ(te, A.c.r, A.c.g, A.c.b);
1801
+ const re = E.agents ? ee / E.agents : 1;
1802
+ for (const N of qs) {
1803
+ const _ = Math.round(E.types[N] * re);
1804
+ for (let de = 0; de < _ && te < ee; de++, te++)
1805
+ A.c.copy(eo[N]).lerp(M, 0.25), pe.setXYZ(te, A.c.r, A.c.g, A.c.b);
1794
1806
  }
1795
- for (; te < ee; te++) he.setXYZ(te, M.r, M.g, M.b);
1796
- const Ve = E.agents ? E.thinking / E.agents : 0;
1797
- for (let N = 0; N < ee; N++) ye.setX(N, N * 0.618034 % 1 < Ve ? 1 : 0);
1798
- he.needsUpdate = !0, ye.needsUpdate = !0, S.setDrawRange(0, ee), A.l1 = `${E.runs} run${E.runs === 1 ? "" : "s"} · ${E.agents} agent${E.agents === 1 ? "" : "s"}`;
1807
+ for (; te < ee; te++) pe.setXYZ(te, M.r, M.g, M.b);
1808
+ const Ee = E.agents ? E.thinking / E.agents : 0;
1809
+ for (let N = 0; N < ee; N++) we.setX(N, N * 0.618034 % 1 < Ee ? 1 : 0);
1810
+ pe.needsUpdate = !0, we.needsUpdate = !0, S.setDrawRange(0, ee), A.l1 = `${E.runs} run${E.runs === 1 ? "" : "s"} · ${E.agents} agent${E.agents === 1 ? "" : "s"}`;
1799
1811
  }
1800
- const $ = Math.round(E.tokens / 1e3);
1801
- ($ !== A.tokSeen || E.thinking !== A.thSeen) && (A.tokSeen = $, A.thSeen = E.thinking, A.l2 = `${E.thinking} thinking · ${$ >= 1e3 ? `${($ / 1e3).toFixed(1)}M` : `${$}k`} tok`), m.current && (m.current.setText(A.l1, A.l2), m.current.setEmphasis(A.over), q && m.current.setOpacity(Math.min(1, A.vis * 1.2), !0));
1812
+ const X = Math.round(E.tokens / 1e3);
1813
+ (X !== A.tokSeen || E.thinking !== A.thSeen) && (A.tokSeen = X, A.thSeen = E.thinking, A.l2 = `${E.thinking} thinking · ${X >= 1e3 ? `${(X / 1e3).toFixed(1)}M` : `${X}k`} tok`), m.current && (m.current.setText(A.l1, A.l2), m.current.setEmphasis(A.over), q && m.current.setOpacity(Math.min(1, A.vis * 1.2), !0));
1802
1814
  });
1803
1815
  const V = (P) => {
1804
- var F;
1805
- (F = P == null ? void 0 : P.stopPropagation) == null || F.call(P), (p ?? $r)(e.lane);
1806
- }, T = (P) => {
1816
+ var I;
1817
+ (I = P == null ? void 0 : P.stopPropagation) == null || I.call(P), (p ?? fa)(e.lane);
1818
+ }, z = (P) => {
1807
1819
  A.over = P, document.body.style.cursor = P ? "pointer" : "";
1808
1820
  };
1809
- return /* @__PURE__ */ z("group", { ref: i, visible: !1, children: [
1821
+ return /* @__PURE__ */ R("group", { ref: i, visible: !1, children: [
1810
1822
  /* @__PURE__ */ f("sprite", { ref: l, material: O.halo }),
1811
1823
  /* @__PURE__ */ f("sprite", { ref: w, material: O.core }),
1812
1824
  /* @__PURE__ */ f("sprite", { ref: a, material: O.hot }),
1813
1825
  /* @__PURE__ */ f("points", { geometry: S, material: O.points, frustumCulled: !1 }),
1814
- /* @__PURE__ */ f("mesh", { ref: k, material: O.hit, onClick: V, onPointerOver: () => T(!0), onPointerOut: () => T(!1), children: /* @__PURE__ */ f("sphereGeometry", { args: [1, 12, 8] }) }),
1826
+ /* @__PURE__ */ f("mesh", { ref: k, material: O.hit, onClick: V, onPointerOver: () => z(!0), onPointerOut: () => z(!1), children: /* @__PURE__ */ f("sphereGeometry", { args: [1, 12, 8] }) }),
1815
1827
  /* @__PURE__ */ f("group", { ref: b, children: /* @__PURE__ */ f(
1816
- Vs,
1828
+ Ws,
1817
1829
  {
1818
1830
  ref: m,
1819
1831
  text: "",
@@ -1825,16 +1837,16 @@ function La({ cluster: e, position: t, place: n, color: s, radius: o = 1.4, vari
1825
1837
  pxRange: [10, 14],
1826
1838
  renderOrder: 28,
1827
1839
  onClick: (P) => V(P),
1828
- onHover: (P) => T(P)
1840
+ onHover: (P) => z(P)
1829
1841
  }
1830
1842
  ) })
1831
1843
  ] });
1832
1844
  }
1833
- const Ja = new x.Color("#ffffff"), Ha = Array.from({ length: _ }, (e, t) => t);
1834
- function ja({ place: e, color: t, ...n }) {
1835
- return /* @__PURE__ */ f(be, { children: Ha.map((s) => /* @__PURE__ */ f(La, { cluster: C.clusters[s], place: e, color: typeof t == "function" ? t(s) : t, ...n }, s)) });
1845
+ const oo = new v.Color("#ffffff"), co = Array.from({ length: $ }, (e, t) => t);
1846
+ function io({ place: e, color: t, ...n }) {
1847
+ return /* @__PURE__ */ f(Me, { children: co.map((s) => /* @__PURE__ */ f(ao, { cluster: T.clusters[s], place: e, color: typeof t == "function" ? t(s) : t, ...n }, s)) });
1836
1848
  }
1837
- const Xa = 3, Ka = [
1849
+ const lo = 3, uo = [
1838
1850
  "Why is churn rising for Acme Corp?",
1839
1851
  "Root cause of payment latency incidents",
1840
1852
  "Which region has the most incidents?",
@@ -1843,7 +1855,7 @@ const Xa = 3, Ka = [
1843
1855
  "Which customers are at risk of downgrading?",
1844
1856
  "Why did checkout conversion drop last week?",
1845
1857
  "Compare onboarding time across regions"
1846
- ], Bt = [
1858
+ ], Lt = [
1847
1859
  ["Acme Corp", "Enterprise Plan", "Churn Q3"],
1848
1860
  ["Payments API", "Incident #4821", "p99 Latency"],
1849
1861
  ["EMEA", "Incident #4790", "On-call Team"],
@@ -1852,19 +1864,19 @@ const Xa = 3, Ka = [
1852
1864
  ["Umbrella Co", "Seat Downgrade", "Renewal 2026"],
1853
1865
  ["Checkout Funnel", "Conversion Rate", "Release 4.12"],
1854
1866
  ["APAC", "Onboarding Time", "Customer Success"]
1855
- ], Qa = {
1867
+ ], fo = {
1856
1868
  analytics: [["Metrics API", "api"], ["Postgres", "db"]],
1857
1869
  warehouse: [["Snowflake", "warehouse"], ["Spark cluster", "spark"]],
1858
1870
  github: [["GitHub API", "api"]],
1859
1871
  "google-drive": [["Drive storage", "storage"]],
1860
1872
  slack: [["Slack API", "api"], ["Kafka events", "queue"]]
1861
- }, Te = (e) => e[Math.floor(Math.random() * e.length)], Ya = () => Math.random().toString(36).slice(2, 7);
1862
- function _a(e) {
1863
- const t = `run-${Ya()}`, n = Te(Ka), s = () => Date.now();
1873
+ }, Te = (e) => e[Math.floor(Math.random() * e.length)], ho = () => Math.random().toString(36).slice(2, 7);
1874
+ function po(e) {
1875
+ const t = `run-${ho()}`, n = Te(uo), s = () => Date.now();
1864
1876
  let o = 0;
1865
1877
  const r = (S, O) => {
1866
1878
  o += S, e(o, O);
1867
- }, c = (S, O, V) => r(250, () => ({ type: "spawn", run_id: t, id: S, agent: O, parent_id: V, ts: s() })), u = (S) => r(150, () => ({ type: "agent", run_id: t, id: S, status: "thinking", ts: s() })), d = (S, O = 120) => r(O, () => ({ type: "agent", run_id: t, id: S, status: "waiting", ts: s() })), p = (S, O) => r(O, () => ({ type: "llm", run_id: t, id: S, tokens_in: 1200 + Math.round(Math.random() * 3e3), tokens_out: 150 + Math.round(Math.random() * 700), latency_ms: 700 + Math.random() * 1800, ts: s() })), i = (S, O = 250) => r(O, () => ({ type: "exit", run_id: t, id: S, status: "done", ts: s() })), w = (S, O, V, T = 120) => r(T, () => ({ type: "message", run_id: t, from_id: S, to_id: O, text: V, ts: s() })), a = (S, O, V = 120) => r(V, () => ({ type: "step", run_id: t, step: S, status: O, ts: s() }));
1879
+ }, c = (S, O, V) => r(250, () => ({ type: "spawn", run_id: t, id: S, agent: O, parent_id: V, ts: s() })), u = (S) => r(150, () => ({ type: "agent", run_id: t, id: S, status: "thinking", ts: s() })), d = (S, O = 120) => r(O, () => ({ type: "agent", run_id: t, id: S, status: "waiting", ts: s() })), p = (S, O) => r(O, () => ({ type: "llm", run_id: t, id: S, tokens_in: 1200 + Math.round(Math.random() * 3e3), tokens_out: 150 + Math.round(Math.random() * 700), latency_ms: 700 + Math.random() * 1800, ts: s() })), i = (S, O = 250) => r(O, () => ({ type: "exit", run_id: t, id: S, status: "done", ts: s() })), w = (S, O, V, z = 120) => r(z, () => ({ type: "message", run_id: t, from_id: S, to_id: O, text: V, ts: s() })), a = (S, O, V = 120) => r(V, () => ({ type: "step", run_id: t, step: S, status: O, ts: s() }));
1868
1880
  r(0, () => ({ type: "run", run_id: t, status: "started", topic: n, workflow: "research_brief", ts: s() })), a("plan", "running", 300);
1869
1881
  const l = `${t}:planner`;
1870
1882
  c(l, "planner", null), u(l), p(l, 1500), p(l, 900), a("plan", "done", 300);
@@ -1879,46 +1891,46 @@ function _a(e) {
1879
1891
  const M = o;
1880
1892
  m.forEach((S, O) => {
1881
1893
  let V = M + 200 + O * 220;
1882
- const T = (G, J) => {
1883
- V += G, e(V, J);
1884
- }, P = Te(Bt), F = S.includes("graph_scout");
1885
- T(0, () => ({ type: "agent", run_id: t, id: S, status: "thinking", ts: s() })), T(500 + Math.random() * 500, () => ({ type: "tool", run_id: t, id: S, tool: F ? "graph_neighbors" : "search_records", args_preview: `"${P[0]}"`, ts: s() })), T(600, () => ({ type: "graph", run_id: t, id: S, op: "read", nodes: P, ts: s() })), T(700 + Math.random() * 900, () => ({ type: "llm", run_id: t, id: S, tokens_in: 1500 + Math.round(Math.random() * 2e3), tokens_out: 200 + Math.round(Math.random() * 400), latency_ms: 900 + Math.random() * 1200, ts: s() }));
1886
- const [Z, E] = Te(F ? [["analytics", "query_metrics"], ["github", "search_code"]] : [["warehouse", "run_sql"], ["analytics", "list_incidents"], ["google-drive", "read_doc"]]), v = 600 + Math.random() * 1400, [q, D] = Te(Qa[Z]);
1887
- T(400, () => ({ type: "mcp", run_id: t, id: S, server: Z, tool: E, phase: "call", resource: q, resource_kind: D, ts: s() })), T(v, () => ({ type: "mcp", run_id: t, id: S, server: Z, tool: E, phase: "result", latency_ms: v, resource: q, resource_kind: D, ts: s() })), Math.random() < 0.7 && T(500, () => ({ type: "graph", run_id: t, id: S, op: "read", nodes: Te(Bt), ts: s() })), T(800 + Math.random() * 1200, () => ({ type: "message", run_id: t, from_id: S, to_id: k, text: `Found ${2 + Math.floor(Math.random() * 6)} linked records`, ts: s() })), T(200, () => ({ type: "exit", run_id: t, id: S, status: "done", ts: s() })), o = Math.max(o, V);
1894
+ const z = (W, H) => {
1895
+ V += W, e(V, H);
1896
+ }, P = Te(Lt), I = S.includes("graph_scout");
1897
+ z(0, () => ({ type: "agent", run_id: t, id: S, status: "thinking", ts: s() })), z(500 + Math.random() * 500, () => ({ type: "tool", run_id: t, id: S, tool: I ? "graph_neighbors" : "search_records", args_preview: `"${P[0]}"`, ts: s() })), z(600, () => ({ type: "graph", run_id: t, id: S, op: "read", nodes: P, ts: s() })), z(700 + Math.random() * 900, () => ({ type: "llm", run_id: t, id: S, tokens_in: 1500 + Math.round(Math.random() * 2e3), tokens_out: 200 + Math.round(Math.random() * 400), latency_ms: 900 + Math.random() * 1200, ts: s() }));
1898
+ const [Z, E] = Te(I ? [["analytics", "query_metrics"], ["github", "search_code"]] : [["warehouse", "run_sql"], ["analytics", "list_incidents"], ["google-drive", "read_doc"]]), y = 600 + Math.random() * 1400, [q, F] = Te(fo[Z]);
1899
+ z(400, () => ({ type: "mcp", run_id: t, id: S, server: Z, tool: E, phase: "call", resource: q, resource_kind: F, ts: s() })), z(y, () => ({ type: "mcp", run_id: t, id: S, server: Z, tool: E, phase: "result", latency_ms: y, resource: q, resource_kind: F, ts: s() })), Math.random() < 0.7 && z(500, () => ({ type: "graph", run_id: t, id: S, op: "read", nodes: Te(Lt), ts: s() })), z(800 + Math.random() * 1200, () => ({ type: "message", run_id: t, from_id: S, to_id: k, text: `Found ${2 + Math.floor(Math.random() * 6)} linked records`, ts: s() })), z(200, () => ({ type: "exit", run_id: t, id: S, status: "done", ts: s() })), o = Math.max(o, V);
1888
1900
  }), u(k), p(k, 1300), a("research", "done", 300);
1889
1901
  const A = `${t}:writer`;
1890
- return a("write", "running", 200), c(A, "writer", k), w(k, A, "Findings merged - draft the brief", 120), i(k, 200), u(A), p(A, 1800), r(400, () => ({ type: "graph", run_id: t, id: A, op: "write", nodes: [`Brief: ${n}`, ...Te(Bt).slice(0, 2)], ts: s() })), r(300, () => ({ type: "mcp", run_id: t, id: A, server: "slack", tool: "post_message", phase: "call", resource: "Slack API", resource_kind: "api", ts: s() })), r(700, () => ({ type: "mcp", run_id: t, id: A, server: "slack", tool: "post_message", phase: "result", latency_ms: 700, resource: "Slack API", resource_kind: "api", ts: s() })), a("write", "done", 400), r(150, () => ({ type: "final", run_id: t, text: `Brief on "${n}": linked accounts, incidents and metrics summarized with sources.`, ts: s() })), i(A, 100), r(200, () => ({ type: "run", run_id: t, status: "completed", topic: n, workflow: "research_brief", ts: s() })), o;
1902
+ return a("write", "running", 200), c(A, "writer", k), w(k, A, "Findings merged - draft the brief", 120), i(k, 200), u(A), p(A, 1800), r(400, () => ({ type: "graph", run_id: t, id: A, op: "write", nodes: [`Brief: ${n}`, ...Te(Lt).slice(0, 2)], ts: s() })), r(300, () => ({ type: "mcp", run_id: t, id: A, server: "slack", tool: "post_message", phase: "call", resource: "Slack API", resource_kind: "api", ts: s() })), r(700, () => ({ type: "mcp", run_id: t, id: A, server: "slack", tool: "post_message", phase: "result", latency_ms: 700, resource: "Slack API", resource_kind: "api", ts: s() })), a("write", "done", 400), r(150, () => ({ type: "final", run_id: t, text: `Brief on "${n}": linked accounts, incidents and metrics summarized with sources.`, ts: s() })), i(A, 100), r(200, () => ({ type: "run", run_id: t, status: "completed", topic: n, workflow: "research_brief", ts: s() })), o;
1891
1903
  }
1892
- function $a() {
1893
- Mn(!0);
1904
+ function mo() {
1905
+ kn(!0);
1894
1906
  let e = !1;
1895
1907
  const t = [];
1896
1908
  let n = 0;
1897
1909
  const s = () => {
1898
1910
  if (e) return;
1899
1911
  n++;
1900
- const c = _a((u, d) => {
1912
+ const c = po((u, d) => {
1901
1913
  t.push(
1902
1914
  window.setTimeout(() => {
1903
1915
  if (e) return;
1904
1916
  const p = d(performance.now());
1905
- (Array.isArray(p) ? p : [p]).forEach(os);
1917
+ (Array.isArray(p) ? p : [p]).forEach(ps);
1906
1918
  }, u)
1907
1919
  );
1908
1920
  });
1909
1921
  t.push(window.setTimeout(() => (n--, o()), c + 300));
1910
1922
  }, o = () => {
1911
1923
  if (!e)
1912
- for (; n < Xa; ) {
1924
+ for (; n < lo; ) {
1913
1925
  const r = 1500 + Math.random() * 3500;
1914
1926
  n++, t.push(window.setTimeout(() => (n--, s()), r));
1915
1927
  }
1916
1928
  };
1917
1929
  return s(), t.push(window.setTimeout(o, 2500)), () => {
1918
- e = !0, t.forEach(clearTimeout), Mn(!1);
1930
+ e = !0, t.forEach(clearTimeout), kn(!1);
1919
1931
  };
1920
1932
  }
1921
- const Ue = ["Customer", "Account", "Incident", "Ticket", "Product", "Region", "Metric", "Team"], Kn = [0.24, 0.24, 0.22, 0.12, 0.06, 0.03, 0.05, 0.04], Dt = [
1933
+ const Ze = ["Customer", "Account", "Incident", "Ticket", "Product", "Region", "Metric", "Team"], es = [0.24, 0.24, 0.22, 0.12, 0.06, 0.03, 0.05, 0.04], Jt = [
1922
1934
  "Acme Corp",
1923
1935
  "Globex",
1924
1936
  "Initech",
@@ -1942,22 +1954,22 @@ const Ue = ["Customer", "Account", "Incident", "Ticket", "Product", "Region", "M
1942
1954
  "Release 4.12",
1943
1955
  "Renewal 2026"
1944
1956
  ];
1945
- function zs(e = 320) {
1957
+ function Ns(e = 320) {
1946
1958
  const t = Array.from({ length: e }, (s, o) => {
1947
- if (o < Dt.length) return { id: Dt[o], name: Dt[o], kind: Ue[o % Ue.length] };
1959
+ if (o < Jt.length) return { id: Jt[o], name: Jt[o], kind: Ze[o % Ze.length] };
1948
1960
  let r = Math.random(), c = 0;
1949
- for (; c < Kn.length - 1 && (r -= Kn[c]) > 0; ) c++;
1950
- return { id: `n${o}`, name: `${Ue[c]} ${o}`, kind: Ue[c] };
1961
+ for (; c < es.length - 1 && (r -= es[c]) > 0; ) c++;
1962
+ return { id: `n${o}`, name: `${Ze[c]} ${o}`, kind: Ze[c] };
1951
1963
  }), n = Array.from({ length: e }, () => ({ source: t[Math.floor(Math.random() * e)].id, target: t[Math.floor(Math.random() * e)].id }));
1952
1964
  return { nodes: t, links: n };
1953
1965
  }
1954
- const Xt = { nodes: [], links: [] }, eo = 400;
1955
- class to {
1966
+ const $t = { nodes: [], links: [] }, go = 400;
1967
+ class Ao {
1956
1968
  constructor() {
1957
- Xe(this, "nodes", []);
1958
- Xe(this, "links", []);
1959
- Xe(this, "seen", /* @__PURE__ */ new Set());
1960
- Xe(this, "linkSeen", /* @__PURE__ */ new Set());
1969
+ Ke(this, "nodes", []);
1970
+ Ke(this, "links", []);
1971
+ Ke(this, "seen", /* @__PURE__ */ new Set());
1972
+ Ke(this, "linkSeen", /* @__PURE__ */ new Set());
1961
1973
  }
1962
1974
  /** add the event's nodes (+ chain links between them); true when anything new was added */
1963
1975
  add(t) {
@@ -1967,7 +1979,7 @@ class to {
1967
1979
  const r = String(o).trim();
1968
1980
  if (!r) continue;
1969
1981
  const c = r.toLowerCase();
1970
- s.push(c), !(this.seen.has(c) || this.nodes.length >= eo) && (this.seen.add(c), this.nodes.push({ id: c, name: r, kind: Ue[Math.floor($t(c, 3) * Ue.length)] }), n = !0);
1982
+ s.push(c), !(this.seen.has(c) || this.nodes.length >= go) && (this.seen.add(c), this.nodes.push({ id: c, name: r, kind: Ze[Math.floor(an(c, 3) * Ze.length)] }), n = !0);
1971
1983
  }
1972
1984
  for (let o = 1; o < s.length; o++) {
1973
1985
  const r = s[o - 1], c = s[o];
@@ -1981,15 +1993,15 @@ class to {
1981
1993
  return { nodes: [...this.nodes], links: [...this.links] };
1982
1994
  }
1983
1995
  }
1984
- function Ot(e) {
1996
+ function Rt(e) {
1985
1997
  const t = {};
1986
1998
  return e.token && (t.authorization = `Bearer ${e.token}`), e.scope && (t["x-agentglow-scope"] = e.scope), e.run && (t["x-agentglow-run"] = e.run), t;
1987
1999
  }
1988
- const no = (e, t) => new Promise((n) => {
2000
+ const bo = (e, t) => new Promise((n) => {
1989
2001
  const s = window.setTimeout(n, e);
1990
2002
  t.addEventListener("abort", () => (window.clearTimeout(s), n()), { once: !0 });
1991
2003
  });
1992
- function so(e, t, n, s) {
2004
+ function Mo(e, t, n, s) {
1993
2005
  const o = new AbortController(), { signal: r } = o;
1994
2006
  let c = 2e3, u = 0;
1995
2007
  return (async () => {
@@ -2023,42 +2035,42 @@ function so(e, t, n, s) {
2023
2035
  if (r.aborted) return;
2024
2036
  }
2025
2037
  const d = Math.min(c * 2 ** u, 3e4) * (0.75 + Math.random() * 0.5);
2026
- u = Math.min(u + 1, 6), await no(d, r);
2038
+ u = Math.min(u + 1, 6), await bo(d, r);
2027
2039
  }
2028
2040
  })(), () => o.abort();
2029
2041
  }
2030
- let K = null, Kt = !1;
2031
- const tt = /* @__PURE__ */ new Set(), Be = () => tt.forEach((e) => e());
2032
- function wt(e) {
2033
- Kt !== e && (Kt = e, Be());
2042
+ let Q = null, en = !1;
2043
+ const nt = /* @__PURE__ */ new Set(), Be = () => nt.forEach((e) => e());
2044
+ function St(e) {
2045
+ en !== e && (en = e, Be());
2034
2046
  }
2035
- function ro() {
2036
- return kt(
2037
- (e) => (tt.add(e), () => tt.delete(e)),
2038
- () => Kt,
2047
+ function yo() {
2048
+ return Vt(
2049
+ (e) => (nt.add(e), () => nt.delete(e)),
2050
+ () => en,
2039
2051
  () => !1
2040
2052
  );
2041
2053
  }
2042
- const Rs = "unauthorized";
2043
- async function ao(e, t) {
2054
+ const Is = "unauthorized";
2055
+ async function vo(e, t) {
2044
2056
  try {
2045
- const n = await fetch(`${e}/live/health`, { headers: Ot(t), signal: AbortSignal.timeout(2500) });
2046
- return n.status === 401 || n.status === 403 ? Rs : n.ok ? await n.json().catch(() => ({})) ?? {} : null;
2057
+ const n = await fetch(`${e}/live/health`, { headers: Rt(t), signal: AbortSignal.timeout(2500) });
2058
+ return n.status === 401 || n.status === 403 ? Is : n.ok ? await n.json().catch(() => ({})) ?? {} : null;
2047
2059
  } catch {
2048
2060
  return null;
2049
2061
  }
2050
2062
  }
2051
- async function oo(e, t, n) {
2063
+ async function wo(e, t, n) {
2052
2064
  if (typeof n.run == "boolean") return n.run;
2053
2065
  try {
2054
- return (await fetch(`${e}/live/run`, { headers: { ...Ot(t), accept: "application/json" }, signal: AbortSignal.timeout(2500) })).status === 405;
2066
+ return (await fetch(`${e}/live/run`, { headers: { ...Rt(t), accept: "application/json" }, signal: AbortSignal.timeout(2500) })).status === 405;
2055
2067
  } catch {
2056
2068
  return !1;
2057
2069
  }
2058
2070
  }
2059
- function co(e, t) {
2071
+ function xo(e, t) {
2060
2072
  const n = () => {
2061
- e.dead || (yn("sim"), e.stop = $a(), Be());
2073
+ e.dead || (Sn("sim"), e.stop = mo(), Be());
2062
2074
  };
2063
2075
  if (t) return n();
2064
2076
  const s = (o) => {
@@ -2073,207 +2085,207 @@ function co(e, t) {
2073
2085
  }
2074
2086
  };
2075
2087
  (async () => {
2076
- const o = await ao(e.source, e.auth);
2088
+ const o = await vo(e.source, e.auth);
2077
2089
  if (e.dead) return;
2078
2090
  const r = () => {
2079
- e.dead || (is(!0), wt(!1));
2091
+ e.dead || (gs(!0), St(!1));
2080
2092
  };
2081
- if (o === Rs) return r();
2093
+ if (o === Is) return r();
2082
2094
  if (!o)
2083
- return e.galaxy = zs(), n();
2084
- yn("live");
2085
- const c = Ot(e.auth);
2086
- oo(e.source, e.auth, o).then((u) => !e.dead && wt(u)), fetch(`${e.source}/live/graph`, { headers: c }).then((u) => u.status === 401 || u.status === 403 ? (r(), null) : u.ok ? u.json() : null).then((u) => {
2095
+ return e.galaxy = Ns(), n();
2096
+ Sn("live");
2097
+ const c = Rt(e.auth);
2098
+ wo(e.source, e.auth, o).then((u) => !e.dead && St(u)), fetch(`${e.source}/live/graph`, { headers: c }).then((u) => u.status === 401 || u.status === 403 ? (r(), null) : u.ok ? u.json() : null).then((u) => {
2087
2099
  var d;
2088
- !e.dead && ((d = u == null ? void 0 : u.nodes) != null && d.length) && (e.galaxy = u, e.served = !0, tr(u.label ?? "FalkorDB · knowledge graph"), Be());
2100
+ !e.dead && ((d = u == null ? void 0 : u.nodes) != null && d.length) && (e.galaxy = u, e.served = !0, hr(u.label ?? "FalkorDB · knowledge graph"), Be());
2089
2101
  }).catch(() => {
2090
- }), e.stop = so(`${e.source}/live/stream`, c, (u) => {
2102
+ }), e.stop = Mo(`${e.source}/live/stream`, c, (u) => {
2091
2103
  try {
2092
2104
  const d = JSON.parse(u), p = h.hasGraph;
2093
- os(d), d.type === "graph" && Array.isArray(d.nodes) && (s(d.nodes), !p && h.hasGraph && Be());
2105
+ ps(d), d.type === "graph" && Array.isArray(d.nodes) && (s(d.nodes), !p && h.hasGraph && Be());
2094
2106
  } catch {
2095
2107
  }
2096
2108
  }, r);
2097
2109
  })();
2098
2110
  }
2099
- function Ts(e) {
2111
+ function Ds(e) {
2100
2112
  var t;
2101
- e.dead = !0, (t = e.stop) == null || t.call(e), e.growTimer && window.clearTimeout(e.growTimer), K === e && (K = null, wt(!1));
2113
+ e.dead = !0, (t = e.stop) == null || t.call(e), e.growTimer && window.clearTimeout(e.growTimer), Q === e && (Q = null, St(!1));
2102
2114
  }
2103
- function io(e, t, n) {
2115
+ function ko(e, t, n) {
2104
2116
  const s = t ? "sim" : `live:${e}|${n.scope ?? ""}|${n.run ?? ""}|${n.token ?? ""}`;
2105
- if (K && K.key === s && !K.dead)
2106
- return K.refs++, K;
2107
- K && ((K.source !== e || K.key === "sim" || s === "sim") && console.warn(`[agentglow] one data source per page: switching from "${K.source || K.key}" to "${e || s}"`), Ts(K)), nr();
2108
- const o = { key: s, source: e, auth: n, refs: 1, dead: !1, galaxy: t ? zs() : Xt, served: !1, events: new to(), growTimer: 0 };
2109
- return K = o, co(o, t), o;
2117
+ if (Q && Q.key === s && !Q.dead)
2118
+ return Q.refs++, Q;
2119
+ Q && ((Q.source !== e || Q.key === "sim" || s === "sim") && console.warn(`[agentglow] one data source per page: switching from "${Q.source || Q.key}" to "${e || s}"`), Ds(Q)), pr();
2120
+ const o = { key: s, source: e, auth: n, refs: 1, dead: !1, galaxy: t ? Ns() : $t, served: !1, events: new Ao(), growTimer: 0 };
2121
+ return Q = o, xo(o, t), o;
2110
2122
  }
2111
- function lo(e) {
2123
+ function So(e) {
2112
2124
  window.setTimeout(() => {
2113
- --e.refs <= 0 && Ts(e);
2125
+ --e.refs <= 0 && Ds(e);
2114
2126
  }, 0);
2115
2127
  }
2116
- async function uo(e) {
2117
- const t = (K == null ? void 0 : K.source) ?? "", n = (K == null ? void 0 : K.auth) ?? {}, s = n.scope ? { topic: e, scope: n.scope } : { topic: e }, o = await fetch(`${t}/live/run`, { method: "POST", headers: { ...Ot(n), "content-type": "application/json" }, body: JSON.stringify(s) });
2118
- return (o.status === 404 || o.status === 405) && wt(!1), (o.status === 401 || o.status === 403) && is(!0), o.ok ? (await o.json().catch(() => ({}))).run_id ?? "started" : null;
2128
+ async function Oo(e) {
2129
+ const t = (Q == null ? void 0 : Q.source) ?? "", n = (Q == null ? void 0 : Q.auth) ?? {}, s = n.scope ? { topic: e, scope: n.scope } : { topic: e }, o = await fetch(`${t}/live/run`, { method: "POST", headers: { ...Rt(n), "content-type": "application/json" }, body: JSON.stringify(s) });
2130
+ return (o.status === 404 || o.status === 405) && St(!1), (o.status === 401 || o.status === 403) && gs(!0), o.ok ? (await o.json().catch(() => ({}))).run_id ?? "started" : null;
2119
2131
  }
2120
- function fo() {
2121
- const { source: e, sim: t, scope: n, run: s, token: o } = Yt(), [r, c] = fe(Xt);
2122
- return Q(() => {
2123
- const u = io(e, t, { scope: n || void 0, run: s || void 0, token: o || void 0 }), d = () => c(h.hasGraph ? u.galaxy : Xt);
2124
- return d(), tt.add(d), () => {
2125
- tt.delete(d), lo(u);
2132
+ function Vo() {
2133
+ const { source: e, sim: t, scope: n, run: s, token: o } = nn(), [r, c] = he($t);
2134
+ return Y(() => {
2135
+ const u = ko(e, t, { scope: n || void 0, run: s || void 0, token: o || void 0 }), d = () => c(h.hasGraph ? u.galaxy : $t);
2136
+ return d(), nt.add(d), () => {
2137
+ nt.delete(d), So(u);
2126
2138
  };
2127
2139
  }, [e, t, n, s, o]), r;
2128
2140
  }
2129
- function vc(e, t) {
2141
+ function Uc(e, t) {
2130
2142
  const n = e.nodes.findIndex((o) => o.name.toLowerCase() === t.toLowerCase());
2131
2143
  if (n >= 0) return n;
2132
2144
  let s = 7;
2133
2145
  for (const o of t.toLowerCase()) s = s * 31 + o.charCodeAt(0) >>> 0;
2134
2146
  return e.nodes.length ? s % e.nodes.length : 0;
2135
2147
  }
2136
- const ho = Js;
2137
- function nt(e) {
2148
+ const Eo = nr;
2149
+ function st(e) {
2138
2150
  return e.replace("run-", "").slice(0, 6);
2139
2151
  }
2140
- function oe(e) {
2152
+ function ce(e) {
2141
2153
  const t = h.instances.get(e) ?? h.archive.get(e);
2142
- if (t) return `${t.name} · ${nt(t.run)}`;
2154
+ if (t) return `${t.name} · ${st(t.run)}`;
2143
2155
  const [n, s, o] = e.split(":");
2144
- return `${s ?? e.slice(0, 6)}${o !== void 0 ? `#${Number(o) + 1}` : ""} · ${nt(n)}`;
2156
+ return `${s ?? e.slice(0, 6)}${o !== void 0 ? `#${Number(o) + 1}` : ""} · ${st(n)}`;
2145
2157
  }
2146
- function Cs(e) {
2158
+ function Fs(e) {
2147
2159
  switch (e.type) {
2148
2160
  case "run":
2149
2161
  return `run ${e.status} · ${e.topic}`;
2150
2162
  case "step":
2151
- return `step ${e.step} ${e.status} · ${nt(e.run_id)}`;
2163
+ return `step ${e.step} ${e.status} · ${st(e.run_id)}`;
2152
2164
  case "spawn":
2153
- return `spawned ${oe(e.id)}`;
2165
+ return `spawned ${ce(e.id)}`;
2154
2166
  case "exit":
2155
- return `${oe(e.id)} ${e.status}`;
2167
+ return `${ce(e.id)} ${e.status}`;
2156
2168
  case "agent":
2157
- return `${oe(e.id)} ${e.status}`;
2169
+ return `${ce(e.id)} ${e.status}`;
2158
2170
  case "llm":
2159
- return e.tokens_in || e.tokens_out ? `${oe(e.id)} · LLM ${e.tokens_in}→${e.tokens_out} tok` : `${oe(e.id)} · thinking…`;
2171
+ return e.tokens_in || e.tokens_out ? `${ce(e.id)} · LLM ${e.tokens_in}→${e.tokens_out} tok` : `${ce(e.id)} · thinking…`;
2160
2172
  // no usage (e.g. Claude Code hooks): no fake 0→0
2161
2173
  case "message":
2162
- return `${oe(e.from_id)} → ${oe(e.to_id)}: ${e.text}`;
2174
+ return `${ce(e.from_id)} → ${ce(e.to_id)}: ${e.text}`;
2163
2175
  case "tool":
2164
- return `${oe(e.id)} · ${e.tool}(${e.args_preview})`;
2176
+ return `${ce(e.id)} · ${e.tool}(${e.args_preview})`;
2165
2177
  case "graph":
2166
- return `${oe(e.id)} ${e.op === "read" ? "read" : "WROTE"} graph: ${e.nodes.slice(0, 2).join(", ")}`;
2178
+ return `${ce(e.id)} ${e.op === "read" ? "read" : "WROTE"} graph: ${e.nodes.slice(0, 2).join(", ")}`;
2167
2179
  case "mcp":
2168
- return e.phase === "call" ? `${oe(e.id)} → mcp ${e.server}.${e.tool}()${e.resource ? ` → ${e.resource}` : ""}` : `mcp ${e.server}.${e.tool} returned${e.latency_ms ? ` · ${Math.round(e.latency_ms)}ms` : ""}`;
2180
+ return e.phase === "call" ? `${ce(e.id)} → mcp ${e.server}.${e.tool}()${e.resource ? ` → ${e.resource}` : ""}` : `mcp ${e.server}.${e.tool} returned${e.latency_ms ? ` · ${Math.round(e.latency_ms)}ms` : ""}`;
2169
2181
  case "mcp_register":
2170
2182
  return `mcp server ${e.server} online`;
2171
2183
  case "final":
2172
- return `final answer · ${nt(e.run_id)}`;
2184
+ return `final answer · ${st(e.run_id)}`;
2173
2185
  }
2174
2186
  }
2175
- function po(e) {
2187
+ function Ro(e) {
2176
2188
  var s;
2177
2189
  const t = "id" in e ? e.id : e.type === "message" ? e.from_id : null, n = t ? h.instances.get(t) : null;
2178
- return n ? Pe[n.type] : e.type === "graph" ? "#c7d2fe" : e.type === "mcp" ? ((s = h.mcpServers.get(e.server)) == null ? void 0 : s.color) ?? "#94a3b8" : e.type === "run" || e.type === "step" ? "#fde68a" : "#c7d2fe";
2190
+ return n ? Ge[n.type] : e.type === "graph" ? "#c7d2fe" : e.type === "mcp" ? ((s = h.mcpServers.get(e.server)) == null ? void 0 : s.color) ?? "#94a3b8" : e.type === "run" || e.type === "step" ? "#fde68a" : "#c7d2fe";
2179
2191
  }
2180
- function mo(e) {
2181
- const { hud: t } = Yt();
2182
- return Q(() => {
2183
- e.selected && Ze(e.selected);
2184
- }, [e.selected]), t ? /* @__PURE__ */ f(yo, { ...e }) : /* @__PURE__ */ f(be, { children: e.children });
2192
+ function Co(e) {
2193
+ const { hud: t } = nn();
2194
+ return Y(() => {
2195
+ e.selected && Le(e.selected);
2196
+ }, [e.selected]), t ? /* @__PURE__ */ f(Wo, { ...e }) : /* @__PURE__ */ f(Me, { children: e.children });
2185
2197
  }
2186
- const Qt = ["agents", "events", "selected"], Ut = { agents: "Agents", events: "Events", selected: "Selected" }, go = 720, Ps = "agentglow.hud.sidebar";
2187
- function Ao() {
2198
+ const tn = ["agents", "events", "selected"], Ht = { agents: "Agents", events: "Events", selected: "Selected" }, zo = 720, Bs = "agentglow.hud.sidebar";
2199
+ function To() {
2188
2200
  try {
2189
- const e = JSON.parse(localStorage.getItem(Ps) ?? "null");
2190
- if (e && Qt.includes(e.tab)) return { collapsed: !!e.collapsed, tab: e.tab === "selected" ? "agents" : e.tab };
2201
+ const e = JSON.parse(localStorage.getItem(Bs) ?? "null");
2202
+ if (e && tn.includes(e.tab)) return { collapsed: !!e.collapsed, tab: e.tab === "selected" ? "agents" : e.tab };
2191
2203
  } catch {
2192
2204
  }
2193
2205
  return { collapsed: !1, tab: "agents" };
2194
2206
  }
2195
- function bo(e) {
2207
+ function Po(e) {
2196
2208
  try {
2197
- localStorage.setItem(Ps, JSON.stringify(e));
2209
+ localStorage.setItem(Bs, JSON.stringify(e));
2198
2210
  } catch {
2199
2211
  }
2200
2212
  }
2201
- const Mo = (e) => e >= 1e3 ? `${(e / 1e3).toFixed(1)}k` : `${e}`;
2202
- function yo({ title: e, subtitle: t, onClose: n, inset: s, children: o }) {
2203
- const { embedded: r, scope: c, run: u } = Yt(), d = ro(), p = st(), [, i] = fe(0), [w, a] = fe(!1), [l, k] = fe(Ao), b = L(null), m = L(!1), M = L(null), A = L(null), S = L(null), O = L({ t0: performance.now(), head: null, at: performance.now(), done: !1 });
2204
- Q(() => {
2205
- const y = window.setInterval(() => i((W) => W + 1), 500);
2206
- return () => clearInterval(y);
2207
- }, []), Zs(() => {
2208
- var W;
2209
- const y = (W = A.current) == null ? void 0 : W.closest(".scene-root");
2210
- y && y.clientWidth < go && (m.current = !0, k((X) => ({ ...X, collapsed: !0 })));
2213
+ const Go = (e) => e >= 1e3 ? `${(e / 1e3).toFixed(1)}k` : `${e}`;
2214
+ function Wo({ title: e, subtitle: t, onClose: n, inset: s, children: o }) {
2215
+ const { embedded: r, scope: c, run: u } = nn(), d = yo(), p = rt(), [, i] = he(0), [w, a] = he(!1), [l, k] = he(To), b = B(null), m = B(!1), M = B(null), A = B(null), S = B(null), O = B({ t0: performance.now(), head: null, at: performance.now(), done: !1 });
2216
+ Y(() => {
2217
+ const x = window.setInterval(() => i((G) => G + 1), 500);
2218
+ return () => clearInterval(x);
2219
+ }, []), er(() => {
2220
+ var G;
2221
+ const x = (G = A.current) == null ? void 0 : G.closest(".scene-root");
2222
+ x && x.clientWidth < zo && (m.current = !0, k((J) => ({ ...J, collapsed: !0 })));
2211
2223
  }, []);
2212
- const V = (y) => {
2213
- k(y), m.current || bo(y);
2214
- }, T = p.selected;
2215
- Q(() => {
2216
- T && k((y) => (y.tab !== "selected" && (b.current = y), { collapsed: !1, tab: "selected" }));
2217
- }, [T]), Q(() => {
2218
- var $;
2219
- const y = ($ = A.current) == null ? void 0 : $.closest(".scene-root");
2220
- if (!y || typeof ResizeObserver > "u") return;
2221
- let W = 0;
2222
- const X = new ResizeObserver(() => {
2223
- cancelAnimationFrame(W), W = requestAnimationFrame(() => y.dispatchEvent(new Event(Zt)));
2224
+ const V = (x) => {
2225
+ k(x), m.current || Po(x);
2226
+ }, z = p.selected;
2227
+ Y(() => {
2228
+ z && k((x) => (x.tab !== "selected" && (b.current = x), { collapsed: !1, tab: "selected" }));
2229
+ }, [z]), Y(() => {
2230
+ var X;
2231
+ const x = (X = A.current) == null ? void 0 : X.closest(".scene-root");
2232
+ if (!x || typeof ResizeObserver > "u") return;
2233
+ let G = 0;
2234
+ const J = new ResizeObserver(() => {
2235
+ cancelAnimationFrame(G), G = requestAnimationFrame(() => x.dispatchEvent(new Event(Xt)));
2224
2236
  });
2225
- return M.current && X.observe(M.current), A.current && X.observe(A.current), () => {
2226
- cancelAnimationFrame(W), X.disconnect();
2237
+ return M.current && J.observe(M.current), A.current && J.observe(A.current), () => {
2238
+ cancelAnimationFrame(G), J.disconnect();
2227
2239
  };
2228
2240
  }, []);
2229
2241
  const P = O.current;
2230
2242
  if (!P.done) {
2231
- const y = performance.now(), W = p.ticker[0] ?? null;
2232
- W !== P.head && (P.head = W, P.at = y), W && y - P.at > 1e3 || y - P.t0 > 4e3 ? P.done = !0 : S.current = W;
2243
+ const x = performance.now(), G = p.ticker[0] ?? null;
2244
+ G !== P.head && (P.head = G, P.at = x), G && x - P.at > 1e3 || x - P.t0 > 4e3 ? P.done = !0 : S.current = G;
2233
2245
  }
2234
2246
  l.tab === "events" && !l.collapsed && (S.current = p.ticker[0] ?? null);
2235
- const F = S.current ? p.ticker.indexOf(S.current) : -1, Z = l.tab === "events" && !l.collapsed ? 0 : F >= 0 ? F : p.ticker.length, E = [...p.instances.values()].filter((y) => !y.exitAt), v = [...p.runs.values()].filter((y) => y.status === "started"), q = p.stats.graphReads + p.stats.graphWrites, D = () => {
2236
- Ze(null), n == null || n();
2237
- const y = b.current ?? { collapsed: l.collapsed, tab: "agents" };
2238
- b.current = null, V(y);
2239
- }, G = (y) => V({ collapsed: !1, tab: y }), J = r ? "" : location.pathname.replace(/\/$/, "").slice(1), H = r ? "" : location.search, j = tn(p.selected), I = { agents: E.length ? `${E.length}` : "", events: Z ? Z >= 60 ? "60+" : `${Z}` : "", selected: j ? "1" : "" };
2240
- return /* @__PURE__ */ z(be, { children: [
2241
- /* @__PURE__ */ z("div", { ref: M, className: `hud-topwrap${l.collapsed ? " is-rail" : ""}`, children: [
2242
- /* @__PURE__ */ z("header", { className: "hud hud-top", children: [
2243
- /* @__PURE__ */ z("div", { className: "hud-bar", children: [
2244
- /* @__PURE__ */ z("div", { className: "hud-title", children: [
2247
+ const I = S.current ? p.ticker.indexOf(S.current) : -1, Z = l.tab === "events" && !l.collapsed ? 0 : I >= 0 ? I : p.ticker.length, E = [...p.instances.values()].filter(ne), y = [...p.runs.values()].filter((x) => x.status === "started"), q = p.stats.graphReads + p.stats.graphWrites, F = () => {
2248
+ Le(null), n == null || n();
2249
+ const x = b.current ?? { collapsed: l.collapsed, tab: "agents" };
2250
+ b.current = null, V(x);
2251
+ }, W = (x) => V({ collapsed: !1, tab: x }), H = r ? "" : location.pathname.replace(/\/$/, "").slice(1), j = r ? "" : location.search, K = cn(p.selected), L = { agents: E.length ? `${E.length}` : "", events: Z ? Z >= 60 ? "60+" : `${Z}` : "", selected: K ? "1" : "" };
2252
+ return /* @__PURE__ */ R(Me, { children: [
2253
+ /* @__PURE__ */ R("div", { ref: M, className: `hud-topwrap${l.collapsed ? " is-rail" : ""}`, children: [
2254
+ /* @__PURE__ */ R("header", { className: "hud hud-top", children: [
2255
+ /* @__PURE__ */ R("div", { className: "hud-bar", children: [
2256
+ /* @__PURE__ */ R("div", { className: "hud-title", children: [
2245
2257
  /* @__PURE__ */ f("span", { className: "hud-dot" }),
2246
2258
  e
2247
2259
  ] }),
2248
2260
  p.mode === "sim" && /* @__PURE__ */ f("span", { className: "hud-badge", children: "sim" }),
2249
2261
  p.mode === "live" && !p.unauthorized && /* @__PURE__ */ f("span", { className: "hud-badge hud-badge--live", children: "live" }),
2250
- c && /* @__PURE__ */ f(Yn, { label: "scope", value: c }),
2251
- u && /* @__PURE__ */ f(Yn, { label: "run", value: u }),
2262
+ c && /* @__PURE__ */ f(ns, { label: "scope", value: c }),
2263
+ u && /* @__PURE__ */ f(ns, { label: "run", value: u }),
2252
2264
  p.unauthorized && /* @__PURE__ */ f("span", { className: "hud-badge hud-badge--denied", role: "status", title: "The server answered 401: this token / scope is not allowed to watch these agents", children: "not authorized for this scope" }),
2253
- /* @__PURE__ */ f("button", { className: `hud-info${w ? " on" : ""}`, onClick: () => a((y) => !y), "aria-label": "What am I looking at?", "aria-expanded": w, title: "What am I looking at?", children: "i" }),
2254
- p.mode === "live" && d && /* @__PURE__ */ f(Oo, {}),
2255
- !r && /* @__PURE__ */ z("select", { className: "hud-theme", value: J, "aria-label": "Theme", onChange: (y) => location.href = `/${y.target.value}${H}`, children: [
2265
+ /* @__PURE__ */ f("button", { className: `hud-info${w ? " on" : ""}`, onClick: () => a((x) => !x), "aria-label": "What am I looking at?", "aria-expanded": w, title: "What am I looking at?", children: "i" }),
2266
+ p.mode === "live" && d && /* @__PURE__ */ f(Bo, {}),
2267
+ !r && /* @__PURE__ */ R("select", { className: "hud-theme", value: H, "aria-label": "Theme", onChange: (x) => location.href = `/${x.target.value}${j}`, children: [
2256
2268
  /* @__PURE__ */ f("option", { value: "", children: "all themes" }),
2257
- ho.map((y) => /* @__PURE__ */ f("option", { value: y, children: y }, y))
2269
+ Eo.map((x) => /* @__PURE__ */ f("option", { value: x, children: x }, x))
2258
2270
  ] }),
2259
- /* @__PURE__ */ z("div", { className: "hud-stats", "aria-label": "Live totals", children: [
2260
- /* @__PURE__ */ z("span", { className: "hud-stat", title: "active runs", children: [
2261
- /* @__PURE__ */ f("b", { children: v.length }),
2271
+ /* @__PURE__ */ R("div", { className: "hud-stats", "aria-label": "Live totals", children: [
2272
+ /* @__PURE__ */ R("span", { className: "hud-stat", title: "active runs", children: [
2273
+ /* @__PURE__ */ f("b", { children: y.length }),
2262
2274
  " runs"
2263
2275
  ] }),
2264
- /* @__PURE__ */ z("span", { className: "hud-stat", title: "agents alive", children: [
2276
+ /* @__PURE__ */ R("span", { className: "hud-stat", title: "agents alive", children: [
2265
2277
  /* @__PURE__ */ f("b", { children: E.length }),
2266
2278
  " agents"
2267
2279
  ] }),
2268
- /* @__PURE__ */ z("span", { className: "hud-stat", title: "tokens", children: [
2269
- /* @__PURE__ */ f("b", { children: Mo(p.stats.tokens) }),
2280
+ /* @__PURE__ */ R("span", { className: "hud-stat", title: "tokens", children: [
2281
+ /* @__PURE__ */ f("b", { children: Go(p.stats.tokens) }),
2270
2282
  " tok"
2271
2283
  ] }),
2272
- q > 0 && /* @__PURE__ */ z("span", { className: "hud-stat", title: `graph reads ${p.stats.graphReads} · writes ${p.stats.graphWrites}`, children: [
2284
+ q > 0 && /* @__PURE__ */ R("span", { className: "hud-stat", title: `graph reads ${p.stats.graphReads} · writes ${p.stats.graphWrites}`, children: [
2273
2285
  /* @__PURE__ */ f("b", { children: q }),
2274
2286
  " graph"
2275
2287
  ] }),
2276
- p.stats.mcpCalls > 0 && /* @__PURE__ */ z("span", { className: "hud-stat", title: "MCP calls", children: [
2288
+ p.stats.mcpCalls > 0 && /* @__PURE__ */ R("span", { className: "hud-stat", title: "MCP calls", children: [
2277
2289
  /* @__PURE__ */ f("b", { children: p.stats.mcpCalls }),
2278
2290
  " MCP"
2279
2291
  ] })
@@ -2281,80 +2293,80 @@ function yo({ title: e, subtitle: t, onClose: n, inset: s, children: o }) {
2281
2293
  ] }),
2282
2294
  w && /* @__PURE__ */ f("div", { className: "hud-sub", children: t })
2283
2295
  ] }),
2284
- /* @__PURE__ */ z("div", { className: "hud-dock", children: [
2285
- /* @__PURE__ */ f(ko, {}),
2296
+ /* @__PURE__ */ R("div", { className: "hud-dock", children: [
2297
+ /* @__PURE__ */ f(Do, {}),
2286
2298
  s
2287
2299
  ] })
2288
2300
  ] }),
2289
- /* @__PURE__ */ z("aside", { ref: A, className: `hud hud-side${l.collapsed ? " is-rail" : ""}`, "aria-label": "Agent sidebar", children: [
2290
- l.collapsed ? /* @__PURE__ */ z("nav", { className: "hs-rail", children: [
2301
+ /* @__PURE__ */ R("aside", { ref: A, className: `hud hud-side${l.collapsed ? " is-rail" : ""}`, "aria-label": "Agent sidebar", children: [
2302
+ l.collapsed ? /* @__PURE__ */ R("nav", { className: "hs-rail", children: [
2291
2303
  /* @__PURE__ */ f("button", { className: "hs-collapse", onClick: () => V({ ...l, collapsed: !1 }), "aria-label": "Expand sidebar", title: "Expand sidebar", children: "«" }),
2292
- Qt.map((y) => /* @__PURE__ */ z("button", { className: `hs-icon${l.tab === y ? " on" : ""}`, onClick: () => G(y), "aria-label": `${Ut[y]}${I[y] ? ` (${I[y]})` : ""}`, title: Ut[y], children: [
2293
- /* @__PURE__ */ f(vo, { tab: y }),
2294
- I[y] && /* @__PURE__ */ f("em", { children: y === "selected" ? "" : I[y] })
2295
- ] }, y))
2296
- ] }) : /* @__PURE__ */ z("div", { className: "hs-head", role: "tablist", "aria-label": "Sidebar", children: [
2297
- Qt.map((y) => /* @__PURE__ */ z("button", { role: "tab", "aria-selected": l.tab === y, className: l.tab === y ? "on" : "", onClick: () => G(y), children: [
2298
- Ut[y],
2299
- I[y] && y !== "selected" && /* @__PURE__ */ f("em", { children: I[y] })
2300
- ] }, y)),
2304
+ tn.map((x) => /* @__PURE__ */ R("button", { className: `hs-icon${l.tab === x ? " on" : ""}`, onClick: () => W(x), "aria-label": `${Ht[x]}${L[x] ? ` (${L[x]})` : ""}`, title: Ht[x], children: [
2305
+ /* @__PURE__ */ f(qo, { tab: x }),
2306
+ L[x] && /* @__PURE__ */ f("em", { children: x === "selected" ? "" : L[x] })
2307
+ ] }, x))
2308
+ ] }) : /* @__PURE__ */ R("div", { className: "hs-head", role: "tablist", "aria-label": "Sidebar", children: [
2309
+ tn.map((x) => /* @__PURE__ */ R("button", { role: "tab", "aria-selected": l.tab === x, className: l.tab === x ? "on" : "", onClick: () => W(x), children: [
2310
+ Ht[x],
2311
+ L[x] && x !== "selected" && /* @__PURE__ */ f("em", { children: L[x] })
2312
+ ] }, x)),
2301
2313
  /* @__PURE__ */ f("button", { className: "hs-collapse", onClick: () => V({ ...l, collapsed: !0 }), "aria-label": "Collapse sidebar", title: "Collapse sidebar", children: "»" })
2302
2314
  ] }),
2303
- /* @__PURE__ */ f("div", { className: "hs-body", hidden: l.collapsed || l.tab !== "agents", children: /* @__PURE__ */ f(zo, {}) }),
2304
- /* @__PURE__ */ f("div", { className: "hs-body", hidden: l.collapsed || l.tab !== "events", children: /* @__PURE__ */ f(wo, {}) }),
2305
- /* @__PURE__ */ f("div", { className: "hs-body", hidden: l.collapsed || l.tab !== "selected", children: j ? /* @__PURE__ */ z(be, { children: [
2306
- /* @__PURE__ */ f("div", { className: "ap-head", children: /* @__PURE__ */ f("button", { className: "ap-link", onClick: D, "aria-label": "Close agent inspector", children: "← back" }) }),
2307
- /* @__PURE__ */ f(Ro, { i: j })
2315
+ /* @__PURE__ */ f("div", { className: "hs-body", hidden: l.collapsed || l.tab !== "agents", children: /* @__PURE__ */ f(Lo, {}) }),
2316
+ /* @__PURE__ */ f("div", { className: "hs-body", hidden: l.collapsed || l.tab !== "events", children: /* @__PURE__ */ f(Io, {}) }),
2317
+ /* @__PURE__ */ f("div", { className: "hs-body", hidden: l.collapsed || l.tab !== "selected", children: K ? /* @__PURE__ */ R(Me, { children: [
2318
+ /* @__PURE__ */ f("div", { className: "ap-head", children: /* @__PURE__ */ f("button", { className: "ap-link", onClick: F, "aria-label": "Close agent inspector", children: "← back" }) }),
2319
+ /* @__PURE__ */ f(Jo, { i: K })
2308
2320
  ] }) : /* @__PURE__ */ f("p", { className: "hs-empty", children: "Click an agent in the scene, the Agents list or the Events log to inspect it." }) })
2309
2321
  ] }),
2310
2322
  o
2311
2323
  ] });
2312
2324
  }
2313
- function vo({ tab: e }) {
2325
+ function qo({ tab: e }) {
2314
2326
  const t = { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", "aria-hidden": !0 };
2315
- return e === "agents" ? /* @__PURE__ */ z("svg", { ...t, children: [
2327
+ return e === "agents" ? /* @__PURE__ */ R("svg", { ...t, children: [
2316
2328
  /* @__PURE__ */ f("circle", { cx: "5", cy: "5", r: "2.2" }),
2317
2329
  /* @__PURE__ */ f("circle", { cx: "11.5", cy: "6.5", r: "1.8" }),
2318
2330
  /* @__PURE__ */ f("circle", { cx: "6.5", cy: "11.5", r: "1.8" }),
2319
2331
  /* @__PURE__ */ f("path", { d: "M6.8 6.3l3 0.6M5.4 7.2l0.7 2.4" })
2320
- ] }) : e === "events" ? /* @__PURE__ */ z("svg", { ...t, children: [
2332
+ ] }) : e === "events" ? /* @__PURE__ */ R("svg", { ...t, children: [
2321
2333
  /* @__PURE__ */ f("path", { d: "M5.5 4h8M5.5 8h8M5.5 12h6" }),
2322
2334
  /* @__PURE__ */ f("circle", { cx: "2.5", cy: "4", r: "0.6", fill: "currentColor" }),
2323
2335
  /* @__PURE__ */ f("circle", { cx: "2.5", cy: "8", r: "0.6", fill: "currentColor" }),
2324
2336
  /* @__PURE__ */ f("circle", { cx: "2.5", cy: "12", r: "0.6", fill: "currentColor" })
2325
- ] }) : /* @__PURE__ */ z("svg", { ...t, children: [
2337
+ ] }) : /* @__PURE__ */ R("svg", { ...t, children: [
2326
2338
  /* @__PURE__ */ f("circle", { cx: "8", cy: "8", r: "5" }),
2327
2339
  /* @__PURE__ */ f("circle", { cx: "8", cy: "8", r: "1.6", fill: "currentColor" }),
2328
2340
  /* @__PURE__ */ f("path", { d: "M8 1v2M8 13v2M1 8h2M13 8h2" })
2329
2341
  ] });
2330
2342
  }
2331
- function xo(e) {
2343
+ function No(e) {
2332
2344
  const t = "id" in e ? e.id : e.type === "message" ? e.from_id : null;
2333
- return t && tn(t) ? t : null;
2345
+ return t && cn(t) ? t : null;
2334
2346
  }
2335
- function wo() {
2336
- const e = st();
2347
+ function Io() {
2348
+ const e = rt();
2337
2349
  return e.ticker.length ? /* @__PURE__ */ f("ul", { className: "hs-events", children: e.ticker.map((t, n) => {
2338
- const s = xo(t), o = /* @__PURE__ */ z(be, { children: [
2350
+ const s = No(t), o = /* @__PURE__ */ R(Me, { children: [
2339
2351
  /* @__PURE__ */ f("i", {}),
2340
- /* @__PURE__ */ f("span", { children: Cs(t) })
2352
+ /* @__PURE__ */ f("span", { children: Fs(t) })
2341
2353
  ] });
2342
- return /* @__PURE__ */ f("li", { style: { "--c": po(t) }, children: s ? /* @__PURE__ */ f("button", { onClick: () => Ze(s), title: "Inspect agent", children: o }) : /* @__PURE__ */ f("div", { children: o }) }, `${t.ts}-${t.type}-${n}`);
2354
+ return /* @__PURE__ */ f("li", { style: { "--c": Ro(t) }, children: s ? /* @__PURE__ */ f("button", { onClick: () => Le(s), title: "Inspect agent", children: o }) : /* @__PURE__ */ f("div", { children: o }) }, `${t.ts}-${t.type}-${n}`);
2343
2355
  }) }) : /* @__PURE__ */ f("p", { className: "hs-empty", children: "Waiting for events…" });
2344
2356
  }
2345
- function ko() {
2346
- const e = ta();
2347
- return e.crowded ? e.showAll ? /* @__PURE__ */ z("div", { className: "hud hud-lod", children: [
2357
+ function Do() {
2358
+ const e = pa();
2359
+ return e.crowded ? e.showAll ? /* @__PURE__ */ R("div", { className: "hud hud-lod", children: [
2348
2360
  /* @__PURE__ */ f("i", {}),
2349
- /* @__PURE__ */ z("span", { children: [
2361
+ /* @__PURE__ */ R("span", { children: [
2350
2362
  "showing all ",
2351
2363
  /* @__PURE__ */ f("b", { children: e.alive }),
2352
2364
  " agents"
2353
2365
  ] }),
2354
- /* @__PURE__ */ f("button", { onClick: () => In(!1), children: "group" })
2355
- ] }) : e.activeClusters ? /* @__PURE__ */ z("div", { className: "hud hud-lod", children: [
2366
+ /* @__PURE__ */ f("button", { onClick: () => Un(!1), children: "group" })
2367
+ ] }) : e.activeClusters ? /* @__PURE__ */ R("div", { className: "hud hud-lod", children: [
2356
2368
  /* @__PURE__ */ f("i", {}),
2357
- /* @__PURE__ */ z("span", { children: [
2369
+ /* @__PURE__ */ R("span", { children: [
2358
2370
  "grouped: ",
2359
2371
  /* @__PURE__ */ f("b", { children: e.collapsedRuns }),
2360
2372
  " run",
@@ -2364,28 +2376,28 @@ function ko() {
2364
2376
  " cluster",
2365
2377
  e.activeClusters === 1 ? "" : "s"
2366
2378
  ] }),
2367
- e.expandedLane >= 0 && /* @__PURE__ */ f("button", { onClick: ea, children: "collapse" }),
2368
- /* @__PURE__ */ f("button", { onClick: () => In(!0), children: "show all" })
2379
+ e.expandedLane >= 0 && /* @__PURE__ */ f("button", { onClick: ha, children: "collapse" }),
2380
+ /* @__PURE__ */ f("button", { onClick: () => Un(!0), children: "show all" })
2369
2381
  ] }) : null : null;
2370
2382
  }
2371
- const Qn = ["Why is churn rising for Acme Corp?", "Root cause of payment latency incidents", "Which region has the most incidents?", "Is Fraud Shield worth expanding to Globex?"];
2372
- let So = 0;
2373
- function Yn({ label: e, value: t }) {
2383
+ const ts = ["Why is churn rising for Acme Corp?", "Root cause of payment latency incidents", "Which region has the most incidents?", "Is Fraud Shield worth expanding to Globex?"];
2384
+ let Fo = 0;
2385
+ function ns({ label: e, value: t }) {
2374
2386
  const n = t.length > 18 ? `${t.slice(0, 16)}…` : t;
2375
- return /* @__PURE__ */ z("span", { className: "hud-badge hud-chip", title: `${e}: ${t}`, children: [
2387
+ return /* @__PURE__ */ R("span", { className: "hud-badge hud-chip", title: `${e}: ${t}`, children: [
2376
2388
  e,
2377
2389
  ": ",
2378
2390
  /* @__PURE__ */ f("b", { children: n })
2379
2391
  ] });
2380
2392
  }
2381
- function Oo() {
2382
- const [e, t] = fe(!1), [n, s] = fe("");
2383
- return /* @__PURE__ */ z("div", { className: "hud-run", children: [
2393
+ function Bo() {
2394
+ const [e, t] = he(!1), [n, s] = he("");
2395
+ return /* @__PURE__ */ R("div", { className: "hud-run", children: [
2384
2396
  /* @__PURE__ */ f("button", { onClick: async () => {
2385
- const r = Qn[So++ % Qn.length];
2397
+ const r = ts[Fo++ % ts.length];
2386
2398
  t(!0);
2387
2399
  try {
2388
- s(await uo(r) ? `started · ${r}` : "failed to start"), window.setTimeout(() => s(""), 6e3);
2400
+ s(await Oo(r) ? `started · ${r}` : "failed to start"), window.setTimeout(() => s(""), 6e3);
2389
2401
  } finally {
2390
2402
  t(!1);
2391
2403
  }
@@ -2393,74 +2405,74 @@ function Oo() {
2393
2405
  n && /* @__PURE__ */ f("span", { children: n })
2394
2406
  ] });
2395
2407
  }
2396
- const Vo = ["all", "alive", "thinking", "waiting", "done"];
2397
- function Eo(e, t) {
2398
- return t === "all" ? !0 : t === "alive" ? !e.exitAt : t === "done" ? !!e.exitAt : !e.exitAt && e.status === t;
2408
+ const Uo = ["all", "alive", "thinking", "waiting", "done"];
2409
+ function Zo(e, t) {
2410
+ return t === "all" ? !0 : t === "alive" ? ne(e) : t === "done" ? !ne(e) : ne(e) && e.status === t;
2399
2411
  }
2400
- function Gs(e) {
2401
- const t = ((e.exitAt || performance.now()) - e.bornAt) / 1e3;
2412
+ function Us(e) {
2413
+ const t = ((e.doneAt || e.exitAt || performance.now()) - e.bornAt) / 1e3;
2402
2414
  return t < 60 ? `${t.toFixed(0)}s` : `${(t / 60).toFixed(1)}m`;
2403
2415
  }
2404
- function zo() {
2405
- const e = st(), [t, n] = fe(""), [s, o] = fe(/* @__PURE__ */ new Set()), [r, c] = fe("alive"), [u, d] = fe(""), p = ne(() => [...e.instances.values(), ...[...e.archive.values()].reverse()], [e.instances.size, e.archive.size, e.ticker]), i = ne(() => {
2416
+ function Lo() {
2417
+ const e = rt(), [t, n] = he(""), [s, o] = he(/* @__PURE__ */ new Set()), [r, c] = he("alive"), [u, d] = he(""), p = se(() => [...e.instances.values(), ...[...e.archive.values()].reverse()], [e.instances.size, e.archive.size, e.ticker]), i = se(() => {
2406
2418
  var M;
2407
2419
  const m = /* @__PURE__ */ new Map();
2408
2420
  for (const A of p) m.set(A.run, ((M = e.runs.get(A.run)) == null ? void 0 : M.topic) ?? A.run);
2409
2421
  return [...m];
2410
- }, [p]), w = t.trim().toLowerCase(), a = p.filter((m) => s.size ? s.has(m.name) : !0).filter((m) => Eo(m, r)).filter((m) => u ? m.run === u : !0).filter((m) => {
2422
+ }, [p]), w = t.trim().toLowerCase(), a = p.filter((m) => s.size ? s.has(m.name) : !0).filter((m) => Zo(m, r)).filter((m) => u ? m.run === u : !0).filter((m) => {
2411
2423
  var A;
2412
2424
  if (!w) return !0;
2413
2425
  const M = ((A = e.runs.get(m.run)) == null ? void 0 : A.topic) ?? "";
2414
2426
  return `${m.id} ${m.name} ${M} ${[...m.nodes].join(" ")}`.toLowerCase().includes(w);
2415
- }).sort((m, M) => +!!m.exitAt - +!!M.exitAt || +(M.status === "thinking") - +(m.status === "thinking") || M.bornAt - m.bornAt), l = a.slice(0, 150), k = ne(() => {
2427
+ }).sort((m, M) => +!ne(m) - +!ne(M) || +(M.status === "thinking") - +(m.status === "thinking") || M.bornAt - m.bornAt), l = a.slice(0, 150), k = se(() => {
2416
2428
  const m = /* @__PURE__ */ new Map();
2417
2429
  for (const M of p) {
2418
- const A = m.get(M.name) ?? { color: Pe[M.type], alive: 0 };
2419
- M.exitAt || A.alive++, m.set(M.name, A);
2430
+ const A = m.get(M.name) ?? { color: Ge[M.type], alive: 0 };
2431
+ ne(M) && A.alive++, m.set(M.name, A);
2420
2432
  }
2421
2433
  return [...m].slice(0, 12);
2422
2434
  }, [p]), b = (m) => o((M) => {
2423
2435
  const A = new Set(M);
2424
2436
  return A.has(m) ? A.delete(m) : A.add(m), A;
2425
2437
  });
2426
- return /* @__PURE__ */ z(be, { children: [
2427
- /* @__PURE__ */ z("div", { className: "ap-searchrow", children: [
2438
+ return /* @__PURE__ */ R(Me, { children: [
2439
+ /* @__PURE__ */ R("div", { className: "ap-searchrow", children: [
2428
2440
  /* @__PURE__ */ f("input", { className: "ap-search", value: t, onChange: (m) => n(m.target.value), placeholder: "Search agent, run topic, graph node…", "aria-label": "Search agents" }),
2429
- /* @__PURE__ */ z("span", { className: "ap-count", title: "matching / all agents", children: [
2441
+ /* @__PURE__ */ R("span", { className: "ap-count", title: "matching / all agents", children: [
2430
2442
  a.length,
2431
2443
  a.length !== p.length ? ` / ${p.length}` : ""
2432
2444
  ] })
2433
2445
  ] }),
2434
- /* @__PURE__ */ f("div", { className: "ap-chips", children: k.map(([m, M]) => /* @__PURE__ */ z("button", { className: s.has(m) ? "on" : "", "aria-pressed": s.has(m), style: { "--c": M.color }, onClick: () => b(m), children: [
2446
+ /* @__PURE__ */ f("div", { className: "ap-chips", children: k.map(([m, M]) => /* @__PURE__ */ R("button", { className: s.has(m) ? "on" : "", "aria-pressed": s.has(m), style: { "--c": M.color }, onClick: () => b(m), children: [
2435
2447
  /* @__PURE__ */ f("i", {}),
2436
2448
  m,
2437
2449
  /* @__PURE__ */ f("em", { children: M.alive || "" })
2438
2450
  ] }, m)) }),
2439
- /* @__PURE__ */ z("div", { className: "ap-row-filters", children: [
2440
- /* @__PURE__ */ f("div", { className: "ap-seg", children: Vo.map((m) => /* @__PURE__ */ f("button", { className: r === m ? "on" : "", "aria-pressed": r === m, onClick: () => c(m), children: m }, m)) }),
2441
- /* @__PURE__ */ z("select", { value: u, "aria-label": "Filter by run", onChange: (m) => d(m.target.value), children: [
2451
+ /* @__PURE__ */ R("div", { className: "ap-row-filters", children: [
2452
+ /* @__PURE__ */ f("div", { className: "ap-seg", children: Uo.map((m) => /* @__PURE__ */ f("button", { className: r === m ? "on" : "", "aria-pressed": r === m, onClick: () => c(m), children: m }, m)) }),
2453
+ /* @__PURE__ */ R("select", { value: u, "aria-label": "Filter by run", onChange: (m) => d(m.target.value), children: [
2442
2454
  /* @__PURE__ */ f("option", { value: "", children: "all runs" }),
2443
2455
  i.map(([m, M]) => /* @__PURE__ */ f("option", { value: m, children: M }, m))
2444
2456
  ] })
2445
2457
  ] }),
2446
- /* @__PURE__ */ z("ul", { className: "ap-list", children: [
2458
+ /* @__PURE__ */ R("ul", { className: "ap-list", children: [
2447
2459
  l.map((m) => {
2448
2460
  var M;
2449
- return /* @__PURE__ */ f("li", { children: /* @__PURE__ */ z("button", { onClick: () => Ze(m.id), style: { "--c": Pe[m.type] }, className: m.exitAt ? "is-done" : "", children: [
2450
- /* @__PURE__ */ f("i", { "data-status": m.exitAt ? "done" : m.status }),
2451
- /* @__PURE__ */ z("span", { className: "ap-name", children: [
2452
- oe(m.id),
2461
+ return /* @__PURE__ */ f("li", { children: /* @__PURE__ */ R("button", { onClick: () => Le(m.id), style: { "--c": Ge[m.type] }, className: ne(m) ? "" : "is-done", children: [
2462
+ /* @__PURE__ */ f("i", { "data-status": ne(m) ? m.status : "done" }),
2463
+ /* @__PURE__ */ R("span", { className: "ap-name", children: [
2464
+ ce(m.id),
2453
2465
  /* @__PURE__ */ f("small", { children: ((M = e.runs.get(m.run)) == null ? void 0 : M.topic) ?? "finished run" })
2454
2466
  ] }),
2455
- /* @__PURE__ */ z("span", { className: "ap-meta", children: [
2467
+ /* @__PURE__ */ R("span", { className: "ap-meta", children: [
2456
2468
  /* @__PURE__ */ f("b", { children: m.status }),
2457
2469
  (m.tokens / 1e3).toFixed(1),
2458
2470
  "k · ",
2459
- Gs(m)
2471
+ Us(m)
2460
2472
  ] })
2461
2473
  ] }) }, m.id);
2462
2474
  }),
2463
- a.length > l.length && /* @__PURE__ */ z("li", { className: "ap-more", children: [
2475
+ a.length > l.length && /* @__PURE__ */ R("li", { className: "ap-more", children: [
2464
2476
  "+",
2465
2477
  a.length - l.length,
2466
2478
  " more - refine the filter"
@@ -2469,193 +2481,236 @@ function zo() {
2469
2481
  ] })
2470
2482
  ] });
2471
2483
  }
2472
- function Ro({ i: e }) {
2473
- const t = st(), n = t.runs.get(e.run), s = tn(e.parent), o = [...t.instances.values(), ...t.archive.values()].filter((c) => c.parent === e.id), r = [...t.mcpPending.values()].filter((c) => c.instance === e.id);
2474
- return /* @__PURE__ */ z("div", { className: "ap-detail", style: { "--c": Pe[e.type] }, children: [
2475
- /* @__PURE__ */ z("h3", { children: [
2484
+ function Jo({ i: e }) {
2485
+ const t = rt(), n = t.runs.get(e.run), s = cn(e.parent), o = [...t.instances.values(), ...t.archive.values()].filter((c) => c.parent === e.id), r = [...t.mcpPending.values()].filter((c) => c.instance === e.id);
2486
+ return /* @__PURE__ */ R("div", { className: "ap-detail", style: { "--c": Ge[e.type] }, children: [
2487
+ /* @__PURE__ */ R("h3", { children: [
2476
2488
  /* @__PURE__ */ f("i", {}),
2477
2489
  " ",
2478
2490
  e.name,
2479
2491
  " ",
2480
- /* @__PURE__ */ z("small", { children: [
2492
+ /* @__PURE__ */ R("small", { children: [
2481
2493
  e.subagent ? "subagent" : "agent",
2482
2494
  " · ",
2483
- nt(e.run)
2495
+ st(e.run)
2484
2496
  ] })
2485
2497
  ] }),
2486
- /* @__PURE__ */ z("div", { className: "ap-status", "data-status": e.exitAt ? "done" : e.status, children: [
2487
- e.exitAt ? `finished (${e.status})` : e.status,
2498
+ /* @__PURE__ */ R("div", { className: "ap-status", "data-status": ne(e) ? e.status : "done", children: [
2499
+ ne(e) ? e.status : `finished (${e.status})`,
2488
2500
  " · alive ",
2489
- Gs(e)
2501
+ Us(e)
2490
2502
  ] }),
2491
- /* @__PURE__ */ z("dl", { className: "ap-stats", children: [
2492
- /* @__PURE__ */ z("div", { children: [
2503
+ /* @__PURE__ */ R("dl", { className: "ap-stats", children: [
2504
+ /* @__PURE__ */ R("div", { children: [
2493
2505
  /* @__PURE__ */ f("dt", { children: "tokens" }),
2494
- /* @__PURE__ */ z("dd", { children: [
2506
+ /* @__PURE__ */ R("dd", { children: [
2495
2507
  (e.tokens / 1e3).toFixed(1),
2496
2508
  "k"
2497
2509
  ] })
2498
2510
  ] }),
2499
- /* @__PURE__ */ z("div", { children: [
2511
+ /* @__PURE__ */ R("div", { children: [
2500
2512
  /* @__PURE__ */ f("dt", { children: "LLM calls" }),
2501
2513
  /* @__PURE__ */ f("dd", { children: e.llmCalls })
2502
2514
  ] }),
2503
- /* @__PURE__ */ z("div", { children: [
2515
+ /* @__PURE__ */ R("div", { children: [
2504
2516
  /* @__PURE__ */ f("dt", { children: "tool calls" }),
2505
2517
  /* @__PURE__ */ f("dd", { children: e.toolCalls })
2506
2518
  ] }),
2507
- /* @__PURE__ */ z("div", { children: [
2519
+ /* @__PURE__ */ R("div", { children: [
2508
2520
  /* @__PURE__ */ f("dt", { children: "MCP calls" }),
2509
2521
  /* @__PURE__ */ f("dd", { children: e.mcpCalls })
2510
2522
  ] }),
2511
- /* @__PURE__ */ z("div", { children: [
2523
+ /* @__PURE__ */ R("div", { children: [
2512
2524
  /* @__PURE__ */ f("dt", { children: "graph nodes" }),
2513
2525
  /* @__PURE__ */ f("dd", { children: e.nodes.size })
2514
2526
  ] })
2515
2527
  ] }),
2516
- /* @__PURE__ */ z("section", { children: [
2528
+ /* @__PURE__ */ R("section", { children: [
2517
2529
  /* @__PURE__ */ f("h4", { children: "Run" }),
2518
2530
  /* @__PURE__ */ f("p", { children: n ? n.topic : e.run }),
2519
- n && /* @__PURE__ */ f("div", { className: "ap-steps", children: _t.map((c) => /* @__PURE__ */ f("span", { "data-status": n.steps[c], children: c }, c)) })
2531
+ n && /* @__PURE__ */ f("div", { className: "ap-steps", children: sn.map((c) => /* @__PURE__ */ f("span", { "data-status": n.steps[c], children: c }, c)) })
2520
2532
  ] }),
2521
- (s || o.length > 0) && /* @__PURE__ */ z("section", { children: [
2533
+ (s || o.length > 0) && /* @__PURE__ */ R("section", { children: [
2522
2534
  /* @__PURE__ */ f("h4", { children: "Lineage" }),
2523
- s && /* @__PURE__ */ z("button", { className: "ap-chip-link", style: { "--c": Pe[s.type] }, onClick: () => Ze(s.id), children: [
2535
+ s && /* @__PURE__ */ R("button", { className: "ap-chip-link", style: { "--c": Ge[s.type] }, onClick: () => Le(s.id), children: [
2524
2536
  "↑ spawned by ",
2525
- oe(s.id)
2537
+ ce(s.id)
2526
2538
  ] }),
2527
- o.map((c) => /* @__PURE__ */ z("button", { className: "ap-chip-link", style: { "--c": Pe[c.type] }, onClick: () => Ze(c.id), children: [
2539
+ o.map((c) => /* @__PURE__ */ R("button", { className: "ap-chip-link", style: { "--c": Ge[c.type] }, onClick: () => Le(c.id), children: [
2528
2540
  "↓ ",
2529
- oe(c.id),
2541
+ ce(c.id),
2530
2542
  " ",
2531
- c.exitAt ? "✓" : ""
2543
+ rn(c) ? "✓" : ""
2532
2544
  ] }, c.id))
2533
2545
  ] }),
2534
- r.length > 0 && /* @__PURE__ */ z("section", { children: [
2546
+ r.length > 0 && /* @__PURE__ */ R("section", { children: [
2535
2547
  /* @__PURE__ */ f("h4", { children: "Waiting on MCP" }),
2536
- r.map((c) => /* @__PURE__ */ z("p", { className: "ap-wait", children: [
2548
+ r.map((c) => /* @__PURE__ */ R("p", { className: "ap-wait", children: [
2537
2549
  c.server,
2538
2550
  ".",
2539
2551
  c.tool,
2540
2552
  "() · ",
2541
- _s(c).toFixed(1),
2553
+ ur(c).toFixed(1),
2542
2554
  "s"
2543
2555
  ] }, c.key))
2544
2556
  ] }),
2545
- e.nodes.size > 0 && /* @__PURE__ */ z("section", { children: [
2557
+ e.nodes.size > 0 && /* @__PURE__ */ R("section", { children: [
2546
2558
  /* @__PURE__ */ f("h4", { children: "Graph nodes touched" }),
2547
2559
  /* @__PURE__ */ f("p", { className: "ap-nodes", children: [...e.nodes].slice(0, 24).join(" · ") })
2548
2560
  ] }),
2549
- /* @__PURE__ */ z("section", { children: [
2561
+ /* @__PURE__ */ R("section", { children: [
2550
2562
  /* @__PURE__ */ f("h4", { children: "Activity" }),
2551
- /* @__PURE__ */ f("ul", { className: "ap-events", children: e.recent.map((c, u) => /* @__PURE__ */ f("li", { children: Cs(c) }, u)) })
2563
+ /* @__PURE__ */ f("ul", { className: "ap-events", children: e.recent.map((c, u) => /* @__PURE__ */ f("li", { children: Fs(c) }, u)) })
2552
2564
  ] })
2553
2565
  ] });
2554
2566
  }
2555
- const Ws = es({ nodes: [], links: [] }), xc = () => ts(Ws);
2556
- function cn(e, t) {
2557
- const [n, s] = fe(() => ({ v: e(), value: t() })), o = L(n.v);
2558
- return Oe(() => {
2567
+ const Ho = 0.7, ss = 0.45, rs = 0.32, as = new v.Color("#ef4444"), Ot = "__kitDim", jo = v.Object3D.prototype.onBeforeRender;
2568
+ function Xo(e, t, n, s, o) {
2569
+ var i, w, a, l;
2570
+ const r = this.userData[Ot];
2571
+ if (!r || r.k <= 2e-3 || Array.isArray(o)) return;
2572
+ const c = o, u = 1 - Ho * r.k;
2573
+ r.hasColor = !!((i = c.color) != null && i.isColor), r.hasColor && (r.color.copy(c.color), c.color.multiplyScalar(u), r.failed && c.color.lerp(as, rs * r.k * 0.6)), r.hasEmissive = !!((w = c.emissive) != null && w.isColor), r.hasEmissive && (r.emissive.copy(c.emissive), c.emissive.multiplyScalar(u), r.failed && c.emissive.lerp(as, rs * r.k * 0.4), r.ei = c.emissiveIntensity ?? 1);
2574
+ const d = ((a = c.uniforms) == null ? void 0 : a.uOpacity) ?? ((l = c.uniforms) == null ? void 0 : l.opacity), p = !!d && typeof d.value == "number";
2575
+ r.op = c.opacity, p && (r.uop = d.value), c.transparent && (c.opacity = r.op * (1 - ss * r.k)), p && (d.value = r.uop * (1 - ss * r.k)), r.on = !0, e.state.useProgram(null);
2576
+ }
2577
+ function Ko(e, t, n, s, o) {
2578
+ var d, p;
2579
+ const r = this.userData[Ot];
2580
+ if (!r || !r.on) return;
2581
+ r.on = !1;
2582
+ const c = o;
2583
+ r.hasColor && c.color.copy(r.color), r.hasEmissive && (c.emissive.copy(r.emissive), c.emissiveIntensity = r.ei), c.opacity = r.op;
2584
+ const u = ((d = c.uniforms) == null ? void 0 : d.uOpacity) ?? ((p = c.uniforms) == null ? void 0 : p.opacity);
2585
+ u && typeof u.value == "number" && (u.value = r.uop), e.state.useProgram(null);
2586
+ }
2587
+ let Zs = 0, Ls = !1;
2588
+ function Js(e) {
2589
+ if (e.userData.kitNoDim) return;
2590
+ if (e.isMesh || e.isLine || e.isPoints || e.isSprite) {
2591
+ let s = e.userData[Ot];
2592
+ if (!s) {
2593
+ if (e.onBeforeRender !== jo) return;
2594
+ s = { k: 0, failed: !1, on: !1, color: new v.Color(), emissive: new v.Color(), hasColor: !1, hasEmissive: !1, ei: 1, op: 1, uop: 1 }, e.userData[Ot] = s, e.onBeforeRender = Xo, e.onAfterRender = Ko;
2595
+ }
2596
+ s.k = Zs, s.failed = Ls;
2597
+ }
2598
+ const n = e.children;
2599
+ for (let s = 0; s < n.length; s++) Js(n[s]);
2600
+ }
2601
+ function Qo(e, t, n, s) {
2602
+ t <= 2e-3 && s <= 2e-3 || (Zs = t, Ls = n, Js(e));
2603
+ }
2604
+ const Hs = is({ nodes: [], links: [] }), Zc = () => ls(Hs);
2605
+ function pn(e, t) {
2606
+ const [n, s] = he(() => ({ v: e(), value: t() })), o = B(n.v);
2607
+ return ye(() => {
2559
2608
  const r = e();
2560
2609
  r !== o.current && (o.current = r, s({ v: r, value: t() }));
2561
2610
  }), n.value;
2562
2611
  }
2563
- const To = () => [...g.agents.values()], Co = () => [...g.runs.values()], Po = () => [...g.mcp.values()], Go = () => g.agentsVersion, Wo = () => g.runsVersion, qo = () => g.mcpVersion, Io = () => cn(Go, To), No = () => cn(Wo, Co), Fo = () => cn(qo, Po);
2564
- function Bo() {
2565
- return Q(() => (U.active++, () => void U.active--), []), Oe(({ size: e }) => {
2612
+ const Yo = () => [...g.agents.values()], _o = () => [...g.runs.values()], $o = () => [...g.mcp.values()], ec = () => g.agentsVersion, tc = () => g.runsVersion, nc = () => g.mcpVersion, sc = () => pn(ec, Yo), rc = () => pn(tc, _o), ac = () => pn(nc, $o);
2613
+ function oc() {
2614
+ return Y(() => (U.active++, () => void U.active--), []), ye(({ size: e }) => {
2566
2615
  const t = performance.now();
2567
- Ys(t), oa(t), wa(t), gr(t, e.width, e.height);
2616
+ lr(t), Ma(t), Na(t), Er(t, e.width, e.height);
2568
2617
  }), null;
2569
2618
  }
2570
- const Do = { kind: "run" }, Uo = { kind: "mcp" }, Zo = { kind: "backend" }, Lo = { kind: "graph" }, Jo = { kind: "cluster" };
2571
- function Ho({ agent: e, children: t }) {
2572
- const n = ne(() => ({ kind: e.depth > 0 ? "sub" : "agent", agent: e }), [e]);
2573
- return /* @__PURE__ */ f(We.Provider, { value: n, children: t });
2619
+ const cc = { kind: "run" }, ic = { kind: "mcp" }, lc = { kind: "backend" }, uc = { kind: "graph" }, dc = { kind: "cluster" };
2620
+ function fc({ agent: e, children: t }) {
2621
+ const n = se(() => ({ kind: e.depth > 0 ? "sub" : "agent", agent: e }), [e]);
2622
+ return /* @__PURE__ */ f(qe.Provider, { value: n, children: t });
2623
+ }
2624
+ function hc({ agent: e, children: t }) {
2625
+ const n = B(null), s = B(0);
2626
+ return ye(() => {
2627
+ n.current && (Qo(n.current, e.dim, e.inst.status === "failed", s.current), s.current = e.dim);
2628
+ }), /* @__PURE__ */ f("group", { ref: n, children: t });
2574
2629
  }
2575
- function jo({ Agent: e, Edge: t, selected: n, onSelect: s }) {
2576
- const o = Io();
2577
- return /* @__PURE__ */ f(be, { children: o.map((r) => /* @__PURE__ */ z(Ho, { agent: r, children: [
2630
+ function pc({ Agent: e, Edge: t, selected: n, onSelect: s }) {
2631
+ const o = sc();
2632
+ return /* @__PURE__ */ f(Me, { children: o.map((r) => /* @__PURE__ */ f(fc, { agent: r, children: /* @__PURE__ */ R(hc, { agent: r, children: [
2578
2633
  t && r.inst.parent && /* @__PURE__ */ f(t, { child: r }),
2579
2634
  /* @__PURE__ */ f(e, { agent: r, selected: n === r.id, onSelect: s })
2580
- ] }, r.uid)) });
2635
+ ] }) }, r.uid)) });
2581
2636
  }
2582
- function Xo({ RunMarker: e }) {
2583
- const t = No();
2584
- return /* @__PURE__ */ f(We.Provider, { value: Do, children: t.map((n) => /* @__PURE__ */ f(e, { run: n }, n.uid)) });
2637
+ function mc({ RunMarker: e }) {
2638
+ const t = rc();
2639
+ return /* @__PURE__ */ f(qe.Provider, { value: cc, children: t.map((n) => /* @__PURE__ */ f(e, { run: n }, n.uid)) });
2585
2640
  }
2586
- function Ko({ McpServer: e, Backend: t }) {
2587
- const n = Fo();
2588
- return /* @__PURE__ */ f(be, { children: n.map((s) => /* @__PURE__ */ z(Ls, { children: [
2589
- /* @__PURE__ */ f(We.Provider, { value: Uo, children: e && /* @__PURE__ */ f(_n, { item: s, children: /* @__PURE__ */ f(e, { mcp: s }) }) }),
2590
- /* @__PURE__ */ f(We.Provider, { value: Zo, children: t && [...s.backends.values()].map((o) => /* @__PURE__ */ f(_n, { item: o, children: /* @__PURE__ */ f(t, { mcp: s, backend: o }) }, o.uid)) })
2641
+ function gc({ McpServer: e, Backend: t }) {
2642
+ const n = ac();
2643
+ return /* @__PURE__ */ f(Me, { children: n.map((s) => /* @__PURE__ */ R(tr, { children: [
2644
+ /* @__PURE__ */ f(qe.Provider, { value: ic, children: e && /* @__PURE__ */ f(os, { item: s, children: /* @__PURE__ */ f(e, { mcp: s }) }) }),
2645
+ /* @__PURE__ */ f(qe.Provider, { value: lc, children: t && [...s.backends.values()].map((o) => /* @__PURE__ */ f(os, { item: o, children: /* @__PURE__ */ f(t, { mcp: s, backend: o }) }, o.uid)) })
2591
2646
  ] }, s.uid)) });
2592
2647
  }
2593
- function _n({ item: e, children: t }) {
2594
- const n = L(null), s = L(null);
2595
- return Oe(() => {
2648
+ function os({ item: e, children: t }) {
2649
+ const n = B(null), s = B(null);
2650
+ return ye(() => {
2596
2651
  const o = n.current, r = s.current;
2597
2652
  if (!o || !r) return;
2598
2653
  const c = Math.min(1, Math.max(0, e.mix)), u = c * c * (3 - 2 * c);
2599
2654
  o.position.copy(e.pos), o.scale.setScalar(Math.max(1e-4, u)), r.position.copy(e.pos).negate(), o.visible = u > 2e-3;
2600
2655
  }), /* @__PURE__ */ f("group", { ref: n, scale: 1e-4, visible: !1, children: /* @__PURE__ */ f("group", { ref: s, children: t }) });
2601
2656
  }
2602
- const Qo = Array.from({ length: _ }, (e, t) => t);
2603
- function Yo({ cluster: e, Cluster: t, offset: n }) {
2604
- const s = (n == null ? void 0 : n[0]) ?? 0, o = (n == null ? void 0 : n[1]) ?? 0, r = (n == null ? void 0 : n[2]) ?? 0, c = ns((u, d) => {
2657
+ const Ac = Array.from({ length: $ }, (e, t) => t);
2658
+ function bc({ cluster: e, Cluster: t, offset: n }) {
2659
+ const s = (n == null ? void 0 : n[0]) ?? 0, o = (n == null ? void 0 : n[1]) ?? 0, r = (n == null ? void 0 : n[2]) ?? 0, c = us((u, d) => {
2605
2660
  const p = g.clusterPos[u];
2606
2661
  p ? d.set(p.x + s, p.y + o, p.z + r) : d.set(s, o, r);
2607
2662
  }, [s, o, r]);
2608
- return t ? /* @__PURE__ */ f(be, { children: Qo.map((u) => /* @__PURE__ */ f(t, { lane: u, cluster: C.clusters[u], pos: g.clusterPos[u] ?? new x.Vector3() }, u)) }) : /* @__PURE__ */ f(ja, { place: c, ...e });
2663
+ return t ? /* @__PURE__ */ f(Me, { children: Ac.map((u) => /* @__PURE__ */ f(t, { lane: u, cluster: T.clusters[u], pos: g.clusterPos[u] ?? new v.Vector3() }, u)) }) : /* @__PURE__ */ f(io, { place: c, ...e });
2609
2664
  }
2610
- function _o({ galaxy: e, Graph: t }) {
2611
- const s = cr() && e.nodes.length > 0;
2612
- g.graphWanted = s, Q(
2665
+ function Mc({ galaxy: e, Graph: t }) {
2666
+ const s = Mr() && e.nodes.length > 0;
2667
+ g.graphWanted = s, Y(
2613
2668
  () => () => {
2614
2669
  g.graphWanted = !1;
2615
2670
  },
2616
2671
  []
2617
2672
  );
2618
- const o = L(null);
2619
- return Oe(() => {
2673
+ const o = B(null);
2674
+ return ye(() => {
2620
2675
  const r = o.current;
2621
2676
  if (!r) return;
2622
2677
  const c = g.graph;
2623
2678
  r.position.copy(c.pos), r.scale.setScalar(Math.max(1e-4, c.scale)), r.visible = c.mix > 2e-3;
2624
- }), s ? /* @__PURE__ */ f("group", { ref: o, scale: 1e-4, visible: !1, children: /* @__PURE__ */ f(We.Provider, { value: Lo, children: /* @__PURE__ */ f(t, { galaxy: e }) }) }) : null;
2679
+ }), s ? /* @__PURE__ */ f("group", { ref: o, scale: 1e-4, visible: !1, children: /* @__PURE__ */ f(qe.Provider, { value: uc, children: /* @__PURE__ */ f(t, { galaxy: e }) }) }) : null;
2625
2680
  }
2626
- function wc({ children: e }) {
2627
- const t = L(null);
2628
- return Oe(() => {
2681
+ function Lc({ children: e }) {
2682
+ const t = B(null);
2683
+ return ye(() => {
2629
2684
  const n = t.current;
2630
2685
  if (!n) return;
2631
2686
  const s = Math.max(1e-4, g.graph.scale);
2632
2687
  n.scale.setScalar(1 / s), n.position.copy(g.graph.pos).multiplyScalar(-1 / s);
2633
2688
  }), /* @__PURE__ */ f("group", { ref: t, children: e });
2634
2689
  }
2635
- const $o = new x.Vector3();
2636
- function kc(e) {
2690
+ const yc = new v.Vector3();
2691
+ function Jc(e) {
2637
2692
  var w, a;
2638
- const t = fo(), [n, s] = fe(null);
2639
- ae.preset = typeof e.preset == "string" ? Dr[e.preset] : e.preset, ae.graphNatural = ((w = e.graph) == null ? void 0 : w.natural) ?? 1, ae.graphRadius = ((a = e.graph) == null ? void 0 : a.radius) ?? 2.6, ae.peripheryGap = e.peripheryGap ?? 3.6, g.plane = e.plane;
2693
+ const t = Vo(), [n, s] = he(null);
2694
+ oe.preset = typeof e.preset == "string" ? $r[e.preset] : e.preset, oe.graphNatural = ((w = e.graph) == null ? void 0 : w.natural) ?? 1, oe.graphRadius = ((a = e.graph) == null ? void 0 : a.radius) ?? 2.6, oe.peripheryGap = e.peripheryGap ?? 3.6, g.plane = e.plane;
2640
2695
  const o = JSON.stringify(e.fit ?? {});
2641
- ne(() => yr(e.fit ?? {}), [o]), Q(() => {
2696
+ se(() => Tr(e.fit ?? {}), [o]), Y(() => {
2642
2697
  for (const l of g.agents.values()) l.fresh = !0;
2643
2698
  for (const l of g.runs.values()) l.fresh = !0;
2644
2699
  for (const l of g.mcp.values()) l.fresh = !0;
2645
2700
  g.graph.fresh = !0;
2646
2701
  }, []);
2647
- const r = L(e.extents);
2702
+ const r = B(e.extents);
2648
2703
  r.current = e.extents;
2649
- const c = e.agentRadius ?? 1.1, u = e.agentHeight ?? 0, d = ns(
2704
+ const c = e.agentRadius ?? 1.1, u = e.agentHeight ?? 0, d = us(
2650
2705
  (l) => {
2651
2706
  var k;
2652
- Sa(l, c, u), (k = r.current) == null || k.call(r, l);
2707
+ Da(l, c, u), (k = r.current) == null || k.call(r, l);
2653
2708
  },
2654
2709
  [c, u]
2655
- ), p = e.target ?? [0, 0, 0], i = ne(() => Object.fromEntries(Object.entries(e.controls ?? {}).filter(([, l]) => l !== void 0)), [e.controls]);
2656
- return /* @__PURE__ */ z("div", { className: `scene-root${e.className ? ` ${e.className}` : ""}`, children: [
2657
- /* @__PURE__ */ z(
2658
- Bs,
2710
+ ), p = e.target ?? [0, 0, 0], i = se(() => Object.fromEntries(Object.entries(e.controls ?? {}).filter(([, l]) => l !== void 0)), [e.controls]);
2711
+ return /* @__PURE__ */ R("div", { className: `scene-root${e.className ? ` ${e.className}` : ""}`, children: [
2712
+ /* @__PURE__ */ R(
2713
+ Ys,
2659
2714
  {
2660
2715
  camera: { position: e.camera.position, fov: e.camera.fov ?? 46, near: e.camera.near ?? 0.1, far: e.camera.far ?? 600 },
2661
2716
  dpr: [1, 2],
@@ -2663,18 +2718,18 @@ function kc(e) {
2663
2718
  onPointerMissed: () => s(null),
2664
2719
  children: [
2665
2720
  e.bg && /* @__PURE__ */ f("color", { attach: "background", args: [e.bg] }),
2666
- /* @__PURE__ */ f(Bo, {}),
2721
+ /* @__PURE__ */ f(oc, {}),
2667
2722
  e.Background,
2668
- /* @__PURE__ */ f(Ws.Provider, { value: t, children: /* @__PURE__ */ z("group", { children: [
2669
- e.RunMarker && /* @__PURE__ */ f(Xo, { RunMarker: e.RunMarker }),
2670
- e.GraphResource && /* @__PURE__ */ f(_o, { galaxy: t, Graph: e.GraphResource }),
2671
- /* @__PURE__ */ f(Ko, { McpServer: e.McpServer, Backend: e.Backend }),
2672
- /* @__PURE__ */ f(jo, { Agent: e.Agent, Edge: e.Edge, selected: n, onSelect: s }),
2673
- /* @__PURE__ */ f(We.Provider, { value: Jo, children: /* @__PURE__ */ f(Yo, { cluster: e.cluster, Cluster: e.Cluster, offset: e.clusterOffset }) }),
2723
+ /* @__PURE__ */ f(Hs.Provider, { value: t, children: /* @__PURE__ */ R("group", { children: [
2724
+ e.RunMarker && /* @__PURE__ */ f(mc, { RunMarker: e.RunMarker }),
2725
+ e.GraphResource && /* @__PURE__ */ f(Mc, { galaxy: t, Graph: e.GraphResource }),
2726
+ /* @__PURE__ */ f(gc, { McpServer: e.McpServer, Backend: e.Backend }),
2727
+ /* @__PURE__ */ f(pc, { Agent: e.Agent, Edge: e.Edge, selected: n, onSelect: s }),
2728
+ /* @__PURE__ */ f(qe.Provider, { value: dc, children: /* @__PURE__ */ f(bc, { cluster: e.cluster, Cluster: e.Cluster, offset: e.clusterOffset }) }),
2674
2729
  e.children
2675
2730
  ] }) }),
2676
2731
  /* @__PURE__ */ f(
2677
- Fs,
2732
+ Qs,
2678
2733
  {
2679
2734
  makeDefault: !0,
2680
2735
  target: p,
@@ -2686,52 +2741,53 @@ function kc(e) {
2686
2741
  ...i
2687
2742
  }
2688
2743
  ),
2689
- /* @__PURE__ */ f(Tr, { points: d, origin: $o }),
2744
+ /* @__PURE__ */ f(Zr, { points: d, origin: yc }),
2690
2745
  e.PostFX
2691
2746
  ]
2692
2747
  }
2693
2748
  ),
2694
- /* @__PURE__ */ f(mo, { title: e.title, subtitle: e.subtitle, selected: n, onClose: () => s(null), inset: e.hudInset, children: e.hudChildren })
2749
+ /* @__PURE__ */ f(Co, { title: e.title, subtitle: e.subtitle, selected: n, onClose: () => s(null), inset: e.hudInset, children: e.hudChildren })
2695
2750
  ] });
2696
2751
  }
2697
2752
  export {
2698
- bc as A,
2699
- Nr as B,
2700
- cs as C,
2701
- wc as D,
2702
- lc as E,
2703
- rs as F,
2704
- yc as G,
2705
- fc as K,
2706
- Vs as L,
2707
- js as M,
2708
- Xs as R,
2709
- _t as S,
2710
- Pe as T,
2711
- cc as a,
2712
- Pt as b,
2713
- ic as c,
2714
- _s as d,
2715
- en as e,
2716
- R as f,
2717
- C as g,
2718
- $t as h,
2719
- gc as i,
2720
- kc as j,
2753
+ ne as A,
2754
+ Dc as B,
2755
+ Qr as C,
2756
+ ms as D,
2757
+ Lc as E,
2758
+ Cc as F,
2759
+ Bc as G,
2760
+ fs as H,
2761
+ Pc as K,
2762
+ Ws as L,
2763
+ rr as M,
2764
+ or as R,
2765
+ sn as S,
2766
+ Ge as T,
2767
+ Ec as a,
2768
+ Nt as b,
2769
+ Rc as c,
2770
+ ur as d,
2771
+ on as e,
2772
+ C as f,
2773
+ T as g,
2774
+ an as h,
2775
+ Nc as i,
2776
+ Jc as j,
2721
2777
  g as k,
2722
- hc as l,
2723
- dc as m,
2724
- vc as n,
2725
- Mc as o,
2726
- pc as p,
2727
- oc as q,
2728
- An as r,
2729
- mc as s,
2730
- xc as t,
2731
- st as u,
2732
- uc as v,
2778
+ Gc as l,
2779
+ Tc as m,
2780
+ Uc as n,
2781
+ Fc as o,
2782
+ Wc as p,
2783
+ Vc as q,
2784
+ jt as r,
2785
+ qc as s,
2786
+ Zc as t,
2787
+ rt as u,
2788
+ zc as v,
2733
2789
  h as w,
2734
- Ac as x,
2735
- As as y,
2736
- Ms as z
2790
+ Ic as x,
2791
+ Ss as y,
2792
+ Vs as z
2737
2793
  };