agmon 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/fallback-build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +8 -8
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +16 -15
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -15
  15. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +8 -7
  16. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  17. package/.next/server/app/api/media/route.js.nft.json +1 -1
  18. package/.next/server/app/api/reports/tokens/route.js.nft.json +1 -1
  19. package/.next/server/app/api/sessions/[id]/transcript/route.js +1 -1
  20. package/.next/server/app/api/sessions/[id]/transcript/route.js.nft.json +1 -1
  21. package/.next/server/app/api/traces/stream/route.js +1 -1
  22. package/.next/server/app/api/traces/stream/route.js.nft.json +1 -1
  23. package/.next/server/app/api/version/route.js.nft.json +1 -1
  24. package/.next/server/app/api/workspace/file-content/route.js.nft.json +1 -1
  25. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  26. package/.next/server/app/chat/page.js.nft.json +1 -1
  27. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/chat.html +1 -1
  29. package/.next/server/app/chat.rsc +4 -4
  30. package/.next/server/app/chat.segments/_full.segment.rsc +4 -4
  31. package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  32. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +6 -5
  33. package/.next/server/app/index.html +1 -1
  34. package/.next/server/app/index.rsc +5 -5
  35. package/.next/server/app/index.segments/__PAGE__.segment.rsc +7 -6
  36. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  37. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  38. package/.next/server/app/page.js.nft.json +1 -1
  39. package/.next/server/app/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/reports/page.js.nft.json +1 -1
  41. package/.next/server/app/reports/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/reports.html +1 -1
  43. package/.next/server/app/reports.rsc +2 -2
  44. package/.next/server/app/reports.segments/_full.segment.rsc +2 -2
  45. package/.next/server/app/reports.segments/_tree.segment.rsc +2 -2
  46. package/.next/server/app/reports.segments/reports/__PAGE__.segment.rsc +4 -3
  47. package/.next/server/app/store/page.js.nft.json +1 -1
  48. package/.next/server/app/store/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/store.html +1 -1
  50. package/.next/server/app/store.rsc +2 -2
  51. package/.next/server/app/store.segments/_full.segment.rsc +2 -2
  52. package/.next/server/app/store.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/store.segments/store/__PAGE__.segment.rsc +4 -3
  54. package/.next/server/chunks/[root-of-the-server]__0dw97_pahi8uf._.js +3 -0
  55. package/.next/server/chunks/[root-of-the-server]__0dw97_pahi8uf._.js.map +1 -0
  56. package/.next/server/chunks/_0ao-_t4jkb46h._.js +2 -2
  57. package/.next/server/chunks/_0ao-_t4jkb46h._.js.map +1 -1
  58. package/.next/server/chunks/_1-8ipqazoyrrk._.js +1 -1
  59. package/.next/server/chunks/_1-8ipqazoyrrk._.js.map +1 -1
  60. package/.next/server/chunks/ssr/[root-of-the-server]__1jwplflwix8wi._.js +1 -1
  61. package/.next/server/chunks/ssr/[root-of-the-server]__1jwplflwix8wi._.js.map +1 -1
  62. package/.next/server/chunks/ssr/[root-of-the-server]__1kt7h7bz59mdn._.js +1 -1
  63. package/.next/server/chunks/ssr/[root-of-the-server]__1kt7h7bz59mdn._.js.map +1 -1
  64. package/.next/server/chunks/ssr/[root-of-the-server]__1otsvjy81s8my._.js +1 -1
  65. package/.next/server/chunks/ssr/[root-of-the-server]__1otsvjy81s8my._.js.map +1 -1
  66. package/.next/server/chunks/ssr/{_0--937zhi743v._.js → _0zel-n0h--cnl._.js} +1 -1
  67. package/.next/server/chunks/ssr/{node_modules_0jla9ugf1y6rb._.js → node_modules_01avo0bde3tpo._.js} +1 -1
  68. package/.next/server/chunks/ssr/{node_modules_0sjdrli5douui._.js → node_modules_01l0208e5kqic._.js} +1 -1
  69. package/.next/server/chunks/ssr/{node_modules_0lqovp8j8ld76._.js → node_modules_033x29yqle_sj._.js} +1 -1
  70. package/.next/server/chunks/ssr/{node_modules_05i69rc9pwcdx._.js → node_modules_03wbg__aslvui._.js} +1 -1
  71. package/.next/server/chunks/ssr/{node_modules_1ltys5mwtcv-n._.js → node_modules_08-bqkrz7sh0l._.js} +1 -1
  72. package/.next/server/chunks/ssr/{node_modules_09v49jhajmvl4._.js → node_modules_089w9jm7s2qa3._.js} +2 -2
  73. package/.next/server/chunks/ssr/{node_modules_0z1e37smavebg._.js → node_modules_0cy47-s63xjzh._.js} +2 -2
  74. package/.next/server/chunks/ssr/{node_modules_0dw0vozejrnml._.js → node_modules_0czh0jcnsm5e6._.js} +2 -2
  75. package/.next/server/chunks/ssr/{node_modules_0e3njj436xau-._.js → node_modules_0fv321j1nslkb._.js} +1 -1
  76. package/.next/server/chunks/ssr/{node_modules_0d2ios01ot1in._.js → node_modules_0g-wb7h-hsdwc._.js} +1 -1
  77. package/.next/server/chunks/ssr/{node_modules_1l46or7mgko0z._.js → node_modules_0oz_zzlh8exwx._.js} +1 -1
  78. package/.next/server/chunks/ssr/{node_modules_0b8zi3pbl-y9n._.js → node_modules_0so2agzqd9p8l._.js} +2 -2
  79. package/.next/server/chunks/ssr/{node_modules_1wew4nn7i1uup._.js → node_modules_0w2w61b8bh769._.js} +1 -1
  80. package/.next/server/chunks/ssr/{node_modules_07bjxeq9dfgn1._.js → node_modules_0wd6szix_zku7._.js} +2 -2
  81. package/.next/server/chunks/ssr/{node_modules_1aqaelh-8fme6._.js → node_modules_0wp7omf0xblv8._.js} +1 -1
  82. package/.next/server/chunks/ssr/{node_modules_0xh8tnq1niblb._.js → node_modules_10c51o2qv6mbi._.js} +1 -1
  83. package/.next/server/chunks/ssr/{node_modules_1d4sreyq0ubqg._.js → node_modules_19vqq7rvf-_ar._.js} +2 -2
  84. package/.next/server/chunks/ssr/{node_modules_1e_nc2eyg4djz._.js → node_modules_1hu83gui7_nj2._.js} +1 -1
  85. package/.next/server/chunks/ssr/{node_modules_1zbmc81s-4zsm._.js → node_modules_1j8hpoiygrs5e._.js} +1 -1
  86. package/.next/server/chunks/ssr/{node_modules_1pquu5wprusnc._.js → node_modules_1n4kig4mj6n4s._.js} +2 -2
  87. package/.next/server/chunks/ssr/{node_modules_1st9dwe66yx93._.js → node_modules_1s8oxeqa5_i3k._.js} +1 -1
  88. package/.next/server/chunks/ssr/{node_modules_01p9ctt-n2dxp._.js → node_modules_1xz1dstlo5ri-._.js} +1 -1
  89. package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0kqo9zl9cgwbo._.js → node_modules_katex_dist_katex_mjs_067omoj5szuys._.js} +1 -1
  90. package/.next/server/chunks/ssr/src_app_page_1vqfk0-j72fp6.js +1 -1
  91. package/.next/server/chunks/ssr/src_app_page_1vqfk0-j72fp6.js.map +1 -1
  92. package/.next/server/middleware-build-manifest.js +3 -3
  93. package/.next/server/pages/404.html +1 -1
  94. package/.next/server/pages/500.html +1 -1
  95. package/.next/server/preview-props.json +3 -3
  96. package/.next/server/server-reference-manifest.js +1 -1
  97. package/.next/server/server-reference-manifest.json +1 -1
  98. package/.next/static/chunks/0jo6fy2c_gmqn.js +1 -0
  99. package/.next/static/chunks/2q9cwykv6ox1t.css +1 -0
  100. package/.next/static/chunks/{3og0e9qcff393.js → 2zf44j8sjo0w0.js} +4 -4
  101. package/.next/trace +1 -1
  102. package/.next/trace-build +1 -1
  103. package/package.json +1 -1
  104. package/src/app/api/traces/stream/route.js +41 -5
  105. package/src/app/layout.js +2 -1
  106. package/src/app/page.js +17 -1
  107. package/src/components/chat/SessionChatView.js +1 -1
  108. package/src/components/factory/office-canvas.js +32 -1
  109. package/src/components/layout/BottomPanel.jsx +6 -6
  110. package/src/components/layout/LeftSidebar.jsx +62 -4
  111. package/src/components/layout/StatusBar.jsx +1 -1
  112. package/src/components/layout/TitleBar.jsx +71 -1
  113. package/src/components/layout/VSCodeWorkbench.jsx +21 -0
  114. package/src/lib/mockTraces.js +13 -11
  115. package/src/lib/parsers/codexParser.js +373 -0
  116. package/src/lib/parsers/transcriptParser.js +35 -3
  117. package/src/lib/useFactoryTraces.js +70 -5
  118. package/src/lib/watchers/antigravityWatcher.js +15 -1
  119. package/src/lib/watchers/claudeWatcher.js +64 -53
  120. package/src/lib/watchers/codexWatcher.js +482 -0
  121. package/src/lib/watchers/watcherManager.js +46 -30
  122. package/.next/server/chunks/src_lib_watchers_antigravityWatcher_0w1-atg39y__p.js +0 -3
  123. package/.next/server/chunks/src_lib_watchers_antigravityWatcher_0w1-atg39y__p.js.map +0 -1
  124. package/.next/static/chunks/17jorrh_pfel_.js +0 -1
  125. package/.next/static/chunks/25l0z48vlvdu4.css +0 -1
  126. /package/.next/server/chunks/ssr/{_0--937zhi743v._.js.map → _0zel-n0h--cnl._.js.map} +0 -0
  127. /package/.next/server/chunks/ssr/{node_modules_0jla9ugf1y6rb._.js.map → node_modules_01avo0bde3tpo._.js.map} +0 -0
  128. /package/.next/server/chunks/ssr/{node_modules_0sjdrli5douui._.js.map → node_modules_01l0208e5kqic._.js.map} +0 -0
  129. /package/.next/server/chunks/ssr/{node_modules_0lqovp8j8ld76._.js.map → node_modules_033x29yqle_sj._.js.map} +0 -0
  130. /package/.next/server/chunks/ssr/{node_modules_05i69rc9pwcdx._.js.map → node_modules_03wbg__aslvui._.js.map} +0 -0
  131. /package/.next/server/chunks/ssr/{node_modules_1ltys5mwtcv-n._.js.map → node_modules_08-bqkrz7sh0l._.js.map} +0 -0
  132. /package/.next/server/chunks/ssr/{node_modules_09v49jhajmvl4._.js.map → node_modules_089w9jm7s2qa3._.js.map} +0 -0
  133. /package/.next/server/chunks/ssr/{node_modules_0z1e37smavebg._.js.map → node_modules_0cy47-s63xjzh._.js.map} +0 -0
  134. /package/.next/server/chunks/ssr/{node_modules_0dw0vozejrnml._.js.map → node_modules_0czh0jcnsm5e6._.js.map} +0 -0
  135. /package/.next/server/chunks/ssr/{node_modules_0e3njj436xau-._.js.map → node_modules_0fv321j1nslkb._.js.map} +0 -0
  136. /package/.next/server/chunks/ssr/{node_modules_0d2ios01ot1in._.js.map → node_modules_0g-wb7h-hsdwc._.js.map} +0 -0
  137. /package/.next/server/chunks/ssr/{node_modules_0xh8tnq1niblb._.js.map → node_modules_0oz_zzlh8exwx._.js.map} +0 -0
  138. /package/.next/server/chunks/ssr/{node_modules_0b8zi3pbl-y9n._.js.map → node_modules_0so2agzqd9p8l._.js.map} +0 -0
  139. /package/.next/server/chunks/ssr/{node_modules_1wew4nn7i1uup._.js.map → node_modules_0w2w61b8bh769._.js.map} +0 -0
  140. /package/.next/server/chunks/ssr/{node_modules_07bjxeq9dfgn1._.js.map → node_modules_0wd6szix_zku7._.js.map} +0 -0
  141. /package/.next/server/chunks/ssr/{node_modules_1aqaelh-8fme6._.js.map → node_modules_0wp7omf0xblv8._.js.map} +0 -0
  142. /package/.next/server/chunks/ssr/{node_modules_1d4sreyq0ubqg._.js.map → node_modules_10c51o2qv6mbi._.js.map} +0 -0
  143. /package/.next/server/chunks/ssr/{node_modules_1l46or7mgko0z._.js.map → node_modules_19vqq7rvf-_ar._.js.map} +0 -0
  144. /package/.next/server/chunks/ssr/{node_modules_1e_nc2eyg4djz._.js.map → node_modules_1hu83gui7_nj2._.js.map} +0 -0
  145. /package/.next/server/chunks/ssr/{node_modules_1zbmc81s-4zsm._.js.map → node_modules_1j8hpoiygrs5e._.js.map} +0 -0
  146. /package/.next/server/chunks/ssr/{node_modules_1pquu5wprusnc._.js.map → node_modules_1n4kig4mj6n4s._.js.map} +0 -0
  147. /package/.next/server/chunks/ssr/{node_modules_1st9dwe66yx93._.js.map → node_modules_1s8oxeqa5_i3k._.js.map} +0 -0
  148. /package/.next/server/chunks/ssr/{node_modules_01p9ctt-n2dxp._.js.map → node_modules_1xz1dstlo5ri-._.js.map} +0 -0
  149. /package/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0kqo9zl9cgwbo._.js.map → node_modules_katex_dist_katex_mjs_067omoj5szuys._.js.map} +0 -0
  150. /package/.next/static/{1y6Da0YgnPr2_6ncpWrbV → dGN2VKPk5TJgezxS3JvRc}/_buildManifest.js +0 -0
  151. /package/.next/static/{1y6Da0YgnPr2_6ncpWrbV → dGN2VKPk5TJgezxS3JvRc}/_clientMiddlewareManifest.js +0 -0
  152. /package/.next/static/{1y6Da0YgnPr2_6ncpWrbV → dGN2VKPk5TJgezxS3JvRc}/_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\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]}
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 { getCodexTraces } from \"./codexWatcher.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 cachedCombined = [];\nlet cachedErrors = [];\nlet lastFetchTime = 0;\nlet lastMaxAgeMs = null;\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, limit = 0) {\n const now = Date.now();\n const isCacheValid = !force && (now - lastFetchTime < CACHE_TTL_MS) && (lastMaxAgeMs === maxAgeMs);\n\n if (!isCacheValid) {\n const results = await Promise.allSettled([\n getAntigravityTraces(maxAgeMs),\n getClaudeTraces(maxAgeMs),\n getCodexTraces(maxAgeMs),\n ]);\n const errors = [];\n const [agyResult, claudeResult, codexResult] = results;\n const agyList = agyResult.status === \"fulfilled\" ? agyResult.value : [];\n const claudeList = claudeResult.status === \"fulfilled\" ? claudeResult.value : [];\n const codexList = codexResult.status === \"fulfilled\" ? codexResult.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 if (codexResult.status === \"rejected\") errors.push({ source: \"codex\", message: codexResult.reason?.message || \"Watcher failed\" });\n\n const combined = [...agyList, ...claudeList, ...codexList];\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 cachedCombined = combined;\n cachedErrors = errors;\n lastMaxAgeMs = maxAgeMs;\n lastFetchTime = now;\n }\n\n const totalCount = cachedCombined.length;\n const sliced = (limit > 0 && limit < totalCount) ? cachedCombined.slice(0, limit) : cachedCombined;\n\n return {\n traces: sliced,\n totalCount,\n errors: cachedErrors,\n };\n}\n\nexport async function getAllLiveTraces(force = false, maxAgeMs, limit = 0) {\n return (await getLiveTraceSnapshot(force, maxAgeMs, limit)).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 const projectCandidates = [];\n\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 seenSessionIds.add(fileSessionId);\n projectCandidates.push({ transcriptPath, mtime, stat, fileSessionId, pf });\n } catch {}\n }\n }\n\n // Sort by mtime descending (most recent first) and cap to top 100\n projectCandidates.sort((a, b) => b.mtime - a.mtime);\n const toProcess = projectCandidates.slice(0, 100);\n\n for (const { transcriptPath, mtime, stat, fileSessionId, pf } of toProcess) {\n try {\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 } 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\", cli: \"claude\", clientType: \"cli\" },\n { account: \"Claude Desktop\", icon: \"desktop_windows\", cli: \"claude\", clientType: \"desktop\" },\n { account: \"Codex CLI · tui\", icon: \"terminal\", cli: \"codex\", clientType: \"cli\" },\n { account: \"Codex Desktop\", icon: \"desktop_windows\", cli: \"codex\", clientType: \"desktop\" },\n { account: \"Antigravity · agent\", icon: \"smart_toy\", cli: \"antigravity\", clientType: \"cli\" },\n { account: \"Antigravity App\", icon: \"smart_toy\", cli: \"antigravity\", clientType: \"app\" },\n { account: \"Cursor · workspace\", icon: \"edit_note\", cli: \"cursor\", clientType: \"extension\" },\n { account: \"OpenCode · build\", icon: \"science\", cli: \"opencode\", clientType: \"cli\" },\n];\n\nconst PROVIDER_MODELS = [\n { provider: \"claude\", model: \"claude-3-7-sonnet\" },\n { provider: \"gemini\", model: \"gemini-2.5-pro\" },\n { provider: \"openai (codex)\", model: \"gpt-5.6-terra\" },\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-${client.cli || \"agent\"}-${i}-${Math.floor(rand() * 1e6).toString(36)}`,\n cli: client.cli || \"mock\",\n clientType: client.clientType || \"cli\",\n connectionId: `${client.account} (${i})`,\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 rawHours = searchParams.get(\"hours\");\n let hours = 24;\n if (rawHours !== null) {\n if (rawHours === \"0\" || rawHours === \"all\") {\n hours = 0;\n } else {\n const parsedHours = Number(rawHours);\n if (!Number.isNaN(parsedHours) && parsedHours >= 0) {\n hours = parsedHours;\n }\n }\n }\n const maxAgeMs = hours > 0 ? hours * 60 * 60 * 1000 : Infinity;\n\n const rawLimit = searchParams.get(\"limit\") || searchParams.get(\"top\");\n let limit = 20;\n if (rawLimit !== null) {\n if (rawLimit === \"0\" || rawLimit === \"all\") {\n limit = 0;\n } else {\n const parsedLimit = Number(rawLimit);\n if (!Number.isNaN(parsedLimit) && parsedLimit >= 0) {\n limit = parsedLimit;\n }\n }\n }\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 rawTraces = generateMockTraces({\n count: presetConfig.agents,\n errorRatio: presetConfig.errorRatio,\n cases: !!presetConfig.cases,\n preset: mockPreset,\n seed: 42,\n });\n const totalCount = rawTraces.length;\n const traces = (limit > 0 && limit < totalCount) ? rawTraces.slice(0, limit) : rawTraces;\n const providers = mockProviderDescriptors(traces);\n send({\n traces,\n totalCount,\n providers,\n timestamp: Date.now(),\n mode: \"mock\",\n preset: mockPreset || \"cases\",\n activeAgents: traces.filter((t) => t.state === \"streaming\" || t.state === \"pending\").length,\n });\n return;\n }\n\n // Live Mode\n try {\n const { traces, totalCount, errors } = await getLiveTraceSnapshot(false, maxAgeMs, limit);\n const providers = getProvidersFromTraces(traces);\n send({\n traces,\n totalCount,\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 totalCount: 0,\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","projectCandidates","folderPath","files","fileSessionId","stat","mtime","mtimeMs","sort","a","b","toProcess","isRecent","isPending","birthtimeMs","activeA","activeB"],"mappings":"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","ignoreList":[0]}