agmon 0.2.0 → 0.2.1
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +8 -8
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +15 -14
- package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -14
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/media/route.js.nft.json +1 -1
- package/.next/server/app/api/reports/tokens/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/transcript/route.js.nft.json +1 -1
- package/.next/server/app/api/traces/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/file-content/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +20 -19
- package/.next/server/app/chat.segments/_full.segment.rsc +20 -19
- package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +21 -20
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +20 -18
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/index.segments/_full.segment.rsc +20 -18
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reports/page.js.nft.json +1 -1
- package/.next/server/app/reports/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reports.html +1 -1
- package/.next/server/app/reports.rsc +4 -4
- package/.next/server/app/reports.segments/_full.segment.rsc +4 -4
- package/.next/server/app/reports.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/reports.segments/reports/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/store/page.js.nft.json +1 -1
- package/.next/server/app/store/page_client-reference-manifest.js +1 -1
- package/.next/server/app/store.html +1 -1
- package/.next/server/app/store.rsc +5 -5
- package/.next/server/app/store.segments/_full.segment.rsc +5 -5
- package/.next/server/app/store.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/store.segments/store/__PAGE__.segment.rsc +5 -5
- package/.next/server/chunks/_0ao-_t4jkb46h._.js +2 -2
- package/.next/server/chunks/_0ao-_t4jkb46h._.js.map +1 -1
- package/.next/server/chunks/src_lib_watchers_antigravityWatcher_0w1-atg39y__p.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0i2rbwbkxbdog._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0i2rbwbkxbdog._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0qzscpxebh28_._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0qzscpxebh28_._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1jwplflwix8wi._.js +427 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1jwplflwix8wi._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1kt7h7bz59mdn._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1kt7h7bz59mdn._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1otsvjy81s8my._.js +427 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1otsvjy81s8my._.js.map +1 -0
- package/.next/server/chunks/ssr/_0--937zhi743v._.js +3 -0
- package/.next/server/chunks/ssr/_0--937zhi743v._.js.map +1 -0
- package/.next/server/chunks/ssr/_0e3frtjrk-wi9._.js +3 -0
- package/.next/server/chunks/ssr/_0e3frtjrk-wi9._.js.map +1 -0
- package/.next/server/chunks/ssr/_0h29jdf4relbq._.js +3 -0
- package/.next/server/chunks/ssr/_0h29jdf4relbq._.js.map +1 -0
- package/.next/server/chunks/ssr/_1487-zi23c5eb._.js +1 -1
- package/.next/server/chunks/ssr/_1487-zi23c5eb._.js.map +1 -1
- package/.next/server/chunks/ssr/_1vgwoe-shb9z7._.js +3 -0
- package/.next/server/chunks/ssr/_1vgwoe-shb9z7._.js.map +1 -0
- package/.next/server/chunks/ssr/_1zm4m-s8k7oe3._.js +3 -0
- package/.next/server/chunks/ssr/_1zm4m-s8k7oe3._.js.map +1 -0
- package/.next/server/chunks/ssr/_202tntue-jj6s._.js +3 -0
- package/.next/server/chunks/ssr/_202tntue-jj6s._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_1wlwrgnt65zus._.js → node_modules_00ebs67b4u61w._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0m3ihe65818y_._.js → node_modules_01p9ctt-n2dxp._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1kr1c-ncf8q9t._.js → node_modules_05i69rc9pwcdx._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_02jwra-d9iqim._.js → node_modules_06mgkab1v5iox._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1dff7b_kvngr-._.js → node_modules_07bjxeq9dfgn1._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_02vtgweceovke._.js → node_modules_08q6a-f2itxyo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_13nsmuhey_ti_._.js → node_modules_09v49jhajmvl4._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0oukyh0iq21ow._.js → node_modules_0b8zi3pbl-y9n._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_061uaylfjwqk7._.js → node_modules_0d2ios01ot1in._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0b8ndnuql44z1._.js → node_modules_0dw0vozejrnml._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_05w7qhtrzvnk6._.js → node_modules_0e3njj436xau-._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0z7rdbaf13024._.js → node_modules_0e6qoh__e4a69._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1ll-58c1c-qab._.js → node_modules_0hb0q0epwvp--._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0f773uqgzj7y7._.js → node_modules_0jla9ugf1y6rb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0fd1swhk15cx3._.js → node_modules_0l-y0kqtu_r3o._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1zs2nou5uogby._.js → node_modules_0l814qpw677vm._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1c8i3jrmo4393._.js → node_modules_0lqovp8j8ld76._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0z3elum1675ve._.js → node_modules_0o63z1gd17rhb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1xyxigbqzb8vs._.js → node_modules_0sjdrli5douui._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1iovyom0-y7o_._.js → node_modules_0xh8tnq1niblb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0nde84kzuwv2n._.js → node_modules_0yayrqhzfk8wy._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0__m9_odts7_e._.js → node_modules_0z1e37smavebg._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0f4xh33v3iltc._.js → node_modules_0zb0i39mnjdf3._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_02nv3yff2pqh8._.js → node_modules_10g1mmrf63d8a._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0-6sb1gkbjo93._.js → node_modules_152txg4c7ose3._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_12qn4bepdou5v._.js → node_modules_185fuy4cv7loa._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0dq0dsblt-q0g._.js → node_modules_1aqaelh-8fme6._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1-iyhsn_1p9nx._.js → node_modules_1d4sreyq0ubqg._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0hqa9oxz17hip._.js → node_modules_1e_nc2eyg4djz._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1rlnehdn16ay-._.js → node_modules_1hd7j-tdb8drq._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_12qw2ucebdvol._.js → node_modules_1i3x2csuq_-jt._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0zc49fdcopqu9._.js → node_modules_1l2g7btuh3e4s._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_1-sz_-qddwilq._.js → node_modules_1l46or7mgko0z._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0fs8mckuwk2tj._.js → node_modules_1ltys5mwtcv-n._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0vn0kjn_84lmn._.js → node_modules_1nz3ckv6tu_66._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0t4h1rucl35hl._.js → node_modules_1pquu5wprusnc._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_0-nvg0c4pgfb8._.js → node_modules_1qnypguag6s_l._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1v4lexrfhnlhs._.js → node_modules_1r6w-jlme6d10._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1f4geuvkvlxj1._.js → node_modules_1st9dwe66yx93._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_0kovk4b6czb22._.js → node_modules_1tskcaktx6ods._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_07maxxr-t28ql._.js → node_modules_1wew4nn7i1uup._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1216007ogd5om._.js → node_modules_1zbmc81s-4zsm._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_1kv6lsckqs-m0._.js → node_modules_1zii7uk468cay._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0bmuudv_6eypr._.js → node_modules_katex_dist_katex_mjs_0kqo9zl9cgwbo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0qyy6pq9uzpk0._.js → node_modules_katex_dist_katex_mjs_1604s1ky8db8u._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_1d8fezw1qsiob._.js → node_modules_lucide-react_dist_esm_0-5bcc79665lq._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_0-5bcc79665lq._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_0pezg1352q13j._.js → node_modules_lucide-react_dist_esm_0axoa1eg51x1-._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_0axoa1eg51x1-._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_131i-tjzse3ye._.js → node_modules_lucide-react_dist_esm_18ei1-na3kusb._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_18ei1-na3kusb._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_lucide-react_dist_esm_1to-9cv1ysvs6._.js → node_modules_lucide-react_dist_esm_1tx493x2_auzs._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_1tx493x2_auzs._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_06it7ktosm1dr._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_06it7ktosm1dr._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_page_1vqfk0-j72fp6.js +1 -1
- package/.next/server/chunks/ssr/src_app_page_1vqfk0-j72fp6.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_reports_TokenReportView_jsx_1g3p_enbbsadt._.js +1 -1
- package/.next/server/chunks/ssr/src_components_reports_TokenReportView_jsx_1g3p_enbbsadt._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/preview-props.json +3 -3
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0r9apkv3exqv-.js +1 -0
- package/.next/static/chunks/17jorrh_pfel_.js +1 -0
- package/.next/static/chunks/1n_lb7wmn81jj.js +1 -0
- package/.next/static/chunks/2-w116ewoshm1.js +1 -0
- package/.next/static/chunks/23uup1e8841av.js +1 -0
- package/.next/static/chunks/25l0z48vlvdu4.css +1 -0
- package/.next/static/chunks/2rx7xvi55ohln.js +1 -0
- package/.next/static/chunks/3og0e9qcff393.js +425 -0
- package/.next/static/chunks/3rtpnpqd981z9.js +1 -0
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/bin/cli.js +12 -0
- package/package.json +1 -1
- package/src/app/chat/page.js +14 -14
- package/src/app/globals.css +128 -0
- package/src/app/layout.js +6 -1
- package/src/app/page.js +1 -1
- package/src/components/chat/ChatMessageItem.js +12 -12
- package/src/components/chat/CodeBlock.js +5 -5
- package/src/components/chat/DiffViewer.js +27 -27
- package/src/components/chat/MarkdownRenderer.js +19 -19
- package/src/components/chat/SessionChatView.js +41 -41
- package/src/components/chat/SessionSearch.js +8 -8
- package/src/components/chat/ThinkingAccordion.js +3 -3
- package/src/components/chat/ToolCallCard.js +6 -6
- package/src/components/chat/ToolOutputView.js +19 -19
- package/src/components/factory/office-canvas.js +134 -3
- package/src/components/factory/scene/characters.js +267 -32
- package/src/components/layout/CommandPalette.jsx +12 -0
- package/src/components/layout/EditorTabs.jsx +17 -0
- package/src/components/layout/LayoutToggles.jsx +31 -2
- package/src/components/layout/LeftSidebar.jsx +27 -3
- package/src/components/layout/RightSidebar.jsx +8 -8
- package/src/components/layout/TitleBar.jsx +5 -1
- package/src/components/layout/VSCodeWorkbench.jsx +78 -14
- package/src/components/store/Item3DRenderer.jsx +602 -48
- package/src/components/store/LiveFittingRoom.jsx +55 -791
- package/src/components/store/LiveReactAgent.jsx +1637 -0
- package/src/components/store/SupporterStoreModal.jsx +3 -2
- package/src/components/store/SupporterStoreView.jsx +94 -34
- package/src/components/theme/ThemeSettingsModal.jsx +40 -40
- package/src/components/ui/Button.jsx +4 -4
- package/src/components/ui/Input.jsx +1 -1
- package/src/components/ui/Modal.jsx +6 -6
- package/src/components/ui/Select.jsx +3 -3
- package/src/lib/catalog/auras.js +226 -1199
- package/src/lib/catalog/index.js +60 -1
- package/src/lib/catalog/pets.js +291 -2398
- package/src/lib/catalog/props.js +488 -4199
- package/src/lib/catalog/skins.js +773 -3249
- package/src/lib/catalog/trophies.js +226 -1199
- package/src/lib/mockTraces.js +15 -15
- package/src/lib/supporterStore.js +1 -1
- package/src/lib/traceContract.js +1 -1
- package/src/lib/watchers/claudeWatcher.js +24 -19
- package/.next/server/chunks/ssr/[root-of-the-server]__19s2v5rryc14o._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__19s2v5rryc14o._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1_jerxrctq6ev._.js +0 -427
- package/.next/server/chunks/ssr/[root-of-the-server]__1_jerxrctq6ev._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1pvso-uyf--97._.js +0 -427
- package/.next/server/chunks/ssr/[root-of-the-server]__1pvso-uyf--97._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1y78dc7oiz7ks._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__1y78dc7oiz7ks._.js.map +0 -1
- package/.next/server/chunks/ssr/_0ozao7omdwbvd._.js +0 -3
- package/.next/server/chunks/ssr/_0ozao7omdwbvd._.js.map +0 -1
- package/.next/server/chunks/ssr/_0rcmpdyxc1qwj._.js +0 -3
- package/.next/server/chunks/ssr/_0rcmpdyxc1qwj._.js.map +0 -1
- package/.next/server/chunks/ssr/_0wv0xnhun3mk7._.js +0 -3
- package/.next/server/chunks/ssr/_0wv0xnhun3mk7._.js.map +0 -1
- package/.next/server/chunks/ssr/_17rmaft1zusua._.js +0 -3
- package/.next/server/chunks/ssr/_17rmaft1zusua._.js.map +0 -1
- package/.next/server/chunks/ssr/_1e-d4pcj59a7a._.js +0 -3
- package/.next/server/chunks/ssr/_1e-d4pcj59a7a._.js.map +0 -1
- package/.next/server/chunks/ssr/_1qr5gnh64z8pg._.js +0 -3
- package/.next/server/chunks/ssr/_1qr5gnh64z8pg._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_0pezg1352q13j._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_131i-tjzse3ye._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_1d8fezw1qsiob._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_1to-9cv1ysvs6._.js.map +0 -1
- package/.next/static/chunks/0_3s_e4gd9xl0.js +0 -1
- package/.next/static/chunks/0i4kx4yl-dwfg.js +0 -425
- package/.next/static/chunks/0z0jbobmmvqoc.js +0 -1
- package/.next/static/chunks/1_a_gmob5qzho.js +0 -1
- package/.next/static/chunks/1ifqr4qo4697b.js +0 -1
- package/.next/static/chunks/2ccq9i8ev4dsx.js +0 -1
- package/.next/static/chunks/2mif7onk_9jy-.css +0 -1
- package/.next/static/chunks/40wyf-mv0tiu3.js +0 -1
- /package/.next/server/chunks/ssr/{node_modules_1c8i3jrmo4393._.js.map → node_modules_00ebs67b4u61w._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_02vtgweceovke._.js.map → node_modules_01p9ctt-n2dxp._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1kr1c-ncf8q9t._.js.map → node_modules_05i69rc9pwcdx._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_02jwra-d9iqim._.js.map → node_modules_06mgkab1v5iox._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1dff7b_kvngr-._.js.map → node_modules_07bjxeq9dfgn1._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0m3ihe65818y_._.js.map → node_modules_08q6a-f2itxyo._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0-6sb1gkbjo93._.js.map → node_modules_09v49jhajmvl4._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0oukyh0iq21ow._.js.map → node_modules_0b8zi3pbl-y9n._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_061uaylfjwqk7._.js.map → node_modules_0d2ios01ot1in._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_02nv3yff2pqh8._.js.map → node_modules_0dw0vozejrnml._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0-nvg0c4pgfb8._.js.map → node_modules_0e3njj436xau-._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0fs8mckuwk2tj._.js.map → node_modules_0e6qoh__e4a69._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0t4h1rucl35hl._.js.map → node_modules_0hb0q0epwvp--._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0f773uqgzj7y7._.js.map → node_modules_0jla9ugf1y6rb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0dq0dsblt-q0g._.js.map → node_modules_0l-y0kqtu_r3o._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0zc49fdcopqu9._.js.map → node_modules_0l814qpw677vm._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1wlwrgnt65zus._.js.map → node_modules_0lqovp8j8ld76._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0z3elum1675ve._.js.map → node_modules_0o63z1gd17rhb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1xyxigbqzb8vs._.js.map → node_modules_0sjdrli5douui._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1-iyhsn_1p9nx._.js.map → node_modules_0xh8tnq1niblb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0nde84kzuwv2n._.js.map → node_modules_0yayrqhzfk8wy._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0__m9_odts7_e._.js.map → node_modules_0z1e37smavebg._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0f4xh33v3iltc._.js.map → node_modules_0zb0i39mnjdf3._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0b8ndnuql44z1._.js.map → node_modules_10g1mmrf63d8a._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1-sz_-qddwilq._.js.map → node_modules_152txg4c7ose3._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_12qn4bepdou5v._.js.map → node_modules_185fuy4cv7loa._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0fd1swhk15cx3._.js.map → node_modules_1aqaelh-8fme6._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_13nsmuhey_ti_._.js.map → node_modules_1d4sreyq0ubqg._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0hqa9oxz17hip._.js.map → node_modules_1e_nc2eyg4djz._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1rlnehdn16ay-._.js.map → node_modules_1hd7j-tdb8drq._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_07maxxr-t28ql._.js.map → node_modules_1i3x2csuq_-jt._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1iovyom0-y7o_._.js.map → node_modules_1l2g7btuh3e4s._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1ll-58c1c-qab._.js.map → node_modules_1l46or7mgko0z._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0z7rdbaf13024._.js.map → node_modules_1ltys5mwtcv-n._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0vn0kjn_84lmn._.js.map → node_modules_1nz3ckv6tu_66._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1zs2nou5uogby._.js.map → node_modules_1pquu5wprusnc._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_05w7qhtrzvnk6._.js.map → node_modules_1qnypguag6s_l._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1v4lexrfhnlhs._.js.map → node_modules_1r6w-jlme6d10._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1f4geuvkvlxj1._.js.map → node_modules_1st9dwe66yx93._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_0kovk4b6czb22._.js.map → node_modules_1tskcaktx6ods._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_12qw2ucebdvol._.js.map → node_modules_1wew4nn7i1uup._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1216007ogd5om._.js.map → node_modules_1zbmc81s-4zsm._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_1kv6lsckqs-m0._.js.map → node_modules_1zii7uk468cay._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0bmuudv_6eypr._.js.map → node_modules_katex_dist_katex_mjs_0kqo9zl9cgwbo._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0qyy6pq9uzpk0._.js.map → node_modules_katex_dist_katex_mjs_1604s1ky8db8u._.js.map} +0 -0
- /package/.next/static/{sQnXeiP8rV6y2v0az_xw3 → 1y6Da0YgnPr2_6ncpWrbV}/_buildManifest.js +0 -0
- /package/.next/static/{sQnXeiP8rV6y2v0az_xw3 → 1y6Da0YgnPr2_6ncpWrbV}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{sQnXeiP8rV6y2v0az_xw3 → 1y6Da0YgnPr2_6ncpWrbV}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/next/src/build/templates/app-route.ts","../../../src/lib/watchers/watcherManager.js","../../../src/lib/watchers/claudeWatcher.js","../../../src/lib/mockTraces.js","../../../src/app/api/traces/stream/route.js"],"sourcesContent":["import {\n AppRouteRouteModule,\n type AppRouteRouteHandlerContext,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../server/request-meta'\nimport {\n getTracer,\n type Span,\n SpanKind,\n SpanStatusCode,\n} from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n NextRequestAdapter,\n signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n fromNodeOutgoingHttpHeaders,\n toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport { isRouteCacheOwner } from '../../server/lib/route-cache-key'\nimport {\n CachedRouteKind,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../server/response-cache'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n // The lazy require factory ensures that:\n // - In dev: devRequestTimingInternalsEnd is set before userland executes,\n // correctly attributing module load time to application-code rather than\n // framework internals.\n // - In all modes: async modules (route files with top-level await) are\n // handled correctly — require() returns a Promise for such modules, which\n // ensureUserland() awaits before the first request is handled.\n userland: () => require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n // In Turbopack dev mode, also provide a synchronous per-request getter so\n // server HMR updates are picked up without re-executing the entry chunk.\n // Using require() (synchronous) avoids adding async overhead that would be\n // incorrectly attributed to application-code time in devRequestTiming.\n ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n ? {\n getUserland: () =>\n require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n }\n : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n\nexport async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n }\n let srcPage = 'VAR_DEFINITION_PAGE'\n\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return null\n }\n\n const {\n buildId,\n deploymentId,\n params,\n nextConfig,\n parsedUrl,\n isDraftMode,\n prerenderManifest,\n routerServerContext,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n resolvedPathname,\n clientReferenceManifest,\n serverActionsManifest,\n previewProps,\n } = prepareResult\n\n const normalizedSrcPage = normalizeAppPath(srcPage)\n\n // Only this route's prerenders can establish ISR or admit generated params.\n const isPrerendered =\n Boolean(prerenderManifest.routes[resolvedPathname]) &&\n (routeModule.isDev ||\n isRouteCacheOwner(\n resolvedPathname,\n routeModule.cacheOwner,\n prerenderManifest.routes[resolvedPathname]\n ))\n\n let isIsr = Boolean(\n prerenderManifest.dynamicRoutes[normalizedSrcPage] || isPrerendered\n )\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n return null\n }\n\n if (isIsr && !isDraftMode) {\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n }\n }\n\n let cacheKey: string | null = null\n\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n })\n }\n\n const method = req.method || 'GET'\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n const isWrappedByNextServer = Boolean(\n routerServerContext?.isWrappedByNextServer\n )\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const incrementalCache =\n getRequestMeta(req, 'incrementalCache') ||\n (await routeModule.getIncrementalCache(\n req,\n nextConfig,\n previewProps,\n prerenderManifest,\n isMinimalMode\n ))\n\n incrementalCache?.resetRequestCache()\n ;(globalThis as any).__incrementalCache = incrementalCache\n\n const context: AppRouteRouteHandlerContext = {\n params,\n previewProps,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n useCacheTimeout: nextConfig.experimental.useCacheTimeout,\n durableUseCacheEntries: Boolean(\n nextConfig.experimental.durableUseCacheEntries\n ),\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n validationLevel: nextConfig.experimental.instantInsights.validationLevel,\n isDraftMode,\n incrementalCache,\n hmrRefreshHash: getRequestMeta(req, 'hmrRefreshHash'),\n cacheLifeProfiles: nextConfig.cacheLife,\n staticPageGenerationTimeout: nextConfig.staticPageGenerationTimeout,\n waitUntil: ctx.waitUntil,\n onClose: (cb) => {\n res.on('close', cb)\n },\n onAfterTaskError: undefined,\n },\n sharedContext: {\n buildId,\n deploymentId,\n },\n }\n const nodeNextReq = new NodeNextRequest(req)\n const nodeNextRes = new NodeNextResponse(res)\n\n const nextReq = NextRequestAdapter.fromNodeNextRequest(\n nodeNextReq,\n signalFromNodeResponse(res)\n )\n\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n try {\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n const response =\n cacheKey === null\n ? await routeModule.handle(nextReq, context)\n : await routeModule.prerender(nextReq, context)\n\n ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil)\n pendingWaitUntil = undefined\n }\n }\n const cacheTags = context.renderOpts.collectedTags\n\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob()\n\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n }\n\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type\n }\n\n const revalidate =\n typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n ? false\n : context.renderOpts.collectedRevalidate\n\n const expire =\n typeof context.renderOpts.collectedExpire === 'undefined' ||\n context.renderOpts.collectedExpire >= INFINITE_CACHE\n ? // Fall back to the global `expireTime` config when the\n // route has a numeric `revalidate` but didn't declare an\n // explicit `expire` (e.g. via `cacheLife`). This mirrors the\n // build-time fallback in `build/index.ts` so cache entries\n // and the response Cache-Control header agree on the route's\n // effective expire. Routes that opt out of revalidation\n // (`revalidate: false`) or that are dynamic (`revalidate: 0`)\n // keep `expire: undefined`.\n revalidate !== false && revalidate > 0\n ? nextConfig.expireTime\n : undefined\n : context.renderOpts.collectedExpire\n\n // Create the cache entry for the response.\n const cacheEntry: ResponseCacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers,\n },\n cacheControl: { revalidate, expire },\n }\n\n return cacheEntry\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, pendingWaitUntil)\n return null\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: cacheKey !== null,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n const handleResponse = async (\n currentSpan: Span | undefined,\n parentSpan: Span | undefined\n ) => {\n try {\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n previewProps,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode,\n })\n\n if (cacheEntry !== null && 'error' in cacheEntry) {\n throw cacheEntry.error\n }\n\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return\n }\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n throw new Error(\n `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n )\n }\n\n if (!isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : cacheEntry.isMiss\n ? 'MISS'\n : cacheEntry.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER)\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (\n cacheEntry.cacheControl &&\n !res.getHeader('Cache-Control') &&\n !headers.get('Cache-Control')\n ) {\n headers.set(\n 'Cache-Control',\n getCacheControlHeader(cacheEntry.cacheControl)\n )\n }\n\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200,\n })\n )\n return\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: cacheKey !== null,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n\n // If this is during static generation, throw the error again.\n if (isIsr) throw err\n\n // Otherwise, send a 500 response unless the original response has\n // already committed. In that case, preserve its status code for\n // telemetry while still recording the failure and terminating a response\n // that the failed pipeline left open.\n if (res.headersSent) {\n if (currentSpan) {\n const error =\n err instanceof Error ? err : new Error('Unknown app route error')\n currentSpan.recordException(error)\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n })\n currentSpan.setAttribute('error.type', error.name)\n }\n if (!res.writableEnded && !res.destroyed) {\n res.end()\n }\n } else {\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n new Response(null, { status: 500 })\n )\n }\n return\n } finally {\n ;(() => {\n if (!currentSpan) {\n return\n }\n\n let statusCode = res.statusCode\n\n currentSpan.setAttributes({\n 'http.status_code': statusCode,\n 'next.rsc': false,\n })\n\n if (statusCode && statusCode >= 500) {\n // For 5xx status codes: SHOULD be set to 'Error' span status.\n // x-ref: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n })\n // For span status 'Error', SHOULD set 'error.type' attribute.\n currentSpan.setAttribute('error.type', statusCode.toString())\n }\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route') || normalizedSrcPage\n const name = `${method} ${route}`\n\n currentSpan.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n currentSpan.updateName(name)\n\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== currentSpan) {\n parentSpan.setAttribute('http.route', route)\n parentSpan.updateName(name)\n }\n })()\n }\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan, undefined)\n } else {\n let parentSpan = tracer.getActiveScopeSpan()\n await tracer.withPropagatedContext(\n req.headers,\n () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n (span) => handleResponse(span, parentSpan)\n ),\n undefined,\n !isWrappedByNextServer\n )\n }\n}\n","import { getAntigravityTraces } from \"./antigravityWatcher.js\";\nimport { getClaudeTraces } from \"./claudeWatcher.js\";\nimport { extractProviders } from \"../traceContract.js\";\n\n/**\n * WatcherManager aggregates traces across all installed CLI watchers\n * (Antigravity, Claude Code, etc.) with automatic fallback and caching.\n */\nlet cachedSnapshot = { traces: [], errors: [] };\nlet lastFetchTime = 0;\nconst CACHE_TTL_MS = 1500; // 1.5s cache to avoid reading disks too frequently\n\nexport async function getLiveTraceSnapshot(force = false, maxAgeMs = 24 * 60 * 60 * 1000) {\n const now = Date.now();\n if (!force && now - lastFetchTime < CACHE_TTL_MS) {\n return cachedSnapshot;\n }\n\n const results = await Promise.allSettled([\n getAntigravityTraces(maxAgeMs),\n getClaudeTraces(maxAgeMs),\n ]);\n const errors = [];\n const [agyResult, claudeResult] = results;\n const agyList = agyResult.status === \"fulfilled\" ? agyResult.value : [];\n const claudeList = claudeResult.status === \"fulfilled\" ? claudeResult.value : [];\n if (agyResult.status === \"rejected\") errors.push({ source: \"antigravity\", message: agyResult.reason?.message || \"Watcher failed\" });\n if (claudeResult.status === \"rejected\") errors.push({ source: \"claude\", message: claudeResult.reason?.message || \"Watcher failed\" });\n\n const combined = [...agyList, ...claudeList];\n\n // Sort: active/streaming/pending first, then by most recent startedAt\n combined.sort((a, b) => {\n const activeA = (a.state === \"streaming\" || a.state === \"pending\") ? 1 : 0;\n const activeB = (b.state === \"streaming\" || b.state === \"pending\") ? 1 : 0;\n if (activeA !== activeB) return activeB - activeA;\n return (b.startedAt || 0) - (a.startedAt || 0);\n });\n\n cachedSnapshot = { traces: combined, errors };\n lastFetchTime = now;\n return cachedSnapshot;\n}\n\nexport async function getAllLiveTraces(force = false, maxAgeMs) {\n return (await getLiveTraceSnapshot(force, maxAgeMs)).traces;\n}\n\nexport function getProvidersFromTraces(traces) {\n return extractProviders(traces);\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport os from \"node:os\";\nimport { normalizeTrace } from \"../traceContract.js\";\n\nfunction isProcessAlive(pid) {\n if (!pid || typeof pid !== \"number\") return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (e) {\n return e.code === \"EPERM\";\n }\n}\n\nfunction extractWorkspaceFromFolder(folderName) {\n if (!folderName) return null;\n const cleaned = folderName.replace(/--claude-worktrees.*/, \"\");\n const parts = cleaned.split(\"-\").filter(Boolean);\n return parts.length > 0 ? parts[parts.length - 1] : folderName;\n}\n\nfunction normalizeClaudeTool(name, input = {}) {\n const n = String(name || \"\").toLowerCase();\n const cmd = String(input.command || \"\").trim();\n const cmdLower = cmd.toLowerCase();\n\n if (n === \"bash\") {\n if (cmdLower.startsWith(\"docker\") || cmdLower.includes(\"docker exec\")) {\n return { type: \"docker\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n if (cmdLower.startsWith(\"git \") || cmdLower.startsWith(\"gh \")) {\n return { type: \"git\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n if (cmdLower.includes(\"gitnexus\")) {\n return { type: \"gitnexus\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n return { type: \"bash\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n\n if (n.includes(\"read\") || n.includes(\"view\") || n.includes(\"glob\")) {\n const file = input.file_path || input.path || \"\";\n return { type: \"read\", detail: file ? `Read: ${path.basename(file)}` : \"Read file\" };\n }\n\n if (n.includes(\"edit\") || n.includes(\"write\") || n.includes(\"patch\") || n.includes(\"replace\")) {\n const file = input.file_path || input.path || \"\";\n return { type: \"edit\", detail: file ? `Edit: ${path.basename(file)}` : \"Edit file\" };\n }\n\n if (n.includes(\"grep\") || n.includes(\"search\")) {\n return { type: \"search\", detail: input.pattern ? `Search: ${input.pattern}` : \"Search\" };\n }\n\n if (n.includes(\"agent\") || n.includes(\"task\")) {\n return { type: \"agent\", detail: \"Subagent Task\" };\n }\n\n if (n.includes(\"browser\") || n.includes(\"playwright\")) {\n return { type: \"browser\", detail: \"Browser automation\" };\n }\n\n if (n.includes(\"gitnexus\")) {\n return { type: \"gitnexus\", detail: \"GitNexus query\" };\n }\n\n return { type: \"mcp\", detail: name };\n}\n\nfunction detectProvider(modelName, clientType = \"cli\") {\n const m = String(modelName || \"\").toLowerCase();\n let base = null;\n if (m.includes(\"claude\")) base = \"anthropic\";\n else if (m.includes(\"gemini\")) base = \"gemini\";\n else if (m.includes(\"gpt\") || m.includes(\"o1\") || m.includes(\"o3\")) base = \"openai\";\n else if (m.includes(\"minimax\")) base = \"minimax\";\n else if (m.includes(\"deepseek\")) base = \"deepseek\";\n return base ? `${base} (${clientType})` : null;\n}\n\nfunction compactText(value, maxLength = 160) {\n const text = String(value || \"\").replace(/\\s+/g, \" \").trim();\n return text ? text.slice(0, maxLength) : null;\n}\n\nfunction getTextContent(content) {\n if (typeof content === \"string\") return compactText(content);\n if (!Array.isArray(content)) return null;\n const combined = content\n .filter((block) => block?.type === \"text\" && block.text)\n .map((block) => block.text)\n .join(\" \");\n return compactText(combined);\n}\n\nfunction isPreviewableText(text) {\n return Boolean(text && !/^\\[request interrupted by user\\]$/i.test(text));\n}\n\nasync function parseClaudeTranscript(transcriptPath) {\n const result = {\n totalIn: 0,\n totalOut: 0,\n totalCached: 0,\n hasUsage: false,\n model: null,\n activeTool: null,\n activeCommand: null,\n sessionTitle: null,\n lastText: null,\n lastTextRole: null,\n toolSet: new Set(),\n lastTimestamp: 0,\n toolInvocations: [],\n recentLogs: [],\n entrypoint: null,\n cwd: null,\n slug: null,\n sessionId: null,\n isLooping: false,\n };\n\n try {\n const content = await fs.readFile(transcriptPath, \"utf-8\");\n const lines = content.trim().split(\"\\n\");\n\n for (const line of lines) {\n if (!line) continue;\n try {\n const entry = JSON.parse(line);\n const entryTime = entry.timestamp ? new Date(entry.timestamp).getTime() : Date.now();\n if (entry.timestamp) result.lastTimestamp = entryTime;\n if (entry.sessionId && !result.sessionId) result.sessionId = entry.sessionId;\n if (entry.entrypoint && !result.entrypoint) result.entrypoint = entry.entrypoint;\n if (entry.cwd && !result.cwd) result.cwd = entry.cwd;\n if (entry.slug && !result.slug) result.slug = entry.slug;\n\n if (entry.type === \"ai-title\") {\n result.sessionTitle = compactText(entry.aiTitle, 80) || result.sessionTitle;\n } else if (entry.type === \"last-prompt\") {\n const prompt = compactText(entry.lastPrompt);\n if (prompt) {\n result.lastText = prompt;\n result.lastTextRole = \"user\";\n }\n }\n\n const msg = entry.message;\n if (msg) {\n if (msg.model) result.model = msg.model;\n const u = msg.usage;\n if (u) {\n result.hasUsage = true;\n if (u.input_tokens) result.totalIn += u.input_tokens;\n if (u.output_tokens) result.totalOut += u.output_tokens;\n if (u.cache_read_input_tokens) result.totalCached += u.cache_read_input_tokens;\n }\n\n if (msg.role === \"user\") {\n const prompt = getTextContent(msg.content);\n if (isPreviewableText(prompt)) {\n result.lastText = prompt;\n result.lastTextRole = \"user\";\n result.recentLogs.push({\n timestamp: entry.timestamp || new Date().toISOString(),\n type: \"prompt\",\n summary: \"User Prompt\",\n detail: prompt.slice(0, 100),\n });\n }\n } else if (msg.role === \"assistant\") {\n const response = getTextContent(msg.content);\n if (response) {\n result.lastText = response;\n result.lastTextRole = \"assistant\";\n }\n }\n\n if (Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n const { type, detail } = normalizeClaudeTool(block.name, block.input);\n result.toolSet.add(type);\n result.activeTool = type;\n if (detail) result.activeCommand = detail;\n\n result.toolInvocations.push({\n name: block.name,\n time: entryTime,\n detail: detail || block.name,\n });\n\n result.recentLogs.push({\n timestamp: entry.timestamp || new Date().toISOString(),\n type: type || \"tool\",\n summary: block.name,\n detail: detail || block.name,\n });\n } else if (block.type === \"tool_result\" && block.is_error) {\n result.recentLogs.push({\n timestamp: entry.timestamp || new Date().toISOString(),\n type: \"error\",\n summary: \"Tool Error\",\n detail: String(block.content || \"Error\").slice(0, 100),\n });\n }\n }\n }\n }\n } catch {\n // ignore malformed line\n }\n }\n\n // Loop detection: 5 consecutive identical tool calls (same tool and target) within 60s\n if (result.toolInvocations.length >= 5) {\n const lastN = result.toolInvocations.slice(-10);\n for (let s = 0; s <= lastN.length - 5; s++) {\n const window = lastN.slice(s, s + 5);\n const targetKey = `${window[0].name}:${window[0].detail}`;\n const sameCall = window.every((w) => `${w.name}:${w.detail}` === targetKey);\n const timeSpan = (window[window.length - 1].time || 0) - (window[0].time || 0);\n if (sameCall && (timeSpan <= 60000 || timeSpan === 0)) {\n result.isLooping = true;\n break;\n }\n }\n }\n } catch {\n // unreadable transcript\n }\n\n return result;\n}\n\nexport async function getClaudeTraces(maxAgeMs = 24 * 60 * 60 * 1000) {\n const homeDir = os.homedir();\n const sessionsDir = path.join(homeDir, \".claude\", \"sessions\");\n const projectsDir = path.join(homeDir, \".claude\", \"projects\");\n const fallbackWorkspace = path.basename(process.cwd()) || \"agent-factory\";\n\n const now = Date.now();\n const traces = [];\n const seenSessionIds = new Set();\n\n // 1. Scan active sessions from ~/.claude/sessions/*.json\n try {\n const sessionFiles = await fs.readdir(sessionsDir).catch(() => []);\n for (const f of sessionFiles) {\n if (!f.endsWith(\".json\")) continue;\n try {\n const rawMeta = await fs.readFile(path.join(sessionsDir, f), \"utf-8\");\n const meta = JSON.parse(rawMeta);\n const { pid, sessionId, cwd, startedAt, updatedAt, status, name, entrypoint } = meta;\n\n const alive = isProcessAlive(pid);\n const lastActive = updatedAt || startedAt || 0;\n\n // Alive processes are ALWAYS kept regardless of age!\n if (!alive && (now - lastActive > maxAgeMs)) continue;\n\n if (sessionId) seenSessionIds.add(sessionId);\n\n // Find associated jsonl transcript in projects folder\n let transcriptPath = null;\n try {\n const projectFolders = await fs.readdir(projectsDir).catch(() => []);\n for (const pf of projectFolders) {\n const candidate = path.join(projectsDir, pf, `${sessionId}.jsonl`);\n try {\n await fs.access(candidate);\n transcriptPath = candidate;\n break;\n } catch {\n // try next\n }\n }\n } catch {\n // ignore\n }\n\n const parsed = transcriptPath ? await parseClaudeTranscript(transcriptPath) : {};\n\n const isExtension =\n entrypoint === \"claude-vscode\" ||\n entrypoint === \"vscode\" ||\n parsed.entrypoint === \"claude-vscode\";\n\n const clientType = isExtension ? \"extension\" : \"cli\";\n\n let state = \"done\";\n if (alive) {\n if (status === \"busy\" || status === \"running\" || status === \"working\") {\n state = \"streaming\";\n } else if (status === \"idle\") {\n state = \"idle\";\n } else {\n state = \"idle\";\n }\n }\n\n const workspaceName = cwd\n ? path.basename(cwd)\n : (parsed.cwd ? path.basename(parsed.cwd) : (name || fallbackWorkspace));\n\n const lastTimestamp = parsed.lastTimestamp || lastActive;\n const elapsedMs = Math.max(0, (lastTimestamp || now) - (startedAt || now));\n\n const sessionTitle =\n parsed.sessionTitle ||\n (parsed.slug ? parsed.slug.replace(/-/g, \" \") : null) ||\n name ||\n workspaceName;\n\n const model = parsed.model || null;\n const connectionId = isExtension\n ? `Claude Extension (${name || pid || (sessionId ? sessionId.slice(0, 6) : \"ext\")})`\n : `Claude (${name || pid || (sessionId ? sessionId.slice(0, 6) : \"cli\")})`;\n\n traces.push(normalizeTrace({\n traceId: `claude-${pid || (sessionId ? sessionId.slice(0, 6) : \"session\")}`,\n cli: \"claude\",\n clientType,\n source: clientType,\n connectionId,\n account: workspaceName,\n model,\n provider: detectProvider(model, clientType),\n state,\n startedAt: startedAt || null,\n elapsedMs: startedAt ? elapsedMs : null,\n tokens: {\n input: parsed.hasUsage ? parsed.totalIn : null,\n output: parsed.hasUsage ? parsed.totalOut : null,\n cached: parsed.hasUsage ? parsed.totalCached : null,\n },\n cost: null,\n status: parsed.isLooping ? \"error\" : null,\n tools: Array.from(parsed.toolSet || []),\n activeTool: parsed.activeTool || null,\n currentCommand: parsed.activeCommand || null,\n sessionTitle,\n lastText: parsed.lastText || null,\n lastTextRole: parsed.lastTextRole || null,\n isLooping: parsed.isLooping || false,\n logs: (parsed.recentLogs || []).slice(-25),\n }));\n } catch {\n // ignore single session error\n }\n }\n } catch {\n // ignore sessionsDir error\n }\n\n // 2. Scan recent transcripts dynamically from ~/.claude/projects/*/*.jsonl\n // Catches all project-level active & historical sessions within the time window\n try {\n const projectFolders = await fs.readdir(projectsDir).catch(() => []);\n for (const pf of projectFolders) {\n const folderPath = path.join(projectsDir, pf);\n let files = [];\n try {\n files = await fs.readdir(folderPath);\n } catch {\n continue;\n }\n\n for (const file of files) {\n if (!file.endsWith(\".jsonl\")) continue;\n const fileSessionId = file.replace(\".jsonl\", \"\");\n if (seenSessionIds.has(fileSessionId)) continue;\n\n const transcriptPath = path.join(folderPath, file);\n try {\n const stat = await fs.stat(transcriptPath);\n const mtime = stat.mtimeMs;\n if (now - mtime > maxAgeMs) continue;\n\n seenSessionIds.add(fileSessionId);\n const parsed = await parseClaudeTranscript(transcriptPath);\n\n const isRecent = (now - mtime) < 90 * 1000;\n const isPending = (now - mtime) < 15 * 60 * 1000;\n const state = isRecent ? \"streaming\" : isPending ? \"idle\" : \"done\";\n\n const isExtension =\n parsed.entrypoint === \"claude-vscode\" ||\n parsed.entrypoint === \"vscode\";\n\n const clientType = isExtension ? \"extension\" : \"cli\";\n const workspaceName = parsed.cwd\n ? path.basename(parsed.cwd)\n : (extractWorkspaceFromFolder(pf) || fallbackWorkspace);\n\n const elapsedMs = Math.max(0, (parsed.lastTimestamp || mtime) - stat.birthtimeMs);\n\n const sessionTitle =\n parsed.sessionTitle ||\n (parsed.slug ? parsed.slug.replace(/-/g, \" \") : null) ||\n workspaceName;\n\n const model = parsed.model || null;\n const connectionId = isExtension\n ? `Claude Extension (${parsed.slug || fileSessionId.slice(0, 6)})`\n : `Claude (${parsed.slug || fileSessionId.slice(0, 6)})`;\n\n traces.push(normalizeTrace({\n traceId: `claude-${fileSessionId.slice(0, 6)}`,\n cli: \"claude\",\n clientType,\n source: clientType,\n connectionId,\n account: workspaceName,\n model,\n provider: detectProvider(model, clientType),\n state,\n startedAt: stat.birthtimeMs || null,\n elapsedMs: stat.birthtimeMs ? elapsedMs : null,\n tokens: {\n input: parsed.totalIn || null,\n output: parsed.totalOut || null,\n cached: parsed.totalCached || null,\n },\n cost: null,\n status: parsed.isLooping ? \"error\" : null,\n tools: Array.from(parsed.toolSet || []),\n activeTool: parsed.activeTool || null,\n currentCommand: parsed.activeCommand || null,\n sessionTitle,\n lastText: parsed.lastText || null,\n lastTextRole: parsed.lastTextRole || null,\n isLooping: parsed.isLooping || false,\n logs: (parsed.recentLogs || []).slice(-25),\n }));\n } catch {\n // ignore unreadable project file\n }\n }\n }\n } catch {\n // ignore projects scan error\n }\n\n // Sort: active (streaming/pending) first, then by most recent startedAt\n traces.sort((a, b) => {\n const activeA = (a.state === \"streaming\" || a.state === \"pending\") ? 1 : 0;\n const activeB = (b.state === \"streaming\" || b.state === \"pending\") ? 1 : 0;\n if (activeA !== activeB) return activeB - activeA;\n return (b.startedAt || 0) - (a.startedAt || 0);\n });\n\n return traces;\n}\n","export const MOCK_PRESETS = {\n showcase: { agents: 24, errorRatio: 0, preset: \"showcase\", label: \"All Items Showcase (24)\" },\n cases: { agents: 17, errorRatio: 0, cases: true, label: \"Edge Cases & Items (17)\" },\n showcase_skins: { agents: 15, errorRatio: 0, preset: \"showcase_skins\", label: \"Skins & Outfits (15)\" },\n showcase_props: { agents: 14, errorRatio: 0, preset: \"showcase_props\", label: \"Tech Props & Gadgets (14)\" },\n showcase_pets: { agents: 12, errorRatio: 0, preset: \"showcase_pets\", label: \"Pets & Companions (12)\" },\n showcase_auras: { agents: 12, errorRatio: 0, preset: \"showcase_auras\", label: \"Particle Auras & VFX (12)\" },\n showcase_trophies: { agents: 12, errorRatio: 0, preset: \"showcase_trophies\", label: \"Trophies & Badges (12)\" },\n storm: { agents: 30, errorRatio: 0.15, label: \"Storm (30 Agents)\" },\n busy: { agents: 8, errorRatio: 0, label: \"Busy (8 Agents)\" },\n idle: { agents: 2, errorRatio: 0, label: \"Idle (2 Agents)\" },\n errors: { agents: 10, errorRatio: 0.6, label: \"Error States\" },\n};\n\nconst CLIENTS = [\n { account: \"Claude Code · main\", icon: \"terminal\" },\n { account: \"Claude Code · review\", icon: \"rate_review\" },\n { account: \"Antigravity · agent\", icon: \"smart_toy\" },\n { account: \"Antigravity · dev\", icon: \"construction\" },\n { account: \"Cursor · workspace\", icon: \"edit_note\" },\n { account: \"OpenCode · build\", icon: \"science\" },\n { account: \"Aider\", icon: \"smart_toy\" },\n { account: \"Continue · dev\", icon: \"play_arrow\" },\n];\n\nconst PROVIDER_MODELS = [\n { provider: \"claude\", model: \"claude-3-7-sonnet\" },\n { provider: \"gemini\", model: \"gemini-2.5-pro\" },\n { provider: \"openai\", model: \"gpt-4o\" },\n { provider: \"minimax\", model: \"minimax-m2\" },\n { provider: \"deepseek\", model: \"deepseek-v3\" },\n];\n\nconst ERROR_REASONS = [\n \"rate_limited\",\n \"upstream_timeout\",\n \"quota_exhausted\",\n \"auth_refresh_failed\",\n];\n\nexport const MOCK_TOOL_TYPES = [\"bash\", \"read\", \"edit\", \"search\", \"web\", \"mcp\", \"agent\", \"gitnexus\", \"browser\", \"git\", \"docker\"];\n\n/**\n * 1. Enriched Edge Cases Deck: 17 real edge-case conditions with personality-matched gear.\n */\nexport const CASE_DECK = [\n {\n name: \"01 · Sleeping (Dozing Shiba)\",\n state: \"done\",\n ageMs: 38000,\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_50\", // dozing_shiba\n aura: \"none\",\n trophy: \"none\",\n },\n {\n name: \"02 · Happy (Celebration)\",\n state: \"done\",\n ageMs: 9000,\n cost: 1.42,\n skin: \"skin_200\", // celestial_astro\n props: [\"prop_200\"], // arcade_cabinet\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"03 · Pending (Drone Thinking)\",\n state: \"pending\",\n ageMs: 2500,\n tools: [\"todo\"],\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_100\", // hover_drone\n aura: \"none\",\n trophy: \"none\",\n },\n {\n name: \"04 · GitNexus (Matrix Rain)\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"gitnexus\", \"read\"],\n skin: \"skin_150\", // matrix_hacker\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"05 · Docker (Quantum Mist)\",\n state: \"streaming\",\n ageMs: 15000,\n tools: [\"docker\", \"bash\"],\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_50\", // quantum_mist\n trophy: \"none\",\n },\n {\n name: \"06 · Browser (Holo Emitter)\",\n state: \"streaming\",\n ageMs: 16000,\n tools: [\"browser\", \"web\"],\n skin: \"skin_1\", // cyber_suit\n props: [\"prop_150\"], // hologram_emitter\n pet: \"pet_100\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"07 · Git+Agent (Arcade Diamond)\",\n state: \"streaming\",\n ageMs: 12000,\n tools: [\"git\", \"agent\"],\n concurrent: 4,\n skin: \"skin_51\", // mecha_pilot\n props: [\"prop_200\"], // arcade_cabinet\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"08 · Rate Limited (Oscilloscope)\",\n state: \"error\",\n ageMs: 6000,\n error: \"rate_limited\",\n skin: \"skin_101\", // stealth_ninja\n props: [\"prop_300\"], // lab_oscilloscope\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"09 · Upstream Timeout (Bonsai)\",\n state: \"error\",\n ageMs: 30000,\n error: \"upstream_timeout\",\n skin: \"skin_201\", // celestial_astro\n props: [\"prop_250\"], // terrarium_bonsai\n pet: \"pet_100\", // hover_drone\n aura: \"none\",\n trophy: \"none\",\n },\n {\n name: \"10 · Quota Exhausted (Server)\",\n state: \"error\",\n ageMs: 8000,\n error: \"quota_exhausted\",\n skin: \"skin_151\", // matrix_hacker\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_0\", // matrix_rain\n trophy: \"none\",\n },\n {\n name: \"11 · Auth Failed (Ninja Spark)\",\n state: \"error\",\n ageMs: 5000,\n error: \"auth_refresh_failed\",\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_75\", // glitch_halo\n trophy: \"none\",\n },\n {\n name: \"12 · Fallback 1 (Espresso Station)\",\n state: \"streaming\",\n ageMs: 13000,\n tools: [\"bash\"],\n fallbackShift: 3,\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"13 · Fallback 2 (Holo + Key)\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"browser\", \"mcp\"],\n fallbackShift: 2,\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_150\"], // hologram_emitter\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"14 · Slow Task (DualMon + Owl)\",\n state: \"streaming\",\n ageMs: 36000,\n tools: [\"docker\"],\n skin: \"skin_152\", // matrix_hacker\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"15 · Queue+Cached (Bonsai Master)\",\n state: \"streaming\",\n ageMs: 10000,\n tools: [\"read\", \"search\"],\n concurrent: 5,\n cachedBoost: true,\n skin: \"skin_202\", // celestial_astro\n props: [\"prop_250\"], // terrarium_bonsai\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"16 · Runaway Loop (Oscilloscope)\",\n state: \"streaming\",\n ageMs: 18000,\n tools: [\"bash\"],\n isLooping: true,\n skin: \"skin_102\", // stealth_ninja\n props: [\"prop_300\"], // lab_oscilloscope\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"17 · Expensive Task (Arcade Bug)\",\n state: \"done\",\n ageMs: 20000,\n cost: 7.35,\n skin: \"skin_52\", // mecha_pilot\n props: [\"prop_200\", \"prop_0\"], // arcade + supercomputer\n pet: \"pet_100\", // hover_drone\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_75\", // diamond_bug\n },\n];\n\n/**\n * 2. Comprehensive Showcase Deck: 24 workstations covering 100% of archetypes across all categories.\n */\nexport const SHOWCASE_ALL_DECK = [\n {\n name: \"01 · CyberSuit · Server · Cat\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"gitnexus\", \"read\"],\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"02 · MechaPilot · DualMon · Shiba\",\n state: \"streaming\",\n ageMs: 16000,\n tools: [\"docker\", \"bash\"],\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"03 · StealthNinja · Espresso · Drone\",\n state: \"happy\",\n ageMs: 9000,\n cost: 1.45,\n tools: [\"edit\"],\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_100\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"04 · MatrixHacker · Holo · Owl\",\n state: \"streaming\",\n ageMs: 18000,\n tools: [\"browser\", \"web\"],\n skin: \"skin_150\", // matrix_hacker\n props: [\"prop_150\"], // hologram_emitter\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"05 · CelestialAstro · Arcade · Cat\",\n state: \"happy\",\n ageMs: 11000,\n cost: 2.1,\n tools: [\"bash\"],\n skin: \"skin_200\", // celestial_astro\n props: [\"prop_200\"], // arcade_cabinet\n pet: \"pet_2\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"06 · CyberSuit · Bonsai + Server\",\n state: \"pending\",\n ageMs: 2400,\n tools: [\"todo\"],\n skin: \"skin_1\", // cyber_suit\n props: [\"prop_250\", \"prop_1\"], // terrarium_bonsai + supercomputer\n pet: \"pet_51\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"07 · MechaPilot · Oscilloscope · Drone\",\n state: \"streaming\",\n ageMs: 22000,\n tools: [\"agent\", \"git\"],\n skin: \"skin_51\", // mecha_pilot\n props: [\"prop_300\"], // lab_oscilloscope\n pet: \"pet_101\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"08 · StealthNinja · DualMon + Espresso\",\n state: \"streaming\",\n ageMs: 15000,\n tools: [\"read\", \"search\"],\n skin: \"skin_101\", // stealth_ninja\n props: [\"prop_51\", \"prop_101\"], // dual_monitor + espresso\n pet: \"pet_151\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"09 · MatrixHacker · Oscilloscope (Loop)\",\n state: \"streaming\",\n ageMs: 19000,\n tools: [\"bash\"],\n isLooping: true,\n skin: \"skin_151\", // matrix_hacker\n props: [\"prop_301\"], // lab_oscilloscope\n pet: \"pet_3\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"10 · CelestialAstro · Holo · Shiba\",\n state: \"streaming\",\n ageMs: 13000,\n tools: [\"mcp\", \"bash\"],\n skin: \"skin_201\", // celestial_astro\n props: [\"prop_151\"], // hologram_emitter\n pet: \"pet_52\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"11 · CyberSuit · Arcade · Drone\",\n state: \"streaming\",\n ageMs: 21000,\n tools: [\"docker\"],\n skin: \"skin_2\", // cyber_suit\n props: [\"prop_201\"], // arcade_cabinet\n pet: \"pet_102\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"12 · MechaPilot · Bonsai · Owl (Sleep)\",\n state: \"done\",\n ageMs: 39000,\n skin: \"skin_52\", // mecha_pilot\n props: [\"prop_251\"], // terrarium_bonsai\n pet: \"pet_152\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"13 · StealthNinja · Server (Error)\",\n state: \"error\",\n ageMs: 6500,\n error: \"rate_limited\",\n skin: \"skin_102\", // stealth_ninja\n props: [\"prop_2\"], // supercomputer\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_26\", // plasma_ring\n trophy: \"trophy_1\", // golden_key\n },\n {\n name: \"14 · MatrixHacker · DualMon · Shiba\",\n state: \"streaming\",\n ageMs: 12000,\n tools: [\"web\", \"read\"],\n skin: \"skin_152\", // matrix_hacker\n props: [\"prop_52\"], // dual_monitor\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_51\", // quantum_mist\n trophy: \"trophy_26\", // silicon_wafer\n },\n {\n name: \"15 · CelestialAstro · Espresso · Drone\",\n state: \"happy\",\n ageMs: 8500,\n cost: 3.2,\n tools: [\"git\"],\n skin: \"skin_202\", // celestial_astro\n props: [\"prop_102\"], // espresso_station\n pet: \"pet_100\", // hover_drone\n aura: \"aura_76\", // glitch_halo\n trophy: \"trophy_51\", // quantum_crystal\n },\n {\n name: \"16 · CyberSuit · Holo · Owl\",\n state: \"streaming\",\n ageMs: 17000,\n tools: [\"bash\", \"edit\"],\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_152\"], // hologram_emitter\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_1\", // matrix_rain\n trophy: \"trophy_76\", // diamond_bug\n },\n {\n name: \"17 · MechaPilot · Arcade · Cat\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"agent\", \"gitnexus\"],\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_202\"], // arcade_cabinet\n pet: \"pet_2\", // cyber_cat\n aura: \"aura_27\", // plasma_ring\n trophy: \"trophy_2\", // golden_key\n },\n {\n name: \"18 · StealthNinja · Bonsai · Shiba\",\n state: \"pending\",\n ageMs: 2200,\n tools: [\"todo\"],\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_252\"], // terrarium_bonsai\n pet: \"pet_51\", // dozing_shiba\n aura: \"aura_52\", // quantum_mist\n trophy: \"trophy_27\", // silicon_wafer\n },\n {\n name: \"19 · MatrixHacker · Oscilloscope · Drone\",\n state: \"streaming\",\n ageMs: 16000,\n tools: [\"docker\", \"mcp\"],\n skin: \"skin_150\", // matrix_hacker\n props: [\"prop_302\"], // lab_oscilloscope\n pet: \"pet_101\", // hover_drone\n aura: \"aura_77\", // glitch_halo\n trophy: \"trophy_52\", // quantum_crystal\n },\n {\n name: \"20 · CelestialAstro · Server · Owl\",\n state: \"streaming\",\n ageMs: 25000,\n tools: [\"read\", \"bash\"],\n skin: \"skin_200\", // celestial_astro\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_151\", // cyber_owl\n aura: \"aura_2\", // matrix_rain\n trophy: \"trophy_77\", // diamond_bug\n },\n {\n name: \"21 · CyberSuit · DualMon + Arcade\",\n state: \"happy\",\n ageMs: 9500,\n cost: 4.5,\n tools: [\"gitnexus\"],\n skin: \"skin_1\", // cyber_suit\n props: [\"prop_50\", \"prop_200\"], // dual_monitor + arcade\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"22 · MechaPilot · Espresso + Holo\",\n state: \"streaming\",\n ageMs: 13500,\n tools: [\"web\", \"mcp\"],\n skin: \"skin_51\", // mecha_pilot\n props: [\"prop_100\", \"prop_150\"], // espresso + holo\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"23 · StealthNinja · Oscilloscope + Server\",\n state: \"streaming\",\n ageMs: 15500,\n tools: [\"agent\", \"bash\"],\n skin: \"skin_101\", // stealth_ninja\n props: [\"prop_300\", \"prop_1\"], // oscilloscope + supercomputer\n pet: \"pet_100\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"24 · MatrixHacker · Bonsai + DualMon\",\n state: \"streaming\",\n ageMs: 17500,\n tools: [\"git\", \"edit\"],\n skin: \"skin_151\", // matrix_hacker\n props: [\"prop_250\", \"prop_51\"], // bonsai + dual_monitor\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n];\n\n/**\n * 3. Skins Showcase: 15 agents comparing 5 archetypes in 3 colorways each.\n */\nexport const SHOWCASE_SKINS_DECK = [\n { name: \"CyberSuit · Cyan\", skin: \"skin_0\", state: \"streaming\", ageMs: 12000, tools: [\"bash\"], props: [\"prop_50\"] },\n { name: \"CyberSuit · Violet\", skin: \"skin_1\", state: \"streaming\", ageMs: 14000, tools: [\"read\"], props: [\"prop_100\"] },\n { name: \"CyberSuit · Crimson\", skin: \"skin_2\", state: \"happy\", ageMs: 9000, tools: [\"edit\"], props: [\"prop_200\"] },\n { name: \"MechaPilot · Heavy\", skin: \"skin_50\", state: \"streaming\", ageMs: 16000, tools: [\"docker\"], props: [\"prop_0\"] },\n { name: \"MechaPilot · Valkyrie\", skin: \"skin_51\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"], props: [\"prop_150\"] },\n { name: \"MechaPilot · Titan\", skin: \"skin_52\", state: \"pending\", ageMs: 2500, tools: [\"todo\"], props: [\"prop_300\"] },\n { name: \"StealthNinja · Shadow\", skin: \"skin_100\", state: \"streaming\", ageMs: 13000, tools: [\"gitnexus\"], props: [\"prop_250\"] },\n { name: \"StealthNinja · Void\", skin: \"skin_101\", state: \"streaming\", ageMs: 15000, tools: [\"search\"], props: [\"prop_51\"] },\n { name: \"StealthNinja · Phantom\", skin: \"skin_102\", state: \"done\", ageMs: 38000, props: [\"prop_101\"] },\n { name: \"MatrixHacker · ZeroDay\", skin: \"skin_150\", state: \"streaming\", ageMs: 17000, tools: [\"web\"], props: [\"prop_0\"] },\n { name: \"MatrixHacker · Glitch\", skin: \"skin_151\", state: \"streaming\", ageMs: 19000, tools: [\"bash\"], isLooping: true, props: [\"prop_301\"] },\n { name: \"MatrixHacker · Cypher\", skin: \"skin_152\", state: \"streaming\", ageMs: 11000, tools: [\"mcp\"], props: [\"prop_151\"] },\n { name: \"CelestialAstro · Solar\", skin: \"skin_200\", state: \"happy\", ageMs: 8000, tools: [\"git\"], props: [\"prop_201\"] },\n { name: \"CelestialAstro · Cosmic\", skin: \"skin_201\", state: \"streaming\", ageMs: 21000, tools: [\"edit\"], props: [\"prop_251\"] },\n { name: \"CelestialAstro · Nebula\", skin: \"skin_202\", state: \"error\", ageMs: 6000, error: \"rate_limited\", props: [\"prop_52\"] },\n];\n\n/**\n * 4. Tech Props Showcase: 14 workstations comparing all 7 props (single & dual setups).\n */\nexport const SHOWCASE_PROPS_DECK = [\n { name: \"Supercomputer Solo\", props: [\"prop_0\"], skin: \"skin_0\", state: \"streaming\", ageMs: 12000, tools: [\"docker\"] },\n { name: \"Supercomputer + DualMon\", props: [\"prop_0\", \"prop_50\"], skin: \"skin_50\", state: \"streaming\", ageMs: 15000, tools: [\"bash\"] },\n { name: \"Dual Monitor Solo\", props: [\"prop_50\"], skin: \"skin_100\", state: \"streaming\", ageMs: 14000, tools: [\"read\"] },\n { name: \"DualMon + Espresso\", props: [\"prop_50\", \"prop_100\"], skin: \"skin_150\", state: \"happy\", ageMs: 9000, tools: [\"edit\"] },\n { name: \"Espresso Station Solo\", props: [\"prop_100\"], skin: \"skin_200\", state: \"streaming\", ageMs: 16000, tools: [\"web\"] },\n { name: \"Espresso + Holo\", props: [\"prop_100\", \"prop_150\"], skin: \"skin_1\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"] },\n { name: \"Hologram Emitter Solo\", props: [\"prop_150\"], skin: \"skin_51\", state: \"streaming\", ageMs: 13000, tools: [\"gitnexus\"] },\n { name: \"Holo + Arcade\", props: [\"prop_150\", \"prop_200\"], skin: \"skin_101\", state: \"happy\", ageMs: 11000, tools: [\"git\"] },\n { name: \"Arcade Cabinet Solo\", props: [\"prop_200\"], skin: \"skin_151\", state: \"streaming\", ageMs: 17000, tools: [\"bash\"] },\n { name: \"Arcade + Bonsai\", props: [\"prop_200\", \"prop_250\"], skin: \"skin_201\", state: \"pending\", ageMs: 2500, tools: [\"todo\"] },\n { name: \"Terrarium Bonsai Solo\", props: [\"prop_250\"], skin: \"skin_2\", state: \"done\", ageMs: 38000 },\n { name: \"Bonsai + Oscilloscope\", props: [\"prop_250\", \"prop_300\"], skin: \"skin_52\", state: \"streaming\", ageMs: 20000, tools: [\"docker\"] },\n { name: \"Lab Oscilloscope Solo\", props: [\"prop_300\"], skin: \"skin_102\", state: \"streaming\", ageMs: 19000, tools: [\"bash\"], isLooping: true },\n { name: \"Oscilloscope + Server\", props: [\"prop_300\", \"prop_0\"], skin: \"skin_152\", state: \"error\", ageMs: 6000, error: \"rate_limited\" },\n];\n\n/**\n * 5. Pets Showcase: 12 workstations with all 4 companions.\n */\nexport const SHOWCASE_PETS_DECK = [\n { name: \"Cyber Cat (Cozy)\", pet: \"pet_1\", skin: \"skin_0\", state: \"streaming\", ageMs: 12000, tools: [\"bash\"] },\n { name: \"Cyber Cat (Playful)\", pet: \"pet_2\", skin: \"skin_50\", state: \"happy\", ageMs: 9000, tools: [\"edit\"] },\n { name: \"Cyber Cat (Sleeping)\", pet: \"pet_3\", skin: \"skin_100\", state: \"done\", ageMs: 38000 },\n { name: \"Dozing Shiba (Golden)\", pet: \"pet_50\", skin: \"skin_150\", state: \"streaming\", ageMs: 14000, tools: [\"read\"] },\n { name: \"Dozing Shiba (Alert)\", pet: \"pet_51\", skin: \"skin_200\", state: \"happy\", ageMs: 10000, tools: [\"git\"] },\n { name: \"Dozing Shiba (Resting)\", pet: \"pet_52\", skin: \"skin_1\", state: \"pending\", ageMs: 2400, tools: [\"todo\"] },\n { name: \"Hover Drone (Orbital)\", pet: \"pet_100\", skin: \"skin_51\", state: \"streaming\", ageMs: 16000, tools: [\"docker\"] },\n { name: \"Hover Drone (Patrol)\", pet: \"pet_101\", skin: \"skin_101\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"] },\n { name: \"Hover Drone (Recon)\", pet: \"pet_102\", skin: \"skin_151\", state: \"error\", ageMs: 6500, error: \"quota_exhausted\" },\n { name: \"Cyber Owl (Clockwork)\", pet: \"pet_150\", skin: \"skin_201\", state: \"streaming\", ageMs: 13000, tools: [\"web\"] },\n { name: \"Cyber Owl (Wisdom)\", pet: \"pet_151\", skin: \"skin_2\", state: \"happy\", ageMs: 8500, tools: [\"gitnexus\"] },\n { name: \"Cyber Owl (Night Watch)\", pet: \"pet_152\", skin: \"skin_52\", state: \"streaming\", ageMs: 22000, tools: [\"mcp\"] },\n];\n\n/**\n * 6. Particle Auras Showcase: 12 workstations glowing with all 4 aura archetypes.\n */\nexport const SHOWCASE_AURAS_DECK = [\n { name: \"Matrix Rain (Laser Green)\", aura: \"aura_0\", skin: \"skin_150\", state: \"streaming\", ageMs: 14000, tools: [\"gitnexus\"] },\n { name: \"Matrix Rain (Emerald)\", aura: \"aura_1\", skin: \"skin_151\", state: \"streaming\", ageMs: 17000, tools: [\"bash\"], isLooping: true },\n { name: \"Matrix Rain (Jade)\", aura: \"aura_2\", skin: \"skin_152\", state: \"happy\", ageMs: 9000, tools: [\"read\"] },\n { name: \"Plasma Ring (Cyan Orbit)\", aura: \"aura_25\", skin: \"skin_0\", state: \"streaming\", ageMs: 13000, tools: [\"web\"] },\n { name: \"Plasma Ring (Electric)\", aura: \"aura_26\", skin: \"skin_1\", state: \"happy\", ageMs: 11000, tools: [\"edit\"] },\n { name: \"Plasma Ring (Cosmic)\", aura: \"aura_27\", skin: \"skin_2\", state: \"pending\", ageMs: 2500, tools: [\"todo\"] },\n { name: \"Quantum Mist (Nebula)\", aura: \"aura_50\", skin: \"skin_50\", state: \"streaming\", ageMs: 15000, tools: [\"docker\"] },\n { name: \"Quantum Mist (Violet)\", aura: \"aura_51\", skin: \"skin_51\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"] },\n { name: \"Quantum Mist (Astral)\", aura: \"aura_52\", skin: \"skin_52\", state: \"done\", ageMs: 38000 },\n { name: \"Glitch Halo (Prismatic)\", aura: \"aura_75\", skin: \"skin_100\", state: \"streaming\", ageMs: 16000, tools: [\"mcp\"] },\n { name: \"Glitch Halo (Amber Shock)\", aura: \"aura_76\", skin: \"skin_101\", state: \"error\", ageMs: 6000, error: \"rate_limited\" },\n { name: \"Glitch Halo (Neon Spark)\", aura: \"aura_77\", skin: \"skin_102\", state: \"streaming\", ageMs: 20000, tools: [\"git\"] },\n];\n\n/**\n * 7. Trophies Showcase: 12 workstations displaying all 4 trophy models on obsidian pedestals.\n */\nexport const SHOWCASE_TROPHIES_DECK = [\n { name: \"Golden Key (Master)\", trophy: \"trophy_0\", skin: \"skin_0\", state: \"happy\", ageMs: 9000, cost: 2.5, tools: [\"edit\"] },\n { name: \"Golden Key (Champion)\", trophy: \"trophy_1\", skin: \"skin_1\", state: \"streaming\", ageMs: 14000, tools: [\"bash\"] },\n { name: \"Golden Key (Honor)\", trophy: \"trophy_2\", skin: \"skin_2\", state: \"pending\", ageMs: 2500, tools: [\"todo\"] },\n { name: \"Silicon Wafer (3nm)\", trophy: \"trophy_25\", skin: \"skin_50\", state: \"streaming\", ageMs: 16000, tools: [\"docker\"] },\n { name: \"Silicon Wafer (Nanometer)\", trophy: \"trophy_26\", skin: \"skin_51\", state: \"happy\", ageMs: 10000, cost: 3.1, tools: [\"git\"] },\n { name: \"Silicon Wafer (Quantum)\", trophy: \"trophy_27\", skin: \"skin_52\", state: \"streaming\", ageMs: 19000, tools: [\"read\"] },\n { name: \"Quantum Crystal (Prism)\", trophy: \"trophy_50\", skin: \"skin_100\", state: \"streaming\", ageMs: 13000, tools: [\"gitnexus\"] },\n { name: \"Quantum Crystal (Facet)\", trophy: \"trophy_51\", skin: \"skin_101\", state: \"happy\", ageMs: 8500, cost: 1.8, tools: [\"web\"] },\n { name: \"Quantum Crystal (Pillar)\", trophy: \"trophy_52\", skin: \"skin_102\", state: \"done\", ageMs: 38000 },\n { name: \"Diamond Bug (Zero-Day)\", trophy: \"trophy_75\", skin: \"skin_150\", state: \"streaming\", ageMs: 15000, tools: [\"agent\"] },\n { name: \"Diamond Bug (Flawless)\", trophy: \"trophy_76\", skin: \"skin_151\", state: \"streaming\", ageMs: 18000, tools: [\"bash\"], isLooping: true },\n { name: \"Diamond Bug (Exalted)\", trophy: \"trophy_77\", skin: \"skin_152\", state: \"error\", ageMs: 6500, error: \"rate_limited\" },\n];\n\nfunction createRandom(seed) {\n let s = seed >>> 0 || 1;\n return () => {\n s ^= s << 13;\n s ^= s >>> 17;\n s ^= s << 5;\n s >>>= 0;\n return s / 4294967296;\n };\n}\n\nfunction pick(rand, list) {\n return list[Math.floor(rand() * list.length) % list.length];\n}\n\nfunction accountTarget(index) {\n return PROVIDER_MODELS[index % PROVIDER_MODELS.length];\n}\n\nfunction randomTokens(rand) {\n return {\n input: Math.round(400 + rand() * 14000),\n output: Math.round(80 + rand() * 2900),\n cached: Math.round(rand() * 6000),\n };\n}\n\nexport function generateMockTraces({ count = null, errorRatio = 0, seed = 42, now = Date.now(), cases = false, preset = null } = {}) {\n let activeDeck = null;\n if (preset === \"showcase\" || preset === \"items\") {\n activeDeck = SHOWCASE_ALL_DECK;\n } else if (preset === \"showcase_skins\") {\n activeDeck = SHOWCASE_SKINS_DECK;\n } else if (preset === \"showcase_props\") {\n activeDeck = SHOWCASE_PROPS_DECK;\n } else if (preset === \"showcase_pets\") {\n activeDeck = SHOWCASE_PETS_DECK;\n } else if (preset === \"showcase_auras\") {\n activeDeck = SHOWCASE_AURAS_DECK;\n } else if (preset === \"showcase_trophies\") {\n activeDeck = SHOWCASE_TROPHIES_DECK;\n } else if (cases || preset === \"cases\") {\n activeDeck = CASE_DECK;\n }\n\n const effectiveCount = count !== null && count !== undefined ? count : (activeDeck ? activeDeck.length : 8);\n const rand = createRandom(seed);\n const traces = [];\n\n for (let i = 0; i < effectiveCount; i += 1) {\n const client = CLIENTS[i % CLIENTS.length];\n const cycle = Math.floor(i / CLIENTS.length) + 1;\n const defaultAccount = cycle > 1 ? `${client.account} ${cycle}` : client.account;\n const connectionId = `mock-conn-${i}`;\n const target = accountTarget(i);\n const deck = activeDeck ? activeDeck[i % activeDeck.length] : null;\n const account = deck?.name || defaultAccount;\n const randAge = Math.floor(rand() * 40000);\n const randErr = rand() < errorRatio;\n const ageMs = deck ? deck.ageMs : randAge;\n const startedAt = now - ageMs;\n const isError = deck ? deck.state === \"error\" : randErr;\n const isLooping = Boolean(deck?.isLooping || (errorRatio > 0.4 && i === 0));\n\n const ageRatio = ageMs / 40000;\n let state;\n if (isLooping) state = \"streaming\";\n else if (deck) state = deck.state;\n else if (isError) state = \"error\";\n else if (ageRatio < 0.25) state = \"pending\";\n else if (ageRatio < 0.6) state = \"streaming\";\n else state = \"done\";\n\n const tokens = randomTokens(rand);\n const toolRand = createRandom(seed * 7919 + i * 104729 + 13);\n const toolCount = state === \"done\" ? 0 : 1 + Math.floor(toolRand() * 3);\n const toolPick = [];\n for (let k = 0; k < toolCount; k += 1) {\n toolPick.push(MOCK_TOOL_TYPES[Math.floor(toolRand() * MOCK_TOOL_TYPES.length)]);\n }\n const toolNames = isLooping ? [\"bash\"] : (deck?.tools ?? (state === \"error\" ? [] : toolPick));\n const toolCalls = [];\n for (const tool of toolNames) {\n if (!toolCalls.some((c) => c.tool === tool)) {\n toolCalls.push({ tool, state: toolCalls.length === 0 ? \"running\" : \"queued\" });\n }\n }\n\n const wantsFallback = deck ? !!deck.fallbackShift : toolRand() < 0.28;\n const fallbackProvider = PROVIDER_MODELS[(i + (deck?.fallbackShift ?? 3)) % PROVIDER_MODELS.length].provider;\n const fallback =\n wantsFallback && (state === \"pending\" || state === \"streaming\") && fallbackProvider !== target.provider\n ? { from: fallbackProvider }\n : null;\n\n const concurrent = deck?.concurrent ?? (state === \"done\" || state === \"error\" ? 1 : 1 + Math.floor(toolRand() * 3));\n if (deck?.cachedBoost) tokens.cached = 14000;\n\n // Realistic mock logs\n const logs = [];\n const baseTime = startedAt || (now - 20000);\n logs.push({\n timestamp: new Date(baseTime).toLocaleTimeString(),\n type: \"prompt\",\n summary: \"User Prompt\",\n detail: `Execute pipeline for ${account} (${target.model})`,\n });\n\n if (isLooping) {\n for (let j = 0; j < 6; j++) {\n logs.push({\n timestamp: new Date(baseTime + 2000 + j * 2000).toLocaleTimeString(),\n type: \"bash\",\n summary: \"run_command\",\n detail: \"npm test -- --bail (failed exit 1)\",\n });\n }\n logs.push({\n timestamp: new Date(now).toLocaleTimeString(),\n type: \"error\",\n summary: \"Loop Warning\",\n detail: \"Runaway loop detected: 6 consecutive identical tool failures\",\n });\n } else {\n toolNames.forEach((tName, idx) => {\n logs.push({\n timestamp: new Date(baseTime + 1500 + idx * 2500).toLocaleTimeString(),\n type: tName,\n summary: tName,\n detail: `${tName} operation completed`,\n });\n });\n if (isError) {\n logs.push({\n timestamp: new Date(now).toLocaleTimeString(),\n type: \"error\",\n summary: \"Error\",\n detail: deck?.error || \"Upstream rate limit or timeout\",\n });\n }\n }\n\n traces.push({\n traceId: `mock-${i}-${Math.floor(rand() * 1e6).toString(36)}`,\n cli: \"mock\",\n connectionId,\n account,\n model: target.model,\n provider: target.provider,\n state,\n startedAt,\n elapsedMs: ageMs,\n tokens,\n cost: deck?.cost ?? Math.round((tokens.input * 0.000015 + tokens.output * 0.00006) * 100) / 100,\n status: isLooping || isError ? \"error\" : \"200\",\n error: isError ? deck?.error ?? pick(rand, ERROR_REASONS) : (isLooping ? \"runaway_loop\" : null),\n clientIcon: client.icon,\n toolCalls,\n tools: toolNames,\n activeTool: toolNames[0] || null,\n currentCommand: isLooping ? \"npm test -- --bail (looping)\" : (toolNames[0] ? `${toolNames[0]} task running...` : null),\n fallback,\n concurrent,\n isLooping,\n skin: deck?.skin ?? null,\n aura: deck?.aura ?? null,\n props: deck?.props ?? [],\n pet: deck?.pet ?? null,\n trophy: deck?.trophy ?? null,\n theme: deck?.theme ?? null,\n logs,\n });\n }\n\n return traces;\n}\n\nexport function mockProviderDescriptors(traces) {\n const seen = new Map();\n for (const trace of traces) {\n if (trace.provider && !seen.has(trace.provider)) {\n seen.set(trace.provider, {\n provider: trace.provider,\n name: trace.provider.charAt(0).toUpperCase() + trace.provider.slice(1),\n });\n }\n }\n return [...seen.values()];\n}\n","import { getLiveTraceSnapshot, getProvidersFromTraces } from \"@/lib/watchers/watcherManager.js\";\nimport { generateMockTraces, mockProviderDescriptors, MOCK_PRESETS } from \"@/lib/mockTraces.js\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport async function GET(request) {\n const { searchParams } = new URL(request.url);\n const source = searchParams.get(\"source\") || \"live\";\n const mockPreset = searchParams.get(\"mockPreset\") || searchParams.get(\"preset\");\n const hours = Number(searchParams.get(\"hours\") || 24);\n const maxAgeMs = Math.max(1, hours) * 60 * 60 * 1000;\n\n const encoder = new TextEncoder();\n\n const stream = new ReadableStream({\n async start(controller) {\n let isAlive = true;\n\n const send = (data) => {\n if (!isAlive) return;\n try {\n controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\\n\\n`));\n } catch {\n isAlive = false;\n }\n };\n\n const pushUpdate = async () => {\n if (!isAlive) return;\n\n if (source === \"mock\" || mockPreset) {\n const presetConfig = MOCK_PRESETS[mockPreset] || MOCK_PRESETS.cases;\n const traces = generateMockTraces({\n count: presetConfig.agents,\n errorRatio: presetConfig.errorRatio,\n cases: !!presetConfig.cases,\n preset: mockPreset,\n seed: 42,\n });\n const providers = mockProviderDescriptors(traces);\n send({ traces, providers, timestamp: Date.now(), mode: \"mock\", preset: mockPreset || \"cases\" });\n return;\n }\n\n // Live Mode\n try {\n const { traces, errors } = await getLiveTraceSnapshot(false, maxAgeMs);\n const providers = getProvidersFromTraces(traces);\n send({\n traces,\n providers,\n errors,\n timestamp: Date.now(),\n mode: \"live\",\n activeAgents: traces.filter((t) => t.state === \"streaming\" || t.state === \"pending\").length,\n });\n } catch (err) {\n console.error(\"[SSE] Failed to fetch live traces:\", err);\n send({\n traces: [],\n providers: [],\n errors: [{ source: \"telemetry\", message: err.message || \"Failed to read live traces\" }],\n timestamp: Date.now(),\n mode: \"live\",\n activeAgents: 0,\n });\n }\n };\n\n // Initial push\n await pushUpdate();\n\n // Poll interval: 1.5 seconds for fresh log watcher updates\n const interval = setInterval(async () => {\n if (!isAlive) {\n clearInterval(interval);\n return;\n }\n await pushUpdate();\n }, 1500);\n\n request.signal.addEventListener(\"abort\", () => {\n isAlive = false;\n clearInterval(interval);\n try {\n controller.close();\n } catch {\n // ignore\n }\n });\n },\n });\n\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream; charset=utf-8\",\n \"Cache-Control\": \"no-cache, no-transform\",\n Connection: \"keep-alive\",\n },\n });\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","SpanStatusCode","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","isRouteCacheOwner","CachedRouteKind","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","userland","require","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","req","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","waitUntil","Promise","resolve","buildId","deploymentId","params","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","previewProps","normalizedSrcPage","isPrerendered","Boolean","routes","cacheOwner","isIsr","dynamicRoutes","render404","prerenderInfo","fallback","adapterPath","cacheKey","method","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","context","renderOpts","experimental","authInterrupts","useCacheTimeout","durableUseCacheEntries","cacheComponents","validationLevel","instantInsights","hmrRefreshHash","cacheLifeProfiles","cacheLife","staticPageGenerationTimeout","onClose","cb","on","onAfterTaskError","undefined","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","responseGenerator","previousCacheEntry","setHeader","response","handle","prerender","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","headers","type","revalidate","collectedRevalidate","expire","collectedExpire","expireTime","cacheEntry","value","status","body","Buffer","from","arrayBuffer","cacheControl","err","isStale","silenceLog","onRequestError","routerKind","routePath","routeType","revalidateReason","isStaticGeneration","handleResponse","currentSpan","parentSpan","routeKind","isFallback","isRoutePPREnabled","error","Error","isMiss","delete","getHeader","get","set","Response","headersSent","recordException","setStatus","code","ERROR","message","setAttribute","name","writableEnded","destroyed","setAttributes","toString","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","withPropagatedContext","trace","spanName","SERVER","attributes","url","span","isProcessAlive","pid","kill","e","extractWorkspaceFromFolder","folderName","cleaned","parts","split","filter","length","normalizeClaudeTool","input","n","String","toLowerCase","cmd","command","trim","cmdLower","startsWith","includes","detail","slice","file","file_path","path","basename","pattern","detectProvider","modelName","clientType","m","base","compactText","maxLength","text","getTextContent","content","Array","isArray","combined","block","map","join","isPreviewableText","test","parseClaudeTranscript","transcriptPath","result","totalIn","totalOut","totalCached","hasUsage","model","activeTool","activeCommand","sessionTitle","lastText","lastTextRole","toolSet","Set","lastTimestamp","toolInvocations","recentLogs","entrypoint","cwd","slug","sessionId","isLooping","readFile","lines","line","entry","JSON","parse","entryTime","timestamp","Date","getTime","now","aiTitle","prompt","lastPrompt","msg","u","usage","input_tokens","output_tokens","cache_read_input_tokens","role","push","toISOString","summary","add","time","is_error","lastN","s","window","targetKey","sameCall","every","w","timeSpan","getClaudeTraces","maxAgeMs","homeDir","homedir","sessionsDir","projectsDir","fallbackWorkspace","traces","seenSessionIds","sessionFiles","readdir","catch","f","endsWith","rawMeta","meta","startedAt","updatedAt","alive","lastActive","projectFolders","pf","candidate","access","parsed","isExtension","state","workspaceName","elapsedMs","Math","max","connectionId","traceId","cli","source","account","provider","tokens","output","cached","cost","tools","currentCommand","logs","folderPath","files","fileSessionId","has","stat","mtime","mtimeMs","isRecent","isPending","birthtimeMs","sort","a","b","activeA","activeB"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/next/src/build/templates/app-route.ts","../../../src/lib/watchers/watcherManager.js","../../../src/lib/watchers/claudeWatcher.js","../../../src/lib/mockTraces.js","../../../src/app/api/traces/stream/route.js"],"sourcesContent":["import {\n AppRouteRouteModule,\n type AppRouteRouteHandlerContext,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../server/request-meta'\nimport {\n getTracer,\n type Span,\n SpanKind,\n SpanStatusCode,\n} from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n NextRequestAdapter,\n signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n fromNodeOutgoingHttpHeaders,\n toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport { isRouteCacheOwner } from '../../server/lib/route-cache-key'\nimport {\n CachedRouteKind,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../server/response-cache'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n // The lazy require factory ensures that:\n // - In dev: devRequestTimingInternalsEnd is set before userland executes,\n // correctly attributing module load time to application-code rather than\n // framework internals.\n // - In all modes: async modules (route files with top-level await) are\n // handled correctly — require() returns a Promise for such modules, which\n // ensureUserland() awaits before the first request is handled.\n userland: () => require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n // In Turbopack dev mode, also provide a synchronous per-request getter so\n // server HMR updates are picked up without re-executing the entry chunk.\n // Using require() (synchronous) avoids adding async overhead that would be\n // incorrectly attributed to application-code time in devRequestTiming.\n ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n ? {\n getUserland: () =>\n require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n }\n : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n\nexport async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n }\n let srcPage = 'VAR_DEFINITION_PAGE'\n\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return null\n }\n\n const {\n buildId,\n deploymentId,\n params,\n nextConfig,\n parsedUrl,\n isDraftMode,\n prerenderManifest,\n routerServerContext,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n resolvedPathname,\n clientReferenceManifest,\n serverActionsManifest,\n previewProps,\n } = prepareResult\n\n const normalizedSrcPage = normalizeAppPath(srcPage)\n\n // Only this route's prerenders can establish ISR or admit generated params.\n const isPrerendered =\n Boolean(prerenderManifest.routes[resolvedPathname]) &&\n (routeModule.isDev ||\n isRouteCacheOwner(\n resolvedPathname,\n routeModule.cacheOwner,\n prerenderManifest.routes[resolvedPathname]\n ))\n\n let isIsr = Boolean(\n prerenderManifest.dynamicRoutes[normalizedSrcPage] || isPrerendered\n )\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n return null\n }\n\n if (isIsr && !isDraftMode) {\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n }\n }\n\n let cacheKey: string | null = null\n\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n })\n }\n\n const method = req.method || 'GET'\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n const isWrappedByNextServer = Boolean(\n routerServerContext?.isWrappedByNextServer\n )\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const incrementalCache =\n getRequestMeta(req, 'incrementalCache') ||\n (await routeModule.getIncrementalCache(\n req,\n nextConfig,\n previewProps,\n prerenderManifest,\n isMinimalMode\n ))\n\n incrementalCache?.resetRequestCache()\n ;(globalThis as any).__incrementalCache = incrementalCache\n\n const context: AppRouteRouteHandlerContext = {\n params,\n previewProps,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n useCacheTimeout: nextConfig.experimental.useCacheTimeout,\n durableUseCacheEntries: Boolean(\n nextConfig.experimental.durableUseCacheEntries\n ),\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n validationLevel: nextConfig.experimental.instantInsights.validationLevel,\n isDraftMode,\n incrementalCache,\n hmrRefreshHash: getRequestMeta(req, 'hmrRefreshHash'),\n cacheLifeProfiles: nextConfig.cacheLife,\n staticPageGenerationTimeout: nextConfig.staticPageGenerationTimeout,\n waitUntil: ctx.waitUntil,\n onClose: (cb) => {\n res.on('close', cb)\n },\n onAfterTaskError: undefined,\n },\n sharedContext: {\n buildId,\n deploymentId,\n },\n }\n const nodeNextReq = new NodeNextRequest(req)\n const nodeNextRes = new NodeNextResponse(res)\n\n const nextReq = NextRequestAdapter.fromNodeNextRequest(\n nodeNextReq,\n signalFromNodeResponse(res)\n )\n\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n try {\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n const response =\n cacheKey === null\n ? await routeModule.handle(nextReq, context)\n : await routeModule.prerender(nextReq, context)\n\n ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil)\n pendingWaitUntil = undefined\n }\n }\n const cacheTags = context.renderOpts.collectedTags\n\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob()\n\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n }\n\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type\n }\n\n const revalidate =\n typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n ? false\n : context.renderOpts.collectedRevalidate\n\n const expire =\n typeof context.renderOpts.collectedExpire === 'undefined' ||\n context.renderOpts.collectedExpire >= INFINITE_CACHE\n ? // Fall back to the global `expireTime` config when the\n // route has a numeric `revalidate` but didn't declare an\n // explicit `expire` (e.g. via `cacheLife`). This mirrors the\n // build-time fallback in `build/index.ts` so cache entries\n // and the response Cache-Control header agree on the route's\n // effective expire. Routes that opt out of revalidation\n // (`revalidate: false`) or that are dynamic (`revalidate: 0`)\n // keep `expire: undefined`.\n revalidate !== false && revalidate > 0\n ? nextConfig.expireTime\n : undefined\n : context.renderOpts.collectedExpire\n\n // Create the cache entry for the response.\n const cacheEntry: ResponseCacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers,\n },\n cacheControl: { revalidate, expire },\n }\n\n return cacheEntry\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, pendingWaitUntil)\n return null\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: cacheKey !== null,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n const handleResponse = async (\n currentSpan: Span | undefined,\n parentSpan: Span | undefined\n ) => {\n try {\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n previewProps,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode,\n })\n\n if (cacheEntry !== null && 'error' in cacheEntry) {\n throw cacheEntry.error\n }\n\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return\n }\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n throw new Error(\n `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n )\n }\n\n if (!isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : cacheEntry.isMiss\n ? 'MISS'\n : cacheEntry.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER)\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (\n cacheEntry.cacheControl &&\n !res.getHeader('Cache-Control') &&\n !headers.get('Cache-Control')\n ) {\n headers.set(\n 'Cache-Control',\n getCacheControlHeader(cacheEntry.cacheControl)\n )\n }\n\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200,\n })\n )\n return\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: cacheKey !== null,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n\n // If this is during static generation, throw the error again.\n if (isIsr) throw err\n\n // Otherwise, send a 500 response unless the original response has\n // already committed. In that case, preserve its status code for\n // telemetry while still recording the failure and terminating a response\n // that the failed pipeline left open.\n if (res.headersSent) {\n if (currentSpan) {\n const error =\n err instanceof Error ? err : new Error('Unknown app route error')\n currentSpan.recordException(error)\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n })\n currentSpan.setAttribute('error.type', error.name)\n }\n if (!res.writableEnded && !res.destroyed) {\n res.end()\n }\n } else {\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n new Response(null, { status: 500 })\n )\n }\n return\n } finally {\n ;(() => {\n if (!currentSpan) {\n return\n }\n\n let statusCode = res.statusCode\n\n currentSpan.setAttributes({\n 'http.status_code': statusCode,\n 'next.rsc': false,\n })\n\n if (statusCode && statusCode >= 500) {\n // For 5xx status codes: SHOULD be set to 'Error' span status.\n // x-ref: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n })\n // For span status 'Error', SHOULD set 'error.type' attribute.\n currentSpan.setAttribute('error.type', statusCode.toString())\n }\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route') || normalizedSrcPage\n const name = `${method} ${route}`\n\n currentSpan.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n currentSpan.updateName(name)\n\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== currentSpan) {\n parentSpan.setAttribute('http.route', route)\n parentSpan.updateName(name)\n }\n })()\n }\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan, undefined)\n } else {\n let parentSpan = tracer.getActiveScopeSpan()\n await tracer.withPropagatedContext(\n req.headers,\n () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n (span) => handleResponse(span, parentSpan)\n ),\n undefined,\n !isWrappedByNextServer\n )\n }\n}\n","import { getAntigravityTraces } from \"./antigravityWatcher.js\";\nimport { getClaudeTraces } from \"./claudeWatcher.js\";\nimport { extractProviders } from \"../traceContract.js\";\n\n/**\n * WatcherManager aggregates traces across all installed CLI watchers\n * (Antigravity, Claude Code, etc.) with automatic fallback and caching.\n */\nlet cachedSnapshot = { traces: [], errors: [] };\nlet lastFetchTime = 0;\nconst CACHE_TTL_MS = 1500; // 1.5s cache to avoid reading disks too frequently\n\nexport async function getLiveTraceSnapshot(force = false, maxAgeMs = 24 * 60 * 60 * 1000) {\n const now = Date.now();\n if (!force && now - lastFetchTime < CACHE_TTL_MS) {\n return cachedSnapshot;\n }\n\n const results = await Promise.allSettled([\n getAntigravityTraces(maxAgeMs),\n getClaudeTraces(maxAgeMs),\n ]);\n const errors = [];\n const [agyResult, claudeResult] = results;\n const agyList = agyResult.status === \"fulfilled\" ? agyResult.value : [];\n const claudeList = claudeResult.status === \"fulfilled\" ? claudeResult.value : [];\n if (agyResult.status === \"rejected\") errors.push({ source: \"antigravity\", message: agyResult.reason?.message || \"Watcher failed\" });\n if (claudeResult.status === \"rejected\") errors.push({ source: \"claude\", message: claudeResult.reason?.message || \"Watcher failed\" });\n\n const combined = [...agyList, ...claudeList];\n\n // Sort: active/streaming/pending first, then by most recent startedAt\n combined.sort((a, b) => {\n const activeA = (a.state === \"streaming\" || a.state === \"pending\") ? 1 : 0;\n const activeB = (b.state === \"streaming\" || b.state === \"pending\") ? 1 : 0;\n if (activeA !== activeB) return activeB - activeA;\n return (b.startedAt || 0) - (a.startedAt || 0);\n });\n\n cachedSnapshot = { traces: combined, errors };\n lastFetchTime = now;\n return cachedSnapshot;\n}\n\nexport async function getAllLiveTraces(force = false, maxAgeMs) {\n return (await getLiveTraceSnapshot(force, maxAgeMs)).traces;\n}\n\nexport function getProvidersFromTraces(traces) {\n return extractProviders(traces);\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport os from \"node:os\";\nimport { normalizeTrace } from \"../traceContract.js\";\n\nfunction isProcessAlive(pid) {\n if (!pid || typeof pid !== \"number\") return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (e) {\n return e.code === \"EPERM\";\n }\n}\n\nfunction extractWorkspaceFromFolder(folderName) {\n if (!folderName) return null;\n const cleaned = folderName.replace(/--claude-worktrees.*/, \"\");\n const parts = cleaned.split(\"-\").filter(Boolean);\n return parts.length > 0 ? parts[parts.length - 1] : folderName;\n}\n\nfunction normalizeClaudeTool(name, input = {}) {\n const n = String(name || \"\").toLowerCase();\n const cmd = String(input.command || \"\").trim();\n const cmdLower = cmd.toLowerCase();\n\n if (n === \"bash\") {\n if (cmdLower.startsWith(\"docker\") || cmdLower.includes(\"docker exec\")) {\n return { type: \"docker\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n if (cmdLower.startsWith(\"git \") || cmdLower.startsWith(\"gh \")) {\n return { type: \"git\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n if (cmdLower.includes(\"gitnexus\")) {\n return { type: \"gitnexus\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n return { type: \"bash\", detail: cmd.length > 50 ? `${cmd.slice(0, 47)}...` : cmd };\n }\n\n if (n.includes(\"read\") || n.includes(\"view\") || n.includes(\"glob\")) {\n const file = input.file_path || input.path || \"\";\n return { type: \"read\", detail: file ? `Read: ${path.basename(file)}` : \"Read file\" };\n }\n\n if (n.includes(\"edit\") || n.includes(\"write\") || n.includes(\"patch\") || n.includes(\"replace\")) {\n const file = input.file_path || input.path || \"\";\n return { type: \"edit\", detail: file ? `Edit: ${path.basename(file)}` : \"Edit file\" };\n }\n\n if (n.includes(\"grep\") || n.includes(\"search\")) {\n return { type: \"search\", detail: input.pattern ? `Search: ${input.pattern}` : \"Search\" };\n }\n\n if (n.includes(\"agent\") || n.includes(\"task\")) {\n return { type: \"agent\", detail: \"Subagent Task\" };\n }\n\n if (n.includes(\"browser\") || n.includes(\"playwright\")) {\n return { type: \"browser\", detail: \"Browser automation\" };\n }\n\n if (n.includes(\"gitnexus\")) {\n return { type: \"gitnexus\", detail: \"GitNexus query\" };\n }\n\n return { type: \"mcp\", detail: name };\n}\n\n/**\n * Claude Code records where a session was started in `entrypoint`. A session\n * can carry more than one (a desktop session that later continues in the CLI\n * logs both), so desktop wins over the generic `cli` value.\n *\n * @returns {{ clientType: string, label: string }}\n */\nfunction classifyClaudeEntrypoint(...entrypoints) {\n const seen = new Set(entrypoints.filter(Boolean));\n if (seen.has(\"claude-desktop\")) return { clientType: \"desktop\", label: \"Claude Desktop\" };\n if (seen.has(\"claude-vscode\") || seen.has(\"vscode\")) return { clientType: \"extension\", label: \"Claude Extension\" };\n return { clientType: \"cli\", label: \"Claude\" };\n}\n\nfunction detectProvider(modelName, clientType = \"cli\") {\n const m = String(modelName || \"\").toLowerCase();\n let base = null;\n if (m.includes(\"claude\")) base = \"anthropic\";\n else if (m.includes(\"gemini\")) base = \"gemini\";\n else if (m.includes(\"gpt\") || m.includes(\"o1\") || m.includes(\"o3\")) base = \"openai\";\n else if (m.includes(\"minimax\")) base = \"minimax\";\n else if (m.includes(\"deepseek\")) base = \"deepseek\";\n return base ? `${base} (${clientType})` : null;\n}\n\nfunction compactText(value, maxLength = 160) {\n const text = String(value || \"\").replace(/\\s+/g, \" \").trim();\n return text ? text.slice(0, maxLength) : null;\n}\n\nfunction getTextContent(content) {\n if (typeof content === \"string\") return compactText(content);\n if (!Array.isArray(content)) return null;\n const combined = content\n .filter((block) => block?.type === \"text\" && block.text)\n .map((block) => block.text)\n .join(\" \");\n return compactText(combined);\n}\n\nfunction isPreviewableText(text) {\n return Boolean(text && !/^\\[request interrupted by user\\]$/i.test(text));\n}\n\nasync function parseClaudeTranscript(transcriptPath) {\n const result = {\n totalIn: 0,\n totalOut: 0,\n totalCached: 0,\n hasUsage: false,\n model: null,\n activeTool: null,\n activeCommand: null,\n sessionTitle: null,\n lastText: null,\n lastTextRole: null,\n toolSet: new Set(),\n lastTimestamp: 0,\n toolInvocations: [],\n recentLogs: [],\n entrypoints: new Set(),\n cwd: null,\n slug: null,\n sessionId: null,\n isLooping: false,\n };\n\n try {\n const content = await fs.readFile(transcriptPath, \"utf-8\");\n const lines = content.trim().split(\"\\n\");\n\n for (const line of lines) {\n if (!line) continue;\n try {\n const entry = JSON.parse(line);\n const entryTime = entry.timestamp ? new Date(entry.timestamp).getTime() : Date.now();\n if (entry.timestamp) result.lastTimestamp = entryTime;\n if (entry.sessionId && !result.sessionId) result.sessionId = entry.sessionId;\n if (entry.entrypoint) result.entrypoints.add(entry.entrypoint);\n if (entry.cwd && !result.cwd) result.cwd = entry.cwd;\n if (entry.slug && !result.slug) result.slug = entry.slug;\n\n if (entry.type === \"ai-title\") {\n result.sessionTitle = compactText(entry.aiTitle, 80) || result.sessionTitle;\n } else if (entry.type === \"last-prompt\") {\n const prompt = compactText(entry.lastPrompt);\n if (prompt) {\n result.lastText = prompt;\n result.lastTextRole = \"user\";\n }\n }\n\n const msg = entry.message;\n if (msg) {\n if (msg.model) result.model = msg.model;\n const u = msg.usage;\n if (u) {\n result.hasUsage = true;\n if (u.input_tokens) result.totalIn += u.input_tokens;\n if (u.output_tokens) result.totalOut += u.output_tokens;\n if (u.cache_read_input_tokens) result.totalCached += u.cache_read_input_tokens;\n }\n\n if (msg.role === \"user\") {\n const prompt = getTextContent(msg.content);\n if (isPreviewableText(prompt)) {\n result.lastText = prompt;\n result.lastTextRole = \"user\";\n result.recentLogs.push({\n timestamp: entry.timestamp || new Date().toISOString(),\n type: \"prompt\",\n summary: \"User Prompt\",\n detail: prompt.slice(0, 100),\n });\n }\n } else if (msg.role === \"assistant\") {\n const response = getTextContent(msg.content);\n if (response) {\n result.lastText = response;\n result.lastTextRole = \"assistant\";\n }\n }\n\n if (Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n const { type, detail } = normalizeClaudeTool(block.name, block.input);\n result.toolSet.add(type);\n result.activeTool = type;\n if (detail) result.activeCommand = detail;\n\n result.toolInvocations.push({\n name: block.name,\n time: entryTime,\n detail: detail || block.name,\n });\n\n result.recentLogs.push({\n timestamp: entry.timestamp || new Date().toISOString(),\n type: type || \"tool\",\n summary: block.name,\n detail: detail || block.name,\n });\n } else if (block.type === \"tool_result\" && block.is_error) {\n result.recentLogs.push({\n timestamp: entry.timestamp || new Date().toISOString(),\n type: \"error\",\n summary: \"Tool Error\",\n detail: String(block.content || \"Error\").slice(0, 100),\n });\n }\n }\n }\n }\n } catch {\n // ignore malformed line\n }\n }\n\n // Loop detection: 5 consecutive identical tool calls (same tool and target) within 60s\n if (result.toolInvocations.length >= 5) {\n const lastN = result.toolInvocations.slice(-10);\n for (let s = 0; s <= lastN.length - 5; s++) {\n const window = lastN.slice(s, s + 5);\n const targetKey = `${window[0].name}:${window[0].detail}`;\n const sameCall = window.every((w) => `${w.name}:${w.detail}` === targetKey);\n const timeSpan = (window[window.length - 1].time || 0) - (window[0].time || 0);\n if (sameCall && (timeSpan <= 60000 || timeSpan === 0)) {\n result.isLooping = true;\n break;\n }\n }\n }\n } catch {\n // unreadable transcript\n }\n\n return result;\n}\n\nexport async function getClaudeTraces(maxAgeMs = 24 * 60 * 60 * 1000) {\n const homeDir = os.homedir();\n const sessionsDir = path.join(homeDir, \".claude\", \"sessions\");\n const projectsDir = path.join(homeDir, \".claude\", \"projects\");\n const fallbackWorkspace = path.basename(process.cwd()) || \"agent-factory\";\n\n const now = Date.now();\n const traces = [];\n const seenSessionIds = new Set();\n\n // 1. Scan active sessions from ~/.claude/sessions/*.json\n try {\n const sessionFiles = await fs.readdir(sessionsDir).catch(() => []);\n for (const f of sessionFiles) {\n if (!f.endsWith(\".json\")) continue;\n try {\n const rawMeta = await fs.readFile(path.join(sessionsDir, f), \"utf-8\");\n const meta = JSON.parse(rawMeta);\n const { pid, sessionId, cwd, startedAt, updatedAt, status, name, entrypoint } = meta;\n\n const alive = isProcessAlive(pid);\n const lastActive = updatedAt || startedAt || 0;\n\n // Alive processes are ALWAYS kept regardless of age!\n if (!alive && (now - lastActive > maxAgeMs)) continue;\n\n if (sessionId) seenSessionIds.add(sessionId);\n\n // Find associated jsonl transcript in projects folder\n let transcriptPath = null;\n try {\n const projectFolders = await fs.readdir(projectsDir).catch(() => []);\n for (const pf of projectFolders) {\n const candidate = path.join(projectsDir, pf, `${sessionId}.jsonl`);\n try {\n await fs.access(candidate);\n transcriptPath = candidate;\n break;\n } catch {\n // try next\n }\n }\n } catch {\n // ignore\n }\n\n const parsed = transcriptPath ? await parseClaudeTranscript(transcriptPath) : {};\n\n const { clientType, label } = classifyClaudeEntrypoint(\n entrypoint,\n ...(parsed.entrypoints || [])\n );\n\n let state = \"done\";\n if (alive) {\n if (status === \"busy\" || status === \"running\" || status === \"working\") {\n state = \"streaming\";\n } else if (status === \"idle\") {\n state = \"idle\";\n } else {\n state = \"idle\";\n }\n }\n\n const workspaceName = cwd\n ? path.basename(cwd)\n : (parsed.cwd ? path.basename(parsed.cwd) : (name || fallbackWorkspace));\n\n const lastTimestamp = parsed.lastTimestamp || lastActive;\n const elapsedMs = Math.max(0, (lastTimestamp || now) - (startedAt || now));\n\n const sessionTitle =\n parsed.sessionTitle ||\n (parsed.slug ? parsed.slug.replace(/-/g, \" \") : null) ||\n name ||\n workspaceName;\n\n const model = parsed.model || null;\n const sessionLabel = name || pid || (sessionId ? sessionId.slice(0, 6) : \"session\");\n const connectionId = `${label} (${sessionLabel})`;\n\n traces.push(normalizeTrace({\n traceId: `claude-${pid || (sessionId ? sessionId.slice(0, 6) : \"session\")}`,\n cli: \"claude\",\n clientType,\n source: clientType,\n connectionId,\n account: workspaceName,\n model,\n provider: detectProvider(model, clientType),\n state,\n startedAt: startedAt || null,\n elapsedMs: startedAt ? elapsedMs : null,\n tokens: {\n input: parsed.hasUsage ? parsed.totalIn : null,\n output: parsed.hasUsage ? parsed.totalOut : null,\n cached: parsed.hasUsage ? parsed.totalCached : null,\n },\n cost: null,\n status: parsed.isLooping ? \"error\" : null,\n tools: Array.from(parsed.toolSet || []),\n activeTool: parsed.activeTool || null,\n currentCommand: parsed.activeCommand || null,\n sessionTitle,\n lastText: parsed.lastText || null,\n lastTextRole: parsed.lastTextRole || null,\n isLooping: parsed.isLooping || false,\n logs: (parsed.recentLogs || []).slice(-25),\n }));\n } catch {\n // ignore single session error\n }\n }\n } catch {\n // ignore sessionsDir error\n }\n\n // 2. Scan recent transcripts dynamically from ~/.claude/projects/*/*.jsonl\n // Catches all project-level active & historical sessions within the time window\n try {\n const projectFolders = await fs.readdir(projectsDir).catch(() => []);\n for (const pf of projectFolders) {\n const folderPath = path.join(projectsDir, pf);\n let files = [];\n try {\n files = await fs.readdir(folderPath);\n } catch {\n continue;\n }\n\n for (const file of files) {\n if (!file.endsWith(\".jsonl\")) continue;\n const fileSessionId = file.replace(\".jsonl\", \"\");\n if (seenSessionIds.has(fileSessionId)) continue;\n\n const transcriptPath = path.join(folderPath, file);\n try {\n const stat = await fs.stat(transcriptPath);\n const mtime = stat.mtimeMs;\n if (now - mtime > maxAgeMs) continue;\n\n seenSessionIds.add(fileSessionId);\n const parsed = await parseClaudeTranscript(transcriptPath);\n\n const isRecent = (now - mtime) < 90 * 1000;\n const isPending = (now - mtime) < 15 * 60 * 1000;\n const state = isRecent ? \"streaming\" : isPending ? \"idle\" : \"done\";\n\n const { clientType, label } = classifyClaudeEntrypoint(...(parsed.entrypoints || []));\n const workspaceName = parsed.cwd\n ? path.basename(parsed.cwd)\n : (extractWorkspaceFromFolder(pf) || fallbackWorkspace);\n\n const elapsedMs = Math.max(0, (parsed.lastTimestamp || mtime) - stat.birthtimeMs);\n\n const sessionTitle =\n parsed.sessionTitle ||\n (parsed.slug ? parsed.slug.replace(/-/g, \" \") : null) ||\n workspaceName;\n\n const model = parsed.model || null;\n const connectionId = `${label} (${parsed.slug || fileSessionId.slice(0, 6)})`;\n\n traces.push(normalizeTrace({\n traceId: `claude-${fileSessionId.slice(0, 6)}`,\n cli: \"claude\",\n clientType,\n source: clientType,\n connectionId,\n account: workspaceName,\n model,\n provider: detectProvider(model, clientType),\n state,\n startedAt: stat.birthtimeMs || null,\n elapsedMs: stat.birthtimeMs ? elapsedMs : null,\n tokens: {\n input: parsed.totalIn || null,\n output: parsed.totalOut || null,\n cached: parsed.totalCached || null,\n },\n cost: null,\n status: parsed.isLooping ? \"error\" : null,\n tools: Array.from(parsed.toolSet || []),\n activeTool: parsed.activeTool || null,\n currentCommand: parsed.activeCommand || null,\n sessionTitle,\n lastText: parsed.lastText || null,\n lastTextRole: parsed.lastTextRole || null,\n isLooping: parsed.isLooping || false,\n logs: (parsed.recentLogs || []).slice(-25),\n }));\n } catch {\n // ignore unreadable project file\n }\n }\n }\n } catch {\n // ignore projects scan error\n }\n\n // Sort: active (streaming/pending) first, then by most recent startedAt\n traces.sort((a, b) => {\n const activeA = (a.state === \"streaming\" || a.state === \"pending\") ? 1 : 0;\n const activeB = (b.state === \"streaming\" || b.state === \"pending\") ? 1 : 0;\n if (activeA !== activeB) return activeB - activeA;\n return (b.startedAt || 0) - (a.startedAt || 0);\n });\n\n return traces;\n}\n","export const MOCK_PRESETS = {\n showcase: { agents: 24, errorRatio: 0, preset: \"showcase\", label: \"All Items Showcase (24)\" },\n cases: { agents: 17, errorRatio: 0, cases: true, label: \"Edge Cases & Items (17)\" },\n showcase_skins: { agents: 15, errorRatio: 0, preset: \"showcase_skins\", label: \"Skins & Outfits (15)\" },\n showcase_props: { agents: 14, errorRatio: 0, preset: \"showcase_props\", label: \"Tech Props & Gadgets (14)\" },\n showcase_pets: { agents: 12, errorRatio: 0, preset: \"showcase_pets\", label: \"Pets & Companions (12)\" },\n showcase_auras: { agents: 12, errorRatio: 0, preset: \"showcase_auras\", label: \"Particle Auras & VFX (12)\" },\n showcase_trophies: { agents: 12, errorRatio: 0, preset: \"showcase_trophies\", label: \"Trophies & Badges (12)\" },\n storm: { agents: 30, errorRatio: 0.15, label: \"Storm (30 Agents)\" },\n busy: { agents: 8, errorRatio: 0, label: \"Busy (8 Agents)\" },\n idle: { agents: 2, errorRatio: 0, label: \"Idle (2 Agents)\" },\n errors: { agents: 10, errorRatio: 0.6, label: \"Error States\" },\n};\n\nconst CLIENTS = [\n { account: \"Claude Code · main\", icon: \"terminal\" },\n { account: \"Claude Code · review\", icon: \"rate_review\" },\n { account: \"Antigravity · agent\", icon: \"smart_toy\" },\n { account: \"Antigravity · dev\", icon: \"construction\" },\n { account: \"Cursor · workspace\", icon: \"edit_note\" },\n { account: \"OpenCode · build\", icon: \"science\" },\n { account: \"Aider\", icon: \"smart_toy\" },\n { account: \"Continue · dev\", icon: \"play_arrow\" },\n];\n\nconst PROVIDER_MODELS = [\n { provider: \"claude\", model: \"claude-3-7-sonnet\" },\n { provider: \"gemini\", model: \"gemini-2.5-pro\" },\n { provider: \"openai\", model: \"gpt-4o\" },\n { provider: \"minimax\", model: \"minimax-m2\" },\n { provider: \"deepseek\", model: \"deepseek-v3\" },\n];\n\nconst ERROR_REASONS = [\n \"rate_limited\",\n \"upstream_timeout\",\n \"quota_exhausted\",\n \"auth_refresh_failed\",\n];\n\nexport const MOCK_TOOL_TYPES = [\"bash\", \"read\", \"edit\", \"search\", \"web\", \"mcp\", \"agent\", \"gitnexus\", \"browser\", \"git\", \"docker\"];\n\n/**\n * 1. Enriched Edge Cases Deck: 17 real edge-case conditions with personality-matched gear.\n */\nexport const CASE_DECK = [\n {\n name: \"01 · Sleeping (Dozing Shiba)\",\n state: \"done\",\n ageMs: 38000,\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_50\", // dozing_shiba\n aura: \"none\",\n trophy: \"none\",\n },\n {\n name: \"02 · Happy (Celebration)\",\n state: \"done\",\n ageMs: 9000,\n cost: 1.42,\n skin: \"skin_200\", // celestial_astro\n props: [\"prop_200\"], // arcade_cabinet\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"03 · Pending (Drone Thinking)\",\n state: \"pending\",\n ageMs: 2500,\n tools: [\"todo\"],\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_100\", // hover_drone\n aura: \"none\",\n trophy: \"none\",\n },\n {\n name: \"04 · GitNexus (Matrix Rain)\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"gitnexus\", \"read\"],\n skin: \"skin_150\", // matrix_hacker\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"05 · Docker (Quantum Mist)\",\n state: \"streaming\",\n ageMs: 15000,\n tools: [\"docker\", \"bash\"],\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_50\", // quantum_mist\n trophy: \"none\",\n },\n {\n name: \"06 · Browser (Holo Emitter)\",\n state: \"streaming\",\n ageMs: 16000,\n tools: [\"browser\", \"web\"],\n skin: \"skin_1\", // cyber_suit\n props: [\"prop_150\"], // hologram_emitter\n pet: \"pet_100\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"07 · Git+Agent (Arcade Diamond)\",\n state: \"streaming\",\n ageMs: 12000,\n tools: [\"git\", \"agent\"],\n concurrent: 4,\n skin: \"skin_51\", // mecha_pilot\n props: [\"prop_200\"], // arcade_cabinet\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"08 · Rate Limited (Oscilloscope)\",\n state: \"error\",\n ageMs: 6000,\n error: \"rate_limited\",\n skin: \"skin_101\", // stealth_ninja\n props: [\"prop_300\"], // lab_oscilloscope\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"09 · Upstream Timeout (Bonsai)\",\n state: \"error\",\n ageMs: 30000,\n error: \"upstream_timeout\",\n skin: \"skin_201\", // celestial_astro\n props: [\"prop_250\"], // terrarium_bonsai\n pet: \"pet_100\", // hover_drone\n aura: \"none\",\n trophy: \"none\",\n },\n {\n name: \"10 · Quota Exhausted (Server)\",\n state: \"error\",\n ageMs: 8000,\n error: \"quota_exhausted\",\n skin: \"skin_151\", // matrix_hacker\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_0\", // matrix_rain\n trophy: \"none\",\n },\n {\n name: \"11 · Auth Failed (Ninja Spark)\",\n state: \"error\",\n ageMs: 5000,\n error: \"auth_refresh_failed\",\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_75\", // glitch_halo\n trophy: \"none\",\n },\n {\n name: \"12 · Fallback 1 (Espresso Station)\",\n state: \"streaming\",\n ageMs: 13000,\n tools: [\"bash\"],\n fallbackShift: 3,\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"13 · Fallback 2 (Holo + Key)\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"browser\", \"mcp\"],\n fallbackShift: 2,\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_150\"], // hologram_emitter\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"14 · Slow Task (DualMon + Owl)\",\n state: \"streaming\",\n ageMs: 36000,\n tools: [\"docker\"],\n skin: \"skin_152\", // matrix_hacker\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"15 · Queue+Cached (Bonsai Master)\",\n state: \"streaming\",\n ageMs: 10000,\n tools: [\"read\", \"search\"],\n concurrent: 5,\n cachedBoost: true,\n skin: \"skin_202\", // celestial_astro\n props: [\"prop_250\"], // terrarium_bonsai\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"16 · Runaway Loop (Oscilloscope)\",\n state: \"streaming\",\n ageMs: 18000,\n tools: [\"bash\"],\n isLooping: true,\n skin: \"skin_102\", // stealth_ninja\n props: [\"prop_300\"], // lab_oscilloscope\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"17 · Expensive Task (Arcade Bug)\",\n state: \"done\",\n ageMs: 20000,\n cost: 7.35,\n skin: \"skin_52\", // mecha_pilot\n props: [\"prop_200\", \"prop_0\"], // arcade + supercomputer\n pet: \"pet_100\", // hover_drone\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_75\", // diamond_bug\n },\n];\n\n/**\n * 2. Comprehensive Showcase Deck: 24 workstations covering 100% of archetypes across all categories.\n */\nexport const SHOWCASE_ALL_DECK = [\n {\n name: \"01 · CyberSuit · Server · Cat\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"gitnexus\", \"read\"],\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"02 · MechaPilot · DualMon · Shiba\",\n state: \"streaming\",\n ageMs: 16000,\n tools: [\"docker\", \"bash\"],\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_50\"], // dual_monitor\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"03 · StealthNinja · Espresso · Drone\",\n state: \"happy\",\n ageMs: 9000,\n cost: 1.45,\n tools: [\"edit\"],\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_100\"], // espresso_station\n pet: \"pet_100\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"04 · MatrixHacker · Holo · Owl\",\n state: \"streaming\",\n ageMs: 18000,\n tools: [\"browser\", \"web\"],\n skin: \"skin_150\", // matrix_hacker\n props: [\"prop_150\"], // hologram_emitter\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"05 · CelestialAstro · Arcade · Cat\",\n state: \"happy\",\n ageMs: 11000,\n cost: 2.1,\n tools: [\"bash\"],\n skin: \"skin_200\", // celestial_astro\n props: [\"prop_200\"], // arcade_cabinet\n pet: \"pet_2\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"06 · CyberSuit · Bonsai + Server\",\n state: \"pending\",\n ageMs: 2400,\n tools: [\"todo\"],\n skin: \"skin_1\", // cyber_suit\n props: [\"prop_250\", \"prop_1\"], // terrarium_bonsai + supercomputer\n pet: \"pet_51\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"07 · MechaPilot · Oscilloscope · Drone\",\n state: \"streaming\",\n ageMs: 22000,\n tools: [\"agent\", \"git\"],\n skin: \"skin_51\", // mecha_pilot\n props: [\"prop_300\"], // lab_oscilloscope\n pet: \"pet_101\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"08 · StealthNinja · DualMon + Espresso\",\n state: \"streaming\",\n ageMs: 15000,\n tools: [\"read\", \"search\"],\n skin: \"skin_101\", // stealth_ninja\n props: [\"prop_51\", \"prop_101\"], // dual_monitor + espresso\n pet: \"pet_151\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"09 · MatrixHacker · Oscilloscope (Loop)\",\n state: \"streaming\",\n ageMs: 19000,\n tools: [\"bash\"],\n isLooping: true,\n skin: \"skin_151\", // matrix_hacker\n props: [\"prop_301\"], // lab_oscilloscope\n pet: \"pet_3\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"10 · CelestialAstro · Holo · Shiba\",\n state: \"streaming\",\n ageMs: 13000,\n tools: [\"mcp\", \"bash\"],\n skin: \"skin_201\", // celestial_astro\n props: [\"prop_151\"], // hologram_emitter\n pet: \"pet_52\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"11 · CyberSuit · Arcade · Drone\",\n state: \"streaming\",\n ageMs: 21000,\n tools: [\"docker\"],\n skin: \"skin_2\", // cyber_suit\n props: [\"prop_201\"], // arcade_cabinet\n pet: \"pet_102\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"12 · MechaPilot · Bonsai · Owl (Sleep)\",\n state: \"done\",\n ageMs: 39000,\n skin: \"skin_52\", // mecha_pilot\n props: [\"prop_251\"], // terrarium_bonsai\n pet: \"pet_152\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n {\n name: \"13 · StealthNinja · Server (Error)\",\n state: \"error\",\n ageMs: 6500,\n error: \"rate_limited\",\n skin: \"skin_102\", // stealth_ninja\n props: [\"prop_2\"], // supercomputer\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_26\", // plasma_ring\n trophy: \"trophy_1\", // golden_key\n },\n {\n name: \"14 · MatrixHacker · DualMon · Shiba\",\n state: \"streaming\",\n ageMs: 12000,\n tools: [\"web\", \"read\"],\n skin: \"skin_152\", // matrix_hacker\n props: [\"prop_52\"], // dual_monitor\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_51\", // quantum_mist\n trophy: \"trophy_26\", // silicon_wafer\n },\n {\n name: \"15 · CelestialAstro · Espresso · Drone\",\n state: \"happy\",\n ageMs: 8500,\n cost: 3.2,\n tools: [\"git\"],\n skin: \"skin_202\", // celestial_astro\n props: [\"prop_102\"], // espresso_station\n pet: \"pet_100\", // hover_drone\n aura: \"aura_76\", // glitch_halo\n trophy: \"trophy_51\", // quantum_crystal\n },\n {\n name: \"16 · CyberSuit · Holo · Owl\",\n state: \"streaming\",\n ageMs: 17000,\n tools: [\"bash\", \"edit\"],\n skin: \"skin_0\", // cyber_suit\n props: [\"prop_152\"], // hologram_emitter\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_1\", // matrix_rain\n trophy: \"trophy_76\", // diamond_bug\n },\n {\n name: \"17 · MechaPilot · Arcade · Cat\",\n state: \"streaming\",\n ageMs: 14000,\n tools: [\"agent\", \"gitnexus\"],\n skin: \"skin_50\", // mecha_pilot\n props: [\"prop_202\"], // arcade_cabinet\n pet: \"pet_2\", // cyber_cat\n aura: \"aura_27\", // plasma_ring\n trophy: \"trophy_2\", // golden_key\n },\n {\n name: \"18 · StealthNinja · Bonsai · Shiba\",\n state: \"pending\",\n ageMs: 2200,\n tools: [\"todo\"],\n skin: \"skin_100\", // stealth_ninja\n props: [\"prop_252\"], // terrarium_bonsai\n pet: \"pet_51\", // dozing_shiba\n aura: \"aura_52\", // quantum_mist\n trophy: \"trophy_27\", // silicon_wafer\n },\n {\n name: \"19 · MatrixHacker · Oscilloscope · Drone\",\n state: \"streaming\",\n ageMs: 16000,\n tools: [\"docker\", \"mcp\"],\n skin: \"skin_150\", // matrix_hacker\n props: [\"prop_302\"], // lab_oscilloscope\n pet: \"pet_101\", // hover_drone\n aura: \"aura_77\", // glitch_halo\n trophy: \"trophy_52\", // quantum_crystal\n },\n {\n name: \"20 · CelestialAstro · Server · Owl\",\n state: \"streaming\",\n ageMs: 25000,\n tools: [\"read\", \"bash\"],\n skin: \"skin_200\", // celestial_astro\n props: [\"prop_0\"], // supercomputer\n pet: \"pet_151\", // cyber_owl\n aura: \"aura_2\", // matrix_rain\n trophy: \"trophy_77\", // diamond_bug\n },\n {\n name: \"21 · CyberSuit · DualMon + Arcade\",\n state: \"happy\",\n ageMs: 9500,\n cost: 4.5,\n tools: [\"gitnexus\"],\n skin: \"skin_1\", // cyber_suit\n props: [\"prop_50\", \"prop_200\"], // dual_monitor + arcade\n pet: \"pet_1\", // cyber_cat\n aura: \"aura_25\", // plasma_ring\n trophy: \"trophy_0\", // golden_key\n },\n {\n name: \"22 · MechaPilot · Espresso + Holo\",\n state: \"streaming\",\n ageMs: 13500,\n tools: [\"web\", \"mcp\"],\n skin: \"skin_51\", // mecha_pilot\n props: [\"prop_100\", \"prop_150\"], // espresso + holo\n pet: \"pet_50\", // dozing_shiba\n aura: \"aura_50\", // quantum_mist\n trophy: \"trophy_25\", // silicon_wafer\n },\n {\n name: \"23 · StealthNinja · Oscilloscope + Server\",\n state: \"streaming\",\n ageMs: 15500,\n tools: [\"agent\", \"bash\"],\n skin: \"skin_101\", // stealth_ninja\n props: [\"prop_300\", \"prop_1\"], // oscilloscope + supercomputer\n pet: \"pet_100\", // hover_drone\n aura: \"aura_75\", // glitch_halo\n trophy: \"trophy_50\", // quantum_crystal\n },\n {\n name: \"24 · MatrixHacker · Bonsai + DualMon\",\n state: \"streaming\",\n ageMs: 17500,\n tools: [\"git\", \"edit\"],\n skin: \"skin_151\", // matrix_hacker\n props: [\"prop_250\", \"prop_51\"], // bonsai + dual_monitor\n pet: \"pet_150\", // cyber_owl\n aura: \"aura_0\", // matrix_rain\n trophy: \"trophy_75\", // diamond_bug\n },\n];\n\n/**\n * 3. Skins Showcase: 15 agents comparing 5 archetypes in 3 colorways each.\n */\nexport const SHOWCASE_SKINS_DECK = [\n { name: \"Neon Enforcer (Visor)\", skin: \"skin_0\", state: \"streaming\", ageMs: 12000, tools: [\"bash\"], props: [\"prop_50\"] },\n { name: \"Crimson Striker (Monocle)\", skin: \"skin_1\", state: \"streaming\", ageMs: 14000, tools: [\"read\"], props: [\"prop_100\"] },\n { name: \"Electric Specter (Horns)\", skin: \"skin_3\", state: \"happy\", ageMs: 9000, tools: [\"edit\"], props: [\"prop_200\"] },\n { name: \"Obsidian Ronin (Kabuto)\", skin: \"skin_7\", state: \"pending\", ageMs: 2500, tools: [\"todo\"], props: [\"prop_250\"] },\n { name: \"Apex Frame (V-Fin)\", skin: \"skin_10\", state: \"streaming\", ageMs: 16000, tools: [\"docker\"], props: [\"prop_0\"] },\n { name: \"Heavy Colossus (Blast)\", skin: \"skin_11\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"], props: [\"prop_150\"] },\n { name: \"Berserk EVA (Horn)\", skin: \"skin_12\", state: \"streaming\", ageMs: 15000, tools: [\"search\"], props: [\"prop_300\"] },\n { name: \"Shadow Shinobi (Headband)\", skin: \"skin_20\", state: \"streaming\", ageMs: 13000, tools: [\"gitnexus\"], props: [\"prop_250\"] },\n { name: \"Kage Oni (Demon Mask)\", skin: \"skin_22\", state: \"streaming\", ageMs: 15000, tools: [\"search\"], props: [\"prop_51\"] },\n { name: \"Cyber Kasa (Conical Hat)\", skin: \"skin_24\", state: \"done\", ageMs: 38000, props: [\"prop_101\"] },\n { name: \"Root Netrunner (Hoodie)\", skin: \"skin_30\", state: \"streaming\", ageMs: 17000, tools: [\"web\"], props: [\"prop_0\"] },\n { name: \"Binary Coder (VR Goggles)\", skin: \"skin_31\", state: \"streaming\", ageMs: 19000, tools: [\"bash\"], isLooping: true, props: [\"prop_301\"] },\n { name: \"Cablehead (Dreadlocks)\", skin: \"skin_37\", state: \"streaming\", ageMs: 11000, tools: [\"mcp\"], props: [\"prop_151\"] },\n { name: \"Solar Voyager (Bubble Dome)\", skin: \"skin_40\", state: \"happy\", ageMs: 8000, tools: [\"git\"], props: [\"prop_201\"] },\n { name: \"Nebula Drifter (Saturn Ring)\", skin: \"skin_43\", state: \"error\", ageMs: 6000, error: \"rate_limited\", props: [\"prop_52\"] },\n];\n\n/**\n * 4. Tech Props Showcase: 14 workstations comparing all 7 props (single & dual setups).\n */\nexport const SHOWCASE_PROPS_DECK = [\n { name: \"Supercomputer Solo\", props: [\"prop_0\"], skin: \"skin_0\", state: \"streaming\", ageMs: 12000, tools: [\"docker\"] },\n { name: \"Supercomputer + DualMon\", props: [\"prop_0\", \"prop_50\"], skin: \"skin_50\", state: \"streaming\", ageMs: 15000, tools: [\"bash\"] },\n { name: \"Dual Monitor Solo\", props: [\"prop_50\"], skin: \"skin_100\", state: \"streaming\", ageMs: 14000, tools: [\"read\"] },\n { name: \"DualMon + Espresso\", props: [\"prop_50\", \"prop_100\"], skin: \"skin_150\", state: \"happy\", ageMs: 9000, tools: [\"edit\"] },\n { name: \"Espresso Station Solo\", props: [\"prop_100\"], skin: \"skin_200\", state: \"streaming\", ageMs: 16000, tools: [\"web\"] },\n { name: \"Espresso + Holo\", props: [\"prop_100\", \"prop_150\"], skin: \"skin_1\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"] },\n { name: \"Hologram Emitter Solo\", props: [\"prop_150\"], skin: \"skin_51\", state: \"streaming\", ageMs: 13000, tools: [\"gitnexus\"] },\n { name: \"Holo + Arcade\", props: [\"prop_150\", \"prop_200\"], skin: \"skin_101\", state: \"happy\", ageMs: 11000, tools: [\"git\"] },\n { name: \"Arcade Cabinet Solo\", props: [\"prop_200\"], skin: \"skin_151\", state: \"streaming\", ageMs: 17000, tools: [\"bash\"] },\n { name: \"Arcade + Bonsai\", props: [\"prop_200\", \"prop_250\"], skin: \"skin_201\", state: \"pending\", ageMs: 2500, tools: [\"todo\"] },\n { name: \"Terrarium Bonsai Solo\", props: [\"prop_250\"], skin: \"skin_2\", state: \"done\", ageMs: 38000 },\n { name: \"Bonsai + Oscilloscope\", props: [\"prop_250\", \"prop_300\"], skin: \"skin_52\", state: \"streaming\", ageMs: 20000, tools: [\"docker\"] },\n { name: \"Lab Oscilloscope Solo\", props: [\"prop_300\"], skin: \"skin_102\", state: \"streaming\", ageMs: 19000, tools: [\"bash\"], isLooping: true },\n { name: \"Oscilloscope + Server\", props: [\"prop_300\", \"prop_0\"], skin: \"skin_152\", state: \"error\", ageMs: 6000, error: \"rate_limited\" },\n];\n\n/**\n * 5. Pets Showcase: 12 workstations with all 4 companions.\n */\nexport const SHOWCASE_PETS_DECK = [\n { name: \"Cyber Cat (Cozy)\", pet: \"pet_1\", skin: \"skin_0\", state: \"streaming\", ageMs: 12000, tools: [\"bash\"] },\n { name: \"Cyber Cat (Playful)\", pet: \"pet_2\", skin: \"skin_50\", state: \"happy\", ageMs: 9000, tools: [\"edit\"] },\n { name: \"Cyber Cat (Sleeping)\", pet: \"pet_3\", skin: \"skin_100\", state: \"done\", ageMs: 38000 },\n { name: \"Dozing Shiba (Golden)\", pet: \"pet_50\", skin: \"skin_150\", state: \"streaming\", ageMs: 14000, tools: [\"read\"] },\n { name: \"Dozing Shiba (Alert)\", pet: \"pet_51\", skin: \"skin_200\", state: \"happy\", ageMs: 10000, tools: [\"git\"] },\n { name: \"Dozing Shiba (Resting)\", pet: \"pet_52\", skin: \"skin_1\", state: \"pending\", ageMs: 2400, tools: [\"todo\"] },\n { name: \"Hover Drone (Orbital)\", pet: \"pet_100\", skin: \"skin_51\", state: \"streaming\", ageMs: 16000, tools: [\"docker\"] },\n { name: \"Hover Drone (Patrol)\", pet: \"pet_101\", skin: \"skin_101\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"] },\n { name: \"Hover Drone (Recon)\", pet: \"pet_102\", skin: \"skin_151\", state: \"error\", ageMs: 6500, error: \"quota_exhausted\" },\n { name: \"Cyber Owl (Clockwork)\", pet: \"pet_150\", skin: \"skin_201\", state: \"streaming\", ageMs: 13000, tools: [\"web\"] },\n { name: \"Cyber Owl (Wisdom)\", pet: \"pet_151\", skin: \"skin_2\", state: \"happy\", ageMs: 8500, tools: [\"gitnexus\"] },\n { name: \"Cyber Owl (Night Watch)\", pet: \"pet_152\", skin: \"skin_52\", state: \"streaming\", ageMs: 22000, tools: [\"mcp\"] },\n];\n\n/**\n * 6. Particle Auras Showcase: 12 workstations glowing with all 4 aura archetypes.\n */\nexport const SHOWCASE_AURAS_DECK = [\n { name: \"Matrix Rain (Laser Green)\", aura: \"aura_0\", skin: \"skin_150\", state: \"streaming\", ageMs: 14000, tools: [\"gitnexus\"] },\n { name: \"Matrix Rain (Emerald)\", aura: \"aura_1\", skin: \"skin_151\", state: \"streaming\", ageMs: 17000, tools: [\"bash\"], isLooping: true },\n { name: \"Matrix Rain (Jade)\", aura: \"aura_2\", skin: \"skin_152\", state: \"happy\", ageMs: 9000, tools: [\"read\"] },\n { name: \"Plasma Ring (Cyan Orbit)\", aura: \"aura_25\", skin: \"skin_0\", state: \"streaming\", ageMs: 13000, tools: [\"web\"] },\n { name: \"Plasma Ring (Electric)\", aura: \"aura_26\", skin: \"skin_1\", state: \"happy\", ageMs: 11000, tools: [\"edit\"] },\n { name: \"Plasma Ring (Cosmic)\", aura: \"aura_27\", skin: \"skin_2\", state: \"pending\", ageMs: 2500, tools: [\"todo\"] },\n { name: \"Quantum Mist (Nebula)\", aura: \"aura_50\", skin: \"skin_50\", state: \"streaming\", ageMs: 15000, tools: [\"docker\"] },\n { name: \"Quantum Mist (Violet)\", aura: \"aura_51\", skin: \"skin_51\", state: \"streaming\", ageMs: 18000, tools: [\"agent\"] },\n { name: \"Quantum Mist (Astral)\", aura: \"aura_52\", skin: \"skin_52\", state: \"done\", ageMs: 38000 },\n { name: \"Glitch Halo (Prismatic)\", aura: \"aura_75\", skin: \"skin_100\", state: \"streaming\", ageMs: 16000, tools: [\"mcp\"] },\n { name: \"Glitch Halo (Amber Shock)\", aura: \"aura_76\", skin: \"skin_101\", state: \"error\", ageMs: 6000, error: \"rate_limited\" },\n { name: \"Glitch Halo (Neon Spark)\", aura: \"aura_77\", skin: \"skin_102\", state: \"streaming\", ageMs: 20000, tools: [\"git\"] },\n];\n\n/**\n * 7. Trophies Showcase: 12 workstations displaying all 4 trophy models on obsidian pedestals.\n */\nexport const SHOWCASE_TROPHIES_DECK = [\n { name: \"Golden Key (Master)\", trophy: \"trophy_0\", skin: \"skin_0\", state: \"happy\", ageMs: 9000, cost: 2.5, tools: [\"edit\"] },\n { name: \"Golden Key (Champion)\", trophy: \"trophy_1\", skin: \"skin_1\", state: \"streaming\", ageMs: 14000, tools: [\"bash\"] },\n { name: \"Golden Key (Honor)\", trophy: \"trophy_2\", skin: \"skin_2\", state: \"pending\", ageMs: 2500, tools: [\"todo\"] },\n { name: \"Silicon Wafer (3nm)\", trophy: \"trophy_25\", skin: \"skin_50\", state: \"streaming\", ageMs: 16000, tools: [\"docker\"] },\n { name: \"Silicon Wafer (Nanometer)\", trophy: \"trophy_26\", skin: \"skin_51\", state: \"happy\", ageMs: 10000, cost: 3.1, tools: [\"git\"] },\n { name: \"Silicon Wafer (Quantum)\", trophy: \"trophy_27\", skin: \"skin_52\", state: \"streaming\", ageMs: 19000, tools: [\"read\"] },\n { name: \"Quantum Crystal (Prism)\", trophy: \"trophy_50\", skin: \"skin_100\", state: \"streaming\", ageMs: 13000, tools: [\"gitnexus\"] },\n { name: \"Quantum Crystal (Facet)\", trophy: \"trophy_51\", skin: \"skin_101\", state: \"happy\", ageMs: 8500, cost: 1.8, tools: [\"web\"] },\n { name: \"Quantum Crystal (Pillar)\", trophy: \"trophy_52\", skin: \"skin_102\", state: \"done\", ageMs: 38000 },\n { name: \"Diamond Bug (Zero-Day)\", trophy: \"trophy_75\", skin: \"skin_150\", state: \"streaming\", ageMs: 15000, tools: [\"agent\"] },\n { name: \"Diamond Bug (Flawless)\", trophy: \"trophy_76\", skin: \"skin_151\", state: \"streaming\", ageMs: 18000, tools: [\"bash\"], isLooping: true },\n { name: \"Diamond Bug (Exalted)\", trophy: \"trophy_77\", skin: \"skin_152\", state: \"error\", ageMs: 6500, error: \"rate_limited\" },\n];\n\nfunction createRandom(seed) {\n let s = seed >>> 0 || 1;\n return () => {\n s ^= s << 13;\n s ^= s >>> 17;\n s ^= s << 5;\n s >>>= 0;\n return s / 4294967296;\n };\n}\n\nfunction pick(rand, list) {\n return list[Math.floor(rand() * list.length) % list.length];\n}\n\nfunction accountTarget(index) {\n return PROVIDER_MODELS[index % PROVIDER_MODELS.length];\n}\n\nfunction randomTokens(rand) {\n return {\n input: Math.round(400 + rand() * 14000),\n output: Math.round(80 + rand() * 2900),\n cached: Math.round(rand() * 6000),\n };\n}\n\nexport function generateMockTraces({ count = null, errorRatio = 0, seed = 42, now = Date.now(), cases = false, preset = null } = {}) {\n let activeDeck = null;\n if (preset === \"showcase\" || preset === \"items\") {\n activeDeck = SHOWCASE_ALL_DECK;\n } else if (preset === \"showcase_skins\") {\n activeDeck = SHOWCASE_SKINS_DECK;\n } else if (preset === \"showcase_props\") {\n activeDeck = SHOWCASE_PROPS_DECK;\n } else if (preset === \"showcase_pets\") {\n activeDeck = SHOWCASE_PETS_DECK;\n } else if (preset === \"showcase_auras\") {\n activeDeck = SHOWCASE_AURAS_DECK;\n } else if (preset === \"showcase_trophies\") {\n activeDeck = SHOWCASE_TROPHIES_DECK;\n } else if (cases || preset === \"cases\") {\n activeDeck = CASE_DECK;\n }\n\n const effectiveCount = count !== null && count !== undefined ? count : (activeDeck ? activeDeck.length : 8);\n const rand = createRandom(seed);\n const traces = [];\n\n for (let i = 0; i < effectiveCount; i += 1) {\n const client = CLIENTS[i % CLIENTS.length];\n const cycle = Math.floor(i / CLIENTS.length) + 1;\n const defaultAccount = cycle > 1 ? `${client.account} ${cycle}` : client.account;\n const connectionId = `mock-conn-${i}`;\n const target = accountTarget(i);\n const deck = activeDeck ? activeDeck[i % activeDeck.length] : null;\n const account = deck?.name || defaultAccount;\n const randAge = Math.floor(rand() * 40000);\n const randErr = rand() < errorRatio;\n const ageMs = deck ? deck.ageMs : randAge;\n const startedAt = now - ageMs;\n const isError = deck ? deck.state === \"error\" : randErr;\n const isLooping = Boolean(deck?.isLooping || (errorRatio > 0.4 && i === 0));\n\n const ageRatio = ageMs / 40000;\n let state;\n if (isLooping) state = \"streaming\";\n else if (deck) state = deck.state;\n else if (isError) state = \"error\";\n else if (ageRatio < 0.25) state = \"pending\";\n else if (ageRatio < 0.6) state = \"streaming\";\n else state = \"done\";\n\n const tokens = randomTokens(rand);\n const toolRand = createRandom(seed * 7919 + i * 104729 + 13);\n const toolCount = state === \"done\" ? 0 : 1 + Math.floor(toolRand() * 3);\n const toolPick = [];\n for (let k = 0; k < toolCount; k += 1) {\n toolPick.push(MOCK_TOOL_TYPES[Math.floor(toolRand() * MOCK_TOOL_TYPES.length)]);\n }\n const toolNames = isLooping ? [\"bash\"] : (deck?.tools ?? (state === \"error\" ? [] : toolPick));\n const toolCalls = [];\n for (const tool of toolNames) {\n if (!toolCalls.some((c) => c.tool === tool)) {\n toolCalls.push({ tool, state: toolCalls.length === 0 ? \"running\" : \"queued\" });\n }\n }\n\n const wantsFallback = deck ? !!deck.fallbackShift : toolRand() < 0.28;\n const fallbackProvider = PROVIDER_MODELS[(i + (deck?.fallbackShift ?? 3)) % PROVIDER_MODELS.length].provider;\n const fallback =\n wantsFallback && (state === \"pending\" || state === \"streaming\") && fallbackProvider !== target.provider\n ? { from: fallbackProvider }\n : null;\n\n const concurrent = deck?.concurrent ?? (state === \"done\" || state === \"error\" ? 1 : 1 + Math.floor(toolRand() * 3));\n if (deck?.cachedBoost) tokens.cached = 14000;\n\n // Realistic mock logs\n const logs = [];\n const baseTime = startedAt || (now - 20000);\n logs.push({\n timestamp: new Date(baseTime).toLocaleTimeString(),\n type: \"prompt\",\n summary: \"User Prompt\",\n detail: `Execute pipeline for ${account} (${target.model})`,\n });\n\n if (isLooping) {\n for (let j = 0; j < 6; j++) {\n logs.push({\n timestamp: new Date(baseTime + 2000 + j * 2000).toLocaleTimeString(),\n type: \"bash\",\n summary: \"run_command\",\n detail: \"npm test -- --bail (failed exit 1)\",\n });\n }\n logs.push({\n timestamp: new Date(now).toLocaleTimeString(),\n type: \"error\",\n summary: \"Loop Warning\",\n detail: \"Runaway loop detected: 6 consecutive identical tool failures\",\n });\n } else {\n toolNames.forEach((tName, idx) => {\n logs.push({\n timestamp: new Date(baseTime + 1500 + idx * 2500).toLocaleTimeString(),\n type: tName,\n summary: tName,\n detail: `${tName} operation completed`,\n });\n });\n if (isError) {\n logs.push({\n timestamp: new Date(now).toLocaleTimeString(),\n type: \"error\",\n summary: \"Error\",\n detail: deck?.error || \"Upstream rate limit or timeout\",\n });\n }\n }\n\n traces.push({\n traceId: `mock-${i}-${Math.floor(rand() * 1e6).toString(36)}`,\n cli: \"mock\",\n connectionId,\n account,\n model: target.model,\n provider: target.provider,\n state,\n startedAt,\n elapsedMs: ageMs,\n tokens,\n cost: deck?.cost ?? Math.round((tokens.input * 0.000015 + tokens.output * 0.00006) * 100) / 100,\n status: isLooping || isError ? \"error\" : \"200\",\n error: isError ? deck?.error ?? pick(rand, ERROR_REASONS) : (isLooping ? \"runaway_loop\" : null),\n clientIcon: client.icon,\n toolCalls,\n tools: toolNames,\n activeTool: toolNames[0] || null,\n currentCommand: isLooping ? \"npm test -- --bail (looping)\" : (toolNames[0] ? `${toolNames[0]} task running...` : null),\n fallback,\n concurrent,\n isLooping,\n skin: deck?.skin ?? null,\n aura: deck?.aura ?? null,\n props: deck?.props ?? [],\n pet: deck?.pet ?? null,\n trophy: deck?.trophy ?? null,\n theme: deck?.theme ?? null,\n logs,\n });\n }\n\n return traces;\n}\n\nexport function mockProviderDescriptors(traces) {\n const seen = new Map();\n for (const trace of traces) {\n if (trace.provider && !seen.has(trace.provider)) {\n seen.set(trace.provider, {\n provider: trace.provider,\n name: trace.provider.charAt(0).toUpperCase() + trace.provider.slice(1),\n });\n }\n }\n return [...seen.values()];\n}\n","import { getLiveTraceSnapshot, getProvidersFromTraces } from \"@/lib/watchers/watcherManager.js\";\nimport { generateMockTraces, mockProviderDescriptors, MOCK_PRESETS } from \"@/lib/mockTraces.js\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport async function GET(request) {\n const { searchParams } = new URL(request.url);\n const source = searchParams.get(\"source\") || \"live\";\n const mockPreset = searchParams.get(\"mockPreset\") || searchParams.get(\"preset\");\n const hours = Number(searchParams.get(\"hours\") || 24);\n const maxAgeMs = Math.max(1, hours) * 60 * 60 * 1000;\n\n const encoder = new TextEncoder();\n\n const stream = new ReadableStream({\n async start(controller) {\n let isAlive = true;\n\n const send = (data) => {\n if (!isAlive) return;\n try {\n controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\\n\\n`));\n } catch {\n isAlive = false;\n }\n };\n\n const pushUpdate = async () => {\n if (!isAlive) return;\n\n if (source === \"mock\" || mockPreset) {\n const presetConfig = MOCK_PRESETS[mockPreset] || MOCK_PRESETS.cases;\n const traces = generateMockTraces({\n count: presetConfig.agents,\n errorRatio: presetConfig.errorRatio,\n cases: !!presetConfig.cases,\n preset: mockPreset,\n seed: 42,\n });\n const providers = mockProviderDescriptors(traces);\n send({ traces, providers, timestamp: Date.now(), mode: \"mock\", preset: mockPreset || \"cases\" });\n return;\n }\n\n // Live Mode\n try {\n const { traces, errors } = await getLiveTraceSnapshot(false, maxAgeMs);\n const providers = getProvidersFromTraces(traces);\n send({\n traces,\n providers,\n errors,\n timestamp: Date.now(),\n mode: \"live\",\n activeAgents: traces.filter((t) => t.state === \"streaming\" || t.state === \"pending\").length,\n });\n } catch (err) {\n console.error(\"[SSE] Failed to fetch live traces:\", err);\n send({\n traces: [],\n providers: [],\n errors: [{ source: \"telemetry\", message: err.message || \"Failed to read live traces\" }],\n timestamp: Date.now(),\n mode: \"live\",\n activeAgents: 0,\n });\n }\n };\n\n // Initial push\n await pushUpdate();\n\n // Poll interval: 1.5 seconds for fresh log watcher updates\n const interval = setInterval(async () => {\n if (!isAlive) {\n clearInterval(interval);\n return;\n }\n await pushUpdate();\n }, 1500);\n\n request.signal.addEventListener(\"abort\", () => {\n isAlive = false;\n clearInterval(interval);\n try {\n controller.close();\n } catch {\n // ignore\n }\n });\n },\n });\n\n return new Response(stream, {\n headers: {\n \"Content-Type\": \"text/event-stream; charset=utf-8\",\n \"Cache-Control\": \"no-cache, no-transform\",\n Connection: \"keep-alive\",\n },\n });\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","SpanStatusCode","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","isRouteCacheOwner","CachedRouteKind","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","userland","require","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","req","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","waitUntil","Promise","resolve","buildId","deploymentId","params","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","previewProps","normalizedSrcPage","isPrerendered","Boolean","routes","cacheOwner","isIsr","dynamicRoutes","render404","prerenderInfo","fallback","adapterPath","cacheKey","method","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","context","renderOpts","experimental","authInterrupts","useCacheTimeout","durableUseCacheEntries","cacheComponents","validationLevel","instantInsights","hmrRefreshHash","cacheLifeProfiles","cacheLife","staticPageGenerationTimeout","onClose","cb","on","onAfterTaskError","undefined","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","responseGenerator","previousCacheEntry","setHeader","response","handle","prerender","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","headers","type","revalidate","collectedRevalidate","expire","collectedExpire","expireTime","cacheEntry","value","status","body","Buffer","from","arrayBuffer","cacheControl","err","isStale","silenceLog","onRequestError","routerKind","routePath","routeType","revalidateReason","isStaticGeneration","handleResponse","currentSpan","parentSpan","routeKind","isFallback","isRoutePPREnabled","error","Error","isMiss","delete","getHeader","get","set","Response","headersSent","recordException","setStatus","code","ERROR","message","setAttribute","name","writableEnded","destroyed","setAttributes","toString","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","withPropagatedContext","trace","spanName","SERVER","attributes","url","span","isProcessAlive","pid","kill","e","extractWorkspaceFromFolder","folderName","cleaned","parts","split","filter","length","normalizeClaudeTool","input","n","String","toLowerCase","cmd","command","trim","cmdLower","startsWith","includes","detail","slice","file","file_path","path","basename","pattern","classifyClaudeEntrypoint","entrypoints","seen","Set","has","clientType","label","detectProvider","modelName","m","base","compactText","maxLength","text","getTextContent","content","Array","isArray","combined","block","map","join","isPreviewableText","test","parseClaudeTranscript","transcriptPath","result","totalIn","totalOut","totalCached","hasUsage","model","activeTool","activeCommand","sessionTitle","lastText","lastTextRole","toolSet","lastTimestamp","toolInvocations","recentLogs","cwd","slug","sessionId","isLooping","readFile","lines","line","entry","JSON","parse","entryTime","timestamp","Date","getTime","now","entrypoint","add","aiTitle","prompt","lastPrompt","msg","u","usage","input_tokens","output_tokens","cache_read_input_tokens","role","push","toISOString","summary","time","is_error","lastN","s","window","targetKey","sameCall","every","w","timeSpan","getClaudeTraces","maxAgeMs","homeDir","homedir","sessionsDir","projectsDir","fallbackWorkspace","traces","seenSessionIds","sessionFiles","readdir","catch","f","endsWith","rawMeta","meta","startedAt","updatedAt","alive","lastActive","projectFolders","pf","candidate","access","parsed","state","workspaceName","elapsedMs","Math","max","sessionLabel","connectionId","traceId","cli","source","account","provider","tokens","output","cached","cost","tools","currentCommand","logs","folderPath","files","fileSessionId","stat","mtime","mtimeMs","isRecent","isPending","birthtimeMs","sort","a","b","activeA","activeB"],"mappings":"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","ignoreList":[0]}
|