dev3000 0.0.78 → 0.0.79

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 (151) hide show
  1. package/dist/dev-environment.d.ts +1 -0
  2. package/dist/dev-environment.d.ts.map +1 -1
  3. package/dist/dev-environment.js +29 -3
  4. package/dist/dev-environment.js.map +1 -1
  5. package/dist/screencast-manager.d.ts +76 -0
  6. package/dist/screencast-manager.d.ts.map +1 -0
  7. package/dist/screencast-manager.js +410 -0
  8. package/dist/screencast-manager.js.map +1 -0
  9. package/dist/src/tui-interface-impl.tsx +15 -7
  10. package/dist/tui-interface-impl.d.ts.map +1 -1
  11. package/dist/tui-interface-impl.js +7 -5
  12. package/dist/tui-interface-impl.js.map +1 -1
  13. package/mcp-server/.next/BUILD_ID +1 -1
  14. package/mcp-server/.next/app-path-routes-manifest.json +4 -1
  15. package/mcp-server/.next/build-manifest.json +5 -5
  16. package/mcp-server/.next/fallback-build-manifest.json +2 -2
  17. package/mcp-server/.next/prerender-manifest.json +3 -3
  18. package/mcp-server/.next/routes-manifest.json +16 -0
  19. package/mcp-server/.next/server/app/_global-error/page/build-manifest.json +3 -3
  20. package/mcp-server/.next/server/app/_global-error/page.js +1 -1
  21. package/mcp-server/.next/server/app/_global-error/page.js.nft.json +1 -1
  22. package/mcp-server/.next/server/app/_global-error.html +2 -2
  23. package/mcp-server/.next/server/app/_global-error.rsc +1 -1
  24. package/mcp-server/.next/server/app/_not-found/page/build-manifest.json +3 -3
  25. package/mcp-server/.next/server/app/_not-found/page.js +1 -1
  26. package/mcp-server/.next/server/app/_not-found/page.js.nft.json +1 -1
  27. package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  28. package/mcp-server/.next/server/app/_not-found.html +1 -1
  29. package/mcp-server/.next/server/app/_not-found.rsc +2 -2
  30. package/mcp-server/.next/server/app/api/jank/[session]/route/app-paths-manifest.json +3 -0
  31. package/mcp-server/.next/server/app/api/jank/[session]/route/build-manifest.json +11 -0
  32. package/mcp-server/.next/server/app/api/jank/[session]/route/server-reference-manifest.json +4 -0
  33. package/mcp-server/.next/server/app/api/jank/[session]/route.js +9 -0
  34. package/mcp-server/.next/server/app/api/jank/[session]/route.js.map +5 -0
  35. package/mcp-server/.next/server/app/api/jank/[session]/route.js.nft.json +1 -0
  36. package/mcp-server/.next/server/app/api/jank/[session]/route_client-reference-manifest.js +2 -0
  37. package/mcp-server/.next/server/app/api/logs/head/route.js.nft.json +1 -1
  38. package/mcp-server/.next/server/app/api/logs/list/route.js.nft.json +1 -1
  39. package/mcp-server/.next/server/app/api/logs/rotate/route.js +1 -1
  40. package/mcp-server/.next/server/app/api/logs/rotate/route.js.nft.json +1 -1
  41. package/mcp-server/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  42. package/mcp-server/.next/server/app/api/logs/tail/route.js.nft.json +1 -1
  43. package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js +1 -1
  44. package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js.nft.json +1 -1
  45. package/mcp-server/.next/server/app/api/screenshots/list/route/app-paths-manifest.json +3 -0
  46. package/mcp-server/.next/server/app/api/screenshots/list/route/build-manifest.json +11 -0
  47. package/mcp-server/.next/server/app/api/screenshots/list/route/server-reference-manifest.json +4 -0
  48. package/mcp-server/.next/server/app/api/screenshots/list/route.js +7 -0
  49. package/mcp-server/.next/server/app/api/screenshots/list/route.js.map +5 -0
  50. package/mcp-server/.next/server/app/api/screenshots/list/route.js.nft.json +1 -0
  51. package/mcp-server/.next/server/app/api/screenshots/list/route_client-reference-manifest.js +2 -0
  52. package/mcp-server/.next/server/app/api/tools/route.js +1 -1
  53. package/mcp-server/.next/server/app/api/tools/route.js.nft.json +1 -1
  54. package/mcp-server/.next/server/app/index.html +1 -1
  55. package/mcp-server/.next/server/app/index.rsc +3 -3
  56. package/mcp-server/.next/server/app/logs/page/build-manifest.json +3 -3
  57. package/mcp-server/.next/server/app/logs/page.js +1 -1
  58. package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
  59. package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  60. package/mcp-server/.next/server/app/mcp/route.js +3 -2
  61. package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
  62. package/mcp-server/.next/server/app/page/build-manifest.json +3 -3
  63. package/mcp-server/.next/server/app/page.js +1 -1
  64. package/mcp-server/.next/server/app/page.js.nft.json +1 -1
  65. package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
  66. package/mcp-server/.next/server/app/video/[session]/page/app-paths-manifest.json +3 -0
  67. package/mcp-server/.next/server/app/video/[session]/page/build-manifest.json +18 -0
  68. package/mcp-server/.next/server/app/video/[session]/page/next-font-manifest.json +6 -0
  69. package/mcp-server/.next/server/app/video/[session]/page/react-loadable-manifest.json +1 -0
  70. package/mcp-server/.next/server/app/video/[session]/page/server-reference-manifest.json +4 -0
  71. package/mcp-server/.next/server/app/video/[session]/page.js +15 -0
  72. package/mcp-server/.next/server/app/video/[session]/page.js.map +5 -0
  73. package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +1 -0
  74. package/mcp-server/.next/server/app/video/[session]/page_client-reference-manifest.js +2 -0
  75. package/mcp-server/.next/server/app-paths-manifest.json +4 -1
  76. package/mcp-server/.next/server/chunks/[root-of-the-server]__00592d3f._.js +34 -0
  77. package/mcp-server/.next/server/chunks/[root-of-the-server]__00592d3f._.js.map +1 -0
  78. package/mcp-server/.next/server/chunks/{[root-of-the-server]__5580d2ea._.js → [root-of-the-server]__177c72c6._.js} +3 -3
  79. package/mcp-server/.next/server/chunks/[root-of-the-server]__177c72c6._.js.map +1 -0
  80. package/mcp-server/.next/server/chunks/{[root-of-the-server]__ffb73672._.js → [root-of-the-server]__2056c8b5._.js} +2 -2
  81. package/mcp-server/.next/server/chunks/{[root-of-the-server]__d1f9e389._.js → [root-of-the-server]__55c04517._.js} +2 -2
  82. package/mcp-server/.next/server/chunks/[root-of-the-server]__6ee9a99f._.js +3 -0
  83. package/mcp-server/.next/server/chunks/[root-of-the-server]__6ee9a99f._.js.map +1 -0
  84. package/mcp-server/.next/server/chunks/[root-of-the-server]__9a45c8f9._.js +3 -0
  85. package/mcp-server/.next/server/chunks/[root-of-the-server]__9a45c8f9._.js.map +1 -0
  86. package/mcp-server/.next/server/chunks/{[root-of-the-server]__e2089993._.js → [root-of-the-server]__bc773251._.js} +2 -2
  87. package/mcp-server/.next/server/chunks/[root-of-the-server]__e1a64519._.js +3 -0
  88. package/mcp-server/.next/server/chunks/[root-of-the-server]__e1a64519._.js.map +1 -0
  89. package/mcp-server/.next/server/chunks/[root-of-the-server]__e6dcd8bf._.js +3 -0
  90. package/mcp-server/.next/server/chunks/[root-of-the-server]__e6dcd8bf._.js.map +1 -0
  91. package/mcp-server/.next/server/chunks/d1d76_next_dist_esm_build_templates_app-route_820fc951.js +3 -0
  92. package/mcp-server/.next/server/chunks/d1d76_next_dist_esm_build_templates_app-route_820fc951.js.map +1 -0
  93. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_jank_[session]_route_actions_3b2b275b.js +3 -0
  94. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_jank_[session]_route_actions_3b2b275b.js.map +1 -0
  95. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_screenshots_list_route_actions_acfa57bd.js +3 -0
  96. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_screenshots_list_route_actions_acfa57bd.js.map +1 -0
  97. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__bf771f7e._.js +3 -0
  98. package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__8db775f9._.js.map → [root-of-the-server]__bf771f7e._.js.map} +1 -1
  99. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__c4e78a20._.js +3 -0
  100. package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__e5dec879._.js.map → [root-of-the-server]__c4e78a20._.js.map} +1 -1
  101. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__e1bc1b8a._.js +3 -0
  102. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__e1bc1b8a._.js.map +1 -0
  103. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__fc10c8f1._.js +3 -0
  104. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__fc10c8f1._.js.map +1 -0
  105. package/mcp-server/.next/server/chunks/ssr/_0b8335fc._.js +1 -1
  106. package/mcp-server/.next/server/chunks/ssr/_0b8335fc._.js.map +1 -1
  107. package/mcp-server/.next/server/chunks/ssr/_bacf0748._.js +2 -2
  108. package/mcp-server/.next/server/chunks/ssr/_bacf0748._.js.map +1 -1
  109. package/mcp-server/.next/server/chunks/ssr/_e4aa8f16._.js +4 -0
  110. package/mcp-server/.next/server/chunks/ssr/_e4aa8f16._.js.map +1 -0
  111. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_video_[session]_page_actions_a6aab323.js +3 -0
  112. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_video_[session]_page_actions_a6aab323.js.map +1 -0
  113. package/mcp-server/.next/server/middleware-build-manifest.js +3 -3
  114. package/mcp-server/.next/server/server-reference-manifest.js +1 -1
  115. package/mcp-server/.next/server/server-reference-manifest.json +1 -1
  116. package/mcp-server/.next/static/chunks/274a8d03fad7f819.js +1 -0
  117. package/mcp-server/.next/static/chunks/3d37ed424c6aaf63.css +1 -0
  118. package/mcp-server/.next/static/chunks/543e14c771a22442.js +1 -0
  119. package/mcp-server/.next/static/chunks/58fdd5192b305065.js +1 -0
  120. package/mcp-server/.next/static/chunks/6bd684c2018a357c.js +1 -0
  121. package/mcp-server/.next/static/chunks/6d59e588420330ca.js +1 -0
  122. package/mcp-server/.next/static/chunks/9625e4da85a132f3.js +1 -0
  123. package/mcp-server/.next/static/chunks/c36bc797d535a4dc.js +1 -0
  124. package/mcp-server/.next/static/chunks/{turbopack-7cd5a898ed038e26.js → turbopack-9656e7304584cab2.js} +2 -2
  125. package/mcp-server/app/api/jank/[session]/route.ts +344 -0
  126. package/mcp-server/app/api/screenshots/list/route.ts +22 -0
  127. package/mcp-server/app/logs/LogsClient.tsx +33 -0
  128. package/mcp-server/app/logs/utils.ts +2 -0
  129. package/mcp-server/app/mcp/route.ts +20 -0
  130. package/mcp-server/app/mcp/tools.ts +288 -9
  131. package/mcp-server/app/video/[session]/page.tsx +237 -0
  132. package/mcp-server/package.json +4 -0
  133. package/package.json +1 -1
  134. package/src/tui-interface-impl.tsx +15 -7
  135. package/mcp-server/.next/server/chunks/[root-of-the-server]__270b33b7._.js +0 -34
  136. package/mcp-server/.next/server/chunks/[root-of-the-server]__270b33b7._.js.map +0 -1
  137. package/mcp-server/.next/server/chunks/[root-of-the-server]__5580d2ea._.js.map +0 -1
  138. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__8db775f9._.js +0 -3
  139. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__e5dec879._.js +0 -3
  140. package/mcp-server/.next/static/chunks/11ac0d0e69696c72.js +0 -1
  141. package/mcp-server/.next/static/chunks/172f6179d608c15f.js +0 -1
  142. package/mcp-server/.next/static/chunks/65b18bf1ede9811a.css +0 -1
  143. package/mcp-server/.next/static/chunks/bb8a4e5f381a85ec.js +0 -1
  144. package/mcp-server/.next/static/chunks/e09be78bba2194fd.js +0 -1
  145. package/mcp-server/.next/static/chunks/fec3a6ddaef02b8b.js +0 -1
  146. /package/mcp-server/.next/server/chunks/{[root-of-the-server]__ffb73672._.js.map → [root-of-the-server]__2056c8b5._.js.map} +0 -0
  147. /package/mcp-server/.next/server/chunks/{[root-of-the-server]__d1f9e389._.js.map → [root-of-the-server]__55c04517._.js.map} +0 -0
  148. /package/mcp-server/.next/server/chunks/{[root-of-the-server]__e2089993._.js.map → [root-of-the-server]__bc773251._.js.map} +0 -0
  149. /package/mcp-server/.next/static/{GE4QeOWMVNF-ly63PtQFE → T9qI0it_H-9Z-TE5_ROut}/_buildManifest.js +0 -0
  150. /package/mcp-server/.next/static/{GE4QeOWMVNF-ly63PtQFE → T9qI0it_H-9Z-TE5_ROut}/_clientMiddlewareManifest.json +0 -0
  151. /package/mcp-server/.next/static/{GE4QeOWMVNF-ly63PtQFE → T9qI0it_H-9Z-TE5_ROut}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/next@15.6.0-canary.31_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/src/server/route-modules/app-page/module.compiled.js","turbopack:///[project]/node_modules/.pnpm/next@15.6.0-canary.31_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","turbopack:///[project]/node_modules/.pnpm/next@15.6.0-canary.31_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","turbopack:///[project]/mcp-server/app/video/[session]/page.tsx"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","\"use client\"\n\nimport { use, useEffect, useState } from \"react\"\n\nexport default function VideoPlayer({ params }: { params: Promise<{ session: string }> }) {\n const { session } = use(params)\n const [frames, setFrames] = useState<string[]>([])\n const [currentFrame, setCurrentFrame] = useState(0)\n const [isPlaying, setIsPlaying] = useState(false)\n const [fps, setFps] = useState(10)\n const [screenshotDimensions, setScreenshotDimensions] = useState<{ width: number; height: number }>({\n width: 1920,\n height: 1080\n })\n const [imgRef, setImgRef] = useState<HTMLImageElement | null>(null)\n const [clsMarkers, setClsMarkers] = useState<\n Array<{\n timestamp: number\n boundingBox: { x: number; y: number; width: number; height: number } | null\n clsScore?: number\n element?: string\n }>\n >([])\n\n useEffect(() => {\n // Parse session timestamp to find matching screenshots\n // Format: 2025-10-05T23-57-XX-jank-XXms.png\n fetch(`/api/screenshots/list?pattern=${session}`)\n .then((r) => r.json())\n .then((data) => {\n const jankFrames = data.files\n .filter((f: string) => f.includes(\"jank-\") && f.includes(session))\n .sort((a: string, b: string) => {\n const aMs = parseInt(a.match(/jank-(\\d+)ms/)?.[1] || \"0\", 10)\n const bMs = parseInt(b.match(/jank-(\\d+)ms/)?.[1] || \"0\", 10)\n return aMs - bMs\n })\n setFrames(jankFrames)\n\n // Load first frame to get dimensions\n if (jankFrames.length > 0) {\n const img = new Image()\n img.onload = () => {\n setScreenshotDimensions({ width: img.naturalWidth, height: img.naturalHeight })\n }\n img.src = `/api/screenshots/${jankFrames[0]}`\n }\n })\n\n // Fetch CLS markers from jank detection API\n fetch(`/api/jank/${session}`)\n .then((r) => r.json())\n .then((data) => {\n setClsMarkers(data.clsMarkers || [])\n })\n .catch(() => {\n setClsMarkers([])\n })\n }, [session])\n\n useEffect(() => {\n if (!isPlaying || frames.length === 0) return\n\n const interval = setInterval(() => {\n setCurrentFrame((prev) => {\n if (prev >= frames.length - 1) {\n setIsPlaying(false)\n return prev\n }\n return prev + 1\n })\n }, 1000 / fps)\n\n return () => clearInterval(interval)\n }, [isPlaying, frames.length, fps])\n\n // Force re-render on window resize to recalculate bounding box position\n const [, forceUpdate] = useState(0)\n useEffect(() => {\n const handleResize = () => forceUpdate((n) => n + 1)\n window.addEventListener(\"resize\", handleResize)\n return () => window.removeEventListener(\"resize\", handleResize)\n }, [])\n\n if (frames.length === 0) {\n return <div className=\"p-8\">Loading frames...</div>\n }\n\n const currentFrameFile = frames[currentFrame]\n const frameMs = currentFrameFile?.match(/jank-(\\d+)ms/)?.[1] || \"0\"\n const currentFrameMs = parseInt(frameMs, 10)\n const clsAtFrame = clsMarkers.find((marker) => Math.abs(marker.timestamp - currentFrameMs) < 100)\n\n // Calculate the rendered image dimensions and position (accounting for object-contain)\n let imgStyle: React.CSSProperties = {}\n if (imgRef && clsAtFrame?.boundingBox) {\n const containerRect = imgRef.parentElement?.getBoundingClientRect()\n const imgNaturalWidth = screenshotDimensions.width\n const imgNaturalHeight = screenshotDimensions.height\n\n if (containerRect) {\n // Calculate how the image is scaled by object-contain\n const containerAspect = containerRect.width / containerRect.height\n const imageAspect = imgNaturalWidth / imgNaturalHeight\n\n let renderedWidth: number, renderedHeight: number, offsetX: number, offsetY: number\n\n if (containerAspect > imageAspect) {\n // Container is wider - image is constrained by height\n renderedHeight = containerRect.height\n renderedWidth = renderedHeight * imageAspect\n offsetX = (containerRect.width - renderedWidth) / 2\n offsetY = 0\n } else {\n // Container is taller - image is constrained by width\n renderedWidth = containerRect.width\n renderedHeight = renderedWidth / imageAspect\n offsetX = 0\n offsetY = (containerRect.height - renderedHeight) / 2\n }\n\n // Calculate bounding box position relative to rendered image\n const scale = renderedWidth / imgNaturalWidth\n imgStyle = {\n left: `${offsetX + clsAtFrame.boundingBox.x * scale}px`,\n top: `${offsetY + clsAtFrame.boundingBox.y * scale}px`,\n width: `${clsAtFrame.boundingBox.width * scale}px`,\n height: `${clsAtFrame.boundingBox.height * scale}px`\n }\n }\n }\n\n return (\n <div className=\"flex flex-col h-screen bg-black\">\n <div className=\"flex-1 flex items-center justify-center relative overflow-hidden\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n ref={setImgRef}\n src={`/api/screenshots/${currentFrameFile}`}\n alt={`Frame ${currentFrame}`}\n className=\"w-full h-full object-contain\"\n />\n {clsAtFrame?.boundingBox && imgRef && (\n <div className=\"absolute border-2 border-red-500 pointer-events-none\" style={imgStyle} />\n )}\n </div>\n\n <div className=\"bg-gray-900 text-white p-4 space-y-4\">\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={() => setIsPlaying(!isPlaying)}\n className=\"px-4 py-2 bg-blue-600 hover:bg-blue-700 rounded\"\n >\n {isPlaying ? \"Pause\" : \"Play\"}\n </button>\n\n <button\n type=\"button\"\n onClick={() => setCurrentFrame(Math.max(0, currentFrame - 1))}\n disabled={currentFrame === 0}\n className=\"px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded disabled:opacity-50\"\n >\n Previous\n </button>\n\n <button\n type=\"button\"\n onClick={() => setCurrentFrame(Math.min(frames.length - 1, currentFrame + 1))}\n disabled={currentFrame === frames.length - 1}\n className=\"px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded disabled:opacity-50\"\n >\n Next\n </button>\n\n <span className=\"flex-1 text-center\">\n Frame {currentFrame + 1} / {frames.length} ({frameMs}ms)\n </span>\n\n <label className=\"flex items-center gap-2\">\n Speed:\n <input\n type=\"range\"\n min=\"1\"\n max=\"30\"\n value={fps}\n onChange={(e) => setFps(Number(e.target.value))}\n className=\"w-32\"\n />\n <span className=\"w-12\">{fps} fps</span>\n </label>\n </div>\n\n <div className=\"relative w-full\">\n <input\n type=\"range\"\n min=\"0\"\n max={frames.length - 1}\n value={currentFrame}\n onChange={(e) => setCurrentFrame(Number(e.target.value))}\n className=\"w-full\"\n />\n {/* CLS markers on timeline */}\n {clsMarkers.map((marker) => {\n const frameIndex = frames.findIndex((f) => {\n const frameMs = parseInt(f.match(/jank-(\\d+)ms/)?.[1] || \"0\", 10)\n return frameMs >= marker.timestamp\n })\n if (frameIndex === -1) return null\n const position = (frameIndex / (frames.length - 1)) * 100\n return (\n <div\n key={marker.timestamp}\n className=\"absolute top-0 h-full pointer-events-none\"\n style={{ left: `${position}%` }}\n >\n <div className=\"w-0.5 h-full bg-red-500\" />\n <div className=\"absolute -top-6 left-0 -translate-x-1/2 bg-red-500 text-white text-xs px-2 py-0.5 rounded whitespace-nowrap\">\n {marker.clsScore ? (\n <>\n CLS {marker.clsScore.toFixed(4)} @ {marker.timestamp}ms\n {marker.element && (\n <span className=\"ml-1 opacity-75\">&lt;{marker.element.toLowerCase()}&gt;</span>\n )}\n </>\n ) : (\n `CLS ${marker.timestamp}ms`\n )}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","vendored","ReactJsxRuntime","React"],"mappings":"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","ignoreList":[0,1,2]}
