spiracha 1.3.3 → 1.4.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 +7 -1
- package/README.md +6 -0
- package/apps/ui/AGENTS.md +8 -0
- package/apps/ui/README.md +10 -3
- package/apps/ui/dist/client/assets/analytics-DK2jdvmI.js +1 -0
- package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DmD0sN8X.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-BRHVjFAM.js +1 -0
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +1 -0
- package/apps/ui/dist/client/assets/antigravity._workspaceKey-CGV7amas.js +1 -0
- package/apps/ui/dist/client/assets/antigravity.index-DEEkjlZa.js +1 -0
- package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +1 -0
- package/apps/ui/dist/client/assets/badge-DfWvPfKF.js +1 -0
- package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +1 -0
- package/apps/ui/dist/client/assets/createServerFn-CgRRVpBH.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-Ti2gTm63.js +1 -0
- package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +1 -0
- package/apps/ui/dist/client/assets/cursor._workspaceKey-DzD_c6j9.js +1 -0
- package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +1 -0
- package/apps/ui/dist/client/assets/cursor.index-PkCFVcl4.js +2 -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-BHRmyLHr.js +11 -0
- package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +1 -0
- package/apps/ui/dist/client/assets/dist-BhZOxAPP.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-Dy5cLzTy.js +1 -0
- package/apps/ui/dist/client/assets/es2015-BkCWttyM.js +41 -0
- package/apps/ui/dist/client/assets/export-dialog-C86SYHJn.js +1 -0
- package/apps/ui/dist/client/assets/formatters-BM9kB7ed.js +1 -0
- package/apps/ui/dist/client/assets/index-CPvAP-jk.js +149 -0
- package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +1 -0
- package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +1 -0
- package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +1 -0
- package/apps/ui/dist/client/assets/projects._project-Ckf6muWZ.js +1 -0
- package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +1 -0
- package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +1 -0
- package/apps/ui/dist/client/assets/projects.index-V5ibNZII.js +3 -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-Df2tgpyd.js +1 -0
- package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +1 -0
- package/apps/ui/dist/client/assets/select-Bf2GwfPR.js +1 -0
- package/apps/ui/dist/client/assets/settings-5VQIzME0.js +1 -0
- package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +1 -0
- package/apps/ui/dist/client/assets/styles-BhRkXgwB.css +1 -0
- package/apps/ui/dist/client/assets/tabs-OO4VU5KR.js +7 -0
- package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +2 -0
- package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +1 -0
- package/apps/ui/dist/client/assets/threads._threadId-BgDhFj2I.js +1 -0
- package/apps/ui/dist/client/assets/useMutation-CC_B7uy5.js +1 -0
- package/apps/ui/dist/client/assets/useQuery-C5By6WKU.js +1 -0
- package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CRW2kqj0.js +232 -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-BtexWY-K.js +613 -0
- package/apps/ui/dist/server/assets/{antigravity-conversations._conversationId-C9z4AeN-.js → antigravity-conversations._conversationId-zMrR6v6R.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/{codex-queries-ev_mRUzr.js → codex-queries-CtgeZ7VL.js} +15 -13
- package/apps/ui/dist/server/assets/{codex-server-DIYFLozB.js → codex-server-CNXSJuc2.js} +104 -119
- 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-cYZEU3WQ.js} +194 -7
- 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-nq-kR62j.js} +1 -1
- package/apps/ui/dist/server/assets/{cursor-server-nPzojHN3.js → cursor-server-C3q7hrp-.js} +70 -41
- package/apps/ui/dist/server/assets/{cursor-threads._composerId-B3qcsh9C.js → cursor-threads._composerId-BPJFWfJj.js} +2 -2
- package/apps/ui/dist/server/assets/cursor-threads._composerId-BkMMTQ3v.js +582 -0
- package/apps/ui/dist/server/assets/{cursor._workspaceKey-BL_CQyHQ.js → cursor._workspaceKey-C5PdTaKB.js} +2 -2
- package/apps/ui/dist/server/assets/{cursor._workspaceKey-BhQeepXB.js → cursor._workspaceKey-Ckj7apKI.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-BItjWgkZ.js} +53 -11
- package/apps/ui/dist/server/assets/{projects._project-CqqUFr4l.js → projects._project-Bpbc3C-L.js} +5 -3
- package/apps/ui/dist/server/assets/{projects._project-DahGqNYS.js → projects._project-CvZho6EQ.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-K0m7dK4T.js → router-6m-ihwqA.js} +78 -62
- 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/start-CI_0bSiY.js +4 -0
- package/apps/ui/dist/server/assets/tabs-CGA13IZM.js +502 -0
- package/apps/ui/dist/server/assets/{threads._threadId-BLCkGW--.js → threads._threadId-Bs0yuqO9.js} +2 -2
- package/apps/ui/dist/server/assets/threads._threadId-D2GYkVn6.js +639 -0
- package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +83 -0
- package/apps/ui/dist/server/server.js +93 -83
- package/package.json +9 -9
- package/src/lib/antigravity-db.ts +20 -13
- package/src/lib/codex-analytics.ts +118 -18
- package/src/lib/codex-browser-db.ts +1 -25
- package/src/lib/codex-browser-export.ts +9 -69
- package/src/lib/cursor-db.ts +318 -7
- package/src/lib/cursor-exporter.ts +2 -2
- package/src/lib/ui-cache.ts +14 -1
- 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/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
package/AGENTS.md
CHANGED
|
@@ -91,7 +91,9 @@ Other important files:
|
|
|
91
91
|
- `src/lib/codex-thread-parser.ts`
|
|
92
92
|
- structured Codex event parsing used by analytics and the UI
|
|
93
93
|
- `src/lib/codex-analytics.ts`
|
|
94
|
-
- token/tool analytics derived from thread rows plus
|
|
94
|
+
- token/tool analytics derived from thread rows plus bounded transcript parsing and DB-row metadata cache keys
|
|
95
|
+
- `src/lib/concurrency.ts`
|
|
96
|
+
- shared bounded-concurrency helper for large file/database workloads
|
|
95
97
|
- `src/lib/ui-cache.ts`
|
|
96
98
|
- temporary cache under `os.tmpdir()` for transcript and analytics lookups
|
|
97
99
|
- `src/mcp-server.ts`
|
|
@@ -111,6 +113,7 @@ Current tests cover:
|
|
|
111
113
|
- structured Codex transcript parsing
|
|
112
114
|
- project/thread browsing and destructive DB flows
|
|
113
115
|
- analytics aggregation
|
|
116
|
+
- bounded concurrency helpers and analytics cache-key behavior
|
|
114
117
|
- browser-export rendering helpers
|
|
115
118
|
- Codex CLI parsing helpers
|
|
116
119
|
- interactive-mode inference helpers
|
|
@@ -126,6 +129,7 @@ When changing risky areas:
|
|
|
126
129
|
- structured transcript parsing/UI event extraction: update/add tests in `src/lib/codex-thread-parser.test.ts`
|
|
127
130
|
- DB/filter/target logic: prefer focused unit tests against `src/lib/codex-exporter-db.ts`
|
|
128
131
|
- project/thread browsing, delete semantics, and analytics: update/add tests in `src/lib/codex-browser-db.test.ts` and `src/lib/codex-analytics.test.ts`
|
|
132
|
+
- shared concurrency behavior: update/add tests in `src/lib/concurrency.test.ts`
|
|
129
133
|
- MCP contract changes: update `src/mcp-server.test.ts`
|
|
130
134
|
- UI component behavior: update/add Vitest files under `apps/ui/src/**/*.vitest.tsx`
|
|
131
135
|
|
|
@@ -199,4 +203,6 @@ rtk bunx spiracha cursor recover --workspace summer --apply
|
|
|
199
203
|
- `txt` output is intentionally real plain text, not Markdown with a `.txt` extension.
|
|
200
204
|
- The published package is Bun-first. `bin` entrypoints target Bun shebang execution.
|
|
201
205
|
- The UI package runs `vite` through `bun --bun ...` because its server functions depend on Bun-only modules like `bun:sqlite`.
|
|
206
|
+
- Keep UI runtime dependency versions aligned with the root package when both package manifests list the same TanStack/React runtime package; mismatched server-function manifests have broken packaged production builds.
|
|
207
|
+
- TanStack Start server functions should use `.validator(...)`, not deprecated `.inputValidator(...)`.
|
|
202
208
|
- `apps/ui/src/routeTree.gen.ts` is generated and should not be manually edited or lint-formatted.
|
package/README.md
CHANGED
|
@@ -121,6 +121,10 @@ The UI currently includes:
|
|
|
121
121
|
- an Antigravity workspace inventory, conversation listing, and standalone conversation detail flow
|
|
122
122
|
- a Codex dashboard, Codex thread detail view, and Codex analytics page
|
|
123
123
|
|
|
124
|
+
Codex inventory search and analytics project filters are stored in route search params, so filtered views can be bookmarked or reloaded. `/projects` and `/projects/$project` use `q`, and `/analytics` uses `project`.
|
|
125
|
+
|
|
126
|
+
Analytics cache keys are derived from Codex DB row metadata instead of statting every rollout file. This avoids large per-rollout stat storms on big histories and lets cached analytics resolve without touching transcript files. The hard tradeoff is that manual JSONL edits outside Codex do not invalidate analytics unless the corresponding DB row metadata changes or the temp UI cache is cleared. Transcript analytics parsing uses a bounded worker pool; tune it with `SPIRACHA_ANALYTICS_TRANSCRIPT_CONCURRENCY` when benchmarking large datasets.
|
|
127
|
+
|
|
124
128
|
The thread detail page also supports a direct UUID shortcut route. Pasting `http://localhost:3000/<thread-id>` redirects to `/threads/<thread-id>`.
|
|
125
129
|
|
|
126
130
|
Notable UI routes:
|
|
@@ -265,6 +269,7 @@ This builds the app, packs a fresh tarball in a clean temp directory, launches `
|
|
|
265
269
|
- `src/lib/codex-exporter-*.ts`: Codex exporter modules
|
|
266
270
|
- `src/lib/codex-browser-*.ts`: shared browser/UI data, analytics, and export helpers
|
|
267
271
|
- `src/lib/codex-thread-*.ts`: structured transcript parsing and caching helpers
|
|
272
|
+
- `src/lib/concurrency.ts`: shared bounded-concurrency helper for large transcript and DB workloads
|
|
268
273
|
- `src/lib/claude-exporter.ts`: Claude exporter implementation
|
|
269
274
|
- `src/lib/cursor-*.ts`: Cursor discovery, transcript rendering, recovery, and CLI helpers
|
|
270
275
|
- `plugins/codex-chats-export/`: local Codex plugin bundle
|
|
@@ -278,6 +283,7 @@ The test suite includes:
|
|
|
278
283
|
- Antigravity discovery and export coverage
|
|
279
284
|
- Codex CLI helper tests
|
|
280
285
|
- transcript rendering helper tests
|
|
286
|
+
- route search parsing and bounded concurrency tests
|
|
281
287
|
- MCP stdio protocol round-trip tests
|
|
282
288
|
- local packaging should be smoke-tested with a packed tarball before publishing
|
|
283
289
|
|
package/apps/ui/AGENTS.md
CHANGED
|
@@ -17,6 +17,7 @@ rtk bun run coverage
|
|
|
17
17
|
Important:
|
|
18
18
|
|
|
19
19
|
- `dev`, `build`, and `preview` run through `bun --bun ...` on purpose. Do not switch them back to plain `vite` or Node execution, because the server functions import Bun-only modules such as `bun:sqlite`.
|
|
20
|
+
- Keep TanStack/React runtime dependency versions aligned with the root package when both manifests list the same package. Version drift can break packaged server-function manifests in production.
|
|
20
21
|
|
|
21
22
|
## Routing
|
|
22
23
|
|
|
@@ -24,6 +25,8 @@ Important:
|
|
|
24
25
|
- `src/routeTree.gen.ts` is generated. Do not edit it manually.
|
|
25
26
|
- If route typing behaves strangely, delete `src/routeTree.gen.ts` and rebuild with `rtk bun run build` to regenerate it cleanly.
|
|
26
27
|
- The UI supports both `/threads/$threadId` and a root shortcut route `/$threadId` that redirects straight to the thread detail page.
|
|
28
|
+
- Codex project inventory and project-thread search use route search params. `/projects` and `/projects/$project` use `q`.
|
|
29
|
+
- Codex analytics uses the `project` route search param so filtered analytics links can be bookmarked and reloaded.
|
|
27
30
|
- Cursor thread detail lives at `/cursor-threads/$composerId`.
|
|
28
31
|
- Antigravity conversation detail lives at `/antigravity-conversations/$conversationId`.
|
|
29
32
|
- Keep the Codex, Cursor, and Antigravity list/detail pages aligned around the same table-driven index/detail pattern when adding new source integrations.
|
|
@@ -36,6 +39,7 @@ The UI depends on root-package helpers via `@spiracha/*` path aliases:
|
|
|
36
39
|
- `@spiracha/lib/codex-browser-export`
|
|
37
40
|
- `@spiracha/lib/codex-thread-cache`
|
|
38
41
|
- `@spiracha/lib/codex-analytics`
|
|
42
|
+
- `@spiracha/lib/concurrency`
|
|
39
43
|
- `@spiracha/lib/cursor-db`
|
|
40
44
|
- `@spiracha/lib/cursor-recovery`
|
|
41
45
|
- `@spiracha/lib/cursor-transcript`
|
|
@@ -50,6 +54,7 @@ Use the existing layers consistently:
|
|
|
50
54
|
|
|
51
55
|
- TanStack Start server functions in `src/lib/codex-server.ts`, `src/lib/cursor-server.ts`, and `src/lib/antigravity-server.ts`
|
|
52
56
|
- Use for any browser-triggered read/write that needs Bun-only modules, DB access, filesystem access, Keychain access, or shared root-package helpers.
|
|
57
|
+
- Use `.validator(...)` for input validation. Do not add new `.inputValidator(...)` calls.
|
|
53
58
|
- TanStack Query query options in `src/lib/codex-queries.ts`, `src/lib/cursor-queries.ts`, and `src/lib/antigravity-queries.ts`
|
|
54
59
|
- Use for client-side fetching, caching, retries, and invalidation of server-function results.
|
|
55
60
|
- Shared root-package helpers under `@spiracha/lib/*`
|
|
@@ -63,9 +68,12 @@ If a feature needs new source data, prefer:
|
|
|
63
68
|
3. TanStack Query wiring in the matching `*-queries.ts`
|
|
64
69
|
4. client component consumption
|
|
65
70
|
|
|
71
|
+
For URL-backed route state, use `src/lib/route-search.ts` instead of ad hoc parsing in route files. Keep search params minimal and stable because they are user-facing links.
|
|
72
|
+
|
|
66
73
|
## Testing
|
|
67
74
|
|
|
68
75
|
- UI component tests live under `src/**/*.vitest.tsx`.
|
|
76
|
+
- Route search parsing tests live next to the helper in `src/lib/route-search.vitest.ts`.
|
|
69
77
|
- The root package wraps this Vitest suite from `src/ui-package.test.ts` so `rtk bun test` at the repo root exercises both the Bun suite and the UI suite.
|
|
70
78
|
|
|
71
79
|
## Design
|
package/apps/ui/README.md
CHANGED
|
@@ -26,6 +26,7 @@ The browser UI for browsing local Codex, Cursor, and Antigravity history, inspec
|
|
|
26
26
|
- shows dedicated Antigravity conversation detail pages with shared metadata and export actions
|
|
27
27
|
- unlocks Antigravity transcript export through macOS Keychain and exports conversations or artifacts as Markdown
|
|
28
28
|
- shows dashboard and analytics summaries, including Codex token totals and tool-call frequency
|
|
29
|
+
- keeps Codex inventory search and analytics project filters in URL search params for reloadable and shareable views
|
|
29
30
|
|
|
30
31
|
## Commands
|
|
31
32
|
|
|
@@ -54,17 +55,22 @@ Runtime configuration is intentionally small:
|
|
|
54
55
|
- `SPIRACHA_UI_EXPORT_DIR`
|
|
55
56
|
- Optional directory for temporary browser-download artifacts such as zipped thread exports.
|
|
56
57
|
- If unset, Spiracha uses an OS temp directory under `spiracha-ui-exports`.
|
|
58
|
+
- `SPIRACHA_ANALYTICS_TRANSCRIPT_CONCURRENCY`
|
|
59
|
+
- Optional positive integer for Codex analytics transcript parsing concurrency.
|
|
60
|
+
- Defaults to `8`.
|
|
57
61
|
|
|
58
62
|
Export artifacts are served through the UI as attachment downloads from `/__exports/*`. The packaged `spiracha ui` launcher and the local dev server both use the same export-directory contract.
|
|
59
63
|
|
|
64
|
+
Codex analytics cache keys are based on Codex DB row metadata instead of statting every rollout file before cache hits. That keeps large histories responsive. The tradeoff is that manual JSONL edits outside Codex do not invalidate analytics unless DB row metadata changes or the temporary UI cache is cleared.
|
|
65
|
+
|
|
60
66
|
## Routes
|
|
61
67
|
|
|
62
68
|
- `/`
|
|
63
69
|
- dashboard
|
|
64
70
|
- `/projects`
|
|
65
|
-
- Codex inventory and search
|
|
71
|
+
- Codex inventory and search, with `q` as the route search param
|
|
66
72
|
- `/projects/$project`
|
|
67
|
-
- Codex project thread listing
|
|
73
|
+
- Codex project thread listing, with `q` as the route search param
|
|
68
74
|
- `/cursor`
|
|
69
75
|
- Cursor workspace inventory and search
|
|
70
76
|
- `/cursor/$workspaceKey`
|
|
@@ -82,9 +88,10 @@ Export artifacts are served through the UI as attachment downloads from `/__expo
|
|
|
82
88
|
- `/$threadId`
|
|
83
89
|
- shortcut redirect to the thread detail page for pasted Codex thread UUIDs
|
|
84
90
|
- `/analytics`
|
|
85
|
-
- Codex token and tool-call analytics with project
|
|
91
|
+
- Codex token and tool-call analytics, with `project` as the route search param
|
|
86
92
|
|
|
87
93
|
## Testing
|
|
88
94
|
|
|
89
95
|
- UI component tests live under `src/**/*.vitest.tsx`.
|
|
96
|
+
- Route search parsing tests live in `src/lib/route-search.vitest.ts`.
|
|
90
97
|
- The repo root wraps this Vitest suite from `src/ui-package.test.ts`, so `rtk bun test` at the root covers both the Bun tests and the UI tests.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{c as r,o as i,s as a}from"./formatters-BM9kB7ed.js";import{n as o,t as s}from"./data-table-Br78_dk3.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-Bf2GwfPR.js";import{A as p,F as m,M as h,N as g,R as _,ct as v,j as y}from"./index-CPvAP-jk.js";import{t as b}from"./metric-card-Dplm0ZiM.js";import{t as x}from"./page-header-Cwa3p6Tl.js";var S=e(n()),C=t(),w=o(),T=[w.accessor(`name`,{cell:e=>(0,C.jsx)(`span`,{className:`font-mono text-sm`,children:e.getValue()}),header:`Tool`}),w.accessor(`count`,{cell:e=>(0,C.jsx)(`span`,{className:`font-mono text-sm`,children:i(e.getValue())}),header:`Calls`})],E=o(),D=[E.accessor(`model`,{cell:e=>(0,C.jsx)(`span`,{className:`font-mono text-sm`,children:e.getValue()}),header:`Model`}),E.accessor(`threadCount`,{cell:e=>(0,C.jsx)(`span`,{className:`font-mono text-sm`,children:i(e.getValue())}),header:`Threads`}),E.accessor(`totalTokens`,{cell:e=>(0,C.jsx)(`span`,{className:`font-mono text-sm`,children:a(e.getValue())}),header:`Tokens`})];function O(){let e=v({from:p.fullPath}),t=r(_()).data,n=p.useSearch().project??null,o=r(m(n)).data;return(0,C.jsxs)(`div`,{className:`space-y-6`,children:[(0,C.jsx)(x,{actions:(0,C.jsxs)(f,{value:h(n),onValueChange:t=>{(0,S.startTransition)(()=>{e({replace:!0,search:e=>g(e,y(t))})})},children:[(0,C.jsx)(l,{className:`h-10 w-full rounded-full border-[var(--border)] bg-[var(--panel)] sm:w-[15rem]`,children:(0,C.jsx)(c,{placeholder:`Filter by project`})}),(0,C.jsxs)(u,{children:[(0,C.jsx)(d,{value:`__all__`,children:`All projects`}),t.map(e=>(0,C.jsx)(d,{value:h(e.name),children:e.name},e.name))]})]}),eyebrow:`Analytics`,subtitle:`Inspect token load, tool-call distribution, and project-scoped usage patterns to understand where Codex is spending effort.`,title:`Analytics`}),(0,C.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-5`,children:[(0,C.jsx)(b,{label:`Threads`,value:i(o.summary.totalThreads)}),(0,C.jsx)(b,{label:`Projects`,value:i(o.summary.totalProjects)}),(0,C.jsx)(b,{label:`Tokens`,value:a(o.summary.totalTokens)}),(0,C.jsx)(b,{label:`Average per thread`,value:a(Math.round(o.summary.averageTokensPerThread))}),(0,C.jsx)(b,{label:`Web search threads`,value:i(o.summary.threadsWithWebSearch)})]}),(0,C.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,C.jsxs)(`section`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{className:`font-semibold text-sm`,children:`Most frequent tool calls`}),(0,C.jsx)(`p`,{className:`mt-1 text-[var(--muted-foreground)] text-sm`,children:`Useful for future prompt and tool optimization work.`})]}),(0,C.jsx)(s,{columns:T,data:o.toolUsage,emptyMessage:`No tool calls recorded.`})]}),(0,C.jsxs)(`section`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{className:`font-semibold text-sm`,children:`Model token breakdown`}),(0,C.jsx)(`p`,{className:`mt-1 text-[var(--muted-foreground)] text-sm`,children:`Compare model usage and token concentration within the current project scope.`})]}),(0,C.jsx)(s,{columns:D,data:o.modelsByTokens,emptyMessage:`No model usage recorded.`})]})]})]})}export{O as component};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{N as r}from"./createServerFn-CgRRVpBH.js";import{c as i,n as a,o,r as s}from"./formatters-BM9kB7ed.js";import{t as c}from"./useMutation-CC_B7uy5.js";import{t as l}from"./checkbox-CdHitXWQ.js";import{a as u,c as d,i as f,n as p,o as m,r as h,s as g,t as _}from"./tabs-OO4VU5KR.js";import{r as v,t as y}from"./download-Bf0QJKD3.js";import{t as b}from"./antigravity-keychain-panel-BRHVjFAM.js";import{t as x}from"./scroll-text-fM0sMOB3.js";import{J as S,d as C,g as w,l as T,m as E,p as D,t as O}from"./index-CPvAP-jk.js";import{t as k}from"./metric-card-Dplm0ZiM.js";import{t as A}from"./page-header-Cwa3p6Tl.js";var j=e(n()),M=t(),N=({content:e,description:t,title:n})=>(0,M.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,M.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:n}),t?(0,M.jsx)(`p`,{className:`mt-2 text-[var(--muted-foreground)] text-sm`,children:t}):null,(0,M.jsx)(`pre`,{className:`mt-4 overflow-x-auto whitespace-pre-wrap rounded-2xl border border-[var(--border)] bg-[var(--code-background)] p-4 text-sm leading-6 [overflow-wrap:anywhere]`,children:e})]}),P=/^##\s+(.+)$/u,F=/^_Timestamp:\s*(.+?)_$/u,I=/^tool:\s*(.+)$/iu,L=e=>{if(!e?.trim())return[];let t=[],n=e.split(/\r?\n/u),r=null,i=[],a=()=>{r&&t.push({body:i.join(`
|
|
2
|
+
`).trim(),heading:r,sequence:t.length*10})};for(let e of n){let t=P.exec(e);if(t){a(),r=t[1].trim(),i=[];continue}r&&i.push(e)}return a(),t},R=e=>{let t=e.split(/\r?\n/u),n=F.exec(t[0]?.trim()??``)?.[1]?.trim()??null;return{body:n?t.slice(1).join(`
|
|
3
|
+
`).trim():e.trim(),timestamp:n}},z=e=>e.split(/^###\s+/mu)[0]?.trim()??``,B=(e,t)=>{let n=e.split(/\r?\n/u),r=n.findIndex(e=>e.trim().toLowerCase()===`### ${t.toLowerCase()}`);if(r===-1)return``;let i=n.findIndex((e,t)=>t>r&&e.startsWith(`### `));return n.slice(r+1,i===-1?void 0:i).join(`
|
|
4
|
+
`).trim()},V=e=>{let t=B(e,`Tool Calls`);if(!t)return[];let n=[];for(let e of t.matchAll(/-\s+`([^`]+)`(?:\s*\n+```json\s*\n([\s\S]*?)\n```)?/gu))n.push({argumentsText:e[2]?.trim()??null,name:e[1]?.trim()||`unknown`});return n},H=e=>{let t=z(e),[n,...r]=B(e,`Thinking`).split(/\n{2,}/u).map(e=>e.trim());return{content:t||r.join(`
|
|
5
|
+
|
|
6
|
+
`).trim(),thinking:n??``,toolCalls:V(e)}},U=(e,t={})=>({heading:e.heading,source:`antigravity_markdown`,...t}),W=(e,t,n,r,i,a=0)=>({isHiddenByDefault:t!==`assistant`&&t!==`user`,kind:`message`,memoryCitation:null,model:null,phase:i,raw:U(e,{role:t}),role:t,sequence:e.sequence+a,text:n,timestamp:r,variant:t===`user`?`user_message`:t===`assistant`?`agent_message`:`message`}),G=(e,t,n,r)=>({argumentsParseFailed:!1,argumentsText:t.argumentsText,callId:null,command:[t.name,t.argumentsText].filter(Boolean).join(`
|
|
7
|
+
`),kind:`tool_call`,name:t.name,raw:U(e,{argumentsText:t.argumentsText,name:t.name}),sequence:e.sequence+r,timestamp:n,workdir:null}),K=(e,t,n,r)=>({callId:null,exitCode:null,kind:`tool_output`,outputText:n,raw:U(e,{name:t}),sequence:e.sequence,summary:n,timestamp:r,wallTime:null}),q=e=>{let t=new Set,n=null,r=()=>{n!==null&&t.add(n),n=null};for(let t of e){let e=t.heading.toLowerCase();if(e===`user`){r();continue}if(e!==`assistant`)continue;let{body:i}=R(t.body),a=H(i);a.toolCalls.length>0?n=null:a.content&&(n=t.sequence)}return r(),t},J=(e,t,n,r)=>n?[W(e,t,n,r,null)]:[],Y=(e,t,n,r)=>n?[K(e,t,n,r)]:[],X=(e,t,n,r)=>{let i=H(t),a=[];if(i.thinking&&a.push(W(e,`assistant`,i.thinking,n,`commentary`)),i.content){let t=r.has(e.sequence)?`final_answer`:`commentary`;a.push(W(e,`assistant`,i.content,n,t,1))}return i.toolCalls.forEach((t,r)=>{a.push(G(e,t,n,2+r))}),a},Z=(e,t)=>{let{body:n,timestamp:r}=R(e.body),i=e.heading.toLowerCase(),a=I.exec(e.heading);return i===`user`?J(e,`user`,n,r):a?Y(e,a[1]?.trim()||`unknown`,n,r):i===`assistant`?X(e,n,r,t):i===`system`?J(e,`system`,n,r):J(e,`event`,n,r)},Q=e=>{let t=L(e),n=q(t);return t.flatMap(e=>Z(e,n))},$=(e,t)=>{e.messageCount+=1,t.role===`assistant`&&(e.assistantMessageCount+=1),t.role===`user`&&(e.userMessageCount+=1),t.phase===`commentary`&&(e.commentaryCount+=1),t.phase===`final_answer`&&(e.finalAnswerCount+=1)},ee=e=>{let t={assistantMessageCount:0,commentaryCount:0,execCommandCount:0,finalAnswerCount:0,messageCount:0,toolCallCount:0,toolOutputCount:0,userMessageCount:0,webSearchEventCount:0};for(let n of e)n.kind===`message`&&$(t,n),n.kind===`tool_call`&&(t.toolCallCount+=1),n.kind===`tool_output`&&(t.toolOutputCount+=1);return t},te=e=>[{label:`Conversation ID`,value:(0,M.jsx)(`span`,{"data-mono":`true`,children:e.conversation.conversationId})},{label:`Workspace`,value:(0,M.jsx)(r,{className:`text-[var(--accent)]`,params:{workspaceKey:e.conversation.workspaceKey},to:`/antigravity/$workspaceKey`,children:e.conversation.workspaceLabel})},{label:`Created`,value:(0,M.jsx)(`span`,{suppressHydrationWarning:!0,children:s(e.conversation.createdAtMs)})},{label:`Updated`,value:(0,M.jsx)(`span`,{suppressHydrationWarning:!0,children:s(e.conversation.lastUpdatedAtMs)})},{label:`Transcript source`,value:e.conversation.transcriptSource??`n/a`},{label:`Conversation path`,value:e.conversation.conversationPath??`n/a`},{label:`Transcript path`,value:e.conversation.transcriptPath??`n/a`},{label:`Summary path`,value:e.conversation.summaryPath??`n/a`},{label:`Source root`,value:e.conversation.sourceRoot??`n/a`}],ne=(e,t)=>{if(e.transcriptLocked)return[{label:`Transcript load`,value:`Transcript is locked until Antigravity Keychain access is enabled.`}];if(!e.conversationMarkdown)return[{label:`Transcript load`,value:`No renderable transcript content was found.`}];let n=ee(t);return[{label:`Event kinds`,value:[...new Set(t.map(e=>e.kind))].join(`, `)||`n/a`},{label:`Messages`,value:o(n.messageCount)},{label:`User messages`,value:o(n.userMessageCount)},{label:`Assistant messages`,value:o(n.assistantMessageCount)},{label:`Commentary updates`,value:o(n.commentaryCount)},{label:`Final answers`,value:o(n.finalAnswerCount)},{label:`Tool calls`,value:o(n.toolCallCount)},{label:`Tool outputs`,value:o(n.toolOutputCount)}]};function re({canExportArtifacts:e,canExportConversation:t,exportArtifactsPending:n,exportConversationPending:r,showConversationExport:i,onExportArtifacts:a,onExportConversation:o}){return(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[i?(0,M.jsxs)(S,{className:`rounded-full`,disabled:!t||r,type:`button`,variant:`outline`,onClick:o,children:[(0,M.jsx)(v,{className:`mr-2 size-4`}),`Export conversation`]}):null,e?(0,M.jsxs)(S,{className:`rounded-full`,disabled:n,type:`button`,variant:`outline`,onClick:a,children:[(0,M.jsx)(x,{className:`mr-2 size-4`}),`Export artifacts`]}):null]})}var ie=({rawJsonDisabled:e=!1,showCommentary:t,showExtraEvents:n,showRawJson:r,showToolCalls:i,showUserMessages:a,onShowCommentaryChange:o,onShowExtraEventsChange:s,onShowRawJsonChange:c,onShowToolCallsChange:u,onShowUserMessagesChange:d})=>(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-4 rounded-xl border border-[var(--border)] bg-[var(--panel)] px-4 py-3 shadow-[var(--panel-shadow)]`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,M.jsx)(l,{checked:i,id:`antigravity-transcript-show-tool-calls`,onCheckedChange:e=>u(e===!0)}),(0,M.jsx)(`label`,{htmlFor:`antigravity-transcript-show-tool-calls`,children:`Show tool calls`})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,M.jsx)(l,{checked:t,id:`antigravity-transcript-show-commentary`,onCheckedChange:e=>o(e===!0)}),(0,M.jsx)(`label`,{htmlFor:`antigravity-transcript-show-commentary`,children:`Show commentary`})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,M.jsx)(l,{checked:n,id:`antigravity-transcript-show-extra-events`,onCheckedChange:e=>s(e===!0)}),(0,M.jsx)(`label`,{htmlFor:`antigravity-transcript-show-extra-events`,children:`Show extra events`})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,M.jsx)(l,{checked:r,disabled:e,id:`antigravity-transcript-show-raw-json`,onCheckedChange:e=>c(e===!0)}),(0,M.jsx)(`label`,{htmlFor:`antigravity-transcript-show-raw-json`,children:`Raw JSON`})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,M.jsx)(l,{checked:a,id:`antigravity-transcript-show-user-messages`,onCheckedChange:e=>d(e===!0)}),(0,M.jsx)(`label`,{htmlFor:`antigravity-transcript-show-user-messages`,children:`User`})]})]});function ae({detail:e}){return(0,M.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,M.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:`Transcript`}),(0,M.jsx)(`p`,{className:`mt-4 text-[var(--muted-foreground)] text-sm`,children:e.transcriptLocked?`Unlock Antigravity transcript export to inspect the rendered conversation content here.`:e.artifactsMarkdown?`No transcript preview is available for this conversation. Generated artifacts are available in the Raw tab.`:`No transcript preview is available for this conversation.`})]})}function oe({detail:e,events:t}){return(0,M.jsxs)(`div`,{className:`space-y-4`,children:[(0,M.jsx)(g,{title:`Conversation summary`,value:e.conversation}),(0,M.jsx)(g,{title:`Transcript events`,value:t}),e.conversationMarkdown?(0,M.jsx)(N,{content:e.conversationMarkdown,description:`Rendered transcript Markdown used for export.`,title:`Transcript Markdown`}):null,e.artifactsMarkdown?(0,M.jsx)(N,{content:e.artifactsMarkdown,description:`Generated artifacts.`,title:`Artifacts`}):null]})}function se(){let e=i(C()).data,t=i(T(O.useParams().conversationId)).data,[n,r]=(0,j.useState)(!1),[s,l]=(0,j.useState)(!1),[g,v]=(0,j.useState)(!1),[x,S]=(0,j.useState)(!1),[N,P]=(0,j.useState)(!0),F=(0,j.useMemo)(()=>Q(t.conversationMarkdown),[t.conversationMarkdown]),I=w(t.conversation,!!e?.isUnlocked),L=t.artifactsMarkdown!==null,R=I||t.transcriptLocked,z=c({mutationFn:()=>E({data:{conversationId:t.conversation.conversationId}}),onSuccess:e=>{y(e.filename,e.content,`text/markdown; charset=utf-8`)}}),B=c({mutationFn:()=>D({data:{conversationId:t.conversation.conversationId}}),onSuccess:e=>{y(e.filename,e.content,`text/markdown; charset=utf-8`)}});return(0,M.jsxs)(`div`,{className:`space-y-6`,children:[(0,M.jsx)(A,{actions:(0,M.jsx)(re,{canExportArtifacts:L,canExportConversation:I,exportArtifactsPending:B.isPending,exportConversationPending:z.isPending,showConversationExport:R,onExportArtifacts:()=>B.mutate(),onExportConversation:()=>z.mutate()}),breadcrumb:(0,M.jsx)(d,{items:[{label:`Antigravity`,to:`/antigravity`},{label:t.conversation.workspaceLabel,params:{workspaceKey:t.conversation.workspaceKey},to:`/antigravity/$workspaceKey`},{label:t.conversation.title}]}),eyebrow:`Antigravity conversation`,subtitle:`Conversation detail for the selected Antigravity workspace session.`,title:t.conversation.title}),(0,M.jsx)(b,{}),(0,M.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-4`,children:[(0,M.jsx)(k,{label:`Transcript entries`,value:o(t.conversation.transcriptEntryCount)}),(0,M.jsx)(k,{label:`Artifacts`,value:o(t.conversation.artifactCount)}),(0,M.jsx)(k,{label:`Size`,value:a(t.conversation.conversationBytes)}),(0,M.jsx)(k,{helper:t.conversation.transcriptSource??`summary`,label:`Indexed items`,value:o(t.conversation.indexedItemCount??0)})]}),(0,M.jsxs)(_,{className:`space-y-4`,defaultValue:`transcript`,children:[(0,M.jsxs)(h,{className:`grid w-fit min-w-[24rem] grid-cols-3 rounded-full border border-[var(--border)] bg-[var(--panel)] p-1`,children:[(0,M.jsx)(f,{className:`rounded-full px-5 text-sm`,value:`transcript`,children:`Transcript`}),(0,M.jsx)(f,{className:`rounded-full px-5 text-sm`,value:`metadata`,children:`Metadata`}),(0,M.jsx)(f,{className:`rounded-full px-5 text-sm`,value:`raw`,children:`Raw`})]}),(0,M.jsxs)(p,{className:`space-y-3`,value:`transcript`,children:[(0,M.jsx)(ie,{rawJsonDisabled:F.length===0,showCommentary:s,showExtraEvents:g,showRawJson:x,showToolCalls:n,showUserMessages:N,onShowCommentaryChange:l,onShowExtraEventsChange:v,onShowRawJsonChange:S,onShowToolCallsChange:r,onShowUserMessagesChange:P}),F.length>0?(0,M.jsx)(u,{assistantModel:null,events:F,projectPath:t.conversation.workspaceFolder,showCommentary:s,showExtraEvents:g,showRawJson:x,showToolCalls:n,showUserMessages:N}):(0,M.jsx)(ae,{detail:t})]}),(0,M.jsx)(p,{value:`metadata`,children:(0,M.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.95fr_1.05fr]`,children:[(0,M.jsx)(m,{items:te(t),title:`Conversation metadata`}),(0,M.jsx)(m,{items:ne(t,F),title:`Transcript stats`})]})}),(0,M.jsx)(p,{value:`raw`,children:(0,M.jsx)(oe,{detail:t,events:F})})]}),z.isError?(0,M.jsx)(`p`,{className:`text-[var(--destructive)] text-sm`,children:z.error instanceof Error?z.error.message:`Conversation export failed`}):null,B.isError?(0,M.jsx)(`p`,{className:`text-[var(--destructive)] text-sm`,children:B.error instanceof Error?B.error.message:`Artifact export failed`}):null]})}export{se as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{t}from"./reload-error-panel-AHqu0akK.js";var n=e();function r({error:e}){return(0,n.jsx)(t,{description:e.message,title:`Failed to load Antigravity conversation`})}export{r as errorComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{a as t}from"./createServerFn-CgRRVpBH.js";import{t as n}from"./useMutation-CC_B7uy5.js";import{t as r}from"./useQuery-C5By6WKU.js";import{_ as i,h as a}from"./dist-DvMS2965.js";import{J as o,d as s,h as c}from"./index-CPvAP-jk.js";var l=i(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),u=i(`lock-keyhole`,[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]),d=i(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),f=i(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),p=e();function m(){let e=t(),i=r(s()).data??null,m=n({mutationFn:()=>c(),onSuccess:t=>{e.setQueryData(s().queryKey,t),Promise.all([e.invalidateQueries({queryKey:s().queryKey}),e.invalidateQueries({queryKey:[`antigravity-conversation`]})])}});if(!i||i.status===`unsupported`)return null;let h=i.isUnlocked,g=m.error?.message??i.error;return(0,p.jsxs)(`div`,{className:a(`flex flex-col gap-3 rounded-xl border px-4 py-3 sm:flex-row sm:items-center sm:justify-between`,h?`border-emerald-500/30 bg-emerald-500/10`:`border-[var(--border)] bg-[var(--panel)]`),children:[(0,p.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,p.jsx)(`div`,{className:a(`mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md`,h?`bg-emerald-500/15 text-emerald-600`:`bg-[var(--panel-secondary)]`),children:h?(0,p.jsx)(d,{className:`size-4`}):(0,p.jsx)(u,{className:`size-4`})}),(0,p.jsxs)(`div`,{className:`min-w-0`,children:[(0,p.jsx)(`p`,{className:`font-medium text-sm`,children:h?`Keychain access enabled`:`Unlock Antigravity transcript export`}),(0,p.jsx)(`p`,{className:`mt-1 text-[var(--muted-foreground)] text-xs`,children:h?`The Antigravity key is cached in this server process only. Transcript exports are available for local logs and safe-storage payloads.`:`Spiracha needs one-time access to ${i.keychainService} to decrypt Antigravity transcript data. macOS will ask for approval after you click unlock.`}),g?(0,p.jsxs)(`p`,{className:`mt-2 flex items-center gap-1 text-[var(--destructive)] text-xs`,children:[(0,p.jsx)(f,{className:`size-3`}),g]}):null]})]}),h?null:(0,p.jsxs)(o,{className:`shrink-0`,disabled:!i.canRequestAccess||m.isPending,type:`button`,onClick:()=>m.mutate(),children:[(0,p.jsx)(l,{className:`size-4`}),m.isPending?`Waiting...`:`Unlock`]})]})}export{u as n,m as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{t}from"./reload-error-panel-AHqu0akK.js";var n=e();function r({error:e}){return(0,n.jsx)(t,{description:e.message,title:`Failed to load Antigravity workspace`})}export{r as errorComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{N as r}from"./createServerFn-CgRRVpBH.js";import{c as i,n as a,o,r as s}from"./formatters-BM9kB7ed.js";import{t as c}from"./useMutation-CC_B7uy5.js";import{n as l,t as u}from"./data-table-Br78_dk3.js";import{r as d,t as f}from"./download-Bf0QJKD3.js";import{a as p,i as m,n as h,r as g,t as _}from"./dropdown-menu-Dy5cLzTy.js";import{n as v,t as y}from"./antigravity-keychain-panel-BRHVjFAM.js";import{t as b}from"./scroll-text-fM0sMOB3.js";import{J as x,_ as S,d as C,f as w,g as T,m as E,n as D,p as O,r as k,u as A,v as j,y as M}from"./index-CPvAP-jk.js";import{t as N}from"./page-header-Cwa3p6Tl.js";import{t as P}from"./badge-DfWvPfKF.js";import{n as F,t as I}from"./text-filter-DVAZySUS.js";var L=e(n(),1),R=t(),z=l(),B=(e,t)=>{let n=e.artifactCount>0,r=!!t?.isUnlocked,i=j(e)||S(e),a=T(e,r),o=M(e,r),s=a||o;return{canExportConversation:a,hasArtifacts:n,hasTranscript:i,lockedTranscript:o,showActions:s||n,showConversationAction:s}},V=(e,t)=>t.hasTranscript?`${e.transcriptSource?e.transcriptSource.replace(/-/gu,` `):`transcript`} · ${t.lockedTranscript?`locked`:`available`}`:`Summary only`,H=(e,t,n)=>[z.accessor(`title`,{cell:t=>{let n=B(t.row.original,e);return(0,R.jsxs)(r,{className:`block w-[16rem] max-w-[22rem] space-y-1 rounded-md outline-none transition hover:opacity-80 focus-visible:ring-2 focus-visible:ring-[var(--accent)] lg:w-auto`,params:{conversationId:t.row.original.conversationId},to:`/antigravity-conversations/$conversationId`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`p`,{className:`truncate font-medium underline-offset-2 hover:underline`,children:t.getValue()}),n.hasTranscript?(0,R.jsx)(P,{variant:`secondary`,children:`transcript`}):null,n.hasArtifacts?(0,R.jsx)(P,{variant:`outline`,children:`artifact`}):null]}),(0,R.jsx)(`p`,{className:`truncate text-[var(--muted-foreground)] text-xs`,children:t.row.original.conversationId})]})},header:`Conversation`}),z.accessor(`lastUpdatedAtMs`,{cell:e=>(0,R.jsx)(`span`,{className:`whitespace-nowrap text-sm`,suppressHydrationWarning:!0,children:s(e.getValue())}),header:`Updated`}),z.display({cell:t=>{let n=B(t.row.original,e);return(0,R.jsxs)(`span`,{className:`text-sm`,children:[V(t.row.original,n),t.row.original.transcriptEntryCount>0?` · ${o(t.row.original.transcriptEntryCount)} entries`:``]})},header:`Transcript`,id:`transcript`}),z.accessor(`artifactCount`,{cell:e=>(0,R.jsx)(`span`,{className:`font-mono text-sm`,children:o(e.getValue())}),header:`Artifacts`}),z.accessor(`conversationBytes`,{cell:e=>(0,R.jsx)(`span`,{className:`font-mono text-sm`,children:a(e.getValue())}),header:`Size`}),z.display({cell:r=>{let i=B(r.row.original,e);return i.showActions?(0,R.jsxs)(_,{children:[(0,R.jsx)(m,{asChild:!0,children:(0,R.jsx)(x,{className:`rounded-full`,size:`icon`,type:`button`,variant:`ghost`,onClick:e=>e.stopPropagation(),children:(0,R.jsx)(p,{className:`size-4`})})}),(0,R.jsxs)(h,{align:`end`,children:[i.showConversationAction?(0,R.jsxs)(g,{disabled:!i.canExportConversation,onClick:()=>t(r.row.original),children:[i.lockedTranscript?(0,R.jsx)(v,{className:`mr-2 size-4`}):(0,R.jsx)(d,{className:`mr-2 size-4`}),i.lockedTranscript?`Unlock conversation export first`:`Export conversation`]}):null,i.hasArtifacts?(0,R.jsxs)(g,{onClick:()=>n(r.row.original),children:[(0,R.jsx)(b,{className:`mr-2 size-4`}),`Export artifacts`]}):null]})]}):(0,R.jsx)(`span`,{className:`text-[var(--muted-foreground)] text-sm`,children:`No export`})},header:``,id:`actions`})];function U({conversations:e,decryptionState:t,onExportArtifacts:n,onExportConversation:r}){return(0,R.jsx)(u,{columns:(0,L.useMemo)(()=>H(t,r,n),[t,n,r]),data:e,emptyMessage:`No Antigravity conversations match the current workspace filter.`})}function W(){let e=D.useParams(),t=i(w()).data,n=k(t,e.workspaceKey),r=i(A(n.key)).data,a=i(C()).data??null,[o,s]=(0,L.useState)(``),l=(0,L.useDeferredValue)(o),u=c({mutationFn:e=>E({data:{conversationId:e.conversationId}}),onSuccess:e=>{f(e.filename,e.content,`text/markdown; charset=utf-8`)}}),d=c({mutationFn:e=>O({data:{conversationId:e.conversationId}}),onSuccess:e=>{f(e.filename,e.content,`text/markdown; charset=utf-8`)}}),p=r.filter(e=>I(l,[e.title,e.conversationId,e.transcriptSource,e.workspaceLabel]));return(0,R.jsxs)(`div`,{className:`space-y-6`,children:[(0,R.jsx)(N,{actions:(0,R.jsx)(F,{placeholder:`Search title, id, or transcript source`,value:o,onValueChange:s}),eyebrow:`Antigravity workspace`,subtitle:`Inspect conversation coverage across Antigravity transcripts, raw payloads, and generated artifacts.`,title:n.label}),(0,R.jsx)(y,{}),(0,R.jsx)(U,{conversations:p,decryptionState:a,onExportArtifacts:e=>d.mutate(e),onExportConversation:e=>u.mutate(e)}),u.isError?(0,R.jsx)(`p`,{className:`text-[var(--destructive)] text-sm`,children:u.error instanceof Error?u.error.message:`Conversation export failed`}):null,d.isError?(0,R.jsx)(`p`,{className:`text-[var(--destructive)] text-sm`,children:d.error instanceof Error?d.error.message:`Artifact export failed`}):null]})}export{W as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{N as r}from"./createServerFn-CgRRVpBH.js";import{c as i,n as a,o,r as s}from"./formatters-BM9kB7ed.js";import{n as c,t as l}from"./data-table-Br78_dk3.js";import{t as u}from"./antigravity-keychain-panel-BRHVjFAM.js";import{f as d}from"./index-CPvAP-jk.js";import{t as f}from"./page-header-Cwa3p6Tl.js";import{n as p,t as m}from"./text-filter-DVAZySUS.js";var h=e(n()),g=t(),_=c(),v=[_.accessor(`label`,{cell:e=>(0,g.jsxs)(r,{className:`block w-[16rem] max-w-[22rem] space-y-1 rounded-md outline-none transition hover:opacity-80 focus-visible:ring-2 focus-visible:ring-[var(--accent)] lg:w-auto`,params:{workspaceKey:e.row.original.key},to:`/antigravity/$workspaceKey`,children:[(0,g.jsx)(`p`,{className:`font-medium underline-offset-2 hover:underline`,children:e.getValue()}),(0,g.jsx)(`p`,{className:`truncate text-[var(--muted-foreground)] text-xs`,children:e.row.original.uri??`Unknown root`})]}),header:`Workspace`}),_.accessor(`conversationCount`,{cell:e=>(0,g.jsx)(`span`,{className:`font-mono text-sm`,children:o(e.getValue())}),header:`Conversations`}),_.accessor(`transcriptCount`,{cell:e=>(0,g.jsx)(`span`,{className:`font-mono text-sm`,children:o(e.getValue())}),header:`Transcripts`}),_.accessor(`artifactCount`,{cell:e=>(0,g.jsx)(`span`,{className:`font-mono text-sm`,children:o(e.getValue())}),header:`Artifacts`}),_.accessor(`conversationBytes`,{cell:e=>(0,g.jsx)(`span`,{className:`font-mono text-sm`,children:a(e.getValue())}),header:`Size`}),_.accessor(`lastActiveMs`,{cell:e=>(0,g.jsx)(`span`,{className:`whitespace-nowrap text-sm`,suppressHydrationWarning:!0,children:s(e.getValue())}),header:`Last updated`})];function y({workspaces:e}){return(0,g.jsx)(l,{columns:v,data:e,emptyMessage:`No Antigravity workspaces match the current search.`})}function b(){let e=i(d()).data,[t,n]=(0,h.useState)(``),r=(0,h.useDeferredValue)(t),a=e.filter(e=>m(r,[e.label,e.uri,e.key]));return(0,g.jsxs)(`div`,{className:`space-y-6`,children:[(0,g.jsx)(f,{actions:(0,g.jsx)(p,{placeholder:`Search workspace name or path`,value:t,onValueChange:n}),eyebrow:`Inventory`,subtitle:`Workspace groups are derived from Antigravity summary indexes, raw conversation files, local logs, and brain artifacts.`,title:`Antigravity`}),(0,g.jsx)(u,{}),(0,g.jsx)(y,{workspaces:a})]})}export{b as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{t}from"./reload-error-panel-AHqu0akK.js";var n=e();function r({error:e}){return(0,n.jsx)(t,{description:e.message,title:`Failed to load Antigravity workspaces`})}export{r as errorComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{h as t,u as n}from"./dist-DvMS2965.js";import{at as r}from"./index-CPvAP-jk.js";var i=e(),a=r(`inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3`,{defaultVariants:{variant:`default`},variants:{variant:{default:`bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,destructive:`bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90`,ghost:`[a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,link:`text-primary underline-offset-4 [a&]:hover:underline`,outline:`border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`}}});function o({className:e,variant:r=`default`,asChild:o=!1,...s}){return(0,i.jsx)(o?n:`span`,{"data-slot":`badge`,"data-variant":r,className:t(a({variant:r}),e),...s})}export{o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{_ as r,a as i,c as a,h as o,m as s,n as c,r as l,s as u,t as d}from"./dist-DvMS2965.js";var f=r(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),p=e(n(),1);function m(e){let t=p.useRef({value:e,previous:e});return p.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var h=t(),g=`Checkbox`,[_,v]=u(g),[y,b]=_(g);function x(e){let{__scopeCheckbox:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:u,value:d=`on`,internal_do_not_use_render:f}=e,[m,_]=l({prop:n,defaultProp:i??!1,onChange:c,caller:g}),[v,b]=p.useState(null),[x,S]=p.useState(null),C=p.useRef(!1),w=v?!!o||!!v.closest(`form`):!0,T={checked:m,disabled:a,setChecked:_,control:v,setControl:b,name:s,form:o,value:d,hasConsumerStoppedPropagationRef:C,required:u,defaultChecked:A(i)?!1:i,isFormControl:w,bubbleInput:x,setBubbleInput:S};return(0,h.jsx)(y,{scope:t,...T,children:k(f)?f(T):r})}var S=`CheckboxTrigger`,C=p.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...r},o)=>{let{control:c,value:l,disabled:u,checked:d,required:f,setControl:m,setChecked:g,hasConsumerStoppedPropagationRef:_,isFormControl:v,bubbleInput:y}=b(S,e),x=s(o,m),C=p.useRef(d);return p.useEffect(()=>{let e=c?.form;if(e){let t=()=>g(C.current);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[c,g]),(0,h.jsx)(a.button,{type:`button`,role:`checkbox`,"aria-checked":A(d)?`mixed`:d,"aria-required":f,"data-state":j(d),"data-disabled":u?``:void 0,disabled:u,value:l,...r,ref:x,onKeyDown:i(t,e=>{e.key===`Enter`&&e.preventDefault()}),onClick:i(n,e=>{g(e=>A(e)?!0:!e),y&&v&&(_.current=e.isPropagationStopped(),_.current||e.stopPropagation())})})});C.displayName=S;var w=p.forwardRef((e,t)=>{let{__scopeCheckbox:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,h.jsx)(x,{__scopeCheckbox:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(C,{...d,ref:t,__scopeCheckbox:n}),e&&(0,h.jsx)(O,{__scopeCheckbox:n})]})})});w.displayName=g;var T=`CheckboxIndicator`,E=p.forwardRef((e,t)=>{let{__scopeCheckbox:n,forceMount:r,...i}=e,o=b(T,n);return(0,h.jsx)(c,{present:r||A(o.checked)||o.checked===!0,children:(0,h.jsx)(a.span,{"data-state":j(o.checked),"data-disabled":o.disabled?``:void 0,...i,ref:t,style:{pointerEvents:`none`,...e.style}})})});E.displayName=T;var D=`CheckboxBubbleInput`,O=p.forwardRef(({__scopeCheckbox:e,...t},n)=>{let{control:r,hasConsumerStoppedPropagationRef:i,checked:o,defaultChecked:c,required:l,disabled:u,name:f,value:g,form:_,bubbleInput:v,setBubbleInput:y}=b(D,e),x=s(n,y),S=m(o),C=d(r);p.useEffect(()=>{let e=v;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set,r=!i.current;if(S!==o&&n){let t=new Event(`click`,{bubbles:r});e.indeterminate=A(o),n.call(e,A(o)?!1:o),e.dispatchEvent(t)}},[v,S,o,i]);let w=p.useRef(A(o)?!1:o);return(0,h.jsx)(a.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:c??w.current,required:l,disabled:u,name:f,value:g,form:_,...t,tabIndex:-1,ref:x,style:{...t.style,...C,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})});O.displayName=D;function k(e){return typeof e==`function`}function A(e){return e===`indeterminate`}function j(e){return A(e)?`indeterminate`:e?`checked`:`unchecked`}function M({className:e,...t}){return(0,h.jsx)(w,{"data-slot":`checkbox`,className:o(`peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs outline-none transition-shadow focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-white dark:bg-input/30 dark:data-[state=checked]:bg-primary dark:data-[state=checked]:text-primary-foreground dark:aria-invalid:ring-destructive/40`,e),...t,children:(0,h.jsx)(E,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none`,children:(0,h.jsx)(f,{className:`size-3.5`})})})}export{m as n,f as r,M as t};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{n as e,r as t,t as n}from"./jsx-runtime-DGeXAQPT.js";import{n as r,t as i}from"./react-dom-DL96Jor4.js";var a=`__TSS_CONTEXT`,o=Symbol.for(`TSS_SERVER_FUNCTION`),s=Symbol.for(`TSS_SERVER_FUNCTION_FACTORY`),c=`application/x-tss-framed`,l={JSON:0,CHUNK:1,END:2,ERROR:3};`${c}`;var u=/;\s*v=(\d+)/;function d(e){let t=e.match(u);return t?parseInt(t[1],10):void 0}function f(e){let t=d(e);if(t!==void 0&&t!==1)throw Error(`Incompatible framed protocol version: server=${t}, client=1. Please ensure client and server are using compatible versions.`)}var p=()=>window.__TSS_START_OPTIONS__;function m(e){return e[e.length-1]}function h(e){return typeof e==`function`}function g(e,t){return h(e)?e(t):e}var _=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable;function y(e){for(let t in e)if(_.call(e,t))return!0;return!1}var b=()=>Object.create(null),ee=(e,t)=>x(e,t,b);function x(e,t,n=()=>({}),r=0){if(e===t)return e;if(r>500)return t;let i=t,a=re(e)&&re(i);if(!a&&!(S(e)&&S(i)))return i;let o=a?e:te(e);if(!o)return i;let s=a?i:te(i);if(!s)return i;let c=o.length,l=s.length,u=a?Array(l):n(),d=0;for(let t=0;t<l;t++){let o=a?t:s[t],l=e[o],f=i[o];if(l===f){u[o]=l,(a?t<c:_.call(e,o))&&d++;continue}if(l===null||f===null||typeof l!=`object`||typeof f!=`object`){u[o]=f;continue}let p=x(l,f,n,r+1);u[o]=p,p===l&&d++}return c===l&&d===c?e:u}function te(e){let t=Object.getOwnPropertyNames(e);for(let n of t)if(!v.call(e,n))return!1;let n=Object.getOwnPropertySymbols(e);if(n.length===0)return t;let r=t;for(let t of n){if(!v.call(e,t))return!1;r.push(t)}return r}function S(e){if(!ne(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!ne(n)||!n.hasOwnProperty(`isPrototypeOf`))}function ne(e){return Object.prototype.toString.call(e)===`[object Object]`}function re(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function ie(e,t,n){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0,i=e.length;r<i;r++)if(!ie(e[r],t[r],n))return!1;return!0}if(S(e)&&S(t)){let r=n?.ignoreUndefined??!0;if(n?.partial){for(let i in t)if((!r||t[i]!==void 0)&&!ie(e[i],t[i],n))return!1;return!0}let i=0;if(!r)i=Object.keys(e).length;else for(let t in e)e[t]!==void 0&&i++;let a=0;for(let o in t)if((!r||t[o]!==void 0)&&(a++,a>i||!ie(e[o],t[o],n)))return!1;return i===a}return!1}function ae(e){let t,n,r=new Promise((e,r)=>{t=e,n=r});return r.status=`pending`,r.resolve=n=>{r.status=`resolved`,r.value=n,t(n),e?.(n)},r.reject=e=>{r.status=`rejected`,n(e)},r}function oe(e){return typeof e?.message==`string`?e.message.startsWith(`Failed to fetch dynamically imported module`)||e.message.startsWith(`error loading dynamically imported module`)||e.message.startsWith(`Importing a module script failed`):!1}function se(e){return!!(e&&typeof e==`object`&&typeof e.then==`function`)}function ce(e){return e.replace(/[\x00-\x1f\x7f]/g,``)}function le(e){let t;try{t=decodeURI(e)}catch{t=e.replaceAll(/%[0-9A-F]{2}/gi,e=>{try{return decodeURI(e)}catch{return e}})}return ce(t)}var ue=[`http:`,`https:`,`mailto:`,`tel:`];function de(e,t){if(!e)return!1;try{let n=new URL(e);return!t.has(n.protocol)}catch{return!1}}var fe={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},pe=/[&><\u2028\u2029]/g;function me(e){return e.replace(pe,e=>fe[e])}function he(e){if(!e||!/[%\\\x00-\x1f\x7f]/.test(e)&&!e.startsWith(`//`))return{path:e,handledProtocolRelativeURL:!1};let t=/%25|%5C/gi,n=0,r=``,i;for(;(i=t.exec(e))!==null;)r+=le(e.slice(n,i.index))+i[0],n=t.lastIndex;r+=le(n?e.slice(n):e);let a=!1;return r.startsWith(`//`)&&(a=!0,r=`/`+r.replace(/^\/+/,``)),{path:r,handledProtocolRelativeURL:a}}function ge(e){return/\s|[^\u0000-\u007F]/.test(e)?e.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):e}function _e(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function C(){throw Error(`Invariant failed`)}function w(e){let t=new Map,n,r,i=e=>{e.next&&(e.prev?(e.prev.next=e.next,e.next.prev=e.prev,e.next=void 0,r&&(r.next=e,e.prev=r)):(e.next.prev=void 0,n=e.next,e.next=void 0,r&&(e.prev=r,r.next=e)),r=e)};return{get(e){let n=t.get(e);if(n)return i(n),n.value},set(a,o){if(t.size>=e&&n){let e=n;t.delete(e.key),e.next&&(n=e.next,e.next.prev=void 0),e===r&&(r=void 0)}let s=t.get(a);if(s)s.value=o,i(s);else{let e={key:a,value:o,prev:r};r&&(r.next=e),r=e,n||=e,t.set(a,e)}},clear(){t.clear(),n=void 0,r=void 0}}}var E=4,D=5;function ve(e){let t=e.indexOf(`{`);if(t===-1)return null;let n=e.indexOf(`}`,t);return n===-1||t+1>=e.length?null:[t,n]}function ye(e,t,n=new Uint16Array(6)){let r=e.indexOf(`/`,t),i=r===-1?e.length:r,a=e.substring(t,i);if(!a||!a.includes(`$`))return n[0]=0,n[1]=t,n[2]=t,n[3]=i,n[4]=i,n[5]=i,n;if(a===`$`){let r=e.length;return n[0]=2,n[1]=t,n[2]=t,n[3]=r,n[4]=r,n[5]=r,n}if(a.charCodeAt(0)===36)return n[0]=1,n[1]=t,n[2]=t+1,n[3]=i,n[4]=i,n[5]=i,n;let o=ve(a);if(o){let[r,s]=o,c=a.charCodeAt(r+1);if(c===45){if(r+2<a.length&&a.charCodeAt(r+2)===36){let e=r+3,a=s;if(e<a)return n[0]=3,n[1]=t+r,n[2]=t+e,n[3]=t+a,n[4]=t+s+1,n[5]=i,n}}else if(c===36){let a=r+1,o=r+2;return o===s?(n[0]=2,n[1]=t+r,n[2]=t+a,n[3]=t+o,n[4]=t+s+1,n[5]=e.length,n):(n[0]=1,n[1]=t+r,n[2]=t+o,n[3]=t+s,n[4]=t+s+1,n[5]=i,n)}}return n[0]=0,n[1]=t,n[2]=t,n[3]=i,n[4]=i,n[5]=i,n}function O(e,t,n,r,i,a,o){o?.(n);let s=r;{let r=n.fullPath??n.from,o=r.length,c=n.options?.caseSensitive??e,l=n.options?.params?.parse??n.options?.parseParams;for(;s<o;){let e=ye(r,s,t),o,u=s,d=e[5];switch(s=d+1,a++,e[0]){case 0:{let t=r.substring(e[2],e[3]);if(c){let e=i.static?.get(t);if(e)o=e;else{i.static??=new Map;let e=j(n.fullPath??n.from);e.parent=i,e.depth=a,o=e,i.static.set(t,e)}}else{let e=t.toLowerCase(),r=i.staticInsensitive?.get(e);if(r)o=r;else{i.staticInsensitive??=new Map;let t=j(n.fullPath??n.from);t.parent=i,t.depth=a,o=t,i.staticInsensitive.set(e,t)}}break}case 1:{let t=r.substring(u,e[1]),s=r.substring(e[4],d),f=c&&!!(t||s),p=t?f?t:t.toLowerCase():void 0,m=s?f?s:s.toLowerCase():void 0,h=!l&&i.dynamic?.find(e=>!e.parse&&e.caseSensitive===f&&e.prefix===p&&e.suffix===m);if(h)o=h;else{let e=M(1,n.fullPath??n.from,f,p,m);o=e,e.depth=a,e.parent=i,i.dynamic??=[],i.dynamic.push(e)}break}case 3:{let t=r.substring(u,e[1]),s=r.substring(e[4],d),f=c&&!!(t||s),p=t?f?t:t.toLowerCase():void 0,m=s?f?s:s.toLowerCase():void 0,h=!l&&i.optional?.find(e=>!e.parse&&e.caseSensitive===f&&e.prefix===p&&e.suffix===m);if(h)o=h;else{let e=M(3,n.fullPath??n.from,f,p,m);o=e,e.parent=i,e.depth=a,i.optional??=[],i.optional.push(e)}break}case 2:{let t=r.substring(u,e[1]),s=r.substring(e[4],d),l=c&&!!(t||s),f=t?l?t:t.toLowerCase():void 0,p=s?l?s:s.toLowerCase():void 0,m=M(2,n.fullPath??n.from,l,f,p);o=m,m.parent=i,m.depth=a,i.wildcard??=[],i.wildcard.push(m)}}i=o}if(l&&n.children&&!n.isRoot&&n.id&&n.id.charCodeAt(n.id.lastIndexOf(`/`)+1)===95){let e=j(n.fullPath??n.from);e.kind=D,e.parent=i,a++,e.depth=a,i.pathless??=[],i.pathless.push(e),i=e}let u=(n.path||!n.children)&&!n.isRoot;if(u&&r.endsWith(`/`)){let e=j(n.fullPath??n.from);e.kind=E,e.parent=i,a++,e.depth=a,i.index=e,i=e}i.parse=l??null,i.priority=n.options?.params?.priority??0,u&&!i.route&&(i.route=n,i.fullPath=n.fullPath??n.from)}if(n.children)for(let r of n.children)O(e,t,r,s,i,a,o)}function k(e,t){if(e.parse&&!t.parse)return-1;if(!e.parse&&t.parse)return 1;if(e.parse&&t.parse&&(e.priority||t.priority))return t.priority-e.priority;if(e.prefix&&t.prefix&&e.prefix!==t.prefix){if(e.prefix.startsWith(t.prefix))return-1;if(t.prefix.startsWith(e.prefix))return 1}if(e.suffix&&t.suffix&&e.suffix!==t.suffix){if(e.suffix.endsWith(t.suffix))return-1;if(t.suffix.endsWith(e.suffix))return 1}return e.prefix&&!t.prefix?-1:!e.prefix&&t.prefix?1:e.suffix&&!t.suffix?-1:!e.suffix&&t.suffix?1:e.caseSensitive&&!t.caseSensitive?-1:!e.caseSensitive&&t.caseSensitive?1:0}function A(e){if(e.pathless)for(let t of e.pathless)A(t);if(e.static)for(let t of e.static.values())A(t);if(e.staticInsensitive)for(let t of e.staticInsensitive.values())A(t);if(e.dynamic?.length){e.dynamic.sort(k);for(let t of e.dynamic)A(t)}if(e.optional?.length){e.optional.sort(k);for(let t of e.optional)A(t)}if(e.wildcard?.length){e.wildcard.sort(k);for(let t of e.wildcard)A(t)}}function j(e){return{kind:0,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:e,parent:null,parse:null,priority:0}}function M(e,t,n,r,i){return{kind:e,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:t,parent:null,parse:null,priority:0,caseSensitive:n,prefix:r,suffix:i}}function be(e,t){let n=j(`/`),r=new Uint16Array(6);for(let t of e)O(!1,r,t,1,n,0);A(n),t.masksTree=n,t.flatCache=w(1e3)}function xe(e,t){e||=`/`;let n=t.flatCache.get(e);if(n)return n;let r=P(e,t.masksTree);return t.flatCache.set(e,r),r}function Se(e,t,n,r,i){e||=`/`,r||=`/`;let a=t?`case\0${e}`:e,o=i.singleCache.get(a);return o||(o=j(`/`),O(t,new Uint16Array(6),{from:e},1,o,0),i.singleCache.set(a,o)),P(r,o,n)}function Ce(e,t,n=!1){let r=n?e:`nofuzz\0${e}`,i=t.matchCache.get(r);if(i!==void 0)return i;e||=`/`;let a;try{a=P(e,t.segmentTree,n)}catch(e){if(e instanceof URIError)a=null;else throw e}return a&&(a.branch=Te(a.route)),t.matchCache.set(r,a),a}function we(e){return e===`/`?e:e.replace(/\/{1,}$/,``)}function N(e,t=!1,n){let r=j(e.fullPath),i=new Uint16Array(6),a={},o={},s=0;return O(t,i,e,1,r,0,e=>{if(n?.(e,s),e.id in a&&C(),a[e.id]=e,s!==0&&e.path){let t=we(e.fullPath);(!o[t]||e.fullPath.endsWith(`/`))&&(o[t]=e)}s++}),A(r),{processedTree:{segmentTree:r,singleCache:w(1e3),matchCache:w(1e3),flatCache:null,masksTree:null},routesById:a,routesByPath:o}}function P(e,t,n=!1){let r=e.split(`/`),i=De(e,r,t,n);if(!i)return null;let[a]=F(e,r,i);return{route:i.node.route,rawParams:a}}function F(e,t,n){let r=Ee(n.node),i=null,a=Object.create(null),o=n.extract?.part??0,s=n.extract?.node??0,c=n.extract?.path??0,l=n.extract?.segment??0;for(;s<r.length;o++,s++,c++,l++){let u=r[s];if(u.kind===E)break;if(u.kind===D){l--,o--,c--;continue}let d=t[o],f=c;if(d&&(c+=d.length),u.kind===1){i??=n.node.fullPath.split(`/`);let e=i[l],t=u.prefix?.length??0;if(e.charCodeAt(t)===123){let n=u.suffix?.length??0,r=e.substring(t+2,e.length-n-1),i=d.substring(t,d.length-n);a[r]=decodeURIComponent(i)}else{let t=e.substring(1);a[t]=decodeURIComponent(d)}}else if(u.kind===3){if(n.skipped&1<<s){o--,c=f-1;continue}i??=n.node.fullPath.split(`/`);let e=i[l],t=u.prefix?.length??0,r=u.suffix?.length??0,p=e.substring(t+3,e.length-r-1),m=u.suffix||u.prefix?d.substring(t,d.length-r):d;m&&(a[p]=decodeURIComponent(m))}else if(u.kind===2){let t=u,n=e.substring(f+(t.prefix?.length??0),e.length-(t.suffix?.length??0)),r=decodeURIComponent(n);a[`*`]=r,a._splat=r;break}}return n.rawParams&&Object.assign(a,n.rawParams),[a,{part:o,node:s,path:c,segment:l}]}function Te(e){let t=[e];for(;e.parentRoute;)e=e.parentRoute,t.push(e);return t.reverse(),t}function Ee(e){let t=Array(e.depth+1);do t[e.depth]=e,e=e.parent;while(e);return t}function De(e,t,n,r){if(e===`/`&&n.index)return{node:n.index,skipped:0};let i=!m(t),a=i&&e!==`/`,o=t.length-+!!i,s=[{node:n,index:1,skipped:0,depth:1,statics:0,dynamics:0,optionals:0}],c=null,l=null;for(;s.length;){let n=s.pop(),{node:i,index:u,skipped:d,depth:f,statics:p,dynamics:m,optionals:h}=n,{extract:g,rawParams:_}=n;if(i.kind===2&&i.route&&!Ae(l,n))continue;if(i.parse){if(!ke(e,t,n))continue;_=n.rawParams,g=n.extract}r&&i.route&&i.kind!==E&&Ae(c,n)&&(c=n);let v=u===o;if(v&&(i.route&&(!a||i.kind===E||i.kind===2)&&Ae(l,n)&&(l=n),!i.optional&&!i.wildcard&&!i.index&&!i.pathless))continue;let y=v?void 0:t[u],b;if(v&&i.index){let n={node:i.index,index:u,skipped:d,depth:f+1,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_},r=!0;if(i.index.parse&&(ke(e,t,n)||(r=!1)),r){if(!m&&!h&&!d&&Oe(p,o))return n;Ae(l,n)&&(l=n)}}if(i.wildcard)for(let e=i.wildcard.length-1;e>=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!(r&&(v||!(n.caseSensitive?y:b??=y.toLowerCase()).startsWith(r)))){if(a){if(v)continue;let e=t.slice(u).join(`/`).slice(-a.length);if((n.caseSensitive?e:e.toLowerCase())!==a)continue}s.push({node:n,index:o,skipped:d,depth:f+1,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_})}}if(i.optional){let e=d|1<<f,t=f+1;for(let n=i.optional.length-1;n>=0;n--){let r=i.optional[n];s.push({node:r,index:u,skipped:e,depth:t,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_})}if(!v)for(let e=i.optional.length-1;e>=0;e--){let n=i.optional[e],{prefix:r,suffix:a}=n;if(r||a){let e=n.caseSensitive?y:b??=y.toLowerCase();if(r&&!e.startsWith(r)||a&&!e.endsWith(a))continue}s.push({node:n,index:u+1,skipped:d,depth:t,statics:p,dynamics:m,optionals:h+I(o,u),extract:g,rawParams:_})}}if(!v&&i.dynamic&&y)for(let e=i.dynamic.length-1;e>=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?y:b??=y.toLowerCase();if(n&&!e.startsWith(n)||r&&!e.endsWith(r))continue}s.push({node:t,index:u+1,skipped:d,depth:f+1,statics:p,dynamics:m+I(o,u),optionals:h,extract:g,rawParams:_})}if(!v&&i.staticInsensitive){let e=i.staticInsensitive.get(b??=y.toLowerCase());e&&s.push({node:e,index:u+1,skipped:d,depth:f+1,statics:p+I(o,u),dynamics:m,optionals:h,extract:g,rawParams:_})}if(!v&&i.static){let e=i.static.get(y);e&&s.push({node:e,index:u+1,skipped:d,depth:f+1,statics:p+I(o,u),dynamics:m,optionals:h,extract:g,rawParams:_})}if(i.pathless){let e=f+1;for(let t=i.pathless.length-1;t>=0;t--){let n=i.pathless[t];s.push({node:n,index:u,skipped:d,depth:e,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_})}}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;e<c.index;e++)n+=t[e].length;let r=n===e.length?`/`:e.slice(n);return c.rawParams??=Object.create(null),c.rawParams[`**`]=decodeURIComponent(r),c}return null}function I(e,t){return 2**(e-t-1)}function Oe(e,t){return e===2**(t-1)-1}function ke(e,t,n){let r,i;try{[r,i]=F(e,t,n)}catch{return null}if(n.rawParams=r,n.extract=i,!n.node.parse)return!0;try{if(n.node.parse(r)===!1)return null}catch{}return!0}function Ae(e,t){return e?t.statics>e.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===E)>(e.node.kind===E)||t.node.kind===E==(e.node.kind===E)&&t.depth>e.depth))):!0}function je(e){return Me(e.filter(e=>e!==void 0).join(`/`))}function Me(e){return e.replace(/\/{2,}/g,`/`)}function Ne(e){return e===`/`?e:e.replace(/^\/{1,}/,``)}function Pe(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/{1,}$/,``):e}function Fe(e){return Pe(Ne(e))}function Ie(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function Le(e,t,n){return Ie(e,n)===Ie(t,n)}function Re({base:e,to:t,trailingSlash:n=`never`,cache:r}){let i=t.startsWith(`/`),a=!i&&t===`.`,o;if(r){o=i?t:a?e:e+`\0`+t;let n=r.get(o);if(n)return n}let s;if(a)s=e.split(`/`);else if(i)s=t.split(`/`);else{for(s=e.split(`/`);s.length>1&&m(s)===``;)s.pop();let n=t.split(`/`);for(let e=0,t=n.length;e<t;e++){let r=n[e];r===``?e?e===t-1&&s.push(r):s=[r]:r===`..`?s.pop():r===`.`||s.push(r)}}s.length>1&&(m(s)===``?n===`never`&&s.pop():n===`always`&&s.push(``));let c=Me(s.join(`/`))||`/`;return o&&r&&r.set(o,c),c}function ze(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=Array.from(t.keys()).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),r=new RegExp(n,`g`);return e=>e.replace(r,e=>t.get(e)??e)}function Be(e,t,n){let r=t[e];return typeof r==`string`?e===`_splat`?/^[a-zA-Z0-9\-._~!/]*$/.test(r)?r:r.split(`/`).map(e=>He(e,n)).join(`/`):He(r,n):r}function Ve({path:e,params:t,decoder:n,...r}){let i=!1,a=Object.create(null);if(!e||e===`/`)return{interpolatedPath:`/`,usedParams:a,isMissingParams:i};if(!e.includes(`$`))return{interpolatedPath:e,usedParams:a,isMissingParams:i};let o=e.length,s=0,c,l=``;for(;s<o;){let r=s;c=ye(e,r,c);let o=c[5];if(s=o+1,r===o)continue;let u=c[0];if(u===0){l+=`/`+e.substring(r,o);continue}if(u===2){let s=t._splat;a._splat=s,a[`*`]=s;let u=e.substring(r,c[1]),d=e.substring(c[4],o);if(!s){i=!0,(u||d)&&(l+=`/`+u+d);continue}let f=Be(`_splat`,t,n);l+=`/`+u+f+d;continue}if(u===1){let s=e.substring(c[2],c[3]);!i&&!(s in t)&&(i=!0),a[s]=t[s];let u=e.substring(r,c[1]),d=e.substring(c[4],o),f=Be(s,t,n)??`undefined`;l+=`/`+u+f+d;continue}if(u===3){let i=e.substring(c[2],c[3]),s=t[i];if(s==null)continue;a[i]=s;let u=e.substring(r,c[1]),d=e.substring(c[4],o),f=Be(i,t,n)??``;l+=`/`+u+f+d;continue}}return e.endsWith(`/`)&&(l+=`/`),{usedParams:a,interpolatedPath:l||`/`,isMissingParams:i}}function He(e,t){let n=encodeURIComponent(e);return t?.(n)??n}function Ue(e={}){if(e.isNotFound=!0,e.throw)throw e;return e}function We(e){return e?.isNotFound===!0}function Ge(e,t=String){let n=new URLSearchParams;for(let r in e){let i=e[r];i!==void 0&&n.set(r,t(i))}return n.toString()}function Ke(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function qe(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Ke(r):Array.isArray(t)?t.push(Ke(r)):n[e]=[t,Ke(r)]}return n}function Je(e){if(e.statusCode=e.statusCode||e.code||307,!e._builtLocation&&!e.reloadDocument&&typeof e.href==`string`)try{new URL(e.href),e.reloadDocument=!0}catch{}let t=new Headers(e.headers);e.href&&t.get(`Location`)===null&&t.set(`Location`,e.href);let n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}function Ye(e){return e instanceof Response&&!!e.options}function Xe(e){if(typeof e==`object`&&e&&e.isSerializedRedirect)return Je(e)}var Ze=`Error preloading route! ☝️`,Qe=(e=>(e[e.AggregateError=1]=`AggregateError`,e[e.ArrowFunction=2]=`ArrowFunction`,e[e.ErrorPrototypeStack=4]=`ErrorPrototypeStack`,e[e.ObjectAssign=8]=`ObjectAssign`,e[e.BigIntTypedArray=16]=`BigIntTypedArray`,e[e.RegExp=32]=`RegExp`,e))(Qe||{}),L=Symbol.asyncIterator,$e=Symbol.hasInstance,et=Symbol.isConcatSpreadable,R=Symbol.iterator,tt=Symbol.match,nt=Symbol.matchAll,rt=Symbol.replace,it=Symbol.search,at=Symbol.species,ot=Symbol.split,st=Symbol.toPrimitive,ct=Symbol.toStringTag,lt=Symbol.unscopables,ut={[L]:0,[$e]:1,[et]:2,[R]:3,[tt]:4,[nt]:5,[rt]:6,[it]:7,[at]:8,[ot]:9,[st]:10,[ct]:11,[lt]:12},dt={0:L,1:$e,2:et,3:R,4:tt,5:nt,6:rt,7:it,8:at,9:ot,10:st,11:ct,12:lt},z=void 0,ft={2:!0,3:!1,1:z,0:null,4:-0,5:1/0,6:-1/0,7:NaN},pt={0:`Error`,1:`EvalError`,2:`RangeError`,3:`ReferenceError`,4:`SyntaxError`,5:`TypeError`,6:`URIError`},mt={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError};function B(e,t,n,r,i,a,o,s,c,l,u,d){return{t:e,i:t,s:n,c:r,m:i,p:a,e:o,a:s,f:c,b:l,o:u,l:d}}function V(e){return B(2,z,e,z,z,z,z,z,z,z,z,z)}var ht=V(2),gt=V(3),_t=V(1),vt=V(0),yt=V(4),bt=V(5),xt=V(6),St=V(7);function Ct(e){switch(e){case`"`:return`\\"`;case`\\`:return`\\\\`;case`
|
|
2
|
+
`:return`\\n`;case`\r`:return`\\r`;case`\b`:return`\\b`;case` `:return`\\t`;case`\f`:return`\\f`;case`<`:return`\\x3C`;case`\u2028`:return`\\u2028`;case`\u2029`:return`\\u2029`;default:return z}}function H(e){let t=``,n=0,r;for(let i=0,a=e.length;i<a;i++)r=Ct(e[i]),r&&(t+=e.slice(n,i)+r,n=i+1);return n===0?t=e:t+=e.slice(n),t}function wt(e){switch(e){case`\\\\`:return`\\`;case`\\"`:return`"`;case`\\n`:return`
|
|
3
|
+
`;case`\\r`:return`\r`;case`\\b`:return`\b`;case`\\t`:return` `;case`\\f`:return`\f`;case`\\x3C`:return`<`;case`\\u2028`:return`\u2028`;case`\\u2029`:return`\u2029`;default:return e}}function U(e){return e.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,wt)}var Tt=`__SEROVAL_REFS__`,Et=new Map,Dt=new Map;function Ot(e){return Et.has(e)}function kt(e){return Dt.has(e)}function At(e){if(Ot(e))return Et.get(e);throw new vn(e)}function jt(e){if(kt(e))return Dt.get(e);throw new yn(e)}typeof globalThis<`u`?Object.defineProperty(globalThis,Tt,{value:Dt,configurable:!0,writable:!1,enumerable:!1}):typeof window<`u`?Object.defineProperty(window,Tt,{value:Dt,configurable:!0,writable:!1,enumerable:!1}):typeof self<`u`?Object.defineProperty(self,Tt,{value:Dt,configurable:!0,writable:!1,enumerable:!1}):typeof global<`u`&&Object.defineProperty(global,Tt,{value:Dt,configurable:!0,writable:!1,enumerable:!1});function Mt(e){return e instanceof EvalError?1:e instanceof RangeError?2:e instanceof ReferenceError?3:e instanceof SyntaxError?4:e instanceof TypeError?5:e instanceof URIError?6:0}function Nt(e){let t=pt[Mt(e)];return e.name===t?e.constructor.name===t?{}:{name:e.constructor.name}:{name:e.name}}function Pt(e,t){let n=Nt(e),r=Object.getOwnPropertyNames(e);for(let i=0,a=r.length,o;i<a;i++)o=r[i],o!==`name`&&o!==`message`&&(o===`stack`?t&4&&(n||={},n[o]=e[o]):(n||={},n[o]=e[o]));return n}function Ft(e){return Object.isFrozen(e)?3:Object.isSealed(e)?2:+!Object.isExtensible(e)}function It(e){switch(e){case 1/0:return bt;case-1/0:return xt}return e===e?Object.is(e,-0)?yt:B(0,z,e,z,z,z,z,z,z,z,z,z):St}function Lt(e){return B(1,z,H(e),z,z,z,z,z,z,z,z,z)}function Rt(e){return B(3,z,``+e,z,z,z,z,z,z,z,z,z)}function zt(e){return B(4,e,z,z,z,z,z,z,z,z,z,z)}function Bt(e,t){let n=t.valueOf();return B(5,e,n===n?t.toISOString():``,z,z,z,z,z,z,z,z,z)}function Vt(e,t){return B(6,e,z,H(t.source),t.flags,z,z,z,z,z,z,z)}function Ht(e,t){return B(17,e,ut[t],z,z,z,z,z,z,z,z,z)}function Ut(e,t){return B(18,e,H(At(t)),z,z,z,z,z,z,z,z,z)}function Wt(e,t,n){return B(25,e,n,H(t),z,z,z,z,z,z,z,z)}function Gt(e,t,n){return B(9,e,z,z,z,z,z,n,z,z,Ft(t),z)}function Kt(e,t){return B(21,e,z,z,z,z,z,z,t,z,z,z)}function qt(e,t,n){return B(15,e,z,t.constructor.name,z,z,z,z,n,t.byteOffset,z,t.length)}function Jt(e,t,n){return B(16,e,z,t.constructor.name,z,z,z,z,n,t.byteOffset,z,t.byteLength)}function Yt(e,t,n){return B(20,e,z,z,z,z,z,z,n,t.byteOffset,z,t.byteLength)}function Xt(e,t,n){return B(13,e,Mt(t),z,H(t.message),n,z,z,z,z,z,z)}function Zt(e,t,n){return B(14,e,Mt(t),z,H(t.message),n,z,z,z,z,z,z)}function Qt(e,t){return B(7,e,z,z,z,z,z,t,z,z,z,z)}function $t(e,t){return B(28,z,z,z,z,z,z,[e,t],z,z,z,z)}function en(e,t){return B(30,z,z,z,z,z,z,[e,t],z,z,z,z)}function tn(e,t,n){return B(31,e,z,z,z,z,z,n,t,z,z,z)}function nn(e,t){return B(32,e,z,z,z,z,z,z,t,z,z,z)}function rn(e,t){return B(33,e,z,z,z,z,z,z,t,z,z,z)}function an(e,t){return B(34,e,z,z,z,z,z,z,t,z,z,z)}function on(e,t,n,r){return B(35,e,n,z,z,z,z,t,z,z,z,r)}var{toString:sn}=Object.prototype,cn={parsing:1,serialization:2,deserialization:3};function ln(e){return`Seroval Error (step: ${cn[e]})`}var un=(e,t)=>ln(e),dn=class extends Error{constructor(e,t){super(un(e,t)),this.cause=t}},fn=class extends dn{constructor(e){super(`parsing`,e)}},pn=class extends dn{constructor(e){super(`deserialization`,e)}};function W(e){return`Seroval Error (specific: ${e})`}var mn=class extends Error{constructor(e){super(W(1)),this.value=e}},hn=class extends Error{constructor(e){super(W(2))}},gn=class extends Error{constructor(e){super(W(3))}},_n=class extends Error{constructor(e){super(W(4))}},vn=class extends Error{constructor(e){super(W(5)),this.value=e}},yn=class extends Error{constructor(e){super(W(6))}},bn=class extends Error{constructor(e){super(W(7))}},G=class extends Error{constructor(e){super(W(8))}},xn=class extends Error{constructor(e){super(W(9))}},Sn=class{constructor(e,t){this.value=e,this.replacement=t}},Cn=()=>{let e={p:0,s:0,f:0};return e.p=new Promise((t,n)=>{e.s=t,e.f=n}),e};Cn.toString(),((e,t)=>{e.s(t),e.p.s=1,e.p.v=t}).toString(),((e,t)=>{e.f(t),e.p.s=2,e.p.v=t}).toString();var wn=()=>{let e=[],t=[],n=!0,r=!1,i=0,a=(e,n,r)=>{for(r=0;r<i;r++)t[r]&&t[r][n](e)},o=(t,i,a,o)=>{for(i=0,a=e.length;i<a;i++)o=e[i],!n&&i===a-1?t[r?`return`:`throw`](o):t.next(o)},s=(e,r)=>(n&&(r=i++,t[r]=e),o(e),()=>{n&&(t[r]=t[i],t[i--]=void 0)});return{__SEROVAL_STREAM__:!0,on:e=>s(e),next:t=>{n&&(e.push(t),a(t,`next`))},throw:i=>{n&&(e.push(i),a(i,`throw`),n=!1,r=!1,t.length=0)},return:i=>{n&&(e.push(i),a(i,`return`),n=!1,r=!0,t.length=0)}}};wn.toString();var Tn=e=>t=>()=>{let n=0,r={[e]:()=>r,next:()=>{if(n>t.d)return{done:!0,value:void 0};let e=n++,r=t.v[e];if(e===t.t)throw r;return{done:e===t.d,value:r}}};return r};Tn.toString();var En=(e,t)=>n=>()=>{let r=0,i=-1,a=!1,o=[],s=[],c=(e=0,t=s.length)=>{for(;e<t;e++)s[e].s({done:!0,value:void 0})};n.on({next:e=>{let t=s.shift();t&&t.s({done:!1,value:e}),o.push(e)},throw:e=>{let t=s.shift();t&&t.f(e),c(),i=o.length,a=!0,o.push(e)},return:e=>{let t=s.shift();t&&t.s({done:!0,value:e}),c(),i=o.length,o.push(e)}});let l={[e]:()=>l,next:()=>{if(i===-1){let e=r++;if(e>=o.length){let e=t();return s.push(e),e.p}return{done:!1,value:o[e]}}if(r>i)return{done:!0,value:void 0};let e=r++,n=o[e];if(e!==i)return{done:!1,value:n};if(a)throw n;return{done:!0,value:n}}};return l};En.toString();var Dn=e=>{let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer};Dn.toString();function On(e){return`__SEROVAL_SEQUENCE__`in e}function kn(e,t,n){return{__SEROVAL_SEQUENCE__:!0,v:e,t,d:n}}function An(e){let t=[],n=-1,r=-1,i=e[R]();for(;;)try{let e=i.next();if(t.push(e.value),e.done){r=t.length-1;break}}catch(e){n=t.length,t.push(e)}return kn(t,n,r)}var jn=Tn(R);function Mn(e){return jn(e)}var Nn={},Pn={},Fn={0:{},1:{},2:{},3:{},4:{},5:{}};function In(e){return`__SEROVAL_STREAM__`in e}function K(){return wn()}function Ln(e){let t=K(),n=e[L]();async function r(){try{let e=await n.next();e.done?t.return(e.value):(t.next(e.value),await r())}catch(e){t.throw(e)}}return r().catch(()=>{}),t}var Rn=En(L,Cn);function zn(e){return Rn(e)}async function Bn(e){try{return[1,await e]}catch(e){return[0,e]}}function Vn(e,t){return{plugins:t.plugins,mode:e,marked:new Set,features:63^(t.disabledFeatures||0),refs:t.refs||new Map,depthLimit:t.depthLimit||1e3}}function Hn(e,t){e.marked.add(t)}function Un(e,t){let n=e.refs.size;return e.refs.set(t,n),n}function Wn(e,t){let n=e.refs.get(t);return n==null?{type:0,value:Un(e,t)}:(Hn(e,n),{type:1,value:zt(n)})}function Gn(e,t){let n=Wn(e,t);return n.type===1?n:Ot(t)?{type:2,value:Ut(n.value,t)}:n}function q(e,t){let n=Gn(e,t);if(n.type!==0)return n.value;if(t in ut)return Ht(n.value,t);throw new mn(t)}function Kn(e,t){let n=Wn(e,Fn[t]);return n.type===1?n.value:B(26,n.value,t,z,z,z,z,z,z,z,z,z)}function qn(e){let t=Wn(e,Nn);return t.type===1?t.value:B(27,t.value,z,z,z,z,z,z,q(e,R),z,z,z)}function Jn(e){let t=Wn(e,Pn);return t.type===1?t.value:B(29,t.value,z,z,z,z,z,[Kn(e,1),q(e,L)],z,z,z,z)}function Yn(e,t,n,r){return B(n?11:10,e,z,z,z,r,z,z,z,z,Ft(t),z)}function Xn(e,t,n,r){return B(8,t,z,z,z,z,{k:n,v:r},z,Kn(e,0),z,z,z)}function Zn(e,t,n){let r=new Uint8Array(n),i=``;for(let e=0,t=r.length;e<t;e++)i+=String.fromCharCode(r[e]);return B(19,t,H(btoa(i)),z,z,z,z,z,Kn(e,5),z,z,z)}function Qn(e,t){return{base:Vn(e,t),child:void 0}}var $n=class{constructor(e,t){this._p=e,this.depth=t}parse(e){return J(this._p,this.depth,e)}};async function er(e,t,n){let r=[];for(let i=0,a=n.length;i<a;i++)i in n?r[i]=await J(e,t,n[i]):r[i]=0;return r}async function tr(e,t,n,r){return Gt(n,r,await er(e,t,r))}async function nr(e,t,n){let r=Object.entries(n),i=[],a=[];for(let n=0,o=r.length;n<o;n++)i.push(H(r[n][0])),a.push(await J(e,t,r[n][1]));return R in n&&(i.push(q(e.base,R)),a.push($t(qn(e.base),await J(e,t,An(n))))),L in n&&(i.push(q(e.base,L)),a.push(en(Jn(e.base),await J(e,t,Ln(n))))),ct in n&&(i.push(q(e.base,ct)),a.push(Lt(n[ct]))),et in n&&(i.push(q(e.base,et)),a.push(n[et]?ht:gt)),{k:i,v:a}}async function rr(e,t,n,r,i){return Yn(n,r,i,await nr(e,t,r))}async function ir(e,t,n,r){return Kt(n,await J(e,t,r.valueOf()))}async function ar(e,t,n,r){return qt(n,r,await J(e,t,r.buffer))}async function or(e,t,n,r){return Jt(n,r,await J(e,t,r.buffer))}async function sr(e,t,n,r){return Yt(n,r,await J(e,t,r.buffer))}async function cr(e,t,n,r){let i=Pt(r,e.base.features);return Xt(n,r,i?await nr(e,t,i):z)}async function lr(e,t,n,r){let i=Pt(r,e.base.features);return Zt(n,r,i?await nr(e,t,i):z)}async function ur(e,t,n,r){let i=[],a=[];for(let[n,o]of r.entries())i.push(await J(e,t,n)),a.push(await J(e,t,o));return Xn(e.base,n,i,a)}async function dr(e,t,n,r){let i=[];for(let n of r.keys())i.push(await J(e,t,n));return Qt(n,i)}async function fr(e,t,n,r){let i=e.base.plugins;if(i)for(let a=0,o=i.length;a<o;a++){let o=i[a];if(o.parse.async&&o.test(r))return Wt(n,o.tag,await o.parse.async(r,new $n(e,t),{id:n}))}return z}async function pr(e,t,n,r){let[i,a]=await Bn(r);return B(12,n,i,z,z,z,z,z,await J(e,t,a),z,z,z)}function mr(e,t,n,r,i){let a=[],o=n.on({next:n=>{Hn(this.base,t),J(this,e,n).then(e=>{a.push(nn(t,e))},e=>{i(e),o()})},throw:n=>{Hn(this.base,t),J(this,e,n).then(e=>{a.push(rn(t,e)),r(a),o()},e=>{i(e),o()})},return:n=>{Hn(this.base,t),J(this,e,n).then(e=>{a.push(an(t,e)),r(a),o()},e=>{i(e),o()})}})}async function hr(e,t,n,r){return tn(n,Kn(e.base,4),await new Promise(mr.bind(e,t,n,r)))}async function gr(e,t,n,r){let i=[];for(let n=0,a=r.v.length;n<a;n++)i[n]=await J(e,t,r.v[n]);return on(n,i,r.t,r.d)}async function _r(e,t,n,r){if(Array.isArray(r))return tr(e,t,n,r);if(In(r))return hr(e,t,n,r);if(On(r))return gr(e,t,n,r);let i=r.constructor;if(i===Sn)return J(e,t,r.replacement);let a=await fr(e,t,n,r);if(a)return a;switch(i){case Object:return rr(e,t,n,r,!1);case z:return rr(e,t,n,r,!0);case Date:return Bt(n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return cr(e,t,n,r);case Number:case Boolean:case String:case BigInt:return ir(e,t,n,r);case ArrayBuffer:return Zn(e.base,n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return ar(e,t,n,r);case DataView:return sr(e,t,n,r);case Map:return ur(e,t,n,r);case Set:return dr(e,t,n,r);default:break}if(i===Promise||r instanceof Promise)return pr(e,t,n,r);let o=e.base.features;if(o&32&&i===RegExp)return Vt(n,r);if(o&16)switch(i){case BigInt64Array:case BigUint64Array:return or(e,t,n,r);default:break}if(o&1&&typeof AggregateError<`u`&&(i===AggregateError||r instanceof AggregateError))return lr(e,t,n,r);if(r instanceof Error)return cr(e,t,n,r);if(R in r||L in r)return rr(e,t,n,r,!!i);throw new mn(r)}async function vr(e,t,n){let r=Gn(e.base,n);if(r.type!==0)return r.value;let i=await fr(e,t,r.value,n);if(i)return i;throw new mn(n)}async function J(e,t,n){switch(typeof n){case`boolean`:return n?ht:gt;case`undefined`:return _t;case`string`:return Lt(n);case`number`:return It(n);case`bigint`:return Rt(n);case`object`:if(n){let r=Gn(e.base,n);return r.type===0?await _r(e,t+1,r.value,n):r.value}return vt;case`symbol`:return q(e.base,n);case`function`:return vr(e,t,n);default:throw new mn(n)}}async function yr(e,t){try{return await J(e,0,t)}catch(e){throw e instanceof fn?e:new fn(e)}}var br=(e=>(e[e.Vanilla=1]=`Vanilla`,e[e.Cross=2]=`Cross`,e))(br||{});function Y(e){return e}function xr(e,t){for(let n=0,r=t.length;n<r;n++){let r=t[n];e.has(r)||(e.add(r),r.extends&&xr(e,r.extends))}}function Sr(e){if(e){let t=new Set;return xr(t,e),[...t]}}function Cr(e){switch(e){case`Int8Array`:return Int8Array;case`Int16Array`:return Int16Array;case`Int32Array`:return Int32Array;case`Uint8Array`:return Uint8Array;case`Uint16Array`:return Uint16Array;case`Uint32Array`:return Uint32Array;case`Uint8ClampedArray`:return Uint8ClampedArray;case`Float32Array`:return Float32Array;case`Float64Array`:return Float64Array;case`BigInt64Array`:return BigInt64Array;case`BigUint64Array`:return BigUint64Array;default:throw new bn(e)}}var wr=1e6,Tr=1e4,Er=2e4;function Dr(e,t){switch(t){case 3:return Object.freeze(e);case 1:return Object.preventExtensions(e);case 2:return Object.seal(e);default:return e}}var Or=1e3;function kr(e,t){let n=t.refs||new Map;return`types`in n||Object.assign(n,{types:new Map}),{mode:e,plugins:t.plugins,refs:n,features:t.features??63^(t.disabledFeatures||0),depthLimit:t.depthLimit||Or}}function Ar(e){return{mode:2,base:kr(2,e),child:z}}var jr=class{constructor(e,t){this._p=e,this.depth=t}deserialize(e){return Z(this._p,this.depth,e)}};function Mr(e,t){if(t<0||!Number.isFinite(t)||!Number.isInteger(t))throw new G({t:4,i:t});if(e.refs.has(t))throw Error(`Conflicted ref id: `+t)}function Nr(e,t,n){return Mr(e.base,t),e.state.marked.has(t)&&e.base.refs.set(t,n),n}function Pr(e,t,n){return Mr(e.base,t),e.base.refs.set(t,n),n}function X(e,t,n){return e.mode===1?Nr(e,t,n):Pr(e,t,n)}function Fr(e,t,n){if(Object.hasOwn(t,n))return t[n];throw new G(e)}function Ir(e,t){return X(e,t.i,jt(U(t.s)))}function Lr(e,t,n){let r=n.a,i=r.length,a=X(e,n.i,Array(i));for(let n=0,o;n<i;n++)o=r[n],o&&(a[n]=Z(e,t,o));return Dr(a,n.o),a}function Rr(e){switch(e){case`constructor`:case`__proto__`:case`prototype`:case`__defineGetter__`:case`__defineSetter__`:case`__lookupGetter__`:case`__lookupSetter__`:return!1;default:return!0}}function zr(e){switch(e){case L:case et:case ct:case R:return!0;default:return!1}}function Br(e,t,n){Rr(t)?e[t]=n:Object.defineProperty(e,t,{value:n,configurable:!0,enumerable:!0,writable:!0})}function Vr(e,t,n,r,i){if(typeof r==`string`)Br(n,U(r),Z(e,t,i));else{let a=Z(e,t,r);switch(typeof a){case`string`:Br(n,a,Z(e,t,i));break;case`symbol`:zr(a)&&(n[a]=Z(e,t,i));break;default:throw new G(r)}}}function Hr(e,t,n){e.base.refs.types.set(t,n)}function Ur(e,t,n,r){if(e.base.refs.types.get(n)!==r)throw new G(t)}function Wr(e,t,n,r){let i=n.k;if(i.length>0)for(let a=0,o=n.v,s=i.length;a<s;a++)Vr(e,t,r,i[a],o[a]);return r}function Gr(e,t,n){let r=X(e,n.i,n.t===10?{}:Object.create(null));return Wr(e,t,n.p,r),Dr(r,n.o),r}function Kr(e,t){return X(e,t.i,new Date(t.s))}function qr(e,t){if(e.base.features&32){let n=U(t.c);if(n.length>Er)throw new G(t);return X(e,t.i,new RegExp(n,t.m))}throw new hn(t)}function Jr(e,t,n){let r=X(e,n.i,new Set);for(let i=0,a=n.a,o=a.length;i<o;i++)r.add(Z(e,t,a[i]));return r}function Yr(e,t,n){let r=X(e,n.i,new Map);for(let i=0,a=n.e.k,o=n.e.v,s=a.length;i<s;i++)r.set(Z(e,t,a[i]),Z(e,t,o[i]));return r}function Xr(e,t){if(t.s.length>wr)throw new G(t);return X(e,t.i,Dn(U(t.s)))}function Zr(e,t,n){let r=Cr(n.c),i=Z(e,t,n.f),a=n.b??0;if(a<0||a>i.byteLength)throw new G(n);return X(e,n.i,new r(i,a,n.l))}function Qr(e,t,n){let r=Z(e,t,n.f),i=n.b??0;if(i<0||i>r.byteLength)throw new G(n);return X(e,n.i,new DataView(r,i,n.l))}function $r(e,t,n,r){if(n.p){let i=Wr(e,t,n.p,{});Object.defineProperties(r,Object.getOwnPropertyDescriptors(i))}return r}function ei(e,t,n){return $r(e,t,n,X(e,n.i,AggregateError([],U(n.m))))}function ti(e,t,n){let r=Fr(n,mt,n.s);return $r(e,t,n,X(e,n.i,new r(U(n.m))))}function ni(e,t,n){let r=Cn(),i=X(e,n.i,r.p),a=Z(e,t,n.f);return n.s?r.s(a):r.f(a),i}function ri(e,t,n){return X(e,n.i,Object(Z(e,t,n.f)))}function ii(e,t,n){let r=e.base.plugins;if(r){let i=U(n.c);for(let a=0,o=r.length;a<o;a++){let o=r[a];if(o.tag===i)return X(e,n.i,o.deserialize(n.s,new jr(e,t),{id:n.i}))}}throw new gn(n.c)}function ai(e,t){let n=X(e,t.i,X(e,t.s,Cn()).p);return Hr(e,t.s,22),n}function oi(e,t,n){let r=e.base.refs.get(n.i);if(r)return Ur(e,n,n.i,22),r.s(Z(e,t,n.a[1])),z;throw new _n(`Promise`)}function si(e,t,n){let r=e.base.refs.get(n.i);if(r)return Ur(e,n,n.i,22),r.f(Z(e,t,n.a[1])),z;throw new _n(`Promise`)}function ci(e,t,n){return Z(e,t,n.a[0]),Mn(Z(e,t,n.a[1]))}function li(e,t,n){return Z(e,t,n.a[0]),zn(Z(e,t,n.a[1]))}function ui(e,t,n){let r=X(e,n.i,K());Hr(e,n.i,31);let i=n.a,a=i.length;if(a)for(let n=0;n<a;n++)Z(e,t,i[n]);return r}function di(e,t,n){let r=e.base.refs.get(n.i);if(r)return Ur(e,n,n.i,31),r.next(Z(e,t,n.f)),z;throw new _n(`Stream`)}function fi(e,t,n){let r=e.base.refs.get(n.i);if(r)return Ur(e,n,n.i,31),r.throw(Z(e,t,n.f)),z;throw new _n(`Stream`)}function pi(e,t,n){let r=e.base.refs.get(n.i);if(r)return Ur(e,n,n.i,31),r.return(Z(e,t,n.f)),z;throw new _n(`Stream`)}function mi(e,t,n){return Z(e,t,n.f),z}function hi(e,t,n){return Z(e,t,n.a[1]),z}function gi(e,t,n){let r=X(e,n.i,kn([],n.s,n.l));for(let i=0,a=n.a.length;i<a;i++)r.v[i]=Z(e,t,n.a[i]);return r}function Z(e,t,n){if(t>e.base.depthLimit)throw new xn(e.base.depthLimit);switch(t+=1,n.t){case 2:return Fr(n,ft,n.s);case 0:return Number(n.s);case 1:return U(String(n.s));case 3:if(String(n.s).length>Tr)throw new G(n);return BigInt(n.s);case 4:return e.base.refs.get(n.i);case 18:return Ir(e,n);case 9:return Lr(e,t,n);case 10:case 11:return Gr(e,t,n);case 5:return Kr(e,n);case 6:return qr(e,n);case 7:return Jr(e,t,n);case 8:return Yr(e,t,n);case 19:return Xr(e,n);case 16:case 15:return Zr(e,t,n);case 20:return Qr(e,t,n);case 14:return ei(e,t,n);case 13:return ti(e,t,n);case 12:return ni(e,t,n);case 17:return Fr(n,dt,n.s);case 21:return ri(e,t,n);case 25:return ii(e,t,n);case 22:return ai(e,n);case 23:return oi(e,t,n);case 24:return si(e,t,n);case 28:return ci(e,t,n);case 30:return li(e,t,n);case 31:return ui(e,t,n);case 32:return di(e,t,n);case 33:return fi(e,t,n);case 34:return pi(e,t,n);case 27:return mi(e,t,n);case 29:return hi(e,t,n);case 35:return gi(e,t,n);default:throw new hn(n)}}function _i(e,t){try{return Z(e,0,t)}catch(e){throw new pn(e)}}var vi=(()=>T).toString();/=>/.test(vi);function yi(e,t){return _i(Ar({plugins:Sr(t.plugins),refs:t.refs,features:t.features,disabledFeatures:t.disabledFeatures,depthLimit:t.depthLimit}),e)}async function bi(e,t={}){let n=Qn(1,{plugins:Sr(t.plugins),disabledFeatures:t.disabledFeatures});return{t:await yr(n,e),f:n.base.features,m:Array.from(n.base.marked)}}function xi(e){return e}function Si(e){return Y({tag:`$TSR/t/`+e.key,test:e.test,parse:{sync(t,n,r){return{v:n.parse(e.toSerializable(t))}},async async(t,n,r){return{v:await n.parse(e.toSerializable(t))}},stream(t,n,r){return{v:n.parse(e.toSerializable(t))}}},serialize:void 0,deserialize(t,n,r){return e.fromSerializable(n.deserialize(t.v))}})}var Ci=class{constructor(e,t){this.stream=e,this.hint=t?.hint??`binary`}},wi=globalThis.Buffer,Ti=!!wi&&typeof wi.from==`function`;function Ei(e){if(e.length===0)return``;if(Ti)return wi.from(e).toString(`base64`);let t=32768,n=[];for(let r=0;r<e.length;r+=t){let i=e.subarray(r,r+t);n.push(String.fromCharCode.apply(null,i))}return btoa(n.join(``))}function Di(e){if(e.length===0)return new Uint8Array;if(Ti){let t=wi.from(e,`base64`);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var Oi=Object.create(null),ki=Object.create(null),Ai=e=>new ReadableStream({start(t){e.on({next(e){try{t.enqueue(Di(e))}catch{}},throw(e){t.error(e)},return(){try{t.close()}catch{}}})}}),ji=new TextEncoder,Mi=e=>new ReadableStream({start(t){e.on({next(e){try{typeof e==`string`?t.enqueue(ji.encode(e)):t.enqueue(Di(e.$b64))}catch{}},throw(e){t.error(e)},return(){try{t.close()}catch{}}})}}),Ni=`(s=>new ReadableStream({start(c){s.on({next(b){try{const d=atob(b),a=new Uint8Array(d.length);for(let i=0;i<d.length;i++)a[i]=d.charCodeAt(i);c.enqueue(a)}catch(_){}},throw(e){c.error(e)},return(){try{c.close()}catch(_){}}})}}))`,Pi=`(s=>{const e=new TextEncoder();return new ReadableStream({start(c){s.on({next(v){try{if(typeof v==='string'){c.enqueue(e.encode(v))}else{const d=atob(v.$b64),a=new Uint8Array(d.length);for(let i=0;i<d.length;i++)a[i]=d.charCodeAt(i);c.enqueue(a)}}catch(_){}},throw(x){c.error(x)},return(){try{c.close()}catch(_){}}})}})})`;function Fi(e){let t=K(),n=e.getReader();return(async()=>{try{for(;;){let{done:e,value:r}=await n.read();if(e){t.return(void 0);break}t.next(Ei(r))}}catch(e){t.throw(e)}finally{n.releaseLock()}})(),t}function Ii(e){let t=K(),n=e.getReader(),r=new TextDecoder(`utf-8`,{fatal:!0});return(async()=>{try{for(;;){let{done:e,value:i}=await n.read();if(e){try{let e=r.decode();e.length>0&&t.next(e)}catch{}t.return(void 0);break}try{let e=r.decode(i,{stream:!0});e.length>0&&t.next(e)}catch{t.next({$b64:Ei(i)})}}}catch(e){t.throw(e)}finally{n.releaseLock()}})(),t}var Li=Y({tag:`tss/RawStream`,extends:[Y({tag:`tss/RawStreamFactory`,test(e){return e===Oi},parse:{sync(e,t,n){return{}},async async(e,t,n){return{}},stream(e,t,n){return{}}},serialize(e,t,n){return Ni},deserialize(e,t,n){return Oi}}),Y({tag:`tss/RawStreamFactoryText`,test(e){return e===ki},parse:{sync(e,t,n){return{}},async async(e,t,n){return{}},stream(e,t,n){return{}}},serialize(e,t,n){return Pi},deserialize(e,t,n){return ki}})],test(e){return e instanceof Ci},parse:{sync(e,t,n){let r=e.hint===`text`?ki:Oi;return{hint:t.parse(e.hint),factory:t.parse(r),stream:t.parse(K())}},async async(e,t,n){let r=e.hint===`text`?ki:Oi,i=e.hint===`text`?Ii(e.stream):Fi(e.stream);return{hint:await t.parse(e.hint),factory:await t.parse(r),stream:await t.parse(i)}},stream(e,t,n){let r=e.hint===`text`?ki:Oi,i=e.hint===`text`?Ii(e.stream):Fi(e.stream);return{hint:t.parse(e.hint),factory:t.parse(r),stream:t.parse(i)}}},serialize(e,t,n){return`(`+t.serialize(e.factory)+`)(`+t.serialize(e.stream)+`)`},deserialize(e,t,n){let r=t.deserialize(e.stream);return t.deserialize(e.hint)===`text`?Mi(r):Ai(r)}});function Ri(e){return Y({tag:`tss/RawStream`,test:()=>!1,parse:{},serialize(){throw Error(`RawStreamDeserializePlugin.serialize should not be called. Client only deserializes.`)},deserialize(t,n,r){return e(typeof n?.deserialize==`function`?n.deserialize(t.streamId):t.streamId)}})}var zi=Y({tag:`$TSR/Error`,test(e){return e instanceof Error},parse:{sync(e,t){return{message:t.parse(e.message)}},async async(e,t){return{message:await t.parse(e.message)}},stream(e,t){return{message:t.parse(e.message)}}},serialize(e,t){return`new Error(`+t.serialize(e.message)+`)`},deserialize(e,t){return Error(t.deserialize(e.message))}}),Q={},Bi=e=>new ReadableStream({start:t=>{e.on({next:e=>{try{t.enqueue(e)}catch{}},throw:e=>{t.error(e)},return:()=>{try{t.close()}catch{}}})}}),Vi=Y({tag:`seroval-plugins/web/ReadableStreamFactory`,test(e){return e===Q},parse:{sync(){return Q},async async(){return await Promise.resolve(Q)},stream(){return Q}},serialize(){return Bi.toString()},deserialize(){return Q}});function Hi(e){let t=K(),n=e.getReader();async function r(){try{let e=await n.read();e.done?t.return(e.value):(t.next(e.value),await r())}catch(e){t.throw(e)}}return r().catch(()=>{}),t}var Ui=[zi,Li,Y({tag:`seroval/plugins/web/ReadableStream`,extends:[Vi],test(e){return typeof ReadableStream>`u`?!1:e instanceof ReadableStream},parse:{sync(e,t){return{factory:t.parse(Q),stream:t.parse(K())}},async async(e,t){return{factory:await t.parse(Q),stream:await t.parse(Hi(e))}},stream(e,t){return{factory:t.parse(Q),stream:t.parse(Hi(e))}}},serialize(e,t){return`(`+t.serialize(e.factory)+`)(`+t.serialize(e.stream)+`)`},deserialize(e,t){return Bi(t.deserialize(e.stream))}})];function Wi(){return[...(p()?.serializationAdapters)?.map(Si)??[],...Ui]}var Gi=new TextDecoder,Ki=new Uint8Array,qi=16*1024*1024,Ji=32*1024*1024,Yi=1024,Xi=1e5;function Zi(e){let t=new Map,n=new Map,r=new Set,i=!1,a=null,o=0,s,c=new ReadableStream({start(e){s=e},cancel(){i=!0;try{a?.cancel()}catch{}t.forEach(e=>{try{e.error(Error(`Framed response cancelled`))}catch{}}),t.clear(),n.clear(),r.clear()}});function u(e){let i=n.get(e);if(i)return i;if(r.has(e))return new ReadableStream({start(e){e.close()}});if(n.size>=Yi)throw Error(`Too many raw streams in framed response (max ${Yi})`);let a=new ReadableStream({start(n){t.set(e,n)},cancel(){r.add(e),t.delete(e),n.delete(e)}});return n.set(e,a),a}function d(e){return u(e),t.get(e)}return(async()=>{let n=e.getReader();a=n;let c=[],u=0;function f(){if(u<9)return null;let e=c[0];if(e.length>=9)return{type:e[0],streamId:(e[1]<<24|e[2]<<16|e[3]<<8|e[4])>>>0,length:(e[5]<<24|e[6]<<16|e[7]<<8|e[8])>>>0};let t=new Uint8Array(9),n=0,r=9;for(let e=0;e<c.length&&r>0;e++){let i=c[e],a=Math.min(i.length,r);t.set(i.subarray(0,a),n),n+=a,r-=a}return{type:t[0],streamId:(t[1]<<24|t[2]<<16|t[3]<<8|t[4])>>>0,length:(t[5]<<24|t[6]<<16|t[7]<<8|t[8])>>>0}}function p(e){if(e===0)return Ki;let t=new Uint8Array(e),n=0,r=e;for(;r>0&&c.length>0;){let e=c[0];if(!e)break;let i=Math.min(e.length,r);t.set(e.subarray(0,i),n),n+=i,r-=i,i===e.length?c.shift():c[0]=e.subarray(i)}return u-=e,t}try{for(;;){let{done:e,value:a}=await n.read();if(i||e)break;if(a){if(u+a.length>Ji)throw Error(`Framed response buffer exceeded ${Ji} bytes`);for(c.push(a),u+=a.length;;){let e=f();if(!e)break;let{type:n,streamId:i,length:a}=e;if(n!==l.JSON&&n!==l.CHUNK&&n!==l.END&&n!==l.ERROR)throw Error(`Unknown frame type: ${n}`);if(n===l.JSON){if(i!==0)throw Error(`Invalid JSON frame streamId (expected 0)`)}else if(i===0)throw Error(`Invalid raw frame streamId (expected non-zero)`);if(a>qi)throw Error(`Frame payload too large: ${a} bytes (max ${qi})`);let c=9+a;if(u<c)break;if(++o>Xi)throw Error(`Too many frames in framed response (max ${Xi})`);p(9);let m=p(a);switch(n){case l.JSON:try{s.enqueue(Gi.decode(m))}catch{}break;case l.CHUNK:{let e=d(i);e&&e.enqueue(m);break}case l.END:{let e=d(i);if(r.add(i),e){try{e.close()}catch{}t.delete(i)}break}case l.ERROR:{let e=d(i);if(r.add(i),e){let n=Gi.decode(m);e.error(Error(n)),t.delete(i)}break}}}}}if(u!==0)throw Error(`Incomplete frame at end of framed response`);try{s.close()}catch{}t.forEach(e=>{try{e.close()}catch{}}),t.clear()}catch(e){try{s.error(e)}catch{}t.forEach(t=>{try{t.error(e)}catch{}}),t.clear()}finally{try{n.releaseLock()}catch{}a=null}})(),{getOrCreateStream:u,jsonChunks:c}}var Qi=null;async function $i(e){e.length>0&&await Promise.allSettled(e)}var ea=Object.prototype.hasOwnProperty;function ta(e){for(let t in e)if(ea.call(e,t))return!0;return!1}async function na(e,t,n){Qi||=Wi();let r=t[0],i=r.fetch??n,a=r.data instanceof FormData?`formData`:`payload`,o=r.headers?new Headers(r.headers):new Headers;if(o.set(`x-tsr-serverFn`,`true`),a===`payload`&&o.set(`accept`,`${c}, application/x-ndjson, application/json`),r.method===`GET`){if(a===`formData`)throw Error(`FormData is not supported with GET requests`);let t=await ra(r);if(t!==void 0){let n=Ge({payload:t});e.includes(`?`)?e+=`&${n}`:e+=`?${n}`}}let s;if(r.method===`POST`){let e=await aa(r);e?.contentType&&o.set(`content-type`,e.contentType),s=e?.body}return await oa(async()=>i(e,{method:r.method,headers:o,signal:r.signal,body:s}))}async function ra(e){let t=!1,n={};if(e.data!==void 0&&(t=!0,n.data=e.data),e.context&&ta(e.context)&&(t=!0,n.context=e.context),t)return ia(n)}async function ia(e){return JSON.stringify(await Promise.resolve(bi(e,{plugins:Qi})))}async function aa(e){if(e.data instanceof FormData){let t;return e.context&&ta(e.context)&&(t=await ia(e.context)),t!==void 0&&e.data.set(a,t),{body:e.data}}let t=await ra(e);if(t)return{body:t,contentType:`application/json`}}async function oa(e){let t;try{t=await e()}catch(e){if(e instanceof Response)t=e;else throw console.log(e),e}if(t.headers.get(`x-tss-raw`)===`true`)return t;let n=t.headers.get(`content-type`);if(n||C(),t.headers.get(`x-tss-serialized`)){let e;if(n.includes(`application/x-tss-framed`)){if(f(n),!t.body)throw Error(`No response body for framed response`);let{getOrCreateStream:r,jsonChunks:i}=Zi(t.body),a=[Ri(r),...Qi||[]],o=new Map;e=await sa({jsonStream:i,onMessage:e=>yi(e,{refs:o,plugins:a}),onError(e,t){console.error(e,t)}})}else if(n.includes(`application/json`)){let n=await t.json(),r=[];try{e=yi(n,{plugins:Qi})}finally{}await $i(r)}if(e||C(),e instanceof Error)throw e;return e}if(n.includes(`application/json`)){let e=await t.json(),n=Xe(e);if(n)throw n;if(We(e))throw e;return e}if(!t.ok)throw Error(await t.text());return t}async function sa({jsonStream:e,onMessage:t,onError:n}){let r=e.getReader(),{value:i,done:a}=await r.read();if(a||!i)throw Error(`Stream ended before first object`);let o=JSON.parse(i),s=!1,c=(async()=>{try{for(;;){let{value:e,done:i}=await r.read();if(i)break;if(e)try{let n=[];try{t(JSON.parse(e))}finally{}await $i(n)}catch(t){n?.(`Invalid JSON: ${e}`,t)}}}catch(e){s||n?.(`Stream processing error:`,e)}})(),l,u=[];try{l=t(o)}catch(e){throw s=!0,r.cancel().catch(()=>{}),e}return await $i(u),Promise.resolve(l).catch(()=>{s=!0,r.cancel().catch(()=>{})}),c.finally(()=>{try{r.releaseLock()}catch{}}),l}function ca(e){let t=`/_serverFn/`+e;return Object.assign((...e)=>{let n=p()?.serverFns?.fetch;return na(t,e,n??fetch)},{url:t,serverFnMeta:{id:e},[o]:!0})}function la(e){if(Array.isArray(e))return e.flatMap(e=>la(e));if(typeof e!=`string`)return[];let t=[],n=0,r,i,a,o,s,c=()=>{for(;n<e.length&&/\s/.test(e.charAt(n));)n+=1;return n<e.length},l=()=>(i=e.charAt(n),i!==`=`&&i!==`;`&&i!==`,`);for(;n<e.length;){for(r=n,s=!1;c();)if(i=e.charAt(n),i===`,`){for(a=n,n+=1,c(),o=n;n<e.length&&l();)n+=1;n<e.length&&e.charAt(n)===`=`?(s=!0,n=o,t.push(e.slice(r,a)),r=n):n=a+1}else n+=1;(!s||n>=e.length)&&t.push(e.slice(r))}return t}function ua(e){return e instanceof Headers?e:Array.isArray(e)||typeof e==`object`?new Headers(e):null}function da(...e){return e.reduce((e,t)=>{let n=ua(t);if(!n)return e;for(let[t,r]of n.entries())t===`set-cookie`?la(r).forEach(t=>e.append(`set-cookie`,t)):e.set(t,r);return e},new Headers)}var $=t(r(),1),fa=$.use,pa=typeof window<`u`?$.useLayoutEffect:$.useEffect;function ma(e){let t=$.useRef({value:e,prev:null}),n=t.current.value;return e!==n&&(t.current={value:e,prev:n}),t.current.prev}function ha(e,t,n={},r={}){$.useEffect(()=>{if(!e.current||r.disabled||typeof IntersectionObserver!=`function`)return;let i=new IntersectionObserver(([e])=>{t(e)},n);return i.observe(e.current),()=>{i.disconnect()}},[t,n,r.disabled,e])}function ga(e){let t=$.useRef(null);return $.useImperativeHandle(e,()=>t.current,[]),t}var _a=n();function va({children:e,fallback:t=null}){return ya()?(0,_a.jsx)($.Fragment,{children:e}):(0,_a.jsx)($.Fragment,{children:t})}function ya(){return $.useSyncExternalStore(ba,()=>!0,()=>!1)}function ba(){return()=>{}}var xa=$.createContext(null);function Sa(e){return $.useContext(xa)}var Ca=e((e=>{var t=r();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:n,a=t.useState,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),wa=e(((e,t)=>{t.exports=Ca()})),Ta=e((e=>{var t=r(),n=wa();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=n.useSyncExternalStore,s=t.useRef,c=t.useEffect,l=t.useMemo,u=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),Ea=e(((e,t)=>{t.exports=Ta()}))();function Da(e,t){return e===t}function Oa(e,t,n=Da){let r=(0,$.useCallback)(t=>{if(!e)return()=>{};let{unsubscribe:n}=e.subscribe(t);return n},[e]),i=(0,$.useCallback)(()=>e?.get(),[e]);return(0,Ea.useSyncExternalStoreWithSelector)(r,i,i,t,n)}var ka=t(i(),1);function Aa(e,t){let n=Sa(),r=ga(t),{activeProps:i,inactiveProps:a,activeOptions:o,to:s,preload:c,preloadDelay:l,preloadIntentProximity:u,hashScrollIntoView:d,replace:f,startTransition:p,resetScroll:m,viewTransition:h,children:_,target:v,disabled:y,style:b,className:ee,onClick:x,onBlur:te,onFocus:S,onMouseEnter:ne,onMouseLeave:re,onTouchStart:ae,ignoreBlocker:oe,params:se,search:ce,hash:le,state:ue,mask:fe,reloadDocument:pe,unsafeRelative:me,from:he,_fromLocation:ge,..._e}=e,C=ya(),w=$.useMemo(()=>e,[n,e.from,e._fromLocation,e.hash,e.to,e.search,e.params,e.state,e.mask,e.unsafeRelative]),E=Oa(n.stores.location,e=>e,(e,t)=>e.href===t.href),D=$.useMemo(()=>{let e={_fromLocation:E,...w};return n.buildLocation(e)},[n,E,w]),ve=D.maskedLocation?D.maskedLocation.publicHref:D.publicHref,ye=D.maskedLocation?D.maskedLocation.external:D.external,O=$.useMemo(()=>za(ve,ye,n.history,y),[y,ye,ve,n.history]),k=$.useMemo(()=>{if(O?.external)return de(O.href,n.protocolAllowlist)?void 0:O.href;if(!Ba(s)&&!(typeof s!=`string`||s.indexOf(`:`)===-1))try{return new URL(s),de(s,n.protocolAllowlist)?void 0:s}catch{}},[s,O,n.protocolAllowlist]),A=$.useMemo(()=>{if(k)return!1;if(o?.exact){if(!Le(E.pathname,D.pathname,n.basepath))return!1}else{let e=Ie(E.pathname,n.basepath),t=Ie(D.pathname,n.basepath);if(!(e.startsWith(t)&&(e.length===t.length||e[t.length]===`/`)))return!1}return(o?.includeSearch??!0)&&!ie(E.search,D.search,{partial:!o?.exact,ignoreUndefined:!o?.explicitUndefined})?!1:o?.includeHash?C&&E.hash===D.hash:!0},[o?.exact,o?.explicitUndefined,o?.includeHash,o?.includeSearch,E,k,C,D.hash,D.pathname,D.search,n.basepath]),j=A?g(i,{})??Ma:ja,M=A?ja:g(a,{})??ja,be=[ee,j.className,M.className].filter(Boolean).join(` `),xe=(b||j.style||M.style)&&{...b,...j.style,...M.style},[Se,Ce]=$.useState(!1),we=$.useRef(!1),N=e.reloadDocument||k?!1:c??n.options.defaultPreload,P=l??n.options.defaultPreloadDelay??0,F=$.useCallback(()=>{n.preloadRoute({...w,_builtLocation:D}).catch(e=>{console.warn(e),console.warn(Ze)})},[n,w,D]);ha(r,$.useCallback(e=>{e?.isIntersecting&&F()},[F]),La,{disabled:!!y||N!==`viewport`}),$.useEffect(()=>{we.current||!y&&N===`render`&&(F(),we.current=!0)},[y,F,N]);let Te=e=>{let t=e.currentTarget.getAttribute(`target`),r=v===void 0?t:v;if(!y&&!Ha(e)&&!e.defaultPrevented&&(!r||r===`_self`)&&e.button===0){e.preventDefault(),(0,ka.flushSync)(()=>{Ce(!0)});let t=n.subscribe(`onResolved`,()=>{t(),Ce(!1)});n.navigate({...w,replace:f,resetScroll:m,hashScrollIntoView:d,startTransition:p,viewTransition:h,ignoreBlocker:oe})}};if(k)return{..._e,ref:r,href:k,..._&&{children:_},...v&&{target:v},...y&&{disabled:y},...b&&{style:b},...ee&&{className:ee},...x&&{onClick:x},...te&&{onBlur:te},...S&&{onFocus:S},...ne&&{onMouseEnter:ne},...re&&{onMouseLeave:re},...ae&&{onTouchStart:ae}};let Ee=e=>{if(y||N!==`intent`)return;if(!P){F();return}let t=e.currentTarget;if(Ia.has(t))return;let n=setTimeout(()=>{Ia.delete(t),F()},P);Ia.set(t,n)},De=e=>{y||N!==`intent`||F()},I=e=>{if(y||!N||!P)return;let t=e.currentTarget,n=Ia.get(t);n&&(clearTimeout(n),Ia.delete(t))};return{..._e,...j,...M,href:O?.href,ref:r,onClick:Ra([x,Te]),onBlur:Ra([te,I]),onFocus:Ra([S,Ee]),onMouseEnter:Ra([ne,Ee]),onMouseLeave:Ra([re,I]),onTouchStart:Ra([ae,De]),disabled:!!y,target:v,...xe&&{style:xe},...be&&{className:be},...y&&Na,...A&&Pa,...C&&Se&&Fa}}var ja={},Ma={className:`active`},Na={role:`link`,"aria-disabled":!0},Pa={"data-status":`active`,"aria-current":`page`},Fa={"data-transitioning":`transitioning`},Ia=new WeakMap,La={rootMargin:`100px`},Ra=e=>t=>{for(let n of e)if(n){if(t.defaultPrevented)return;n(t)}};function za(e,t,n,r){if(!r)return t?{href:e,external:!0}:{href:n.createHref(e)||`/`,external:!1}}function Ba(e){if(typeof e!=`string`)return!1;let t=e.charCodeAt(0);return t===47?e.charCodeAt(1)!==47:t===46}var Va=$.forwardRef((e,t)=>{let{_asChild:n,...r}=e,{type:i,...a}=Aa(r,t),o=typeof r.children==`function`?r.children({isActive:a[`data-status`]===`active`}):r.children;if(!n){let{disabled:e,...t}=a;return $.createElement(`a`,t,o)}return $.createElement(n,a,o)});function Ha(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}var Ua=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Wa=new class extends Ua{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},Ga={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},Ka=new class{#e=Ga;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function qa(e){setTimeout(e,0)}var Ja=typeof window>`u`||`Deno`in globalThis;function Ya(){}function Xa(e,t){return typeof e==`function`?e(t):e}function Za(e){return typeof e==`number`&&e>=0&&e!==1/0}function Qa(e,t){return Math.max(e+(t||0)-Date.now(),0)}function $a(e,t){return typeof e==`function`?e(t):e}function eo(e,t){return typeof e==`function`?e(t):e}function to(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==ro(o,t.options))return!1}else if(!ao(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function no(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(io(t.options.mutationKey)!==io(a))return!1}else if(!ao(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function ro(e,t){return(t?.queryKeyHashFn||io)(e)}function io(e){return JSON.stringify(e,(e,t)=>uo(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function ao(e,t){return e===t?!0:typeof e==typeof t&&e&&t&&typeof e==`object`&&typeof t==`object`?Object.keys(t).every(n=>ao(e[n],t[n])):!1}var oo=Object.prototype.hasOwnProperty;function so(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=lo(e)&&lo(t);if(!r&&!(uo(e)&&uo(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:oo.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=so(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function co(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function lo(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function uo(e){if(!fo(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!fo(n)||!n.hasOwnProperty(`isPrototypeOf`)||Object.getPrototypeOf(e)!==Object.prototype)}function fo(e){return Object.prototype.toString.call(e)===`[object Object]`}function po(e){return new Promise(t=>{Ka.setTimeout(t,e)})}function mo(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:so(e,t)}function ho(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function go(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var _o=Symbol();function vo(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===_o?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function yo(e,t){return typeof e==`function`?e(...t):!!e}function bo(e,t,n){let r=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var xo=(()=>{let e=()=>Ja;return{isServer(){return e()},setIsServer(t){e=t}}})();function So(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}function Co(e){let t;if(e.then(e=>(t=e,e),Ya)?.catch(Ya),t!==void 0)return{data:t}}var wo=qa;function To(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=wo,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var Eo=To(),Do=new class extends Ua{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function Oo(e){return Math.min(1e3*2**e,3e4)}function ko(e){return(e??`online`)===`online`?Do.isOnline():!0}var Ao=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function jo(e){let t=!1,n=0,r,i=So(),a=()=>i.status!==`pending`,o=t=>{if(!a()){let n=new Ao(t);f(n),e.onCancel?.(n)}},s=()=>{t=!0},c=()=>{t=!1},l=()=>Wa.isFocused()&&(e.networkMode===`always`||Do.isOnline())&&e.canRun(),u=()=>ko(e.networkMode)&&e.canRun(),d=e=>{a()||(r?.(),i.resolve(e))},f=e=>{a()||(r?.(),i.reject(e))},p=()=>new Promise(t=>{r=e=>{(a()||l())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,a()||e.onContinue?.()}),m=()=>{if(a())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(d).catch(r=>{if(a())return;let i=e.retry??(xo.isServer()?0:3),o=e.retryDelay??Oo,s=typeof o==`function`?o(n,r):o,c=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!c){f(r);return}n++,e.onFail?.(n,r),po(s).then(()=>l()?void 0:p()).then(()=>{t?f(r):m()})})};return{promise:i,status:()=>i.status,cancel:o,continue:()=>(r?.(),i),cancelRetry:s,continueRetry:c,canStart:u,start:()=>(u()?m():p().then(m),i)}}var Mo=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Za(this.gcTime)&&(this.#e=Ka.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(xo.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(Ka.clearTimeout(this.#e),this.#e=void 0)}};function No(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{bo(e,()=>t.signal,()=>n=!0)},u=vo(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=await u((()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})()),{maxPages:o}=t.options,s=i?go:ho;return{pages:s(e.pages,a,o),pageParams:s(e.pageParams,r,o)}};if(i&&a.length){let e=i===`backward`,t=e?Fo:Po,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:Po(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.options.persister?t.fetchFn=()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function Po(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function Fo(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var Io=class extends Mo{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#r=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=zo(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=zo(this.options);e.data!==void 0&&(this.setState(Ro(e.data,e.dataUpdatedAt)),this.#t=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#r.remove(this)}setData(e,t){let n=mo(this.state.data,e,this.options);return this.#l({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#l({type:`setState`,state:e})}cancel(e){let t=this.#a?.promise;return this.#a?.cancel(e),t?t.then(Ya).catch(Ya):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>eo(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===_o||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>$a(e.options.staleTime,this)===`static`):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!Qa(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#a&&(this.#s||this.#c()?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#r.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}#c(){return this.state.fetchStatus===`paused`&&this.state.status===`pending`}invalidate(){this.state.isInvalidated||this.#l({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#a?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#s=!0,n.signal)})},i=()=>{let e=vo(this.options,t),n=(()=>{let e={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#s=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:i};return r(e),e})();(this.#e===`infinite`?No(this.options.pages):this.options.behavior)?.onFetch(a,this),this.#n=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#l({type:`fetch`,meta:a.fetchOptions?.meta}),this.#a=jo({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof Ao&&e.revert&&this.setState({...this.#n,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#l({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#l({type:`pause`})},onContinue:()=>{this.#l({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#a.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof Ao){if(e.silent)return this.#a.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#l({type:`error`,error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#l(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Lo(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...Ro(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),Eo.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:`updated`,action:e})})}};function Lo(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:ko(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function Ro(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function zo(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Bo=$.createContext(void 0),Vo=e=>{let t=$.useContext(Bo);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},Ho=({client:e,children:t})=>($.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,_a.jsx)(Bo.Provider,{value:e,children:t}));function Uo(e){return e}var Wo=`modulepreload`,Go=function(e){return`/`+e},Ko={},qo=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))},i=document.getElementsByTagName(`link`),a=document.querySelector(`meta[property=csp-nonce]`),o=a?.nonce||a?.getAttribute(`nonce`);r=e(t.map(e=>{if(e=Go(e,n),e in Ko)return;Ko[e]=!0;let t=e.endsWith(`.css`),r=t?`[rel="stylesheet"]`:``;if(n)for(let n=i.length-1;n>=0;n--){let r=i[n];if(r.href===e&&(!t||r.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${e}"]${r}`))return;let a=document.createElement(`link`);if(a.rel=t?`stylesheet`:Wo,t||(a.as=`script`),a.crossOrigin=``,a.href=e,o&&a.setAttribute(`nonce`,o),document.head.appendChild(a),t)return new Promise((t,n)=>{a.addEventListener(`load`,t),a.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${e}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function Jo(e){return e!==`__proto__`&&e!==`constructor`&&e!==`prototype`}function Yo(e,t){let n=Object.create(null);if(e)for(let t of Object.keys(e))Jo(t)&&(n[t]=e[t]);if(t&&typeof t==`object`)for(let e of Object.keys(t))Jo(e)&&(n[e]=t[e]);return n}function Xo(e){if(!e)return Object.create(null);let t=Object.create(null);for(let n of Object.keys(e))Jo(n)&&(t[n]=e[n]);return t}var Zo=()=>{throw Error(`createServerOnlyFn() functions can only be called on the server!`)},Qo=(e,t)=>{let n=t||e||{};n.method===void 0&&(n.method=`GET`);let r=e=>Qo(void 0,{...n,validator:e,inputValidator:e});return Object.assign(e=>Qo(void 0,{...n,...e}),{options:n,middleware:e=>{let t=[...n.middleware||[]];e.map(e=>{s in e?e.options.middleware&&t.push(...e.options.middleware):t.push(e)});let r=Qo(void 0,{...n,middleware:t});return r[s]=!0,r},validator:r,inputValidator:r,handler:(...e)=>{let[t,r]=e,i={...n,extractedFn:t,serverFn:r},a=[...i.middleware||[],ns(i)];return t.method=n.method,Object.assign(async e=>{let n=await $o(a,`client`,{...t,...i,data:e?.data,headers:e?.headers,signal:e?.signal,fetch:e?.fetch,context:Xo()}),r=Xe(n.error);if(r)throw r;if(n.error)throw n.error;return n.result},{...t,method:n.method,__executeServer:async e=>{let n=Zo(),r=n.contextAfterGlobalMiddlewares;return await $o(a,`server`,{...t,...e,serverFnMeta:t.serverFnMeta,context:Yo(e.context,r),request:n.request}).then(e=>({result:e.result,error:e.error,context:e.sendContext}))}})}})};async function $o(e,t,n){let r=es([...p()?.functionMiddleware||[],...e]);if(t===`server`){let e=Zo({throwIfNotFound:!1});e?.executedRequestMiddlewares&&(r=r.filter(t=>!e.executedRequestMiddlewares.has(t)))}let i=async e=>{let n=r.shift();if(!n)return e;try{let r=`validator`in n.options?n.options.validator:void 0;!r&&`inputValidator`in n.options&&(r=n.options.inputValidator),r&&t===`server`&&(e.data=await ts(r,e.data));let a;if(t===`client`?`client`in n.options&&(a=n.options.client):`server`in n.options&&(a=n.options.server),a){let t=async(t={})=>{let n=await i({...e,...t,context:Yo(e.context,t.context),sendContext:Yo(e.sendContext,t.sendContext),headers:da(e.headers,t.headers),_callSiteFetch:e._callSiteFetch,fetch:e._callSiteFetch??t.fetch??e.fetch,result:t.result===void 0?t instanceof Response?t:e.result:t.result,error:t.error??e.error});if(n.error)throw n.error;return n},n=await a({...e,next:t});if(Ye(n))return{...e,error:n};if(n instanceof Response)return{...e,result:n};if(!n)throw Error(`User middleware returned undefined. You must call next() or return a result in your middlewares.`);return n}return i(e)}catch(t){return{...e,error:t}}};return i({...n,headers:n.headers||{},sendContext:n.sendContext||{},context:n.context||Xo(),_callSiteFetch:n.fetch})}function es(e,t=100){let n=new Set,r=[],i=(e,a)=>{if(a>t)throw Error(`Middleware nesting depth exceeded maximum of ${t}. Check for circular references.`);e.forEach(e=>{e.options.middleware&&i(e.options.middleware,a+1),n.has(e)||(n.add(e),r.push(e))})};return i(e,0),r}async function ts(e,t){if(e==null)return{};if(`~standard`in e){let n=await e[`~standard`].validate(t);if(n.issues)throw Error(JSON.stringify(n.issues,void 0,2));return n.value}if(`parse`in e)return e.parse(t);if(typeof e==`function`)return e(t);throw Error(`Invalid validator type!`)}function ns(e){return{"~types":void 0,options:{inputValidator:e.validator??e.inputValidator,client:async({next:t,sendContext:n,fetch:r,...i})=>{let a={...i,context:n,fetch:r};return t(await e.extractedFn?.(a))},server:async({next:t,...n})=>{let r=await e.serverFn?.(n);return t({...n,result:r})}}}}export{je as $,Ka as A,pa as B,mo as C,se as Ct,yo as D,o as Dt,co as E,x as Et,Sa as F,Je as G,ca as H,xa as I,We as J,qe as K,va as L,Ua as M,Va as N,_o as O,Oa as P,Ve as Q,ya as R,ao as S,oe as St,$a as T,ee as Tt,xi as U,ma as V,Ye as W,Me as X,Ue as Y,ze as Z,ro as _,ge as _t,Vo as a,xe as at,to as b,y as bt,Mo as c,be as ct,Eo as d,C as dt,Re as et,So as f,ue as ft,io as g,ie as gt,Xa as h,he as ht,Ho as i,Te as it,Wa as j,Qa as k,jo as l,N as lt,xo as m,ae as mt,qo as n,Ne as nt,Io as o,Ce as ot,Co as p,_e as pt,Ge as q,Uo as r,Pe as rt,Lo as s,Se as st,Qo as t,Fe as tt,Do as u,w as ut,Za as v,me as vt,eo as w,m as wt,Ya as x,de as xt,no as y,g as yt,fa as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{t}from"./reload-error-panel-AHqu0akK.js";var n=e(),r=({error:e})=>(0,n.jsx)(t,{description:e.message,title:`Failed to load Cursor thread`});export{r as errorComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{N as r,a as i}from"./createServerFn-CgRRVpBH.js";import{c as a,i as o,n as s,o as c,r as l}from"./formatters-BM9kB7ed.js";import{t as u}from"./useMutation-CC_B7uy5.js";import{t as d}from"./checkbox-CdHitXWQ.js";import{a as f,c as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./tabs-OO4VU5KR.js";import{n as b,r as x,t as S}from"./download-Bf0QJKD3.js";import{l as C,t as w}from"./delete-confirm-dialog-BHRmyLHr.js";import{t as T}from"./export-dialog-C86SYHJn.js";import{C as E,J as D,T as O,b as k,ct as A,i as j}from"./index-CPvAP-jk.js";import{t as M}from"./metric-card-Dplm0ZiM.js";import{t as N}from"./page-header-Cwa3p6Tl.js";var P=e(n()),F=e=>e===null||!Number.isFinite(e)?null:new Date(e).toISOString(),I=e=>e?{argumentsText:e.argumentsText,callId:e.callId,name:e.name,resultText:e.resultText,status:e.status}:null,L=(e,t,n={})=>({bubbleId:e.bubbleId,createdAtMs:e.createdAtMs,eventType:t,kind:e.kind,source:`cursor_bubble`,text:e.text,thinking:e.thinking,toolCall:I(e.toolCall),...n}),R=(e,t,n,r,i)=>({isHiddenByDefault:!1,kind:`message`,memoryCitation:null,model:null,phase:i,raw:L(e,i===`commentary`?`thinking`:`message`),role:n,sequence:t,text:r,timestamp:F(e.createdAtMs),variant:n===`user`?`user_message`:`agent_message`}),z=e=>e.argumentsText?.trim()?`${e.name}\n${e.argumentsText}`:e.name,B=(e,t,n)=>({argumentsParseFailed:!1,argumentsText:n.argumentsText,callId:n.callId,command:z(n),kind:`tool_call`,name:n.name,raw:L(e,`tool_call`,{argumentsText:n.argumentsText,callId:n.callId,name:n.name,status:n.status}),sequence:t,timestamp:F(e.createdAtMs),workdir:null}),V=(e,t,n)=>{let r=n.resultText?.trim();return r?{callId:n.callId,exitCode:null,kind:`tool_output`,outputText:r,raw:L(e,`tool_output`,{callId:n.callId,name:n.name,resultText:r,status:n.status}),sequence:t,summary:r,timestamp:F(e.createdAtMs),wallTime:null}:null},H=e=>{let t=new Set,n=null,r=()=>{n!==null&&(t.add(n),n=null)};return e.forEach((e,t)=>{if(e.kind!==`assistant`){r();return}e.text.trim()&&(n=t)}),r(),t},U=(e,t,n)=>{if(e.kind!==`assistant`&&e.kind!==`user`)return[];let r=t*10,i=[];if(e.kind===`assistant`&&e.thinking?.trim()&&i.push(R(e,r,`assistant`,e.thinking.trim(),`commentary`)),e.text.trim()){let a=e.kind===`assistant`?n.has(t)?`final_answer`:`commentary`:null;i.push(R(e,r+1,e.kind,e.text,a))}if(e.kind===`assistant`&&e.toolCall){i.push(B(e,r+2,e.toolCall));let t=V(e,r+3,e.toolCall);t&&i.push(t)}return i},W=e=>{let t=H(e.bubbles);return e.bubbles.flatMap((e,n)=>U(e,n,t))},G=(e,t)=>{e.messageCount+=1,t.role===`assistant`&&(e.assistantMessageCount+=1),t.role===`user`&&(e.userMessageCount+=1),t.phase===`commentary`&&(e.commentaryCount+=1),t.phase===`final_answer`&&(e.finalAnswerCount+=1)},K=(e,t)=>{switch(t.kind){case`message`:G(e,t);break;case`tool_call`:e.toolCallCount+=1;break;case`tool_output`:e.toolOutputCount+=1;break;case`web_search`:e.webSearchEventCount+=1;break;default:break}},q=e=>{let t={assistantMessageCount:0,commentaryCount:0,execCommandCount:0,finalAnswerCount:0,messageCount:0,toolCallCount:0,toolOutputCount:0,userMessageCount:0,webSearchEventCount:0};for(let n of e)K(t,n);return t},J=t(),Y=e=>[{label:`Composer ID`,value:(0,J.jsx)(`span`,{"data-mono":`true`,children:e.thread.composerId})},{label:`Workspace`,value:(0,J.jsx)(r,{className:`text-[var(--accent)]`,params:{workspaceKey:e.thread.workspaceKey},to:`/cursor/$workspaceKey`,children:e.thread.workspaceLabel})},{label:`Workspace key`,value:(0,J.jsx)(`span`,{"data-mono":`true`,children:e.thread.workspaceKey})},{label:`Mode`,value:e.thread.mode??`unknown`},{label:`Created`,value:(0,J.jsx)(`span`,{suppressHydrationWarning:!0,children:l(e.thread.createdAtMs)})},{label:`Updated`,value:(0,J.jsx)(`span`,{suppressHydrationWarning:!0,children:l(e.thread.lastUpdatedAtMs)})},{label:`Transcript dirs`,value:e.thread.transcriptDirs.length>0?(0,J.jsx)(`div`,{className:`space-y-1`,children:e.thread.transcriptDirs.map(e=>(0,J.jsx)(`div`,{"data-mono":`true`,children:e},e))}):`n/a`}],X=(e,t,n)=>e.transcript?[{label:`Event kinds`,value:o([...new Set(t.map(e=>e.kind))])},{label:`Messages`,value:c(n.messageCount)},{label:`User messages`,value:c(n.userMessageCount)},{label:`Assistant messages`,value:c(n.assistantMessageCount)},{label:`Commentary updates`,value:c(n.commentaryCount)},{label:`Tool calls`,value:c(n.toolCallCount)},{label:`Tool outputs`,value:c(n.toolOutputCount)},{label:`Renderable bubbles`,value:c(e.transcript.renderableBubbleCount)},{label:`Omitted bubbles`,value:c(e.transcript.omittedBubbleCount)}]:[{label:`Transcript load`,value:`No renderable Cursor transcript content was found.`}],Z=({rawJsonDisabled:e=!1,showCommentary:t,showExtraEvents:n,showRawJson:r,showToolCalls:i,showUserMessages:a,onShowCommentaryChange:o,onShowExtraEventsChange:s,onShowRawJsonChange:c,onShowToolCallsChange:l,onShowUserMessagesChange:u})=>(0,J.jsxs)(`div`,{className:`flex flex-wrap gap-4 rounded-xl border border-[var(--border)] bg-[var(--panel)] px-4 py-3 shadow-[var(--panel-shadow)]`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,J.jsx)(d,{checked:i,id:`cursor-transcript-show-tool-calls`,onCheckedChange:e=>l(e===!0)}),(0,J.jsx)(`label`,{htmlFor:`cursor-transcript-show-tool-calls`,children:`Show tool calls`})]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,J.jsx)(d,{checked:t,id:`cursor-transcript-show-commentary`,onCheckedChange:e=>o(e===!0)}),(0,J.jsx)(`label`,{htmlFor:`cursor-transcript-show-commentary`,children:`Show commentary`})]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,J.jsx)(d,{checked:n,id:`cursor-transcript-show-extra-events`,onCheckedChange:e=>s(e===!0)}),(0,J.jsx)(`label`,{htmlFor:`cursor-transcript-show-extra-events`,children:`Show extra events`})]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,J.jsx)(d,{checked:r,disabled:e,id:`cursor-transcript-show-raw-json`,onCheckedChange:e=>c(e===!0)}),(0,J.jsx)(`label`,{htmlFor:`cursor-transcript-show-raw-json`,children:`Raw JSON`})]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,J.jsx)(d,{checked:a,id:`cursor-transcript-show-user-messages`,onCheckedChange:e=>u(e===!0)}),(0,J.jsx)(`label`,{htmlFor:`cursor-transcript-show-user-messages`,children:`User`})]})]}),Q=({detail:e,events:t,stats:n})=>(0,J.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,J.jsx)(g,{items:Y(e),title:`Thread metadata`}),(0,J.jsx)(g,{items:X(e,t,n),title:`Transcript stats`})]}),$=({detail:e,events:t})=>e.transcript?(0,J.jsxs)(`div`,{className:`space-y-4`,children:[(0,J.jsx)(v,{title:`Thread summary`,value:e.thread}),(0,J.jsx)(v,{title:`Transcript head`,value:e.transcript.head}),(0,J.jsx)(v,{title:`Cursor bubbles`,value:e.transcript.bubbles}),(0,J.jsx)(v,{title:`Transcript events`,value:t})]}):(0,J.jsx)(`div`,{className:`rounded-xl border border-[var(--border)] bg-[var(--panel)] px-5 py-4 text-sm`,children:`No Cursor transcript payload was found for this thread.`}),ee=()=>{let e=A(),t=i(),n=a(k(j.useParams().composerId)).data,[r,o]=(0,P.useState)(!1),[l,d]=(0,P.useState)(!1),[g,v]=(0,P.useState)(!1),[F,I]=(0,P.useState)(!1),[L,R]=(0,P.useState)(!1),[z,B]=(0,P.useState)(!1),[V,H]=(0,P.useState)(!0),U=(0,P.useMemo)(()=>n.transcript?W(n.transcript):[],[n.transcript]),G=(0,P.useMemo)(()=>q(U),[U]),K=u({mutationFn:()=>E({data:{composerIds:[n.thread.composerId]}}),onSuccess:async()=>{await e({params:{workspaceKey:n.thread.workspaceKey},to:`/cursor/$workspaceKey`}),await Promise.all([t.invalidateQueries({queryKey:[`cursor-thread`,n.thread.composerId]}),t.invalidateQueries({queryKey:[`cursor-threads`,n.thread.workspaceKey]}),t.invalidateQueries({queryKey:[`cursor-workspaces`]})])}}),Y=u({mutationFn:async e=>{let t=await O({data:{...e,composerId:n.thread.composerId}});if(t.mode===`download`){S(t.fileName,t.content,t.mimeType);return}await b(t.fileName,t.downloadUrl)},onSuccess:()=>{d(!1)}});return(0,J.jsxs)(`div`,{className:`space-y-6`,children:[(0,J.jsx)(N,{actions:(0,J.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,J.jsxs)(D,{className:`rounded-full`,type:`button`,variant:`outline`,onClick:()=>d(!0),children:[(0,J.jsx)(x,{className:`mr-2 size-4`}),`Export`]}),(0,J.jsxs)(D,{className:`rounded-full border-[var(--destructive)]/20 text-[var(--destructive)]`,type:`button`,variant:`outline`,onClick:()=>o(!0),children:[(0,J.jsx)(C,{className:`mr-2 size-4`}),`Delete`]})]}),breadcrumb:(0,J.jsx)(p,{items:[{label:`Cursor`,to:`/cursor`},{label:n.thread.workspaceLabel,params:{workspaceKey:n.thread.workspaceKey},to:`/cursor/$workspaceKey`},{label:n.thread.name}]}),eyebrow:`Cursor thread`,subtitle:`Thread detail for the selected Cursor workspace conversation.`,title:n.thread.name}),(0,J.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-4`,children:[(0,J.jsx)(M,{label:`Messages`,value:c(n.thread.bubbleCount)}),(0,J.jsx)(M,{label:`Size`,value:s(n.thread.bubbleBytes)}),(0,J.jsx)(M,{label:`Mode`,value:n.thread.mode??`unknown`}),(0,J.jsx)(M,{helper:`${c(n.transcript?.renderableBubbleCount??0)} renderable`,label:`Omitted`,value:c(n.transcript?.omittedBubbleCount??0)})]}),(0,J.jsxs)(y,{className:`space-y-4`,defaultValue:`transcript`,children:[(0,J.jsxs)(_,{className:`grid w-fit min-w-[24rem] grid-cols-3 rounded-full border border-[var(--border)] bg-[var(--panel)] p-1`,children:[(0,J.jsx)(m,{className:`rounded-full px-5 text-sm`,value:`transcript`,children:`Transcript`}),(0,J.jsx)(m,{className:`rounded-full px-5 text-sm`,value:`metadata`,children:`Metadata`}),(0,J.jsx)(m,{className:`rounded-full px-5 text-sm`,value:`raw`,children:`Raw`})]}),(0,J.jsxs)(h,{className:`space-y-3`,value:`transcript`,children:[(0,J.jsx)(Z,{rawJsonDisabled:!n.transcript,showCommentary:F,showExtraEvents:L,showRawJson:z,showToolCalls:g,showUserMessages:V,onShowCommentaryChange:I,onShowExtraEventsChange:R,onShowRawJsonChange:B,onShowToolCallsChange:v,onShowUserMessagesChange:H}),n.transcript&&U.length>0?(0,J.jsx)(f,{assistantModel:null,events:U,projectPath:null,showCommentary:F,showExtraEvents:L,showRawJson:z,showToolCalls:g,showUserMessages:V}):(0,J.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,J.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:`Transcript`}),(0,J.jsx)(`p`,{className:`mt-4 text-[var(--muted-foreground)] text-sm`,children:`No renderable Cursor transcript content was found for this thread.`})]})]}),(0,J.jsx)(h,{value:`metadata`,children:(0,J.jsx)(Q,{detail:n,events:U,stats:G})}),(0,J.jsx)(h,{value:`raw`,children:(0,J.jsx)($,{detail:n,events:U})})]}),(0,J.jsx)(w,{confirmLabel:K.isPending?`Deleting...`:`Delete thread`,description:`Permanently delete "${n.thread.name}" from Cursor's database and remove any on-disk transcript directories. Quit Cursor first. This cannot be undone.`,errorMessage:K.isError?K.error instanceof Error?K.error.message:`Delete failed`:null,open:r,title:`Delete Cursor thread?`,onConfirm:()=>K.mutate(),onOpenChange:e=>{o(e),e||K.reset()}}),(0,J.jsx)(T,{errorMessage:Y.isError?Y.error instanceof Error?Y.error.message:`Export failed`:null,open:l,pending:Y.isPending,title:`Export ${n.thread.name}`,onExport:e=>Y.mutate(e),onOpenChange:e=>{d(e),e||Y.reset()}})]})};export{ee as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{t}from"./reload-error-panel-AHqu0akK.js";var n=e(),r=({error:e})=>(0,n.jsx)(t,{description:e.message,title:`Failed to load Cursor workspace`});export{r as errorComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{N as r,a as i}from"./createServerFn-CgRRVpBH.js";import{c as a,n as o,o as s,r as c}from"./formatters-BM9kB7ed.js";import{t as l}from"./useMutation-CC_B7uy5.js";import{n as u,t as d}from"./data-table-Br78_dk3.js";import{n as f,r as p,t as m}from"./download-Bf0QJKD3.js";import{a as h,i as g,n as _,r as v,t as y}from"./dropdown-menu-Dy5cLzTy.js";import{t as b}from"./refresh-ccw-BgKjOiA6.js";import{l as x,t as S}from"./delete-confirm-dialog-BHRmyLHr.js";import{n as C,t as w}from"./export-dialog-C86SYHJn.js";import{C as T,D as E,E as D,J as O,S as k,T as A,a as j,ct as M,o as N,w as P,x as F}from"./index-CPvAP-jk.js";import{t as I}from"./page-header-Cwa3p6Tl.js";import{n as L,t as R}from"./text-filter-DVAZySUS.js";var z=e(n(),1),B=t(),V=u(),H=[{desc:!0,id:`updatedAt`}],U=(e,t)=>[V.accessor(`name`,{cell:e=>(0,B.jsxs)(r,{className:`block w-[16rem] max-w-[20rem] space-y-1 rounded-md outline-none transition hover:opacity-80 focus-visible:ring-2 focus-visible:ring-[var(--accent)] lg:w-auto`,params:{composerId:e.row.original.composerId},to:`/cursor-threads/$composerId`,children:[(0,B.jsx)(`p`,{className:`truncate font-medium underline-offset-2 hover:underline`,children:e.getValue()}),(0,B.jsxs)(`p`,{className:`truncate text-[var(--muted-foreground)] text-xs`,children:[e.row.original.mode?`${e.row.original.mode} · `:``,e.row.original.composerId]})]}),header:`Thread`}),V.accessor(`lastUpdatedAtMs`,{cell:e=>(0,B.jsx)(`span`,{className:`whitespace-nowrap text-sm`,suppressHydrationWarning:!0,children:c(e.getValue())}),header:`Updated`,id:`updatedAt`}),V.accessor(`createdAtMs`,{cell:e=>(0,B.jsx)(`span`,{className:`whitespace-nowrap text-sm`,suppressHydrationWarning:!0,children:c(e.getValue())}),header:`Created`,id:`createdAt`}),V.accessor(`mode`,{cell:e=>(0,B.jsx)(`span`,{className:`font-mono text-sm`,children:e.getValue()??`unknown`}),header:`Mode`}),V.accessor(`bubbleCount`,{cell:e=>(0,B.jsx)(`span`,{className:`font-mono text-sm`,children:s(e.getValue())}),header:`Messages`}),V.accessor(`bubbleBytes`,{cell:e=>(0,B.jsx)(`span`,{className:`font-mono text-sm`,children:o(e.getValue())}),header:`Size`}),V.display({cell:n=>(0,B.jsxs)(y,{children:[(0,B.jsx)(g,{asChild:!0,children:(0,B.jsx)(O,{"aria-label":`Actions for ${n.row.original.name}`,className:`rounded-full`,size:`icon`,type:`button`,variant:`ghost`,onClick:e=>e.stopPropagation(),children:(0,B.jsx)(h,{className:`size-4`})})}),(0,B.jsxs)(_,{align:`end`,children:[(0,B.jsxs)(v,{disabled:n.row.original.bubbleCount===0,onClick:()=>t(n.row.original),children:[(0,B.jsx)(p,{className:`mr-2 size-4`}),`Export thread`]}),(0,B.jsxs)(v,{className:`text-[var(--destructive)]`,onClick:()=>e(n.row.original),children:[(0,B.jsx)(x,{className:`mr-2 size-4`}),`Delete thread`]})]})]}),enableSorting:!1,header:``,id:`actions`})],W=({onDeleteThread:e,onDeleteThreads:t,onExportThread:n,onExportThreads:r,threads:i})=>(0,B.jsx)(d,{columns:(0,z.useMemo)(()=>U(e,n),[e,n]),data:i,emptyMessage:`No Cursor threads match the current workspace filter.`,enableRowSelection:!0,getRowId:e=>e.composerId,initialSorting:H,renderToolbar:({clearSelection:e,selectedRows:n})=>{if(n.length===0)return(0,B.jsx)(`p`,{className:`text-[var(--muted-foreground)] text-sm`,children:`Select threads to export or delete them in a batch.`});let i=n.map(e=>e.composerId),a=n.some(e=>e.bubbleCount===0);return(0,B.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,B.jsxs)(`p`,{className:`text-sm`,children:[n.length,` thread`,n.length===1?``:`s`,` selected`]}),(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsxs)(O,{className:`rounded-full`,disabled:a,size:`sm`,type:`button`,variant:`outline`,onClick:()=>r(i),children:[(0,B.jsx)(p,{className:`mr-2 size-4`}),`Export selected threads`]}),(0,B.jsxs)(O,{className:`rounded-full border-[var(--destructive)]/20 text-[var(--destructive)]`,size:`sm`,type:`button`,variant:`outline`,onClick:()=>t(i),children:[(0,B.jsx)(x,{className:`mr-2 size-4`}),`Delete selected threads`]}),(0,B.jsxs)(O,{className:`rounded-full`,size:`sm`,type:`button`,variant:`ghost`,onClick:e,children:[(0,B.jsx)(C,{className:`mr-2 size-4`}),`Clear selection`]})]})]})}}),G=(e,t)=>{let n=new Set(t);return e.filter(e=>n.has(e.composerId))},K=e=>e.length===0?null:{kind:`threads`,threads:e},q=e=>e.length===0?null:{composerIds:e.map(e=>e.composerId),label:e.length===1?e[0].name:`${e.length} selected threads`},J=(e,t)=>t?`Deleting...`:e?.kind===`workspace`?`Delete workspace`:e&&e.threads.length>1?`Delete threads`:`Delete thread`,Y=e=>e?e.kind===`workspace`?`Permanently delete every thread for "${e.workspace.label}" from Cursor's database and remove any on-disk transcript directories. Quit Cursor first. This cannot be undone.`:e.threads.length===1?`Permanently delete "${e.threads[0].name}" from Cursor's database and remove any on-disk transcript directories. Quit Cursor first. This cannot be undone.`:`Permanently delete ${e.threads.length} selected Cursor threads and remove any on-disk transcript directories. Quit Cursor first. This cannot be undone.`:``,X=e=>e?.kind===`workspace`?`Delete Cursor workspace?`:e&&e.threads.length>1?`Delete ${e.threads.length} Cursor threads?`:`Delete Cursor thread?`,Z=()=>{let e=M(),t=j.useParams(),n=i(),r=a(k()).data,o=N(r,t.workspaceKey),s=a(F(o.key)).data,[c,u]=(0,z.useState)(``),[d,p]=(0,z.useState)(null),[h,g]=(0,z.useState)(null),_=(0,z.useDeferredValue)(c),v=async()=>{await Promise.all([n.invalidateQueries({queryKey:[`cursor-workspaces`]}),n.invalidateQueries({queryKey:[`cursor-threads`,o.key]})])},y=l({mutationFn:()=>E({data:{apply:!0,workspaceKey:o.key}}),onSuccess:v}),b=l({mutationFn:e=>e.kind===`workspace`?P({data:{workspaceKey:e.workspace.key}}):T({data:{composerIds:e.threads.map(e=>e.composerId)}}),onSuccess:async(t,r)=>{if(r.kind===`workspace`){await e({to:`/cursor`}),await n.invalidateQueries({queryKey:[`cursor-workspaces`]}),p(null);return}await v(),p(null)}}),x=l({mutationFn:async e=>{if(!h)throw Error(`No thread selected for export`);let t=h.composerIds.length===1?await A({data:{...e,composerId:h.composerIds[0]}}):await D({data:{...e,composerIds:h.composerIds}});if(t.mode===`download`){m(t.fileName,t.content,t.mimeType);return}await f(t.fileName,t.downloadUrl)},onSuccess:()=>{g(null)}}),S=s.filter(e=>R(_,[e.name,e.composerId,e.mode,e.workspaceLabel]));return(0,B.jsxs)(`div`,{className:`space-y-6`,children:[(0,B.jsx)(I,{actions:(0,B.jsx)(Q,{deletePending:b.isPending,recoverPending:y.isPending,searchInput:c,workspace:o,onDeleteWorkspace:()=>p({kind:`workspace`,workspace:o}),onRecoverWorkspace:()=>y.mutate(),onSearchInputChange:u}),eyebrow:`Cursor workspace`,subtitle:`Sort by any column, export thread transcripts, delete stale records, or repair split storage buckets for this workspace.`,title:o.label}),(0,B.jsx)($,{workspace:o}),(0,B.jsx)(W,{onDeleteThread:e=>p({kind:`threads`,threads:[e]}),onDeleteThreads:e=>{let t=K(G(S,e));t&&p(t)},onExportThread:e=>g({composerIds:[e.composerId],label:e.name}),onExportThreads:e=>{let t=q(G(S,e));t&&g(t)},threads:S}),(0,B.jsx)(ee,{deleteError:b.isError?b.error:null,exportError:x.isError?x.error:null,recoverError:y.isError?y.error:null}),(0,B.jsx)(te,{pending:b.isPending,pendingDelete:d,onConfirm:()=>{d&&b.mutate(d)},onOpenChange:e=>{e||p(null)}}),(0,B.jsx)(w,{forceZipArchive:h?h.composerIds.length>1:!1,open:h!==null,pending:x.isPending,title:h?`Export ${h.label}`:`Export thread`,onExport:e=>x.mutate(e),onOpenChange:e=>{e||g(null)}})]})},Q=({deletePending:e,recoverPending:t,searchInput:n,workspace:r,onDeleteWorkspace:i,onRecoverWorkspace:a,onSearchInputChange:o})=>(0,B.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[r.needsRecovery?(0,B.jsxs)(O,{className:`rounded-full`,disabled:t,type:`button`,variant:`outline`,onClick:a,children:[(0,B.jsx)(b,{className:`mr-2 size-4`}),t?`Recovering...`:`Recover`]}):null,(0,B.jsxs)(O,{className:`rounded-full`,disabled:e,type:`button`,variant:`outline`,onClick:i,children:[(0,B.jsx)(x,{className:`mr-2 size-4`}),`Delete workspace`]}),(0,B.jsx)(L,{placeholder:`Search thread name, id, or mode`,value:n,onValueChange:o})]}),$=({workspace:e})=>e.needsRecovery?(0,B.jsxs)(`div`,{className:`rounded-xl border border-[var(--border)] bg-[var(--panel)] px-4 py-4`,children:[(0,B.jsx)(`p`,{className:`font-medium text-sm`,children:`This workspace has threads in an older storage bucket.`}),(0,B.jsx)(`p`,{className:`mt-1 text-[var(--muted-foreground)] text-xs`,children:`Recover merges those threads into the active bucket Cursor reads now so they reappear in Chat History. Quit Cursor before running it.`})]}):null,ee=({deleteError:e,exportError:t,recoverError:n})=>{let r=[n?n.message:null,e?e.message:null,t?t.message:null].filter(Boolean);return r.length===0?null:(0,B.jsx)(`div`,{className:`space-y-1`,children:r.map(e=>(0,B.jsx)(`p`,{className:`text-[var(--destructive)] text-sm`,children:e},e))})},te=({pending:e,pendingDelete:t,onConfirm:n,onOpenChange:r})=>(0,B.jsx)(S,{confirmLabel:J(t,e),description:Y(t),open:t!==null,title:X(t),onConfirm:n,onOpenChange:r});export{Z as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{t}from"./reload-error-panel-AHqu0akK.js";var n=e(),r=({error:e})=>(0,n.jsx)(t,{description:e.message,title:`Failed to load Cursor workspaces`});export{r as errorComponent};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{n}from"./react-dom-DL96Jor4.js";import{N as r,a as i}from"./createServerFn-CgRRVpBH.js";import{c as a,o,r as s}from"./formatters-BM9kB7ed.js";import{t as c}from"./useMutation-CC_B7uy5.js";import{n as l,t as u}from"./data-table-Br78_dk3.js";import{a as d,i as f,n as p,r as m,t as h}from"./dropdown-menu-Dy5cLzTy.js";import{t as g}from"./refresh-ccw-BgKjOiA6.js";import{l as _,t as v}from"./delete-confirm-dialog-BHRmyLHr.js";import{D as y,J as b,S as x,w as S}from"./index-CPvAP-jk.js";import{t as C}from"./page-header-Cwa3p6Tl.js";import{t as w}from"./badge-DfWvPfKF.js";import{n as T,t as E}from"./text-filter-DVAZySUS.js";var D=e(n()),O=t(),k=l(),A=e=>e.folders[0]??e.uri,j=e=>e.buckets.length===0?`File history`:`${o(e.buckets.length)} bucket${e.buckets.length===1?``:`s`}`,M=e=>e.needsRecovery?`Recovery available`:e.buckets.length===0?`Activity only`:`Current`,N=(e,t)=>[k.accessor(`label`,{cell:e=>(0,O.jsxs)(r,{className:`block w-[16rem] max-w-[22rem] space-y-1 rounded-md outline-none transition hover:opacity-80 focus-visible:ring-2 focus-visible:ring-[var(--accent)] lg:w-auto`,params:{workspaceKey:e.row.original.key},to:`/cursor/$workspaceKey`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(`p`,{className:`truncate font-medium underline-offset-2 hover:underline`,children:e.getValue()}),e.row.original.needsRecovery?(0,O.jsx)(w,{variant:`outline`,children:`recover`}):null]}),(0,O.jsx)(`p`,{className:`truncate text-[var(--muted-foreground)] text-xs`,children:A(e.row.original)})]}),header:`Workspace`}),k.accessor(`threadCount`,{cell:e=>(0,O.jsx)(`span`,{className:`font-mono text-sm`,children:o(e.getValue())}),header:`Threads`}),k.display({cell:e=>(0,O.jsx)(`span`,{className:`text-sm`,children:j(e.row.original)}),header:`Storage`,id:`storage`}),k.display({cell:e=>(0,O.jsx)(`span`,{className:`text-sm`,children:M(e.row.original)}),header:`State`,id:`state`}),k.accessor(`lastActiveMs`,{cell:e=>(0,O.jsx)(`span`,{className:`whitespace-nowrap text-sm`,suppressHydrationWarning:!0,children:s(e.getValue())}),header:`Last updated`}),k.display({cell:n=>(0,O.jsxs)(h,{children:[(0,O.jsx)(f,{asChild:!0,children:(0,O.jsx)(b,{"aria-label":`Actions for ${n.row.original.label}`,className:`rounded-full`,size:`icon`,type:`button`,variant:`ghost`,onClick:e=>e.stopPropagation(),children:(0,O.jsx)(d,{className:`size-4`})})}),(0,O.jsxs)(p,{align:`end`,children:[n.row.original.needsRecovery?(0,O.jsxs)(m,{onClick:()=>t(n.row.original),children:[(0,O.jsx)(g,{className:`mr-2 size-4`}),`Recover workspace`]}):null,(0,O.jsxs)(m,{className:`text-[var(--destructive)]`,onClick:()=>e(n.row.original),children:[(0,O.jsx)(_,{className:`mr-2 size-4`}),`Delete workspace`]})]})]}),header:``,id:`actions`})],P=({onDeleteWorkspace:e,onRecoverWorkspace:t,workspaces:n})=>(0,O.jsx)(u,{columns:N(e,t),data:n,emptyMessage:`No Cursor workspaces match the current search.`}),F=()=>{let e=i(),t=a(x()).data,[n,r]=(0,D.useState)(``),[o,s]=(0,D.useState)(null),l=(0,D.useDeferredValue)(n),u=async()=>{await e.invalidateQueries({queryKey:[`cursor-workspaces`]})},d=c({mutationFn:e=>y({data:{apply:!0,workspaceKey:e.key}}),onSuccess:u}),f=c({mutationFn:e=>S({data:{workspaceKey:e.key}}),onSuccess:async()=>{await u(),s(null)}}),p=t.filter(e=>E(l,[e.label,e.uri,e.folders.join(`
|
|
2
|
+
`),e.kind]));return(0,O.jsxs)(`div`,{className:`space-y-6`,children:[(0,O.jsx)(C,{actions:(0,O.jsx)(T,{placeholder:`Search workspace name or path`,value:n,onValueChange:r}),eyebrow:`Inventory`,subtitle:`Workspace groups are derived from Cursor storage buckets and activity metadata. Open a workspace to inspect, export, recover, or delete its threads.`,title:`Cursor`}),(0,O.jsx)(P,{onDeleteWorkspace:s,onRecoverWorkspace:e=>d.mutate(e),workspaces:p}),d.isError?(0,O.jsx)(`p`,{className:`text-[var(--destructive)] text-sm`,children:d.error instanceof Error?d.error.message:`Workspace recovery failed`}):null,f.isError?(0,O.jsx)(`p`,{className:`text-[var(--destructive)] text-sm`,children:f.error instanceof Error?f.error.message:`Workspace deletion failed`}):null,(0,O.jsx)(v,{confirmLabel:f.isPending?`Deleting...`:`Delete workspace`,description:o?`Permanently delete every thread for "${o.label}" from Cursor's database and remove any on-disk transcript directories. Quit Cursor first. This cannot be undone.`:``,open:o!==null,title:`Delete Cursor workspace?`,onConfirm:()=>{o&&f.mutate(o)},onOpenChange:e=>{e||s(null)}})]})};export{F as component};
|