@tangle-network/sandbox-cli 0.21.64 → 0.21.66

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 +32 -4
  2. package/SKILL.md +37 -5
  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 +14 -13
  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,334 @@
1
+ import { l as e, p as t } from "./data-DTGmre1W.js";
2
+ import { useEffect as n, useMemo as r, useState as i } from "react";
3
+ import { Conversation as a, recordModel as o, withPrompts as s } from "@tangle-network/sandbox-ui/run/record";
4
+ import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
5
+ import d from "react-markdown";
6
+ import f from "remark-gfm";
7
+ //#region src/viewer/model.ts
8
+ var { ms: p, utcTime: m, compact: h, hostless: g, fmt: _, interval: v, roleOf: y, textOf: b, toolKey: x, callsOf: S, preview: C, indexRecord: w, measuredUsage: T, agentState: E, eventMatches: D, eventSource: O, hoverLines: k, modelIdentity: A, tooltipSections: j } = o;
9
+ //#endregion
10
+ //#region src/viewer/StructuredContent.tsx
11
+ function M(e) {
12
+ try {
13
+ return JSON.parse(e);
14
+ } catch {
15
+ return e;
16
+ }
17
+ }
18
+ function N({ text: e, resolveHref: t }) {
19
+ return /* @__PURE__ */ l("div", {
20
+ className: "activity-prose",
21
+ children: /* @__PURE__ */ l(d, {
22
+ skipHtml: !0,
23
+ remarkPlugins: [f],
24
+ components: {
25
+ a: ({ href: e, children: n }) => {
26
+ let r = /^https?:\/\//i.test(e ?? "") ? e : t?.(e ?? "");
27
+ return r && (/^https?:\/\//i.test(r) || /^\/(?!\/)/.test(r)) ? /* @__PURE__ */ l("a", {
28
+ href: r,
29
+ target: "_blank",
30
+ rel: "noreferrer",
31
+ children: n
32
+ }) : /* @__PURE__ */ l("span", { children: n });
33
+ },
34
+ img: ({ alt: e }) => /* @__PURE__ */ l("span", { children: e || "Image omitted" }),
35
+ table: ({ children: e }) => /* @__PURE__ */ l("div", {
36
+ className: "rr-table-scroll",
37
+ children: /* @__PURE__ */ l("table", { children: e })
38
+ })
39
+ },
40
+ children: e
41
+ })
42
+ });
43
+ }
44
+ function P({ value: e, depth: t = 0, field: n }) {
45
+ let [r, a] = i(!1);
46
+ if (e == null) return /* @__PURE__ */ l("span", {
47
+ className: "small",
48
+ children: "Not supplied"
49
+ });
50
+ if (typeof e == "string") {
51
+ if (n && /^(command|cmd|code|script|stdout|stderr)$/i.test(n)) return /* @__PURE__ */ l("pre", {
52
+ className: "activity-code",
53
+ children: /* @__PURE__ */ l("code", { children: e })
54
+ });
55
+ let r = t < 3 ? M(e) : e;
56
+ return typeof r == "string" ? /* @__PURE__ */ l(N, { text: e }) : /* @__PURE__ */ l(P, {
57
+ value: r,
58
+ depth: t + 1
59
+ });
60
+ }
61
+ if (typeof e != "object") return /* @__PURE__ */ l("span", { children: String(e) });
62
+ if (Array.isArray(e)) {
63
+ let n = r ? e : e.slice(0, 12);
64
+ return /* @__PURE__ */ u("div", {
65
+ className: "structured-items",
66
+ children: [n.map((e, n) => /* @__PURE__ */ l("div", { children: /* @__PURE__ */ l(P, {
67
+ value: e,
68
+ depth: t + 1
69
+ }) }, n)), e.length > n.length && /* @__PURE__ */ u("button", {
70
+ className: "ui-button",
71
+ onClick: () => a(!0),
72
+ children: [
73
+ "Show all ",
74
+ e.length,
75
+ " items"
76
+ ]
77
+ })]
78
+ });
79
+ }
80
+ let o = e;
81
+ if (o.type === "text" && typeof o.text == "string") return /* @__PURE__ */ l(P, {
82
+ value: o.text,
83
+ depth: t + 1
84
+ });
85
+ let s = Object.entries(o), c = r ? s : s.slice(0, 16);
86
+ return t > 4 ? /* @__PURE__ */ u("details", { children: [/* @__PURE__ */ l("summary", { children: "Nested data" }), /* @__PURE__ */ l("pre", { children: JSON.stringify(e, null, 2) })] }) : /* @__PURE__ */ u("dl", {
87
+ className: "structured-fields",
88
+ children: [c.map(([e, n]) => /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("dt", { children: e.replace(/([a-z])([A-Z])/g, "$1 $2").replaceAll("_", " ") }), /* @__PURE__ */ l("dd", { children: /* @__PURE__ */ l(P, {
89
+ value: n,
90
+ depth: t + 1,
91
+ field: e
92
+ }) })] }, e)), s.length > c.length && /* @__PURE__ */ u("button", {
93
+ className: "ui-button",
94
+ onClick: () => a(!0),
95
+ children: [
96
+ "Show all ",
97
+ s.length,
98
+ " fields"
99
+ ]
100
+ })]
101
+ });
102
+ }
103
+ function F({ text: e, rawLabel: t = "Raw data" }) {
104
+ let n = M(e);
105
+ return /* @__PURE__ */ u("div", {
106
+ className: "structured-content",
107
+ children: [/* @__PURE__ */ l(P, { value: n }), typeof n != "string" && /* @__PURE__ */ u("details", {
108
+ className: "raw-data",
109
+ children: [/* @__PURE__ */ l("summary", { children: t }), /* @__PURE__ */ l("pre", { children: e })]
110
+ })]
111
+ });
112
+ }
113
+ var I = /^(command|cmd|code|script|content|new_string|old_string|patch|text|stdout|stderr|output|query|prompt)$/i;
114
+ function L(e, t = [], n = []) {
115
+ if (n.length >= 24 || t.length > 8) return n;
116
+ if (typeof e == "string") (e.includes("\n") || e.length > 120 || I.test(t.at(-1) ?? "")) && n.push({
117
+ path: t.join(" › ") || "text",
118
+ text: e
119
+ });
120
+ else if (Array.isArray(e)) e.forEach((e, r) => L(e, [...t, String(r)], n));
121
+ else if (e && typeof e == "object") for (let [r, i] of Object.entries(e)) L(i, [...t, r], n);
122
+ return n;
123
+ }
124
+ function R({ text: e, rawLabel: t = "Raw data" }) {
125
+ let n = M(e);
126
+ if (typeof n != "object" || !n) return /* @__PURE__ */ l("pre", {
127
+ className: "activity-code verbatim",
128
+ "data-verbatim": !0,
129
+ children: /* @__PURE__ */ l("code", { children: e })
130
+ });
131
+ let r = L(n);
132
+ return /* @__PURE__ */ u("div", {
133
+ className: "structured-content verbatim",
134
+ "data-verbatim": !0,
135
+ children: [r.map((e, t) => /* @__PURE__ */ u("section", {
136
+ className: "verbatim-block",
137
+ children: [/* @__PURE__ */ l("span", {
138
+ className: "verbatim-path mono",
139
+ children: e.path
140
+ }), /* @__PURE__ */ l("pre", {
141
+ className: "activity-code",
142
+ children: /* @__PURE__ */ l("code", { children: e.text })
143
+ })]
144
+ }, t)), /* @__PURE__ */ u("details", {
145
+ className: "raw-data",
146
+ open: !r.length,
147
+ children: [/* @__PURE__ */ l("summary", { children: t }), /* @__PURE__ */ l("pre", {
148
+ className: "activity-code",
149
+ children: /* @__PURE__ */ l("code", { children: JSON.stringify(n, null, 2) })
150
+ })]
151
+ })]
152
+ });
153
+ }
154
+ //#endregion
155
+ //#region src/workspace/EventDetail.tsx
156
+ function z({ event: e, full: t, index: r, onClose: a, load: o }) {
157
+ let [s, c] = i({}), [d, f] = i({}), p = e.source;
158
+ n(() => {
159
+ t && o(t).then((e) => f({ text: e })).catch((e) => f({ error: e instanceof Error ? e.message : "Unavailable" }));
160
+ }, [t, o]);
161
+ let h = (e, t) => o(`${e}${t ? `?line=${t}` : ""}`);
162
+ return n(() => {
163
+ let e = (e) => {
164
+ e.key === "Escape" && a();
165
+ };
166
+ return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
167
+ }, [a]), /* @__PURE__ */ u("aside", {
168
+ className: "event-detail",
169
+ role: "dialog",
170
+ "aria-label": "Event details",
171
+ "data-event-detail": e.id,
172
+ children: [
173
+ /* @__PURE__ */ u("header", { children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h3", { children: e.label }), /* @__PURE__ */ u("p", {
174
+ className: "faint mono",
175
+ children: [
176
+ m(e.at, !0),
177
+ " · ",
178
+ r.nodes.get(r.canonical(e.node))?.label ?? e.node,
179
+ " · ",
180
+ e.category
181
+ ]
182
+ })] }), /* @__PURE__ */ l("button", {
183
+ type: "button",
184
+ className: "ui-button",
185
+ onClick: a,
186
+ children: "Close"
187
+ })] }),
188
+ /* @__PURE__ */ l("p", {
189
+ className: "mono faint event-id",
190
+ children: e.id
191
+ }),
192
+ t ? /* @__PURE__ */ u("section", {
193
+ className: "event-full",
194
+ "data-full-output": d.text === void 0 ? void 0 : t,
195
+ children: [
196
+ /* @__PURE__ */ l("h4", { children: "Full output" }),
197
+ /* @__PURE__ */ u("p", {
198
+ className: "mono faint",
199
+ children: ["sha256 ", t]
200
+ }),
201
+ d.error && /* @__PURE__ */ l("p", {
202
+ role: "alert",
203
+ children: d.error
204
+ }),
205
+ d.text === void 0 && !d.error && /* @__PURE__ */ l("p", {
206
+ className: "faint",
207
+ children: "Loading…"
208
+ }),
209
+ d.text !== void 0 && /* @__PURE__ */ l(R, {
210
+ text: d.text,
211
+ rawLabel: "Original bytes"
212
+ })
213
+ ]
214
+ }) : b(e) && (e.detail.toolCallId !== void 0 || e.category === "lifecycle" ? /* @__PURE__ */ l(R, { text: b(e) }) : /* @__PURE__ */ l(F, { text: b(e) })),
215
+ /* @__PURE__ */ u("details", {
216
+ className: "raw-data",
217
+ open: !t,
218
+ children: [/* @__PURE__ */ l("summary", { children: "Recorded detail" }), /* @__PURE__ */ l("pre", { children: JSON.stringify(e.detail, null, 2) })]
219
+ }),
220
+ p?.path && /* @__PURE__ */ u("section", {
221
+ className: "event-source",
222
+ children: [
223
+ /* @__PURE__ */ l("h4", { children: "Source" }),
224
+ /* @__PURE__ */ u("p", {
225
+ className: "mono",
226
+ children: [
227
+ p.path,
228
+ p.line ? `:${p.line}` : "",
229
+ p.pointer ? `#${p.pointer}` : ""
230
+ ]
231
+ }),
232
+ p.sha256 && /* @__PURE__ */ u("p", {
233
+ className: "mono faint",
234
+ children: ["sha256 ", p.sha256]
235
+ }),
236
+ p.sha256 && p.line && s.text === void 0 && /* @__PURE__ */ l("button", {
237
+ type: "button",
238
+ className: "ui-button",
239
+ onClick: () => h(p.sha256, p.line).then((e) => c({ text: e })).catch((e) => c({ error: e instanceof Error ? e.message : "Unavailable" })),
240
+ children: "Original line"
241
+ }),
242
+ s.error && /* @__PURE__ */ l("p", {
243
+ role: "alert",
244
+ children: s.error
245
+ }),
246
+ s.text !== void 0 && /* @__PURE__ */ l(R, {
247
+ text: s.text,
248
+ rawLabel: "Original bytes"
249
+ })
250
+ ]
251
+ })
252
+ ]
253
+ });
254
+ }
255
+ //#endregion
256
+ //#region src/workspace/source-reader.ts
257
+ function B(e) {
258
+ return async (t) => {
259
+ let n = await fetch(`${e}/source/${t}`, { credentials: "same-origin" });
260
+ if (!n.ok) throw Error(n.status === 409 ? "The source no longer matches its recorded hash." : `Source unavailable (HTTP ${n.status})`);
261
+ return n.text();
262
+ };
263
+ }
264
+ //#endregion
265
+ //#region src/workspace/record-part.tsx
266
+ function V(n) {
267
+ let i = t(n, void 0, !0);
268
+ return {
269
+ ...r(() => {
270
+ if (!i.data) return {
271
+ record: null,
272
+ index: null,
273
+ stats: {},
274
+ error: void 0
275
+ };
276
+ try {
277
+ let t = s(e(i.data)), n = i.data.nodeStats ?? {};
278
+ return {
279
+ record: t,
280
+ index: w(t),
281
+ stats: n,
282
+ error: void 0
283
+ };
284
+ } catch (e) {
285
+ return {
286
+ record: null,
287
+ index: null,
288
+ stats: {},
289
+ error: e instanceof Error ? e.message : "Invalid record"
290
+ };
291
+ }
292
+ }, [i.data]),
293
+ loading: i.loading,
294
+ fetchError: i.error,
295
+ pending: !!n && i.data === void 0 && !i.error
296
+ };
297
+ }
298
+ function H({ runUrl: e, version: t, index: n, actor: r, opening: i }) {
299
+ let a = V(`${e}/record?node=${encodeURIComponent(r)}${t}`);
300
+ return a.index ? /* @__PURE__ */ l(U, {
301
+ runUrl: e,
302
+ index: a.index,
303
+ actor: r,
304
+ opening: i
305
+ }) : /* @__PURE__ */ l("p", {
306
+ className: "ws-status",
307
+ role: a.fetchError || a.error ? "alert" : "status",
308
+ 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…`
309
+ });
310
+ }
311
+ function U({ runUrl: e, index: t, actor: n, opening: o }) {
312
+ let [s, d] = i(null), f = r(() => B(e), [e]);
313
+ return /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l(a, {
314
+ index: t,
315
+ actor: n,
316
+ cutoff: t.end,
317
+ query: "",
318
+ category: "all",
319
+ lifecycle: !1,
320
+ opening: o,
321
+ openSource: (e, t) => d({
322
+ event: t,
323
+ sha: e
324
+ })
325
+ }), s && /* @__PURE__ */ l(z, {
326
+ event: s.event,
327
+ full: s.sha,
328
+ index: t,
329
+ onClose: () => d(null),
330
+ load: f
331
+ }, `${s.event.id}:${s.sha ?? ""}`)] });
332
+ }
333
+ //#endregion
334
+ export { x as _, E as a, O as c, v as d, T as f, b as g, y as h, F as i, _ as l, p as m, V as n, h as o, A as p, N as r, D as s, H as t, w as u, j as v, m as y };
@@ -1,336 +1,2 @@
1
- import { z as e } from "zod";
2
- //#region src/record.ts
3
- var t = e.iso.datetime({ offset: !0 }), n = e.record(e.string(), e.unknown()), r = e.object({
4
- path: e.string(),
5
- sha256: e.string().regex(/^[0-9a-f]{64}$/).optional(),
6
- line: e.number().int().positive().optional(),
7
- pointer: e.string().startsWith("/").optional()
8
- }).catchall(e.unknown()), i = e.object({
9
- channel: e.string(),
10
- status: e.enum([
11
- "complete",
12
- "lossy",
13
- "absent"
14
- ]),
15
- reason: e.string().nullable()
16
- }).catchall(e.unknown()), a = e.object({
17
- runId: e.string().optional(),
18
- nodeId: e.string().nullable().optional(),
19
- code: e.string(),
20
- detail: e.string()
21
- }).catchall(e.unknown()), o = e.string().regex(/^[0-9a-f]{64}$/), s = e.string().regex(/^sha256:[0-9a-f]{64}$/), c = e.object({
22
- pageSha256: o,
23
- claimId: e.string().min(1)
24
- }).catchall(e.unknown()), l = e.object({
25
- id: e.string().min(1),
26
- kind: e.string().min(1),
27
- title: e.string(),
28
- digest: o.optional(),
29
- sessionNodeId: e.string().optional(),
30
- eventId: e.string().optional(),
31
- source: r.nullish()
32
- }).catchall(e.unknown()), u = c.extend({
33
- statement: e.string(),
34
- agentNodeId: e.string().optional(),
35
- eventId: e.string().optional(),
36
- runId: e.string().optional()
37
- }).catchall(e.unknown()), d = e.object({
38
- id: e.string().min(1),
39
- subject: c,
40
- reviewerSessionNodeId: e.string().min(1),
41
- judgment: e.string().min(1),
42
- at: t.nullish(),
43
- eventId: e.string().optional()
44
- }).catchall(e.unknown()), f = e.object({
45
- id: e.string().min(1),
46
- kind: e.string().min(1),
47
- title: e.string(),
48
- url: e.url().nullish(),
49
- sessionNodeId: e.string().optional(),
50
- cites: e.array(c.extend({ verdictId: e.string().optional() }))
51
- }).catchall(e.unknown()), p = e.object({
52
- digest: s,
53
- parents: e.array(s),
54
- runId: e.string().optional(),
55
- authorNodeId: e.string().optional(),
56
- title: e.string().optional()
57
- }).catchall(e.unknown()), m = e.object({
58
- from: e.string().min(1),
59
- to: e.string().min(1),
60
- basis: e.string().min(1),
61
- at: t.nullish(),
62
- reason: e.string().nullish(),
63
- source: r.nullish()
64
- }).catchall(e.unknown()), h = e.object({
65
- nodeId: e.string().min(1),
66
- runId: e.string().min(1),
67
- recordDigest: e.string().nullish(),
68
- href: e.string().nullish()
69
- }).catchall(e.unknown()), g = e.object({
70
- schema: e.literal("agent-record.v1"),
71
- runId: e.string().min(1),
72
- title: e.string(),
73
- nodes: e.array(e.object({
74
- id: e.string().min(1),
75
- label: e.string(),
76
- parent: e.string().nullable().default(null),
77
- kind: e.enum([
78
- "agent",
79
- "session",
80
- "finding"
81
- ]),
82
- role: e.string().optional(),
83
- assignment: e.string().optional(),
84
- model: e.string().nullable().optional(),
85
- start: t.optional(),
86
- end: t.optional(),
87
- status: e.string().optional(),
88
- nativeSessionId: e.string().optional(),
89
- agentId: e.string().optional(),
90
- joinBasis: e.string().optional(),
91
- joinProof: n.optional(),
92
- modelSource: e.string().optional(),
93
- servedModel: e.string().nullable().optional(),
94
- harness: e.string().nullable().optional(),
95
- sandboxes: e.array(e.string()).optional(),
96
- capture: i.optional(),
97
- captureNote: e.string().optional()
98
- }).catchall(e.unknown())),
99
- events: e.array(e.object({
100
- id: e.string().min(1),
101
- node: e.string().min(1),
102
- at: t,
103
- kind: e.string(),
104
- category: e.string().default("other"),
105
- activity: e.string().optional(),
106
- end: t.optional(),
107
- phase: e.enum([
108
- "tool",
109
- "model",
110
- "idle"
111
- ]).optional(),
112
- label: e.string(),
113
- source: r.nullable().optional(),
114
- detail: e.object({
115
- role: e.string().optional(),
116
- publicText: e.string().optional(),
117
- publicationNote: e.string().nullish(),
118
- contentOmitted: e.string().optional(),
119
- publicToolCalls: e.array(e.object({
120
- id: e.string(),
121
- name: e.string(),
122
- input: e.string().optional(),
123
- publicationNote: e.string().nullish()
124
- }).catchall(e.unknown())).optional(),
125
- toolCallIds: e.array(e.string()).optional(),
126
- toolNames: e.array(e.string()).optional(),
127
- toolCallId: e.string().optional(),
128
- isError: e.boolean().optional(),
129
- responseStatus: e.string().optional(),
130
- recordedClaim: e.string().optional(),
131
- assessment: e.string().optional(),
132
- usage: e.object({
133
- input: e.number().nonnegative().optional(),
134
- output: e.number().nonnegative().optional(),
135
- cacheRead: e.number().nonnegative().optional(),
136
- cacheWrite: e.number().nonnegative().optional()
137
- }).catchall(e.unknown()).nullish(),
138
- reasoning: e.string().optional(),
139
- reasoningOmitted: e.number().int().nonnegative().optional(),
140
- reasoningRedacted: e.number().int().nonnegative().optional(),
141
- durationMs: e.number().nonnegative().optional(),
142
- costListUsd: e.number().nonnegative().optional(),
143
- usdKnown: e.boolean().optional(),
144
- rateLimit: e.object({
145
- window: e.string().nullable(),
146
- utilization: e.number().nullable(),
147
- status: e.string().nullable()
148
- }).catchall(e.unknown()).optional(),
149
- clip: e.object({
150
- bytes: e.number().int().nonnegative(),
151
- sha256: e.string().regex(/^[0-9a-f]{64}$/).nullable()
152
- }).catchall(e.unknown()).optional()
153
- }).catchall(e.unknown())
154
- }).catchall(e.unknown())),
155
- artifacts: e.array(l).optional(),
156
- claims: e.array(u).optional(),
157
- verdicts: e.array(d).optional(),
158
- publications: e.array(f).optional(),
159
- profileVersions: e.array(p).optional(),
160
- runs: e.array(h).optional(),
161
- forks: e.array(m).optional(),
162
- sources: e.array(r.extend({ bytes: e.number().nonnegative().optional() })).default([]),
163
- assignment: e.object({
164
- objective: e.string(),
165
- suppliedKnowledge: e.string(),
166
- deliverables: e.string(),
167
- constraints: e.string(),
168
- source: r.nullable()
169
- }).catchall(e.unknown()).default({
170
- objective: "",
171
- suppliedKnowledge: "",
172
- deliverables: "",
173
- constraints: "",
174
- source: null
175
- }),
176
- terminal: e.object({
177
- kind: e.string().nullable(),
178
- reason: e.string().nullable()
179
- }).catchall(e.unknown()).nullable().default(null),
180
- coverage: e.object({
181
- completeOriginalCapture: e.boolean(),
182
- publicContent: e.string(),
183
- categoryMethod: e.string(),
184
- cost: e.string(),
185
- nodes: e.array(i.extend({ nodeId: e.string() })).optional(),
186
- gaps: e.array(a).optional()
187
- }).catchall(e.unknown()).default({
188
- completeOriginalCapture: !1,
189
- publicContent: "",
190
- categoryMethod: "",
191
- cost: "Unknown"
192
- })
193
- }).catchall(e.unknown()).superRefine((e, t) => {
194
- let n = new Map(e.nodes.map((e) => [e.id, e]));
195
- n.size !== e.nodes.length && t.addIssue({
196
- code: "custom",
197
- path: ["nodes"],
198
- message: "Node IDs must be unique within a run"
199
- }), new Set(e.events.map((e) => e.id)).size !== e.events.length && t.addIssue({
200
- code: "custom",
201
- path: ["events"],
202
- message: "Event IDs must be unique within a run"
203
- });
204
- for (let [r, i] of e.nodes.entries()) {
205
- i.agentId && (i.kind !== "session" || n.get(i.agentId)?.kind !== "agent") && t.addIssue({
206
- code: "custom",
207
- path: [
208
- "nodes",
209
- r,
210
- "agentId"
211
- ],
212
- message: "A proven session join must reference an existing agent"
213
- });
214
- let e = /* @__PURE__ */ new Set([i.id]), a = i.parent;
215
- for (; a && n.has(a);) {
216
- if (e.has(a)) {
217
- t.addIssue({
218
- code: "custom",
219
- path: [
220
- "nodes",
221
- r,
222
- "parent"
223
- ],
224
- message: "Parent relationships must not contain a cycle"
225
- });
226
- break;
227
- }
228
- e.add(a), a = n.get(a).parent;
229
- }
230
- }
231
- for (let [r, i] of e.events.entries()) {
232
- n.has(i.node) || t.addIssue({
233
- code: "custom",
234
- path: [
235
- "events",
236
- r,
237
- "node"
238
- ],
239
- message: "An event must reference an existing node, even when that node has unresolved identity"
240
- });
241
- let e = i.detail.publicToolCalls ?? [];
242
- new Set(e.map((e) => e.id)).size !== e.length && t.addIssue({
243
- code: "custom",
244
- path: [
245
- "events",
246
- r,
247
- "detail",
248
- "publicToolCalls"
249
- ],
250
- message: "Published tool call IDs must be unique within an event"
251
- });
252
- }
253
- let r = (e, n) => {
254
- new Set(e).size !== e.length && t.addIssue({
255
- code: "custom",
256
- path: [n],
257
- message: `${n} identifiers must be unique`
258
- });
259
- };
260
- r((e.artifacts ?? []).map((e) => e.id), "artifacts"), r((e.claims ?? []).map((e) => `${e.pageSha256}:${e.claimId}`), "claims"), r((e.verdicts ?? []).map((e) => e.id), "verdicts"), r((e.publications ?? []).map((e) => e.id), "publications"), r((e.profileVersions ?? []).map((e) => e.digest), "profileVersions");
261
- let i = new Set(e.events.map((e) => e.id));
262
- for (let [r, a] of (e.artifacts ?? []).entries()) a.sessionNodeId && !n.has(a.sessionNodeId) && t.addIssue({
263
- code: "custom",
264
- path: [
265
- "artifacts",
266
- r,
267
- "sessionNodeId"
268
- ],
269
- message: "Artifact session must exist in this record"
270
- }), a.eventId && !i.has(a.eventId) && t.addIssue({
271
- code: "custom",
272
- path: [
273
- "artifacts",
274
- r,
275
- "eventId"
276
- ],
277
- message: "Artifact event must exist in this record"
278
- });
279
- for (let [r, a] of (e.claims ?? []).entries()) a.agentNodeId && !n.has(a.agentNodeId) && t.addIssue({
280
- code: "custom",
281
- path: [
282
- "claims",
283
- r,
284
- "agentNodeId"
285
- ],
286
- message: "Claim agent must exist in this record"
287
- }), a.eventId && !i.has(a.eventId) && t.addIssue({
288
- code: "custom",
289
- path: [
290
- "claims",
291
- r,
292
- "eventId"
293
- ],
294
- message: "Claim event must exist in this record"
295
- });
296
- for (let [r, a] of (e.verdicts ?? []).entries()) n.get(a.reviewerSessionNodeId)?.kind !== "session" && t.addIssue({
297
- code: "custom",
298
- path: [
299
- "verdicts",
300
- r,
301
- "reviewerSessionNodeId"
302
- ],
303
- message: "Verdict reviewer must be a session in this record"
304
- }), a.eventId && !i.has(a.eventId) && t.addIssue({
305
- code: "custom",
306
- path: [
307
- "verdicts",
308
- r,
309
- "eventId"
310
- ],
311
- message: "Verdict event must exist in this record"
312
- });
313
- for (let [r, i] of (e.publications ?? []).entries()) i.sessionNodeId && n.get(i.sessionNodeId)?.kind !== "session" && t.addIssue({
314
- code: "custom",
315
- path: [
316
- "publications",
317
- r,
318
- "sessionNodeId"
319
- ],
320
- message: "Publication session must exist in this record"
321
- });
322
- for (let [r, i] of (e.profileVersions ?? []).entries()) i.authorNodeId && !n.has(i.authorNodeId) && t.addIssue({
323
- code: "custom",
324
- path: [
325
- "profileVersions",
326
- r,
327
- "authorNodeId"
328
- ],
329
- message: "Profile author must exist in this record"
330
- });
331
- });
332
- function _(e) {
333
- return g.parse(e);
334
- }
335
- //#endregion
336
- export { _ as parseRecord, g as recordSchema };
1
+ import { n as e, r as t, t as n } from "./record-CsP_3NJS.js";
2
+ export { n as parseRecord, t as projectPartEvents, e as recordSchema };