@@ -0,0 +1,3 @@
1
+ module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},85790,a=>{a.n(a.i(29775))},32996,a=>{a.n(a.i(48084))},4715,a=>{a.n(a.i(37352))},78472,a=>{a.n(a.i(65993))},97044,a=>{a.n(a.i(97451))},35800,a=>{"use strict";let b=(0,a.i(42506).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/mcp-server/app/video/[session]/page.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/mcp-server/app/video/[session]/page.tsx <module evaluation>","default");a.s(["default",0,b])},19348,a=>{"use strict";let b=(0,a.i(42506).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/mcp-server/app/video/[session]/page.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/mcp-server/app/video/[session]/page.tsx","default");a.s(["default",0,b])},99357,a=>{"use strict";a.i(35800);var b=a.i(19348);a.n(b)}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__fc10c8f1._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["turbopack:///[project]/mcp-server/app/video/[session]/page.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport default registerClientReference(\n function() { throw new Error(\"Attempted to call the default export of [project]/mcp-server/app/video/[session]/page.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/mcp-server/app/video/[session]/page.tsx\",\n \"default\",\n);\n"],"names":[],"mappings":"0UAEe,CAAA,EAAA,AADf,EAAA,CAAA,CAAA,OACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,ySAA2S,EACxU,wEACA,8DAHW,CAAA,EADf,AACe,EADf,CAAA,CAAA,OACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,qRAAuR,EACpT,oDACA","ignoreList":[0]}
@@ -1,7 +1,7 @@
1
1
  module.exports=[13379,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"RedirectStatusCode",{enumerable:!0,get:function(){return d}});var d=function(a){return a[a.SeeOther=303]="SeeOther",a[a.TemporaryRedirect=307]="TemporaryRedirect",a[a.PermanentRedirect=308]="PermanentRedirect",a}({});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},62166,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{REDIRECT_ERROR_CODE:function(){return e},RedirectType:function(){return f},isRedirectError:function(){return g}});let d=a.r(13379),e="NEXT_REDIRECT";var f=function(a){return a.push="push",a.replace="replace",a}({});function g(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let b=a.digest.split(";"),[c,f]=b,g=b.slice(2,-2).join(";"),h=Number(b.at(-2));return c===e&&("replace"===f||"push"===f)&&"string"==typeof g&&!isNaN(h)&&h in d.RedirectStatusCode}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},57976,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=a.r(13379),e=a.r(62166),f=a.r(20635).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},16271,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{HTTPAccessErrorStatus:function(){return d},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return f},getAccessFallbackErrorTypeByStatus:function(){return i},getAccessFallbackHTTPStatus:function(){return h},isHTTPAccessFallbackError:function(){return g}});let d={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},e=new Set(Object.values(d)),f="NEXT_HTTP_ERROR_FALLBACK";function g(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===f&&e.has(Number(c))}function h(a){return Number(a.digest.split(";")[1])}function i(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},21745,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"notFound",{enumerable:!0,get:function(){return e}});let d=""+a.r(16271).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},10389,(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"forbidden",{enumerable:!0,get:function(){return d}}),a.r(16271).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},48673,(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unauthorized",{enumerable:!0,get:function(){return d}}),a.r(16271).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},27252,(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===e}Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{isHangingPromiseRejectionError:function(){return d},makeDevtoolsIOAwarePromise:function(){return j},makeHangingPromise:function(){return h}});let e="HANGING_PROMISE_REJECTION";class f extends Error{constructor(a,b){super(`During prerendering, ${b} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${b} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${a}".`),this.route=a,this.expression=b,this.digest=e}}let g=new WeakMap;function h(a,b,c){if(a.aborted)return Promise.reject(new f(b,c));{let d=new Promise((d,e)=>{let h=e.bind(null,new f(b,c)),i=g.get(a);if(i)i.push(h);else{let b=[h];g.set(a,b),a.addEventListener("abort",()=>{for(let a=0;a<b.length;a++)b[a]()},{once:!0})}});return d.catch(i),d}}function i(){}function j(a){return new Promise(b=>{setTimeout(()=>{b(a)},0)})}},746,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isPostpone",{enumerable:!0,get:function(){return e}});let d=Symbol.for("react.postpone");function e(a){return"object"==typeof a&&null!==a&&a.$$typeof===d}},30990,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{BailoutToCSRError:function(){return e},isBailoutToCSRError:function(){return f}});let d="BAILOUT_TO_CLIENT_SIDE_RENDERING";class e extends Error{constructor(a){super("Bail out to client-side rendering: "+a),this.reason=a,this.digest=d}}function f(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===d}},61097,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isNextRouterError",{enumerable:!0,get:function(){return f}});let d=a.r(16271),e=a.r(62166);function f(a){return(0,e.isRedirectError)(a)||(0,d.isHTTPAccessFallbackError)(a)}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},90687,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{DynamicServerError:function(){return e},isDynamicServerError:function(){return f}});let d="DYNAMIC_SERVER_USAGE";class e extends Error{constructor(a){super("Dynamic server usage: "+a),this.description=a,this.digest=d}}function f(a){return"object"==typeof a&&null!==a&&"digest"in a&&"string"==typeof a.digest&&a.digest===d}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},2396,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{StaticGenBailoutError:function(){return e},isStaticGenBailoutError:function(){return f}});let d="NEXT_STATIC_GEN_BAILOUT";class e extends Error{constructor(...a){super(...a),this.code=d}}function f(a){return"object"==typeof a&&null!==a&&"code"in a&&a.code===d}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},91967,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{METADATA_BOUNDARY_NAME:function(){return d},OUTLET_BOUNDARY_NAME:function(){return f},ROOT_LAYOUT_BOUNDARY_NAME:function(){return g},VIEWPORT_BOUNDARY_NAME:function(){return e}});let d="__next_metadata_boundary__",e="__next_viewport_boundary__",f="__next_outlet_boundary__",g="__next_root_layout_boundary__"},41694,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{atLeastOneTask:function(){return f},scheduleImmediate:function(){return e},scheduleOnNextTick:function(){return d},waitAtLeastOneReactRenderTask:function(){return g}});let d=a=>{Promise.resolve().then(()=>{process.nextTick(a)})},e=a=>{setImmediate(a)};function f(){return new Promise(a=>e(a))}function g(){return new Promise(a=>setImmediate(a))}},36898,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super("Invariant: "+(a.endsWith(".")?a:a+".")+" This is a bug in Next.js.",b),this.name="InvariantError"}}},99329,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{Postpone:function(){return z},PreludeState:function(){return V},abortAndThrowOnSynchronousRequestDataAccess:function(){return x},abortOnSynchronousPlatformIOAccess:function(){return v},accessedDynamicData:function(){return H},annotateDynamicAccess:function(){return M},consumeDynamicAccess:function(){return I},createDynamicTrackingState:function(){return o},createDynamicValidationState:function(){return p},createHangingInputAbortSignal:function(){return L},createRenderInBrowserAbortSignal:function(){return K},delayUntilRuntimeStage:function(){return Y},formatDynamicAPIAccesses:function(){return J},getFirstDynamicReason:function(){return q},isDynamicPostpone:function(){return C},isPrerenderInterruptedError:function(){return G},logDisallowedDynamicError:function(){return W},markCurrentScopeAsDynamic:function(){return r},postponeWithTracking:function(){return A},throwIfDisallowedDynamic:function(){return X},throwToInterruptStaticGeneration:function(){return s},trackAllowedDynamicAccess:function(){return U},trackDynamicDataInDynamicRender:function(){return t},trackSynchronousPlatformIOAccessInDev:function(){return w},trackSynchronousRequestDataAccessInDev:function(){return y},useDynamicRouteParams:function(){return N},useDynamicSearchParams:function(){return O}});let d=function(a){return a&&a.__esModule?a:{default:a}}(a.r(96870)),e=a.r(90687),f=a.r(2396),g=a.r(32319),h=a.r(56704),i=a.r(27252),j=a.r(91967),k=a.r(41694),l=a.r(30990),m=a.r(36898),n="function"==typeof d.default.unstable_postpone;function o(a){return{isDebugDynamicAccesses:a,dynamicAccesses:[],syncDynamicErrorWithStack:null}}function p(){return{hasSuspenseAboveBody:!1,hasDynamicMetadata:!1,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[]}}function q(a){var b;return null==(b=a.dynamicAccesses[0])?void 0:b.expression}function r(a,b,c){if(b)switch(b.type){case"cache":case"unstable-cache":case"private-cache":return}if(!a.forceDynamic&&!a.forceStatic){if(a.dynamicShouldError)throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${c}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(b)switch(b.type){case"prerender-ppr":return A(a.route,c,b.dynamicTracking);case"prerender-legacy":b.revalidate=0;let d=Object.defineProperty(new e.DynamicServerError(`Route ${a.route} couldn't be rendered statically because it used ${c}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E550",enumerable:!1,configurable:!0});throw a.dynamicUsageDescription=c,a.dynamicUsageStack=d.stack,d}}}function s(a,b,c){let d=Object.defineProperty(new e.DynamicServerError(`Route ${b.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw c.revalidate=0,b.dynamicUsageDescription=a,b.dynamicUsageStack=d.stack,d}function t(a){switch(a.type){case"cache":case"unstable-cache":case"private-cache":return}}function u(a,b,c){let d=F(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`);c.controller.abort(d);let e=c.dynamicTracking;e&&e.dynamicAccesses.push({stack:e.isDebugDynamicAccesses?Error().stack:void 0,expression:b})}function v(a,b,c,d){let e=d.dynamicTracking;u(a,b,d),e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}function w(a){a.prerenderPhase=!1}function x(a,b,c,d){if(!1===d.controller.signal.aborted){u(a,b,d);let e=d.dynamicTracking;e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}throw F(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`)}let y=w;function z({reason:a,route:b}){let c=g.workUnitAsyncStorage.getStore();A(b,a,c&&"prerender-ppr"===c.type?c.dynamicTracking:null)}function A(a,b,c){(function(){if(!n)throw Object.defineProperty(Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E224",enumerable:!1,configurable:!0})})(),c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:b}),d.default.unstable_postpone(B(a,b))}function B(a,b){return`Route ${a} needs to bail out of prerendering at this point because it used ${b}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function C(a){return"object"==typeof a&&null!==a&&"string"==typeof a.message&&D(a.message)}function D(a){return a.includes("needs to bail out of prerendering at this point because it used")&&a.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===D(B("%%%","^^^")))throw Object.defineProperty(Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E296",enumerable:!1,configurable:!0});let E="NEXT_PRERENDER_INTERRUPTED";function F(a){let b=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return b.digest=E,b}function G(a){return"object"==typeof a&&null!==a&&a.digest===E&&"name"in a&&"message"in a&&a instanceof Error}function H(a){return a.length>0}function I(a,b){return a.dynamicAccesses.push(...b.dynamicAccesses),a.dynamicAccesses}function J(a){return a.filter(a=>"string"==typeof a.stack&&a.stack.length>0).map(({expression:a,stack:b})=>(b=b.split("\n").slice(4).filter(a=>!(a.includes("node_modules/next/")||a.includes(" (<anonymous>)")||a.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${a}:
2
2
  ${b}`))}function K(){let a=new AbortController;return a.abort(Object.defineProperty(new l.BailoutToCSRError("Render in Browser"),"__NEXT_ERROR_CODE",{value:"E721",enumerable:!1,configurable:!0})),a.signal}function L(a){switch(a.type){case"prerender":case"prerender-runtime":let b=new AbortController;if(a.cacheSignal)a.cacheSignal.inputReady().then(()=>{b.abort()});else{let c=(0,g.getRuntimeStagePromise)(a);c?c.then(()=>(0,k.scheduleOnNextTick)(()=>b.abort())):(0,k.scheduleOnNextTick)(()=>b.abort())}return b.signal;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":return}}function M(a,b){let c=b.dynamicTracking;c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:a})}function N(a){let b=h.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b&&c)switch(c.type){case"prerender-client":case"prerender":{let e=c.fallbackRouteParams;e&&e.size>0&&d.default.use((0,i.makeHangingPromise)(c.renderSignal,b.route,a));break}case"prerender-ppr":{let d=c.fallbackRouteParams;if(d&&d.size>0)return A(b.route,a,c.dynamicTracking);break}case"prerender-runtime":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called during a runtime prerender. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E771",enumerable:!1,configurable:!0});case"cache":case"private-cache":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0})}}function O(a){let b=h.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b)switch(!c&&(0,g.throwForMissingRequestStore)(a),c.type){case"prerender-client":d.default.use((0,i.makeHangingPromise)(c.renderSignal,b.route,a));break;case"prerender-legacy":case"prerender-ppr":if(b.forceStatic)return;throw Object.defineProperty(new l.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called from a Server Component. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"cache":case"unstable-cache":case"private-cache":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"request":return}}let P=/\n\s+at Suspense \(<anonymous>\)/,Q=RegExp(`\\n\\s+at Suspense \\(<anonymous>\\)(?:(?!\\n\\s+at (?:body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6) \\(<anonymous>\\))[\\s\\S])*?\\n\\s+at ${j.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`),R=RegExp(`\\n\\s+at ${j.METADATA_BOUNDARY_NAME}[\\n\\s]`),S=RegExp(`\\n\\s+at ${j.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),T=RegExp(`\\n\\s+at ${j.OUTLET_BOUNDARY_NAME}[\\n\\s]`);function U(a,b,c,d){if(!T.test(b)){if(R.test(b)){c.hasDynamicMetadata=!0;return}if(S.test(b)){c.hasDynamicViewport=!0;return}if(Q.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}else if(P.test(b)){c.hasAllowedDynamic=!0;return}else{if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=function(a,b){let c=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return c.stack=c.name+": "+a+b,c}(`Route "${a.route}": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a "use cache" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense`,b);return void c.dynamicErrors.push(e)}}}var V=function(a){return a[a.Full=0]="Full",a[a.Empty=1]="Empty",a[a.Errored=2]="Errored",a}({});function W(a,b){console.error(b),a.dev||(a.hasReadableErrorStacks?console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${a.route}" in your browser to investigate the error.`):console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:
3
3
  - Start the app in development mode by running \`next dev\`, then open "${a.route}" in your browser to investigate the error.
4
- - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`))}function X(a,b,c,d){if(d.syncDynamicErrorWithStack)throw W(a,d.syncDynamicErrorWithStack),new f.StaticGenBailoutError;if(0!==b){if(c.hasSuspenseAboveBody)return;let d=c.dynamicErrors;if(d.length>0){for(let b=0;b<d.length;b++)W(a,d[b]);throw new f.StaticGenBailoutError}if(c.hasDynamicViewport)throw console.error(`Route "${a.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new f.StaticGenBailoutError;if(1===b)throw console.error(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new f.StaticGenBailoutError}else if(!1===c.hasAllowedDynamic&&c.hasDynamicMetadata)throw console.error(`Route "${a.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new f.StaticGenBailoutError}function Y(a,b){return a.runtimeStagePromise?a.runtimeStagePromise.then(()=>b):b}},69394,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=a.r(27252),e=a.r(746),f=a.r(30990),g=a.r(61097),h=a.r(99329),i=a.r(90687);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},61115,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=a.r(69394).unstable_rethrow;("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},49104,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=a.r(57976),e=a.r(62166),f=a.r(21745),g=a.r(10389),h=a.r(48673),i=a.r(61115);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},13381,a=>{"use strict";let b=(0,a.i(42506).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/mcp-server/app/logs/LogsClient.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/mcp-server/app/logs/LogsClient.tsx <module evaluation>","default");a.s(["default",0,b])},87872,a=>{"use strict";let b=(0,a.i(42506).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/mcp-server/app/logs/LogsClient.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/mcp-server/app/logs/LogsClient.tsx","default");a.s(["default",0,b])},81453,a=>{"use strict";a.i(13381);var b=a.i(87872);a.n(b)},99275,a=>{"use strict";var b=a.i(68405),c=a.i(22734),d=a.i(49104),e=a.i(14747),f=a.i(81453);async function g(){try{let a=process.env.LOG_FILE_PATH||"/var/log/dev3000/dev3000.log";if(!(0,c.existsSync)(a))return{files:[],currentFile:"",projectName:"unknown"};let b=(0,e.dirname)(a),d=(0,e.basename)(a),f=d.match(/^dev3000-(.+?)-\d{4}-\d{2}-\d{2}T/),g=f?f[1]:"unknown";return{files:(0,c.readdirSync)(b).filter(a=>a.startsWith("dev3000-")&&a.endsWith(".log")).map(a=>{let f=(0,e.join)(b,a),g=(0,c.statSync)(f),h=a.match(/(\d{4}-\d{2}-\d{2}T[\d-]+Z)/),i=h?h[1].replace(/-/g,":"):"";return{name:a,path:f,timestamp:i,size:g.size,mtime:g.mtime,isCurrent:a===d}}).sort((a,b)=>b.mtime.getTime()-a.mtime.getTime()),currentFile:a,projectName:g}}catch(a){return{files:[],currentFile:"",projectName:"unknown"}}}async function h(a,b="tail",d=100){try{if(!(0,c.existsSync)(a))return{logs:"",total:0};let e=(0,c.readFileSync)(a,"utf-8").split("\n").filter(a=>a.trim());return{logs:("head"===b?e.slice(0,d):e.slice(-d)).join("\n"),total:e.length}}catch(a){return{logs:"",total:0}}}async function i({searchParams:a}){let c=process.env.DEV3000_VERSION||"0.0.0",e=await a,{files:i,currentFile:j}=await g();if(e.project&&!e.file){let a=i.filter(a=>{let b=a.name.match(/^dev3000-(.+?)-\d{4}-\d{2}-\d{2}T/);return!!b&&b[1].includes(e.project??"")});a.length>0?(0,d.redirect)(`/logs?file=${encodeURIComponent(a[0].name)}&mode=tail`):i.length>0&&(0,d.redirect)(`/logs?file=${encodeURIComponent(i[0].name)}&mode=tail`)}else if(!e.file&&i.length>0){let a=i[0].name;(0,d.redirect)(`/logs?file=${encodeURIComponent(a)}&mode=tail`)}if(!e.file)return(0,b.jsx)(f.default,{version:c,initialData:{logs:[],logFiles:[],currentLogFile:"",mode:"tail"}});let k=i.find(a=>a.name===e.file),l=k?.path||j;k?.isCurrent;let m=e.mode||"tail",n=function(a){let b=/\[(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z|\d{2}:\d{2}:\d{2}\.\d{3})\] \[([^\]]+)\] /,c=[],d=a.split("\n"),e=null;for(let a of d){if(!a.trim())continue;let d=a.match(b);if(d){let b,f;e&&c.push(e);let[g,h,i]=d,j=a.substring(g.length),k=/^TAB-\d+\.\d+$/.test(i),l=i,m=j;if(k){b=i;let a=j.match(/^\[([^\]]+)\] /);if(a&&(l=a[1],(m=j.substring(a[0].length)).includes("User-Agent:"))){let a=m.match(/User-Agent: ([^,\n]+)/);a&&(f=a[1])}}let n=m.match(/\[SCREENSHOT\] ([^\s[]+)/)?.[1],o=function(a){let b=a.match(/^\[CONSOLE LOG\] (.+)$/);if(!b)return a;let c=b[1];if(!c.includes("%c"))return a;let d=c;return d=(d=(d=d.replace(/%c/g,"")).replace(/\s+color:\s*[^{}\n]*?(?=\s*[{[]|$)/g,"")).replace(/\s+/g," ").trim(),`[CONSOLE LOG] ${d}`}(m);if((o=o.replace(/ \[CHROME_EXTENSION\]$/,"")).includes("[Network.webSocketFrameSent]")||o.includes("[Network.webSocketFrameReceived]")||o.includes("[Network.webSocketFrame")||o.includes("webSocketDebuggerUrl")&&o.includes("localhost")||o.includes("[NETWORK")&&o.includes("__PAGE__")&&o.includes("refresh")){e=null;continue}let p=h;if(/^\d{2}:\d{2}:\d{2}\.\d{3}$/.test(h)){let a=new Date,[b,c,d]=h.split(":"),[e,f]=d.split(".");a.setHours(parseInt(b,10),parseInt(c,10),parseInt(e,10),parseInt(f,10)),p=a.toISOString()}e={timestamp:p,source:l,message:o,screenshot:n,original:a,tabIdentifier:b,userAgent:f}}else e&&(e.message+=`
4
+ - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`))}function X(a,b,c,d){if(d.syncDynamicErrorWithStack)throw W(a,d.syncDynamicErrorWithStack),new f.StaticGenBailoutError;if(0!==b){if(c.hasSuspenseAboveBody)return;let d=c.dynamicErrors;if(d.length>0){for(let b=0;b<d.length;b++)W(a,d[b]);throw new f.StaticGenBailoutError}if(c.hasDynamicViewport)throw console.error(`Route "${a.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new f.StaticGenBailoutError;if(1===b)throw console.error(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new f.StaticGenBailoutError}else if(!1===c.hasAllowedDynamic&&c.hasDynamicMetadata)throw console.error(`Route "${a.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new f.StaticGenBailoutError}function Y(a,b){return a.runtimeStagePromise?a.runtimeStagePromise.then(()=>b):b}},69394,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=a.r(27252),e=a.r(746),f=a.r(30990),g=a.r(61097),h=a.r(99329),i=a.r(90687);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},61115,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=a.r(69394).unstable_rethrow;("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},49104,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=a.r(57976),e=a.r(62166),f=a.r(21745),g=a.r(10389),h=a.r(48673),i=a.r(61115);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},13381,a=>{"use strict";let b=(0,a.i(42506).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/mcp-server/app/logs/LogsClient.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/mcp-server/app/logs/LogsClient.tsx <module evaluation>","default");a.s(["default",0,b])},87872,a=>{"use strict";let b=(0,a.i(42506).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/mcp-server/app/logs/LogsClient.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/mcp-server/app/logs/LogsClient.tsx","default");a.s(["default",0,b])},81453,a=>{"use strict";a.i(13381);var b=a.i(87872);a.n(b)},99275,a=>{"use strict";var b=a.i(68405),c=a.i(22734),d=a.i(49104),e=a.i(14747),f=a.i(81453);async function g(){try{let a=process.env.LOG_FILE_PATH||"/var/log/dev3000/dev3000.log";if(!(0,c.existsSync)(a))return{files:[],currentFile:"",projectName:"unknown"};let b=(0,e.dirname)(a),d=(0,e.basename)(a),f=d.match(/^dev3000-(.+?)-\d{4}-\d{2}-\d{2}T/),g=f?f[1]:"unknown";return{files:(0,c.readdirSync)(b).filter(a=>a.startsWith("dev3000-")&&a.endsWith(".log")).map(a=>{let f=(0,e.join)(b,a),g=(0,c.statSync)(f),h=a.match(/(\d{4}-\d{2}-\d{2}T[\d-]+Z)/),i=h?h[1].replace(/-/g,":"):"";return{name:a,path:f,timestamp:i,size:g.size,mtime:g.mtime,isCurrent:a===d}}).sort((a,b)=>b.mtime.getTime()-a.mtime.getTime()),currentFile:a,projectName:g}}catch(a){return{files:[],currentFile:"",projectName:"unknown"}}}async function h(a,b="tail",d=100){try{if(!(0,c.existsSync)(a))return{logs:"",total:0};let e=(0,c.readFileSync)(a,"utf-8").split("\n").filter(a=>a.trim());return{logs:("head"===b?e.slice(0,d):e.slice(-d)).join("\n"),total:e.length}}catch(a){return{logs:"",total:0}}}async function i({searchParams:a}){let c=process.env.DEV3000_VERSION||"0.0.0",e=await a,{files:i,currentFile:j}=await g();if(e.project&&!e.file){let a=i.filter(a=>{let b=a.name.match(/^dev3000-(.+?)-\d{4}-\d{2}-\d{2}T/);return!!b&&b[1].includes(e.project??"")});a.length>0?(0,d.redirect)(`/logs?file=${encodeURIComponent(a[0].name)}&mode=tail`):i.length>0&&(0,d.redirect)(`/logs?file=${encodeURIComponent(i[0].name)}&mode=tail`)}else if(!e.file&&i.length>0){let a=i[0].name;(0,d.redirect)(`/logs?file=${encodeURIComponent(a)}&mode=tail`)}if(!e.file)return(0,b.jsx)(f.default,{version:c,initialData:{logs:[],logFiles:[],currentLogFile:"",mode:"tail"}});let k=i.find(a=>a.name===e.file),l=k?.path||j;k?.isCurrent;let m=e.mode||"tail",n=function(a){let b=/\[(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z|\d{2}:\d{2}:\d{2}\.\d{3})\] \[([^\]]+)\] /,c=[],d=a.split("\n"),e=null;for(let a of d){if(!a.trim())continue;let d=a.match(b);if(d){let b,f;e&&c.push(e);let[g,h,i]=d,j=a.substring(g.length),k=/^TAB-\d+\.\d+$/.test(i),l=i,m=j;if(k){b=i;let a=j.match(/^\[([^\]]+)\] /);if(a&&(l=a[1],(m=j.substring(a[0].length)).includes("User-Agent:"))){let a=m.match(/User-Agent: ([^,\n]+)/);a&&(f=a[1])}}let n=m.match(/\[SCREENSHOT\] ([^\s[]+)/)?.[1],o=m.match(/\[SCREENCAST\] View jank analysis: ([^\s]+)/)?.[1],p=function(a){let b=a.match(/^\[CONSOLE LOG\] (.+)$/);if(!b)return a;let c=b[1];if(!c.includes("%c"))return a;let d=c;return d=(d=(d=d.replace(/%c/g,"")).replace(/\s+color:\s*[^{}\n]*?(?=\s*[{[]|$)/g,"")).replace(/\s+/g," ").trim(),`[CONSOLE LOG] ${d}`}(m);if((p=p.replace(/ \[CHROME_EXTENSION\]$/,"")).includes("[Network.webSocketFrameSent]")||p.includes("[Network.webSocketFrameReceived]")||p.includes("[Network.webSocketFrame")||p.includes("webSocketDebuggerUrl")&&p.includes("localhost")||p.includes("[NETWORK")&&p.includes("__PAGE__")&&p.includes("refresh")){e=null;continue}let q=h;if(/^\d{2}:\d{2}:\d{2}\.\d{3}$/.test(h)){let a=new Date,[b,c,d]=h.split(":"),[e,f]=d.split(".");a.setHours(parseInt(b,10),parseInt(c,10),parseInt(e,10),parseInt(f,10)),q=a.toISOString()}e={timestamp:q,source:l,message:p,screenshot:n,screencast:o,original:a,tabIdentifier:b,userAgent:f}}else e&&(e.message+=`
5
5
  ${a}`,e.original+=`
6
6
  ${a}`)}return e&&c.push(e),c}((await h(l,m)).logs);return(0,b.jsx)(f.default,{version:c,initialData:{logs:n,logFiles:i,currentLogFile:l,mode:m}})}a.s(["default",()=>i],99275)}];
7
7