@tangle-network/sandbox-cli 0.21.64 → 0.21.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +9 -8
  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
@@ -0,0 +1 @@
1
+ import "./record-DZnT6SWN-H-ul3U3a.js";
@@ -0,0 +1,335 @@
1
+ import { i as e } from "./rolldown-runtime-DArdT4gl.js";
2
+ import { n as t, t as n } from "./jsx-runtime-DPT6sCLq.js";
3
+ import { n as r, r as i } from "./markdown-lADwhD7y.js";
4
+ import { i as a, r as o, t as s } from "./record-DZnT6SWN-H-ul3U3a.js";
5
+ import { l as c, p as l } from "./data-CVHeKhrh.js";
6
+ import "./record-W39D5MO-.js";
7
+ //#region src/viewer/StructuredContent.tsx
8
+ var u = /* @__PURE__ */ e(t(), 1), d = n();
9
+ function f(e) {
10
+ try {
11
+ return JSON.parse(e);
12
+ } catch {
13
+ return e;
14
+ }
15
+ }
16
+ function p({ text: e, resolveHref: t }) {
17
+ return /* @__PURE__ */ (0, d.jsx)("div", {
18
+ className: "activity-prose",
19
+ children: /* @__PURE__ */ (0, d.jsx)(i, {
20
+ skipHtml: !0,
21
+ remarkPlugins: [r],
22
+ components: {
23
+ a: ({ href: e, children: n }) => {
24
+ let r = /^https?:\/\//i.test(e ?? "") ? e : t?.(e ?? "");
25
+ return r && (/^https?:\/\//i.test(r) || /^\/(?!\/)/.test(r)) ? /* @__PURE__ */ (0, d.jsx)("a", {
26
+ href: r,
27
+ target: "_blank",
28
+ rel: "noreferrer",
29
+ children: n
30
+ }) : /* @__PURE__ */ (0, d.jsx)("span", { children: n });
31
+ },
32
+ img: ({ alt: e }) => /* @__PURE__ */ (0, d.jsx)("span", { children: e || "Image omitted" }),
33
+ table: ({ children: e }) => /* @__PURE__ */ (0, d.jsx)("div", {
34
+ className: "rr-table-scroll",
35
+ children: /* @__PURE__ */ (0, d.jsx)("table", { children: e })
36
+ })
37
+ },
38
+ children: e
39
+ })
40
+ });
41
+ }
42
+ function m({ value: e, depth: t = 0, field: n }) {
43
+ let [r, i] = (0, u.useState)(!1);
44
+ if (e == null) return /* @__PURE__ */ (0, d.jsx)("span", {
45
+ className: "small",
46
+ children: "Not supplied"
47
+ });
48
+ if (typeof e == "string") {
49
+ if (n && /^(command|cmd|code|script|stdout|stderr)$/i.test(n)) return /* @__PURE__ */ (0, d.jsx)("pre", {
50
+ className: "activity-code",
51
+ children: /* @__PURE__ */ (0, d.jsx)("code", { children: e })
52
+ });
53
+ let r = t < 3 ? f(e) : e;
54
+ return typeof r == "string" ? /* @__PURE__ */ (0, d.jsx)(p, { text: e }) : /* @__PURE__ */ (0, d.jsx)(m, {
55
+ value: r,
56
+ depth: t + 1
57
+ });
58
+ }
59
+ if (typeof e != "object") return /* @__PURE__ */ (0, d.jsx)("span", { children: String(e) });
60
+ if (Array.isArray(e)) {
61
+ let n = r ? e : e.slice(0, 12);
62
+ return /* @__PURE__ */ (0, d.jsxs)("div", {
63
+ className: "structured-items",
64
+ children: [n.map((e, n) => /* @__PURE__ */ (0, d.jsx)("div", { children: /* @__PURE__ */ (0, d.jsx)(m, {
65
+ value: e,
66
+ depth: t + 1
67
+ }) }, n)), e.length > n.length && /* @__PURE__ */ (0, d.jsxs)("button", {
68
+ className: "ui-button",
69
+ onClick: () => i(!0),
70
+ children: [
71
+ "Show all ",
72
+ e.length,
73
+ " items"
74
+ ]
75
+ })]
76
+ });
77
+ }
78
+ let a = e;
79
+ if (a.type === "text" && typeof a.text == "string") return /* @__PURE__ */ (0, d.jsx)(m, {
80
+ value: a.text,
81
+ depth: t + 1
82
+ });
83
+ let o = Object.entries(a), s = r ? o : o.slice(0, 16);
84
+ return t > 4 ? /* @__PURE__ */ (0, d.jsxs)("details", { children: [/* @__PURE__ */ (0, d.jsx)("summary", { children: "Nested data" }), /* @__PURE__ */ (0, d.jsx)("pre", { children: JSON.stringify(e, null, 2) })] }) : /* @__PURE__ */ (0, d.jsxs)("dl", {
85
+ className: "structured-fields",
86
+ children: [s.map(([e, n]) => /* @__PURE__ */ (0, d.jsxs)("div", { children: [/* @__PURE__ */ (0, d.jsx)("dt", { children: e.replace(/([a-z])([A-Z])/g, "$1 $2").replaceAll("_", " ") }), /* @__PURE__ */ (0, d.jsx)("dd", { children: /* @__PURE__ */ (0, d.jsx)(m, {
87
+ value: n,
88
+ depth: t + 1,
89
+ field: e
90
+ }) })] }, e)), o.length > s.length && /* @__PURE__ */ (0, d.jsxs)("button", {
91
+ className: "ui-button",
92
+ onClick: () => i(!0),
93
+ children: [
94
+ "Show all ",
95
+ o.length,
96
+ " fields"
97
+ ]
98
+ })]
99
+ });
100
+ }
101
+ function h({ text: e, rawLabel: t = "Raw data" }) {
102
+ let n = f(e);
103
+ return /* @__PURE__ */ (0, d.jsxs)("div", {
104
+ className: "structured-content",
105
+ children: [/* @__PURE__ */ (0, d.jsx)(m, { value: n }), typeof n != "string" && /* @__PURE__ */ (0, d.jsxs)("details", {
106
+ className: "raw-data",
107
+ children: [/* @__PURE__ */ (0, d.jsx)("summary", { children: t }), /* @__PURE__ */ (0, d.jsx)("pre", { children: e })]
108
+ })]
109
+ });
110
+ }
111
+ var g = /^(command|cmd|code|script|content|new_string|old_string|patch|text|stdout|stderr|output|query|prompt)$/i;
112
+ function _(e, t = [], n = []) {
113
+ if (n.length >= 24 || t.length > 8) return n;
114
+ if (typeof e == "string") (e.includes("\n") || e.length > 120 || g.test(t.at(-1) ?? "")) && n.push({
115
+ path: t.join(" › ") || "text",
116
+ text: e
117
+ });
118
+ else if (Array.isArray(e)) e.forEach((e, r) => _(e, [...t, String(r)], n));
119
+ else if (e && typeof e == "object") for (let [r, i] of Object.entries(e)) _(i, [...t, r], n);
120
+ return n;
121
+ }
122
+ function v({ text: e, rawLabel: t = "Raw data" }) {
123
+ let n = f(e);
124
+ if (typeof n != "object" || !n) return /* @__PURE__ */ (0, d.jsx)("pre", {
125
+ className: "activity-code verbatim",
126
+ "data-verbatim": !0,
127
+ children: /* @__PURE__ */ (0, d.jsx)("code", { children: e })
128
+ });
129
+ let r = _(n);
130
+ return /* @__PURE__ */ (0, d.jsxs)("div", {
131
+ className: "structured-content verbatim",
132
+ "data-verbatim": !0,
133
+ children: [r.map((e, t) => /* @__PURE__ */ (0, d.jsxs)("section", {
134
+ className: "verbatim-block",
135
+ children: [/* @__PURE__ */ (0, d.jsx)("span", {
136
+ className: "verbatim-path mono",
137
+ children: e.path
138
+ }), /* @__PURE__ */ (0, d.jsx)("pre", {
139
+ className: "activity-code",
140
+ children: /* @__PURE__ */ (0, d.jsx)("code", { children: e.text })
141
+ })]
142
+ }, t)), /* @__PURE__ */ (0, d.jsxs)("details", {
143
+ className: "raw-data",
144
+ open: !r.length,
145
+ children: [/* @__PURE__ */ (0, d.jsx)("summary", { children: t }), /* @__PURE__ */ (0, d.jsx)("pre", {
146
+ className: "activity-code",
147
+ children: /* @__PURE__ */ (0, d.jsx)("code", { children: JSON.stringify(n, null, 2) })
148
+ })]
149
+ })]
150
+ });
151
+ }
152
+ //#endregion
153
+ //#region src/viewer/model.ts
154
+ var { ms: y, utcTime: b, compact: x, hostless: S, fmt: C, interval: w, roleOf: T, textOf: E, toolKey: D, callsOf: O, preview: k, indexRecord: A, measuredUsage: j, agentState: M, eventMatches: N, eventSource: P, hoverLines: F, modelIdentity: I, tooltipSections: L } = o;
155
+ //#endregion
156
+ //#region src/workspace/EventDetail.tsx
157
+ function R({ event: e, full: t, index: n, onClose: r, load: i }) {
158
+ let [a, o] = (0, u.useState)({}), [s, c] = (0, u.useState)({}), l = e.source;
159
+ (0, u.useEffect)(() => {
160
+ t && i(t).then((e) => c({ text: e })).catch((e) => c({ error: e instanceof Error ? e.message : "Unavailable" }));
161
+ }, [t, i]);
162
+ let f = (e, t) => i(`${e}${t ? `?line=${t}` : ""}`);
163
+ return (0, u.useEffect)(() => {
164
+ let e = (e) => {
165
+ e.key === "Escape" && r();
166
+ };
167
+ return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
168
+ }, [r]), /* @__PURE__ */ (0, d.jsxs)("aside", {
169
+ className: "event-detail",
170
+ role: "dialog",
171
+ "aria-label": "Event details",
172
+ "data-event-detail": e.id,
173
+ children: [
174
+ /* @__PURE__ */ (0, d.jsxs)("header", { children: [/* @__PURE__ */ (0, d.jsxs)("div", { children: [/* @__PURE__ */ (0, d.jsx)("h3", { children: e.label }), /* @__PURE__ */ (0, d.jsxs)("p", {
175
+ className: "faint mono",
176
+ children: [
177
+ b(e.at, !0),
178
+ " · ",
179
+ n.nodes.get(n.canonical(e.node))?.label ?? e.node,
180
+ " · ",
181
+ e.category
182
+ ]
183
+ })] }), /* @__PURE__ */ (0, d.jsx)("button", {
184
+ type: "button",
185
+ className: "ui-button",
186
+ onClick: r,
187
+ children: "Close"
188
+ })] }),
189
+ /* @__PURE__ */ (0, d.jsx)("p", {
190
+ className: "mono faint event-id",
191
+ children: e.id
192
+ }),
193
+ t ? /* @__PURE__ */ (0, d.jsxs)("section", {
194
+ className: "event-full",
195
+ "data-full-output": s.text === void 0 ? void 0 : t,
196
+ children: [
197
+ /* @__PURE__ */ (0, d.jsx)("h4", { children: "Full output" }),
198
+ /* @__PURE__ */ (0, d.jsxs)("p", {
199
+ className: "mono faint",
200
+ children: ["sha256 ", t]
201
+ }),
202
+ s.error && /* @__PURE__ */ (0, d.jsx)("p", {
203
+ role: "alert",
204
+ children: s.error
205
+ }),
206
+ s.text === void 0 && !s.error && /* @__PURE__ */ (0, d.jsx)("p", {
207
+ className: "faint",
208
+ children: "Loading…"
209
+ }),
210
+ s.text !== void 0 && /* @__PURE__ */ (0, d.jsx)(v, {
211
+ text: s.text,
212
+ rawLabel: "Original bytes"
213
+ })
214
+ ]
215
+ }) : E(e) && (e.detail.toolCallId !== void 0 || e.category === "lifecycle" ? /* @__PURE__ */ (0, d.jsx)(v, { text: E(e) }) : /* @__PURE__ */ (0, d.jsx)(h, { text: E(e) })),
216
+ /* @__PURE__ */ (0, d.jsxs)("details", {
217
+ className: "raw-data",
218
+ open: !t,
219
+ children: [/* @__PURE__ */ (0, d.jsx)("summary", { children: "Recorded detail" }), /* @__PURE__ */ (0, d.jsx)("pre", { children: JSON.stringify(e.detail, null, 2) })]
220
+ }),
221
+ l?.path && /* @__PURE__ */ (0, d.jsxs)("section", {
222
+ className: "event-source",
223
+ children: [
224
+ /* @__PURE__ */ (0, d.jsx)("h4", { children: "Source" }),
225
+ /* @__PURE__ */ (0, d.jsxs)("p", {
226
+ className: "mono",
227
+ children: [
228
+ l.path,
229
+ l.line ? `:${l.line}` : "",
230
+ l.pointer ? `#${l.pointer}` : ""
231
+ ]
232
+ }),
233
+ l.sha256 && /* @__PURE__ */ (0, d.jsxs)("p", {
234
+ className: "mono faint",
235
+ children: ["sha256 ", l.sha256]
236
+ }),
237
+ l.sha256 && l.line && a.text === void 0 && /* @__PURE__ */ (0, d.jsx)("button", {
238
+ type: "button",
239
+ className: "ui-button",
240
+ onClick: () => f(l.sha256, l.line).then((e) => o({ text: e })).catch((e) => o({ error: e instanceof Error ? e.message : "Unavailable" })),
241
+ children: "Original line"
242
+ }),
243
+ a.error && /* @__PURE__ */ (0, d.jsx)("p", {
244
+ role: "alert",
245
+ children: a.error
246
+ }),
247
+ a.text !== void 0 && /* @__PURE__ */ (0, d.jsx)(v, {
248
+ text: a.text,
249
+ rawLabel: "Original bytes"
250
+ })
251
+ ]
252
+ })
253
+ ]
254
+ });
255
+ }
256
+ //#endregion
257
+ //#region src/workspace/source-reader.ts
258
+ function z(e) {
259
+ return async (t) => {
260
+ let n = await fetch(`${e}/source/${t}`, { credentials: "same-origin" });
261
+ if (!n.ok) throw Error(n.status === 409 ? "The source no longer matches its recorded hash." : `Source unavailable (HTTP ${n.status})`);
262
+ return n.text();
263
+ };
264
+ }
265
+ //#endregion
266
+ //#region src/workspace/record-part.tsx
267
+ function B(e) {
268
+ let t = l(e, void 0, !0);
269
+ return {
270
+ ...(0, u.useMemo)(() => {
271
+ if (!t.data) return {
272
+ record: null,
273
+ index: null,
274
+ stats: {},
275
+ error: void 0
276
+ };
277
+ try {
278
+ let e = a(c(t.data)), n = t.data.nodeStats ?? {};
279
+ return {
280
+ record: e,
281
+ index: A(e),
282
+ stats: n,
283
+ error: void 0
284
+ };
285
+ } catch (e) {
286
+ return {
287
+ record: null,
288
+ index: null,
289
+ stats: {},
290
+ error: e instanceof Error ? e.message : "Invalid record"
291
+ };
292
+ }
293
+ }, [t.data]),
294
+ loading: t.loading,
295
+ fetchError: t.error,
296
+ pending: !!e && t.data === void 0 && !t.error
297
+ };
298
+ }
299
+ function V({ runUrl: e, version: t, index: n, actor: r, opening: i }) {
300
+ let a = B(`${e}/record?node=${encodeURIComponent(r)}${t}`);
301
+ return a.index ? /* @__PURE__ */ (0, d.jsx)(H, {
302
+ runUrl: e,
303
+ index: a.index,
304
+ actor: r,
305
+ opening: i
306
+ }) : /* @__PURE__ */ (0, d.jsx)("p", {
307
+ className: "ws-status",
308
+ role: a.fetchError || a.error ? "alert" : "status",
309
+ children: a.fetchError || a.error ? `This agent's record is unavailable: ${a.fetchError ?? a.error}` : `Loading ${n.nodes.get(r)?.label ?? "the agent"}'s conversation…`
310
+ });
311
+ }
312
+ function H({ runUrl: e, index: t, actor: n, opening: r }) {
313
+ let [i, a] = (0, u.useState)(null), o = (0, u.useMemo)(() => z(e), [e]);
314
+ return /* @__PURE__ */ (0, d.jsxs)(d.Fragment, { children: [/* @__PURE__ */ (0, d.jsx)(s, {
315
+ index: t,
316
+ actor: n,
317
+ cutoff: t.end,
318
+ query: "",
319
+ category: "all",
320
+ lifecycle: !1,
321
+ opening: r,
322
+ openSource: (e, t) => a({
323
+ event: t,
324
+ sha: e
325
+ })
326
+ }), i && /* @__PURE__ */ (0, d.jsx)(R, {
327
+ event: i.event,
328
+ full: i.sha,
329
+ index: t,
330
+ onClose: () => a(null),
331
+ load: o
332
+ }, `${i.event.id}:${i.sha ?? ""}`)] });
333
+ }
334
+ //#endregion
335
+ export { j as a, h as c, A as i, B as n, b as o, M as r, p as s, V as t };
@@ -1,7 +1,8 @@
1
1
  import { i as e } from "./rolldown-runtime-DArdT4gl.js";
