spiracha 1.5.0 → 2.0.0

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 (365) hide show
  1. package/AGENTS.md +114 -205
  2. package/README.md +89 -269
  3. package/apps/ui/AGENTS.md +17 -7
  4. package/apps/ui/README.md +34 -8
  5. package/apps/ui/components.json +21 -0
  6. package/apps/ui/package.json +65 -0
  7. package/apps/ui/src/components/antigravity-conversations-table.tsx +206 -0
  8. package/apps/ui/src/components/antigravity-keychain-panel.tsx +76 -0
  9. package/apps/ui/src/components/antigravity-workspaces-table.tsx +63 -0
  10. package/apps/ui/src/components/app-shell.tsx +124 -0
  11. package/apps/ui/src/components/breadcrumbs.tsx +53 -0
  12. package/apps/ui/src/components/claude-code-sessions-table.tsx +114 -0
  13. package/apps/ui/src/components/claude-code-workspaces-table.tsx +55 -0
  14. package/apps/ui/src/components/cursor-threads-table.tsx +189 -0
  15. package/apps/ui/src/components/cursor-workspaces-table.tsx +140 -0
  16. package/apps/ui/src/components/data-table.tsx +241 -0
  17. package/apps/ui/src/components/delete-confirm-dialog.tsx +88 -0
  18. package/apps/ui/src/components/export-dialog.tsx +184 -0
  19. package/apps/ui/src/components/json-panel.tsx +17 -0
  20. package/apps/ui/src/components/kiro-sessions-table.tsx +112 -0
  21. package/apps/ui/src/components/kiro-workspaces-table.tsx +53 -0
  22. package/apps/ui/src/components/list-search-input.tsx +18 -0
  23. package/apps/ui/src/components/loading-panel.tsx +23 -0
  24. package/apps/ui/src/components/metadata-section.tsx +31 -0
  25. package/apps/ui/src/components/metric-card.tsx +19 -0
  26. package/apps/ui/src/components/opencode-sessions-table.tsx +128 -0
  27. package/apps/ui/src/components/opencode-workspaces-table.tsx +57 -0
  28. package/apps/ui/src/components/page-header.tsx +33 -0
  29. package/apps/ui/src/components/projects-loading-state.tsx +74 -0
  30. package/apps/ui/src/components/projects-table.tsx +108 -0
  31. package/apps/ui/src/components/qoder-sessions-table.tsx +112 -0
  32. package/apps/ui/src/components/qoder-workspaces-table.tsx +53 -0
  33. package/apps/ui/src/components/recent-threads-list.tsx +52 -0
  34. package/apps/ui/src/components/reload-error-panel.tsx +20 -0
  35. package/apps/ui/src/components/text-document-panel.tsx +19 -0
  36. package/apps/ui/src/components/theme-toggle.tsx +48 -0
  37. package/apps/ui/src/components/threads-table.tsx +202 -0
  38. package/apps/ui/src/components/transcript-view.tsx +552 -0
  39. package/apps/ui/src/components/ui/alert-dialog.tsx +160 -0
  40. package/apps/ui/src/components/ui/badge.tsx +45 -0
  41. package/apps/ui/src/components/ui/button.tsx +62 -0
  42. package/apps/ui/src/components/ui/checkbox.tsx +29 -0
  43. package/apps/ui/src/components/ui/dialog.tsx +137 -0
  44. package/apps/ui/src/components/ui/dropdown-menu.tsx +217 -0
  45. package/apps/ui/src/components/ui/input.tsx +21 -0
  46. package/apps/ui/src/components/ui/scroll-area.tsx +46 -0
  47. package/apps/ui/src/components/ui/select.tsx +163 -0
  48. package/apps/ui/src/components/ui/separator.tsx +28 -0
  49. package/apps/ui/src/components/ui/sheet.tsx +107 -0
  50. package/apps/ui/src/components/ui/skeleton.tsx +7 -0
  51. package/apps/ui/src/components/ui/table.tsx +76 -0
  52. package/apps/ui/src/components/ui/tabs.tsx +71 -0
  53. package/apps/ui/src/components/ui/tooltip.tsx +44 -0
  54. package/apps/ui/src/integrations/tanstack-query/devtools.tsx +6 -0
  55. package/apps/ui/src/integrations/tanstack-query/root-provider.tsx +10 -0
  56. package/apps/ui/src/lib/antigravity-conversation-state.ts +28 -0
  57. package/apps/ui/src/lib/antigravity-queries.ts +33 -0
  58. package/apps/ui/src/lib/antigravity-server.ts +128 -0
  59. package/apps/ui/src/lib/antigravity-transcript-events.ts +335 -0
  60. package/apps/ui/src/lib/claude-code-queries.ts +26 -0
  61. package/apps/ui/src/lib/claude-code-server.ts +75 -0
  62. package/apps/ui/src/lib/claude-code-transcript-events.ts +154 -0
  63. package/apps/ui/src/lib/codex-queries.ts +66 -0
  64. package/apps/ui/src/lib/codex-server.ts +209 -0
  65. package/apps/ui/src/lib/cursor-queries.ts +37 -0
  66. package/apps/ui/src/lib/cursor-server.ts +272 -0
  67. package/apps/ui/src/lib/cursor-transcript-events.ts +229 -0
  68. package/apps/ui/src/lib/download.ts +166 -0
  69. package/apps/ui/src/lib/formatters.ts +149 -0
  70. package/apps/ui/src/lib/kiro-queries.ts +22 -0
  71. package/apps/ui/src/lib/kiro-server.ts +73 -0
  72. package/apps/ui/src/lib/kiro-transcript-events.ts +113 -0
  73. package/apps/ui/src/lib/opencode-queries.ts +37 -0
  74. package/apps/ui/src/lib/opencode-server.ts +73 -0
  75. package/apps/ui/src/lib/opencode-transcript-events.ts +221 -0
  76. package/apps/ui/src/lib/package-metadata.ts +16 -0
  77. package/apps/ui/src/lib/path-utils.ts +13 -0
  78. package/apps/ui/src/lib/qoder-queries.ts +22 -0
  79. package/apps/ui/src/lib/qoder-server.ts +79 -0
  80. package/apps/ui/src/lib/qoder-transcript-events.ts +139 -0
  81. package/apps/ui/src/lib/route-search.ts +68 -0
  82. package/apps/ui/src/lib/settings-store.tsx +59 -0
  83. package/apps/ui/src/lib/source-session-export-server.ts +56 -0
  84. package/apps/ui/src/lib/text-filter.ts +22 -0
  85. package/apps/ui/src/lib/thread-id.ts +3 -0
  86. package/apps/ui/src/lib/thread-transcript-stats.ts +57 -0
  87. package/apps/ui/src/lib/utils.ts +7 -0
  88. package/apps/ui/src/routeTree.gen.ts +730 -0
  89. package/apps/ui/src/router.tsx +20 -0
  90. package/apps/ui/src/routes/$threadId.tsx +22 -0
  91. package/apps/ui/src/routes/__root.tsx +127 -0
  92. package/apps/ui/src/routes/analytics.tsx +143 -0
  93. package/apps/ui/src/routes/antigravity-conversations.$conversationId.tsx +438 -0
  94. package/apps/ui/src/routes/antigravity.$workspaceKey.tsx +127 -0
  95. package/apps/ui/src/routes/antigravity.index.tsx +51 -0
  96. package/apps/ui/src/routes/api.v1.conversation-query.ts +12 -0
  97. package/apps/ui/src/routes/api.v1.conversations.$source.$id.export.ts +12 -0
  98. package/apps/ui/src/routes/api.v1.conversations.$source.$id.ts +12 -0
  99. package/apps/ui/src/routes/api.v1.conversations.ts +12 -0
  100. package/apps/ui/src/routes/api.v1.resolve.ts +12 -0
  101. package/apps/ui/src/routes/api.v1.sources.ts +12 -0
  102. package/apps/ui/src/routes/claude-code-sessions.$sessionId.tsx +342 -0
  103. package/apps/ui/src/routes/claude-code.$workspaceKey.tsx +135 -0
  104. package/apps/ui/src/routes/claude-code.index.tsx +48 -0
  105. package/apps/ui/src/routes/codex.$project.tsx +390 -0
  106. package/apps/ui/src/routes/codex.index.tsx +116 -0
  107. package/apps/ui/src/routes/cursor-threads.$composerId.tsx +435 -0
  108. package/apps/ui/src/routes/cursor.$workspaceKey.tsx +416 -0
  109. package/apps/ui/src/routes/cursor.index.tsx +120 -0
  110. package/apps/ui/src/routes/index.tsx +124 -0
  111. package/apps/ui/src/routes/kiro-sessions.$sessionId.tsx +345 -0
  112. package/apps/ui/src/routes/kiro.$workspaceKey.tsx +136 -0
  113. package/apps/ui/src/routes/kiro.index.tsx +48 -0
  114. package/apps/ui/src/routes/opencode-sessions.$sessionId.tsx +334 -0
  115. package/apps/ui/src/routes/opencode.$workspaceKey.tsx +135 -0
  116. package/apps/ui/src/routes/opencode.index.tsx +48 -0
  117. package/apps/ui/src/routes/qoder-sessions.$sessionId.tsx +341 -0
  118. package/apps/ui/src/routes/qoder.$workspaceKey.tsx +139 -0
  119. package/apps/ui/src/routes/qoder.index.tsx +48 -0
  120. package/apps/ui/src/routes/settings.tsx +91 -0
  121. package/apps/ui/src/routes/threads.$threadId.tsx +619 -0
  122. package/apps/ui/src/styles.css +122 -0
  123. package/apps/ui/tsconfig.json +29 -0
  124. package/apps/ui/vite.config.ts +84 -0
  125. package/bin/spiracha.ts +32 -0
  126. package/package.json +46 -73
  127. package/src/client.ts +290 -0
  128. package/src/lib/antigravity-db.ts +213 -19
  129. package/src/lib/antigravity-exporter-types.ts +1 -0
  130. package/src/lib/codex-analytics.ts +1 -1
  131. package/src/lib/codex-browser-db.ts +410 -74
  132. package/src/lib/codex-browser-export.ts +6 -14
  133. package/src/lib/codex-browser-types.ts +1 -1
  134. package/src/lib/{codex-exporter-types.ts → codex-thread-types.ts} +2 -30
  135. package/src/lib/{codex-exporter-transcript.ts → codex-transcript-renderer.ts} +64 -28
  136. package/src/lib/conversation-api.ts +792 -0
  137. package/src/lib/conversation-data/adapter-helpers.ts +110 -0
  138. package/src/lib/conversation-data/antigravity-adapter.ts +148 -0
  139. package/src/lib/conversation-data/claude-code-adapter.ts +175 -0
  140. package/src/lib/conversation-data/codex-adapter.ts +245 -0
  141. package/src/lib/conversation-data/cursor-adapter.ts +171 -0
  142. package/src/lib/conversation-data/index.ts +311 -0
  143. package/src/lib/conversation-data/kiro-adapter.ts +140 -0
  144. package/src/lib/conversation-data/message-selector.ts +37 -0
  145. package/src/lib/conversation-data/opencode-adapter.ts +180 -0
  146. package/src/lib/conversation-data/path-match.ts +79 -0
  147. package/src/lib/conversation-data/qoder-adapter.ts +230 -0
  148. package/src/lib/conversation-data/types.ts +116 -0
  149. package/src/lib/cursor-db.ts +67 -21
  150. package/src/lib/cursor-exporter-types.ts +0 -19
  151. package/src/lib/qoder-acp-client.ts +268 -0
  152. package/src/lib/qoder-db.ts +1601 -0
  153. package/src/lib/qoder-exporter-types.ts +114 -0
  154. package/src/lib/qoder-transcript-phase.ts +41 -0
  155. package/src/lib/qoder-transcript.ts +112 -0
  156. package/apps/ui/dist/client/assets/_threadId-CAIeH5mq.js +0 -1
  157. package/apps/ui/dist/client/assets/analytics-DOy1b6Sh.js +0 -1
  158. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DqySVO2K.js +0 -7
  159. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-KAcXtNxI.js +0 -1
  160. package/apps/ui/dist/client/assets/antigravity-keychain-panel-B77qJz6f.js +0 -1
  161. package/apps/ui/dist/client/assets/antigravity._workspaceKey-B3NM6gRH.js +0 -1
  162. package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +0 -1
  163. package/apps/ui/dist/client/assets/antigravity.index-DP9JC2P9.js +0 -1
  164. package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +0 -1
  165. package/apps/ui/dist/client/assets/badge-C3i4OKs8.js +0 -1
  166. package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +0 -1
  167. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-8pQ55ci2.js +0 -1
  168. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-DVz5UmtU.js +0 -1
  169. package/apps/ui/dist/client/assets/claude-code._workspaceKey-BBKskSum.js +0 -1
  170. package/apps/ui/dist/client/assets/claude-code._workspaceKey-OkikMUFs.js +0 -1
  171. package/apps/ui/dist/client/assets/claude-code.index-Cwu76dbb.js +0 -1
  172. package/apps/ui/dist/client/assets/claude-code.index-D6eMd08t.js +0 -1
  173. package/apps/ui/dist/client/assets/createServerFn-B-KkwmHU.js +0 -3
  174. package/apps/ui/dist/client/assets/cursor-threads._composerId-CmBFclK8.js +0 -1
  175. package/apps/ui/dist/client/assets/cursor-threads._composerId-hBWlP1D-.js +0 -1
  176. package/apps/ui/dist/client/assets/cursor._workspaceKey-BFPkIRi-.js +0 -1
  177. package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +0 -1
  178. package/apps/ui/dist/client/assets/cursor.index-8y4o20kb.js +0 -2
  179. package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +0 -1
  180. package/apps/ui/dist/client/assets/data-table-Br78_dk3.js +0 -4
  181. package/apps/ui/dist/client/assets/delete-confirm-dialog-Bxs07u-j.js +0 -7
  182. package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +0 -1
  183. package/apps/ui/dist/client/assets/dist-BrJhN2A0.js +0 -5
  184. package/apps/ui/dist/client/assets/dist-Cmd3AIfD.js +0 -1
  185. package/apps/ui/dist/client/assets/dist-DvMS2965.js +0 -1
  186. package/apps/ui/dist/client/assets/download-Bf0QJKD3.js +0 -1
  187. package/apps/ui/dist/client/assets/dropdown-menu-D5cvPaZt.js +0 -1
  188. package/apps/ui/dist/client/assets/es2015-ad6040dw.js +0 -41
  189. package/apps/ui/dist/client/assets/export-dialog-Dr8d2MqD.js +0 -1
  190. package/apps/ui/dist/client/assets/formatters-BtqyrX_c.js +0 -1
  191. package/apps/ui/dist/client/assets/index-C-STgIH4.js +0 -166
  192. package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +0 -1
  193. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-CKgfJ7GR.js +0 -1
  194. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-zvIJHtQF.js +0 -1
  195. package/apps/ui/dist/client/assets/kiro._workspaceKey-DhVuJuZB.js +0 -1
  196. package/apps/ui/dist/client/assets/kiro._workspaceKey-QArsjkTY.js +0 -1
  197. package/apps/ui/dist/client/assets/kiro.index-C-fr4m7i.js +0 -1
  198. package/apps/ui/dist/client/assets/kiro.index-OYgAdtZd.js +0 -1
  199. package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +0 -1
  200. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-DLjiTst-.js +0 -1
  201. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-biBwrRbt.js +0 -8
  202. package/apps/ui/dist/client/assets/opencode._workspaceKey-C7OIzMOJ.js +0 -1
  203. package/apps/ui/dist/client/assets/opencode._workspaceKey-sBakX0oI.js +0 -1
  204. package/apps/ui/dist/client/assets/opencode.index-Bl_kNs9N.js +0 -1
  205. package/apps/ui/dist/client/assets/opencode.index-CN53bVmb.js +0 -1
  206. package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +0 -1
  207. package/apps/ui/dist/client/assets/preload-helper-B8fFrdxC.js +0 -1
  208. package/apps/ui/dist/client/assets/projects._project-D8WloxQN.js +0 -1
  209. package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +0 -1
  210. package/apps/ui/dist/client/assets/projects.index-5xRtuJdX.js +0 -3
  211. package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +0 -1
  212. package/apps/ui/dist/client/assets/react-dom-DL96Jor4.js +0 -1
  213. package/apps/ui/dist/client/assets/refresh-ccw-BgKjOiA6.js +0 -1
  214. package/apps/ui/dist/client/assets/reload-error-panel-AHqu0akK.js +0 -1
  215. package/apps/ui/dist/client/assets/routes-DnzF_9CX.js +0 -1
  216. package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +0 -1
  217. package/apps/ui/dist/client/assets/select-CYF6pF37.js +0 -1
  218. package/apps/ui/dist/client/assets/settings-Dx70jgP_.js +0 -1
  219. package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +0 -1
  220. package/apps/ui/dist/client/assets/styles-B7Zi9EFA.css +0 -1
  221. package/apps/ui/dist/client/assets/tabs-CmuhkT-c.js +0 -7
  222. package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +0 -2
  223. package/apps/ui/dist/client/assets/thread-transcript-stats-BUNz6u7F.js +0 -1
  224. package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +0 -1
  225. package/apps/ui/dist/client/assets/threads._threadId-BMRSFow3.js +0 -1
  226. package/apps/ui/dist/client/assets/useMutation-BSFult2i.js +0 -1
  227. package/apps/ui/dist/client/assets/useQuery-CjINKZf1.js +0 -1
  228. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CQ8Jjs3B.js +0 -387
  229. package/apps/ui/dist/server/assets/_threadId-B6SrBR9E.js +0 -6
  230. package/apps/ui/dist/server/assets/analytics-CYP_LT5Y.js +0 -16
  231. package/apps/ui/dist/server/assets/analytics-CtpOMVMO.js +0 -146
  232. package/apps/ui/dist/server/assets/antigravity-conversation-state-HgzS302O.js +0 -16
  233. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-BKOyL2T6.js +0 -613
  234. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-D426O-64.js +0 -11
  235. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-eS87Dx7g.js +0 -20
  236. package/apps/ui/dist/server/assets/antigravity-db-Bh8_U9uw.js +0 -580
  237. package/apps/ui/dist/server/assets/antigravity-keychain-DOiuHDwK.js +0 -126
  238. package/apps/ui/dist/server/assets/antigravity-keychain-panel-CC7FLmAK.js +0 -55
  239. package/apps/ui/dist/server/assets/antigravity-queries-CGrJO9Vr.js +0 -37
  240. package/apps/ui/dist/server/assets/antigravity-server-CHRjVFqN.js +0 -114
  241. package/apps/ui/dist/server/assets/antigravity._workspaceKey-3m_MzNFA.js +0 -11
  242. package/apps/ui/dist/server/assets/antigravity._workspaceKey-B0QeYUOh.js +0 -28
  243. package/apps/ui/dist/server/assets/antigravity._workspaceKey-C3kP-qyN.js +0 -210
  244. package/apps/ui/dist/server/assets/antigravity.index-CPCYkqCi.js +0 -104
  245. package/apps/ui/dist/server/assets/antigravity.index-DudTB3Tq.js +0 -11
  246. package/apps/ui/dist/server/assets/badge-EvdhKK_Z.js +0 -26
  247. package/apps/ui/dist/server/assets/button-CmTDnzOn.js +0 -46
  248. package/apps/ui/dist/server/assets/checkbox-C0hovF41.js +0 -19
  249. package/apps/ui/dist/server/assets/claude-code-db-Ik3VStKZ.js +0 -361
  250. package/apps/ui/dist/server/assets/claude-code-queries-Cgzi4K-e.js +0 -37
  251. package/apps/ui/dist/server/assets/claude-code-server-PfraClXS.js +0 -72
  252. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-C55oe6zj.js +0 -18
  253. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-D1RYYi3j.js +0 -473
  254. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-DSvPLEUL.js +0 -11
  255. package/apps/ui/dist/server/assets/claude-code-transcript-C-bxh3cS.js +0 -139
  256. package/apps/ui/dist/server/assets/claude-code-transcript-phase-DmUMc8VU.js +0 -10
  257. package/apps/ui/dist/server/assets/claude-code._workspaceKey-B5Xg_-tE.js +0 -28
  258. package/apps/ui/dist/server/assets/claude-code._workspaceKey-BPlzyXPa.js +0 -11
  259. package/apps/ui/dist/server/assets/claude-code._workspaceKey-DqDve2wl.js +0 -191
  260. package/apps/ui/dist/server/assets/claude-code.index-B7yYR7dD.js +0 -92
  261. package/apps/ui/dist/server/assets/claude-code.index-BUHThG1W.js +0 -11
  262. package/apps/ui/dist/server/assets/codex-queries-CtgeZ7VL.js +0 -99
  263. package/apps/ui/dist/server/assets/codex-server-CGXU4H8-.js +0 -2294
  264. package/apps/ui/dist/server/assets/concurrency-VXtYvlGh.js +0 -18
  265. package/apps/ui/dist/server/assets/createServerRpc-CF_DEwnm.js +0 -12
  266. package/apps/ui/dist/server/assets/createSsrRpc-C754NPki.js +0 -16
  267. package/apps/ui/dist/server/assets/cursor-db-CZnYy7aT.js +0 -830
  268. package/apps/ui/dist/server/assets/cursor-exporter-types-CI3goo-c.js +0 -34
  269. package/apps/ui/dist/server/assets/cursor-queries-NCIM0Nat.js +0 -67
  270. package/apps/ui/dist/server/assets/cursor-recovery-CXpO8KcD.js +0 -361
  271. package/apps/ui/dist/server/assets/cursor-server-DNu52A3K.js +0 -213
  272. package/apps/ui/dist/server/assets/cursor-threads._composerId-BB0Y_Mao.js +0 -11
  273. package/apps/ui/dist/server/assets/cursor-threads._composerId-Ckn6ItHI.js +0 -582
  274. package/apps/ui/dist/server/assets/cursor-threads._composerId-p9-ARAzc.js +0 -18
  275. package/apps/ui/dist/server/assets/cursor-transcript-B7tGnqtn.js +0 -125
  276. package/apps/ui/dist/server/assets/cursor._workspaceKey-CZuohIUL.js +0 -28
  277. package/apps/ui/dist/server/assets/cursor._workspaceKey-DPp5JSjy.js +0 -401
  278. package/apps/ui/dist/server/assets/cursor._workspaceKey-nmg3YIOQ.js +0 -11
  279. package/apps/ui/dist/server/assets/cursor.index-CcsX7DG0.js +0 -11
  280. package/apps/ui/dist/server/assets/cursor.index-DkWT-mxw.js +0 -189
  281. package/apps/ui/dist/server/assets/data-table-Cdct823O.js +0 -189
  282. package/apps/ui/dist/server/assets/delete-confirm-dialog-BcBNCxWB.js +0 -144
  283. package/apps/ui/dist/server/assets/download-DMmiy1xf.js +0 -92
  284. package/apps/ui/dist/server/assets/dropdown-menu-Dy_9t6TN.js +0 -36
  285. package/apps/ui/dist/server/assets/empty-plugin-adapters-B3lHh1La.js +0 -5
  286. package/apps/ui/dist/server/assets/export-dialog-D88ze9Gy.js +0 -240
  287. package/apps/ui/dist/server/assets/formatters-FJaGZgJk.js +0 -91
  288. package/apps/ui/dist/server/assets/kiro-db--fXrED_-.js +0 -552
  289. package/apps/ui/dist/server/assets/kiro-queries-CzNlM2ok.js +0 -37
  290. package/apps/ui/dist/server/assets/kiro-server-9WRxg2Au.js +0 -72
  291. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-CRY2c7YO.js +0 -11
  292. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-F1UlwxmR.js +0 -449
  293. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-bvTulT7C.js +0 -18
  294. package/apps/ui/dist/server/assets/kiro-transcript-DoekQBaH.js +0 -112
  295. package/apps/ui/dist/server/assets/kiro-transcript-phase-CJG40nQg.js +0 -27
  296. package/apps/ui/dist/server/assets/kiro._workspaceKey-BDe9sQwo.js +0 -11
  297. package/apps/ui/dist/server/assets/kiro._workspaceKey-CJsjgNwO.js +0 -28
  298. package/apps/ui/dist/server/assets/kiro._workspaceKey-D_-4Qb7y.js +0 -193
  299. package/apps/ui/dist/server/assets/kiro.index-C__-UROk.js +0 -11
  300. package/apps/ui/dist/server/assets/kiro.index-CmTbqeYj.js +0 -93
  301. package/apps/ui/dist/server/assets/loading-panel-BGFnWseS.js +0 -27
  302. package/apps/ui/dist/server/assets/metric-card-ByEeLu0r.js +0 -23
  303. package/apps/ui/dist/server/assets/model-label-B1NWGc65.js +0 -13
  304. package/apps/ui/dist/server/assets/opencode-db-BM7KjOzc.js +0 -397
  305. package/apps/ui/dist/server/assets/opencode-queries-BeNYXnQv.js +0 -50
  306. package/apps/ui/dist/server/assets/opencode-server-BpQ_kRze.js +0 -72
  307. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-CGQ-t0vD.js +0 -518
  308. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-D8Q7in_Z.js +0 -18
  309. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-DKOvi0lV.js +0 -11
  310. package/apps/ui/dist/server/assets/opencode-think-tags-CAoD-EcZ.js +0 -87
  311. package/apps/ui/dist/server/assets/opencode-transcript-BNTcGNym.js +0 -141
  312. package/apps/ui/dist/server/assets/opencode-transcript-phase-OqLkiQD0.js +0 -32
  313. package/apps/ui/dist/server/assets/opencode._workspaceKey-BdqcWHw1.js +0 -11
  314. package/apps/ui/dist/server/assets/opencode._workspaceKey-CfH96HTT.js +0 -28
  315. package/apps/ui/dist/server/assets/opencode._workspaceKey-DdbHPDrO.js +0 -207
  316. package/apps/ui/dist/server/assets/opencode.index-BbVzkJXP.js +0 -11
  317. package/apps/ui/dist/server/assets/opencode.index-Vh_Gq_1L.js +0 -93
  318. package/apps/ui/dist/server/assets/page-header-VNSaM3xd.js +0 -29
  319. package/apps/ui/dist/server/assets/path-transforms-DL2IwtYd.js +0 -31
  320. package/apps/ui/dist/server/assets/projects._project-4io5LO0E.js +0 -20
  321. package/apps/ui/dist/server/assets/projects._project-Bshqk7JA.js +0 -12
  322. package/apps/ui/dist/server/assets/projects._project-D6ZoGhJ8.js +0 -395
  323. package/apps/ui/dist/server/assets/projects.index-BLXOx5eL.js +0 -12
  324. package/apps/ui/dist/server/assets/projects.index-BkLiF2FF.js +0 -182
  325. package/apps/ui/dist/server/assets/projects.index-DesYXwfi.js +0 -14
  326. package/apps/ui/dist/server/assets/reload-error-panel-BJMxY3U1.js +0 -25
  327. package/apps/ui/dist/server/assets/route-search-ts4W9MJ9.js +0 -38
  328. package/apps/ui/dist/server/assets/router-Sac2DGk6.js +0 -518
  329. package/apps/ui/dist/server/assets/routes-Bsact1uB.js +0 -184
  330. package/apps/ui/dist/server/assets/routes-BzkJgq4W.js +0 -34
  331. package/apps/ui/dist/server/assets/select-GW76p-ld.js +0 -76
  332. package/apps/ui/dist/server/assets/settings-OayxIYQQ.js +0 -100
  333. package/apps/ui/dist/server/assets/settings-store-DpEJEQ7M.js +0 -52
  334. package/apps/ui/dist/server/assets/shared-DyhChtHf.js +0 -137
  335. package/apps/ui/dist/server/assets/source-session-export-server-DNutCawb.js +0 -38
  336. package/apps/ui/dist/server/assets/sqlite-error-LZDrnxdd.js +0 -13
  337. package/apps/ui/dist/server/assets/start-B_HFwkkk.js +0 -4
  338. package/apps/ui/dist/server/assets/tabs-DkaChNVg.js +0 -501
  339. package/apps/ui/dist/server/assets/text-filter-CGKxMCKt.js +0 -36
  340. package/apps/ui/dist/server/assets/thread-transcript-stats-Dh34mt2u.js +0 -45
  341. package/apps/ui/dist/server/assets/threads._threadId-BSSK4nkI.js +0 -26
  342. package/apps/ui/dist/server/assets/threads._threadId-BeXEc4Lo.js +0 -648
  343. package/apps/ui/dist/server/assets/threads._threadId-Ci0S4mKU.js +0 -18
  344. package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +0 -83
  345. package/apps/ui/dist/server/assets/utils-C_uf36nf.js +0 -8
  346. package/apps/ui/dist/server/server.js +0 -5895
  347. package/bin/codex-chats-claude.js +0 -5
  348. package/bin/codex-chats.js +0 -5
  349. package/bin/spiracha.js +0 -5
  350. package/src/export-chats.ts +0 -120
  351. package/src/export-claude.ts +0 -36
  352. package/src/export-cursor.ts +0 -244
  353. package/src/lib/claude-exporter.ts +0 -864
  354. package/src/lib/codex-exporter-cli.ts +0 -277
  355. package/src/lib/codex-exporter-db.ts +0 -319
  356. package/src/lib/codex-exporter.ts +0 -115
  357. package/src/lib/cursor-exporter.ts +0 -266
  358. package/src/lib/interactive-cli.ts +0 -433
  359. package/src/lib/native-open.ts +0 -54
  360. package/src/mcp-server.ts +0 -137
  361. package/src/spiracha.ts +0 -116
  362. package/src/ui-cli.ts +0 -310
  363. /package/apps/ui/{dist/client → public}/icon.svg +0 -0
  364. /package/apps/ui/{dist/client → public}/manifest.json +0 -0
  365. /package/apps/ui/{dist/client → public}/robots.txt +0 -0
