dev3000 0.0.94 → 0.0.95

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 (28) hide show
  1. package/dist/dev-environment.d.ts.map +1 -1
  2. package/dist/dev-environment.js +14 -10
  3. package/dist/dev-environment.js.map +1 -1
  4. package/mcp-server/.next/BUILD_ID +1 -1
  5. package/mcp-server/.next/build-manifest.json +2 -2
  6. package/mcp-server/.next/fallback-build-manifest.json +2 -2
  7. package/mcp-server/.next/next-server.js.nft.json +1 -1
  8. package/mcp-server/.next/prerender-manifest.json +3 -3
  9. package/mcp-server/.next/server/app/_global-error.html +2 -2
  10. package/mcp-server/.next/server/app/_global-error.rsc +1 -1
  11. package/mcp-server/.next/server/app/_not-found.html +1 -1
  12. package/mcp-server/.next/server/app/_not-found.rsc +1 -1
  13. package/mcp-server/.next/server/app/index.html +1 -1
  14. package/mcp-server/.next/server/app/index.rsc +1 -1
  15. package/mcp-server/.next/server/chunks/[root-of-the-server]__94037b23._.js +1 -1
  16. package/mcp-server/.next/server/chunks/[root-of-the-server]__94037b23._.js.map +1 -1
  17. package/mcp-server/.next/server/chunks/[root-of-the-server]__cc74dbef._.js +1 -1
  18. package/mcp-server/.next/server/chunks/[root-of-the-server]__cc74dbef._.js.map +1 -1
  19. package/mcp-server/.next/server/chunks/[root-of-the-server]__dc0b0022._.js +1 -1
  20. package/mcp-server/.next/server/chunks/[root-of-the-server]__dc0b0022._.js.map +1 -1
  21. package/mcp-server/.next/server/server-reference-manifest.js +1 -1
  22. package/mcp-server/.next/server/server-reference-manifest.json +1 -1
  23. package/mcp-server/app/mcp/client-manager.ts +4 -3
  24. package/mcp-server/app/mcp/route.ts +52 -14
  25. package/package.json +1 -1
  26. /package/mcp-server/.next/static/{ZeZ7S325drnA0SH-odcGY → -TtqAPrTs-tn08AeRdCVu}/_buildManifest.js +0 -0
  27. /package/mcp-server/.next/static/{ZeZ7S325drnA0SH-odcGY → -TtqAPrTs-tn08AeRdCVu}/_clientMiddlewareManifest.json +0 -0
  28. /package/mcp-server/.next/static/{ZeZ7S325drnA0SH-odcGY → -TtqAPrTs-tn08AeRdCVu}/_ssgManifest.js +0 -0
@@ -12,6 +12,6 @@ data: ${JSON.stringify(e)}
12
12
  `;return r&&(s+=`id: ${r}
13
13
  `),s+=`data: ${JSON.stringify(t)}
14
14
 
