dev3000 0.0.54 → 0.0.56

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 (198) hide show
  1. package/README.md +15 -15
  2. package/dist/cdp-monitor.d.ts +1 -0
  3. package/dist/cdp-monitor.d.ts.map +1 -1
  4. package/dist/cdp-monitor.js +101 -17
  5. package/dist/cdp-monitor.js.map +1 -1
  6. package/dist/dev-environment.d.ts +1 -0
  7. package/dist/dev-environment.d.ts.map +1 -1
  8. package/dist/dev-environment.js +33 -1
  9. package/dist/dev-environment.js.map +1 -1
  10. package/mcp-server/.next/BUILD_ID +1 -1
  11. package/mcp-server/.next/app-build-manifest.json +28 -27
  12. package/mcp-server/.next/app-path-routes-manifest.json +1 -0
  13. package/mcp-server/.next/build/chunks/[root-of-the-server]__51225daf._.js.map +1 -1
  14. package/mcp-server/.next/build-manifest.json +6 -6
  15. package/mcp-server/.next/cache/.tsbuildinfo +1 -1
  16. package/mcp-server/.next/fallback-build-manifest.json +2 -2
  17. package/mcp-server/.next/prerender-manifest.json +10 -10
  18. package/mcp-server/.next/server/app/_global-error/page/app-build-manifest.json +4 -4
  19. package/mcp-server/.next/server/app/_global-error/page/build-manifest.json +4 -4
  20. package/mcp-server/.next/server/app/_global-error.html +2 -2
  21. package/mcp-server/.next/server/app/_global-error.rsc +1 -1
  22. package/mcp-server/.next/server/app/_not-found/page/app-build-manifest.json +5 -5
  23. package/mcp-server/.next/server/app/_not-found/page/build-manifest.json +4 -4
  24. package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  25. package/mcp-server/.next/server/app/_not-found.html +1 -1
  26. package/mcp-server/.next/server/app/_not-found.rsc +2 -2
  27. package/mcp-server/.next/server/app/api/config/route/app-build-manifest.json +4 -4
  28. package/mcp-server/.next/server/app/api/config/route/build-manifest.json +4 -4
  29. package/mcp-server/.next/server/app/api/health/route/app-build-manifest.json +11 -0
  30. package/mcp-server/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
  31. package/mcp-server/.next/server/app/api/health/route/build-manifest.json +17 -0
  32. package/mcp-server/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
  33. package/mcp-server/.next/server/app/api/health/route.js +7 -0
  34. package/mcp-server/.next/server/app/api/health/route.js.map +5 -0
  35. package/mcp-server/.next/server/app/api/health/route.js.nft.json +1 -0
  36. package/mcp-server/.next/server/app/api/health/route_client-reference-manifest.js +2 -0
  37. package/mcp-server/.next/server/app/api/logs/append/route/app-build-manifest.json +4 -4
  38. package/mcp-server/.next/server/app/api/logs/append/route/build-manifest.json +4 -4
  39. package/mcp-server/.next/server/app/api/logs/head/route/app-build-manifest.json +4 -4
  40. package/mcp-server/.next/server/app/api/logs/head/route/build-manifest.json +4 -4
  41. package/mcp-server/.next/server/app/api/logs/list/route/app-build-manifest.json +4 -4
  42. package/mcp-server/.next/server/app/api/logs/list/route/build-manifest.json +4 -4
  43. package/mcp-server/.next/server/app/api/logs/rotate/route/app-build-manifest.json +4 -4
  44. package/mcp-server/.next/server/app/api/logs/rotate/route/build-manifest.json +4 -4
  45. package/mcp-server/.next/server/app/api/logs/stream/route/app-build-manifest.json +4 -4
  46. package/mcp-server/.next/server/app/api/logs/stream/route/build-manifest.json +4 -4
  47. package/mcp-server/.next/server/app/api/logs/tail/route/app-build-manifest.json +4 -4
  48. package/mcp-server/.next/server/app/api/logs/tail/route/build-manifest.json +4 -4
  49. package/mcp-server/.next/server/app/api/mcp/[transport]/route/app-build-manifest.json +4 -4
  50. package/mcp-server/.next/server/app/api/mcp/[transport]/route/build-manifest.json +4 -4
  51. package/mcp-server/.next/server/app/api/replay/route/app-build-manifest.json +4 -4
  52. package/mcp-server/.next/server/app/api/replay/route/build-manifest.json +4 -4
  53. package/mcp-server/.next/server/app/index.html +1 -1
  54. package/mcp-server/.next/server/app/index.rsc +16 -14
  55. package/mcp-server/.next/server/app/logs/page/app-build-manifest.json +7 -7
  56. package/mcp-server/.next/server/app/logs/page/build-manifest.json +4 -4
  57. package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
  58. package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  59. package/mcp-server/.next/server/app/page/app-build-manifest.json +6 -5
  60. package/mcp-server/.next/server/app/page/build-manifest.json +4 -4
  61. package/mcp-server/.next/server/app/page.js +1 -1
  62. package/mcp-server/.next/server/app/page.js.nft.json +1 -1
  63. package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
  64. package/mcp-server/.next/server/app/replay/page/app-build-manifest.json +6 -6
  65. package/mcp-server/.next/server/app/replay/page/build-manifest.json +4 -4
  66. package/mcp-server/.next/server/app/replay/page.js.nft.json +1 -1
  67. package/mcp-server/.next/server/app/replay/page_client-reference-manifest.js +1 -1
  68. package/mcp-server/.next/server/app/replay.html +1 -1
  69. package/mcp-server/.next/server/app/replay.rsc +3 -3
  70. package/mcp-server/.next/server/app-paths-manifest.json +1 -0
  71. package/mcp-server/.next/server/chunks/[root-of-the-server]__6f92d0ce._.js +3 -0
  72. package/mcp-server/.next/server/chunks/[root-of-the-server]__6f92d0ce._.js.map +1 -0
  73. package/mcp-server/.next/server/chunks/[root-of-the-server]__82298dd3._.js +6 -6
  74. package/mcp-server/.next/server/chunks/[root-of-the-server]__82298dd3._.js.map +1 -1
  75. package/mcp-server/.next/server/chunks/_next-internal_server_app_api_health_route_actions_da3433c4.js +3 -0
  76. package/mcp-server/.next/server/chunks/_next-internal_server_app_api_health_route_actions_da3433c4.js.map +1 -0
  77. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js +3 -0
  78. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js.map +1 -0
  79. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js +3 -0
  80. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js.map +1 -0
  81. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__ffe77ef7._.js +3 -0
  82. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__ffe77ef7._.js.map +1 -0
  83. package/mcp-server/.next/server/chunks/ssr/{_129f4fec._.js → _7c04f51e._.js} +2 -2
  84. package/mcp-server/.next/server/chunks/ssr/_7c04f51e._.js.map +1 -0
  85. package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js +3 -0
  86. package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js.map +1 -0
  87. package/mcp-server/.next/server/middleware-build-manifest.js +4 -4
  88. package/mcp-server/.next/server/pages/404.html +1 -1
  89. package/mcp-server/.next/server/pages/500.html +2 -2
  90. package/mcp-server/.next/standalone/.next/BUILD_ID +1 -1
  91. package/mcp-server/.next/standalone/.next/app-build-manifest.json +28 -27
  92. package/mcp-server/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  93. package/mcp-server/.next/standalone/.next/build-manifest.json +6 -6
  94. package/mcp-server/.next/standalone/.next/prerender-manifest.json +10 -10
  95. package/mcp-server/.next/standalone/.next/server/app/_global-error/page/app-build-manifest.json +4 -4
  96. package/mcp-server/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +4 -4
  97. package/mcp-server/.next/standalone/.next/server/app/_global-error.html +2 -2
  98. package/mcp-server/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  99. package/mcp-server/.next/standalone/.next/server/app/_not-found/page/app-build-manifest.json +5 -5
  100. package/mcp-server/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +4 -4
  101. package/mcp-server/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  102. package/mcp-server/.next/standalone/.next/server/app/_not-found.html +1 -1
  103. package/mcp-server/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  104. package/mcp-server/.next/standalone/.next/server/app/api/config/route/app-build-manifest.json +4 -4
  105. package/mcp-server/.next/standalone/.next/server/app/api/config/route/build-manifest.json +4 -4
  106. package/mcp-server/.next/standalone/.next/server/app/api/health/route/app-build-manifest.json +11 -0
  107. package/mcp-server/.next/standalone/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
  108. package/mcp-server/.next/standalone/.next/server/app/api/health/route/build-manifest.json +17 -0
  109. package/mcp-server/.next/standalone/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
  110. package/mcp-server/.next/standalone/.next/server/app/api/health/route.js +7 -0
  111. package/mcp-server/.next/standalone/.next/server/app/api/health/route.js.map +5 -0
  112. package/mcp-server/.next/standalone/.next/server/app/api/health/route.js.nft.json +1 -0
  113. package/mcp-server/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +2 -0
  114. package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route/app-build-manifest.json +4 -4
  115. package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route/build-manifest.json +4 -4
  116. package/mcp-server/.next/standalone/.next/server/app/api/logs/head/route/app-build-manifest.json +4 -4
  117. package/mcp-server/.next/standalone/.next/server/app/api/logs/head/route/build-manifest.json +4 -4
  118. package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route/app-build-manifest.json +4 -4
  119. package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route/build-manifest.json +4 -4
  120. package/mcp-server/.next/standalone/.next/server/app/api/logs/rotate/route/app-build-manifest.json +4 -4
  121. package/mcp-server/.next/standalone/.next/server/app/api/logs/rotate/route/build-manifest.json +4 -4
  122. package/mcp-server/.next/standalone/.next/server/app/api/logs/stream/route/app-build-manifest.json +4 -4
  123. package/mcp-server/.next/standalone/.next/server/app/api/logs/stream/route/build-manifest.json +4 -4
  124. package/mcp-server/.next/standalone/.next/server/app/api/logs/tail/route/app-build-manifest.json +4 -4
  125. package/mcp-server/.next/standalone/.next/server/app/api/logs/tail/route/build-manifest.json +4 -4
  126. package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route/app-build-manifest.json +4 -4
  127. package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route/build-manifest.json +4 -4
  128. package/mcp-server/.next/standalone/.next/server/app/api/replay/route/app-build-manifest.json +4 -4
  129. package/mcp-server/.next/standalone/.next/server/app/api/replay/route/build-manifest.json +4 -4
  130. package/mcp-server/.next/standalone/.next/server/app/index.html +1 -1
  131. package/mcp-server/.next/standalone/.next/server/app/index.rsc +16 -14
  132. package/mcp-server/.next/standalone/.next/server/app/logs/page/app-build-manifest.json +7 -7
  133. package/mcp-server/.next/standalone/.next/server/app/logs/page/build-manifest.json +4 -4
  134. package/mcp-server/.next/standalone/.next/server/app/logs/page.js.nft.json +1 -1
  135. package/mcp-server/.next/standalone/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  136. package/mcp-server/.next/standalone/.next/server/app/page/app-build-manifest.json +6 -5
  137. package/mcp-server/.next/standalone/.next/server/app/page/build-manifest.json +4 -4
  138. package/mcp-server/.next/standalone/.next/server/app/page.js +1 -1
  139. package/mcp-server/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  140. package/mcp-server/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  141. package/mcp-server/.next/standalone/.next/server/app/replay/page/app-build-manifest.json +6 -6
  142. package/mcp-server/.next/standalone/.next/server/app/replay/page/build-manifest.json +4 -4
  143. package/mcp-server/.next/standalone/.next/server/app/replay/page.js.nft.json +1 -1
  144. package/mcp-server/.next/standalone/.next/server/app/replay/page_client-reference-manifest.js +1 -1
  145. package/mcp-server/.next/standalone/.next/server/app/replay.html +1 -1
  146. package/mcp-server/.next/standalone/.next/server/app/replay.rsc +3 -3
  147. package/mcp-server/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  148. package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__6f92d0ce._.js +3 -0
  149. package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__82298dd3._.js +6 -6
  150. package/mcp-server/.next/standalone/.next/server/chunks/_next-internal_server_app_api_health_route_actions_da3433c4.js +3 -0
  151. package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js +3 -0
  152. package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js +3 -0
  153. package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ffe77ef7._.js +3 -0
  154. package/mcp-server/.next/standalone/.next/server/chunks/ssr/{_129f4fec._.js → _7c04f51e._.js} +2 -2
  155. package/mcp-server/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js +3 -0
  156. package/mcp-server/.next/standalone/.next/server/middleware-build-manifest.js +4 -4
  157. package/mcp-server/.next/standalone/.next/server/pages/404.html +1 -1
  158. package/mcp-server/.next/standalone/.next/server/pages/500.html +2 -2
  159. package/mcp-server/.next/standalone/app/api/health/route.ts +19 -0
  160. package/mcp-server/.next/standalone/app/api/mcp/[transport]/route.ts +10 -5
  161. package/mcp-server/.next/static/chunks/0840a1d3b8d17eda.js +5 -0
  162. package/mcp-server/.next/static/chunks/416a6ad96e2949dc.js +1 -0
  163. package/mcp-server/.next/static/chunks/{9259a540b1b78b91.js → 5c0c8ae693afcfee.js} +1 -1
  164. package/mcp-server/.next/static/chunks/605beb21d5c11807.js +1 -0
  165. package/mcp-server/.next/static/chunks/830751c84b44689a.js +1 -0
  166. package/mcp-server/.next/static/chunks/941b6c341513efe6.js +1 -0
  167. package/mcp-server/.next/static/chunks/accd4b2d97799296.js +5 -0
  168. package/mcp-server/.next/static/chunks/b2fe525ea0f48ed5.js +1 -0
  169. package/mcp-server/.next/static/chunks/dc9d08d2b5468dd7.css +2 -0
  170. package/mcp-server/.next/static/chunks/eeac65e303d3c6ae.js +1 -0
  171. package/mcp-server/.next/static/chunks/{turbopack-e91574a4b6cd8317.js → turbopack-28043e8ec5b32cbc.js} +1 -1
  172. package/mcp-server/.next/static/chunks/{turbopack-a2b668960bd831ed.js → turbopack-4c431b48e3258ab3.js} +1 -1
  173. package/mcp-server/.next/static/chunks/{turbopack-16ca4f26878616fe.js → turbopack-66b02875bc8e5dbd.js} +1 -1
  174. package/mcp-server/.next/trace +1 -1
  175. package/mcp-server/.next/types/routes.d.ts +2 -1
  176. package/mcp-server/.next/types/validator.ts +9 -0
  177. package/mcp-server/app/api/health/route.ts +19 -0
  178. package/mcp-server/app/api/mcp/[transport]/route.ts +9 -4
  179. package/mcp-server/app/page.tsx +107 -12
  180. package/package.json +1 -1
  181. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9865c1be._.js +0 -3
  182. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9865c1be._.js.map +0 -1
  183. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__bdb0de8a._.js +0 -3
  184. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__bdb0de8a._.js.map +0 -1
  185. package/mcp-server/.next/server/chunks/ssr/_129f4fec._.js.map +0 -1
  186. package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9865c1be._.js +0 -3
  187. package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__bdb0de8a._.js +0 -3
  188. package/mcp-server/.next/static/chunks/057f994a312138af.js +0 -1
  189. package/mcp-server/.next/static/chunks/4539039090e4ce07.js +0 -1
  190. package/mcp-server/.next/static/chunks/655254b9454d106c.js +0 -1
  191. package/mcp-server/.next/static/chunks/81c7382ca575441c.js +0 -5
  192. package/mcp-server/.next/static/chunks/96adbf9dd96ccea5.css +0 -2
  193. package/mcp-server/.next/static/chunks/b8ec00ccfbc128ba.js +0 -5
  194. package/mcp-server/.next/static/chunks/c7471d4576fc04a3.js +0 -1
  195. package/mcp-server/.next/static/chunks/ed85441e904ca043.js +0 -1
  196. /package/mcp-server/.next/static/{5wPGwyPmH4EFIj9v7Ez1V → N6OEtGstY3aUCE305hVvb}/_buildManifest.js +0 -0
  197. /package/mcp-server/.next/static/{5wPGwyPmH4EFIj9v7Ez1V → N6OEtGstY3aUCE305hVvb}/_clientMiddlewareManifest.json +0 -0
  198. /package/mcp-server/.next/static/{5wPGwyPmH4EFIj9v7Ez1V → N6OEtGstY3aUCE305hVvb}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/7a1b61971931d3f6.js","static/chunks/9259a540b1b78b91.js"],runtimeModuleIds:[80098,9926]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=new WeakMap;function n(e,t){this.m=e,this.e=t}let o=n.prototype,l=Object.prototype.hasOwnProperty,i="undefined"!=typeof Symbol&&Symbol.toStringTag;function s(e,t,r){l.call(e,t)||Object.defineProperty(e,t,r)}function u(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function c(e,t){s(e,"__esModule",{value:!0}),i&&s(e,i,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)s(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?s(e,n,{get:o,set:t[r++],enumerable:!0}):s(e,n,{get:o,enumerable:!0})}Object.seal(e)}o.s=function(e,t){let r,n;null!=t?n=(r=u(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,c(n,e)},o.j=function(e,t){var n,o;let i,s,a;null!=t?s=(i=u(this.c,t)).exports:(i=this.m,s=this.e);let c=(n=i,o=s,(a=r.get(n))||(r.set(n,a=[]),n.exports=n.namespaceObject=new Proxy(o,{get(e,t){if(l.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of a){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of a)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),a);"object"==typeof e&&null!==e&&c.push(e)},o.v=function(e,t){(null!=t?u(this.c,t):this.m).exports=e},o.n=function(e,t){let r;(r=null!=t?u(this.c,t):this.m).exports=r.namespaceObject=e};let f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,p=[null,f({}),f([]),f(f)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!p.includes(t);t=f(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),c(t,n),t}function d(e){let t=M(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function m(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}o.i=d,o.A=function(e){return this.r(e)(d.bind(this))},o.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},o.r=function(e){return M(e,this.m).exports},o.f=function(e){function t(t){if(l.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(l.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let b=Symbol("turbopack queues"),y=Symbol("turbopack exports"),O=Symbol("turbopack error");function g(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}o.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=m(),u=Object.assign(s,{[y]:r.exports,[b]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[y]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(b in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[y]:{},[b]:e=>e(t)};return e.then(e=>{r[y]=e,g(t)},e=>{r[O]=e,g(t)}),r}}return{[y]:e,[b]:()=>{}}}),r=()=>t.map(e=>{if(e[O])throw e[O];return e[y]}),{promise:l,resolve:i}=m(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[b](u)),s.queueCount?l:r()},function(e){e?i(u[O]=e):l(u[y]),g(n)}),n&&-1===n.status&&(n.status=0)};let w=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}w.prototype=URL.prototype,o.U=w,o.z=function(e){throw Error("dynamic usage of require is not supported")},o.g=globalThis;let j=n.prototype;var C=function(e){return e[e.Runtime=0]="Runtime",e[e.Parent=1]="Parent",e[e.Update=2]="Update",e}(C||{});let _=new Map;o.M=_;let U=new Map,v=new Map;async function k(e,t,r){let n;if("string"==typeof r)return T(e,t,A(r));let o=r.included||[],l=o.map(e=>!!_.has(e)||U.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>v.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)v.has(e)||r.add(e);for(let n of r){let r=T(e,t,A(n));v.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=T(e,t,A(r.path)),i))v.has(o)||v.set(o,n)}for(let e of o)U.has(e)||U.set(e,n);await n}j.l=function(e){return k(1,this.m.id,e)};let P=Promise.resolve(void 0),$=new WeakMap;function T(t,r,n){let o=e.loadChunkCached(t,n),l=$.get(o);if(void 0===l){let e=$.set.bind($,o,P);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}throw Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0)}),$.set(o,l)}return l}function A(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}`}j.L=function(e){return T(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/7a1b61971931d3f6.js","static/chunks/5c0c8ae693afcfee.js"],runtimeModuleIds:[80098,9926]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=new WeakMap;function n(e,t){this.m=e,this.e=t}let o=n.prototype,l=Object.prototype.hasOwnProperty,i="undefined"!=typeof Symbol&&Symbol.toStringTag;function s(e,t,r){l.call(e,t)||Object.defineProperty(e,t,r)}function u(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function c(e,t){s(e,"__esModule",{value:!0}),i&&s(e,i,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)s(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?s(e,n,{get:o,set:t[r++],enumerable:!0}):s(e,n,{get:o,enumerable:!0})}Object.seal(e)}o.s=function(e,t){let r,n;null!=t?n=(r=u(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,c(n,e)},o.j=function(e,t){var n,o;let i,s,a;null!=t?s=(i=u(this.c,t)).exports:(i=this.m,s=this.e);let c=(n=i,o=s,(a=r.get(n))||(r.set(n,a=[]),n.exports=n.namespaceObject=new Proxy(o,{get(e,t){if(l.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of a){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of a)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),a);"object"==typeof e&&null!==e&&c.push(e)},o.v=function(e,t){(null!=t?u(this.c,t):this.m).exports=e},o.n=function(e,t){let r;(r=null!=t?u(this.c,t):this.m).exports=r.namespaceObject=e};let f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,p=[null,f({}),f([]),f(f)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!p.includes(t);t=f(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),c(t,n),t}function d(e){let t=M(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function m(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}o.i=d,o.A=function(e){return this.r(e)(d.bind(this))},o.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},o.r=function(e){return M(e,this.m).exports},o.f=function(e){function t(t){if(l.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(l.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let b=Symbol("turbopack queues"),y=Symbol("turbopack exports"),O=Symbol("turbopack error");function g(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}o.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=m(),u=Object.assign(s,{[y]:r.exports,[b]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[y]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(b in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[y]:{},[b]:e=>e(t)};return e.then(e=>{r[y]=e,g(t)},e=>{r[O]=e,g(t)}),r}}return{[y]:e,[b]:()=>{}}}),r=()=>t.map(e=>{if(e[O])throw e[O];return e[y]}),{promise:l,resolve:i}=m(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[b](u)),s.queueCount?l:r()},function(e){e?i(u[O]=e):l(u[y]),g(n)}),n&&-1===n.status&&(n.status=0)};let w=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}w.prototype=URL.prototype,o.U=w,o.z=function(e){throw Error("dynamic usage of require is not supported")},o.g=globalThis;let j=n.prototype;var C=function(e){return e[e.Runtime=0]="Runtime",e[e.Parent=1]="Parent",e[e.Update=2]="Update",e}(C||{});let _=new Map;o.M=_;let U=new Map,v=new Map;async function k(e,t,r){let n;if("string"==typeof r)return T(e,t,A(r));let o=r.included||[],l=o.map(e=>!!_.has(e)||U.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>v.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)v.has(e)||r.add(e);for(let n of r){let r=T(e,t,A(n));v.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=T(e,t,A(r.path)),i))v.has(o)||v.set(o,n)}for(let e of o)U.has(e)||U.set(e,n);await n}j.l=function(e){return k(1,this.m.id,e)};let P=Promise.resolve(void 0),$=new WeakMap;function T(t,r,n){let o=e.loadChunkCached(t,n),l=$.get(o);if(void 0===l){let e=$.set.bind($,o,P);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}throw Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0)}),$.set(o,l)}return l}function A(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}`}j.L=function(e){return T(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
2
2
  self.TURBOPACK_NEXT_CHUNK_URLS = ${JSON.stringify(e.reverse().map(A),null,2)};
3
3
  importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let S=/\.js(?:\?[^#]*)?(?:#.*)?$/,E=/\.css(?:\?[^#]*)?(?:#.*)?$/;function K(e){return E.test(e)}o.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},o.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let x={};o.c=x;let M=(e,t)=>{let r=x[e];if(r){if(r.error)throw r.error;return r}return N(e,C.Parent,t.id)};function N(e,t,r){let o=_.get(e);"function"!=typeof o&&function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}throw Error(`Module ${e} was instantiated ${n}, but the module factory is not available. It might have been deleted in an HMR update.`)}(e,t,r);let l=a(e),i=l.exports;x[e]=l;let s=new n(l,i);try{o(s,l,i)}catch(e){throw l.error=e,e}return l.namespaceObject&&l.exports!==l.namespaceObject&&h(l.exports,l.namespaceObject),l}function L(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("undefined"!=typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o<e.length;){let t=e[o],n=o+1;for(;n<e.length&&"function"!=typeof e[n];)n++;if(n===e.length)throw Error("malformed chunk format, expected a factory function");if(!r.has(t)){let l=e[n];for(Object.defineProperty(l,"name",{value:"__TURBOPACK__module__evaluation__"});o<n;o++)t=e[o],r.set(t,l)}o=n+1}}(r,0,_)),e.registerChunk(o,n)}let B=new Map;(()=>{function t(e){let t=B.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},B.set(e,t)}return t}e={async registerChunk(e,r){if(t(A(e)).resolve(),null!=r){for(let e of r.otherChunks)t(A("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(t=>k(0,e,t))),r.runtimeModuleIds.length>0)for(let t of r.runtimeModuleIds)!function(e,t){let r=x[t];if(r){if(r.error)throw r.error;return}N(t,C.Runtime,e)}(e,t)}},loadChunkCached:(e,r)=>(function(e,r){let n=t(r);if(n.loadingStarted)return n.promise;if(e===C.Runtime)return n.loadingStarted=!0,K(r)&&n.resolve(),n.promise;if("function"==typeof importScripts)if(K(r));else if(S.test(r))self.TURBOPACK_NEXT_CHUNK_URLS.push(r),importScripts(TURBOPACK_WORKER_LOCATION+r);else throw Error(`can't infer type of chunk from URL ${r} in worker`);else{let e=decodeURI(r);if(K(r))if(document.querySelectorAll(`link[rel=stylesheet][href="${r}"],link[rel=stylesheet][href^="${r}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)n.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=r,e.onerror=()=>{n.reject()},e.onload=()=>{n.resolve()},document.head.appendChild(e)}else if(S.test(r)){let t=document.querySelectorAll(`script[src="${r}"],script[src^="${r}?"],script[src="${e}"],script[src^="${e}?"]`);if(t.length>0)for(let e of Array.from(t))e.addEventListener("error",()=>{n.reject()});else{let e=document.createElement("script");e.src=r,e.onerror=()=>{n.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${r}`)}return n.loadingStarted=!0,n.promise})(e,r),async loadWebAssembly(e,t,r,n,o){let l=fetch(A(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(A(r));return await WebAssembly.compileStreaming(o)}}})();let q=globalThis.TURBOPACK;globalThis.TURBOPACK={push:L},q.forEach(L)})();
