spiracha 1.3.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/AGENTS.md +55 -6
  2. package/README.md +46 -5
  3. package/apps/ui/AGENTS.md +31 -4
  4. package/apps/ui/README.md +59 -5
  5. package/apps/ui/dist/client/assets/analytics-DOy1b6Sh.js +1 -0
  6. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DqySVO2K.js +7 -0
  7. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-KAcXtNxI.js +1 -0
  8. package/apps/ui/dist/client/assets/antigravity-keychain-panel-B77qJz6f.js +1 -0
  9. package/apps/ui/dist/client/assets/antigravity._workspaceKey-B3NM6gRH.js +1 -0
  10. package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +1 -0
  11. package/apps/ui/dist/client/assets/antigravity.index-DP9JC2P9.js +1 -0
  12. package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +1 -0
  13. package/apps/ui/dist/client/assets/badge-C3i4OKs8.js +1 -0
  14. package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +1 -0
  15. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-8pQ55ci2.js +1 -0
  16. package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-DVz5UmtU.js +1 -0
  17. package/apps/ui/dist/client/assets/claude-code._workspaceKey-BBKskSum.js +1 -0
  18. package/apps/ui/dist/client/assets/claude-code._workspaceKey-OkikMUFs.js +1 -0
  19. package/apps/ui/dist/client/assets/claude-code.index-Cwu76dbb.js +1 -0
  20. package/apps/ui/dist/client/assets/claude-code.index-D6eMd08t.js +1 -0
  21. package/apps/ui/dist/client/assets/createServerFn-B-KkwmHU.js +3 -0
  22. package/apps/ui/dist/client/assets/cursor-threads._composerId-CmBFclK8.js +1 -0
  23. package/apps/ui/dist/client/assets/cursor-threads._composerId-hBWlP1D-.js +1 -0
  24. package/apps/ui/dist/client/assets/cursor._workspaceKey-BFPkIRi-.js +1 -0
  25. package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +1 -0
  26. package/apps/ui/dist/client/assets/cursor.index-8y4o20kb.js +2 -0
  27. package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +1 -0
  28. package/apps/ui/dist/client/assets/{data-table-DeQq8xdt.js → data-table-Br78_dk3.js} +2 -2
  29. package/apps/ui/dist/client/assets/delete-confirm-dialog-Bxs07u-j.js +7 -0
  30. package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +1 -0
  31. package/apps/ui/dist/client/assets/dist-BrJhN2A0.js +5 -0
  32. package/apps/ui/dist/client/assets/dist-Cmd3AIfD.js +1 -0
  33. package/apps/ui/dist/client/assets/dist-DvMS2965.js +1 -0
  34. package/apps/ui/dist/client/assets/download-Bf0QJKD3.js +1 -0
  35. package/apps/ui/dist/client/assets/dropdown-menu-D5cvPaZt.js +1 -0
  36. package/apps/ui/dist/client/assets/es2015-ad6040dw.js +41 -0
  37. package/apps/ui/dist/client/assets/export-dialog-Dr8d2MqD.js +1 -0
  38. package/apps/ui/dist/client/assets/formatters-BtqyrX_c.js +1 -0
  39. package/apps/ui/dist/client/assets/index-C-STgIH4.js +166 -0
  40. package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +1 -0
  41. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-CKgfJ7GR.js +1 -0
  42. package/apps/ui/dist/client/assets/kiro-sessions._sessionId-zvIJHtQF.js +1 -0
  43. package/apps/ui/dist/client/assets/kiro._workspaceKey-DhVuJuZB.js +1 -0
  44. package/apps/ui/dist/client/assets/kiro._workspaceKey-QArsjkTY.js +1 -0
  45. package/apps/ui/dist/client/assets/kiro.index-C-fr4m7i.js +1 -0
  46. package/apps/ui/dist/client/assets/kiro.index-OYgAdtZd.js +1 -0
  47. package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +1 -0
  48. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-DLjiTst-.js +1 -0
  49. package/apps/ui/dist/client/assets/opencode-sessions._sessionId-biBwrRbt.js +8 -0
  50. package/apps/ui/dist/client/assets/opencode._workspaceKey-C7OIzMOJ.js +1 -0
  51. package/apps/ui/dist/client/assets/opencode._workspaceKey-sBakX0oI.js +1 -0
  52. package/apps/ui/dist/client/assets/opencode.index-Bl_kNs9N.js +1 -0
  53. package/apps/ui/dist/client/assets/opencode.index-CN53bVmb.js +1 -0
  54. package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +1 -0
  55. package/apps/ui/dist/client/assets/preload-helper-B8fFrdxC.js +1 -0
  56. package/apps/ui/dist/client/assets/projects._project-D8WloxQN.js +1 -0
  57. package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +1 -0
  58. package/apps/ui/dist/client/assets/projects.index-5xRtuJdX.js +3 -0
  59. package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +1 -0
  60. package/apps/ui/dist/client/assets/react-dom-DL96Jor4.js +1 -0
  61. package/apps/ui/dist/client/assets/refresh-ccw-BgKjOiA6.js +1 -0
  62. package/apps/ui/dist/client/assets/reload-error-panel-AHqu0akK.js +1 -0
  63. package/apps/ui/dist/client/assets/routes-DnzF_9CX.js +1 -0
  64. package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +1 -0
  65. package/apps/ui/dist/client/assets/select-CYF6pF37.js +1 -0
  66. package/apps/ui/dist/client/assets/settings-Dx70jgP_.js +1 -0
  67. package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +1 -0
  68. package/apps/ui/dist/client/assets/styles-B7Zi9EFA.css +1 -0
  69. package/apps/ui/dist/client/assets/tabs-CmuhkT-c.js +7 -0
  70. package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +2 -0
  71. package/apps/ui/dist/client/assets/thread-transcript-stats-BUNz6u7F.js +1 -0
  72. package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +1 -0
  73. package/apps/ui/dist/client/assets/threads._threadId-BMRSFow3.js +1 -0
  74. package/apps/ui/dist/client/assets/useMutation-BSFult2i.js +1 -0
  75. package/apps/ui/dist/client/assets/useQuery-CjINKZf1.js +1 -0
  76. package/apps/ui/dist/client/icon.svg +2 -1
  77. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CQ8Jjs3B.js +387 -0
  78. package/apps/ui/dist/server/assets/analytics-CYP_LT5Y.js +16 -0
  79. package/apps/ui/dist/server/assets/{analytics-Dc_QDZZC.js → analytics-CtpOMVMO.js} +13 -6
  80. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-BKOyL2T6.js +613 -0
  81. package/apps/ui/dist/server/assets/{antigravity-conversations._conversationId-C9z4AeN-.js → antigravity-conversations._conversationId-eS87Dx7g.js} +2 -2
  82. package/apps/ui/dist/server/assets/{antigravity-db-D9gW1D8G.js → antigravity-db-Bh8_U9uw.js} +11 -7
  83. package/apps/ui/dist/server/assets/{antigravity-keychain-panel-bpPoxhyp.js → antigravity-keychain-panel-CC7FLmAK.js} +1 -1
  84. package/apps/ui/dist/server/assets/{antigravity-queries-DVIKyOXi.js → antigravity-queries-CGrJO9Vr.js} +5 -5
  85. package/apps/ui/dist/server/assets/{antigravity-server-Cp1lc8fp.js → antigravity-server-CHRjVFqN.js} +11 -11
  86. package/apps/ui/dist/server/assets/{antigravity._workspaceKey-Dl8o1ptg.js → antigravity._workspaceKey-B0QeYUOh.js} +2 -2
  87. package/apps/ui/dist/server/assets/{antigravity._workspaceKey-BAoa4izU.js → antigravity._workspaceKey-C3kP-qyN.js} +4 -4
  88. package/apps/ui/dist/server/assets/{antigravity.index-BOlrJasZ.js → antigravity.index-CPCYkqCi.js} +2 -2
  89. package/apps/ui/dist/server/assets/claude-code-db-Ik3VStKZ.js +361 -0
  90. package/apps/ui/dist/server/assets/claude-code-queries-Cgzi4K-e.js +37 -0
  91. package/apps/ui/dist/server/assets/claude-code-server-PfraClXS.js +72 -0
  92. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-C55oe6zj.js +18 -0
  93. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-D1RYYi3j.js +473 -0
  94. package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-DSvPLEUL.js +11 -0
  95. package/apps/ui/dist/server/assets/claude-code-transcript-C-bxh3cS.js +139 -0
  96. package/apps/ui/dist/server/assets/claude-code-transcript-phase-DmUMc8VU.js +10 -0
  97. package/apps/ui/dist/server/assets/claude-code._workspaceKey-B5Xg_-tE.js +28 -0
  98. package/apps/ui/dist/server/assets/claude-code._workspaceKey-BPlzyXPa.js +11 -0
  99. package/apps/ui/dist/server/assets/claude-code._workspaceKey-DqDve2wl.js +191 -0
  100. package/apps/ui/dist/server/assets/claude-code.index-B7yYR7dD.js +92 -0
  101. package/apps/ui/dist/server/assets/claude-code.index-BUHThG1W.js +11 -0
  102. package/apps/ui/dist/server/assets/{codex-queries-ev_mRUzr.js → codex-queries-CtgeZ7VL.js} +15 -13
  103. package/apps/ui/dist/server/assets/{codex-server-DIYFLozB.js → codex-server-CGXU4H8-.js} +421 -146
  104. package/apps/ui/dist/server/assets/concurrency-VXtYvlGh.js +18 -0
  105. package/apps/ui/dist/server/assets/{createServerRpc-Cg-Zr1rq.js → createServerRpc-CF_DEwnm.js} +1 -1
  106. package/apps/ui/dist/server/assets/{createSsrRpc-DVnVQhGx.js → createSsrRpc-C754NPki.js} +1 -1
  107. package/apps/ui/dist/server/assets/{cursor-db-B7agkAvM.js → cursor-db-CZnYy7aT.js} +196 -9
  108. package/apps/ui/dist/server/assets/{cursor-queries-f7DjBKSD.js → cursor-queries-NCIM0Nat.js} +12 -10
  109. package/apps/ui/dist/server/assets/{cursor-recovery-9bJLs7vG.js → cursor-recovery-CXpO8KcD.js} +2 -2
  110. package/apps/ui/dist/server/assets/{cursor-server-nPzojHN3.js → cursor-server-DNu52A3K.js} +71 -42
  111. package/apps/ui/dist/server/assets/cursor-threads._composerId-Ckn6ItHI.js +582 -0
  112. package/apps/ui/dist/server/assets/{cursor-threads._composerId-B3qcsh9C.js → cursor-threads._composerId-p9-ARAzc.js} +2 -2
  113. package/apps/ui/dist/server/assets/{cursor-transcript-2iL3KFSK.js → cursor-transcript-B7tGnqtn.js} +1 -1
  114. package/apps/ui/dist/server/assets/{cursor._workspaceKey-BL_CQyHQ.js → cursor._workspaceKey-CZuohIUL.js} +2 -2
  115. package/apps/ui/dist/server/assets/{cursor._workspaceKey-BhQeepXB.js → cursor._workspaceKey-DPp5JSjy.js} +11 -9
  116. package/apps/ui/dist/server/assets/{cursor.index-CsrdckZD.js → cursor.index-DkWT-mxw.js} +2 -2
  117. package/apps/ui/dist/server/assets/{delete-confirm-dialog-PCD7S0_M.js → delete-confirm-dialog-BcBNCxWB.js} +5 -1
  118. package/apps/ui/dist/server/assets/{empty-plugin-adapters-D3qLMPfC.js → empty-plugin-adapters-B3lHh1La.js} +1 -1
  119. package/apps/ui/dist/server/assets/{export-dialog-DaPlOGFT.js → export-dialog-D88ze9Gy.js} +54 -12
  120. package/apps/ui/dist/server/assets/kiro-db--fXrED_-.js +552 -0
  121. package/apps/ui/dist/server/assets/kiro-queries-CzNlM2ok.js +37 -0
  122. package/apps/ui/dist/server/assets/kiro-server-9WRxg2Au.js +72 -0
  123. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-CRY2c7YO.js +11 -0
  124. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-F1UlwxmR.js +449 -0
  125. package/apps/ui/dist/server/assets/kiro-sessions._sessionId-bvTulT7C.js +18 -0
  126. package/apps/ui/dist/server/assets/kiro-transcript-DoekQBaH.js +112 -0
  127. package/apps/ui/dist/server/assets/kiro-transcript-phase-CJG40nQg.js +27 -0
  128. package/apps/ui/dist/server/assets/kiro._workspaceKey-BDe9sQwo.js +11 -0
  129. package/apps/ui/dist/server/assets/kiro._workspaceKey-CJsjgNwO.js +28 -0
  130. package/apps/ui/dist/server/assets/kiro._workspaceKey-D_-4Qb7y.js +193 -0
  131. package/apps/ui/dist/server/assets/kiro.index-C__-UROk.js +11 -0
  132. package/apps/ui/dist/server/assets/kiro.index-CmTbqeYj.js +93 -0
  133. package/apps/ui/dist/server/assets/opencode-db-BM7KjOzc.js +397 -0
  134. package/apps/ui/dist/server/assets/opencode-queries-BeNYXnQv.js +50 -0
  135. package/apps/ui/dist/server/assets/opencode-server-BpQ_kRze.js +72 -0
  136. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-CGQ-t0vD.js +518 -0
  137. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-D8Q7in_Z.js +18 -0
  138. package/apps/ui/dist/server/assets/opencode-sessions._sessionId-DKOvi0lV.js +11 -0
  139. package/apps/ui/dist/server/assets/opencode-think-tags-CAoD-EcZ.js +87 -0
  140. package/apps/ui/dist/server/assets/opencode-transcript-BNTcGNym.js +141 -0
  141. package/apps/ui/dist/server/assets/opencode-transcript-phase-OqLkiQD0.js +32 -0
  142. package/apps/ui/dist/server/assets/opencode._workspaceKey-BdqcWHw1.js +11 -0
  143. package/apps/ui/dist/server/assets/opencode._workspaceKey-CfH96HTT.js +28 -0
  144. package/apps/ui/dist/server/assets/opencode._workspaceKey-DdbHPDrO.js +207 -0
  145. package/apps/ui/dist/server/assets/opencode.index-BbVzkJXP.js +11 -0
  146. package/apps/ui/dist/server/assets/opencode.index-Vh_Gq_1L.js +93 -0
  147. package/apps/ui/dist/server/assets/{projects._project-CqqUFr4l.js → projects._project-4io5LO0E.js} +5 -3
  148. package/apps/ui/dist/server/assets/{projects._project-DahGqNYS.js → projects._project-D6ZoGhJ8.js} +42 -12
  149. package/apps/ui/dist/server/assets/{projects.index-CkTeFWNU.js → projects.index-BkLiF2FF.js} +21 -7
  150. package/apps/ui/dist/server/assets/projects.index-DesYXwfi.js +14 -0
  151. package/apps/ui/dist/server/assets/route-search-ts4W9MJ9.js +38 -0
  152. package/apps/ui/dist/server/assets/router-Sac2DGk6.js +518 -0
  153. package/apps/ui/dist/server/assets/{routes-Xix3ZeSo.js → routes-Bsact1uB.js} +2 -2
  154. package/apps/ui/dist/server/assets/{routes-0x1U0IHq.js → routes-BzkJgq4W.js} +2 -2
  155. package/apps/ui/dist/server/assets/{shared-CPRNYIql.js → shared-DyhChtHf.js} +4 -1
  156. package/apps/ui/dist/server/assets/source-session-export-server-DNutCawb.js +38 -0
  157. package/apps/ui/dist/server/assets/start-B_HFwkkk.js +4 -0
  158. package/apps/ui/dist/server/assets/tabs-DkaChNVg.js +501 -0
  159. package/apps/ui/dist/server/assets/thread-transcript-stats-Dh34mt2u.js +45 -0
  160. package/apps/ui/dist/server/assets/threads._threadId-BeXEc4Lo.js +648 -0
  161. package/apps/ui/dist/server/assets/{threads._threadId-BLCkGW--.js → threads._threadId-Ci0S4mKU.js} +2 -2
  162. package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +83 -0
  163. package/apps/ui/dist/server/server.js +141 -83
  164. package/package.json +28 -11
  165. package/src/lib/antigravity-db.ts +20 -13
  166. package/src/lib/claude-code-db.ts +655 -0
  167. package/src/lib/claude-code-exporter-types.ts +110 -0
  168. package/src/lib/claude-code-transcript-phase.ts +25 -0
  169. package/src/lib/claude-code-transcript.ts +180 -0
  170. package/src/lib/codex-analytics.ts +118 -18
  171. package/src/lib/codex-browser-db.ts +491 -56
  172. package/src/lib/codex-browser-export.ts +27 -71
  173. package/src/lib/codex-thread-cache.ts +17 -1
  174. package/src/lib/concurrency.ts +25 -0
  175. package/src/lib/cursor-db.ts +318 -7
  176. package/src/lib/cursor-exporter.ts +2 -2
  177. package/src/lib/kiro-db.ts +949 -0
  178. package/src/lib/kiro-exporter-types.ts +100 -0
  179. package/src/lib/kiro-transcript-phase.ts +41 -0
  180. package/src/lib/kiro-transcript.ts +115 -0
  181. package/src/lib/opencode-db.ts +610 -0
  182. package/src/lib/opencode-exporter-types.ts +129 -0
  183. package/src/lib/opencode-think-tags.ts +126 -0
  184. package/src/lib/opencode-transcript-phase.ts +50 -0
  185. package/src/lib/opencode-transcript.ts +194 -0
  186. package/src/lib/shared.ts +25 -0
  187. package/src/lib/ui-cache.ts +14 -1
  188. package/src/lib/ui-export-archive.ts +61 -0
  189. package/apps/ui/dist/client/assets/analytics-C83LcWNb.js +0 -1
  190. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DkY8EEpK.js +0 -1
  191. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-OraHuz8j.js +0 -1
  192. package/apps/ui/dist/client/assets/antigravity-keychain-panel-DnDcq1ge.js +0 -1
  193. package/apps/ui/dist/client/assets/antigravity._workspaceKey-CQaZscA5.js +0 -1
  194. package/apps/ui/dist/client/assets/antigravity._workspaceKey-DTs99obU.js +0 -1
  195. package/apps/ui/dist/client/assets/antigravity.index-DbJa715k.js +0 -1
  196. package/apps/ui/dist/client/assets/antigravity.index-P-rs6w5X.js +0 -1
  197. package/apps/ui/dist/client/assets/badge-wgTVp-aq.js +0 -1
  198. package/apps/ui/dist/client/assets/checkbox-BUx0Gkuf.js +0 -1
  199. package/apps/ui/dist/client/assets/cursor-threads._composerId-D0DFXt8t.js +0 -1
  200. package/apps/ui/dist/client/assets/cursor-threads._composerId-tFa6Cf6A.js +0 -1
  201. package/apps/ui/dist/client/assets/cursor._workspaceKey-Df4PfA2k.js +0 -1
  202. package/apps/ui/dist/client/assets/cursor._workspaceKey-DwrzEtnV.js +0 -1
  203. package/apps/ui/dist/client/assets/cursor.index-CNBf4ZiR.js +0 -1
  204. package/apps/ui/dist/client/assets/cursor.index-DP9Hy8X6.js +0 -2
  205. package/apps/ui/dist/client/assets/delete-confirm-dialog-CPlNsLhM.js +0 -11
  206. package/apps/ui/dist/client/assets/dist-Ds3kS91l.js +0 -1
  207. package/apps/ui/dist/client/assets/download-DLuPnxpV.js +0 -1
  208. package/apps/ui/dist/client/assets/dropdown-menu-lFk6zjoL.js +0 -1
  209. package/apps/ui/dist/client/assets/es2015-D-H_iZF6.js +0 -41
  210. package/apps/ui/dist/client/assets/export-dialog-CyqyvwiP.js +0 -1
  211. package/apps/ui/dist/client/assets/formatters-DbCKP02D.js +0 -1
  212. package/apps/ui/dist/client/assets/index-C-ZPpKJ0.js +0 -22
  213. package/apps/ui/dist/client/assets/json-panel-BsngvucB.js +0 -1
  214. package/apps/ui/dist/client/assets/metadata-section-Dtl8dNag.js +0 -1
  215. package/apps/ui/dist/client/assets/metric-card-DNzR1Rne.js +0 -1
  216. package/apps/ui/dist/client/assets/page-header-dha_O7ZL.js +0 -1
  217. package/apps/ui/dist/client/assets/projects._project-B7HBhbXv.js +0 -1
  218. package/apps/ui/dist/client/assets/projects._project-DHVvuT7A.js +0 -1
  219. package/apps/ui/dist/client/assets/projects.index-BUUtx2AZ.js +0 -1
  220. package/apps/ui/dist/client/assets/projects.index-BojAe1Y4.js +0 -3
  221. package/apps/ui/dist/client/assets/refresh-ccw-B-ASKHtx.js +0 -1
  222. package/apps/ui/dist/client/assets/reload-error-panel-DD8M1BIY.js +0 -1
  223. package/apps/ui/dist/client/assets/routes-q7bzFp35.js +0 -1
  224. package/apps/ui/dist/client/assets/scroll-text-TvHyiJ_N.js +0 -1
  225. package/apps/ui/dist/client/assets/select-BFv1HMiT.js +0 -1
  226. package/apps/ui/dist/client/assets/settings-CvegTo4F.js +0 -1
  227. package/apps/ui/dist/client/assets/styles-Ch0r3kMZ.css +0 -1
  228. package/apps/ui/dist/client/assets/text-document-panel-D7Rws41o.js +0 -1
  229. package/apps/ui/dist/client/assets/text-filter-2q5pEoZh.js +0 -2
  230. package/apps/ui/dist/client/assets/threads._threadId-LpZVUlPq.js +0 -7
  231. package/apps/ui/dist/client/assets/threads._threadId-MSmNIBkq.js +0 -1
  232. package/apps/ui/dist/client/assets/useMutation-BOPJU9e0.js +0 -1
  233. package/apps/ui/dist/client/assets/useQuery-CbxZiVGF.js +0 -1
  234. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-zvGzK-Yx.js +0 -229
  235. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-JEhx-f2R.js +0 -212
  236. package/apps/ui/dist/server/assets/cursor-threads._composerId-BK3iW-3e.js +0 -218
  237. package/apps/ui/dist/server/assets/json-panel-RYsxWFae.js +0 -16
  238. package/apps/ui/dist/server/assets/metadata-section-D6Lbc7D6.js +0 -54
  239. package/apps/ui/dist/server/assets/router-K0m7dK4T.js +0 -394
  240. package/apps/ui/dist/server/assets/start-bX7bXjzw.js +0 -4
  241. package/apps/ui/dist/server/assets/text-document-panel-D8JbQWAn.js +0 -23
  242. package/apps/ui/dist/server/assets/threads._threadId-LjgsGUh-.js +0 -1052
