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,55 +0,0 @@
1
- import { t as cn } from "./utils-C_uf36nf.js";
2
- import { t as Button } from "./button-CmTDnzOn.js";
3
- import { r as antigravityDecryptionQueryOptions, s as unlockAntigravityDecryptionFn } from "./antigravity-queries-CGrJO9Vr.js";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
6
- import { KeyRound, LockKeyhole, ShieldCheck, TriangleAlert } from "lucide-react";
7
- //#region src/components/antigravity-keychain-panel.tsx
8
- function AntigravityKeychainPanel() {
9
- const queryClient = useQueryClient();
10
- const decryptionState = useQuery(antigravityDecryptionQueryOptions()).data ?? null;
11
- const unlockMutation = useMutation({
12
- mutationFn: () => unlockAntigravityDecryptionFn(),
13
- onSuccess: (result) => {
14
- queryClient.setQueryData(antigravityDecryptionQueryOptions().queryKey, result);
15
- Promise.all([queryClient.invalidateQueries({ queryKey: antigravityDecryptionQueryOptions().queryKey }), queryClient.invalidateQueries({ queryKey: ["antigravity-conversation"] })]);
16
- }
17
- });
18
- if (!decryptionState || decryptionState.status === "unsupported") return null;
19
- const isUnlocked = decryptionState.isUnlocked;
20
- const error = unlockMutation.error?.message ?? decryptionState.error;
21
- return /* @__PURE__ */ jsxs("div", {
22
- className: cn("flex flex-col gap-3 rounded-xl border px-4 py-3 sm:flex-row sm:items-center sm:justify-between", isUnlocked ? "border-emerald-500/30 bg-emerald-500/10" : "border-[var(--border)] bg-[var(--panel)]"),
23
- children: [/* @__PURE__ */ jsxs("div", {
24
- className: "flex min-w-0 items-start gap-3",
25
- children: [/* @__PURE__ */ jsx("div", {
26
- className: cn("mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md", isUnlocked ? "bg-emerald-500/15 text-emerald-600" : "bg-[var(--panel-secondary)]"),
27
- children: isUnlocked ? /* @__PURE__ */ jsx(ShieldCheck, { className: "size-4" }) : /* @__PURE__ */ jsx(LockKeyhole, { className: "size-4" })
28
- }), /* @__PURE__ */ jsxs("div", {
29
- className: "min-w-0",
30
- children: [
31
- /* @__PURE__ */ jsx("p", {
32
- className: "font-medium text-sm",
33
- children: isUnlocked ? "Keychain access enabled" : "Unlock Antigravity transcript export"
34
- }),
35
- /* @__PURE__ */ jsx("p", {
36
- className: "mt-1 text-[var(--muted-foreground)] text-xs",
37
- children: isUnlocked ? "The Antigravity key is cached in this server process only. Transcript exports are available for local logs and safe-storage payloads." : `Spiracha needs one-time access to ${decryptionState.keychainService} to decrypt Antigravity transcript data. macOS will ask for approval after you click unlock.`
38
- }),
39
- error ? /* @__PURE__ */ jsxs("p", {
40
- className: "mt-2 flex items-center gap-1 text-[var(--destructive)] text-xs",
41
- children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "size-3" }), error]
42
- }) : null
43
- ]
44
- })]
45
- }), !isUnlocked ? /* @__PURE__ */ jsxs(Button, {
46
- className: "shrink-0",
47
- disabled: !decryptionState.canRequestAccess || unlockMutation.isPending,
48
- type: "button",
49
- onClick: () => unlockMutation.mutate(),
50
- children: [/* @__PURE__ */ jsx(KeyRound, { className: "size-4" }), unlockMutation.isPending ? "Waiting..." : "Unlock"]
51
- }) : null]
52
- });
53
- }
54
- //#endregion
55
- export { AntigravityKeychainPanel as t };
@@ -1,37 +0,0 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-C754NPki.js";
3
- import { z } from "zod";
4
- import { queryOptions } from "@tanstack/react-query";
5
- //#region src/lib/antigravity-server.ts
6
- var workspaceSchema = z.object({ workspaceKey: z.string().min(1) });
7
- var conversationSchema = z.object({ conversationId: z.string().min(1) });
8
- var exportSchema = z.object({ conversationId: z.string().min(1) });
9
- var listAntigravityWorkspacesFn = createServerFn({ method: "GET" }).handler(createSsrRpc("50ab3a39f9880771d0d9b15931e46bcf0c4915077e38a7b6bf8605fde065256e"));
10
- var getAntigravityDecryptionStateFn = createServerFn({ method: "GET" }).handler(createSsrRpc("37acb5a1f0915c7b996d6cf9682243d5a3446fe26a60f12bfacf60ce772b0f49"));
11
- var unlockAntigravityDecryptionFn = createServerFn({ method: "POST" }).handler(createSsrRpc("e266948869e9a4ae03c84b8a7db1bfa945fdb440c5e1c64ae826b1302e441885"));
12
- var listAntigravityConversationsFn = createServerFn({ method: "GET" }).validator(workspaceSchema).handler(createSsrRpc("6a3fe93f3095ec985bb39f45eacb221bd1b77a5d53cbb96fda99caa0fcce7e4e"));
13
- var getAntigravityConversationDetailFn = createServerFn({ method: "GET" }).validator(conversationSchema).handler(createSsrRpc("229f5293a4eb8237ac97fc2c9a19c31740139aaed41a44d336d77f75584dbd90"));
14
- var exportAntigravityArtifactsFn = createServerFn({ method: "POST" }).validator(exportSchema).handler(createSsrRpc("0c4c2059bb3a8a71939f93494402a63168932a544e55a462e42679647762f936"));
15
- var exportAntigravityConversationFn = createServerFn({ method: "POST" }).validator(exportSchema).handler(createSsrRpc("a6261a774fd8e76a6be777fcbb951977db16f33922519ed880097cea035e9034"));
16
- //#endregion
17
- //#region src/lib/antigravity-queries.ts
18
- var antigravityDecryptionQueryOptions = () => queryOptions({
19
- queryFn: () => getAntigravityDecryptionStateFn(),
20
- queryKey: ["antigravity-decryption"]
21
- });
22
- var antigravityWorkspacesQueryOptions = () => queryOptions({
23
- queryFn: () => listAntigravityWorkspacesFn(),
24
- queryKey: ["antigravity-workspaces"]
25
- });
26
- var antigravityConversationsQueryOptions = (workspaceKey) => queryOptions({
27
- enabled: workspaceKey !== null,
28
- queryFn: () => listAntigravityConversationsFn({ data: { workspaceKey: workspaceKey ?? "" } }),
29
- queryKey: ["antigravity-conversations", workspaceKey ?? "none"]
30
- });
31
- var antigravityConversationDetailQueryOptions = (conversationId) => queryOptions({
32
- enabled: conversationId !== null,
33
- queryFn: () => getAntigravityConversationDetailFn({ data: { conversationId: conversationId ?? "" } }),
34
- queryKey: ["antigravity-conversation", conversationId ?? "none"]
35
- });
36
- //#endregion
37
- export { exportAntigravityArtifactsFn as a, antigravityWorkspacesQueryOptions as i, antigravityConversationsQueryOptions as n, exportAntigravityConversationFn as o, antigravityDecryptionQueryOptions as r, unlockAntigravityDecryptionFn as s, antigravityConversationDetailQueryOptions as t };
@@ -1,114 +0,0 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createServerRpc } from "./createServerRpc-CF_DEwnm.js";
3
- import { i as isAntigravityConversationLocked, t as canExportAntigravityConversation } from "./antigravity-conversation-state-HgzS302O.js";
4
- import { z } from "zod";
5
- //#region src/lib/antigravity-server.ts?tss-serverfn-split
6
- var workspaceSchema = z.object({ workspaceKey: z.string().min(1) });
7
- var conversationSchema = z.object({ conversationId: z.string().min(1) });
8
- var exportSchema = z.object({ conversationId: z.string().min(1) });
9
- var listAntigravityWorkspacesFn_createServerFn_handler = createServerRpc({
10
- id: "50ab3a39f9880771d0d9b15931e46bcf0c4915077e38a7b6bf8605fde065256e",
11
- name: "listAntigravityWorkspacesFn",
12
- filename: "src/lib/antigravity-server.ts"
13
- }, (opts) => listAntigravityWorkspacesFn.__executeServer(opts));
14
- var listAntigravityWorkspacesFn = createServerFn({ method: "GET" }).handler(listAntigravityWorkspacesFn_createServerFn_handler, async () => {
15
- const { listAntigravityWorkspaceGroups } = await import("./antigravity-db-Bh8_U9uw.js");
16
- return listAntigravityWorkspaceGroups();
17
- });
18
- var getAntigravityDecryptionStateFn_createServerFn_handler = createServerRpc({
19
- id: "37acb5a1f0915c7b996d6cf9682243d5a3446fe26a60f12bfacf60ce772b0f49",
20
- name: "getAntigravityDecryptionStateFn",
21
- filename: "src/lib/antigravity-server.ts"
22
- }, (opts) => getAntigravityDecryptionStateFn.__executeServer(opts));
23
- var getAntigravityDecryptionStateFn = createServerFn({ method: "GET" }).handler(getAntigravityDecryptionStateFn_createServerFn_handler, async () => {
24
- const { getAntigravityDecryptionState } = await import("./antigravity-keychain-DOiuHDwK.js");
25
- return getAntigravityDecryptionState();
26
- });
27
- var unlockAntigravityDecryptionFn_createServerFn_handler = createServerRpc({
28
- id: "e266948869e9a4ae03c84b8a7db1bfa945fdb440c5e1c64ae826b1302e441885",
29
- name: "unlockAntigravityDecryptionFn",
30
- filename: "src/lib/antigravity-server.ts"
31
- }, (opts) => unlockAntigravityDecryptionFn.__executeServer(opts));
32
- var unlockAntigravityDecryptionFn = createServerFn({ method: "POST" }).handler(unlockAntigravityDecryptionFn_createServerFn_handler, async () => {
33
- const { unlockAntigravityDecryption } = await import("./antigravity-keychain-DOiuHDwK.js");
34
- return unlockAntigravityDecryption();
35
- });
36
- var listAntigravityConversationsFn_createServerFn_handler = createServerRpc({
37
- id: "6a3fe93f3095ec985bb39f45eacb221bd1b77a5d53cbb96fda99caa0fcce7e4e",
38
- name: "listAntigravityConversationsFn",
39
- filename: "src/lib/antigravity-server.ts"
40
- }, (opts) => listAntigravityConversationsFn.__executeServer(opts));
41
- var listAntigravityConversationsFn = createServerFn({ method: "GET" }).validator(workspaceSchema).handler(listAntigravityConversationsFn_createServerFn_handler, async ({ data }) => {
42
- const { listAntigravityConversationsForGroup } = await import("./antigravity-db-Bh8_U9uw.js");
43
- return listAntigravityConversationsForGroup(data.workspaceKey);
44
- });
45
- var findAntigravityConversationById = async (conversationId) => {
46
- const { listAntigravityConversations } = await import("./antigravity-db-Bh8_U9uw.js");
47
- const conversation = (await listAntigravityConversations()).find((candidate) => candidate.conversationId === conversationId);
48
- if (!conversation) throw new Error(`Antigravity conversation not found: ${conversationId}`);
49
- return conversation;
50
- };
51
- var loadAntigravityConversationDetail = async (conversationId) => {
52
- const { renderAntigravityArtifactsMarkdown, renderAntigravityConversationMarkdown } = await import("./antigravity-db-Bh8_U9uw.js");
53
- const { getCachedAntigravityKeychainSecret } = await import("./antigravity-keychain-DOiuHDwK.js");
54
- const conversation = await findAntigravityConversationById(conversationId);
55
- const keychainSecret = getCachedAntigravityKeychainSecret();
56
- const transcriptLocked = isAntigravityConversationLocked(conversation, Boolean(keychainSecret));
57
- const conversationMarkdown = transcriptLocked ? null : await renderAntigravityConversationMarkdown(conversation, { keychainSecret });
58
- const artifactsMarkdown = conversation.artifactCount > 0 ? await renderAntigravityArtifactsMarkdown(conversation) : null;
59
- return {
60
- artifactsMarkdown,
61
- conversation,
62
- conversationMarkdown: conversationMarkdown === artifactsMarkdown ? null : conversationMarkdown,
63
- transcriptLocked
64
- };
65
- };
66
- var loadAntigravityConversationExport = async (conversationId) => {
67
- const { renderAntigravityConversationMarkdown } = await import("./antigravity-db-Bh8_U9uw.js");
68
- const { getCachedAntigravityKeychainSecret } = await import("./antigravity-keychain-DOiuHDwK.js");
69
- const conversation = await findAntigravityConversationById(conversationId);
70
- const keychainSecret = getCachedAntigravityKeychainSecret();
71
- const hasKeychainSecret = Boolean(keychainSecret);
72
- if (!canExportAntigravityConversation(conversation, hasKeychainSecret)) {
73
- if (isAntigravityConversationLocked(conversation, hasKeychainSecret)) throw new Error("Unlock Antigravity Keychain access before exporting transcript logs.");
74
- throw new Error(`No exportable Antigravity transcript found for conversation: ${conversationId}`);
75
- }
76
- const content = await renderAntigravityConversationMarkdown(conversation, { keychainSecret });
77
- if (!content) throw new Error(`No exportable Antigravity transcript found for conversation: ${conversationId}`);
78
- return {
79
- content,
80
- filename: `${conversationId}.md`
81
- };
82
- };
83
- var getAntigravityConversationDetailFn_createServerFn_handler = createServerRpc({
84
- id: "229f5293a4eb8237ac97fc2c9a19c31740139aaed41a44d336d77f75584dbd90",
85
- name: "getAntigravityConversationDetailFn",
86
- filename: "src/lib/antigravity-server.ts"
87
- }, (opts) => getAntigravityConversationDetailFn.__executeServer(opts));
88
- var getAntigravityConversationDetailFn = createServerFn({ method: "GET" }).validator(conversationSchema).handler(getAntigravityConversationDetailFn_createServerFn_handler, async ({ data }) => {
89
- return loadAntigravityConversationDetail(data.conversationId);
90
- });
91
- var exportAntigravityArtifactsFn_createServerFn_handler = createServerRpc({
92
- id: "0c4c2059bb3a8a71939f93494402a63168932a544e55a462e42679647762f936",
93
- name: "exportAntigravityArtifactsFn",
94
- filename: "src/lib/antigravity-server.ts"
95
- }, (opts) => exportAntigravityArtifactsFn.__executeServer(opts));
96
- var exportAntigravityArtifactsFn = createServerFn({ method: "POST" }).validator(exportSchema).handler(exportAntigravityArtifactsFn_createServerFn_handler, async ({ data }) => {
97
- const { renderAntigravityArtifactsMarkdown } = await import("./antigravity-db-Bh8_U9uw.js");
98
- const content = await renderAntigravityArtifactsMarkdown(await findAntigravityConversationById(data.conversationId));
99
- if (!content) throw new Error(`No Markdown artifacts found for conversation: ${data.conversationId}`);
100
- return {
101
- content,
102
- filename: `${data.conversationId}-artifacts.md`
103
- };
104
- });
105
- var exportAntigravityConversationFn_createServerFn_handler = createServerRpc({
106
- id: "a6261a774fd8e76a6be777fcbb951977db16f33922519ed880097cea035e9034",
107
- name: "exportAntigravityConversationFn",
108
- filename: "src/lib/antigravity-server.ts"
109
- }, (opts) => exportAntigravityConversationFn.__executeServer(opts));
110
- var exportAntigravityConversationFn = createServerFn({ method: "POST" }).validator(exportSchema).handler(exportAntigravityConversationFn_createServerFn_handler, async ({ data }) => {
111
- return loadAntigravityConversationExport(data.conversationId);
112
- });
113
- //#endregion
114
- export { exportAntigravityArtifactsFn_createServerFn_handler, exportAntigravityConversationFn_createServerFn_handler, getAntigravityConversationDetailFn_createServerFn_handler, getAntigravityDecryptionStateFn_createServerFn_handler, listAntigravityConversationsFn_createServerFn_handler, listAntigravityWorkspacesFn_createServerFn_handler, unlockAntigravityDecryptionFn_createServerFn_handler };
@@ -1,11 +0,0 @@
1
- import { t as ReloadErrorPanel } from "./reload-error-panel-BJMxY3U1.js";
2
- import { jsx } from "react/jsx-runtime";
3
- //#region src/routes/antigravity.$workspaceKey.tsx?tsr-split=errorComponent
4
- function AntigravityWorkspaceErrorComponent({ error }) {
5
- return /* @__PURE__ */ jsx(ReloadErrorPanel, {
6
- description: error.message,
7
- title: "Failed to load Antigravity workspace"
8
- });
9
- }
10
- //#endregion
11
- export { AntigravityWorkspaceErrorComponent as errorComponent };
@@ -1,28 +0,0 @@
1
- import { i as antigravityWorkspacesQueryOptions, n as antigravityConversationsQueryOptions, r as antigravityDecryptionQueryOptions } from "./antigravity-queries-CGrJO9Vr.js";
2
- import { t as LoadingPanel } from "./loading-panel-BGFnWseS.js";
3
- import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
- import { jsx } from "react/jsx-runtime";
5
- //#region src/routes/antigravity.$workspaceKey.tsx?tsr-shared=1
6
- var findWorkspaceOrThrow = (workspaces, workspaceKey) => {
7
- const workspace = workspaces.find((candidate) => candidate.key === workspaceKey);
8
- if (!workspace) throw new Error(`Antigravity workspace not found: ${workspaceKey}`);
9
- return workspace;
10
- };
11
- //#endregion
12
- //#region src/routes/antigravity.$workspaceKey.tsx
13
- var $$splitErrorComponentImporter = () => import("./antigravity._workspaceKey-3m_MzNFA.js");
14
- var $$splitComponentImporter = () => import("./antigravity._workspaceKey-C3kP-qyN.js");
15
- var Route = createFileRoute("/antigravity/$workspaceKey")({
16
- component: lazyRouteComponent($$splitComponentImporter, "component"),
17
- errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
18
- loader: async ({ context, params }) => {
19
- findWorkspaceOrThrow(await context.queryClient.ensureQueryData(antigravityWorkspacesQueryOptions()), params.workspaceKey);
20
- await Promise.all([context.queryClient.ensureQueryData(antigravityDecryptionQueryOptions()), context.queryClient.ensureQueryData(antigravityConversationsQueryOptions(params.workspaceKey))]);
21
- },
22
- pendingComponent: () => /* @__PURE__ */ jsx(LoadingPanel, {
23
- description: "Loading Antigravity conversations, artifacts, and transcript availability.",
24
- title: "Loading workspace"
25
- })
26
- });
27
- //#endregion
28
- export { findWorkspaceOrThrow as n, Route as t };
@@ -1,210 +0,0 @@
1
- import { i as isAntigravityConversationLocked, n as hasEncryptedAntigravityConversation, r as hasReadableAntigravityConversation, t as canExportAntigravityConversation } from "./antigravity-conversation-state-HgzS302O.js";
2
- import { t as Button } from "./button-CmTDnzOn.js";
3
- import { a as exportAntigravityArtifactsFn, i as antigravityWorkspacesQueryOptions, n as antigravityConversationsQueryOptions, o as exportAntigravityConversationFn, r as antigravityDecryptionQueryOptions } from "./antigravity-queries-CGrJO9Vr.js";
4
- import { n as findWorkspaceOrThrow, t as Route } from "./antigravity._workspaceKey-B0QeYUOh.js";
5
- import { t as DataTable } from "./data-table-Cdct823O.js";
6
- import { t as PageHeader } from "./page-header-VNSaM3xd.js";
7
- import { n as formatBytes, o as formatNumber, r as formatDateTime } from "./formatters-FJaGZgJk.js";
8
- import { t as AntigravityKeychainPanel } from "./antigravity-keychain-panel-CC7FLmAK.js";
9
- import { t as Badge } from "./badge-EvdhKK_Z.js";
10
- import { t as downloadTextFile } from "./download-DMmiy1xf.js";
11
- import { i as DropdownMenuTrigger, n as DropdownMenuContent, r as DropdownMenuItem, t as DropdownMenu } from "./dropdown-menu-Dy_9t6TN.js";
12
- import { n as ListSearchInput, t as matchesTextQuery } from "./text-filter-CGKxMCKt.js";
13
- import { useDeferredValue, useMemo, useState } from "react";
14
- import { Link } from "@tanstack/react-router";
15
- import { jsx, jsxs } from "react/jsx-runtime";
16
- import { useMutation, useSuspenseQuery } from "@tanstack/react-query";
17
- import { Download, LockKeyhole, MoreHorizontal, ScrollText } from "lucide-react";
18
- import { createColumnHelper } from "@tanstack/react-table";
19
- //#region src/components/antigravity-conversations-table.tsx
20
- var columnHelper = createColumnHelper();
21
- var getConversationExportState = (conversation, decryptionState) => {
22
- const hasArtifacts = conversation.artifactCount > 0;
23
- const isUnlocked = Boolean(decryptionState?.isUnlocked);
24
- const hasTranscript = hasReadableAntigravityConversation(conversation) || hasEncryptedAntigravityConversation(conversation);
25
- const canExportConversation = canExportAntigravityConversation(conversation, isUnlocked);
26
- const lockedTranscript = isAntigravityConversationLocked(conversation, isUnlocked);
27
- const showConversationAction = canExportConversation || lockedTranscript;
28
- return {
29
- canExportConversation,
30
- hasArtifacts,
31
- hasTranscript,
32
- lockedTranscript,
33
- showActions: showConversationAction || hasArtifacts,
34
- showConversationAction
35
- };
36
- };
37
- var getTranscriptLabel = (conversation, exportState) => {
38
- if (!exportState.hasTranscript) return "Summary only";
39
- return `${conversation.transcriptSource ? conversation.transcriptSource.replace(/-/gu, " ") : "transcript"} · ${exportState.lockedTranscript ? "locked" : "available"}`;
40
- };
41
- var columns = (decryptionState, onExportConversation, onExportArtifacts) => [
42
- columnHelper.accessor("title", {
43
- cell: (info) => {
44
- const exportState = getConversationExportState(info.row.original, decryptionState);
45
- return /* @__PURE__ */ jsxs(Link, {
46
- className: "block w-[16rem] max-w-[22rem] space-y-1 rounded-md outline-none transition hover:opacity-80 focus-visible:ring-2 focus-visible:ring-[var(--accent)] lg:w-auto",
47
- params: { conversationId: info.row.original.conversationId },
48
- to: "/antigravity-conversations/$conversationId",
49
- children: [/* @__PURE__ */ jsxs("div", {
50
- className: "flex items-center gap-2",
51
- children: [
52
- /* @__PURE__ */ jsx("p", {
53
- className: "truncate font-medium underline-offset-2 hover:underline",
54
- children: info.getValue()
55
- }),
56
- exportState.hasTranscript ? /* @__PURE__ */ jsx(Badge, {
57
- variant: "secondary",
58
- children: "transcript"
59
- }) : null,
60
- exportState.hasArtifacts ? /* @__PURE__ */ jsx(Badge, {
61
- variant: "outline",
62
- children: "artifact"
63
- }) : null
64
- ]
65
- }), /* @__PURE__ */ jsx("p", {
66
- className: "truncate text-[var(--muted-foreground)] text-xs",
67
- children: info.row.original.conversationId
68
- })]
69
- });
70
- },
71
- header: "Conversation"
72
- }),
73
- columnHelper.accessor("lastUpdatedAtMs", {
74
- cell: (info) => /* @__PURE__ */ jsx("span", {
75
- className: "whitespace-nowrap text-sm",
76
- suppressHydrationWarning: true,
77
- children: formatDateTime(info.getValue())
78
- }),
79
- header: "Updated"
80
- }),
81
- columnHelper.display({
82
- cell: (info) => {
83
- const exportState = getConversationExportState(info.row.original, decryptionState);
84
- return /* @__PURE__ */ jsxs("span", {
85
- className: "text-sm",
86
- children: [getTranscriptLabel(info.row.original, exportState), info.row.original.transcriptEntryCount > 0 ? ` · ${formatNumber(info.row.original.transcriptEntryCount)} entries` : ""]
87
- });
88
- },
89
- header: "Transcript",
90
- id: "transcript"
91
- }),
92
- columnHelper.accessor("artifactCount", {
93
- cell: (info) => /* @__PURE__ */ jsx("span", {
94
- className: "font-mono text-sm",
95
- children: formatNumber(info.getValue())
96
- }),
97
- header: "Artifacts"
98
- }),
99
- columnHelper.accessor("conversationBytes", {
100
- cell: (info) => /* @__PURE__ */ jsx("span", {
101
- className: "font-mono text-sm",
102
- children: formatBytes(info.getValue())
103
- }),
104
- header: "Size"
105
- }),
106
- columnHelper.display({
107
- cell: (info) => {
108
- const exportState = getConversationExportState(info.row.original, decryptionState);
109
- if (!exportState.showActions) return /* @__PURE__ */ jsx("span", {
110
- className: "text-[var(--muted-foreground)] text-sm",
111
- children: "No export"
112
- });
113
- return /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
114
- asChild: true,
115
- children: /* @__PURE__ */ jsx(Button, {
116
- className: "rounded-full",
117
- size: "icon",
118
- type: "button",
119
- variant: "ghost",
120
- onClick: (event) => event.stopPropagation(),
121
- children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" })
122
- })
123
- }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
124
- align: "end",
125
- children: [exportState.showConversationAction ? /* @__PURE__ */ jsxs(DropdownMenuItem, {
126
- disabled: !exportState.canExportConversation,
127
- onClick: () => onExportConversation(info.row.original),
128
- children: [exportState.lockedTranscript ? /* @__PURE__ */ jsx(LockKeyhole, { className: "mr-2 size-4" }) : /* @__PURE__ */ jsx(Download, { className: "mr-2 size-4" }), exportState.lockedTranscript ? "Unlock conversation export first" : "Export conversation"]
129
- }) : null, exportState.hasArtifacts ? /* @__PURE__ */ jsxs(DropdownMenuItem, {
130
- onClick: () => onExportArtifacts(info.row.original),
131
- children: [/* @__PURE__ */ jsx(ScrollText, { className: "mr-2 size-4" }), "Export artifacts"]
132
- }) : null]
133
- })] });
134
- },
135
- header: "",
136
- id: "actions"
137
- })
138
- ];
139
- function AntigravityConversationsTable({ conversations, decryptionState, onExportArtifacts, onExportConversation }) {
140
- return /* @__PURE__ */ jsx(DataTable, {
141
- columns: useMemo(() => columns(decryptionState, onExportConversation, onExportArtifacts), [
142
- decryptionState,
143
- onExportArtifacts,
144
- onExportConversation
145
- ]),
146
- data: conversations,
147
- emptyMessage: "No Antigravity conversations match the current workspace filter."
148
- });
149
- }
150
- //#endregion
151
- //#region src/routes/antigravity.$workspaceKey.tsx?tsr-split=component
152
- function AntigravityWorkspacePage() {
153
- const params = Route.useParams();
154
- const workspaces = useSuspenseQuery(antigravityWorkspacesQueryOptions()).data;
155
- const workspace = findWorkspaceOrThrow(workspaces, params.workspaceKey);
156
- const conversations = useSuspenseQuery(antigravityConversationsQueryOptions(workspace.key)).data;
157
- const decryptionState = useSuspenseQuery(antigravityDecryptionQueryOptions()).data ?? null;
158
- const [searchInput, setSearchInput] = useState("");
159
- const deferredSearch = useDeferredValue(searchInput);
160
- const exportConversationMutation = useMutation({
161
- mutationFn: (conversation) => exportAntigravityConversationFn({ data: { conversationId: conversation.conversationId } }),
162
- onSuccess: (result) => {
163
- downloadTextFile(result.filename, result.content, "text/markdown; charset=utf-8");
164
- }
165
- });
166
- const exportArtifactsMutation = useMutation({
167
- mutationFn: (conversation) => exportAntigravityArtifactsFn({ data: { conversationId: conversation.conversationId } }),
168
- onSuccess: (result) => {
169
- downloadTextFile(result.filename, result.content, "text/markdown; charset=utf-8");
170
- }
171
- });
172
- const visibleConversations = conversations.filter((conversation) => matchesTextQuery(deferredSearch, [
173
- conversation.title,
174
- conversation.conversationId,
175
- conversation.transcriptSource,
176
- conversation.workspaceLabel
177
- ]));
178
- return /* @__PURE__ */ jsxs("div", {
179
- className: "space-y-6",
180
- children: [
181
- /* @__PURE__ */ jsx(PageHeader, {
182
- actions: /* @__PURE__ */ jsx(ListSearchInput, {
183
- placeholder: "Search title, id, or transcript source",
184
- value: searchInput,
185
- onValueChange: setSearchInput
186
- }),
187
- eyebrow: "Antigravity workspace",
188
- subtitle: "Inspect conversation coverage across Antigravity transcripts, raw payloads, and generated artifacts.",
189
- title: workspace.label
190
- }),
191
- /* @__PURE__ */ jsx(AntigravityKeychainPanel, {}),
192
- /* @__PURE__ */ jsx(AntigravityConversationsTable, {
193
- conversations: visibleConversations,
194
- decryptionState,
195
- onExportArtifacts: (conversation) => exportArtifactsMutation.mutate(conversation),
196
- onExportConversation: (conversation) => exportConversationMutation.mutate(conversation)
197
- }),
198
- exportConversationMutation.isError ? /* @__PURE__ */ jsx("p", {
199
- className: "text-[var(--destructive)] text-sm",
200
- children: exportConversationMutation.error instanceof Error ? exportConversationMutation.error.message : "Conversation export failed"
201
- }) : null,
202
- exportArtifactsMutation.isError ? /* @__PURE__ */ jsx("p", {
203
- className: "text-[var(--destructive)] text-sm",
204
- children: exportArtifactsMutation.error instanceof Error ? exportArtifactsMutation.error.message : "Artifact export failed"
205
- }) : null
206
- ]
207
- });
208
- }
209
- //#endregion
210
- export { AntigravityWorkspacePage as component };
@@ -1,104 +0,0 @@
1
- import { i as antigravityWorkspacesQueryOptions } from "./antigravity-queries-CGrJO9Vr.js";
2
- import { t as DataTable } from "./data-table-Cdct823O.js";
3
- import { t as PageHeader } from "./page-header-VNSaM3xd.js";
4
- import { n as formatBytes, o as formatNumber, r as formatDateTime } from "./formatters-FJaGZgJk.js";
5
- import { t as AntigravityKeychainPanel } from "./antigravity-keychain-panel-CC7FLmAK.js";
6
- import { n as ListSearchInput, t as matchesTextQuery } from "./text-filter-CGKxMCKt.js";
7
- import { useDeferredValue, useState } from "react";
8
- import { Link } from "@tanstack/react-router";
9
- import { jsx, jsxs } from "react/jsx-runtime";
10
- import { useSuspenseQuery } from "@tanstack/react-query";
11
- import { createColumnHelper } from "@tanstack/react-table";
12
- //#region src/components/antigravity-workspaces-table.tsx
13
- var columnHelper = createColumnHelper();
14
- var columns = [
15
- columnHelper.accessor("label", {
16
- cell: (info) => /* @__PURE__ */ jsxs(Link, {
17
- className: "block w-[16rem] max-w-[22rem] space-y-1 rounded-md outline-none transition hover:opacity-80 focus-visible:ring-2 focus-visible:ring-[var(--accent)] lg:w-auto",
18
- params: { workspaceKey: info.row.original.key },
19
- to: "/antigravity/$workspaceKey",
20
- children: [/* @__PURE__ */ jsx("p", {
21
- className: "font-medium underline-offset-2 hover:underline",
22
- children: info.getValue()
23
- }), /* @__PURE__ */ jsx("p", {
24
- className: "truncate text-[var(--muted-foreground)] text-xs",
25
- children: info.row.original.uri ?? "Unknown root"
26
- })]
27
- }),
28
- header: "Workspace"
29
- }),
30
- columnHelper.accessor("conversationCount", {
31
- cell: (info) => /* @__PURE__ */ jsx("span", {
32
- className: "font-mono text-sm",
33
- children: formatNumber(info.getValue())
34
- }),
35
- header: "Conversations"
36
- }),
37
- columnHelper.accessor("transcriptCount", {
38
- cell: (info) => /* @__PURE__ */ jsx("span", {
39
- className: "font-mono text-sm",
40
- children: formatNumber(info.getValue())
41
- }),
42
- header: "Transcripts"
43
- }),
44
- columnHelper.accessor("artifactCount", {
45
- cell: (info) => /* @__PURE__ */ jsx("span", {
46
- className: "font-mono text-sm",
47
- children: formatNumber(info.getValue())
48
- }),
49
- header: "Artifacts"
50
- }),
51
- columnHelper.accessor("conversationBytes", {
52
- cell: (info) => /* @__PURE__ */ jsx("span", {
53
- className: "font-mono text-sm",
54
- children: formatBytes(info.getValue())
55
- }),
56
- header: "Size"
57
- }),
58
- columnHelper.accessor("lastActiveMs", {
59
- cell: (info) => /* @__PURE__ */ jsx("span", {
60
- className: "whitespace-nowrap text-sm",
61
- suppressHydrationWarning: true,
62
- children: formatDateTime(info.getValue())
63
- }),
64
- header: "Last updated"
65
- })
66
- ];
67
- function AntigravityWorkspacesTable({ workspaces }) {
68
- return /* @__PURE__ */ jsx(DataTable, {
69
- columns,
70
- data: workspaces,
71
- emptyMessage: "No Antigravity workspaces match the current search."
72
- });
73
- }
74
- //#endregion
75
- //#region src/routes/antigravity.index.tsx?tsr-split=component
76
- function AntigravityPage() {
77
- const workspaces = useSuspenseQuery(antigravityWorkspacesQueryOptions()).data;
78
- const [searchInput, setSearchInput] = useState("");
79
- const deferredSearch = useDeferredValue(searchInput);
80
- const visibleWorkspaces = workspaces.filter((workspace) => matchesTextQuery(deferredSearch, [
81
- workspace.label,
82
- workspace.uri,
83
- workspace.key
84
- ]));
85
- return /* @__PURE__ */ jsxs("div", {
86
- className: "space-y-6",
87
- children: [
88
- /* @__PURE__ */ jsx(PageHeader, {
89
- actions: /* @__PURE__ */ jsx(ListSearchInput, {
90
- placeholder: "Search workspace name or path",
91
- value: searchInput,
92
- onValueChange: setSearchInput
93
- }),
94
- eyebrow: "Inventory",
95
- subtitle: "Workspace groups are derived from Antigravity summary indexes, raw conversation files, local logs, and brain artifacts.",
96
- title: "Antigravity"
97
- }),
98
- /* @__PURE__ */ jsx(AntigravityKeychainPanel, {}),
99
- /* @__PURE__ */ jsx(AntigravityWorkspacesTable, { workspaces: visibleWorkspaces })
100
- ]
101
- });
102
- }
103
- //#endregion
104
- export { AntigravityPage as component };
@@ -1,11 +0,0 @@
1
- import { t as ReloadErrorPanel } from "./reload-error-panel-BJMxY3U1.js";
2
- import { jsx } from "react/jsx-runtime";
3
- //#region src/routes/antigravity.index.tsx?tsr-split=errorComponent
4
- function AntigravityErrorComponent({ error }) {
5
- return /* @__PURE__ */ jsx(ReloadErrorPanel, {
6
- description: error.message,
7
- title: "Failed to load Antigravity workspaces"
8
- });
9
- }
10
- //#endregion
11
- export { AntigravityErrorComponent as errorComponent };
@@ -1,26 +0,0 @@
1
- import { t as cn } from "./utils-C_uf36nf.js";
2
- import { jsx } from "react/jsx-runtime";
3
- import { cva } from "class-variance-authority";
4
- import { Slot } from "radix-ui";
5
- //#region src/components/ui/badge.tsx
6
- var badgeVariants = cva("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3", {
7
- defaultVariants: { variant: "default" },
8
- variants: { variant: {
9
- default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
10
- destructive: "bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",
11
- ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
12
- link: "text-primary underline-offset-4 [a&]:hover:underline",
13
- outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
14
- secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90"
15
- } }
16
- });
17
- function Badge({ className, variant = "default", asChild = false, ...props }) {
18
- return /* @__PURE__ */ jsx(asChild ? Slot.Root : "span", {
19
- "data-slot": "badge",
20
- "data-variant": variant,
21
- className: cn(badgeVariants({ variant }), className),
22
- ...props
23
- });
24
- }
25
- //#endregion
26
- export { Badge as t };
@@ -1,46 +0,0 @@
1
- import { t as cn } from "./utils-C_uf36nf.js";
2
- import { jsx } from "react/jsx-runtime";
3
- import { cva } from "class-variance-authority";
4
- import { Slot } from "radix-ui";
5
- //#region src/components/ui/button.tsx
6
- var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
7
- defaultVariants: {
8
- size: "default",
9
- variant: "default"
10
- },
11
- variants: {
12
- size: {
13
- default: "h-9 px-4 py-2 has-[>svg]:px-3",
14
- icon: "size-9",
15
- "icon-lg": "size-10",
16
- "icon-sm": "size-8",
17
- "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
18
- lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
19
- sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
20
- xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3"
21
- },
22
- variant: {
23
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
24
- destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
25
- ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
26
- link: "text-primary underline-offset-4 hover:underline",
27
- outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
28
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80"
29
- }
30
- }
31
- });
32
- function Button({ className, variant = "default", size = "default", asChild = false, ...props }) {
33
- return /* @__PURE__ */ jsx(asChild ? Slot.Root : "button", {
34
- "data-slot": "button",
35
- "data-variant": variant,
36
- "data-size": size,
37
- className: cn(buttonVariants({
38
- className,
39
- size,
40
- variant
41
- })),
42
- ...props
43
- });
44
- }
45
- //#endregion
46
- export { Button as t };