@tangle-network/sandbox-cli 0.21.63 → 0.21.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +31 -3
  2. package/SKILL.md +29 -1
  3. package/dist/graph-native-CS_TmaCK.mjs +1 -0
  4. package/dist/graph-viewer/Analytics-bWsqhurt.js +1001 -0
  5. package/dist/graph-viewer/{AnswerStrip-DhwqOyxI.js → AnswerStrip-COxV7gLW.js} +2 -2
  6. package/dist/graph-viewer/Checks-CQGmKcQ0.js +164 -0
  7. package/dist/graph-viewer/Conversations-DgCshBAf.js +627 -0
  8. package/dist/graph-viewer/{Files-DtZhf0ii.js → Files-CvIOGrAs.js} +81 -90
  9. package/dist/graph-viewer/LiveRun-DHmsr6F7.js +311 -0
  10. package/dist/graph-viewer/{Outputs-QET3nPPp.js → Outputs-rwBg_x36.js} +4 -4
  11. package/dist/graph-viewer/Overview-C150tkVa.js +194 -0
  12. package/dist/graph-viewer/{RunOverview-DJQDAMIx.js → RunOverview-CSqsunqf.js} +2 -2
  13. package/dist/graph-viewer/RunPage-F_prVwiV.js +286 -0
  14. package/dist/graph-viewer/Timeline-BFDywlmz.js +335 -0
  15. package/dist/graph-viewer/Today-BdDuqZGF.js +623 -0
  16. package/dist/graph-viewer/Topology-SAfGtd5u.js +238 -0
  17. package/dist/graph-viewer/Traces-BYqXaS_s.js +254 -0
  18. package/dist/graph-viewer/{WallPages-4d9QUZDq.js → WallPages-MM70VZrC.js} +48 -30
  19. package/dist/graph-viewer/agent-runtime.js +55 -55
  20. package/dist/graph-viewer/{data-BJmP7F1M.js → data-DTGmre1W.js} +31 -27
  21. package/dist/graph-viewer/harness-sessions.js +1 -1
  22. package/dist/graph-viewer/index.js +1357 -1392
  23. package/dist/graph-viewer/{lazy-pages-DM0cZM10.js → lazy-pages-BYuq_L_n.js} +9 -5
  24. package/dist/graph-viewer/{outputs-model-CGdvjkQh.js → outputs-model-CHTx8rMz.js} +2 -2
  25. package/dist/graph-viewer/{viewer/plain-words-CgvxtEOa.js → plain-words-BrMHl0On.js} +9 -4
  26. package/dist/graph-viewer/receipt.js +2 -2
  27. package/dist/graph-viewer/record-CsP_3NJS.js +612 -0
  28. package/dist/graph-viewer/record-part-CuT9Xw37.js +334 -0
  29. package/dist/graph-viewer/record.js +2 -336
  30. package/dist/graph-viewer/report-viewer.js +65 -65
  31. package/dist/graph-viewer/report.js +1 -1
  32. package/dist/graph-viewer/research-publication.js +1 -1
  33. package/dist/graph-viewer/{run-files-C1NgzM0l.js → run-files-BckQDdTD.js} +1 -1
  34. package/dist/graph-viewer/{run-receipt-Bvi4-KVM.js → run-receipt-Bt2iXJUy.js} +1 -0
  35. package/dist/graph-viewer/schemas/agent-workspace.play.v1.json +3 -0
  36. package/dist/graph-viewer/schemas/agent-workspace.plays.v1.json +2 -0
  37. package/dist/graph-viewer/schemas/agent-workspace.run.v1.json +1 -0
  38. package/dist/graph-viewer/styles.css +4559 -2385
  39. package/dist/graph-viewer/trace-spans.js +1 -1
  40. package/dist/graph-viewer/ui-xa5w5bEN.js +889 -0
  41. package/dist/graph-viewer/viewer/{AgentGraphCanvas-CMdOlSlh-4EervjeC.js → AgentGraphCanvas-B74GN1o6-BZEumF7-.js} +2610 -2707
  42. package/dist/graph-viewer/viewer/Analytics-E3XS570U.js +1002 -0
  43. package/dist/graph-viewer/viewer/{AnswerStrip-CGUyXuYH.js → AnswerStrip-B7xMU57A.js} +2 -2
  44. package/dist/graph-viewer/viewer/Checks-CJ5XSHbv.js +165 -0
  45. package/dist/graph-viewer/viewer/Conversations-AX8G7Qyl.js +904 -0
  46. package/dist/graph-viewer/viewer/Files-DxL1576V.js +630 -0
  47. package/dist/graph-viewer/viewer/LiveRun-B-BckyEj.js +820 -0
  48. package/dist/graph-viewer/viewer/{Outputs-CumGyjQo.js → Outputs-BoIpgfMv.js} +24 -23
  49. package/dist/graph-viewer/viewer/Overview-Dzg5XJgy.js +436 -0
  50. package/dist/graph-viewer/viewer/RunPage-NtevWXBs.js +285 -0
  51. package/dist/graph-viewer/viewer/{Scores-ZS16yk0n.js → Scores-Dgv4WePL.js} +3 -3
  52. package/dist/graph-viewer/viewer/Timeline-CzY3LVDu.js +335 -0
  53. package/dist/graph-viewer/viewer/Today-Bi9IIwuh.js +623 -0
  54. package/dist/graph-viewer/viewer/Topology-CzjqSFXH.js +239 -0
  55. package/dist/graph-viewer/viewer/Traces-CMX0H1VU.js +254 -0
  56. package/dist/graph-viewer/viewer/{WallPages-CzWpyIfp.js → WallPages-Clj4bORg.js} +50 -32
  57. package/dist/graph-viewer/viewer/addon-webgl-BSCscllv.js +4027 -0
  58. package/dist/graph-viewer/viewer/agent-record-BrP-ENHg.css +2 -0
  59. package/dist/graph-viewer/viewer/{bot-D6Nrej7Z.js → bot-BaQU59LG.js} +1 -1
  60. package/dist/graph-viewer/viewer/{chevron-right-D_5IKLxu.js → chevron-right-Xn05jYLT.js} +1 -1
  61. package/dist/graph-viewer/viewer/{createLucideIcon-yH0cxLMy.js → createLucideIcon-BSphcoOJ.js} +1 -1
  62. package/dist/graph-viewer/viewer/dashboard-D3JhmRhe-DSl0zhkw.js +371 -0
  63. package/dist/graph-viewer/viewer/{data-CkWfWr7i.js → data-CVHeKhrh.js} +144 -139
  64. package/dist/graph-viewer/viewer/dist-4_KJz8ZM.js +349 -0
  65. package/dist/graph-viewer/viewer/dist-Dy-wrdTt.js +1615 -0
  66. package/dist/graph-viewer/viewer/es2015-utW4DTOJ.js +3506 -0
  67. package/dist/graph-viewer/viewer/{final-output-kwY11u9X.js → final-output-BYT-g-9j.js} +1 -1
  68. package/dist/graph-viewer/viewer/flow-waterfall-model-DvrgPLGS-BdThSFH-.js +2696 -0
  69. package/dist/graph-viewer/viewer/git-branch-BzTbIcYL.js +28 -0
  70. package/dist/graph-viewer/viewer/{highlights-Btsi5OXl.js → highlights-DWeSCtiR.js} +4 -4
  71. package/dist/graph-viewer/viewer/jsx-runtime-DPT6sCLq.js +319 -0
  72. package/dist/graph-viewer/viewer/lazy-pages-ChiMJ8r_.js +803 -0
  73. package/dist/graph-viewer/viewer/{markdown-CX_sVrXB.js → markdown-lADwhD7y.js} +2324 -2608
  74. package/dist/graph-viewer/viewer/model-brand-bTcMjQtB-RSb7EbGB.js +476 -0
  75. package/dist/graph-viewer/viewer/{page-header-Brq611fd.js → page-header-QbUg8F8i.js} +12 -11
  76. package/dist/graph-viewer/{plain-words-CgvxtEOa.js → viewer/plain-words-BrMHl0On.js} +9 -4
  77. package/dist/graph-viewer/viewer/primitives-znfPK9NP-B6UO7uDr.js +346 -0
  78. package/dist/graph-viewer/viewer/react-DQ7E2Epi.js +4254 -0
  79. package/dist/graph-viewer/viewer/{react-dom-t1L4_-il.js → react-dom-BEusmvQH.js} +1 -1
  80. package/dist/graph-viewer/viewer/record-DZnT6SWN-H-ul3U3a.js +3523 -0
  81. package/dist/graph-viewer/viewer/record-W39D5MO-.js +1 -0
  82. package/dist/graph-viewer/viewer/record-part-CbweyYoV.js +335 -0
  83. package/dist/graph-viewer/viewer/{segmented-control-BaJmvTNd.js → segmented-control-Di1mbQlP.js} +27 -26
  84. package/dist/graph-viewer/viewer/{shiki-Qnby7Sh6.js → shiki-BfNNlmfZ.js} +15 -15
  85. package/dist/graph-viewer/viewer/status-meta-S0kV_RDp.js +273 -0
  86. package/dist/graph-viewer/viewer/{stream-tokenizer-CWtnjmRd.js → stream-tokenizer-B5wWaM3U.js} +12 -12
  87. package/dist/graph-viewer/viewer/{themes-1i1fzpRk.js → themes-DuRxHiga.js} +1 -1
  88. package/dist/graph-viewer/viewer/ui-Co03nZUX.js +889 -0
  89. package/dist/graph-viewer/viewer/utils-BuObIC0n.js +1815 -0
  90. package/dist/graph-viewer/viewer/workbench-E6_5q_oL.js +28351 -0
  91. package/dist/graph-viewer/viewer/workflows--mZpHYqo.js +3298 -0
  92. package/dist/graph-viewer/viewer/workspace-cKs9sGEO.js +2468 -0
  93. package/dist/graph-viewer/{workspace-model-Ewf17pTW.js → workspace-model-BkPl_J8E.js} +1 -1
  94. package/dist/graph-viewer/workspace-viewer.js +7452 -7489
  95. package/dist/graph-viewer/workspace.js +1 -1
  96. package/dist/index.mjs +27 -22
  97. package/package.json +10 -9
  98. package/dist/graph-viewer/Analytics-DFWW8Phh.js +0 -938
  99. package/dist/graph-viewer/Checks-qgqV4xgV.js +0 -155
  100. package/dist/graph-viewer/Conversations-CGB45kpj.js +0 -545
  101. package/dist/graph-viewer/LiveRun-C21wUKAY.js +0 -210
  102. package/dist/graph-viewer/Overview-BjeLsA2I.js +0 -506
  103. package/dist/graph-viewer/RunPage-CkkcBEUe.js +0 -258
  104. package/dist/graph-viewer/Timeline-C2Xolk0t.js +0 -293
  105. package/dist/graph-viewer/Today-BVVDtSVN.js +0 -660
  106. package/dist/graph-viewer/Topology-DO5XX8e4.js +0 -545
  107. package/dist/graph-viewer/Traces-BhMxjNgw.js +0 -259
  108. package/dist/graph-viewer/part-events-BrLrg_EV.js +0 -276
  109. package/dist/graph-viewer/record-part-CZal_IMH.js +0 -1408
  110. package/dist/graph-viewer/ui-D8QZRsC3.js +0 -938
  111. package/dist/graph-viewer/viewer/Analytics-DD__nbLm.js +0 -939
  112. package/dist/graph-viewer/viewer/Checks-Ds5M7eAW.js +0 -156
  113. package/dist/graph-viewer/viewer/Conversations-C1n0EBBd.js +0 -819
  114. package/dist/graph-viewer/viewer/Files-Cjr7NMU_.js +0 -448
  115. package/dist/graph-viewer/viewer/LiveRun-uPTkPSjo.js +0 -6772
  116. package/dist/graph-viewer/viewer/Overview-4Umk14_2.js +0 -507
  117. package/dist/graph-viewer/viewer/RunPage-DZlBW7Va.js +0 -257
  118. package/dist/graph-viewer/viewer/Timeline-BnK6-yBR.js +0 -294
  119. package/dist/graph-viewer/viewer/Today-a_-oNigi.js +0 -660
  120. package/dist/graph-viewer/viewer/Topology-CQPCLQT6.js +0 -546
  121. package/dist/graph-viewer/viewer/Traces-C0IGk0L4.js +0 -259
  122. package/dist/graph-viewer/viewer/WorkflowGraph-DZ3xejKE-jRXKeSrg.js +0 -1559
  123. package/dist/graph-viewer/viewer/agent-record-Dw772ROs.css +0 -2
  124. package/dist/graph-viewer/viewer/agent-timeline-Cs9Qbpvo.js +0 -1798
  125. package/dist/graph-viewer/viewer/dist-C1-7EfoW.js +0 -488
  126. package/dist/graph-viewer/viewer/file-text-m7a3piQF.js +0 -47
  127. package/dist/graph-viewer/viewer/jsx-runtime-DQWyJOhv.js +0 -2136
  128. package/dist/graph-viewer/viewer/lazy-pages-BowaGsg-.js +0 -20
  129. package/dist/graph-viewer/viewer/model-brand-bTcMjQtB-fagiBQam.js +0 -723
  130. package/dist/graph-viewer/viewer/popover-CvOAjlnk.js +0 -5329
  131. package/dist/graph-viewer/viewer/react-CY3IbSNO.js +0 -4262
  132. package/dist/graph-viewer/viewer/record-part-D3_Anfpe.js +0 -1329
  133. package/dist/graph-viewer/viewer/terminal-83J_I4Ne.js +0 -52
  134. package/dist/graph-viewer/viewer/ui-C9b1rIUH.js +0 -938
  135. package/dist/graph-viewer/viewer/workspace-CekmOBs3.js +0 -25100
  136. package/dist/graph-viewer/viewer/x-DOc2URqZ.js +0 -56
