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.
- package/AGENTS.md +55 -6
- package/README.md +46 -5
- package/apps/ui/AGENTS.md +31 -4
- package/apps/ui/README.md +59 -5
- package/apps/ui/dist/client/assets/analytics-DOy1b6Sh.js +1 -0
- package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DqySVO2K.js +7 -0
- package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-KAcXtNxI.js +1 -0
- package/apps/ui/dist/client/assets/antigravity-keychain-panel-B77qJz6f.js +1 -0
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-B3NM6gRH.js +1 -0
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +1 -0
- package/apps/ui/dist/client/assets/antigravity.index-DP9JC2P9.js +1 -0
- package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +1 -0
- package/apps/ui/dist/client/assets/badge-C3i4OKs8.js +1 -0
- package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +1 -0
- package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-8pQ55ci2.js +1 -0
- package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-DVz5UmtU.js +1 -0
- package/apps/ui/dist/client/assets/claude-code._workspaceKey-BBKskSum.js +1 -0
- package/apps/ui/dist/client/assets/claude-code._workspaceKey-OkikMUFs.js +1 -0
- package/apps/ui/dist/client/assets/claude-code.index-Cwu76dbb.js +1 -0
- package/apps/ui/dist/client/assets/claude-code.index-D6eMd08t.js +1 -0
- package/apps/ui/dist/client/assets/createServerFn-B-KkwmHU.js +3 -0
- package/apps/ui/dist/client/assets/cursor-threads._composerId-CmBFclK8.js +1 -0
- package/apps/ui/dist/client/assets/cursor-threads._composerId-hBWlP1D-.js +1 -0
- package/apps/ui/dist/client/assets/cursor._workspaceKey-BFPkIRi-.js +1 -0
- package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +1 -0
- package/apps/ui/dist/client/assets/cursor.index-8y4o20kb.js +2 -0
- package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +1 -0
- package/apps/ui/dist/client/assets/{data-table-DeQq8xdt.js → data-table-Br78_dk3.js} +2 -2
- package/apps/ui/dist/client/assets/delete-confirm-dialog-Bxs07u-j.js +7 -0
- package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +1 -0
- package/apps/ui/dist/client/assets/dist-BrJhN2A0.js +5 -0
- package/apps/ui/dist/client/assets/dist-Cmd3AIfD.js +1 -0
- package/apps/ui/dist/client/assets/dist-DvMS2965.js +1 -0
- package/apps/ui/dist/client/assets/download-Bf0QJKD3.js +1 -0
- package/apps/ui/dist/client/assets/dropdown-menu-D5cvPaZt.js +1 -0
- package/apps/ui/dist/client/assets/es2015-ad6040dw.js +41 -0
- package/apps/ui/dist/client/assets/export-dialog-Dr8d2MqD.js +1 -0
- package/apps/ui/dist/client/assets/formatters-BtqyrX_c.js +1 -0
- package/apps/ui/dist/client/assets/index-C-STgIH4.js +166 -0
- package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +1 -0
- package/apps/ui/dist/client/assets/kiro-sessions._sessionId-CKgfJ7GR.js +1 -0
- package/apps/ui/dist/client/assets/kiro-sessions._sessionId-zvIJHtQF.js +1 -0
- package/apps/ui/dist/client/assets/kiro._workspaceKey-DhVuJuZB.js +1 -0
- package/apps/ui/dist/client/assets/kiro._workspaceKey-QArsjkTY.js +1 -0
- package/apps/ui/dist/client/assets/kiro.index-C-fr4m7i.js +1 -0
- package/apps/ui/dist/client/assets/kiro.index-OYgAdtZd.js +1 -0
- package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +1 -0
- package/apps/ui/dist/client/assets/opencode-sessions._sessionId-DLjiTst-.js +1 -0
- package/apps/ui/dist/client/assets/opencode-sessions._sessionId-biBwrRbt.js +8 -0
- package/apps/ui/dist/client/assets/opencode._workspaceKey-C7OIzMOJ.js +1 -0
- package/apps/ui/dist/client/assets/opencode._workspaceKey-sBakX0oI.js +1 -0
- package/apps/ui/dist/client/assets/opencode.index-Bl_kNs9N.js +1 -0
- package/apps/ui/dist/client/assets/opencode.index-CN53bVmb.js +1 -0
- package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +1 -0
- package/apps/ui/dist/client/assets/preload-helper-B8fFrdxC.js +1 -0
- package/apps/ui/dist/client/assets/projects._project-D8WloxQN.js +1 -0
- package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +1 -0
- package/apps/ui/dist/client/assets/projects.index-5xRtuJdX.js +3 -0
- package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +1 -0
- package/apps/ui/dist/client/assets/react-dom-DL96Jor4.js +1 -0
- package/apps/ui/dist/client/assets/refresh-ccw-BgKjOiA6.js +1 -0
- package/apps/ui/dist/client/assets/reload-error-panel-AHqu0akK.js +1 -0
- package/apps/ui/dist/client/assets/routes-DnzF_9CX.js +1 -0
- package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +1 -0
- package/apps/ui/dist/client/assets/select-CYF6pF37.js +1 -0
- package/apps/ui/dist/client/assets/settings-Dx70jgP_.js +1 -0
- package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +1 -0
- package/apps/ui/dist/client/assets/styles-B7Zi9EFA.css +1 -0
- package/apps/ui/dist/client/assets/tabs-CmuhkT-c.js +7 -0
- package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +2 -0
- package/apps/ui/dist/client/assets/thread-transcript-stats-BUNz6u7F.js +1 -0
- package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +1 -0
- package/apps/ui/dist/client/assets/threads._threadId-BMRSFow3.js +1 -0
- package/apps/ui/dist/client/assets/useMutation-BSFult2i.js +1 -0
- package/apps/ui/dist/client/assets/useQuery-CjINKZf1.js +1 -0
- package/apps/ui/dist/client/icon.svg +2 -1
- package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CQ8Jjs3B.js +387 -0
- package/apps/ui/dist/server/assets/analytics-CYP_LT5Y.js +16 -0
- package/apps/ui/dist/server/assets/{analytics-Dc_QDZZC.js → analytics-CtpOMVMO.js} +13 -6
- package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-BKOyL2T6.js +613 -0
- package/apps/ui/dist/server/assets/{antigravity-conversations._conversationId-C9z4AeN-.js → antigravity-conversations._conversationId-eS87Dx7g.js} +2 -2
- package/apps/ui/dist/server/assets/{antigravity-db-D9gW1D8G.js → antigravity-db-Bh8_U9uw.js} +11 -7
- package/apps/ui/dist/server/assets/{antigravity-keychain-panel-bpPoxhyp.js → antigravity-keychain-panel-CC7FLmAK.js} +1 -1
- package/apps/ui/dist/server/assets/{antigravity-queries-DVIKyOXi.js → antigravity-queries-CGrJO9Vr.js} +5 -5
- package/apps/ui/dist/server/assets/{antigravity-server-Cp1lc8fp.js → antigravity-server-CHRjVFqN.js} +11 -11
- package/apps/ui/dist/server/assets/{antigravity._workspaceKey-Dl8o1ptg.js → antigravity._workspaceKey-B0QeYUOh.js} +2 -2
- package/apps/ui/dist/server/assets/{antigravity._workspaceKey-BAoa4izU.js → antigravity._workspaceKey-C3kP-qyN.js} +4 -4
- package/apps/ui/dist/server/assets/{antigravity.index-BOlrJasZ.js → antigravity.index-CPCYkqCi.js} +2 -2
- package/apps/ui/dist/server/assets/claude-code-db-Ik3VStKZ.js +361 -0
- package/apps/ui/dist/server/assets/claude-code-queries-Cgzi4K-e.js +37 -0
- package/apps/ui/dist/server/assets/claude-code-server-PfraClXS.js +72 -0
- package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-C55oe6zj.js +18 -0
- package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-D1RYYi3j.js +473 -0
- package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-DSvPLEUL.js +11 -0
- package/apps/ui/dist/server/assets/claude-code-transcript-C-bxh3cS.js +139 -0
- package/apps/ui/dist/server/assets/claude-code-transcript-phase-DmUMc8VU.js +10 -0
- package/apps/ui/dist/server/assets/claude-code._workspaceKey-B5Xg_-tE.js +28 -0
- package/apps/ui/dist/server/assets/claude-code._workspaceKey-BPlzyXPa.js +11 -0
- package/apps/ui/dist/server/assets/claude-code._workspaceKey-DqDve2wl.js +191 -0
- package/apps/ui/dist/server/assets/claude-code.index-B7yYR7dD.js +92 -0
- package/apps/ui/dist/server/assets/claude-code.index-BUHThG1W.js +11 -0
- package/apps/ui/dist/server/assets/{codex-queries-ev_mRUzr.js → codex-queries-CtgeZ7VL.js} +15 -13
- package/apps/ui/dist/server/assets/{codex-server-DIYFLozB.js → codex-server-CGXU4H8-.js} +421 -146
- package/apps/ui/dist/server/assets/concurrency-VXtYvlGh.js +18 -0
- package/apps/ui/dist/server/assets/{createServerRpc-Cg-Zr1rq.js → createServerRpc-CF_DEwnm.js} +1 -1
- package/apps/ui/dist/server/assets/{createSsrRpc-DVnVQhGx.js → createSsrRpc-C754NPki.js} +1 -1
- package/apps/ui/dist/server/assets/{cursor-db-B7agkAvM.js → cursor-db-CZnYy7aT.js} +196 -9
- package/apps/ui/dist/server/assets/{cursor-queries-f7DjBKSD.js → cursor-queries-NCIM0Nat.js} +12 -10
- package/apps/ui/dist/server/assets/{cursor-recovery-9bJLs7vG.js → cursor-recovery-CXpO8KcD.js} +2 -2
- package/apps/ui/dist/server/assets/{cursor-server-nPzojHN3.js → cursor-server-DNu52A3K.js} +71 -42
- package/apps/ui/dist/server/assets/cursor-threads._composerId-Ckn6ItHI.js +582 -0
- package/apps/ui/dist/server/assets/{cursor-threads._composerId-B3qcsh9C.js → cursor-threads._composerId-p9-ARAzc.js} +2 -2
- package/apps/ui/dist/server/assets/{cursor-transcript-2iL3KFSK.js → cursor-transcript-B7tGnqtn.js} +1 -1
- package/apps/ui/dist/server/assets/{cursor._workspaceKey-BL_CQyHQ.js → cursor._workspaceKey-CZuohIUL.js} +2 -2
- package/apps/ui/dist/server/assets/{cursor._workspaceKey-BhQeepXB.js → cursor._workspaceKey-DPp5JSjy.js} +11 -9
- package/apps/ui/dist/server/assets/{cursor.index-CsrdckZD.js → cursor.index-DkWT-mxw.js} +2 -2
- package/apps/ui/dist/server/assets/{delete-confirm-dialog-PCD7S0_M.js → delete-confirm-dialog-BcBNCxWB.js} +5 -1
- package/apps/ui/dist/server/assets/{empty-plugin-adapters-D3qLMPfC.js → empty-plugin-adapters-B3lHh1La.js} +1 -1
- package/apps/ui/dist/server/assets/{export-dialog-DaPlOGFT.js → export-dialog-D88ze9Gy.js} +54 -12
- package/apps/ui/dist/server/assets/kiro-db--fXrED_-.js +552 -0
- package/apps/ui/dist/server/assets/kiro-queries-CzNlM2ok.js +37 -0
- package/apps/ui/dist/server/assets/kiro-server-9WRxg2Au.js +72 -0
- package/apps/ui/dist/server/assets/kiro-sessions._sessionId-CRY2c7YO.js +11 -0
- package/apps/ui/dist/server/assets/kiro-sessions._sessionId-F1UlwxmR.js +449 -0
- package/apps/ui/dist/server/assets/kiro-sessions._sessionId-bvTulT7C.js +18 -0
- package/apps/ui/dist/server/assets/kiro-transcript-DoekQBaH.js +112 -0
- package/apps/ui/dist/server/assets/kiro-transcript-phase-CJG40nQg.js +27 -0
- package/apps/ui/dist/server/assets/kiro._workspaceKey-BDe9sQwo.js +11 -0
- package/apps/ui/dist/server/assets/kiro._workspaceKey-CJsjgNwO.js +28 -0
- package/apps/ui/dist/server/assets/kiro._workspaceKey-D_-4Qb7y.js +193 -0
- package/apps/ui/dist/server/assets/kiro.index-C__-UROk.js +11 -0
- package/apps/ui/dist/server/assets/kiro.index-CmTbqeYj.js +93 -0
- package/apps/ui/dist/server/assets/opencode-db-BM7KjOzc.js +397 -0
- package/apps/ui/dist/server/assets/opencode-queries-BeNYXnQv.js +50 -0
- package/apps/ui/dist/server/assets/opencode-server-BpQ_kRze.js +72 -0
- package/apps/ui/dist/server/assets/opencode-sessions._sessionId-CGQ-t0vD.js +518 -0
- package/apps/ui/dist/server/assets/opencode-sessions._sessionId-D8Q7in_Z.js +18 -0
- package/apps/ui/dist/server/assets/opencode-sessions._sessionId-DKOvi0lV.js +11 -0
- package/apps/ui/dist/server/assets/opencode-think-tags-CAoD-EcZ.js +87 -0
- package/apps/ui/dist/server/assets/opencode-transcript-BNTcGNym.js +141 -0
- package/apps/ui/dist/server/assets/opencode-transcript-phase-OqLkiQD0.js +32 -0
- package/apps/ui/dist/server/assets/opencode._workspaceKey-BdqcWHw1.js +11 -0
- package/apps/ui/dist/server/assets/opencode._workspaceKey-CfH96HTT.js +28 -0
- package/apps/ui/dist/server/assets/opencode._workspaceKey-DdbHPDrO.js +207 -0
- package/apps/ui/dist/server/assets/opencode.index-BbVzkJXP.js +11 -0
- package/apps/ui/dist/server/assets/opencode.index-Vh_Gq_1L.js +93 -0
- package/apps/ui/dist/server/assets/{projects._project-CqqUFr4l.js → projects._project-4io5LO0E.js} +5 -3
- package/apps/ui/dist/server/assets/{projects._project-DahGqNYS.js → projects._project-D6ZoGhJ8.js} +42 -12
- package/apps/ui/dist/server/assets/{projects.index-CkTeFWNU.js → projects.index-BkLiF2FF.js} +21 -7
- package/apps/ui/dist/server/assets/projects.index-DesYXwfi.js +14 -0
- package/apps/ui/dist/server/assets/route-search-ts4W9MJ9.js +38 -0
- package/apps/ui/dist/server/assets/router-Sac2DGk6.js +518 -0
- package/apps/ui/dist/server/assets/{routes-Xix3ZeSo.js → routes-Bsact1uB.js} +2 -2
- package/apps/ui/dist/server/assets/{routes-0x1U0IHq.js → routes-BzkJgq4W.js} +2 -2
- package/apps/ui/dist/server/assets/{shared-CPRNYIql.js → shared-DyhChtHf.js} +4 -1
- package/apps/ui/dist/server/assets/source-session-export-server-DNutCawb.js +38 -0
- package/apps/ui/dist/server/assets/start-B_HFwkkk.js +4 -0
- package/apps/ui/dist/server/assets/tabs-DkaChNVg.js +501 -0
- package/apps/ui/dist/server/assets/thread-transcript-stats-Dh34mt2u.js +45 -0
- package/apps/ui/dist/server/assets/threads._threadId-BeXEc4Lo.js +648 -0
- package/apps/ui/dist/server/assets/{threads._threadId-BLCkGW--.js → threads._threadId-Ci0S4mKU.js} +2 -2
- package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +83 -0
- package/apps/ui/dist/server/server.js +141 -83
- package/package.json +28 -11
- package/src/lib/antigravity-db.ts +20 -13
- package/src/lib/claude-code-db.ts +655 -0
- package/src/lib/claude-code-exporter-types.ts +110 -0
- package/src/lib/claude-code-transcript-phase.ts +25 -0
- package/src/lib/claude-code-transcript.ts +180 -0
- package/src/lib/codex-analytics.ts +118 -18
- package/src/lib/codex-browser-db.ts +491 -56
- package/src/lib/codex-browser-export.ts +27 -71
- package/src/lib/codex-thread-cache.ts +17 -1
- package/src/lib/concurrency.ts +25 -0
- package/src/lib/cursor-db.ts +318 -7
- package/src/lib/cursor-exporter.ts +2 -2
- package/src/lib/kiro-db.ts +949 -0
- package/src/lib/kiro-exporter-types.ts +100 -0
- package/src/lib/kiro-transcript-phase.ts +41 -0
- package/src/lib/kiro-transcript.ts +115 -0
- package/src/lib/opencode-db.ts +610 -0
- package/src/lib/opencode-exporter-types.ts +129 -0
- package/src/lib/opencode-think-tags.ts +126 -0
- package/src/lib/opencode-transcript-phase.ts +50 -0
- package/src/lib/opencode-transcript.ts +194 -0
- package/src/lib/shared.ts +25 -0
- package/src/lib/ui-cache.ts +14 -1
- package/src/lib/ui-export-archive.ts +61 -0
- package/apps/ui/dist/client/assets/analytics-C83LcWNb.js +0 -1
- package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DkY8EEpK.js +0 -1
- package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-OraHuz8j.js +0 -1
- package/apps/ui/dist/client/assets/antigravity-keychain-panel-DnDcq1ge.js +0 -1
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-CQaZscA5.js +0 -1
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-DTs99obU.js +0 -1
- package/apps/ui/dist/client/assets/antigravity.index-DbJa715k.js +0 -1
- package/apps/ui/dist/client/assets/antigravity.index-P-rs6w5X.js +0 -1
- package/apps/ui/dist/client/assets/badge-wgTVp-aq.js +0 -1
- package/apps/ui/dist/client/assets/checkbox-BUx0Gkuf.js +0 -1
- package/apps/ui/dist/client/assets/cursor-threads._composerId-D0DFXt8t.js +0 -1
- package/apps/ui/dist/client/assets/cursor-threads._composerId-tFa6Cf6A.js +0 -1
- package/apps/ui/dist/client/assets/cursor._workspaceKey-Df4PfA2k.js +0 -1
- package/apps/ui/dist/client/assets/cursor._workspaceKey-DwrzEtnV.js +0 -1
- package/apps/ui/dist/client/assets/cursor.index-CNBf4ZiR.js +0 -1
- package/apps/ui/dist/client/assets/cursor.index-DP9Hy8X6.js +0 -2
- package/apps/ui/dist/client/assets/delete-confirm-dialog-CPlNsLhM.js +0 -11
- package/apps/ui/dist/client/assets/dist-Ds3kS91l.js +0 -1
- package/apps/ui/dist/client/assets/download-DLuPnxpV.js +0 -1
- package/apps/ui/dist/client/assets/dropdown-menu-lFk6zjoL.js +0 -1
- package/apps/ui/dist/client/assets/es2015-D-H_iZF6.js +0 -41
- package/apps/ui/dist/client/assets/export-dialog-CyqyvwiP.js +0 -1
- package/apps/ui/dist/client/assets/formatters-DbCKP02D.js +0 -1
- package/apps/ui/dist/client/assets/index-C-ZPpKJ0.js +0 -22
- package/apps/ui/dist/client/assets/json-panel-BsngvucB.js +0 -1
- package/apps/ui/dist/client/assets/metadata-section-Dtl8dNag.js +0 -1
- package/apps/ui/dist/client/assets/metric-card-DNzR1Rne.js +0 -1
- package/apps/ui/dist/client/assets/page-header-dha_O7ZL.js +0 -1
- package/apps/ui/dist/client/assets/projects._project-B7HBhbXv.js +0 -1
- package/apps/ui/dist/client/assets/projects._project-DHVvuT7A.js +0 -1
- package/apps/ui/dist/client/assets/projects.index-BUUtx2AZ.js +0 -1
- package/apps/ui/dist/client/assets/projects.index-BojAe1Y4.js +0 -3
- package/apps/ui/dist/client/assets/refresh-ccw-B-ASKHtx.js +0 -1
- package/apps/ui/dist/client/assets/reload-error-panel-DD8M1BIY.js +0 -1
- package/apps/ui/dist/client/assets/routes-q7bzFp35.js +0 -1
- package/apps/ui/dist/client/assets/scroll-text-TvHyiJ_N.js +0 -1
- package/apps/ui/dist/client/assets/select-BFv1HMiT.js +0 -1
- package/apps/ui/dist/client/assets/settings-CvegTo4F.js +0 -1
- package/apps/ui/dist/client/assets/styles-Ch0r3kMZ.css +0 -1
- package/apps/ui/dist/client/assets/text-document-panel-D7Rws41o.js +0 -1
- package/apps/ui/dist/client/assets/text-filter-2q5pEoZh.js +0 -2
- package/apps/ui/dist/client/assets/threads._threadId-LpZVUlPq.js +0 -7
- package/apps/ui/dist/client/assets/threads._threadId-MSmNIBkq.js +0 -1
- package/apps/ui/dist/client/assets/useMutation-BOPJU9e0.js +0 -1
- package/apps/ui/dist/client/assets/useQuery-CbxZiVGF.js +0 -1
- package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-zvGzK-Yx.js +0 -229
- package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-JEhx-f2R.js +0 -212
- package/apps/ui/dist/server/assets/cursor-threads._composerId-BK3iW-3e.js +0 -218
- package/apps/ui/dist/server/assets/json-panel-RYsxWFae.js +0 -16
- package/apps/ui/dist/server/assets/metadata-section-D6Lbc7D6.js +0 -54
- package/apps/ui/dist/server/assets/router-K0m7dK4T.js +0 -394
- package/apps/ui/dist/server/assets/start-bX7bXjzw.js +0 -4
- package/apps/ui/dist/server/assets/text-document-panel-D8JbQWAn.js +0 -23
- package/apps/ui/dist/server/assets/threads._threadId-LjgsGUh-.js +0 -1052
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
|
-
import { t as createSsrRpc } from "./createSsrRpc-
|
|
2
|
+
import { t as createSsrRpc } from "./createSsrRpc-C754NPki.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { queryOptions } from "@tanstack/react-query";
|
|
5
5
|
//#region src/lib/antigravity-server.ts
|
|
@@ -9,10 +9,10 @@ var exportSchema = z.object({ conversationId: z.string().min(1) });
|
|
|
9
9
|
var listAntigravityWorkspacesFn = createServerFn({ method: "GET" }).handler(createSsrRpc("50ab3a39f9880771d0d9b15931e46bcf0c4915077e38a7b6bf8605fde065256e"));
|
|
10
10
|
var getAntigravityDecryptionStateFn = createServerFn({ method: "GET" }).handler(createSsrRpc("37acb5a1f0915c7b996d6cf9682243d5a3446fe26a60f12bfacf60ce772b0f49"));
|
|
11
11
|
var unlockAntigravityDecryptionFn = createServerFn({ method: "POST" }).handler(createSsrRpc("e266948869e9a4ae03c84b8a7db1bfa945fdb440c5e1c64ae826b1302e441885"));
|
|
12
|
-
var listAntigravityConversationsFn = createServerFn({ method: "GET" }).
|
|
13
|
-
var getAntigravityConversationDetailFn = createServerFn({ method: "GET" }).
|
|
14
|
-
var exportAntigravityArtifactsFn = createServerFn({ method: "POST" }).
|
|
15
|
-
var exportAntigravityConversationFn = createServerFn({ method: "POST" }).
|
|
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
16
|
//#endregion
|
|
17
17
|
//#region src/lib/antigravity-queries.ts
|
|
18
18
|
var antigravityDecryptionQueryOptions = () => queryOptions({
|
package/apps/ui/dist/server/assets/{antigravity-server-Cp1lc8fp.js → antigravity-server-CHRjVFqN.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
|
-
import { t as createServerRpc } from "./createServerRpc-
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-CF_DEwnm.js";
|
|
3
3
|
import { i as isAntigravityConversationLocked, t as canExportAntigravityConversation } from "./antigravity-conversation-state-HgzS302O.js";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
//#region src/lib/antigravity-server.ts?tss-serverfn-split
|
|
@@ -12,7 +12,7 @@ var listAntigravityWorkspacesFn_createServerFn_handler = createServerRpc({
|
|
|
12
12
|
filename: "src/lib/antigravity-server.ts"
|
|
13
13
|
}, (opts) => listAntigravityWorkspacesFn.__executeServer(opts));
|
|
14
14
|
var listAntigravityWorkspacesFn = createServerFn({ method: "GET" }).handler(listAntigravityWorkspacesFn_createServerFn_handler, async () => {
|
|
15
|
-
const { listAntigravityWorkspaceGroups } = await import("./antigravity-db-
|
|
15
|
+
const { listAntigravityWorkspaceGroups } = await import("./antigravity-db-Bh8_U9uw.js");
|
|
16
16
|
return listAntigravityWorkspaceGroups();
|
|
17
17
|
});
|
|
18
18
|
var getAntigravityDecryptionStateFn_createServerFn_handler = createServerRpc({
|
|
@@ -38,18 +38,18 @@ var listAntigravityConversationsFn_createServerFn_handler = createServerRpc({
|
|
|
38
38
|
name: "listAntigravityConversationsFn",
|
|
39
39
|
filename: "src/lib/antigravity-server.ts"
|
|
40
40
|
}, (opts) => listAntigravityConversationsFn.__executeServer(opts));
|
|
41
|
-
var listAntigravityConversationsFn = createServerFn({ method: "GET" }).
|
|
42
|
-
const { listAntigravityConversationsForGroup } = await import("./antigravity-db-
|
|
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
43
|
return listAntigravityConversationsForGroup(data.workspaceKey);
|
|
44
44
|
});
|
|
45
45
|
var findAntigravityConversationById = async (conversationId) => {
|
|
46
|
-
const { listAntigravityConversations } = await import("./antigravity-db-
|
|
46
|
+
const { listAntigravityConversations } = await import("./antigravity-db-Bh8_U9uw.js");
|
|
47
47
|
const conversation = (await listAntigravityConversations()).find((candidate) => candidate.conversationId === conversationId);
|
|
48
48
|
if (!conversation) throw new Error(`Antigravity conversation not found: ${conversationId}`);
|
|
49
49
|
return conversation;
|
|
50
50
|
};
|
|
51
51
|
var loadAntigravityConversationDetail = async (conversationId) => {
|
|
52
|
-
const { renderAntigravityArtifactsMarkdown, renderAntigravityConversationMarkdown } = await import("./antigravity-db-
|
|
52
|
+
const { renderAntigravityArtifactsMarkdown, renderAntigravityConversationMarkdown } = await import("./antigravity-db-Bh8_U9uw.js");
|
|
53
53
|
const { getCachedAntigravityKeychainSecret } = await import("./antigravity-keychain-DOiuHDwK.js");
|
|
54
54
|
const conversation = await findAntigravityConversationById(conversationId);
|
|
55
55
|
const keychainSecret = getCachedAntigravityKeychainSecret();
|
|
@@ -64,7 +64,7 @@ var loadAntigravityConversationDetail = async (conversationId) => {
|
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
66
|
var loadAntigravityConversationExport = async (conversationId) => {
|
|
67
|
-
const { renderAntigravityConversationMarkdown } = await import("./antigravity-db-
|
|
67
|
+
const { renderAntigravityConversationMarkdown } = await import("./antigravity-db-Bh8_U9uw.js");
|
|
68
68
|
const { getCachedAntigravityKeychainSecret } = await import("./antigravity-keychain-DOiuHDwK.js");
|
|
69
69
|
const conversation = await findAntigravityConversationById(conversationId);
|
|
70
70
|
const keychainSecret = getCachedAntigravityKeychainSecret();
|
|
@@ -85,7 +85,7 @@ var getAntigravityConversationDetailFn_createServerFn_handler = createServerRpc(
|
|
|
85
85
|
name: "getAntigravityConversationDetailFn",
|
|
86
86
|
filename: "src/lib/antigravity-server.ts"
|
|
87
87
|
}, (opts) => getAntigravityConversationDetailFn.__executeServer(opts));
|
|
88
|
-
var getAntigravityConversationDetailFn = createServerFn({ method: "GET" }).
|
|
88
|
+
var getAntigravityConversationDetailFn = createServerFn({ method: "GET" }).validator(conversationSchema).handler(getAntigravityConversationDetailFn_createServerFn_handler, async ({ data }) => {
|
|
89
89
|
return loadAntigravityConversationDetail(data.conversationId);
|
|
90
90
|
});
|
|
91
91
|
var exportAntigravityArtifactsFn_createServerFn_handler = createServerRpc({
|
|
@@ -93,8 +93,8 @@ var exportAntigravityArtifactsFn_createServerFn_handler = createServerRpc({
|
|
|
93
93
|
name: "exportAntigravityArtifactsFn",
|
|
94
94
|
filename: "src/lib/antigravity-server.ts"
|
|
95
95
|
}, (opts) => exportAntigravityArtifactsFn.__executeServer(opts));
|
|
96
|
-
var exportAntigravityArtifactsFn = createServerFn({ method: "POST" }).
|
|
97
|
-
const { renderAntigravityArtifactsMarkdown } = await import("./antigravity-db-
|
|
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
98
|
const content = await renderAntigravityArtifactsMarkdown(await findAntigravityConversationById(data.conversationId));
|
|
99
99
|
if (!content) throw new Error(`No Markdown artifacts found for conversation: ${data.conversationId}`);
|
|
100
100
|
return {
|
|
@@ -107,7 +107,7 @@ var exportAntigravityConversationFn_createServerFn_handler = createServerRpc({
|
|
|
107
107
|
name: "exportAntigravityConversationFn",
|
|
108
108
|
filename: "src/lib/antigravity-server.ts"
|
|
109
109
|
}, (opts) => exportAntigravityConversationFn.__executeServer(opts));
|
|
110
|
-
var exportAntigravityConversationFn = createServerFn({ method: "POST" }).
|
|
110
|
+
var exportAntigravityConversationFn = createServerFn({ method: "POST" }).validator(exportSchema).handler(exportAntigravityConversationFn_createServerFn_handler, async ({ data }) => {
|
|
111
111
|
return loadAntigravityConversationExport(data.conversationId);
|
|
112
112
|
});
|
|
113
113
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as antigravityWorkspacesQueryOptions, n as antigravityConversationsQueryOptions, r as antigravityDecryptionQueryOptions } from "./antigravity-queries-
|
|
1
|
+
import { i as antigravityWorkspacesQueryOptions, n as antigravityConversationsQueryOptions, r as antigravityDecryptionQueryOptions } from "./antigravity-queries-CGrJO9Vr.js";
|
|
2
2
|
import { t as LoadingPanel } from "./loading-panel-BGFnWseS.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -11,7 +11,7 @@ var findWorkspaceOrThrow = (workspaces, workspaceKey) => {
|
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/routes/antigravity.$workspaceKey.tsx
|
|
13
13
|
var $$splitErrorComponentImporter = () => import("./antigravity._workspaceKey-3m_MzNFA.js");
|
|
14
|
-
var $$splitComponentImporter = () => import("./antigravity._workspaceKey-
|
|
14
|
+
var $$splitComponentImporter = () => import("./antigravity._workspaceKey-C3kP-qyN.js");
|
|
15
15
|
var Route = createFileRoute("/antigravity/$workspaceKey")({
|
|
16
16
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
17
17
|
errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { i as isAntigravityConversationLocked, n as hasEncryptedAntigravityConversation, r as hasReadableAntigravityConversation, t as canExportAntigravityConversation } from "./antigravity-conversation-state-HgzS302O.js";
|
|
2
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-
|
|
4
|
-
import { n as findWorkspaceOrThrow, t as Route } from "./antigravity._workspaceKey-
|
|
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
5
|
import { t as DataTable } from "./data-table-Cdct823O.js";
|
|
6
6
|
import { t as PageHeader } from "./page-header-VNSaM3xd.js";
|
|
7
7
|
import { n as formatBytes, o as formatNumber, r as formatDateTime } from "./formatters-FJaGZgJk.js";
|
|
8
|
-
import { t as AntigravityKeychainPanel } from "./antigravity-keychain-panel-
|
|
9
|
-
import { t as downloadTextFile } from "./download-DMmiy1xf.js";
|
|
8
|
+
import { t as AntigravityKeychainPanel } from "./antigravity-keychain-panel-CC7FLmAK.js";
|
|
10
9
|
import { t as Badge } from "./badge-EvdhKK_Z.js";
|
|
10
|
+
import { t as downloadTextFile } from "./download-DMmiy1xf.js";
|
|
11
11
|
import { i as DropdownMenuTrigger, n as DropdownMenuContent, r as DropdownMenuItem, t as DropdownMenu } from "./dropdown-menu-Dy_9t6TN.js";
|
|
12
12
|
import { n as ListSearchInput, t as matchesTextQuery } from "./text-filter-CGKxMCKt.js";
|
|
13
13
|
import { useDeferredValue, useMemo, useState } from "react";
|
package/apps/ui/dist/server/assets/{antigravity.index-BOlrJasZ.js → antigravity.index-CPCYkqCi.js}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { i as antigravityWorkspacesQueryOptions } from "./antigravity-queries-
|
|
1
|
+
import { i as antigravityWorkspacesQueryOptions } from "./antigravity-queries-CGrJO9Vr.js";
|
|
2
2
|
import { t as DataTable } from "./data-table-Cdct823O.js";
|
|
3
3
|
import { t as PageHeader } from "./page-header-VNSaM3xd.js";
|
|
4
4
|
import { n as formatBytes, o as formatNumber, r as formatDateTime } from "./formatters-FJaGZgJk.js";
|
|
5
|
-
import { t as AntigravityKeychainPanel } from "./antigravity-keychain-panel-
|
|
5
|
+
import { t as AntigravityKeychainPanel } from "./antigravity-keychain-panel-CC7FLmAK.js";
|
|
6
6
|
import { n as ListSearchInput, t as matchesTextQuery } from "./text-filter-CGKxMCKt.js";
|
|
7
7
|
import { useDeferredValue, useState } from "react";
|
|
8
8
|
import { Link } from "@tanstack/react-router";
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { a as cleanExtractedText, d as getPortablePathBasename, f as readJsonlObjects, i as asString, n as asNumber, o as cleanInlineTitle, r as asObject, t as asBoolean } from "./shared-DyhChtHf.js";
|
|
2
|
+
import { t as mapWithConcurrency } from "./concurrency-VXtYvlGh.js";
|
|
3
|
+
import { readdir, stat } from "node:fs/promises";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
//#region ../../src/lib/claude-code-exporter-types.ts
|
|
7
|
+
var getDefaultClaudeCodeDataDir = (_env = process.env, homeDir = os.homedir()) => {
|
|
8
|
+
return path.join(homeDir, ".claude");
|
|
9
|
+
};
|
|
10
|
+
var DEFAULT_CLAUDE_CODE_DATA_DIR = getDefaultClaudeCodeDataDir();
|
|
11
|
+
var resolveClaudeCodeDataDir = () => {
|
|
12
|
+
const configured = process.env.SPIRACHA_CLAUDE_CODE_DATA_DIR?.trim() || process.env.SPIRACHA_CLAUDE_CODE_DIR?.trim() || process.env.SPIRACHA_CLAUDE_HOME?.trim();
|
|
13
|
+
return configured ? configured : DEFAULT_CLAUDE_CODE_DATA_DIR;
|
|
14
|
+
};
|
|
15
|
+
var resolveClaudeCodeProjectsDir = () => {
|
|
16
|
+
const configured = process.env.SPIRACHA_CLAUDE_CODE_PROJECTS_DIR?.trim();
|
|
17
|
+
return configured ? configured : path.join(resolveClaudeCodeDataDir(), "projects");
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region ../../src/lib/claude-code-db.ts
|
|
21
|
+
var READ_CONCURRENCY = 8;
|
|
22
|
+
var WORKSPACE_KEY_PREFIX = "project:";
|
|
23
|
+
var pathExists = async (target) => {
|
|
24
|
+
return await stat(target).then(() => true).catch(() => false);
|
|
25
|
+
};
|
|
26
|
+
var cleanLabel = (value) => {
|
|
27
|
+
const cleaned = value?.replace(/\s+/g, " ").trim();
|
|
28
|
+
return cleaned ? cleaned : null;
|
|
29
|
+
};
|
|
30
|
+
var getWorkspaceKey = (directoryName) => `${WORKSPACE_KEY_PREFIX}${directoryName}`;
|
|
31
|
+
var getDirectoryNameFromWorkspaceKey = (workspaceKey) => {
|
|
32
|
+
return workspaceKey.startsWith(WORKSPACE_KEY_PREFIX) ? workspaceKey.slice(8) : null;
|
|
33
|
+
};
|
|
34
|
+
var decodeWorktreeFromDirectoryName = (directoryName) => {
|
|
35
|
+
if (!directoryName.startsWith("-")) return directoryName.replace(/-/g, path.sep);
|
|
36
|
+
return path.join(path.sep, ...directoryName.slice(1).split("-").filter(Boolean));
|
|
37
|
+
};
|
|
38
|
+
var getWorkspaceLabel = (worktree) => {
|
|
39
|
+
if (worktree === path.sep) return "(global)";
|
|
40
|
+
return getPortablePathBasename(worktree) || worktree;
|
|
41
|
+
};
|
|
42
|
+
var getWorkspaceUri = (worktree) => {
|
|
43
|
+
return worktree.startsWith(path.sep) ? `file://${worktree}` : worktree;
|
|
44
|
+
};
|
|
45
|
+
var toIso = (value) => {
|
|
46
|
+
return value === null ? null : new Date(value).toISOString();
|
|
47
|
+
};
|
|
48
|
+
var parseTimestampMs = (value) => {
|
|
49
|
+
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
50
|
+
if (typeof value !== "string" || !value.trim()) return null;
|
|
51
|
+
const numeric = Number(value);
|
|
52
|
+
if (Number.isFinite(numeric)) return numeric;
|
|
53
|
+
const parsed = Date.parse(value);
|
|
54
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
55
|
+
};
|
|
56
|
+
var formatJsonLike = (value) => {
|
|
57
|
+
if (value === void 0 || value === null) return null;
|
|
58
|
+
if (typeof value === "string") return value;
|
|
59
|
+
return JSON.stringify(value, null, 2);
|
|
60
|
+
};
|
|
61
|
+
var textFromContentValue = (value) => {
|
|
62
|
+
if (typeof value === "string") return value;
|
|
63
|
+
if (Array.isArray(value)) return value.map((item) => {
|
|
64
|
+
if (typeof item === "string") return item;
|
|
65
|
+
return asString(asObject(item)?.text ?? null) ?? "";
|
|
66
|
+
}).filter(Boolean).join("\n\n");
|
|
67
|
+
return asString(asObject(value ?? null)?.text ?? null) ?? "";
|
|
68
|
+
};
|
|
69
|
+
var parseTextContentPart = (item) => ({
|
|
70
|
+
raw: item,
|
|
71
|
+
text: asString(item.text ?? null) ?? "",
|
|
72
|
+
type: "text"
|
|
73
|
+
});
|
|
74
|
+
var parseThinkingContentPart = (item) => ({
|
|
75
|
+
raw: item,
|
|
76
|
+
text: asString(item.thinking ?? null) ?? "",
|
|
77
|
+
type: "thinking"
|
|
78
|
+
});
|
|
79
|
+
var parseToolUseContentPart = (item) => ({
|
|
80
|
+
argumentsText: formatJsonLike(item.input),
|
|
81
|
+
raw: item,
|
|
82
|
+
toolName: asString(item.name ?? null) ?? "unknown",
|
|
83
|
+
toolUseId: asString(item.id ?? null),
|
|
84
|
+
type: "tool_use"
|
|
85
|
+
});
|
|
86
|
+
var parseToolResultContentPart = (item) => ({
|
|
87
|
+
isError: asBoolean(item.is_error ?? null),
|
|
88
|
+
outputText: cleanExtractedText(textFromContentValue(item.content)).trim(),
|
|
89
|
+
raw: item,
|
|
90
|
+
toolUseId: asString(item.tool_use_id ?? null),
|
|
91
|
+
type: "tool_result"
|
|
92
|
+
});
|
|
93
|
+
var parseFallbackContentPart = (item) => {
|
|
94
|
+
const fallbackText = asString(item.text ?? null);
|
|
95
|
+
return {
|
|
96
|
+
raw: item,
|
|
97
|
+
text: fallbackText ?? void 0,
|
|
98
|
+
type: fallbackText ? "text" : "unknown"
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
var structuredContentParsers = {
|
|
102
|
+
input_text: parseTextContentPart,
|
|
103
|
+
output_text: parseTextContentPart,
|
|
104
|
+
text: parseTextContentPart,
|
|
105
|
+
thinking: parseThinkingContentPart,
|
|
106
|
+
tool_result: parseToolResultContentPart,
|
|
107
|
+
tool_use: parseToolUseContentPart
|
|
108
|
+
};
|
|
109
|
+
var parseStructuredContentPart = (item) => {
|
|
110
|
+
const type = asString(item.type ?? null);
|
|
111
|
+
return type ? structuredContentParsers[type]?.(item) ?? parseFallbackContentPart(item) : parseFallbackContentPart(item);
|
|
112
|
+
};
|
|
113
|
+
var parseMessageContentPart = (item) => {
|
|
114
|
+
if (typeof item === "string") return {
|
|
115
|
+
raw: { text: item },
|
|
116
|
+
text: item,
|
|
117
|
+
type: "text"
|
|
118
|
+
};
|
|
119
|
+
const object = asObject(item);
|
|
120
|
+
return object ? parseStructuredContentPart(object) : null;
|
|
121
|
+
};
|
|
122
|
+
var parseMessageParts = (message) => {
|
|
123
|
+
const content = message.content;
|
|
124
|
+
return (Array.isArray(content) ? content : [content]).map(parseMessageContentPart).filter((part) => part !== null && part.type !== "unknown");
|
|
125
|
+
};
|
|
126
|
+
var parseAttachmentParts = (raw) => {
|
|
127
|
+
const attachment = asObject(raw.attachment ?? null);
|
|
128
|
+
if (!attachment) return [];
|
|
129
|
+
return [{
|
|
130
|
+
attachmentType: asString(attachment.type ?? null),
|
|
131
|
+
raw: attachment,
|
|
132
|
+
text: textFromContentValue(attachment.content),
|
|
133
|
+
type: "attachment"
|
|
134
|
+
}];
|
|
135
|
+
};
|
|
136
|
+
var getTranscriptEntryParts = (type, message, raw) => {
|
|
137
|
+
if (message) return parseMessageParts(message);
|
|
138
|
+
if (type === "attachment") return parseAttachmentParts(raw);
|
|
139
|
+
return [];
|
|
140
|
+
};
|
|
141
|
+
var getTranscriptEntryRole = (type, message) => {
|
|
142
|
+
return asString(message?.role ?? null) ?? (type === "attachment" ? "attachment" : type);
|
|
143
|
+
};
|
|
144
|
+
var getTranscriptEntryId = (type, raw) => {
|
|
145
|
+
return asString(raw.uuid ?? null) ?? `${type}:${asString(raw.sessionId ?? null) ?? "unknown"}`;
|
|
146
|
+
};
|
|
147
|
+
var parseTranscriptEntry = (raw) => {
|
|
148
|
+
const type = asString(raw.type ?? null) ?? "unknown";
|
|
149
|
+
const message = asObject(raw.message ?? null);
|
|
150
|
+
const parts = getTranscriptEntryParts(type, message, raw);
|
|
151
|
+
if (parts.length === 0) return null;
|
|
152
|
+
return {
|
|
153
|
+
cwd: asString(raw.cwd ?? null),
|
|
154
|
+
entryId: getTranscriptEntryId(type, raw),
|
|
155
|
+
model: asString(message?.model ?? null),
|
|
156
|
+
parentEntryId: asString(raw.parentUuid ?? null),
|
|
157
|
+
parts,
|
|
158
|
+
raw,
|
|
159
|
+
role: getTranscriptEntryRole(type, message),
|
|
160
|
+
timestamp: asString(raw.timestamp ?? null),
|
|
161
|
+
type
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
var createEmptyStats = () => ({
|
|
165
|
+
assistantMessageCount: 0,
|
|
166
|
+
attachmentCount: 0,
|
|
167
|
+
cacheCreationInputTokens: 0,
|
|
168
|
+
cacheReadInputTokens: 0,
|
|
169
|
+
inputTokens: 0,
|
|
170
|
+
messageCount: 0,
|
|
171
|
+
outputTokens: 0,
|
|
172
|
+
renderablePartCount: 0,
|
|
173
|
+
toolCallCount: 0,
|
|
174
|
+
toolResultCount: 0,
|
|
175
|
+
userMessageCount: 0
|
|
176
|
+
});
|
|
177
|
+
var addUsageStats = (stats, message) => {
|
|
178
|
+
const usage = asObject(message?.usage ?? null);
|
|
179
|
+
if (!usage) return;
|
|
180
|
+
stats.inputTokens += asNumber(usage.input_tokens ?? null) ?? 0;
|
|
181
|
+
stats.outputTokens += asNumber(usage.output_tokens ?? null) ?? 0;
|
|
182
|
+
stats.cacheCreationInputTokens += asNumber(usage.cache_creation_input_tokens ?? null) ?? 0;
|
|
183
|
+
stats.cacheReadInputTokens += asNumber(usage.cache_read_input_tokens ?? null) ?? 0;
|
|
184
|
+
};
|
|
185
|
+
var updateStatsFromEntry = (stats, entry) => {
|
|
186
|
+
if (entry.type === "user" || entry.type === "assistant") stats.messageCount += 1;
|
|
187
|
+
if (entry.role === "user") stats.userMessageCount += 1;
|
|
188
|
+
if (entry.role === "assistant") stats.assistantMessageCount += 1;
|
|
189
|
+
if (entry.type === "attachment") stats.attachmentCount += 1;
|
|
190
|
+
stats.toolCallCount += entry.parts.filter((part) => part.type === "tool_use").length;
|
|
191
|
+
stats.toolResultCount += entry.parts.filter((part) => part.type === "tool_result").length;
|
|
192
|
+
stats.renderablePartCount += entry.parts.filter(isRenderablePart).length;
|
|
193
|
+
addUsageStats(stats, asObject(entry.raw.message ?? null));
|
|
194
|
+
};
|
|
195
|
+
var updateTimeline = (timeline, raw) => {
|
|
196
|
+
const timestampMs = parseTimestampMs(raw.timestamp);
|
|
197
|
+
if (timestampMs === null) return;
|
|
198
|
+
timeline.firstMs = timeline.firstMs === null ? timestampMs : Math.min(timeline.firstMs, timestampMs);
|
|
199
|
+
timeline.lastMs = timeline.lastMs === null ? timestampMs : Math.max(timeline.lastMs, timestampMs);
|
|
200
|
+
};
|
|
201
|
+
var readTitleCandidate = (raw) => {
|
|
202
|
+
const type = asString(raw.type ?? null);
|
|
203
|
+
if (type !== "ai-title" && type !== "custom-title") return null;
|
|
204
|
+
return cleanLabel(asString(raw.title ?? null) ?? asString(raw.content ?? null));
|
|
205
|
+
};
|
|
206
|
+
var updateIdentityFromRaw = (identity, raw) => {
|
|
207
|
+
identity.sessionId = asString(raw.sessionId ?? null) ?? identity.sessionId;
|
|
208
|
+
identity.cwd = asString(raw.cwd ?? null) ?? identity.cwd;
|
|
209
|
+
identity.version = asString(raw.version ?? null) ?? identity.version;
|
|
210
|
+
identity.gitBranch = asString(raw.gitBranch ?? null) ?? identity.gitBranch;
|
|
211
|
+
identity.model = asString(asObject(raw.message ?? null)?.model ?? null) ?? identity.model;
|
|
212
|
+
identity.title = readTitleCandidate(raw) ?? identity.title;
|
|
213
|
+
};
|
|
214
|
+
var updateIdentityFromEntry = (identity, entry) => {
|
|
215
|
+
if (entry.role === "user" && !identity.firstUserText) identity.firstUserText = cleanExtractedText(entry.parts.find((part) => part.type === "text" && part.text?.trim())?.text ?? "").trim() || null;
|
|
216
|
+
};
|
|
217
|
+
var toTimeline = (timeline, fallbackMs) => {
|
|
218
|
+
const createdAtMs = timeline.firstMs ?? fallbackMs;
|
|
219
|
+
const lastActiveAtMs = timeline.lastMs ?? fallbackMs;
|
|
220
|
+
return {
|
|
221
|
+
createdAtIso: toIso(createdAtMs),
|
|
222
|
+
createdAtMs,
|
|
223
|
+
lastActiveAtIso: toIso(lastActiveAtMs),
|
|
224
|
+
lastActiveAtMs
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
var getTitle = (identity) => {
|
|
228
|
+
return cleanInlineTitle(identity.title ?? identity.firstUserText ?? identity.sessionId);
|
|
229
|
+
};
|
|
230
|
+
var toSessionSummary = (file, identity, stats, timeline) => {
|
|
231
|
+
const worktree = identity.cwd ?? decodeWorktreeFromDirectoryName(file.directoryName);
|
|
232
|
+
const workspaceLabel = getWorkspaceLabel(worktree);
|
|
233
|
+
const totalTokens = stats.inputTokens + stats.outputTokens + stats.cacheCreationInputTokens + stats.cacheReadInputTokens;
|
|
234
|
+
return {
|
|
235
|
+
...stats,
|
|
236
|
+
...timeline,
|
|
237
|
+
cwd: identity.cwd,
|
|
238
|
+
filePath: file.filePath,
|
|
239
|
+
gitBranch: identity.gitBranch,
|
|
240
|
+
model: identity.model,
|
|
241
|
+
sessionId: identity.sessionId,
|
|
242
|
+
title: getTitle(identity),
|
|
243
|
+
totalTokens,
|
|
244
|
+
version: identity.version,
|
|
245
|
+
workspaceKey: getWorkspaceKey(file.directoryName),
|
|
246
|
+
workspaceLabel,
|
|
247
|
+
worktree
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
var isRenderablePart = (part) => {
|
|
251
|
+
if (part.type === "text" || part.type === "thinking" || part.type === "attachment") return Boolean(part.text?.trim());
|
|
252
|
+
if (part.type === "tool_use") return Boolean(part.toolName || part.argumentsText?.trim());
|
|
253
|
+
if (part.type === "tool_result") return Boolean(part.outputText?.trim());
|
|
254
|
+
return false;
|
|
255
|
+
};
|
|
256
|
+
var readTranscriptFile = async (file) => {
|
|
257
|
+
const fallbackMtimeMs = await stat(file.filePath).then((stats) => stats.mtimeMs).catch(() => null);
|
|
258
|
+
const identity = {
|
|
259
|
+
cwd: null,
|
|
260
|
+
firstUserText: null,
|
|
261
|
+
gitBranch: null,
|
|
262
|
+
model: null,
|
|
263
|
+
sessionId: path.basename(file.filePath, ".jsonl"),
|
|
264
|
+
title: null,
|
|
265
|
+
version: null
|
|
266
|
+
};
|
|
267
|
+
const stats = createEmptyStats();
|
|
268
|
+
const timeline = {
|
|
269
|
+
firstMs: null,
|
|
270
|
+
lastMs: null
|
|
271
|
+
};
|
|
272
|
+
const entries = [];
|
|
273
|
+
const rawEvents = [];
|
|
274
|
+
for await (const raw of readJsonlObjects(file.filePath)) {
|
|
275
|
+
rawEvents.push(raw);
|
|
276
|
+
updateTimeline(timeline, raw);
|
|
277
|
+
updateIdentityFromRaw(identity, raw);
|
|
278
|
+
const entry = parseTranscriptEntry(raw);
|
|
279
|
+
if (!entry) continue;
|
|
280
|
+
entries.push(entry);
|
|
281
|
+
updateStatsFromEntry(stats, entry);
|
|
282
|
+
updateIdentityFromEntry(identity, entry);
|
|
283
|
+
}
|
|
284
|
+
const session = toSessionSummary(file, identity, stats, toTimeline(timeline, fallbackMtimeMs));
|
|
285
|
+
return { transcript: {
|
|
286
|
+
entries,
|
|
287
|
+
rawEvents,
|
|
288
|
+
renderablePartCount: stats.renderablePartCount,
|
|
289
|
+
session
|
|
290
|
+
} };
|
|
291
|
+
};
|
|
292
|
+
var listTranscriptFilesForProject = async (projectsDir, directoryName) => {
|
|
293
|
+
const projectDir = path.join(projectsDir, directoryName);
|
|
294
|
+
return (await readdir(projectDir, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map((entry) => ({
|
|
295
|
+
directoryName,
|
|
296
|
+
filePath: path.join(projectDir, entry.name)
|
|
297
|
+
}));
|
|
298
|
+
};
|
|
299
|
+
var listTranscriptFiles = async (projectsDir) => {
|
|
300
|
+
if (!await pathExists(projectsDir)) return [];
|
|
301
|
+
return (await mapWithConcurrency((await readdir(projectsDir, { withFileTypes: true })).filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(), READ_CONCURRENCY, (directoryName) => listTranscriptFilesForProject(projectsDir, directoryName))).flat();
|
|
302
|
+
};
|
|
303
|
+
var readTranscriptFiles = async (files) => {
|
|
304
|
+
return (await mapWithConcurrency(files, READ_CONCURRENCY, readTranscriptFile)).flatMap((item) => item ? [item.transcript] : []);
|
|
305
|
+
};
|
|
306
|
+
var compareNullableMsDesc = (left, right) => {
|
|
307
|
+
return (right ?? 0) - (left ?? 0);
|
|
308
|
+
};
|
|
309
|
+
var toWorkspaceGroup = (directoryName, sessions) => {
|
|
310
|
+
const worktree = sessions[0]?.worktree ?? decodeWorktreeFromDirectoryName(directoryName);
|
|
311
|
+
const lastActiveAtMs = sessions.reduce((latest, session) => {
|
|
312
|
+
if (session.lastActiveAtMs === null) return latest;
|
|
313
|
+
return latest === null ? session.lastActiveAtMs : Math.max(latest, session.lastActiveAtMs);
|
|
314
|
+
}, null);
|
|
315
|
+
return {
|
|
316
|
+
assistantMessageCount: sessions.reduce((total, session) => total + session.assistantMessageCount, 0),
|
|
317
|
+
directoryName,
|
|
318
|
+
key: getWorkspaceKey(directoryName),
|
|
319
|
+
label: getWorkspaceLabel(worktree),
|
|
320
|
+
lastActiveAtIso: toIso(lastActiveAtMs),
|
|
321
|
+
lastActiveAtMs,
|
|
322
|
+
messageCount: sessions.reduce((total, session) => total + session.messageCount, 0),
|
|
323
|
+
sessionCount: sessions.length,
|
|
324
|
+
toolCallCount: sessions.reduce((total, session) => total + session.toolCallCount, 0),
|
|
325
|
+
toolResultCount: sessions.reduce((total, session) => total + session.toolResultCount, 0),
|
|
326
|
+
uri: getWorkspaceUri(worktree),
|
|
327
|
+
userMessageCount: sessions.reduce((total, session) => total + session.userMessageCount, 0),
|
|
328
|
+
worktree
|
|
329
|
+
};
|
|
330
|
+
};
|
|
331
|
+
var listClaudeCodeWorkspaceGroups = async (projectsDir = resolveClaudeCodeProjectsDir()) => {
|
|
332
|
+
const transcripts = await readTranscriptFiles(await listTranscriptFiles(projectsDir));
|
|
333
|
+
const sessionsByDirectory = /* @__PURE__ */ new Map();
|
|
334
|
+
for (const transcript of transcripts) {
|
|
335
|
+
const directoryName = getDirectoryNameFromWorkspaceKey(transcript.session.workspaceKey);
|
|
336
|
+
if (!directoryName) continue;
|
|
337
|
+
const sessions = sessionsByDirectory.get(directoryName) ?? [];
|
|
338
|
+
sessions.push(transcript.session);
|
|
339
|
+
sessionsByDirectory.set(directoryName, sessions);
|
|
340
|
+
}
|
|
341
|
+
return [...sessionsByDirectory.entries()].map(([directoryName, sessions]) => toWorkspaceGroup(directoryName, sessions)).sort((left, right) => compareNullableMsDesc(left.lastActiveAtMs, right.lastActiveAtMs) || left.worktree.localeCompare(right.worktree));
|
|
342
|
+
};
|
|
343
|
+
var sortSessions = (sessions) => {
|
|
344
|
+
return [...sessions].sort((left, right) => compareNullableMsDesc(left.lastActiveAtMs, right.lastActiveAtMs) || left.title.localeCompare(right.title));
|
|
345
|
+
};
|
|
346
|
+
var listClaudeCodeSessionsForGroup = async (workspaceKey, projectsDir = resolveClaudeCodeProjectsDir()) => {
|
|
347
|
+
const directoryName = getDirectoryNameFromWorkspaceKey(workspaceKey);
|
|
348
|
+
if (!directoryName || !await pathExists(projectsDir)) return [];
|
|
349
|
+
return sortSessions((await readTranscriptFiles(await listTranscriptFilesForProject(projectsDir, directoryName))).map((transcript) => transcript.session));
|
|
350
|
+
};
|
|
351
|
+
var locateSessionFile = async (projectsDir, sessionId) => {
|
|
352
|
+
return (await listTranscriptFiles(projectsDir)).find((file) => path.basename(file.filePath, ".jsonl") === sessionId) ?? null;
|
|
353
|
+
};
|
|
354
|
+
var readClaudeCodeSessionTranscript = async (projectsDir, sessionId) => {
|
|
355
|
+
if (!await pathExists(projectsDir)) return null;
|
|
356
|
+
const file = await locateSessionFile(projectsDir, sessionId);
|
|
357
|
+
if (!file) return null;
|
|
358
|
+
return (await readTranscriptFile(file))?.transcript ?? null;
|
|
359
|
+
};
|
|
360
|
+
//#endregion
|
|
361
|
+
export { listClaudeCodeSessionsForGroup, listClaudeCodeWorkspaceGroups, readClaudeCodeSessionTranscript, resolveClaudeCodeProjectsDir };
|
|
@@ -0,0 +1,37 @@
|
|
|
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/claude-code-server.ts
|
|
6
|
+
var workspaceSchema = z.object({ workspaceKey: z.string().min(1) });
|
|
7
|
+
var sessionSchema = z.object({ sessionId: z.string().min(1) });
|
|
8
|
+
var exportSessionSchema = z.object({
|
|
9
|
+
includeCommentary: z.boolean().default(true),
|
|
10
|
+
includeMetadata: z.boolean().default(true),
|
|
11
|
+
includeTools: z.boolean().default(true),
|
|
12
|
+
outputFormat: z.enum(["md", "txt"]).default("md"),
|
|
13
|
+
sessionId: z.string().min(1),
|
|
14
|
+
zipArchive: z.boolean().default(false)
|
|
15
|
+
});
|
|
16
|
+
var listClaudeCodeWorkspacesFn = createServerFn({ method: "GET" }).handler(createSsrRpc("059a21d54c070078df105ec79a9321ef1d40b40bf4327be93f6d118c598e300f"));
|
|
17
|
+
var listClaudeCodeSessionsFn = createServerFn({ method: "GET" }).validator(workspaceSchema).handler(createSsrRpc("2ffc3b20be74973de734b47407226bae6130a05e31d0d9143b52c9a6e28ba6af"));
|
|
18
|
+
var getClaudeCodeSessionDetailFn = createServerFn({ method: "GET" }).validator(sessionSchema).handler(createSsrRpc("6b9382b62370df4b167d9fa590406f3f450b655eee585d88047bb61129037c69"));
|
|
19
|
+
var exportClaudeCodeSessionFn = createServerFn({ method: "POST" }).validator(exportSessionSchema).handler(createSsrRpc("59076299b518e4ee172c6793dceb83740eee7fa39888483c11affac937e1af70"));
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/lib/claude-code-queries.ts
|
|
22
|
+
var claudeCodeWorkspacesQueryOptions = () => queryOptions({
|
|
23
|
+
queryFn: () => listClaudeCodeWorkspacesFn(),
|
|
24
|
+
queryKey: ["claude-code-workspaces"]
|
|
25
|
+
});
|
|
26
|
+
var claudeCodeSessionsQueryOptions = (workspaceKey) => queryOptions({
|
|
27
|
+
enabled: workspaceKey !== null,
|
|
28
|
+
queryFn: () => listClaudeCodeSessionsFn({ data: { workspaceKey: workspaceKey ?? "" } }),
|
|
29
|
+
queryKey: ["claude-code-sessions", workspaceKey ?? "none"]
|
|
30
|
+
});
|
|
31
|
+
var claudeCodeSessionDetailQueryOptions = (sessionId) => queryOptions({
|
|
32
|
+
enabled: sessionId !== null,
|
|
33
|
+
queryFn: () => getClaudeCodeSessionDetailFn({ data: { sessionId: sessionId ?? "" } }),
|
|
34
|
+
queryKey: ["claude-code-session", sessionId ?? "none"]
|
|
35
|
+
});
|
|
36
|
+
//#endregion
|
|
37
|
+
export { exportClaudeCodeSessionFn as i, claudeCodeSessionsQueryOptions as n, claudeCodeWorkspacesQueryOptions as r, claudeCodeSessionDetailQueryOptions as t };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-CF_DEwnm.js";
|
|
3
|
+
import { t as renderSourceSessionDownload } from "./source-session-export-server-DNutCawb.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
//#region src/lib/claude-code-server.ts?tss-serverfn-split
|
|
6
|
+
var workspaceSchema = z.object({ workspaceKey: z.string().min(1) });
|
|
7
|
+
var sessionSchema = z.object({ sessionId: z.string().min(1) });
|
|
8
|
+
var exportSessionSchema = z.object({
|
|
9
|
+
includeCommentary: z.boolean().default(true),
|
|
10
|
+
includeMetadata: z.boolean().default(true),
|
|
11
|
+
includeTools: z.boolean().default(true),
|
|
12
|
+
outputFormat: z.enum(["md", "txt"]).default("md"),
|
|
13
|
+
sessionId: z.string().min(1),
|
|
14
|
+
zipArchive: z.boolean().default(false)
|
|
15
|
+
});
|
|
16
|
+
var listClaudeCodeWorkspacesFn_createServerFn_handler = createServerRpc({
|
|
17
|
+
id: "059a21d54c070078df105ec79a9321ef1d40b40bf4327be93f6d118c598e300f",
|
|
18
|
+
name: "listClaudeCodeWorkspacesFn",
|
|
19
|
+
filename: "src/lib/claude-code-server.ts"
|
|
20
|
+
}, (opts) => listClaudeCodeWorkspacesFn.__executeServer(opts));
|
|
21
|
+
var listClaudeCodeWorkspacesFn = createServerFn({ method: "GET" }).handler(listClaudeCodeWorkspacesFn_createServerFn_handler, async () => {
|
|
22
|
+
const { listClaudeCodeWorkspaceGroups } = await import("./claude-code-db-Ik3VStKZ.js");
|
|
23
|
+
return listClaudeCodeWorkspaceGroups();
|
|
24
|
+
});
|
|
25
|
+
var listClaudeCodeSessionsFn_createServerFn_handler = createServerRpc({
|
|
26
|
+
id: "2ffc3b20be74973de734b47407226bae6130a05e31d0d9143b52c9a6e28ba6af",
|
|
27
|
+
name: "listClaudeCodeSessionsFn",
|
|
28
|
+
filename: "src/lib/claude-code-server.ts"
|
|
29
|
+
}, (opts) => listClaudeCodeSessionsFn.__executeServer(opts));
|
|
30
|
+
var listClaudeCodeSessionsFn = createServerFn({ method: "GET" }).validator(workspaceSchema).handler(listClaudeCodeSessionsFn_createServerFn_handler, async ({ data }) => {
|
|
31
|
+
const { listClaudeCodeSessionsForGroup } = await import("./claude-code-db-Ik3VStKZ.js");
|
|
32
|
+
return listClaudeCodeSessionsForGroup(data.workspaceKey);
|
|
33
|
+
});
|
|
34
|
+
var loadClaudeCodeSessionTranscript = async (sessionId) => {
|
|
35
|
+
const { readClaudeCodeSessionTranscript, resolveClaudeCodeProjectsDir } = await import("./claude-code-db-Ik3VStKZ.js");
|
|
36
|
+
const transcript = await readClaudeCodeSessionTranscript(resolveClaudeCodeProjectsDir(), sessionId);
|
|
37
|
+
if (!transcript) throw new Error(`Claude Code session not found: ${sessionId}`);
|
|
38
|
+
return transcript;
|
|
39
|
+
};
|
|
40
|
+
var getClaudeCodeSessionDetailFn_createServerFn_handler = createServerRpc({
|
|
41
|
+
id: "6b9382b62370df4b167d9fa590406f3f450b655eee585d88047bb61129037c69",
|
|
42
|
+
name: "getClaudeCodeSessionDetailFn",
|
|
43
|
+
filename: "src/lib/claude-code-server.ts"
|
|
44
|
+
}, (opts) => getClaudeCodeSessionDetailFn.__executeServer(opts));
|
|
45
|
+
var getClaudeCodeSessionDetailFn = createServerFn({ method: "GET" }).validator(sessionSchema).handler(getClaudeCodeSessionDetailFn_createServerFn_handler, async ({ data }) => {
|
|
46
|
+
return loadClaudeCodeSessionTranscript(data.sessionId);
|
|
47
|
+
});
|
|
48
|
+
var exportClaudeCodeSessionFn_createServerFn_handler = createServerRpc({
|
|
49
|
+
id: "59076299b518e4ee172c6793dceb83740eee7fa39888483c11affac937e1af70",
|
|
50
|
+
name: "exportClaudeCodeSessionFn",
|
|
51
|
+
filename: "src/lib/claude-code-server.ts"
|
|
52
|
+
}, (opts) => exportClaudeCodeSessionFn.__executeServer(opts));
|
|
53
|
+
var exportClaudeCodeSessionFn = createServerFn({ method: "POST" }).validator(exportSessionSchema).handler(exportClaudeCodeSessionFn_createServerFn_handler, async ({ data }) => {
|
|
54
|
+
const { renderClaudeCodeTranscript } = await import("./claude-code-transcript-C-bxh3cS.js");
|
|
55
|
+
const transcript = await loadClaudeCodeSessionTranscript(data.sessionId);
|
|
56
|
+
const content = renderClaudeCodeTranscript(transcript, {
|
|
57
|
+
includeCommentary: data.includeCommentary,
|
|
58
|
+
includeMetadata: data.includeMetadata,
|
|
59
|
+
includeTools: data.includeTools,
|
|
60
|
+
outputFormat: data.outputFormat
|
|
61
|
+
});
|
|
62
|
+
if (!content) throw new Error(`Claude Code session has no exportable content: ${data.sessionId}`);
|
|
63
|
+
return renderSourceSessionDownload({
|
|
64
|
+
content,
|
|
65
|
+
fallbackBaseName: "claude-code-session",
|
|
66
|
+
fileBaseName: transcript.session.title || transcript.session.sessionId,
|
|
67
|
+
outputFormat: data.outputFormat,
|
|
68
|
+
zipArchive: data.zipArchive
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//#endregion
|
|
72
|
+
export { exportClaudeCodeSessionFn_createServerFn_handler, getClaudeCodeSessionDetailFn_createServerFn_handler, listClaudeCodeSessionsFn_createServerFn_handler, listClaudeCodeWorkspacesFn_createServerFn_handler };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { t as claudeCodeSessionDetailQueryOptions } from "./claude-code-queries-Cgzi4K-e.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/claude-code-sessions.$sessionId.tsx
|
|
6
|
+
var $$splitErrorComponentImporter = () => import("./claude-code-sessions._sessionId-DSvPLEUL.js");
|
|
7
|
+
var $$splitComponentImporter = () => import("./claude-code-sessions._sessionId-D1RYYi3j.js");
|
|
8
|
+
var Route = createFileRoute("/claude-code-sessions/$sessionId")({
|
|
9
|
+
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
10
|
+
errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
|
|
11
|
+
loader: ({ context, params }) => context.queryClient.ensureQueryData(claudeCodeSessionDetailQueryOptions(params.sessionId)),
|
|
12
|
+
pendingComponent: () => /* @__PURE__ */ jsx(LoadingPanel, {
|
|
13
|
+
description: "Loading the Claude Code transcript, messages, tool calls, and session metadata.",
|
|
14
|
+
title: "Loading session"
|
|
15
|
+
})
|
|
16
|
+
});
|
|
17
|
+
//#endregion
|
|
18
|
+
export { Route as t };
|