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
@@ -1,17 +1,18 @@
1
1
  import { t as Button } from "./button-CmTDnzOn.js";
2
2
  import { n as useSettings } from "./settings-store-DpEJEQ7M.js";
3
- import { c as deleteThreadFn, d as exportThreadsFn, f as recoverProjectThreadsFn, l as deleteThreadsFn, r as projectThreadsQueryOptions, u as exportThreadFn } from "./codex-queries-ev_mRUzr.js";
4
- import { t as Route } from "./projects._project-CqqUFr4l.js";
3
+ import { c as deleteThreadFn, d as exportThreadsFn, f as recoverProjectThreadsFn, l as deleteThreadsFn, r as projectThreadsQueryOptions, u as exportThreadFn } from "./codex-queries-CtgeZ7VL.js";
4
+ import { o as withTextQuerySearch } from "./route-search-ts4W9MJ9.js";
5
+ import { t as Route } from "./projects._project-4io5LO0E.js";
5
6
  import { t as DataTable } from "./data-table-Cdct823O.js";
6
7
  import { t as PageHeader } from "./page-header-VNSaM3xd.js";
7
8
  import { n as formatBytes, o as formatNumber, r as formatDateTime, s as formatTokens } from "./formatters-FJaGZgJk.js";
8
9
  import { n as downloadUrlFile, t as downloadTextFile } from "./download-DMmiy1xf.js";
9
10
  import { i as DropdownMenuTrigger, n as DropdownMenuContent, r as DropdownMenuItem, t as DropdownMenu } from "./dropdown-menu-Dy_9t6TN.js";
10
11
  import { n as ListSearchInput, t as matchesTextQuery } from "./text-filter-CGKxMCKt.js";
11
- import { t as DeleteConfirmDialog } from "./delete-confirm-dialog-PCD7S0_M.js";
12
- import { t as ExportDialog } from "./export-dialog-DaPlOGFT.js";
13
- import { useDeferredValue, useMemo, useState } from "react";
14
- import { Link } from "@tanstack/react-router";
12
+ import { t as ExportDialog } from "./export-dialog-D88ze9Gy.js";
13
+ import { t as DeleteConfirmDialog } from "./delete-confirm-dialog-BcBNCxWB.js";
14
+ import { startTransition, useDeferredValue, useMemo, useState } from "react";
15
+ import { Link, useNavigate } from "@tanstack/react-router";
15
16
  import { jsx, jsxs } from "react/jsx-runtime";
16
17
  import { useMutation, useQueryClient, useSuspenseQuery } from "@tanstack/react-query";
17
18
  import { Download, MoreHorizontal, RefreshCcw, Trash2, X } from "lucide-react";
@@ -186,12 +187,30 @@ function ThreadsTable({ threads, onDeleteThread, onDeleteThreads, onExportThread
186
187
  }
187
188
  //#endregion
188
189
  //#region src/routes/projects.$project.tsx?tsr-split=component
190
+ var shouldForceZipArchive = (pendingExport) => {
191
+ return Boolean(pendingExport && pendingExport.threadIds.length > 1);
192
+ };
193
+ var getDeleteConfirmLabel = (pendingDelete, isPending) => {
194
+ if (isPending) return "Deleting...";
195
+ if (pendingDelete && pendingDelete.threads.length > 1) return "Delete threads";
196
+ return "Delete thread";
197
+ };
198
+ var getDeleteDescription = (pendingDelete) => {
199
+ if (!pendingDelete) return "";
200
+ if (pendingDelete.threads.length === 1) return `Delete the thread "${pendingDelete.threads[0].thread.title}" from the Codex database. Leave Session files unchecked if you only want to remove the current DB row.`;
201
+ return `Delete ${pendingDelete.threads.length} selected threads from the Codex database. Enable Delete Session files if you also want to remove their rollout JSONL files.`;
202
+ };
203
+ var getDeleteTitle = (pendingDelete) => {
204
+ if (pendingDelete && pendingDelete.threads.length > 1) return `Delete ${pendingDelete.threads.length} Codex threads?`;
205
+ return "Delete Codex thread?";
206
+ };
189
207
  function ProjectDetailPage() {
208
+ const navigate = useNavigate({ from: Route.fullPath });
190
209
  const params = Route.useParams();
191
210
  const queryClient = useQueryClient();
192
211
  const threads = useSuspenseQuery(projectThreadsQueryOptions(params.project)).data;
193
212
  const { settings } = useSettings();
194
- const [searchInput, setSearchInput] = useState("");
213
+ const searchInput = Route.useSearch().q ?? "";
195
214
  const [pendingDelete, setPendingDelete] = useState(null);
196
215
  const [pendingExport, setPendingExport] = useState(null);
197
216
  const deferredSearch = useDeferredValue(searchInput.trim().toLowerCase());
@@ -231,7 +250,8 @@ function ProjectDetailPage() {
231
250
  outputFormat: options.outputFormat,
232
251
  project: params.project,
233
252
  selectedThreadCount: pendingExport.threadIds.length,
234
- selectedThreadIds: pendingExport.threadIds
253
+ selectedThreadIds: pendingExport.threadIds,
254
+ zipArchive: options.zipArchive
235
255
  });
236
256
  const download = pendingExport.threadIds.length === 1 ? await exportThreadFn({ data: {
237
257
  ...options,
@@ -276,6 +296,15 @@ function ProjectDetailPage() {
276
296
  ]);
277
297
  });
278
298
  const visibleThreadsById = useMemo(() => new Map(visibleThreads.map((thread) => [thread.thread.id, thread])), [visibleThreads]);
299
+ const updateSearchInput = (value) => {
300
+ startTransition(() => {
301
+ navigate({
302
+ params: true,
303
+ replace: true,
304
+ search: (previous) => withTextQuerySearch(previous, value)
305
+ });
306
+ });
307
+ };
279
308
  const lookupSelectedThreads = (threadIds) => {
280
309
  return threadIds.map((threadId) => visibleThreadsById.get(threadId) ?? null).filter((thread) => thread !== null);
281
310
  };
@@ -295,7 +324,7 @@ function ProjectDetailPage() {
295
324
  }), /* @__PURE__ */ jsx(ListSearchInput, {
296
325
  placeholder: "Search thread title, preview, or model",
297
326
  value: searchInput,
298
- onValueChange: setSearchInput
327
+ onValueChange: updateSearchInput
299
328
  })]
