@polpo-ai/dashboard 0.15.11 → 0.15.13

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 (283) hide show
  1. package/README.md +43 -9
  2. package/dist/host.d.ts +16 -0
  3. package/dist/host.d.ts.map +1 -1
  4. package/dist/host.js +3 -0
  5. package/dist/host.js.map +1 -1
  6. package/dist/index.d.ts +35 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +27 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/self-host-api.d.ts +3 -0
  11. package/dist/self-host-api.d.ts.map +1 -0
  12. package/dist/self-host-api.js +55 -0
  13. package/dist/self-host-api.js.map +1 -0
  14. package/dist/v2/agents/agent-detail.d.ts +58 -0
  15. package/dist/v2/agents/agent-detail.d.ts.map +1 -0
  16. package/dist/v2/agents/agent-detail.js +412 -0
  17. package/dist/v2/agents/agent-detail.js.map +1 -0
  18. package/dist/v2/agents/agent-run-panel.d.ts +5 -0
  19. package/dist/v2/agents/agent-run-panel.d.ts.map +1 -0
  20. package/dist/v2/agents/agent-run-panel.js +149 -0
  21. package/dist/v2/agents/agent-run-panel.js.map +1 -0
  22. package/dist/v2/agents/loops-tab.d.ts +6 -0
  23. package/dist/v2/agents/loops-tab.d.ts.map +1 -0
  24. package/dist/v2/agents/loops-tab.js +160 -0
  25. package/dist/v2/agents/loops-tab.js.map +1 -0
  26. package/dist/v2/agents/model-select.d.ts +24 -0
  27. package/dist/v2/agents/model-select.d.ts.map +1 -0
  28. package/dist/v2/agents/model-select.js +157 -0
  29. package/dist/v2/agents/model-select.js.map +1 -0
  30. package/dist/v2/agents/prompt-preview-dialog.d.ts +15 -0
  31. package/dist/v2/agents/prompt-preview-dialog.d.ts.map +1 -0
  32. package/dist/v2/agents/prompt-preview-dialog.js +141 -0
  33. package/dist/v2/agents/prompt-preview-dialog.js.map +1 -0
  34. package/dist/v2/agents/self-host-create-agent-dialog.d.ts +6 -0
  35. package/dist/v2/agents/self-host-create-agent-dialog.d.ts.map +1 -0
  36. package/dist/v2/agents/self-host-create-agent-dialog.js +31 -0
  37. package/dist/v2/agents/self-host-create-agent-dialog.js.map +1 -0
  38. package/dist/v2/agents/self-host-detail.d.ts +4 -0
  39. package/dist/v2/agents/self-host-detail.d.ts.map +1 -0
  40. package/dist/v2/agents/self-host-detail.js +34 -0
  41. package/dist/v2/agents/self-host-detail.js.map +1 -0
  42. package/dist/v2/agents/self-host-run-chat.d.ts +10 -0
  43. package/dist/v2/agents/self-host-run-chat.d.ts.map +1 -0
  44. package/dist/v2/agents/self-host-run-chat.js +18 -0
  45. package/dist/v2/agents/self-host-run-chat.js.map +1 -0
  46. package/dist/v2/agents/skills-tab.d.ts +6 -0
  47. package/dist/v2/agents/skills-tab.d.ts.map +1 -0
  48. package/dist/v2/agents/skills-tab.js +112 -0
  49. package/dist/v2/agents/skills-tab.js.map +1 -0
  50. package/dist/v2/agents/tools-panel.d.ts +26 -0
  51. package/dist/v2/agents/tools-panel.d.ts.map +1 -0
  52. package/dist/v2/agents/tools-panel.js +123 -0
  53. package/dist/v2/agents/tools-panel.js.map +1 -0
  54. package/dist/v2/agents/tools-tab.d.ts +6 -0
  55. package/dist/v2/agents/tools-tab.d.ts.map +1 -0
  56. package/dist/v2/agents/tools-tab.js +117 -0
  57. package/dist/v2/agents/tools-tab.js.map +1 -0
  58. package/dist/v2/agents/vault-tab.d.ts +13 -0
  59. package/dist/v2/agents/vault-tab.d.ts.map +1 -0
  60. package/dist/v2/agents/vault-tab.js +93 -0
  61. package/dist/v2/agents/vault-tab.js.map +1 -0
  62. package/dist/v2/files/file-browser-primitives.d.ts +39 -0
  63. package/dist/v2/files/file-browser-primitives.d.ts.map +1 -0
  64. package/dist/v2/files/file-browser-primitives.js +75 -0
  65. package/dist/v2/files/file-browser-primitives.js.map +1 -0
  66. package/dist/v2/files/file-directory-browser.d.ts +10 -0
  67. package/dist/v2/files/file-directory-browser.d.ts.map +1 -0
  68. package/dist/v2/files/file-directory-browser.js +57 -0
  69. package/dist/v2/files/file-directory-browser.js.map +1 -0
  70. package/dist/v2/files/files-browser.d.ts +7 -0
  71. package/dist/v2/files/files-browser.d.ts.map +1 -0
  72. package/dist/v2/files/files-browser.js +390 -0
  73. package/dist/v2/files/files-browser.js.map +1 -0
  74. package/dist/v2/files/host.d.ts +45 -0
  75. package/dist/v2/files/host.d.ts.map +1 -0
  76. package/dist/v2/files/host.js +72 -0
  77. package/dist/v2/files/host.js.map +1 -0
  78. package/dist/v2/host.d.ts +42 -0
  79. package/dist/v2/host.d.ts.map +1 -0
  80. package/dist/v2/host.js +137 -0
  81. package/dist/v2/host.js.map +1 -0
  82. package/dist/v2/playground/chat-canvas.d.ts +9 -0
  83. package/dist/v2/playground/chat-canvas.d.ts.map +1 -0
  84. package/dist/v2/playground/chat-canvas.js +88 -0
  85. package/dist/v2/playground/chat-canvas.js.map +1 -0
  86. package/dist/v2/playground/host.d.ts +116 -0
  87. package/dist/v2/playground/host.d.ts.map +1 -0
  88. package/dist/v2/playground/host.js +12 -0
  89. package/dist/v2/playground/host.js.map +1 -0
  90. package/dist/v2/playground/self-host-chat.d.ts +11 -0
  91. package/dist/v2/playground/self-host-chat.d.ts.map +1 -0
  92. package/dist/v2/playground/self-host-chat.js +85 -0
  93. package/dist/v2/playground/self-host-chat.js.map +1 -0
  94. package/dist/v2/playground/self-host.d.ts +2 -0
  95. package/dist/v2/playground/self-host.d.ts.map +1 -0
  96. package/dist/v2/playground/self-host.js +87 -0
  97. package/dist/v2/playground/self-host.js.map +1 -0
  98. package/dist/v2/sessions/host.d.ts +167 -0
  99. package/dist/v2/sessions/host.d.ts.map +1 -0
  100. package/dist/v2/sessions/host.js +12 -0
  101. package/dist/v2/sessions/host.js.map +1 -0
  102. package/dist/v2/sessions/self-host.d.ts +7 -0
  103. package/dist/v2/sessions/self-host.d.ts.map +1 -0
  104. package/dist/v2/sessions/self-host.js +120 -0
  105. package/dist/v2/sessions/self-host.js.map +1 -0
  106. package/dist/v2/sessions/trace-columns.d.ts +4 -0
  107. package/dist/v2/sessions/trace-columns.d.ts.map +1 -0
  108. package/dist/v2/sessions/trace-columns.js +102 -0
  109. package/dist/v2/sessions/trace-columns.js.map +1 -0
  110. package/dist/v2/sessions/trace-detail-view.d.ts +7 -0
  111. package/dist/v2/sessions/trace-detail-view.d.ts.map +1 -0
  112. package/dist/v2/sessions/trace-detail-view.js +346 -0
  113. package/dist/v2/sessions/trace-detail-view.js.map +1 -0
  114. package/dist/v2/sessions/trace-detail.d.ts +133 -0
  115. package/dist/v2/sessions/trace-detail.d.ts.map +1 -0
  116. package/dist/v2/sessions/trace-detail.js +210 -0
  117. package/dist/v2/sessions/trace-detail.js.map +1 -0
  118. package/dist/v2/sessions/trace-normalize.d.ts +60 -0
  119. package/dist/v2/sessions/trace-normalize.d.ts.map +1 -0
  120. package/dist/v2/sessions/trace-normalize.js +87 -0
  121. package/dist/v2/sessions/trace-normalize.js.map +1 -0
  122. package/dist/v2/sessions/trace-table.d.ts +8 -0
  123. package/dist/v2/sessions/trace-table.d.ts.map +1 -0
  124. package/dist/v2/sessions/trace-table.js +27 -0
  125. package/dist/v2/sessions/trace-table.js.map +1 -0
  126. package/dist/v2/shell/coding-agents.d.ts +21 -0
  127. package/dist/v2/shell/coding-agents.d.ts.map +1 -0
  128. package/dist/v2/shell/coding-agents.js +41 -0
  129. package/dist/v2/shell/coding-agents.js.map +1 -0
  130. package/dist/v2/shell/dashboard-shell.d.ts +6 -0
  131. package/dist/v2/shell/dashboard-shell.d.ts.map +1 -0
  132. package/dist/v2/shell/dashboard-shell.js +132 -0
  133. package/dist/v2/shell/dashboard-shell.js.map +1 -0
  134. package/dist/v2/skills/self-host-create-skill-dialog.d.ts +6 -0
  135. package/dist/v2/skills/self-host-create-skill-dialog.d.ts.map +1 -0
  136. package/dist/v2/skills/self-host-create-skill-dialog.js +27 -0
  137. package/dist/v2/skills/self-host-create-skill-dialog.js.map +1 -0
  138. package/dist/v2/skills/self-host-detail.d.ts +4 -0
  139. package/dist/v2/skills/self-host-detail.d.ts.map +1 -0
  140. package/dist/v2/skills/self-host-detail.js +31 -0
  141. package/dist/v2/skills/self-host-detail.js.map +1 -0
  142. package/dist/v2/support/agent-call-snippets.d.ts +35 -0
  143. package/dist/v2/support/agent-call-snippets.d.ts.map +1 -0
  144. package/dist/v2/support/agent-call-snippets.js +113 -0
  145. package/dist/v2/support/agent-call-snippets.js.map +1 -0
  146. package/dist/v2/support/tool-catalog.d.ts +62 -0
  147. package/dist/v2/support/tool-catalog.d.ts.map +1 -0
  148. package/dist/v2/support/tool-catalog.js +271 -0
  149. package/dist/v2/support/tool-catalog.js.map +1 -0
  150. package/dist/v2/support/vault-fields.d.ts +29 -0
  151. package/dist/v2/support/vault-fields.d.ts.map +1 -0
  152. package/dist/v2/support/vault-fields.js +74 -0
  153. package/dist/v2/support/vault-fields.js.map +1 -0
  154. package/dist/v2/tools/param-fields.d.ts +19 -0
  155. package/dist/v2/tools/param-fields.d.ts.map +1 -0
  156. package/dist/v2/tools/param-fields.js +191 -0
  157. package/dist/v2/tools/param-fields.js.map +1 -0
  158. package/dist/v2/tools/self-host.d.ts +7 -0
  159. package/dist/v2/tools/self-host.d.ts.map +1 -0
  160. package/dist/v2/tools/self-host.js +26 -0
  161. package/dist/v2/tools/self-host.js.map +1 -0
  162. package/dist/v2/tools/source-parsing.d.ts +4 -0
  163. package/dist/v2/tools/source-parsing.d.ts.map +1 -0
  164. package/dist/v2/tools/source-parsing.js +15 -0
  165. package/dist/v2/tools/source-parsing.js.map +1 -0
  166. package/dist/v2/tools/tool-detail.d.ts +7 -0
  167. package/dist/v2/tools/tool-detail.d.ts.map +1 -0
  168. package/dist/v2/tools/tool-detail.js +157 -0
  169. package/dist/v2/tools/tool-detail.js.map +1 -0
  170. package/dist/v2/tools/tool-editor-dialog.d.ts +9 -0
  171. package/dist/v2/tools/tool-editor-dialog.d.ts.map +1 -0
  172. package/dist/v2/tools/tool-editor-dialog.js +306 -0
  173. package/dist/v2/tools/tool-editor-dialog.js.map +1 -0
  174. package/dist/v2/tools/tools-view.d.ts +21 -0
  175. package/dist/v2/tools/tools-view.d.ts.map +1 -0
  176. package/dist/v2/tools/tools-view.js +77 -0
  177. package/dist/v2/tools/tools-view.js.map +1 -0
  178. package/dist/v2/ui/bits.d.ts +23 -0
  179. package/dist/v2/ui/bits.d.ts.map +1 -0
  180. package/dist/v2/ui/bits.js +18 -0
  181. package/dist/v2/ui/bits.js.map +1 -0
  182. package/dist/v2/ui/button.d.ts +9 -0
  183. package/dist/v2/ui/button.d.ts.map +1 -0
  184. package/dist/v2/ui/button.js +33 -0
  185. package/dist/v2/ui/button.js.map +1 -0
  186. package/dist/v2/ui/code-block.d.ts +20 -0
  187. package/dist/v2/ui/code-block.d.ts.map +1 -0
  188. package/dist/v2/ui/code-block.js +44 -0
  189. package/dist/v2/ui/code-block.js.map +1 -0
  190. package/dist/v2/ui/code-editor.d.ts +9 -0
  191. package/dist/v2/ui/code-editor.d.ts.map +1 -0
  192. package/dist/v2/ui/code-editor.js +25 -0
  193. package/dist/v2/ui/code-editor.js.map +1 -0
  194. package/dist/v2/ui/copy-button.d.ts +9 -0
  195. package/dist/v2/ui/copy-button.d.ts.map +1 -0
  196. package/dist/v2/ui/copy-button.js +24 -0
  197. package/dist/v2/ui/copy-button.js.map +1 -0
  198. package/dist/v2/ui/data-table.d.ts +40 -0
  199. package/dist/v2/ui/data-table.d.ts.map +1 -0
  200. package/dist/v2/ui/data-table.js +85 -0
  201. package/dist/v2/ui/data-table.js.map +1 -0
  202. package/dist/v2/ui/dialog.d.ts +16 -0
  203. package/dist/v2/ui/dialog.d.ts.map +1 -0
  204. package/dist/v2/ui/dialog.js +39 -0
  205. package/dist/v2/ui/dialog.js.map +1 -0
  206. package/dist/v2/ui/input.d.ts +2 -0
  207. package/dist/v2/ui/input.d.ts.map +1 -0
  208. package/dist/v2/ui/input.js +7 -0
  209. package/dist/v2/ui/input.js.map +1 -0
  210. package/dist/v2/ui/multi-select-filter.d.ts +18 -0
  211. package/dist/v2/ui/multi-select-filter.d.ts.map +1 -0
  212. package/dist/v2/ui/multi-select-filter.js +37 -0
  213. package/dist/v2/ui/multi-select-filter.js.map +1 -0
  214. package/dist/v2/ui/page-header.d.ts +10 -0
  215. package/dist/v2/ui/page-header.d.ts.map +1 -0
  216. package/dist/v2/ui/page-header.js +8 -0
  217. package/dist/v2/ui/page-header.js.map +1 -0
  218. package/dist/v2/ui/refresh-button.d.ts +5 -0
  219. package/dist/v2/ui/refresh-button.d.ts.map +1 -0
  220. package/dist/v2/ui/refresh-button.js +7 -0
  221. package/dist/v2/ui/refresh-button.js.map +1 -0
  222. package/dist/v2/ui/select.d.ts +16 -0
  223. package/dist/v2/ui/select.d.ts.map +1 -0
  224. package/dist/v2/ui/select.js +36 -0
  225. package/dist/v2/ui/select.js.map +1 -0
  226. package/dist/v2/ui/skeleton.d.ts +3 -0
  227. package/dist/v2/ui/skeleton.d.ts.map +1 -0
  228. package/dist/v2/ui/skeleton.js +7 -0
  229. package/dist/v2/ui/skeleton.js.map +1 -0
  230. package/dist/v2/ui/textarea.d.ts +2 -0
  231. package/dist/v2/ui/textarea.d.ts.map +1 -0
  232. package/dist/v2/ui/textarea.js +6 -0
  233. package/dist/v2/ui/textarea.js.map +1 -0
  234. package/dist/v2/utils.d.ts +3 -0
  235. package/dist/v2/utils.d.ts.map +1 -0
  236. package/dist/v2/utils.js +6 -0
  237. package/dist/v2/utils.js.map +1 -0
  238. package/dist/v2/views/agents-detail.d.ts +2 -0
  239. package/dist/v2/views/agents-detail.d.ts.map +1 -0
  240. package/dist/v2/views/agents-detail.js +2 -0
  241. package/dist/v2/views/agents-detail.js.map +1 -0
  242. package/dist/v2/views/agents.d.ts +27 -0
  243. package/dist/v2/views/agents.d.ts.map +1 -0
  244. package/dist/v2/views/agents.js +161 -0
  245. package/dist/v2/views/agents.js.map +1 -0
  246. package/dist/v2/views/files.d.ts +2 -0
  247. package/dist/v2/views/files.d.ts.map +1 -0
  248. package/dist/v2/views/files.js +10 -0
  249. package/dist/v2/views/files.js.map +1 -0
  250. package/dist/v2/views/memory-host.d.ts +10 -0
  251. package/dist/v2/views/memory-host.d.ts.map +1 -0
  252. package/dist/v2/views/memory-host.js +17 -0
  253. package/dist/v2/views/memory-host.js.map +1 -0
  254. package/dist/v2/views/memory-project.d.ts +5 -0
  255. package/dist/v2/views/memory-project.d.ts.map +1 -0
  256. package/dist/v2/views/memory-project.js +36 -0
  257. package/dist/v2/views/memory-project.js.map +1 -0
  258. package/dist/v2/views/memory.d.ts +2 -0
  259. package/dist/v2/views/memory.d.ts.map +1 -0
  260. package/dist/v2/views/memory.js +14 -0
  261. package/dist/v2/views/memory.js.map +1 -0
  262. package/dist/v2/views/playground.d.ts +13 -0
  263. package/dist/v2/views/playground.d.ts.map +1 -0
  264. package/dist/v2/views/playground.js +88 -0
  265. package/dist/v2/views/playground.js.map +1 -0
  266. package/dist/v2/views/sessions-detail.d.ts +8 -0
  267. package/dist/v2/views/sessions-detail.d.ts.map +1 -0
  268. package/dist/v2/views/sessions-detail.js +107 -0
  269. package/dist/v2/views/sessions-detail.js.map +1 -0
  270. package/dist/v2/views/sessions.d.ts +9 -0
  271. package/dist/v2/views/sessions.d.ts.map +1 -0
  272. package/dist/v2/views/sessions.js +9 -0
  273. package/dist/v2/views/sessions.js.map +1 -0
  274. package/dist/v2/views/skills-detail.d.ts +26 -0
  275. package/dist/v2/views/skills-detail.d.ts.map +1 -0
  276. package/dist/v2/views/skills-detail.js +120 -0
  277. package/dist/v2/views/skills-detail.js.map +1 -0
  278. package/dist/v2/views/skills.d.ts +18 -0
  279. package/dist/v2/views/skills.d.ts.map +1 -0
  280. package/dist/v2/views/skills.js +46 -0
  281. package/dist/v2/views/skills.js.map +1 -0
  282. package/package.json +20 -4
  283. package/src/v2.css +212 -0