@@ -0,0 +1,449 @@
1
+ import { t as Button } from "./button-CmTDnzOn.js";
2
+ import { i as exportKiroSessionFn, t as kiroSessionDetailQueryOptions } from "./kiro-queries-CzNlM2ok.js";
3
+ import { t as Route } from "./kiro-sessions._sessionId-bvTulT7C.js";
4
+ import { t as Checkbox } from "./checkbox-C0hovF41.js";
5
+ import { t as MetricCard } from "./metric-card-ByEeLu0r.js";
6
+ import { t as PageHeader } from "./page-header-VNSaM3xd.js";
7
+ import { i as formatList, o as formatNumber, r as formatDateTime } from "./formatters-FJaGZgJk.js";
8
+ import { a as TranscriptView, c as Breadcrumbs, i as TabsTrigger, n as TabsContent, o as MetadataSection, r as TabsList, s as JsonPanel, t as Tabs } from "./tabs-DkaChNVg.js";
9
+ import { n as downloadUrlFile, t as downloadTextFile } from "./download-DMmiy1xf.js";
10
+ import { t as ExportDialog } from "./export-dialog-D88ze9Gy.js";
11
+ import { t as getThreadTranscriptStats } from "./thread-transcript-stats-Dh34mt2u.js";
12
+ import { n as getKiroMessagePhase, t as getFinalKiroAssistantMessageEntryIds } from "./kiro-transcript-phase-CJG40nQg.js";
13
+ import { 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 } from "lucide-react";
18
+ //#region src/lib/kiro-transcript-events.ts
19
+ var buildRaw = (entry, part, eventType) => ({
20
+ entryId: entry.entryId,
21
+ eventType,
22
+ executionId: entry.executionId,
23
+ role: entry.role,
24
+ source: "kiro_workspace_sessions",
25
+ type: part.type,
26
+ ...part.raw
27
+ });
28
+ var buildMessageEvent = (transcript, entry, part, sequence, text, phase) => ({
29
+ isHiddenByDefault: entry.role !== "assistant" && entry.role !== "user",
30
+ kind: "message",
31
+ memoryCitation: null,
32
+ model: transcript.session.selectedModel ?? transcript.session.defaultModelTitle,
33
+ phase,
34
+ raw: buildRaw(entry, part, "message"),
35
+ role: entry.role,
36
+ sequence,
37
+ text,
38
+ timestamp: entry.timestamp,
39
+ variant: entry.role === "user" ? "user_message" : entry.role === "assistant" ? "agent_message" : "message"
40
+ });
41
+ var getPartString = (part, key) => {
42
+ const value = part.raw[key];
43
+ return typeof value === "string" && value.trim() ? value : null;
44
+ };
45
+ var buildToolCallEvent = (transcript, entry, part, sequence, command) => ({
46
+ argumentsParseFailed: false,
47
+ argumentsText: command,
48
+ callId: entry.entryId,
49
+ command,
50
+ kind: "tool_call",
51
+ name: getPartString(part, "toolName") ?? "kiro_action",
52
+ raw: buildRaw(entry, part, "tool_call"),
53
+ sequence,
54
+ timestamp: entry.timestamp,
55
+ workdir: transcript.session.worktree
56
+ });
57
+ var partToEvents = (transcript, entry, part, sequence, finalAssistantMessageEntryIds) => {
58
+ if (entry.entryType === "tool_call" && part.type === "text") {
59
+ const command = part.text?.trim();
60
+ return command ? [buildToolCallEvent(transcript, entry, part, sequence, command)] : [];
61
+ }
62
+ if (part.type === "text" || part.type === "image") {
63
+ const text = part.text?.trim();
64
+ return text ? [buildMessageEvent(transcript, entry, part, sequence, text, getKiroMessagePhase(entry, finalAssistantMessageEntryIds))] : [];
65
+ }
66
+ return [];
67
+ };
68
+ var kiroTranscriptToThreadEvents = (transcript) => {
69
+ const events = [];
70
+ const finalAssistantMessageEntryIds = getFinalKiroAssistantMessageEntryIds(transcript.entries);
71
+ let sequence = 0;
72
+ for (const entry of transcript.entries) for (const part of entry.parts) {
73
+ events.push(...partToEvents(transcript, entry, part, sequence, finalAssistantMessageEntryIds));
74
+ sequence += 1;
75
+ }
76
+ return events;
77
+ };
78
+ var getKiroThreadTranscriptStats = (events) => {
79
+ return getThreadTranscriptStats(events);
80
+ };
81
+ //#endregion
82
+ //#region src/routes/kiro-sessions.$sessionId.tsx?tsr-split=component
83
+ var getKiroModelLabel = (detail) => {
84
+ return detail.session.selectedModel ?? detail.session.defaultModelTitle ?? "unknown";
85
+ };
86
+ var buildSessionMetadata = (detail) => [
87
+ {
88
+ label: "Session ID",
89
+ value: /* @__PURE__ */ jsx("span", {
90
+ "data-mono": "true",
91
+ children: detail.session.sessionId
92
+ })
93
+ },
94
+ {
95
+ label: "Workspace",
96
+ value: /* @__PURE__ */ jsx(Link, {
97
+ className: "text-[var(--accent)]",
98
+ params: { workspaceKey: detail.session.workspaceKey },
99
+ to: "/kiro/$workspaceKey",
100
+ children: detail.session.workspaceLabel
101
+ })
102
+ },
103
+ {
104
+ label: "Worktree",
105
+ value: detail.session.worktree
106
+ },
107
+ {
108
+ label: "Workspace path",
109
+ value: detail.session.workspacePath ?? "unknown"
110
+ },
111
+ {
112
+ label: "Workspace directory",
113
+ value: detail.session.workspaceDirectory ?? "unknown"
114
+ },
115
+ {
116
+ label: "Selected model",
117
+ value: detail.session.selectedModel ?? "unknown"
118
+ },
119
+ {
120
+ label: "Default model",
121
+ value: detail.session.defaultModelTitle ?? "unknown"
122
+ },
123
+ {
124
+ label: "Profile",
125
+ value: detail.session.selectedProfileId ?? "unknown"
126
+ },
127
+ {
128
+ label: "Autonomy mode",
129
+ value: detail.session.autonomyMode ?? "unknown"
130
+ },
131
+ {
132
+ label: "Session type",
133
+ value: detail.session.sessionType ?? "unknown"
134
+ },
135
+ {
136
+ label: "Created",
137
+ value: /* @__PURE__ */ jsx("span", {
138
+ suppressHydrationWarning: true,
139
+ children: formatDateTime(detail.session.createdAtMs)
140
+ })
141
+ },
142
+ {
143
+ label: "Last active",
144
+ value: /* @__PURE__ */ jsx("span", {
145
+ suppressHydrationWarning: true,
146
+ children: formatDateTime(detail.session.lastActiveAtMs)
147
+ })
148
+ },
149
+ {
150
+ label: "Source file",
151
+ value: detail.session.filePath
152
+ }
153
+ ];
154
+ var buildTranscriptStatsItems = (detail, events, stats) => [
155
+ {
156
+ label: "Event kinds",
157
+ value: formatList([...new Set(events.map((event) => event.kind))])
158
+ },
159
+ {
160
+ label: "Messages",
161
+ value: formatNumber(stats.messageCount)
162
+ },
163
+ {
164
+ label: "User messages",
165
+ value: formatNumber(stats.userMessageCount)
166
+ },
167
+ {
168
+ label: "Assistant messages",
169
+ value: formatNumber(stats.assistantMessageCount)
170
+ },
171
+ {
172
+ label: "Final answers",
173
+ value: formatNumber(stats.finalAnswerCount)
174
+ },
175
+ {
176
+ label: "Images",
177
+ value: formatNumber(detail.session.imageCount)
178
+ },
179
+ {
180
+ label: "Prompt logs",
181
+ value: formatNumber(detail.session.promptLogCount)
182
+ },
183
+ {
184
+ label: "Renderable parts",
185
+ value: formatNumber(detail.renderablePartCount)
186
+ }
187
+ ];
188
+ var KiroTranscriptControls = ({ rawJsonDisabled = false, showCommentary, showExtraEvents, showRawJson, showToolCalls, showUserMessages, onShowCommentaryChange, onShowExtraEventsChange, onShowRawJsonChange, onShowToolCallsChange, onShowUserMessagesChange }) => {
189
+ return /* @__PURE__ */ jsxs("div", {
190
+ className: "flex flex-wrap gap-4 rounded-xl border border-[var(--border)] bg-[var(--panel)] px-4 py-3 shadow-[var(--panel-shadow)]",
191
+ children: [
192
+ /* @__PURE__ */ jsxs("div", {
193
+ className: "flex items-center gap-2 text-sm",
194
+ children: [/* @__PURE__ */ jsx(Checkbox, {
195
+ checked: showToolCalls,
196
+ id: "kiro-transcript-show-tool-calls",
197
+ onCheckedChange: (checked) => onShowToolCallsChange(checked === true)
198
+ }), /* @__PURE__ */ jsx("label", {
199
+ htmlFor: "kiro-transcript-show-tool-calls",
200
+ children: "Show tool calls"
201
+ })]
202
+ }),
203
+ /* @__PURE__ */ jsxs("div", {
204
+ className: "flex items-center gap-2 text-sm",
205
+ children: [/* @__PURE__ */ jsx(Checkbox, {
206
+ checked: showCommentary,
207
+ id: "kiro-transcript-show-commentary",
208
+ onCheckedChange: (checked) => onShowCommentaryChange(checked === true)
209
+ }), /* @__PURE__ */ jsx("label", {
210
+ htmlFor: "kiro-transcript-show-commentary",
211
+ children: "Show commentary"
212
+ })]
213
+ }),
214
+ /* @__PURE__ */ jsxs("div", {
215
+ className: "flex items-center gap-2 text-sm",
216
+ children: [/* @__PURE__ */ jsx(Checkbox, {
217
+ checked: showExtraEvents,
218
+ id: "kiro-transcript-show-extra-events",
219
+ onCheckedChange: (checked) => onShowExtraEventsChange(checked === true)
220
+ }), /* @__PURE__ */ jsx("label", {
221
+ htmlFor: "kiro-transcript-show-extra-events",
222
+ children: "Show extra events"
223
+ })]
224
+ }),
225
+ /* @__PURE__ */ jsxs("div", {
226
+ className: "flex items-center gap-2 text-sm",
227
+ children: [/* @__PURE__ */ jsx(Checkbox, {
228
+ checked: showRawJson,
229
+ disabled: rawJsonDisabled,
230
+ id: "kiro-transcript-show-raw-json",
231
+ onCheckedChange: (checked) => onShowRawJsonChange(checked === true)
232
+ }), /* @__PURE__ */ jsx("label", {
233
+ htmlFor: "kiro-transcript-show-raw-json",
234
+ children: "Raw JSON"
235
+ })]
236
+ }),
237
+ /* @__PURE__ */ jsxs("div", {
238
+ className: "flex items-center gap-2 text-sm",
239
+ children: [/* @__PURE__ */ jsx(Checkbox, {
240
+ checked: showUserMessages,
241
+ id: "kiro-transcript-show-user-messages",
242
+ onCheckedChange: (checked) => onShowUserMessagesChange(checked === true)
243
+ }), /* @__PURE__ */ jsx("label", {
244
+ htmlFor: "kiro-transcript-show-user-messages",
245
+ children: "User"
246
+ })]
247
+ })
248
+ ]
249
+ });
250
+ };
251
+ var KiroRawPanels = ({ detail, events }) => {
252
+ return /* @__PURE__ */ jsxs("div", {
253
+ className: "space-y-4",
254
+ children: [
255
+ /* @__PURE__ */ jsx(JsonPanel, {
256
+ title: "Session summary",
257
+ value: detail.session
258
+ }),
259
+ /* @__PURE__ */ jsx(JsonPanel, {
260
+ title: "Kiro entries",
261
+ value: detail.entries
262
+ }),
263
+ /* @__PURE__ */ jsx(JsonPanel, {
264
+ title: "Raw Kiro session",
265
+ value: detail.rawSession
266
+ }),
267
+ /* @__PURE__ */ jsx(JsonPanel, {
268
+ title: "Transcript events",
269
+ value: events
270
+ })
271
+ ]
272
+ });
273
+ };
274
+ var KiroSessionDetailPage = () => {
275
+ const detail = useSuspenseQuery(kiroSessionDetailQueryOptions(Route.useParams().sessionId)).data;
276
+ const [pendingExport, setPendingExport] = useState(false);
277
+ const [showToolCalls, setShowToolCalls] = useState(false);
278
+ const [showCommentary, setShowCommentary] = useState(false);
279
+ const [showExtraEvents, setShowExtraEvents] = useState(false);
280
+ const [showRawJson, setShowRawJson] = useState(false);
281
+ const [showUserMessages, setShowUserMessages] = useState(true);
282
+ const transcriptEvents = useMemo(() => kiroTranscriptToThreadEvents(detail), [detail]);
283
+ const transcriptStats = useMemo(() => getKiroThreadTranscriptStats(transcriptEvents), [transcriptEvents]);
284
+ const modelLabel = getKiroModelLabel(detail);
285
+ const exportSessionMutation = useMutation({
286
+ mutationFn: async (options) => {
287
+ const download = await exportKiroSessionFn({ data: {
288
+ includeCommentary: options.includeCommentary,
289
+ includeMetadata: options.includeMetadata,
290
+ includeTools: options.includeTools,
291
+ outputFormat: options.outputFormat,
292
+ sessionId: detail.session.sessionId,
293
+ zipArchive: options.zipArchive
294
+ } });
295
+ if (download.mode === "download") {
296
+ downloadTextFile(download.fileName, download.content, download.mimeType);
297
+ return;
298
+ }
299
+ await downloadUrlFile(download.fileName, download.downloadUrl);
300
+ },
301
+ onSuccess: () => {
302
+ setPendingExport(false);
303
+ }
304
+ });
305
+ return /* @__PURE__ */ jsxs("div", {
306
+ className: "space-y-6",
307
+ children: [
308
+ /* @__PURE__ */ jsx(PageHeader, {
309
+ actions: /* @__PURE__ */ jsxs(Button, {
310
+ className: "rounded-full",
311
+ type: "button",
312
+ variant: "outline",
313
+ onClick: () => setPendingExport(true),
314
+ children: [/* @__PURE__ */ jsx(Download, { className: "mr-2 size-4" }), "Export"]
315
+ }),
316
+ breadcrumb: /* @__PURE__ */ jsx(Breadcrumbs, { items: [
317
+ {
318
+ label: "Kiro",
319
+ to: "/kiro"
320
+ },
321
+ {
322
+ label: detail.session.workspaceLabel,
323
+ params: { workspaceKey: detail.session.workspaceKey },
324
+ to: "/kiro/$workspaceKey"
325
+ },
326
+ { label: detail.session.title }
327
+ ] }),
328
+ eyebrow: "Kiro session",
329
+ subtitle: "Session detail for the selected Kiro workspace conversation.",
330
+ title: detail.session.title
331
+ }),
332
+ /* @__PURE__ */ jsxs("div", {
333
+ className: "grid gap-3 md:grid-cols-2 xl:grid-cols-4",
334
+ children: [
335
+ /* @__PURE__ */ jsx(MetricCard, {
336
+ label: "Messages",
337
+ value: formatNumber(detail.session.messageCount)
338
+ }),
339
+ /* @__PURE__ */ jsx(MetricCard, {
340
+ label: "Images",
341
+ value: formatNumber(detail.session.imageCount)
342
+ }),
343
+ /* @__PURE__ */ jsx(MetricCard, {
344
+ label: "Prompt logs",
345
+ value: formatNumber(detail.session.promptLogCount)
346
+ }),
347
+ /* @__PURE__ */ jsx(MetricCard, {
348
+ label: "Model",
349
+ value: modelLabel
350
+ })
351
+ ]
352
+ }),
353
+ /* @__PURE__ */ jsxs(Tabs, {
354
+ className: "space-y-4",
355
+ defaultValue: "transcript",
356
+ children: [
357
+ /* @__PURE__ */ jsxs(TabsList, {
358
+ className: "grid w-fit min-w-[24rem] grid-cols-3 rounded-full border border-[var(--border)] bg-[var(--panel)] p-1",
359
+ children: [
360
+ /* @__PURE__ */ jsx(TabsTrigger, {
361
+ className: "rounded-full px-5 text-sm",
362
+ value: "transcript",
363
+ children: "Transcript"
364
+ }),
365
+ /* @__PURE__ */ jsx(TabsTrigger, {
366
+ className: "rounded-full px-5 text-sm",
367
+ value: "metadata",
368
+ children: "Metadata"
369
+ }),
370
+ /* @__PURE__ */ jsx(TabsTrigger, {
371
+ className: "rounded-full px-5 text-sm",
372
+ value: "raw",
373
+ children: "Raw"
374
+ })
375
+ ]
376
+ }),
377
+ /* @__PURE__ */ jsxs(TabsContent, {
378
+ className: "space-y-3",
379
+ value: "transcript",
380
+ children: [/* @__PURE__ */ jsx(KiroTranscriptControls, {
381
+ rawJsonDisabled: transcriptEvents.length === 0,
382
+ showCommentary,
383
+ showExtraEvents,
384
+ showRawJson,
385
+ showToolCalls,
386
+ showUserMessages,
387
+ onShowCommentaryChange: setShowCommentary,
388
+ onShowExtraEventsChange: setShowExtraEvents,
389
+ onShowRawJsonChange: setShowRawJson,
390
+ onShowToolCallsChange: setShowToolCalls,
391
+ onShowUserMessagesChange: setShowUserMessages
392
+ }), transcriptEvents.length > 0 ? /* @__PURE__ */ jsx(TranscriptView, {
393
+ assistantModel: modelLabel,
394
+ events: transcriptEvents,
395
+ projectPath: detail.session.worktree,
396
+ showCommentary,
397
+ showExtraEvents,
398
+ showRawJson,
399
+ showToolCalls,
400
+ showUserMessages
401
+ }) : /* @__PURE__ */ jsxs("section", {
402
+ className: "rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]",
403
+ children: [/* @__PURE__ */ jsx("h3", {
404
+ className: "font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]",
405
+ children: "Transcript"
406
+ }), /* @__PURE__ */ jsx("p", {
407
+ className: "mt-4 text-[var(--muted-foreground)] text-sm",
408
+ children: "No renderable Kiro transcript content was found for this session."
409
+ })]
410
+ })]
411
+ }),
412
+ /* @__PURE__ */ jsx(TabsContent, {
413
+ value: "metadata",
414
+ children: /* @__PURE__ */ jsxs("div", {
415
+ className: "grid gap-4 xl:grid-cols-[0.95fr_1.05fr]",
416
+ children: [/* @__PURE__ */ jsx(MetadataSection, {
417
+ items: buildSessionMetadata(detail),
418
+ title: "Session metadata"
419
+ }), /* @__PURE__ */ jsx(MetadataSection, {
420
+ items: buildTranscriptStatsItems(detail, transcriptEvents, transcriptStats),
421
+ title: "Transcript stats"
422
+ })]
423
+ })
424
+ }),
425
+ /* @__PURE__ */ jsx(TabsContent, {
426
+ value: "raw",
427
+ children: /* @__PURE__ */ jsx(KiroRawPanels, {
428
+ detail,
429
+ events: transcriptEvents
430
+ })
431
+ })
432
+ ]
433
+ }),
434
+ /* @__PURE__ */ jsx(ExportDialog, {
435
+ errorMessage: exportSessionMutation.isError ? exportSessionMutation.error instanceof Error ? exportSessionMutation.error.message : "Export failed" : null,
436
+ open: pendingExport,
437
+ pending: exportSessionMutation.isPending,
438
+ title: `Export ${detail.session.title}`,
439
+ onExport: (options) => exportSessionMutation.mutate(options),
440
+ onOpenChange: (open) => {
441
+ setPendingExport(open);
442
+ if (!open) exportSessionMutation.reset();
443
+ }
444
+ })
445
+ ]
446
+ });
447
+ };
448
+ //#endregion
449
+ export { KiroSessionDetailPage as component };
@@ -0,0 +1,18 @@
1
+ import { t as kiroSessionDetailQueryOptions } from "./kiro-queries-CzNlM2ok.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/kiro-sessions.$sessionId.tsx
6
+ var $$splitErrorComponentImporter = () => import("./kiro-sessions._sessionId-CRY2c7YO.js");
7
+ var $$splitComponentImporter = () => import("./kiro-sessions._sessionId-F1UlwxmR.js");
8
+ var Route = createFileRoute("/kiro-sessions/$sessionId")({
9
+ component: lazyRouteComponent($$splitComponentImporter, "component"),
10
+ errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
11
+ loader: ({ context, params }) => context.queryClient.ensureQueryData(kiroSessionDetailQueryOptions(params.sessionId)),
12
+ pendingComponent: () => /* @__PURE__ */ jsx(LoadingPanel, {
13
+ description: "Loading the Kiro transcript, messages, attachments, and session metadata.",
14
+ title: "Loading session"
15
+ })
16
+ });
17
+ //#endregion
18
+ export { Route as t };
@@ -0,0 +1,112 @@
1
+ import { a as cleanExtractedText, g as renderSection, h as renderMetadataBlock, m as renderDocumentTitle, o as cleanInlineTitle } from "./shared-DyhChtHf.js";
2
+ import { n as getKiroMessagePhase, t as getFinalKiroAssistantMessageEntryIds } from "./kiro-transcript-phase-CJG40nQg.js";
3
+ //#region ../../src/lib/kiro-transcript.ts
4
+ var getSessionTitle = (session) => {
5
+ return cleanInlineTitle(session.title || session.sessionId);
6
+ };
7
+ var buildMetadataEntries = (session) => [
8
+ {
9
+ key: "exported_from",
10
+ value: "kiro_workspace_sessions"
11
+ },
12
+ {
13
+ key: "session_id",
14
+ value: session.sessionId
15
+ },
16
+ {
17
+ key: "title",
18
+ value: session.title
19
+ },
20
+ {
21
+ key: "source_session_path",
22
+ value: session.filePath
23
+ },
24
+ {
25
+ key: "workspace_key",
26
+ value: session.workspaceKey
27
+ },
28
+ {
29
+ key: "workspace_directory",
30
+ value: session.workspaceDirectory
31
+ },
32
+ {
33
+ key: "workspace_path",
34
+ value: session.workspacePath
35
+ },
36
+ {
37
+ key: "selected_model",
38
+ value: session.selectedModel
39
+ },
40
+ {
41
+ key: "default_model_title",
42
+ value: session.defaultModelTitle
43
+ },
44
+ {
45
+ key: "selected_profile_id",
46
+ value: session.selectedProfileId
47
+ },
48
+ {
49
+ key: "autonomy_mode",
50
+ value: session.autonomyMode
51
+ },
52
+ {
53
+ key: "session_type",
54
+ value: session.sessionType
55
+ },
56
+ {
57
+ key: "created_at_iso",
58
+ value: session.createdAtIso
59
+ },
60
+ {
61
+ key: "last_active_at_iso",
62
+ value: session.lastActiveAtIso
63
+ },
64
+ {
65
+ key: "message_count",
66
+ value: session.messageCount
67
+ },
68
+ {
69
+ key: "image_count",
70
+ value: session.imageCount
71
+ },
72
+ {
73
+ key: "prompt_log_count",
74
+ value: session.promptLogCount
75
+ }
76
+ ];
77
+ var roleTitle = (role) => {
78
+ if (role === "assistant") return "Assistant";
79
+ if (role === "user") return "User";
80
+ if (role === "system") return "System";
81
+ return role ? cleanInlineTitle(role) : "Message";
82
+ };
83
+ var renderTextPart = (part, title, options) => {
84
+ const text = cleanExtractedText(part.text ?? "").trim();
85
+ return text ? renderSection(title, text, options.outputFormat) : "";
86
+ };
87
+ var renderImagePart = (part, options) => {
88
+ if (!options.includeCommentary) return "";
89
+ return renderSection("Attachment", cleanExtractedText(part.text ?? "Image attachment").trim(), options.outputFormat);
90
+ };
91
+ var renderPart = (entry, part, options, finalAssistantMessageEntryIds) => {
92
+ if (entry.entryType === "tool_call") return options.includeTools && part.type === "text" ? renderTextPart(part, "Tool call", options) : "";
93
+ if (getKiroMessagePhase(entry, finalAssistantMessageEntryIds) === "commentary" && !options.includeCommentary) return "";
94
+ switch (part.type) {
95
+ case "text": return renderTextPart(part, roleTitle(entry.role), options);
96
+ case "image": return renderImagePart(part, options);
97
+ case "unknown": return "";
98
+ }
99
+ };
100
+ var renderKiroTranscript = (transcript, options) => {
101
+ const finalAssistantMessageEntryIds = getFinalKiroAssistantMessageEntryIds(transcript.entries);
102
+ const sections = transcript.entries.flatMap((entry) => entry.parts.map((part) => renderPart(entry, part, options, finalAssistantMessageEntryIds)).filter(Boolean));
103
+ if (sections.length === 0) return null;
104
+ return `${[
105
+ renderDocumentTitle(getSessionTitle(transcript.session), options.outputFormat),
106
+ "",
107
+ options.includeMetadata ? renderMetadataBlock(buildMetadataEntries(transcript.session), options.outputFormat) : "",
108
+ ...sections
109
+ ].filter(Boolean).join("\n").trimEnd()}\n`;
110
+ };
111
+ //#endregion
112
+ export { renderKiroTranscript };
@@ -0,0 +1,27 @@
1
+ //#region ../../src/lib/kiro-transcript-phase.ts
2
+ var getFinalKiroAssistantMessageEntryIds = (entries) => {
3
+ const finalEntryIds = /* @__PURE__ */ new Set();
4
+ let latestAssistantMessageEntryId = null;
5
+ const flushAssistantRun = () => {
6
+ if (latestAssistantMessageEntryId) {
7
+ finalEntryIds.add(latestAssistantMessageEntryId);
8
+ latestAssistantMessageEntryId = null;
9
+ }
10
+ };
11
+ for (const entry of entries) {
12
+ if (entry.entryType === "tool_call") continue;
13
+ if (entry.role === "user") {
14
+ flushAssistantRun();
15
+ continue;
16
+ }
17
+ if (entry.role === "assistant") latestAssistantMessageEntryId = entry.entryId;
18
+ }
19
+ flushAssistantRun();
20
+ return finalEntryIds;
21
+ };
22
+ var getKiroMessagePhase = (entry, finalAssistantMessageEntryIds) => {
23
+ if (entry.role !== "assistant") return null;
24
+ return finalAssistantMessageEntryIds.has(entry.entryId) ? "final_answer" : "commentary";
25
+ };
26
+ //#endregion
27
+ export { getKiroMessagePhase as n, getFinalKiroAssistantMessageEntryIds as t };
@@ -0,0 +1,11 @@
1
+ import { t as ReloadErrorPanel } from "./reload-error-panel-BJMxY3U1.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/routes/kiro.$workspaceKey.tsx?tsr-split=errorComponent
4
+ var KiroWorkspaceErrorComponent = ({ error }) => {
5
+ return /* @__PURE__ */ jsx(ReloadErrorPanel, {
6
+ description: error.message,
7
+ title: "Failed to load Kiro workspace"
8
+ });
9
+ };
10
+ //#endregion
11
+ export { KiroWorkspaceErrorComponent as errorComponent };
@@ -0,0 +1,28 @@
1
+ import { n as kiroSessionsQueryOptions, r as kiroWorkspacesQueryOptions } from "./kiro-queries-CzNlM2ok.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/kiro.$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(`Kiro workspace not found: ${workspaceKey}`);
9
+ return workspace;
10
+ };
11
+ //#endregion
12
+ //#region src/routes/kiro.$workspaceKey.tsx
13
+ var $$splitErrorComponentImporter = () => import("./kiro._workspaceKey-BDe9sQwo.js");
14
+ var $$splitComponentImporter = () => import("./kiro._workspaceKey-D_-4Qb7y.js");
15
+ var Route = createFileRoute("/kiro/$workspaceKey")({
16
+ component: lazyRouteComponent($$splitComponentImporter, "component"),
17
+ errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
18
+ loader: async ({ context, params }) => {
19
+ findWorkspaceOrThrow(await context.queryClient.ensureQueryData(kiroWorkspacesQueryOptions()), params.workspaceKey);
20
+ await context.queryClient.ensureQueryData(kiroSessionsQueryOptions(params.workspaceKey));
21
+ },
22
+ pendingComponent: () => /* @__PURE__ */ jsx(LoadingPanel, {
23
+ description: "Loading Kiro sessions and transcript metadata.",
24
+ title: "Loading workspace"
25
+ })
26
+ });
27
+ //#endregion
28
+ export { findWorkspaceOrThrow as n, Route as t };