spiracha 1.5.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +114 -205
- package/README.md +89 -269
- package/apps/ui/AGENTS.md +17 -7
- package/apps/ui/README.md +34 -8
- package/apps/ui/components.json +21 -0
- package/apps/ui/package.json +65 -0
- package/apps/ui/src/components/antigravity-conversations-table.tsx +206 -0
- package/apps/ui/src/components/antigravity-keychain-panel.tsx +76 -0
- package/apps/ui/src/components/antigravity-workspaces-table.tsx +63 -0
- package/apps/ui/src/components/app-shell.tsx +124 -0
- package/apps/ui/src/components/breadcrumbs.tsx +53 -0
- package/apps/ui/src/components/claude-code-sessions-table.tsx +114 -0
- package/apps/ui/src/components/claude-code-workspaces-table.tsx +55 -0
- package/apps/ui/src/components/cursor-threads-table.tsx +189 -0
- package/apps/ui/src/components/cursor-workspaces-table.tsx +140 -0
- package/apps/ui/src/components/data-table.tsx +241 -0
- package/apps/ui/src/components/delete-confirm-dialog.tsx +88 -0
- package/apps/ui/src/components/export-dialog.tsx +184 -0
- package/apps/ui/src/components/json-panel.tsx +17 -0
- package/apps/ui/src/components/kiro-sessions-table.tsx +112 -0
- package/apps/ui/src/components/kiro-workspaces-table.tsx +53 -0
- package/apps/ui/src/components/list-search-input.tsx +18 -0
- package/apps/ui/src/components/loading-panel.tsx +23 -0
- package/apps/ui/src/components/metadata-section.tsx +31 -0
- package/apps/ui/src/components/metric-card.tsx +19 -0
- package/apps/ui/src/components/opencode-sessions-table.tsx +128 -0
- package/apps/ui/src/components/opencode-workspaces-table.tsx +57 -0
- package/apps/ui/src/components/page-header.tsx +33 -0
- package/apps/ui/src/components/projects-loading-state.tsx +74 -0
- package/apps/ui/src/components/projects-table.tsx +108 -0
- package/apps/ui/src/components/qoder-sessions-table.tsx +112 -0
- package/apps/ui/src/components/qoder-workspaces-table.tsx +53 -0
- package/apps/ui/src/components/recent-threads-list.tsx +52 -0
- package/apps/ui/src/components/reload-error-panel.tsx +20 -0
- package/apps/ui/src/components/text-document-panel.tsx +19 -0
- package/apps/ui/src/components/theme-toggle.tsx +48 -0
- package/apps/ui/src/components/threads-table.tsx +202 -0
- package/apps/ui/src/components/transcript-view.tsx +552 -0
- package/apps/ui/src/components/ui/alert-dialog.tsx +160 -0
- package/apps/ui/src/components/ui/badge.tsx +45 -0
- package/apps/ui/src/components/ui/button.tsx +62 -0
- package/apps/ui/src/components/ui/checkbox.tsx +29 -0
- package/apps/ui/src/components/ui/dialog.tsx +137 -0
- package/apps/ui/src/components/ui/dropdown-menu.tsx +217 -0
- package/apps/ui/src/components/ui/input.tsx +21 -0
- package/apps/ui/src/components/ui/scroll-area.tsx +46 -0
- package/apps/ui/src/components/ui/select.tsx +163 -0
- package/apps/ui/src/components/ui/separator.tsx +28 -0
- package/apps/ui/src/components/ui/sheet.tsx +107 -0
- package/apps/ui/src/components/ui/skeleton.tsx +7 -0
- package/apps/ui/src/components/ui/table.tsx +76 -0
- package/apps/ui/src/components/ui/tabs.tsx +71 -0
- package/apps/ui/src/components/ui/tooltip.tsx +44 -0
- package/apps/ui/src/integrations/tanstack-query/devtools.tsx +6 -0
- package/apps/ui/src/integrations/tanstack-query/root-provider.tsx +10 -0
- package/apps/ui/src/lib/antigravity-conversation-state.ts +28 -0
- package/apps/ui/src/lib/antigravity-queries.ts +33 -0
- package/apps/ui/src/lib/antigravity-server.ts +128 -0
- package/apps/ui/src/lib/antigravity-transcript-events.ts +335 -0
- package/apps/ui/src/lib/claude-code-queries.ts +26 -0
- package/apps/ui/src/lib/claude-code-server.ts +75 -0
- package/apps/ui/src/lib/claude-code-transcript-events.ts +154 -0
- package/apps/ui/src/lib/codex-queries.ts +66 -0
- package/apps/ui/src/lib/codex-server.ts +209 -0
- package/apps/ui/src/lib/cursor-queries.ts +37 -0
- package/apps/ui/src/lib/cursor-server.ts +272 -0
- package/apps/ui/src/lib/cursor-transcript-events.ts +229 -0
- package/apps/ui/src/lib/download.ts +166 -0
- package/apps/ui/src/lib/formatters.ts +149 -0
- package/apps/ui/src/lib/kiro-queries.ts +22 -0
- package/apps/ui/src/lib/kiro-server.ts +73 -0
- package/apps/ui/src/lib/kiro-transcript-events.ts +113 -0
- package/apps/ui/src/lib/opencode-queries.ts +37 -0
- package/apps/ui/src/lib/opencode-server.ts +73 -0
- package/apps/ui/src/lib/opencode-transcript-events.ts +221 -0
- package/apps/ui/src/lib/package-metadata.ts +16 -0
- package/apps/ui/src/lib/path-utils.ts +13 -0
- package/apps/ui/src/lib/qoder-queries.ts +22 -0
- package/apps/ui/src/lib/qoder-server.ts +79 -0
- package/apps/ui/src/lib/qoder-transcript-events.ts +139 -0
- package/apps/ui/src/lib/route-search.ts +68 -0
- package/apps/ui/src/lib/settings-store.tsx +59 -0
- package/apps/ui/src/lib/source-session-export-server.ts +56 -0
- package/apps/ui/src/lib/text-filter.ts +22 -0
- package/apps/ui/src/lib/thread-id.ts +3 -0
- package/apps/ui/src/lib/thread-transcript-stats.ts +57 -0
- package/apps/ui/src/lib/utils.ts +7 -0
- package/apps/ui/src/routeTree.gen.ts +730 -0
- package/apps/ui/src/router.tsx +20 -0
- package/apps/ui/src/routes/$threadId.tsx +22 -0
- package/apps/ui/src/routes/__root.tsx +127 -0
- package/apps/ui/src/routes/analytics.tsx +143 -0
- package/apps/ui/src/routes/antigravity-conversations.$conversationId.tsx +438 -0
- package/apps/ui/src/routes/antigravity.$workspaceKey.tsx +127 -0
- package/apps/ui/src/routes/antigravity.index.tsx +51 -0
- package/apps/ui/src/routes/api.v1.conversation-query.ts +12 -0
- package/apps/ui/src/routes/api.v1.conversations.$source.$id.export.ts +12 -0
- package/apps/ui/src/routes/api.v1.conversations.$source.$id.ts +12 -0
- package/apps/ui/src/routes/api.v1.conversations.ts +12 -0
- package/apps/ui/src/routes/api.v1.resolve.ts +12 -0
- package/apps/ui/src/routes/api.v1.sources.ts +12 -0
- package/apps/ui/src/routes/claude-code-sessions.$sessionId.tsx +342 -0
- package/apps/ui/src/routes/claude-code.$workspaceKey.tsx +135 -0
- package/apps/ui/src/routes/claude-code.index.tsx +48 -0
- package/apps/ui/src/routes/codex.$project.tsx +390 -0
- package/apps/ui/src/routes/codex.index.tsx +116 -0
- package/apps/ui/src/routes/cursor-threads.$composerId.tsx +435 -0
- package/apps/ui/src/routes/cursor.$workspaceKey.tsx +416 -0
- package/apps/ui/src/routes/cursor.index.tsx +120 -0
- package/apps/ui/src/routes/index.tsx +124 -0
- package/apps/ui/src/routes/kiro-sessions.$sessionId.tsx +345 -0
- package/apps/ui/src/routes/kiro.$workspaceKey.tsx +136 -0
- package/apps/ui/src/routes/kiro.index.tsx +48 -0
- package/apps/ui/src/routes/opencode-sessions.$sessionId.tsx +334 -0
- package/apps/ui/src/routes/opencode.$workspaceKey.tsx +135 -0
- package/apps/ui/src/routes/opencode.index.tsx +48 -0
- package/apps/ui/src/routes/qoder-sessions.$sessionId.tsx +341 -0
- package/apps/ui/src/routes/qoder.$workspaceKey.tsx +139 -0
- package/apps/ui/src/routes/qoder.index.tsx +48 -0
- package/apps/ui/src/routes/settings.tsx +91 -0
- package/apps/ui/src/routes/threads.$threadId.tsx +619 -0
- package/apps/ui/src/styles.css +122 -0
- package/apps/ui/tsconfig.json +29 -0
- package/apps/ui/vite.config.ts +84 -0
- package/bin/spiracha.ts +32 -0
- package/package.json +46 -73
- package/src/client.ts +290 -0
- package/src/lib/antigravity-db.ts +213 -19
- package/src/lib/antigravity-exporter-types.ts +1 -0
- package/src/lib/codex-analytics.ts +1 -1
- package/src/lib/codex-browser-db.ts +410 -74
- package/src/lib/codex-browser-export.ts +6 -14
- package/src/lib/codex-browser-types.ts +1 -1
- package/src/lib/{codex-exporter-types.ts → codex-thread-types.ts} +2 -30
- package/src/lib/{codex-exporter-transcript.ts → codex-transcript-renderer.ts} +64 -28
- package/src/lib/conversation-api.ts +792 -0
- package/src/lib/conversation-data/adapter-helpers.ts +110 -0
- package/src/lib/conversation-data/antigravity-adapter.ts +148 -0
- package/src/lib/conversation-data/claude-code-adapter.ts +175 -0
- package/src/lib/conversation-data/codex-adapter.ts +245 -0
- package/src/lib/conversation-data/cursor-adapter.ts +171 -0
- package/src/lib/conversation-data/index.ts +311 -0
- package/src/lib/conversation-data/kiro-adapter.ts +140 -0
- package/src/lib/conversation-data/message-selector.ts +37 -0
- package/src/lib/conversation-data/opencode-adapter.ts +180 -0
- package/src/lib/conversation-data/path-match.ts +79 -0
- package/src/lib/conversation-data/qoder-adapter.ts +230 -0
- package/src/lib/conversation-data/types.ts +116 -0
- package/src/lib/cursor-db.ts +67 -21
- package/src/lib/cursor-exporter-types.ts +0 -19
- package/src/lib/qoder-acp-client.ts +268 -0
- package/src/lib/qoder-db.ts +1601 -0
- package/src/lib/qoder-exporter-types.ts +114 -0
- package/src/lib/qoder-transcript-phase.ts +41 -0
- package/src/lib/qoder-transcript.ts +112 -0
- package/apps/ui/dist/client/assets/_threadId-CAIeH5mq.js +0 -1
- package/apps/ui/dist/client/assets/analytics-DOy1b6Sh.js +0 -1
- package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DqySVO2K.js +0 -7
- package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-KAcXtNxI.js +0 -1
- package/apps/ui/dist/client/assets/antigravity-keychain-panel-B77qJz6f.js +0 -1
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-B3NM6gRH.js +0 -1
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +0 -1
- package/apps/ui/dist/client/assets/antigravity.index-DP9JC2P9.js +0 -1
- package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +0 -1
- package/apps/ui/dist/client/assets/badge-C3i4OKs8.js +0 -1
- package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +0 -1
- package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-8pQ55ci2.js +0 -1
- package/apps/ui/dist/client/assets/claude-code-sessions._sessionId-DVz5UmtU.js +0 -1
- package/apps/ui/dist/client/assets/claude-code._workspaceKey-BBKskSum.js +0 -1
- package/apps/ui/dist/client/assets/claude-code._workspaceKey-OkikMUFs.js +0 -1
- package/apps/ui/dist/client/assets/claude-code.index-Cwu76dbb.js +0 -1
- package/apps/ui/dist/client/assets/claude-code.index-D6eMd08t.js +0 -1
- package/apps/ui/dist/client/assets/createServerFn-B-KkwmHU.js +0 -3
- package/apps/ui/dist/client/assets/cursor-threads._composerId-CmBFclK8.js +0 -1
- package/apps/ui/dist/client/assets/cursor-threads._composerId-hBWlP1D-.js +0 -1
- package/apps/ui/dist/client/assets/cursor._workspaceKey-BFPkIRi-.js +0 -1
- package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +0 -1
- package/apps/ui/dist/client/assets/cursor.index-8y4o20kb.js +0 -2
- package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +0 -1
- package/apps/ui/dist/client/assets/data-table-Br78_dk3.js +0 -4
- package/apps/ui/dist/client/assets/delete-confirm-dialog-Bxs07u-j.js +0 -7
- package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +0 -1
- package/apps/ui/dist/client/assets/dist-BrJhN2A0.js +0 -5
- package/apps/ui/dist/client/assets/dist-Cmd3AIfD.js +0 -1
- package/apps/ui/dist/client/assets/dist-DvMS2965.js +0 -1
- package/apps/ui/dist/client/assets/download-Bf0QJKD3.js +0 -1
- package/apps/ui/dist/client/assets/dropdown-menu-D5cvPaZt.js +0 -1
- package/apps/ui/dist/client/assets/es2015-ad6040dw.js +0 -41
- package/apps/ui/dist/client/assets/export-dialog-Dr8d2MqD.js +0 -1
- package/apps/ui/dist/client/assets/formatters-BtqyrX_c.js +0 -1
- package/apps/ui/dist/client/assets/index-C-STgIH4.js +0 -166
- package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +0 -1
- package/apps/ui/dist/client/assets/kiro-sessions._sessionId-CKgfJ7GR.js +0 -1
- package/apps/ui/dist/client/assets/kiro-sessions._sessionId-zvIJHtQF.js +0 -1
- package/apps/ui/dist/client/assets/kiro._workspaceKey-DhVuJuZB.js +0 -1
- package/apps/ui/dist/client/assets/kiro._workspaceKey-QArsjkTY.js +0 -1
- package/apps/ui/dist/client/assets/kiro.index-C-fr4m7i.js +0 -1
- package/apps/ui/dist/client/assets/kiro.index-OYgAdtZd.js +0 -1
- package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +0 -1
- package/apps/ui/dist/client/assets/opencode-sessions._sessionId-DLjiTst-.js +0 -1
- package/apps/ui/dist/client/assets/opencode-sessions._sessionId-biBwrRbt.js +0 -8
- package/apps/ui/dist/client/assets/opencode._workspaceKey-C7OIzMOJ.js +0 -1
- package/apps/ui/dist/client/assets/opencode._workspaceKey-sBakX0oI.js +0 -1
- package/apps/ui/dist/client/assets/opencode.index-Bl_kNs9N.js +0 -1
- package/apps/ui/dist/client/assets/opencode.index-CN53bVmb.js +0 -1
- package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +0 -1
- package/apps/ui/dist/client/assets/preload-helper-B8fFrdxC.js +0 -1
- package/apps/ui/dist/client/assets/projects._project-D8WloxQN.js +0 -1
- package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +0 -1
- package/apps/ui/dist/client/assets/projects.index-5xRtuJdX.js +0 -3
- package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +0 -1
- package/apps/ui/dist/client/assets/react-dom-DL96Jor4.js +0 -1
- package/apps/ui/dist/client/assets/refresh-ccw-BgKjOiA6.js +0 -1
- package/apps/ui/dist/client/assets/reload-error-panel-AHqu0akK.js +0 -1
- package/apps/ui/dist/client/assets/routes-DnzF_9CX.js +0 -1
- package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +0 -1
- package/apps/ui/dist/client/assets/select-CYF6pF37.js +0 -1
- package/apps/ui/dist/client/assets/settings-Dx70jgP_.js +0 -1
- package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +0 -1
- package/apps/ui/dist/client/assets/styles-B7Zi9EFA.css +0 -1
- package/apps/ui/dist/client/assets/tabs-CmuhkT-c.js +0 -7
- package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +0 -2
- package/apps/ui/dist/client/assets/thread-transcript-stats-BUNz6u7F.js +0 -1
- package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +0 -1
- package/apps/ui/dist/client/assets/threads._threadId-BMRSFow3.js +0 -1
- package/apps/ui/dist/client/assets/useMutation-BSFult2i.js +0 -1
- package/apps/ui/dist/client/assets/useQuery-CjINKZf1.js +0 -1
- package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CQ8Jjs3B.js +0 -387
- package/apps/ui/dist/server/assets/_threadId-B6SrBR9E.js +0 -6
- package/apps/ui/dist/server/assets/analytics-CYP_LT5Y.js +0 -16
- package/apps/ui/dist/server/assets/analytics-CtpOMVMO.js +0 -146
- package/apps/ui/dist/server/assets/antigravity-conversation-state-HgzS302O.js +0 -16
- package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-BKOyL2T6.js +0 -613
- package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-D426O-64.js +0 -11
- package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-eS87Dx7g.js +0 -20
- package/apps/ui/dist/server/assets/antigravity-db-Bh8_U9uw.js +0 -580
- package/apps/ui/dist/server/assets/antigravity-keychain-DOiuHDwK.js +0 -126
- package/apps/ui/dist/server/assets/antigravity-keychain-panel-CC7FLmAK.js +0 -55
- package/apps/ui/dist/server/assets/antigravity-queries-CGrJO9Vr.js +0 -37
- package/apps/ui/dist/server/assets/antigravity-server-CHRjVFqN.js +0 -114
- package/apps/ui/dist/server/assets/antigravity._workspaceKey-3m_MzNFA.js +0 -11
- package/apps/ui/dist/server/assets/antigravity._workspaceKey-B0QeYUOh.js +0 -28
- package/apps/ui/dist/server/assets/antigravity._workspaceKey-C3kP-qyN.js +0 -210
- package/apps/ui/dist/server/assets/antigravity.index-CPCYkqCi.js +0 -104
- package/apps/ui/dist/server/assets/antigravity.index-DudTB3Tq.js +0 -11
- package/apps/ui/dist/server/assets/badge-EvdhKK_Z.js +0 -26
- package/apps/ui/dist/server/assets/button-CmTDnzOn.js +0 -46
- package/apps/ui/dist/server/assets/checkbox-C0hovF41.js +0 -19
- package/apps/ui/dist/server/assets/claude-code-db-Ik3VStKZ.js +0 -361
- package/apps/ui/dist/server/assets/claude-code-queries-Cgzi4K-e.js +0 -37
- package/apps/ui/dist/server/assets/claude-code-server-PfraClXS.js +0 -72
- package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-C55oe6zj.js +0 -18
- package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-D1RYYi3j.js +0 -473
- package/apps/ui/dist/server/assets/claude-code-sessions._sessionId-DSvPLEUL.js +0 -11
- package/apps/ui/dist/server/assets/claude-code-transcript-C-bxh3cS.js +0 -139
- package/apps/ui/dist/server/assets/claude-code-transcript-phase-DmUMc8VU.js +0 -10
- package/apps/ui/dist/server/assets/claude-code._workspaceKey-B5Xg_-tE.js +0 -28
- package/apps/ui/dist/server/assets/claude-code._workspaceKey-BPlzyXPa.js +0 -11
- package/apps/ui/dist/server/assets/claude-code._workspaceKey-DqDve2wl.js +0 -191
- package/apps/ui/dist/server/assets/claude-code.index-B7yYR7dD.js +0 -92
- package/apps/ui/dist/server/assets/claude-code.index-BUHThG1W.js +0 -11
- package/apps/ui/dist/server/assets/codex-queries-CtgeZ7VL.js +0 -99
- package/apps/ui/dist/server/assets/codex-server-CGXU4H8-.js +0 -2294
- package/apps/ui/dist/server/assets/concurrency-VXtYvlGh.js +0 -18
- package/apps/ui/dist/server/assets/createServerRpc-CF_DEwnm.js +0 -12
- package/apps/ui/dist/server/assets/createSsrRpc-C754NPki.js +0 -16
- package/apps/ui/dist/server/assets/cursor-db-CZnYy7aT.js +0 -830
- package/apps/ui/dist/server/assets/cursor-exporter-types-CI3goo-c.js +0 -34
- package/apps/ui/dist/server/assets/cursor-queries-NCIM0Nat.js +0 -67
- package/apps/ui/dist/server/assets/cursor-recovery-CXpO8KcD.js +0 -361
- package/apps/ui/dist/server/assets/cursor-server-DNu52A3K.js +0 -213
- package/apps/ui/dist/server/assets/cursor-threads._composerId-BB0Y_Mao.js +0 -11
- package/apps/ui/dist/server/assets/cursor-threads._composerId-Ckn6ItHI.js +0 -582
- package/apps/ui/dist/server/assets/cursor-threads._composerId-p9-ARAzc.js +0 -18
- package/apps/ui/dist/server/assets/cursor-transcript-B7tGnqtn.js +0 -125
- package/apps/ui/dist/server/assets/cursor._workspaceKey-CZuohIUL.js +0 -28
- package/apps/ui/dist/server/assets/cursor._workspaceKey-DPp5JSjy.js +0 -401
- package/apps/ui/dist/server/assets/cursor._workspaceKey-nmg3YIOQ.js +0 -11
- package/apps/ui/dist/server/assets/cursor.index-CcsX7DG0.js +0 -11
- package/apps/ui/dist/server/assets/cursor.index-DkWT-mxw.js +0 -189
- package/apps/ui/dist/server/assets/data-table-Cdct823O.js +0 -189
- package/apps/ui/dist/server/assets/delete-confirm-dialog-BcBNCxWB.js +0 -144
- package/apps/ui/dist/server/assets/download-DMmiy1xf.js +0 -92
- package/apps/ui/dist/server/assets/dropdown-menu-Dy_9t6TN.js +0 -36
- package/apps/ui/dist/server/assets/empty-plugin-adapters-B3lHh1La.js +0 -5
- package/apps/ui/dist/server/assets/export-dialog-D88ze9Gy.js +0 -240
- package/apps/ui/dist/server/assets/formatters-FJaGZgJk.js +0 -91
- package/apps/ui/dist/server/assets/kiro-db--fXrED_-.js +0 -552
- package/apps/ui/dist/server/assets/kiro-queries-CzNlM2ok.js +0 -37
- package/apps/ui/dist/server/assets/kiro-server-9WRxg2Au.js +0 -72
- package/apps/ui/dist/server/assets/kiro-sessions._sessionId-CRY2c7YO.js +0 -11
- package/apps/ui/dist/server/assets/kiro-sessions._sessionId-F1UlwxmR.js +0 -449
- package/apps/ui/dist/server/assets/kiro-sessions._sessionId-bvTulT7C.js +0 -18
- package/apps/ui/dist/server/assets/kiro-transcript-DoekQBaH.js +0 -112
- package/apps/ui/dist/server/assets/kiro-transcript-phase-CJG40nQg.js +0 -27
- package/apps/ui/dist/server/assets/kiro._workspaceKey-BDe9sQwo.js +0 -11
- package/apps/ui/dist/server/assets/kiro._workspaceKey-CJsjgNwO.js +0 -28
- package/apps/ui/dist/server/assets/kiro._workspaceKey-D_-4Qb7y.js +0 -193
- package/apps/ui/dist/server/assets/kiro.index-C__-UROk.js +0 -11
- package/apps/ui/dist/server/assets/kiro.index-CmTbqeYj.js +0 -93
- package/apps/ui/dist/server/assets/loading-panel-BGFnWseS.js +0 -27
- package/apps/ui/dist/server/assets/metric-card-ByEeLu0r.js +0 -23
- package/apps/ui/dist/server/assets/model-label-B1NWGc65.js +0 -13
- package/apps/ui/dist/server/assets/opencode-db-BM7KjOzc.js +0 -397
- package/apps/ui/dist/server/assets/opencode-queries-BeNYXnQv.js +0 -50
- package/apps/ui/dist/server/assets/opencode-server-BpQ_kRze.js +0 -72
- package/apps/ui/dist/server/assets/opencode-sessions._sessionId-CGQ-t0vD.js +0 -518
- package/apps/ui/dist/server/assets/opencode-sessions._sessionId-D8Q7in_Z.js +0 -18
- package/apps/ui/dist/server/assets/opencode-sessions._sessionId-DKOvi0lV.js +0 -11
- package/apps/ui/dist/server/assets/opencode-think-tags-CAoD-EcZ.js +0 -87
- package/apps/ui/dist/server/assets/opencode-transcript-BNTcGNym.js +0 -141
- package/apps/ui/dist/server/assets/opencode-transcript-phase-OqLkiQD0.js +0 -32
- package/apps/ui/dist/server/assets/opencode._workspaceKey-BdqcWHw1.js +0 -11
- package/apps/ui/dist/server/assets/opencode._workspaceKey-CfH96HTT.js +0 -28
- package/apps/ui/dist/server/assets/opencode._workspaceKey-DdbHPDrO.js +0 -207
- package/apps/ui/dist/server/assets/opencode.index-BbVzkJXP.js +0 -11
- package/apps/ui/dist/server/assets/opencode.index-Vh_Gq_1L.js +0 -93
- package/apps/ui/dist/server/assets/page-header-VNSaM3xd.js +0 -29
- package/apps/ui/dist/server/assets/path-transforms-DL2IwtYd.js +0 -31
- package/apps/ui/dist/server/assets/projects._project-4io5LO0E.js +0 -20
- package/apps/ui/dist/server/assets/projects._project-Bshqk7JA.js +0 -12
- package/apps/ui/dist/server/assets/projects._project-D6ZoGhJ8.js +0 -395
- package/apps/ui/dist/server/assets/projects.index-BLXOx5eL.js +0 -12
- package/apps/ui/dist/server/assets/projects.index-BkLiF2FF.js +0 -182
- package/apps/ui/dist/server/assets/projects.index-DesYXwfi.js +0 -14
- package/apps/ui/dist/server/assets/reload-error-panel-BJMxY3U1.js +0 -25
- package/apps/ui/dist/server/assets/route-search-ts4W9MJ9.js +0 -38
- package/apps/ui/dist/server/assets/router-Sac2DGk6.js +0 -518
- package/apps/ui/dist/server/assets/routes-Bsact1uB.js +0 -184
- package/apps/ui/dist/server/assets/routes-BzkJgq4W.js +0 -34
- package/apps/ui/dist/server/assets/select-GW76p-ld.js +0 -76
- package/apps/ui/dist/server/assets/settings-OayxIYQQ.js +0 -100
- package/apps/ui/dist/server/assets/settings-store-DpEJEQ7M.js +0 -52
- package/apps/ui/dist/server/assets/shared-DyhChtHf.js +0 -137
- package/apps/ui/dist/server/assets/source-session-export-server-DNutCawb.js +0 -38
- package/apps/ui/dist/server/assets/sqlite-error-LZDrnxdd.js +0 -13
- package/apps/ui/dist/server/assets/start-B_HFwkkk.js +0 -4
- package/apps/ui/dist/server/assets/tabs-DkaChNVg.js +0 -501
- package/apps/ui/dist/server/assets/text-filter-CGKxMCKt.js +0 -36
- package/apps/ui/dist/server/assets/thread-transcript-stats-Dh34mt2u.js +0 -45
- package/apps/ui/dist/server/assets/threads._threadId-BSSK4nkI.js +0 -26
- package/apps/ui/dist/server/assets/threads._threadId-BeXEc4Lo.js +0 -648
- package/apps/ui/dist/server/assets/threads._threadId-Ci0S4mKU.js +0 -18
- package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +0 -83
- package/apps/ui/dist/server/assets/utils-C_uf36nf.js +0 -8
- package/apps/ui/dist/server/server.js +0 -5895
- package/bin/codex-chats-claude.js +0 -5
- package/bin/codex-chats.js +0 -5
- package/bin/spiracha.js +0 -5
- package/src/export-chats.ts +0 -120
- package/src/export-claude.ts +0 -36
- package/src/export-cursor.ts +0 -244
- package/src/lib/claude-exporter.ts +0 -864
- package/src/lib/codex-exporter-cli.ts +0 -277
- package/src/lib/codex-exporter-db.ts +0 -319
- package/src/lib/codex-exporter.ts +0 -115
- package/src/lib/cursor-exporter.ts +0 -266
- package/src/lib/interactive-cli.ts +0 -433
- package/src/lib/native-open.ts +0 -54
- package/src/mcp-server.ts +0 -137
- package/src/spiracha.ts +0 -116
- package/src/ui-cli.ts +0 -310
- /package/apps/ui/{dist/client → public}/icon.svg +0 -0
- /package/apps/ui/{dist/client → public}/manifest.json +0 -0
- /package/apps/ui/{dist/client → public}/robots.txt +0 -0
|
@@ -2,8 +2,8 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { mkdir, mkdtemp, rm, stat } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { getThreadBrowseData } from './codex-browser-db';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
5
|
+
import type { CodexTranscriptRenderOptions } from './codex-thread-types';
|
|
6
|
+
import { renderCodexSessionFile, writeCodexSessionFileExport } from './codex-transcript-renderer';
|
|
7
7
|
import { applyPathTransforms, type PathDisplaySettings } from './path-transforms';
|
|
8
8
|
import { type ExportFormat, getPortablePathBasename } from './shared';
|
|
9
9
|
import { getExportMimeType, sanitizeExportFileName, zipExportDirectory, zipExportFile } from './ui-export-archive';
|
|
@@ -89,19 +89,12 @@ type RolloutSnapshot = {
|
|
|
89
89
|
sizeBytes: number;
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
const toDownloadOptions = (input: RenderCodexThreadDownloadInput):
|
|
92
|
+
const toDownloadOptions = (input: RenderCodexThreadDownloadInput): CodexTranscriptRenderOptions => {
|
|
93
93
|
return {
|
|
94
|
-
cwdFilter: null,
|
|
95
|
-
dbPath: input.dbPath,
|
|
96
|
-
flat: false,
|
|
97
94
|
includeCommentary: input.includeCommentary,
|
|
98
95
|
includeMetadata: input.includeMetadata,
|
|
99
96
|
includeTools: input.includeTools,
|
|
100
|
-
inputDir: '',
|
|
101
|
-
outputDir: '',
|
|
102
97
|
outputFormat: input.outputFormat,
|
|
103
|
-
projectFilter: null,
|
|
104
|
-
threadIds: [input.threadId],
|
|
105
98
|
};
|
|
106
99
|
};
|
|
107
100
|
|
|
@@ -214,7 +207,7 @@ export const renderCodexThreadDownload = async (
|
|
|
214
207
|
const savedPath = path.join(workspaceDir, `${exportBaseName}.${extension}`);
|
|
215
208
|
const zipPath = buildUniqueArchivePath(exportDir, exportBaseName);
|
|
216
209
|
try {
|
|
217
|
-
const saved = await
|
|
210
|
+
const saved = await writeCodexSessionFileExport(
|
|
218
211
|
{
|
|
219
212
|
fallbackReason: null,
|
|
220
213
|
outputRelativePath: fileName,
|
|
@@ -257,7 +250,7 @@ export const renderCodexThreadDownload = async (
|
|
|
257
250
|
};
|
|
258
251
|
}
|
|
259
252
|
|
|
260
|
-
const content = await
|
|
253
|
+
const content = await renderCodexSessionFile(
|
|
261
254
|
{
|
|
262
255
|
fallbackReason: null,
|
|
263
256
|
outputRelativePath: fileName,
|
|
@@ -349,7 +342,7 @@ export const renderCodexThreadsDownload = async (
|
|
|
349
342
|
});
|
|
350
343
|
}
|
|
351
344
|
|
|
352
|
-
const saved = await
|
|
345
|
+
const saved = await writeCodexSessionFileExport(
|
|
353
346
|
{
|
|
354
347
|
fallbackReason: null,
|
|
355
348
|
outputRelativePath: relativeFileName,
|
|
@@ -362,7 +355,6 @@ export const renderCodexThreadsDownload = async (
|
|
|
362
355
|
...input,
|
|
363
356
|
threadId: entry.thread.id,
|
|
364
357
|
}),
|
|
365
|
-
threadIds: [entry.thread.id],
|
|
366
358
|
},
|
|
367
359
|
savedPath,
|
|
368
360
|
transform,
|
|
@@ -2,31 +2,11 @@ import os from 'node:os';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import type { ExportFormat, JsonValue } from './shared';
|
|
4
4
|
|
|
5
|
-
export type
|
|
6
|
-
dbPath: string;
|
|
7
|
-
inputDir: string;
|
|
8
|
-
outputDir: string;
|
|
9
|
-
cwdFilter: string | null;
|
|
10
|
-
projectFilter: string | null;
|
|
11
|
-
threadIds: string[];
|
|
5
|
+
export type CodexTranscriptRenderOptions = {
|
|
12
6
|
includeMetadata: boolean;
|
|
13
7
|
includeCommentary: boolean;
|
|
14
8
|
includeTools: boolean;
|
|
15
9
|
outputFormat: ExportFormat;
|
|
16
|
-
flat: boolean;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export type CodexExportedFile = {
|
|
20
|
-
sourcePath: string;
|
|
21
|
-
outputPath: string;
|
|
22
|
-
threadId: string | null;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export type CodexExportRunResult = {
|
|
26
|
-
outputDir: string;
|
|
27
|
-
exportedCount: number;
|
|
28
|
-
files: CodexExportedFile[];
|
|
29
|
-
missingThreadIds: string[];
|
|
30
10
|
};
|
|
31
11
|
|
|
32
12
|
export type SessionMeta = {
|
|
@@ -98,7 +78,7 @@ export type ThreadRelations = {
|
|
|
98
78
|
childEdges: SpawnEdgeRow[];
|
|
99
79
|
};
|
|
100
80
|
|
|
101
|
-
export type
|
|
81
|
+
export type CodexTranscriptExportTarget = {
|
|
102
82
|
sessionFile: string;
|
|
103
83
|
outputRelativePath: string;
|
|
104
84
|
thread: ThreadRow | null;
|
|
@@ -106,13 +86,5 @@ export type ExportTarget = {
|
|
|
106
86
|
fallbackReason: string | null;
|
|
107
87
|
};
|
|
108
88
|
|
|
109
|
-
export type ThreadData = {
|
|
110
|
-
threadsById: Map<string, ThreadRow>;
|
|
111
|
-
parentByChildId: Map<string, SpawnEdgeRow>;
|
|
112
|
-
childEdgesByParentId: Map<string, SpawnEdgeRow[]>;
|
|
113
|
-
};
|
|
114
|
-
|
|
115
89
|
export const DEFAULT_CODEX_DIR = path.join(os.homedir(), '.codex');
|
|
116
90
|
export const DEFAULT_DB_PATH = path.join(DEFAULT_CODEX_DIR, 'state_5.sqlite');
|
|
117
|
-
export const DEFAULT_INPUT_DIR = path.join(DEFAULT_CODEX_DIR, 'sessions');
|
|
118
|
-
export const DEFAULT_OUTPUT_DIR = path.join(process.cwd(), 'exports');
|
|
@@ -2,8 +2,14 @@ import { createReadStream } from 'node:fs';
|
|
|
2
2
|
import { rm } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { finished } from 'node:stream/promises';
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import {
|
|
6
|
+
type CodexTranscriptExportTarget,
|
|
7
|
+
type CodexTranscriptRenderOptions,
|
|
8
|
+
DEFAULT_CODEX_DIR,
|
|
9
|
+
type MessageRecord,
|
|
10
|
+
type SessionMeta,
|
|
11
|
+
type ToolRecord,
|
|
12
|
+
} from './codex-thread-types';
|
|
7
13
|
import {
|
|
8
14
|
asObject,
|
|
9
15
|
asString,
|
|
@@ -22,7 +28,10 @@ import {
|
|
|
22
28
|
renderSection,
|
|
23
29
|
} from './shared';
|
|
24
30
|
|
|
25
|
-
export const
|
|
31
|
+
export const renderCodexSessionFile = async (
|
|
32
|
+
target: CodexTranscriptExportTarget,
|
|
33
|
+
options: CodexTranscriptRenderOptions,
|
|
34
|
+
): Promise<string | null> => {
|
|
26
35
|
let transcriptState: CodexTranscriptState;
|
|
27
36
|
|
|
28
37
|
try {
|
|
@@ -32,10 +41,6 @@ export const convertSessionFile = async (target: ExportTarget, options: CodexCli
|
|
|
32
41
|
throw new Error(`Failed to read Codex transcript ${target.sessionFile}: ${message}`);
|
|
33
42
|
}
|
|
34
43
|
|
|
35
|
-
if (!matchesFilters(target.thread?.cwd ?? transcriptState.sessionMeta.cwd ?? null, options)) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
44
|
if (transcriptState.sections.length === 0) {
|
|
40
45
|
return null;
|
|
41
46
|
}
|
|
@@ -57,9 +62,9 @@ export const convertSessionFile = async (target: ExportTarget, options: CodexCli
|
|
|
57
62
|
|
|
58
63
|
type TranscriptTextTransform = (text: string) => string;
|
|
59
64
|
|
|
60
|
-
export const
|
|
61
|
-
target:
|
|
62
|
-
options:
|
|
65
|
+
export const writeCodexSessionFileExport = async (
|
|
66
|
+
target: CodexTranscriptExportTarget,
|
|
67
|
+
options: CodexTranscriptRenderOptions,
|
|
63
68
|
outputPath: string,
|
|
64
69
|
transform: TranscriptTextTransform = (text) => text,
|
|
65
70
|
): Promise<boolean> => {
|
|
@@ -87,7 +92,7 @@ export const writeSessionFileExport = async (
|
|
|
87
92
|
await finalizeExportWriteStream(transcriptStream);
|
|
88
93
|
transcriptStream = null;
|
|
89
94
|
|
|
90
|
-
if (!
|
|
95
|
+
if (!wroteSection) {
|
|
91
96
|
return false;
|
|
92
97
|
}
|
|
93
98
|
|
|
@@ -127,7 +132,7 @@ type CodexTranscriptState = {
|
|
|
127
132
|
|
|
128
133
|
const collectCodexTranscript = async (
|
|
129
134
|
sessionFile: string,
|
|
130
|
-
options:
|
|
135
|
+
options: CodexTranscriptRenderOptions,
|
|
131
136
|
assistantModel: string | null = null,
|
|
132
137
|
): Promise<CodexTranscriptState> => {
|
|
133
138
|
const state: CodexTranscriptState = {
|
|
@@ -147,7 +152,7 @@ const getSectionSeparator = () => '\n';
|
|
|
147
152
|
|
|
148
153
|
const processCodexTranscriptRecord = (
|
|
149
154
|
parsed: Record<string, JsonValue>,
|
|
150
|
-
options:
|
|
155
|
+
options: CodexTranscriptRenderOptions,
|
|
151
156
|
state: CodexTranscriptState,
|
|
152
157
|
) => {
|
|
153
158
|
captureSessionMeta(parsed, state.sessionMeta);
|
|
@@ -159,7 +164,7 @@ const processCodexTranscriptRecord = (
|
|
|
159
164
|
|
|
160
165
|
const renderCodexTranscriptRecord = (
|
|
161
166
|
parsed: Record<string, JsonValue>,
|
|
162
|
-
options:
|
|
167
|
+
options: CodexTranscriptRenderOptions,
|
|
163
168
|
state: CodexTranscriptState,
|
|
164
169
|
) => {
|
|
165
170
|
const message = extractMessageRecord(parsed);
|
|
@@ -179,16 +184,24 @@ const renderCodexTranscriptRecord = (
|
|
|
179
184
|
return renderToolBlock(tool, options.outputFormat);
|
|
180
185
|
};
|
|
181
186
|
|
|
182
|
-
const processCodexMessageRecord = (
|
|
187
|
+
const processCodexMessageRecord = (
|
|
188
|
+
message: MessageRecord,
|
|
189
|
+
options: CodexTranscriptRenderOptions,
|
|
190
|
+
state: CodexTranscriptState,
|
|
191
|
+
) => {
|
|
183
192
|
return renderMessageBlock(message, options.outputFormat, state.assistantModel, options.includeCommentary);
|
|
184
193
|
};
|
|
185
194
|
|
|
186
|
-
const buildStreamExportPrefix = (
|
|
195
|
+
const buildStreamExportPrefix = (
|
|
196
|
+
target: CodexTranscriptExportTarget,
|
|
197
|
+
sessionMeta: SessionMeta,
|
|
198
|
+
options: CodexTranscriptRenderOptions,
|
|
199
|
+
) => {
|
|
200
|
+
const title = getTitle(target, sessionMeta);
|
|
187
201
|
if (!options.includeMetadata) {
|
|
188
|
-
return
|
|
202
|
+
return `${renderDocumentTitle(title, options.outputFormat)}\n`;
|
|
189
203
|
}
|
|
190
204
|
|
|
191
|
-
const title = getTitle(target, sessionMeta);
|
|
192
205
|
const parts = [
|
|
193
206
|
renderDocumentTitle(title, options.outputFormat),
|
|
194
207
|
'',
|
|
@@ -253,7 +266,7 @@ export const parseExecCommandArguments = (argumentsText?: string) => {
|
|
|
253
266
|
}
|
|
254
267
|
};
|
|
255
268
|
|
|
256
|
-
const getTitle = (target:
|
|
269
|
+
const getTitle = (target: CodexTranscriptExportTarget, sessionMeta: SessionMeta): string => {
|
|
257
270
|
if (target.thread?.title) {
|
|
258
271
|
return cleanInlineTitle(target.thread.title);
|
|
259
272
|
}
|
|
@@ -261,10 +274,21 @@ const getTitle = (target: ExportTarget, sessionMeta: SessionMeta): string => {
|
|
|
261
274
|
return sessionMeta.id ?? path.basename(target.sessionFile, '.jsonl');
|
|
262
275
|
};
|
|
263
276
|
|
|
277
|
+
const toCodexRelativePath = (targetPath: string): string => {
|
|
278
|
+
const codexRoot = path.resolve(DEFAULT_CODEX_DIR);
|
|
279
|
+
const normalized = path.resolve(targetPath);
|
|
280
|
+
|
|
281
|
+
if (normalized.startsWith(`${codexRoot}${path.sep}`)) {
|
|
282
|
+
return path.relative(codexRoot, normalized);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
return normalized;
|
|
286
|
+
};
|
|
287
|
+
|
|
264
288
|
const buildMetadataEntries = (
|
|
265
|
-
target:
|
|
289
|
+
target: CodexTranscriptExportTarget,
|
|
266
290
|
sessionMeta: SessionMeta,
|
|
267
|
-
options:
|
|
291
|
+
options: CodexTranscriptRenderOptions,
|
|
268
292
|
): MetadataEntry[] => {
|
|
269
293
|
return [
|
|
270
294
|
...buildCodexExportIdentityMetadata(target, sessionMeta),
|
|
@@ -275,7 +299,10 @@ const buildMetadataEntries = (
|
|
|
275
299
|
];
|
|
276
300
|
};
|
|
277
301
|
|
|
278
|
-
const buildCodexExportIdentityMetadata = (
|
|
302
|
+
const buildCodexExportIdentityMetadata = (
|
|
303
|
+
target: CodexTranscriptExportTarget,
|
|
304
|
+
sessionMeta: SessionMeta,
|
|
305
|
+
): MetadataEntry[] => {
|
|
279
306
|
const thread = target.thread;
|
|
280
307
|
|
|
281
308
|
return [
|
|
@@ -289,7 +316,10 @@ const buildCodexExportIdentityMetadata = (target: ExportTarget, sessionMeta: Ses
|
|
|
289
316
|
];
|
|
290
317
|
};
|
|
291
318
|
|
|
292
|
-
const buildCodexExportPathMetadata = (
|
|
319
|
+
const buildCodexExportPathMetadata = (
|
|
320
|
+
target: CodexTranscriptExportTarget,
|
|
321
|
+
options: CodexTranscriptRenderOptions,
|
|
322
|
+
): MetadataEntry[] => {
|
|
293
323
|
const relativeOutputPath = target.outputRelativePath;
|
|
294
324
|
|
|
295
325
|
return [
|
|
@@ -306,7 +336,7 @@ const buildCodexExportPathMetadata = (target: ExportTarget, options: CodexCliOpt
|
|
|
306
336
|
];
|
|
307
337
|
};
|
|
308
338
|
|
|
309
|
-
const buildCodexRelationMetadata = (target:
|
|
339
|
+
const buildCodexRelationMetadata = (target: CodexTranscriptExportTarget): MetadataEntry[] => {
|
|
310
340
|
const childThreadIds = target.relations.childEdges.map((edge) => edge.child_thread_id);
|
|
311
341
|
const childEdges = target.relations.childEdges.map((edge) => ({
|
|
312
342
|
child_thread_id: edge.child_thread_id,
|
|
@@ -320,14 +350,17 @@ const buildCodexRelationMetadata = (target: ExportTarget): MetadataEntry[] => {
|
|
|
320
350
|
];
|
|
321
351
|
};
|
|
322
352
|
|
|
323
|
-
const buildCodexThreadMetadata = (target:
|
|
353
|
+
const buildCodexThreadMetadata = (target: CodexTranscriptExportTarget, sessionMeta: SessionMeta): MetadataEntry[] => {
|
|
324
354
|
return [
|
|
325
355
|
...buildCodexThreadTimingMetadata(target, sessionMeta),
|
|
326
356
|
...buildCodexThreadIdentityMetadata(target, sessionMeta),
|
|
327
357
|
];
|
|
328
358
|
};
|
|
329
359
|
|
|
330
|
-
const buildCodexThreadTimingMetadata = (
|
|
360
|
+
const buildCodexThreadTimingMetadata = (
|
|
361
|
+
target: CodexTranscriptExportTarget,
|
|
362
|
+
sessionMeta: SessionMeta,
|
|
363
|
+
): MetadataEntry[] => {
|
|
331
364
|
const thread = target.thread;
|
|
332
365
|
|
|
333
366
|
return [
|
|
@@ -341,7 +374,10 @@ const buildCodexThreadTimingMetadata = (target: ExportTarget, sessionMeta: Sessi
|
|
|
341
374
|
];
|
|
342
375
|
};
|
|
343
376
|
|
|
344
|
-
const buildCodexThreadIdentityMetadata = (
|
|
377
|
+
const buildCodexThreadIdentityMetadata = (
|
|
378
|
+
target: CodexTranscriptExportTarget,
|
|
379
|
+
sessionMeta: SessionMeta,
|
|
380
|
+
): MetadataEntry[] => {
|
|
345
381
|
const thread = target.thread;
|
|
346
382
|
|
|
347
383
|
return [
|
|
@@ -367,7 +403,7 @@ const buildCodexThreadIdentityMetadata = (target: ExportTarget, sessionMeta: Ses
|
|
|
367
403
|
];
|
|
368
404
|
};
|
|
369
405
|
|
|
370
|
-
const buildCodexAgentMetadata = (target:
|
|
406
|
+
const buildCodexAgentMetadata = (target: CodexTranscriptExportTarget): MetadataEntry[] => {
|
|
371
407
|
const thread = target.thread;
|
|
372
408
|
|
|
373
409
|
return [
|