@@ -0,0 +1,210 @@
1
+ /**
2
+ * One trace model for every run kind, so the detail view is a single, uniform
3
+ * timeline. A run is a flat list of steps (chat turns / execution events); a
4
+ * loop adds one level of nesting (phases that wrap their work), rendered as
5
+ * collapsible groups in the SAME timeline — the loop is fused in, not a
6
+ * separate view.
7
+ *
8
+ * chat → conversation turns (user / assistant, with tool calls)
9
+ * task → session log events ({ ts, event, data })
10
+ * loop → phases (steps) wrapping tool/transition events
11
+ *
12
+ * Pure module: converters run on the server page, the client `<Trace>` renders.
13
+ */
14
+ /* ── helpers ──────────────────────────────────────────────────────────── */
15
+ function contentText(content) {
16
+ if (typeof content === "string")
17
+ return content;
18
+ if (Array.isArray(content)) {
19
+ return content
20
+ .map((p) => p && typeof p === "object" && "text" in p
21
+ ? String(p.text ?? "")
22
+ : "")
23
+ .filter(Boolean)
24
+ .join("\n");
25
+ }
26
+ return "";
27
+ }
28
+ /** Pretty string for a value: objects → pretty JSON, primitives → as-is. */
29
+ function jsonish(v) {
30
+ if (v == null)
31
+ return "";
32
+ if (typeof v === "string")
33
+ return v;
34
+ try {
35
+ return JSON.stringify(v, null, 2);
36
+ }
37
+ catch {
38
+ return String(v);
39
+ }
40
+ }
41
+ /**
42
+ * Flattens a chat thread into the raw transcript: one step per message, then
43
+ * one step per tool call (name + input + output) so the full trace shows every
44
+ * call as its own row instead of folding them into the assistant message.
45
+ */
46
+ export function chatToItems(messages) {
47
+ const out = [];
48
+ messages.forEach((m, i) => {
49
+ const actor = m.role === "assistant"
50
+ ? "assistant"
51
+ : m.role === "user"
52
+ ? "user"
53
+ : "system";
54
+ out.push({
55
+ id: m.id ?? `chat-${i}`,
56
+ actor,
57
+ label: m.role ?? "message",
58
+ body: contentText(m.content),
59
+ markdown: true,
60
+ ts: m.ts ?? m.createdAt,
61
+ raw: m,
62
+ });
63
+ // The backend folds tool calls INSIDE the assistant message. A debug trace
64
+ // must show them, so un-fold each into its own raw `tool_call` (and
65
+ // `tool_result` when a result exists) row — verbatim, no reshaping.
66
+ (m.toolCalls ?? []).forEach((call, j) => {
67
+ const name = call.name ?? call.toolName ?? "tool";
68
+ const args = call.arguments ?? call.input ?? call.args;
69
+ const result = call.result ?? call.output;
70
+ out.push({
71
+ id: call.id ? `${call.id}-call` : `chat-${i}-call-${j}`,
72
+ actor: "tool",
73
+ label: "tool_call",
74
+ sublabel: name,
75
+ ts: m.ts ?? m.createdAt,
76
+ raw: { id: call.id, name, arguments: args },
77
+ });
78
+ if (result !== undefined || call.state) {
79
+ out.push({
80
+ id: call.id ? `${call.id}-result` : `chat-${i}-result-${j}`,
81
+ actor: "tool",
82
+ label: "tool_result",
83
+ sublabel: name,
84
+ status: call.state,
85
+ tone: call.state === "error" ? "failed" : "success",
86
+ body: typeof result === "string" ? result : undefined,
87
+ ts: m.ts ?? m.createdAt,
88
+ raw: { id: call.id, name, result, state: call.state },
89
+ });
90
+ }
91
+ });
92
+ });
93
+ return out;
94
+ }
95
+ export function logToItems(entries) {
96
+ return entries.map((e, i) => {
97
+ const ev = e.type ?? e.event ?? "event";
98
+ const actor = /assistant|completion|response|model/i.test(ev)
99
+ ? "assistant"
100
+ : /user|prompt/i.test(ev)
101
+ ? "user"
102
+ : /tool/i.test(ev) || e.tool
103
+ ? "tool"
104
+ : "event";
105
+ const d = (e.data && typeof e.data === "object" ? e.data : {});
106
+ const body = contentText(e.content ?? d.content ?? e.text ?? d.text ?? d.message) ||
107
+ (typeof e.data === "string" ? e.data : "");
108
+ const tone = /error|fail/i.test(ev) ? "failed" : "neutral";
109
+ const payload = [];
110
+ if (e.input != null)
111
+ payload.push({ label: "input", value: jsonish(e.input) });
112
+ if (e.data != null && typeof e.data === "object")
113
+ payload.push({ label: "data", value: jsonish(e.data) });
114
+ return {
115
+ id: `log-${i}`,
116
+ actor,
117
+ label: ev.replace(/[._]/g, " "),
118
+ sublabel: e.tool,
119
+ body: body || undefined,
120
+ tone,
121
+ ts: e.ts,
122
+ payload: payload.length ? payload : undefined,
123
+ raw: e,
124
+ };
125
+ });
126
+ }
127
+ /** Durable Run lifecycle rows, independent from the conversational transcript. */
128
+ export function runToItems(run) {
129
+ if (!run)
130
+ return [];
131
+ const details = {
132
+ runId: run.id,
133
+ engine: run.engine,
134
+ delivery: run.delivery,
135
+ executionMode: run.executionMode,
136
+ };
137
+ const rows = [
138
+ {
139
+ id: `${run.id ?? "run"}-started`,
140
+ actor: "event",
141
+ label: "run started",
142
+ sublabel: run.executionMode ?? run.engine,
143
+ status: "running",
144
+ tone: "running",
145
+ ts: run.startedAt,
146
+ raw: { type: "run.started", ...details, startedAt: run.startedAt },
147
+ },
148
+ ];
149
+ if (run.status && run.status !== "running") {
150
+ const failed = run.status === "failed" || run.status === "killed" || (run.result?.exitCode ?? 0) !== 0;
151
+ rows.push({
152
+ id: `${run.id ?? "run"}-terminal`,
153
+ actor: "event",
154
+ label: failed ? "run failed" : "run completed",
155
+ sublabel: run.result?.duration != null ? `${Math.max(0, run.result.duration)} ms` : undefined,
156
+ status: run.status,
157
+ tone: failed ? "failed" : "success",
158
+ body: run.result?.stderr || undefined,
159
+ ts: run.completedAt ?? run.updatedAt,
160
+ raw: {
161
+ type: `run.${run.status}`,
162
+ ...details,
163
+ completedAt: run.completedAt ?? run.updatedAt,
164
+ result: run.result,
165
+ },
166
+ });
167
+ }
168
+ return rows;
169
+ }
170
+ function loopTone(e) {
171
+ if (e.status === "failed" || e.error || e.type === "loop.error")
172
+ return "failed";
173
+ if (e.status === "completed" || e.type === "loop.end")
174
+ return "success";
175
+ if (e.status === "skipped")
176
+ return "warning";
177
+ if (e.status === "started" || e.type === "loop.start")
178
+ return "running";
179
+ return "neutral";
180
+ }
181
+ function loopEventToStep(e, i) {
182
+ const payload = [];
183
+ if (e.input != null)
184
+ payload.push({ label: "input", value: jsonish(e.input) });
185
+ if (e.output != null)
186
+ payload.push({ label: "output", value: jsonish(e.output) });
187
+ if (e.data != null)
188
+ payload.push({ label: "data", value: jsonish(e.data) });
189
+ return {
190
+ id: e.id ?? `loop-${i}`,
191
+ actor: e.type.startsWith("tool.") || e.tool ? "tool" : "event",
192
+ label: e.type,
193
+ sublabel: e.tool ?? (e.from && e.to ? `${e.from} → ${e.to}` : undefined),
194
+ status: e.status,
195
+ tone: loopTone(e),
196
+ body: e.error || undefined,
197
+ ts: e.ts,
198
+ payload: payload.length ? payload : undefined,
199
+ raw: e,
200
+ };
201
+ }
202
+ /**
203
+ * A debug trace shows EVERY loop event as its own flat row — loop.start/end,
204
+ * step.start/end, tool.call/result, transitions, permission/policy results —
205
+ * verbatim, in order, no phase folding or hiding of structural markers.
206
+ */
207
+ export function loopToNodes(events) {
208
+ return events.map((e, i) => loopEventToStep(e, i));
209
+ }
210
+ //# sourceMappingURL=trace-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-detail.js","sourceRoot":"","sources":["../../../src/v2/sessions/trace-detail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Unified Trace — normalizes the execution sources into one row shape.
3
+ *
4
+ * The two ways to invoke an agent are the only real "kinds": Chat (sync) and
5
+ * Task (async). A LOOP is not a kind — it's the deterministic recipe a run
6
+ * follows, and it runs *inside* chat and tasks. So loop is a property on the
7
+ * row (`loop`), not a category. Loop runs are surfaced as chat runs that used
8
+ * a loop (the runtime starts a loop from a chat completion).
9
+ *
10
+ * Pure module → imported by both the server page and the client table.
11
+ */
12
+ export type RunKind = "chat" | "task";
13
+ export type Tone = "success" | "running" | "failed" | "warning" | "neutral";
14
+ export type RunRow = {
15
+ id: string;
16
+ kind: RunKind;
17
+ title: string;
18
+ agent?: string;
19
+ loop?: string;
20
+ status: string;
21
+ tone: Tone;
22
+ ts: number;
23
+ durationMs?: number;
24
+ messageCount?: number;
25
+ };
26
+ type RawSession = {
27
+ id: string;
28
+ title?: string;
29
+ agent?: string;
30
+ messageCount?: number;
31
+ createdAt?: string;
32
+ updatedAt?: string;
33
+ };
34
+ type RawTask = {
35
+ id: string;
36
+ title?: string;
37
+ status?: string;
38
+ assignTo?: string;
39
+ loop?: string;
40
+ createdAt?: string;
41
+ updatedAt?: string;
42
+ retries?: number;
43
+ maxRetries?: number;
44
+ result?: {
45
+ duration?: number;
46
+ };
47
+ };
48
+ type RawLoopRun = {
49
+ id: string;
50
+ loopName?: string;
51
+ agentName?: string;
52
+ status?: string;
53
+ startedAt?: string;
54
+ updatedAt?: string;
55
+ completedAt?: string;
56
+ trace?: unknown[];
57
+ };
58
+ export declare function normalizeAll(sessions: RawSession[], tasks: RawTask[], loopRuns: RawLoopRun[]): RunRow[];
59
+ export {};
60
+ //# sourceMappingURL=trace-normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-normalize.d.ts","sourceRoot":"","sources":["../../../src/v2/sessions/trace-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACtC,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5E,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,KAAK,OAAO,GAAG;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC,CAAC;AACF,KAAK,UAAU,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB,CAAC;AAwBF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,EAAE,UAAU,EAAE,GACrB,MAAM,EAAE,CAkDV"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Unified Trace — normalizes the execution sources into one row shape.
3
+ *
4
+ * The two ways to invoke an agent are the only real "kinds": Chat (sync) and
5
+ * Task (async). A LOOP is not a kind — it's the deterministic recipe a run
6
+ * follows, and it runs *inside* chat and tasks. So loop is a property on the
7
+ * row (`loop`), not a category. Loop runs are surfaced as chat runs that used
8
+ * a loop (the runtime starts a loop from a chat completion).
9
+ *
10
+ * Pure module → imported by both the server page and the client table.
11
+ */
12
+ function ms(date) {
13
+ if (!date)
14
+ return 0;
15
+ const t = new Date(date).getTime();
16
+ return Number.isNaN(t) ? 0 : t;
17
+ }
18
+ function taskTone(status) {
19
+ if (status === "done")
20
+ return "success";
21
+ if (status === "failed")
22
+ return "failed";
23
+ if (status === "in_progress")
24
+ return "running";
25
+ if (status === "review" || status === "awaiting_approval")
26
+ return "warning";
27
+ return "neutral";
28
+ }
29
+ function loopTone(status) {
30
+ if (status === "completed" || status === "approval_approved")
31
+ return "success";
32
+ if (status === "failed" || status === "approval_rejected")
33
+ return "failed";
34
+ if (status === "running" || status === "resuming")
35
+ return "running";
36
+ if (status === "awaiting_approval")
37
+ return "warning";
38
+ return "neutral";
39
+ }
40
+ export function normalizeAll(sessions, tasks, loopRuns) {
41
+ const rows = [];
42
+ for (const s of sessions) {
43
+ rows.push({
44
+ id: `chat:${s.id}`,
45
+ kind: "chat",
46
+ title: s.title?.trim() || `Session ${s.id.slice(0, 8)}`,
47
+ agent: s.agent,
48
+ status: "",
49
+ tone: "neutral",
50
+ ts: ms(s.updatedAt) || ms(s.createdAt),
51
+ messageCount: s.messageCount,
52
+ });
53
+ }
54
+ for (const t of tasks) {
55
+ const status = t.status ?? "pending";
56
+ rows.push({
57
+ id: `task:${t.id}`,
58
+ kind: "task",
59
+ title: t.title?.trim() || `Task ${t.id.slice(0, 8)}`,
60
+ agent: t.assignTo,
61
+ loop: t.loop,
62
+ status,
63
+ tone: taskTone(status),
64
+ ts: ms(t.updatedAt) || ms(t.createdAt),
65
+ durationMs: t.result?.duration,
66
+ });
67
+ }
68
+ // Loop runs are chat-mode executions that followed a loop recipe.
69
+ for (const r of loopRuns) {
70
+ const status = r.status ?? "running";
71
+ const start = ms(r.startedAt);
72
+ const end = ms(r.completedAt);
73
+ rows.push({
74
+ id: `loop:${r.id}`,
75
+ kind: "chat",
76
+ title: r.loopName?.trim() || `Loop run ${r.id.slice(0, 8)}`,
77
+ agent: r.agentName,
78
+ loop: r.loopName,
79
+ status,
80
+ tone: loopTone(status),
81
+ ts: ms(r.updatedAt) || end || start,
82
+ durationMs: end && start ? end - start : undefined,
83
+ });
84
+ }
85
+ return rows.sort((a, b) => b.ts - a.ts);
86
+ }
87
+ //# sourceMappingURL=trace-normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-normalize.js","sourceRoot":"","sources":["../../../src/v2/sessions/trace-normalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SessionsHostAdapter } from "./host.js";
2
+ import { type RunRow } from "./trace-normalize.js";
3
+ export declare function TraceTable({ projectId, initial, host, }: {
4
+ projectId: string;
5
+ initial: RunRow[];
6
+ host: SessionsHostAdapter;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=trace-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-table.d.ts","sourceRoot":"","sources":["../../../src/v2/sessions/trace-table.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAGjE,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,OAAO,EACP,IAAI,GACL,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,mBAAmB,CAAC;CAC3B,2CA0GA"}
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useState } from "react";
4
+ import { ClockCounterClockwise } from "@phosphor-icons/react";
5
+ import {} from "./trace-normalize.js";
6
+ import { traceColumns } from "./trace-columns.js";
7
+ export function TraceTable({ projectId, initial, host, }) {
8
+ const { PageHeader, DataTable, RefreshButton, MultiSelectFilter } = host.components;
9
+ const [selectedKinds, setSelectedKinds] = useState([]);
10
+ const [selectedAgents, setSelectedAgents] = useState([]);
11
+ const { data: runs = initial, isFetching, refetch } = host.data.useRuns({
12
+ projectId,
13
+ initial,
14
+ });
15
+ const agents = useMemo(() => [...new Set(runs.map((r) => r.agent).filter(Boolean))].sort(), [runs]);
16
+ const rows = useMemo(() => runs.filter((r) => (selectedKinds.length === 0 || selectedKinds.includes(r.kind)) &&
17
+ (selectedAgents.length === 0 ||
18
+ (r.agent != null && selectedAgents.includes(r.agent)))), [runs, selectedKinds, selectedAgents]);
19
+ const columns = traceColumns;
20
+ return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsx(PageHeader, { title: "Sessions", description: "All runs in this project \u2014 chat sessions, tasks, and loop executions." }), _jsx(DataTable, { columns: columns, data: rows, getRowId: (r) => r.id, rowHref: (r) => host.routes.run(projectId, r.id), initialSorting: [{ id: "when", desc: true }], searchPlaceholder: "Search runs\u2026", searchFn: (r, q) => [r.title, r.agent, r.loop, r.status, r.id].some((v) => (v ?? "").toLowerCase().includes(q)), filters: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MultiSelectFilter, { allLabel: "All types", options: [
21
+ { value: "chat", label: "Chat" },
22
+ { value: "task", label: "Task" },
23
+ ], selected: selectedKinds, onToggle: (v) => setSelectedKinds((prev) => prev.includes(v) ? prev.filter((x) => x !== v) : [...prev, v]), onClear: () => setSelectedKinds([]) }), agents.length > 0 && (_jsx(MultiSelectFilter, { allLabel: "All agents", options: agents.map((a) => ({ value: a, label: a })), selected: selectedAgents, onToggle: (v) => setSelectedAgents((prev) => prev.includes(v)
24
+ ? prev.filter((x) => x !== v)
25
+ : [...prev, v]), onClear: () => setSelectedAgents([]) }))] }), rightSlot: _jsx(RefreshButton, { onClick: () => refetch(), busy: isFetching }), empty: isFetching ? (_jsx("span", { className: "text-sm text-muted-foreground", children: "Loading runs\u2026" })) : (_jsxs("div", { className: "flex flex-col items-center gap-3 py-8", children: [_jsx("span", { className: "grid h-11 w-11 place-items-center rounded-lg border border-border bg-secondary", children: _jsx(ClockCounterClockwise, { size: 20, className: "text-muted-foreground" }) }), _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-sm font-medium text-foreground", children: "No runs yet" }), _jsx("div", { className: "mt-1 max-w-sm text-[13px] text-muted-foreground", children: "Chat with an agent or start a task \u2014 chat sessions, tasks and loop runs all show up here." })] })] })) })] }));
26
+ }
27
+ //# sourceMappingURL=trace-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-table.js","sourceRoot":"","sources":["../../../src/v2/sessions/trace-table.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { SVGProps } from "react";
2
+ /**
3
+ * Brand glyphs for the coding agents the `skills` CLI can target.
4
+ * Paths are taken from each agent's public brand material. Icons either
5
+ * use their brand fill (Cursor/Claude/Trae/Qoder) or `currentColor` so
6
+ * they inherit from the parent (the ones without a strict brand color).
7
+ *
8
+ * The gradient IDs in CursorIcon are suffixed `-polpo` to reduce the
9
+ * chance of collision with other SVGs on the same page.
10
+ */
11
+ export declare function CursorIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
12
+ export declare function ClaudeCodeIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
13
+ export declare function TraeIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
14
+ export declare function ClineIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
15
+ export declare function WindsurfIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
16
+ export declare function RooIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
17
+ export declare function QoderIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
18
+ export declare function CopilotIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
19
+ export declare function CodexIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
20
+ export declare function OpenCodeIcon(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
21
+ //# sourceMappingURL=coding-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-agents.d.ts","sourceRoot":"","sources":["../../../src/v2/shell/coding-agents.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;;;;GAQG;AAEH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAuBxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAS5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAStD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAiBvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAW1D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CASrD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAavD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAWzD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAWvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAO1D"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Brand glyphs for the coding agents the `skills` CLI can target.
4
+ * Paths are taken from each agent's public brand material. Icons either
5
+ * use their brand fill (Cursor/Claude/Trae/Qoder) or `currentColor` so
6
+ * they inherit from the parent (the ones without a strict brand color).
7
+ *
8
+ * The gradient IDs in CursorIcon are suffixed `-polpo` to reduce the
9
+ * chance of collision with other SVGs on the same page.
10
+ */
11
+ export function CursorIcon(props) {
12
+ return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [_jsx("path", { d: "M12.692 1.273L20.5205 6.1985C20.819 6.386 21 6.714 21 7.0665V16.444C21 16.79 20.8225 17.1115 20.5295 17.2955L12.686 22.225C12.4175 22.394 12.077 22.398 11.8045 22.236L3.49 17.2915C3.299 17.178 3.1545 17.006 3.0735 16.8065C3.0255 16.6885 3 16.561 3 16.43V7.06851C3 6.716 3.1855 6.3895 3.489 6.209L11.8105 1.2615C12.083 1.0995 12.4235 1.104 12.692 1.273Z", fill: "url(#cursor-a-polpo)" }), _jsx("path", { d: "M12.5 11.4995L20.8975 16.8745C20.814 17.0375 20.6915 17.178 20.5295 17.2955L12.712 22.2095C12.409 22.3905 12.0985 22.41 11.779 22.2225L3.49 17.2915C3.2985 17.176 3.1575 17.0165 3.0735 16.8065L12.5 11.4995Z", fill: "url(#cursor-b-polpo)" }), _jsx("path", { d: "M12.248 1.146V11.589L3.0735 16.8065C3.0235 16.6805 2.9995 16.555 3 16.43V7.0685C3.021 6.7405 3.1185 6.435 3.489 6.209L11.8545 1.2385C11.993 1.1745 12.125 1.14 12.248 1.146Z", fill: "url(#cursor-c-polpo)" }), _jsx("path", { d: "M4.264 7.9994L11.74 11.8359C11.904 11.9324 12.005 12.1084 12.005 12.299L11.9995 20.476C11.9995 21.0285 12.733 21.221 13.004 20.7395L20.001 7.7839C20.2025 7.4259 19.9435 6.9839 19.533 6.9839L4.5355 6.9999C3.9885 6.9999 3.7925 7.7224 4.264 7.9994Z", fill: "#E0E0E0" }), _jsxs("defs", { children: [_jsxs("linearGradient", { id: "cursor-a-polpo", x1: "15.451", y1: "17.86", x2: "8.257", y2: "5.112", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { stopColor: "#636363" }), _jsx("stop", { offset: "1", stopColor: "#444" })] }), _jsxs("linearGradient", { id: "cursor-b-polpo", x1: "13.56", y1: "20.903", x2: "10.544", y2: "13.121", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { stopColor: "#A1AAB3" }), _jsx("stop", { offset: "1", stopColor: "#8F979E" })] }), _jsxs("linearGradient", { id: "cursor-c-polpo", x1: "9.31", y1: "11.899", x2: "4.424", y2: "3.242", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { stopColor: "#636363" }), _jsx("stop", { offset: "0.997", stopColor: "#90989F" })] })] })] }));
13
+ }
14
+ export function ClaudeCodeIcon(props) {
15
+ return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: _jsx("path", { d: "M5.924 15.296l3.934-2.206.067-.192-.067-.107h-.192l-.658-.04-2.248-.06-1.95-.08-1.888-.103-.476-.1-.446-.587.046-.293.4-.268.572.05 1.267.086 1.898.132 1.377.08 2.041.214h.324l.046-.131-.112-.082-.086-.079-1.965-1.33-2.126-1.407-1.114-.81-.603-.41-.303-.385-.131-.84.546-.602.735.05.187.05.744.572L7.332 7.647 9.407 9.174l.304.253.12-.086.016-.06-.136-.228-1.13-2.04-1.205-2.075L6.84 4.08l-.141-.516c-.054-.198-.083-.403-.087-.608l.623-.844.345-.112.83.112.35.304.517 1.178.835 1.858 1.296 2.525.38.748.203.694.076.213h.131v-.122l.107-1.421.197-1.746.192-2.245.067-.634.313-.758.622-.41.487.234.4.57-.056.37-.239 1.544-.466 2.42-.303 1.618h.176l.203-.202.82-1.089 1.376-1.72.608-.682.709-.754.456-.358h.861l.634.941-.284.972-.886 1.122-.734.952-1.053 1.417-.659 1.133.061.092.157-.017 2.38-.505 1.285-.233 1.535-.263.694.324.075.33-.273.673-1.64.405-1.925.385-2.866.677-.035.025.04.05 1.291.123.552.03h1.351l2.517.186.658.435.394.533-.065.404-1.013.517-1.366-.325-3.19-.758-1.094-.274h-.15v.092l.91.89 1.672 1.508 2.09 1.942.107.482-.268.379-.284-.041-1.837-1.38-.71-.623-1.605-1.35h-.106v.142l.37.54 1.954 2.935.102.9-.143.294-.506.177-.557-.102-1.144-1.604-1.18-1.806-.952-1.619-.116.067-.561 6.045-.264.308-.607.233-.506-.384-.269-.622.268-1.23.324-1.603.263-1.275.238-1.584.142-.527-.01-.035-.117.015-1.194 1.64-1.817 2.454-1.438 1.538-.345.136-.598-.308.056-.552.334-.49 1.99-2.53 1.2-1.57.775-.906-.005-.131h-.045l-5.287 3.43-.941.12-.406-.379.051-.622.192-.202 1.59-1.094-.005.005z", fill: "#D97757" }) }));
16
+ }
17
+ export function TraeIcon(props) {
18
+ return (_jsx("svg", { viewBox: "0 0 28 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: _jsx("path", { d: "M28 20.9645H3.99933V16.9675H0V0.966675H28V20.9645ZM3.99933 16.9675H24.0007V4.96484H3.99933V16.9675ZM14.0012 10.9055L11.172 13.7335L8.344 10.9055L11.172 8.07751L14.0012 10.9055ZM22.001 10.9043L19.173 13.7312L16.3438 10.9043L19.173 8.07517L22.001 10.9043Z", fill: "#32F08C" }) }));
19
+ }
20
+ export function ClineIcon(props) {
21
+ return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [_jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M15.776 5.993c2.063 0 3.735 1.68 3.735 3.753v1.25l1.088 2.172a.998.998 0 0 1-.001.778l-1.086 2.148v1.251c0 2.07-1.672 3.752-3.735 3.752H8.305c-2.063 0-3.735-1.682-3.735-3.752v-1.251l-1.11-2.141a.997.997 0 0 1-.007-.7L4.57 10.996V9.745c0-2.072 1.672-3.752 3.735-3.752h7.471zM9.199 10.2a2.45 2.45 0 0 0-2.45 2.45v3.032a2.45 2.45 0 0 0 4.9 0v-3.032a2.45 2.45 0 0 0-2.45-2.45zm5.494 0a2.45 2.45 0 0 0-2.45 2.45v3.032a2.45 2.45 0 1 0 4.9 0v-3.032a2.45 2.45 0 0 0-2.45-2.45z", fill: "currentColor" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12.04 7.168a2.084 2.084 0 1 0 0-4.168 2.084 2.084 0 0 0 0 4.168z", fill: "currentColor" })] }));
22
+ }
23
+ export function WindsurfIcon(props) {
24
+ return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M20.835 6.753h-.171a2.401 2.401 0 0 0-2.4 2.4v3.53a1.37 1.37 0 0 1-1.32 1.332 1.34 1.34 0 0 1-1.104-.58l-3.729-5.373a1.619 1.619 0 0 0-1.358-.662c-.85 0-1.615.729-1.615 1.63v3.705a1.331 1.331 0 0 1-1.32 1.332 1.34 1.34 0 0 1-1.104-.58L3.306 6.823c-.094-.135-.306-.068-.306.098v3.213c0 .162.05.32.141.453l4.106 5.917c.243.35.6.609 1.014.703 1.032.237 1.984-.565 1.984-1.588v-3.701c0-.735.59-1.332 1.32-1.332h.002c.44 0 .851.216 1.104.58l3.729 5.372a1.64 1.64 0 0 0 1.358.662c.868 0 1.614-.73 1.614-1.63v-3.704c0-.735.59-1.331 1.32-1.331h.145a.165.165 0 0 0 .165-.166V6.919a.165.165 0 0 0-.165-.165v-.001z", fill: "currentColor" }) }));
25
+ }
26
+ export function RooIcon(props) {
27
+ return (_jsx("svg", { viewBox: "40 110 300 200", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: _jsx("path", { fill: "currentColor", d: "M278.25 193.336c-12.22 6.163-24.098 12.177-35.998 18.146-2.744 1.376-4.872 3.179-6.473 5.943-3.755 6.479-7.714 12.854-11.891 19.069-1.994 2.967-2.196 5.257-.412 8.545 9.288 17.12 18.265 34.408 27.353 51.635 3.33 6.312 2.42 7.041-4.707 7.87-8.285.962-12.844-2.433-17.25-9.161-11.489-17.546-23.78-34.569-35.887-51.705-2.136-3.024-3.153-6.047-2.97-9.74.344-6.981.342-13.98.592-20.967.098-2.725-.714-4.704-3.056-6.34-8.872-6.197-17.675-12.495-26.406-18.887-3.06-2.24-5.555-.953-8.284.512-12.173 6.53-24.384 12.99-36.572 19.492-1.478.789-2.923 1.583-4.674 1.553-19.133-.331-38.266-.61-57.372-1.819-2.48-.156-4.258-.73-4.289-3.616-.029-2.817 1.92-3.744 4.164-4.1 14.92-2.363 29.838-4.747 44.79-6.888 2.931-.42 5.343-1.258 7.65-3.116 26.979-21.727 54.044-43.347 80.981-65.125 2.77-2.239 5.09-2.756 8.554-1.699 26.884 8.208 53.848 16.156 80.757 24.283 3.093.934 4.673.22 5.45-2.935 1.072-4.358 2.36-8.663 3.596-12.979.493-1.717.588-3.857 2.809-4.32 2.338-.486 3.109 1.614 4.07 3.064 11.774 17.767 23.5 35.565 35.238 53.355a198.5 198.5 0 0 1 4.625 7.115c1.604 2.95.778 4.677-2.859 4.879-8.778.486-17.271.33-24.17-6.445-4.986-4.9-10.4-5.558-16.426-1.343-3.242 2.268-7.046 3.733-10.93 5.724z" }) }));
28
+ }
29
+ export function QoderIcon(props) {
30
+ return (_jsxs("svg", { viewBox: "0 0 360 360", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [_jsx("path", { fill: "#FEFEFE", d: "M206.873 51.045c8.46 4.648 17.035 9.057 25.626 13.455 10.315 5.281 20.574 10.63 30.713 16.245 4.593 2.537 9.211 5 13.89 7.376 1.026.524 2.053 1.047 3.11 1.587a93.4 93.4 0 0 1 5.853 2.973c15.257 7.76 27.992 20.035 33.934 36.358 3.245 11.228 4.588 21.721 4.518 33.398.005 1.556.013 3.112.021 4.668.018 4.167.012 8.334-.001 12.5-.01 4.386 0 8.772.006 13.158.007 7.35-.002 14.7-.021 22.05-.022 8.482-.015 16.963.007 25.445.018 7.314.021 14.628.01 21.942-.006 4.355-.007 8.71.006 13.065.012 4.087.003 8.174-.02 12.26a112.23 112.23 0 0 0 .005 4.495c.047 8.878.016 16.259-6.46 23.05-6.18 4.293-11.352 6.835-19.07 5.977-5.879-1.83-11.496-4.252-17.036-6.925-.67-.323-1.341-.646-2.032-.978a173 173 0 0 1-6.008-3.187c-3.346-1.668-3.346-1.668-7.002-2.079-3.168 1.456-6.252 3.057-9.336 4.68-21.147 10.827-44.935 16.47-68.375 10.575-14.403-4.748-27.962-13.067-41.185-20.369-8.46-4.648-17.036-9.058-25.628-13.455-10.361-5.306-20.67-10.677-30.854-16.318-4.387-2.425-8.792-4.785-13.267-7.046-18.433-9.321-33.036-19.831-40.378-40.137-3.534-11.38-4.613-21.82-4.566-33.668-.005-1.654-.012-3.307-.019-4.96-.01-3.442-.006-6.883.008-10.325a185 185 0 0 0-.02-10.445c-.2-25.234.891-47.703 12.594-70.603a92 92 0 0 1 .92-1.804c13.697-26.604 37.341-49.42 66.051-58.873 36.456-11.42 59.416-3.204 91.916 14.76z" }), _jsx("path", { fill: "#2ADB5C", d: "M301.695 102.855c13.583 12.64 21.36 28.625 22.678 47.212.14 4.115.17 8.214.145 12.331.006 1.556.013 3.112.022 4.668.018 4.168.011 8.335-.002 12.502-.01 4.385 0 8.77.006 13.156.008 7.35-.002 14.7-.021 22.05-.022 8.482-.015 16.964.007 25.446.018 7.314.021 14.628.01 21.942-.006 4.355-.007 8.71.006 13.065.012 4.087.003 8.174-.02 12.26.003 1.495-.001 2.99-.016 4.484.048 8.879.017 16.26-6.46 23.05-6.178 4.294-11.35 6.836-19.07 5.978-5.878-1.83-11.495-4.252-17.035-6.925-.671-.323-1.342-.646-2.033-.978a170 170 0 0 1-6.007-3.188c-3.346-1.667-3.346-1.667-7.002-2.078-3.168 1.455-6.252 3.056-9.336 4.679-21.01 10.752-45.564 16.99-68.804.363a21 21 0 0 1-2.61-1.086 61 61 0 0 1-2.329-1.091c-4.453-2.048-7.387-4.367-10.723-8.027a80 80 0 0 1-2.025-1.829c-12.744-11.742-18.56-27.311-20.976-44.17-.202-1.277-.403-2.555-.61-3.871-.337-3.735-.411-6.515.61-10.13a63 63 0 0 1 11.976-7.997c25.523-18.013 42.983-46.076 48.98-76.622 2.073-12.123 1.601-24.621 1.708-36.88.03-2.673.067-5.347.102-8.02.084-6.493.153-12.986.21-19.48 7.94-4.155 15.643-7.947 24.31-10.375.816-.247 1.63-.493 2.47-.746 21.549-6.275 47.484-4.03 64.917 10.97z" })] }));
31
+ }
32
+ export function CopilotIcon(props) {
33
+ return (_jsx("svg", { viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.038 4.47c1.101 1.133 1.564 2.68 1.758 4.848.518 0 1 .112 1.326.545l.608.803a1.6 1.6 0 0 1 .27.796v2.183c0 .283-.144.558-.378.724-2.756 1.967-6.158 3.548-9.622 3.548-3.834 0-7.671-2.152-9.623-3.548A.73.73 0 0 1 0 13.645v-2.183c0-.288.094-.566.268-.797l.608-.803c.327-.43.812-.545 1.328-.545l.024-.247c.208-2.039.675-3.51 1.735-4.6 2.05-2.117 4.758-2.376 5.955-2.387h.165c1.197.011 3.904.27 5.955 2.387zM10 8.077c-.236 0-.51.013-.801.041-.103.373-.254.709-.475.924-.875.852-1.93.983-2.495.983-.532 0-1.089-.108-1.543-.386-.43.137-.843.335-.87.829-.034.8-.052 1.602-.052 2.403v.4c-.002.469-.004.938-.01 1.408.001.272.169.525.424.637 2.068.919 4.025 1.381 5.825 1.381s3.757-.462 5.824-1.38a.73.73 0 0 0 .425-.638c.025-1.402.005-2.81-.063-4.211-.026-.497-.44-.692-.871-.83-.455.278-1.01.386-1.542.386-.564 0-1.618-.131-2.494-.983-.222-.215-.373-.551-.475-.924a10.9 10.9 0 0 0-.807-.04zm-2.103 3.344c.45 0 .813.355.813.791v1.46c0 .438-.364.792-.813.792a.83.83 0 0 1-.814-.791v-1.46c0-.438.364-.792.814-.792zm4.167 0c.449 0 .813.355.813.791v1.46c0 .438-.364.792-.813.792a.83.83 0 0 1-.814-.791v-1.46c0-.438.364-.792.814-.792zM6.362 4.239c-.875.085-1.613.365-1.988.755-.812.864-.637 3.056-.175 3.52.338.328.975.547 1.663.547h.075c.54-.011 1.487-.147 2.275-.925.362-.342.587-1.194.562-2.058-.025-.695-.225-1.267-.525-1.51-.325-.28-1.063-.402-1.888-.329zm5.388.328c-.3.244-.5.817-.525 1.51-.025.865.2 1.718.562 2.06.807.798 1.78.92 2.314.925h.037c.687 0 1.325-.22 1.662-.547.463-.463.638-2.655-.175-3.52-.375-.389-1.113-.67-1.988-.754-.825-.074-1.562.047-1.887.327zM10 6.346c-.2 0-.438.013-.7.037.025.133.037.28.05.438l-.001.133c0 .07-.004.14-.01.209.187-.018.354-.022.51-.023h.303c.156 0 .322.005.51.023-.013-.122-.013-.23-.013-.34.012-.159.025-.305.05-.44C10.467 6.36 10.234 6.348 10 6.346z", fill: "currentColor" }) }));
34
+ }
35
+ export function CodexIcon(props) {
36
+ return (_jsx("svg", { viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M17.958 8.337a5.2 5.2 0 0 0 .212-1.919 5.2 5.2 0 0 0-.61-1.831 5.02 5.02 0 0 0-5.04-2.218 4.9 4.9 0 0 0-1.582-1.136A4.9 4.9 0 0 0 9.026.834a5.01 5.01 0 0 0-4.465 3.2 4.9 4.9 0 0 0-1.786.765 4.9 4.9 0 0 0-1.311 1.44A4.96 4.96 0 0 0 .86 9.052c.103.975.518 1.89 1.183 2.612A4.95 4.95 0 0 0 1.83 13.58a4.98 4.98 0 0 0 .61 1.836 5.01 5.01 0 0 0 5.04 2.217 5.01 5.01 0 0 0 3.494 1.535 5.01 5.01 0 0 0 4.466-3.2 4.96 4.96 0 0 0 1.787-.765c.534-.382.98-.874 1.31-1.442a4.94 4.94 0 0 0 .605-2.803 4.94 4.94 0 0 0-1.183-2.622zM10.974 17.97a3.73 3.73 0 0 1-2.229-.795c.028-.015.077-.042.11-.062l3.7-2.108c.092-.052.17-.127.223-.218.053-.092.081-.196.08-.302V9.338l1.565.89c.016.01.027.025.03.043v4.262c-.003 1.895-1.558 3.432-3.479 3.436m-7.48-3.15a3.7 3.7 0 0 1-.416-2.305c.027.016.075.046.11.065l3.7 2.109c.187.108.42.108.608 0l4.517-2.574v1.782c0 .009-.003.018-.007.026-.004.009-.01.016-.017.022l-3.74 2.13c-1.666.947-3.793.383-4.756-1.258zm-.975-7.97a3.7 3.7 0 0 1 1.812-1.504v4.217c-.001.106.027.21.08.3.054.092.13.168.223.22l4.516 2.572-1.563.892a.03.03 0 0 1-.03 0l-3.74-2.132c-1.663-.95-2.233-3.048-1.275-4.691zm12.847 2.95-4.516-2.573 1.563-.89a.03.03 0 0 1 .03.005l3.74 2.13c1.666.95 2.237 3.052 1.275 4.694a3.77 3.77 0 0 1-1.811 1.506v-4.343a.7.7 0 0 0-.08-.301.7.7 0 0 0-.222-.219v.001zm1.556-2.31a4 4 0 0 0-.11-.065l-3.7-2.108a.61.61 0 0 0-.608 0L7.988 7.887V6.105a.05.05 0 0 1 .023-.047l3.74-2.13c1.666-.947 3.795-.383 4.755 1.261.406.694.554 1.508.416 2.298zM7.138 10.662l-1.564-.89a.03.03 0 0 1-.017-.041V5.467a3.5 3.5 0 0 1 4.96-3.196 3.7 3.7 0 0 1 .71.595l-.11.06-3.7 2.109a.65.65 0 0 0-.222.219.62.62 0 0 0-.08.301zm.85-1.807 2.012-1.146 2.012 1.146v2.292L10 12.292l-2.012-1.146V8.855z", fill: "currentColor" }) }));
37
+ }
38
+ export function OpenCodeIcon(props) {
39
+ return (_jsxs("svg", { viewBox: "0 0 240 300", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [_jsx("path", { d: "M180 240H60V120h120v120z", fill: "#7C7C7C" }), _jsx("path", { d: "M180 60H60v180h120V60zM240 300H0V0h240v300z", fill: "currentColor" })] }));
40
+ }
41
+ //# sourceMappingURL=coding-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-agents.js","sourceRoot":"","sources":["../../../src/v2/shell/coding-agents.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ReactNode } from "react";
2
+ export declare function DashboardShell({ pathname, children, }: {
3
+ pathname: string;
4
+ children: ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=dashboard-shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-shell.d.ts","sourceRoot":"","sources":["../../../src/v2/shell/dashboard-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AA4Ef,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAUA"}