spiracha 1.3.3 → 1.5.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 (242) hide show
  1. package/AGENTS.md +55 -6
  2. package/README.md +46 -5
  3. package/apps/ui/AGENTS.md +31 -4
  4. package/apps/ui/README.md +59 -5
  5. package/apps/ui/dist/client/assets/analytics-DOy1b6Sh.js +1 -0
  6. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DqySVO2K.js +7 -0
  7. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-KAcXtNxI.js +1 -0
  8. package/apps/ui/dist/client/assets/antigravity-keychain-panel-B77qJz6f.js +1 -0
  9. package/apps/ui/dist/client/assets/antigravity._workspaceKey-B3NM6gRH.js +1 -0
  10. package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +1 -0
  11. package/apps/ui/dist/client/assets/antigravity.index-DP9JC2P9.js +1 -0
  12. package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +1 -0
  13. package/apps/ui/dist/client/assets/badge-C3i4OKs8.js +1 -0
  14. package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +1 -0
  15. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-8pQ55ci2.js +1 -0
  16. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-DVz5UmtU.js +1 -0
  17. package/apps/ui/dist/client/assets/claude-code._workspaceKey-BBKskSum.js +1 -0
  18. package/apps/ui/dist/client/assets/claude-code._workspaceKey-OkikMUFs.js +1 -0
  19. package/apps/ui/dist/client/assets/claude-code.index-Cwu76dbb.js +1 -0
  20. package/apps/ui/dist/client/assets/claude-code.index-D6eMd08t.js +1 -0
  21. package/apps/ui/dist/client/assets/createServerFn-B-KkwmHU.js +3 -0
  22. package/apps/ui/dist/client/assets/cursor-threads._composerId-CmBFclK8.js +1 -0
  23. package/apps/ui/dist/client/assets/cursor-threads._composerId-hBWlP1D-.js +1 -0
  24. package/apps/ui/dist/client/assets/cursor._workspaceKey-BFPkIRi-.js +1 -0
  25. package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +1 -0
  26. package/apps/ui/dist/client/assets/cursor.index-8y4o20kb.js +2 -0
  27. package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +1 -0
  28. package/apps/ui/dist/client/assets/{data-table-DeQq8xdt.js → data-table-Br78_dk3.js} +2 -2
  29. package/apps/ui/dist/client/assets/delete-confirm-dialog-Bxs07u-j.js +7 -0
  30. package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +1 -0
  31. package/apps/ui/dist/client/assets/dist-BrJhN2A0.js +5 -0
  32. package/apps/ui/dist/client/assets/dist-Cmd3AIfD.js +1 -0
  33. package/apps/ui/dist/client/assets/dist-DvMS2965.js +1 -0
  34. package/apps/ui/dist/client/assets/download-Bf0QJKD3.js +1 -0
  35. package/apps/ui/dist/client/assets/dropdown-menu-D5cvPaZt.js +1 -0
  36. package/apps/ui/dist/client/assets/es2015-ad6040dw.js +41 -0
  37. package/apps/ui/dist/client/assets/export-dialog-Dr8d2MqD.js +1 -0
  38. package/apps/ui/dist/client/assets/formatters-BtqyrX_c.js +1 -0
  39. package/apps/ui/dist/client/assets/index-C-STgIH4.js +166 -0
  40. package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +1 -0
  41. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-CKgfJ7GR.js +1 -0
  42. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-zvIJHtQF.js +1 -0
  43. package/apps/ui/dist/client/assets/kiro._workspaceKey-DhVuJuZB.js +1 -0
  44. package/apps/ui/dist/client/assets/kiro._workspaceKey-QArsjkTY.js +1 -0
  45. package/apps/ui/dist/client/assets/kiro.index-C-fr4m7i.js +1 -0
  46. package/apps/ui/dist/client/assets/kiro.index-OYgAdtZd.js +1 -0
  47. package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +1 -0
  48. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-DLjiTst-.js +1 -0
  49. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-biBwrRbt.js +8 -0
  50. package/apps/ui/dist/client/assets/opencode._workspaceKey-C7OIzMOJ.js +1 -0
  51. package/apps/ui/dist/client/assets/opencode._workspaceKey-sBakX0oI.js +1 -0
  52. package/apps/ui/dist/client/assets/opencode.index-Bl_kNs9N.js +1 -0
  53. package/apps/ui/dist/client/assets/opencode.index-CN53bVmb.js +1 -0
  54. package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +1 -0
  55. package/apps/ui/dist/client/assets/preload-helper-B8fFrdxC.js +1 -0
  56. package/apps/ui/dist/client/assets/projects._project-D8WloxQN.js +1 -0
  57. package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +1 -0
  58. package/apps/ui/dist/client/assets/projects.index-5xRtuJdX.js +3 -0
  59. package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +1 -0
  60. package/apps/ui/dist/client/assets/react-dom-DL96Jor4.js +1 -0
  61. package/apps/ui/dist/client/assets/refresh-ccw-BgKjOiA6.js +1 -0
  62. package/apps/ui/dist/client/assets/reload-error-panel-AHqu0akK.js +1 -0
  63. package/apps/ui/dist/client/assets/routes-DnzF_9CX.js +1 -0
  64. package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +1 -0
  65. package/apps/ui/dist/client/assets/select-CYF6pF37.js +1 -0
  66. package/apps/ui/dist/client/assets/settings-Dx70jgP_.js +1 -0
  67. package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +1 -0
  68. package/apps/ui/dist/client/assets/styles-B7Zi9EFA.css +1 -0
  69. package/apps/ui/dist/client/assets/tabs-CmuhkT-c.js +7 -0
  70. package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +2 -0
  71. package/apps/ui/dist/client/assets/thread-transcript-stats-BUNz6u7F.js +1 -0
  72. package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +1 -0
  73. package/apps/ui/dist/client/assets/threads._threadId-BMRSFow3.js +1 -0
  74. package/apps/ui/dist/client/assets/useMutation-BSFult2i.js +1 -0
  75. package/apps/ui/dist/client/assets/useQuery-CjINKZf1.js +1 -0
  76. package/apps/ui/dist/client/icon.svg +2 -1
  77. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CQ8Jjs3B.js +387 -0
  78. package/apps/ui/dist/server/assets/analytics-CYP_LT5Y.js +16 -0
  79. package/apps/ui/dist/server/assets/{analytics-Dc_QDZZC.js → analytics-CtpOMVMO.js} +13 -6
  80. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-BKOyL2T6.js +613 -0
  81. package/apps/ui/dist/server/assets/{antigravity-conversations._conversationId-C9z4AeN-.js → antigravity-conversations._conversationId-eS87Dx7g.js} +2 -2
  82. package/apps/ui/dist/server/assets/{antigravity-db-D9gW1D8G.js → antigravity-db-Bh8_U9uw.js} +11 -7
  83. package/apps/ui/dist/server/assets/{antigravity-keychain-panel-bpPoxhyp.js → antigravity-keychain-panel-CC7FLmAK.js} +1 -1
  84. package/apps/ui/dist/server/assets/{antigravity-queries-DVIKyOXi.js → antigravity-queries-CGrJO9Vr.js} +5 -5
  85. package/apps/ui/dist/server/assets/{antigravity-server-Cp1lc8fp.js → antigravity-server-CHRjVFqN.js} +11 -11
  86. package/apps/ui/dist/server/assets/{antigravity._workspaceKey-Dl8o1ptg.js → antigravity._workspaceKey-B0QeYUOh.js} +2 -2
  87. package/apps/ui/dist/server/assets/{antigravity._workspaceKey-BAoa4izU.js → antigravity._workspaceKey-C3kP-qyN.js} +4 -4
  88. package/apps/ui/dist/server/assets/{antigravity.index-BOlrJasZ.js → antigravity.index-CPCYkqCi.js} +2 -2
  89. package/apps/ui/dist/server/assets/claude-code-db-Ik3VStKZ.js +361 -0
  90. package/apps/ui/dist/server/assets/claude-code-queries-Cgzi4K-e.js +37 -0
  91. package/apps/ui/dist/server/assets/claude-code-server-PfraClXS.js +72 -0
  92. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-C55oe6zj.js +18 -0
  93. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-D1RYYi3j.js +473 -0
  94. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-DSvPLEUL.js +11 -0
  95. package/apps/ui/dist/server/assets/claude-code-transcript-C-bxh3cS.js +139 -0
  96. package/apps/ui/dist/server/assets/claude-code-transcript-phase-DmUMc8VU.js +10 -0
  97. package/apps/ui/dist/server/assets/claude-code._workspaceKey-B5Xg_-tE.js +28 -0
  98. package/apps/ui/dist/server/assets/claude-code._workspaceKey-BPlzyXPa.js +11 -0
  99. package/apps/ui/dist/server/assets/claude-code._workspaceKey-DqDve2wl.js +191 -0
  100. package/apps/ui/dist/server/assets/claude-code.index-B7yYR7dD.js +92 -0
  101. package/apps/ui/dist/server/assets/claude-code.index-BUHThG1W.js +11 -0
  102. package/apps/ui/dist/server/assets/{codex-queries-ev_mRUzr.js → codex-queries-CtgeZ7VL.js} +15 -13
  103. package/apps/ui/dist/server/assets/{codex-server-DIYFLozB.js → codex-server-CGXU4H8-.js} +421 -146
  104. package/apps/ui/dist/server/assets/concurrency-VXtYvlGh.js +18 -0
  105. package/apps/ui/dist/server/assets/{createServerRpc-Cg-Zr1rq.js → createServerRpc-CF_DEwnm.js} +1 -1
  106. package/apps/ui/dist/server/assets/{createSsrRpc-DVnVQhGx.js → createSsrRpc-C754NPki.js} +1 -1
  107. package/apps/ui/dist/server/assets/{cursor-db-B7agkAvM.js → cursor-db-CZnYy7aT.js} +196 -9
  108. package/apps/ui/dist/server/assets/{cursor-queries-f7DjBKSD.js → cursor-queries-NCIM0Nat.js} +12 -10
  109. package/apps/ui/dist/server/assets/{cursor-recovery-9bJLs7vG.js → cursor-recovery-CXpO8KcD.js} +2 -2
  110. package/apps/ui/dist/server/assets/{cursor-server-nPzojHN3.js → cursor-server-DNu52A3K.js} +71 -42
  111. package/apps/ui/dist/server/assets/cursor-threads._composerId-Ckn6ItHI.js +582 -0
  112. package/apps/ui/dist/server/assets/{cursor-threads._composerId-B3qcsh9C.js → cursor-threads._composerId-p9-ARAzc.js} +2 -2
  113. package/apps/ui/dist/server/assets/{cursor-transcript-2iL3KFSK.js → cursor-transcript-B7tGnqtn.js} +1 -1
  114. package/apps/ui/dist/server/assets/{cursor._workspaceKey-BL_CQyHQ.js → cursor._workspaceKey-CZuohIUL.js} +2 -2
  115. package/apps/ui/dist/server/assets/{cursor._workspaceKey-BhQeepXB.js → cursor._workspaceKey-DPp5JSjy.js} +11 -9
  116. package/apps/ui/dist/server/assets/{cursor.index-CsrdckZD.js → cursor.index-DkWT-mxw.js} +2 -2
  117. package/apps/ui/dist/server/assets/{delete-confirm-dialog-PCD7S0_M.js → delete-confirm-dialog-BcBNCxWB.js} +5 -1
  118. package/apps/ui/dist/server/assets/{empty-plugin-adapters-D3qLMPfC.js → empty-plugin-adapters-B3lHh1La.js} +1 -1
  119. package/apps/ui/dist/server/assets/{export-dialog-DaPlOGFT.js → export-dialog-D88ze9Gy.js} +54 -12
  120. package/apps/ui/dist/server/assets/kiro-db--fXrED_-.js +552 -0
  121. package/apps/ui/dist/server/assets/kiro-queries-CzNlM2ok.js +37 -0
  122. package/apps/ui/dist/server/assets/kiro-server-9WRxg2Au.js +72 -0
  123. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-CRY2c7YO.js +11 -0
  124. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-F1UlwxmR.js +449 -0
  125. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-bvTulT7C.js +18 -0
  126. package/apps/ui/dist/server/assets/kiro-transcript-DoekQBaH.js +112 -0
  127. package/apps/ui/dist/server/assets/kiro-transcript-phase-CJG40nQg.js +27 -0
  128. package/apps/ui/dist/server/assets/kiro._workspaceKey-BDe9sQwo.js +11 -0
  129. package/apps/ui/dist/server/assets/kiro._workspaceKey-CJsjgNwO.js +28 -0
  130. package/apps/ui/dist/server/assets/kiro._workspaceKey-D_-4Qb7y.js +193 -0
  131. package/apps/ui/dist/server/assets/kiro.index-C__-UROk.js +11 -0
  132. package/apps/ui/dist/server/assets/kiro.index-CmTbqeYj.js +93 -0
  133. package/apps/ui/dist/server/assets/opencode-db-BM7KjOzc.js +397 -0
  134. package/apps/ui/dist/server/assets/opencode-queries-BeNYXnQv.js +50 -0
  135. package/apps/ui/dist/server/assets/opencode-server-BpQ_kRze.js +72 -0
  136. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-CGQ-t0vD.js +518 -0
  137. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-D8Q7in_Z.js +18 -0
  138. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-DKOvi0lV.js +11 -0
  139. package/apps/ui/dist/server/assets/opencode-think-tags-CAoD-EcZ.js +87 -0
  140. package/apps/ui/dist/server/assets/opencode-transcript-BNTcGNym.js +141 -0
  141. package/apps/ui/dist/server/assets/opencode-transcript-phase-OqLkiQD0.js +32 -0
  142. package/apps/ui/dist/server/assets/opencode._workspaceKey-BdqcWHw1.js +11 -0
  143. package/apps/ui/dist/server/assets/opencode._workspaceKey-CfH96HTT.js +28 -0
  144. package/apps/ui/dist/server/assets/opencode._workspaceKey-DdbHPDrO.js +207 -0
  145. package/apps/ui/dist/server/assets/opencode.index-BbVzkJXP.js +11 -0
  146. package/apps/ui/dist/server/assets/opencode.index-Vh_Gq_1L.js +93 -0
  147. package/apps/ui/dist/server/assets/{projects._project-CqqUFr4l.js → projects._project-4io5LO0E.js} +5 -3
  148. package/apps/ui/dist/server/assets/{projects._project-DahGqNYS.js → projects._project-D6ZoGhJ8.js} +42 -12
  149. package/apps/ui/dist/server/assets/{projects.index-CkTeFWNU.js → projects.index-BkLiF2FF.js} +21 -7
  150. package/apps/ui/dist/server/assets/projects.index-DesYXwfi.js +14 -0
  151. package/apps/ui/dist/server/assets/route-search-ts4W9MJ9.js +38 -0
  152. package/apps/ui/dist/server/assets/router-Sac2DGk6.js +518 -0
  153. package/apps/ui/dist/server/assets/{routes-Xix3ZeSo.js → routes-Bsact1uB.js} +2 -2
  154. package/apps/ui/dist/server/assets/{routes-0x1U0IHq.js → routes-BzkJgq4W.js} +2 -2
  155. package/apps/ui/dist/server/assets/{shared-CPRNYIql.js → shared-DyhChtHf.js} +4 -1
  156. package/apps/ui/dist/server/assets/source-session-export-server-DNutCawb.js +38 -0
  157. package/apps/ui/dist/server/assets/start-B_HFwkkk.js +4 -0
  158. package/apps/ui/dist/server/assets/tabs-DkaChNVg.js +501 -0
  159. package/apps/ui/dist/server/assets/thread-transcript-stats-Dh34mt2u.js +45 -0
  160. package/apps/ui/dist/server/assets/threads._threadId-BeXEc4Lo.js +648 -0
  161. package/apps/ui/dist/server/assets/{threads._threadId-BLCkGW--.js → threads._threadId-Ci0S4mKU.js} +2 -2
  162. package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +83 -0
  163. package/apps/ui/dist/server/server.js +141 -83
  164. package/package.json +28 -11
  165. package/src/lib/antigravity-db.ts +20 -13
  166. package/src/lib/claude-code-db.ts +655 -0
  167. package/src/lib/claude-code-exporter-types.ts +110 -0
  168. package/src/lib/claude-code-transcript-phase.ts +25 -0
  169. package/src/lib/claude-code-transcript.ts +180 -0
  170. package/src/lib/codex-analytics.ts +118 -18
  171. package/src/lib/codex-browser-db.ts +491 -56
  172. package/src/lib/codex-browser-export.ts +27 -71
  173. package/src/lib/codex-thread-cache.ts +17 -1
  174. package/src/lib/concurrency.ts +25 -0
  175. package/src/lib/cursor-db.ts +318 -7
  176. package/src/lib/cursor-exporter.ts +2 -2
  177. package/src/lib/kiro-db.ts +949 -0
  178. package/src/lib/kiro-exporter-types.ts +100 -0
  179. package/src/lib/kiro-transcript-phase.ts +41 -0
  180. package/src/lib/kiro-transcript.ts +115 -0
  181. package/src/lib/opencode-db.ts +610 -0
  182. package/src/lib/opencode-exporter-types.ts +129 -0
  183. package/src/lib/opencode-think-tags.ts +126 -0
  184. package/src/lib/opencode-transcript-phase.ts +50 -0
  185. package/src/lib/opencode-transcript.ts +194 -0
  186. package/src/lib/shared.ts +25 -0
  187. package/src/lib/ui-cache.ts +14 -1
  188. package/src/lib/ui-export-archive.ts +61 -0
  189. package/apps/ui/dist/client/assets/analytics-C83LcWNb.js +0 -1
  190. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DkY8EEpK.js +0 -1
  191. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-OraHuz8j.js +0 -1
  192. package/apps/ui/dist/client/assets/antigravity-keychain-panel-DnDcq1ge.js +0 -1
  193. package/apps/ui/dist/client/assets/antigravity._workspaceKey-CQaZscA5.js +0 -1
  194. package/apps/ui/dist/client/assets/antigravity._workspaceKey-DTs99obU.js +0 -1
  195. package/apps/ui/dist/client/assets/antigravity.index-DbJa715k.js +0 -1
  196. package/apps/ui/dist/client/assets/antigravity.index-P-rs6w5X.js +0 -1
  197. package/apps/ui/dist/client/assets/badge-wgTVp-aq.js +0 -1
  198. package/apps/ui/dist/client/assets/checkbox-BUx0Gkuf.js +0 -1
  199. package/apps/ui/dist/client/assets/cursor-threads._composerId-D0DFXt8t.js +0 -1
  200. package/apps/ui/dist/client/assets/cursor-threads._composerId-tFa6Cf6A.js +0 -1
  201. package/apps/ui/dist/client/assets/cursor._workspaceKey-Df4PfA2k.js +0 -1
  202. package/apps/ui/dist/client/assets/cursor._workspaceKey-DwrzEtnV.js +0 -1
  203. package/apps/ui/dist/client/assets/cursor.index-CNBf4ZiR.js +0 -1
  204. package/apps/ui/dist/client/assets/cursor.index-DP9Hy8X6.js +0 -2
  205. package/apps/ui/dist/client/assets/delete-confirm-dialog-CPlNsLhM.js +0 -11
  206. package/apps/ui/dist/client/assets/dist-Ds3kS91l.js +0 -1
  207. package/apps/ui/dist/client/assets/download-DLuPnxpV.js +0 -1
  208. package/apps/ui/dist/client/assets/dropdown-menu-lFk6zjoL.js +0 -1
  209. package/apps/ui/dist/client/assets/es2015-D-H_iZF6.js +0 -41
  210. package/apps/ui/dist/client/assets/export-dialog-CyqyvwiP.js +0 -1
  211. package/apps/ui/dist/client/assets/formatters-DbCKP02D.js +0 -1
  212. package/apps/ui/dist/client/assets/index-C-ZPpKJ0.js +0 -22
  213. package/apps/ui/dist/client/assets/json-panel-BsngvucB.js +0 -1
  214. package/apps/ui/dist/client/assets/metadata-section-Dtl8dNag.js +0 -1
  215. package/apps/ui/dist/client/assets/metric-card-DNzR1Rne.js +0 -1
  216. package/apps/ui/dist/client/assets/page-header-dha_O7ZL.js +0 -1
  217. package/apps/ui/dist/client/assets/projects._project-B7HBhbXv.js +0 -1
  218. package/apps/ui/dist/client/assets/projects._project-DHVvuT7A.js +0 -1
  219. package/apps/ui/dist/client/assets/projects.index-BUUtx2AZ.js +0 -1
  220. package/apps/ui/dist/client/assets/projects.index-BojAe1Y4.js +0 -3
  221. package/apps/ui/dist/client/assets/refresh-ccw-B-ASKHtx.js +0 -1
  222. package/apps/ui/dist/client/assets/reload-error-panel-DD8M1BIY.js +0 -1
  223. package/apps/ui/dist/client/assets/routes-q7bzFp35.js +0 -1
  224. package/apps/ui/dist/client/assets/scroll-text-TvHyiJ_N.js +0 -1
  225. package/apps/ui/dist/client/assets/select-BFv1HMiT.js +0 -1
  226. package/apps/ui/dist/client/assets/settings-CvegTo4F.js +0 -1
  227. package/apps/ui/dist/client/assets/styles-Ch0r3kMZ.css +0 -1
  228. package/apps/ui/dist/client/assets/text-document-panel-D7Rws41o.js +0 -1
  229. package/apps/ui/dist/client/assets/text-filter-2q5pEoZh.js +0 -2
  230. package/apps/ui/dist/client/assets/threads._threadId-LpZVUlPq.js +0 -7
  231. package/apps/ui/dist/client/assets/threads._threadId-MSmNIBkq.js +0 -1
  232. package/apps/ui/dist/client/assets/useMutation-BOPJU9e0.js +0 -1
  233. package/apps/ui/dist/client/assets/useQuery-CbxZiVGF.js +0 -1
  234. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-zvGzK-Yx.js +0 -229
  235. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-JEhx-f2R.js +0 -212
  236. package/apps/ui/dist/server/assets/cursor-threads._composerId-BK3iW-3e.js +0 -218
  237. package/apps/ui/dist/server/assets/json-panel-RYsxWFae.js +0 -16
  238. package/apps/ui/dist/server/assets/metadata-section-D6Lbc7D6.js +0 -54
  239. package/apps/ui/dist/server/assets/router-K0m7dK4T.js +0 -394
  240. package/apps/ui/dist/server/assets/start-bX7bXjzw.js +0 -4
  241. package/apps/ui/dist/server/assets/text-document-panel-D8JbQWAn.js +0 -23
  242. package/apps/ui/dist/server/assets/threads._threadId-LjgsGUh-.js +0 -1052
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-DGeXAQPT.js";var t=e();function n({error:e}){let n=e.message.includes(`unable to open database`)||e.message.includes(`database is locked`);return(0,t.jsxs)(`div`,{className:`rounded-xl border border-[var(--border)] bg-[var(--panel)] px-6 py-10 text-center`,children:[(0,t.jsx)(`p`,{className:`font-medium text-[var(--destructive)] text-sm`,children:n?`Database unavailable`:`Failed to load thread`}),(0,t.jsx)(`p`,{className:`mt-2 text-[var(--muted-foreground)] text-sm`,children:n?`Codex may have an exclusive lock on the database. Reload to retry.`:e.message}),(0,t.jsx)(`button`,{className:`mt-4 text-[var(--accent)] text-sm underline-offset-2 hover:underline`,type:`button`,onClick:()=>window.location.reload(),children:`Reload`})]})}export{n as errorComponent};
@@ -0,0 +1 @@
1
+ import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{M as r,i}from"./createServerFn-B-KkwmHU.js";import{c as a,i as o,n as s,r as c,s as l,t as u}from"./formatters-BtqyrX_c.js";import{t as d}from"./useMutation-BSFult2i.js";import{t as f}from"./useQuery-CjINKZf1.js";import{t as p}from"./checkbox-CdHitXWQ.js";import{a as ee,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./tabs-CmuhkT-c.js";import{n as x,r as S,t as C}from"./download-Bf0QJKD3.js";import{n as w,t as T}from"./delete-confirm-dialog-Bxs07u-j.js";import{t as E}from"./export-dialog-Dr8d2MqD.js";import{_ as D,dt as te,ht as O,kt as ne,lt as re,mt as ie,ot as ae,st as oe}from"./index-C-STgIH4.js";import{t as k}from"./metric-card-Dplm0ZiM.js";import{t as A}from"./page-header-Cwa3p6Tl.js";import{t as j}from"./badge-C3i4OKs8.js";var M=e(n()),N=t(),P=e=>[{label:`Thread ID`,value:(0,N.jsx)(`span`,{"data-mono":`true`,children:e.thread.id})},{label:`Project`,value:e.project},{label:`CWD`,value:(0,N.jsx)(`span`,{"data-mono":`true`,children:e.thread.cwd})},{label:`Created`,value:(0,N.jsx)(`span`,{suppressHydrationWarning:!0,children:c(e.thread.created_at_ms??e.thread.created_at*1e3)})},{label:`Updated`,value:(0,N.jsx)(`span`,{suppressHydrationWarning:!0,children:c(e.thread.updated_at_ms??e.thread.updated_at*1e3)})},{label:`Session started`,value:(0,N.jsx)(`span`,{suppressHydrationWarning:!0,children:c(e.transcript?.sessionMeta.timestamp??null)})},{label:`Rollout size`,value:s(e.rollout.fileSizeBytes)},{label:`Archived`,value:u(!!e.thread.archived)},{label:`Archived at`,value:(0,N.jsx)(`span`,{suppressHydrationWarning:!0,children:c(e.thread.archived_at?e.thread.archived_at*1e3:null)})}],F=e=>[{label:`Source`,value:e.thread.source},{label:`Originator`,value:e.transcript?.sessionMeta.originator??`n/a`},{label:`Model provider`,value:e.thread.model_provider},{label:`Reasoning effort`,value:e.thread.reasoning_effort??`n/a`},{label:`CLI version`,value:e.thread.cli_version},{label:`Approval mode`,value:e.thread.approval_mode},{label:`Memory mode`,value:e.thread.memory_mode},{label:`Has user event`,value:u(!!e.thread.has_user_event)}],I=e=>[{label:`Git branch`,value:e.thread.git_branch??`n/a`},{label:`Git SHA`,value:e.thread.git_sha??`n/a`},{label:`Git remote`,value:e.thread.git_origin_url??`n/a`},{label:`Agent nickname`,value:e.thread.agent_nickname??`n/a`},{label:`Agent role`,value:e.thread.agent_role??`n/a`},{label:`Agent path`,value:e.thread.agent_path??`n/a`}],L=e=>{let t=e.relations.parentThreadId?(0,N.jsx)(r,{className:`text-[var(--accent)]`,params:{threadId:e.relations.parentThreadId},to:`/threads/$threadId`,children:e.relations.parentThreadId}):`n/a`,n=e.relations.childEdges.length>0?(0,N.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.relations.childEdges.map(e=>(0,N.jsx)(r,{className:`rounded-full border border-[var(--border)] px-3 py-1 text-[var(--accent)] text-xs`,params:{threadId:e.child_thread_id},to:`/threads/$threadId`,children:e.child_thread_id},e.child_thread_id))}):`n/a`;return[{label:`Parent thread`,value:t},{label:`Child threads`,value:n},{label:`First user message`,value:e.thread.first_user_message||`n/a`},{label:`Preview`,value:e.thread.preview||`n/a`}]},R=e=>e.transcript?[{label:`Event kinds`,value:o([...new Set(e.transcript.events.map(e=>e.kind))])},{label:`Stats scope`,value:e.transcript.statsArePartial?`Preview only`:`Full transcript`},{label:`Tool calls`,value:String(e.transcript.stats.toolCallCount)},{label:`Exec calls`,value:String(e.transcript.stats.execCommandCount)},{label:`Web search events`,value:String(e.transcript.stats.webSearchEventCount)},{label:`Assistant messages`,value:String(e.transcript.stats.assistantMessageCount)},{label:`Commentary updates`,value:String(e.transcript.stats.commentaryCount)}]:e.transcriptState===`missing`?[{label:`Transcript load`,value:`Transcript file missing from disk`},{label:`Rollout path`,value:e.thread.rollout_path},{label:`Preview mode`,value:`Export and transcript browsing are unavailable until the file exists again.`}]:[{label:`Transcript load`,value:`Deferred for oversized rollout`},{label:`Rollout size`,value:s(e.rollout.fileSizeBytes)},{label:`Preview mode`,value:`Load the transcript manually to inspect it.`}];function z({rawJsonDisabled:e=!1,showCommentary:t,showExtraEvents:n,showRawJson:r,showToolCalls:i,showUserMessages:a,onShowCommentaryChange:o,onShowExtraEventsChange:s,onShowRawJsonChange:c,onShowToolCallsChange:l,onShowUserMessagesChange:u}){return(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-4 rounded-xl border border-[var(--border)] bg-[var(--panel)] px-4 py-3 shadow-[var(--panel-shadow)]`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,N.jsx)(p,{checked:i,id:`transcript-show-tool-calls`,onCheckedChange:e=>l(e===!0)}),(0,N.jsx)(`label`,{htmlFor:`transcript-show-tool-calls`,children:`Show tool calls`})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,N.jsx)(p,{checked:t,id:`transcript-show-commentary`,onCheckedChange:e=>o(e===!0)}),(0,N.jsx)(`label`,{htmlFor:`transcript-show-commentary`,children:`Show commentary`})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,N.jsx)(p,{checked:n,id:`transcript-show-extra-events`,onCheckedChange:e=>s(e===!0)}),(0,N.jsx)(`label`,{htmlFor:`transcript-show-extra-events`,children:`Show extra events`})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,N.jsx)(p,{checked:r,disabled:e,id:`transcript-show-raw-json`,onCheckedChange:e=>c(e===!0)}),(0,N.jsx)(`label`,{htmlFor:`transcript-show-raw-json`,children:`Raw JSON`})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,N.jsx)(p,{checked:a,id:`transcript-show-user-messages`,onCheckedChange:e=>u(e===!0)}),(0,N.jsx)(`label`,{htmlFor:`transcript-show-user-messages`,children:`User`})]})]})}function B({snapshot:e}){return(0,N.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsx)(_,{items:P(e),title:`Thread`}),(0,N.jsx)(_,{items:F(e),title:`Runtime`}),(0,N.jsx)(_,{items:I(e),title:`Git and agent`})]}),(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsx)(_,{items:L(e),title:`Relations and summary`}),(0,N.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,N.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:`Available tools`}),(0,N.jsx)(`div`,{className:`mt-4 space-y-3`,children:e.availableTools.map(e=>(0,N.jsxs)(`div`,{className:`rounded-xl border border-[var(--border)] bg-[var(--panel-secondary)] p-3.5`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,N.jsx)(`p`,{className:`font-medium font-mono text-sm`,children:e.name}),e.namespace?(0,N.jsx)(j,{variant:`outline`,children:e.namespace}):null]}),(0,N.jsx)(`p`,{className:`mt-1.5 text-[var(--muted-foreground)] text-sm`,children:e.description||`No description.`})]},`${e.name}-${e.namespace??`global`}`))})]}),(0,N.jsx)(_,{items:R(e),title:`Transcript stats`})]})]})}function V({snapshot:e}){return e.transcript?(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsx)(y,{title:`Session meta`,value:e.transcript.sessionMeta}),(0,N.jsx)(y,{title:`Turn contexts`,value:e.transcript.turnContexts}),(0,N.jsx)(y,{title:`Sandbox policy`,value:e.thread.sandbox_policy})]}):(0,N.jsx)(`div`,{className:`rounded-xl border border-[var(--border)] bg-[var(--panel)] px-5 py-4 text-sm`,children:e.transcriptState===`missing`?`The rollout JSONL file is missing from disk, so raw transcript payloads are unavailable.`:`Raw transcript payloads are deferred for oversized rollouts. Use Export if you only need the full thread contents, or load the transcript manually from the Transcript tab.`})}function H({fileSizeBytes:e,missing:t,pending:n,onLoad:r}){return(0,N.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,N.jsx)(`h3`,{className:`font-semibold text-base`,children:t?`Transcript file missing`:`This is a very big thread`}),(0,N.jsx)(`p`,{className:`mt-2 text-[var(--muted-foreground)] text-sm leading-6`,children:t?`The rollout JSONL referenced by this thread is no longer present on disk. Export may still work if the file is restored, but transcript browsing is unavailable right now.`:`Spiracha skipped loading the transcript automatically because the rollout file is ${s(e)}. Export still works immediately. If you need to inspect the thread here, load a bounded preview manually.`}),t?null:(0,N.jsx)(`div`,{className:`mt-4`,children:(0,N.jsx)(O,{disabled:n,variant:`outline`,onClick:r,children:n?`Loading preview...`:`Load transcript preview`})})]})}var U=(e,t)=>e?`The rollout JSONL file is missing from disk, so this thread cannot be exported right now.`:t instanceof Error?t.message:null;function W(){let e=ne(),t=i(),n=D.useParams(),r=a(ae(n.threadId)).data,{settings:o}=ie(),s=r.transcriptState===`missing`,[u,p]=(0,M.useState)(!r.rollout.shouldDeferTranscriptLoad&&!s),[_,y]=(0,M.useState)(!1),[j,P]=(0,M.useState)(!1),[F,I]=(0,M.useState)(!1),[L,R]=(0,M.useState)(!1),[W,G]=(0,M.useState)(!0),[K,q]=(0,M.useState)(!1),[se,J]=(0,M.useState)(!1),Y=f({...oe(n.threadId),enabled:u&&r.transcript===null&&!s}),X=r.transcript??Y.data??null,Z={...r,transcript:X},Q=d({mutationFn:async e=>{console.info(`[spiracha:export-ui] request`,{outputFormat:e.outputFormat,project:r.project,selectedThreadCount:1,selectedThreadIds:[r.thread.id],zipArchive:e.zipArchive});let t=await te({data:{...e,...o,threadId:r.thread.id}});if(console.info(`[spiracha:export-ui] response`,{downloadUrl:t.mode===`download_url`?t.downloadUrl:null,fileName:t.fileName,mode:t.mode,project:r.project,selectedThreadCount:1}),t.mode===`download`){C(t.fileName,t.content,t.mimeType);return}await x(t.fileName,t.downloadUrl)},onError:e=>{console.error(`[spiracha:export-ui] failed`,{error:e instanceof Error?e.message:String(e),project:r.project,selectedThreadCount:1,selectedThreadIds:[r.thread.id]})},onSuccess:async()=>{q(!1)}}),$=d({mutationFn:e=>re({data:{deleteSessionFiles:e.deleteSessionFiles,threadId:r.thread.id}}),onSuccess:async()=>{await Promise.all([t.invalidateQueries({queryKey:[`analytics`]}),t.invalidateQueries({queryKey:[`dashboard`]}),t.invalidateQueries({queryKey:[`project-threads`,r.project]}),t.invalidateQueries({queryKey:[`projects`]})]),e({params:{project:r.project},to:`/projects/$project`})}});return(0,N.jsxs)(`div`,{className:`space-y-5`,children:[(0,N.jsx)(A,{actions:(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(O,{className:`rounded-full`,variant:`outline`,onClick:()=>q(!0),children:[(0,N.jsx)(S,{className:`mr-2 size-4`}),`Export`]}),(0,N.jsxs)(O,{className:`rounded-full border-[var(--destructive)]/20 text-[var(--destructive)]`,variant:`outline`,onClick:()=>J(!0),children:[(0,N.jsx)(w,{className:`mr-2 size-4`}),`Delete`]})]}),breadcrumb:(0,N.jsx)(m,{items:[{label:`Codex`,to:`/projects`},{label:r.project,params:{project:r.project},to:`/projects/$project`},{label:r.thread.title}]}),eyebrow:r.project,subtitle:r.thread.preview,title:r.thread.title}),(0,N.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-4`,children:[(0,N.jsx)(k,{label:`Model`,value:r.thread.model??`unknown`}),(0,N.jsx)(k,{label:`Tokens`,value:l(r.thread.tokens_used)}),(0,N.jsx)(k,{label:`Updated`,value:(0,N.jsx)(`span`,{suppressHydrationWarning:!0,children:c(r.thread.updated_at_ms??r.thread.updated_at*1e3)})}),(0,N.jsx)(k,{label:`Thread source`,value:r.thread.thread_source??X?.sessionMeta.threadSource??`n/a`})]}),(0,N.jsxs)(b,{className:`space-y-4`,defaultValue:`transcript`,children:[(0,N.jsxs)(v,{className:`grid w-fit min-w-[24rem] grid-cols-3 rounded-full border border-[var(--border)] bg-[var(--panel)] p-1`,children:[(0,N.jsx)(h,{className:`rounded-full px-5 text-sm`,value:`transcript`,children:`Transcript`}),(0,N.jsx)(h,{className:`rounded-full px-5 text-sm`,value:`metadata`,children:`Metadata`}),(0,N.jsx)(h,{className:`rounded-full px-5 text-sm`,value:`raw`,children:`Raw`})]}),(0,N.jsxs)(g,{className:`space-y-3`,value:`transcript`,children:[(0,N.jsx)(z,{rawJsonDisabled:!X?.rawIncluded,showCommentary:j,showExtraEvents:F,showRawJson:L,showToolCalls:_,showUserMessages:W,onShowCommentaryChange:P,onShowExtraEventsChange:I,onShowRawJsonChange:R,onShowToolCallsChange:y,onShowUserMessagesChange:G}),X?(0,N.jsx)(ee,{assistantModel:r.thread.model,events:X.events,projectPath:r.thread.cwd,showCommentary:j,showExtraEvents:F,showRawJson:L&&X.rawIncluded,showToolCalls:_,showUserMessages:W}):(0,N.jsx)(H,{fileSizeBytes:r.rollout.fileSizeBytes,missing:r.transcriptState===`missing`,pending:Y.isFetching,onLoad:()=>p(!0)}),Y.isError?(0,N.jsxs)(`p`,{className:`text-[var(--destructive)] text-sm`,children:[`Failed to load transcript preview:`,` `,Y.error instanceof Error?Y.error.message:`Unknown error`]}):null]}),(0,N.jsx)(g,{value:`metadata`,children:(0,N.jsx)(B,{snapshot:Z})}),(0,N.jsx)(g,{value:`raw`,children:(0,N.jsx)(V,{snapshot:Z})})]}),(0,N.jsx)(T,{confirmLabel:$.isPending?`Deleting...`:`Delete thread`,defaultDeleteSessionFiles:!0,description:`Delete this thread from the Codex database. Enable Delete Session files if you also want to remove the rollout JSONL from disk.`,open:se,showDeleteSessionFilesOption:!0,title:`Delete this thread from Codex DB?`,onConfirm:({deleteSessionFiles:e})=>$.mutate({deleteSessionFiles:e}),onOpenChange:J}),(0,N.jsx)(E,{disabled:s,errorMessage:U(s,Q.error),open:K,pending:Q.isPending,onExport:e=>{s||Q.mutate(e)},onOpenChange:q})]})}export{W as component};
@@ -0,0 +1 @@
1
+ import{r as e}from"./jsx-runtime-DGeXAQPT.js";import{n as t}from"./react-dom-DL96Jor4.js";import{E as n,T as r,b as i,h as a,i as o,j as s,u as c}from"./createServerFn-B-KkwmHU.js";import{Ot as l}from"./index-C-STgIH4.js";var u=class extends s{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),r(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&a(t.mutationKey)!==a(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??l();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){c.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},d=e(t(),1);function f(e,t){let r=o(t),[a]=d.useState(()=>new u(r,e));d.useEffect(()=>{a.setOptions(e)},[a,e]);let s=d.useSyncExternalStore(d.useCallback(e=>a.subscribe(c.batchCalls(e)),[a]),()=>a.getCurrentResult(),()=>a.getCurrentResult()),l=d.useCallback((e,t)=>{a.mutate(e,t).catch(i)},[a]);if(s.error&&n(a.options.throwOnError,[s.error]))throw s.error;return{...s,mutate:l,mutateAsync:s.mutate}}export{f as t};
@@ -0,0 +1 @@
1
+ import{l as e,u as t}from"./formatters-BtqyrX_c.js";function n(n,r){return e(n,t,r)}export{n as t};
@@ -1,4 +1,5 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 145">
2
+ <title>Spiracha</title>
2
3
  <!-- SVG created with Arrow, by QuiverAI (https://quiver.ai) -->
3
4
  <style type="text/css">.cls-0 {fill:#00384F;}
4
5
  .cls-1 {fill:#FFFFFF;}
@@ -25,4 +26,4 @@
25
26
  <path class="cls-2" d="m36.9 97.4h-7.2c-0.5 0-0.8 0.2-0.8 0.7 0 0.4 0.3 0.7 0.7 0.7h7.3c0.3 0 0.7-0.3 0.7-0.7 0-0.3-0.4-0.7-0.7-0.7z"/>
26
27
  <path class="cls-2" d="m35.6 100.3h-5.9c-0.5 0-0.7 0.3-0.7 0.8 0 0.4 0.2 0.7 0.7 0.7h5.9c0.4 0 0.8-0.2 0.8-0.7s-0.4-0.8-0.8-0.8z"/>
27
28
  <path class="cls-4" d="m32.6 58.7"/>
28
- </svg>
29
+ </svg>
@@ -0,0 +1,387 @@
1
+ //#region \0tanstack-start-manifest:v
2
+ var tsrStartManifest = () => ({ routes: {
3
+ __root__: {
4
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/__root.tsx",
5
+ children: [
6
+ "/",
7
+ "/$threadId",
8
+ "/analytics",
9
+ "/settings",
10
+ "/antigravity-conversations/$conversationId",
11
+ "/antigravity/$workspaceKey",
12
+ "/claude-code-sessions/$sessionId",
13
+ "/claude-code/$workspaceKey",
14
+ "/cursor-threads/$composerId",
15
+ "/cursor/$workspaceKey",
16
+ "/kiro-sessions/$sessionId",
17
+ "/kiro/$workspaceKey",
18
+ "/opencode-sessions/$sessionId",
19
+ "/opencode/$workspaceKey",
20
+ "/projects/$project",
21
+ "/threads/$threadId",
22
+ "/antigravity/",
23
+ "/claude-code/",
24
+ "/cursor/",
25
+ "/kiro/",
26
+ "/opencode/",
27
+ "/projects/"
28
+ ],
29
+ preloads: [
30
+ "/assets/index-C-STgIH4.js",
31
+ "/assets/jsx-runtime-DGeXAQPT.js",
32
+ "/assets/preload-helper-B8fFrdxC.js",
33
+ "/assets/dist-DvMS2965.js",
34
+ "/assets/createServerFn-B-KkwmHU.js",
35
+ "/assets/react-dom-DL96Jor4.js",
36
+ "/assets/sqlite-error-B6uZjUe8.js"
37
+ ],
38
+ scripts: [{ attrs: {
39
+ type: "module",
40
+ async: !0,
41
+ src: "/assets/index-C-STgIH4.js"
42
+ } }]
43
+ },
44
+ "/": {
45
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/index.tsx",
46
+ children: void 0,
47
+ preloads: [
48
+ "/assets/routes-DnzF_9CX.js",
49
+ "/assets/metric-card-Dplm0ZiM.js",
50
+ "/assets/page-header-Cwa3p6Tl.js",
51
+ "/assets/formatters-BtqyrX_c.js"
52
+ ]
53
+ },
54
+ "/$threadId": {
55
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/$threadId.tsx",
56
+ children: void 0,
57
+ preloads: ["/assets/_threadId-CAIeH5mq.js"]
58
+ },
59
+ "/analytics": {
60
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/analytics.tsx",
61
+ children: void 0,
62
+ preloads: [
63
+ "/assets/analytics-DOy1b6Sh.js",
64
+ "/assets/data-table-Br78_dk3.js",
65
+ "/assets/metric-card-Dplm0ZiM.js",
66
+ "/assets/page-header-Cwa3p6Tl.js",
67
+ "/assets/select-CYF6pF37.js",
68
+ "/assets/formatters-BtqyrX_c.js"
69
+ ]
70
+ },
71
+ "/settings": {
72
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/settings.tsx",
73
+ children: void 0,
74
+ preloads: [
75
+ "/assets/settings-Dx70jgP_.js",
76
+ "/assets/page-header-Cwa3p6Tl.js",
77
+ "/assets/checkbox-CdHitXWQ.js"
78
+ ]
79
+ },
80
+ "/antigravity-conversations/$conversationId": {
81
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/antigravity-conversations.$conversationId.tsx",
82
+ children: void 0,
83
+ preloads: [
84
+ "/assets/antigravity-conversations._conversationId-DqySVO2K.js",
85
+ "/assets/antigravity-keychain-panel-B77qJz6f.js",
86
+ "/assets/tabs-CmuhkT-c.js",
87
+ "/assets/metric-card-Dplm0ZiM.js",
88
+ "/assets/page-header-Cwa3p6Tl.js",
89
+ "/assets/checkbox-CdHitXWQ.js",
90
+ "/assets/download-Bf0QJKD3.js",
91
+ "/assets/formatters-BtqyrX_c.js",
92
+ "/assets/useMutation-BSFult2i.js",
93
+ "/assets/scroll-text-fM0sMOB3.js",
94
+ "/assets/antigravity-conversations._conversationId-KAcXtNxI.js",
95
+ "/assets/reload-error-panel-AHqu0akK.js"
96
+ ]
97
+ },
98
+ "/antigravity/$workspaceKey": {
99
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/antigravity.$workspaceKey.tsx",
100
+ children: void 0,
101
+ preloads: [
102
+ "/assets/antigravity._workspaceKey-B3NM6gRH.js",
103
+ "/assets/antigravity-keychain-panel-B77qJz6f.js",
104
+ "/assets/data-table-Br78_dk3.js",
105
+ "/assets/text-filter-DVAZySUS.js",
106
+ "/assets/page-header-Cwa3p6Tl.js",
107
+ "/assets/badge-C3i4OKs8.js",
108
+ "/assets/dropdown-menu-D5cvPaZt.js",
109
+ "/assets/download-Bf0QJKD3.js",
110
+ "/assets/formatters-BtqyrX_c.js",
111
+ "/assets/useMutation-BSFult2i.js",
112
+ "/assets/scroll-text-fM0sMOB3.js",
113
+ "/assets/antigravity._workspaceKey-ByitGWki.js",
114
+ "/assets/reload-error-panel-AHqu0akK.js"
115
+ ]
116
+ },
117
+ "/claude-code-sessions/$sessionId": {
118
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/claude-code-sessions.$sessionId.tsx",
119
+ children: void 0,
120
+ preloads: [
121
+ "/assets/claude-code-sessions._sessionId-8pQ55ci2.js",
122
+ "/assets/tabs-CmuhkT-c.js",
123
+ "/assets/export-dialog-Dr8d2MqD.js",
124
+ "/assets/metric-card-Dplm0ZiM.js",
125
+ "/assets/page-header-Cwa3p6Tl.js",
126
+ "/assets/checkbox-CdHitXWQ.js",
127
+ "/assets/download-Bf0QJKD3.js",
128
+ "/assets/formatters-BtqyrX_c.js",
129
+ "/assets/thread-transcript-stats-BUNz6u7F.js",
130
+ "/assets/useMutation-BSFult2i.js",
131
+ "/assets/claude-code-sessions._sessionId-DVz5UmtU.js",
132
+ "/assets/reload-error-panel-AHqu0akK.js"
133
+ ]
134
+ },
135
+ "/claude-code/$workspaceKey": {
136
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/claude-code.$workspaceKey.tsx",
137
+ children: void 0,
138
+ preloads: [
139
+ "/assets/claude-code._workspaceKey-BBKskSum.js",
140
+ "/assets/reload-error-panel-AHqu0akK.js",
141
+ "/assets/claude-code._workspaceKey-OkikMUFs.js",
142
+ "/assets/data-table-Br78_dk3.js",
143
+ "/assets/export-dialog-Dr8d2MqD.js",
144
+ "/assets/text-filter-DVAZySUS.js",
145
+ "/assets/page-header-Cwa3p6Tl.js",
146
+ "/assets/dropdown-menu-D5cvPaZt.js",
147
+ "/assets/download-Bf0QJKD3.js",
148
+ "/assets/formatters-BtqyrX_c.js",
149
+ "/assets/useMutation-BSFult2i.js"
150
+ ]
151
+ },
152
+ "/cursor-threads/$composerId": {
153
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/cursor-threads.$composerId.tsx",
154
+ children: void 0,
155
+ preloads: [
156
+ "/assets/cursor-threads._composerId-CmBFclK8.js",
157
+ "/assets/reload-error-panel-AHqu0akK.js",
158
+ "/assets/cursor-threads._composerId-hBWlP1D-.js",
159
+ "/assets/tabs-CmuhkT-c.js",
160
+ "/assets/delete-confirm-dialog-Bxs07u-j.js",
161
+ "/assets/export-dialog-Dr8d2MqD.js",
162
+ "/assets/metric-card-Dplm0ZiM.js",
163
+ "/assets/page-header-Cwa3p6Tl.js",
164
+ "/assets/checkbox-CdHitXWQ.js",
165
+ "/assets/download-Bf0QJKD3.js",
166
+ "/assets/formatters-BtqyrX_c.js",
167
+ "/assets/useMutation-BSFult2i.js"
168
+ ]
169
+ },
170
+ "/cursor/$workspaceKey": {
171
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/cursor.$workspaceKey.tsx",
172
+ children: void 0,
173
+ preloads: [
174
+ "/assets/cursor._workspaceKey-BFPkIRi-.js",
175
+ "/assets/data-table-Br78_dk3.js",
176
+ "/assets/delete-confirm-dialog-Bxs07u-j.js",
177
+ "/assets/export-dialog-Dr8d2MqD.js",
178
+ "/assets/text-filter-DVAZySUS.js",
179
+ "/assets/page-header-Cwa3p6Tl.js",
180
+ "/assets/dropdown-menu-D5cvPaZt.js",
181
+ "/assets/download-Bf0QJKD3.js",
182
+ "/assets/formatters-BtqyrX_c.js",
183
+ "/assets/useMutation-BSFult2i.js",
184
+ "/assets/refresh-ccw-BgKjOiA6.js",
185
+ "/assets/cursor._workspaceKey-CaAZjGmm.js",
186
+ "/assets/reload-error-panel-AHqu0akK.js"
187
+ ]
188
+ },
189
+ "/kiro-sessions/$sessionId": {
190
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/kiro-sessions.$sessionId.tsx",
191
+ children: void 0,
192
+ preloads: [
193
+ "/assets/kiro-sessions._sessionId-CKgfJ7GR.js",
194
+ "/assets/tabs-CmuhkT-c.js",
195
+ "/assets/export-dialog-Dr8d2MqD.js",
196
+ "/assets/metric-card-Dplm0ZiM.js",
197
+ "/assets/page-header-Cwa3p6Tl.js",
198
+ "/assets/checkbox-CdHitXWQ.js",
199
+ "/assets/download-Bf0QJKD3.js",
200
+ "/assets/formatters-BtqyrX_c.js",
201
+ "/assets/thread-transcript-stats-BUNz6u7F.js",
202
+ "/assets/useMutation-BSFult2i.js",
203
+ "/assets/kiro-sessions._sessionId-zvIJHtQF.js",
204
+ "/assets/reload-error-panel-AHqu0akK.js"
205
+ ]
206
+ },
207
+ "/kiro/$workspaceKey": {
208
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/kiro.$workspaceKey.tsx",
209
+ children: void 0,
210
+ preloads: [
211
+ "/assets/kiro._workspaceKey-DhVuJuZB.js",
212
+ "/assets/data-table-Br78_dk3.js",
213
+ "/assets/export-dialog-Dr8d2MqD.js",
214
+ "/assets/text-filter-DVAZySUS.js",
215
+ "/assets/page-header-Cwa3p6Tl.js",
216
+ "/assets/dropdown-menu-D5cvPaZt.js",
217
+ "/assets/download-Bf0QJKD3.js",
218
+ "/assets/formatters-BtqyrX_c.js",
219
+ "/assets/useMutation-BSFult2i.js",
220
+ "/assets/kiro._workspaceKey-QArsjkTY.js",
221
+ "/assets/reload-error-panel-AHqu0akK.js"
222
+ ]
223
+ },
224
+ "/opencode-sessions/$sessionId": {
225
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/opencode-sessions.$sessionId.tsx",
226
+ children: void 0,
227
+ preloads: [
228
+ "/assets/opencode-sessions._sessionId-DLjiTst-.js",
229
+ "/assets/reload-error-panel-AHqu0akK.js",
230
+ "/assets/opencode-sessions._sessionId-biBwrRbt.js",
231
+ "/assets/tabs-CmuhkT-c.js",
232
+ "/assets/export-dialog-Dr8d2MqD.js",
233
+ "/assets/metric-card-Dplm0ZiM.js",
234
+ "/assets/page-header-Cwa3p6Tl.js",
235
+ "/assets/checkbox-CdHitXWQ.js",
236
+ "/assets/download-Bf0QJKD3.js",
237
+ "/assets/formatters-BtqyrX_c.js",
238
+ "/assets/thread-transcript-stats-BUNz6u7F.js",
239
+ "/assets/useMutation-BSFult2i.js"
240
+ ]
241
+ },
242
+ "/opencode/$workspaceKey": {
243
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/opencode.$workspaceKey.tsx",
244
+ children: void 0,
245
+ preloads: [
246
+ "/assets/opencode._workspaceKey-C7OIzMOJ.js",
247
+ "/assets/data-table-Br78_dk3.js",
248
+ "/assets/export-dialog-Dr8d2MqD.js",
249
+ "/assets/text-filter-DVAZySUS.js",
250
+ "/assets/page-header-Cwa3p6Tl.js",
251
+ "/assets/badge-C3i4OKs8.js",
252
+ "/assets/dropdown-menu-D5cvPaZt.js",
253
+ "/assets/download-Bf0QJKD3.js",
254
+ "/assets/formatters-BtqyrX_c.js",
255
+ "/assets/useMutation-BSFult2i.js",
256
+ "/assets/opencode._workspaceKey-sBakX0oI.js",
257
+ "/assets/reload-error-panel-AHqu0akK.js"
258
+ ]
259
+ },
260
+ "/projects/$project": {
261
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/projects.$project.tsx",
262
+ children: void 0,
263
+ preloads: [
264
+ "/assets/projects._project-D8WloxQN.js",
265
+ "/assets/data-table-Br78_dk3.js",
266
+ "/assets/delete-confirm-dialog-Bxs07u-j.js",
267
+ "/assets/export-dialog-Dr8d2MqD.js",
268
+ "/assets/text-filter-DVAZySUS.js",
269
+ "/assets/page-header-Cwa3p6Tl.js",
270
+ "/assets/dropdown-menu-D5cvPaZt.js",
271
+ "/assets/download-Bf0QJKD3.js",
272
+ "/assets/formatters-BtqyrX_c.js",
273
+ "/assets/useMutation-BSFult2i.js",
274
+ "/assets/refresh-ccw-BgKjOiA6.js",
275
+ "/assets/projects._project-DSDwH4NF.js",
276
+ "/assets/reload-error-panel-AHqu0akK.js"
277
+ ]
278
+ },
279
+ "/threads/$threadId": {
280
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/threads.$threadId.tsx",
281
+ children: void 0,
282
+ preloads: [
283
+ "/assets/threads._threadId-BB9tTsV4.js",
284
+ "/assets/threads._threadId-BMRSFow3.js",
285
+ "/assets/tabs-CmuhkT-c.js",
286
+ "/assets/delete-confirm-dialog-Bxs07u-j.js",
287
+ "/assets/export-dialog-Dr8d2MqD.js",
288
+ "/assets/metric-card-Dplm0ZiM.js",
289
+ "/assets/page-header-Cwa3p6Tl.js",
290
+ "/assets/badge-C3i4OKs8.js",
291
+ "/assets/checkbox-CdHitXWQ.js",
292
+ "/assets/download-Bf0QJKD3.js",
293
+ "/assets/formatters-BtqyrX_c.js",
294
+ "/assets/useMutation-BSFult2i.js",
295
+ "/assets/useQuery-CjINKZf1.js"
296
+ ]
297
+ },
298
+ "/antigravity/": {
299
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/antigravity.index.tsx",
300
+ children: void 0,
301
+ preloads: [
302
+ "/assets/antigravity.index-DP9JC2P9.js",
303
+ "/assets/antigravity-keychain-panel-B77qJz6f.js",
304
+ "/assets/data-table-Br78_dk3.js",
305
+ "/assets/text-filter-DVAZySUS.js",
306
+ "/assets/page-header-Cwa3p6Tl.js",
307
+ "/assets/formatters-BtqyrX_c.js",
308
+ "/assets/antigravity.index-DgW25FEV.js",
309
+ "/assets/reload-error-panel-AHqu0akK.js"
310
+ ]
311
+ },
312
+ "/claude-code/": {
313
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/claude-code.index.tsx",
314
+ children: void 0,
315
+ preloads: [
316
+ "/assets/claude-code.index-Cwu76dbb.js",
317
+ "/assets/reload-error-panel-AHqu0akK.js",
318
+ "/assets/claude-code.index-D6eMd08t.js",
319
+ "/assets/data-table-Br78_dk3.js",
320
+ "/assets/text-filter-DVAZySUS.js",
321
+ "/assets/page-header-Cwa3p6Tl.js",
322
+ "/assets/formatters-BtqyrX_c.js"
323
+ ]
324
+ },
325
+ "/cursor/": {
326
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/cursor.index.tsx",
327
+ children: void 0,
328
+ preloads: [
329
+ "/assets/cursor.index-8y4o20kb.js",
330
+ "/assets/data-table-Br78_dk3.js",
331
+ "/assets/delete-confirm-dialog-Bxs07u-j.js",
332
+ "/assets/text-filter-DVAZySUS.js",
333
+ "/assets/page-header-Cwa3p6Tl.js",
334
+ "/assets/badge-C3i4OKs8.js",
335
+ "/assets/dropdown-menu-D5cvPaZt.js",
336
+ "/assets/formatters-BtqyrX_c.js",
337
+ "/assets/useMutation-BSFult2i.js",
338
+ "/assets/refresh-ccw-BgKjOiA6.js",
339
+ "/assets/cursor.index-CrnMwDCi.js",
340
+ "/assets/reload-error-panel-AHqu0akK.js"
341
+ ]
342
+ },
343
+ "/kiro/": {
344
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/kiro.index.tsx",
345
+ children: void 0,
346
+ preloads: [
347
+ "/assets/kiro.index-C-fr4m7i.js",
348
+ "/assets/reload-error-panel-AHqu0akK.js",
349
+ "/assets/kiro.index-OYgAdtZd.js",
350
+ "/assets/data-table-Br78_dk3.js",
351
+ "/assets/text-filter-DVAZySUS.js",
352
+ "/assets/page-header-Cwa3p6Tl.js",
353
+ "/assets/formatters-BtqyrX_c.js"
354
+ ]
355
+ },
356
+ "/opencode/": {
357
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/opencode.index.tsx",
358
+ children: void 0,
359
+ preloads: [
360
+ "/assets/opencode.index-Bl_kNs9N.js",
361
+ "/assets/data-table-Br78_dk3.js",
362
+ "/assets/text-filter-DVAZySUS.js",
363
+ "/assets/page-header-Cwa3p6Tl.js",
364
+ "/assets/formatters-BtqyrX_c.js",
365
+ "/assets/opencode.index-CN53bVmb.js",
366
+ "/assets/reload-error-panel-AHqu0akK.js"
367
+ ]
368
+ },
369
+ "/projects/": {
370
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/projects.index.tsx",
371
+ children: void 0,
372
+ preloads: [
373
+ "/assets/projects.index-5xRtuJdX.js",
374
+ "/assets/data-table-Br78_dk3.js",
375
+ "/assets/delete-confirm-dialog-Bxs07u-j.js",
376
+ "/assets/text-filter-DVAZySUS.js",
377
+ "/assets/page-header-Cwa3p6Tl.js",
378
+ "/assets/dropdown-menu-D5cvPaZt.js",
379
+ "/assets/formatters-BtqyrX_c.js",
380
+ "/assets/useMutation-BSFult2i.js",
381
+ "/assets/projects.index-DEfhWqa8.js",
382
+ "/assets/reload-error-panel-AHqu0akK.js"
383
+ ]
384
+ }
385
+ } });
386
+ //#endregion
387
+ export { tsrStartManifest };
@@ -0,0 +1,16 @@
1
+ import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-CtgeZ7VL.js";
2
+ import { r as parseAnalyticsSearch } from "./route-search-ts4W9MJ9.js";
3
+ import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
+ //#region src/routes/analytics.tsx
5
+ var $$splitComponentImporter = () => import("./analytics-CtpOMVMO.js");
6
+ var Route = createFileRoute("/analytics")({
7
+ component: lazyRouteComponent($$splitComponentImporter, "component"),
8
+ loader: ({ context, deps }) => {
9
+ const { project } = deps;
10
+ return Promise.all([context.queryClient.ensureQueryData(projectsQueryOptions()), context.queryClient.ensureQueryData(analyticsQueryOptions(project))]);
11
+ },
12
+ loaderDeps: ({ search }) => ({ project: parseAnalyticsSearch(search).project ?? null }),
13
+ validateSearch: parseAnalyticsSearch
14
+ });
15
+ //#endregion
16
+ export { Route as t };
@@ -1,10 +1,13 @@
1
- import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-ev_mRUzr.js";
1
+ import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-CtgeZ7VL.js";
2
+ import { a as withAnalyticsProjectSearch, n as encodeAnalyticsProjectSelectValue, t as decodeAnalyticsProjectSelectValue } from "./route-search-ts4W9MJ9.js";
3
+ import { t as Route } from "./analytics-CYP_LT5Y.js";
2
4
  import { t as DataTable } from "./data-table-Cdct823O.js";
3
5
  import { t as MetricCard } from "./metric-card-ByEeLu0r.js";
4
6
  import { t as PageHeader } from "./page-header-VNSaM3xd.js";
5
7
  import { a as SelectValue, i as SelectTrigger, n as SelectContent, r as SelectItem, t as Select } from "./select-GW76p-ld.js";
6
8
  import { o as formatNumber, s as formatTokens } from "./formatters-FJaGZgJk.js";
7
- import { startTransition, useState } from "react";
9
+ import { startTransition } from "react";
10
+ import { useNavigate } from "@tanstack/react-router";
8
11
  import { jsx, jsxs } from "react/jsx-runtime";
9
12
  import { useSuspenseQuery } from "@tanstack/react-query";
10
13
  import { createColumnHelper } from "@tanstack/react-table";
@@ -48,18 +51,22 @@ var modelColumns = [
48
51
  })
49
52
  ];
50
53
  function AnalyticsPage() {
54
+ const navigate = useNavigate({ from: Route.fullPath });
51
55
  const projects = useSuspenseQuery(projectsQueryOptions()).data;
52
- const [selectedProject, setSelectedProject] = useState(null);
56
+ const selectedProject = Route.useSearch().project ?? null;
53
57
  const analytics = useSuspenseQuery(analyticsQueryOptions(selectedProject)).data;
54
58
  return /* @__PURE__ */ jsxs("div", {
55
59
  className: "space-y-6",
56
60
  children: [
57
61
  /* @__PURE__ */ jsx(PageHeader, {
58
62
  actions: /* @__PURE__ */ jsxs(Select, {
59
- value: selectedProject ?? "__all__",
63
+ value: encodeAnalyticsProjectSelectValue(selectedProject),
60
64
  onValueChange: (value) => {
61
65
  startTransition(() => {
62
- setSelectedProject(value === "__all__" ? null : value);
66
+ navigate({
67
+ replace: true,
68
+ search: (previous) => withAnalyticsProjectSearch(previous, decodeAnalyticsProjectSelectValue(value))
69
+ });
63
70
  });
64
71
  },
65
72
  children: [/* @__PURE__ */ jsx(SelectTrigger, {
@@ -69,7 +76,7 @@ function AnalyticsPage() {
69
76
  value: "__all__",
70
77
  children: "All projects"
71
78
  }), projects.map((project) => /* @__PURE__ */ jsx(SelectItem, {
72
- value: project.name,
79
+ value: encodeAnalyticsProjectSelectValue(project.name),
73
80
  children: project.name
74
81
  }, project.name))] })]
75
82
  }),