antigravity-mobile-proxy 0.1.6 → 0.1.7

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 (113) hide show
  1. package/.next/standalone/.next/app-path-routes-manifest.json +2 -0
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/routes-manifest.json +12 -0
  5. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
  6. package/.next/standalone/.next/server/app/_global-error/page.js +2 -2
  7. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  9. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
  10. package/.next/standalone/.next/server/app/_not-found/page.js +5 -6
  11. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/v1/artifacts/active/route.js +5 -1
  14. package/.next/standalone/.next/server/app/api/v1/artifacts/active/route.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/api/v1/changes/active/route/app-paths-manifest.json +3 -0
  16. package/.next/standalone/.next/server/app/api/v1/changes/active/route/build-manifest.json +11 -0
  17. package/.next/standalone/.next/server/app/api/v1/changes/active/route/server-reference-manifest.json +4 -0
  18. package/.next/standalone/.next/server/app/api/v1/changes/active/route.js +11 -0
  19. package/.next/standalone/.next/server/app/api/v1/changes/active/route.js.map +5 -0
  20. package/.next/standalone/.next/server/app/api/v1/changes/active/route.js.nft.json +1 -0
  21. package/.next/standalone/.next/server/app/api/v1/changes/active/route_client-reference-manifest.js +2 -0
  22. package/.next/standalone/.next/server/app/api/v1/changes/diff/route/app-paths-manifest.json +3 -0
  23. package/.next/standalone/.next/server/app/api/v1/changes/diff/route/build-manifest.json +11 -0
  24. package/.next/standalone/.next/server/app/api/v1/changes/diff/route/server-reference-manifest.json +4 -0
  25. package/.next/standalone/.next/server/app/api/v1/changes/diff/route.js +7 -0
  26. package/.next/standalone/.next/server/app/api/v1/changes/diff/route.js.map +5 -0
  27. package/.next/standalone/.next/server/app/api/v1/changes/diff/route.js.nft.json +1 -0
  28. package/.next/standalone/.next/server/app/api/v1/changes/diff/route_client-reference-manifest.js +2 -0
  29. package/.next/standalone/.next/server/app/api/v1/chat/stream/route.js +1 -1
  30. package/.next/standalone/.next/server/app/api/v1/chat/stream/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/v1/windows/cdp-start/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/v1/windows/cdp-status/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/v1/windows/close/route.js +1 -1
  34. package/.next/standalone/.next/server/app/api/v1/windows/close/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/v1/windows/open/route.js +2 -2
  36. package/.next/standalone/.next/server/app/api/v1/windows/open/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/debug/page/build-manifest.json +3 -3
  38. package/.next/standalone/.next/server/app/debug/page.js +5 -5
  39. package/.next/standalone/.next/server/app/debug/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/debug/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
  42. package/.next/standalone/.next/server/app/page.js +5 -5
  43. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app-paths-manifest.json +2 -0
  46. package/.next/standalone/.next/server/chunks/[root-of-the-server]__26662154._.js +1 -1
  47. package/.next/standalone/.next/server/chunks/[root-of-the-server]__53c4f34d._.js +1 -1
  48. package/.next/standalone/.next/server/chunks/[root-of-the-server]__851f6b5a._.js +3 -0
  49. package/.next/standalone/.next/server/chunks/[root-of-the-server]__94275f7f._.js +1 -1
  50. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9a1969e6._.js +3 -0
  51. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c34d50c8._.js +1 -1
  52. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c696771d._.js +1 -1
  53. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d13bbe3c._.js +3 -0
  54. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d172e6aa._.js +3 -0
  55. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_v1_changes_active_route_actions_1bb9fc18.js +3 -0
  56. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_v1_changes_diff_route_actions_65d9ee16.js +3 -0
  57. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d080cb3d._.js → [root-of-the-server]__012405ac._.js} +2 -2
  58. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a457c799._.js +3 -0
  59. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__f62d412e._.js → [root-of-the-server]__b9356576._.js} +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__52af585c._.js → [root-of-the-server]__ce78239f._.js} +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ae6d24d9._.js → [root-of-the-server]__f47dc36d._.js} +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/{_524b2348._.js → _657ecbe9._.js} +3 -3
  63. package/.next/standalone/.next/server/chunks/ssr/{_fe4475aa._.js → _939145a4._.js} +3 -3
  64. package/.next/standalone/.next/server/chunks/ssr/app_layout_tsx_271801d7._.js +1 -1
  65. package/.next/standalone/.next/server/chunks/ssr/app_not-found_tsx_ef35050a._.js +1 -1
  66. package/.next/standalone/.next/server/chunks/ssr/components_chat-container_tsx_fcbc457f._.js +1 -1
  67. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js +3 -0
  68. package/.next/standalone/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_39f173ba.js → node_modules_next_dist_esm_build_templates_app-page_7f45f9bf.js} +3 -3
  69. package/.next/standalone/.next/server/chunks/ssr/{node_modules_next_dist_f183c70b._.js → node_modules_next_dist_f21d913a._.js} +2 -2
  70. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  71. package/.next/standalone/.next/server/pages/500.html +2 -2
  72. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  74. package/.next/standalone/app/api/v1/artifacts/active/[filename]/route.ts +73 -23
  75. package/.next/standalone/app/api/v1/artifacts/active/route.ts +103 -52
  76. package/.next/standalone/app/api/v1/changes/active/route.ts +27 -0
  77. package/.next/standalone/app/api/v1/changes/diff/route.ts +119 -0
  78. package/.next/standalone/app/globals.css +424 -0
  79. package/.next/standalone/app/layout.tsx +3 -3
  80. package/.next/standalone/app/not-found.tsx +14 -23
  81. package/.next/standalone/components/artifact-panel.tsx +57 -13
  82. package/.next/standalone/components/changes-panel.tsx +178 -0
  83. package/.next/standalone/components/chat-container.tsx +44 -3
  84. package/.next/standalone/components/chat-input.tsx +44 -0
  85. package/.next/standalone/components/header.tsx +1 -13
  86. package/.next/standalone/hooks/use-changes.ts +61 -0
  87. package/.next/standalone/hooks/use-chat.ts +21 -3
  88. package/.next/standalone/hooks/use-conversations.ts +19 -11
  89. package/.next/standalone/lib/scraper/agent-state.ts +89 -54
  90. package/.next/standalone/lib/scraper/chat-history.ts +215 -85
  91. package/.next/standalone/lib/scraper/ide-artifacts.ts +212 -0
  92. package/.next/standalone/lib/scraper/ide-changes.ts +172 -0
  93. package/.next/standalone/lib/types.ts +11 -0
  94. package/.next/standalone/package-lock.json +2 -2
  95. package/.next/standalone/package.json +2 -2
  96. package/.next/standalone/scripts/check-send-button.js +126 -0
  97. package/.next/standalone/scripts/find-send-btn.js +65 -0
  98. package/.next/standalone/tsconfig.tsbuildinfo +1 -1
  99. package/.next/static/chunks/09dc2aa5c698c324.css +1 -0
  100. package/.next/static/chunks/{f7c83373e6561461.js → b9a0fabf54a78ef2.js} +1 -1
  101. package/.next/static/chunks/e2ccf5908cad5a88.js +5 -0
  102. package/.next/static/chunks/f7cc8fe5822bbc01.js +1 -0
  103. package/.next/static/chunks/{turbopack-3f34081d758747ed.js → turbopack-7b5dc393c5d3964b.js} +1 -1
  104. package/package.json +2 -2
  105. package/.next/standalone/.next/server/chunks/[root-of-the-server]__151eca3a._.js +0 -3
  106. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ec32b318._.js +0 -3
  107. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__f77eb371._.js +0 -3
  108. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_9170b7a0._.js +0 -3
  109. package/.next/standalone/app/global-error.tsx +0 -42
  110. package/.next/static/chunks/2317ab948a7d90a4.js +0 -5
  111. package/.next/static/chunks/2d277a81099566c3.js +0 -1
  112. package/.next/static/chunks/ad1121f40e497811.css +0 -1
  113. package/.next/static/chunks/d5d4abede4bc89fd.js +0 -1
