spiracha 1.5.0 → 2.1.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 (401) hide show
  1. package/AGENTS.md +114 -205
  2. package/README.md +94 -269
  3. package/apps/ui/AGENTS.md +17 -7
  4. package/apps/ui/README.md +52 -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 +245 -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 +125 -0
  11. package/apps/ui/src/components/breadcrumbs.tsx +71 -0
  12. package/apps/ui/src/components/claude-code-sessions-table.tsx +150 -0
  13. package/apps/ui/src/components/claude-code-workspaces-table.tsx +57 -0
  14. package/apps/ui/src/components/cursor-threads-table.tsx +152 -0
  15. package/apps/ui/src/components/cursor-workspaces-table.tsx +140 -0
  16. package/apps/ui/src/components/data-table.tsx +243 -0
  17. package/apps/ui/src/components/delete-confirm-dialog.tsx +88 -0
  18. package/apps/ui/src/components/export-dialog.tsx +174 -0
  19. package/apps/ui/src/components/grok-sessions-table.tsx +146 -0
  20. package/apps/ui/src/components/grok-workspaces-table.tsx +53 -0
  21. package/apps/ui/src/components/json-panel.tsx +17 -0
  22. package/apps/ui/src/components/kiro-sessions-table.tsx +148 -0
  23. package/apps/ui/src/components/kiro-workspaces-table.tsx +53 -0
  24. package/apps/ui/src/components/list-search-input.tsx +18 -0
  25. package/apps/ui/src/components/loading-panel.tsx +23 -0
  26. package/apps/ui/src/components/metadata-section.tsx +31 -0
  27. package/apps/ui/src/components/metric-card.tsx +19 -0
  28. package/apps/ui/src/components/opencode-sessions-table.tsx +164 -0
  29. package/apps/ui/src/components/opencode-workspaces-table.tsx +57 -0
  30. package/apps/ui/src/components/page-header.tsx +39 -0
  31. package/apps/ui/src/components/projects-loading-state.tsx +74 -0
  32. package/apps/ui/src/components/projects-table.tsx +108 -0
  33. package/apps/ui/src/components/qoder-sessions-table.tsx +133 -0
  34. package/apps/ui/src/components/qoder-workspaces-table.tsx +57 -0
  35. package/apps/ui/src/components/recent-threads-list.tsx +52 -0
  36. package/apps/ui/src/components/reload-error-panel.tsx +20 -0
  37. package/apps/ui/src/components/selection-actions-toolbar.tsx +80 -0
  38. package/apps/ui/src/components/text-document-panel.tsx +19 -0
  39. package/apps/ui/src/components/theme-toggle.tsx +48 -0
  40. package/apps/ui/src/components/threads-table.tsx +165 -0
  41. package/apps/ui/src/components/transcript-view.tsx +648 -0
  42. package/apps/ui/src/components/ui/alert-dialog.tsx +160 -0
  43. package/apps/ui/src/components/ui/badge.tsx +45 -0
  44. package/apps/ui/src/components/ui/button.tsx +62 -0
  45. package/apps/ui/src/components/ui/checkbox.tsx +29 -0
  46. package/apps/ui/src/components/ui/dialog.tsx +137 -0
  47. package/apps/ui/src/components/ui/dropdown-menu.tsx +217 -0
  48. package/apps/ui/src/components/ui/input.tsx +21 -0
  49. package/apps/ui/src/components/ui/scroll-area.tsx +46 -0
  50. package/apps/ui/src/components/ui/select.tsx +163 -0
  51. package/apps/ui/src/components/ui/separator.tsx +28 -0
  52. package/apps/ui/src/components/ui/sheet.tsx +107 -0
  53. package/apps/ui/src/components/ui/skeleton.tsx +7 -0
  54. package/apps/ui/src/components/ui/table.tsx +76 -0
  55. package/apps/ui/src/components/ui/tabs.tsx +71 -0
  56. package/apps/ui/src/components/ui/tooltip.tsx +44 -0
  57. package/apps/ui/src/integrations/tanstack-query/devtools.tsx +6 -0
  58. package/apps/ui/src/integrations/tanstack-query/root-provider.tsx +10 -0
  59. package/apps/ui/src/lib/antigravity-conversation-state.ts +41 -0
  60. package/apps/ui/src/lib/antigravity-queries.ts +33 -0
  61. package/apps/ui/src/lib/antigravity-server.ts +273 -0
  62. package/apps/ui/src/lib/antigravity-transcript-events.ts +343 -0
  63. package/apps/ui/src/lib/claude-code-queries.ts +34 -0
  64. package/apps/ui/src/lib/claude-code-server.ts +243 -0
  65. package/apps/ui/src/lib/claude-code-transcript-events.ts +161 -0
  66. package/apps/ui/src/lib/codex-queries.ts +82 -0
  67. package/apps/ui/src/lib/codex-server.ts +291 -0
  68. package/apps/ui/src/lib/cursor-queries.ts +37 -0
  69. package/apps/ui/src/lib/cursor-server.ts +315 -0
  70. package/apps/ui/src/lib/cursor-transcript-events.ts +229 -0
  71. package/apps/ui/src/lib/download.ts +166 -0
  72. package/apps/ui/src/lib/formatters.ts +147 -0
  73. package/apps/ui/src/lib/grok-queries.ts +22 -0
  74. package/apps/ui/src/lib/grok-server.ts +169 -0
  75. package/apps/ui/src/lib/grok-transcript-events.ts +149 -0
  76. package/apps/ui/src/lib/kiro-queries.ts +22 -0
  77. package/apps/ui/src/lib/kiro-server.ts +151 -0
  78. package/apps/ui/src/lib/kiro-transcript-events.ts +113 -0
  79. package/apps/ui/src/lib/opencode-queries.ts +37 -0
  80. package/apps/ui/src/lib/opencode-server.ts +151 -0
  81. package/apps/ui/src/lib/opencode-transcript-events.ts +221 -0
  82. package/apps/ui/src/lib/package-metadata.ts +16 -0
  83. package/apps/ui/src/lib/path-utils.ts +13 -0
  84. package/apps/ui/src/lib/qoder-queries.ts +22 -0
  85. package/apps/ui/src/lib/qoder-server.ts +135 -0
  86. package/apps/ui/src/lib/qoder-transcript-events.ts +139 -0
  87. package/apps/ui/src/lib/route-search.ts +182 -0
  88. package/apps/ui/src/lib/settings-store.tsx +59 -0
  89. package/apps/ui/src/lib/source-session-export-server.ts +139 -0
  90. package/apps/ui/src/lib/text-filter.ts +22 -0
  91. package/apps/ui/src/lib/thread-id.ts +3 -0
  92. package/apps/ui/src/lib/thread-transcript-load.ts +15 -0
  93. package/apps/ui/src/lib/thread-transcript-stats.ts +57 -0
  94. package/apps/ui/src/lib/utils.ts +7 -0
  95. package/apps/ui/src/lib/workspace-delete-navigation.ts +12 -0
  96. package/apps/ui/src/routeTree.gen.ts +837 -0
  97. package/apps/ui/src/router.tsx +20 -0
  98. package/apps/ui/src/routes/$threadId.tsx +22 -0
  99. package/apps/ui/src/routes/__root.tsx +127 -0
  100. package/apps/ui/src/routes/analytics.tsx +143 -0
  101. package/apps/ui/src/routes/antigravity-conversations.$conversationId.tsx +504 -0
  102. package/apps/ui/src/routes/antigravity.$workspaceKey.tsx +365 -0
  103. package/apps/ui/src/routes/antigravity.index.tsx +51 -0
  104. package/apps/ui/src/routes/api.v1.conversation-query.ts +12 -0
  105. package/apps/ui/src/routes/api.v1.conversations.$source.$id.export.ts +12 -0
  106. package/apps/ui/src/routes/api.v1.conversations.$source.$id.ts +16 -0
  107. package/apps/ui/src/routes/api.v1.conversations.delete.ts +12 -0
  108. package/apps/ui/src/routes/api.v1.conversations.export.ts +12 -0
  109. package/apps/ui/src/routes/api.v1.conversations.ts +12 -0
  110. package/apps/ui/src/routes/api.v1.resolve.ts +12 -0
  111. package/apps/ui/src/routes/api.v1.sources.ts +12 -0
  112. package/apps/ui/src/routes/claude-code-sessions.$sessionId.tsx +468 -0
  113. package/apps/ui/src/routes/claude-code.$workspaceKey.tsx +274 -0
  114. package/apps/ui/src/routes/claude-code.index.tsx +48 -0
  115. package/apps/ui/src/routes/codex.$project.tsx +390 -0
  116. package/apps/ui/src/routes/codex.index.tsx +116 -0
  117. package/apps/ui/src/routes/cursor-threads.$composerId.tsx +435 -0
  118. package/apps/ui/src/routes/cursor.$workspaceKey.tsx +426 -0
  119. package/apps/ui/src/routes/cursor.index.tsx +120 -0
  120. package/apps/ui/src/routes/grok-sessions.$sessionId.tsx +388 -0
  121. package/apps/ui/src/routes/grok.$workspaceKey.tsx +301 -0
  122. package/apps/ui/src/routes/grok.index.tsx +48 -0
  123. package/apps/ui/src/routes/index.tsx +124 -0
  124. package/apps/ui/src/routes/kiro-sessions.$sessionId.tsx +396 -0
  125. package/apps/ui/src/routes/kiro.$workspaceKey.tsx +303 -0
  126. package/apps/ui/src/routes/kiro.index.tsx +48 -0
  127. package/apps/ui/src/routes/opencode-sessions.$sessionId.tsx +420 -0
  128. package/apps/ui/src/routes/opencode.$workspaceKey.tsx +327 -0
  129. package/apps/ui/src/routes/opencode.index.tsx +61 -0
  130. package/apps/ui/src/routes/qoder-sessions.$sessionId.tsx +344 -0
  131. package/apps/ui/src/routes/qoder.$workspaceKey.tsx +186 -0
  132. package/apps/ui/src/routes/qoder.index.tsx +48 -0
  133. package/apps/ui/src/routes/settings.tsx +91 -0
  134. package/apps/ui/src/routes/threads.$threadId.tsx +1103 -0
  135. package/apps/ui/src/styles.css +122 -0
  136. package/apps/ui/tsconfig.json +29 -0
  137. package/apps/ui/vite.config.ts +84 -0
  138. package/bin/spiracha.ts +32 -0
  139. package/package.json +54 -80
  140. package/src/client.ts +423 -0
  141. package/src/lib/antigravity-db.ts +414 -44
  142. package/src/lib/antigravity-exporter-types.ts +4 -0
  143. package/src/lib/antigravity-projects.ts +201 -0
  144. package/src/lib/claude-code-db.ts +498 -32
  145. package/src/lib/claude-code-exporter-types.ts +5 -0
  146. package/src/lib/claude-code-transcript-phase.ts +60 -1
  147. package/src/lib/claude-code-transcript.ts +8 -5
  148. package/src/lib/codex-analytics.ts +1 -1
  149. package/src/lib/codex-browser-db.ts +410 -74
  150. package/src/lib/codex-browser-export.ts +29 -41
  151. package/src/lib/codex-browser-types.ts +1 -1
  152. package/src/lib/codex-thread-cache.ts +41 -13
  153. package/src/lib/codex-thread-parser.ts +86 -35
  154. package/src/lib/{codex-exporter-types.ts → codex-thread-types.ts} +2 -30
  155. package/src/lib/codex-transcript-filter.ts +31 -0
  156. package/src/lib/{codex-exporter-transcript.ts → codex-transcript-renderer.ts} +104 -48
  157. package/src/lib/concurrency.ts +41 -0
  158. package/src/lib/conversation-api.ts +1172 -0
  159. package/src/lib/conversation-data/adapter-helpers.ts +110 -0
  160. package/src/lib/conversation-data/antigravity-adapter.ts +167 -0
  161. package/src/lib/conversation-data/claude-code-adapter.ts +206 -0
  162. package/src/lib/conversation-data/codex-adapter.ts +269 -0
  163. package/src/lib/conversation-data/cursor-adapter.ts +205 -0
  164. package/src/lib/conversation-data/grok-adapter.ts +210 -0
  165. package/src/lib/conversation-data/index.ts +386 -0
  166. package/src/lib/conversation-data/kiro-adapter.ts +174 -0
  167. package/src/lib/conversation-data/message-selector.ts +37 -0
  168. package/src/lib/conversation-data/opencode-adapter.ts +202 -0
  169. package/src/lib/conversation-data/path-match.ts +79 -0
  170. package/src/lib/conversation-data/qoder-adapter.ts +255 -0
  171. package/src/lib/conversation-data/types.ts +159 -0
  172. package/src/lib/conversation-zip-export.ts +57 -0
  173. package/src/lib/cursor-db.ts +100 -25
  174. package/src/lib/cursor-exporter-types.ts +0 -19
  175. package/src/lib/grok-db.ts +1026 -0
  176. package/src/lib/grok-exporter-types.ts +110 -0
  177. package/src/lib/grok-transcript-phase.ts +52 -0
  178. package/src/lib/grok-transcript.ts +154 -0
  179. package/src/lib/kiro-db.ts +52 -1
  180. package/src/lib/model-label.ts +11 -3
  181. package/src/lib/opencode-db.ts +598 -55
  182. package/src/lib/opencode-transcript.ts +8 -5
  183. package/src/lib/qoder-acp-client.ts +268 -0
  184. package/src/lib/qoder-db.ts +1601 -0
  185. package/src/lib/qoder-exporter-types.ts +114 -0
  186. package/src/lib/qoder-transcript-phase.ts +41 -0
  187. package/src/lib/qoder-transcript.ts +112 -0
  188. package/src/lib/shared.ts +12 -0
  189. package/src/lib/transcript-load-limiter.ts +82 -0
  190. package/src/lib/ui-cache.ts +43 -17
  191. package/src/lib/ui-export-archive.ts +60 -0
  192. package/apps/ui/dist/client/assets/_threadId-CAIeH5mq.js +0 -1
  193. package/apps/ui/dist/client/assets/analytics-DOy1b6Sh.js +0 -1
  194. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DqySVO2K.js +0 -7
  195. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-KAcXtNxI.js +0 -1
  196. package/apps/ui/dist/client/assets/antigravity-keychain-panel-B77qJz6f.js +0 -1
  197. package/apps/ui/dist/client/assets/antigravity._workspaceKey-B3NM6gRH.js +0 -1
  198. package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +0 -1
  199. package/apps/ui/dist/client/assets/antigravity.index-DP9JC2P9.js +0 -1
  200. package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +0 -1
  201. package/apps/ui/dist/client/assets/badge-C3i4OKs8.js +0 -1
  202. package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +0 -1
  203. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-8pQ55ci2.js +0 -1
  204. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-DVz5UmtU.js +0 -1
  205. package/apps/ui/dist/client/assets/claude-code._workspaceKey-BBKskSum.js +0 -1
  206. package/apps/ui/dist/client/assets/claude-code._workspaceKey-OkikMUFs.js +0 -1
  207. package/apps/ui/dist/client/assets/claude-code.index-Cwu76dbb.js +0 -1
  208. package/apps/ui/dist/client/assets/claude-code.index-D6eMd08t.js +0 -1
  209. package/apps/ui/dist/client/assets/createServerFn-B-KkwmHU.js +0 -3
  210. package/apps/ui/dist/client/assets/cursor-threads._composerId-CmBFclK8.js +0 -1
  211. package/apps/ui/dist/client/assets/cursor-threads._composerId-hBWlP1D-.js +0 -1
  212. package/apps/ui/dist/client/assets/cursor._workspaceKey-BFPkIRi-.js +0 -1
  213. package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +0 -1
  214. package/apps/ui/dist/client/assets/cursor.index-8y4o20kb.js +0 -2
  215. package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +0 -1
  216. package/apps/ui/dist/client/assets/data-table-Br78_dk3.js +0 -4
  217. package/apps/ui/dist/client/assets/delete-confirm-dialog-Bxs07u-j.js +0 -7
  218. package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +0 -1
  219. package/apps/ui/dist/client/assets/dist-BrJhN2A0.js +0 -5
  220. package/apps/ui/dist/client/assets/dist-Cmd3AIfD.js +0 -1
  221. package/apps/ui/dist/client/assets/dist-DvMS2965.js +0 -1
  222. package/apps/ui/dist/client/assets/download-Bf0QJKD3.js +0 -1
  223. package/apps/ui/dist/client/assets/dropdown-menu-D5cvPaZt.js +0 -1
  224. package/apps/ui/dist/client/assets/es2015-ad6040dw.js +0 -41
  225. package/apps/ui/dist/client/assets/export-dialog-Dr8d2MqD.js +0 -1
  226. package/apps/ui/dist/client/assets/formatters-BtqyrX_c.js +0 -1
  227. package/apps/ui/dist/client/assets/index-C-STgIH4.js +0 -166
  228. package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +0 -1
  229. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-CKgfJ7GR.js +0 -1
  230. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-zvIJHtQF.js +0 -1
  231. package/apps/ui/dist/client/assets/kiro._workspaceKey-DhVuJuZB.js +0 -1
  232. package/apps/ui/dist/client/assets/kiro._workspaceKey-QArsjkTY.js +0 -1
  233. package/apps/ui/dist/client/assets/kiro.index-C-fr4m7i.js +0 -1
  234. package/apps/ui/dist/client/assets/kiro.index-OYgAdtZd.js +0 -1
  235. package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +0 -1
  236. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-DLjiTst-.js +0 -1
  237. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-biBwrRbt.js +0 -8
  238. package/apps/ui/dist/client/assets/opencode._workspaceKey-C7OIzMOJ.js +0 -1
  239. package/apps/ui/dist/client/assets/opencode._workspaceKey-sBakX0oI.js +0 -1
  240. package/apps/ui/dist/client/assets/opencode.index-Bl_kNs9N.js +0 -1
  241. package/apps/ui/dist/client/assets/opencode.index-CN53bVmb.js +0 -1
  242. package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +0 -1
  243. package/apps/ui/dist/client/assets/preload-helper-B8fFrdxC.js +0 -1
  244. package/apps/ui/dist/client/assets/projects._project-D8WloxQN.js +0 -1
  245. package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +0 -1
  246. package/apps/ui/dist/client/assets/projects.index-5xRtuJdX.js +0 -3
  247. package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +0 -1
  248. package/apps/ui/dist/client/assets/react-dom-DL96Jor4.js +0 -1
  249. package/apps/ui/dist/client/assets/refresh-ccw-BgKjOiA6.js +0 -1
  250. package/apps/ui/dist/client/assets/reload-error-panel-AHqu0akK.js +0 -1
  251. package/apps/ui/dist/client/assets/routes-DnzF_9CX.js +0 -1
  252. package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +0 -1
  253. package/apps/ui/dist/client/assets/select-CYF6pF37.js +0 -1
  254. package/apps/ui/dist/client/assets/settings-Dx70jgP_.js +0 -1
  255. package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +0 -1
  256. package/apps/ui/dist/client/assets/styles-B7Zi9EFA.css +0 -1
  257. package/apps/ui/dist/client/assets/tabs-CmuhkT-c.js +0 -7
  258. package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +0 -2
  259. package/apps/ui/dist/client/assets/thread-transcript-stats-BUNz6u7F.js +0 -1
  260. package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +0 -1
  261. package/apps/ui/dist/client/assets/threads._threadId-BMRSFow3.js +0 -1
  262. package/apps/ui/dist/client/assets/useMutation-BSFult2i.js +0 -1
  263. package/apps/ui/dist/client/assets/useQuery-CjINKZf1.js +0 -1
  264. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CQ8Jjs3B.js +0 -387
  265. package/apps/ui/dist/server/assets/_threadId-B6SrBR9E.js +0 -6
  266. package/apps/ui/dist/server/assets/analytics-CYP_LT5Y.js +0 -16
  267. package/apps/ui/dist/server/assets/analytics-CtpOMVMO.js +0 -146
  268. package/apps/ui/dist/server/assets/antigravity-conversation-state-HgzS302O.js +0 -16
  269. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-BKOyL2T6.js +0 -613
  270. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-D426O-64.js +0 -11
  271. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-eS87Dx7g.js +0 -20
  272. package/apps/ui/dist/server/assets/antigravity-db-Bh8_U9uw.js +0 -580
  273. package/apps/ui/dist/server/assets/antigravity-keychain-DOiuHDwK.js +0 -126
  274. package/apps/ui/dist/server/assets/antigravity-keychain-panel-CC7FLmAK.js +0 -55
  275. package/apps/ui/dist/server/assets/antigravity-queries-CGrJO9Vr.js +0 -37
  276. package/apps/ui/dist/server/assets/antigravity-server-CHRjVFqN.js +0 -114
  277. package/apps/ui/dist/server/assets/antigravity._workspaceKey-3m_MzNFA.js +0 -11
  278. package/apps/ui/dist/server/assets/antigravity._workspaceKey-B0QeYUOh.js +0 -28
  279. package/apps/ui/dist/server/assets/antigravity._workspaceKey-C3kP-qyN.js +0 -210
  280. package/apps/ui/dist/server/assets/antigravity.index-CPCYkqCi.js +0 -104
  281. package/apps/ui/dist/server/assets/antigravity.index-DudTB3Tq.js +0 -11
  282. package/apps/ui/dist/server/assets/badge-EvdhKK_Z.js +0 -26
  283. package/apps/ui/dist/server/assets/button-CmTDnzOn.js +0 -46
  284. package/apps/ui/dist/server/assets/checkbox-C0hovF41.js +0 -19
  285. package/apps/ui/dist/server/assets/claude-code-db-Ik3VStKZ.js +0 -361
  286. package/apps/ui/dist/server/assets/claude-code-queries-Cgzi4K-e.js +0 -37
  287. package/apps/ui/dist/server/assets/claude-code-server-PfraClXS.js +0 -72
  288. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-C55oe6zj.js +0 -18
  289. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-D1RYYi3j.js +0 -473
  290. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-DSvPLEUL.js +0 -11
  291. package/apps/ui/dist/server/assets/claude-code-transcript-C-bxh3cS.js +0 -139
  292. package/apps/ui/dist/server/assets/claude-code-transcript-phase-DmUMc8VU.js +0 -10
  293. package/apps/ui/dist/server/assets/claude-code._workspaceKey-B5Xg_-tE.js +0 -28
  294. package/apps/ui/dist/server/assets/claude-code._workspaceKey-BPlzyXPa.js +0 -11
  295. package/apps/ui/dist/server/assets/claude-code._workspaceKey-DqDve2wl.js +0 -191
  296. package/apps/ui/dist/server/assets/claude-code.index-B7yYR7dD.js +0 -92
  297. package/apps/ui/dist/server/assets/claude-code.index-BUHThG1W.js +0 -11
  298. package/apps/ui/dist/server/assets/codex-queries-CtgeZ7VL.js +0 -99
  299. package/apps/ui/dist/server/assets/codex-server-CGXU4H8-.js +0 -2294
  300. package/apps/ui/dist/server/assets/concurrency-VXtYvlGh.js +0 -18
  301. package/apps/ui/dist/server/assets/createServerRpc-CF_DEwnm.js +0 -12
  302. package/apps/ui/dist/server/assets/createSsrRpc-C754NPki.js +0 -16
  303. package/apps/ui/dist/server/assets/cursor-db-CZnYy7aT.js +0 -830
  304. package/apps/ui/dist/server/assets/cursor-exporter-types-CI3goo-c.js +0 -34
  305. package/apps/ui/dist/server/assets/cursor-queries-NCIM0Nat.js +0 -67
  306. package/apps/ui/dist/server/assets/cursor-recovery-CXpO8KcD.js +0 -361
  307. package/apps/ui/dist/server/assets/cursor-server-DNu52A3K.js +0 -213
  308. package/apps/ui/dist/server/assets/cursor-threads._composerId-BB0Y_Mao.js +0 -11
  309. package/apps/ui/dist/server/assets/cursor-threads._composerId-Ckn6ItHI.js +0 -582
  310. package/apps/ui/dist/server/assets/cursor-threads._composerId-p9-ARAzc.js +0 -18
  311. package/apps/ui/dist/server/assets/cursor-transcript-B7tGnqtn.js +0 -125
  312. package/apps/ui/dist/server/assets/cursor._workspaceKey-CZuohIUL.js +0 -28
  313. package/apps/ui/dist/server/assets/cursor._workspaceKey-DPp5JSjy.js +0 -401
  314. package/apps/ui/dist/server/assets/cursor._workspaceKey-nmg3YIOQ.js +0 -11
  315. package/apps/ui/dist/server/assets/cursor.index-CcsX7DG0.js +0 -11
  316. package/apps/ui/dist/server/assets/cursor.index-DkWT-mxw.js +0 -189
  317. package/apps/ui/dist/server/assets/data-table-Cdct823O.js +0 -189
  318. package/apps/ui/dist/server/assets/delete-confirm-dialog-BcBNCxWB.js +0 -144
  319. package/apps/ui/dist/server/assets/download-DMmiy1xf.js +0 -92
  320. package/apps/ui/dist/server/assets/dropdown-menu-Dy_9t6TN.js +0 -36
  321. package/apps/ui/dist/server/assets/empty-plugin-adapters-B3lHh1La.js +0 -5
  322. package/apps/ui/dist/server/assets/export-dialog-D88ze9Gy.js +0 -240
  323. package/apps/ui/dist/server/assets/formatters-FJaGZgJk.js +0 -91
  324. package/apps/ui/dist/server/assets/kiro-db--fXrED_-.js +0 -552
  325. package/apps/ui/dist/server/assets/kiro-queries-CzNlM2ok.js +0 -37
  326. package/apps/ui/dist/server/assets/kiro-server-9WRxg2Au.js +0 -72
  327. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-CRY2c7YO.js +0 -11
  328. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-F1UlwxmR.js +0 -449
  329. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-bvTulT7C.js +0 -18
  330. package/apps/ui/dist/server/assets/kiro-transcript-DoekQBaH.js +0 -112
  331. package/apps/ui/dist/server/assets/kiro-transcript-phase-CJG40nQg.js +0 -27
  332. package/apps/ui/dist/server/assets/kiro._workspaceKey-BDe9sQwo.js +0 -11
  333. package/apps/ui/dist/server/assets/kiro._workspaceKey-CJsjgNwO.js +0 -28
  334. package/apps/ui/dist/server/assets/kiro._workspaceKey-D_-4Qb7y.js +0 -193
  335. package/apps/ui/dist/server/assets/kiro.index-C__-UROk.js +0 -11
  336. package/apps/ui/dist/server/assets/kiro.index-CmTbqeYj.js +0 -93
  337. package/apps/ui/dist/server/assets/loading-panel-BGFnWseS.js +0 -27
  338. package/apps/ui/dist/server/assets/metric-card-ByEeLu0r.js +0 -23
  339. package/apps/ui/dist/server/assets/model-label-B1NWGc65.js +0 -13
  340. package/apps/ui/dist/server/assets/opencode-db-BM7KjOzc.js +0 -397
  341. package/apps/ui/dist/server/assets/opencode-queries-BeNYXnQv.js +0 -50
  342. package/apps/ui/dist/server/assets/opencode-server-BpQ_kRze.js +0 -72
  343. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-CGQ-t0vD.js +0 -518
  344. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-D8Q7in_Z.js +0 -18
  345. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-DKOvi0lV.js +0 -11
  346. package/apps/ui/dist/server/assets/opencode-think-tags-CAoD-EcZ.js +0 -87
  347. package/apps/ui/dist/server/assets/opencode-transcript-BNTcGNym.js +0 -141
  348. package/apps/ui/dist/server/assets/opencode-transcript-phase-OqLkiQD0.js +0 -32
  349. package/apps/ui/dist/server/assets/opencode._workspaceKey-BdqcWHw1.js +0 -11
  350. package/apps/ui/dist/server/assets/opencode._workspaceKey-CfH96HTT.js +0 -28
  351. package/apps/ui/dist/server/assets/opencode._workspaceKey-DdbHPDrO.js +0 -207
  352. package/apps/ui/dist/server/assets/opencode.index-BbVzkJXP.js +0 -11
  353. package/apps/ui/dist/server/assets/opencode.index-Vh_Gq_1L.js +0 -93
  354. package/apps/ui/dist/server/assets/page-header-VNSaM3xd.js +0 -29
  355. package/apps/ui/dist/server/assets/path-transforms-DL2IwtYd.js +0 -31
  356. package/apps/ui/dist/server/assets/projects._project-4io5LO0E.js +0 -20
  357. package/apps/ui/dist/server/assets/projects._project-Bshqk7JA.js +0 -12
  358. package/apps/ui/dist/server/assets/projects._project-D6ZoGhJ8.js +0 -395
  359. package/apps/ui/dist/server/assets/projects.index-BLXOx5eL.js +0 -12
  360. package/apps/ui/dist/server/assets/projects.index-BkLiF2FF.js +0 -182
  361. package/apps/ui/dist/server/assets/projects.index-DesYXwfi.js +0 -14
  362. package/apps/ui/dist/server/assets/reload-error-panel-BJMxY3U1.js +0 -25
  363. package/apps/ui/dist/server/assets/route-search-ts4W9MJ9.js +0 -38
  364. package/apps/ui/dist/server/assets/router-Sac2DGk6.js +0 -518
  365. package/apps/ui/dist/server/assets/routes-Bsact1uB.js +0 -184
  366. package/apps/ui/dist/server/assets/routes-BzkJgq4W.js +0 -34
  367. package/apps/ui/dist/server/assets/select-GW76p-ld.js +0 -76
  368. package/apps/ui/dist/server/assets/settings-OayxIYQQ.js +0 -100
  369. package/apps/ui/dist/server/assets/settings-store-DpEJEQ7M.js +0 -52
  370. package/apps/ui/dist/server/assets/shared-DyhChtHf.js +0 -137
  371. package/apps/ui/dist/server/assets/source-session-export-server-DNutCawb.js +0 -38
  372. package/apps/ui/dist/server/assets/sqlite-error-LZDrnxdd.js +0 -13
  373. package/apps/ui/dist/server/assets/start-B_HFwkkk.js +0 -4
  374. package/apps/ui/dist/server/assets/tabs-DkaChNVg.js +0 -501
  375. package/apps/ui/dist/server/assets/text-filter-CGKxMCKt.js +0 -36
  376. package/apps/ui/dist/server/assets/thread-transcript-stats-Dh34mt2u.js +0 -45
  377. package/apps/ui/dist/server/assets/threads._threadId-BSSK4nkI.js +0 -26
  378. package/apps/ui/dist/server/assets/threads._threadId-BeXEc4Lo.js +0 -648
  379. package/apps/ui/dist/server/assets/threads._threadId-Ci0S4mKU.js +0 -18
  380. package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +0 -83
  381. package/apps/ui/dist/server/assets/utils-C_uf36nf.js +0 -8
  382. package/apps/ui/dist/server/server.js +0 -5895
  383. package/bin/codex-chats-claude.js +0 -5
  384. package/bin/codex-chats.js +0 -5
  385. package/bin/spiracha.js +0 -5
  386. package/src/export-chats.ts +0 -120
  387. package/src/export-claude.ts +0 -36
  388. package/src/export-cursor.ts +0 -244
  389. package/src/lib/claude-exporter.ts +0 -864
  390. package/src/lib/codex-exporter-cli.ts +0 -277
  391. package/src/lib/codex-exporter-db.ts +0 -319
  392. package/src/lib/codex-exporter.ts +0 -115
  393. package/src/lib/cursor-exporter.ts +0 -266
  394. package/src/lib/interactive-cli.ts +0 -433
  395. package/src/lib/native-open.ts +0 -54
  396. package/src/mcp-server.ts +0 -137
  397. package/src/spiracha.ts +0 -116
  398. package/src/ui-cli.ts +0 -310
  399. /package/apps/ui/{dist/client → public}/icon.svg +0 -0
  400. /package/apps/ui/{dist/client → public}/manifest.json +0 -0
  401. /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 };