@@ -1,3 +1,3 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/4539039090e4ce07.js","static/chunks/655254b9454d106c.js","static/chunks/3df53cad6e742c25.js","static/chunks/14ca28aed9ba7e16.js"],runtimeModuleIds:[75883]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=new WeakMap;function n(e,t){this.m=e,this.e=t}let o=n.prototype,l=Object.prototype.hasOwnProperty,i="undefined"!=typeof Symbol&&Symbol.toStringTag;function s(e,t,r){l.call(e,t)||Object.defineProperty(e,t,r)}function u(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function c(e,t){s(e,"__esModule",{value:!0}),i&&s(e,i,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)s(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?s(e,n,{get:o,set:t[r++],enumerable:!0}):s(e,n,{get:o,enumerable:!0})}Object.seal(e)}o.s=function(e,t){let r,n;null!=t?n=(r=u(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,c(n,e)},o.j=function(e,t){var n,o;let i,s,a;null!=t?s=(i=u(this.c,t)).exports:(i=this.m,s=this.e);let c=(n=i,o=s,(a=r.get(n))||(r.set(n,a=[]),n.exports=n.namespaceObject=new Proxy(o,{get(e,t){if(l.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of a){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of a)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),a);"object"==typeof e&&null!==e&&c.push(e)},o.v=function(e,t){(null!=t?u(this.c,t):this.m).exports=e},o.n=function(e,t){let r;(r=null!=t?u(this.c,t):this.m).exports=r.namespaceObject=e};let f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,p=[null,f({}),f([]),f(f)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!p.includes(t);t=f(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),c(t,n),t}function d(e){let t=M(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function m(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}o.i=d,o.A=function(e){return this.r(e)(d.bind(this))},o.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},o.r=function(e){return M(e,this.m).exports},o.f=function(e){function t(t){if(l.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(l.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let b=Symbol("turbopack queues"),y=Symbol("turbopack exports"),O=Symbol("turbopack error");function g(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}o.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=m(),u=Object.assign(s,{[y]:r.exports,[b]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[y]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(b in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[y]:{},[b]:e=>e(t)};return e.then(e=>{r[y]=e,g(t)},e=>{r[O]=e,g(t)}),r}}return{[y]:e,[b]:()=>{}}}),r=()=>t.map(e=>{if(e[O])throw e[O];return e[y]}),{promise:l,resolve:i}=m(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[b](u)),s.queueCount?l:r()},function(e){e?i(u[O]=e):l(u[y]),g(n)}),n&&-1===n.status&&(n.status=0)};let w=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}w.prototype=URL.prototype,o.U=w,o.z=function(e){throw Error("dynamic usage of require is not supported")},o.g=globalThis;let j=n.prototype;var C=function(e){return e[e.Runtime=0]="Runtime",e[e.Parent=1]="Parent",e[e.Update=2]="Update",e}(C||{});let _=new Map;o.M=_;let U=new Map,k=new Map;async function v(e,t,r){let n;if("string"==typeof r)return T(e,t,A(r));let o=r.included||[],l=o.map(e=>!!_.has(e)||U.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>k.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)k.has(e)||r.add(e);for(let n of r){let r=T(e,t,A(n));k.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=T(e,t,A(r.path)),i))k.has(o)||k.set(o,n)}for(let e of o)U.has(e)||U.set(e,n);await n}j.l=function(e){return v(1,this.m.id,e)};let P=Promise.resolve(void 0),$=new WeakMap;function T(t,r,n){let o=e.loadChunkCached(t,n),l=$.get(o);if(void 0===l){let e=$.set.bind($,o,P);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}throw Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0)}),$.set(o,l)}return l}function A(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}`}j.L=function(e){return T(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/941b6c341513efe6.js","static/chunks/605beb21d5c11807.js","static/chunks/14ca28aed9ba7e16.js","static/chunks/3df53cad6e742c25.js"],runtimeModuleIds:[75883]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=new WeakMap;function n(e,t){this.m=e,this.e=t}let o=n.prototype,l=Object.prototype.hasOwnProperty,i="undefined"!=typeof Symbol&&Symbol.toStringTag;function s(e,t,r){l.call(e,t)||Object.defineProperty(e,t,r)}function u(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function c(e,t){s(e,"__esModule",{value:!0}),i&&s(e,i,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)s(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?s(e,n,{get:o,set:t[r++],enumerable:!0}):s(e,n,{get:o,enumerable:!0})}Object.seal(e)}o.s=function(e,t){let r,n;null!=t?n=(r=u(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,c(n,e)},o.j=function(e,t){var n,o;let i,s,a;null!=t?s=(i=u(this.c,t)).exports:(i=this.m,s=this.e);let c=(n=i,o=s,(a=r.get(n))||(r.set(n,a=[]),n.exports=n.namespaceObject=new Proxy(o,{get(e,t){if(l.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of a){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of a)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),a);"object"==typeof e&&null!==e&&c.push(e)},o.v=function(e,t){(null!=t?u(this.c,t):this.m).exports=e},o.n=function(e,t){let r;(r=null!=t?u(this.c,t):this.m).exports=r.namespaceObject=e};let f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,p=[null,f({}),f([]),f(f)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!p.includes(t);t=f(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),c(t,n),t}function d(e){let t=M(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function m(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}o.i=d,o.A=function(e){return this.r(e)(d.bind(this))},o.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},o.r=function(e){return M(e,this.m).exports},o.f=function(e){function t(t){if(l.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(l.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let b=Symbol("turbopack queues"),y=Symbol("turbopack exports"),O=Symbol("turbopack error");function g(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}o.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=m(),u=Object.assign(s,{[y]:r.exports,[b]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[y]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(b in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[y]:{},[b]:e=>e(t)};return e.then(e=>{r[y]=e,g(t)},e=>{r[O]=e,g(t)}),r}}return{[y]:e,[b]:()=>{}}}),r=()=>t.map(e=>{if(e[O])throw e[O];return e[y]}),{promise:l,resolve:i}=m(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[b](u)),s.queueCount?l:r()},function(e){e?i(u[O]=e):l(u[y]),g(n)}),n&&-1===n.status&&(n.status=0)};let w=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}w.prototype=URL.prototype,o.U=w,o.z=function(e){throw Error("dynamic usage of require is not supported")},o.g=globalThis;let j=n.prototype;var C=function(e){return e[e.Runtime=0]="Runtime",e[e.Parent=1]="Parent",e[e.Update=2]="Update",e}(C||{});let _=new Map;o.M=_;let U=new Map,k=new Map;async function v(e,t,r){let n;if("string"==typeof r)return T(e,t,A(r));let o=r.included||[],l=o.map(e=>!!_.has(e)||U.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>k.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)k.has(e)||r.add(e);for(let n of r){let r=T(e,t,A(n));k.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=T(e,t,A(r.path)),i))k.has(o)||k.set(o,n)}for(let e of o)U.has(e)||U.set(e,n);await n}j.l=function(e){return v(1,this.m.id,e)};let P=Promise.resolve(void 0),$=new WeakMap;function T(t,r,n){let o=e.loadChunkCached(t,n),l=$.get(o);if(void 0===l){let e=$.set.bind($,o,P);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}throw Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0)}),$.set(o,l)}return l}function A(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}`}j.L=function(e){return T(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
2
2
  self.TURBOPACK_NEXT_CHUNK_URLS = ${JSON.stringify(e.reverse().map(A),null,2)};
3
3
  importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let S=/\.js(?:\?[^#]*)?(?:#.*)?$/,E=/\.css(?:\?[^#]*)?(?:#.*)?$/;function K(e){return E.test(e)}o.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},o.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let x={};o.c=x;let M=(e,t)=>{let r=x[e];if(r){if(r.error)throw r.error;return r}return N(e,C.Parent,t.id)};function N(e,t,r){let o=_.get(e);"function"!=typeof o&&function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}throw Error(`Module ${e} was instantiated ${n}, but the module factory is not available. It might have been deleted in an HMR update.`)}(e,t,r);let l=a(e),i=l.exports;x[e]=l;let s=new n(l,i);try{o(s,l,i)}catch(e){throw l.error=e,e}return l.namespaceObject&&l.exports!==l.namespaceObject&&h(l.exports,l.namespaceObject),l}function L(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("undefined"!=typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o<e.length;){let t=e[o],n=o+1;for(;n<e.length&&"function"!=typeof e[n];)n++;if(n===e.length)throw Error("malformed chunk format, expected a factory function");if(!r.has(t)){let l=e[n];for(Object.defineProperty(l,"name",{value:"__TURBOPACK__module__evaluation__"});o<n;o++)t=e[o],r.set(t,l)}o=n+1}}(r,0,_)),e.registerChunk(o,n)}let B=new Map;(()=>{function t(e){let t=B.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},B.set(e,t)}return t}e={async registerChunk(e,r){if(t(A(e)).resolve(),null!=r){for(let e of r.otherChunks)t(A("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(t=>v(0,e,t))),r.runtimeModuleIds.length>0)for(let t of r.runtimeModuleIds)!function(e,t){let r=x[t];if(r){if(r.error)throw r.error;return}N(t,C.Runtime,e)}(e,t)}},loadChunkCached:(e,r)=>(function(e,r){let n=t(r);if(n.loadingStarted)return n.promise;if(e===C.Runtime)return n.loadingStarted=!0,K(r)&&n.resolve(),n.promise;if("function"==typeof importScripts)if(K(r));else if(S.test(r))self.TURBOPACK_NEXT_CHUNK_URLS.push(r),importScripts(TURBOPACK_WORKER_LOCATION+r);else throw Error(`can't infer type of chunk from URL ${r} in worker`);else{let e=decodeURI(r);if(K(r))if(document.querySelectorAll(`link[rel=stylesheet][href="${r}"],link[rel=stylesheet][href^="${r}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)n.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=r,e.onerror=()=>{n.reject()},e.onload=()=>{n.resolve()},document.head.appendChild(e)}else if(S.test(r)){let t=document.querySelectorAll(`script[src="${r}"],script[src^="${r}?"],script[src="${e}"],script[src^="${e}?"]`);if(t.length>0)for(let e of Array.from(t))e.addEventListener("error",()=>{n.reject()});else{let e=document.createElement("script");e.src=r,e.onerror=()=>{n.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${r}`)}return n.loadingStarted=!0,n.promise})(e,r),async loadWebAssembly(e,t,r,n,o){let l=fetch(A(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(A(r));return await WebAssembly.compileStreaming(o)}}})();let q=globalThis.TURBOPACK;globalThis.TURBOPACK={push:L},q.forEach(L)})();
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":103,"timestamp":408975593321,"id":4,"parentId":1,"tags":{},"startTime":1757544746175,"traceId":"3d6ac5d365400783"},{"name":"load-custom-routes","duration":122,"timestamp":408975593459,"id":5,"parentId":1,"tags":{},"startTime":1757544746175,"traceId":"3d6ac5d365400783"},{"name":"create-dist-dir","duration":475,"timestamp":408975616164,"id":6,"parentId":1,"tags":{},"startTime":1757544746198,"traceId":"3d6ac5d365400783"},{"name":"create-pages-mapping","duration":79,"timestamp":408975714440,"id":7,"parentId":1,"tags":{},"startTime":1757544746296,"traceId":"3d6ac5d365400783"},{"name":"collect-app-files","duration":1386,"timestamp":408975714543,"id":8,"parentId":1,"tags":{},"startTime":1757544746296,"traceId":"3d6ac5d365400783"},{"name":"create-app-mapping","duration":770,"timestamp":408975715944,"id":9,"parentId":1,"tags":{},"startTime":1757544746298,"traceId":"3d6ac5d365400783"},{"name":"create-app-layouts","duration":54,"timestamp":408975716728,"id":10,"parentId":1,"tags":{},"startTime":1757544746299,"traceId":"3d6ac5d365400783"},{"name":"collect-default-files","duration":369,"timestamp":408975717358,"id":12,"parentId":1,"tags":{},"startTime":1757544746299,"traceId":"3d6ac5d365400783"},{"name":"generate-route-types","duration":8018,"timestamp":408975716939,"id":11,"parentId":1,"tags":{},"startTime":1757544746299,"traceId":"3d6ac5d365400783"},{"name":"public-dir-conflict-check","duration":44,"timestamp":408975725042,"id":13,"parentId":1,"tags":{},"startTime":1757544746307,"traceId":"3d6ac5d365400783"},{"name":"generate-routes-manifest","duration":809,"timestamp":408975725128,"id":14,"parentId":1,"tags":{},"startTime":1757544746307,"traceId":"3d6ac5d365400783"},{"name":"run-turbopack-compiler","duration":2891831,"timestamp":408975727473,"id":16,"parentId":1,"tags":{},"startTime":1757544746309,"traceId":"3d6ac5d365400783"},{"name":"verify-typescript-setup","duration":1248433,"timestamp":408978625121,"id":18,"parentId":1,"tags":{},"startTime":1757544749207,"traceId":"3d6ac5d365400783"},{"name":"check-static-error-page","duration":3117,"timestamp":408979890181,"id":21,"parentId":20,"tags":{},"startTime":1757544750472,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":138458,"timestamp":408979908633,"id":42,"parentId":23,"tags":{},"startTime":1757544750490,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":139969,"timestamp":408979907180,"id":23,"parentId":20,"tags":{"page":"/_global-error"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":142669,"timestamp":408979908823,"id":44,"parentId":29,"tags":{},"startTime":1757544750491,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":144216,"timestamp":408979907329,"id":29,"parentId":20,"tags":{"page":"/api/logs/stream"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":145670,"timestamp":408979908866,"id":45,"parentId":26,"tags":{},"startTime":1757544750491,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":147326,"timestamp":408979907309,"id":26,"parentId":20,"tags":{"page":"/api/logs/head"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":149589,"timestamp":408979908593,"id":41,"parentId":30,"tags":{},"startTime":1757544750490,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":150883,"timestamp":408979907334,"id":30,"parentId":20,"tags":{"page":"/api/logs/tail"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":152469,"timestamp":408979908471,"id":39,"parentId":25,"tags":{},"startTime":1757544750490,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":153667,"timestamp":408979907299,"id":25,"parentId":20,"tags":{"page":"/api/logs/append"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":154767,"timestamp":408979908393,"id":37,"parentId":24,"tags":{},"startTime":1757544750490,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":155947,"timestamp":408979907232,"id":24,"parentId":20,"tags":{"page":"/api/config"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":156263,"timestamp":408979908439,"id":38,"parentId":28,"tags":{},"startTime":1757544750490,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":157410,"timestamp":408979907323,"id":28,"parentId":20,"tags":{"page":"/api/logs/rotate"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":156484,"timestamp":408979908288,"id":36,"parentId":27,"tags":{},"startTime":1757544750490,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":157631,"timestamp":408979907316,"id":27,"parentId":20,"tags":{"page":"/api/logs/list"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":159728,"timestamp":408979909020,"id":46,"parentId":22,"tags":{},"startTime":1757544750491,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":161963,"timestamp":408979906813,"id":22,"parentId":20,"tags":{"page":"/_not-found"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":166550,"timestamp":408979908728,"id":43,"parentId":32,"tags":{},"startTime":1757544750491,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":167947,"timestamp":408979907354,"id":32,"parentId":20,"tags":{"page":"/api/replay"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":173778,"timestamp":408979909567,"id":47,"parentId":35,"tags":{},"startTime":1757544750491,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":175977,"timestamp":408979907388,"id":35,"parentId":20,"tags":{"page":"/replay"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":174276,"timestamp":408979909755,"id":49,"parentId":33,"tags":{},"startTime":1757544750492,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":176679,"timestamp":408979907361,"id":33,"parentId":20,"tags":{"page":"/logs"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":179628,"timestamp":408979909684,"id":48,"parentId":34,"tags":{},"startTime":1757544750492,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":181945,"timestamp":408979907378,"id":34,"parentId":20,"tags":{"page":"/"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"is-page-static","duration":201223,"timestamp":408979908558,"id":40,"parentId":31,"tags":{},"startTime":1757544750490,"traceId":"3d6ac5d365400783"},{"name":"check-page","duration":202460,"timestamp":408979907345,"id":31,"parentId":20,"tags":{"page":"/api/mcp/[transport]"},"startTime":1757544750489,"traceId":"3d6ac5d365400783"},{"name":"static-check","duration":219930,"timestamp":408979889887,"id":20,"parentId":1,"tags":{},"startTime":1757544750472,"traceId":"3d6ac5d365400783"},{"name":"generate-required-server-files","duration":195,"timestamp":408980109874,"id":51,"parentId":1,"tags":{},"startTime":1757544750692,"traceId":"3d6ac5d365400783"},{"name":"write-routes-manifest","duration":173,"timestamp":408980111435,"id":52,"parentId":1,"tags":{},"startTime":1757544750693,"traceId":"3d6ac5d365400783"},{"name":"load-dotenv","duration":12,"timestamp":408980116048,"id":55,"parentId":54,"tags":{},"startTime":1757544750698,"traceId":"3d6ac5d365400783"},{"name":"run-export-path-map","duration":147,"timestamp":408980116920,"id":56,"parentId":54,"tags":{},"startTime":1757544750699,"traceId":"3d6ac5d365400783"},{"name":"next-export","duration":209374,"timestamp":408980115632,"id":54,"parentId":1,"tags":{},"startTime":1757544750697,"traceId":"3d6ac5d365400783"},{"name":"move-exported-app-not-found-","duration":313,"timestamp":408980325671,"id":57,"parentId":53,"tags":{},"startTime":1757544750908,"traceId":"3d6ac5d365400783"},{"name":"move-exported-app-global-error-","duration":177,"timestamp":408980326007,"id":58,"parentId":53,"tags":{},"startTime":1757544750908,"traceId":"3d6ac5d365400783"},{"name":"static-generation","duration":213827,"timestamp":408980113083,"id":53,"parentId":1,"tags":{},"startTime":1757544750695,"traceId":"3d6ac5d365400783"},{"name":"write-routes-manifest","duration":186,"timestamp":408980326968,"id":59,"parentId":1,"tags":{},"startTime":1757544750909,"traceId":"3d6ac5d365400783"},{"name":"write-standalone-directory","duration":169188,"timestamp":408980334137,"id":60,"parentId":1,"tags":{},"startTime":1757544750916,"traceId":"3d6ac5d365400783"},{"name":"print-tree-view","duration":1631,"timestamp":408980503394,"id":61,"parentId":1,"tags":{},"startTime":1757544751085,"traceId":"3d6ac5d365400783"},{"name":"telemetry-flush","duration":19,"timestamp":408980505034,"id":62,"parentId":1,"tags":{},"startTime":1757544751087,"traceId":"3d6ac5d365400783"},{"name":"next-build","duration":5124623,"timestamp":408975380434,"id":1,"tags":{"buildMode":"default","isTurboBuild":"true","version":"15.5.1-canary.30","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1757544745962,"traceId":"3d6ac5d365400783"}]
1
+ [{"name":"generate-buildid","duration":78,"timestamp":484960054556,"id":4,"parentId":1,"tags":{},"startTime":1757620730548,"traceId":"2cd994a5823670c6"},{"name":"load-custom-routes","duration":103,"timestamp":484960054665,"id":5,"parentId":1,"tags":{},"startTime":1757620730548,"traceId":"2cd994a5823670c6"},{"name":"create-dist-dir","duration":437,"timestamp":484960072609,"id":6,"parentId":1,"tags":{},"startTime":1757620730566,"traceId":"2cd994a5823670c6"},{"name":"create-pages-mapping","duration":88,"timestamp":484960180263,"id":7,"parentId":1,"tags":{},"startTime":1757620730674,"traceId":"2cd994a5823670c6"},{"name":"collect-app-files","duration":6857,"timestamp":484960180373,"id":8,"parentId":1,"tags":{},"startTime":1757620730674,"traceId":"2cd994a5823670c6"},{"name":"create-app-mapping","duration":3303,"timestamp":484960187247,"id":9,"parentId":1,"tags":{},"startTime":1757620730681,"traceId":"2cd994a5823670c6"},{"name":"create-app-layouts","duration":57,"timestamp":484960190564,"id":10,"parentId":1,"tags":{},"startTime":1757620730684,"traceId":"2cd994a5823670c6"},{"name":"collect-default-files","duration":5223,"timestamp":484960194703,"id":12,"parentId":1,"tags":{},"startTime":1757620730688,"traceId":"2cd994a5823670c6"},{"name":"generate-route-types","duration":21110,"timestamp":484960190790,"id":11,"parentId":1,"tags":{},"startTime":1757620730684,"traceId":"2cd994a5823670c6"},{"name":"public-dir-conflict-check","duration":33,"timestamp":484960211984,"id":13,"parentId":1,"tags":{},"startTime":1757620730706,"traceId":"2cd994a5823670c6"},{"name":"generate-routes-manifest","duration":752,"timestamp":484960212060,"id":14,"parentId":1,"tags":{},"startTime":1757620730706,"traceId":"2cd994a5823670c6"},{"name":"run-turbopack-compiler","duration":2685537,"timestamp":484960214601,"id":16,"parentId":1,"tags":{},"startTime":1757620730708,"traceId":"2cd994a5823670c6"},{"name":"verify-typescript-setup","duration":1198607,"timestamp":484962918600,"id":18,"parentId":1,"tags":{},"startTime":1757620733412,"traceId":"2cd994a5823670c6"},{"name":"check-static-error-page","duration":1077,"timestamp":484964125737,"id":21,"parentId":20,"tags":{},"startTime":1757620734619,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":130887,"timestamp":484964149092,"id":46,"parentId":23,"tags":{},"startTime":1757620734643,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":133099,"timestamp":484964147146,"id":23,"parentId":20,"tags":{"page":"/_global-error"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":151395,"timestamp":484964149817,"id":50,"parentId":36,"tags":{},"startTime":1757620734643,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":153918,"timestamp":484964147341,"id":36,"parentId":20,"tags":{"page":"/replay"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":155685,"timestamp":484964149615,"id":49,"parentId":34,"tags":{},"startTime":1757620734643,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":158019,"timestamp":484964147314,"id":34,"parentId":20,"tags":{"page":"/logs"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":156555,"timestamp":484964148828,"id":43,"parentId":30,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":158232,"timestamp":484964147284,"id":30,"parentId":20,"tags":{"page":"/api/logs/stream"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":159030,"timestamp":484964148660,"id":38,"parentId":25,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":160494,"timestamp":484964147251,"id":25,"parentId":20,"tags":{"page":"/api/health"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":159116,"timestamp":484964148699,"id":39,"parentId":26,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":160616,"timestamp":484964147260,"id":26,"parentId":20,"tags":{"page":"/api/logs/append"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":162061,"timestamp":484964150189,"id":51,"parentId":35,"tags":{},"startTime":1757620734644,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":164937,"timestamp":484964147330,"id":35,"parentId":20,"tags":{"page":"/"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":163499,"timestamp":484964148791,"id":42,"parentId":27,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":165031,"timestamp":484964147267,"id":27,"parentId":20,"tags":{"page":"/api/logs/head"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":164829,"timestamp":484964148909,"id":44,"parentId":28,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":166484,"timestamp":484964147273,"id":28,"parentId":20,"tags":{"page":"/api/logs/list"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":166456,"timestamp":484964148728,"id":40,"parentId":29,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":167917,"timestamp":484964147278,"id":29,"parentId":20,"tags":{"page":"/api/logs/rotate"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":168093,"timestamp":484964149258,"id":47,"parentId":33,"tags":{},"startTime":1757620734643,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":170085,"timestamp":484964147308,"id":33,"parentId":20,"tags":{"page":"/api/replay"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":172971,"timestamp":484964148501,"id":37,"parentId":24,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":174303,"timestamp":484964147191,"id":24,"parentId":20,"tags":{"page":"/api/config"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":172170,"timestamp":484964149350,"id":48,"parentId":22,"tags":{},"startTime":1757620734643,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":174750,"timestamp":484964146776,"id":22,"parentId":20,"tags":{"page":"/_not-found"},"startTime":1757620734640,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":173111,"timestamp":484964148763,"id":41,"parentId":31,"tags":{},"startTime":1757620734642,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":174594,"timestamp":484964147293,"id":31,"parentId":20,"tags":{"page":"/api/logs/tail"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"is-page-static","duration":205690,"timestamp":484964148991,"id":45,"parentId":32,"tags":{},"startTime":1757620734643,"traceId":"2cd994a5823670c6"},{"name":"check-page","duration":207406,"timestamp":484964147302,"id":32,"parentId":20,"tags":{"page":"/api/mcp/[transport]"},"startTime":1757620734641,"traceId":"2cd994a5823670c6"},{"name":"static-check","duration":229221,"timestamp":484964125501,"id":20,"parentId":1,"tags":{},"startTime":1757620734619,"traceId":"2cd994a5823670c6"},{"name":"generate-required-server-files","duration":172,"timestamp":484964354919,"id":53,"parentId":1,"tags":{},"startTime":1757620734848,"traceId":"2cd994a5823670c6"},{"name":"write-routes-manifest","duration":206,"timestamp":484964356387,"id":54,"parentId":1,"tags":{},"startTime":1757620734850,"traceId":"2cd994a5823670c6"},{"name":"load-dotenv","duration":10,"timestamp":484964361085,"id":57,"parentId":56,"tags":{},"startTime":1757620734855,"traceId":"2cd994a5823670c6"},{"name":"run-export-path-map","duration":165,"timestamp":484964361945,"id":58,"parentId":56,"tags":{},"startTime":1757620734855,"traceId":"2cd994a5823670c6"},{"name":"next-export","duration":207541,"timestamp":484964360658,"id":56,"parentId":1,"tags":{},"startTime":1757620734854,"traceId":"2cd994a5823670c6"},{"name":"move-exported-app-not-found-","duration":293,"timestamp":484964568801,"id":59,"parentId":55,"tags":{},"startTime":1757620735062,"traceId":"2cd994a5823670c6"},{"name":"move-exported-app-global-error-","duration":204,"timestamp":484964569116,"id":60,"parentId":55,"tags":{},"startTime":1757620735063,"traceId":"2cd994a5823670c6"},{"name":"static-generation","duration":211942,"timestamp":484964358092,"id":55,"parentId":1,"tags":{},"startTime":1757620734852,"traceId":"2cd994a5823670c6"},{"name":"write-routes-manifest","duration":189,"timestamp":484964570084,"id":61,"parentId":1,"tags":{},"startTime":1757620735064,"traceId":"2cd994a5823670c6"},{"name":"write-standalone-directory","duration":156477,"timestamp":484964576140,"id":62,"parentId":1,"tags":{},"startTime":1757620735070,"traceId":"2cd994a5823670c6"},{"name":"print-tree-view","duration":1413,"timestamp":484964732807,"id":63,"parentId":1,"tags":{},"startTime":1757620735226,"traceId":"2cd994a5823670c6"},{"name":"telemetry-flush","duration":20,"timestamp":484964734228,"id":64,"parentId":1,"tags":{},"startTime":1757620735228,"traceId":"2cd994a5823670c6"},{"name":"next-build","duration":4798165,"timestamp":484959936087,"id":1,"tags":{"buildMode":"default","isTurboBuild":"true","version":"15.5.1-canary.30","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1757620730430,"traceId":"2cd994a5823670c6"}]
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/logs" | "/replay"
5
- type AppRouteHandlerRoutes = "/api/config" | "/api/logs/append" | "/api/logs/head" | "/api/logs/list" | "/api/logs/rotate" | "/api/logs/stream" | "/api/logs/tail" | "/api/mcp/[transport]" | "/api/replay"
5
+ type AppRouteHandlerRoutes = "/api/config" | "/api/health" | "/api/logs/append" | "/api/logs/head" | "/api/logs/list" | "/api/logs/rotate" | "/api/logs/stream" | "/api/logs/tail" | "/api/mcp/[transport]" | "/api/replay"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -13,6 +13,7 @@ type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRo
13
13
  interface ParamMap {
14
14
  "/": {}
15
15
  "/api/config": {}
16
+ "/api/health": {}
16
17
  "/api/logs/append": {}
17
18
  "/api/logs/head": {}
18
19
  "/api/logs/list": {}
@@ -83,6 +83,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
83
83
  type __Unused = __Check
84
84
  }
85
85
 
86
+ // Validate ../../app/api/health/route.ts
87
+ {
88
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/health">> = Specific
89
+ const handler = {} as typeof import("../../app/api/health/route.js")
90
+ type __Check = __IsExpected<typeof handler>
91
+ // @ts-ignore
92
+ type __Unused = __Check
93
+ }
94
+
86
95
  // Validate ../../app/api/logs/append/route.ts
87
96
  {
88
97
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/logs/append">> = Specific
@@ -0,0 +1,19 @@
1
+ import { existsSync } from "fs"
2
+ import { NextResponse } from "next/server"
3
+
4
+ export async function GET() {
5
+ const logFilePath = process.env.LOG_FILE_PATH || "./ai-dev-tools/consolidated.log"
6
+
7
+ const health = {
8
+ status: "healthy",
9
+ timestamp: new Date().toISOString(),
10
+ mcpEndpoint: "/api/mcp/mcp",
11
+ logFile: {
12
+ path: logFilePath,
13
+ exists: existsSync(logFilePath)
14
+ },
15
+ version: process.env.DEV3000_VERSION || "unknown"
16
+ }
17
+
18
+ return NextResponse.json(health)
19
+ }
@@ -51,7 +51,7 @@ const handler = createMcpHandler(
51
51
  filter: z.string().optional().describe("Filter logs by text content"),
52
52
  logPath: z.string().optional().describe("Path to log file (default: ./ai-dev-tools/consolidated.log)")
53
53
  },
54
- async ({ lines = 50, filter, logPath = "./ai-dev-tools/consolidated.log" }) => {
54
+ async ({ lines = 50, filter, logPath = process.env.LOG_FILE_PATH || "./ai-dev-tools/consolidated.log" }) => {
55
55
  try {
56
56
  if (!existsSync(logPath)) {
57
57
  return {
@@ -105,7 +105,7 @@ const handler = createMcpHandler(
105
105
  context: z.number().optional().describe("Number of lines of context around matches (default: 2)"),
106
106
  logPath: z.string().optional().describe("Path to log file (default: ./ai-dev-tools/consolidated.log)")
107
107
  },
108
- async ({ pattern, context = 2, logPath = "./ai-dev-tools/consolidated.log" }) => {
108
+ async ({ pattern, context = 2, logPath = process.env.LOG_FILE_PATH || "./ai-dev-tools/consolidated.log" }) => {
109
109
  try {
110
110
  if (!existsSync(logPath)) {
111
111
  return {
@@ -165,7 +165,12 @@ const handler = createMcpHandler(
165
165
  filter: z.string().optional().describe("Filter logs by text content (case insensitive)"),
166
166
  logPath: z.string().optional().describe("Path to log file (default: ./ai-dev-tools/consolidated.log)")
167
167
  },
168
- async ({ startTime, endTime, filter, logPath = "./ai-dev-tools/consolidated.log" }) => {
168
+ async ({
169
+ startTime,
170
+ endTime,
171
+ filter,
172
+ logPath = process.env.LOG_FILE_PATH || "./ai-dev-tools/consolidated.log"
173
+ }) => {
169
174
  try {
170
175
  if (!existsSync(logPath)) {
171
176
  return {
@@ -256,7 +261,7 @@ const handler = createMcpHandler(
256
261
  hours: z.number().optional().describe("Hours to look back (default: 1)"),
257
262
  logPath: z.string().optional().describe("Path to log file (default: ./ai-dev-tools/consolidated.log)")
258
263
  },
259
- async ({ hours = 1, logPath = "./ai-dev-tools/consolidated.log" }) => {
264
+ async ({ hours = 1, logPath = process.env.LOG_FILE_PATH || "./ai-dev-tools/consolidated.log" }) => {
260
265
  try {
261
266
  if (!existsSync(logPath)) {
262
267
  return {
@@ -1,6 +1,36 @@
1
+ "use client"
2
+
3
+ import { useEffect, useState } from "react"
4
+
5
+ interface HealthStatus {
6
+ status: string
7
+ timestamp: string
8
+ mcpEndpoint: string
9
+ logFile: {
10
+ path: string
11
+ exists: boolean
12
+ }
13
+ version: string
14
+ }
15
+
1
16
  export default function HomePage() {
17
+ const [health, setHealth] = useState<HealthStatus | null>(null)
18
+ const [loading, setLoading] = useState(true)
19
+
20
+ useEffect(() => {
21
+ fetch("/api/health")
22
+ .then((res) => res.json())
23
+ .then((data) => {
24
+ setHealth(data)
25
+ setLoading(false)
26
+ })
27
+ .catch(() => {
28
+ setLoading(false)
29
+ })
30
+ }, [])
31
+
2
32
  return (
3
- <div className="min-h-screen bg-gray-50 flex items-center justify-center">
33
+ <div className="min-h-screen bg-gray-50 flex items-center justify-center p-4">
4
34
  <a
5
35
  href="https://github.com/vercel-labs/dev3000"
6
36
  target="_blank"
@@ -12,28 +42,93 @@ export default function HomePage() {
12
42
  <path d="M12 0C5.374 0 0 5.373 0 12 0 17.302 3.438 21.8 8.207 23.387c.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z" />
13
43
  </svg>
14
44
  </a>
15
- <div className="bg-white rounded-lg shadow-lg p-8 max-w-md w-full">
16
- <h1 className="text-3xl font-bold text-gray-900 mb-6 text-center">🎯 dev3000</h1>
17
45
 
18
- <div className="space-y-4">
46
+ <div className="bg-white rounded-lg shadow-lg p-8 max-w-2xl w-full">
47
+ <div className="text-center mb-8">
48
+ <h1 className="text-3xl font-bold text-gray-900 mb-2">🎯 dev3000</h1>
49
+ <p className="text-gray-600">AI-powered development monitoring</p>
50
+ </div>
51
+
52
+ {/* Health Status */}
53
+ <div className="mb-8 p-4 bg-gray-50 rounded-lg">
54
+ <h2 className="text-lg font-semibold mb-3 flex items-center">
55
+ {loading ? "⏳" : health?.status === "healthy" ? "✅" : "❌"}
56
+ <span className="ml-2">Server Status</span>
57
+ </h2>
58
+ {loading ? (
59
+ <p className="text-gray-600">Checking health...</p>
60
+ ) : health ? (
61
+ <div className="space-y-2 text-sm">
62
+ <p>
63
+ <span className="font-medium">Status:</span> {health.status}
64
+ </p>
65
+ <p>
66
+ <span className="font-medium">Version:</span> {health.version}
67
+ </p>
68
+ <p>
69
+ <span className="font-medium">Log File:</span> {health.logFile.exists ? "✅" : "❌"}{" "}
70
+ {health.logFile.path}
71
+ </p>
72
+ </div>
73
+ ) : (
74
+ <p className="text-red-600">Failed to get health status</p>
75
+ )}
76
+ </div>
77
+
78
+ {/* Navigation */}
79
+ <div className="space-y-4 mb-8">
19
80
  <a
20
81
  href="/logs"
21
82
  className="block w-full bg-blue-500 text-white text-center py-3 px-4 rounded hover:bg-blue-600 transition-colors"
22
83
  >
23
84
  📊 View Development Logs
24
85
  </a>
86
+ </div>
25
87
 
26
- <a
27
- href="/api/mcp/mcp"
28
- className="block w-full bg-green-500 text-white text-center py-3 px-4 rounded hover:bg-green-600 transition-colors"
29
- >
30
- 🤖 MCP Endpoint
31
- </a>
88
+ {/* MCP Configuration */}
89
+ <div className="border-t pt-6">
90
+ <h2 className="text-lg font-semibold mb-4 flex items-center">
91
+ 🤖 <span className="ml-2">MCP Integration</span>
92
+ </h2>
93
+
94
+ <div className="bg-blue-50 p-4 rounded-lg mb-4">
95
+ <p className="text-sm text-blue-800 mb-2">
96
+ <span className="font-medium">Endpoint:</span>
97
+ <code className="bg-blue-100 px-2 py-1 rounded text-xs ml-2">
98
+ http://localhost:{typeof window !== "undefined" ? window.location.port : "3684"}/api/mcp/mcp
99
+ </code>
100
+ </p>
101
+ <p className="text-xs text-blue-600">Use HTTP transport (not stdio) when configuring MCP clients</p>
102
+ </div>
103
+
104
+ <div className="space-y-3">
105
+ <h3 className="font-medium text-gray-900">Configure AI Tools:</h3>
106
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
107
+ <a
108
+ href="https://github.com/vercel-labs/dev3000#claude-desktop"
109
+ target="_blank"
110
+ rel="noopener noreferrer"
111
+ className="flex items-center justify-between p-3 border rounded hover:bg-gray-50 transition-colors text-sm"
112
+ >
113
+ <span>Claude Desktop</span>
114
+ <span className="text-gray-400">↗</span>
115
+ </a>
116
+ <a
117
+ href="https://github.com/vercel-labs/dev3000#mcp-clients"
118
+ target="_blank"
119
+ rel="noopener noreferrer"
120
+ className="flex items-center justify-between p-3 border rounded hover:bg-gray-50 transition-colors text-sm"
121
+ >
122
+ <span>Other MCP Clients</span>
123
+ <span className="text-gray-400">↗</span>
124
+ </a>
125
+ </div>
126
+ </div>
32
127
  </div>
33
128
 
34
- <div className="mt-6 text-sm text-gray-600 text-center">
129
+ <div className="mt-8 text-sm text-gray-600 text-center border-t pt-6">
35
130
  <p>Real-time development monitoring with visual context</p>
36
- <p className="mt-2">Server logs + Browser events + Screenshots</p>
131
+ <p className="mt-1">Server logs + Browser events + Screenshots + AI debugging</p>
37
132
  </div>
38
133
  </div>
39
134
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev3000",
3
- "version": "0.0.54",
3
+ "version": "0.0.56",
4
4
  "description": "AI-powered development tools with browser monitoring and MCP server integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,3 +0,0 @@
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"))},70864,a=>{a.n(a.i(33290))},73501,a=>{a.n(a.i(88445))},90463,a=>{a.n(a.i(78975))},53366,a=>{a.n(a.i(26716))},82754,a=>{a.n(a.i(38067))},50708,a=>{"use strict";var b=a.i(36182);function c(){return(0,b.jsxs)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:[(0,b.jsx)("a",{href:"https://github.com/vercel-labs/dev3000",target:"_blank",rel:"noopener noreferrer",className:"fixed top-4 right-4 text-gray-600 hover:text-gray-900 transition-colors",title:"View on GitHub",children:(0,b.jsx)("svg",{className:"w-6 h-6",fill:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{d:"M12 0C5.374 0 0 5.373 0 12 0 17.302 3.438 21.8 8.207 23.387c.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"})})}),(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-lg p-8 max-w-md w-full",children:[(0,b.jsx)("h1",{className:"text-3xl font-bold text-gray-900 mb-6 text-center",children:"🎯 dev3000"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)("a",{href:"/logs",className:"block w-full bg-blue-500 text-white text-center py-3 px-4 rounded hover:bg-blue-600 transition-colors",children:"📊 View Development Logs"}),(0,b.jsx)("a",{href:"/api/mcp/mcp",className:"block w-full bg-green-500 text-white text-center py-3 px-4 rounded hover:bg-green-600 transition-colors",children:"🤖 MCP Endpoint"})]}),(0,b.jsxs)("div",{className:"mt-6 text-sm text-gray-600 text-center",children:[(0,b.jsx)("p",{children:"Real-time development monitoring with visual context"}),(0,b.jsx)("p",{className:"mt-2",children:"Server logs + Browser events + Screenshots"})]})]})]})}a.s(["default",()=>c])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__9865c1be._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["turbopack:///[project]/app/page.tsx"],"sourcesContent":["export default function HomePage() {\n return (\n <div className=\"min-h-screen bg-gray-50 flex items-center justify-center\">\n <a\n href=\"https://github.com/vercel-labs/dev3000\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"fixed top-4 right-4 text-gray-600 hover:text-gray-900 transition-colors\"\n title=\"View on GitHub\"\n >\n <svg className=\"w-6 h-6\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.374 0 0 5.373 0 12 0 17.302 3.438 21.8 8.207 23.387c.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z\" />\n </svg>\n </a>\n <div className=\"bg-white rounded-lg shadow-lg p-8 max-w-md w-full\">\n <h1 className=\"text-3xl font-bold text-gray-900 mb-6 text-center\">🎯 dev3000</h1>\n\n <div className=\"space-y-4\">\n <a\n href=\"/logs\"\n className=\"block w-full bg-blue-500 text-white text-center py-3 px-4 rounded hover:bg-blue-600 transition-colors\"\n >\n 📊 View Development Logs\n </a>\n\n <a\n href=\"/api/mcp/mcp\"\n className=\"block w-full bg-green-500 text-white text-center py-3 px-4 rounded hover:bg-green-600 transition-colors\"\n >\n 🤖 MCP Endpoint\n </a>\n </div>\n\n <div className=\"mt-6 text-sm text-gray-600 text-center\">\n <p>Real-time development monitoring with visual context</p>\n <p className=\"mt-2\">Server logs + Browser events + Screenshots</p>\n </div>\n </div>\n </div>\n )\n}\n"],"names":[],"mappings":"sVAAe,SAAS,IACtB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qEACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACC,KAAK,yCACL,OAAO,SACP,IAAI,sBACJ,UAAU,0EACV,MAAM,0BAEN,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,UAAU,KAAK,eAAe,QAAQ,qBACnD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,EAAE,qsBAGZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8DACb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,6DAAoD,eAElE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACC,KAAK,QACL,UAAU,iHACX,6BAID,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACC,KAAK,eACL,UAAU,mHACX,uBAKH,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mDACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAE,yDACH,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,gBAAO,uDAK9B"}
@@ -1,3 +0,0 @@
1
- module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},12988,(a,b,c)=>{"use strict";b.exports=a.r(18622)},66755,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactJsxRuntime},56541,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].React},90780,a=>{"use strict";var b=a.i(66755),c=a.i(56541);function d(){let[a,d]=(0,c.useState)(null),[e,f]=(0,c.useState)(!1),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(1),[k,l]=(0,c.useState)(!1),[m,n]=(0,c.useState)(0),o=async()=>{f(!0);try{let a=new URLSearchParams({action:"parse"});g&&(a.set("startTime",g.start),a.set("endTime",g.end));let b=await fetch(`/api/replay?${a}`),c=await b.json();b.ok?d(c):console.error("Failed to load replay data:",c.error)}catch(a){console.error("Error loading replay data:",a)}f(!1)};(0,c.useEffect)(()=>{o()},[o]);let p=a?[...a.interactions.map(a=>({...a,eventType:"interaction"})),...a.navigations.map(a=>({...a,eventType:"navigation"}))].sort((a,b)=>new Date(a.timestamp).getTime()-new Date(b.timestamp).getTime()):[],q=a=>new Date(a).toLocaleTimeString(),r=async()=>{if(a){l(!0),n(0);for(let a=0;a<p.length&&k;a++){n(a);let b=p[a],c=p[a+1];if(c){let a=new Date(b.timestamp).getTime(),d=(new Date(c.timestamp).getTime()-a)/i;await new Promise(a=>setTimeout(a,Math.min(d,5e3)))}}l(!1)}};return e?(0,b.jsx)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("div",{className:"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"}),(0,b.jsx)("div",{className:"text-gray-500 text-sm mt-4",children:"Loading replay data..."})]})}):(0,b.jsxs)("div",{className:"min-h-screen bg-gray-50",children:[(0,b.jsx)("div",{className:"bg-white shadow-sm border-b",children:(0,b.jsx)("div",{className:"max-w-7xl mx-auto px-4 py-3",children:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:"Session Replay"}),a&&(0,b.jsxs)("div",{className:"flex items-center gap-4 text-sm text-gray-600",children:[(0,b.jsxs)("span",{children:[a.interactions.length," interactions"]}),(0,b.jsxs)("span",{children:[a.navigations.length," navigations"]}),(0,b.jsxs)("span",{children:[a.screenshots.length," screenshots"]}),(0,b.jsxs)("span",{children:[(a=>{let b=Math.floor(a/1e3),c=Math.floor(b/60);return`${c}m ${b%60}s`})(a.duration)," duration"]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("select",{value:i,onChange:a=>j(Number(a.target.value)),className:"px-3 py-1 border border-gray-300 rounded text-sm",children:[(0,b.jsx)("option",{value:.5,children:"0.5x"}),(0,b.jsx)("option",{value:1,children:"1x"}),(0,b.jsx)("option",{value:2,children:"2x"}),(0,b.jsx)("option",{value:4,children:"4x"}),(0,b.jsx)("option",{value:8,children:"8x"})]}),k?(0,b.jsx)("button",{type:"button",onClick:()=>{l(!1)},className:"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700",children:"⏹ Stop"}):(0,b.jsx)("button",{type:"button",onClick:r,disabled:!a||0===p.length,className:"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed",children:"▶ Play"})]})]})})}),(0,b.jsx)("div",{className:"max-w-7xl mx-auto px-4 py-6",children:a?(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border",children:[(0,b.jsx)("div",{className:"px-4 py-3 border-b",children:(0,b.jsx)("h2",{className:"font-semibold text-gray-900",children:"Event Timeline"})}),(0,b.jsx)("div",{className:"max-h-96 overflow-y-auto",children:p.map((a,c)=>(0,b.jsxs)("div",{className:`px-4 py-2 border-b last:border-b-0 ${c===m?"bg-blue-50 border-blue-200":""}`,children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs font-mono text-gray-500",children:q(a.timestamp)}),(0,b.jsx)("span",{className:`px-2 py-1 rounded text-xs font-medium ${"navigation"===a.eventType?"bg-purple-100 text-purple-800":"CLICK"===a.type?"bg-green-100 text-green-800":"SCROLL"===a.type?"bg-yellow-100 text-yellow-800":"bg-gray-100 text-gray-800"}`,children:"navigation"===a.eventType?"NAV":a.type})]}),k&&c===m&&(0,b.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full animate-pulse"})]}),(0,b.jsx)("div",{className:"mt-1 text-sm text-gray-700",children:"navigation"===a.eventType?(0,b.jsxs)("span",{children:["→ ",a.url]}):"CLICK"===a.type||"TAP"===a.type?(0,b.jsxs)("span",{children:["(",a.x,", ",a.y,") on ",a.target]}):"SCROLL"===a.type?(0,b.jsxs)("span",{children:[a.direction," ",a.distance,"px to (",a.x,", ",a.y,")"]}):"KEY"===a.type?(0,b.jsxs)("span",{children:['"',a.key,'" in ',a.target]}):(0,b.jsx)("span",{children:JSON.stringify(a)})})]},`${a.timestamp}-${c}`))})]}),(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border",children:[(0,b.jsx)("div",{className:"px-4 py-3 border-b",children:(0,b.jsx)("h2",{className:"font-semibold text-gray-900",children:"Screenshots"})}),(0,b.jsx)("div",{className:"max-h-96 overflow-y-auto",children:a.screenshots.map((a,c)=>(0,b.jsxs)("div",{className:"px-4 py-2 border-b last:border-b-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsx)("span",{className:"text-xs font-mono text-gray-500",children:q(a.timestamp)}),(0,b.jsx)("span",{className:"text-xs text-gray-600",children:a.event})]}),(0,b.jsx)("img",{src:a.url,alt:`Screenshot: ${a.event}`,className:"w-full rounded border",style:{maxHeight:"200px",objectFit:"contain"}})]},`${a.timestamp}-${a.event}-${c}`))})]})]}):(0,b.jsxs)("div",{className:"text-center py-12",children:[(0,b.jsx)("div",{className:"text-gray-400 text-lg",children:"No replay data available"}),(0,b.jsx)("div",{className:"text-gray-500 text-sm mt-2",children:"Start using your app to generate interaction data"})]})})]})}a.s(["default",()=>d])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__bdb0de8a._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/module.compiled.js","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","turbopack:///[project]/app/replay/ReplayClient.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 { useEffect, useState } from \"react\"\n\ninterface InteractionEvent {\n timestamp: string\n type: \"CLICK\" | \"TAP\" | \"SCROLL\" | \"KEY\"\n x?: number\n y?: number\n target?: string\n direction?: string\n distance?: number\n key?: string\n}\n\ninterface NavigationEvent {\n timestamp: string\n url: string\n}\n\ninterface ScreenshotEvent {\n timestamp: string\n url: string\n event: string\n}\n\ninterface ReplayData {\n interactions: InteractionEvent[]\n navigations: NavigationEvent[]\n screenshots: ScreenshotEvent[]\n startTime: string\n endTime: string\n duration: number\n}\n\nexport default function ReplayClient() {\n const [replayData, setReplayData] = useState<ReplayData | null>(null)\n const [loading, setLoading] = useState(false)\n const [selectedTimeRange, _setSelectedTimeRange] = useState<{\n start: string\n end: string\n } | null>(null)\n const [playbackSpeed, setPlaybackSpeed] = useState(1)\n const [isPlaying, setIsPlaying] = useState(false)\n const [currentEventIndex, setCurrentEventIndex] = useState(0)\n\n const loadReplayData = async () => {\n setLoading(true)\n try {\n const params = new URLSearchParams({ action: \"parse\" })\n if (selectedTimeRange) {\n params.set(\"startTime\", selectedTimeRange.start)\n params.set(\"endTime\", selectedTimeRange.end)\n }\n\n const response = await fetch(`/api/replay?${params}`)\n const data = await response.json()\n\n if (response.ok) {\n setReplayData(data)\n } else {\n console.error(\"Failed to load replay data:\", data.error)\n }\n } catch (error) {\n console.error(\"Error loading replay data:\", error)\n }\n setLoading(false)\n }\n\n useEffect(() => {\n loadReplayData()\n }, [loadReplayData])\n\n const allEvents = replayData\n ? [\n ...replayData.interactions.map((i) => ({ ...i, eventType: \"interaction\" as const })),\n ...replayData.navigations.map((n) => ({ ...n, eventType: \"navigation\" as const }))\n ].sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime())\n : []\n\n const formatTimestamp = (timestamp: string) => {\n return new Date(timestamp).toLocaleTimeString()\n }\n\n const formatDuration = (ms: number) => {\n const seconds = Math.floor(ms / 1000)\n const minutes = Math.floor(seconds / 60)\n return `${minutes}m ${seconds % 60}s`\n }\n\n const startReplay = async () => {\n if (!replayData) return\n\n setIsPlaying(true)\n setCurrentEventIndex(0)\n\n // This is a simplified preview - in a full implementation,\n // this would actually control a browser session\n for (let i = 0; i < allEvents.length; i++) {\n if (!isPlaying) break\n\n setCurrentEventIndex(i)\n\n const event = allEvents[i]\n const nextEvent = allEvents[i + 1]\n\n if (nextEvent) {\n const currentTime = new Date(event.timestamp).getTime()\n const nextTime = new Date(nextEvent.timestamp).getTime()\n const delay = (nextTime - currentTime) / playbackSpeed\n\n await new Promise((resolve) => setTimeout(resolve, Math.min(delay, 5000))) // Cap at 5s\n }\n }\n\n setIsPlaying(false)\n }\n\n const stopReplay = () => {\n setIsPlaying(false)\n }\n\n if (loading) {\n return (\n <div className=\"min-h-screen bg-gray-50 flex items-center justify-center\">\n <div className=\"text-center\">\n <div className=\"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\"></div>\n <div className=\"text-gray-500 text-sm mt-4\">Loading replay data...</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"min-h-screen bg-gray-50\">\n <div className=\"bg-white shadow-sm border-b\">\n <div className=\"max-w-7xl mx-auto px-4 py-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-2xl font-bold text-gray-900\">Session Replay</h1>\n {replayData && (\n <div className=\"flex items-center gap-4 text-sm text-gray-600\">\n <span>{replayData.interactions.length} interactions</span>\n <span>{replayData.navigations.length} navigations</span>\n <span>{replayData.screenshots.length} screenshots</span>\n <span>{formatDuration(replayData.duration)} duration</span>\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <select\n value={playbackSpeed}\n onChange={(e) => setPlaybackSpeed(Number(e.target.value))}\n className=\"px-3 py-1 border border-gray-300 rounded text-sm\"\n >\n <option value={0.5}>0.5x</option>\n <option value={1}>1x</option>\n <option value={2}>2x</option>\n <option value={4}>4x</option>\n <option value={8}>8x</option>\n </select>\n\n {!isPlaying ? (\n <button\n type=\"button\"\n onClick={startReplay}\n disabled={!replayData || allEvents.length === 0}\n className=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n ▶ Play\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={stopReplay}\n className=\"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700\"\n >\n ⏹ Stop\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"max-w-7xl mx-auto px-4 py-6\">\n {!replayData ? (\n <div className=\"text-center py-12\">\n <div className=\"text-gray-400 text-lg\">No replay data available</div>\n <div className=\"text-gray-500 text-sm mt-2\">Start using your app to generate interaction data</div>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Timeline */}\n <div className=\"bg-white rounded-lg shadow-sm border\">\n <div className=\"px-4 py-3 border-b\">\n <h2 className=\"font-semibold text-gray-900\">Event Timeline</h2>\n </div>\n <div className=\"max-h-96 overflow-y-auto\">\n {allEvents.map((event, index) => (\n <div\n key={`${event.timestamp}-${index}`}\n className={`px-4 py-2 border-b last:border-b-0 ${\n index === currentEventIndex ? \"bg-blue-50 border-blue-200\" : \"\"\n }`}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-mono text-gray-500\">{formatTimestamp(event.timestamp)}</span>\n <span\n className={`px-2 py-1 rounded text-xs font-medium ${\n event.eventType === \"navigation\"\n ? \"bg-purple-100 text-purple-800\"\n : event.type === \"CLICK\"\n ? \"bg-green-100 text-green-800\"\n : event.type === \"SCROLL\"\n ? \"bg-yellow-100 text-yellow-800\"\n : \"bg-gray-100 text-gray-800\"\n }`}\n >\n {event.eventType === \"navigation\" ? \"NAV\" : event.type}\n </span>\n </div>\n {isPlaying && index === currentEventIndex && (\n <div className=\"w-2 h-2 bg-blue-500 rounded-full animate-pulse\"></div>\n )}\n </div>\n <div className=\"mt-1 text-sm text-gray-700\">\n {event.eventType === \"navigation\" ? (\n <span>→ {event.url}</span>\n ) : event.type === \"CLICK\" || event.type === \"TAP\" ? (\n <span>\n ({event.x}, {event.y}) on {event.target}\n </span>\n ) : event.type === \"SCROLL\" ? (\n <span>\n {event.direction} {event.distance}px to ({event.x}, {event.y})\n </span>\n ) : event.type === \"KEY\" ? (\n <span>\n \"{event.key}\" in {event.target}\n </span>\n ) : (\n <span>{JSON.stringify(event)}</span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Screenshots */}\n <div className=\"bg-white rounded-lg shadow-sm border\">\n <div className=\"px-4 py-3 border-b\">\n <h2 className=\"font-semibold text-gray-900\">Screenshots</h2>\n </div>\n <div className=\"max-h-96 overflow-y-auto\">\n {replayData.screenshots.map((screenshot, index) => (\n <div\n key={`${screenshot.timestamp}-${screenshot.event}-${index}`}\n className=\"px-4 py-2 border-b last:border-b-0\"\n >\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"text-xs font-mono text-gray-500\">{formatTimestamp(screenshot.timestamp)}</span>\n <span className=\"text-xs text-gray-600\">{screenshot.event}</span>\n </div>\n <img\n src={screenshot.url}\n alt={`Screenshot: ${screenshot.event}`}\n className=\"w-full rounded border\"\n style={{ maxHeight: \"200px\", objectFit: \"contain\" }}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\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]}