@@ -1,3 +1,3 @@
1
- module.exports=[66188,a=>{"use strict";var b=a.i(7997);function c(){return(0,b.jsx)("html",{lang:"en",children:(0,b.jsxs)("body",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",backgroundColor:"#0a0a0f",color:"#888",fontFamily:"system-ui, sans-serif",margin:0},children:[(0,b.jsx)("h1",{style:{fontSize:"3rem",margin:0,color:"#fff"},children:"404"}),(0,b.jsx)("p",{style:{fontSize:"1.1rem",marginTop:"0.5rem"},children:"Page not found"})]})})}a.s(["default",()=>c,"metadata",0,{title:"404 - Page Not Found",description:"The page you are looking for does not exist."}])}];
1
+ module.exports=[66188,a=>{"use strict";var b=a.i(7997);function c(){return(0,b.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",backgroundColor:"#0a0a0f",color:"#888",fontFamily:"system-ui, sans-serif",margin:0},children:[(0,b.jsx)("h1",{style:{fontSize:"3rem",margin:0,color:"#fff"},children:"404"}),(0,b.jsx)("p",{style:{fontSize:"1.1rem",marginTop:"0.5rem"},children:"Page not found"})]})}a.s(["default",()=>c])}];
2
2
 
3
3
  //# sourceMappingURL=app_not-found_tsx_ef35050a._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[72079,a=>{"use strict";var b=a.i(87924),c=a.i(72131);let d="/api/v1",e="/api/v1";function f({statusState:a,statusText:d,windows:e,conversations:f,activeConversation:g,cdpStatus:h,recentProjects:i,onSelectWindow:j,onSelectConversation:k,onNewChat:l,onToggleArtifacts:m,onStartCdp:n,onOpenWindow:o,onCloseWindow:p}){let[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)(!1),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(null),A=(0,c.useRef)(null),B=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{A.current&&!A.current.contains(a.target)&&r(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]),(0,c.useEffect)(()=>{if(y){let a=setTimeout(()=>z(null),4e3);return()=>clearTimeout(a)}},[y]);let C=async()=>{let a=i.length>0?i[0].path:".";x(!0),z(null);try{let b=await n(a,!0);z({text:b.message||(b.success?"CDP started!":"Failed to start CDP"),type:b.success?"success":"error"})}catch{z({text:"Failed to start CDP server",type:"error"})}finally{x(!1)}},D=async a=>{a.preventDefault();let b=s.trim();if(b&&!u){v(!0),z(null);try{let a=await o(b);z({text:a.message||(a.success?"Window opened!":"Failed to open"),type:a.success?"success":"error"}),a.success&&t("")}catch{z({text:"Failed to open window",type:"error"})}finally{v(!1)}}},E=async(a,b)=>{if(b.stopPropagation(),!window.confirm(`Close window "${e[a]?.title||a}"?`))return;let c=await p(a);z({text:c.message||(c.success?"Closed!":"Failed to close"),type:c.success?"success":"error"})};return(0,b.jsxs)("header",{className:"header",children:[(0,b.jsx)("div",{className:"header-left",children:(0,b.jsx)("div",{className:"logo",children:(0,b.jsxs)("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"url(#header-gradient)",strokeWidth:"1.5",children:[(0,b.jsx)("defs",{children:(0,b.jsxs)("linearGradient",{id:"header-gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[(0,b.jsx)("stop",{offset:"0%",style:{stopColor:"#6366f1"}}),(0,b.jsx)("stop",{offset:"100%",style:{stopColor:"#a855f7"}})]})}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"}),(0,b.jsx)("line",{x1:"2",y1:"12",x2:"22",y2:"12"})]})})}),(0,b.jsxs)("div",{className:"header-right",children:[(0,b.jsxs)("div",{ref:A,className:`window-selector-wrapper ${q?"open":""}`,children:[(0,b.jsxs)("button",{className:"window-selector-btn",onClick:()=>r(!q),title:"Manage Antigravity windows",children:[(0,b.jsx)("span",{className:`cdp-indicator ${h.active?"active":"inactive"}`}),(0,b.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"}),(0,b.jsx)("line",{x1:"8",y1:"21",x2:"16",y2:"21"}),(0,b.jsx)("line",{x1:"12",y1:"17",x2:"12",y2:"21"})]}),(0,b.jsx)("span",{style:{maxWidth:"120px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",display:"inline-block",verticalAlign:"bottom"},children:e.find(a=>a.active)?.title||"Windows"}),(0,b.jsx)("svg",{className:"chevron",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,b.jsxs)("div",{className:`window-dropdown ${q?"open":""}`,children:[(0,b.jsxs)("div",{className:"wm-cdp-status",children:[(0,b.jsxs)("div",{className:"wm-cdp-info",children:[(0,b.jsx)("span",{className:`wm-cdp-dot ${h.active?"active":"inactive"}`}),(0,b.jsx)("span",{children:h.active?`CDP Active \xb7 ${h.windowCount} window${1!==h.windowCount?"s":""}`:"CDP Inactive"})]}),!h.active&&(0,b.jsxs)("button",{className:"wm-cdp-start-btn",onClick:C,disabled:w,title:"Start Antigravity with CDP",children:[w?(0,b.jsx)("span",{className:"wm-spinner"}):(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polygon",{points:"5 3 19 12 5 21 5 3"})}),w?"Starting...":"Start CDP"]})]}),(0,b.jsx)("div",{className:"window-dropdown-header",children:"Open Windows"}),e.map(a=>(0,b.jsxs)("div",{className:`window-item ${a.active?"active":""}`,children:[(0,b.jsxs)("button",{className:"window-item-select",onClick:()=>{j(a.index),r(!1)},children:[(0,b.jsx)("span",{className:"window-dot"}),(0,b.jsx)("span",{className:"window-item-title",children:a.title})]}),(0,b.jsx)("button",{className:"window-item-close",onClick:b=>E(a.index,b),title:`Close "${a.title}"`,children:(0,b.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[(0,b.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,b.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},a.index)),0===e.length&&(0,b.jsx)("div",{style:{padding:"12px",color:"var(--text-muted)",fontSize:"12px"},children:"No windows detected"}),i.length>0&&(0,b.jsxs)("div",{className:"wm-recent-section",children:[(0,b.jsx)("div",{className:"wm-recent-header",children:"Recent Projects"}),i.map(a=>(0,b.jsxs)("button",{className:"wm-recent-item",onClick:async()=>{v(!0),z(null);try{let b=await o(a.path);z({text:b.message||(b.success?"Opened!":"Failed"),type:b.success?"success":"error"})}catch{z({text:"Failed to open",type:"error"})}finally{v(!1)}},disabled:u,title:a.path,children:[(0,b.jsx)("svg",{className:"wm-recent-icon",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,b.jsx)("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})}),(0,b.jsxs)("div",{className:"wm-recent-info",children:[(0,b.jsx)("span",{className:"wm-recent-name",children:a.name}),(0,b.jsx)("span",{className:"wm-recent-path",children:a.path})]})]},a.path))]}),(0,b.jsxs)("div",{className:"wm-open-section",children:[(0,b.jsx)("div",{className:"wm-open-label",children:"Open New Window"}),(0,b.jsxs)("form",{className:"wm-open-form",onSubmit:D,children:[(0,b.jsx)("input",{ref:B,type:"text",className:"wm-open-input",value:s,onChange:a=>t(a.target.value),placeholder:"/path/to/project",disabled:u}),(0,b.jsx)("button",{type:"submit",className:"wm-open-btn",disabled:u||!s.trim(),title:"Open directory in Antigravity",children:u?(0,b.jsx)("span",{className:"wm-spinner"}):(0,b.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[(0,b.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})})]})]}),y&&(0,b.jsx)("div",{className:`wm-action-message ${y.type}`,children:y.text})]})]}),(0,b.jsx)("button",{className:"icon-btn",onClick:m,title:"Artifacts","aria-label":"Artifacts",children:(0,b.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,b.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,b.jsx)("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),(0,b.jsx)("line",{x1:"16",y1:"17",x2:"8",y2:"17"}),(0,b.jsx)("polyline",{points:"10 9 9 9 8 9"})]})}),(0,b.jsx)("button",{className:"icon-btn",onClick:l,title:"New Chat","aria-label":"New Chat",children:(0,b.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})})]})]})}function g({onQuickPrompt:a}){return(0,b.jsxs)("div",{className:"welcome-screen",children:[(0,b.jsx)("div",{className:"welcome-icon",children:(0,b.jsxs)("svg",{width:"64",height:"64",viewBox:"0 0 24 24",fill:"none",stroke:"url(#gradient)",strokeWidth:"1.5",children:[(0,b.jsx)("defs",{children:(0,b.jsxs)("linearGradient",{id:"gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[(0,b.jsx)("stop",{offset:"0%",style:{stopColor:"#6366f1"}}),(0,b.jsx)("stop",{offset:"100%",style:{stopColor:"#a855f7"}})]})}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"}),(0,b.jsx)("line",{x1:"2",y1:"12",x2:"22",y2:"12"})]})}),(0,b.jsx)("h2",{children:"Antigravity Agent"}),(0,b.jsx)("p",{children:"Ask anything. The agent has access to your IDE — files, terminal, search, and more."}),(0,b.jsxs)("div",{className:"quick-prompts",children:[(0,b.jsx)("button",{className:"quick-prompt",onClick:()=>a("What files are in the current workspace?"),children:"📁 List workspace files"}),(0,b.jsx)("button",{className:"quick-prompt",onClick:()=>a("Explain the architecture of this project"),children:"🏗️ Explain architecture"}),(0,b.jsx)("button",{className:"quick-prompt",onClick:()=>a("Help me debug the most recent error"),children:"🐛 Debug last error"})]})]})}function h({content:a}){return(0,b.jsx)("div",{className:"user-message",children:(0,b.jsx)("div",{className:"message-content",children:a})})}let i={command:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>',file:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>',search:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>',read:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>',browser:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>',mcp:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v6M12 22v-6M4.93 4.93l4.24 4.24M14.83 14.83l4.24 4.24M2 12h6M22 12h-6M4.93 19.07l4.24-4.24M14.83 9.17l4.24-4.24"/><circle cx="12" cy="12" r="4"/></svg>'};function j({data:a}){let c,d=(c=(a.status||"").toLowerCase()).startsWith("running")||c.startsWith("editing")||c.startsWith("creating")||c.startsWith("search")?"running":c.startsWith("ran")||c.startsWith("edited")||c.startsWith("created")||c.startsWith("read")||c.startsWith("viewed")||c.startsWith("analyzed")||c.startsWith("wrote")||c.startsWith("replaced")||c.startsWith("deleted")?"done":c.includes("error")||c.includes("fail")?"error":c.startsWith("mcp")?"mcp":"running",e=i[a.type]||i.file;return(0,b.jsxs)("div",{className:`tool-call-card ${d}`,"data-tool-index":a.index,children:[(0,b.jsxs)("div",{className:"tool-header",children:[(0,b.jsx)("span",{className:"tool-icon",dangerouslySetInnerHTML:{__html:e}}),(0,b.jsx)("span",{className:"tool-status-text",children:a.status}),a.path&&(0,b.jsx)("span",{className:"tool-path",title:a.path,children:a.path})]}),a.command&&(0,b.jsx)("div",{className:"tool-command",children:(0,b.jsx)("code",{children:a.command})}),(a.additions||a.deletions)&&(0,b.jsxs)("div",{className:"tool-file-changes",children:[a.additions&&(0,b.jsx)("span",{className:"tool-additions",children:a.additions}),a.deletions&&(0,b.jsx)("span",{className:"tool-deletions",children:a.deletions})]}),a.exitCode&&(0,b.jsx)("div",{className:"tool-exit-code",children:a.exitCode}),a.terminalOutput&&(0,b.jsx)("div",{className:"tool-terminal",children:a.terminalOutput}),a.footerButtons&&a.footerButtons.length>0&&(0,b.jsx)("div",{className:"tool-footer-actions",children:a.footerButtons.map((c,d)=>(0,b.jsx)("button",{className:"tool-footer-btn",onClick:async()=>{try{await fetch("/api/v1/chat/action",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toolId:a.id,buttonText:c})})}catch{}},children:c},d))})]})}function k({time:a}){return(0,b.jsxs)("div",{className:"thinking-block",children:[(0,b.jsx)("span",{className:"thinking-icon",children:"💭"}),(0,b.jsx)("span",{children:a})]})}function l(){return(0,b.jsxs)("div",{className:"typing-indicator",children:[(0,b.jsx)("div",{className:"typing-dot"}),(0,b.jsx)("div",{className:"typing-dot"}),(0,b.jsx)("div",{className:"typing-dot"})]})}function m({content:a,steps:c,isStreaming:d,onRetry:e}){return(0,b.jsxs)("div",{className:`agent-message ${d?"streaming":""}`,children:[(0,b.jsxs)("div",{className:"agent-steps",children:[c.map((a,c)=>{switch(a.type){case"thinking":return(0,b.jsx)(k,{time:a.data.time},`step-${c}`);case"tool_call":return(0,b.jsx)(j,{data:a.data},`step-${c}`);case"hitl":case"notification":default:return null;case"file_change":return(0,b.jsxs)("div",{className:"file-change-indicator",children:[(0,b.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,b.jsx)("polyline",{points:"14 2 14 8 20 8"})]}),(0,b.jsx)("span",{className:"file-change-name",children:a.data.fileName})]},`step-${c}`);case"error":return(0,b.jsxs)("div",{className:"error-banner",children:[(0,b.jsxs)("div",{style:{marginBottom:!d&&e?"8px":"0"},children:["⚠️ ",String(a.data.message)]}),!d&&e&&(0,b.jsx)("button",{className:"px-3 py-1 bg-red-100 text-red-800 rounded hover:bg-red-200 transition-colors text-sm font-medium",onClick:e,children:"Try Again"})]},`step-${c}`)}}),d&&(0,b.jsx)(l,{})]}),a&&(0,b.jsx)("div",{className:"agent-response",dangerouslySetInnerHTML:{__html:a}})]})}function n({messages:a,currentSteps:c,currentResponse:d,isStreaming:e,onRetry:f}){return(0,b.jsxs)(b.Fragment,{children:[a.map((a,c)=>"user"===a.role?(0,b.jsx)(h,{content:a.content},`msg-${c}`):(0,b.jsx)(m,{content:a.content,steps:a.steps||[],isStreaming:!1,onRetry:f},`msg-${c}`)),e&&(0,b.jsx)(m,{content:d,steps:c,isStreaming:!0,onRetry:f})]})}function o({onSend:a,isStreaming:d,currentMode:e,onToggleMode:f,currentAgent:g,agents:h,isLoadingAgents:i,onFetchAgents:j,onSwitchAgent:k}){let[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(!1),p=(0,c.useRef)(null),q=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{q.current&&!q.current.contains(a.target)&&o(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]),(0,c.useEffect)(()=>{p.current?.focus()},[]);let r=g?g.replace(/^(Claude\s+|Google\s+|OpenAI\s+)/i,"").substring(0,20):"Agent";return(0,b.jsxs)("footer",{className:"input-area",children:[(0,b.jsxs)("div",{className:"input-toolbar",children:[(0,b.jsxs)("div",{ref:q,className:"agent-selector-wrapper",children:[(0,b.jsxs)("button",{className:"agent-selector-btn",onClick:()=>{n||j(),o(!n)},title:g?`Agent: ${g} — Click to switch`:"Select AI agent","aria-label":`Switch agent (currently ${g||"unknown"})`,type:"button",children:[(0,b.jsx)("span",{className:"agent-icon",children:(0,b.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("path",{d:"M12 2a4 4 0 0 1 4 4v2a4 4 0 0 1-8 0V6a4 4 0 0 1 4-4z"}),(0,b.jsx)("path",{d:"M20 21v-2a4 4 0 0 0-3-3.87"}),(0,b.jsx)("path",{d:"M4 21v-2a4 4 0 0 1 3-3.87"}),(0,b.jsx)("circle",{cx:"12",cy:"17",r:"1"}),(0,b.jsx)("path",{d:"M9 17h6"})]})}),(0,b.jsx)("span",{className:"agent-label",children:r}),(0,b.jsx)("svg",{className:`agent-chevron ${n?"open":""}`,width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,b.jsxs)("div",{className:`agent-dropdown ${n?"open":""}`,children:[(0,b.jsx)("div",{className:"agent-dropdown-header",children:"Select Agent"}),i?(0,b.jsxs)("div",{className:"agent-dropdown-loading",children:[(0,b.jsx)("span",{className:"wm-spinner"}),(0,b.jsx)("span",{children:"Loading agents..."})]}):0===h.length?(0,b.jsx)("div",{className:"agent-dropdown-empty",children:"No agents detected. Make sure the IDE has a workbench open."}):(0,b.jsx)("div",{className:"agent-dropdown-list",children:h.map((a,c)=>(0,b.jsxs)("button",{className:`agent-option ${a.active?"active":""} ${g===a.name?"current":""}`,onClick:()=>{k(a.name),o(!1)},type:"button",children:[(0,b.jsx)("span",{className:"agent-option-name",children:a.name}),a.description&&(0,b.jsx)("span",{className:"agent-option-desc",children:a.description}),(a.active||g===a.name)&&(0,b.jsx)("svg",{className:"agent-check",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polyline",{points:"20 6 9 17 4 12"})})]},c))})]})]}),(0,b.jsxs)("button",{className:`mode-toggle ${e}`,onClick:f,title:`Mode: ${"planning"===e?"Planning":"Fast"} — Click to switch`,"aria-label":`Switch mode (currently ${e})`,type:"button",children:[(0,b.jsx)("span",{className:"mode-icon",children:"planning"===e?"📋":"⚡"}),(0,b.jsx)("span",{className:"mode-label",children:"planning"===e?"Plan":"Fast"})]}),(0,b.jsx)("span",{className:"toolbar-agent-name",id:"model-info",children:g||""})]}),(0,b.jsxs)("div",{className:"input-wrapper",children:[(0,b.jsx)("textarea",{ref:p,value:l,onChange:a=>{m(a.target.value);let b=a.target;b.style.height="auto",b.style.height=Math.min(b.scrollHeight,150)+"px"},onKeyDown:b=>{"Enter"===b.key&&(!b.shiftKey||b.ctrlKey||b.metaKey)&&(b.preventDefault(),!d&&l.trim()&&(a(l),m(""),p.current&&(p.current.style.height="auto")))},placeholder:"Ask the Antigravity agent...",rows:1,"aria-label":"Chat message input",enterKeyHint:"send",autoComplete:"off"}),(0,b.jsx)("button",{className:"send-btn",onClick:()=>{!d&&l.trim()&&(a(l),m(""),p.current&&(p.current.style.height="auto"))},disabled:d||!l.trim(),"aria-label":"Send message",children:(0,b.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),(0,b.jsx)("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})]}),(0,b.jsx)("div",{className:"input-hint",children:(0,b.jsx)("span",{children:"Enter to send · Shift+Enter for new line · Ctrl+N for new chat"})})]})}function p({open:a,onClose:d,activeConversation:e,files:f}){let[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(!1),m=async a=>{if(e){l(!0),h(a);try{let b=await fetch(`/api/v1/artifacts/active/${encodeURIComponent(a)}`),c=await b.text();j(c)}catch(a){j(`Error loading file: ${a.message}`)}finally{l(!1)}}};return(0,b.jsxs)("div",{className:`artifact-panel ${a?"open":""}`,children:[(0,b.jsxs)("div",{className:"artifact-panel-header",children:[(0,b.jsx)("button",{className:"icon-btn",onClick:d,title:"Close panel",children:(0,b.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,b.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}),(0,b.jsx)("h3",{children:"Artifacts"})]}),e?(0,b.jsxs)("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--border-subtle)",background:"rgba(99,102,241,0.04)"},children:[(0,b.jsx)("div",{style:{fontSize:"13px",fontWeight:600,color:"var(--text-primary)",marginBottom:"2px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.title||"Untitled"}),(0,b.jsxs)("div",{style:{fontSize:"10px",fontFamily:"'JetBrains Mono', monospace",color:"var(--text-muted)"},children:[f.length," file",1!==f.length?"s":""]})]}):(0,b.jsx)("div",{style:{padding:"24px 16px",textAlign:"center",color:"var(--text-muted)",fontSize:"13px"},children:"No active conversation"}),g?(0,b.jsxs)("div",{className:"artifact-viewer",children:[(0,b.jsxs)("div",{className:"artifact-viewer-header",children:[(0,b.jsx)("button",{className:"artifact-back-btn",onClick:()=>{h(null),j("")},children:"← Back"}),(0,b.jsx)("span",{className:"artifact-viewer-title",children:g})]}),(0,b.jsx)("div",{className:"artifact-viewer-body",children:k?(0,b.jsx)("div",{style:{color:"var(--text-muted)",padding:"16px"},children:"Loading..."}):g.endsWith(".md")?(0,b.jsx)("div",{className:"agent-response",dangerouslySetInnerHTML:{__html:i.replace(/^### (.*$)/gim,"<h3>$1</h3>").replace(/^## (.*$)/gim,"<h2>$1</h2>").replace(/^# (.*$)/gim,"<h1>$1</h1>").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/`([^`]+)`/g,"<code>$1</code>").replace(/^- (.*$)/gim,"<li>$1</li>").replace(/\n\n/g,"</p><p>").replace(/\n/g,"<br/>")}}):(0,b.jsx)("pre",{style:{margin:0,fontSize:"12px",lineHeight:1.6,color:"var(--text-secondary)",fontFamily:"'JetBrains Mono', monospace",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:i})})]}):(0,b.jsxs)("div",{className:"artifact-file-list",children:[f.map(a=>{var c,d;let e;return(0,b.jsxs)("button",{className:"artifact-file-item",onClick:()=>m(a.name),children:[(0,b.jsx)("span",{className:"artifact-file-icon",children:(c=a.name).endsWith(".md")?"📄":c.endsWith(".json")?"📋":c.endsWith(".ts")||c.endsWith(".tsx")?"📘":c.endsWith(".css")?"🎨":"📁"}),(0,b.jsxs)("div",{style:{flex:1,overflow:"hidden"},children:[(0,b.jsx)("div",{className:"artifact-file-name",children:a.name}),(0,b.jsx)("div",{style:{fontSize:"10px",color:"var(--text-muted)"},children:(e=new Date(a.mtime)).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})+" · "+e.toLocaleDateString()})]}),(0,b.jsx)("span",{className:"artifact-file-size",children:(d=a.size)<1024?`${d}B`:d<1048576?`${(d/1024).toFixed(1)}KB`:`${(d/1048576).toFixed(1)}MB`})]},a.name)}),0===f.length&&e&&(0,b.jsx)("div",{style:{textAlign:"center",padding:"24px",color:"var(--text-muted)",fontSize:"13px"},children:"No artifacts in this conversation"})]})]})}function q(){let a=function(){let[a,b]=(0,c.useState)([]),[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(!1),[j,k]=(0,c.useState)("Agent"),[l,m]=(0,c.useState)("connected"),[n,o]=(0,c.useState)(!0),[p,q]=(0,c.useState)([]),[r,s]=(0,c.useState)(""),[t,u]=(0,c.useState)("planning"),[v,w]=(0,c.useState)(null),[x,y]=(0,c.useState)([]),[z,A]=(0,c.useState)(!1),B=(0,c.useRef)(null),C=(0,c.useRef)(null),D=(0,c.useRef)(""),E=(0,c.useRef)([]),F=(0,c.useCallback)(()=>{requestAnimationFrame(()=>{C.current?.scrollIntoView({behavior:"smooth"})})},[]),G=(0,c.useCallback)((a,b)=>{m(a),k(b)},[]),H=(0,c.useCallback)(async()=>{try{let a=await fetch(`${e}/chat/history`),c=await a.json();c.turns&&c.turns.length>0&&(o(!1),b(c.turns.map(a=>({role:a.role,content:a.content}))))}catch{}},[]),{artifactFiles:I,artifactPanelOpen:J,toggleArtifactPanel:K,openArtifactPanel:L,loadArtifacts:M}=function(a){let[b,d]=(0,c.useState)([]),[e,f]=(0,c.useState)(!1),g=(0,c.useRef)(""),h=(0,c.useRef)(null),i=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/v1/artifacts/active"),b=(await a.json()).files||[],c=JSON.stringify(b.map(a=>a.name+a.size+a.mtime));c!==g.current&&(g.current=c,d(b))}catch{}},[]),j=(0,c.useCallback)(()=>{f(a=>!a)},[]),k=(0,c.useCallback)(()=>{f(!0)},[]);return(0,c.useEffect)(()=>(e?(i(),h.current=setInterval(i,3e3)):h.current&&(clearInterval(h.current),h.current=null),()=>{h.current&&(clearInterval(h.current),h.current=null)}),[e,i]),(0,c.useEffect)(()=>{},[void 0,i]),{artifactFiles:b,artifactPanelOpen:e,toggleArtifactPanel:j,openArtifactPanel:k,loadArtifacts:i}}(),{windows:N,conversations:O,activeConversation:P,cdpStatus:Q,recentProjects:R,loadWindows:S,selectWindow:T,loadConversations:U,selectConversation:V,checkCdpStatus:W,startCdpServer:X,openNewWindow:Y,closeWindowByIndex:Z,loadRecentProjects:$}=function(a,b,e){let[f,g]=(0,c.useState)([]),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)({active:!1,windowCount:0}),[n,o]=(0,c.useState)([]),p=(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/windows`),b=await a.json();g(b.windows||[])}catch{}},[]),q=(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/windows/cdp-status`),b=await a.json();return m({active:b.active,windowCount:b.windowCount,error:b.error}),b.active}catch{return m({active:!1,windowCount:0,error:"Failed to check"}),!1}},[]),r=(0,c.useCallback)(async(a,b)=>{try{let c=await fetch(`${d}/windows/cdp-start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectDir:a||".",killExisting:b||!1})}),e=await c.json();return e.success&&(await q(),await p()),e}catch(a){return{success:!1,message:a.message||"Failed to start CDP server"}}},[q,p]),s=(0,c.useCallback)(async a=>{try{let b=await fetch(`${d}/windows/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectDir:a})}),c=await b.json();return c.success&&(await p(),await q()),c}catch(a){return{success:!1,message:a.message||"Failed to open window"}}},[p,q]),t=(0,c.useCallback)(async a=>{try{let b=await fetch(`${d}/windows/close`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({index:a})}),c=await b.json();return c.success&&(await p(),await q()),c}catch(a){return{success:!1,message:a.message||"Failed to close window"}}},[p,q]),u=(0,c.useCallback)(async a=>{try{await fetch(`${d}/windows/select`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({index:a})}),await p()}catch{}},[p]),v=(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/conversations`),b=(await a.json()).conversations||[];i(b);let c=b.find(a=>a.active);c&&k(c)}catch{}},[]);return{windows:f,conversations:h,activeConversation:j,cdpStatus:l,recentProjects:n,loadWindows:p,selectWindow:u,loadConversations:v,selectConversation:(0,c.useCallback)(async c=>{try{let f=await fetch(`${d}/conversations/select`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:c})});if((await f.json()).success){b(!1);let f=0,g=async()=>{f++;try{let b=await fetch(`${d}/conversations`),g=(await b.json()).conversations||[],h=g.find(a=>a.active);if(h&&h.title===c||f>10){i(g),h&&k(h),await a(),e?.();return}}catch{}setTimeout(g,500)};g()}}catch{}},[a,b,e]),checkCdpStatus:q,startCdpServer:r,openNewWindow:s,closeWindowByIndex:t,loadRecentProjects:(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/windows/recent`),b=await a.json();o(b.recentProjects||[])}catch{}},[])}}(H,o,(0,c.useCallback)(()=>{L(),M()},[L,M])),_=(0,c.useCallback)(async()=>{try{let a=await fetch(`${e}/chat/mode`),b=await a.json();b.mode&&u(b.mode)}catch{}},[]),aa=(0,c.useCallback)(async()=>{let a="planning"===t?"fast":"planning";u(a);try{let b=await fetch(`${e}/chat/mode`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:a})}),c=await b.json();c.mode&&u(c.mode)}catch{u(t)}},[t]),ab=(0,c.useCallback)(async()=>{try{let a=await fetch(`${e}/chat/agent`),b=await a.json();b.agent&&w(b.agent)}catch{}},[]),ac=(0,c.useCallback)(async()=>{A(!0);try{let a=await fetch(`${e}/chat/agent`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"list"})}),b=await a.json();b.agents&&y(b.agents),b.currentAgent&&w(b.currentAgent)}catch{}A(!1)},[]),ad=(0,c.useCallback)(async a=>{w(a);try{let b=await fetch(`${e}/chat/agent`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"switch",agent:a})}),c=await b.json();c.agent?w(c.agent):c.success||w(v)}catch{w(v)}},[v]),ae=(0,c.useCallback)(async()=>{try{let a=await fetch(`${e}/health`),b=await a.json();i(b.connected),G(b.connected?"connected":"disconnected",b.connected?"Agent":"Disconnected")}catch{i(!1),G("disconnected","Offline")}},[G]),af=(0,c.useCallback)(a=>{let{type:b,...c}=a;switch(b){case"tool_call":q(a=>{let d,e=a.findIndex(a=>"tool_call"===a.type&&a.data?.id===c.id);return e>=0?(d=[...a])[e]={type:b,data:c}:d=[...a,{type:b,data:c}],E.current=d,d});break;case"thinking":case"hitl":case"file_change":case"error":case"notification":q(a=>{let d=[...a,{type:b,data:c}];return E.current=d,d});break;case"response":s(c.content||""),D.current=c.content||"";break;case"status":G(c.isRunning?"streaming":"connected",c.isRunning?"Agent working...":"Agent");break;case"done":c.finalResponse&&(s(c.finalResponse),D.current=c.finalResponse),G("connected","Agent"),g(!1)}F()},[G,F]),ag=(0,c.useCallback)(async a=>{if(f||!a.trim())return;o(!1);let c=a.trim();b(a=>[...a,{role:"user",content:c}]),g(!0),q([]),s(""),D.current="",E.current=[],G("streaming","Agent typing...");let d=new AbortController;B.current=d;try{let a=(await fetch(`${e}/chat/stream`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:c}),signal:d.signal})).body.getReader(),b=new TextDecoder,f="";for(;;){let{done:c,value:d}=await a.read();if(c)break;let e=(f+=b.decode(d,{stream:!0})).split("\n");for(let a of(f=e.pop(),e))if(a.startsWith("data: "))try{let b=JSON.parse(a.slice(6));af(b)}catch{}}}catch(a){"AbortError"!==a.name&&(q(b=>[...b,{type:"error",data:{message:a.message}}]),G("error","Error"))}finally{let a=D.current,c=[...E.current];g(!1),B.current=null,(a||c.length>0)&&b(b=>[...b,{role:"agent",content:a,steps:c}]),G("connected","Agent")}},[f,af,G]),ah=(0,c.useCallback)(async()=>{B.current&&B.current.abort(),b([]),q([]),s(""),o(!0);try{let a=await fetch(`${e}/chat/new`,{method:"POST"});(await a.json()).success&&G("connected","New Chat")}catch{}},[G]),ai=(0,c.useCallback)(async()=>{try{await fetch(`${e}/chat/approve`,{method:"POST"}),G("streaming","Agent")}catch{}},[G]),aj=(0,c.useCallback)(async()=>{try{await fetch(`${e}/chat/reject`,{method:"POST"})}catch{}},[]);return(0,c.useEffect)(()=>{ae(),S(),H(),U(),M(),_(),ab(),W(),$();let a=setInterval(ae,3e4),b=setInterval(W,15e3);return()=>{clearInterval(a),clearInterval(b)}},[ae,S,H,U,M,_,ab,W,$]),(0,c.useEffect)(F,[a,p,r,F]),{messages:a,isStreaming:f,isConnected:h,statusText:j,statusState:l,showWelcome:n,currentSteps:p,currentResponse:r,windows:N,conversations:O,activeConversation:P,artifactFiles:I,artifactPanelOpen:J,currentMode:t,currentAgent:v,agents:x,isLoadingAgents:z,cdpStatus:Q,recentProjects:R,sendMessage:ag,startNewChat:ah,approve:ai,reject:aj,selectWindow:T,selectConversation:V,toggleArtifactPanel:K,openArtifactPanel:L,toggleMode:aa,fetchAgentList:ac,switchAgent:ad,startCdpServer:X,openNewWindow:Y,closeWindowByIndex:Z,messagesEndRef:C,setShowWelcome:o}}();return(0,c.useEffect)(()=>{let b=b=>{"n"===b.key&&(b.ctrlKey||b.metaKey)&&(b.preventDefault(),a.startNewChat())};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[a]),(0,b.jsxs)("div",{className:"app-container",children:[(0,b.jsx)(f,{statusState:a.statusState,statusText:a.statusText,windows:a.windows,conversations:a.conversations,activeConversation:a.activeConversation,cdpStatus:a.cdpStatus,recentProjects:a.recentProjects,onSelectWindow:a.selectWindow,onSelectConversation:a.selectConversation,onNewChat:a.startNewChat,onToggleArtifacts:a.toggleArtifactPanel,onStartCdp:a.startCdpServer,onOpenWindow:a.openNewWindow,onCloseWindow:a.closeWindowByIndex}),(0,b.jsxs)("main",{className:"messages-area",role:"log","aria-live":"polite",children:[a.showWelcome?(0,b.jsx)(g,{onQuickPrompt:a.sendMessage}):(0,b.jsx)(n,{messages:a.messages,currentSteps:a.currentSteps,currentResponse:a.currentResponse,isStreaming:a.isStreaming,onRetry:async()=>{try{await fetch("/api/v1/health"),window.location.reload()}catch{}}}),(0,b.jsx)("div",{ref:a.messagesEndRef})]}),(0,b.jsx)(o,{onSend:a.sendMessage,isStreaming:a.isStreaming,currentMode:a.currentMode,onToggleMode:a.toggleMode,currentAgent:a.currentAgent,agents:a.agents,isLoadingAgents:a.isLoadingAgents,onFetchAgents:a.fetchAgentList,onSwitchAgent:a.switchAgent}),(0,b.jsx)(p,{open:a.artifactPanelOpen,onClose:a.toggleArtifactPanel,activeConversation:a.activeConversation,files:a.artifactFiles})]})}a.s(["default",()=>q],72079)}];
1
+ module.exports=[72079,a=>{"use strict";var b=a.i(87924),c=a.i(72131);let d="/api/v1",e="/api/v1";function f({statusState:a,statusText:d,windows:e,conversations:f,activeConversation:g,cdpStatus:h,recentProjects:i,onSelectWindow:j,onSelectConversation:k,onNewChat:l,onStartCdp:m,onOpenWindow:n,onCloseWindow:o}){let[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)(""),[t,u]=(0,c.useState)(!1),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(null),z=(0,c.useRef)(null),A=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{z.current&&!z.current.contains(a.target)&&q(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]),(0,c.useEffect)(()=>{if(x){let a=setTimeout(()=>y(null),4e3);return()=>clearTimeout(a)}},[x]);let B=async()=>{let a=i.length>0?i[0].path:".";w(!0),y(null);try{let b=await m(a,!0);y({text:b.message||(b.success?"CDP started!":"Failed to start CDP"),type:b.success?"success":"error"})}catch{y({text:"Failed to start CDP server",type:"error"})}finally{w(!1)}},C=async a=>{a.preventDefault();let b=r.trim();if(b&&!t){u(!0),y(null);try{let a=await n(b);y({text:a.message||(a.success?"Window opened!":"Failed to open"),type:a.success?"success":"error"}),a.success&&s("")}catch{y({text:"Failed to open window",type:"error"})}finally{u(!1)}}},D=async(a,b)=>{if(b.stopPropagation(),!window.confirm(`Close window "${e[a]?.title||a}"?`))return;let c=await o(a);y({text:c.message||(c.success?"Closed!":"Failed to close"),type:c.success?"success":"error"})};return(0,b.jsxs)("header",{className:"header",children:[(0,b.jsx)("div",{className:"header-left",children:(0,b.jsx)("div",{className:"logo",children:(0,b.jsxs)("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"url(#header-gradient)",strokeWidth:"1.5",children:[(0,b.jsx)("defs",{children:(0,b.jsxs)("linearGradient",{id:"header-gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[(0,b.jsx)("stop",{offset:"0%",style:{stopColor:"#6366f1"}}),(0,b.jsx)("stop",{offset:"100%",style:{stopColor:"#a855f7"}})]})}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"}),(0,b.jsx)("line",{x1:"2",y1:"12",x2:"22",y2:"12"})]})})}),(0,b.jsxs)("div",{className:"header-right",children:[(0,b.jsxs)("div",{ref:z,className:`window-selector-wrapper ${p?"open":""}`,children:[(0,b.jsxs)("button",{className:"window-selector-btn",onClick:()=>q(!p),title:"Manage Antigravity windows",children:[(0,b.jsx)("span",{className:`cdp-indicator ${h.active?"active":"inactive"}`}),(0,b.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"}),(0,b.jsx)("line",{x1:"8",y1:"21",x2:"16",y2:"21"}),(0,b.jsx)("line",{x1:"12",y1:"17",x2:"12",y2:"21"})]}),(0,b.jsx)("span",{style:{maxWidth:"120px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",display:"inline-block",verticalAlign:"bottom"},children:e.find(a=>a.active)?.title||"Windows"}),(0,b.jsx)("svg",{className:"chevron",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,b.jsxs)("div",{className:`window-dropdown ${p?"open":""}`,children:[(0,b.jsxs)("div",{className:"wm-cdp-status",children:[(0,b.jsxs)("div",{className:"wm-cdp-info",children:[(0,b.jsx)("span",{className:`wm-cdp-dot ${h.active?"active":"inactive"}`}),(0,b.jsx)("span",{children:h.active?`CDP Active \xb7 ${h.windowCount} window${1!==h.windowCount?"s":""}`:"CDP Inactive"})]}),!h.active&&(0,b.jsxs)("button",{className:"wm-cdp-start-btn",onClick:B,disabled:v,title:"Start Antigravity with CDP",children:[v?(0,b.jsx)("span",{className:"wm-spinner"}):(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polygon",{points:"5 3 19 12 5 21 5 3"})}),v?"Starting...":"Start CDP"]})]}),(0,b.jsx)("div",{className:"window-dropdown-header",children:"Open Windows"}),e.map(a=>(0,b.jsxs)("div",{className:`window-item ${a.active?"active":""}`,children:[(0,b.jsxs)("button",{className:"window-item-select",onClick:()=>{j(a.index),q(!1)},children:[(0,b.jsx)("span",{className:"window-dot"}),(0,b.jsx)("span",{className:"window-item-title",children:a.title})]}),(0,b.jsx)("button",{className:"window-item-close",onClick:b=>D(a.index,b),title:`Close "${a.title}"`,children:(0,b.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[(0,b.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,b.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},a.index)),0===e.length&&(0,b.jsx)("div",{style:{padding:"12px",color:"var(--text-muted)",fontSize:"12px"},children:"No windows detected"}),i.length>0&&(0,b.jsxs)("div",{className:"wm-recent-section",children:[(0,b.jsx)("div",{className:"wm-recent-header",children:"Recent Projects"}),i.map(a=>(0,b.jsxs)("button",{className:"wm-recent-item",onClick:async()=>{u(!0),y(null);try{let b=await n(a.path);y({text:b.message||(b.success?"Opened!":"Failed"),type:b.success?"success":"error"})}catch{y({text:"Failed to open",type:"error"})}finally{u(!1)}},disabled:t,title:a.path,children:[(0,b.jsx)("svg",{className:"wm-recent-icon",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,b.jsx)("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})}),(0,b.jsxs)("div",{className:"wm-recent-info",children:[(0,b.jsx)("span",{className:"wm-recent-name",children:a.name}),(0,b.jsx)("span",{className:"wm-recent-path",children:a.path})]})]},a.path))]}),(0,b.jsxs)("div",{className:"wm-open-section",children:[(0,b.jsx)("div",{className:"wm-open-label",children:"Open New Window"}),(0,b.jsxs)("form",{className:"wm-open-form",onSubmit:C,children:[(0,b.jsx)("input",{ref:A,type:"text",className:"wm-open-input",value:r,onChange:a=>s(a.target.value),placeholder:"/path/to/project",disabled:t}),(0,b.jsx)("button",{type:"submit",className:"wm-open-btn",disabled:t||!r.trim(),title:"Open directory in Antigravity",children:t?(0,b.jsx)("span",{className:"wm-spinner"}):(0,b.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[(0,b.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})})]})]}),x&&(0,b.jsx)("div",{className:`wm-action-message ${x.type}`,children:x.text})]})]}),(0,b.jsx)("button",{className:"icon-btn",onClick:l,title:"New Chat","aria-label":"New Chat",children:(0,b.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})})]})]})}function g({onQuickPrompt:a}){return(0,b.jsxs)("div",{className:"welcome-screen",children:[(0,b.jsx)("div",{className:"welcome-icon",children:(0,b.jsxs)("svg",{width:"64",height:"64",viewBox:"0 0 24 24",fill:"none",stroke:"url(#gradient)",strokeWidth:"1.5",children:[(0,b.jsx)("defs",{children:(0,b.jsxs)("linearGradient",{id:"gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[(0,b.jsx)("stop",{offset:"0%",style:{stopColor:"#6366f1"}}),(0,b.jsx)("stop",{offset:"100%",style:{stopColor:"#a855f7"}})]})}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"}),(0,b.jsx)("line",{x1:"2",y1:"12",x2:"22",y2:"12"})]})}),(0,b.jsx)("h2",{children:"Antigravity Agent"}),(0,b.jsx)("p",{children:"Ask anything. The agent has access to your IDE — files, terminal, search, and more."}),(0,b.jsxs)("div",{className:"quick-prompts",children:[(0,b.jsx)("button",{className:"quick-prompt",onClick:()=>a("What files are in the current workspace?"),children:"📁 List workspace files"}),(0,b.jsx)("button",{className:"quick-prompt",onClick:()=>a("Explain the architecture of this project"),children:"🏗️ Explain architecture"}),(0,b.jsx)("button",{className:"quick-prompt",onClick:()=>a("Help me debug the most recent error"),children:"🐛 Debug last error"})]})]})}function h({content:a}){return(0,b.jsx)("div",{className:"user-message",children:(0,b.jsx)("div",{className:"message-content",children:a})})}let i={command:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>',file:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>',search:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>',read:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>',browser:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>',mcp:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v6M12 22v-6M4.93 4.93l4.24 4.24M14.83 14.83l4.24 4.24M2 12h6M22 12h-6M4.93 19.07l4.24-4.24M14.83 9.17l4.24-4.24"/><circle cx="12" cy="12" r="4"/></svg>'};function j({data:a}){let c,d=(c=(a.status||"").toLowerCase()).startsWith("running")||c.startsWith("editing")||c.startsWith("creating")||c.startsWith("search")?"running":c.startsWith("ran")||c.startsWith("edited")||c.startsWith("created")||c.startsWith("read")||c.startsWith("viewed")||c.startsWith("analyzed")||c.startsWith("wrote")||c.startsWith("replaced")||c.startsWith("deleted")?"done":c.includes("error")||c.includes("fail")?"error":c.startsWith("mcp")?"mcp":"running",e=i[a.type]||i.file;return(0,b.jsxs)("div",{className:`tool-call-card ${d}`,"data-tool-index":a.index,children:[(0,b.jsxs)("div",{className:"tool-header",children:[(0,b.jsx)("span",{className:"tool-icon",dangerouslySetInnerHTML:{__html:e}}),(0,b.jsx)("span",{className:"tool-status-text",children:a.status}),a.path&&(0,b.jsx)("span",{className:"tool-path",title:a.path,children:a.path})]}),a.command&&(0,b.jsx)("div",{className:"tool-command",children:(0,b.jsx)("code",{children:a.command})}),(a.additions||a.deletions)&&(0,b.jsxs)("div",{className:"tool-file-changes",children:[a.additions&&(0,b.jsx)("span",{className:"tool-additions",children:a.additions}),a.deletions&&(0,b.jsx)("span",{className:"tool-deletions",children:a.deletions})]}),a.exitCode&&(0,b.jsx)("div",{className:"tool-exit-code",children:a.exitCode}),a.terminalOutput&&(0,b.jsx)("div",{className:"tool-terminal",children:a.terminalOutput}),a.footerButtons&&a.footerButtons.length>0&&(0,b.jsx)("div",{className:"tool-footer-actions",children:a.footerButtons.map((c,d)=>(0,b.jsx)("button",{className:"tool-footer-btn",onClick:async()=>{try{await fetch("/api/v1/chat/action",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toolId:a.id,buttonText:c})})}catch{}},children:c},d))})]})}function k({time:a}){return(0,b.jsxs)("div",{className:"thinking-block",children:[(0,b.jsx)("span",{className:"thinking-icon",children:"💭"}),(0,b.jsx)("span",{children:a})]})}function l(){return(0,b.jsxs)("div",{className:"typing-indicator",children:[(0,b.jsx)("div",{className:"typing-dot"}),(0,b.jsx)("div",{className:"typing-dot"}),(0,b.jsx)("div",{className:"typing-dot"})]})}function m({content:a,steps:c,isStreaming:d,onRetry:e}){return(0,b.jsxs)("div",{className:`agent-message ${d?"streaming":""}`,children:[(0,b.jsxs)("div",{className:"agent-steps",children:[c.map((a,c)=>{switch(a.type){case"thinking":return(0,b.jsx)(k,{time:a.data.time},`step-${c}`);case"tool_call":return(0,b.jsx)(j,{data:a.data},`step-${c}`);case"hitl":case"notification":default:return null;case"file_change":return(0,b.jsxs)("div",{className:"file-change-indicator",children:[(0,b.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,b.jsx)("polyline",{points:"14 2 14 8 20 8"})]}),(0,b.jsx)("span",{className:"file-change-name",children:a.data.fileName})]},`step-${c}`);case"error":return(0,b.jsxs)("div",{className:"error-banner",children:[(0,b.jsxs)("div",{style:{marginBottom:!d&&e?"8px":"0"},children:["⚠️ ",String(a.data.message)]}),!d&&e&&(0,b.jsx)("button",{className:"px-3 py-1 bg-red-100 text-red-800 rounded hover:bg-red-200 transition-colors text-sm font-medium",onClick:e,children:"Try Again"})]},`step-${c}`)}}),d&&(0,b.jsx)(l,{})]}),a&&(0,b.jsx)("div",{className:"agent-response",dangerouslySetInnerHTML:{__html:a}})]})}function n({messages:a,currentSteps:c,currentResponse:d,isStreaming:e,onRetry:f}){return(0,b.jsxs)(b.Fragment,{children:[a.map((a,c)=>"user"===a.role?(0,b.jsx)(h,{content:a.content},`msg-${c}`):(0,b.jsx)(m,{content:a.content,steps:a.steps||[],isStreaming:!1,onRetry:f},`msg-${c}`)),e&&(0,b.jsx)(m,{content:d,steps:c,isStreaming:!0,onRetry:f})]})}function o({onSend:a,isStreaming:d,currentMode:e,onToggleMode:f,currentAgent:g,agents:h,isLoadingAgents:i,onFetchAgents:j,onSwitchAgent:k,onToggleArtifacts:l,artifactCount:m,artifactPanelOpen:n,onToggleChanges:o,changesCount:p,changesPanelOpen:q}){let[r,s]=(0,c.useState)(""),[t,u]=(0,c.useState)(!1),v=(0,c.useRef)(null),w=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{w.current&&!w.current.contains(a.target)&&u(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]),(0,c.useEffect)(()=>{v.current?.focus()},[]);let x=g?g.replace(/^(Claude\s+|Google\s+|OpenAI\s+)/i,"").substring(0,20):"Agent";return(0,b.jsxs)("footer",{className:"input-area",children:[(0,b.jsxs)("div",{className:"input-toolbar",children:[(0,b.jsxs)("div",{ref:w,className:"agent-selector-wrapper",children:[(0,b.jsxs)("button",{className:"agent-selector-btn",onClick:()=>{t||j(),u(!t)},title:g?`Agent: ${g} — Click to switch`:"Select AI agent","aria-label":`Switch agent (currently ${g||"unknown"})`,type:"button",children:[(0,b.jsx)("span",{className:"agent-icon",children:(0,b.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("path",{d:"M12 2a4 4 0 0 1 4 4v2a4 4 0 0 1-8 0V6a4 4 0 0 1 4-4z"}),(0,b.jsx)("path",{d:"M20 21v-2a4 4 0 0 0-3-3.87"}),(0,b.jsx)("path",{d:"M4 21v-2a4 4 0 0 1 3-3.87"}),(0,b.jsx)("circle",{cx:"12",cy:"17",r:"1"}),(0,b.jsx)("path",{d:"M9 17h6"})]})}),(0,b.jsx)("span",{className:"agent-label",children:x}),(0,b.jsx)("svg",{className:`agent-chevron ${t?"open":""}`,width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,b.jsxs)("div",{className:`agent-dropdown ${t?"open":""}`,children:[(0,b.jsx)("div",{className:"agent-dropdown-header",children:"Select Agent"}),i?(0,b.jsxs)("div",{className:"agent-dropdown-loading",children:[(0,b.jsx)("span",{className:"wm-spinner"}),(0,b.jsx)("span",{children:"Loading agents..."})]}):0===h.length?(0,b.jsx)("div",{className:"agent-dropdown-empty",children:"No agents detected. Make sure the IDE has a workbench open."}):(0,b.jsx)("div",{className:"agent-dropdown-list",children:h.map((a,c)=>(0,b.jsxs)("button",{className:`agent-option ${a.active?"active":""} ${g===a.name?"current":""}`,onClick:()=>{k(a.name),u(!1)},type:"button",children:[(0,b.jsx)("span",{className:"agent-option-name",children:a.name}),a.description&&(0,b.jsx)("span",{className:"agent-option-desc",children:a.description}),(a.active||g===a.name)&&(0,b.jsx)("svg",{className:"agent-check",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,b.jsx)("polyline",{points:"20 6 9 17 4 12"})})]},c))})]})]}),(0,b.jsxs)("button",{className:`mode-toggle ${e}`,onClick:f,title:`Mode: ${"planning"===e?"Planning":"Fast"} — Click to switch`,"aria-label":`Switch mode (currently ${e})`,type:"button",children:[(0,b.jsx)("span",{className:"mode-icon",children:"planning"===e?"📋":"⚡"}),(0,b.jsx)("span",{className:"mode-label",children:"planning"===e?"Plan":"Fast"})]}),(0,b.jsxs)("button",{className:`artifact-toggle-btn ${n?"active":""}`,onClick:l,title:`Artifacts${m>0?` (${m})`:""}`,"aria-label":"Toggle artifacts panel",type:"button",children:[(0,b.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,b.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,b.jsx)("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),(0,b.jsx)("line",{x1:"16",y1:"17",x2:"8",y2:"17"})]}),m>0&&(0,b.jsx)("span",{className:"artifact-badge",children:m})]}),(0,b.jsxs)("button",{className:`changes-toggle-btn ${q?"active":""}`,onClick:o,title:`Changes${p>0?` (${p})`:""}`,"aria-label":"Toggle changes panel",type:"button",children:[(0,b.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("path",{d:"M12 20h9"}),(0,b.jsx)("path",{d:"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"})]}),p>0&&(0,b.jsx)("span",{className:"changes-badge",children:p})]}),(0,b.jsx)("span",{className:"toolbar-agent-name",id:"model-info",children:g||""})]}),(0,b.jsxs)("div",{className:"input-wrapper",children:[(0,b.jsx)("textarea",{ref:v,value:r,onChange:a=>{s(a.target.value);let b=a.target;b.style.height="auto",b.style.height=Math.min(b.scrollHeight,150)+"px"},onKeyDown:b=>{"Enter"===b.key&&(!b.shiftKey||b.ctrlKey||b.metaKey)&&(b.preventDefault(),!d&&r.trim()&&(a(r),s(""),v.current&&(v.current.style.height="auto")))},placeholder:"Ask the Antigravity agent...",rows:1,"aria-label":"Chat message input",enterKeyHint:"send",autoComplete:"off"}),(0,b.jsx)("button",{className:"send-btn",onClick:()=>{!d&&r.trim()&&(a(r),s(""),v.current&&(v.current.style.height="auto"))},disabled:d||!r.trim(),"aria-label":"Send message",children:(0,b.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),(0,b.jsx)("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})]}),(0,b.jsx)("div",{className:"input-hint",children:(0,b.jsx)("span",{children:"Enter to send · Shift+Enter for new line · Ctrl+N for new chat"})})]})}function p({open:a,onClose:d,activeConversation:e,files:f}){let[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(!1),m=async a=>{l(!0),h(a);try{let b=await fetch(`/api/v1/artifacts/active/${encodeURIComponent(a)}`);if(!b.ok){let a=await b.json().catch(()=>({error:"Unknown error"}));j(`Error: ${a.error||b.statusText}`);return}let c=await b.text();j(c)}catch(a){j(`Error loading file: ${a.message}`)}finally{l(!1)}},n=a=>!1!==a.isFile&&/\.\w{1,5}$/.test(a.name);return(0,b.jsxs)("div",{className:`artifact-panel ${a?"open":""}`,children:[(0,b.jsxs)("div",{className:"artifact-panel-header",children:[(0,b.jsx)("button",{className:"icon-btn",onClick:d,title:"Close panel",children:(0,b.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,b.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}),(0,b.jsx)("h3",{children:"Artifacts"})]}),e?(0,b.jsxs)("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--border-subtle)",background:"rgba(99,102,241,0.04)"},children:[(0,b.jsx)("div",{style:{fontSize:"13px",fontWeight:600,color:"var(--text-primary)",marginBottom:"2px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.title||"Untitled"}),(0,b.jsxs)("div",{style:{fontSize:"10px",fontFamily:"'JetBrains Mono', monospace",color:"var(--text-muted)"},children:[f.length," artifact",1!==f.length?"s":""]})]}):f.length>0?(0,b.jsx)("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--border-subtle)",background:"rgba(99,102,241,0.04)"},children:(0,b.jsxs)("div",{style:{fontSize:"10px",fontFamily:"'JetBrains Mono', monospace",color:"var(--text-muted)"},children:[f.length," artifact",1!==f.length?"s":""]})}):(0,b.jsx)("div",{style:{padding:"24px 16px",textAlign:"center",color:"var(--text-muted)",fontSize:"13px"},children:"No active conversation"}),g?(0,b.jsxs)("div",{className:"artifact-viewer",children:[(0,b.jsxs)("div",{className:"artifact-viewer-header",children:[(0,b.jsx)("button",{className:"artifact-back-btn",onClick:()=>{h(null),j("")},children:"← Back"}),(0,b.jsx)("span",{className:"artifact-viewer-title",children:g})]}),(0,b.jsx)("div",{className:"artifact-viewer-body",children:k?(0,b.jsx)("div",{style:{color:"var(--text-muted)",padding:"16px"},children:"Loading..."}):g.endsWith(".md")?(0,b.jsx)("div",{className:"agent-response",dangerouslySetInnerHTML:{__html:i.replace(/^### (.*$)/gim,"<h3>$1</h3>").replace(/^## (.*$)/gim,"<h2>$1</h2>").replace(/^# (.*$)/gim,"<h1>$1</h1>").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/`([^`]+)`/g,"<code>$1</code>").replace(/^- (.*$)/gim,"<li>$1</li>").replace(/\n\n/g,"</p><p>").replace(/\n/g,"<br/>")}}):(0,b.jsx)("pre",{style:{margin:0,fontSize:"12px",lineHeight:1.6,color:"var(--text-secondary)",fontFamily:"'JetBrains Mono', monospace",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:i})})]}):(0,b.jsxs)("div",{className:"artifact-file-list",children:[f.map(a=>{var c;return(0,b.jsxs)("button",{className:`artifact-file-item ${!n(a)?"non-file":""}`,onClick:()=>{n(a)&&m(a.name)},disabled:!n(a),title:n(a)?`Open ${a.name}`:`${a.name} (IDE artifact — view in Antigravity)`,children:[(0,b.jsx)("span",{className:"artifact-file-icon",children:(a=>{if(n(a)){let b=a.name;return b.endsWith(".md")?"📄":b.endsWith(".json")?"📋":b.endsWith(".ts")||b.endsWith(".tsx")?"📘":b.endsWith(".css")?"🎨":b.endsWith(".js")||b.endsWith(".jsx")?"📜":"📄"}return"🖼️"})(a)}),(0,b.jsxs)("div",{style:{flex:1,overflow:"hidden"},children:[(0,b.jsx)("div",{className:"artifact-file-name",children:a.name}),(0,b.jsx)("div",{style:{fontSize:"10px",color:"var(--text-muted)"},children:(a=>{if(a.includes("T")||a.includes("-")){let b=new Date(a);if(!isNaN(b.getTime()))return b.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})+" · "+b.toLocaleDateString()}return a})(a.mtime)})]}),(0,b.jsx)("span",{className:"artifact-file-size",children:(c=a.size)<=0?"":c<1024?`${c}B`:c<1048576?`${(c/1024).toFixed(1)}KB`:`${(c/1048576).toFixed(1)}MB`})]},a.name)}),0===f.length&&(0,b.jsx)("div",{style:{textAlign:"center",padding:"24px",color:"var(--text-muted)",fontSize:"13px"},children:"No artifacts in this conversation"})]})]})}function q({open:a,onClose:d,changes:e}){let[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(""),n=e.reduce((a,b)=>a+b.additions,0),o=e.reduce((a,b)=>a+b.deletions,0),p=async a=>{k(!0),g(a.filepath),m(a.filename),i([]);try{let b=await fetch(`/api/v1/changes/diff?filepath=${encodeURIComponent(a.filepath)}`),c=await b.json();c.diff?i(function(a){let b=[],c=0,d=0;for(let e of a.split("\n"))if(e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("new file")||e.startsWith("deleted file"))b.push({type:"meta",content:e});else if(e.startsWith("---")||e.startsWith("+++"))b.push({type:"meta",content:e});else if(e.startsWith("@@")){let a=e.match(/@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);a&&(d=parseInt(a[1]),c=parseInt(a[2])),b.push({type:"header",content:e})}else e.startsWith("+")?b.push({type:"add",content:e.substring(1),lineNum:c++}):e.startsWith("-")?b.push({type:"del",content:e.substring(1),lineNum:d++}):e.startsWith(" ")&&(b.push({type:"context",content:e.substring(1),lineNum:c}),c++,d++);return b}(c.diff)):i([{type:"meta",content:c.message||"No diff available"}])}catch(a){i([{type:"meta",content:`Error: ${a.message}`}])}finally{k(!1)}};return(0,b.jsxs)("div",{className:`changes-panel ${a?"open":""}`,children:[(0,b.jsxs)("div",{className:"changes-panel-header",children:[(0,b.jsx)("button",{className:"icon-btn",onClick:d,title:"Close panel",children:(0,b.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,b.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}),(0,b.jsx)("h3",{children:"Changes Overview"})]}),f?(0,b.jsxs)("div",{className:"diff-viewer",children:[(0,b.jsxs)("div",{className:"diff-viewer-header",children:[(0,b.jsx)("button",{className:"diff-back-btn",onClick:()=>{g(null),i([]),m("")},children:"← Back"}),(0,b.jsx)("span",{className:"diff-viewer-title",children:l}),(0,b.jsx)("span",{className:"diff-viewer-path",children:f})]}),(0,b.jsx)("div",{className:"diff-viewer-body",children:j?(0,b.jsx)("div",{style:{color:"var(--text-muted)",padding:"16px",fontStyle:"italic"},children:"Loading diff..."}):0===h.length?(0,b.jsx)("div",{style:{color:"var(--text-muted)",padding:"16px"},children:"No changes found"}):(0,b.jsx)("div",{className:"diff-lines",children:h.map((a,c)=>(0,b.jsxs)("div",{className:`diff-line diff-line-${a.type}`,children:[(0,b.jsx)("span",{className:"diff-line-num",children:void 0!==a.lineNum?a.lineNum:""}),(0,b.jsx)("span",{className:"diff-line-indicator",children:"add"===a.type?"+":"del"===a.type?"-":"header"===a.type?"@@":""}),(0,b.jsx)("span",{className:"diff-line-content",children:a.content})]},c))})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"changes-summary",children:[(0,b.jsxs)("span",{className:"changes-count",children:[e.length," file",1!==e.length?"s":""," changed"]}),(0,b.jsxs)("div",{className:"changes-stats",children:[n>0&&(0,b.jsxs)("span",{className:"changes-additions",children:["+",n]}),o>0&&(0,b.jsxs)("span",{className:"changes-deletions",children:["-",o]})]})]}),(0,b.jsxs)("div",{className:"changes-file-list",children:[e.map(a=>{var c;return(0,b.jsxs)("button",{className:"changes-file-item",onClick:()=>p(a),title:`View diff: ${a.filepath}`,children:[(0,b.jsx)("span",{className:"changes-file-icon",children:(c=a.filename).endsWith(".tsx")||c.endsWith(".jsx")?"⚛️":c.endsWith(".ts")||c.endsWith(".js")?"📘":c.endsWith(".css")?"🎨":c.endsWith(".md")?"📄":c.endsWith(".json")?"📋":"📝"}),(0,b.jsxs)("div",{className:"changes-file-info",children:[(0,b.jsx)("div",{className:"changes-file-name",children:a.filename}),(0,b.jsx)("div",{className:"changes-file-path",children:a.filepath})]}),(0,b.jsxs)("div",{className:"changes-file-diff",children:[a.additions>0&&(0,b.jsxs)("span",{className:"changes-additions",children:["+",a.additions]}),a.deletions>0&&(0,b.jsxs)("span",{className:"changes-deletions",children:["-",a.deletions]})]})]},a.filepath)}),0===e.length&&(0,b.jsx)("div",{style:{textAlign:"center",padding:"24px",color:"var(--text-muted)",fontSize:"13px"},children:"No file changes in this conversation"})]})]})]})}function r(){let a=function(){let[a,b]=(0,c.useState)([]),[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(!1),[j,k]=(0,c.useState)("Agent"),[l,m]=(0,c.useState)("connected"),[n,o]=(0,c.useState)(!0),[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)([]),[t,u]=(0,c.useState)(""),[v,w]=(0,c.useState)("planning"),[x,y]=(0,c.useState)(null),[z,A]=(0,c.useState)([]),[B,C]=(0,c.useState)(!1),D=(0,c.useRef)(null),E=(0,c.useRef)(null),F=(0,c.useRef)(""),G=(0,c.useRef)([]),H=(0,c.useCallback)(()=>{requestAnimationFrame(()=>{E.current?.scrollIntoView({behavior:"smooth"})})},[]),I=(0,c.useCallback)((a,b)=>{m(a),k(b)},[]),J=(0,c.useCallback)(async()=>{q(!0),b([]);try{let a=await fetch(`${e}/chat/history`),c=await a.json();c.turns&&c.turns.length>0?(o(!1),b(c.turns.map(a=>({role:a.role,content:a.content})))):o(!0)}catch{}finally{q(!1)}},[]),{artifactFiles:K,artifactPanelOpen:L,toggleArtifactPanel:M,openArtifactPanel:N,loadArtifacts:O}=function(a){let[b,d]=(0,c.useState)([]),[e,f]=(0,c.useState)(!1),g=(0,c.useRef)(""),h=(0,c.useRef)(null),i=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/v1/artifacts/active"),b=(await a.json()).files||[],c=JSON.stringify(b.map(a=>a.name+a.size+a.mtime));c!==g.current&&(g.current=c,d(b))}catch{}},[]),j=(0,c.useCallback)(()=>{f(a=>!a)},[]),k=(0,c.useCallback)(()=>{f(!0)},[]);return(0,c.useEffect)(()=>(e?(i(),h.current=setInterval(i,3e3)):h.current&&(clearInterval(h.current),h.current=null),()=>{h.current&&(clearInterval(h.current),h.current=null)}),[e,i]),(0,c.useEffect)(()=>{},[void 0,i]),{artifactFiles:b,artifactPanelOpen:e,toggleArtifactPanel:j,openArtifactPanel:k,loadArtifacts:i}}(),{changeFiles:P,changesPanelOpen:Q,toggleChangesPanel:R,loadChanges:S}=function(){let[a,b]=(0,c.useState)([]),[d,e]=(0,c.useState)(!1),f=(0,c.useRef)(""),g=(0,c.useRef)(null),h=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/v1/changes/active"),c=(await a.json()).changes||[],d=JSON.stringify(c.map(a=>`${a.filename}+${a.additions}-${a.deletions}`));d!==f.current&&(f.current=d,b(c))}catch{}},[]),i=(0,c.useCallback)(()=>{e(a=>!a)},[]);return(0,c.useEffect)(()=>(d?(h(),g.current=setInterval(h,5e3)):g.current&&(clearInterval(g.current),g.current=null),()=>{g.current&&(clearInterval(g.current),g.current=null)}),[d,h]),{changeFiles:a,changesPanelOpen:d,toggleChangesPanel:i,loadChanges:h}}(),{windows:T,conversations:U,activeConversation:V,cdpStatus:W,recentProjects:X,loadWindows:Y,selectWindow:Z,loadConversations:$,selectConversation:_,checkCdpStatus:aa,startCdpServer:ab,openNewWindow:ac,closeWindowByIndex:ad,loadRecentProjects:ae}=function(a,b,e){let[f,g]=(0,c.useState)([]),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)({active:!1,windowCount:0}),[n,o]=(0,c.useState)([]),p=(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/windows`),b=await a.json();g(b.windows||[])}catch{}},[]),q=(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/windows/cdp-status`),b=await a.json();return m({active:b.active,windowCount:b.windowCount,error:b.error}),b.active}catch{return m({active:!1,windowCount:0,error:"Failed to check"}),!1}},[]),r=(0,c.useCallback)(async(a,b)=>{try{let c=await fetch(`${d}/windows/cdp-start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectDir:a||".",killExisting:b||!1})}),e=await c.json();return e.success&&(await q(),await p()),e}catch(a){return{success:!1,message:a.message||"Failed to start CDP server"}}},[q,p]),s=(0,c.useCallback)(async a=>{try{let b=await fetch(`${d}/windows/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectDir:a})}),c=await b.json();return c.success&&(await p(),await q()),c}catch(a){return{success:!1,message:a.message||"Failed to open window"}}},[p,q]),t=(0,c.useCallback)(async a=>{try{let b=await fetch(`${d}/windows/close`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({index:a})}),c=await b.json();return c.success&&(await p(),await q()),c}catch(a){return{success:!1,message:a.message||"Failed to close window"}}},[p,q]),u=(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/conversations`),b=(await a.json()).conversations||[];i(b);let c=b.find(a=>a.active);c&&k(c)}catch{}},[]),v=(0,c.useCallback)(async c=>{try{b(!0),await fetch(`${d}/windows/select`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({index:c})}),await p(),await a(),await u(),e?.()}catch{}},[p,a,b,u,e]);return{windows:f,conversations:h,activeConversation:j,cdpStatus:l,recentProjects:n,loadWindows:p,selectWindow:v,loadConversations:u,selectConversation:(0,c.useCallback)(async c=>{try{let f=await fetch(`${d}/conversations/select`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:c})});if((await f.json()).success){b(!1);let f=0,g=async()=>{f++;try{let b=await fetch(`${d}/conversations`),g=(await b.json()).conversations||[],h=g.find(a=>a.active);if(h&&h.title===c||f>10){i(g),h&&k(h),await a(),e?.();return}}catch{}setTimeout(g,500)};g()}}catch{}},[a,b,e]),checkCdpStatus:q,startCdpServer:r,openNewWindow:s,closeWindowByIndex:t,loadRecentProjects:(0,c.useCallback)(async()=>{try{let a=await fetch(`${d}/windows/recent`),b=await a.json();o(b.recentProjects||[])}catch{}},[])}}(J,o,(0,c.useCallback)(()=>{N(),O(),S()},[N,O,S])),af=(0,c.useCallback)(async()=>{try{let a=await fetch(`${e}/chat/mode`),b=await a.json();b.mode&&w(b.mode)}catch{}},[]),ag=(0,c.useCallback)(async()=>{let a="planning"===v?"fast":"planning";w(a);try{let b=await fetch(`${e}/chat/mode`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:a})}),c=await b.json();c.mode&&w(c.mode)}catch{w(v)}},[v]),ah=(0,c.useCallback)(async()=>{try{let a=await fetch(`${e}/chat/agent`),b=await a.json();b.agent&&y(b.agent)}catch{}},[]),ai=(0,c.useCallback)(async()=>{C(!0);try{let a=await fetch(`${e}/chat/agent`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"list"})}),b=await a.json();b.agents&&A(b.agents),b.currentAgent&&y(b.currentAgent)}catch{}C(!1)},[]),aj=(0,c.useCallback)(async a=>{y(a);try{let b=await fetch(`${e}/chat/agent`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"switch",agent:a})}),c=await b.json();c.agent?y(c.agent):c.success||y(x)}catch{y(x)}},[x]),ak=(0,c.useCallback)(async()=>{try{let a=await fetch(`${e}/health`),b=await a.json();i(b.connected),I(b.connected?"connected":"disconnected",b.connected?"Agent":"Disconnected")}catch{i(!1),I("disconnected","Offline")}},[I]),al=(0,c.useCallback)(a=>{let{type:b,...c}=a;switch(b){case"tool_call":s(a=>{let d,e=a.findIndex(a=>"tool_call"===a.type&&a.data?.id===c.id);return e>=0?(d=[...a])[e]={type:b,data:c}:d=[...a,{type:b,data:c}],G.current=d,d});break;case"thinking":case"hitl":case"file_change":case"error":case"notification":s(a=>{let d=[...a,{type:b,data:c}];return G.current=d,d});break;case"response":u(c.content||""),F.current=c.content||"";break;case"status":I(c.isRunning?"streaming":"connected",c.isRunning?"Agent working...":"Agent");break;case"done":c.finalResponse&&(u(c.finalResponse),F.current=c.finalResponse),I("connected","Agent"),g(!1)}H()},[I,H]),am=(0,c.useCallback)(async a=>{if(f||!a.trim())return;o(!1);let c=a.trim();b(a=>[...a,{role:"user",content:c}]),g(!0),s([]),u(""),F.current="",G.current=[],I("streaming","Agent typing...");let d=new AbortController;D.current=d;try{let a=(await fetch(`${e}/chat/stream`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:c}),signal:d.signal})).body.getReader(),b=new TextDecoder,f="";for(;;){let{done:c,value:d}=await a.read();if(c)break;let e=(f+=b.decode(d,{stream:!0})).split("\n");for(let a of(f=e.pop(),e))if(a.startsWith("data: "))try{let b=JSON.parse(a.slice(6));al(b)}catch{}}}catch(a){"AbortError"!==a.name&&(s(b=>[...b,{type:"error",data:{message:a.message}}]),I("error","Error"))}finally{let a=F.current,c=[...G.current];g(!1),D.current=null,(a||c.length>0)&&b(b=>[...b,{role:"agent",content:a,steps:c}]),I("connected","Agent")}},[f,al,I]),an=(0,c.useCallback)(async()=>{D.current&&D.current.abort(),b([]),s([]),u(""),o(!0);try{let a=await fetch(`${e}/chat/new`,{method:"POST"});(await a.json()).success&&I("connected","New Chat")}catch{}},[I]),ao=(0,c.useCallback)(async()=>{try{await fetch(`${e}/chat/approve`,{method:"POST"}),I("streaming","Agent")}catch{}},[I]),ap=(0,c.useCallback)(async()=>{try{await fetch(`${e}/chat/reject`,{method:"POST"})}catch{}},[]);return(0,c.useEffect)(()=>{ak(),Y(),J(),$(),O(),af(),ah(),aa(),ae();let a=setInterval(ak,3e4),b=setInterval(aa,15e3);return()=>{clearInterval(a),clearInterval(b)}},[ak,Y,J,$,O,af,ah,aa,ae]),(0,c.useEffect)(H,[a,r,t,H]),{messages:a,isStreaming:f,isConnected:h,statusText:j,statusState:l,showWelcome:n,isLoadingHistory:p,currentSteps:r,currentResponse:t,windows:T,conversations:U,activeConversation:V,artifactFiles:K,artifactPanelOpen:L,changeFiles:P,changesPanelOpen:Q,currentMode:v,currentAgent:x,agents:z,isLoadingAgents:B,cdpStatus:W,recentProjects:X,sendMessage:am,startNewChat:an,approve:ao,reject:ap,selectWindow:Z,selectConversation:_,toggleArtifactPanel:M,openArtifactPanel:N,toggleChangesPanel:R,toggleMode:ag,fetchAgentList:ai,switchAgent:aj,startCdpServer:ab,openNewWindow:ac,closeWindowByIndex:ad,messagesEndRef:E,setShowWelcome:o}}();return(0,c.useEffect)(()=>{let b=b=>{"n"===b.key&&(b.ctrlKey||b.metaKey)&&(b.preventDefault(),a.startNewChat())};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[a]),(0,b.jsxs)("div",{className:"app-container",children:[(0,b.jsx)(f,{statusState:a.statusState,statusText:a.statusText,windows:a.windows,conversations:a.conversations,activeConversation:a.activeConversation,cdpStatus:a.cdpStatus,recentProjects:a.recentProjects,onSelectWindow:a.selectWindow,onSelectConversation:a.selectConversation,onNewChat:a.startNewChat,onStartCdp:a.startCdpServer,onOpenWindow:a.openNewWindow,onCloseWindow:a.closeWindowByIndex}),(0,b.jsxs)("main",{className:"messages-area",role:"log","aria-live":"polite",children:[a.isLoadingHistory?(0,b.jsxs)("div",{className:"history-loading",children:[(0,b.jsxs)("div",{className:"history-loading-header",children:[(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-avatar"}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"45%"}})]}),(0,b.jsxs)("div",{className:"history-loading-block",children:[(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"80%"}}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"65%"}}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"72%"}})]}),(0,b.jsx)("div",{className:"history-loading-header right",children:(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"35%"}})}),(0,b.jsxs)("div",{className:"history-loading-block",children:[(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"90%"}}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"55%"}}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"68%"}}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"40%"}})]}),(0,b.jsxs)("div",{className:"history-loading-header",children:[(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-avatar"}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"50%"}})]}),(0,b.jsxs)("div",{className:"history-loading-block",children:[(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"75%"}}),(0,b.jsx)("div",{className:"skeleton-shimmer skeleton-line",style:{width:"60%"}})]}),(0,b.jsx)("p",{className:"history-loading-text",children:"Loading conversation history…"})]}):a.showWelcome?(0,b.jsx)(g,{onQuickPrompt:a.sendMessage}):(0,b.jsx)(n,{messages:a.messages,currentSteps:a.currentSteps,currentResponse:a.currentResponse,isStreaming:a.isStreaming,onRetry:async()=>{try{await fetch("/api/v1/health"),window.location.reload()}catch{}}}),(0,b.jsx)("div",{ref:a.messagesEndRef})]}),(0,b.jsx)(o,{onSend:a.sendMessage,isStreaming:a.isStreaming,currentMode:a.currentMode,onToggleMode:a.toggleMode,currentAgent:a.currentAgent,agents:a.agents,isLoadingAgents:a.isLoadingAgents,onFetchAgents:a.fetchAgentList,onSwitchAgent:a.switchAgent,onToggleArtifacts:a.toggleArtifactPanel,artifactCount:a.artifactFiles.length,artifactPanelOpen:a.artifactPanelOpen,onToggleChanges:a.toggleChangesPanel,changesCount:a.changeFiles.length,changesPanelOpen:a.changesPanelOpen}),(0,b.jsx)(p,{open:a.artifactPanelOpen,onClose:a.toggleArtifactPanel,activeConversation:a.activeConversation,files:a.artifactFiles}),(0,b.jsx)(q,{open:a.changesPanelOpen,onClose:a.toggleChangesPanel,changes:a.changeFiles})]})}a.s(["default",()=>r],72079)}];
2
2
 
3
3
  //# sourceMappingURL=components_chat-container_tsx_fcbc457f._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[4276,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(11857);a.n(d("[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>"))},82509,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(11857);a.n(d("[project]/node_modules/next/dist/client/components/builtin/global-error.js"))},66114,a=>{"use strict";a.i(4276);var b=a.i(82509);a.n(b)}];
2
+
3
+ //# sourceMappingURL=node_modules_next_dist_client_components_builtin_global-error_ece394eb.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[69959,a=>{"use strict";var b=a.i(95044),c=a.i(62291),d=a.i(71306),e=a.i(79847),f=a.i(29432),g=a.i(75164),h=a.i(30106),i=a.i(18970),j=a.i(60644),k=a.i(56952),l=a.i(77341),m=a.i(94290),n=a.i(90588),o=a.i(33169),p=a.i(37111),q=a.i(41763),r=a.i(8950),s=a.i(91562),t=a.i(49670);a.i(75700);var u=a.i(276),v=a.i(40795),w=a.i(11614),x=a.i(21751),y=a.i(12213),z=a.i(10531),A=a.i(93695),B=a.i(1082),C=a.i(94367);a.i(70408);var D=a.i(22922),E=a.i(71717),F=a.i(85034),G=a.i(68113),H=a.i(66482);let I=["",{children:["/_not-found",{children:["__PAGE__",{},{metadata:{},page:[()=>a.r(2894),"[project]/app/not-found.tsx"]}]},{metadata:{}}]},{metadata:{icon:[async a=>[{url:(0,b.fillMetadataSegment)("//",await a.params,"favicon.ico")+`?${c.default.src.split("/").splice(-1)[0]}`,sizes:`${c.default.width}x${c.default.height}`,type:"image/x-icon"}]]},layout:[()=>a.r(70864),"[project]/app/layout.tsx"],"not-found":[()=>a.r(2894),"[project]/app/not-found.tsx"],forbidden:[()=>a.r(13718),"[project]/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>a.r(18198),"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js"],"global-error":[()=>a.r(94367),"[project]/app/global-error.tsx"]}],J={require:a.r.bind(a),loadChunk:a.l.bind(a)},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function L(a,b,c){var d;K.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let M=!!(0,h.getRequestMeta)(a,"minimalMode"),N="/_not-found/page";N=N.replace(/\/index$/,"")||"/";let O=await K.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:P,query:Q,params:R,pageIsDynamic:S,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,serverActionsManifest:W,clientReferenceManifest:X,subresourceIntegrityManifest:Y,prerenderManifest:Z,isDraftMode:$,resolvedPathname:_,revalidateOnlyGenerated:aa,routerServerContext:ab,nextConfig:ac,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,q.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,H.isInterceptionRouteAppPath)(_)?null:K.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,t.getBotType)(ak),am=(0,p.isHtmlBotRequest)(a),an=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ap=(0,r.getIsPossibleServerAction)(a),aq=(0,m.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(d=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:d.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,h.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;M&&(av=av&&!!au);let aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,p.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===K.isDev||!ay||"string"==typeof au||(az&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?av&&!M:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&K.isDev&&(aD=_),K.isDev||$||!ay||!ao||av||(0,k.stripFlightHeaders)(a.headers);let aE={...D,tree:I,GlobalError:C.default,handler:L,routeModule:K,__next_app__:J};W&&X&&(0,o.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,g.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let d=K.getVaryHeader(_,ae);b.setHeader("Vary",d);let f=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},k=(0,h.getRequestMeta)(a,"incrementalCache"),m=async({span:d,postponed:e,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,j.interopDefault)(aE),params:R,routeModule:K,page:N,postponed:e,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof e||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:require("path").join(process.cwd(),K.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:k,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ac.experimental.maxPostponedStateSize)},waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>K.onRequestError(a,b,d,e,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}};as&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=as),i&&(l.renderOpts.supportsDynamicResponse=!1);let m=await f(d,l),{metadata:n}=m,{cacheControl:o,headers:p={},fetchTags:q,fetchMetrics:r}=n;if(q&&(p[x.NEXT_CACHE_TAGS_HEADER]=q),a.fetchMetrics=r,ay&&(null==o?void 0:o.revalidate)===0&&!K.isDev&&!ar){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:m,headers:p,rscData:n.flightData,postponed:n.postponed,status:n.statusCode,segmentData:n.segmentData},cacheControl:o}},o=async({hasResolved:d,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let l,p=!1===K.isDev,q=d||b.writableEnded;if(ah&&aa&&!f&&!M)return(null==ab?void 0:ab.render404)?await ab.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(l=(0,v.parseFallbackField)(ai.fallback)),l===v.FallbackMode.PRERENDER&&(0,t.isBot)(ak)&&(!ar||am)&&(l=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(l!==v.FallbackMode.NOT_FOUND||f)&&(l=v.FallbackMode.BLOCKING_STATIC_RENDER),!M&&l!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!q&&!$&&S&&(p||!aj)){if((p||ai)&&l===v.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new A.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=p&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,d=p&&(null==ai?void 0:ai.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,K):null,f=await K.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:d,forceStaticRender:!1}),waitUntil:c.waitUntil,isMinimalMode:M});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ah||g||!au?void 0:au;if(az&&!M&&k&&av&&!j){let b=await k.get(_,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=K.getResponseCache(a);try{await b.revalidate(_,k,ar,!1,a=>o({...a,forceStaticRender:!0}),null,d,c.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=p&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,K):null;return m({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},p=async d=>{var f,g,i,j,k;let l,n=await K.handleResponse({cacheKey:aC,responseGenerator:a=>o({span:d,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:c.waitUntil,isMinimalMode:M});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!n){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof n.value.postponed;ay&&!av&&(!p||an)&&(M||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=n;if(au)l={revalidate:0,expire:void 0};else if(av)l={revalidate:0,expire:void 0};else if(!K.isDev)if($)l={revalidate:0,expire:void 0};else if(ay){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??ac.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(n.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];M&&ay&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:n.cacheControl}))}let r=az?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(n,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(M&&ay||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(M&&ay&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ao&&ar||(b.statusCode=q.status),!M&&q.status&&E.RedirectStatusCode[q.status]&&ao&&(b.statusCode=200),p&&!av&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:n.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let v=q.html;if(!p||M||ao)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:n.cacheControl});if(as)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),m({span:d,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(i.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},p));await p(aH)}catch(b){throw b instanceof A.NoFallbackError||await K.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}a.s(["__next_app__",0,J,"handler",()=>L,"routeModule",0,K],32629),a.i(32629),a.s(["ClientPageRoot",()=>D.ClientPageRoot,"ClientSegmentRoot",()=>D.ClientSegmentRoot,"Fragment",()=>D.Fragment,"GlobalError",()=>C.default,"HTTPAccessFallbackBoundary",()=>D.HTTPAccessFallbackBoundary,"LayoutRouter",()=>D.LayoutRouter,"Postpone",()=>D.Postpone,"RenderFromTemplateContext",()=>D.RenderFromTemplateContext,"RootLayoutBoundary",()=>D.RootLayoutBoundary,"SegmentViewNode",()=>D.SegmentViewNode,"SegmentViewStateNode",()=>D.SegmentViewStateNode,"__next_app__",0,J,"actionAsyncStorage",()=>D.actionAsyncStorage,"captureOwnerStack",()=>D.captureOwnerStack,"collectSegmentData",()=>D.collectSegmentData,"createElement",()=>D.createElement,"createMetadataComponents",()=>D.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>D.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>D.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>D.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>D.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>D.createTemporaryReferenceSet,"decodeAction",()=>D.decodeAction,"decodeFormState",()=>D.decodeFormState,"decodeReply",()=>D.decodeReply,"handler",()=>L,"patchFetch",()=>D.patchFetch,"preconnect",()=>D.preconnect,"preloadFont",()=>D.preloadFont,"preloadStyle",()=>D.preloadStyle,"prerender",()=>D.prerender,"renderToReadableStream",()=>D.renderToReadableStream,"routeModule",0,K,"serverHooks",()=>D.serverHooks,"taintObjectReference",()=>D.taintObjectReference,"workAsyncStorage",()=>D.workAsyncStorage,"workUnitAsyncStorage",()=>D.workUnitAsyncStorage],69959)}];
1
+ module.exports=[73984,a=>{"use strict";var b=a.i(95044),c=a.i(62291),d=a.i(71306),e=a.i(79847),f=a.i(29432),g=a.i(75164),h=a.i(30106),i=a.i(18970),j=a.i(60644),k=a.i(56952),l=a.i(77341),m=a.i(94290),n=a.i(90588),o=a.i(33169),p=a.i(37111),q=a.i(41763),r=a.i(8950),s=a.i(91562),t=a.i(49670);a.i(75700);var u=a.i(276),v=a.i(40795),w=a.i(11614),x=a.i(21751),y=a.i(12213),z=a.i(10531),A=a.i(93695),B=a.i(1082),C=a.i(69726);a.i(70408);var D=a.i(22922),E=a.i(71717),F=a.i(85034),G=a.i(68113),H=a.i(66482);let I=["",{children:["/_not-found",{children:["__PAGE__",{},{metadata:{},page:[()=>a.r(2894),"[project]/app/not-found.tsx"]}]},{metadata:{}}]},{metadata:{icon:[async a=>[{url:(0,b.fillMetadataSegment)("//",await a.params,"favicon.ico")+`?${c.default.src.split("/").splice(-1)[0]}`,sizes:`${c.default.width}x${c.default.height}`,type:"image/x-icon"}]]},layout:[()=>a.r(70864),"[project]/app/layout.tsx"],"not-found":[()=>a.r(2894),"[project]/app/not-found.tsx"],forbidden:[()=>a.r(13718),"[project]/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>a.r(18198),"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js"]}],J={require:a.r.bind(a),loadChunk:a.l.bind(a)},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function L(a,b,c){var d;K.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let M=!!(0,h.getRequestMeta)(a,"minimalMode"),N="/_not-found/page";N=N.replace(/\/index$/,"")||"/";let O=await K.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:P,query:Q,params:R,pageIsDynamic:S,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,serverActionsManifest:W,clientReferenceManifest:X,subresourceIntegrityManifest:Y,prerenderManifest:Z,isDraftMode:$,resolvedPathname:_,revalidateOnlyGenerated:aa,routerServerContext:ab,nextConfig:ac,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,q.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,H.isInterceptionRouteAppPath)(_)?null:K.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,t.getBotType)(ak),am=(0,p.isHtmlBotRequest)(a),an=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ap=(0,r.getIsPossibleServerAction)(a),aq=(0,m.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(d=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:d.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,h.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;M&&(av=av&&!!au);let aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,p.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===K.isDev||!ay||"string"==typeof au||(az&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?av&&!M:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&K.isDev&&(aD=_),K.isDev||$||!ay||!ao||av||(0,k.stripFlightHeaders)(a.headers);let aE={...D,tree:I,GlobalError:C.default,handler:L,routeModule:K,__next_app__:J};W&&X&&(0,o.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,g.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let d=K.getVaryHeader(_,ae);b.setHeader("Vary",d);let f=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},k=(0,h.getRequestMeta)(a,"incrementalCache"),m=async({span:d,postponed:e,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,j.interopDefault)(aE),params:R,routeModule:K,page:N,postponed:e,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof e||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:require("path").join(process.cwd(),K.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:k,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ac.experimental.maxPostponedStateSize)},waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>K.onRequestError(a,b,d,e,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}};as&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=as),i&&(l.renderOpts.supportsDynamicResponse=!1);let m=await f(d,l),{metadata:n}=m,{cacheControl:o,headers:p={},fetchTags:q,fetchMetrics:r}=n;if(q&&(p[x.NEXT_CACHE_TAGS_HEADER]=q),a.fetchMetrics=r,ay&&(null==o?void 0:o.revalidate)===0&&!K.isDev&&!ar){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:m,headers:p,rscData:n.flightData,postponed:n.postponed,status:n.statusCode,segmentData:n.segmentData},cacheControl:o}},o=async({hasResolved:d,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let l,p=!1===K.isDev,q=d||b.writableEnded;if(ah&&aa&&!f&&!M)return(null==ab?void 0:ab.render404)?await ab.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(l=(0,v.parseFallbackField)(ai.fallback)),l===v.FallbackMode.PRERENDER&&(0,t.isBot)(ak)&&(!ar||am)&&(l=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(l!==v.FallbackMode.NOT_FOUND||f)&&(l=v.FallbackMode.BLOCKING_STATIC_RENDER),!M&&l!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!q&&!$&&S&&(p||!aj)){if((p||ai)&&l===v.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new A.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=p&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,d=p&&(null==ai?void 0:ai.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,K):null,f=await K.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:d,forceStaticRender:!1}),waitUntil:c.waitUntil,isMinimalMode:M});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ah||g||!au?void 0:au;if(az&&!M&&k&&av&&!j){let b=await k.get(_,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=K.getResponseCache(a);try{await b.revalidate(_,k,ar,!1,a=>o({...a,forceStaticRender:!0}),null,d,c.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=p&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,K):null;return m({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},p=async d=>{var f,g,i,j,k;let l,n=await K.handleResponse({cacheKey:aC,responseGenerator:a=>o({span:d,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:c.waitUntil,isMinimalMode:M});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!n){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof n.value.postponed;ay&&!av&&(!p||an)&&(M||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=n;if(au)l={revalidate:0,expire:void 0};else if(av)l={revalidate:0,expire:void 0};else if(!K.isDev)if($)l={revalidate:0,expire:void 0};else if(ay){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??ac.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(n.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];M&&ay&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:n.cacheControl}))}let r=az?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(n,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(M&&ay||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(M&&ay&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ao&&ar||(b.statusCode=q.status),!M&&q.status&&E.RedirectStatusCode[q.status]&&ao&&(b.statusCode=200),p&&!av&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:n.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let v=q.html;if(!p||M||ao)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:n.cacheControl});if(as)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),m({span:d,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(i.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},p));await p(aH)}catch(b){throw b instanceof A.NoFallbackError||await K.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}a.s(["__next_app__",0,J,"handler",()=>L,"routeModule",0,K],96449),a.i(96449),a.s(["ClientPageRoot",()=>D.ClientPageRoot,"ClientSegmentRoot",()=>D.ClientSegmentRoot,"Fragment",()=>D.Fragment,"GlobalError",()=>C.default,"HTTPAccessFallbackBoundary",()=>D.HTTPAccessFallbackBoundary,"LayoutRouter",()=>D.LayoutRouter,"Postpone",()=>D.Postpone,"RenderFromTemplateContext",()=>D.RenderFromTemplateContext,"RootLayoutBoundary",()=>D.RootLayoutBoundary,"SegmentViewNode",()=>D.SegmentViewNode,"SegmentViewStateNode",()=>D.SegmentViewStateNode,"__next_app__",0,J,"actionAsyncStorage",()=>D.actionAsyncStorage,"captureOwnerStack",()=>D.captureOwnerStack,"collectSegmentData",()=>D.collectSegmentData,"createElement",()=>D.createElement,"createMetadataComponents",()=>D.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>D.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>D.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>D.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>D.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>D.createTemporaryReferenceSet,"decodeAction",()=>D.decodeAction,"decodeFormState",()=>D.decodeFormState,"decodeReply",()=>D.decodeReply,"handler",()=>L,"patchFetch",()=>D.patchFetch,"preconnect",()=>D.preconnect,"preloadFont",()=>D.preloadFont,"preloadStyle",()=>D.preloadStyle,"prerender",()=>D.prerender,"renderToReadableStream",()=>D.renderToReadableStream,"routeModule",0,K,"serverHooks",()=>D.serverHooks,"taintObjectReference",()=>D.taintObjectReference,"workAsyncStorage",()=>D.workAsyncStorage,"workUnitAsyncStorage",()=>D.workUnitAsyncStorage],73984)}];
3
3
 
4
- //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-page_39f173ba.js.map
4
+ //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-page_7f45f9bf.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[69726,a=>{a.n(a.i(66114))},79835,a=>{a.n(a.i(25556))},5269,a=>{"use strict";var b=a.i(95044),c=a.i(62291),d=a.i(71306),e=a.i(79847),f=a.i(29432),g=a.i(75164),h=a.i(30106),i=a.i(18970),j=a.i(60644),k=a.i(56952),l=a.i(77341),m=a.i(94290),n=a.i(90588),o=a.i(33169),p=a.i(37111),q=a.i(41763),r=a.i(8950),s=a.i(91562),t=a.i(49670);a.i(75700);var u=a.i(276),v=a.i(40795),w=a.i(11614),x=a.i(21751),y=a.i(12213),z=a.i(10531),A=a.i(93695),B=a.i(1082),C=a.i(69726);a.i(70408);var D=a.i(22922),E=a.i(71717),F=a.i(85034),G=a.i(68113),H=a.i(66482);let I=["",{children:["__PAGE__",{},{metadata:{},page:[()=>a.r(79835),"[project]/node_modules/next/dist/client/components/builtin/app-error.js"]}]},{metadata:{icon:[async a=>[{url:(0,b.fillMetadataSegment)("//",await a.params,"favicon.ico")+`?${c.default.src.split("/").splice(-1)[0]}`,sizes:`${c.default.width}x${c.default.height}`,type:"image/x-icon"}]]}}],J={require:a.r.bind(a),loadChunk:a.l.bind(a)},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/_global-error/page",pathname:"/_global-error",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function L(a,b,c){var d;K.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let M=!!(0,h.getRequestMeta)(a,"minimalMode"),N="/_global-error/page";N=N.replace(/\/index$/,"")||"/";let O=await K.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:P,query:Q,params:R,pageIsDynamic:S,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,serverActionsManifest:W,clientReferenceManifest:X,subresourceIntegrityManifest:Y,prerenderManifest:Z,isDraftMode:$,resolvedPathname:_,revalidateOnlyGenerated:aa,routerServerContext:ab,nextConfig:ac,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,q.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,H.isInterceptionRouteAppPath)(_)?null:K.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,t.getBotType)(ak),am=(0,p.isHtmlBotRequest)(a),an=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ap=(0,r.getIsPossibleServerAction)(a),aq=(0,m.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(d=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:d.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,h.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;M&&(av=av&&!!au);let aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,p.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===K.isDev||!ay||"string"==typeof au||(az&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?av&&!M:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&K.isDev&&(aD=_),K.isDev||$||!ay||!ao||av||(0,k.stripFlightHeaders)(a.headers);let aE={...D,tree:I,GlobalError:C.default,handler:L,routeModule:K,__next_app__:J};W&&X&&(0,o.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,g.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let d=K.getVaryHeader(_,ae);b.setHeader("Vary",d);let f=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},k=(0,h.getRequestMeta)(a,"incrementalCache"),m=async({span:d,postponed:e,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,j.interopDefault)(aE),params:R,routeModule:K,page:N,postponed:e,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof e||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:require("path").join(process.cwd(),K.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:k,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ac.experimental.maxPostponedStateSize)},waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>K.onRequestError(a,b,d,e,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}};as&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=as),i&&(l.renderOpts.supportsDynamicResponse=!1);let m=await f(d,l),{metadata:n}=m,{cacheControl:o,headers:p={},fetchTags:q,fetchMetrics:r}=n;if(q&&(p[x.NEXT_CACHE_TAGS_HEADER]=q),a.fetchMetrics=r,ay&&(null==o?void 0:o.revalidate)===0&&!K.isDev&&!ar){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
1
+ module.exports=[79835,a=>{a.n(a.i(25556))},5269,a=>{"use strict";var b=a.i(95044),c=a.i(62291),d=a.i(71306),e=a.i(79847),f=a.i(29432),g=a.i(75164),h=a.i(30106),i=a.i(18970),j=a.i(60644),k=a.i(56952),l=a.i(77341),m=a.i(94290),n=a.i(90588),o=a.i(33169),p=a.i(37111),q=a.i(41763),r=a.i(8950),s=a.i(91562),t=a.i(49670);a.i(75700);var u=a.i(276),v=a.i(40795),w=a.i(11614),x=a.i(21751),y=a.i(12213),z=a.i(10531),A=a.i(93695),B=a.i(1082),C=a.i(69726);a.i(70408);var D=a.i(22922),E=a.i(71717),F=a.i(85034),G=a.i(68113),H=a.i(66482);let I=["",{children:["__PAGE__",{},{metadata:{},page:[()=>a.r(79835),"[project]/node_modules/next/dist/client/components/builtin/app-error.js"]}]},{metadata:{icon:[async a=>[{url:(0,b.fillMetadataSegment)("//",await a.params,"favicon.ico")+`?${c.default.src.split("/").splice(-1)[0]}`,sizes:`${c.default.width}x${c.default.height}`,type:"image/x-icon"}]]}}],J={require:a.r.bind(a),loadChunk:a.l.bind(a)},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/_global-error/page",pathname:"/_global-error",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function L(a,b,c){var d;K.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let M=!!(0,h.getRequestMeta)(a,"minimalMode"),N="/_global-error/page";N=N.replace(/\/index$/,"")||"/";let O=await K.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:P,query:Q,params:R,pageIsDynamic:S,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,serverActionsManifest:W,clientReferenceManifest:X,subresourceIntegrityManifest:Y,prerenderManifest:Z,isDraftMode:$,resolvedPathname:_,revalidateOnlyGenerated:aa,routerServerContext:ab,nextConfig:ac,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,q.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,H.isInterceptionRouteAppPath)(_)?null:K.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,t.getBotType)(ak),am=(0,p.isHtmlBotRequest)(a),an=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ap=(0,r.getIsPossibleServerAction)(a),aq=(0,m.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(d=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:d.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,h.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;M&&(av=av&&!!au);let aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,p.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===K.isDev||!ay||"string"==typeof au||(az&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?av&&!M:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&K.isDev&&(aD=_),K.isDev||$||!ay||!ao||av||(0,k.stripFlightHeaders)(a.headers);let aE={...D,tree:I,GlobalError:C.default,handler:L,routeModule:K,__next_app__:J};W&&X&&(0,o.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,g.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let d=K.getVaryHeader(_,ae);b.setHeader("Vary",d);let f=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},k=(0,h.getRequestMeta)(a,"incrementalCache"),m=async({span:d,postponed:e,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,j.interopDefault)(aE),params:R,routeModule:K,page:N,postponed:e,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof e||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:require("path").join(process.cwd(),K.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:k,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ac.experimental.maxPostponedStateSize)},waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>K.onRequestError(a,b,d,e,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}};as&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=as),i&&(l.renderOpts.supportsDynamicResponse=!1);let m=await f(d,l),{metadata:n}=m,{cacheControl:o,headers:p={},fetchTags:q,fetchMetrics:r}=n;if(q&&(p[x.NEXT_CACHE_TAGS_HEADER]=q),a.fetchMetrics=r,ay&&(null==o?void 0:o.revalidate)===0&&!K.isDev&&!ar){let a=n.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
2
  see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:m,headers:p,rscData:n.flightData,postponed:n.postponed,status:n.statusCode,segmentData:n.segmentData},cacheControl:o}},o=async({hasResolved:d,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let l,p=!1===K.isDev,q=d||b.writableEnded;if(ah&&aa&&!f&&!M)return(null==ab?void 0:ab.render404)?await ab.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(l=(0,v.parseFallbackField)(ai.fallback)),l===v.FallbackMode.PRERENDER&&(0,t.isBot)(ak)&&(!ar||am)&&(l=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(l!==v.FallbackMode.NOT_FOUND||f)&&(l=v.FallbackMode.BLOCKING_STATIC_RENDER),!M&&l!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!q&&!$&&S&&(p||!aj)){if((p||ai)&&l===v.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new A.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=p&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,d=p&&(null==ai?void 0:ai.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,K):null,f=await K.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:d,forceStaticRender:!1}),waitUntil:c.waitUntil,isMinimalMode:M});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ah||g||!au?void 0:au;if(az&&!M&&k&&av&&!j){let b=await k.get(_,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=K.getResponseCache(a);try{await b.revalidate(_,k,ar,!1,a=>o({...a,forceStaticRender:!0}),null,d,c.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=p&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,K):null;return m({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},p=async d=>{var f,g,i,j,k;let l,n=await K.handleResponse({cacheKey:aC,responseGenerator:a=>o({span:d,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:c.waitUntil,isMinimalMode:M});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!n){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof n.value.postponed;ay&&!av&&(!p||an)&&(M||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=n;if(au)l={revalidate:0,expire:void 0};else if(av)l={revalidate:0,expire:void 0};else if(!K.isDev)if($)l={revalidate:0,expire:void 0};else if(ay){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??ac.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(n.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];M&&ay&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:n.cacheControl}))}let r=az?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(n,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(M&&ay||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(M&&ay&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ao&&ar||(b.statusCode=q.status),!M&&q.status&&E.RedirectStatusCode[q.status]&&ao&&(b.statusCode=200),p&&!av&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:n.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let v=q.html;if(!p||M||ao)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:n.cacheControl});if(as)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),m({span:d,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(i.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},p));await p(aH)}catch(b){throw b instanceof A.NoFallbackError||await K.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}a.s(["__next_app__",0,J,"handler",()=>L,"routeModule",0,K],88220),a.i(88220),a.s(["ClientPageRoot",()=>D.ClientPageRoot,"ClientSegmentRoot",()=>D.ClientSegmentRoot,"Fragment",()=>D.Fragment,"GlobalError",()=>C.default,"HTTPAccessFallbackBoundary",()=>D.HTTPAccessFallbackBoundary,"LayoutRouter",()=>D.LayoutRouter,"Postpone",()=>D.Postpone,"RenderFromTemplateContext",()=>D.RenderFromTemplateContext,"RootLayoutBoundary",()=>D.RootLayoutBoundary,"SegmentViewNode",()=>D.SegmentViewNode,"SegmentViewStateNode",()=>D.SegmentViewStateNode,"__next_app__",0,J,"actionAsyncStorage",()=>D.actionAsyncStorage,"captureOwnerStack",()=>D.captureOwnerStack,"collectSegmentData",()=>D.collectSegmentData,"createElement",()=>D.createElement,"createMetadataComponents",()=>D.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>D.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>D.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>D.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>D.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>D.createTemporaryReferenceSet,"decodeAction",()=>D.decodeAction,"decodeFormState",()=>D.decodeFormState,"decodeReply",()=>D.decodeReply,"handler",()=>L,"patchFetch",()=>D.patchFetch,"preconnect",()=>D.preconnect,"preloadFont",()=>D.preloadFont,"preloadStyle",()=>D.preloadStyle,"prerender",()=>D.prerender,"renderToReadableStream",()=>D.renderToReadableStream,"routeModule",0,K,"serverHooks",()=>D.serverHooks,"taintObjectReference",()=>D.taintObjectReference,"workAsyncStorage",()=>D.workAsyncStorage,"workUnitAsyncStorage",()=>D.workUnitAsyncStorage],5269)}];
3
3
 
4
- //# sourceMappingURL=node_modules_next_dist_f183c70b._.js.map
4
+ //# sourceMappingURL=node_modules_next_dist_f21d913a._.js.map
@@ -8,10 +8,10 @@ globalThis.__BUILD_MANIFEST = {
8
8
  ],
9
9
  "lowPriorityFiles": [],
10
10
  "rootMainFiles": [
11
- "static/chunks/f7c83373e6561461.js",
11
+ "static/chunks/b9a0fabf54a78ef2.js",
12
12
  "static/chunks/f2f58a7e93290fbb.js",
13
- "static/chunks/2317ab948a7d90a4.js",
14
- "static/chunks/turbopack-3f34081d758747ed.js"
13
+ "static/chunks/e2ccf5908cad5a88.js",
14
+ "static/chunks/turbopack-7b5dc393c5d3964b.js"
15
15
  ]
16
16
  };
17
17
  globalThis.__BUILD_MANIFEST.lowPriorityFiles = [
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--standalone_build--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/f7c83373e6561461.js"/><script src="/_next/static/chunks/f2f58a7e93290fbb.js" async=""></script><script src="/_next/static/chunks/2317ab948a7d90a4.js" async=""></script><script src="/_next/static/chunks/turbopack-3f34081d758747ed.js" async=""></script><script src="/_next/static/chunks/2f236954d6a65e12.js" async=""></script><title>500: Internal Server Error.</title><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
- @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/f7c83373e6561461.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"standalone-build\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"c:I[27201,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"IconMark\"]\n6:null\na:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Lc\",\"1\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--standalone_build--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/b9a0fabf54a78ef2.js"/><script src="/_next/static/chunks/f2f58a7e93290fbb.js" async=""></script><script src="/_next/static/chunks/e2ccf5908cad5a88.js" async=""></script><script src="/_next/static/chunks/turbopack-7b5dc393c5d3964b.js" async=""></script><script src="/_next/static/chunks/2f236954d6a65e12.js" async=""></script><title>500: Internal Server Error.</title><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/b9a0fabf54a78ef2.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"standalone-build\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"c:I[27201,[\"/_next/static/chunks/2f236954d6a65e12.js\"],\"IconMark\"]\n6:null\na:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Lc\",\"1\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"WGyOxPQL7/he3+2spF3eaNRMlvftKuB7XY4Jc1kELtI=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"9KGrg6Fh6PBaWGQrIzB3Q92cimq3HbNdBAjkTcIcS3w=\"\n}"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "node": {},
3
3
  "edge": {},
4
- "encryptionKey": "WGyOxPQL7/he3+2spF3eaNRMlvftKuB7XY4Jc1kELtI="
4
+ "encryptionKey": "9KGrg6Fh6PBaWGQrIzB3Q92cimq3HbNdBAjkTcIcS3w="
5
5
  }
@@ -8,8 +8,62 @@ export const dynamic = 'force-dynamic';
8
8
 
9
9
  const BRAIN_DIR = path.join(os.homedir(), '.gemini', 'antigravity', 'brain');
10
10
 
11
+ const MIME_TYPES: Record<string, string> = {
12
+ '.md': 'text/markdown; charset=utf-8',
13
+ '.txt': 'text/plain; charset=utf-8',
14
+ '.json': 'application/json; charset=utf-8',
15
+ '.html': 'text/html; charset=utf-8',
16
+ '.css': 'text/css; charset=utf-8',
17
+ '.js': 'text/javascript; charset=utf-8',
18
+ '.ts': 'text/typescript; charset=utf-8',
19
+ '.tsx': 'text/typescript; charset=utf-8',
20
+ '.yaml': 'text/yaml; charset=utf-8',
21
+ '.yml': 'text/yaml; charset=utf-8',
22
+ };
23
+
24
+ /**
25
+ * Search ALL brain conversation directories for a file matching the given name.
26
+ * Returns the first match found (most recently modified directory first).
27
+ */
28
+ function findFileInBrain(fileName: string): string | null {
29
+ try {
30
+ if (!fs.existsSync(BRAIN_DIR)) return null;
31
+
32
+ const entries = fs.readdirSync(BRAIN_DIR, { withFileTypes: true });
33
+
34
+ // Sort directories by modification time (newest first)
35
+ const dirs = entries
36
+ .filter(e => e.isDirectory() && !e.name.startsWith('.'))
37
+ .map(e => ({
38
+ name: e.name,
39
+ mtime: fs.statSync(path.join(BRAIN_DIR, e.name)).mtimeMs,
40
+ }))
41
+ .sort((a, b) => b.mtime - a.mtime);
42
+
43
+ // If we have a preferred conversation ID, check it first
44
+ if (ctx.activeConversationId) {
45
+ const preferred = path.join(BRAIN_DIR, ctx.activeConversationId, fileName);
46
+ if (fs.existsSync(preferred)) return preferred;
47
+ }
48
+
49
+ // Otherwise search all directories
50
+ for (const dir of dirs) {
51
+ const filePath = path.join(BRAIN_DIR, dir.name, fileName);
52
+ if (fs.existsSync(filePath)) return filePath;
53
+ }
54
+
55
+ return null;
56
+ } catch {
57
+ return null;
58
+ }
59
+ }
60
+
11
61
  /**
12
62
  * GET /api/v1/artifacts/active/[filename] — serve a file from the active conversation.
63
+ *
64
+ * Tries to find the file in:
65
+ * 1. The ctx.activeConversationId brain directory
66
+ * 2. Any brain directory (fallback search, newest first)
13
67
  */
14
68
  export async function GET(
15
69
  _request: NextRequest,
@@ -17,34 +71,30 @@ export async function GET(
17
71
  ) {
18
72
  const { filename } = await params;
19
73
 
20
- if (!ctx.activeConversationId) {
21
- return NextResponse.json({ error: 'No active conversation' }, { status: 404 });
74
+ // Security: prevent directory traversal
75
+ if (filename.includes('..') || filename.startsWith('/')) {
76
+ return NextResponse.json({ error: 'Invalid path' }, { status: 403 });
22
77
  }
23
78
 
24
- const filePath = path.join(BRAIN_DIR, ctx.activeConversationId, filename);
79
+ const filePath = findFileInBrain(filename);
80
+ if (!filePath) {
81
+ return NextResponse.json({ error: 'File not found' }, { status: 404 });
82
+ }
83
+
84
+ // Security: ensure resolved path is within BRAIN_DIR
25
85
  const resolved = path.resolve(filePath);
26
- const expected = path.resolve(path.join(BRAIN_DIR, ctx.activeConversationId));
27
- if (!resolved.startsWith(expected)) {
86
+ if (!resolved.startsWith(path.resolve(BRAIN_DIR))) {
28
87
  return NextResponse.json({ error: 'Invalid path' }, { status: 403 });
29
88
  }
30
89
 
31
- if (!fs.existsSync(resolved)) {
32
- return NextResponse.json({ error: 'File not found' }, { status: 404 });
90
+ try {
91
+ const ext = path.extname(filename).toLowerCase();
92
+ const contentType = MIME_TYPES[ext] || 'text/plain; charset=utf-8';
93
+ const content = fs.readFileSync(resolved, 'utf-8');
94
+ return new NextResponse(content, {
95
+ headers: { 'Content-Type': contentType },
96
+ });
97
+ } catch (err: any) {
98
+ return NextResponse.json({ error: err.message }, { status: 500 });
33
99
  }
34
-
35
- const content = fs.readFileSync(resolved, 'utf-8');
36
- const ext = path.extname(filename).toLowerCase();
37
- const mimeTypes: Record<string, string> = {
38
- '.md': 'text/markdown',
39
- '.json': 'application/json',
40
- '.ts': 'text/typescript',
41
- '.tsx': 'text/typescript',
42
- '.css': 'text/css',
43
- '.txt': 'text/plain',
44
- };
45
- const contentType = mimeTypes[ext] || 'text/plain';
46
-
47
- return new NextResponse(content, {
48
- headers: { 'Content-Type': contentType },
49
- });
50
100
  }