@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
@@ -1,448 +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 { o as r } from "./markdown-CX_sVrXB.js";
4
- import { a as i, i as a, n as o, o as s, t as c } from "./workspace-CekmOBs3.js";
5
- import { a as l, i as u, t as d } from "./popover-CvOAjlnk.js";
6
- import { t as f } from "./segmented-control-BaJmvTNd.js";
7
- import { a as p, d as m, o as h } from "./ui-C9b1rIUH.js";
8
- import { d as g, t as _ } from "./final-output-kwY11u9X.js";
9
- import { p as v } from "./data-CkWfWr7i.js";
10
- import { agentFromParam as y, agentParam as b } from "./RunPage-DZlBW7Va.js";
11
- //#region src/workspace/ref-file.tsx
12
- var x = /* @__PURE__ */ e(t(), 1), S = n(), C = /* @__PURE__ */ new Set([
13
- "image",
14
- "pdf",
15
- "video",
16
- "audio",
17
- "spreadsheet",
18
- "binary"
19
- ]);
20
- function w(e, t, n, i) {
21
- let a = v(!i && t && n ? `${e}/tree?ref=${encodeURIComponent(t)}` : null), o = i ? {
22
- data: i,
23
- error: void 0
24
- } : a, s = !!(o.data && n && o.data.paths.includes(n)), c = o.data && s && t && n ? `${e}/blob?ref=${encodeURIComponent(t)}&path=${encodeURIComponent(n)}&expectedCommit=${o.data.commit}` : null, l = !!(n && C.has(r(n))), u = g(l ? null : c, o.data?.commit);
25
- return !t || !n ? { state: "idle" } : o.error ? {
26
- state: "error",
27
- error: `The code at ${t} is unavailable: ${o.error}`
28
- } : o.data ? s ? l ? {
29
- state: "binary",
30
- href: c,
31
- commit: o.data.commit
32
- } : u.error ? {
33
- state: "error",
34
- error: u.error
35
- } : u.text === void 0 ? { state: "loading" } : /[\u0000\uFFFD]/.test(u.text) ? {
36
- state: "binary",
37
- href: c,
38
- commit: o.data.commit
39
- } : {
40
- state: "ready",
41
- text: u.text,
42
- commit: o.data.commit
43
- } : o.data.cut ? {
44
- state: "error",
45
- error: `The file list at ${t} is incomplete, so this file's absence there cannot be shown.`
46
- } : {
47
- state: "absent",
48
- commit: o.data.commit
49
- } : { state: "loading" };
50
- }
51
- function T({ runUrl: e, base: t, head: n, path: r, headTree: a }) {
52
- let o = w(e, t, r), s = w(e, n, r, a), c = [o, s].find((e) => e.state === "error");
53
- if (c) return /* @__PURE__ */ (0, S.jsx)("p", {
54
- className: "rj-muted",
55
- role: "alert",
56
- children: c.error
57
- });
58
- if (s.state === "loading" || o.state === "loading" || s.state === "idle") return /* @__PURE__ */ (0, S.jsxs)("p", {
59
- className: "rj-muted",
60
- role: "status",
61
- children: [
62
- "Reading ",
63
- r,
64
- "…"
65
- ]
66
- });
67
- if (s.state === "absent" && (o.state === "absent" || o.state === "idle")) return /* @__PURE__ */ (0, S.jsxs)("p", {
68
- className: "rj-muted",
69
- role: "alert",
70
- children: [
71
- "This file is in neither ",
72
- t ?? "an earlier release",
73
- " nor ",
74
- n,
75
- "."
76
- ]
77
- });
78
- let l = [o, s].find((e) => e.state === "binary");
79
- if (l) return /* @__PURE__ */ (0, S.jsxs)("p", {
80
- className: "rj-muted",
81
- children: [
82
- "A binary file has no text diff. ",
83
- /* @__PURE__ */ (0, S.jsxs)("a", {
84
- href: l.href,
85
- download: r.split("/").pop(),
86
- children: ["Download it at ", l.commit.slice(0, 12)]
87
- }),
88
- "."
89
- ]
90
- });
91
- let u = !t || o.state === "absent", d = s.state === "absent";
92
- return /* @__PURE__ */ (0, S.jsxs)(S.Fragment, { children: [(u || d) && /* @__PURE__ */ (0, S.jsx)("p", {
93
- className: "rj-muted",
94
- children: d ? `Not in ${n}: removed since ${t}.` : t ? `Not in ${t}: added in ${n}.` : `No earlier release: every line is new in ${n}.`
95
- }), /* @__PURE__ */ (0, S.jsx)("div", {
96
- className: "rj-diff",
97
- children: /* @__PURE__ */ (0, S.jsx)(i, {
98
- filename: r,
99
- baseline: o.state === "ready" ? o.text : "",
100
- current: s.state === "ready" ? s.text : "",
101
- defaultWrap: !0
102
- })
103
- })] });
104
- }
105
- //#endregion
106
- //#region src/workspace/use-phone.ts
107
- var E = "(max-width: 1023px)";
108
- function D(e = E) {
109
- return (0, x.useSyncExternalStore)((t) => {
110
- let n = window.matchMedia(e);
111
- return n.addEventListener("change", t), () => n.removeEventListener("change", t);
112
- }, () => window.matchMedia(e).matches, () => !1);
113
- }
114
- //#endregion
115
- //#region src/workspace/run/Files.tsx
116
- var O = "Pages", k = "Code", A = (e) => e.name.replaceAll("/", "∕");
117
- function j(e, t) {
118
- let [n, r] = (0, x.useState)(/* @__PURE__ */ new Map()), i = t.map((e) => e.id).join("|");
119
- return (0, x.useEffect)(() => {
120
- let n = new AbortController(), i = !0;
121
- for (let a of t) fetch(`${e}/diff?base=main&head=${encodeURIComponent(a.id)}`, {
122
- credentials: "same-origin",
123
- signal: n.signal
124
- }).then(async (e) => e.ok ? await e.json() : { error: `HTTP ${e.status}` }).catch((e) => ({ error: e instanceof Error ? e.message : "request failed" })).then((e) => {
125
- i && r((t) => new Map(t).set(a.id, e));
126
- });
127
- return () => {
128
- i = !1, n.abort();
129
- };
130
- }, [e, i]), n;
131
- }
132
- function M({ api: e, runUrl: t, doc: n, m: r, route: i }) {
133
- let a = v(`${t}/files`, r.live ? 15e3 : void 0), s = (0, x.useMemo)(() => {
134
- if (!a.data) return null;
135
- try {
136
- return o(a.data, n.run.id, null, e);
137
- } catch {
138
- return null;
139
- }
140
- }, [
141
- a.data,
142
- n.run.id,
143
- e
144
- ]), l = (0, x.useMemo)(() => r.tree.filter((e) => e.node.hasCode).slice(0, 40), [r]), u = y(r, n.run.id, i.params.get("scope")) ?? (i.params.get("scope") === "pages" ? "pages" : null), d = (0, x.useMemo)(() => u === "pages" ? [] : u ? l.filter((e) => e.id === u) : l, [l, u]), f = j(t, d), p = v(`${t}/tree?ref=main`), g = (0, x.useMemo)(() => {
145
- let e = [];
146
- if (u === null || u === "pages") for (let t of s?.items ?? []) e.push({
147
- key: `page:${t.path}`,
148
- kind: "page",
149
- tree: `${O}/${t.path.replace(/^pages\//, "")}`,
150
- path: t.path,
151
- file: t
152
- });
153
- let t = new Set(p.data?.paths ?? []);
154
- for (let r of d) {
155
- let i = f.get(r.id);
156
- if (!(!i || "error" in i)) for (let a of i.files) e.push({
157
- key: `code:${b(n.run.id, r.id)}:${a.path}`,
158
- kind: "code",
159
- tree: `${k}/${A(r)}/${a.path}`,
160
- path: a.path,
161
- agent: r,
162
- status: t.has(a.path) ? "M" : "A",
163
- additions: a.additions,
164
- deletions: a.deletions,
165
- diff: i
166
- });
167
- }
168
- return e;
169
- }, [
170
- s,
171
- d,
172
- f,
173
- p.data,
174
- u,
175
- n.run.id
176
- ]), _ = (0, x.useMemo)(() => new Map(g.map((e) => [e.tree, e])), [g]), C = (0, x.useMemo)(() => Object.fromEntries(g.filter((e) => e.kind === "code").map((e) => [e.tree, e.kind === "code" && e.status === "A" ? "added" : "modified"])), [g]), w = i.params.get("file"), T = D("(max-width: 720px)"), E = g.find((e) => e.key === w) ?? (w || T ? null : g[0] ?? null), M = !s && !a.error ? "Reading the retained files…" : d.some((e) => !f.has(e.id)) && !g.length ? "Reading the agent branches…" : null, P = m(r, (e) => e.node.hasCode, (e) => {
177
- let t = f.get(e.id);
178
- return t && !("error" in t) ? `${t.files.length} changed` : "";
179
- }), F = /* @__PURE__ */ (0, S.jsx)(h, {
180
- label: "Files written by",
181
- options: [{
182
- id: "pages",
183
- label: "Pages",
184
- meta: s ? `${s.items.length} pages` : ""
185
- }, ...P],
186
- all: { label: "Pages and every branch" },
187
- value: u,
188
- placeholder: `Search ${l.length} branches`,
189
- width: 300,
190
- className: "rp-fscope",
191
- onChange: (e) => i.go("files", {
192
- scope: e === "pages" ? "pages" : e ? b(n.run.id, e) : null,
193
- file: null
194
- }),
195
- children: u === "pages" ? "Pages" : u ? r.byId.get(u)?.name ?? "Branch" : "All files"
196
- });
197
- return /* @__PURE__ */ (0, S.jsx)("div", {
198
- className: "rp-files",
199
- children: /* @__PURE__ */ (0, S.jsx)(c, {
200
- paths: g.map((e) => e.tree),
201
- status: C,
202
- selectedPath: E?.tree,
203
- onSelect: (e) => {
204
- let t = _.get(e);
205
- t && i.go("files", { file: t.key });
206
- },
207
- onBack: () => i.go("files", { file: null }),
208
- headerActions: F,
209
- search: !0,
210
- label: "Files",
211
- expansionKey: `${n.run.id}:files`,
212
- emptyState: /* @__PURE__ */ (0, S.jsx)("p", {
213
- className: "ws-status",
214
- role: a.error ? "alert" : "status",
215
- children: a.error ? `The retained files are unavailable: ${a.error}` : M ?? "This run left no pages and no branch changed a file."
216
- }),
217
- preview: E ? {
218
- path: E.tree,
219
- ...N(E, t, i.href("files", { file: E.key }))
220
- } : void 0,
221
- style: { height: "100%" }
222
- })
223
- });
224
- }
225
- function N(e, t, n) {
226
- return {
227
- actions: /* @__PURE__ */ (0, S.jsx)(F, {
228
- entry: e,
229
- runUrl: t,
230
- link: n
231
- }),
232
- content: /* @__PURE__ */ (0, S.jsx)(L, {
233
- entry: e,
234
- runUrl: t
235
- }, e.key)
236
- };
237
- }
238
- var P = () => {
239
- let [e, t] = (0, x.useState)(() => {
240
- let e = new URLSearchParams(window.location.search).get("fileView");
241
- return e === "source" || e === "diff" ? e : "preview";
242
- });
243
- return (0, x.useEffect)(() => {
244
- let e = (e) => t(e.detail);
245
- return window.addEventListener("rp-file-view", e), () => window.removeEventListener("rp-file-view", e);
246
- }, []), [e, (e) => {
247
- let t = new URLSearchParams(window.location.search);
248
- e === "preview" ? t.delete("fileView") : t.set("fileView", e), window.history.replaceState(null, "", `${window.location.pathname}${t.size ? `?${t}` : ""}`), window.dispatchEvent(new CustomEvent("rp-file-view", { detail: e }));
249
- }];
250
- };
251
- function F({ entry: e, runUrl: t, link: n }) {
252
- let [i, o] = P(), [s, c] = (0, x.useState)(!1), m = e.path.split("/").pop() ?? e.path, h = r(e.path), g = [...h === "markdown" || h === "csv" ? [{
253
- value: "preview",
254
- label: "Preview"
255
- }, {
256
- value: "source",
257
- label: "Source"
258
- }] : [], ...e.kind === "code" ? [{
259
- value: "diff",
260
- label: "Changes"
261
- }] : []], _ = e.kind === "page" ? a(e.file) : `${t}/blob?ref=${encodeURIComponent(e.agent.id)}&path=${encodeURIComponent(e.path)}`;
262
- return /* @__PURE__ */ (0, S.jsxs)("span", {
263
- className: "rp-factions",
264
- children: [g.length > 1 && /* @__PURE__ */ (0, S.jsx)(f, {
265
- "aria-label": "File view",
266
- value: g.some((e) => e.value === i) ? i : g[0].value,
267
- onValueChange: o,
268
- options: g
269
- }), /* @__PURE__ */ (0, S.jsxs)("span", {
270
- className: "rp-group ph-hide",
271
- children: [
272
- _ && /* @__PURE__ */ (0, S.jsx)("a", {
273
- className: "rp-btn ic",
274
- href: _,
275
- download: m,
276
- "aria-label": `Download ${m}`,
277
- title: "Download",
278
- children: /* @__PURE__ */ (0, S.jsx)(p, { name: "download" })
279
- }),
280
- /* @__PURE__ */ (0, S.jsx)("button", {
281
- type: "button",
282
- className: "rp-btn ic",
283
- "aria-label": s ? "Link copied" : "Copy link",
284
- title: s ? "Copied" : "Copy link",
285
- onClick: () => {
286
- navigator.clipboard?.writeText(new URL(n, window.location.href).toString()).then(() => {
287
- c(!0), window.setTimeout(() => c(!1), 1500);
288
- });
289
- },
290
- children: /* @__PURE__ */ (0, S.jsx)(p, { name: s ? "check" : "link" })
291
- }),
292
- /* @__PURE__ */ (0, S.jsxs)(d, { children: [/* @__PURE__ */ (0, S.jsx)(l, {
293
- asChild: !0,
294
- children: /* @__PURE__ */ (0, S.jsx)("button", {
295
- type: "button",
296
- className: "rp-btn ic",
297
- "aria-label": "Provenance",
298
- title: "Provenance",
299
- children: /* @__PURE__ */ (0, S.jsx)(p, { name: "info" })
300
- })
301
- }), /* @__PURE__ */ (0, S.jsx)(u, {
302
- className: "rp-pop",
303
- align: "end",
304
- children: /* @__PURE__ */ (0, S.jsx)(I, { entry: e })
305
- })] })
306
- ]
307
- })]
308
- });
309
- }
310
- function I({ entry: e }) {
311
- let t = e.path.split("/").pop();
312
- if (e.kind === "page") {
313
- let n = e.file;
314
- return /* @__PURE__ */ (0, S.jsxs)(S.Fragment, { children: [/* @__PURE__ */ (0, S.jsxs)("div", {
315
- className: "ph",
316
- children: [/* @__PURE__ */ (0, S.jsx)("b", { children: t }), /* @__PURE__ */ (0, S.jsx)("span", { children: e.path })]
317
- }), /* @__PURE__ */ (0, S.jsx)("div", {
318
- className: "pb",
319
- children: /* @__PURE__ */ (0, S.jsxs)("dl", { children: [
320
- /* @__PURE__ */ (0, S.jsx)("dt", { children: "Source" }),
321
- /* @__PURE__ */ (0, S.jsx)("dd", { children: n.source === "knowledge" ? "Knowledge page in the run's pages" : n.source }),
322
- /* @__PURE__ */ (0, S.jsx)("dt", { children: "Size" }),
323
- /* @__PURE__ */ (0, S.jsx)("dd", { children: _(n.bytes) }),
324
- /* @__PURE__ */ (0, S.jsx)("dt", { children: n.sha256 ? "SHA-256" : "Git blob" }),
325
- /* @__PURE__ */ (0, S.jsx)("dd", {
326
- className: "mono",
327
- children: n.sha256 ?? n.objectId ?? "not recorded"
328
- }),
329
- (n.alternates?.length ?? 0) > 0 && /* @__PURE__ */ (0, S.jsxs)(S.Fragment, { children: [/* @__PURE__ */ (0, S.jsx)("dt", { children: "Versions" }), /* @__PURE__ */ (0, S.jsxs)("dd", { children: [(n.alternates?.length ?? 0) + 1, " retained copies share this path"] })] })
330
- ] })
331
- })] });
332
- }
333
- return /* @__PURE__ */ (0, S.jsxs)(S.Fragment, { children: [/* @__PURE__ */ (0, S.jsxs)("div", {
334
- className: "ph",
335
- children: [/* @__PURE__ */ (0, S.jsx)("b", { children: t }), /* @__PURE__ */ (0, S.jsx)("span", { children: e.path })]
336
- }), /* @__PURE__ */ (0, S.jsx)("div", {
337
- className: "pb",
338
- children: /* @__PURE__ */ (0, S.jsxs)("dl", { children: [
339
- /* @__PURE__ */ (0, S.jsx)("dt", { children: "Branch" }),
340
- /* @__PURE__ */ (0, S.jsx)("dd", { children: e.agent.name }),
341
- /* @__PURE__ */ (0, S.jsx)("dt", { children: "Commit" }),
342
- /* @__PURE__ */ (0, S.jsx)("dd", {
343
- className: "mono",
344
- children: e.diff.commit.slice(0, 12)
345
- }),
346
- /* @__PURE__ */ (0, S.jsx)("dt", { children: "Against main" }),
347
- /* @__PURE__ */ (0, S.jsxs)("dd", { children: [
348
- e.status === "A" ? "added" : "modified",
349
- " · ",
350
- /* @__PURE__ */ (0, S.jsxs)("span", {
351
- className: "ok",
352
- children: ["+", e.additions.toLocaleString("en-US")]
353
- }),
354
- " ",
355
- /* @__PURE__ */ (0, S.jsxs)("span", {
356
- className: "f",
357
- children: ["−", e.deletions.toLocaleString("en-US")]
358
- }),
359
- " · base ",
360
- /* @__PURE__ */ (0, S.jsx)("span", {
361
- className: "mono",
362
- children: e.diff.baseCommit.slice(0, 8)
363
- })
364
- ] })
365
- ] })
366
- })] });
367
- }
368
- function L({ entry: e, runUrl: t }) {
369
- let [n] = P(), i = e.path.split("/").pop() ?? e.path, o = r(e.path), c = o === "markdown" || o === "csv", l = [
370
- "image",
371
- "pdf",
372
- "video",
373
- "audio",
374
- "spreadsheet",
375
- "binary"
376
- ].includes(o), u = e.kind === "page" ? a(e.file) : null, d = g(e.kind === "page" && !l ? u : null), f = w(t, e.kind === "code" ? e.agent.id : null, e.kind === "code" ? e.path : null), p = n === "source" && c ? `${i}.txt` : i;
377
- return e.kind === "code" && n === "diff" ? /* @__PURE__ */ (0, S.jsx)("div", {
378
- className: "rp-doc",
379
- children: /* @__PURE__ */ (0, S.jsx)(T, {
380
- runUrl: t,
381
- base: e.status === "A" ? null : "main",
382
- head: e.agent.id,
383
- path: e.path
384
- })
385
- }) : e.kind === "page" ? l && u ? /* @__PURE__ */ (0, S.jsx)("div", {
386
- className: "rp-doc",
387
- children: /* @__PURE__ */ (0, S.jsx)(s, {
388
- filename: i,
389
- blobUrl: u,
390
- size: e.file.bytes ?? void 0,
391
- hideHeader: !0
392
- })
393
- }) : d.error ? /* @__PURE__ */ (0, S.jsx)("p", {
394
- className: "ws-status",
395
- role: "alert",
396
- children: d.error
397
- }) : d.text === void 0 ? /* @__PURE__ */ (0, S.jsxs)("p", {
398
- className: "ws-status",
399
- role: "status",
400
- children: [
401
- "Reading ",
402
- i,
403
- "…"
404
- ]
405
- }) : /* @__PURE__ */ (0, S.jsx)("div", {
406
- className: `rp-doc${n === "source" || !c ? " code" : ""}`,
407
- children: /* @__PURE__ */ (0, S.jsx)(s, {
408
- filename: p,
409
- content: d.text,
410
- hideHeader: !0
411
- })
412
- }) : f.state === "error" ? /* @__PURE__ */ (0, S.jsx)("p", {
413
- className: "ws-status",
414
- role: "alert",
415
- children: f.error
416
- }) : f.state === "absent" ? /* @__PURE__ */ (0, S.jsx)("p", {
417
- className: "ws-status",
418
- children: "This file is not on the branch any more."
419
- }) : f.state === "binary" ? /* @__PURE__ */ (0, S.jsxs)("p", {
420
- className: "ws-status",
421
- children: [
422
- "This file is not text. ",
423
- /* @__PURE__ */ (0, S.jsxs)("a", {
424
- href: f.href,
425
- download: i,
426
- children: ["Download it at ", f.commit.slice(0, 12)]
427
- }),
428
- "."
429
- ]
430
- }) : f.state === "ready" ? /* @__PURE__ */ (0, S.jsx)("div", {
431
- className: `rp-doc${n === "source" || !c ? " code" : ""}`,
432
- children: /* @__PURE__ */ (0, S.jsx)(s, {
433
- filename: p,
434
- content: f.text,
435
- hideHeader: !0
436
- })
437
- }) : /* @__PURE__ */ (0, S.jsxs)("p", {
438
- className: "ws-status",
439
- role: "status",
440
- children: [
441
- "Reading ",
442
- i,
443
- "…"
444
- ]
445
- });
446
- }
447
- //#endregion
448
- export { M as Files };