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,397 +0,0 @@
1
- import { i as asString, n as asNumber, r as asObject } from "./shared-DyhChtHf.js";
2
- import { t as splitOpenCodeThinkTaggedText } from "./opencode-think-tags-CAoD-EcZ.js";
3
- import { stat } from "node:fs/promises";
4
- import os from "node:os";
5
- import path from "node:path";
6
- import { Database, constants } from "bun:sqlite";
7
- import { pathToFileURL } from "node:url";
8
- //#region ../../src/lib/opencode-exporter-types.ts
9
- var getDefaultOpenCodeDataDir = (env = process.env, homeDir = os.homedir()) => {
10
- return path.join(env.XDG_DATA_HOME || path.join(homeDir, ".local", "share"), "opencode");
11
- };
12
- var DEFAULT_OPENCODE_DATA_DIR = getDefaultOpenCodeDataDir();
13
- var resolveOpenCodeDataDir = () => {
14
- const configured = process.env.SPIRACHA_OPENCODE_DATA_DIR?.trim() || process.env.SPIRACHA_OPENCODE_DIR?.trim();
15
- return configured ? configured : DEFAULT_OPENCODE_DATA_DIR;
16
- };
17
- var resolveOpenCodeDbPath = () => {
18
- const configured = process.env.SPIRACHA_OPENCODE_DB?.trim();
19
- return configured ? configured : path.join(resolveOpenCodeDataDir(), "opencode.db");
20
- };
21
- //#endregion
22
- //#region ../../src/lib/opencode-db.ts
23
- var OPENCODE_READONLY_DB_OPEN_FLAGS = constants.SQLITE_OPEN_READONLY | constants.SQLITE_OPEN_URI;
24
- var MAIN_SESSION_FILTER = "s.parent_id IS NULL";
25
- var pathExists = async (target) => {
26
- return await stat(target).then(() => true).catch(() => false);
27
- };
28
- var getOpenCodeReadonlyDbUri = (dbPath) => {
29
- const url = pathToFileURL(dbPath);
30
- url.searchParams.set("mode", "ro");
31
- return url.href;
32
- };
33
- var openOpenCodeReadonlyDb = (dbPath) => {
34
- return new Database(getOpenCodeReadonlyDbUri(dbPath), OPENCODE_READONLY_DB_OPEN_FLAGS);
35
- };
36
- var parseJsonValue = (value) => {
37
- if (!value) return null;
38
- try {
39
- return JSON.parse(value);
40
- } catch {
41
- return value;
42
- }
43
- };
44
- var parseJsonObject = (value) => {
45
- return asObject(parseJsonValue(value)) ?? {};
46
- };
47
- var cleanLabel = (value) => {
48
- const cleaned = value?.replace(/\s+/g, " ").trim();
49
- return cleaned ? cleaned : null;
50
- };
51
- var getWorkspaceLabel = (name, worktree) => {
52
- const named = cleanLabel(name);
53
- if (named) return named;
54
- if (worktree === "/") return "(global)";
55
- return path.basename(worktree.replace(/\/+$/u, "")) || worktree;
56
- };
57
- var getWorkspaceKey = (projectId) => `project:${projectId}`;
58
- var getProjectIdFromWorkspaceKey = (workspaceKey) => {
59
- return workspaceKey.startsWith("project:") ? workspaceKey.slice(8) : null;
60
- };
61
- var parseModelInfo = (value) => {
62
- const parsed = parseJsonValue(value);
63
- if (typeof parsed === "string") return {
64
- id: parsed,
65
- providerID: null,
66
- raw: parsed,
67
- variant: null
68
- };
69
- const model = asObject(parsed);
70
- return {
71
- id: asString(model?.id ?? null),
72
- providerID: asString(model?.providerID ?? null),
73
- raw: parsed,
74
- variant: asString(model?.variant ?? null)
75
- };
76
- };
77
- var formatModelLabel = (model) => {
78
- if (typeof model.raw === "string") return cleanLabel(model.raw);
79
- const id = cleanLabel(model.id);
80
- const variant = cleanLabel(model.variant);
81
- if (!id) return null;
82
- return variant ? `${id} ${variant}` : id;
83
- };
84
- var toWorkspaceGroup = (row) => {
85
- const label = getWorkspaceLabel(row.name, row.worktree);
86
- return {
87
- archivedSessionCount: row.archivedSessionCount,
88
- key: getWorkspaceKey(row.projectId),
89
- label,
90
- lastActiveMs: row.lastActiveMs,
91
- messageCount: row.messageCount,
92
- partCount: row.partCount,
93
- projectId: row.projectId,
94
- sessionCount: row.sessionCount,
95
- uri: pathToFileURL(row.worktree).href,
96
- worktree: row.worktree
97
- };
98
- };
99
- var toSessionSummary = (row) => {
100
- const label = getWorkspaceLabel(row.projectName, row.worktree);
101
- const model = parseModelInfo(row.model);
102
- return {
103
- agent: row.agent,
104
- archivedAtMs: row.archivedAtMs,
105
- cost: row.cost,
106
- createdAtMs: row.createdAtMs,
107
- directory: row.directory,
108
- lastUpdatedAtMs: row.lastUpdatedAtMs,
109
- messageCount: row.messageCount,
110
- model,
111
- modelLabel: formatModelLabel(model),
112
- partCount: row.partCount,
113
- path: row.path,
114
- permission: row.permission,
115
- projectId: row.projectId,
116
- renderablePartCount: row.renderablePartCount,
117
- sessionId: row.sessionId,
118
- slug: row.slug,
119
- summaryAdditions: row.summaryAdditions,
120
- summaryDeletions: row.summaryDeletions,
121
- summaryFiles: row.summaryFiles,
122
- textPartCount: row.textPartCount,
123
- title: cleanLabel(row.title) ?? row.sessionId,
124
- tokensCacheRead: row.tokensCacheRead,
125
- tokensCacheWrite: row.tokensCacheWrite,
126
- tokensInput: row.tokensInput,
127
- tokensOutput: row.tokensOutput,
128
- tokensReasoning: row.tokensReasoning,
129
- toolPartCount: row.toolPartCount,
130
- totalTokens: row.tokensInput + row.tokensOutput + row.tokensReasoning + row.tokensCacheRead + row.tokensCacheWrite,
131
- workspaceKey: getWorkspaceKey(row.projectId),
132
- workspaceLabel: label,
133
- worktree: row.worktree
134
- };
135
- };
136
- var workspaceRowsQuery = `
137
- SELECT
138
- p.id AS projectId,
139
- p.name AS name,
140
- p.worktree AS worktree,
141
- (
142
- SELECT COUNT(*)
143
- FROM session s
144
- WHERE s.project_id = p.id AND ${MAIN_SESSION_FILTER}
145
- ) AS sessionCount,
146
- (
147
- SELECT COUNT(*)
148
- FROM session s
149
- WHERE s.project_id = p.id AND ${MAIN_SESSION_FILTER} AND s.time_archived IS NOT NULL
150
- ) AS archivedSessionCount,
151
- (
152
- SELECT COUNT(*)
153
- FROM message m
154
- JOIN session s ON s.id = m.session_id
155
- WHERE s.project_id = p.id AND ${MAIN_SESSION_FILTER}
156
- ) AS messageCount,
157
- (
158
- SELECT COUNT(*)
159
- FROM part prt
160
- JOIN session s ON s.id = prt.session_id
161
- WHERE s.project_id = p.id AND ${MAIN_SESSION_FILTER}
162
- ) AS partCount,
163
- COALESCE((
164
- SELECT MAX(s.time_updated)
165
- FROM session s
166
- WHERE s.project_id = p.id AND ${MAIN_SESSION_FILTER}
167
- ), p.time_updated) AS lastActiveMs
168
- FROM project p
169
- `;
170
- var sessionSelectQuery = `
171
- SELECT
172
- s.id AS sessionId,
173
- s.project_id AS projectId,
174
- p.name AS projectName,
175
- p.worktree AS worktree,
176
- s.slug AS slug,
177
- s.directory AS directory,
178
- s.title AS title,
179
- s.permission AS permission,
180
- s.time_created AS createdAtMs,
181
- s.time_updated AS lastUpdatedAtMs,
182
- s.time_archived AS archivedAtMs,
183
- s.path AS path,
184
- s.agent AS agent,
185
- s.model AS model,
186
- s.cost AS cost,
187
- s.tokens_input AS tokensInput,
188
- s.tokens_output AS tokensOutput,
189
- s.tokens_reasoning AS tokensReasoning,
190
- s.tokens_cache_read AS tokensCacheRead,
191
- s.tokens_cache_write AS tokensCacheWrite,
192
- s.summary_files AS summaryFiles,
193
- s.summary_additions AS summaryAdditions,
194
- s.summary_deletions AS summaryDeletions,
195
- (
196
- SELECT COUNT(*)
197
- FROM message m
198
- WHERE m.session_id = s.id
199
- ) AS messageCount,
200
- (
201
- SELECT COUNT(*)
202
- FROM part prt
203
- WHERE prt.session_id = s.id
204
- ) AS partCount,
205
- (
206
- SELECT COUNT(*)
207
- FROM part prt
208
- WHERE prt.session_id = s.id AND json_extract(prt.data, '$.type') = 'text'
209
- ) AS textPartCount,
210
- (
211
- SELECT COUNT(*)
212
- FROM part prt
213
- WHERE prt.session_id = s.id AND json_extract(prt.data, '$.type') = 'tool'
214
- ) AS toolPartCount,
215
- (
216
- SELECT COUNT(*)
217
- FROM part prt
218
- WHERE prt.session_id = s.id
219
- AND (
220
- (
221
- json_extract(prt.data, '$.type') IN ('text', 'reasoning')
222
- AND trim(COALESCE(json_extract(prt.data, '$.text'), '')) <> ''
223
- )
224
- OR json_extract(prt.data, '$.type') = 'tool'
225
- )
226
- ) AS renderablePartCount
227
- FROM session s
228
- JOIN project p ON p.id = s.project_id
229
- `;
230
- var listOpenCodeWorkspaceGroups = async (dbPath = resolveOpenCodeDbPath()) => {
231
- if (!await pathExists(dbPath)) return [];
232
- const db = openOpenCodeReadonlyDb(dbPath);
233
- try {
234
- return db.query(`${workspaceRowsQuery} ORDER BY lastActiveMs DESC, p.worktree ASC`).all().map(toWorkspaceGroup);
235
- } finally {
236
- db.close();
237
- }
238
- };
239
- var readSessionSummaries = (db, whereSql, params) => {
240
- return db.query(`${sessionSelectQuery} WHERE ${whereSql} ORDER BY s.time_updated DESC, s.title ASC`).all(...params).map(toSessionSummary);
241
- };
242
- var listOpenCodeSessionsForGroup = async (workspaceKey, dbPath = resolveOpenCodeDbPath()) => {
243
- const projectId = getProjectIdFromWorkspaceKey(workspaceKey);
244
- if (!projectId || !await pathExists(dbPath)) return [];
245
- const db = openOpenCodeReadonlyDb(dbPath);
246
- try {
247
- return readSessionSummaries(db, `s.project_id = ? AND ${MAIN_SESSION_FILTER}`, [projectId]);
248
- } finally {
249
- db.close();
250
- }
251
- };
252
- var readOpenCodeSessionSummary = (db, sessionId) => {
253
- return readSessionSummaries(db, `s.id = ? AND ${MAIN_SESSION_FILTER}`, [sessionId])[0] ?? null;
254
- };
255
- var getMessageRole = (raw) => asString(raw.role ?? null) ?? "unknown";
256
- var toPartType = (value) => {
257
- switch (value) {
258
- case "reasoning":
259
- case "step-finish":
260
- case "step-start":
261
- case "text":
262
- case "tool": return value;
263
- default: return "unknown";
264
- }
265
- };
266
- var formatJsonLike = (value) => {
267
- if (value === void 0 || value === null) return null;
268
- if (typeof value === "string") return value;
269
- return JSON.stringify(value, null, 2);
270
- };
271
- var parseTimeMs = (raw, key) => {
272
- return asNumber(asObject(raw.time ?? null)?.[key] ?? null);
273
- };
274
- var parseToolTimeMs = (raw, key) => {
275
- return asNumber((asObject(asObject(raw.state ?? null)?.time ?? null) ?? asObject(raw.time ?? null))?.[key] ?? null);
276
- };
277
- var parseStepTokens = (value) => {
278
- const tokens = asObject(value ?? null);
279
- if (!tokens) return null;
280
- const cache = asObject(tokens.cache ?? null);
281
- return {
282
- cacheRead: asNumber(cache?.read ?? null) ?? 0,
283
- cacheWrite: asNumber(cache?.write ?? null) ?? 0,
284
- input: asNumber(tokens.input ?? null) ?? 0,
285
- output: asNumber(tokens.output ?? null) ?? 0,
286
- reasoning: asNumber(tokens.reasoning ?? null) ?? 0,
287
- total: asNumber(tokens.total ?? null) ?? 0
288
- };
289
- };
290
- var parseTextOpenCodePart = (base) => ({
291
- ...base,
292
- endTimeMs: parseTimeMs(base.raw, "end"),
293
- startTimeMs: parseTimeMs(base.raw, "start"),
294
- text: asString(base.raw.text ?? null) ?? ""
295
- });
296
- var parseToolOpenCodePart = (base) => {
297
- const state = asObject(base.raw.state ?? null);
298
- return {
299
- ...base,
300
- argumentsText: formatJsonLike(state?.input),
301
- callId: asString(base.raw.callID ?? null) ?? asString(base.raw.callId ?? null),
302
- endTimeMs: parseToolTimeMs(base.raw, "end"),
303
- outputText: formatJsonLike(state?.output),
304
- startTimeMs: parseToolTimeMs(base.raw, "start"),
305
- status: asString(state?.status ?? null),
306
- title: asString(state?.title ?? null),
307
- toolName: asString(base.raw.tool ?? null) ?? "unknown"
308
- };
309
- };
310
- var parseStepFinishOpenCodePart = (base) => ({
311
- ...base,
312
- reason: asString(base.raw.reason ?? null),
313
- snapshot: asString(base.raw.snapshot ?? null),
314
- tokens: parseStepTokens(base.raw.tokens)
315
- });
316
- var parseStepStartOpenCodePart = (base) => ({
317
- ...base,
318
- snapshot: asString(base.raw.snapshot ?? null)
319
- });
320
- var parseOpenCodePartByType = (base) => {
321
- switch (base.type) {
322
- case "reasoning":
323
- case "text": return parseTextOpenCodePart(base);
324
- case "tool": return parseToolOpenCodePart(base);
325
- case "step-finish": return parseStepFinishOpenCodePart(base);
326
- case "step-start": return parseStepStartOpenCodePart(base);
327
- case "unknown": return base;
328
- }
329
- };
330
- var parseOpenCodePart = (row, role) => {
331
- const raw = parseJsonObject(row.data);
332
- return parseOpenCodePartByType({
333
- createdAtMs: row.timeCreated,
334
- messageId: row.messageId,
335
- partId: row.partId,
336
- raw,
337
- role,
338
- type: toPartType(raw.type),
339
- updatedAtMs: row.timeUpdated
340
- });
341
- };
342
- var isRenderablePart = (part) => {
343
- if (part.type === "text" || part.type === "reasoning") {
344
- const { reasoningBlocks, visibleText } = splitOpenCodeThinkTaggedText(part.text ?? "");
345
- return Boolean(visibleText.trim() || reasoningBlocks.length > 0);
346
- }
347
- if (part.type === "tool") return Boolean(part.toolName || part.outputText?.trim() || part.argumentsText?.trim());
348
- return false;
349
- };
350
- var readMessages = (db, sessionId) => {
351
- const messageRows = db.query(`SELECT id AS messageId, time_created AS timeCreated, time_updated AS timeUpdated, data
352
- FROM message
353
- WHERE session_id = ?
354
- ORDER BY time_created ASC, id ASC`).all(sessionId);
355
- const partRows = db.query(`SELECT id AS partId, message_id AS messageId, time_created AS timeCreated, time_updated AS timeUpdated, data
356
- FROM part
357
- WHERE session_id = ?
358
- ORDER BY time_created ASC, id ASC`).all(sessionId);
359
- const partsByMessageId = /* @__PURE__ */ new Map();
360
- for (const part of partRows) {
361
- const parts = partsByMessageId.get(part.messageId) ?? [];
362
- parts.push(part);
363
- partsByMessageId.set(part.messageId, parts);
364
- }
365
- return messageRows.map((message) => {
366
- const raw = parseJsonObject(message.data);
367
- const role = getMessageRole(raw);
368
- const parts = (partsByMessageId.get(message.messageId) ?? []).map((part) => parseOpenCodePart(part, role));
369
- return {
370
- createdAtMs: message.timeCreated,
371
- messageId: message.messageId,
372
- parts,
373
- raw,
374
- role,
375
- updatedAtMs: message.timeUpdated
376
- };
377
- });
378
- };
379
- var readOpenCodeSessionTranscript = async (dbPath, sessionId) => {
380
- if (!await pathExists(dbPath)) return null;
381
- const db = openOpenCodeReadonlyDb(dbPath);
382
- try {
383
- const session = readOpenCodeSessionSummary(db, sessionId);
384
- if (!session) return null;
385
- const messages = readMessages(db, sessionId);
386
- return {
387
- messages,
388
- partCount: messages.reduce((total, message) => total + message.parts.length, 0),
389
- renderablePartCount: messages.reduce((total, message) => total + message.parts.filter(isRenderablePart).length, 0),
390
- session
391
- };
392
- } finally {
393
- db.close();
394
- }
395
- };
396
- //#endregion
397
- export { listOpenCodeSessionsForGroup, listOpenCodeWorkspaceGroups, readOpenCodeSessionTranscript, resolveOpenCodeDbPath };
@@ -1,50 +0,0 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as isRetryableSqliteError } from "./sqlite-error-LZDrnxdd.js";
3
- import { t as createSsrRpc } from "./createSsrRpc-C754NPki.js";
4
- import { z } from "zod";
5
- import { queryOptions } from "@tanstack/react-query";
6
- //#region src/lib/opencode-server.ts
7
- var workspaceSchema = z.object({ workspaceKey: z.string().min(1) });
8
- var sessionSchema = z.object({ sessionId: z.string().min(1) });
9
- var exportSessionSchema = z.object({
10
- includeCommentary: z.boolean().default(true),
11
- includeMetadata: z.boolean().default(true),
12
- includeTools: z.boolean().default(true),
13
- outputFormat: z.enum(["md", "txt"]).default("md"),
14
- sessionId: z.string().min(1),
15
- zipArchive: z.boolean().default(false)
16
- });
17
- var listOpenCodeWorkspacesFn = createServerFn({ method: "GET" }).handler(createSsrRpc("1579290293aa3c05864abeb16b20e7fbe85fe73b2518d8ba75dbc536dfc02b88"));
18
- var listOpenCodeSessionsFn = createServerFn({ method: "GET" }).validator(workspaceSchema).handler(createSsrRpc("1d8e6aec1907ff012d654cbfaa89e559078a0c2d80a02f4b257d9a179a002e36"));
19
- var getOpenCodeSessionDetailFn = createServerFn({ method: "GET" }).validator(sessionSchema).handler(createSsrRpc("0fdecc913045cc27ae7462cd3c143af926650dece043ca1a111e0e83a3cd327b"));
20
- var exportOpenCodeSessionFn = createServerFn({ method: "POST" }).validator(exportSessionSchema).handler(createSsrRpc("c051a060ff7f4d39e308fd586d9f81f576b53e96f37bdc56dd80112679f01218"));
21
- //#endregion
22
- //#region src/lib/opencode-queries.ts
23
- var retrySqliteQuery = (failureCount, error) => {
24
- return failureCount < 3 && isRetryableSqliteError(error);
25
- };
26
- var retryDelay = (attemptIndex) => {
27
- return [150, 400][attemptIndex] ?? 800;
28
- };
29
- var openCodeWorkspacesQueryOptions = () => queryOptions({
30
- queryFn: () => listOpenCodeWorkspacesFn(),
31
- queryKey: ["opencode-workspaces"],
32
- retry: retrySqliteQuery,
33
- retryDelay
34
- });
35
- var openCodeSessionsQueryOptions = (workspaceKey) => queryOptions({
36
- enabled: workspaceKey !== null,
37
- queryFn: () => listOpenCodeSessionsFn({ data: { workspaceKey: workspaceKey ?? "" } }),
38
- queryKey: ["opencode-sessions", workspaceKey ?? "none"],
39
- retry: retrySqliteQuery,
40
- retryDelay
41
- });
42
- var openCodeSessionDetailQueryOptions = (sessionId) => queryOptions({
43
- enabled: sessionId !== null,
44
- queryFn: () => getOpenCodeSessionDetailFn({ data: { sessionId: sessionId ?? "" } }),
45
- queryKey: ["opencode-session", sessionId ?? "none"],
46
- retry: retrySqliteQuery,
47
- retryDelay
48
- });
49
- //#endregion
50
- export { exportOpenCodeSessionFn as i, openCodeSessionsQueryOptions as n, openCodeWorkspacesQueryOptions as r, openCodeSessionDetailQueryOptions as t };
@@ -1,72 +0,0 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createServerRpc } from "./createServerRpc-CF_DEwnm.js";
3
- import { t as renderSourceSessionDownload } from "./source-session-export-server-DNutCawb.js";
4
- import { z } from "zod";
5
- //#region src/lib/opencode-server.ts?tss-serverfn-split
6
- var workspaceSchema = z.object({ workspaceKey: z.string().min(1) });
7
- var sessionSchema = z.object({ sessionId: z.string().min(1) });
8
- var exportSessionSchema = z.object({
9
- includeCommentary: z.boolean().default(true),
10
- includeMetadata: z.boolean().default(true),
11
- includeTools: z.boolean().default(true),
12
- outputFormat: z.enum(["md", "txt"]).default("md"),
13
- sessionId: z.string().min(1),
14
- zipArchive: z.boolean().default(false)
15
- });
16
- var listOpenCodeWorkspacesFn_createServerFn_handler = createServerRpc({
17
- id: "1579290293aa3c05864abeb16b20e7fbe85fe73b2518d8ba75dbc536dfc02b88",
18
- name: "listOpenCodeWorkspacesFn",
19
- filename: "src/lib/opencode-server.ts"
20
- }, (opts) => listOpenCodeWorkspacesFn.__executeServer(opts));
21
- var listOpenCodeWorkspacesFn = createServerFn({ method: "GET" }).handler(listOpenCodeWorkspacesFn_createServerFn_handler, async () => {
22
- const { listOpenCodeWorkspaceGroups } = await import("./opencode-db-BM7KjOzc.js");
23
- return listOpenCodeWorkspaceGroups();
24
- });
25
- var listOpenCodeSessionsFn_createServerFn_handler = createServerRpc({
26
- id: "1d8e6aec1907ff012d654cbfaa89e559078a0c2d80a02f4b257d9a179a002e36",
27
- name: "listOpenCodeSessionsFn",
28
- filename: "src/lib/opencode-server.ts"
29
- }, (opts) => listOpenCodeSessionsFn.__executeServer(opts));
30
- var listOpenCodeSessionsFn = createServerFn({ method: "GET" }).validator(workspaceSchema).handler(listOpenCodeSessionsFn_createServerFn_handler, async ({ data }) => {
31
- const { listOpenCodeSessionsForGroup } = await import("./opencode-db-BM7KjOzc.js");
32
- return listOpenCodeSessionsForGroup(data.workspaceKey);
33
- });
34
- var loadOpenCodeSessionTranscript = async (sessionId) => {
35
- const { readOpenCodeSessionTranscript, resolveOpenCodeDbPath } = await import("./opencode-db-BM7KjOzc.js");
36
- const transcript = await readOpenCodeSessionTranscript(resolveOpenCodeDbPath(), sessionId);
37
- if (!transcript) throw new Error(`OpenCode session not found: ${sessionId}`);
38
- return transcript;
39
- };
40
- var getOpenCodeSessionDetailFn_createServerFn_handler = createServerRpc({
41
- id: "0fdecc913045cc27ae7462cd3c143af926650dece043ca1a111e0e83a3cd327b",
42
- name: "getOpenCodeSessionDetailFn",
43
- filename: "src/lib/opencode-server.ts"
44
- }, (opts) => getOpenCodeSessionDetailFn.__executeServer(opts));
45
- var getOpenCodeSessionDetailFn = createServerFn({ method: "GET" }).validator(sessionSchema).handler(getOpenCodeSessionDetailFn_createServerFn_handler, async ({ data }) => {
46
- return loadOpenCodeSessionTranscript(data.sessionId);
47
- });
48
- var exportOpenCodeSessionFn_createServerFn_handler = createServerRpc({
49
- id: "c051a060ff7f4d39e308fd586d9f81f576b53e96f37bdc56dd80112679f01218",
50
- name: "exportOpenCodeSessionFn",
51
- filename: "src/lib/opencode-server.ts"
52
- }, (opts) => exportOpenCodeSessionFn.__executeServer(opts));
53
- var exportOpenCodeSessionFn = createServerFn({ method: "POST" }).validator(exportSessionSchema).handler(exportOpenCodeSessionFn_createServerFn_handler, async ({ data }) => {
54
- const { renderOpenCodeTranscript } = await import("./opencode-transcript-BNTcGNym.js");
55
- const transcript = await loadOpenCodeSessionTranscript(data.sessionId);
56
- const content = renderOpenCodeTranscript(transcript, {
57
- includeCommentary: data.includeCommentary,
58
- includeMetadata: data.includeMetadata,
59
- includeTools: data.includeTools,
60
- outputFormat: data.outputFormat
61
- });
62
- if (!content) throw new Error(`OpenCode session has no exportable content: ${data.sessionId}`);
63
- return renderSourceSessionDownload({
64
- content,
65
- fallbackBaseName: "opencode-session",
66
- fileBaseName: transcript.session.title || transcript.session.slug || transcript.session.sessionId,
67
- outputFormat: data.outputFormat,
68
- zipArchive: data.zipArchive
69
- });
70
- });
71
- //#endregion
72
- export { exportOpenCodeSessionFn_createServerFn_handler, getOpenCodeSessionDetailFn_createServerFn_handler, listOpenCodeSessionsFn_createServerFn_handler, listOpenCodeWorkspacesFn_createServerFn_handler };