@@ -1,613 +0,0 @@
1
- import { t as canExportAntigravityConversation } from "./antigravity-conversation-state-HgzS302O.js";
2
- import { t as Button } from "./button-CmTDnzOn.js";
3
- import { a as exportAntigravityArtifactsFn, o as exportAntigravityConversationFn, r as antigravityDecryptionQueryOptions, t as antigravityConversationDetailQueryOptions } from "./antigravity-queries-CGrJO9Vr.js";
4
- import { t as Route } from "./antigravity-conversations._conversationId-eS87Dx7g.js";
5
- import { t as Checkbox } from "./checkbox-C0hovF41.js";
6
- import { t as MetricCard } from "./metric-card-ByEeLu0r.js";
7
- import { t as PageHeader } from "./page-header-VNSaM3xd.js";
8
- import { n as formatBytes, o as formatNumber, r as formatDateTime } from "./formatters-FJaGZgJk.js";
9
- import { t as AntigravityKeychainPanel } from "./antigravity-keychain-panel-CC7FLmAK.js";
10
- import { a as TranscriptView, c as Breadcrumbs, i as TabsTrigger, n as TabsContent, o as MetadataSection, r as TabsList, s as JsonPanel, t as Tabs } from "./tabs-DkaChNVg.js";
11
- import { t as downloadTextFile } from "./download-DMmiy1xf.js";
12
- import { useMemo, useState } from "react";
13
- import { Link } from "@tanstack/react-router";
14
- import { jsx, jsxs } from "react/jsx-runtime";
15
- import { useMutation, useSuspenseQuery } from "@tanstack/react-query";
16
- import { Download, ScrollText } from "lucide-react";
17
- //#region src/components/text-document-panel.tsx
18
- var TextDocumentPanel = ({ content, description, title }) => {
19
- return /* @__PURE__ */ jsxs("section", {
20
- className: "rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]",
21
- children: [
22
- /* @__PURE__ */ jsx("h3", {
23
- className: "font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]",
24
- children: title
25
- }),
26
- description ? /* @__PURE__ */ jsx("p", {
27
- className: "mt-2 text-[var(--muted-foreground)] text-sm",
28
- children: description
29
- }) : null,
30
- /* @__PURE__ */ jsx("pre", {
31
- className: "mt-4 overflow-x-auto whitespace-pre-wrap rounded-2xl border border-[var(--border)] bg-[var(--code-background)] p-4 text-sm leading-6 [overflow-wrap:anywhere]",
32
- children: content
33
- })
34
- ]
35
- });
36
- };
37
- //#endregion
38
- //#region src/lib/antigravity-transcript-events.ts
39
- var HEADING_PATTERN = /^##\s+(.+)$/u;
40
- var TIMESTAMP_PATTERN = /^_Timestamp:\s*(.+?)_$/u;
41
- var TOOL_HEADING_PATTERN = /^tool:\s*(.+)$/iu;
42
- var splitMarkdownSections = (markdown) => {
43
- if (!markdown?.trim()) return [];
44
- const sections = [];
45
- const lines = markdown.split(/\r?\n/u);
46
- let currentHeading = null;
47
- let currentLines = [];
48
- const flush = () => {
49
- if (!currentHeading) return;
50
- sections.push({
51
- body: currentLines.join("\n").trim(),
52
- heading: currentHeading,
53
- sequence: sections.length * 10
54
- });
55
- };
56
- for (const line of lines) {
57
- const heading = HEADING_PATTERN.exec(line);
58
- if (heading) {
59
- flush();
60
- currentHeading = heading[1].trim();
61
- currentLines = [];
62
- continue;
63
- }
64
- if (currentHeading) currentLines.push(line);
65
- }
66
- flush();
67
- return sections;
68
- };
69
- var extractTimestamp = (body) => {
70
- const lines = body.split(/\r?\n/u);
71
- const timestamp = TIMESTAMP_PATTERN.exec(lines[0]?.trim() ?? "")?.[1]?.trim() ?? null;
72
- return {
73
- body: timestamp ? lines.slice(1).join("\n").trim() : body.trim(),
74
- timestamp
75
- };
76
- };
77
- var sectionBodyBeforeSubheading = (body) => {
78
- return body.split(/^###\s+/mu)[0]?.trim() ?? "";
79
- };
80
- var extractSubheadingBlock = (body, title) => {
81
- const lines = body.split(/\r?\n/u);
82
- const startIndex = lines.findIndex((line) => line.trim().toLowerCase() === `### ${title.toLowerCase()}`);
83
- if (startIndex === -1) return "";
84
- const nextSubheadingIndex = lines.findIndex((line, index) => index > startIndex && line.startsWith("### "));
85
- return lines.slice(startIndex + 1, nextSubheadingIndex === -1 ? void 0 : nextSubheadingIndex).join("\n").trim();
86
- };
87
- var parseToolCalls = (body) => {
88
- const toolCallsBlock = extractSubheadingBlock(body, "Tool Calls");
89
- if (!toolCallsBlock) return [];
90
- const calls = [];
91
- for (const match of toolCallsBlock.matchAll(/-\s+`([^`]+)`(?:\s*\n+```json\s*\n([\s\S]*?)\n```)?/gu)) calls.push({
92
- argumentsText: match[2]?.trim() ?? null,
93
- name: match[1]?.trim() || "unknown"
94
- });
95
- return calls;
96
- };
97
- var parseAssistantSection = (body) => {
98
- const content = sectionBodyBeforeSubheading(body);
99
- const [thinking, ...remainingThinkingBlock] = extractSubheadingBlock(body, "Thinking").split(/\n{2,}/u).map((entry) => entry.trim());
100
- return {
101
- content: content || remainingThinkingBlock.join("\n\n").trim(),
102
- thinking: thinking ?? "",
103
- toolCalls: parseToolCalls(body)
104
- };
105
- };
106
- var buildRaw = (section, extra = {}) => ({
107
- heading: section.heading,
108
- source: "antigravity_markdown",
109
- ...extra
110
- });
111
- var buildMessageEvent = (section, role, text, timestamp, phase, sequenceOffset = 0) => ({
112
- isHiddenByDefault: role !== "assistant" && role !== "user",
113
- kind: "message",
114
- memoryCitation: null,
115
- model: null,
116
- phase,
117
- raw: buildRaw(section, { role }),
118
- role,
119
- sequence: section.sequence + sequenceOffset,
120
- text,
121
- timestamp,
122
- variant: role === "user" ? "user_message" : role === "assistant" ? "agent_message" : "message"
123
- });
124
- var buildToolCallEvent = (section, toolCall, timestamp, sequenceOffset) => ({
125
- argumentsParseFailed: false,
126
- argumentsText: toolCall.argumentsText,
127
- callId: null,
128
- command: [toolCall.name, toolCall.argumentsText].filter(Boolean).join("\n"),
129
- kind: "tool_call",
130
- name: toolCall.name,
131
- raw: buildRaw(section, {
132
- argumentsText: toolCall.argumentsText,
133
- name: toolCall.name
134
- }),
135
- sequence: section.sequence + sequenceOffset,
136
- timestamp,
137
- workdir: null
138
- });
139
- var buildToolOutputEvent = (section, toolName, outputText, timestamp) => ({
140
- callId: null,
141
- exitCode: null,
142
- kind: "tool_output",
143
- outputText,
144
- raw: buildRaw(section, { name: toolName }),
145
- sequence: section.sequence,
146
- summary: outputText,
147
- timestamp,
148
- wallTime: null
149
- });
150
- var getFinalAssistantSectionSequences = (sections) => {
151
- const finalAssistantSectionSequences = /* @__PURE__ */ new Set();
152
- let currentAssistantContentSequence = null;
153
- const flushAssistantRun = () => {
154
- if (currentAssistantContentSequence !== null) finalAssistantSectionSequences.add(currentAssistantContentSequence);
155
- currentAssistantContentSequence = null;
156
- };
157
- for (const section of sections) {
158
- const heading = section.heading.toLowerCase();
159
- if (heading === "user") {
160
- flushAssistantRun();
161
- continue;
162
- }
163
- if (heading !== "assistant") continue;
164
- const { body } = extractTimestamp(section.body);
165
- const parsed = parseAssistantSection(body);
166
- if (parsed.toolCalls.length > 0) currentAssistantContentSequence = null;
167
- else if (parsed.content) currentAssistantContentSequence = section.sequence;
168
- }
169
- flushAssistantRun();
170
- return finalAssistantSectionSequences;
171
- };
172
- var textSectionToEvents = (section, role, body, timestamp) => {
173
- return body ? [buildMessageEvent(section, role, body, timestamp, null)] : [];
174
- };
175
- var toolOutputSectionToEvents = (section, toolName, body, timestamp) => {
176
- return body ? [buildToolOutputEvent(section, toolName, body, timestamp)] : [];
177
- };
178
- var assistantSectionToEvents = (section, body, timestamp, finalAssistantSectionSequences) => {
179
- const parsed = parseAssistantSection(body);
180
- const events = [];
181
- if (parsed.thinking) events.push(buildMessageEvent(section, "assistant", parsed.thinking, timestamp, "commentary"));
182
- if (parsed.content) {
183
- const phase = finalAssistantSectionSequences.has(section.sequence) ? "final_answer" : "commentary";
184
- events.push(buildMessageEvent(section, "assistant", parsed.content, timestamp, phase, 1));
185
- }
186
- parsed.toolCalls.forEach((toolCall, index) => {
187
- events.push(buildToolCallEvent(section, toolCall, timestamp, 2 + index));
188
- });
189
- return events;
190
- };
191
- var sectionToEvents = (section, finalAssistantSectionSequences) => {
192
- const { body, timestamp } = extractTimestamp(section.body);
193
- const heading = section.heading.toLowerCase();
194
- const toolHeading = TOOL_HEADING_PATTERN.exec(section.heading);
195
- if (heading === "user") return textSectionToEvents(section, "user", body, timestamp);
196
- if (toolHeading) return toolOutputSectionToEvents(section, toolHeading[1]?.trim() || "unknown", body, timestamp);
197
- if (heading === "assistant") return assistantSectionToEvents(section, body, timestamp, finalAssistantSectionSequences);
198
- if (heading === "system") return textSectionToEvents(section, "system", body, timestamp);
199
- return textSectionToEvents(section, "event", body, timestamp);
200
- };
201
- var antigravityMarkdownToThreadEvents = (markdown) => {
202
- const sections = splitMarkdownSections(markdown);
203
- const finalAssistantSectionSequences = getFinalAssistantSectionSequences(sections);
204
- return sections.flatMap((section) => sectionToEvents(section, finalAssistantSectionSequences));
205
- };
206
- var updateMessageStats = (stats, event) => {
207
- stats.messageCount += 1;
208
- if (event.role === "assistant") stats.assistantMessageCount += 1;
209
- if (event.role === "user") stats.userMessageCount += 1;
210
- if (event.phase === "commentary") stats.commentaryCount += 1;
211
- if (event.phase === "final_answer") stats.finalAnswerCount += 1;
212
- };
213
- var getAntigravityThreadTranscriptStats = (events) => {
214
- const stats = {
215
- assistantMessageCount: 0,
216
- commentaryCount: 0,
217
- execCommandCount: 0,
218
- finalAnswerCount: 0,
219
- messageCount: 0,
220
- toolCallCount: 0,
221
- toolOutputCount: 0,
222
- userMessageCount: 0,
223
- webSearchEventCount: 0
224
- };
225
- for (const event of events) {
226
- if (event.kind === "message") updateMessageStats(stats, event);
227
- if (event.kind === "tool_call") stats.toolCallCount += 1;
228
- if (event.kind === "tool_output") stats.toolOutputCount += 1;
229
- }
230
- return stats;
231
- };
232
- //#endregion
233
- //#region src/routes/antigravity-conversations.$conversationId.tsx?tsr-split=component
234
- var buildConversationMetadata = (detail) => {
235
- return [
236
- {
237
- label: "Conversation ID",
238
- value: /* @__PURE__ */ jsx("span", {
239
- "data-mono": "true",
240
- children: detail.conversation.conversationId
241
- })
242
- },
243
- {
244
- label: "Workspace",
245
- value: /* @__PURE__ */ jsx(Link, {
246
- className: "text-[var(--accent)]",
247
- params: { workspaceKey: detail.conversation.workspaceKey },
248
- to: "/antigravity/$workspaceKey",
249
- children: detail.conversation.workspaceLabel
250
- })
251
- },
252
- {
253
- label: "Created",
254
- value: /* @__PURE__ */ jsx("span", {
255
- suppressHydrationWarning: true,
256
- children: formatDateTime(detail.conversation.createdAtMs)
257
- })
258
- },
259
- {
260
- label: "Updated",
261
- value: /* @__PURE__ */ jsx("span", {
262
- suppressHydrationWarning: true,
263
- children: formatDateTime(detail.conversation.lastUpdatedAtMs)
264
- })
265
- },
266
- {
267
- label: "Transcript source",
268
- value: detail.conversation.transcriptSource ?? "n/a"
269
- },
270
- {
271
- label: "Conversation path",
272
- value: detail.conversation.conversationPath ?? "n/a"
273
- },
274
- {
275
- label: "Transcript path",
276
- value: detail.conversation.transcriptPath ?? "n/a"
277
- },
278
- {
279
- label: "Summary path",
280
- value: detail.conversation.summaryPath ?? "n/a"
281
- },
282
- {
283
- label: "Source root",
284
- value: detail.conversation.sourceRoot ?? "n/a"
285
- }
286
- ];
287
- };
288
- var buildTranscriptStatsItems = (detail, events) => {
289
- if (detail.transcriptLocked) return [{
290
- label: "Transcript load",
291
- value: "Transcript is locked until Antigravity Keychain access is enabled."
292
- }];
293
- if (!detail.conversationMarkdown) return [{
294
- label: "Transcript load",
295
- value: "No renderable transcript content was found."
296
- }];
297
- const stats = getAntigravityThreadTranscriptStats(events);
298
- return [
299
- {
300
- label: "Event kinds",
301
- value: [...new Set(events.map((event) => event.kind))].join(", ") || "n/a"
302
- },
303
- {
304
- label: "Messages",
305
- value: formatNumber(stats.messageCount)
306
- },
307
- {
308
- label: "User messages",
309
- value: formatNumber(stats.userMessageCount)
310
- },
311
- {
312
- label: "Assistant messages",
313
- value: formatNumber(stats.assistantMessageCount)
314
- },
315
- {
316
- label: "Commentary updates",
317
- value: formatNumber(stats.commentaryCount)
318
- },
319
- {
320
- label: "Final answers",
321
- value: formatNumber(stats.finalAnswerCount)
322
- },
323
- {
324
- label: "Tool calls",
325
- value: formatNumber(stats.toolCallCount)
326
- },
327
- {
328
- label: "Tool outputs",
329
- value: formatNumber(stats.toolOutputCount)
330
- }
331
- ];
332
- };
333
- function AntigravityConversationHeaderActions({ canExportArtifacts, canExportConversation, exportArtifactsPending, exportConversationPending, showConversationExport, onExportArtifacts, onExportConversation }) {
334
- return /* @__PURE__ */ jsxs("div", {
335
- className: "flex flex-wrap gap-2",
336
- children: [showConversationExport ? /* @__PURE__ */ jsxs(Button, {
337
- className: "rounded-full",
338
- disabled: !canExportConversation || exportConversationPending,
339
- type: "button",
340
- variant: "outline",
341
- onClick: onExportConversation,
342
- children: [/* @__PURE__ */ jsx(Download, { className: "mr-2 size-4" }), "Export conversation"]
343
- }) : null, canExportArtifacts ? /* @__PURE__ */ jsxs(Button, {
344
- className: "rounded-full",
345
- disabled: exportArtifactsPending,
346
- type: "button",
347
- variant: "outline",
348
- onClick: onExportArtifacts,
349
- children: [/* @__PURE__ */ jsx(ScrollText, { className: "mr-2 size-4" }), "Export artifacts"]
350
- }) : null]
351
- });
352
- }
353
- var AntigravityTranscriptControls = ({ rawJsonDisabled = false, showCommentary, showExtraEvents, showRawJson, showToolCalls, showUserMessages, onShowCommentaryChange, onShowExtraEventsChange, onShowRawJsonChange, onShowToolCallsChange, onShowUserMessagesChange }) => {
354
- return /* @__PURE__ */ jsxs("div", {
355
- className: "flex flex-wrap gap-4 rounded-xl border border-[var(--border)] bg-[var(--panel)] px-4 py-3 shadow-[var(--panel-shadow)]",
356
- children: [
357
- /* @__PURE__ */ jsxs("div", {
358
- className: "flex items-center gap-2 text-sm",
359
- children: [/* @__PURE__ */ jsx(Checkbox, {
360
- checked: showToolCalls,
361
- id: "antigravity-transcript-show-tool-calls",
362
- onCheckedChange: (checked) => onShowToolCallsChange(checked === true)
363
- }), /* @__PURE__ */ jsx("label", {
364
- htmlFor: "antigravity-transcript-show-tool-calls",
365
- children: "Show tool calls"
366
- })]
367
- }),
368
- /* @__PURE__ */ jsxs("div", {
369
- className: "flex items-center gap-2 text-sm",
370
- children: [/* @__PURE__ */ jsx(Checkbox, {
371
- checked: showCommentary,
372
- id: "antigravity-transcript-show-commentary",
373
- onCheckedChange: (checked) => onShowCommentaryChange(checked === true)
374
- }), /* @__PURE__ */ jsx("label", {
375
- htmlFor: "antigravity-transcript-show-commentary",
376
- children: "Show commentary"
377
- })]
378
- }),
379
- /* @__PURE__ */ jsxs("div", {
380
- className: "flex items-center gap-2 text-sm",
381
- children: [/* @__PURE__ */ jsx(Checkbox, {
382
- checked: showExtraEvents,
383
- id: "antigravity-transcript-show-extra-events",
384
- onCheckedChange: (checked) => onShowExtraEventsChange(checked === true)
385
- }), /* @__PURE__ */ jsx("label", {
386
- htmlFor: "antigravity-transcript-show-extra-events",
387
- children: "Show extra events"
388
- })]
389
- }),
390
- /* @__PURE__ */ jsxs("div", {
391
- className: "flex items-center gap-2 text-sm",
392
- children: [/* @__PURE__ */ jsx(Checkbox, {
393
- checked: showRawJson,
394
- disabled: rawJsonDisabled,
395
- id: "antigravity-transcript-show-raw-json",
396
- onCheckedChange: (checked) => onShowRawJsonChange(checked === true)
397
- }), /* @__PURE__ */ jsx("label", {
398
- htmlFor: "antigravity-transcript-show-raw-json",
399
- children: "Raw JSON"
400
- })]
401
- }),
402
- /* @__PURE__ */ jsxs("div", {
403
- className: "flex items-center gap-2 text-sm",
404
- children: [/* @__PURE__ */ jsx(Checkbox, {
405
- checked: showUserMessages,
406
- id: "antigravity-transcript-show-user-messages",
407
- onCheckedChange: (checked) => onShowUserMessagesChange(checked === true)
408
- }), /* @__PURE__ */ jsx("label", {
409
- htmlFor: "antigravity-transcript-show-user-messages",
410
- children: "User"
411
- })]
412
- })
413
- ]
414
- });
415
- };
416
- function EmptyAntigravityTranscript({ detail }) {
417
- return /* @__PURE__ */ jsxs("section", {
418
- className: "rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]",
419
- children: [/* @__PURE__ */ jsx("h3", {
420
- className: "font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]",
421
- children: "Transcript"
422
- }), /* @__PURE__ */ jsx("p", {
423
- className: "mt-4 text-[var(--muted-foreground)] text-sm",
424
- children: detail.transcriptLocked ? "Unlock Antigravity transcript export to inspect the rendered conversation content here." : detail.artifactsMarkdown ? "No transcript preview is available for this conversation. Generated artifacts are available in the Raw tab." : "No transcript preview is available for this conversation."
425
- })]
426
- });
427
- }
428
- function AntigravityRawPanels({ detail, events }) {
429
- return /* @__PURE__ */ jsxs("div", {
430
- className: "space-y-4",
431
- children: [
432
- /* @__PURE__ */ jsx(JsonPanel, {
433
- title: "Conversation summary",
434
- value: detail.conversation
435
- }),
436
- /* @__PURE__ */ jsx(JsonPanel, {
437
- title: "Transcript events",
438
- value: events
439
- }),
440
- detail.conversationMarkdown ? /* @__PURE__ */ jsx(TextDocumentPanel, {
441
- content: detail.conversationMarkdown,
442
- description: "Rendered transcript Markdown used for export.",
443
- title: "Transcript Markdown"
444
- }) : null,
445
- detail.artifactsMarkdown ? /* @__PURE__ */ jsx(TextDocumentPanel, {
446
- content: detail.artifactsMarkdown,
447
- description: "Generated artifacts.",
448
- title: "Artifacts"
449
- }) : null
450
- ]
451
- });
452
- }
453
- function AntigravityConversationDetailPage() {
454
- const decryptionState = useSuspenseQuery(antigravityDecryptionQueryOptions()).data;
455
- const detail = useSuspenseQuery(antigravityConversationDetailQueryOptions(Route.useParams().conversationId)).data;
456
- const [showToolCalls, setShowToolCalls] = useState(false);
457
- const [showCommentary, setShowCommentary] = useState(false);
458
- const [showExtraEvents, setShowExtraEvents] = useState(false);
459
- const [showRawJson, setShowRawJson] = useState(false);
460
- const [showUserMessages, setShowUserMessages] = useState(true);
461
- const transcriptEvents = useMemo(() => antigravityMarkdownToThreadEvents(detail.conversationMarkdown), [detail.conversationMarkdown]);
462
- const canExportConversation = canExportAntigravityConversation(detail.conversation, Boolean(decryptionState?.isUnlocked));
463
- const canExportArtifacts = detail.artifactsMarkdown !== null;
464
- const showConversationExport = canExportConversation || detail.transcriptLocked;
465
- const exportConversationMutation = useMutation({
466
- mutationFn: () => exportAntigravityConversationFn({ data: { conversationId: detail.conversation.conversationId } }),
467
- onSuccess: (result) => {
468
- downloadTextFile(result.filename, result.content, "text/markdown; charset=utf-8");
469
- }
470
- });
471
- const exportArtifactsMutation = useMutation({
472
- mutationFn: () => exportAntigravityArtifactsFn({ data: { conversationId: detail.conversation.conversationId } }),
473
- onSuccess: (result) => {
474
- downloadTextFile(result.filename, result.content, "text/markdown; charset=utf-8");
475
- }
476
- });
477
- return /* @__PURE__ */ jsxs("div", {
478
- className: "space-y-6",
479
- children: [
480
- /* @__PURE__ */ jsx(PageHeader, {
481
- actions: /* @__PURE__ */ jsx(AntigravityConversationHeaderActions, {
482
- canExportArtifacts,
483
- canExportConversation,
484
- exportArtifactsPending: exportArtifactsMutation.isPending,
485
- exportConversationPending: exportConversationMutation.isPending,
486
- showConversationExport,
487
- onExportArtifacts: () => exportArtifactsMutation.mutate(),
488
- onExportConversation: () => exportConversationMutation.mutate()
489
- }),
490
- breadcrumb: /* @__PURE__ */ jsx(Breadcrumbs, { items: [
491
- {
492
- label: "Antigravity",
493
- to: "/antigravity"
494
- },
495
- {
496
- label: detail.conversation.workspaceLabel,
497
- params: { workspaceKey: detail.conversation.workspaceKey },
498
- to: "/antigravity/$workspaceKey"
499
- },
500
- { label: detail.conversation.title }
501
- ] }),
502
- eyebrow: "Antigravity conversation",
503
- subtitle: "Conversation detail for the selected Antigravity workspace session.",
504
- title: detail.conversation.title
505
- }),
506
- /* @__PURE__ */ jsx(AntigravityKeychainPanel, {}),
507
- /* @__PURE__ */ jsxs("div", {
508
- className: "grid gap-3 md:grid-cols-2 xl:grid-cols-4",
509
- children: [
510
- /* @__PURE__ */ jsx(MetricCard, {
511
- label: "Transcript entries",
512
- value: formatNumber(detail.conversation.transcriptEntryCount)
513
- }),
514
- /* @__PURE__ */ jsx(MetricCard, {
515
- label: "Artifacts",
516
- value: formatNumber(detail.conversation.artifactCount)
517
- }),
518
- /* @__PURE__ */ jsx(MetricCard, {
519
- label: "Size",
520
- value: formatBytes(detail.conversation.conversationBytes)
521
- }),
522
- /* @__PURE__ */ jsx(MetricCard, {
523
- helper: detail.conversation.transcriptSource ?? "summary",
524
- label: "Indexed items",
525
- value: formatNumber(detail.conversation.indexedItemCount ?? 0)
526
- })
527
- ]
528
- }),
529
- /* @__PURE__ */ jsxs(Tabs, {
530
- className: "space-y-4",
531
- defaultValue: "transcript",
532
- children: [
533
- /* @__PURE__ */ jsxs(TabsList, {
534
- className: "grid w-fit min-w-[24rem] grid-cols-3 rounded-full border border-[var(--border)] bg-[var(--panel)] p-1",
535
- children: [
536
- /* @__PURE__ */ jsx(TabsTrigger, {
537
- className: "rounded-full px-5 text-sm",
538
- value: "transcript",
539
- children: "Transcript"
540
- }),
541
- /* @__PURE__ */ jsx(TabsTrigger, {
542
- className: "rounded-full px-5 text-sm",
543
- value: "metadata",
544
- children: "Metadata"
545
- }),
546
- /* @__PURE__ */ jsx(TabsTrigger, {
547
- className: "rounded-full px-5 text-sm",
548
- value: "raw",
549
- children: "Raw"
550
- })
551
- ]
552
- }),
553
- /* @__PURE__ */ jsxs(TabsContent, {
554
- className: "space-y-3",
555
- value: "transcript",
556
- children: [/* @__PURE__ */ jsx(AntigravityTranscriptControls, {
557
- rawJsonDisabled: transcriptEvents.length === 0,
558
- showCommentary,
559
- showExtraEvents,
560
- showRawJson,
561
- showToolCalls,
562
- showUserMessages,
563
- onShowCommentaryChange: setShowCommentary,
564
- onShowExtraEventsChange: setShowExtraEvents,
565
- onShowRawJsonChange: setShowRawJson,
566
- onShowToolCallsChange: setShowToolCalls,
567
- onShowUserMessagesChange: setShowUserMessages
568
- }), transcriptEvents.length > 0 ? /* @__PURE__ */ jsx(TranscriptView, {
569
- assistantModel: null,
570
- events: transcriptEvents,
571
- projectPath: detail.conversation.workspaceFolder,
572
- showCommentary,
573
- showExtraEvents,
574
- showRawJson,
575
- showToolCalls,
576
- showUserMessages
577
- }) : /* @__PURE__ */ jsx(EmptyAntigravityTranscript, { detail })]
578
- }),
579
- /* @__PURE__ */ jsx(TabsContent, {
580
- value: "metadata",
581
- children: /* @__PURE__ */ jsxs("div", {
582
- className: "grid gap-4 xl:grid-cols-[0.95fr_1.05fr]",
583
- children: [/* @__PURE__ */ jsx(MetadataSection, {
584
- items: buildConversationMetadata(detail),
585
- title: "Conversation metadata"
586
- }), /* @__PURE__ */ jsx(MetadataSection, {
587
- items: buildTranscriptStatsItems(detail, transcriptEvents),
588
- title: "Transcript stats"
589
- })]
590
- })
591
- }),
592
- /* @__PURE__ */ jsx(TabsContent, {
593
- value: "raw",
594
- children: /* @__PURE__ */ jsx(AntigravityRawPanels, {
595
- detail,
596
- events: transcriptEvents
597
- })
598
- })
599
- ]
600
- }),
601
- exportConversationMutation.isError ? /* @__PURE__ */ jsx("p", {
602
- className: "text-[var(--destructive)] text-sm",
603
- children: exportConversationMutation.error instanceof Error ? exportConversationMutation.error.message : "Conversation export failed"
604
- }) : null,
605
- exportArtifactsMutation.isError ? /* @__PURE__ */ jsx("p", {
606
- className: "text-[var(--destructive)] text-sm",
607
- children: exportArtifactsMutation.error instanceof Error ? exportArtifactsMutation.error.message : "Artifact export failed"
608
- }) : null
609
- ]
610
- });
611
- }
612
- //#endregion
613
- export { AntigravityConversationDetailPage as component };
@@ -1,11 +0,0 @@
1
- import { t as ReloadErrorPanel } from "./reload-error-panel-BJMxY3U1.js";
2
- import { jsx } from "react/jsx-runtime";
3
- //#region src/routes/antigravity-conversations.$conversationId.tsx?tsr-split=errorComponent
4
- function AntigravityConversationDetailErrorComponent({ error }) {
5
- return /* @__PURE__ */ jsx(ReloadErrorPanel, {
6
- description: error.message,
7
- title: "Failed to load Antigravity conversation"
8
- });
9
- }
10
- //#endregion
11
- export { AntigravityConversationDetailErrorComponent as errorComponent };
@@ -1,20 +0,0 @@
1
- import { r as antigravityDecryptionQueryOptions, t as antigravityConversationDetailQueryOptions } from "./antigravity-queries-CGrJO9Vr.js";
2
- import { t as LoadingPanel } from "./loading-panel-BGFnWseS.js";
3
- import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
- import { jsx } from "react/jsx-runtime";
5
- //#region src/routes/antigravity-conversations.$conversationId.tsx
6
- var $$splitErrorComponentImporter = () => import("./antigravity-conversations._conversationId-D426O-64.js");
7
- var $$splitComponentImporter = () => import("./antigravity-conversations._conversationId-BKOyL2T6.js");
8
- var Route = createFileRoute("/antigravity-conversations/$conversationId")({
9
- component: lazyRouteComponent($$splitComponentImporter, "component"),
10
- errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
11
- loader: async ({ context, params }) => {
12
- await Promise.all([context.queryClient.ensureQueryData(antigravityDecryptionQueryOptions()), context.queryClient.ensureQueryData(antigravityConversationDetailQueryOptions(params.conversationId))]);
13
- },
14
- pendingComponent: () => /* @__PURE__ */ jsx(LoadingPanel, {
15
- description: "Loading the Antigravity conversation transcript, artifact data, and workspace context.",
16
- title: "Loading conversation"
17
- })
18
- });
19
- //#endregion
20
- export { Route as t };