15
- `,e.write(s)}async handleUnsupportedRequest(e){e.writeHead(405,{Allow:"GET, POST, DELETE"}).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}))}async handlePostRequest(e,t,r){var s,n,i,o,a;try{let a,u,l=e.headers.accept;if(!(null==l?void 0:l.includes("application/json"))||!l.includes("text/event-stream"))return void t.writeHead(406).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Not Acceptable: Client must accept both application/json and text/event-stream"},id:null}));let c=e.headers["content-type"];if(!c||!c.includes("application/json"))return void t.writeHead(415).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Unsupported Media Type: Content-Type must be application/json"},id:null}));let f=e.auth,d={headers:e.headers};if(void 0!==r)a=r;else{let t=eS.default.parse(c),r=await (0,eE.default)(e,{limit:"4mb",encoding:null!=(s=t.parameters.charset)?s:"utf-8"});a=JSON.parse(r.toString())}let m=(u=Array.isArray(a)?a.map(e=>j.JSONRPCMessageSchema.parse(e)):[j.JSONRPCMessageSchema.parse(a)]).some(j.isInitializeRequest);if(m){if(this._initialized&&void 0!==this.sessionId)return void t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request: Server already initialized"},id:null}));if(u.length>1)return void t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request: Only one initialization request is allowed"},id:null}));this.sessionId=null==(n=this.sessionIdGenerator)?void 0:n.call(this),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!m&&(!this.validateSession(e,t)||!this.validateProtocolVersion(e,t)))return;let p=u.some(j.isJSONRPCRequest);if(p){if(p){let e=(0,eg.randomUUID)();if(!this._enableJsonResponse){let e={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};void 0!==this.sessionId&&(e["mcp-session-id"]=this.sessionId),t.writeHead(200,e)}for(let r of u)(0,j.isJSONRPCRequest)(r)&&(this._streamMapping.set(e,t),this._requestToStreamMapping.set(r.id,e));for(let r of(t.on("close",()=>{this._streamMapping.delete(e)}),t.on("error",e=>{var t;null==(t=this.onerror)||t.call(this,e)}),u))null==(o=this.onmessage)||o.call(this,r,{authInfo:f,requestInfo:d})}}else for(let e of(t.writeHead(202).end(),u))null==(i=this.onmessage)||i.call(this,e,{authInfo:f,requestInfo:d})}catch(e){t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32700,message:"Parse error",data:String(e)},id:null})),null==(a=this.onerror)||a.call(this,e)}}async handleDeleteRequest(e,t){var r;this.validateSession(e,t)&&this.validateProtocolVersion(e,t)&&(await Promise.resolve(null==(r=this._onsessionclosed)?void 0:r.call(this,this.sessionId)),await this.close(),t.writeHead(200).end())}validateSession(e,t){if(void 0===this.sessionIdGenerator)return!0;if(!this._initialized)return t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: Server not initialized"},id:null})),!1;let r=e.headers["mcp-session-id"];return r?Array.isArray(r)?(t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: Mcp-Session-Id header must be a single value"},id:null})),!1):r===this.sessionId||(t.writeHead(404).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32001,message:"Session not found"},id:null})),!1):(t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: Mcp-Session-Id header is required"},id:null})),!1)}validateProtocolVersion(e,t){var r;let s=null!=(r=e.headers["mcp-protocol-version"])?r:j.DEFAULT_NEGOTIATED_PROTOCOL_VERSION;return Array.isArray(s)&&(s=s[s.length-1]),!!j.SUPPORTED_PROTOCOL_VERSIONS.includes(s)||(t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:`Bad Request: Unsupported protocol version (supported versions: ${j.SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`},id:null})),!1)}async close(){var e;this._streamMapping.forEach(e=>{e.end()}),this._streamMapping.clear(),this._requestResponseMap.clear(),null==(e=this.onclose)||e.call(this)}async send(e,t){let r=null==t?void 0:t.relatedRequestId;if(((0,j.isJSONRPCResponse)(e)||(0,j.isJSONRPCError)(e))&&(r=e.id),void 0===r){let t;if((0,j.isJSONRPCResponse)(e)||(0,j.isJSONRPCError)(e))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let r=this._streamMapping.get(this._standaloneSseStreamId);if(void 0===r)return;this._eventStore&&(t=await this._eventStore.storeEvent(this._standaloneSseStreamId,e)),this.writeSSEEvent(r,e,t);return}let s=this._requestToStreamMapping.get(r),n=this._streamMapping.get(s);if(!s)throw Error(`No connection established for request ID: ${String(r)}`);if(!this._enableJsonResponse){let t;this._eventStore&&(t=await this._eventStore.storeEvent(s,e)),n&&this.writeSSEEvent(n,e,t)}if((0,j.isJSONRPCResponse)(e)||(0,j.isJSONRPCError)(e)){this._requestResponseMap.set(r,e);let t=Array.from(this._requestToStreamMapping.entries()).filter(([e,t])=>this._streamMapping.get(t)===n).map(([e])=>e);if(t.every(e=>this._requestResponseMap.has(e))){if(!n)throw Error(`No connection established for request ID: ${String(r)}`);if(this._enableJsonResponse){let e={"Content-Type":"application/json"};void 0!==this.sessionId&&(e["mcp-session-id"]=this.sessionId);let r=t.map(e=>this._requestResponseMap.get(e));n.writeHead(200,e),1===r.length?n.end(JSON.stringify(r[0])):n.end(JSON.stringify(r))}else n.end();for(let e of t)this._requestResponseMap.delete(e),this._requestToStreamMapping.delete(e)}}}}var eN=e.i(49719),eO=e.i(10430),eP=e.i(27699);e.i(70960);var eD=class extends eI.ServerResponse{constructor(e,t,r){super(e),this.onEvent=t,this.sessionId=r,this.requestId=crypto.randomUUID(),this.startTime=Date.now()}emitEvent(e){var t;this.onEvent&&this.onEvent((t=Y(C({},e),{sessionId:this.sessionId,requestId:this.requestId}),Y(C({},t),{timestamp:Date.now()})))}startSession(e,t){this.emitEvent({type:"SESSION_STARTED",transport:e,clientInfo:t})}endSession(e){this.emitEvent({type:"SESSION_ENDED",transport:e})}requestReceived(e,t){this.emitEvent({type:"REQUEST_RECEIVED",method:e,parameters:t,status:"success"})}requestCompleted(e,t,r){this.emitEvent({type:"REQUEST_COMPLETED",method:e,result:t,duration:Date.now()-this.startTime,status:r?"error":"success"}),r&&this.error(r,`Error executing request ${e}`,"request")}error(e,t,r="system",s="error"){this.emitEvent({type:"ERROR",error:e,context:t,source:r,severity:s})}end(e,t,r){let s=e,n=t,i=r;return"function"==typeof e?(i=e,s=void 0,n=void 0):"function"==typeof t&&(i=t,n=void 0),super.end(s,n,i)}},eM=new eO.AsyncLocalStorage,eL=new WeakMap,eC=null;function eY(e){return w(this,arguments,function*({redisUrl:e,logger:t}){if(n&&s)return{redis:n,redisPublisher:s};if(!e)throw Error("redisUrl is required");return n=(0,eR.createClient)({url:e}),s=(0,eR.createClient)({url:e}),n.on("error",e=>{t.error("Redis error",e)}),s.on("error",e=>{t.error("Redis error",e)}),yield Promise.all([n.connect(),s.connect()]),{redis:n,redisPublisher:s}})}function ew(e={}){let{method:t="GET",url:r="/",headers:s={},body:n=null,socket:i=new eA.Socket}=e,o=new ev.Readable;if(o._read=()=>{},n){if("string"==typeof n)o.push(n);else if(Buffer.isBuffer(n))o.push(n);else{let e=JSON.stringify(n);o.push(e)}o.push(null)}else o.push(null);let a=new eI.IncomingMessage(i);a.method=t,a.url=r,a.headers=s;let u=e.auth||eM.getStore();return u&&(a.auth=u),a.push=o.push.bind(o),a.read=o.read.bind(o),a.on=o.on.bind(o),a.pipe=o.pipe.bind(o),a}var eF=e.i(20539),ej=e.i(56891);let eX=()=>{try{let{execSync:t}=e.r(74533);try{return t("npx --version",{stdio:"ignore"}),{command:"npx",args:["-y"]}}catch{}try{return t("pnpm --version",{stdio:"ignore"}),{command:"pnpm",args:["dlx"]}}catch{}return console.error("[MCP Orchestrator] Neither npx nor pnpm found - cannot spawn chrome-devtools MCP"),null}catch(e){return console.error("[MCP Orchestrator] Failed to detect package runner:",e),null}},eK=(async()=>{let t=(0,eF.getMCPClientManager)(),r=()=>{let t={},r=(0,v.join)((0,A.homedir)(),".d3k");try{let{readdirSync:s,existsSync:n}=e.r(2157);if(!n(r))return t;for(let e of s(r).filter(e=>e.endsWith(".json")))try{let s=(0,v.join)(r,e),n=JSON.parse((0,R.readFileSync)(s,"utf-8"));if(n.cdpUrl&&!t.chromeDevtools){let e=n.cdpUrl.replace("ws://","http://"),r=eX();r?t.chromeDevtools={command:r.command,args:[...r.args,"chrome-devtools-mcp@latest","--browserUrl",e],enabled:!0}:console.warn("[MCP Orchestrator] Cannot configure chrome-devtools MCP: no package runner available")}if(n.appPort&&!t.nextjsDev&&(t.nextjsDev={url:`http://localhost:${n.appPort}/_next/mcp`,enabled:!0}),t.chromeDevtools&&t.nextjsDev)break}catch{}}catch(e){console.warn("[MCP Orchestrator] Failed to read session files:",e)}return t},s=async(e=1e4,t=250)=>{let s=Date.now(),n=!1,i=r();for(;0===Object.keys(i).length&&Date.now()-s<e;)n||(console.log("[MCP Orchestrator] Waiting for session info before connecting downstream MCPs..."),n=!0),await new Promise(e=>setTimeout(e,t)),i=r();return{config:i,waited:n}};try{let{config:e,waited:n}=await s();Object.keys(e).length>0?(await t.initialize(e),console.log(`[MCP Orchestrator] Initialized with ${Object.keys(e).join(", ")}`)):n?console.log("[MCP Orchestrator] No downstream MCPs detected after waiting for session info (will retry)"):console.log("[MCP Orchestrator] No downstream MCPs found yet (will retry)");let i=0,o=setInterval(async()=>{i++;let e=r(),s=!!e.chromeDevtools,n=!!e.nextjsDev,a=t.isConnected("chrome-devtools"),u=t.isConnected("nextjs-dev"),l=s&&!a,c=n&&!u;if(l||c){let r=[l&&"chrome-devtools",c&&"nextjs-dev"].filter(Boolean);console.log(`[MCP Orchestrator] Retry ${i}: Attempting to connect to ${r.join(", ")}`);try{await t.initialize(e),console.log("[MCP Orchestrator] Successfully connected to downstream MCPs")}catch(e){console.warn(`[MCP Orchestrator] Retry ${i} failed:`,e)}}if(i>=10||a&&u){clearInterval(o);let e=t.getConnectedMCPs();console.log(`[MCP Orchestrator] Stopped retry loop (connected: ${e.join(", ")||"none"})`)}},2e3)}catch(e){console.warn("[MCP Orchestrator] Failed to initialize downstream MCPs:",e)}})().catch(e=>{console.error("[MCP Orchestrator] Failed to initialize downstream MCPs:",e)}),ex=function(e,t,r){let s=function(e,t={},r={redisUrl:process.env.REDIS_URL||process.env.KV_URL,streamableHttpEndpoint:"/mcp",sseEndpoint:"/sse",sseMessageEndpoint:"/message",basePath:"",maxDuration:60,verboseLogs:!1,disableSse:!1}){let s,{redisUrl:n,basePath:i,streamableHttpEndpoint:o,sseEndpoint:a,sseMessageEndpoint:u,maxDuration:l,verboseLogs:c,disableSse:f}=r,{serverInfo:d={name:"mcp-typescript server on vercel",version:"0.1.0"}}=t,m=((e,t)=>{var r={};for(var s in e)D.call(e,s)&&0>t.indexOf(s)&&(r[s]=e[s]);if(null!=e&&P)for(var s of P(e))0>t.indexOf(s)&&M.call(e,s)&&(r[s]=e[s]);return r})(t,["serverInfo"]),{streamableHttpEndpoint:p,sseEndpoint:h,sseMessageEndpoint:_}=function({basePath:e,streamableHttpEndpoint:t="/mcp",sseEndpoint:r="/sse",sseMessageEndpoint:s="/message"}){let{streamableHttpEndpoint:n,sseEndpoint:i,sseMessageEndpoint:o}=null!=e?function(e){let t=e.replace(/\/$/,"");return{streamableHttpEndpoint:`${t}/mcp`,sseEndpoint:`${t}/sse`,sseMessageEndpoint:`${t}/message`}}(e):{streamableHttpEndpoint:t,sseEndpoint:r,sseMessageEndpoint:s};return{streamableHttpEndpoint:n,sseEndpoint:i,sseMessageEndpoint:o}}({basePath:i,streamableHttpEndpoint:o,sseEndpoint:a,sseMessageEndpoint:u}),g=function(e=!1){return{log:(...t)=>{e&&console.log(...t)},error:(...t)=>{e&&console.error(...t)},warn:(...t)=>{e&&console.warn(...t)},info:(...t)=>{e&&console.info(...t)},debug:(...t)=>{e&&console.debug(...t)}}}(c),E=[],S=new eT({sessionIdGenerator:void 0});return eC||(eC=setInterval(()=>{let e=Date.now();E=E.filter(t=>{var r;let s=eL.get(t);if(!s){g.log("Removing orphaned server without metadata");try{(null==t?void 0:t.server)&&t.server.close()}catch(e){g.error("Error closing orphaned server:",e)}return!1}let n=e-s.createdAt.getTime();if(n>3e5){g.log(`Removing stale server (session ${s.sessionId}, age: ${n}ms)`);try{(null==t?void 0:t.server)&&t.server.close(),(null==(r=s.transport)?void 0:r.close)&&s.transport.close()}catch(e){g.error("Error closing stale server:",e)}return eL.delete(t),!1}return!0})},3e4)),function(i,o){return w(this,null,function*(){var a,u,c;let y=new URL(i.url||"","https://example.com");if(y.pathname===p){if("GET"===i.method){g.log("Received GET MCP request"),o.writeHead(405).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}));return}if("DELETE"===i.method){g.log("Received DELETE MCP request"),o.writeHead(405).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}));return}if("POST"===i.method){let t,n=new eD(ew(),r.onEvent);s||(s=new ef(d,m),yield e(s),yield s.connect(S)),t=(i.headers.get("content-type")||"").includes("application/json")?yield i.json():yield i.text();let a=ew({method:i.method,url:i.url,headers:Object.fromEntries(i.headers),body:t,auth:i.auth}),u=new eD(a,r.onEvent);Object.assign(u,o);try{yield S.handleRequest(a,u),"object"==typeof t&&t&&"method"in t&&n.requestCompleted(t.method,t)}catch(e){throw"object"==typeof t&&t&&"method"in t&&n.requestCompleted(t.method,void 0,e instanceof Error?e:String(e)),e}}}else if(y.pathname===h){if(f){o.statusCode=404,o.end("Not found");return}if("GET"!==i.method){g.log(`Rejected SSE connection with method ${i.method}`),o.writeHead(405,{"Content-Type":"text/plain"}).end("Method Not Allowed");return}let s=i.headers.get("accept")||i.headers.get("Accept");if(s&&!s.includes("text/event-stream")&&!s.includes("*/*")&&!s.includes("text/*")){g.log(`Rejected SSE connection with incompatible Accept header: ${s}`),o.writeHead(406,{"Content-Type":"text/plain"}).end("Not Acceptable");return}let{redis:m,redisPublisher:p}=yield eY({redisUrl:n,logger:g});g.log("Got new SSE connection"),(0,eN.default)(_,"sseMessageEndpoint is required");let h=new eb(_,o),S=h.sessionId,y=new eD(ew(),r.onEvent,S);y.startSession("SSE",{userAgent:null!=(a=i.headers.get("user-agent"))?a:void 0,ip:null!=(c=null!=(u=i.headers.get("x-forwarded-for"))?u:i.headers.get("x-real-ip"))?c:void 0});let b=new ef(d,t),I=!1,R=null,A=null,v=null,T=null,N=[],O=e=>w(this,null,function*(){if(!I){if(I=!0,g.log(`Cleaning up SSE connection: ${e}`),A&&(clearTimeout(A),A=null),R&&(clearInterval(R),R=null),v&&(i.signal.removeEventListener("abort",v),v=null),T)try{yield m.unsubscribe(`requests:${S}`,T),g.log(`Unsubscribed from requests:${S}`)}catch(e){g.error("Error unsubscribing from Redis:",e)}try{(null==b?void 0:b.server)&&(yield b.server.close()),(null==h?void 0:h.close)&&(yield h.close())}catch(e){g.error("Error closing server/transport:",e)}E=E.filter(e=>e!==b),eL.delete(b),y.endSession("SSE"),N=[],o.headersSent||(o.statusCode=200,o.end())}});try{let t,s=function(e,...t){N.push({type:e,messages:t})};yield e(b),E.push(b),eL.set(b,{sessionId:S,createdAt:new Date,transport:h}),b.server.onclose=()=>{O("server closed")},T=e=>w(this,null,function*(){g.log("Received message from Redis",e),s("log","Received message from Redis",e);let t=JSON.parse(e),n=ew({method:t.method,url:t.url,headers:t.headers,body:t.body}),i=new eD(n,r.onEvent,S),o=100,a="";i.writeHead=e=>(o=e,i),i.end=e=>(a=e,i);try{if(yield h.handlePostMessage(n,i),"object"==typeof t.body&&t.body&&"method"in t.body)try{let e=JSON.parse(a);y.requestCompleted(t.body.method,e)}catch(e){y.requestCompleted(t.body.method,a)}}catch(e){throw y.error(e instanceof Error?e:String(e),"Error handling SSE message","session"),e}yield p.publish(`responses:${S}:${t.requestId}`,JSON.stringify({status:o,body:a})),o>=200&&o<300?s("log",`Request ${S}:${t.requestId} succeeded: ${a}`):(s("error",`Message for ${S}:${t.requestId} failed with status ${o}: ${a}`),y.error(`Request failed with status ${o}`,a,"session"))}),R=setInterval(()=>{for(let e of N)g[e.type](...e.messages);N=[]},100),yield m.subscribe(`requests:${S}`,T),g.log(`Subscribed to requests:${S}`);let n=new Promise(e=>{t=e,A=setTimeout(()=>{e("max duration reached")},(null!=l?l:60)*1e3)});v=()=>t("client hang up"),i.signal.addEventListener("abort",v),o.on("close",()=>{O("response closed")}),o.on("error",e=>{g.error("Response error:",e),O("response error")}),yield b.connect(h);let a=yield n;g.log(a),yield O(String(a))}catch(e){throw g.error("Error in SSE handler:",e),yield O("error during setup"),e}}else if(y.pathname===_){let e;if(f){o.statusCode=404,o.end("Not found");return}let{redis:t,redisPublisher:r}=yield eY({redisUrl:n,logger:g});g.log("Received message");let s=yield i.text();try{e=JSON.parse(s)}catch(t){e=s}let a=y.searchParams.get("sessionId")||"";if(!a){o.statusCode=400,o.end("No sessionId provided");return}let u=crypto.randomUUID(),l={requestId:u,url:i.url||"",method:i.method||"",body:e,headers:Object.fromEntries(i.headers.entries())},c=null,d=!1,m=!1,p=()=>w(this,null,function*(){if(!m){m=!0,c&&(clearTimeout(c),c=null);try{yield t.unsubscribe(`responses:${a}:${u}`)}catch(e){g.error("Error unsubscribing from Redis response channel:",e)}}}),h=(e,t)=>w(this,null,function*(){d||(d=!0,o.statusCode=e,o.end(t),yield p())}),_=e=>w(this,null,function*(){try{let t=JSON.parse(e);yield h(t.status,t.body)}catch(e){g.error("Failed to parse response message:",e),yield h(500,"Internal server error")}});try{yield t.subscribe(`responses:${a}:${u}`,_),yield r.publish(`requests:${a}`,JSON.stringify(l)),g.log(`Published requests:${a}`,l),c=setTimeout(()=>w(this,null,function*(){yield h(408,"Request timed out")}),1e4),o.on("close",()=>w(this,null,function*(){d||(d=!0,yield p())})),o.on("error",e=>w(this,null,function*(){g.error("Response error in message handler:",e),d||(d=!0,yield p())}))}catch(e){g.error("Error in message handler:",e),yield p(),d||(o.statusCode=500,o.end("Internal server error"))}}else o.statusCode=404,o.end("Not found")})}}(e,t,r);return e=>(function(e,t){let r,s=new Promise(e=>{r=e});return new Promise(n=>{let i,o,a=!1,u=!1,l=200,c=(e,t)=>{if("string"==typeof t)throw Error("Status message of writeHead not supported");return u=!0,r({statusCode:l=e,headers:o=t}),p},f=[],d=(e,t)=>{if(t)throw Error("Encoding not supported");if(e instanceof Buffer)throw Error("Buffer not supported");return(u||c(l,o),i)?i.enqueue(new TextEncoder().encode(e)):f.push(new TextEncoder().encode(e)),!0},m=new eP.EventEmitter,p={writeHead:c,write:d,end:e=>{if(e&&d(e),!i)return a=!0,p;try{i.close()}catch(e){}return p},on:(e,t)=>(m.on(e,t),p),get statusCode(){return l},set statusCode(code){l=code,u&&r({statusCode:l,headers:o})}};e.addEventListener("abort",()=>{m.emit("close")}),t(p),w(this,null,function*(){let e=yield s;n(new Response(new ReadableStream({start(e){for(let t of(i=e,f))i.enqueue(t);a&&i.close()}}),{status:e.statusCode,headers:e.headers}))})})})(e.signal,t=>{s(e,t)})}(async t=>{let r=(0,eF.getMCPClientManager)();await eK,await r.waitForInitialTools();let s=new Map,n=(e,n)=>{let i=`${e}_${n.name}`,o=s.get(i),a=`[${e}] ${n.description||""}`,u={...n.annotations??{},proxiedFrom:e,originalInputSchema:n.inputSchema};if(o)return o.registered.update({description:a,annotations:u}),!1;try{let o=t.tool(i,a,{},async t=>r.callTool(e,n.name,t));return o.inputSchema=eu.z.object({}).passthrough(),o.update({annotations:u}),s.set(i,{mcpName:e,toolName:n.name,registered:o}),console.log(`[MCP Orchestrator] Registered proxied tool ${i}`),!0}catch(e){return console.warn(`[MCP Orchestrator] Failed to register proxied tool ${i}:`,e),!1}},i=r.getAllTools();0===i.length?console.log("[MCP Orchestrator] No downstream MCP tools available during initial registration"):console.log(`[MCP Orchestrator] Registering ${i.length} downstream MCP tools`);let o=0;for(let{mcpName:e,tool:t}of i)n(e,t)&&o++;o>0&&t.sendToolListChanged(),r.onToolsUpdated(({mcpName:e,tools:r})=>{if(0===r.length){(e=>{let t=0;for(let[r,n]of s.entries())if(n.mcpName===e)try{n.registered.remove(),s.delete(r),t++,console.log(`[MCP Orchestrator] Removed proxied tool ${r}`)}catch(e){console.warn(`[MCP Orchestrator] Failed to remove proxied tool ${r}:`,e)}return t})(e)>0&&t.sendToolListChanged();return}let i=0;for(let t of r)n(e,t)&&i++;i>0&&t.sendToolListChanged()}),t.tool("fix_my_app",ej.TOOL_DESCRIPTIONS.fix_my_app,{projectName:eu.z.string().optional().describe("Project name to debug (if multiple dev3000 instances are running)"),focusArea:eu.z.string().optional().describe("Specific area: 'build', 'runtime', 'network', 'ui', 'all' (default: 'all')"),mode:eu.z.enum(["snapshot","bisect","monitor"]).optional().describe("Fix mode: 'snapshot' (fix now), 'bisect' (fix regression), 'monitor' (fix continuously)"),waitForUserInteraction:eu.z.boolean().optional().describe("In bisect mode: capture timestamp, wait for user testing, then analyze (default: false)"),timeRangeMinutes:eu.z.number().optional().describe("Minutes to analyze back from now (default: 10)"),includeTimestampInstructions:eu.z.boolean().optional().describe("Show timestamp-based debugging instructions for manual workflow (default: true)"),integrateNextjs:eu.z.boolean().optional().describe("Auto-detected based on available MCPs - enables Next.js-specific analysis"),integrateChromeDevtools:eu.z.boolean().optional().describe("Auto-detected based on available MCPs - enables Chrome DevTools integration"),returnRawData:eu.z.boolean().optional().describe("Return structured data for Claude orchestration instead of formatted text")},async e=>(0,ej.fixMyApp)(e)),t.tool("fix_my_jank","🎯 **JANK & PERFORMANCE FIXER** - Specialized alias for detecting and fixing layout shifts, CLS issues, and performance problems. Automatically focuses on performance analysis and jank detection from passive screencast captures.\n\n💡 This is an alias for fix_my_app with focusArea='performance', perfect for 'fix my jank' or 'why is my page janky' requests!",{projectName:eu.z.string().optional().describe("Project name to debug (if multiple dev3000 instances are running)"),timeRangeMinutes:eu.z.number().optional().describe("Minutes to analyze back from now (default: 10)")},async e=>(0,ej.fixMyApp)({...e,focusArea:"performance"})),t.tool("execute_browser_action",ej.TOOL_DESCRIPTIONS.execute_browser_action,{action:eu.z.enum(["click","navigate","screenshot","evaluate","scroll","type"]).describe("The browser action to perform"),params:eu.z.record(eu.z.unknown()).optional().describe("Parameters for the action (e.g., {x: 100, y: 200} for click, {url: 'https://...'} for navigate)")},async e=>(0,ej.executeBrowserAction)(e)),t.tool("analyze_visual_diff","🔍 **VISUAL DIFF ANALYZER** - Analyzes two screenshots and provides a verbal description of the visual differences. Perfect for understanding what changed between before/after frames in layout shift detection.\n\n💡 This tool loads both images and describes what elements appeared, moved, or changed that could have caused the layout shift.",{beforeImageUrl:eu.z.string().describe("URL of the 'before' screenshot"),afterImageUrl:eu.z.string().describe("URL of the 'after' screenshot"),context:eu.z.string().optional().describe("Optional context about what to look for (e.g., 'navigation header shift')")},async t=>{let{analyzeVisualDiff:r}=await e.A(2603);return r(t)}),t.tool("find_component_source",ej.TOOL_DESCRIPTIONS.find_component_source,{selector:eu.z.string().describe("CSS selector for the DOM element (e.g., 'nav', '.header', '#main'). Use lowercase for tag names."),projectName:eu.z.string().optional().describe("Project name (if multiple dev3000 instances are running)")},async e=>(0,ej.findComponentSource)(e)),t.tool("restart_dev_server",ej.TOOL_DESCRIPTIONS.restart_dev_server,{projectName:eu.z.string().optional().describe("Project name (if multiple dev3000 instances are running)")},async e=>(0,ej.restartDevServer)(e))},{},{basePath:"/",maxDuration:60,verboseLogs:!0});e.s(["GET",()=>ex,"POST",()=>ex],47164);var eB=e.i(47164);let eU=new i.AppRouteRouteModule({definition:{kind:o.RouteKind.APP_ROUTE,page:"/mcp/route",pathname:"/mcp",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/mcp-server/app/mcp/route.ts",nextConfigOutput:"",userland:eB}),{workAsyncStorage:ek,workUnitAsyncStorage:eG,serverHooks:eH}=eU;function eq(){return(0,a.patchFetch)({workAsyncStorage:ek,workUnitAsyncStorage:eG})}async function eV(e,t,r){var s;let n="/mcp/route";n=n.replace(/\/index$/,"")||"/";let i=await eU.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:a,params:R,nextConfig:A,isDraftMode:v,prerenderManifest:T,routerServerContext:N,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,resolvedPathname:D,clientReferenceManifest:M,serverActionsManifest:L}=i,C=(0,d.normalizeAppPath)(n),Y=!!(T.dynamicRoutes[C]||T.routes[D]);if(Y&&!v){let e=!!T.routes[D],t=T.dynamicRoutes[C];if(t&&!1===t.fallback&&!e)throw new b.NoFallbackError}let w=null;!Y||eU.isDev||v||(w="/index"===(w=D)?"/":w);let F=!0===eU.isDev||!Y,j=Y&&!F;L&&M&&(0,c.setReferenceManifestsSingleton)({page:n,clientReferenceManifest:M,serverActionsManifest:L,serverModuleMap:(0,f.createServerModuleMap)({serverActionsManifest:L})});let X=e.method||"GET",K=(0,l.getTracer)(),x=K.getActiveScopeSpan(),B={params:R,prerenderManifest:T,renderOpts:{experimental:{cacheComponents:!!A.experimental.cacheComponents,authInterrupts:!!A.experimental.authInterrupts},supportsDynamicResponse:F,incrementalCache:(0,u.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:null==(s=A.experimental)?void 0:s.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s)=>eU.onRequestError(e,t,s,N)},sharedContext:{buildId:a}},U=new m.NodeNextRequest(e),k=new m.NodeNextResponse(t),G=p.NextRequestAdapter.fromNodeNextRequest(U,(0,p.signalFromNodeResponse)(t));try{let s=async e=>eU.handle(G,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${X} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t)}else e.updateName(`${X} ${n}`)}),i=async i=>{var a,l;let c=async({previousCacheEntry:o})=>{try{if(!(0,u.getRequestMeta)(e,"minimalMode")&&O&&P&&!o)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(i);e.fetchMetrics=B.renderOpts.fetchMetrics;let a=B.renderOpts.pendingWaitUntil;a&&r.waitUntil&&(r.waitUntil(a),a=void 0);let l=B.renderOpts.collectedTags;if(!Y)return await (0,g.sendResponse)(U,k,n,B.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,E.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==o?void 0:o.isStale)&&await eU.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,_.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:O})},N),t}},f=await eU.handleResponse({req:e,nextConfig:A,cacheKey:w,routeKind:o.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:r.waitUntil});if(!Y)return null;if((null==f||null==(a=f.value)?void 0:a.kind)!==I.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==f||null==(l=f.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,u.getRequestMeta)(e,"minimalMode")||t.setHeader("x-nextjs-cache",O?"REVALIDATED":f.isMiss?"MISS":f.isStale?"STALE":"HIT"),v&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,E.fromNodeOutgoingHttpHeaders)(f.value.headers);return(0,u.getRequestMeta)(e,"minimalMode")&&Y||d.delete(y.NEXT_CACHE_TAGS_HEADER),!f.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,S.getCacheControlHeader)(f.cacheControl)),await (0,g.sendResponse)(U,k,new Response(f.value.body,{headers:d,status:f.value.status||200})),null};x?await i(x):await K.withPropagatedContext(e.headers,()=>K.trace(h.BaseServerSpan.handleRequest,{spanName:`${X} ${n}`,kind:l.SpanKind.SERVER,attributes:{"http.method":X,"http.target":e.url}},i))}catch(t){if(t instanceof b.NoFallbackError||await eU.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,_.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:O})}),Y)throw t;return await (0,g.sendResponse)(U,k,new Response(null,{status:500})),null}}e.s(["handler",()=>eV,"patchFetch",()=>eq,"routeModule",()=>eU,"serverHooks",()=>eH,"workAsyncStorage",()=>ek,"workUnitAsyncStorage",()=>eG],3103)}];
15
+ `,e.write(s)}async handleUnsupportedRequest(e){e.writeHead(405,{Allow:"GET, POST, DELETE"}).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}))}async handlePostRequest(e,t,r){var s,n,i,o,a;try{let a,u,l=e.headers.accept;if(!(null==l?void 0:l.includes("application/json"))||!l.includes("text/event-stream"))return void t.writeHead(406).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Not Acceptable: Client must accept both application/json and text/event-stream"},id:null}));let c=e.headers["content-type"];if(!c||!c.includes("application/json"))return void t.writeHead(415).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Unsupported Media Type: Content-Type must be application/json"},id:null}));let f=e.auth,d={headers:e.headers};if(void 0!==r)a=r;else{let t=eS.default.parse(c),r=await (0,eE.default)(e,{limit:"4mb",encoding:null!=(s=t.parameters.charset)?s:"utf-8"});a=JSON.parse(r.toString())}let m=(u=Array.isArray(a)?a.map(e=>j.JSONRPCMessageSchema.parse(e)):[j.JSONRPCMessageSchema.parse(a)]).some(j.isInitializeRequest);if(m){if(this._initialized&&void 0!==this.sessionId)return void t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request: Server already initialized"},id:null}));if(u.length>1)return void t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request: Only one initialization request is allowed"},id:null}));this.sessionId=null==(n=this.sessionIdGenerator)?void 0:n.call(this),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!m&&(!this.validateSession(e,t)||!this.validateProtocolVersion(e,t)))return;let p=u.some(j.isJSONRPCRequest);if(p){if(p){let e=(0,eg.randomUUID)();if(!this._enableJsonResponse){let e={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};void 0!==this.sessionId&&(e["mcp-session-id"]=this.sessionId),t.writeHead(200,e)}for(let r of u)(0,j.isJSONRPCRequest)(r)&&(this._streamMapping.set(e,t),this._requestToStreamMapping.set(r.id,e));for(let r of(t.on("close",()=>{this._streamMapping.delete(e)}),t.on("error",e=>{var t;null==(t=this.onerror)||t.call(this,e)}),u))null==(o=this.onmessage)||o.call(this,r,{authInfo:f,requestInfo:d})}}else for(let e of(t.writeHead(202).end(),u))null==(i=this.onmessage)||i.call(this,e,{authInfo:f,requestInfo:d})}catch(e){t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32700,message:"Parse error",data:String(e)},id:null})),null==(a=this.onerror)||a.call(this,e)}}async handleDeleteRequest(e,t){var r;this.validateSession(e,t)&&this.validateProtocolVersion(e,t)&&(await Promise.resolve(null==(r=this._onsessionclosed)?void 0:r.call(this,this.sessionId)),await this.close(),t.writeHead(200).end())}validateSession(e,t){if(void 0===this.sessionIdGenerator)return!0;if(!this._initialized)return t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: Server not initialized"},id:null})),!1;let r=e.headers["mcp-session-id"];return r?Array.isArray(r)?(t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: Mcp-Session-Id header must be a single value"},id:null})),!1):r===this.sessionId||(t.writeHead(404).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32001,message:"Session not found"},id:null})),!1):(t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: Mcp-Session-Id header is required"},id:null})),!1)}validateProtocolVersion(e,t){var r;let s=null!=(r=e.headers["mcp-protocol-version"])?r:j.DEFAULT_NEGOTIATED_PROTOCOL_VERSION;return Array.isArray(s)&&(s=s[s.length-1]),!!j.SUPPORTED_PROTOCOL_VERSIONS.includes(s)||(t.writeHead(400).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:`Bad Request: Unsupported protocol version (supported versions: ${j.SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`},id:null})),!1)}async close(){var e;this._streamMapping.forEach(e=>{e.end()}),this._streamMapping.clear(),this._requestResponseMap.clear(),null==(e=this.onclose)||e.call(this)}async send(e,t){let r=null==t?void 0:t.relatedRequestId;if(((0,j.isJSONRPCResponse)(e)||(0,j.isJSONRPCError)(e))&&(r=e.id),void 0===r){let t;if((0,j.isJSONRPCResponse)(e)||(0,j.isJSONRPCError)(e))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let r=this._streamMapping.get(this._standaloneSseStreamId);if(void 0===r)return;this._eventStore&&(t=await this._eventStore.storeEvent(this._standaloneSseStreamId,e)),this.writeSSEEvent(r,e,t);return}let s=this._requestToStreamMapping.get(r),n=this._streamMapping.get(s);if(!s)throw Error(`No connection established for request ID: ${String(r)}`);if(!this._enableJsonResponse){let t;this._eventStore&&(t=await this._eventStore.storeEvent(s,e)),n&&this.writeSSEEvent(n,e,t)}if((0,j.isJSONRPCResponse)(e)||(0,j.isJSONRPCError)(e)){this._requestResponseMap.set(r,e);let t=Array.from(this._requestToStreamMapping.entries()).filter(([e,t])=>this._streamMapping.get(t)===n).map(([e])=>e);if(t.every(e=>this._requestResponseMap.has(e))){if(!n)throw Error(`No connection established for request ID: ${String(r)}`);if(this._enableJsonResponse){let e={"Content-Type":"application/json"};void 0!==this.sessionId&&(e["mcp-session-id"]=this.sessionId);let r=t.map(e=>this._requestResponseMap.get(e));n.writeHead(200,e),1===r.length?n.end(JSON.stringify(r[0])):n.end(JSON.stringify(r))}else n.end();for(let e of t)this._requestResponseMap.delete(e),this._requestToStreamMapping.delete(e)}}}}var eN=e.i(49719),eO=e.i(10430),eP=e.i(27699);e.i(70960);var eD=class extends eI.ServerResponse{constructor(e,t,r){super(e),this.onEvent=t,this.sessionId=r,this.requestId=crypto.randomUUID(),this.startTime=Date.now()}emitEvent(e){var t;this.onEvent&&this.onEvent((t=Y(C({},e),{sessionId:this.sessionId,requestId:this.requestId}),Y(C({},t),{timestamp:Date.now()})))}startSession(e,t){this.emitEvent({type:"SESSION_STARTED",transport:e,clientInfo:t})}endSession(e){this.emitEvent({type:"SESSION_ENDED",transport:e})}requestReceived(e,t){this.emitEvent({type:"REQUEST_RECEIVED",method:e,parameters:t,status:"success"})}requestCompleted(e,t,r){this.emitEvent({type:"REQUEST_COMPLETED",method:e,result:t,duration:Date.now()-this.startTime,status:r?"error":"success"}),r&&this.error(r,`Error executing request ${e}`,"request")}error(e,t,r="system",s="error"){this.emitEvent({type:"ERROR",error:e,context:t,source:r,severity:s})}end(e,t,r){let s=e,n=t,i=r;return"function"==typeof e?(i=e,s=void 0,n=void 0):"function"==typeof t&&(i=t,n=void 0),super.end(s,n,i)}},eM=new eO.AsyncLocalStorage,eL=new WeakMap,eC=null;function eY(e){return w(this,arguments,function*({redisUrl:e,logger:t}){if(n&&s)return{redis:n,redisPublisher:s};if(!e)throw Error("redisUrl is required");return n=(0,eR.createClient)({url:e}),s=(0,eR.createClient)({url:e}),n.on("error",e=>{t.error("Redis error",e)}),s.on("error",e=>{t.error("Redis error",e)}),yield Promise.all([n.connect(),s.connect()]),{redis:n,redisPublisher:s}})}function ew(e={}){let{method:t="GET",url:r="/",headers:s={},body:n=null,socket:i=new eA.Socket}=e,o=new ev.Readable;if(o._read=()=>{},n){if("string"==typeof n)o.push(n);else if(Buffer.isBuffer(n))o.push(n);else{let e=JSON.stringify(n);o.push(e)}o.push(null)}else o.push(null);let a=new eI.IncomingMessage(i);a.method=t,a.url=r,a.headers=s;let u=e.auth||eM.getStore();return u&&(a.auth=u),a.push=o.push.bind(o),a.read=o.read.bind(o),a.on=o.on.bind(o),a.pipe=o.pipe.bind(o),a}var eF=e.i(20539),ej=e.i(56891);let eX=()=>{try{let{execSync:t}=e.r(74533);try{return t("bunx --version",{stdio:"ignore"}),{command:"bunx",args:[]}}catch{}try{return t("npx --version",{stdio:"ignore"}),{command:"npx",args:["-y"]}}catch{}try{return t("pnpm --version",{stdio:"ignore"}),{command:"pnpm",args:["dlx"]}}catch{}return console.error("[MCP Orchestrator] No package runner found (bunx, npx, or pnpm) - cannot spawn MCP servers"),null}catch(e){return console.error("[MCP Orchestrator] Failed to detect package runner:",e),null}},eK=(async()=>{let t=(0,eF.getMCPClientManager)(),r=()=>{let t={},r=(0,v.join)((0,A.homedir)(),".d3k");try{let{readdirSync:s,existsSync:n}=e.r(2157);if(!n(r))return t;for(let e of s(r).filter(e=>e.endsWith(".json")))try{let s=(0,v.join)(r,e),n=JSON.parse((0,R.readFileSync)(s,"utf-8"));if(n.cdpUrl&&!t.chromeDevtools){let e=n.cdpUrl.replace("ws://","http://"),r=eX();r?t.chromeDevtools={command:r.command,args:[...r.args,"chrome-devtools-mcp@latest","--browserUrl",e],enabled:!0}:console.warn("[MCP Orchestrator] Cannot configure chrome-devtools MCP: no package runner available")}if(t.chromeDevtools)break}catch{}}catch(e){console.warn("[MCP Orchestrator] Failed to read session files:",e)}if(!t.nextjsDev){let e=eX();e?t.nextjsDev={command:e.command,args:[...e.args,"next-devtools-mcp@latest"],enabled:!0}:console.warn("[MCP Orchestrator] Cannot configure next-devtools-mcp: no package runner available")}return t},s=async(e=1e4,t=250)=>{let s=Date.now(),n=!1,i=r();for(;0===Object.keys(i).length&&Date.now()-s<e;)n||(console.log("[MCP Orchestrator] Waiting for session info before connecting downstream MCPs..."),n=!0),await new Promise(e=>setTimeout(e,t)),i=r();return{config:i,waited:n}};try{let{config:e,waited:n}=await s();Object.keys(e).length>0?(await t.initialize(e),console.log(`[MCP Orchestrator] Initialized with ${Object.keys(e).join(", ")}`)):n?console.log("[MCP Orchestrator] No downstream MCPs detected after waiting for session info (will retry)"):console.log("[MCP Orchestrator] No downstream MCPs found yet (will retry)");let i=0,o=setInterval(async()=>{i++;let e=r(),s=!!e.chromeDevtools,n=!!e.nextjsDev,a=t.isConnected("chrome-devtools"),u=t.isConnected("nextjs-dev"),l=s&&!a,c=n&&!u;if(l||c){let r=[l&&"chrome-devtools",c&&"nextjs-dev"].filter(Boolean);console.log(`[MCP Orchestrator] Retry ${i}: Attempting to connect to ${r.join(", ")}`);try{await t.initialize(e),console.log("[MCP Orchestrator] Successfully connected to downstream MCPs")}catch(e){console.warn(`[MCP Orchestrator] Retry ${i} failed:`,e)}}if(i>=10||a&&u){clearInterval(o);let e=t.getConnectedMCPs();console.log(`[MCP Orchestrator] Stopped retry loop (connected: ${e.join(", ")||"none"})`)}},2e3)}catch(e){console.warn("[MCP Orchestrator] Failed to initialize downstream MCPs:",e)}})().catch(e=>{console.error("[MCP Orchestrator] Failed to initialize downstream MCPs:",e)});process.on("SIGTERM",async()=>{console.log("[MCP Orchestrator] Received SIGTERM, cleaning up...");try{await (0,eF.getMCPClientManager)().disconnect(),console.log("[MCP Orchestrator] Cleanup complete")}catch(e){console.error("[MCP Orchestrator] Error during cleanup:",e)}process.exit(0)}),process.on("SIGINT",async()=>{console.log("[MCP Orchestrator] Received SIGINT, cleaning up...");try{await (0,eF.getMCPClientManager)().disconnect(),console.log("[MCP Orchestrator] Cleanup complete")}catch(e){console.error("[MCP Orchestrator] Error during cleanup:",e)}process.exit(0)});let ex=function(e,t,r){let s=function(e,t={},r={redisUrl:process.env.REDIS_URL||process.env.KV_URL,streamableHttpEndpoint:"/mcp",sseEndpoint:"/sse",sseMessageEndpoint:"/message",basePath:"",maxDuration:60,verboseLogs:!1,disableSse:!1}){let s,{redisUrl:n,basePath:i,streamableHttpEndpoint:o,sseEndpoint:a,sseMessageEndpoint:u,maxDuration:l,verboseLogs:c,disableSse:f}=r,{serverInfo:d={name:"mcp-typescript server on vercel",version:"0.1.0"}}=t,m=((e,t)=>{var r={};for(var s in e)D.call(e,s)&&0>t.indexOf(s)&&(r[s]=e[s]);if(null!=e&&P)for(var s of P(e))0>t.indexOf(s)&&M.call(e,s)&&(r[s]=e[s]);return r})(t,["serverInfo"]),{streamableHttpEndpoint:p,sseEndpoint:h,sseMessageEndpoint:_}=function({basePath:e,streamableHttpEndpoint:t="/mcp",sseEndpoint:r="/sse",sseMessageEndpoint:s="/message"}){let{streamableHttpEndpoint:n,sseEndpoint:i,sseMessageEndpoint:o}=null!=e?function(e){let t=e.replace(/\/$/,"");return{streamableHttpEndpoint:`${t}/mcp`,sseEndpoint:`${t}/sse`,sseMessageEndpoint:`${t}/message`}}(e):{streamableHttpEndpoint:t,sseEndpoint:r,sseMessageEndpoint:s};return{streamableHttpEndpoint:n,sseEndpoint:i,sseMessageEndpoint:o}}({basePath:i,streamableHttpEndpoint:o,sseEndpoint:a,sseMessageEndpoint:u}),g=function(e=!1){return{log:(...t)=>{e&&console.log(...t)},error:(...t)=>{e&&console.error(...t)},warn:(...t)=>{e&&console.warn(...t)},info:(...t)=>{e&&console.info(...t)},debug:(...t)=>{e&&console.debug(...t)}}}(c),E=[],S=new eT({sessionIdGenerator:void 0});return eC||(eC=setInterval(()=>{let e=Date.now();E=E.filter(t=>{var r;let s=eL.get(t);if(!s){g.log("Removing orphaned server without metadata");try{(null==t?void 0:t.server)&&t.server.close()}catch(e){g.error("Error closing orphaned server:",e)}return!1}let n=e-s.createdAt.getTime();if(n>3e5){g.log(`Removing stale server (session ${s.sessionId}, age: ${n}ms)`);try{(null==t?void 0:t.server)&&t.server.close(),(null==(r=s.transport)?void 0:r.close)&&s.transport.close()}catch(e){g.error("Error closing stale server:",e)}return eL.delete(t),!1}return!0})},3e4)),function(i,o){return w(this,null,function*(){var a,u,c;let y=new URL(i.url||"","https://example.com");if(y.pathname===p){if("GET"===i.method){g.log("Received GET MCP request"),o.writeHead(405).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}));return}if("DELETE"===i.method){g.log("Received DELETE MCP request"),o.writeHead(405).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}));return}if("POST"===i.method){let t,n=new eD(ew(),r.onEvent);s||(s=new ef(d,m),yield e(s),yield s.connect(S)),t=(i.headers.get("content-type")||"").includes("application/json")?yield i.json():yield i.text();let a=ew({method:i.method,url:i.url,headers:Object.fromEntries(i.headers),body:t,auth:i.auth}),u=new eD(a,r.onEvent);Object.assign(u,o);try{yield S.handleRequest(a,u),"object"==typeof t&&t&&"method"in t&&n.requestCompleted(t.method,t)}catch(e){throw"object"==typeof t&&t&&"method"in t&&n.requestCompleted(t.method,void 0,e instanceof Error?e:String(e)),e}}}else if(y.pathname===h){if(f){o.statusCode=404,o.end("Not found");return}if("GET"!==i.method){g.log(`Rejected SSE connection with method ${i.method}`),o.writeHead(405,{"Content-Type":"text/plain"}).end("Method Not Allowed");return}let s=i.headers.get("accept")||i.headers.get("Accept");if(s&&!s.includes("text/event-stream")&&!s.includes("*/*")&&!s.includes("text/*")){g.log(`Rejected SSE connection with incompatible Accept header: ${s}`),o.writeHead(406,{"Content-Type":"text/plain"}).end("Not Acceptable");return}let{redis:m,redisPublisher:p}=yield eY({redisUrl:n,logger:g});g.log("Got new SSE connection"),(0,eN.default)(_,"sseMessageEndpoint is required");let h=new eb(_,o),S=h.sessionId,y=new eD(ew(),r.onEvent,S);y.startSession("SSE",{userAgent:null!=(a=i.headers.get("user-agent"))?a:void 0,ip:null!=(c=null!=(u=i.headers.get("x-forwarded-for"))?u:i.headers.get("x-real-ip"))?c:void 0});let b=new ef(d,t),I=!1,R=null,A=null,v=null,T=null,N=[],O=e=>w(this,null,function*(){if(!I){if(I=!0,g.log(`Cleaning up SSE connection: ${e}`),A&&(clearTimeout(A),A=null),R&&(clearInterval(R),R=null),v&&(i.signal.removeEventListener("abort",v),v=null),T)try{yield m.unsubscribe(`requests:${S}`,T),g.log(`Unsubscribed from requests:${S}`)}catch(e){g.error("Error unsubscribing from Redis:",e)}try{(null==b?void 0:b.server)&&(yield b.server.close()),(null==h?void 0:h.close)&&(yield h.close())}catch(e){g.error("Error closing server/transport:",e)}E=E.filter(e=>e!==b),eL.delete(b),y.endSession("SSE"),N=[],o.headersSent||(o.statusCode=200,o.end())}});try{let t,s=function(e,...t){N.push({type:e,messages:t})};yield e(b),E.push(b),eL.set(b,{sessionId:S,createdAt:new Date,transport:h}),b.server.onclose=()=>{O("server closed")},T=e=>w(this,null,function*(){g.log("Received message from Redis",e),s("log","Received message from Redis",e);let t=JSON.parse(e),n=ew({method:t.method,url:t.url,headers:t.headers,body:t.body}),i=new eD(n,r.onEvent,S),o=100,a="";i.writeHead=e=>(o=e,i),i.end=e=>(a=e,i);try{if(yield h.handlePostMessage(n,i),"object"==typeof t.body&&t.body&&"method"in t.body)try{let e=JSON.parse(a);y.requestCompleted(t.body.method,e)}catch(e){y.requestCompleted(t.body.method,a)}}catch(e){throw y.error(e instanceof Error?e:String(e),"Error handling SSE message","session"),e}yield p.publish(`responses:${S}:${t.requestId}`,JSON.stringify({status:o,body:a})),o>=200&&o<300?s("log",`Request ${S}:${t.requestId} succeeded: ${a}`):(s("error",`Message for ${S}:${t.requestId} failed with status ${o}: ${a}`),y.error(`Request failed with status ${o}`,a,"session"))}),R=setInterval(()=>{for(let e of N)g[e.type](...e.messages);N=[]},100),yield m.subscribe(`requests:${S}`,T),g.log(`Subscribed to requests:${S}`);let n=new Promise(e=>{t=e,A=setTimeout(()=>{e("max duration reached")},(null!=l?l:60)*1e3)});v=()=>t("client hang up"),i.signal.addEventListener("abort",v),o.on("close",()=>{O("response closed")}),o.on("error",e=>{g.error("Response error:",e),O("response error")}),yield b.connect(h);let a=yield n;g.log(a),yield O(String(a))}catch(e){throw g.error("Error in SSE handler:",e),yield O("error during setup"),e}}else if(y.pathname===_){let e;if(f){o.statusCode=404,o.end("Not found");return}let{redis:t,redisPublisher:r}=yield eY({redisUrl:n,logger:g});g.log("Received message");let s=yield i.text();try{e=JSON.parse(s)}catch(t){e=s}let a=y.searchParams.get("sessionId")||"";if(!a){o.statusCode=400,o.end("No sessionId provided");return}let u=crypto.randomUUID(),l={requestId:u,url:i.url||"",method:i.method||"",body:e,headers:Object.fromEntries(i.headers.entries())},c=null,d=!1,m=!1,p=()=>w(this,null,function*(){if(!m){m=!0,c&&(clearTimeout(c),c=null);try{yield t.unsubscribe(`responses:${a}:${u}`)}catch(e){g.error("Error unsubscribing from Redis response channel:",e)}}}),h=(e,t)=>w(this,null,function*(){d||(d=!0,o.statusCode=e,o.end(t),yield p())}),_=e=>w(this,null,function*(){try{let t=JSON.parse(e);yield h(t.status,t.body)}catch(e){g.error("Failed to parse response message:",e),yield h(500,"Internal server error")}});try{yield t.subscribe(`responses:${a}:${u}`,_),yield r.publish(`requests:${a}`,JSON.stringify(l)),g.log(`Published requests:${a}`,l),c=setTimeout(()=>w(this,null,function*(){yield h(408,"Request timed out")}),1e4),o.on("close",()=>w(this,null,function*(){d||(d=!0,yield p())})),o.on("error",e=>w(this,null,function*(){g.error("Response error in message handler:",e),d||(d=!0,yield p())}))}catch(e){g.error("Error in message handler:",e),yield p(),d||(o.statusCode=500,o.end("Internal server error"))}}else o.statusCode=404,o.end("Not found")})}}(e,t,r);return e=>(function(e,t){let r,s=new Promise(e=>{r=e});return new Promise(n=>{let i,o,a=!1,u=!1,l=200,c=(e,t)=>{if("string"==typeof t)throw Error("Status message of writeHead not supported");return u=!0,r({statusCode:l=e,headers:o=t}),p},f=[],d=(e,t)=>{if(t)throw Error("Encoding not supported");if(e instanceof Buffer)throw Error("Buffer not supported");return(u||c(l,o),i)?i.enqueue(new TextEncoder().encode(e)):f.push(new TextEncoder().encode(e)),!0},m=new eP.EventEmitter,p={writeHead:c,write:d,end:e=>{if(e&&d(e),!i)return a=!0,p;try{i.close()}catch(e){}return p},on:(e,t)=>(m.on(e,t),p),get statusCode(){return l},set statusCode(code){l=code,u&&r({statusCode:l,headers:o})}};e.addEventListener("abort",()=>{m.emit("close")}),t(p),w(this,null,function*(){let e=yield s;n(new Response(new ReadableStream({start(e){for(let t of(i=e,f))i.enqueue(t);a&&i.close()}}),{status:e.statusCode,headers:e.headers}))})})})(e.signal,t=>{s(e,t)})}(async t=>{let r=(0,eF.getMCPClientManager)();await eK,await r.waitForInitialTools();let s=new Map,n=(e,n)=>{let i=`${e}_${n.name}`,o=s.get(i),a=`[${e}] ${n.description||""}`,u={...n.annotations??{},proxiedFrom:e,originalInputSchema:n.inputSchema};if(o)return o.registered.update({description:a,annotations:u}),!1;try{let o=t.tool(i,a,{},async t=>r.callTool(e,n.name,t));return o.inputSchema=eu.z.object({}).passthrough(),o.update({annotations:u}),s.set(i,{mcpName:e,toolName:n.name,registered:o}),console.log(`[MCP Orchestrator] Registered proxied tool ${i}`),!0}catch(e){return console.warn(`[MCP Orchestrator] Failed to register proxied tool ${i}:`,e),!1}},i=r.getAllTools();0===i.length?console.log("[MCP Orchestrator] No downstream MCP tools available during initial registration"):console.log(`[MCP Orchestrator] Registering ${i.length} downstream MCP tools`);let o=0;for(let{mcpName:e,tool:t}of i)n(e,t)&&o++;o>0&&t.sendToolListChanged(),r.onToolsUpdated(({mcpName:e,tools:r})=>{if(0===r.length){(e=>{let t=0;for(let[r,n]of s.entries())if(n.mcpName===e)try{n.registered.remove(),s.delete(r),t++,console.log(`[MCP Orchestrator] Removed proxied tool ${r}`)}catch(e){console.warn(`[MCP Orchestrator] Failed to remove proxied tool ${r}:`,e)}return t})(e)>0&&t.sendToolListChanged();return}let i=0;for(let t of r)n(e,t)&&i++;i>0&&t.sendToolListChanged()}),t.tool("fix_my_app",ej.TOOL_DESCRIPTIONS.fix_my_app,{projectName:eu.z.string().optional().describe("Project name to debug (if multiple dev3000 instances are running)"),focusArea:eu.z.string().optional().describe("Specific area: 'build', 'runtime', 'network', 'ui', 'all' (default: 'all')"),mode:eu.z.enum(["snapshot","bisect","monitor"]).optional().describe("Fix mode: 'snapshot' (fix now), 'bisect' (fix regression), 'monitor' (fix continuously)"),waitForUserInteraction:eu.z.boolean().optional().describe("In bisect mode: capture timestamp, wait for user testing, then analyze (default: false)"),timeRangeMinutes:eu.z.number().optional().describe("Minutes to analyze back from now (default: 10)"),includeTimestampInstructions:eu.z.boolean().optional().describe("Show timestamp-based debugging instructions for manual workflow (default: true)"),integrateNextjs:eu.z.boolean().optional().describe("Auto-detected based on available MCPs - enables Next.js-specific analysis"),integrateChromeDevtools:eu.z.boolean().optional().describe("Auto-detected based on available MCPs - enables Chrome DevTools integration"),returnRawData:eu.z.boolean().optional().describe("Return structured data for Claude orchestration instead of formatted text")},async e=>(0,ej.fixMyApp)(e)),t.tool("fix_my_jank","🎯 **JANK & PERFORMANCE FIXER** - Specialized alias for detecting and fixing layout shifts, CLS issues, and performance problems. Automatically focuses on performance analysis and jank detection from passive screencast captures.\n\n💡 This is an alias for fix_my_app with focusArea='performance', perfect for 'fix my jank' or 'why is my page janky' requests!",{projectName:eu.z.string().optional().describe("Project name to debug (if multiple dev3000 instances are running)"),timeRangeMinutes:eu.z.number().optional().describe("Minutes to analyze back from now (default: 10)")},async e=>(0,ej.fixMyApp)({...e,focusArea:"performance"})),t.tool("execute_browser_action",ej.TOOL_DESCRIPTIONS.execute_browser_action,{action:eu.z.enum(["click","navigate","screenshot","evaluate","scroll","type"]).describe("The browser action to perform"),params:eu.z.record(eu.z.unknown()).optional().describe("Parameters for the action (e.g., {x: 100, y: 200} for click, {url: 'https://...'} for navigate)")},async e=>(0,ej.executeBrowserAction)(e)),t.tool("analyze_visual_diff","🔍 **VISUAL DIFF ANALYZER** - Analyzes two screenshots and provides a verbal description of the visual differences. Perfect for understanding what changed between before/after frames in layout shift detection.\n\n💡 This tool loads both images and describes what elements appeared, moved, or changed that could have caused the layout shift.",{beforeImageUrl:eu.z.string().describe("URL of the 'before' screenshot"),afterImageUrl:eu.z.string().describe("URL of the 'after' screenshot"),context:eu.z.string().optional().describe("Optional context about what to look for (e.g., 'navigation header shift')")},async t=>{let{analyzeVisualDiff:r}=await e.A(2603);return r(t)}),t.tool("find_component_source",ej.TOOL_DESCRIPTIONS.find_component_source,{selector:eu.z.string().describe("CSS selector for the DOM element (e.g., 'nav', '.header', '#main'). Use lowercase for tag names."),projectName:eu.z.string().optional().describe("Project name (if multiple dev3000 instances are running)")},async e=>(0,ej.findComponentSource)(e)),t.tool("restart_dev_server",ej.TOOL_DESCRIPTIONS.restart_dev_server,{projectName:eu.z.string().optional().describe("Project name (if multiple dev3000 instances are running)")},async e=>(0,ej.restartDevServer)(e))},{},{basePath:"/",maxDuration:60,verboseLogs:!0});e.s(["GET",()=>ex,"POST",()=>ex],47164);var eB=e.i(47164);let eU=new i.AppRouteRouteModule({definition:{kind:o.RouteKind.APP_ROUTE,page:"/mcp/route",pathname:"/mcp",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/mcp-server/app/mcp/route.ts",nextConfigOutput:"",userland:eB}),{workAsyncStorage:ek,workUnitAsyncStorage:eG,serverHooks:eH}=eU;function eq(){return(0,a.patchFetch)({workAsyncStorage:ek,workUnitAsyncStorage:eG})}async function eV(e,t,r){var s;let n="/mcp/route";n=n.replace(/\/index$/,"")||"/";let i=await eU.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:a,params:R,nextConfig:A,isDraftMode:v,prerenderManifest:T,routerServerContext:N,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,resolvedPathname:D,clientReferenceManifest:M,serverActionsManifest:L}=i,C=(0,d.normalizeAppPath)(n),Y=!!(T.dynamicRoutes[C]||T.routes[D]);if(Y&&!v){let e=!!T.routes[D],t=T.dynamicRoutes[C];if(t&&!1===t.fallback&&!e)throw new b.NoFallbackError}let w=null;!Y||eU.isDev||v||(w="/index"===(w=D)?"/":w);let F=!0===eU.isDev||!Y,j=Y&&!F;L&&M&&(0,c.setReferenceManifestsSingleton)({page:n,clientReferenceManifest:M,serverActionsManifest:L,serverModuleMap:(0,f.createServerModuleMap)({serverActionsManifest:L})});let X=e.method||"GET",K=(0,l.getTracer)(),x=K.getActiveScopeSpan(),B={params:R,prerenderManifest:T,renderOpts:{experimental:{cacheComponents:!!A.experimental.cacheComponents,authInterrupts:!!A.experimental.authInterrupts},supportsDynamicResponse:F,incrementalCache:(0,u.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:null==(s=A.experimental)?void 0:s.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s)=>eU.onRequestError(e,t,s,N)},sharedContext:{buildId:a}},U=new m.NodeNextRequest(e),k=new m.NodeNextResponse(t),G=p.NextRequestAdapter.fromNodeNextRequest(U,(0,p.signalFromNodeResponse)(t));try{let s=async e=>eU.handle(G,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${X} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t)}else e.updateName(`${X} ${n}`)}),i=async i=>{var a,l;let c=async({previousCacheEntry:o})=>{try{if(!(0,u.getRequestMeta)(e,"minimalMode")&&O&&P&&!o)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(i);e.fetchMetrics=B.renderOpts.fetchMetrics;let a=B.renderOpts.pendingWaitUntil;a&&r.waitUntil&&(r.waitUntil(a),a=void 0);let l=B.renderOpts.collectedTags;if(!Y)return await (0,g.sendResponse)(U,k,n,B.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,E.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==o?void 0:o.isStale)&&await eU.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,_.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:O})},N),t}},f=await eU.handleResponse({req:e,nextConfig:A,cacheKey:w,routeKind:o.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,responseGenerator:c,waitUntil:r.waitUntil});if(!Y)return null;if((null==f||null==(a=f.value)?void 0:a.kind)!==I.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==f||null==(l=f.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,u.getRequestMeta)(e,"minimalMode")||t.setHeader("x-nextjs-cache",O?"REVALIDATED":f.isMiss?"MISS":f.isStale?"STALE":"HIT"),v&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,E.fromNodeOutgoingHttpHeaders)(f.value.headers);return(0,u.getRequestMeta)(e,"minimalMode")&&Y||d.delete(y.NEXT_CACHE_TAGS_HEADER),!f.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,S.getCacheControlHeader)(f.cacheControl)),await (0,g.sendResponse)(U,k,new Response(f.value.body,{headers:d,status:f.value.status||200})),null};x?await i(x):await K.withPropagatedContext(e.headers,()=>K.trace(h.BaseServerSpan.handleRequest,{spanName:`${X} ${n}`,kind:l.SpanKind.SERVER,attributes:{"http.method":X,"http.target":e.url}},i))}catch(t){if(t instanceof b.NoFallbackError||await eU.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,_.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:O})}),Y)throw t;return await (0,g.sendResponse)(U,k,new Response(null,{status:500})),null}}e.s(["handler",()=>eV,"patchFetch",()=>eq,"routeModule",()=>eU,"serverHooks",()=>eH,"workAsyncStorage",()=>ek,"workUnitAsyncStorage",()=>eG],3103)}];
16
16
 
17
17
  //# sourceMappingURL=%5Broot-of-the-server%5D__dc0b0022._.js.map