2
- import { i as t, n, t as r } from "./jsx-runtime-DQWyJOhv.js";
3
- import { t as i } from "./createLucideIcon-yH0cxLMy.js";
4
- import { t as a } from "./chevron-right-D_5IKLxu.js";
2
+ import { n as t, t as n } from "./jsx-runtime-DPT6sCLq.js";
3
+ import { t as r } from "./utils-BuObIC0n.js";
4
+ import { t as i } from "./createLucideIcon-BSphcoOJ.js";
5
+ import { t as a } from "./chevron-right-Xn05jYLT.js";
5
6
  //#region node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/chevron-left.mjs
6
7
  var o = {
7
8
  name: "chevron-left",
@@ -12,32 +13,32 @@ var o = {
12
13
  }]]
13
14
  };
14
15
  o.node;
15
- var s = i(o), c = /* @__PURE__ */ e(t(), 1), l = r(), u = "aria-checked:bg-card aria-checked:border-border aria-checked:shadow-[0_1px_2px_rgb(0_0_0/0.08)] hover:aria-checked:bg-card", d = 32;
16
+ var s = i(o), c = /* @__PURE__ */ e(t(), 1), l = n(), u = "aria-checked:bg-card aria-checked:border-border aria-checked:shadow-[0_1px_2px_rgb(0_0_0/0.08)] hover:aria-checked:bg-card", d = 32;
16
17
  function f({ side: e, onPage: t }) {
17
- let r = e === "start" ? s : a;
18
+ let n = e === "start" ? s : a;
18
19
  return /* @__PURE__ */ (0, l.jsx)("button", {
19
20
  type: "button",
20
21
  tabIndex: -1,
21
22
  "aria-hidden": "true",
22
23
  "data-scroll-cue": e,
23
24
  onClick: t,
24
- className: n("sticky z-[1] flex shrink-0 items-center justify-center self-center rounded-full border border-border bg-card text-muted-foreground shadow-sm transition-colors hover:text-foreground", e === "start" ? "left-0" : "right-0"),
25
+ className: r("sticky z-[1] flex shrink-0 items-center justify-center self-center rounded-full border border-border bg-card text-muted-foreground shadow-sm transition-colors hover:text-foreground", e === "start" ? "left-0" : "right-0"),
25
26
  style: {
26
27
  width: d,
27
28
  height: d,
28
29
  [e === "start" ? "marginRight" : "marginLeft"]: -36
29
30
  },
30
- children: /* @__PURE__ */ (0, l.jsx)(r, {
31
+ children: /* @__PURE__ */ (0, l.jsx)(n, {
31
32
  className: "h-4 w-4",
32
33
  "aria-hidden": "true"
33
34
  })
34
35
  });
35
36
  }
36
- function p({ value: e, onValueChange: t, options: r, variant: i = "row", className: a, ...o }) {
37
+ function p({ value: e, onValueChange: t, options: n, variant: i = "row", className: a, ...o }) {
37
38
  let s = c.useRef(/* @__PURE__ */ new Map()), d = c.useRef(null), [p, m] = c.useState({
38
39
  start: !1,
39
40
  end: !1
40
- }), h = r.map((e) => e.value).join("\0"), g = c.useCallback(() => {
41
+ }), h = n.map((e) => e.value).join("\0"), g = c.useCallback(() => {
41
42
  let e = d.current;
42
43
  if (!e) return;
43
44
  let t = e.scrollLeft > 1, n = e.scrollLeft + e.clientWidth < e.scrollWidth - 1;
@@ -57,7 +58,7 @@ function p({ value: e, onValueChange: t, options: r, variant: i = "row", classNa
57
58
  }, [g]);
58
59
  c.useLayoutEffect(v, [
59
60
  e,
60
- r.length,
61
+ n.length,
61
62
  v
62
63
  ]), c.useEffect(() => {
63
64
  if (typeof ResizeObserver > "u") return;
@@ -76,7 +77,7 @@ function p({ value: e, onValueChange: t, options: r, variant: i = "row", classNa
76
77
  left: e * t.clientWidth * .75,
77
78
  behavior: n ? "auto" : "smooth"
78
79
  });
79
- }, b = r.some((t) => t.value === e);
80
+ }, b = n.some((t) => t.value === e);
80
81
  return /* @__PURE__ */ (0, l.jsxs)("div", {
81
82
  role: "radiogroup",
82
83
  id: o.id,
@@ -86,35 +87,35 @@ function p({ value: e, onValueChange: t, options: r, variant: i = "row", classNa
86
87
  "data-overflow-start": p.start || void 0,
87
88
  "data-overflow-end": p.end || void 0,
88
89
  ref: d,
89
- onKeyDown: (n) => {
90
- if (r.length === 0) return;
91
- let i = r.findIndex((t) => t.value === e);
90
+ onKeyDown: (r) => {
91
+ if (n.length === 0) return;
92
+ let i = n.findIndex((t) => t.value === e);
92
93
  i === -1 && (i = 0);
93
94
  let a;
94
- n.key === "ArrowRight" || n.key === "ArrowDown" ? a = (i + 1) % r.length : n.key === "ArrowLeft" || n.key === "ArrowUp" ? a = (i - 1 + r.length) % r.length : n.key === "Home" ? a = 0 : n.key === "End" && (a = r.length - 1), a !== void 0 && (n.preventDefault(), r[a].value !== e && t(r[a].value), s.current.get(r[a].value)?.focus());
95
+ r.key === "ArrowRight" || r.key === "ArrowDown" ? a = (i + 1) % n.length : r.key === "ArrowLeft" || r.key === "ArrowUp" ? a = (i - 1 + n.length) % n.length : r.key === "Home" ? a = 0 : r.key === "End" && (a = n.length - 1), a !== void 0 && (r.preventDefault(), n[a].value !== e && t(n[a].value), s.current.get(n[a].value)?.focus());
95
96
  },
96
97
  onScroll: g,
97
- className: n("relative flex gap-1", i === "row" && "flex-wrap items-center rounded-lg border border-border bg-[var(--well)] p-0.5", i === "tabs" && "flex-nowrap items-end border-b border-border pb-0 overflow-x-auto", a),
98
+ className: r("relative flex gap-1", i === "row" && "flex-wrap items-center rounded-lg border border-border bg-[var(--well)] p-0.5", i === "tabs" && "flex-nowrap items-end border-b border-border pb-0 overflow-x-auto", a),
98
99
  children: [
99
100
  p.start && /* @__PURE__ */ (0, l.jsx)(f, {
100
101
  side: "start",
101
102
  onPage: () => y(-1)
102
103
  }),
103
- r.map((r, a) => {
104
- let o = r.value === e, c = o || !b && a === 0;
104
+ n.map((n, a) => {
105
+ let o = n.value === e, c = o || !b && a === 0;
105
106
  return /* @__PURE__ */ (0, l.jsxs)("button", {
106
107
  ref: (e) => {
107
- e ? s.current.set(r.value, e) : s.current.delete(r.value);
108
+ e ? s.current.set(n.value, e) : s.current.delete(n.value);
108
109
  },
109
110
  type: "button",
110
111
  role: "radio",
111
112
  "aria-checked": o,
112
- "data-testid": r.testId,
113
+ "data-testid": n.testId,
113
114
  tabIndex: c ? 0 : -1,
114
115
  onClick: () => {
115
- o || t(r.value);
116
+ o || t(n.value);
116
117
  },
117
- className: n("relative inline-flex items-center gap-2 whitespace-nowrap text-sm font-medium transition-[color,background-color,border-color,box-shadow]", i === "row" && [
118
+ className: r("relative inline-flex items-center gap-2 whitespace-nowrap text-sm font-medium transition-[color,background-color,border-color,box-shadow]", i === "row" && [
118
119
  "rounded-md border border-transparent px-3 py-1",
119
120
  "focus-visible:outline-1 focus-visible:outline-[var(--focus-border)] focus-visible:ring-4 focus-visible:ring-[var(--focus-halo)] focus-visible:outline-offset-0",
120
121
  "hover:bg-[var(--ix-hover-bg)] active:bg-[var(--ix-sel-bg)]",
@@ -125,11 +126,11 @@ function p({ value: e, onValueChange: t, options: r, variant: i = "row", classNa
125
126
  "focus-visible:outline-1 focus-visible:outline-[var(--focus-border)] focus-visible:ring-4 focus-visible:ring-[var(--focus-halo)] focus-visible:-outline-offset-1 focus-visible:ring-inset",
126
127
  "hover:shadow-[inset_0_-2px_0_hsl(var(--hsl-ring)/0.4)] data-[state=active]:bg-[hsl(var(--hsl-ring)/0.07)] data-[state=active]:text-[var(--accent-text)] data-[state=active]:shadow-[inset_0_-2px_0_var(--ix-sel-ring)] aria-checked:bg-[hsl(var(--hsl-ring)/0.07)] aria-checked:text-[var(--accent-text)] aria-checked:shadow-[inset_0_-2px_0_var(--ix-sel-ring)]"
127
128
  ], o ? "text-[var(--accent-text)]" : "text-muted-foreground hover:text-foreground"),
128
- children: [/* @__PURE__ */ (0, l.jsx)("span", { children: r.label }), r.adornment && /* @__PURE__ */ (0, l.jsx)("span", {
129
- className: n("text-xs", o ? "text-[var(--accent-text)]/80" : "text-muted-foreground"),
130
- children: r.adornment
129
+ children: [/* @__PURE__ */ (0, l.jsx)("span", { children: n.label }), n.adornment && /* @__PURE__ */ (0, l.jsx)("span", {
130
+ className: r("text-sm tabular-nums", o ? "text-[var(--accent-text)]/80" : "text-muted-foreground"),
131
+ children: n.adornment
131
132
  })]
132
- }, r.value);
133
+ }, n.value);
133
134
  }),
134
135
  p.end && /* @__PURE__ */ (0, l.jsx)(f, {
135
136
  side: "end",
@@ -1,43 +1,43 @@
1
- import { b as e, c as t, d as n, l as r, s as i, u as a, v as o } from "./workspace-CekmOBs3.js";
2
- import { n as s, t as c } from "./stream-tokenizer-CWtnjmRd.js";
1
+ import { _ as e, a as t, c as n, h as r, i, o as a, s as o } from "./workbench-E6_5q_oL.js";
2
+ import { n as s, t as c } from "./stream-tokenizer-B5wWaM3U.js";
3
3
  import { createCssVariablesTheme as l, createHighlighterCore as u, n as d, t as f } from "./core-I74i0Bj-.js";
4
4
  //#region node_modules/.pnpm/@pierre+diffs@1.6.1_@shikijs+themes@4.5.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@pierre/diffs/dist/highlighter/languages/attachResolvedLanguages.js
5
5
  function p(e, t) {
6
6
  for (let n of Array.isArray(e) ? e : [e]) {
7
- let e = r.get(n.name);
8
- e ?? (e = n, r.set(n.name, e)), t.attachLanguages([e]), i.add(e.name);
7
+ let e = a.get(n.name);
8
+ e ?? (e = n, a.set(n.name, e)), t.attachLanguages([e]), i.add(e.name);
9
9
  }
10
10
  }
11
11
  //#endregion
12
12
  //#region node_modules/.pnpm/@pierre+diffs@1.6.1_@shikijs+themes@4.5.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguage.js
13
13
  async function m(n) {
14
14
  if (typeof __DIFFS_WORKER__ < "u" ? __DIFFS_WORKER__ : e()) throw Error(`resolveLanguage("${n}") cannot be called from a worker context. Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);
15
- let i = a.get(n);
16
- if (i != null) return i;
17
- let o = (async () => {
15
+ let r = o.get(n);
16
+ if (r != null) return r;
17
+ let i = (async () => {
18
18
  let e = t.get(n);
19
19
  if (e == null) {
20
20
  let { bundledLanguages: t } = await import("./langs-DKPMizJR.js");
21
21
  Object.prototype.hasOwnProperty.call(t, n) && (e = t[n]);
22
22
  }
23
23
  if (e == null) throw Error(`resolveLanguage: "${n}" not found in bundled or custom languages`);
24
- let { default: i } = await e(), a = {
24
+ let { default: r } = await e(), i = {
25
25
  name: n,
26
- data: i
26
+ data: r
27
27
  };
28
- return r.has(n) || r.set(n, a), a;
28
+ return a.has(n) || a.set(n, i), i;
29
29
  })();
30
- a.set(n, o);
30
+ o.set(n, i);
31
31
  try {
32
- return await o;
32
+ return await i;
33
33
  } finally {
34
- a.get(n) === o && a.delete(n);
34
+ o.get(n) === i && o.delete(n);
35
35
  }
36
36
  }
37
37
  //#endregion
38
38
  //#region node_modules/.pnpm/@pierre+diffs@1.6.1_@shikijs+themes@4.5.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedOrResolveLanguage.js
39
39
  function h(e) {
40
- return r.get(e) ?? m(e);
40
+ return a.get(e) ?? m(e);
41
41
  }
42
42
  //#endregion
43
43
  //#region node_modules/.pnpm/@pierre+diffs@1.6.1_@shikijs+themes@4.5.0_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguages.js
@@ -420,7 +420,7 @@ var C = class e extends c {
420
420
  return new e(t, r);
421
421
  }
422
422
  constructor(e, t) {
423
- super(e, o(e)), this.raw = t;
423
+ super(e, r(e)), this.raw = t;
424
424
  }
425
425
  getTheme(e) {
426
426
  this.assertNotDisposed();