@@ -1,660 +0,0 @@
1
- import { i as e } from "./rolldown-runtime-DArdT4gl.js";
2
- import { i as t, t as n } from "./jsx-runtime-DQWyJOhv.js";
3
- import { t as r } from "./page-header-Brq611fd.js";
4
- import { t as i } from "./segmented-control-BaJmvTNd.js";
5
- import { a, o } from "./ui-C9b1rIUH.js";
6
- import { O as s, R as c, n as l, p as u } from "./data-CkWfWr7i.js";
7
- //#region src/workspace/Today.tsx
8
- var d = /* @__PURE__ */ e(t(), 1), f = n(), p = (e, t) => e.view.status.key === "solved" ? "solved" : t || e.view.status.key === "live" ? "running" : "stopped", m = (e) => `/play/${encodeURIComponent(e)}`, h = (e) => `/run/${encodeURIComponent(e)}`, g = (e) => e ? e.slice(11, 16) : "—", _ = (e, t) => {
9
- if (!e) return "";
10
- let n = Math.max(0, (t - Date.parse(e)) / 6e4);
11
- return n < 60 ? `${Math.max(1, Math.round(n))} min ago` : n < 2880 ? `${Math.round(n / 60)} h ago` : `${Math.round(n / 1440)} days ago`;
12
- }, v = "discovery.today.visit";
13
- function y(e) {
14
- let [t] = (0, d.useState)(() => {
15
- try {
16
- return window.localStorage.getItem(v);
17
- } catch {
18
- return null;
19
- }
20
- });
21
- (0, d.useEffect)(() => {
22
- try {
23
- window.localStorage.setItem(v, (/* @__PURE__ */ new Date()).toISOString());
24
- } catch {}
25
- }, []);
26
- let n = t && e - Date.parse(t) < 6048e5 && e - Date.parse(t) > 6e4 ? t : null, [r, i] = (0, d.useState)(n ? "visit" : "day");
27
- return {
28
- at: r === "visit" && n ? Date.parse(n) : e - (r === "week" ? 7 : 1) * 864e5,
29
- choice: r,
30
- setChoice: i,
31
- last: n
32
- };
33
- }
34
- function b(e, t) {
35
- if (e == null) return "—";
36
- let n = (e, t = e < 10 ? 2 : +(e < 100)) => e.toLocaleString("en-US", { maximumFractionDigits: t });
37
- if (t === "B" || t === "KiB") {
38
- let r = t === "KiB" ? e * 1024 : e, i = [
39
- "B",
40
- "KiB",
41
- "MiB",
42
- "GiB",
43
- "TiB"
44
- ], a = Math.min(i.length - 1, Math.max(0, Math.floor(Math.log(Math.max(1, r)) / Math.log(1024))));
45
- return `${n(r / 1024 ** a, 1)} ${i[a]}`;
46
- }
47
- return t === "cycles/s" ? `${n(e, 0)}/s` : t === "ms" ? `${n(e, 1)} ms` : `${n(e)} ${t}`;
48
- }
49
- var x = (e) => {
50
- let t = e.target;
51
- return t ? t.approx ? `≈ ${b(t.approx, e.unit)}` : t.min && t.max ? `${b(t.min, e.unit)}–${b(t.max, e.unit)}` : t.min ? `≥ ${b(t.min, e.unit)}` : t.max ? `≤ ${b(t.max, e.unit)}` : "" : "";
52
- }, S = (e) => !e.ratio || e.ratio.side === "met" ? "on target" : `${e.ratio.x >= 100 ? Math.round(e.ratio.x).toLocaleString("en-US") : e.ratio.x.toFixed(1)}× ${e.direction === "down" ? "over" : "below"}`, C = 4;
53
- function w(e, t, n) {
54
- let r = [], i = (e) => !!(e && Date.parse(e) > n);
55
- for (let e of t) {
56
- let t = e.view.trend?.series ?? [];
57
- t.forEach((n, a) => {
58
- if (!i(n.at)) return;
59
- let o = t[a - 1], c = o ? n.passed - o.passed : 0;
60
- r.push({
61
- at: n.at,
62
- play: e.play,
63
- title: e.title,
64
- text: /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [
65
- /* @__PURE__ */ (0, f.jsx)("b", { children: n.release }),
66
- n.runId ? ` of run ${s(e.play, n.runId)}` : "",
67
- " checked: ",
68
- /* @__PURE__ */ (0, f.jsxs)("b", { children: [
69
- n.passed,
70
- "/",
71
- e.view.trend.total
72
- ] }),
73
- " steps"
74
- ] }),
75
- ...c ? { badge: {
76
- text: `${c > 0 ? "+" : ""}${c} step${Math.abs(c) === 1 ? "" : "s"}`,
77
- tone: c > 0 ? "ok" : "warn"
78
- } } : {}
79
- });
80
- });
81
- for (let t of e.view.bars ?? []) {
82
- if (!t.latest || !i(t.latest.at)) continue;
83
- let n = t.change && t.change.from ? (t.change.to - t.change.from) / t.change.from * 100 : null, a = n === null ? null : t.direction === "down" ? n < 0 : n > 0;
84
- r.push({
85
- at: t.latest.at,
86
- play: e.play,
87
- title: e.title,
88
- text: /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [
89
- /* @__PURE__ */ (0, f.jsx)("b", { children: t.label }),
90
- " ",
91
- b(t.latest.value, t.unit),
92
- t.latest.release ? ` at ${t.latest.release}` : "",
93
- " · ",
94
- S(t)
95
- ] }),
96
- ...n !== null && Math.abs(n) >= 1 ? { badge: {
97
- text: `${n > 0 ? "+" : ""}${n.toFixed(0)}% in 7 days`,
98
- tone: a ? "ok" : "warn"
99
- } } : {}
100
- });
101
- }
102
- let n = e.view.blocker?.since;
103
- e.view.blocker && i(n) && r.push({
104
- at: n,
105
- play: e.play,
106
- title: e.title,
107
- text: /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [
108
- e.view.blocker.kind === "stopped" ? "Stopped" : "Held",
109
- ": ",
110
- D((e.view.blocker.sentence ?? e.view.blocker.text).replace(/^(?:Stopped|Held) by [\w ]+: /, ""), 12)
111
- ] })
112
- });
113
- }
114
- for (let t of e.now ?? []) i(t.startedAt) && r.push({
115
- at: t.startedAt,
116
- play: t.play,
117
- title: t.title,
118
- text: /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [
119
- "Run ",
120
- /* @__PURE__ */ (0, f.jsx)("a", {
121
- href: h(t.runId),
122
- children: /* @__PURE__ */ (0, f.jsx)("b", { children: s(t.play, t.runId) })
123
- }),
124
- " started",
125
- t.agents ? ` · ${t.agents} agents` : ""
126
- ] }),
127
- badge: {
128
- text: "started",
129
- tone: "neutral"
130
- }
131
- });
132
- return r.sort((e, t) => e.at < t.at ? 1 : -1);
133
- }
134
- function T(e) {
135
- let t = /* @__PURE__ */ new Map();
136
- for (let n of e) {
137
- let e = t.get(n.play) ?? {
138
- play: n.play,
139
- title: n.title,
140
- moves: []
141
- };
142
- e.moves.push(n), t.set(n.play, e);
143
- }
144
- return [...t.values()];
145
- }
146
- var E = (e) => e.replace(/\/(home|mnt|Users)\/\S+/g, "").replace(/\bkey_[A-Za-z0-9]+\b\s*·?\s*/g, "").replace(/\s{2,}/g, " ").trim(), D = (e, t = 14) => {
147
- let n = E(e).split(/\s+/);
148
- return n.length > t ? `${n.slice(0, t).join(" ")}…` : n.join(" ");
149
- };
150
- function O({ api: e }) {
151
- let t = u(`${e}/overview`, 6e4, !0);
152
- return t.error && !t.data ? /* @__PURE__ */ (0, f.jsxs)("p", {
153
- className: "ws-status",
154
- role: "alert",
155
- children: ["Today is unavailable: ", t.error]
156
- }) : t.data ? /* @__PURE__ */ (0, f.jsx)(k, { doc: t.data }) : /* @__PURE__ */ (0, f.jsx)("p", {
157
- className: "ws-status",
158
- role: "status",
159
- children: "Reading what needs you…"
160
- });
161
- }
162
- function k({ doc: e }) {
163
- let t = Date.parse(e.composedAt) || Date.now(), n = y(t), i = e.plays ?? [], s = (0, d.useMemo)(() => new Map(i.map((t) => [t.play, (e.now ?? []).filter((e) => e.play === t.play)])), [e, i]), c = (0, d.useMemo)(() => new Map((e.week ?? []).map((e) => [e.play, e])), [e]), l = (e.attention ?? []).filter((e) => e.needsYou || e.tone === "crit" || e.tone === "warn"), u = l.filter((e) => e.needsYou || !e.owner || e.owner === "The operator"), h = l.length - u.length, _ = (0, d.useMemo)(() => w(e, i, n.at), [
164
- e,
165
- i,
166
- n.at
167
- ]), v = (e.now ?? []).reduce((e, t) => e + (t.agents ?? 0), 0), b = i.filter((e) => p(e, (s.get(e.play)?.length ?? 0) > 0) === "running").length, x = n.choice === "visit" ? `your last visit, ${g(new Date(n.at).toISOString())} UTC` : n.choice === "week" ? "7 days ago" : "24 hours ago";
168
- return /* @__PURE__ */ (0, f.jsxs)("div", {
169
- className: "rp td2",
170
- "data-mode": "today",
171
- children: [
172
- /* @__PURE__ */ (0, f.jsx)(r, {
173
- className: "rp-head",
174
- title: "Today",
175
- description: /* @__PURE__ */ (0, f.jsxs)(o, {
176
- label: "Since",
177
- value: n.choice,
178
- onChange: (e) => e && n.setChoice(e),
179
- width: 260,
180
- placeholder: "Show changes since",
181
- options: [
182
- ...n.last ? [{
183
- id: "visit",
184
- label: "Your last visit",
185
- meta: `${g(n.last)} UTC`
186
- }] : [],
187
- {
188
- id: "day",
189
- label: "The last 24 hours"
190
- },
191
- {
192
- id: "week",
193
- label: "The last 7 days"
194
- }
195
- ],
196
- children: [/* @__PURE__ */ (0, f.jsx)("span", {
197
- className: "dim",
198
- children: "Since "
199
- }), x]
200
- }),
201
- actions: /* @__PURE__ */ (0, f.jsxs)("ul", {
202
- className: "rp-stats",
203
- children: [/* @__PURE__ */ (0, f.jsxs)("li", { children: [
204
- /* @__PURE__ */ (0, f.jsx)("b", { children: b }),
205
- " ",
206
- b === 1 ? "play" : "plays",
207
- " running"
208
- ] }), /* @__PURE__ */ (0, f.jsxs)("li", { children: [
209
- /* @__PURE__ */ (0, f.jsx)("b", { children: v }),
210
- " ",
211
- v === 1 ? "agent" : "agents",
212
- " live"
213
- ] })]
214
- })
215
- }),
216
- /* @__PURE__ */ (0, f.jsxs)("div", {
217
- className: "td2-top",
218
- children: [/* @__PURE__ */ (0, f.jsxs)("section", {
219
- className: "rp-card",
220
- "aria-label": "Needs you",
221
- children: [
222
- /* @__PURE__ */ (0, f.jsx)("div", {
223
- className: "rp-hd",
224
- children: /* @__PURE__ */ (0, f.jsxs)("h2", { children: ["Needs you", /* @__PURE__ */ (0, f.jsx)("span", {
225
- className: "ct",
226
- children: u.length
227
- })] })
228
- }),
229
- /* @__PURE__ */ (0, f.jsx)("ul", {
230
- className: "td2-needs rp-scroll",
231
- children: u.length ? u.map((e, t) => /* @__PURE__ */ (0, f.jsx)(A, { item: e }, t)) : /* @__PURE__ */ (0, f.jsxs)("li", {
232
- className: "td2-none",
233
- children: [/* @__PURE__ */ (0, f.jsx)(a, { name: "check" }), "Nothing needs you."]
234
- })
235
- }),
236
- h > 0 && /* @__PURE__ */ (0, f.jsxs)("div", {
237
- className: "td2-foot",
238
- children: [/* @__PURE__ */ (0, f.jsxs)("span", { children: [h, " more for other owners"] }), /* @__PURE__ */ (0, f.jsxs)("a", {
239
- className: "rp-link",
240
- href: "/fleet",
241
- children: ["Fleet ", /* @__PURE__ */ (0, f.jsx)(a, {
242
- name: "arrow",
243
- size: 14
244
- })]
245
- })]
246
- })
247
- ]
248
- }), /* @__PURE__ */ (0, f.jsxs)("section", {
249
- className: "rp-card",
250
- "aria-label": `Moved since ${x}`,
251
- children: [/* @__PURE__ */ (0, f.jsx)("div", {
252
- className: "rp-hd",
253
- children: /* @__PURE__ */ (0, f.jsxs)("h2", { children: [
254
- "Moved since ",
255
- n.choice === "visit" ? `${g(new Date(n.at).toISOString())} UTC` : x,
256
- /* @__PURE__ */ (0, f.jsx)("span", {
257
- className: "ct",
258
- children: _.length
259
- })
260
- ] })
261
- }), /* @__PURE__ */ (0, f.jsx)("div", {
262
- className: "td2-moves rp-scroll",
263
- children: _.length ? T(_.slice(0, 60)).map((e) => /* @__PURE__ */ (0, f.jsxs)("section", { children: [/* @__PURE__ */ (0, f.jsxs)("h3", { children: [/* @__PURE__ */ (0, f.jsx)("a", {
264
- href: m(e.play),
265
- children: e.title
266
- }), /* @__PURE__ */ (0, f.jsx)("span", {
267
- className: "ct",
268
- children: e.moves.length
269
- })] }), /* @__PURE__ */ (0, f.jsx)("ol", { children: e.moves.map((e, t) => /* @__PURE__ */ (0, f.jsxs)("li", { children: [
270
- /* @__PURE__ */ (0, f.jsx)("time", { children: g(e.at) }),
271
- /* @__PURE__ */ (0, f.jsx)("span", {
272
- className: "tx",
273
- children: e.text
274
- }),
275
- /* @__PURE__ */ (0, f.jsx)("span", { children: e.badge && /* @__PURE__ */ (0, f.jsx)("span", {
276
- className: `td2-badge ${e.badge.tone}`,
277
- children: e.badge.text
278
- }) })
279
- ] }, t)) })] }, e.play)) : /* @__PURE__ */ (0, f.jsxs)("p", {
280
- className: "td2-none",
281
- children: [
282
- "Nothing moved since ",
283
- x,
284
- "."
285
- ]
286
- })
287
- })]
288
- })]
289
- }),
290
- /* @__PURE__ */ (0, f.jsx)(M, {
291
- plays: i,
292
- live: s,
293
- week: c,
294
- now: t
295
- })
296
- ]
297
- });
298
- }
299
- function A({ item: e }) {
300
- let t = /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [
301
- /* @__PURE__ */ (0, f.jsx)(a, {
302
- name: "alert",
303
- className: e.tone === "crit" ? "f" : "warn"
304
- }),
305
- /* @__PURE__ */ (0, f.jsxs)("span", { children: [/* @__PURE__ */ (0, f.jsx)("b", { children: e.text }), (e.next || e.detail) && /* @__PURE__ */ (0, f.jsx)("span", {
306
- className: "sub",
307
- children: E([e.next, e.detail].filter(Boolean).join(" · "))
308
- })] }),
309
- e.href && /* @__PURE__ */ (0, f.jsx)(a, {
310
- name: "chevron",
311
- className: "go"
312
- })
313
- ] });
314
- return /* @__PURE__ */ (0, f.jsx)("li", { children: e.href ? /* @__PURE__ */ (0, f.jsx)("a", {
315
- href: e.href.startsWith("#") ? `/${e.href}` : e.href,
316
- children: t
317
- }) : /* @__PURE__ */ (0, f.jsx)("div", { children: t }) });
318
- }
319
- var j = 6;
320
- function M({ plays: e, live: t, week: n, now: r }) {
321
- let [o, s] = (0, d.useState)("all"), [c, l] = (0, d.useState)(""), [u, m] = (0, d.useState)({
322
- running: !0,
323
- stopped: !0,
324
- solved: !0
325
- }), [h, g] = (0, d.useState)({
326
- running: !1,
327
- stopped: !1,
328
- solved: !1
329
- }), _ = (0, d.useMemo)(() => {
330
- let r = c.trim().toLowerCase(), i = {
331
- running: [],
332
- stopped: [],
333
- solved: []
334
- };
335
- for (let n of e) (!r || `${n.title} ${n.play}`.toLowerCase().includes(r)) && i[p(n, (t.get(n.play)?.length ?? 0) > 0)].push(n);
336
- for (let e of Object.values(i)) e.sort((e, t) => (n.get(t.play)?.lastActiveAt ?? "").localeCompare(n.get(e.play)?.lastActiveAt ?? ""));
337
- return i;
338
- }, [
339
- e,
340
- t,
341
- n,
342
- c
343
- ]), v = {
344
- all: e.length,
345
- running: _.running.length,
346
- stopped: _.stopped.length,
347
- solved: _.solved.length
348
- };
349
- return /* @__PURE__ */ (0, f.jsxs)("section", {
350
- className: "rp-card td2-board",
351
- "aria-label": "Plays",
352
- children: [
353
- /* @__PURE__ */ (0, f.jsxs)("div", {
354
- className: "rp-hd",
355
- children: [
356
- /* @__PURE__ */ (0, f.jsxs)("h2", { children: ["Plays", /* @__PURE__ */ (0, f.jsx)("span", {
357
- className: "ct",
358
- children: e.length
359
- })] }),
360
- /* @__PURE__ */ (0, f.jsx)(i, {
361
- "aria-label": "Show",
362
- value: o,
363
- onValueChange: s,
364
- options: [
365
- "all",
366
- "running",
367
- "stopped",
368
- "solved"
369
- ].map((e) => ({
370
- value: e,
371
- label: e === "all" ? "All" : e[0].toUpperCase() + e.slice(1),
372
- adornment: /* @__PURE__ */ (0, f.jsx)("span", {
373
- className: "ct",
374
- children: v[e]
375
- })
376
- }))
377
- }),
378
- /* @__PURE__ */ (0, f.jsx)("span", {
379
- className: "end",
380
- children: /* @__PURE__ */ (0, f.jsxs)("label", {
381
- className: "rp-field td2-find",
382
- children: [/* @__PURE__ */ (0, f.jsx)(a, { name: "search" }), /* @__PURE__ */ (0, f.jsx)("input", {
383
- value: c,
384
- onChange: (e) => l(e.target.value),
385
- placeholder: "Find a play",
386
- "aria-label": "Find a play"
387
- })]
388
- })
389
- })
390
- ]
391
- }),
392
- /* @__PURE__ */ (0, f.jsxs)("div", {
393
- className: "td2-cols",
394
- "aria-hidden": "true",
395
- children: [
396
- /* @__PURE__ */ (0, f.jsx)("span", { children: "Play" }),
397
- /* @__PURE__ */ (0, f.jsx)("span", { children: "Steps passed" }),
398
- /* @__PURE__ */ (0, f.jsxs)("span", {
399
- className: "axis",
400
- children: [Array.from({ length: C }, (e, t) => /* @__PURE__ */ (0, f.jsxs)("i", {
401
- style: { left: `${t / C * 100}%` },
402
- children: [(10 ** (C - t)).toLocaleString("en-US"), "×"]
403
- }, t)), /* @__PURE__ */ (0, f.jsx)("i", {
404
- style: { left: "100%" },
405
- className: "t",
406
- children: "target"
407
- })]
408
- }),
409
- /* @__PURE__ */ (0, f.jsx)("span", { children: "7 days" }),
410
- /* @__PURE__ */ (0, f.jsx)("span", {
411
- className: "r",
412
- children: "Live"
413
- })
414
- ]
415
- }),
416
- /* @__PURE__ */ (0, f.jsx)("div", {
417
- className: "rp-scroll",
418
- children: [
419
- "running",
420
- "stopped",
421
- "solved"
422
- ].filter((e) => (o === "all" || o === e) && _[e].length).map((e) => {
423
- let i = _[e], o = h[e] || c ? i : i.slice(0, j);
424
- return /* @__PURE__ */ (0, f.jsxs)("div", {
425
- className: "td2-group",
426
- children: [
427
- /* @__PURE__ */ (0, f.jsxs)("button", {
428
- type: "button",
429
- className: "td2-gh",
430
- "aria-expanded": u[e],
431
- onClick: () => m({
432
- ...u,
433
- [e]: !u[e]
434
- }),
435
- children: [
436
- /* @__PURE__ */ (0, f.jsx)(a, { name: "chevron" }),
437
- e[0].toUpperCase() + e.slice(1),
438
- /* @__PURE__ */ (0, f.jsx)("span", {
439
- className: "ct",
440
- children: i.length
441
- })
442
- ]
443
- }),
444
- u[e] && o.map((i) => /* @__PURE__ */ (0, f.jsx)(N, {
445
- p: i,
446
- group: e,
447
- runs: t.get(i.play) ?? [],
448
- week: n.get(i.play),
449
- now: r
450
- }, i.play)),
451
- u[e] && o.length < i.length && /* @__PURE__ */ (0, f.jsxs)("button", {
452
- type: "button",
453
- className: "rp-btn sm td2-more",
454
- onClick: () => g({
455
- ...h,
456
- [e]: !0
457
- }),
458
- children: [
459
- "Show ",
460
- i.length - o.length,
461
- " more"
462
- ]
463
- })
464
- ]
465
- }, e);
466
- })
467
- })
468
- ]
469
- });
470
- }
471
- function N({ p: e, group: t, runs: n, week: r, now: i }) {
472
- let a = e.view.trend, o = a?.newest, u = a && o ? o.passed - a.best : 0, d = n.reduce((e, t) => e + (t.agents ?? 0), 0), p = (e.view.bars ?? []).filter((e) => e.latest);
473
- return /* @__PURE__ */ (0, f.jsxs)("div", {
474
- className: `td2-row ${t}`,
475
- children: [
476
- /* @__PURE__ */ (0, f.jsxs)("div", {
477
- className: "nm",
478
- children: [/* @__PURE__ */ (0, f.jsx)("a", {
479
- href: m(e.play),
480
- children: e.title
481
- }), /* @__PURE__ */ (0, f.jsx)("span", {
482
- className: "sub",
483
- children: t === "stopped" && e.view.blocker && p.length ? /* @__PURE__ */ (0, f.jsxs)("span", {
484
- title: E(e.view.blocker.sentence ?? e.view.blocker.text),
485
- children: ["Stopped ", g(e.view.blocker.since)]
486
- }) : r ? `${r.runCount ?? r.runs.length} ${(r.runCount ?? r.runs.length) === 1 ? "run" : "runs"} this week${r.lostHours >= .1 ? ` · ${r.lostHours.toFixed(+(r.lostHours < 10))} h lost` : ""}` : /* @__PURE__ */ (0, f.jsx)(l, { status: c(e.view.status) })
487
- })]
488
- }),
489
- /* @__PURE__ */ (0, f.jsx)("div", {
490
- className: "steps",
491
- children: a && o ? /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [/* @__PURE__ */ (0, f.jsxs)("span", {
492
- className: "st",
493
- children: [
494
- /* @__PURE__ */ (0, f.jsxs)("b", { children: [
495
- o.passed,
496
- "/",
497
- a.total
498
- ] }),
499
- /* @__PURE__ */ (0, f.jsx)(P, {
500
- passed: o.passed,
501
- total: a.total
502
- }),
503
- u < 0 && /* @__PURE__ */ (0, f.jsxs)("span", {
504
- className: "td2-badge warn",
505
- title: `best ${a.best}/${a.total}`,
506
- children: ["▾ ", -u]
507
- })
508
- ]
509
- }), /* @__PURE__ */ (0, f.jsxs)("span", {
510
- className: "sub",
511
- children: [
512
- o.release,
513
- " · ",
514
- _(o.at, i),
515
- u < 0 ? ` · best ${a.best}/${a.total}` : ""
516
- ]
517
- })] }) : /* @__PURE__ */ (0, f.jsx)("span", {
518
- className: "dim",
519
- children: "—"
520
- })
521
- }),
522
- /* @__PURE__ */ (0, f.jsx)("div", {
523
- className: "metrics",
524
- children: t === "stopped" && e.view.blocker && !p.length ? /* @__PURE__ */ (0, f.jsxs)("p", {
525
- className: "hold",
526
- children: [
527
- /* @__PURE__ */ (0, f.jsxs)("b", { children: [
528
- "Stopped ",
529
- g(e.view.blocker.since),
530
- ":"
531
- ] }),
532
- " ",
533
- D((e.view.blocker.sentence ?? e.view.blocker.text).replace(/^Stopped by [\w ]+: /, ""), 22)
534
- ]
535
- }) : p.length ? p.map((e) => /* @__PURE__ */ (0, f.jsx)(F, { bar: e }, e.metric)) : t === "running" && e.view.blocker ? /* @__PURE__ */ (0, f.jsxs)("p", {
536
- className: "hold",
537
- children: [
538
- /* @__PURE__ */ (0, f.jsx)("b", { children: "Held:" }),
539
- " ",
540
- D(e.view.blocker.sentence ?? e.view.blocker.text, 18)
541
- ]
542
- }) : null
543
- }),
544
- /* @__PURE__ */ (0, f.jsx)("div", {
545
- className: "trend",
546
- children: a && /* @__PURE__ */ (0, f.jsx)(I, { trend: a })
547
- }),
548
- /* @__PURE__ */ (0, f.jsx)("div", {
549
- className: "live",
550
- children: n.length ? /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [/* @__PURE__ */ (0, f.jsxs)("span", {
551
- className: "lv",
552
- children: [
553
- /* @__PURE__ */ (0, f.jsx)("span", { className: "rp-dot live" }),
554
- /* @__PURE__ */ (0, f.jsx)("b", { children: n.length }),
555
- " ",
556
- n.length === 1 ? "run" : "runs",
557
- d ? /* @__PURE__ */ (0, f.jsxs)(f.Fragment, { children: [
558
- " · ",
559
- /* @__PURE__ */ (0, f.jsx)("b", { children: d }),
560
- " agents"
561
- ] }) : null
562
- ]
563
- }), /* @__PURE__ */ (0, f.jsx)("span", {
564
- className: "sub",
565
- children: n.slice(0, 3).map((t, n) => /* @__PURE__ */ (0, f.jsxs)("span", { children: [n ? " · " : "", /* @__PURE__ */ (0, f.jsx)("a", {
566
- href: h(t.runId),
567
- children: s(e.play, t.runId)
568
- })] }, t.runId))
569
- })] }) : /* @__PURE__ */ (0, f.jsx)("span", {
570
- className: "sub",
571
- children: r?.lastActiveAt ? `active ${_(r.lastActiveAt, i)}` : ""
572
- })
573
- })
574
- ]
575
- });
576
- }
577
- function P({ passed: e, total: t }) {
578
- return /* @__PURE__ */ (0, f.jsx)("span", {
579
- className: "td2-meter",
580
- "aria-hidden": "true",
581
- children: Array.from({ length: Math.min(t, 12) }, (t, n) => /* @__PURE__ */ (0, f.jsx)("i", { className: n < e ? "on" : "" }, n))
582
- });
583
- }
584
- function F({ bar: e }) {
585
- let t = !e.ratio || e.ratio.side === "met", n = t ? 0 : Math.min(C, Math.log10(Math.max(1, e.ratio.x)));
586
- return /* @__PURE__ */ (0, f.jsxs)("div", {
587
- className: "td2-metric",
588
- title: `${e.label}: ${b(e.latest?.value, e.unit)}${e.latest?.release ? ` at ${e.latest.release}` : ""}; target ${x(e)}`,
589
- children: [
590
- /* @__PURE__ */ (0, f.jsxs)("span", {
591
- className: "l",
592
- children: [
593
- e.label,
594
- " ",
595
- e.direction === "down" ? "↓" : "↑",
596
- /* @__PURE__ */ (0, f.jsx)("span", {
597
- className: "tg",
598
- children: x(e)
599
- })
600
- ]
601
- }),
602
- /* @__PURE__ */ (0, f.jsxs)("span", {
603
- className: "ax",
604
- children: [
605
- /* @__PURE__ */ (0, f.jsx)("i", { className: "track" }),
606
- !t && /* @__PURE__ */ (0, f.jsx)("i", {
607
- className: "dist",
608
- style: { left: `${(1 - n / C) * 100}%` }
609
- }),
610
- /* @__PURE__ */ (0, f.jsx)("i", { className: "tick" })
611
- ]
612
- }),
613
- /* @__PURE__ */ (0, f.jsxs)("span", {
614
- className: "v",
615
- children: [
616
- /* @__PURE__ */ (0, f.jsx)("b", { children: b(e.latest?.value, e.unit) }),
617
- " ",
618
- /* @__PURE__ */ (0, f.jsx)("span", {
619
- className: t ? "ok" : "warn",
620
- children: S(e)
621
- })
622
- ]
623
- })
624
- ]
625
- });
626
- }
627
- function I({ trend: e }) {
628
- let t = e.passed.length, n = (e) => t <= 1 ? 168 : e / (t - 1) * 162 + 3, r = (t) => 27 - t / Math.max(1, e.total) * 22, i = "";
629
- e.passed.forEach((e, t) => {
630
- e !== null && (i += `${i ? "L" : "M"}${n(t).toFixed(1)} ${r(e).toFixed(1)}`);
631
- });
632
- let a = [...e.passed.entries()].reverse().find(([, e]) => e !== null);
633
- return /* @__PURE__ */ (0, f.jsxs)("svg", {
634
- className: "td2-spark",
635
- viewBox: "0 0 168 30",
636
- role: "img",
637
- "aria-label": `Steps passed over ${t} days, newest ${a?.[1] ?? "none"} of ${e.total}`,
638
- children: [
639
- /* @__PURE__ */ (0, f.jsx)("line", {
640
- x1: "0",
641
- x2: 168,
642
- y1: r(e.total),
643
- y2: r(e.total),
644
- className: "all"
645
- }),
646
- i && /* @__PURE__ */ (0, f.jsx)("path", {
647
- d: i,
648
- className: "ln"
649
- }),
650
- a && /* @__PURE__ */ (0, f.jsx)("circle", {
651
- cx: n(a[0]),
652
- cy: r(a[1]),
653
- r: "3",
654
- className: "pt"
655
- })
656
- ]
657
- });
658
- }
659
- //#endregion
660
- export { O as TodayPage, b as measure };