300
329
  }),
301
330
  eyebrow: "Codex project",
@@ -332,12 +361,12 @@ function ProjectDetailPage() {
332
361
  }
333
362
  }),
334
363
  /* @__PURE__ */ jsx(DeleteConfirmDialog, {
335
- confirmLabel: deleteThreadMutation.isPending ? "Deleting..." : pendingDelete && pendingDelete.threads.length > 1 ? "Delete threads" : "Delete thread",
364
+ confirmLabel: getDeleteConfirmLabel(pendingDelete, deleteThreadMutation.isPending),
336
365
  defaultDeleteSessionFiles: true,
337
- description: pendingDelete ? pendingDelete.threads.length === 1 ? `Delete the thread "${pendingDelete.threads[0].thread.title}" from the Codex database. Leave Session files unchecked if you only want to remove the current DB row.` : `Delete ${pendingDelete.threads.length} selected threads from the Codex database. Enable Delete Session files if you also want to remove their rollout JSONL files.` : "",
366
+ description: getDeleteDescription(pendingDelete),
338
367
  open: pendingDelete !== null,
339
368
  showDeleteSessionFilesOption: true,
340
- title: pendingDelete && pendingDelete.threads.length > 1 ? `Delete ${pendingDelete.threads.length} Codex threads?` : "Delete Codex thread?",
369
+ title: getDeleteTitle(pendingDelete),
341
370
  onConfirm: ({ deleteSessionFiles }) => {
342
371
  if (!pendingDelete) return;
343
372
  deleteThreadMutation.mutate({
@@ -350,6 +379,7 @@ function ProjectDetailPage() {
350
379
  }
351
380
  }),
352
381
  /* @__PURE__ */ jsx(ExportDialog, {
382
+ forceZipArchive: shouldForceZipArchive(pendingExport),
353
383
  open: pendingExport !== null,
354
384
  pending: exportThreadMutation.isPending,
355
385
  title: pendingExport ? `Export ${pendingExport.threadLabel}` : "Export thread",
@@ -1,13 +1,15 @@
1
1
  import { t as Button } from "./button-CmTDnzOn.js";
2
- import { i as projectsQueryOptions, s as deleteProjectFn } from "./codex-queries-ev_mRUzr.js";
2
+ import { i as projectsQueryOptions, s as deleteProjectFn } from "./codex-queries-CtgeZ7VL.js";
3
+ import { o as withTextQuerySearch } from "./route-search-ts4W9MJ9.js";
4
+ import { t as Route } from "./projects.index-DesYXwfi.js";
3
5
  import { t as DataTable } from "./data-table-Cdct823O.js";
4
6
  import { t as PageHeader } from "./page-header-VNSaM3xd.js";
5
7
  import { i as formatList, o as formatNumber, r as formatDateTime, s as formatTokens } from "./formatters-FJaGZgJk.js";
6
8
  import { i as DropdownMenuTrigger, n as DropdownMenuContent, r as DropdownMenuItem, t as DropdownMenu } from "./dropdown-menu-Dy_9t6TN.js";
7
9
  import { n as ListSearchInput, t as matchesTextQuery } from "./text-filter-CGKxMCKt.js";
8
- import { t as DeleteConfirmDialog } from "./delete-confirm-dialog-PCD7S0_M.js";
9
- import { useDeferredValue, useState } from "react";
10
- import { Link } from "@tanstack/react-router";
10
+ import { t as DeleteConfirmDialog } from "./delete-confirm-dialog-BcBNCxWB.js";
11
+ import { startTransition, useDeferredValue, useState } from "react";
12
+ import { Link, useNavigate } from "@tanstack/react-router";
11
13
  import { jsx, jsxs } from "react/jsx-runtime";
12
14
  import { useMutation, useQueryClient, useSuspenseQuery } from "@tanstack/react-query";
13
15
  import { MoreHorizontal, Trash2 } from "lucide-react";
@@ -98,15 +100,20 @@ function ProjectsTable({ projects, onDeleteProject }) {
98
100
  return /* @__PURE__ */ jsx(DataTable, {
99
101
  columns: columns(onDeleteProject),
100
102
  data: projects,
101
- emptyMessage: "No projects match the current search."
103
+ emptyMessage: "No projects match the current search.",
104
+ initialSorting: [{
105
+ desc: true,
106
+ id: "lastUpdatedAtMs"
107
+ }]
102
108
  });
103
109
  }
104
110
  //#endregion
105
111
  //#region src/routes/projects.index.tsx?tsr-split=component
106
112
  function ProjectsPage() {
113
+ const navigate = useNavigate({ from: Route.fullPath });
107
114
  const queryClient = useQueryClient();
108
115
  const projects = useSuspenseQuery(projectsQueryOptions()).data;
109
- const [searchInput, setSearchInput] = useState("");
116
+ const searchInput = Route.useSearch().q ?? "";
110
117
  const [pendingDelete, setPendingDelete] = useState(null);
111
118
  const deferredSearch = useDeferredValue(searchInput.trim().toLowerCase());
112
119
  const deleteProjectMutation = useMutation({
@@ -134,7 +141,14 @@ function ProjectsPage() {
134
141
  actions: /* @__PURE__ */ jsx(ListSearchInput, {
135
142
  placeholder: "Search project name, cwd, or model",
136
143
  value: searchInput,
137
- onValueChange: setSearchInput
144
+ onValueChange: (value) => {
145
+ startTransition(() => {
146
+ navigate({
147
+ replace: true,
148
+ search: (previous) => withTextQuerySearch(previous, value)
149
+ });
150
+ });
151
+ }
138
152
  }),
139
153
  eyebrow: "Inventory",
140
154
  subtitle: "Derived projects are grouped from the final basename of each thread cwd, matching the existing CLI behavior.",
@@ -0,0 +1,14 @@
1
+ import { i as projectsQueryOptions } from "./codex-queries-CtgeZ7VL.js";
2
+ import { i as parseTextQuerySearch } from "./route-search-ts4W9MJ9.js";
3
+ import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
+ //#region src/routes/projects.index.tsx
5
+ var $$splitErrorComponentImporter = () => import("./projects.index-BLXOx5eL.js");
6
+ var $$splitComponentImporter = () => import("./projects.index-BkLiF2FF.js");
7
+ var Route = createFileRoute("/projects/")({
8
+ component: lazyRouteComponent($$splitComponentImporter, "component"),
9
+ errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
10
+ loader: ({ context }) => context.queryClient.ensureQueryData(projectsQueryOptions()),
11
+ validateSearch: parseTextQuerySearch
12
+ });
13
+ //#endregion
14
+ export { Route as t };
@@ -0,0 +1,38 @@
1
+ //#region src/lib/route-search.ts
2
+ var asNonBlankString = (value) => {
3
+ if (typeof value !== "string") return;
4
+ const trimmed = value.trim();
5
+ return trimmed.length > 0 ? trimmed : void 0;
6
+ };
7
+ var parseTextQuerySearch = (search) => {
8
+ const q = asNonBlankString(search.q);
9
+ return q ? { q } : {};
10
+ };
11
+ var parseAnalyticsSearch = (search) => {
12
+ const project = asNonBlankString(search.project);
13
+ return project ? { project } : {};
14
+ };
15
+ var withTextQuerySearch = (current, query) => {
16
+ const next = { ...current };
17
+ const q = asNonBlankString(query);
18
+ if (q) next.q = q;
19
+ else delete next.q;
20
+ return next;
21
+ };
22
+ var withAnalyticsProjectSearch = (current, project) => {
23
+ const next = { ...current };
24
+ const trimmedProject = asNonBlankString(project);
25
+ if (trimmedProject) next.project = trimmedProject;
26
+ else delete next.project;
27
+ return next;
28
+ };
29
+ var ALL_PROJECTS_SELECT_VALUE = "__all__";
30
+ var PROJECT_SELECT_PREFIX = "project:";
31
+ var encodeAnalyticsProjectSelectValue = (project) => {
32
+ return project ? `${PROJECT_SELECT_PREFIX}${project}` : ALL_PROJECTS_SELECT_VALUE;
33
+ };
34
+ var decodeAnalyticsProjectSelectValue = (value) => {
35
+ return value === ALL_PROJECTS_SELECT_VALUE || !value.startsWith(PROJECT_SELECT_PREFIX) ? null : value.slice(8);
36
+ };
37
+ //#endregion
38
+ export { withAnalyticsProjectSearch as a, parseTextQuerySearch as i, encodeAnalyticsProjectSelectValue as n, withTextQuerySearch as o, parseAnalyticsSearch as r, decodeAnalyticsProjectSelectValue as t };