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.
- package/README.md +15 -15
- package/dist/cdp-monitor.d.ts +1 -0
- package/dist/cdp-monitor.d.ts.map +1 -1
- package/dist/cdp-monitor.js +101 -17
- package/dist/cdp-monitor.js.map +1 -1
- package/dist/dev-environment.d.ts +1 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +33 -1
- package/dist/dev-environment.js.map +1 -1
- package/mcp-server/.next/BUILD_ID +1 -1
- package/mcp-server/.next/app-build-manifest.json +28 -27
- package/mcp-server/.next/app-path-routes-manifest.json +1 -0
- package/mcp-server/.next/build/chunks/[root-of-the-server]__51225daf._.js.map +1 -1
- package/mcp-server/.next/build-manifest.json +6 -6
- package/mcp-server/.next/cache/.tsbuildinfo +1 -1
- package/mcp-server/.next/fallback-build-manifest.json +2 -2
- package/mcp-server/.next/prerender-manifest.json +10 -10
- package/mcp-server/.next/server/app/_global-error/page/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/_global-error/page/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/server/app/_global-error.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found/page/app-build-manifest.json +5 -5
- package/mcp-server/.next/server/app/_not-found/page/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/server/app/_not-found.rsc +2 -2
- package/mcp-server/.next/server/app/api/config/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/config/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/health/route/app-build-manifest.json +11 -0
- package/mcp-server/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
- package/mcp-server/.next/server/app/api/health/route/build-manifest.json +17 -0
- package/mcp-server/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
- package/mcp-server/.next/server/app/api/health/route.js +7 -0
- package/mcp-server/.next/server/app/api/health/route.js.map +5 -0
- package/mcp-server/.next/server/app/api/health/route.js.nft.json +1 -0
- package/mcp-server/.next/server/app/api/health/route_client-reference-manifest.js +2 -0
- package/mcp-server/.next/server/app/api/logs/append/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/append/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/head/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/head/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/list/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/list/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/rotate/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/rotate/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/stream/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/stream/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/tail/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/logs/tail/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/mcp/[transport]/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/mcp/[transport]/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/replay/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/server/app/api/replay/route/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/index.html +1 -1
- package/mcp-server/.next/server/app/index.rsc +16 -14
- package/mcp-server/.next/server/app/logs/page/app-build-manifest.json +7 -7
- package/mcp-server/.next/server/app/logs/page/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/server/app/page/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/page.js +1 -1
- package/mcp-server/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/replay/page/app-build-manifest.json +6 -6
- package/mcp-server/.next/server/app/replay/page/build-manifest.json +4 -4
- package/mcp-server/.next/server/app/replay/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/replay/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/replay.html +1 -1
- package/mcp-server/.next/server/app/replay.rsc +3 -3
- package/mcp-server/.next/server/app-paths-manifest.json +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__6f92d0ce._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__6f92d0ce._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__82298dd3._.js +6 -6
- package/mcp-server/.next/server/chunks/[root-of-the-server]__82298dd3._.js.map +1 -1
- package/mcp-server/.next/server/chunks/_next-internal_server_app_api_health_route_actions_da3433c4.js +3 -0
- package/mcp-server/.next/server/chunks/_next-internal_server_app_api_health_route_actions_da3433c4.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__ffe77ef7._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__ffe77ef7._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/{_129f4fec._.js → _7c04f51e._.js} +2 -2
- package/mcp-server/.next/server/chunks/ssr/_7c04f51e._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js.map +1 -0
- package/mcp-server/.next/server/middleware-build-manifest.js +4 -4
- package/mcp-server/.next/server/pages/404.html +1 -1
- package/mcp-server/.next/server/pages/500.html +2 -2
- package/mcp-server/.next/standalone/.next/BUILD_ID +1 -1
- package/mcp-server/.next/standalone/.next/app-build-manifest.json +28 -27
- package/mcp-server/.next/standalone/.next/app-path-routes-manifest.json +1 -0
- package/mcp-server/.next/standalone/.next/build-manifest.json +6 -6
- package/mcp-server/.next/standalone/.next/prerender-manifest.json +10 -10
- package/mcp-server/.next/standalone/.next/server/app/_global-error/page/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_not-found/page/app-build-manifest.json +5 -5
- package/mcp-server/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/mcp-server/.next/standalone/.next/server/app/api/config/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/config/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/health/route/app-build-manifest.json +11 -0
- package/mcp-server/.next/standalone/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
- package/mcp-server/.next/standalone/.next/server/app/api/health/route/build-manifest.json +17 -0
- package/mcp-server/.next/standalone/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
- package/mcp-server/.next/standalone/.next/server/app/api/health/route.js +7 -0
- package/mcp-server/.next/standalone/.next/server/app/api/health/route.js.map +5 -0
- package/mcp-server/.next/standalone/.next/server/app/api/health/route.js.nft.json +1 -0
- package/mcp-server/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +2 -0
- package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/head/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/head/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/rotate/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/rotate/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/stream/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/stream/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/tail/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/logs/tail/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/replay/route/app-build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/api/replay/route/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/index.html +1 -1
- package/mcp-server/.next/standalone/.next/server/app/index.rsc +16 -14
- package/mcp-server/.next/standalone/.next/server/app/logs/page/app-build-manifest.json +7 -7
- package/mcp-server/.next/standalone/.next/server/app/logs/page/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/standalone/.next/server/app/page/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/page.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay/page/app-build-manifest.json +6 -6
- package/mcp-server/.next/standalone/.next/server/app/replay/page/build-manifest.json +4 -4
- package/mcp-server/.next/standalone/.next/server/app/replay/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay.html +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay.rsc +3 -3
- package/mcp-server/.next/standalone/.next/server/app-paths-manifest.json +1 -0
- package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__6f92d0ce._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__82298dd3._.js +6 -6
- package/mcp-server/.next/standalone/.next/server/chunks/_next-internal_server_app_api_health_route_actions_da3433c4.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ffe77ef7._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/{_129f4fec._.js → _7c04f51e._.js} +2 -2
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/middleware-build-manifest.js +4 -4
- package/mcp-server/.next/standalone/.next/server/pages/404.html +1 -1
- package/mcp-server/.next/standalone/.next/server/pages/500.html +2 -2
- package/mcp-server/.next/standalone/app/api/health/route.ts +19 -0
- package/mcp-server/.next/standalone/app/api/mcp/[transport]/route.ts +10 -5
- package/mcp-server/.next/static/chunks/0840a1d3b8d17eda.js +5 -0
- package/mcp-server/.next/static/chunks/416a6ad96e2949dc.js +1 -0
- package/mcp-server/.next/static/chunks/{9259a540b1b78b91.js → 5c0c8ae693afcfee.js} +1 -1
- package/mcp-server/.next/static/chunks/605beb21d5c11807.js +1 -0
- package/mcp-server/.next/static/chunks/830751c84b44689a.js +1 -0
- package/mcp-server/.next/static/chunks/941b6c341513efe6.js +1 -0
- package/mcp-server/.next/static/chunks/accd4b2d97799296.js +5 -0
- package/mcp-server/.next/static/chunks/b2fe525ea0f48ed5.js +1 -0
- package/mcp-server/.next/static/chunks/dc9d08d2b5468dd7.css +2 -0
- package/mcp-server/.next/static/chunks/eeac65e303d3c6ae.js +1 -0
- package/mcp-server/.next/static/chunks/{turbopack-e91574a4b6cd8317.js → turbopack-28043e8ec5b32cbc.js} +1 -1
- package/mcp-server/.next/static/chunks/{turbopack-a2b668960bd831ed.js → turbopack-4c431b48e3258ab3.js} +1 -1
- package/mcp-server/.next/static/chunks/{turbopack-16ca4f26878616fe.js → turbopack-66b02875bc8e5dbd.js} +1 -1
- package/mcp-server/.next/trace +1 -1
- package/mcp-server/.next/types/routes.d.ts +2 -1
- package/mcp-server/.next/types/validator.ts +9 -0
- package/mcp-server/app/api/health/route.ts +19 -0
- package/mcp-server/app/api/mcp/[transport]/route.ts +9 -4
- package/mcp-server/app/page.tsx +107 -12
- package/package.json +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9865c1be._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9865c1be._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__bdb0de8a._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__bdb0de8a._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/_129f4fec._.js.map +0 -1
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9865c1be._.js +0 -3
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__bdb0de8a._.js +0 -3
- package/mcp-server/.next/static/chunks/057f994a312138af.js +0 -1
- package/mcp-server/.next/static/chunks/4539039090e4ce07.js +0 -1
- package/mcp-server/.next/static/chunks/655254b9454d106c.js +0 -1
- package/mcp-server/.next/static/chunks/81c7382ca575441c.js +0 -5
- package/mcp-server/.next/static/chunks/96adbf9dd96ccea5.css +0 -2
- package/mcp-server/.next/static/chunks/b8ec00ccfbc128ba.js +0 -5
- package/mcp-server/.next/static/chunks/c7471d4576fc04a3.js +0 -1
- package/mcp-server/.next/static/chunks/ed85441e904ca043.js +0 -1
- /package/mcp-server/.next/static/{5wPGwyPmH4EFIj9v7Ez1V → N6OEtGstY3aUCE305hVvb}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{5wPGwyPmH4EFIj9v7Ez1V → N6OEtGstY3aUCE305hVvb}/_clientMiddlewareManifest.json +0 -0
- /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/
|
|
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/
|
|
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)})();
|
package/mcp-server/.next/trace
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":
|
|
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 ({
|
|
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 {
|
package/mcp-server/app/page.tsx
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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-
|
|
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-
|
|
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,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]}
|