@seqyuan/annovibe 0.8.14 → 0.8.15

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 (56) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  25. package/.next/server/app/api/internal/runtime/route.js +1 -1
  26. package/.next/server/app/api/version/route.js +1 -1
  27. package/.next/server/app/index.html +1 -1
  28. package/.next/server/app/index.rsc +2 -2
  29. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  30. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  32. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  34. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/login.html +1 -1
  36. package/.next/server/app/login.rsc +1 -1
  37. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  38. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  39. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  43. package/.next/server/app/page.js +3 -3
  44. package/.next/server/app/page_client-reference-manifest.js +1 -1
  45. package/.next/server/app-paths-manifest.json +1 -1
  46. package/.next/server/chunks/7601.js +4 -4
  47. package/.next/server/middleware-build-manifest.js +1 -1
  48. package/.next/server/pages/404.html +1 -1
  49. package/.next/server/pages/500.html +1 -1
  50. package/.next/server/server-reference-manifest.json +1 -1
  51. package/.next/static/chunks/app/{page-e0ad11ee7003214a.js → page-2b9d326c910bfdb1.js} +3 -3
  52. package/.next/trace +75 -75
  53. package/.next/trace-build +1 -1
  54. package/package.json +1 -1
  55. /package/.next/static/{QvZYZknhDLA2wQJwpT60o → sll--ryodjD6y3JTZNo1d}/_buildManifest.js +0 -0
  56. /package/.next/static/{QvZYZknhDLA2wQJwpT60o → sll--ryodjD6y3JTZNo1d}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{51564:(e,t,r)=>{Promise.resolve().then(r.bind(r,62960))},62960:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>nb});var n=r(95155),o=r(12115),i=r(73321);let l="var(--text-dim)";function s({size:e=14,open:t=!1}){return t?(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M1 4.5A1 1 0 0 1 2 3.5H5.5L7 5h7.5v1H1V4.5Z",fill:l}),(0,n.jsx)("path",{d:"M1 6h14.5L14 13H2L1 6Z",stroke:l,strokeWidth:"1",fill:l,fillOpacity:"0.12"})]}):(0,n.jsx)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M1 4.5A1 1 0 0 1 2 3.5H5.5L7 5H14a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4.5Z",stroke:l,strokeWidth:"1",fill:l,fillOpacity:"0.1"})})}function a({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M3 2h7l3 3v9H3V2Z",stroke:l,strokeWidth:"1",fill:l,fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:l,strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]})}function d({label:e,size:t=14}){let r=t/14;return(0,n.jsxs)("svg",{width:t,height:t,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("text",{x:"7",y:"9.5",textAnchor:"middle",fontSize:3.4*r,fontFamily:"var(--font-mono), monospace",fontWeight:"600",fill:l,letterSpacing:"0",children:e})]})}function c({size:e=14}){return(0,n.jsx)(d,{label:"TS",size:e})}function u({size:e=14}){return(0,n.jsx)(d,{label:"TSX",size:e})}function p({size:e=14}){return(0,n.jsx)(d,{label:"JS",size:e})}function h({size:e=14}){return(0,n.jsx)(d,{label:"JSX",size:e})}function x({size:e=14}){return(0,n.jsx)(d,{label:"PY",size:e})}function g({size:e=14}){return(0,n.jsx)(d,{label:"{}",size:e})}function f({size:e=14}){return(0,n.jsx)(d,{label:"CSS",size:e})}function v({size:e=14}){return(0,n.jsx)(d,{label:"SC",size:e})}function m({size:e=14}){return(0,n.jsx)(d,{label:"HTM",size:e})}function y({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M3.5 9.5V7l1.5 1.5L6.5 7v2.5",stroke:l,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M8 7v2.5M7 9l1 1.5 1-1.5",stroke:l,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})}function b({size:e=14}){return(0,n.jsx)(d,{label:"YML",size:e})}function j({size:e=14}){return(0,n.jsx)(d,{label:"TOM",size:e})}function k({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M4 7.5l2 1.5-2 1.5",stroke:l,strokeWidth:"0.95",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M7.5 10.5h2.5",stroke:l,strokeWidth:"0.95",strokeLinecap:"round"})]})}function w({size:e=14}){return(0,n.jsx)(d,{label:"RS",size:e})}function S({size:e=14}){return(0,n.jsx)(d,{label:"GO",size:e})}function C({size:e=14}){return(0,n.jsx)(d,{label:"SQL",size:e})}function T({size:e=14}){return(0,n.jsx)(d,{label:"GQL",size:e})}function z({size:e=14}){return(0,n.jsx)(d,{label:"TF",size:e})}function L({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("rect",{x:"3.5",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:l,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"6",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:l,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"3.5",y:"8.5",width:"2",height:"1.5",rx:"0.3",stroke:l,strokeWidth:"0.8"})]})}function I({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5.5",cy:"8.5",r:"1.5",stroke:l,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 8.5h2.5M8.5 8.5v1.5",stroke:l,strokeWidth:"0.9",strokeLinecap:"round"})]})}function M({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5",cy:"6.5",r:"1",stroke:l,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"9",cy:"6.5",r:"1",stroke:l,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"5",cy:"10",r:"1",stroke:l,strokeWidth:"0.85"}),(0,n.jsx)("path",{d:"M5 7.5V9",stroke:l,strokeWidth:"0.85",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M9 7.5v.5a2 2 0 0 1-2 2H6",stroke:l,strokeWidth:"0.85",strokeLinecap:"round",fill:"none"})]})}function R({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("rect",{x:"4.5",y:"8.5",width:"5",height:"3",rx:"0.6",stroke:l,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M5.5 8.5V7.5a1.5 1.5 0 0 1 3 0v1",stroke:l,strokeWidth:"0.9",strokeLinecap:"round",fill:"none"})]})}function W({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"7",cy:"8.5",r:"1.3",stroke:l,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 6.5v.7M7 10.3v.7M5 8.5h.7M8.3 8.5H9M5.5 6.9l.5.5M8.5 9.6l-.5-.5M5.5 10.1l.5-.5M8.5 7.4l-.5.5",stroke:l,strokeWidth:"0.8",strokeLinecap:"round"})]})}function E(e,t=14){let r=e.toLowerCase(),o=r.split(".").pop()??"";if("dockerfile"===r||r.startsWith("dockerfile."))return(0,n.jsx)(L,{size:t});if(".env"===r||r.startsWith(".env."))return(0,n.jsx)(I,{size:t});if(".gitignore"===r||".gitattributes"===r||".gitmodules"===r)return(0,n.jsx)(M,{size:t});if("package-lock.json"===r||"yarn.lock"===r||"bun.lock"===r||"pnpm-lock.yaml"===r||"cargo.lock"===r)return(0,n.jsx)(R,{size:t});if(r.endsWith(".config.ts")||r.endsWith(".config.js")||r.endsWith(".config.mjs")||r.endsWith(".config.cjs")||[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml","eslint.config.mjs","eslint.config.js"].includes(r))return(0,n.jsx)(W,{size:t});switch(o){case"ts":return(0,n.jsx)(c,{size:t});case"tsx":return(0,n.jsx)(u,{size:t});case"js":case"mjs":case"cjs":return(0,n.jsx)(p,{size:t});case"jsx":return(0,n.jsx)(h,{size:t});case"py":return(0,n.jsx)(x,{size:t});case"json":case"jsonl":return(0,n.jsx)(g,{size:t});case"css":case"less":return(0,n.jsx)(f,{size:t});case"scss":return(0,n.jsx)(v,{size:t});case"html":case"htm":return(0,n.jsx)(m,{size:t});case"md":case"mdx":return(0,n.jsx)(y,{size:t});case"yaml":case"yml":return(0,n.jsx)(b,{size:t});case"toml":return(0,n.jsx)(j,{size:t});case"sh":case"bash":case"zsh":case"fish":return(0,n.jsx)(k,{size:t});case"rs":return(0,n.jsx)(w,{size:t});case"go":return(0,n.jsx)(S,{size:t});case"sql":return(0,n.jsx)(C,{size:t});case"graphql":case"gql":return(0,n.jsx)(T,{size:t});case"tf":case"hcl":return(0,n.jsx)(z,{size:t});case"lock":return(0,n.jsx)(R,{size:t});default:return(0,n.jsx)(a,{size:t})}}function $(e){return/^[a-zA-Z]:[\\/]/.test(e)||e.startsWith("\\\\")?e.replace(/\\/g,"/"):e}function N(e){return $(e).split("/").filter(Boolean).map(encodeURIComponent).join("/")}function B(e){let t=$(e).replace(/\/+$/,"");return t.split("/").pop()??t}function P(e,t){if(!t)return e;let r=$(e),n=$(t).replace(/\/$/,"");return r.startsWith(n+"/")?r.slice(n.length+1):e}async function A(e){let t=N(e),r=await fetch(`/api/files/${t}?type=list`);return r.ok?((await r.json()).entries??[]).map(t=>{var r;return{name:t.name,fullPath:(r=t.name,`${$(e).replace(/\/$/,"")}/${r}`),isDir:t.isDir,size:t.size,children:t.isDir?[]:void 0,loaded:!t.isDir}}):[]}function H(e,t){let r=t.trim().toLowerCase();return!!(!r||e.name.toLowerCase().includes(r))||(e.children??[]).some(e=>H(e,r))}function D(e){return!!Array.from(e.types).includes("Files")||Array.from(e.items).some(e=>"file"===e.kind)}function O(e){return Array.from(e.files).filter(e=>!!e.name)}function F(e,t){return e===t?".":P(e,t)}function U({node:e,depth:t,cwd:r,onOpenFile:i,onAtMention:l,expandedPaths:a,onToggleExpanded:d,onUploadFiles:c,uploadTargetPath:u,refreshKey:p,searchQuery:h}){let x=!!h?.trim(),g=x?e.isDir:a.has(e.fullPath),[f,v]=(0,o.useState)(e.children??[]),[m,y]=(0,o.useState)(e.loaded??!1),[b,j]=(0,o.useState)(!1),[k,w]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),T=e.isDir&&(S||u===e.fullPath),z=x?f.filter(e=>H(e,h??"")):f,L=(0,o.useCallback)(async(t=!1)=>{if(!m||t){j(!0);try{let t=await A(e.fullPath);v(t),y(!0)}catch{}finally{j(!1)}}},[m,e.fullPath]),I=(0,o.useRef)(m);(0,o.useEffect)(()=>{I.current=m}),(0,o.useEffect)(()=>{g&&m&&L(!0)},[p]);let M=(0,o.useCallback)(()=>{if(e.isDir){let t=!g;d(e.fullPath,t),t&&!m&&L()}else i(e.fullPath,e.name)},[e.isDir,e.fullPath,e.name,m,g,L,i,d]),R=(0,o.useCallback)(t=>{e.isDir&&D(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy",C(!0))},[e.isDir]),W=(0,o.useCallback)(t=>{e.isDir&&D(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy")},[e.isDir]),$=(0,o.useCallback)(t=>{if(!e.isDir)return;let r=t.relatedTarget;r instanceof Node&&t.currentTarget.contains(r)||C(!1)},[e.isDir]),N=(0,o.useCallback)(t=>{if(!e.isDir||!D(t.dataTransfer))return;t.preventDefault(),t.stopPropagation(),C(!1);let r=O(t.dataTransfer);r.length>0&&(c(r,e.fullPath),g||d(e.fullPath,!0),m||L())},[L,m,e.fullPath,e.isDir,d,c,g]);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{onClick:M,onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),onDragEnter:R,onDragOver:W,onDragLeave:$,onDrop:N,style:{position:"relative",display:"flex",alignItems:"center",gap:4,paddingLeft:8+14*t,paddingRight:8,height:24,cursor:"pointer",background:T?"rgba(37,99,235,0.14)":k?"var(--bg-hover)":"transparent",outline:T?"1px solid rgba(37,99,235,0.42)":"none",outlineOffset:-1,borderRadius:4,userSelect:"none",transition:"background 0.12s, outline-color 0.12s"},children:[e.isDir&&(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"var(--text-dim)",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transform:g?"rotate(90deg)":"none",transition:"transform 0.1s"},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),!e.isDir&&(0,n.jsx)("span",{style:{width:10,flexShrink:0}}),(0,n.jsx)("span",{style:{flexShrink:0,display:"flex",alignItems:"center"},children:e.isDir?(0,n.jsx)(s,{size:14,open:g}):E(e.name,14)}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},title:e.fullPath,children:e.name}),b&&(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-dim)",strokeWidth:"2",strokeLinecap:"round",children:(0,n.jsx)("path",{d:"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4"})}),l&&k&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),l(P(e.fullPath,r))},title:"Insert path into chat",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"center",gap:4,padding:"0 8px",height:20,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:4,color:"var(--accent)",cursor:"pointer",fontSize:11,fontWeight:600,whiteSpace:"nowrap"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,n.jsx)("path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"})]}),"mention"]})]}),e.isDir&&g&&(0,n.jsxs)("div",{children:[z.map(e=>(0,n.jsx)(U,{node:e,depth:t+1,cwd:r,onOpenFile:i,onAtMention:l,expandedPaths:a,onToggleExpanded:d,onUploadFiles:c,uploadTargetPath:u,refreshKey:p,searchQuery:h},e.fullPath)),0===z.length&&m&&!x&&(0,n.jsx)("div",{style:{paddingLeft:8+(t+1)*14,fontSize:11,color:"var(--text-dim)",height:22,display:"flex",alignItems:"center"},children:"empty"})]})]})}function _({cwd:e,onOpenFile:t,refreshKey:r,onAtMention:i,searchQuery:l="",onSearchChange:s}){let[a,d]=(0,o.useState)([]),[c,u]=(0,o.useState)(!0),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(new Set),[f,v]=(0,o.useState)(!1),[m,y]=(0,o.useState)(null),[b,j]=(0,o.useState)(null),k=(0,o.useRef)(null),w=(0,o.useRef)(null),S=(0,o.useRef)(0),C=(0,o.useCallback)((e,t)=>(u(t),h(null),A(e).then(e=>d(e)).catch(e=>h(String(e))).finally(()=>u(!1))),[]),T=(0,o.useCallback)((e,t)=>{g(r=>{let n=new Set(r);return t?n.add(e):n.delete(e),n})},[]);(0,o.useEffect)(()=>{let t=k.current!==e;k.current=e,t&&g(new Set),C(e,t)},[e,r,C]),(0,o.useEffect)(()=>()=>{w.current&&clearTimeout(w.current)},[]);let z=(0,o.useCallback)(()=>{C(e,0===a.length)},[e,a.length,C]),L=(0,o.useCallback)(()=>{w.current&&clearTimeout(w.current),w.current=setTimeout(()=>j(null),5e3)},[]),I=(0,o.useCallback)((t,r)=>{if(0===t.length)return;S.current=0,v(!1),w.current&&clearTimeout(w.current);let n=t.reduce((e,t)=>e+t.size,0),o=F(r,e);y(r),j({phase:"uploading",targetPath:r,fileCount:t.length,loaded:0,total:n,message:`Uploading ${t.length} file${1===t.length?"":"s"} to ${o}`});let i=new FormData;t.forEach(e=>i.append("files",e,e.name));let l=new XMLHttpRequest,s=N(r);l.open("POST",`/api/files/${s}?type=upload`),l.upload.onprogress=e=>{e.lengthComputable&&j(t=>t?{...t,loaded:e.loaded,total:e.total}:t)},l.onload=()=>{y(null);let e={};try{e=JSON.parse(l.responseText)}catch{e={}}if(l.status>=200&&l.status<300){let i=e.uploaded??[],l=e.failed??[],s=[...i.filter(e=>e.name!==e.originalName).slice(0,3).map(e=>`${e.originalName} saved as ${e.name}`),...l.slice(0,3).map(e=>`${e.name}: ${e.error}`)];j({phase:l.length>0?"warning":"success",targetPath:r,fileCount:t.length,loaded:n,total:n,message:l.length>0?`Uploaded ${i.length}, ${l.length} failed`:`Uploaded ${i.length} file${1===i.length?"":"s"} to ${o}`,details:s}),z(),L()}else{let o=e.error??`Upload failed (HTTP ${l.status})`;j({phase:(l.status,"error"),targetPath:r,fileCount:t.length,loaded:0,total:n,message:o,details:403===l.status?["Check directory write permission or project access."]:void 0}),L()}},l.onerror=()=>{y(null),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload failed due to a network error"}),L()},l.onabort=()=>{y(null),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload canceled"}),L()},l.send(i)},[e,z,L]),M=(0,o.useCallback)(e=>{D(e.dataTransfer)&&(e.preventDefault(),S.current+=1,v(!0))},[]),R=(0,o.useCallback)(e=>{D(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},[]),W=(0,o.useCallback)(()=>{S.current-=1,S.current<=0&&(S.current=0,v(!1))},[]),E=(0,o.useCallback)(t=>{if(!D(t.dataTransfer))return;t.preventDefault(),S.current=0,v(!1);let r=O(t.dataTransfer);r.length>0&&I(r,e)},[e,I]),$=l.trim()?a.filter(e=>H(e,l)):a,B=l.trim().length>0;return c?(0,n.jsx)(V,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:M,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:"Loading files..."})}):p?(0,n.jsx)(V,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:M,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"#f87171"},children:p})}):(0,n.jsx)(V,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:M,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsxs)("div",{style:{padding:"2px 4px"},children:[$.map(o=>(0,n.jsx)(U,{node:o,depth:0,cwd:e,onOpenFile:t,onAtMention:i,expandedPaths:x,onToggleExpanded:T,onUploadFiles:I,uploadTargetPath:m,refreshKey:r,searchQuery:l},o.fullPath)),0===$.length&&(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:B?"No matching files":"No files found"})]})})}function V({cwd:e,isDraggingFiles:t,uploadState:r,onDragEnter:o,onDragOver:i,onDragLeave:l,onDrop:s,children:a}){let d=r&&r.total>0?Math.max(0,Math.min(100,Math.round(r.loaded/r.total*100))):r?.phase==="uploading"?8:100,c=r?.phase==="success"?"#22c55e":r?.phase==="warning"?"#f59e0b":r?.phase==="error"?"#ef4444":"var(--accent)";return(0,n.jsxs)("div",{onDragEnter:o,onDragOver:i,onDragLeave:l,onDrop:s,style:{position:"relative",display:"flex",flexDirection:"column",minHeight:"100%",outline:t?"1px solid rgba(37,99,235,0.45)":"none",outlineOffset:-1,background:t?"rgba(37,99,235,0.04)":void 0,transition:"background 0.12s, outline-color 0.12s"},children:[(0,n.jsx)("div",{style:{flex:1,minHeight:0},children:a}),t&&(0,n.jsx)("div",{style:{pointerEvents:"none",position:"absolute",inset:6,top:42,border:"1px dashed rgba(37,99,235,0.62)",borderRadius:8,background:"rgba(37,99,235,0.07)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontSize:12,boxShadow:"0 8px 24px rgba(0,0,0,0.16)"},children:[(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,n.jsx)("polyline",{points:"17 8 12 3 7 8"}),(0,n.jsx)("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),"Drop to upload into ",F(e,e)]})}),r&&(0,n.jsxs)("div",{style:{margin:"6px",padding:"7px 8px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",boxShadow:"0 8px 24px rgba(0,0,0,0.12)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7,minWidth:0},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:999,background:c,flexShrink:0}}),(0,n.jsx)("span",{title:r.message,style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)",fontSize:11,fontWeight:600},children:r.message}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10,flexShrink:0},children:"uploading"===r.phase?`${d}%`:function(e){if(!Number.isFinite(e)||e<=0)return"0 B";let t=["B","KB","MB","GB"],r=e,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;return`${r>=10||0===n?Math.round(r):r.toFixed(1)} ${t[n]}`}(r.total)})]}),(0,n.jsx)("div",{style:{marginTop:6,height:3,borderRadius:999,background:"var(--bg)",overflow:"hidden"},children:(0,n.jsx)("div",{style:{width:`${d}%`,height:"100%",borderRadius:999,background:c,transition:"width 0.15s ease"}})}),r.details&&r.details.length>0&&(0,n.jsx)("div",{style:{marginTop:5,display:"grid",gap:2},children:r.details.map(e=>(0,n.jsx)("div",{title:e,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontSize:10},children:e},e))})]})]})}function J(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",o=r.split(n).filter(Boolean);return o.length<=2?r:"..."+n+o.slice(-2).join(n)}function q(e){let t=new Date(e);return Number.isNaN(t.getTime())?"":t.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function K({open:e,cwd:t,homeDir:r,onClose:i,onSelectSession:l}){let[s,a]=(0,o.useState)(""),[d,c]=(0,o.useState)("current"),[u,p]=(0,o.useState)([]),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(null),[v,m]=(0,o.useState)(!1),y=(0,o.useRef)(null);if((0,o.useEffect)(()=>{e&&(c(t?"current":"all"),setTimeout(()=>y.current?.focus(),0))},[e,t]),(0,o.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&i()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,i]),(0,o.useEffect)(()=>{if(!e)return;let r=s.trim();if(r.length<2){p([]),x(!1),f(null),m(!1);return}let n=new AbortController,o=setTimeout(async()=>{x(!0),f(null);try{let e=new URLSearchParams({q:r,scope:d});t&&e.set("cwd",t);let o=await fetch(`/api/search?${e.toString()}`,{signal:n.signal});if(!o.ok)throw Error(`HTTP ${o.status}`);let i=await o.json();if(i.error)throw Error(i.error);p(i.results??[]),m(i.truncated??!1)}catch(e){"AbortError"!==e.name&&f(String(e))}finally{x(!1)}},180);return()=>{clearTimeout(o),n.abort()}},[e,s,d,t]),!e)return null;let b=s.trim(),j=u.reduce((e,t)=>e+t.matches.length,0);return(0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Search conversation history",style:{position:"fixed",inset:0,zIndex:500,display:"flex",alignItems:"flex-start",justifyContent:"center",padding:"8vh 16px 16px",background:"rgba(0,0,0,0.28)"},onMouseDown:e=>{e.target===e.currentTarget&&i()},children:(0,n.jsxs)("div",{style:{width:"min(760px, 100%)",maxHeight:"78vh",display:"flex",flexDirection:"column",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,boxShadow:"0 16px 48px rgba(0,0,0,0.24)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:12,borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flex:1,minWidth:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:8,padding:"0 10px"},children:[(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"var(--text-dim)",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.5"}),(0,n.jsx)("path",{d:"M10.5 10.5 13.5 13.5"})]}),(0,n.jsx)("input",{ref:y,value:s,onChange:e=>a(e.target.value),placeholder:"Search conversation history...",style:{flex:1,minWidth:0,height:38,background:"transparent",border:"none",outline:"none",color:"var(--text)",fontSize:14}})]}),(0,n.jsx)("button",{type:"button",onClick:i,title:"Close",style:{width:34,height:34,display:"inline-flex",alignItems:"center",justifyContent:"center",background:"none",border:"none",borderRadius:7,color:"var(--text-dim)",cursor:"pointer"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-dim)"},children:(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("path",{d:"M4 4 12 12"}),(0,n.jsx)("path",{d:"M12 4 4 12"})]})})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:10},children:[(0,n.jsx)("div",{style:{display:"inline-flex",padding:2,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7},children:[{value:"current",label:"Current project",disabled:!t},{value:"all",label:"All history",disabled:!1}].map(e=>(0,n.jsx)("button",{type:"button",disabled:e.disabled,onClick:()=>c(e.value),style:{height:24,padding:"0 9px",background:d===e.value?"var(--bg-selected)":"transparent",border:"none",borderRadius:5,color:e.disabled?"var(--text-dim)":d===e.value?"var(--text)":"var(--text-muted)",cursor:e.disabled?"not-allowed":"pointer",fontSize:11,fontWeight:500},children:e.label},e.value))}),(0,n.jsx)("div",{style:{flex:1,minWidth:0,color:"var(--text-dim)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"current"===d&&t?J(t,r):"Searching every saved session"})]})]}),(0,n.jsxs)("div",{style:{flex:1,overflowY:"auto",minHeight:180},children:[b.length<2&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"Type at least 2 characters to search saved conversations."}),b.length>=2&&h&&0===u.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"Searching..."}),g&&(0,n.jsx)("div",{style:{padding:18,color:"#ef4444",fontSize:13},children:g}),b.length>=2&&!h&&!g&&0===u.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"No matching conversations found."}),u.map(e=>(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{l(e.session),i()},style:{width:"100%",display:"flex",alignItems:"center",gap:10,padding:"10px 12px",background:"var(--bg-panel)",border:"none",borderBottom:"1px solid var(--border)",color:"var(--text)",cursor:"pointer",textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:600},children:e.session.name||e.session.firstMessage||"(no messages)"}),(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:11},children:q(e.session.modified)})]}),(0,n.jsx)("div",{style:{marginTop:2,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:J(e.session.cwd,r)})]}),e.matchCount>e.matches.length&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-muted)",fontSize:11},children:[e.matchCount," matches"]})]}),e.matches.map(t=>(0,n.jsxs)("button",{type:"button",onClick:()=>{l(e.session),i()},style:{width:"100%",padding:"9px 14px 9px 28px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:3},children:[(0,n.jsx)("span",{style:{minWidth:54,color:"user"===t.role?"var(--accent)":"var(--text-dim)",fontSize:11,fontWeight:600,textTransform:"capitalize"},children:t.role}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:q(t.timestamp)})]}),(0,n.jsx)("div",{style:{fontSize:12,lineHeight:1.45,color:"var(--text-muted)"},children:function(e,t){let r=t.trim();if(!r)return e;let o=e.toLowerCase().indexOf(r.toLowerCase());return o<0?e:(0,n.jsxs)(n.Fragment,{children:[e.slice(0,o),(0,n.jsx)("mark",{style:{background:"rgba(37,99,235,0.16)",color:"var(--text)",borderRadius:3,padding:"0 2px"},children:e.slice(o,o+r.length)}),e.slice(o+r.length)]})}(t.snippet,b)})]},t.entryId))]},e.session.id))]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",padding:"8px 12px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{children:j>0?`${j}${v?"+":""} results`:"Esc to close"}),h&&u.length>0&&(0,n.jsx)("span",{children:"Updating..."})]})]})})}function Z({open:e,initialPath:t,onClose:r,onSelect:i}){let[l,s]=(0,o.useState)(""),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)([]),[p,h]=(0,o.useState)([]),[x,g]=(0,o.useState)(""),[f,v]=(0,o.useState)(!1),[m,y]=(0,o.useState)(null),b=(0,o.useCallback)(async e=>{v(!0),y(null);try{let t=e?`/api/projects/browse?dir=${encodeURIComponent(e)}`:"/api/projects/browse",r=await fetch(t),n=await r.json();if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);s(n.current??""),d(n.parent??null),u(n.directories??[]),h(n.drives??[]),g(n.current??"")}catch(e){y(e instanceof Error?e.message:String(e))}finally{v(!1)}},[]);return((0,o.useEffect)(()=>{e&&b(t||void 0)},[b,t,e]),(0,o.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&r()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[r,e]),e)?(0,n.jsx)("div",{onMouseDown:e=>{e.target===e.currentTarget&&r()},style:{position:"fixed",inset:0,zIndex:1200,display:"flex",alignItems:"center",justifyContent:"center",padding:18,background:"rgba(0,0,0,0.34)"},children:(0,n.jsxs)("div",{style:{width:"min(560px, 100%)",maxHeight:"min(720px, 88dvh)",display:"flex",flexDirection:"column",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,boxShadow:"0 12px 40px rgba(0,0,0,0.25)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{height:48,padding:"0 14px",display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:14,fontWeight:750},children:"Select project path"}),(0,n.jsx)("div",{style:{marginTop:2,color:"var(--text-dim)",fontSize:11},children:"Server filesystem"})]}),(0,n.jsx)("button",{type:"button",onClick:r,"aria-label":"Close",title:"Close",style:{width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"x"})]}),(0,n.jsx)("div",{style:{padding:12,borderBottom:"1px solid var(--border)"},children:(0,n.jsxs)("form",{onSubmit:e=>{e.preventDefault(),x.trim()&&b(x.trim())},style:{display:"flex",gap:8},children:[(0,n.jsx)("input",{value:x,onChange:e=>g(e.target.value),placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"submit",style:{height:32,padding:"0 11px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Go"})]})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>a&&void b(a),disabled:!a,style:{width:28,height:28,border:"1px solid var(--border)",borderRadius:6,background:a?"var(--bg)":"transparent",color:a?"var(--text-muted)":"var(--text-dim)",cursor:a?"pointer":"default",padding:0},title:"Up",children:(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"2 6.5 5 3.5 8 6.5"})})}),p.length>0&&(0,n.jsxs)("select",{value:p.find(e=>l.toLowerCase().startsWith(e.toLowerCase()))??"",onChange:e=>{e.target.value&&b(e.target.value)},style:{height:28,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",fontSize:12},children:[(0,n.jsx)("option",{value:"",children:"Drive"}),p.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11},title:l,children:l})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:220,maxHeight:360,overflowY:"auto",padding:6},children:f?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"Loading..."}):m?(0,n.jsx)("div",{style:{padding:18,color:"#f87171",fontSize:12},children:m}):0===c.length?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"No subdirectories"}):c.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>void b(e.path),style:{width:"100%",display:"flex",alignItems:"center",gap:9,padding:"8px 9px",border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},title:e.path,children:[(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--accent)",flexShrink:0},children:(0,n.jsx)("path",{d:"M3 6.5A2.5 2.5 0 0 1 5.5 4H10l2 2.5h6.5A2.5 2.5 0 0 1 21 9v8.5A2.5 2.5 0 0 1 18.5 20h-13A2.5 2.5 0 0 1 3 17.5v-11Z"})}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0},children:(0,n.jsx)("polyline",{points:"3.5 2 6.5 5 3.5 8"})})]},e.path))}),(0,n.jsxs)("div",{style:{padding:12,borderTop:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[(0,n.jsx)("div",{style:{minWidth:0,color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:l,children:l}),(0,n.jsxs)("div",{style:{display:"flex",gap:7,flexShrink:0},children:[(0,n.jsx)("button",{type:"button",onClick:r,style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"}),(0,n.jsx)("button",{type:"button",onClick:()=>l&&i(l),disabled:!l,style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:l?"var(--accent)":"var(--bg-hover)",color:l?"#fff":"var(--text-dim)",cursor:l?"pointer":"default",fontSize:12,fontWeight:650},children:"Select"})]})]})]})}):null}let Y="AnnoVibe";async function G(e,t){let r=`${e}: HTTP ${t.status}`;try{let n=await t.json();return"string"==typeof n.error&&n.error?`${e}: ${n.error}`:r}catch{return r}}function X(e){let t=new Date(e),r=new Date().getTime()-t.getTime(),n=Math.floor(r/6e4),o=Math.floor(r/36e5),i=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}function Q(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",o=r.split(n).filter(Boolean);return o.length<=2?r:"…/"+o.slice(-2).join(n)}function ee(e,t){if(!e)return"No Project";let r=e.replace(/[\\/]+$/,""),n=r.includes("/")?"/":"\\";return r.split(n).filter(Boolean).pop()||Q(e,t)}function et(e){return e.lastAccessed??e.created??""}let er="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function en(){let[e,t]=(0,o.useState)(!1),[r,i]=(0,o.useState)(!1),l=(0,o.useRef)(null),s=function(e,t){let[r,n]=(0,o.useState)(e),i=(0,o.useRef)(null),l=(0,o.useRef)(0);return(0,o.useEffect)(()=>{if(!t)return void n(e);l.current=0;let r=4*e.length,o=()=>{l.current+=1;let t=Math.floor(l.current/r*e.length);n(e.split("").map((e,r)=>" "===e?" ":r<t?e:er[Math.floor(Math.random()*er.length)]).join("")),l.current<r?i.current=requestAnimationFrame(o):n(e)};return i.current=requestAnimationFrame(o),()=>{i.current&&cancelAnimationFrame(i.current)}},[e,t]),r}(e?"v0.8.14":Y,r),a=(0,o.useCallback)(e=>{t(e),i(!0),setTimeout(()=>i(!1),(e?6:8)*4*(1e3/60)+100)},[]),d=(0,o.useCallback)(()=>{l.current&&clearTimeout(l.current);let t=!e;a(t),t&&(l.current=setTimeout(()=>a(!1),3e3))},[e,a]);return(0,o.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),(0,n.jsx)("button",{onClick:d,style:{background:"none",border:"none",padding:0,cursor:"default",fontWeight:700,fontSize:15,letterSpacing:"-0.01em",color:e?"var(--accent)":"var(--text)",fontFamily:"var(--font-mono)",minWidth:"9ch"},children:s})}function eo({selectedSessionId:e,onSelectSession:t,onNewSession:r,initialSessionId:i,onInitialRestoreDone:l,refreshKey:s,onSessionDeleted:a,selectedCwd:d,onCwdChange:c,onOpenFile:u,explorerRefreshKey:p,onAtMention:h}){let[x,g]=(0,o.useState)([]),[f,v]=(0,o.useState)([]),[m,y]=(0,o.useState)(!0),[b,j]=(0,o.useState)(null),[k,w]=(0,o.useState)(null),[S,C]=(0,o.useState)(""),[T,z]=(0,o.useState)(!1),[L,I]=(0,o.useState)(null),[M,R]=(0,o.useState)(!1),[W,E]=(0,o.useState)(!1),[$,N]=(0,o.useState)(!1),B=(0,o.useRef)(!1),P=(0,o.useRef)(!1),A=(0,o.useRef)(null),[H,D]=(0,o.useState)(!0),[O,F]=(0,o.useState)(0),[U,V]=(0,o.useState)(""),J=(0,o.useCallback)(async(e=!1)=>{try{e&&y(!0);let[t,r]=await Promise.all([fetch("/api/sessions"),fetch("/api/projects")]);if(!t.ok)throw Error(await G("sessions",t));if(!r.ok)throw Error(await G("projects",r));let n=await t.json(),o=await r.json();g(n.sessions),v(o.projects),j(null)}catch(e){j(String(e))}finally{e&&y(!1)}},[]),q=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e=!q.current;q.current=!0,J(e)},[J,s]),(0,o.useEffect)(()=>{void 0!==p&&F(e=>e+1)},[p]),(0,o.useEffect)(()=>{fetch("/api/home").then(e=>e.json()).then(e=>{e.home&&C(e.home)}).catch(()=>{})},[]);let Y=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(B.current){B.current=!1;return}if(P.current){P.current=!1;return}c?.(k)},[k,c]);let er=(0,o.useCallback)(async(e,t=!1)=>{try{let r=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,create:t})}),n=await r.json();if(!r.ok||n.error)return I(n.error??`HTTP ${r.status}`),!1;return J(!1),!0}catch(e){return I(e instanceof Error?e.message:String(e)),!1}},[J]),el=(0,o.useCallback)(e=>{fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,touch:!0})}).catch(()=>{})},[]),es=(0,o.useCallback)(e=>{P.current=!0,w(e),N(!1),D(!0),V(""),F(e=>e+1),c?.(e),el(e)},[c,el]);(0,o.useEffect)(()=>{if((0!==x.length||0!==f.length)&&null===k){if(i&&!Y.current){Y.current=!0;let e=x.find(e=>e.id===i);if(e){w(e.cwd),el(e.cwd),t(e,!0);return}l?.()}let e=f[0]?.cwd;e&&(w(e),el(e))}},[x,f,k,i,t,l,el]);let ea=(0,o.useCallback)(async()=>{try{let e=await fetch("/api/default-cwd",{method:"POST"}),t=await e.json();t.cwd&&(await er(t.cwd,!1),es(t.cwd),z(!1))}catch{}},[es,er]),ed=(0,o.useCallback)(async e=>{await er(e,!1)&&(es(e),R(!1),I(null),z(!1))},[es,er]);(0,o.useEffect)(()=>{let e=e=>{A.current&&!A.current.contains(e.target)&&(z(!1),I(null))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let ec=d??k,eu=(0,o.useCallback)(e=>{if(!e)return void z(!0);let t="function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;r?.(t,e)},[r]),ep=(0,o.useCallback)(()=>{eu(ec)},[eu,ec]),eh=(0,o.useMemo)(()=>[...ec&&!f.some(e=>e.cwd===ec)?[{cwd:ec,displayName:ee(ec,S),chatCount:x.filter(e=>e.cwd===ec).length,lastAccessed:null,created:null,exists:!0,source:"manual"}]:[],...f].sort((e,t)=>{if(ec&&e.cwd===ec)return -1;if(ec&&t.cwd===ec)return 1;let r=et(e),n=et(t);return r!==n?n.localeCompare(r):e.displayName.localeCompare(t.displayName)}),[x,ec,S,f]),ex=(0,o.useMemo)(()=>x.filter(e=>e.cwd===ec).sort((e,t)=>t.modified.localeCompare(e.modified)),[x,ec]),eg=ec?eh.find(e=>e.cwd===ec):void 0,ef=ec?eh.find(e=>e.cwd===ec)?.displayName||ee(ec,S):"Open project...",ev=eg?.chatCount??ex.length,em=(0,o.useMemo)(()=>(function(e){let t=new Map;for(let r of e)t.set(r.id,{session:r,children:[]});let r=new Map;for(let t of e)t.parentSessionId&&r.set(t.id,t.parentSessionId);let n=[];for(let e of t.values()){let o=function(e){let n=r.get(e),o=new Set;for(;n&&!o.has(n);){if(o.add(n),t.has(n))return n;n=r.get(n)}return null}(e.session.id);o?t.get(o).children.push(e):n.push(e)}let o=e=>{e.sort((e,t)=>t.session.modified.localeCompare(e.session.modified)),e.forEach(e=>o(e.children))};return o(n),n})(ex),[ex]),ey=em.length,eb=em;if(ey>10&&!$){eb=em.slice(0,10);let t=em.find(t=>(function e(t,r){return!!r&&(t.session.id===r||t.children.some(t=>e(t,r)))})(t,e));t&&!eb.includes(t)&&(eb=[...eb,t])}let ej=ey-eb.length,ek=(0,o.useCallback)((e,r=!1)=>{e.cwd!==ec&&(B.current=!0,w(e.cwd)),el(e.cwd),t(e,r)},[t,ec,el]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"12px 10px 10px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:8},children:[(0,n.jsx)(en,{}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsxs)("button",{onClick:ep,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,background:"var(--bg-hover)",border:"1px solid var(--border)",color:"var(--text-muted)",cursor:"pointer",height:32,paddingLeft:10,paddingRight:12,borderRadius:7,fontSize:12,fontWeight:500,letterSpacing:"-0.01em",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},title:ec?`New session in ${ec}`:"Select a project first",onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"6",y1:"1",x2:"6",y2:"11"}),(0,n.jsx)("line",{x1:"1",y1:"6",x2:"11",y2:"6"})]}),"New"]}),(0,n.jsx)("button",{onClick:()=>E(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",background:"var(--bg-hover)",border:"1px solid var(--border)",color:"var(--text-muted)",cursor:"pointer",width:32,height:32,borderRadius:7,padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},title:"Search conversations",onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.4"}),(0,n.jsx)("path",{d:"M10.4 10.4 13.2 13.2"})]})})]})]}),(0,n.jsxs)("div",{ref:A,style:{position:"relative"},children:[(0,n.jsx)("div",{style:{marginBottom:5,display:"flex",alignItems:"center",justifyContent:"space-between",color:"var(--text-dim)",fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase"},children:(0,n.jsx)("span",{children:"Project"})}),(0,n.jsxs)("button",{onClick:()=>z(e=>!e),style:{width:"100%",display:"flex",alignItems:"center",gap:9,padding:"8px 10px",background:ec?"var(--bg-hover)":"rgba(37,99,235,0.06)",border:ec?"1px solid var(--border)":"1px solid rgba(37,99,235,0.4)",borderRadius:7,cursor:"pointer",fontSize:12,color:"var(--text)",textAlign:"left",transition:"border-color 0.15s, background 0.15s"},children:[(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{color:ec?"var(--accent)":"var(--text-dim)",flexShrink:0},children:(0,n.jsx)("path",{d:"M3 6.5A2.5 2.5 0 0 1 5.5 4H10l2 2.5h6.5A2.5 2.5 0 0 1 21 9v8.5A2.5 2.5 0 0 1 18.5 20h-13A2.5 2.5 0 0 1 3 17.5v-11Z"})}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12,fontWeight:650,color:ec?"var(--text)":"var(--text-dim)"},children:ec?ef:i&&!Y.current?"":"Open project..."}),ec&&(0,n.jsx)("span",{style:{display:"block",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",fontSize:10,color:"var(--text-dim)"},title:ec,children:Q(ec,S)})]}),ec&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10,whiteSpace:"nowrap"},children:[ev," chats"]}),(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0,transform:T?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),T&&(0,n.jsxs)("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 6px 20px rgba(0,0,0,0.10)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{maxHeight:260,overflowY:"auto"},children:[0===eh.length&&(0,n.jsx)("div",{style:{padding:"10px 12px",color:"var(--text-muted)",fontSize:12},children:"No projects yet"}),eh.map(e=>{let t=e.cwd===ec,r=et(e);return(0,n.jsxs)("button",{onClick:()=>{es(e.cwd),I(null),z(!1)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"8px 10px",background:t?"var(--bg-selected)":"none",border:"none",borderBottom:"1px solid var(--border)",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},title:e.cwd,children:[t?(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:(0,n.jsx)("polyline",{points:"1.5 5 4 7.5 8.5 2.5"})}):(0,n.jsx)("span",{style:{width:10,flexShrink:0}}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:t?"var(--text)":"var(--text-muted)",fontWeight:t?650:500},children:e.displayName}),(0,n.jsxs)("span",{style:{display:"block",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontSize:10},children:[e.chatCount," chats",r?` / ${X(r)}`:"",e.exists?"":" / missing"]})]})]},e.cwd)})]}),(0,n.jsxs)("div",{style:{borderTop:eh.length>0?"1px solid var(--border)":"none"},children:[(0,n.jsxs)("button",{onClick:e=>{e.stopPropagation(),ea()},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"8px 10px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:(0,n.jsx)("path",{d:"M1 3A1 1 0 0 1 2 2H4L5 3.5H8.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7A.5.5 0 0 1 1 8V3Z"})}),(0,n.jsx)("span",{children:"Use default directory"})]}),(0,n.jsxs)("button",{onClick:e=>{e.stopPropagation(),I(null),R(!0)},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"8px 10px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M1 3A1 1 0 0 1 2 2h1.5L4.5 3H8a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3Z"}),(0,n.jsx)("path",{d:"M5 4.5v3M3.5 6h3"})]}),(0,n.jsx)("span",{children:"Select project path..."})]}),L&&(0,n.jsx)("div",{style:{padding:"0 10px 8px 27px",color:"#f87171",fontSize:10,lineHeight:1.4},children:L})]})]})]})]}),(0,n.jsx)(K,{open:W,cwd:ec,homeDir:S,onClose:()=>E(!1),onSelectSession:e=>{ek(e)}}),(0,n.jsxs)("div",{style:{flex:H&&ec?"1 1 0":"1 1 auto",overflowY:"auto",padding:"6px 8px 8px",minHeight:120},children:[m&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}),b&&(0,n.jsx)("div",{style:{padding:"12px 14px",color:"#f87171",fontSize:12},children:b}),!m&&!b&&!ec&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Open or create a project to start chatting."}),!m&&!b&&ec&&(0,n.jsxs)(n.Fragment,{children:[0===ex.length?(0,n.jsx)("button",{type:"button",onClick:()=>eu(ec),style:{width:"100%",padding:"12px",background:"transparent",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"Start a new session in this project"}):eb.map(t=>(0,n.jsx)(ei,{node:t,selectedSessionId:e,onSelectSession:ek,onRenamed:J,onSessionDeleted:e=>{a?.(e),J()},depth:0},t.session.id)),($||ej>0)&&ey>10&&(0,n.jsx)("button",{type:"button",onClick:()=>N(e=>!e),style:{width:"100%",padding:"6px 10px",background:"transparent",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:11,textAlign:"center"},children:$?"Show less":`Show ${Math.max(0,ej)} more`})]})]}),ec&&(0,n.jsxs)("div",{style:{borderTop:"1px solid var(--border)",display:"flex",flexDirection:"column",flex:H?"1 1 0":"0 0 auto",minHeight:0,overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",flexShrink:0,gap:0,padding:"2px 4px"},children:[(0,n.jsxs)("button",{onClick:()=>{D(e=>!e),F(e=>e+1)},style:{display:"flex",alignItems:"center",gap:6,padding:"6px 6px 6px 6px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:11,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",textAlign:"left",flexShrink:0},children:[(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:H?"rotate(90deg)":"none",transition:"transform 0.15s",flexShrink:0},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),"Explorer"]}),(0,n.jsxs)("div",{style:{position:"relative",flex:1,minWidth:0},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",left:8,top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)",pointerEvents:"none"},children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.4"}),(0,n.jsx)("path",{d:"M10.4 10.4 13.2 13.2"})]}),(0,n.jsx)("input",{value:U,onChange:e=>V(e.target.value),placeholder:"Filter files...",style:{width:"100%",height:28,boxSizing:"border-box",padding:"0 26px 0 26px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none"}}),U&&(0,n.jsx)("button",{type:"button",onClick:()=>V(""),title:"Clear filter",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",width:20,height:20,display:"flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-dim)",cursor:"pointer",padding:0},children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"2",x2:"8",y2:"8"}),(0,n.jsx)("line",{x1:"8",y1:"2",x2:"2",y2:"8"})]})})]})]}),H&&(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",overflowX:"hidden"},children:(0,n.jsx)(_,{cwd:ec,onOpenFile:u??(()=>{}),refreshKey:O,onAtMention:h,searchQuery:U,onSearchChange:V})})]}),(0,n.jsx)(Z,{open:M,initialPath:ec||S||null,onClose:()=>R(!1),onSelect:e=>void ed(e)})]})}function ei({node:e,selectedSessionId:t,onSelectSession:r,onRenamed:i,onSessionDeleted:l,depth:s}){let[a,d]=(0,o.useState)(!1),c=e.children.length>0;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{position:"relative"},children:[s>0&&(0,n.jsx)("div",{style:{position:"absolute",left:12*s+6,top:0,bottom:0,width:1,background:"var(--border)",pointerEvents:"none"}}),(0,n.jsx)(el,{session:e.session,isSelected:e.session.id===t,onClick:()=>r(e.session),onRenamed:i,onDeleted:e=>l?.(e),depth:s,hasChildren:c,collapsed:a,onToggleCollapse:()=>d(e=>!e)})]}),c&&!a&&(0,n.jsx)("div",{children:e.children.map(e=>(0,n.jsx)(ei,{node:e,selectedSessionId:t,onSelectSession:r,onRenamed:i,onSessionDeleted:l,depth:s+1},e.session.id))})]})}function el({session:e,isSelected:t,onClick:r,onRenamed:i,onDeleted:l,depth:s=0,hasChildren:a=!1,collapsed:d=!1,onToggleCollapse:c}){let[u,p]=(0,o.useState)(!1),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(""),[v,m]=(0,o.useState)(!1),[y,b]=(0,o.useState)(!1),j=(0,o.useRef)(null),k=e.name||e.firstMessage.slice(0,50)||e.id.slice(0,12),w=(0,o.useCallback)(t=>{t.stopPropagation(),f(e.name??""),x(!0),setTimeout(()=>j.current?.select(),0)},[e.name]),S=(0,o.useCallback)(async()=>{let t=g.trim();if(x(!1),t!==(e.name??""))try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),i?.()}catch{}},[g,e.id,e.name,i]),C=(0,o.useCallback)(e=>{e.stopPropagation(),m(!0)},[]),T=(0,o.useCallback)(async t=>{t.stopPropagation(),m(!1),b(!0);try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"DELETE"}),l?.(e.id)}catch{b(!1)}},[e.id,l]),z=(0,o.useCallback)(e=>{e.stopPropagation(),m(!1)},[]);return(0,n.jsx)("div",{onClick:v||h?void 0:r,onMouseEnter:()=>p(!0),onMouseLeave:()=>{p(!1)},style:{height:54,display:"flex",alignItems:"center",paddingLeft:s>0?12*s+14:14,paddingRight:8,cursor:v||h?"default":"pointer",background:v?"rgba(239,68,68,0.06)":t?"var(--bg-selected)":u?"var(--bg-hover)":"transparent",borderLeft:v?"2px solid #ef4444":t?"2px solid var(--accent)":"2px solid transparent",transition:"background 0.1s",opacity:y?.5:1,gap:6,overflow:"hidden"},children:v?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["Delete ",(0,n.jsxs)("span",{style:{fontWeight:600},children:["“",k.slice(0,22),k.length>22?"…":"","”"]}),"?"]}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,flexShrink:0},children:[(0,n.jsxs)("button",{onClick:T,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:4,height:30,padding:"0 11px",background:"#ef4444",border:"none",borderRadius:6,color:"#fff",cursor:"pointer",fontSize:12,fontWeight:600,whiteSpace:"nowrap"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]}),"Delete"]}),(0,n.jsx)("button",{onClick:z,style:{display:"flex",alignItems:"center",justifyContent:"center",height:30,padding:"0 11px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:500,whiteSpace:"nowrap"},children:"Cancel"})]})]}):h?(0,n.jsx)("input",{ref:j,value:g,onChange:e=>f(e.target.value),onBlur:S,onKeyDown:e=>{"Enter"===e.key&&S(),"Escape"===e.key&&x(!1)},autoFocus:!0,style:{flex:1,fontSize:12,padding:"5px 8px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--bg)",color:"var(--text)",height:30}}):(0,n.jsxs)(n.Fragment,{children:[s>0&&(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-dim)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:t?500:400,lineHeight:1.4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},title:k,children:k}),(0,n.jsxs)("div",{style:{marginTop:2,display:"flex",gap:8,color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{title:e.modified,children:X(e.modified)}),(0,n.jsxs)("span",{children:[e.messageCount," msgs"]})]})]}),a&&(0,n.jsx)("button",{onClick:e=>{e.stopPropagation(),c?.()},title:d?"Expand forks":"Collapse forks",style:{display:"flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,flexShrink:0,background:"none",border:"none",color:"var(--text-dim)",cursor:"pointer",transform:d?"rotate(-90deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})}),u&&(0,n.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,n.jsx)("button",{onClick:w,title:"Rename",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),(0,n.jsx)("button",{onClick:C,title:"Delete",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.08)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]})})]})]})})}let es=new Set;function ea(e){return es.add(e),()=>{es.delete(e)}}function ed(){return"u"<typeof document?"light":document.documentElement.classList.contains("dark")?"dark":"light"}function ec(){return"light"}function eu(){let e=(0,o.useSyncExternalStore)(ea,ed,ec);return{theme:e,toggleTheme:(0,o.useCallback)(e=>{let t="dark"===ed()?"light":"dark",r=()=>{"dark"===t?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark");try{localStorage.setItem("pi-theme",t)}catch{}es.forEach(e=>e())},n=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if("function"!=typeof document.startViewTransition||n)return void r();let o=e?.x??window.innerWidth/2,i=e?.y??window.innerHeight/2,l=Math.hypot(Math.max(o,window.innerWidth-o),Math.max(i,window.innerHeight-i));document.startViewTransition(r).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${o}px ${i}px)`,`circle(${l}px at ${o}px ${i}px)`]},{duration:450,easing:"cubic-bezier(0.22, 0.61, 0.36, 1)",pseudoElement:"::view-transition-new(root)"})}).catch(()=>{})},[]),isDark:"dark"===e}}function ep(e){let t,r=[],n=/`{1,3}show-widget`{0,3}\s*(?:\n\s*`{3}(?:json|html)?\s*)?\n?/g,o=0,i=!1;for(;null!==(t=n.exec(e));){i=!0;let l=e.slice(o,t.index).trim();l&&r.push({type:"text",content:l});let s=t.index+t[0].length,a=e.indexOf("```",s),d=e.indexOf("{",s);if(-1!==d&&d<=s+200&&(-1===a||d<a)){let t=function(e,t){let r=0,n=!1,o=!1;for(let i=t;i<e.length;i++){let t=e[i];if(o){o=!1;continue}if("\\"===t&&n){o=!0;continue}if('"'===t){n=!n;continue}if(!n&&("{"===t&&r++,"}"===t)&&0==--r)return i}return -1}(e,d);if(-1===t){let t=function(e){try{let t=eh(e);if(t)return t}catch{}let t=e.indexOf('"widget_code"');if(-1===t)return null;let r=e.indexOf(":",t+13);if(-1===r)return null;let n=e.indexOf('"',r+1);if(-1===n)return null;let o=e.slice(n+1);(o=o.replace(/"\s*\}\s*$/,"")).endsWith("\\")&&(o=o.slice(0,-1));let i=e.match(/"title"\s*:\s*"([^"]*?)"/)?.[1],l=ex(o.replace(/\\\\/g,"\0BACKSLASH\0").replace(/\\n/g,"\n").replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(parseInt(t,16))).replace(/\x00BACKSLASH\x00/g,"\\"));return l.code.trim()?{title:i,code:l.code,showOverlay:l.truncated}:null}(e.slice(d));t&&r.push({type:"widget",...t,partial:!0}),o=e.length;break}let i=eh(e.slice(d,t+1).trim());i&&r.push({type:"widget",...i});let l=t+1,s=e.slice(l,l+16).match(/^\s*\n?`{1,3}\s*/);s&&(l+=s[0].length),o=l,n.lastIndex=l;continue}if(-1!==a){let t=e.slice(s,a).trim(),i=eh(t);i?r.push({type:"widget",...i}):t&&r.push({type:"text",content:t}),n.lastIndex=o=a+3}else{let t=eh(e.slice(s).trim());if(t){let e=ex(t.code);r.push({type:"widget",title:t.title,code:e.code,partial:!0,showOverlay:e.truncated})}o=e.length;break}}let l=e.slice(o).trim();return l&&r.push({type:"text",content:l}),!i&&0===r.length&&e.trim()&&r.push({type:"text",content:e}),r}function eh(e){if(e.startsWith("{")){if(!e.endsWith("}"))return null;try{let t=JSON.parse(e),r=t.widget_code??t.code;if(r)return{title:t.title,code:r}}catch{return null}}return/<(!DOCTYPE|html|svg|canvas|script|style|div)/i.test(e)?{code:e}:null}function ex(e){let t=e.lastIndexOf("<script");if(-1===t)return{code:e,truncated:!1};let r=e.slice(t);return/<script[\s\S]*?<\/script>/i.test(r)?{code:e,truncated:!1}:{code:e.slice(0,t).trim(),truncated:!0}}let eg=/<(iframe|object|embed|meta|link|base|form)[\s>][\s\S]*?<\/\1>/gi,ef=/<(iframe|object|embed|meta|link|base)\b[^>]*\/?>/gi;function ev(e){return e.replace(eg,"").replace(ef,"")}let em=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];function ey(){if("u"<typeof document)return{};let e=getComputedStyle(document.documentElement),t={};for(let r of em){let n=e.getPropertyValue(r).trim();n&&(t[r]=n)}return t}let eb=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];async function ej(e){if(navigator.clipboard?.writeText)return void await navigator.clipboard.writeText(e);let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.inset="0",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let r=document.execCommand("copy");if(document.body.removeChild(t),!r)throw Error("Clipboard copy failed.")}async function ek(e){let t=await ew(e.code);if(t)return t;if(e.capture)return function(e){if(!e.html)throw Error("The widget did not provide capturable HTML.");let t=eT({width:e.bodyWidth||640,height:e.bodyHeight||360}),r=function(e){let t=document.createElement("template");t.innerHTML=ev(e.html||"");let r=document.createElement("div");for(let n of(r.appendChild(t.content.cloneNode(!0)),Array.from(r.querySelectorAll("img[data-canvas-export]")))){let t=Number(n.getAttribute("data-canvas-export")),r=Number.isFinite(t)?e.canvases?.[t]:null;if(!r?.dataUrl){n.remove();continue}n.setAttribute("src",r.dataUrl),n.setAttribute("width",String(r.width)),n.setAttribute("height",String(r.height)),n.setAttribute("style",function(e,t){let r=new Map;for(let t of(e||"").split(";")){let[e,...n]=t.split(":");e?.trim()&&n.length>0&&r.set(e.trim(),n.join(":").trim())}for(let[e,n]of Object.entries(t))r.set(e,n);return Array.from(r.entries()).map(([e,t])=>e+":"+t).join(";")}(n.getAttribute("style"),{width:r.width+"px",height:r.height+"px",display:"block"}))}return eS(r),Array.from(r.childNodes).map(e=>new XMLSerializer().serializeToString(e)).join("")}(e);if(!r.trim())throw Error("The widget capture was empty.");let n=[e.styles||"","#__widget_export_root{"+function(){if("u"<typeof document)return"";let e=getComputedStyle(document.documentElement);return eb.map(t=>{let r=e.getPropertyValue(t).trim();return r?t+":"+r+";":""}).join("")}()+'font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;font-size:14px;line-height:1.6;color:var(--text,#1a1a1a);background:transparent;}',"#__widget_export_root *{box-sizing:border-box;}\n#__widget_export_root svg{max-width:100%;height:auto;display:block;}"].join("\n");return eL(eI('<svg xmlns="http://www.w3.org/2000/svg" width="'+t.width+'" height="'+t.height+'" viewBox="0 0 '+t.width+" "+t.height+'"><defs><style><![CDATA['+n.replace(/\]\]>/g,"]]]]><![CDATA[>")+']]></style></defs><foreignObject x="0" y="0" width="100%" height="100%">'+('<div xmlns="http://www.w3.org/1999/xhtml" id="__widget_export_root" style="width:'+t.width+"px;min-height:")+t.height+'px;overflow:visible;">'+r+"</div></foreignObject></svg>"),t.width,t.height)}(e.capture);throw Error("PNG export needs a rendered widget capture.")}async function ew(e){var t;let r,n,o,i,l=function(e){let t=ev(e).trim();if(!/^<\s*(style|svg)\b/i.test(t))return null;let r=new DOMParser().parseFromString(t,"text/html"),n=Array.from(r.body.children),o=n.filter(e=>"svg"===e.tagName.toLowerCase()),i=n.filter(e=>"style"!==e.tagName.toLowerCase());if(1!==o.length||1!==i.length)return null;let l=o[0].cloneNode(!0),s=Array.from(r.body.querySelectorAll("style")).map(e=>e.textContent||"").join("\n").trim();if(s){let e=document.createElementNS("http://www.w3.org/2000/svg","style");e.textContent=s,l.insertBefore(e,l.firstChild)}return l}(e);if(!l)return null;eS(l),l.setAttribute("xmlns","http://www.w3.org/2000/svg");let s=eT((r=function(e){if(!e)return null;let t=e.trim().split(/[\s,]+/).map(Number);return 4!==t.length||t.some(e=>!Number.isFinite(e))||t[2]<=0||t[3]<=0?null:{width:t[2],height:t[3]}}((t=l).getAttribute("viewBox")),n=eC(t.getAttribute("width"))??r?.width??640,o=r?r.height/r.width:.5625,i=eC(t.getAttribute("height"))??r?.height??n*o,{width:n,height:i}));return l.setAttribute("width",String(s.width)),l.setAttribute("height",String(s.height)),l.getAttribute("viewBox")||l.setAttribute("viewBox","0 0 "+s.width+" "+s.height),eL(eI(new XMLSerializer().serializeToString(l)),s.width,s.height)}function eS(e){for(let t of Array.from(e.querySelectorAll("script, iframe, object, embed, meta, link, base, form")))t.remove();for(let t of[e,...Array.from(e.querySelectorAll("*"))])for(let e of Array.from(t.attributes)){let r=e.name.toLowerCase(),n=e.value.trim();if(r.startsWith("on")){t.removeAttribute(e.name);continue}("href"===r||"src"===r||r.endsWith(":href"))&&/^\s*(javascript|data:text\/html)/i.test(n)&&t.removeAttribute(e.name)}}function eC(e){if(!e||e.includes("%"))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function eT(e){let t=ez(Math.ceil(e.width||640),240,2e3),r=ez(Math.ceil(e.height||360),80,4e3),n=t*r;if(n>8e6){let e=Math.sqrt(8e6/n);t=Math.max(240,Math.floor(t*e)),r=Math.max(80,Math.floor(r*e))}return{width:t,height:r}}function ez(e,t,r){return Math.min(Math.max(e,t),r)}function eL(e,t,r){return new Promise((n,o)=>{let i=new Image,l=URL.createObjectURL(new Blob([e],{type:"image/svg+xml;charset=utf-8"}));i.onload=()=>{URL.revokeObjectURL(l);try{let e=document.createElement("canvas"),l=Math.min(window.devicePixelRatio||1,2);e.width=Math.ceil(t*l),e.height=Math.ceil(r*l),e.style.width=t+"px",e.style.height=r+"px";let s=e.getContext("2d");if(!s)throw Error("Canvas is not available.");s.scale(l,l),s.drawImage(i,0,0,t,r),e.toBlob(e=>{e?n(e):o(Error("Canvas export returned no image."))},"image/png")}catch(e){o(e instanceof Error?e:Error("PNG export failed."))}},i.onerror=()=>{URL.revokeObjectURL(l),o(Error("The browser could not render this widget as PNG."))},i.src=l})}function eI(e){if("u"<typeof document)return e;let t=getComputedStyle(document.documentElement);return e.replace(/var\(\s*(--[a-zA-Z0-9_-]+)(?:\s*,\s*([^)]+))?\)/g,(e,r,n)=>t.getPropertyValue(r).trim()||n?.trim()||"#000")}let eM=/cdnjs\.cloudflare\.com|cdn\.jsdelivr\.net|unpkg\.com|esm\.sh/,eR=new Map;function eW(e){return e.slice(0,200)}function eE({code:e,isStreaming:t,title:r,showOverlay:i,onSendMessage:l}){let{isDark:s}=eu(),a=(0,o.useRef)(null),d=(0,o.useRef)(null),c=(0,o.useRef)(null),u=(0,o.useRef)(new Map),p=(0,o.useRef)(""),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(()=>eR.get(eW(e))??0),[v,m]=(0,o.useState)(!1),[y,b]=(0,o.useState)(!1),[j,k]=(0,o.useState)(null),[w,S]=(0,o.useState)(!1),[C,T]=(0,o.useState)(!1),z=(0,o.useRef)(""),L=(0,o.useRef)((eR.get(eW(e))??0)>0),I=(0,o.useRef)(!1),M=(0,o.useRef)(s),R=(0,o.useMemo)(()=>eM.test(e),[e]),W=(0,o.useMemo)(()=>{let e;return function(e="",t=!1){return`<!DOCTYPE html>
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{51564:(e,t,r)=>{Promise.resolve().then(r.bind(r,62960))},62960:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>nb});var n=r(95155),o=r(12115),i=r(73321);let l="var(--text-dim)";function s({size:e=14,open:t=!1}){return t?(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M1 4.5A1 1 0 0 1 2 3.5H5.5L7 5h7.5v1H1V4.5Z",fill:l}),(0,n.jsx)("path",{d:"M1 6h14.5L14 13H2L1 6Z",stroke:l,strokeWidth:"1",fill:l,fillOpacity:"0.12"})]}):(0,n.jsx)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M1 4.5A1 1 0 0 1 2 3.5H5.5L7 5H14a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4.5Z",stroke:l,strokeWidth:"1",fill:l,fillOpacity:"0.1"})})}function a({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M3 2h7l3 3v9H3V2Z",stroke:l,strokeWidth:"1",fill:l,fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:l,strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]})}function d({label:e,size:t=14}){let r=t/14;return(0,n.jsxs)("svg",{width:t,height:t,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("text",{x:"7",y:"9.5",textAnchor:"middle",fontSize:3.4*r,fontFamily:"var(--font-mono), monospace",fontWeight:"600",fill:l,letterSpacing:"0",children:e})]})}function c({size:e=14}){return(0,n.jsx)(d,{label:"TS",size:e})}function u({size:e=14}){return(0,n.jsx)(d,{label:"TSX",size:e})}function p({size:e=14}){return(0,n.jsx)(d,{label:"JS",size:e})}function h({size:e=14}){return(0,n.jsx)(d,{label:"JSX",size:e})}function x({size:e=14}){return(0,n.jsx)(d,{label:"PY",size:e})}function g({size:e=14}){return(0,n.jsx)(d,{label:"{}",size:e})}function f({size:e=14}){return(0,n.jsx)(d,{label:"CSS",size:e})}function v({size:e=14}){return(0,n.jsx)(d,{label:"SC",size:e})}function m({size:e=14}){return(0,n.jsx)(d,{label:"HTM",size:e})}function y({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M3.5 9.5V7l1.5 1.5L6.5 7v2.5",stroke:l,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M8 7v2.5M7 9l1 1.5 1-1.5",stroke:l,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})}function b({size:e=14}){return(0,n.jsx)(d,{label:"YML",size:e})}function j({size:e=14}){return(0,n.jsx)(d,{label:"TOM",size:e})}function k({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M4 7.5l2 1.5-2 1.5",stroke:l,strokeWidth:"0.95",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M7.5 10.5h2.5",stroke:l,strokeWidth:"0.95",strokeLinecap:"round"})]})}function w({size:e=14}){return(0,n.jsx)(d,{label:"RS",size:e})}function S({size:e=14}){return(0,n.jsx)(d,{label:"GO",size:e})}function C({size:e=14}){return(0,n.jsx)(d,{label:"SQL",size:e})}function T({size:e=14}){return(0,n.jsx)(d,{label:"GQL",size:e})}function z({size:e=14}){return(0,n.jsx)(d,{label:"TF",size:e})}function L({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("rect",{x:"3.5",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:l,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"6",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:l,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"3.5",y:"8.5",width:"2",height:"1.5",rx:"0.3",stroke:l,strokeWidth:"0.8"})]})}function I({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5.5",cy:"8.5",r:"1.5",stroke:l,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 8.5h2.5M8.5 8.5v1.5",stroke:l,strokeWidth:"0.9",strokeLinecap:"round"})]})}function M({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5",cy:"6.5",r:"1",stroke:l,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"9",cy:"6.5",r:"1",stroke:l,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"5",cy:"10",r:"1",stroke:l,strokeWidth:"0.85"}),(0,n.jsx)("path",{d:"M5 7.5V9",stroke:l,strokeWidth:"0.85",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M9 7.5v.5a2 2 0 0 1-2 2H6",stroke:l,strokeWidth:"0.85",strokeLinecap:"round",fill:"none"})]})}function R({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("rect",{x:"4.5",y:"8.5",width:"5",height:"3",rx:"0.6",stroke:l,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M5.5 8.5V7.5a1.5 1.5 0 0 1 3 0v1",stroke:l,strokeWidth:"0.9",strokeLinecap:"round",fill:"none"})]})}function W({size:e=14}){return(0,n.jsxs)("svg",{width:e,height:e,viewBox:"0 0 14 14",fill:"none",children:[(0,n.jsx)("path",{d:"M2.5 1h6l3 3v9h-9V1Z",stroke:l,strokeWidth:"0.9",fill:l,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:l,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"7",cy:"8.5",r:"1.3",stroke:l,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 6.5v.7M7 10.3v.7M5 8.5h.7M8.3 8.5H9M5.5 6.9l.5.5M8.5 9.6l-.5-.5M5.5 10.1l.5-.5M8.5 7.4l-.5.5",stroke:l,strokeWidth:"0.8",strokeLinecap:"round"})]})}function E(e,t=14){let r=e.toLowerCase(),o=r.split(".").pop()??"";if("dockerfile"===r||r.startsWith("dockerfile."))return(0,n.jsx)(L,{size:t});if(".env"===r||r.startsWith(".env."))return(0,n.jsx)(I,{size:t});if(".gitignore"===r||".gitattributes"===r||".gitmodules"===r)return(0,n.jsx)(M,{size:t});if("package-lock.json"===r||"yarn.lock"===r||"bun.lock"===r||"pnpm-lock.yaml"===r||"cargo.lock"===r)return(0,n.jsx)(R,{size:t});if(r.endsWith(".config.ts")||r.endsWith(".config.js")||r.endsWith(".config.mjs")||r.endsWith(".config.cjs")||[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml","eslint.config.mjs","eslint.config.js"].includes(r))return(0,n.jsx)(W,{size:t});switch(o){case"ts":return(0,n.jsx)(c,{size:t});case"tsx":return(0,n.jsx)(u,{size:t});case"js":case"mjs":case"cjs":return(0,n.jsx)(p,{size:t});case"jsx":return(0,n.jsx)(h,{size:t});case"py":return(0,n.jsx)(x,{size:t});case"json":case"jsonl":return(0,n.jsx)(g,{size:t});case"css":case"less":return(0,n.jsx)(f,{size:t});case"scss":return(0,n.jsx)(v,{size:t});case"html":case"htm":return(0,n.jsx)(m,{size:t});case"md":case"mdx":return(0,n.jsx)(y,{size:t});case"yaml":case"yml":return(0,n.jsx)(b,{size:t});case"toml":return(0,n.jsx)(j,{size:t});case"sh":case"bash":case"zsh":case"fish":return(0,n.jsx)(k,{size:t});case"rs":return(0,n.jsx)(w,{size:t});case"go":return(0,n.jsx)(S,{size:t});case"sql":return(0,n.jsx)(C,{size:t});case"graphql":case"gql":return(0,n.jsx)(T,{size:t});case"tf":case"hcl":return(0,n.jsx)(z,{size:t});case"lock":return(0,n.jsx)(R,{size:t});default:return(0,n.jsx)(a,{size:t})}}function $(e){return/^[a-zA-Z]:[\\/]/.test(e)||e.startsWith("\\\\")?e.replace(/\\/g,"/"):e}function N(e){return $(e).split("/").filter(Boolean).map(encodeURIComponent).join("/")}function B(e){let t=$(e).replace(/\/+$/,"");return t.split("/").pop()??t}function P(e,t){if(!t)return e;let r=$(e),n=$(t).replace(/\/$/,"");return r.startsWith(n+"/")?r.slice(n.length+1):e}async function A(e){let t=N(e),r=await fetch(`/api/files/${t}?type=list`);return r.ok?((await r.json()).entries??[]).map(t=>{var r;return{name:t.name,fullPath:(r=t.name,`${$(e).replace(/\/$/,"")}/${r}`),isDir:t.isDir,size:t.size,children:t.isDir?[]:void 0,loaded:!t.isDir}}):[]}function H(e,t){let r=t.trim().toLowerCase();return!!(!r||e.name.toLowerCase().includes(r))||(e.children??[]).some(e=>H(e,r))}function D(e){return!!Array.from(e.types).includes("Files")||Array.from(e.items).some(e=>"file"===e.kind)}function O(e){return Array.from(e.files).filter(e=>!!e.name)}function F(e,t){return e===t?".":P(e,t)}function U({node:e,depth:t,cwd:r,onOpenFile:i,onAtMention:l,expandedPaths:a,onToggleExpanded:d,onUploadFiles:c,uploadTargetPath:u,refreshKey:p,searchQuery:h}){let x=!!h?.trim(),g=x?e.isDir:a.has(e.fullPath),[f,v]=(0,o.useState)(e.children??[]),[m,y]=(0,o.useState)(e.loaded??!1),[b,j]=(0,o.useState)(!1),[k,w]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),T=e.isDir&&(S||u===e.fullPath),z=x?f.filter(e=>H(e,h??"")):f,L=(0,o.useCallback)(async(t=!1)=>{if(!m||t){j(!0);try{let t=await A(e.fullPath);v(t),y(!0)}catch{}finally{j(!1)}}},[m,e.fullPath]),I=(0,o.useRef)(m);(0,o.useEffect)(()=>{I.current=m}),(0,o.useEffect)(()=>{g&&m&&L(!0)},[p]);let M=(0,o.useCallback)(()=>{if(e.isDir){let t=!g;d(e.fullPath,t),t&&!m&&L()}else i(e.fullPath,e.name)},[e.isDir,e.fullPath,e.name,m,g,L,i,d]),R=(0,o.useCallback)(t=>{e.isDir&&D(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy",C(!0))},[e.isDir]),W=(0,o.useCallback)(t=>{e.isDir&&D(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy")},[e.isDir]),$=(0,o.useCallback)(t=>{if(!e.isDir)return;let r=t.relatedTarget;r instanceof Node&&t.currentTarget.contains(r)||C(!1)},[e.isDir]),N=(0,o.useCallback)(t=>{if(!e.isDir||!D(t.dataTransfer))return;t.preventDefault(),t.stopPropagation(),C(!1);let r=O(t.dataTransfer);r.length>0&&(c(r,e.fullPath),g||d(e.fullPath,!0),m||L())},[L,m,e.fullPath,e.isDir,d,c,g]);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{onClick:M,onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),onDragEnter:R,onDragOver:W,onDragLeave:$,onDrop:N,style:{position:"relative",display:"flex",alignItems:"center",gap:4,paddingLeft:8+14*t,paddingRight:8,height:24,cursor:"pointer",background:T?"rgba(37,99,235,0.14)":k?"var(--bg-hover)":"transparent",outline:T?"1px solid rgba(37,99,235,0.42)":"none",outlineOffset:-1,borderRadius:4,userSelect:"none",transition:"background 0.12s, outline-color 0.12s"},children:[e.isDir&&(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"var(--text-dim)",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transform:g?"rotate(90deg)":"none",transition:"transform 0.1s"},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),!e.isDir&&(0,n.jsx)("span",{style:{width:10,flexShrink:0}}),(0,n.jsx)("span",{style:{flexShrink:0,display:"flex",alignItems:"center"},children:e.isDir?(0,n.jsx)(s,{size:14,open:g}):E(e.name,14)}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},title:e.fullPath,children:e.name}),b&&(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-dim)",strokeWidth:"2",strokeLinecap:"round",children:(0,n.jsx)("path",{d:"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4"})}),l&&k&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),l(P(e.fullPath,r))},title:"Insert path into chat",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"center",gap:4,padding:"0 8px",height:20,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:4,color:"var(--accent)",cursor:"pointer",fontSize:11,fontWeight:600,whiteSpace:"nowrap"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,n.jsx)("path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"})]}),"mention"]})]}),e.isDir&&g&&(0,n.jsxs)("div",{children:[z.map(e=>(0,n.jsx)(U,{node:e,depth:t+1,cwd:r,onOpenFile:i,onAtMention:l,expandedPaths:a,onToggleExpanded:d,onUploadFiles:c,uploadTargetPath:u,refreshKey:p,searchQuery:h},e.fullPath)),0===z.length&&m&&!x&&(0,n.jsx)("div",{style:{paddingLeft:8+(t+1)*14,fontSize:11,color:"var(--text-dim)",height:22,display:"flex",alignItems:"center"},children:"empty"})]})]})}function _({cwd:e,onOpenFile:t,refreshKey:r,onAtMention:i,searchQuery:l="",onSearchChange:s}){let[a,d]=(0,o.useState)([]),[c,u]=(0,o.useState)(!0),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(new Set),[f,v]=(0,o.useState)(!1),[m,y]=(0,o.useState)(null),[b,j]=(0,o.useState)(null),k=(0,o.useRef)(null),w=(0,o.useRef)(null),S=(0,o.useRef)(0),C=(0,o.useCallback)((e,t)=>(u(t),h(null),A(e).then(e=>d(e)).catch(e=>h(String(e))).finally(()=>u(!1))),[]),T=(0,o.useCallback)((e,t)=>{g(r=>{let n=new Set(r);return t?n.add(e):n.delete(e),n})},[]);(0,o.useEffect)(()=>{let t=k.current!==e;k.current=e,t&&g(new Set),C(e,t)},[e,r,C]),(0,o.useEffect)(()=>()=>{w.current&&clearTimeout(w.current)},[]);let z=(0,o.useCallback)(()=>{C(e,0===a.length)},[e,a.length,C]),L=(0,o.useCallback)(()=>{w.current&&clearTimeout(w.current),w.current=setTimeout(()=>j(null),5e3)},[]),I=(0,o.useCallback)((t,r)=>{if(0===t.length)return;S.current=0,v(!1),w.current&&clearTimeout(w.current);let n=t.reduce((e,t)=>e+t.size,0),o=F(r,e);y(r),j({phase:"uploading",targetPath:r,fileCount:t.length,loaded:0,total:n,message:`Uploading ${t.length} file${1===t.length?"":"s"} to ${o}`});let i=new FormData;t.forEach(e=>i.append("files",e,e.name));let l=new XMLHttpRequest,s=N(r);l.open("POST",`/api/files/${s}?type=upload`),l.upload.onprogress=e=>{e.lengthComputable&&j(t=>t?{...t,loaded:e.loaded,total:e.total}:t)},l.onload=()=>{y(null);let e={};try{e=JSON.parse(l.responseText)}catch{e={}}if(l.status>=200&&l.status<300){let i=e.uploaded??[],l=e.failed??[],s=[...i.filter(e=>e.name!==e.originalName).slice(0,3).map(e=>`${e.originalName} saved as ${e.name}`),...l.slice(0,3).map(e=>`${e.name}: ${e.error}`)];j({phase:l.length>0?"warning":"success",targetPath:r,fileCount:t.length,loaded:n,total:n,message:l.length>0?`Uploaded ${i.length}, ${l.length} failed`:`Uploaded ${i.length} file${1===i.length?"":"s"} to ${o}`,details:s}),z(),L()}else{let o=e.error??`Upload failed (HTTP ${l.status})`;j({phase:(l.status,"error"),targetPath:r,fileCount:t.length,loaded:0,total:n,message:o,details:403===l.status?["Check directory write permission or project access."]:void 0}),L()}},l.onerror=()=>{y(null),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload failed due to a network error"}),L()},l.onabort=()=>{y(null),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload canceled"}),L()},l.send(i)},[e,z,L]),M=(0,o.useCallback)(e=>{D(e.dataTransfer)&&(e.preventDefault(),S.current+=1,v(!0))},[]),R=(0,o.useCallback)(e=>{D(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},[]),W=(0,o.useCallback)(()=>{S.current-=1,S.current<=0&&(S.current=0,v(!1))},[]),E=(0,o.useCallback)(t=>{if(!D(t.dataTransfer))return;t.preventDefault(),S.current=0,v(!1);let r=O(t.dataTransfer);r.length>0&&I(r,e)},[e,I]),$=l.trim()?a.filter(e=>H(e,l)):a,B=l.trim().length>0;return c?(0,n.jsx)(V,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:M,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:"Loading files..."})}):p?(0,n.jsx)(V,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:M,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"#f87171"},children:p})}):(0,n.jsx)(V,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:M,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsxs)("div",{style:{padding:"2px 4px"},children:[$.map(o=>(0,n.jsx)(U,{node:o,depth:0,cwd:e,onOpenFile:t,onAtMention:i,expandedPaths:x,onToggleExpanded:T,onUploadFiles:I,uploadTargetPath:m,refreshKey:r,searchQuery:l},o.fullPath)),0===$.length&&(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:B?"No matching files":"No files found"})]})})}function V({cwd:e,isDraggingFiles:t,uploadState:r,onDragEnter:o,onDragOver:i,onDragLeave:l,onDrop:s,children:a}){let d=r&&r.total>0?Math.max(0,Math.min(100,Math.round(r.loaded/r.total*100))):r?.phase==="uploading"?8:100,c=r?.phase==="success"?"#22c55e":r?.phase==="warning"?"#f59e0b":r?.phase==="error"?"#ef4444":"var(--accent)";return(0,n.jsxs)("div",{onDragEnter:o,onDragOver:i,onDragLeave:l,onDrop:s,style:{position:"relative",display:"flex",flexDirection:"column",minHeight:"100%",outline:t?"1px solid rgba(37,99,235,0.45)":"none",outlineOffset:-1,background:t?"rgba(37,99,235,0.04)":void 0,transition:"background 0.12s, outline-color 0.12s"},children:[(0,n.jsx)("div",{style:{flex:1,minHeight:0},children:a}),t&&(0,n.jsx)("div",{style:{pointerEvents:"none",position:"absolute",inset:6,top:42,border:"1px dashed rgba(37,99,235,0.62)",borderRadius:8,background:"rgba(37,99,235,0.07)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontSize:12,boxShadow:"0 8px 24px rgba(0,0,0,0.16)"},children:[(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,n.jsx)("polyline",{points:"17 8 12 3 7 8"}),(0,n.jsx)("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),"Drop to upload into ",F(e,e)]})}),r&&(0,n.jsxs)("div",{style:{margin:"6px",padding:"7px 8px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",boxShadow:"0 8px 24px rgba(0,0,0,0.12)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7,minWidth:0},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:999,background:c,flexShrink:0}}),(0,n.jsx)("span",{title:r.message,style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)",fontSize:11,fontWeight:600},children:r.message}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10,flexShrink:0},children:"uploading"===r.phase?`${d}%`:function(e){if(!Number.isFinite(e)||e<=0)return"0 B";let t=["B","KB","MB","GB"],r=e,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;return`${r>=10||0===n?Math.round(r):r.toFixed(1)} ${t[n]}`}(r.total)})]}),(0,n.jsx)("div",{style:{marginTop:6,height:3,borderRadius:999,background:"var(--bg)",overflow:"hidden"},children:(0,n.jsx)("div",{style:{width:`${d}%`,height:"100%",borderRadius:999,background:c,transition:"width 0.15s ease"}})}),r.details&&r.details.length>0&&(0,n.jsx)("div",{style:{marginTop:5,display:"grid",gap:2},children:r.details.map(e=>(0,n.jsx)("div",{title:e,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontSize:10},children:e},e))})]})]})}function J(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",o=r.split(n).filter(Boolean);return o.length<=2?r:"..."+n+o.slice(-2).join(n)}function q(e){let t=new Date(e);return Number.isNaN(t.getTime())?"":t.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function K({open:e,cwd:t,homeDir:r,onClose:i,onSelectSession:l}){let[s,a]=(0,o.useState)(""),[d,c]=(0,o.useState)("current"),[u,p]=(0,o.useState)([]),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(null),[v,m]=(0,o.useState)(!1),y=(0,o.useRef)(null);if((0,o.useEffect)(()=>{e&&(c(t?"current":"all"),setTimeout(()=>y.current?.focus(),0))},[e,t]),(0,o.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&i()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,i]),(0,o.useEffect)(()=>{if(!e)return;let r=s.trim();if(r.length<2){p([]),x(!1),f(null),m(!1);return}let n=new AbortController,o=setTimeout(async()=>{x(!0),f(null);try{let e=new URLSearchParams({q:r,scope:d});t&&e.set("cwd",t);let o=await fetch(`/api/search?${e.toString()}`,{signal:n.signal});if(!o.ok)throw Error(`HTTP ${o.status}`);let i=await o.json();if(i.error)throw Error(i.error);p(i.results??[]),m(i.truncated??!1)}catch(e){"AbortError"!==e.name&&f(String(e))}finally{x(!1)}},180);return()=>{clearTimeout(o),n.abort()}},[e,s,d,t]),!e)return null;let b=s.trim(),j=u.reduce((e,t)=>e+t.matches.length,0);return(0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Search conversation history",style:{position:"fixed",inset:0,zIndex:500,display:"flex",alignItems:"flex-start",justifyContent:"center",padding:"8vh 16px 16px",background:"rgba(0,0,0,0.28)"},onMouseDown:e=>{e.target===e.currentTarget&&i()},children:(0,n.jsxs)("div",{style:{width:"min(760px, 100%)",maxHeight:"78vh",display:"flex",flexDirection:"column",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,boxShadow:"0 16px 48px rgba(0,0,0,0.24)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:12,borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flex:1,minWidth:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:8,padding:"0 10px"},children:[(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"var(--text-dim)",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.5"}),(0,n.jsx)("path",{d:"M10.5 10.5 13.5 13.5"})]}),(0,n.jsx)("input",{ref:y,value:s,onChange:e=>a(e.target.value),placeholder:"Search conversation history...",style:{flex:1,minWidth:0,height:38,background:"transparent",border:"none",outline:"none",color:"var(--text)",fontSize:14}})]}),(0,n.jsx)("button",{type:"button",onClick:i,title:"Close",style:{width:34,height:34,display:"inline-flex",alignItems:"center",justifyContent:"center",background:"none",border:"none",borderRadius:7,color:"var(--text-dim)",cursor:"pointer"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-dim)"},children:(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("path",{d:"M4 4 12 12"}),(0,n.jsx)("path",{d:"M12 4 4 12"})]})})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:10},children:[(0,n.jsx)("div",{style:{display:"inline-flex",padding:2,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7},children:[{value:"current",label:"Current project",disabled:!t},{value:"all",label:"All history",disabled:!1}].map(e=>(0,n.jsx)("button",{type:"button",disabled:e.disabled,onClick:()=>c(e.value),style:{height:24,padding:"0 9px",background:d===e.value?"var(--bg-selected)":"transparent",border:"none",borderRadius:5,color:e.disabled?"var(--text-dim)":d===e.value?"var(--text)":"var(--text-muted)",cursor:e.disabled?"not-allowed":"pointer",fontSize:11,fontWeight:500},children:e.label},e.value))}),(0,n.jsx)("div",{style:{flex:1,minWidth:0,color:"var(--text-dim)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"current"===d&&t?J(t,r):"Searching every saved session"})]})]}),(0,n.jsxs)("div",{style:{flex:1,overflowY:"auto",minHeight:180},children:[b.length<2&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"Type at least 2 characters to search saved conversations."}),b.length>=2&&h&&0===u.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"Searching..."}),g&&(0,n.jsx)("div",{style:{padding:18,color:"#ef4444",fontSize:13},children:g}),b.length>=2&&!h&&!g&&0===u.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"No matching conversations found."}),u.map(e=>(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{l(e.session),i()},style:{width:"100%",display:"flex",alignItems:"center",gap:10,padding:"10px 12px",background:"var(--bg-panel)",border:"none",borderBottom:"1px solid var(--border)",color:"var(--text)",cursor:"pointer",textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:600},children:e.session.name||e.session.firstMessage||"(no messages)"}),(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:11},children:q(e.session.modified)})]}),(0,n.jsx)("div",{style:{marginTop:2,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:J(e.session.cwd,r)})]}),e.matchCount>e.matches.length&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-muted)",fontSize:11},children:[e.matchCount," matches"]})]}),e.matches.map(t=>(0,n.jsxs)("button",{type:"button",onClick:()=>{l(e.session),i()},style:{width:"100%",padding:"9px 14px 9px 28px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:3},children:[(0,n.jsx)("span",{style:{minWidth:54,color:"user"===t.role?"var(--accent)":"var(--text-dim)",fontSize:11,fontWeight:600,textTransform:"capitalize"},children:t.role}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:q(t.timestamp)})]}),(0,n.jsx)("div",{style:{fontSize:12,lineHeight:1.45,color:"var(--text-muted)"},children:function(e,t){let r=t.trim();if(!r)return e;let o=e.toLowerCase().indexOf(r.toLowerCase());return o<0?e:(0,n.jsxs)(n.Fragment,{children:[e.slice(0,o),(0,n.jsx)("mark",{style:{background:"rgba(37,99,235,0.16)",color:"var(--text)",borderRadius:3,padding:"0 2px"},children:e.slice(o,o+r.length)}),e.slice(o+r.length)]})}(t.snippet,b)})]},t.entryId))]},e.session.id))]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",padding:"8px 12px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{children:j>0?`${j}${v?"+":""} results`:"Esc to close"}),h&&u.length>0&&(0,n.jsx)("span",{children:"Updating..."})]})]})})}function Z({open:e,initialPath:t,onClose:r,onSelect:i}){let[l,s]=(0,o.useState)(""),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)([]),[p,h]=(0,o.useState)([]),[x,g]=(0,o.useState)(""),[f,v]=(0,o.useState)(!1),[m,y]=(0,o.useState)(null),b=(0,o.useCallback)(async e=>{v(!0),y(null);try{let t=e?`/api/projects/browse?dir=${encodeURIComponent(e)}`:"/api/projects/browse",r=await fetch(t),n=await r.json();if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);s(n.current??""),d(n.parent??null),u(n.directories??[]),h(n.drives??[]),g(n.current??"")}catch(e){y(e instanceof Error?e.message:String(e))}finally{v(!1)}},[]);return((0,o.useEffect)(()=>{e&&b(t||void 0)},[b,t,e]),(0,o.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&r()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[r,e]),e)?(0,n.jsx)("div",{onMouseDown:e=>{e.target===e.currentTarget&&r()},style:{position:"fixed",inset:0,zIndex:1200,display:"flex",alignItems:"center",justifyContent:"center",padding:18,background:"rgba(0,0,0,0.34)"},children:(0,n.jsxs)("div",{style:{width:"min(560px, 100%)",maxHeight:"min(720px, 88dvh)",display:"flex",flexDirection:"column",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,boxShadow:"0 12px 40px rgba(0,0,0,0.25)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{height:48,padding:"0 14px",display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:14,fontWeight:750},children:"Select project path"}),(0,n.jsx)("div",{style:{marginTop:2,color:"var(--text-dim)",fontSize:11},children:"Server filesystem"})]}),(0,n.jsx)("button",{type:"button",onClick:r,"aria-label":"Close",title:"Close",style:{width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"x"})]}),(0,n.jsx)("div",{style:{padding:12,borderBottom:"1px solid var(--border)"},children:(0,n.jsxs)("form",{onSubmit:e=>{e.preventDefault(),x.trim()&&b(x.trim())},style:{display:"flex",gap:8},children:[(0,n.jsx)("input",{value:x,onChange:e=>g(e.target.value),placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"submit",style:{height:32,padding:"0 11px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Go"})]})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>a&&void b(a),disabled:!a,style:{width:28,height:28,border:"1px solid var(--border)",borderRadius:6,background:a?"var(--bg)":"transparent",color:a?"var(--text-muted)":"var(--text-dim)",cursor:a?"pointer":"default",padding:0},title:"Up",children:(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"2 6.5 5 3.5 8 6.5"})})}),p.length>0&&(0,n.jsxs)("select",{value:p.find(e=>l.toLowerCase().startsWith(e.toLowerCase()))??"",onChange:e=>{e.target.value&&b(e.target.value)},style:{height:28,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",fontSize:12},children:[(0,n.jsx)("option",{value:"",children:"Drive"}),p.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11},title:l,children:l})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:220,maxHeight:360,overflowY:"auto",padding:6},children:f?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"Loading..."}):m?(0,n.jsx)("div",{style:{padding:18,color:"#f87171",fontSize:12},children:m}):0===c.length?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"No subdirectories"}):c.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>void b(e.path),style:{width:"100%",display:"flex",alignItems:"center",gap:9,padding:"8px 9px",border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},title:e.path,children:[(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--accent)",flexShrink:0},children:(0,n.jsx)("path",{d:"M3 6.5A2.5 2.5 0 0 1 5.5 4H10l2 2.5h6.5A2.5 2.5 0 0 1 21 9v8.5A2.5 2.5 0 0 1 18.5 20h-13A2.5 2.5 0 0 1 3 17.5v-11Z"})}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0},children:(0,n.jsx)("polyline",{points:"3.5 2 6.5 5 3.5 8"})})]},e.path))}),(0,n.jsxs)("div",{style:{padding:12,borderTop:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[(0,n.jsx)("div",{style:{minWidth:0,color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:l,children:l}),(0,n.jsxs)("div",{style:{display:"flex",gap:7,flexShrink:0},children:[(0,n.jsx)("button",{type:"button",onClick:r,style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"}),(0,n.jsx)("button",{type:"button",onClick:()=>l&&i(l),disabled:!l,style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:l?"var(--accent)":"var(--bg-hover)",color:l?"#fff":"var(--text-dim)",cursor:l?"pointer":"default",fontSize:12,fontWeight:650},children:"Select"})]})]})]})}):null}let Y="AnnoVibe";async function G(e,t){let r=`${e}: HTTP ${t.status}`;try{let n=await t.json();return"string"==typeof n.error&&n.error?`${e}: ${n.error}`:r}catch{return r}}function X(e){let t=new Date(e),r=new Date().getTime()-t.getTime(),n=Math.floor(r/6e4),o=Math.floor(r/36e5),i=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}function Q(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",o=r.split(n).filter(Boolean);return o.length<=2?r:"…/"+o.slice(-2).join(n)}function ee(e,t){if(!e)return"No Project";let r=e.replace(/[\\/]+$/,""),n=r.includes("/")?"/":"\\";return r.split(n).filter(Boolean).pop()||Q(e,t)}function et(e){return e.lastAccessed??e.created??""}let er="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function en(){let[e,t]=(0,o.useState)(!1),[r,i]=(0,o.useState)(!1),l=(0,o.useRef)(null),s=function(e,t){let[r,n]=(0,o.useState)(e),i=(0,o.useRef)(null),l=(0,o.useRef)(0);return(0,o.useEffect)(()=>{if(!t)return void n(e);l.current=0;let r=4*e.length,o=()=>{l.current+=1;let t=Math.floor(l.current/r*e.length);n(e.split("").map((e,r)=>" "===e?" ":r<t?e:er[Math.floor(Math.random()*er.length)]).join("")),l.current<r?i.current=requestAnimationFrame(o):n(e)};return i.current=requestAnimationFrame(o),()=>{i.current&&cancelAnimationFrame(i.current)}},[e,t]),r}(e?"v0.8.15":Y,r),a=(0,o.useCallback)(e=>{t(e),i(!0),setTimeout(()=>i(!1),(e?6:8)*4*(1e3/60)+100)},[]),d=(0,o.useCallback)(()=>{l.current&&clearTimeout(l.current);let t=!e;a(t),t&&(l.current=setTimeout(()=>a(!1),3e3))},[e,a]);return(0,o.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),(0,n.jsx)("button",{onClick:d,style:{background:"none",border:"none",padding:0,cursor:"default",fontWeight:700,fontSize:15,letterSpacing:"-0.01em",color:e?"var(--accent)":"var(--text)",fontFamily:"var(--font-mono)",minWidth:"9ch"},children:s})}function eo({selectedSessionId:e,onSelectSession:t,onNewSession:r,initialSessionId:i,onInitialRestoreDone:l,refreshKey:s,onSessionDeleted:a,selectedCwd:d,onCwdChange:c,onOpenFile:u,explorerRefreshKey:p,onAtMention:h}){let[x,g]=(0,o.useState)([]),[f,v]=(0,o.useState)([]),[m,y]=(0,o.useState)(!0),[b,j]=(0,o.useState)(null),[k,w]=(0,o.useState)(null),[S,C]=(0,o.useState)(""),[T,z]=(0,o.useState)(!1),[L,I]=(0,o.useState)(null),[M,R]=(0,o.useState)(!1),[W,E]=(0,o.useState)(!1),[$,N]=(0,o.useState)(!1),B=(0,o.useRef)(!1),P=(0,o.useRef)(!1),A=(0,o.useRef)(null),[H,D]=(0,o.useState)(!0),[O,F]=(0,o.useState)(0),[U,V]=(0,o.useState)(""),J=(0,o.useCallback)(async(e=!1)=>{try{e&&y(!0);let[t,r]=await Promise.all([fetch("/api/sessions"),fetch("/api/projects")]);if(!t.ok)throw Error(await G("sessions",t));if(!r.ok)throw Error(await G("projects",r));let n=await t.json(),o=await r.json();g(n.sessions),v(o.projects),j(null)}catch(e){j(String(e))}finally{e&&y(!1)}},[]),q=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e=!q.current;q.current=!0,J(e)},[J,s]),(0,o.useEffect)(()=>{void 0!==p&&F(e=>e+1)},[p]),(0,o.useEffect)(()=>{fetch("/api/home").then(e=>e.json()).then(e=>{e.home&&C(e.home)}).catch(()=>{})},[]);let Y=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(B.current){B.current=!1;return}if(P.current){P.current=!1;return}c?.(k)},[k,c]);let er=(0,o.useCallback)(async(e,t=!1)=>{try{let r=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,create:t})}),n=await r.json();if(!r.ok||n.error)return I(n.error??`HTTP ${r.status}`),!1;return J(!1),!0}catch(e){return I(e instanceof Error?e.message:String(e)),!1}},[J]),el=(0,o.useCallback)(e=>{fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,touch:!0})}).catch(()=>{})},[]),es=(0,o.useCallback)(e=>{P.current=!0,w(e),N(!1),D(!0),V(""),F(e=>e+1),c?.(e),el(e)},[c,el]);(0,o.useEffect)(()=>{if((0!==x.length||0!==f.length)&&null===k){if(i&&!Y.current){Y.current=!0;let e=x.find(e=>e.id===i);if(e){w(e.cwd),el(e.cwd),t(e,!0);return}l?.()}let e=f[0]?.cwd;e&&(w(e),el(e))}},[x,f,k,i,t,l,el]);let ea=(0,o.useCallback)(async()=>{try{let e=await fetch("/api/default-cwd",{method:"POST"}),t=await e.json();t.cwd&&(await er(t.cwd,!1),es(t.cwd),z(!1))}catch{}},[es,er]),ed=(0,o.useCallback)(async e=>{await er(e,!1)&&(es(e),R(!1),I(null),z(!1))},[es,er]);(0,o.useEffect)(()=>{let e=e=>{A.current&&!A.current.contains(e.target)&&(z(!1),I(null))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let ec=d??k,eu=(0,o.useCallback)(e=>{if(!e)return void z(!0);let t="function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;r?.(t,e)},[r]),ep=(0,o.useCallback)(()=>{eu(ec)},[eu,ec]),eh=(0,o.useMemo)(()=>[...ec&&!f.some(e=>e.cwd===ec)?[{cwd:ec,displayName:ee(ec,S),chatCount:x.filter(e=>e.cwd===ec).length,lastAccessed:null,created:null,exists:!0,source:"manual"}]:[],...f].sort((e,t)=>{if(ec&&e.cwd===ec)return -1;if(ec&&t.cwd===ec)return 1;let r=et(e),n=et(t);return r!==n?n.localeCompare(r):e.displayName.localeCompare(t.displayName)}),[x,ec,S,f]),ex=(0,o.useMemo)(()=>x.filter(e=>e.cwd===ec).sort((e,t)=>t.modified.localeCompare(e.modified)),[x,ec]),eg=ec?eh.find(e=>e.cwd===ec):void 0,ef=ec?eh.find(e=>e.cwd===ec)?.displayName||ee(ec,S):"Open project...",ev=eg?.chatCount??ex.length,em=(0,o.useMemo)(()=>(function(e){let t=new Map;for(let r of e)t.set(r.id,{session:r,children:[]});let r=new Map;for(let t of e)t.parentSessionId&&r.set(t.id,t.parentSessionId);let n=[];for(let e of t.values()){let o=function(e){let n=r.get(e),o=new Set;for(;n&&!o.has(n);){if(o.add(n),t.has(n))return n;n=r.get(n)}return null}(e.session.id);o?t.get(o).children.push(e):n.push(e)}let o=e=>{e.sort((e,t)=>t.session.modified.localeCompare(e.session.modified)),e.forEach(e=>o(e.children))};return o(n),n})(ex),[ex]),ey=em.length,eb=em;if(ey>10&&!$){eb=em.slice(0,10);let t=em.find(t=>(function e(t,r){return!!r&&(t.session.id===r||t.children.some(t=>e(t,r)))})(t,e));t&&!eb.includes(t)&&(eb=[...eb,t])}let ej=ey-eb.length,ek=(0,o.useCallback)((e,r=!1)=>{e.cwd!==ec&&(B.current=!0,w(e.cwd)),el(e.cwd),t(e,r)},[t,ec,el]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"12px 10px 10px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:8},children:[(0,n.jsx)(en,{}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsxs)("button",{onClick:ep,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,background:"var(--bg-hover)",border:"1px solid var(--border)",color:"var(--text-muted)",cursor:"pointer",height:32,paddingLeft:10,paddingRight:12,borderRadius:7,fontSize:12,fontWeight:500,letterSpacing:"-0.01em",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},title:ec?`New session in ${ec}`:"Select a project first",onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"6",y1:"1",x2:"6",y2:"11"}),(0,n.jsx)("line",{x1:"1",y1:"6",x2:"11",y2:"6"})]}),"New"]}),(0,n.jsx)("button",{onClick:()=>E(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",background:"var(--bg-hover)",border:"1px solid var(--border)",color:"var(--text-muted)",cursor:"pointer",width:32,height:32,borderRadius:7,padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},title:"Search conversations",onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.4"}),(0,n.jsx)("path",{d:"M10.4 10.4 13.2 13.2"})]})})]})]}),(0,n.jsxs)("div",{ref:A,style:{position:"relative"},children:[(0,n.jsx)("div",{style:{marginBottom:5,display:"flex",alignItems:"center",justifyContent:"space-between",color:"var(--text-dim)",fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase"},children:(0,n.jsx)("span",{children:"Project"})}),(0,n.jsxs)("button",{onClick:()=>z(e=>!e),style:{width:"100%",display:"flex",alignItems:"center",gap:9,padding:"8px 10px",background:ec?"var(--bg-hover)":"rgba(37,99,235,0.06)",border:ec?"1px solid var(--border)":"1px solid rgba(37,99,235,0.4)",borderRadius:7,cursor:"pointer",fontSize:12,color:"var(--text)",textAlign:"left",transition:"border-color 0.15s, background 0.15s"},children:[(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{color:ec?"var(--accent)":"var(--text-dim)",flexShrink:0},children:(0,n.jsx)("path",{d:"M3 6.5A2.5 2.5 0 0 1 5.5 4H10l2 2.5h6.5A2.5 2.5 0 0 1 21 9v8.5A2.5 2.5 0 0 1 18.5 20h-13A2.5 2.5 0 0 1 3 17.5v-11Z"})}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12,fontWeight:650,color:ec?"var(--text)":"var(--text-dim)"},children:ec?ef:i&&!Y.current?"":"Open project..."}),ec&&(0,n.jsx)("span",{style:{display:"block",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",fontSize:10,color:"var(--text-dim)"},title:ec,children:Q(ec,S)})]}),ec&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10,whiteSpace:"nowrap"},children:[ev," chats"]}),(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0,transform:T?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),T&&(0,n.jsxs)("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 6px 20px rgba(0,0,0,0.10)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{maxHeight:260,overflowY:"auto"},children:[0===eh.length&&(0,n.jsx)("div",{style:{padding:"10px 12px",color:"var(--text-muted)",fontSize:12},children:"No projects yet"}),eh.map(e=>{let t=e.cwd===ec,r=et(e);return(0,n.jsxs)("button",{onClick:()=>{es(e.cwd),I(null),z(!1)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"8px 10px",background:t?"var(--bg-selected)":"none",border:"none",borderBottom:"1px solid var(--border)",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},title:e.cwd,children:[t?(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:(0,n.jsx)("polyline",{points:"1.5 5 4 7.5 8.5 2.5"})}):(0,n.jsx)("span",{style:{width:10,flexShrink:0}}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:t?"var(--text)":"var(--text-muted)",fontWeight:t?650:500},children:e.displayName}),(0,n.jsxs)("span",{style:{display:"block",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)",fontSize:10},children:[e.chatCount," chats",r?` / ${X(r)}`:"",e.exists?"":" / missing"]})]})]},e.cwd)})]}),(0,n.jsxs)("div",{style:{borderTop:eh.length>0?"1px solid var(--border)":"none"},children:[(0,n.jsxs)("button",{onClick:e=>{e.stopPropagation(),ea()},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"8px 10px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:(0,n.jsx)("path",{d:"M1 3A1 1 0 0 1 2 2H4L5 3.5H8.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7A.5.5 0 0 1 1 8V3Z"})}),(0,n.jsx)("span",{children:"Use default directory"})]}),(0,n.jsxs)("button",{onClick:e=>{e.stopPropagation(),I(null),R(!0)},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"8px 10px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M1 3A1 1 0 0 1 2 2h1.5L4.5 3H8a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3Z"}),(0,n.jsx)("path",{d:"M5 4.5v3M3.5 6h3"})]}),(0,n.jsx)("span",{children:"Select project path..."})]}),L&&(0,n.jsx)("div",{style:{padding:"0 10px 8px 27px",color:"#f87171",fontSize:10,lineHeight:1.4},children:L})]})]})]})]}),(0,n.jsx)(K,{open:W,cwd:ec,homeDir:S,onClose:()=>E(!1),onSelectSession:e=>{ek(e)}}),(0,n.jsxs)("div",{style:{flex:H&&ec?"1 1 0":"1 1 auto",overflowY:"auto",padding:"6px 8px 8px",minHeight:120},children:[m&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}),b&&(0,n.jsx)("div",{style:{padding:"12px 14px",color:"#f87171",fontSize:12},children:b}),!m&&!b&&!ec&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Open or create a project to start chatting."}),!m&&!b&&ec&&(0,n.jsxs)(n.Fragment,{children:[0===ex.length?(0,n.jsx)("button",{type:"button",onClick:()=>eu(ec),style:{width:"100%",padding:"12px",background:"transparent",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"Start a new session in this project"}):eb.map(t=>(0,n.jsx)(ei,{node:t,selectedSessionId:e,onSelectSession:ek,onRenamed:J,onSessionDeleted:e=>{a?.(e),J()},depth:0},t.session.id)),($||ej>0)&&ey>10&&(0,n.jsx)("button",{type:"button",onClick:()=>N(e=>!e),style:{width:"100%",padding:"6px 10px",background:"transparent",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:11,textAlign:"center"},children:$?"Show less":`Show ${Math.max(0,ej)} more`})]})]}),ec&&(0,n.jsxs)("div",{style:{borderTop:"1px solid var(--border)",display:"flex",flexDirection:"column",flex:H?"1 1 0":"0 0 auto",minHeight:0,overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",flexShrink:0,gap:0,padding:"2px 4px"},children:[(0,n.jsxs)("button",{onClick:()=>{D(e=>!e),F(e=>e+1)},style:{display:"flex",alignItems:"center",gap:6,padding:"6px 6px 6px 6px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:11,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",textAlign:"left",flexShrink:0},children:[(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:H?"rotate(90deg)":"none",transition:"transform 0.15s",flexShrink:0},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),"Explorer"]}),(0,n.jsxs)("div",{style:{position:"relative",flex:1,minWidth:0},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",left:8,top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)",pointerEvents:"none"},children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.4"}),(0,n.jsx)("path",{d:"M10.4 10.4 13.2 13.2"})]}),(0,n.jsx)("input",{value:U,onChange:e=>V(e.target.value),placeholder:"Filter files...",style:{width:"100%",height:28,boxSizing:"border-box",padding:"0 26px 0 26px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none"}}),U&&(0,n.jsx)("button",{type:"button",onClick:()=>V(""),title:"Clear filter",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",width:20,height:20,display:"flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-dim)",cursor:"pointer",padding:0},children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"2",x2:"8",y2:"8"}),(0,n.jsx)("line",{x1:"8",y1:"2",x2:"2",y2:"8"})]})})]})]}),H&&(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",overflowX:"hidden"},children:(0,n.jsx)(_,{cwd:ec,onOpenFile:u??(()=>{}),refreshKey:O,onAtMention:h,searchQuery:U,onSearchChange:V})})]}),(0,n.jsx)(Z,{open:M,initialPath:ec||S||null,onClose:()=>R(!1),onSelect:e=>void ed(e)})]})}function ei({node:e,selectedSessionId:t,onSelectSession:r,onRenamed:i,onSessionDeleted:l,depth:s}){let[a,d]=(0,o.useState)(!1),c=e.children.length>0;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{position:"relative"},children:[s>0&&(0,n.jsx)("div",{style:{position:"absolute",left:12*s+6,top:0,bottom:0,width:1,background:"var(--border)",pointerEvents:"none"}}),(0,n.jsx)(el,{session:e.session,isSelected:e.session.id===t,onClick:()=>r(e.session),onRenamed:i,onDeleted:e=>l?.(e),depth:s,hasChildren:c,collapsed:a,onToggleCollapse:()=>d(e=>!e)})]}),c&&!a&&(0,n.jsx)("div",{children:e.children.map(e=>(0,n.jsx)(ei,{node:e,selectedSessionId:t,onSelectSession:r,onRenamed:i,onSessionDeleted:l,depth:s+1},e.session.id))})]})}function el({session:e,isSelected:t,onClick:r,onRenamed:i,onDeleted:l,depth:s=0,hasChildren:a=!1,collapsed:d=!1,onToggleCollapse:c}){let[u,p]=(0,o.useState)(!1),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(""),[v,m]=(0,o.useState)(!1),[y,b]=(0,o.useState)(!1),j=(0,o.useRef)(null),k=e.name||e.firstMessage.slice(0,50)||e.id.slice(0,12),w=(0,o.useCallback)(t=>{t.stopPropagation(),f(e.name??""),x(!0),setTimeout(()=>j.current?.select(),0)},[e.name]),S=(0,o.useCallback)(async()=>{let t=g.trim();if(x(!1),t!==(e.name??""))try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),i?.()}catch{}},[g,e.id,e.name,i]),C=(0,o.useCallback)(e=>{e.stopPropagation(),m(!0)},[]),T=(0,o.useCallback)(async t=>{t.stopPropagation(),m(!1),b(!0);try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"DELETE"}),l?.(e.id)}catch{b(!1)}},[e.id,l]),z=(0,o.useCallback)(e=>{e.stopPropagation(),m(!1)},[]);return(0,n.jsx)("div",{onClick:v||h?void 0:r,onMouseEnter:()=>p(!0),onMouseLeave:()=>{p(!1)},style:{height:54,display:"flex",alignItems:"center",paddingLeft:s>0?12*s+14:14,paddingRight:8,cursor:v||h?"default":"pointer",background:v?"rgba(239,68,68,0.06)":t?"var(--bg-selected)":u?"var(--bg-hover)":"transparent",borderLeft:v?"2px solid #ef4444":t?"2px solid var(--accent)":"2px solid transparent",transition:"background 0.1s",opacity:y?.5:1,gap:6,overflow:"hidden"},children:v?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["Delete ",(0,n.jsxs)("span",{style:{fontWeight:600},children:["“",k.slice(0,22),k.length>22?"…":"","”"]}),"?"]}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,flexShrink:0},children:[(0,n.jsxs)("button",{onClick:T,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:4,height:30,padding:"0 11px",background:"#ef4444",border:"none",borderRadius:6,color:"#fff",cursor:"pointer",fontSize:12,fontWeight:600,whiteSpace:"nowrap"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]}),"Delete"]}),(0,n.jsx)("button",{onClick:z,style:{display:"flex",alignItems:"center",justifyContent:"center",height:30,padding:"0 11px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:500,whiteSpace:"nowrap"},children:"Cancel"})]})]}):h?(0,n.jsx)("input",{ref:j,value:g,onChange:e=>f(e.target.value),onBlur:S,onKeyDown:e=>{"Enter"===e.key&&S(),"Escape"===e.key&&x(!1)},autoFocus:!0,style:{flex:1,fontSize:12,padding:"5px 8px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--bg)",color:"var(--text)",height:30}}):(0,n.jsxs)(n.Fragment,{children:[s>0&&(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-dim)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:t?500:400,lineHeight:1.4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},title:k,children:k}),(0,n.jsxs)("div",{style:{marginTop:2,display:"flex",gap:8,color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{title:e.modified,children:X(e.modified)}),(0,n.jsxs)("span",{children:[e.messageCount," msgs"]})]})]}),a&&(0,n.jsx)("button",{onClick:e=>{e.stopPropagation(),c?.()},title:d?"Expand forks":"Collapse forks",style:{display:"flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,flexShrink:0,background:"none",border:"none",color:"var(--text-dim)",cursor:"pointer",transform:d?"rotate(-90deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})}),u&&(0,n.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,n.jsx)("button",{onClick:w,title:"Rename",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),(0,n.jsx)("button",{onClick:C,title:"Delete",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.08)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]})})]})]})})}let es=new Set;function ea(e){return es.add(e),()=>{es.delete(e)}}function ed(){return"u"<typeof document?"light":document.documentElement.classList.contains("dark")?"dark":"light"}function ec(){return"light"}function eu(){let e=(0,o.useSyncExternalStore)(ea,ed,ec);return{theme:e,toggleTheme:(0,o.useCallback)(e=>{let t="dark"===ed()?"light":"dark",r=()=>{"dark"===t?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark");try{localStorage.setItem("pi-theme",t)}catch{}es.forEach(e=>e())},n=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if("function"!=typeof document.startViewTransition||n)return void r();let o=e?.x??window.innerWidth/2,i=e?.y??window.innerHeight/2,l=Math.hypot(Math.max(o,window.innerWidth-o),Math.max(i,window.innerHeight-i));document.startViewTransition(r).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${o}px ${i}px)`,`circle(${l}px at ${o}px ${i}px)`]},{duration:450,easing:"cubic-bezier(0.22, 0.61, 0.36, 1)",pseudoElement:"::view-transition-new(root)"})}).catch(()=>{})},[]),isDark:"dark"===e}}function ep(e){let t,r=[],n=/`{1,3}show-widget`{0,3}\s*(?:\n\s*`{3}(?:json|html)?\s*)?\n?/g,o=0,i=!1;for(;null!==(t=n.exec(e));){i=!0;let l=e.slice(o,t.index).trim();l&&r.push({type:"text",content:l});let s=t.index+t[0].length,a=e.indexOf("```",s),d=e.indexOf("{",s);if(-1!==d&&d<=s+200&&(-1===a||d<a)){let t=function(e,t){let r=0,n=!1,o=!1;for(let i=t;i<e.length;i++){let t=e[i];if(o){o=!1;continue}if("\\"===t&&n){o=!0;continue}if('"'===t){n=!n;continue}if(!n&&("{"===t&&r++,"}"===t)&&0==--r)return i}return -1}(e,d);if(-1===t){let t=function(e){try{let t=eh(e);if(t)return t}catch{}let t=e.indexOf('"widget_code"');if(-1===t)return null;let r=e.indexOf(":",t+13);if(-1===r)return null;let n=e.indexOf('"',r+1);if(-1===n)return null;let o=e.slice(n+1);(o=o.replace(/"\s*\}\s*$/,"")).endsWith("\\")&&(o=o.slice(0,-1));let i=e.match(/"title"\s*:\s*"([^"]*?)"/)?.[1],l=ex(o.replace(/\\\\/g,"\0BACKSLASH\0").replace(/\\n/g,"\n").replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(parseInt(t,16))).replace(/\x00BACKSLASH\x00/g,"\\"));return l.code.trim()?{title:i,code:l.code,showOverlay:l.truncated}:null}(e.slice(d));t&&r.push({type:"widget",...t,partial:!0}),o=e.length;break}let i=eh(e.slice(d,t+1).trim());i&&r.push({type:"widget",...i});let l=t+1,s=e.slice(l,l+16).match(/^\s*\n?`{1,3}\s*/);s&&(l+=s[0].length),o=l,n.lastIndex=l;continue}if(-1!==a){let t=e.slice(s,a).trim(),i=eh(t);i?r.push({type:"widget",...i}):t&&r.push({type:"text",content:t}),n.lastIndex=o=a+3}else{let t=eh(e.slice(s).trim());if(t){let e=ex(t.code);r.push({type:"widget",title:t.title,code:e.code,partial:!0,showOverlay:e.truncated})}o=e.length;break}}let l=e.slice(o).trim();return l&&r.push({type:"text",content:l}),!i&&0===r.length&&e.trim()&&r.push({type:"text",content:e}),r}function eh(e){if(e.startsWith("{")){if(!e.endsWith("}"))return null;try{let t=JSON.parse(e),r=t.widget_code??t.code;if(r)return{title:t.title,code:r}}catch{return null}}return/<(!DOCTYPE|html|svg|canvas|script|style|div)/i.test(e)?{code:e}:null}function ex(e){let t=e.lastIndexOf("<script");if(-1===t)return{code:e,truncated:!1};let r=e.slice(t);return/<script[\s\S]*?<\/script>/i.test(r)?{code:e,truncated:!1}:{code:e.slice(0,t).trim(),truncated:!0}}let eg=/<(iframe|object|embed|meta|link|base|form)[\s>][\s\S]*?<\/\1>/gi,ef=/<(iframe|object|embed|meta|link|base)\b[^>]*\/?>/gi;function ev(e){return e.replace(eg,"").replace(ef,"")}let em=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];function ey(){if("u"<typeof document)return{};let e=getComputedStyle(document.documentElement),t={};for(let r of em){let n=e.getPropertyValue(r).trim();n&&(t[r]=n)}return t}let eb=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];async function ej(e){if(navigator.clipboard?.writeText)return void await navigator.clipboard.writeText(e);let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.inset="0",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let r=document.execCommand("copy");if(document.body.removeChild(t),!r)throw Error("Clipboard copy failed.")}async function ek(e){let t=await ew(e.code);if(t)return t;if(e.capture)return function(e){if(!e.html)throw Error("The widget did not provide capturable HTML.");let t=eT({width:e.bodyWidth||640,height:e.bodyHeight||360}),r=function(e){let t=document.createElement("template");t.innerHTML=ev(e.html||"");let r=document.createElement("div");for(let n of(r.appendChild(t.content.cloneNode(!0)),Array.from(r.querySelectorAll("img[data-canvas-export]")))){let t=Number(n.getAttribute("data-canvas-export")),r=Number.isFinite(t)?e.canvases?.[t]:null;if(!r?.dataUrl){n.remove();continue}n.setAttribute("src",r.dataUrl),n.setAttribute("width",String(r.width)),n.setAttribute("height",String(r.height)),n.setAttribute("style",function(e,t){let r=new Map;for(let t of(e||"").split(";")){let[e,...n]=t.split(":");e?.trim()&&n.length>0&&r.set(e.trim(),n.join(":").trim())}for(let[e,n]of Object.entries(t))r.set(e,n);return Array.from(r.entries()).map(([e,t])=>e+":"+t).join(";")}(n.getAttribute("style"),{width:r.width+"px",height:r.height+"px",display:"block"}))}return eS(r),Array.from(r.childNodes).map(e=>new XMLSerializer().serializeToString(e)).join("")}(e);if(!r.trim())throw Error("The widget capture was empty.");let n=[e.styles||"","#__widget_export_root{"+function(){if("u"<typeof document)return"";let e=getComputedStyle(document.documentElement);return eb.map(t=>{let r=e.getPropertyValue(t).trim();return r?t+":"+r+";":""}).join("")}()+'font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;font-size:14px;line-height:1.6;color:var(--text,#1a1a1a);background:transparent;}',"#__widget_export_root *{box-sizing:border-box;}\n#__widget_export_root svg{max-width:100%;height:auto;display:block;}"].join("\n");return eL(eI('<svg xmlns="http://www.w3.org/2000/svg" width="'+t.width+'" height="'+t.height+'" viewBox="0 0 '+t.width+" "+t.height+'"><defs><style><![CDATA['+n.replace(/\]\]>/g,"]]]]><![CDATA[>")+']]></style></defs><foreignObject x="0" y="0" width="100%" height="100%">'+('<div xmlns="http://www.w3.org/1999/xhtml" id="__widget_export_root" style="width:'+t.width+"px;min-height:")+t.height+'px;overflow:visible;">'+r+"</div></foreignObject></svg>"),t.width,t.height)}(e.capture);throw Error("PNG export needs a rendered widget capture.")}async function ew(e){var t;let r,n,o,i,l=function(e){let t=ev(e).trim();if(!/^<\s*(style|svg)\b/i.test(t))return null;let r=new DOMParser().parseFromString(t,"text/html"),n=Array.from(r.body.children),o=n.filter(e=>"svg"===e.tagName.toLowerCase()),i=n.filter(e=>"style"!==e.tagName.toLowerCase());if(1!==o.length||1!==i.length)return null;let l=o[0].cloneNode(!0),s=Array.from(r.body.querySelectorAll("style")).map(e=>e.textContent||"").join("\n").trim();if(s){let e=document.createElementNS("http://www.w3.org/2000/svg","style");e.textContent=s,l.insertBefore(e,l.firstChild)}return l}(e);if(!l)return null;eS(l),l.setAttribute("xmlns","http://www.w3.org/2000/svg");let s=eT((r=function(e){if(!e)return null;let t=e.trim().split(/[\s,]+/).map(Number);return 4!==t.length||t.some(e=>!Number.isFinite(e))||t[2]<=0||t[3]<=0?null:{width:t[2],height:t[3]}}((t=l).getAttribute("viewBox")),n=eC(t.getAttribute("width"))??r?.width??640,o=r?r.height/r.width:.5625,i=eC(t.getAttribute("height"))??r?.height??n*o,{width:n,height:i}));return l.setAttribute("width",String(s.width)),l.setAttribute("height",String(s.height)),l.getAttribute("viewBox")||l.setAttribute("viewBox","0 0 "+s.width+" "+s.height),eL(eI(new XMLSerializer().serializeToString(l)),s.width,s.height)}function eS(e){for(let t of Array.from(e.querySelectorAll("script, iframe, object, embed, meta, link, base, form")))t.remove();for(let t of[e,...Array.from(e.querySelectorAll("*"))])for(let e of Array.from(t.attributes)){let r=e.name.toLowerCase(),n=e.value.trim();if(r.startsWith("on")){t.removeAttribute(e.name);continue}("href"===r||"src"===r||r.endsWith(":href"))&&/^\s*(javascript|data:text\/html)/i.test(n)&&t.removeAttribute(e.name)}}function eC(e){if(!e||e.includes("%"))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function eT(e){let t=ez(Math.ceil(e.width||640),240,2e3),r=ez(Math.ceil(e.height||360),80,4e3),n=t*r;if(n>8e6){let e=Math.sqrt(8e6/n);t=Math.max(240,Math.floor(t*e)),r=Math.max(80,Math.floor(r*e))}return{width:t,height:r}}function ez(e,t,r){return Math.min(Math.max(e,t),r)}function eL(e,t,r){return new Promise((n,o)=>{let i=new Image,l=URL.createObjectURL(new Blob([e],{type:"image/svg+xml;charset=utf-8"}));i.onload=()=>{URL.revokeObjectURL(l);try{let e=document.createElement("canvas"),l=Math.min(window.devicePixelRatio||1,2);e.width=Math.ceil(t*l),e.height=Math.ceil(r*l),e.style.width=t+"px",e.style.height=r+"px";let s=e.getContext("2d");if(!s)throw Error("Canvas is not available.");s.scale(l,l),s.drawImage(i,0,0,t,r),e.toBlob(e=>{e?n(e):o(Error("Canvas export returned no image."))},"image/png")}catch(e){o(e instanceof Error?e:Error("PNG export failed."))}},i.onerror=()=>{URL.revokeObjectURL(l),o(Error("The browser could not render this widget as PNG."))},i.src=l})}function eI(e){if("u"<typeof document)return e;let t=getComputedStyle(document.documentElement);return e.replace(/var\(\s*(--[a-zA-Z0-9_-]+)(?:\s*,\s*([^)]+))?\)/g,(e,r,n)=>t.getPropertyValue(r).trim()||n?.trim()||"#000")}let eM=/cdnjs\.cloudflare\.com|cdn\.jsdelivr\.net|unpkg\.com|esm\.sh/,eR=new Map;function eW(e){return e.slice(0,200)}function eE({code:e,isStreaming:t,title:r,showOverlay:i,onSendMessage:l}){let{isDark:s}=eu(),a=(0,o.useRef)(null),d=(0,o.useRef)(null),c=(0,o.useRef)(null),u=(0,o.useRef)(new Map),p=(0,o.useRef)(""),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(()=>eR.get(eW(e))??0),[v,m]=(0,o.useState)(!1),[y,b]=(0,o.useState)(!1),[j,k]=(0,o.useState)(null),[w,S]=(0,o.useState)(!1),[C,T]=(0,o.useState)(!1),z=(0,o.useRef)(""),L=(0,o.useRef)((eR.get(eW(e))??0)>0),I=(0,o.useRef)(!1),M=(0,o.useRef)(s),R=(0,o.useMemo)(()=>eM.test(e),[e]),W=(0,o.useMemo)(()=>{let e;return function(e="",t=!1){return`<!DOCTYPE html>
2
2
  <html class="${t?"dark":""}">
3
3
  <head>
4
4
  <meta charset="utf-8">
@@ -255,7 +255,7 @@ Attached document text:
255
255
 
256
256
  ${s}`:e:s?`Attached document text:
257
257
 
258
- ${s}`:"",d=o?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),c={role:"user",content:d?.length?[...a.trim()?[{type:"text",text:a}]:[],...d]:a,timestamp:Date.now()};j(e=>[...e,c]),es(null),z(!0),ei({kind:"waiting_model"}),C({type:"start"}),ex.current=!0;let p=o?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{if(u&&n){B&&Q(B);let{PRESET_NONE:t,PRESET_DEFAULT:o,PRESET_FULL:i,PRESET_FULL_PLOT:s}=await r.e(8451).then(r.bind(r,48451)),d="none"===A?t:"default"===A?o:"full-plot"===A?s:i,c=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,type:"prompt",message:a,toolNames:d,...p?.length?{images:p}:{},...B?{provider:B.provider,modelId:B.modelId}:{},..."auto"!==D?{thinkingLevel:D}:{}})}),u=await c.json().catch(()=>({}));if(!c.ok||u.error||!u.sessionId)throw Error(u.error??`HTTP ${c.status}`);let h=u.sessionId;ed.current=h,eT(h),l?.({id:h,path:"",cwd:n,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e})}else t&&(eT(t.id),await tT(t.id,{type:"prompt",message:a,...p?.length?{images:p}:{}}))}catch(e){console.error("Failed to send message:",e),es(e instanceof Error?e.message:String(e)),z(!1),ei(null),C({type:"end"})}},[u,n,B,A,D,t,T,eT,l,ej]),eL=(0,o.useCallback)(async()=>{let e=ed.current;if(e){ec.current=!1,es(null),z(!1),ei(null),C({type:"end"}),ea.current?.close(),ea.current=null;try{await tT(e,{type:"abort"}),await ew(e)}catch(t){console.error("Failed to abort:",t),await ew(e)}}},[ew]),eI=(0,o.useCallback)(async e=>{let t=ed.current;if(t){Z(e);try{let{cancelled:r,newSessionId:n}=await tT(t,{type:"fork",entryId:e})??{};!r&&n&&s?.(n)}catch(e){console.error("Fork failed:",e)}finally{Z(null)}}},[s]),eM=(0,o.useCallback)(async e=>{let t=ed.current;t&&(tT(t,{type:"navigate_tree",targetId:e}).catch(()=>{}),y(e),await eS(t,e))},[eS]),eR=(0,o.useCallback)(async e=>{y(e);let t=ed.current;t&&(await eS(t,e),e&&tT(t,{type:"navigate_tree",targetId:e}).catch(()=>{}))},[eS]),eW=(0,o.useCallback)(async(e,t)=>{if(u)return void ev({provider:e,modelId:t});let r=ed.current;if(r)try{await tT(r,{type:"set_model",provider:e,modelId:t}),G({provider:e,modelId:t})}catch(e){console.error("Failed to set model:",e)}},[u,ev]),eE=(0,o.useCallback)(async()=>{let e=ed.current;if(e&&!ee){et(!0),en(null);try{await tT(e,{type:"compact"}),await ew(e,!0)}catch(e){en(e instanceof Error?e.message:String(e))}finally{et(!1)}}},[ee,ew]),e$=(0,o.useCallback)(async(e,t,r)=>{let n=ed.current;if(!n)return;let o=ej(r),i=e.trim()?o?`${e}
258
+ ${s}`:"",d=o?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),c={role:"user",content:d?.length?[...a.trim()?[{type:"text",text:a}]:[],...d]:a,timestamp:Date.now()};j(e=>[...e,c]),es(null),z(!0),ei({kind:"waiting_model"}),C({type:"start"}),ex.current=!0;let p=o?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{if(u&&n){B&&Q(B);let{PRESET_NONE:t,PRESET_DEFAULT:o,PRESET_FULL:i,PRESET_FULL_PLOT:s}=await r.e(8451).then(r.bind(r,48451)),d="none"===A?t:"default"===A?o:"full-plot"===A?s:i,c=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,type:"prompt",message:a,toolNames:d,...p?.length?{images:p}:{},...B?{provider:B.provider,modelId:B.modelId}:{},..."auto"!==D?{thinkingLevel:D}:{}})}),u=await c.json().catch(()=>({}));if(!c.ok||u.error||!u.sessionId)throw Error(u.error??`HTTP ${c.status}`);let h=u.sessionId;ed.current=h,eT(h),l?.({id:h,path:"",cwd:n,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e})}else if(t){let{PRESET_NONE:e,PRESET_DEFAULT:n,PRESET_FULL:o,PRESET_FULL_PLOT:i}=await r.e(8451).then(r.bind(r,48451));eT(t.id),await tT(t.id,{type:"prompt",message:a,toolNames:"none"===A?e:"default"===A?n:"full-plot"===A?i:o,...p?.length?{images:p}:{}})}}catch(e){console.error("Failed to send message:",e),es(e instanceof Error?e.message:String(e)),z(!1),ei(null),C({type:"end"})}},[u,n,B,A,D,t,T,eT,l,ej]),eL=(0,o.useCallback)(async()=>{let e=ed.current;if(e){ec.current=!1,es(null),z(!1),ei(null),C({type:"end"}),ea.current?.close(),ea.current=null;try{await tT(e,{type:"abort"}),await ew(e)}catch(t){console.error("Failed to abort:",t),await ew(e)}}},[ew]),eI=(0,o.useCallback)(async e=>{let t=ed.current;if(t){Z(e);try{let{cancelled:r,newSessionId:n}=await tT(t,{type:"fork",entryId:e})??{};!r&&n&&s?.(n)}catch(e){console.error("Fork failed:",e)}finally{Z(null)}}},[s]),eM=(0,o.useCallback)(async e=>{let t=ed.current;t&&(tT(t,{type:"navigate_tree",targetId:e}).catch(()=>{}),y(e),await eS(t,e))},[eS]),eR=(0,o.useCallback)(async e=>{y(e);let t=ed.current;t&&(await eS(t,e),e&&tT(t,{type:"navigate_tree",targetId:e}).catch(()=>{}))},[eS]),eW=(0,o.useCallback)(async(e,t)=>{if(u)return void ev({provider:e,modelId:t});let r=ed.current;if(r)try{await tT(r,{type:"set_model",provider:e,modelId:t}),G({provider:e,modelId:t})}catch(e){console.error("Failed to set model:",e)}},[u,ev]),eE=(0,o.useCallback)(async()=>{let e=ed.current;if(e&&!ee){et(!0),en(null);try{await tT(e,{type:"compact"}),await ew(e,!0)}catch(e){en(e instanceof Error?e.message:String(e))}finally{et(!1)}}},[ee,ew]),e$=(0,o.useCallback)(async(e,t,r)=>{let n=ed.current;if(!n)return;let o=ej(r),i=e.trim()?o?`${e}
259
259
 
260
260
  Attached document text:
261
261
 
@@ -267,4 +267,4 @@ Attached document text:
267
267
 
268
268
  ${o}`:e:o?`Attached document text:
269
269
 
270
- ${o}`:"";j(e=>[...e,{role:"user",content:i,timestamp:Date.now()}]);let l=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{await tT(n,{type:"follow_up",message:i,...l?.length?{images:l}:{}})}catch(e){console.error("Failed to follow up:",e)}},[ej]),eB=(0,o.useCallback)(async()=>{let e=ed.current;if(e)try{await tT(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),eP=(0,o.useCallback)(async e=>{if(O(e),"auto"===e)return;let t=ed.current;if(t)try{await tT(t,{type:"set_thinking_level",level:e})}catch(e){console.error("Failed to set thinking level:",e)}},[]),eA=(0,o.useCallback)(async e=>{let{PRESET_NONE:t,PRESET_DEFAULT:n,PRESET_FULL:o,PRESET_FULL_PLOT:i}=await r.e(8451).then(r.bind(r,48451));em(e);let l=ed.current;if(l)try{await tT(l,{type:"set_tools",toolNames:"none"===e?t:"default"===e?n:"full-plot"===e?i:o})}catch(e){console.error("Failed to set tools:",e)}},[em]),eH=(0,o.useCallback)((e="smooth")=>{eg.current?.scrollIntoView({behavior:e})},[]),eD=(0,o.useCallback)(()=>{let e=ef.current,t=eh.current;if(!e||!t)return;let r=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop;e.scrollTo({top:r-16,behavior:"smooth"})},[]);return(0,o.useEffect)(()=>(t&&(ed.current=t.id,ew(t.id,!0,!0).then(e=>{e?.running&&(eC(t.id),z(!0),ei({kind:"waiting_model"}),C({type:"start"}),eT(t.id)),e?.state&&(void 0!==e.state.isCompacting&&et(e.state.isCompacting),void 0!==e.state.contextUsage&&V(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&q(e.state.systemPrompt??null),void 0!==e.state.thinkingLevel&&O(e.state.thinkingLevel??"auto"))})),()=>{ea.current?.close(),ea.current=null}),[]),(0,o.useEffect)(()=>{c?.(J)},[J,c]),(0,o.useEffect)(()=>{d&&d(p?.tree??[],m,eR)},[p?.tree,m,eR,d]),(0,o.useEffect)(()=>{b.length>0&&(ex.current?(ex.current=!1,ep.current=!0,eD()):ep.current?ec.current||eH("smooth"):(ep.current=!0,eH("instant")))},[b.length,T,eH,eD]),(0,o.useEffect)(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{if(I(e.models),e.thinkingLevels&&E(e.thinkingLevels),e.thinkingLevelMaps&&N(e.thinkingLevelMaps),e.modelList&&(R(e.modelList),u&&e.modelList.length>0)){let t=e.defaultModel,r=t&&e.modelList.find(e=>e.id===t.modelId&&e.provider===t.provider);ev(r?{provider:r.provider,modelId:r.id}:{provider:e.modelList[0].provider,modelId:e.modelList[0].id})}}).catch(()=>{})},[u,a,ev]),(0,o.useEffect)(()=>{if(!er)return;let e=setTimeout(()=>en(null),3e3);return()=>clearTimeout(e)},[er]),{data:p,loading:x,error:f,activeLeafId:m,messages:b,entryIds:k,streamState:S,agentRunning:T,modelNames:L,modelList:M,modelThinkingLevels:W,modelThinkingLevelMaps:$,newSessionModel:B,toolPreset:A,thinkingLevel:D,retryInfo:F,contextUsage:_,systemPrompt:J,forkingEntryId:K,isCompacting:ee,compactError:er,currentModel:ey,displayModel:eb,sessionStats:ek,agentPhase:eo,agentError:el,isNew:u,sessionIdRef:ed,eventSourceRef:ea,messagesEndRef:eg,scrollContainerRef:ef,lastUserMsgRef:eh,pendingScrollToUserRef:ex,initialScrollDoneRef:ep,handleSend:ez,handleAbort:eL,handleFork:eI,handleNavigate:eM,handleModelChange:eW,handleCompact:eE,handleSteer:e$,handleFollowUp:eN,handleAbortCompaction:eB,handleToolPresetChange:eA,handleThinkingLevelChange:eP,loadTools:eC,setActiveLeafId:y,setData:h,setMessages:j,dispatch:C,setAgentRunning:z,setForkingEntryId:Z,handleAgentEventRef:eu}}({session:e,newSessionCwd:t,onAgentEnd:i,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,onBranchDataChange:c,onSystemPromptChange:u}),{soundEnabled:eo,onSoundToggle:ei,playDoneSound:el}=function(){let[e,t]=(0,o.useState)(()=>{let e=localStorage.getItem("pi-sound-enabled");return null===e||"true"===e}),r=(0,o.useRef)(e);return(0,o.useEffect)(()=>{r.current=e},[e]),{soundEnabled:e,onSoundToggle:(0,o.useCallback)(()=>{t(e=>{let t=!e;return localStorage.setItem("pi-sound-enabled",String(t)),t})},[]),playDoneSound:(0,o.useCallback)(()=>{if(r.current)try{let e=new AudioContext,t=e.currentTime;[523.25,659.25].forEach((r,n)=>{let o=e.createOscillator(),i=e.createGain();o.connect(i),i.connect(e.destination),o.type="sine",o.frequency.value=r;let l=t+.18*n;i.gain.setValueAtTime(0,l),i.gain.linearRampToValueAtTime(.18,l+.02),i.gain.exponentialRampToValueAtTime(.001,l+.45),o.start(l),o.stop(l+.45)}),setTimeout(()=>e.close(),1200)}catch{}},[]),soundEnabledRef:r}}(),es=(0,o.useRef)(el);es.current=el;let ea=(0,o.useRef)(eo);ea.current=eo;let ed=en.current;(0,o.useEffect)(()=>{en.current=e=>{"agent_end"===e.type&&ea.current&&es.current(),ed?.(e)}},[ed,en]);let ec=A?`${A.tokens.input}|${A.tokens.output}|${A.tokens.cacheRead}|${A.tokens.cacheWrite}|${A.cost??0}`:null,eu=(0,o.useRef)(A);eu.current=A,(0,o.useEffect)(()=>{p?.(eu.current)},[ec,p]),(0,o.useEffect)(()=>()=>{p?.(null)},[p]);let ep=E?`${E.percent??"null"}|${E.contextWindow}|${E.tokens??"null"}`:null,eh=(0,o.useRef)(E);eh.current=E,(0,o.useEffect)(()=>{h?.(eh.current)},[ep,h]),(0,o.useEffect)(()=>()=>{h?.(null)},[h]);let{isDragOver:ex,handleDragEnter:eg,handleDragOver:ef,handleDragLeave:ev,handleDrop:em}=function(e){let[t,r]=(0,o.useState)(!1),n=(0,o.useRef)(0),i=(0,o.useCallback)(e=>{Array.from(e.dataTransfer.items).some(tI)&&(e.preventDefault(),n.current+=1,r(!0))},[]),l=(0,o.useCallback)(e=>{Array.from(e.dataTransfer.items).some(tI)&&e.preventDefault()},[]);return{isDragOver:t,handleDragEnter:i,handleDragOver:l,handleDragLeave:(0,o.useCallback)(()=>{n.current-=1,n.current<=0&&(n.current=0,r(!1))},[]),handleDrop:(0,o.useCallback)(t=>{t.preventDefault(),n.current=0,r(!1),e(Array.from(t.dataTransfer.files))},[e])}}((0,o.useCallback)(e=>{d?.current?.addFiles(e)},[d])),[ey,eb]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!O)return;let e=!1;return fetch("/api/version").then(e=>e.ok?e.json():null).then(t=>{!e&&t?.updateAvailable&&eb(t)}).catch(()=>{}),()=>{e=!0}},[O]);let ej=(f=j.filter(e=>"user"===e.role||"assistant"===e.role).length,(v=(0,o.useRef)([])).current=Array(f).fill(null).map((e,t)=>v.current[t]??null),v),ek=(0,o.useRef)(new Set),ew=(0,o.useRef)(new Set);(0,o.useEffect)(()=>{ek.current.clear(),ew.current.clear()},[e?.id]),(0,o.useEffect)(()=>{if(e?.id&&!C&&!w.isStreaming)for(let t of j.flatMap(e=>"assistant"!==e.role?[]:(Array.isArray(e.content)?e.content:[]).flatMap(e=>"text"!==e.type?[]:eZ(e.text)))){let r=`${e.id}:${t.raw}`;ek.current.has(r)||(ek.current.add(r),fetch(`/api/reports/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply_update",update:t.update,updateKey:t.raw})}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);x?.()}).catch(()=>{ek.current.delete(r)}))}},[C,j,x,e?.id,w.isStreaming]),(0,o.useEffect)(()=>{if(!e?.id||C||w.isStreaming)return;let t=function(e){for(let t=e.length-1;t>=0;t--)if("user"===e[t].role)return e.slice(t);return e}(j);if(eZ(t.filter(e=>"assistant"===e.role).map(tN).join("\n")).length>0||!function(e){if(0===e.length)return!1;let t=e.map(tN).join("\n");return!!tR.test(t)&&(tE.test(t)||tW.test(t)||/\b(saved|wrote|created|exported|generated|output|result)\b|输出|生成|保存|文件/.test(t))}(t))return;let r=function(e){for(let t=e.length-1;t>=0;t--){if("user"!==e[t].role)continue;let r=tN(e[t]).replace(/\s+/g," ").trim();if(r)return r.slice(0,90)}return"Current bioinformatics analysis"}(j),n=`${e.id}:${S??"latest"}:${r}`;ew.current.has(n)||(ew.current.add(n),fetch(`/api/reports/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"generate",leafId:S,topic:r})}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);x?.()}).catch(()=>{ew.current.delete(n)}))},[S,C,j,x,e?.id,w.isStreaming]);let eS=O&&0===j.length&&!w.isStreaming&&!C,[eC,eT]=(0,o.useState)(!1),ez=tw(j),eL=ez.filter(e=>"running"===e.status).length;(0,o.useEffect)(()=>{0===ez.length&&eC&&eT(!1)},[ez.length,eC]);let eI=P?L[`${P.provider}:${P.modelId}`]??null:null,eM=P?I[`${P.provider}:${P.modelId}`]??null:null,eR=(0,n.jsx)(tb,{ref:d,onSend:V,onAbort:J,onSteer:C?X:void 0,onFollowUp:C?Q:void 0,isStreaming:C,model:P,modelNames:T,modelList:z,onModelChange:Z,onCompact:e||O?G:void 0,onAbortCompaction:ee,isCompacting:N,compactError:B,toolPreset:M,onToolPresetChange:e||O?et:void 0,thinkingLevel:R,onThinkingLevelChange:e||O?er:void 0,availableThinkingLevels:eI,thinkingLevelMap:eM,retryInfo:W,soundEnabled:eo,onSoundToggle:ei}),eW=(0,o.useCallback)(e=>{C?d?.current?.insertText(e):V(e)},[C,d,V]);return y?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:"Loading session..."}):b?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:b}):(0,n.jsxs)("div",{className:"relative flex h-full flex-col overflow-hidden",onDragEnter:eg,onDragOver:ef,onDragLeave:ev,onDrop:em,children:[ex&&(0,n.jsxs)("div",{className:"pointer-events-none absolute inset-0 z-50 flex animate-[drop-zone-in_0.15s_ease_both] items-center justify-center bg-[rgba(37,99,235,0.06)] backdrop-blur-[1px]",children:[(0,n.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:[0,.8,1.6].map(e=>(0,n.jsx)("div",{className:"absolute h-[720px] w-[720px] rounded-full border-[1.5px] border-solid border-[rgba(37,99,235,0.5)] animate-[drop-ripple_2.4s_ease-out_infinite_backwards]",style:{transformOrigin:"center",animationDelay:`${e}s`}},e))}),(0,n.jsxs)("svg",{width:"280",height:"280",viewBox:"0 0 140 140",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"drop-shadow-[0_6px_18px_rgba(37,99,235,0.18)]",children:[(0,n.jsx)("rect",{x:"28",y:"44",width:"84",height:"60",rx:"8",fill:"rgba(37,99,235,0.08)",stroke:"rgba(37,99,235,0.50)",strokeWidth:"1.8"}),(0,n.jsx)("path",{d:"M36 100 L54 72 L68 88 L80 74 L104 100Z",fill:"rgba(37,99,235,0.16)",stroke:"rgba(37,99,235,0.40)",strokeWidth:"1.4",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"96",cy:"58",r:"8",fill:"rgba(37,99,235,0.22)",stroke:"rgba(37,99,235,0.55)",strokeWidth:"1.6"}),(0,n.jsxs)("g",{stroke:"rgba(37,99,235,0.45)",strokeWidth:"1.4",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"96",y1:"46",x2:"96",y2:"43"}),(0,n.jsx)("line",{x1:"96",y1:"70",x2:"96",y2:"73"}),(0,n.jsx)("line",{x1:"84",y1:"58",x2:"81",y2:"58"}),(0,n.jsx)("line",{x1:"108",y1:"58",x2:"111",y2:"58"}),(0,n.jsx)("line",{x1:"87.5",y1:"49.5",x2:"85.4",y2:"47.4"}),(0,n.jsx)("line",{x1:"104.5",y1:"66.5",x2:"106.6",y2:"68.6"}),(0,n.jsx)("line",{x1:"104.5",y1:"49.5",x2:"106.6",y2:"47.4"}),(0,n.jsx)("line",{x1:"87.5",y1:"66.5",x2:"85.4",y2:"68.6"})]})]})]}),eS?(0,n.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center overflow-y-auto px-4 py-8",children:(0,n.jsxs)("div",{className:"w-full max-w-[820px]",children:[(0,n.jsxs)("div",{className:"mb-3",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginLeft:16,marginRight:52,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,minWidth:0,flex:1,lineHeight:1.4},children:[(0,n.jsx)("span",{style:{fontSize:23,color:"var(--text)",fontWeight:750,letterSpacing:0},children:Y}),(0,n.jsx)("span",{style:{fontSize:14,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:(0,n.jsx)(t$,{phrases:tM})})]}),(0,n.jsx)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"flex-end",minHeight:22},children:ey?.updateAvailable?(0,n.jsxs)("span",{title:`Latest ${ey.latest??""}`,style:{fontSize:11,color:"var(--accent)",whiteSpace:"nowrap"},children:["Update: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",color:"var(--accent)"},children:ey.updateCommand})]}):(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap"},children:["v","0.8.14"]})})]}),eR]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:U,className:"flex-1 overflow-y-auto pt-4 [scrollbar-width:none]",children:(0,n.jsxs)("div",{className:"mx-auto max-w-[820px] px-4",children:[(()=>{let r=new Map;for(let e of j)"toolResult"===e.role&&r.set(e.toolCallId,e);let o=-1;for(let e=j.length-1;e>=0;e--)if("user"===j[e].role){o=e;break}let i=0;return j.map((l,s)=>{let a="user"===l.role&&s>0&&"assistant"===j[s-1].role?k[s-1]:void 0,c="user"===l.role||"assistant"===l.role,u=c?i++:-1,p=!1;if("assistant"===l.role){p=!0;for(let e=s+1;e<j.length;e++){let t=j[e].role;if("user"===t)break;if("assistant"===t){p=!1;break}}p&&w.isStreaming&&s===j.length-1&&(p=!1)}let h=(0,n.jsx)(e8,{message:l,toolResults:r,modelNames:T,entryId:k[s],onFork:C||O||0===s&&"user"===l.role?void 0:q,forking:$===k[s],onNavigate:C?void 0:K,prevAssistantEntryId:C?void 0:a,onEditContent:e=>d?.current?.insertIfEmpty(e),onSendMessage:eW,showTimestamp:p,prevTimestamp:s>0?j[s-1].timestamp:void 0,renderVisualCodeBlocks:!!g,cwd:m?.info?.cwd??e?.cwd??t??void 0},s);return c?(0,n.jsx)("div",{ref:e=>{ej.current[u]=e,s===o&&(_.current=e)},children:h},s):h})})(),w.isStreaming&&w.streamingMessage&&(0,n.jsx)(e8,{message:w.streamingMessage,isStreaming:!0,modelNames:T,onSendMessage:eW,renderVisualCodeBlocks:!!g,cwd:m?.info?.cwd??e?.cwd??t??void 0}),C&&!w.streamingMessage&&(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsx)("span",{className:"animate-[pulse_1.5s_infinite]",children:function(e){if(e?.kind==="running_tools"){let t=e.tools.map(e=>e.name);return 0===t.length?"Running tool...":1===t.length?`Running ${t[0]}...`:t.length<=3?`Running ${t.join(", ")}...`:`Running ${t.slice(0,2).join(", ")} (+${t.length-2})...`}return e?.kind==="waiting_model"?"Waiting for model...":"Thinking..."}(H)})}),m?.info?.cwd&&!1===m.info.cwdExists&&(0,n.jsxs)("div",{className:"my-3 rounded-[7px] border border-[rgba(248,113,113,0.35)] bg-[rgba(248,113,113,0.07)] px-3 py-2 text-[12px] leading-relaxed text-red-400",children:["Project directory no longer exists: ",(0,n.jsx)("code",{className:"font-mono",children:m.info.cwd})]}),D&&(0,n.jsx)("div",{className:"my-3 rounded-[7px] border border-[rgba(248,113,113,0.35)] bg-[rgba(248,113,113,0.07)] px-3 py-2 text-[12px] leading-relaxed text-red-400",children:D}),C&&(0,n.jsx)("div",{style:{height:U.current?U.current.clientHeight:"80vh"}}),(0,n.jsx)("div",{ref:F})]})}),(0,n.jsx)(tk,{messages:j,streamingMessage:w.streamingMessage,scrollContainer:U,messageRefs:ej}),ez.length>0&&(0,n.jsxs)("button",{onClick:()=>eT(e=>!e),title:eC?"Hide subagent runs":"Show subagent runs",style:{position:"absolute",right:eC?260:40,top:8,minWidth:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:eL>0||ez.length>1?"0 8px":0,background:eC?"var(--bg-selected)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:eC?"var(--accent)":"var(--text-dim)",cursor:"pointer",zIndex:30,fontSize:12,transition:"right 0.2s ease, background 0.12s"},onMouseEnter:e=>{eC||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{eC||(e.currentTarget.style.color="var(--text-dim)")},children:[(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),(0,n.jsx)("circle",{cx:"9",cy:"7",r:"4"}),(0,n.jsx)("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"}),(0,n.jsx)("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})]}),(eL>0||ez.length>1)&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,fontSize:10,fontWeight:700,color:eL>0?"var(--accent)":"var(--text-dim)"},children:[eL>0&&(0,n.jsxs)("span",{children:[eL," active"]}),(0,n.jsx)("span",{children:ez.length})]})]}),eC&&ez.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",right:48,top:4,bottom:4,width:250,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"-2px 0 12px rgba(0,0,0,0.08)",zIndex:25,overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 12px",fontSize:11,fontWeight:600,color:"var(--text-dim)",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Subagents"}),(0,n.jsx)(tS,{runs:ez})]})]}),(0,n.jsx)("div",{className:"relative",children:eR})]})]})}function tP({fileName:e,pageInfo:t,onZoomIn:r,onZoomOut:o,zoom:i,extra:l}){return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0,minHeight:32},children:[e&&(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:300},title:e,children:e}),(0,n.jsx)("span",{style:{marginLeft:"auto"}}),t&&(0,n.jsx)("span",{children:t}),void 0!==i&&o&&r&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:o,title:"Zoom out",style:tA,children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})})}),(0,n.jsxs)("span",{style:{minWidth:36,textAlign:"center",fontVariantNumeric:"tabular-nums"},children:[Math.round(100*i),"%"]}),(0,n.jsx)("button",{onClick:r,title:"Zoom in",style:tA,children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"2",x2:"5",y2:"8"}),(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})]})})]}),l]})}let tA={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"},tH=null;function tD({arrayBuffer:e,fileName:t}){let i=(0,o.useRef)(null),[l,s]=(0,o.useState)(!0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(0),[p,h]=(0,o.useState)(1),[x,g]=(0,o.useState)(1),f=(0,o.useRef)(x);f.current=x;let v=(0,o.useRef)(null),m=(0,o.useRef)(null),y=(0,o.useCallback)(async e=>{if(!tH||!v.current)return;let t=v.current;if(!(e<1)&&!(e>t.numPages)){m.current&&(m.current.cancel(),m.current=null);try{let r=await t.getPage(e),n=r.getViewport({scale:f.current*(window.devicePixelRatio||1)}),o=i.current;if(!o)return;let l=o.querySelector("canvas");if(l||((l=document.createElement("canvas")).style.display="block",l.style.margin="0 auto",o.innerHTML="",o.appendChild(l)),l.width=n.width,l.height=n.height,l.style.width=`${n.width/(window.devicePixelRatio||1)}px`,l.style.height=`${n.height/(window.devicePixelRatio||1)}px`,!l.getContext("2d"))return;let s=r.render({canvas:l,viewport:n});m.current=s,await s.promise,m.current=null}catch(e){"RenderingCancelledException"!==e.name&&console.error("PDF render error:",e)}}},[]);return(0,o.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{tH||((tH=await Promise.all([r.e(2213),r.e(2619)]).then(r.bind(r,12810))).GlobalWorkerOptions.workerSrc=new r.U(r(53228)).toString());let n=await tH.getDocument({data:e}).promise;if(t)return;v.current=n,u(n.numPages),h(1),s(!1)}catch(e){t||(d(String(e)),s(!1))}}(),()=>{t=!0,m.current&&(m.current.cancel(),m.current=null)}},[e]),(0,o.useEffect)(()=>{!l&&c>0&&y(p)},[l,p,c,y]),(0,o.useEffect)(()=>{!l&&c>0&&y(p)},[x]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t,pageInfo:c>0?`Page ${p} / ${c}`:void 0,zoom:x,onZoomIn:()=>g(e=>Math.min(e+.25,3)),onZoomOut:()=>g(e=>Math.max(e-.25,.25)),extra:c>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>h(e=>Math.max(e-1,1)),disabled:p<=1,style:{...tO,opacity:p<=1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[p,"/",c]}),(0,n.jsx)("button",{onClick:()=>h(e=>Math.min(e+1,c)),disabled:p>=c,style:{...tO,opacity:p>=c?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#525659",display:"flex",justifyContent:"center",padding:16},children:[l&&(0,n.jsx)("div",{style:{color:"#ccc",fontSize:13,display:"flex",alignItems:"center",gap:6,alignSelf:"flex-start",marginTop:40},children:"Loading PDF..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,alignSelf:"flex-start",marginTop:40},children:a}),(0,n.jsx)("div",{ref:i,style:{visibility:l?"hidden":"visible"}})]})]})}let tO={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};function tF({arrayBuffer:e,fileName:t}){let i=(0,o.useRef)(null),[l,s]=(0,o.useState)(!0),[a,d]=(0,o.useState)(null);return(0,o.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{let{renderAsync:n}=await Promise.all([r.e(2619),r.e(4453),r.e(2274)]).then(r.bind(r,52274)),o=i.current;if(!o||t)return;o.innerHTML="",await n(e,o,void 0,{className:"docx-preview",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!1,ignoreFonts:!1,breakPages:!0,ignoreLastRenderedPageBreak:!1,experimental:!1,trimXmlDeclaration:!0,useBase64URL:!1,renderChanges:!1,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0}),t||s(!1)}catch(e){t||(console.error("DOCX render error:",e),d(String(e)),s(!1))}}(),()=>{t=!0}},[e]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#e8e8e8",padding:"24px 0"},children:[l&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading document..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:a}),(0,n.jsx)("div",{ref:i,style:{maxWidth:816,margin:"0 auto",background:"#fff",boxShadow:"0 1px 4px rgba(0,0,0,0.12)",minHeight:100,visibility:l?"hidden":"visible"},className:"docx-preview-container"})]})]})}function tU({arrayBuffer:e,fileName:t}){let[i,l]=(0,o.useState)(!0),[s,a]=(0,o.useState)(null),[d,c]=(0,o.useState)([]),[u,p]=(0,o.useState)(0),h=(0,o.useRef)(null),[x,g]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=await Promise.all([r.e(3524),r.e(8436)]).then(r.bind(r,15967)),o=n.read(e,{type:"array"}),i=o.SheetNames.map(e=>{let t=o.Sheets[e],r=n.utils.sheet_to_html(t,{editable:!1});return{name:e,html:r}});t||(c(i),p(0),l(!1))}catch(e){t||(console.error("XLSX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]),(0,o.useEffect)(()=>{let e=h.current;if(!e)return;let t=e.querySelector("table");if(!t)return;let r=()=>{g(t.querySelectorAll("colgroup col, thead tr:first-child th, tbody tr:first-child td").length>8)};r();let n=new ResizeObserver(r);return n.observe(e),()=>n.disconnect()},[u,d]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t,extra:d.length>1&&(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:2},children:d.map((e,t)=>(0,n.jsx)("button",{onClick:()=>p(t),style:{padding:"2px 10px",fontSize:11,border:"1px solid var(--border)",borderBottom:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:"4px 4px 0 0",background:t===u?"var(--bg-selected)":"none",color:t===u?"var(--text)":"var(--text-muted)",cursor:"pointer",fontWeight:t===u?600:400,transition:"background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="none")},children:e.name},t))})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)"},children:[i&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading spreadsheet..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!i&&!s&&d.length>0&&(0,n.jsx)("div",{ref:h,style:{padding:"0 16px 16px",overflow:x?"auto":"visible"},dangerouslySetInnerHTML:{__html:d[u]?.html??""},className:"xlsx-preview"})]})]})}function t_({arrayBuffer:e,fileName:t}){let[i,l]=(0,o.useState)(!0),[s,a]=(0,o.useState)(null),[d,c]=(0,o.useState)([]),[u,p]=(0,o.useState)(0);(0,o.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=(await Promise.all([r.e(2619),r.e(4453)]).then(r.t.bind(r,54453,23))).default,o=await n.loadAsync(e),i=[];o.forEach(e=>{let t=/^ppt\/slides\/slide(\d+)\.xml$/i.exec(e);t&&i.push({name:e,index:parseInt(t[1],10)})}),i.sort((e,t)=>e.index-t.index);let s=[];for(let e of i){let r;if(t)return;let n=await o.file(e.name).async("string"),i=/<a:t[^>]*>([^<]*)<\/a:t>/g,l=[];for(;null!==(r=i.exec(n));){let e=r[1].trim();e&&l.push(e)}s.push({index:e.index,texts:l})}t||(c(s),l(!1))}catch(e){t||(console.error("PPTX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]);let h=d[u],x=d.length;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t,pageInfo:x>0?`Slide ${u+1} / ${x}`:void 0,extra:x>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>p(e=>Math.max(e-1,0)),disabled:u<=0,style:{...tV,opacity:u<=0?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[u+1,"/",x]}),(0,n.jsx)("button",{onClick:()=>p(e=>Math.min(e+1,x-1)),disabled:u>=x-1,style:{...tV,opacity:u>=x-1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",display:"flex",justifyContent:"center",alignItems:"flex-start",padding:24},children:[i&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading presentation..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!i&&!s&&h&&(0,n.jsxs)("div",{style:{width:"100%",maxWidth:800},children:[(0,n.jsxs)("div",{style:{background:"#fff",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"8px 16px",background:"var(--bg)",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:["Slide ",h.index]}),(0,n.jsx)("div",{style:{padding:"24px 32px 40px",minHeight:200},children:0===h.texts.length?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontStyle:"italic",fontSize:13},children:"(No text content)"}):(0,n.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none"},children:h.texts.map((e,t)=>(0,n.jsx)("li",{style:{padding:"4px 0",fontSize:14,lineHeight:1.6,color:"var(--text)",borderBottom:t<h.texts.length-1?"1px solid var(--bg-panel)":"none"},children:e},t))})})]}),x>1&&(0,n.jsxs)("div",{style:{marginTop:24},children:[(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",marginBottom:8},children:"All slides"}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:8},children:d.map((e,t)=>(0,n.jsxs)("button",{onClick:()=>p(t),style:{padding:"10px 12px",background:t===u?"var(--bg-selected)":"var(--bg)",border:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:6,cursor:"pointer",textAlign:"left",fontSize:11,color:"var(--text-muted)",transition:"border-color 0.12s, background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="var(--bg)")},children:[(0,n.jsxs)("div",{style:{fontWeight:600,marginBottom:2,color:"var(--text)"},children:["Slide ",e.index]}),(0,n.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.texts[0]||"(empty)"})]},e.index))})]})]})]})]})}let tV={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};var tJ=r(27071),tq=r(89561),tK=r(82228),tZ=r(46732),tY=r(74059),tG=r(13307),tX=r(53689),tQ=r(14097),t0=r(25460),t1=r(20144),t2=r(82774),t4=r(62733),t5=r(77482),t3=r(55135),t6=r(11209),t8=r(88198),t7=r(4238),t9=r(44542);function re({initialContent:e,language:t,isDark:r,onChange:i,onSave:l}){let s=(0,o.useRef)(null),a=(0,o.useRef)(null),d=(0,o.useRef)(i),c=(0,o.useRef)(l);return d.current=i,c.current=l,(0,o.useEffect)(()=>{let n=s.current;if(!n)return;let o=function(e){switch(e){case"javascript":case"typescript":return(0,tG.Q2)({typescript:"typescript"===e});case"python":return(0,tX.Hg)();case"sql":return(0,tQ.ll)();case"json":return(0,t0.Pq)();case"html":return(0,t1.qy)();case"css":case"scss":case"less":return(0,t2.AH)();case"markdown":return(0,t4.wD)();case"xml":case"yaml":case"toml":return(0,t5._n)();case"rust":return(0,t3.T)();case"go":return(0,t6.go)();case"java":return(0,t8.J)();default:return null}}(t),i=l?tq.w4.of([{key:"Mod-s",run:()=>(c.current?.(),!0),preventDefault:!0}]):[],u=tJ.$t.create({doc:e,extensions:[(0,tq.$K)(),(0,tq.dz)(),(0,tK.b6)(),(0,tZ.y9)(tZ.Zt),tq.w4.of([...tK.pw,...tK.cL,...t9.OO,...t7.Eo]),i,(0,t9.yU)(),...r?[tY.bM]:[],...o?[o]:[],tq.Lz.updateListener.of(e=>{e.docChanged&&d.current?.(e.state.doc.toString())}),tq.Lz.theme({"&":{height:"100%",fontSize:"13px"},".cm-scroller":{overflow:"auto",fontFamily:"var(--font-mono)"},".cm-content":{padding:"8px 0"},".cm-gutters":{borderRight:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-dim)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground":{background:r?"#3a3d4e":"#b4d5fe"}})]}),p=new tq.Lz({state:u,parent:n});return a.current=p,()=>{p.destroy(),a.current=null}},[t,r]),(0,o.useEffect)(()=>{let t=a.current;t&&t.state.doc.toString()!==e&&t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}})},[e]),(0,n.jsx)("div",{ref:s,style:{height:"100%",overflow:"hidden"}})}function rt({dir:e}){return(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:"asc"===e?(0,n.jsx)("polyline",{points:"2 6 5 3 8 6"}):(0,n.jsx)("polyline",{points:"2 4 5 7 8 4"})})}function rr(e,t,r){let n=new Blob([e],{type:r}),o=URL.createObjectURL(n),i=document.createElement("a");i.href=o,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(o),1e3)}function rn({content:e,delimiter:t,fileName:r="table"}){let[i,l]=(0,o.useState)(null),[s,a]=(0,o.useState)("asc"),{header:d,rows:c}=(0,o.useMemo)(()=>(function(e,t){let r=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),n=[],o=[],i="",l=!1;for(let e=0;e<r.length;e+=1){let s=r[e];if('"'===s){l&&'"'===r[e+1]?(i+='"',e+=1):l=!l;continue}if(s===t&&!l){o.push(i),i="";continue}if("\n"===s&&!l){o.push(i),o.some(e=>e.length>0)&&n.push(o),o=[],i="";continue}i+=s}o.push(i),o.some(e=>e.length>0)&&n.push(o);let s=n[0]??[],a=s.length;return{header:s,rows:n.slice(1).map(e=>{let t=[...e];for(;t.length<a;)t.push("");return t.slice(0,a)})}})(e,t),[e,t]),u=(0,o.useMemo)(()=>{if(null===i)return c;let e=[...c];return e.sort((e,t)=>{let r=e[i]??"",n=t[i]??"",o=Number(r),l=Number(n),a=""===r||""===n||Number.isNaN(o)||Number.isNaN(l)?r.localeCompare(n):o-l;return"asc"===s?a:-a}),e},[c,s,i]);return 0===d.length&&0===c.length?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"No tabular data to display"}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--text-dim)"},children:[c.length," rows, ",d.length," columns"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsxs)("button",{onClick:()=>{rr(e,r," "===t?"text/tab-separated-values;charset=utf-8":"text/csv;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:["Export "," "===t?"TSV":"CSV"]}),(0,n.jsx)("button",{onClick:()=>{rr(JSON.stringify(u.map(e=>Object.fromEntries(d.map((t,r)=>[t||`column_${r+1}`,e[r]??""]))),null,2),r.replace(/\.[^.]+$/,"")+".json","application/json;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:"Export JSON"})]})]}),(0,n.jsx)("div",{style:{minHeight:0,flex:1,overflow:"auto",background:"var(--bg)"},children:(0,n.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",tableLayout:"fixed",fontSize:12},children:[(0,n.jsx)("thead",{style:{position:"sticky",top:0,zIndex:1,background:"var(--bg-panel)"},children:(0,n.jsx)("tr",{children:d.map((e,t)=>(0,n.jsx)("th",{onClick:()=>{i===t?a(e=>"asc"===e?"desc":"asc"):(l(t),a("asc"))},title:e,style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",textAlign:"left",color:"var(--text-muted)",fontWeight:600,cursor:"pointer",userSelect:"none",fontSize:11,whiteSpace:"nowrap"},children:(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:e||`column_${t+1}`}),i===t&&(0,n.jsx)("span",{style:{color:"var(--accent)",display:"inline-flex",flexShrink:0},children:(0,n.jsx)(rt,{dir:s})})]})},`${e}-${t}`))})}),(0,n.jsx)("tbody",{children:u.map((e,t)=>(0,n.jsx)("tr",{style:{borderBottom:"1px solid rgba(127,127,127,0.14)",background:t%2==1?"var(--bg-subtle)":"transparent"},children:d.map((r,o)=>(0,n.jsx)("td",{title:e[o]??"",style:{padding:"6px 10px",color:"var(--text)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:0},children:e[o]??""},`${r}-${t}-${o}`))},t))})]})})]})}let ro=new Set(["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]),ri=new Set(["mp3","wav","ogg","oga","opus","m4a","aac","flac","weba","webm"]),rl=new Set(["pdf","docx","xlsx","pptx","doc","xls","ppt"]);function rs(e){let t=B(e).toLowerCase().split(".").pop()??"";return"csv"===t?",":"tsv"===t?" ":null}function ra(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function rd({oldContent:e,newContent:t}){let r=function(e,t){let r=e.length,n=t.length,o=r+n,i=Array(2*o+1).fill(0),l=[];for(let s=0;s<=o;s++){l.push([...i]);for(let a=-s;a<=s;a+=2){let d,c=(d=a===-s||a!==s&&i[a-1+o]<i[a+1+o]?i[a+1+o]:i[a-1+o]+1)-a;for(;d<r&&c<n&&e[d]===t[c];)d++,c++;if(i[a+o]=d,d>=r&&c>=n){let i=[],a=r,d=n;for(let r=s;r>0;r--){let n,s=l[r-1],c=a-d;n=c===-r||c!==r&&s[c-1+o]<s[c+1+o]?c+1:c-1;let u=s[n+o],p=u-n;for(;a>u&&d>p;)a--,d--,i.unshift({type:"unchanged",text:e[a],lineNo:a+1});r>0&&(a>u?(a--,i.unshift({type:"removed",text:e[a],lineNo:a+1})):(d--,i.unshift({type:"added",text:t[d],lineNo:d+1})))}for(;a>0&&d>0;)a--,d--,i.unshift({type:"unchanged",text:e[a],lineNo:a+1});return i}}}return[...e.map((e,t)=>({type:"removed",text:e,lineNo:t+1})),...t.map((e,t)=>({type:"added",text:e,lineNo:t+1}))]}(e.split("\n"),t.split("\n"));if(!r.some(e=>"unchanged"!==e.type))return(0,n.jsx)("div",{style:{padding:"12px 16px",fontSize:12,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:"No changes"});let o=new Set(r.flatMap((e,t)=>"unchanged"!==e.type?[t]:[])),i=new Set;for(let e of o)for(let t=Math.max(0,e-3);t<=Math.min(r.length-1,e+3);t++)i.add(t);let l=[],s=0;for(;s<r.length;)if(i.has(s)){let e=[];for(;s<r.length&&i.has(s);)e.push(r[s]),s++;l.push({hidden:!1,lines:e})}else{let e=0;for(;s<r.length&&!i.has(s);)e++,s++;l.push({hidden:!0,count:e})}let a=[],d=1;for(let e of r)"removed"===e.type?a.push(0):a.push(d++);let c=0;return(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6},children:l.map((e,t)=>{if(e.hidden){let r=(0,n.jsxs)("div",{style:{padding:"2px 16px",color:"var(--text-dim)",background:"var(--bg-panel)",fontSize:11,borderTop:"1px solid var(--border)",borderBottom:"1px solid var(--border)"},children:["... ",e.count," unchanged lines ..."]},t);return c+=e.count,r}let r=e.lines.map((e,t)=>{let r=a[c+t],o="added"===e.type?"rgba(0,200,80,0.12)":"removed"===e.type?"rgba(240,60,60,0.14)":"transparent",i="added"===e.type?"+":"removed"===e.type?"-":" ",l="added"===e.type?"#4ade80":"removed"===e.type?"#f87171":"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:o,borderLeft:"added"===e.type?"3px solid #4ade80":"removed"===e.type?"3px solid #f87171":"3px solid transparent"},children:[(0,n.jsx)("span",{style:{minWidth:44,padding:"0 8px 0 16px",textAlign:"right",color:"var(--text-dim)",userSelect:"none",fontSize:11,lineHeight:1.6,borderRight:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:"removed"===e.type?e.lineNo:r||""}),(0,n.jsx)("span",{style:{minWidth:16,padding:"0 6px",color:l,userSelect:"none",flexShrink:0,fontWeight:600},children:i}),(0,n.jsx)("span",{style:{flex:1,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)",overflowX:"auto"},children:e.text||"\xa0"})]},t)});return c+=e.lines.length,(0,n.jsx)("div",{children:r},t)})})}function rc({filePath:e,cwd:t}){let[r,i]=(0,o.useState)(!1),[l,s]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(100),f=(0,o.useRef)(null),v=B(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{s(0),d(null),u(null),h(null),i(!1),g(100),f.current&&(f.current.close(),f.current=null);let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return f.current=r,r.addEventListener("connected",()=>i(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}s(e=>e+1)}),r.addEventListener("error",()=>i(!1)),r.onerror=()=>i(!1),()=>{r.close(),f.current=null}},[e]);let m=N(e),y=`/api/files/${m}?type=read${l?`&v=${l}`:""}`,b=null!=a?ra(a):null,j=e=>g(Math.max(10,Math.min(500,e)));return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},title:e,children:P(e,t)}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:[(0,n.jsx)("button",{onClick:()=>j(x-25),title:"Zoom out",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"-"}),(0,n.jsx)("select",{value:x,onChange:e=>j(Number(e.target.value)),title:"Image zoom",style:{height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)",fontSize:11,fontFamily:"var(--font-mono)",outline:"none",cursor:"pointer"},children:[25,50,75,100,125,150,200,300].map(e=>(0,n.jsxs)("option",{value:e,children:[e,"%"]},e))}),(0,n.jsx)("button",{onClick:()=>j(x+25),title:"Zoom in",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"+"})]}),(0,n.jsx)("span",{style:{flexShrink:0},children:v||"image"}),c&&(0,n.jsxs)("span",{children:[c.w," \xd7 ",c.h]}),b&&(0,n.jsx)("span",{children:b}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",WebkitOverflowScrolling:"touch",overscrollBehavior:"contain",backgroundImage:"linear-gradient(45deg, var(--bg) 25%, transparent 25%), linear-gradient(-45deg, var(--bg) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--bg) 75%), linear-gradient(-45deg, transparent 75%, var(--bg) 75%)",backgroundSize:"16px 16px",backgroundPosition:"0 0, 0 8px, 8px -8px, -8px 0px"},children:p?(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p}):(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",width:"max-content",height:"max-content",boxSizing:"border-box",display:"flex",alignItems:"flex-start",justifyContent:"flex-start",padding:16},children:(0,n.jsx)("img",{src:y,alt:e,onLoad:e=>{let t=e.currentTarget;u({w:t.naturalWidth,h:t.naturalHeight})},onError:()=>h("Failed to load image"),style:{width:c?Math.max(1,Math.round(c.w*x/100)):"auto",height:c?Math.max(1,Math.round(c.h*x/100)):"auto",maxWidth:"none",maxHeight:"none",objectFit:"contain",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})})})]})}function ru({filePath:e,cwd:t}){let[r,i]=(0,o.useState)(!1),[l,s]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),x=(0,o.useRef)(null),g=B(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{s(0),d(null),u(null),h(null),i(!1),x.current&&(x.current.close(),x.current=null);let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return x.current=r,r.addEventListener("connected",()=>i(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}u(null),h(null),s(e=>e+1)}),r.addEventListener("error",()=>i(!1)),r.onerror=()=>i(!1),()=>{r.close(),x.current=null}},[e]);let f=N(e),v=`/api/files/${f}?type=read${l?`&v=${l}`:""}`;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:P(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:g||"audio"}),null!=c&&(0,n.jsx)("span",{children:function(e){if(!Number.isFinite(e))return"";let t=Math.round(e),r=Math.floor(t/60);return`${r}:${String(t%60).padStart(2,"0")}`}(c)}),null!=a&&(0,n.jsx)("span",{children:ra(a)}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"var(--bg-panel)"},children:(0,n.jsxs)("div",{style:{width:"min(680px, 100%)"},children:[p&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,marginBottom:12,textAlign:"center"},children:p}),(0,n.jsx)("audio",{controls:!0,preload:"metadata",src:v,onLoadedMetadata:e=>u(e.currentTarget.duration),onError:()=>h("Failed to load audio"),style:{width:"100%"}},v)]})})]})}function rp({filePath:e,cwd:t,onOpenFile:r}){let o,i,l;return(o=B(e).toLowerCase().split(".").pop()??"",ro.has(o))?(0,n.jsx)(rc,{filePath:e,cwd:t}):(i=B(e).toLowerCase().split(".").pop()??"",ri.has(i))?(0,n.jsx)(ru,{filePath:e,cwd:t}):(l=B(e).toLowerCase().split(".").pop()??"",rl.has(l))?(0,n.jsx)(rh,{filePath:e,cwd:t}):(0,n.jsx)(rx,{filePath:e,cwd:t,onOpenFile:r})}function rh({filePath:e,cwd:t}){let r,[i,l]=(0,o.useState)(null),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),u=(0,o.useRef)(null),p=(0,o.useRef)(0),h="pdf"===(r=B(e).toLowerCase().split(".").pop()??"")?"pdf":"docx"===r||"doc"===r?"docx":"xlsx"===r||"xls"===r?"xlsx":"pptx"===r||"ppt"===r?"pptx":"other",x=B(e).toLowerCase().split(".").pop()??"",g=(0,o.useCallback)(async e=>{try{let t=N(e),r=p.current?`&v=${p.current}`:"",n=await fetch(`/api/files/${t}?type=read${r}`);if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));c(e.error??`HTTP ${n.status}`);return}let o=await n.arrayBuffer();l(o),c(null)}catch(e){c(String(e))}},[]);if((0,o.useEffect)(()=>{a(!0),c(null),l(null),p.current=0,u.current&&(u.current.close(),u.current=null),g(e).finally(()=>a(!1));let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return u.current=r,r.addEventListener("connected",()=>{}),r.addEventListener("change",()=>{p.current+=1,g(e)}),r.addEventListener("error",()=>{}),r.onerror=()=>{},()=>{r.close(),u.current=null}},[e,g]),s&&!i)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(d&&!i)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:d});if(!i)return null;let f=P(e,t);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:["pdf"===h&&(0,n.jsx)(tD,{arrayBuffer:i,fileName:f}),"docx"===h&&(0,n.jsx)(tF,{arrayBuffer:i,fileName:f}),"xlsx"===h&&(0,n.jsx)(tU,{arrayBuffer:i,fileName:f}),"pptx"===h&&(0,n.jsx)(t_,{arrayBuffer:i,fileName:f}),"other"===h&&(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:["Unsupported document format: .",x]})]})}function rx({filePath:e,cwd:t,onOpenFile:r}){let{isDark:i}=eu(),[l,s]=(0,o.useState)(null),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(!0),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[f,v]=(0,o.useState)(!1),[m,y]=(0,o.useState)("source"),[b,j]=(0,o.useState)(!1),[k,w]=(0,o.useState)(!1),[S,C]=(0,o.useState)(0),[T,z]=(0,o.useState)(!1),[L,I]=(0,o.useState)(""),[M,R]=(0,o.useState)(!1),[W,E]=(0,o.useState)(!1),[$,A]=(0,o.useState)(!1),[H,D]=(0,o.useState)(null),O=(0,o.useRef)(null),F=(0,o.useRef)(!1);F.current=T,(0,o.useRef)(null).current=l;let U=(0,o.useCallback)((e,t=!1)=>{let r=N(e);return fetch(`/api/files/${r}?type=read`).then(e=>e.json()).then(e=>e.error?(h(e.error),null):(t?(s(t=>(t&&d(t.content),e)),C(e=>e+1)):s(e),h(null),e)).catch(e=>(h(String(e)),null))},[]);(0,o.useEffect)(()=>{u(!0),h(null),s(null),d(null),v(!1),y("source"),j(!1),C(0),w(!1),O.current&&(O.current.close(),O.current=null),U(e).then(t=>{(t?.language==="markdown"||rs(e))&&v(!0)}).finally(()=>u(!1));let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return O.current=r,r.addEventListener("connected",()=>{w(!0)}),r.addEventListener("change",()=>{F.current?E(!0):U(e,!0)}),r.addEventListener("error",()=>{w(!1)}),r.onerror=()=>{w(!1)},()=>{r.close(),O.current=null}},[e,U]);let _=(0,o.useCallback)(()=>{l&&(z(!0),I(l.content),D(l.mtime??null),A(!1),g(null),E(!1),v(!1),y("source"))},[l]),V=(0,o.useCallback)(async(t=!1)=>{let r=N(e);R(!0),A(!1),g(null);try{let n=await fetch(`/api/files/${r}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:L,...t||!H?{}:{baseMtime:H}})});if(409===n.status){let e=await n.json().catch(()=>({error:"File changed on disk since it was opened"}));throw A(!0),E(!0),Error(e.error??"File changed on disk since it was opened")}if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));throw Error(e.error??`HTTP ${n.status}`)}let o=await U(e,!0);D(o?.mtime??null),z(!1),E(!1),A(!1)}catch(e){g(e instanceof Error?e.message:String(e))}finally{R(!1)}},[e,L,H,U]),J=(0,o.useCallback)(()=>{z(!1),E(!1),A(!1),g(null),D(null)},[]),q=(0,o.useCallback)(async()=>{let t=await U(e,!0);t&&(I(t.content),D(t.mtime??null),E(!1),A(!1),g(null),h(null))},[U,e]);if(c)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(p)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p});if(!l)return null;let K="html"===l.language,Z="markdown"===l.language,Y=rs(e),G=null!==Y,X=l.content.split("\n"),Q=null!==a&&a!==l.content;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:P(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:l.language}),"source"===m&&(0,n.jsxs)("span",{children:[X.length," lines"]}),(0,n.jsx)("span",{children:ra(l.size)}),(0,n.jsxs)("span",{title:k?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:k?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:k?"#4ade80":"var(--border)",display:"inline-block",boxShadow:k?"0 0 4px #4ade80":"none"}}),k?"live":"static"]}),T?(0,n.jsxs)(n.Fragment,{children:[(W||$||x)&&(0,n.jsxs)("span",{title:"File changed on disk while editing",style:{padding:"2px 8px",fontSize:11,background:"rgba(234,179,8,0.1)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:5,display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,n.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),x??"External change",(W||$)&&(0,n.jsx)("button",{onClick:q,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:"pointer",background:"rgba(234,179,8,0.2)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:3,fontWeight:600},children:"Reload"}),$&&(0,n.jsx)("button",{onClick:()=>void V(!0),disabled:M,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:M?"not-allowed":"pointer",background:"rgba(239,68,68,0.12)",color:"#ef4444",border:"1px solid rgba(239,68,68,0.3)",borderRadius:3,fontWeight:600},children:"Overwrite"})]}),(0,n.jsx)("button",{onClick:()=>void V(),disabled:M,title:"Save file (Ctrl+S)",style:{padding:"2px 10px",fontSize:11,cursor:M?"not-allowed":"pointer",background:"var(--accent)",color:"#fff",border:"1px solid var(--accent)",borderRadius:5,fontWeight:600,opacity:M?.6:1},children:M?"Saving…":"Save"}),(0,n.jsx)("button",{onClick:J,title:"Cancel editing",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.1)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.3)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Cancel"})]}):(0,n.jsx)("button",{onClick:_,title:"Edit file",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="var(--accent)",e.currentTarget.style.color="#fff",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Edit"}),Q&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>y("source"),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:"source"===m?"var(--bg-selected)":"var(--bg-hover)",color:"source"===m?"var(--text)":"var(--text-muted)",fontWeight:"source"===m?600:400},children:"Source"}),(0,n.jsxs)("button",{onClick:()=>y("diff"),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:"diff"===m?"var(--bg-selected)":"var(--bg-hover)",color:"diff"===m?"var(--text)":"var(--text-muted)",fontWeight:"diff"===m?600:400},children:["Diff ",S>0&&(0,n.jsxs)("span",{style:{color:"#4ade80",marginLeft:2},children:["+",S]})]})]}),"source"===m&&!f&&(0,n.jsx)("button",{onClick:()=>j(e=>!e),title:b?"Disable word wrap":"Enable word wrap",style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:b?"var(--bg-selected)":"var(--bg-hover)",color:b?"var(--text)":"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:b?600:400},children:"wrap"}),K&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Code"}),(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"})]}),Z&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:T?"Edit":"Raw"})]}),G&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Table"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Raw"})]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg)"},children:T&&!(Z&&f)?(0,n.jsx)(re,{initialContent:L,language:l.language,isDark:i,onChange:I,onSave:()=>void V()}):T&&Z&&f?(0,n.jsx)(eq,{content:L,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):"diff"===m&&Q?(0,n.jsx)(rd,{oldContent:a,newContent:l.content,language:l.language}):K&&f?(0,n.jsx)("iframe",{srcDoc:l.content,sandbox:"allow-scripts",style:{width:"100%",height:"100%",border:"none",background:"var(--bg)"},title:"HTML preview"}):Z&&f?(0,n.jsx)(eq,{content:l.content,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):G&&f&&Y?(0,n.jsx)(rn,{content:l.content,delimiter:Y,fileName:B(e)}):(0,n.jsx)(eB.A,{language:"text"===l.language||"csv"===l.language||"tsv"===l.language?"plaintext":l.language,style:eO(i),showLineNumbers:!0,lineNumberStyle:{color:"var(--text-dim)",fontStyle:"normal",minWidth:"3em",paddingRight:"1em"},customStyle:{margin:0,padding:"12px 0",background:"var(--bg)",fontSize:13,lineHeight:1.6,fontFamily:"var(--font-mono)",minHeight:"100%"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},wrapLongLines:b,children:l.content})})]})}let rg={__soul__:{apiPath:"/api/soul",title:"soul.md"},__harness__:{apiPath:"/api/harness",title:"harness.md"}};function rf({filePath:e}){let t=rg[e],{isDark:r}=eu(),[i,l]=(0,o.useState)(""),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(!1),[h,x]=(0,o.useState)(!1);(0,o.useEffect)(()=>{t&&(a(!0),fetch(t.apiPath).then(e=>e.json()).then(e=>l(e.content??"")).catch(e=>c(String(e))).finally(()=>a(!1)))},[t]);let g=(0,o.useCallback)(async()=>{if(t){p(!0);try{await fetch(t.apiPath,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:i})}),x(!0),setTimeout(()=>x(!1),2e3)}catch(e){c(String(e))}finally{p(!1)}}},[t,i]);return t?s?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading…"}):d?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:d}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontWeight:600,color:"var(--text)"},children:t.title}),(0,n.jsx)("span",{style:{marginLeft:"auto",fontSize:10,color:"var(--text-dim)"},children:"Global"}),h&&(0,n.jsx)("span",{style:{color:"#4ade80",fontWeight:600,animation:"saved-pop 0.3s ease"},children:"✓ Saved"}),(0,n.jsx)("button",{onClick:g,disabled:u,title:"Save (Ctrl+S)",style:{padding:"2px 10px",fontSize:11,cursor:u?"not-allowed":"pointer",background:"var(--accent)",color:"#fff",border:"1px solid var(--accent)",borderRadius:5,fontWeight:600,opacity:u?.6:1},children:u?"Saving…":"Save"})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(re,{initialContent:i,language:"markdown",isDark:r,onChange:l,onSave:g})})]}):null}function rv(e){return"verified"===e?"#16a34a":"outdated"===e?"#ef4444":"needs_review"===e?"rgba(234,179,8,0.95)":"var(--text-dim)"}function rm({sessionId:e,cwd:t,refreshKey:r=0,onOpenFile:i}){let[l,s]=(0,o.useState)(null),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(!1),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)("preview");(0,o.useEffect)(()=>{if(!e){s(null),h(null);return}let t=!1;return d(!0),h(null),fetch(`/api/reports/${encodeURIComponent(e)}`).then(e=>e.ok?e.json():e.json().then(t=>Promise.reject(Error(t.error??`HTTP ${e.status}`)))).then(e=>{t||s(e.report)}).catch(e=>{t||h(e instanceof Error?e.message:String(e))}).finally(()=>{t||d(!1)}),()=>{t=!0}},[e,r]);let f=(0,o.useCallback)(()=>{e&&(u(!0),h(null),fetch(`/api/reports/${encodeURIComponent(e)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"generate"})}).then(e=>e.ok?e.json():e.json().then(t=>Promise.reject(Error(t.error??`HTTP ${e.status}`)))).then(e=>{s(e.report),g("preview")}).catch(e=>h(e instanceof Error?e.message:String(e))).finally(()=>u(!1)))},[e]),v=(0,o.useMemo)(()=>{if(t)return`${t.replace(/\/+$/,"")}/analysis_report.md`},[t]),m=(0,o.useMemo)(()=>l?.sections.filter(e=>e.markdown.trim())??[],[l]);return e?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"8px 10px",borderBottom:"1px solid var(--border)",background:"var(--bg)",flexShrink:0},children:[["preview","sections","changes","source"].map(e=>(0,n.jsx)("button",{type:"button",onClick:()=>g(e),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:7,background:x===e?"var(--bg-selected)":"var(--bg-panel)",color:x===e?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:11,textTransform:"capitalize"},children:e},e)),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",onClick:f,disabled:c,title:"Refresh analysis report from this session",style:{height:28,padding:"0 10px",border:"1px solid rgba(37,99,235,0.45)",borderRadius:7,background:"var(--bg-selected)",color:"var(--accent)",cursor:c?"default":"pointer",fontSize:11,fontWeight:600,opacity:c?.65:1},children:c?"Updating...":"Update"})]}),p&&(0,n.jsx)("div",{style:{padding:"8px 12px",color:"#ef4444",fontSize:12,borderBottom:"1px solid var(--border)",background:"rgba(239,68,68,0.08)"},children:p}),a?(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:12},children:"Loading report..."}):l?(0,n.jsxs)("div",{style:{flex:1,overflow:"auto"},children:["preview"===x&&(0,n.jsx)(eq,{content:l.markdown,className:"markdown-body markdown-file-preview",style:{padding:"22px 26px 40px",maxWidth:860,margin:"0 auto"},codeBlockVariant:"file",baseFilePath:v,onOpenLocalFile:i}),"sections"===x&&(0,n.jsx)("div",{style:{padding:12,display:"flex",flexDirection:"column",gap:10},children:m.map(e=>{var t;return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"9px 11px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",flex:1},children:e.title}),(0,n.jsx)("span",{style:{fontSize:10,color:rv(e.status),border:`1px solid ${rv(e.status)}`,borderRadius:999,padding:"2px 7px"},children:"needs_review"===(t=e.status)?"Needs review":t.slice(0,1).toUpperCase()+t.slice(1)})]}),(0,n.jsx)("div",{style:{padding:"9px 11px",color:"var(--text-muted)",fontSize:12,lineHeight:1.5},children:e.markdown.replace(/[#*_`>|-]/g," ").replace(/\s+/g," ").trim()||"No curated content yet."})]},e.id)})}),"changes"===x&&(0,n.jsx)("div",{style:{padding:14},children:0===l.changes.length?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12},children:"No report changes yet."}):l.changes.map(e=>(0,n.jsxs)("div",{style:{padding:"10px 0",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",marginBottom:4},children:e.title}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",marginBottom:6},children:new Date(e.timestamp).toLocaleString()}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:e.detail})]},e.id))}),"source"===x&&(0,n.jsx)("pre",{style:{margin:0,padding:18,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.55,color:"var(--text-muted)"},children:l.markdown})]}):(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No report available."})]}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",padding:24,color:"var(--text-dim)",fontSize:12,textAlign:"center"},children:"Select or start a session to build an analysis report."})}function ry(){document.body.style.cursor="",document.body.style.userSelect=""}function rb({side:e,onResize:t,onResizeStart:r,onResizeEnd:i,ariaLabel:l}){let s=(0,o.useRef)(null),a=(0,o.useRef)(!1),d=(0,o.useRef)(0),[c,u]=(0,o.useState)(!1),p=(0,o.useCallback)(e=>{if(!a.current)return;a.current=!1,u(!1);let t=s.current;t&&void 0!==e&&t.hasPointerCapture(e)&&t.releasePointerCapture(e),ry(),i?.()},[i]),h=(0,o.useCallback)(e=>{0===e.button&&e.isPrimary&&(e.preventDefault(),a.current=!0,d.current=e.clientX,u(!0),r?.(),e.currentTarget.setPointerCapture(e.pointerId),document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[r]),x=(0,o.useCallback)(e=>{if(!a.current)return;e.preventDefault();let r=e.clientX-d.current;d.current=e.clientX,t(r)},[t]),g=(0,o.useCallback)(e=>{e.preventDefault(),p(e.pointerId)},[p]),f=(0,o.useCallback)(e=>{p(e.pointerId)},[p]);return(0,o.useEffect)(()=>()=>{a.current&&(a.current=!1,ry(),i?.())},[i]),(0,n.jsx)("div",{ref:s,role:"separator","aria-label":l??"Resize panel","aria-orientation":"vertical",className:`resize-handle${c?" resize-handle-dragging":""}`,"data-side":e,onPointerDown:h,onPointerMove:x,onPointerUp:g,onPointerCancel:f,style:{alignSelf:"stretch",cursor:"col-resize",display:"flex",flexShrink:0,justifyContent:"center",marginLeft:-5,marginRight:-5,position:"relative",touchAction:"none",width:10,zIndex:250},children:(0,n.jsx)("div",{className:"resize-handle-line"})})}function rj({tabs:e,activeTabId:t,onSelectTab:r,onCloseTab:i}){let[l,s]=(0,o.useState)(null);return(0,n.jsx)("div",{style:{display:"flex",alignItems:"flex-end",background:"var(--bg-panel)",overflowX:"auto",flexShrink:0,height:36},children:e.map(e=>{let o=e.id===t,a=!1!==e.closable;return(0,n.jsxs)("div",{onClick:()=>r(e.id),style:{display:"flex",alignItems:"center",gap:6,height:36,paddingLeft:12,paddingRight:6,borderRight:"1px solid var(--border)",background:o?"var(--bg)":"var(--bg-panel)",cursor:"pointer",fontSize:12,color:o?"var(--text)":"var(--text-muted)",whiteSpace:"nowrap",maxWidth:180,minWidth:80,flexShrink:0,userSelect:"none",transition:"background 0.1s, color 0.1s"},children:[(0,n.jsx)("span",{style:{flexShrink:0,opacity:o?1:.7,display:"flex",alignItems:"center"},children:"report"===e.icon?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,n.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,n.jsx)("line",{x1:"8",y1:"13",x2:"16",y2:"13"}),(0,n.jsx)("line",{x1:"8",y1:"17",x2:"13",y2:"17"})]}):E(e.filePath??e.label,13)}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",flex:1,fontWeight:o?500:400},title:e.filePath??e.label,children:e.label}),a&&(0,n.jsx)("button",{onClick:t=>{t.stopPropagation(),i(e.id)},onMouseEnter:()=>s(e.id),onMouseLeave:()=>s(null),style:{display:"flex",alignItems:"center",justifyContent:"center",width:16,height:16,background:l===e.id?"var(--bg-hover)":"transparent",border:"none",borderRadius:3,color:l===e.id?"var(--text)":"var(--text-dim)",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.1s, color 0.1s"},title:"Close",children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"2",x2:"8",y2:"8"}),(0,n.jsx)("line",{x1:"8",y1:"2",x2:"2",y2:"8"})]})})]},e.id)})})}function rk(e){let t=e,r=0;for(;1===t.children.length;)t=t.children[0],r++;return{node:t,skipped:r}}function rw({node:e,activePathIds:t,depth:r,isLast:o,parentLines:i,onSelect:l}){let{node:s,skipped:a}=rk(e),d=t.has(s.entry.id),c=t.has(e.entry.id)||t.has(s.entry.id),u=function(e){if("message"===e.type&&"message"in e){let t=e.message,r=t.content,n="";if("string"==typeof r?n=r:Array.isArray(r)&&(n=r.filter(e=>"text"===e.type).map(e=>e.text).join(" ")),n.length>40&&(n=n.slice(0,40)+"…"),n)return n;if("assistant"===t.role)return"[assistant]"}return e.type}(s.entry),p="message"===s.entry.type&&"message"in s.entry?s.entry.message.role:null;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",height:24,cursor:"pointer"},onClick:()=>l(s.entry.id),children:[i.map((e,t)=>(0,n.jsx)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:e&&(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:0,width:1,background:"var(--border)"}})},t)),(0,n.jsxs)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:o?"50%":0,width:1,background:"var(--border)"}}),(0,n.jsx)("div",{style:{position:"absolute",left:7,top:"50%",width:9,height:1,background:"var(--border)"}})]}),(0,n.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",flexShrink:0,background:d?"var(--accent)":c?"var(--text-muted)":"var(--border)",border:d?"none":"1px solid var(--text-dim)",marginRight:6,transition:"background 0.12s"}}),p&&(0,n.jsx)("span",{style:{fontSize:9,fontFamily:"var(--font-mono)",color:"user"===p?"var(--accent)":"var(--text-dim)",background:"user"===p?"rgba(37,99,235,0.08)":"var(--bg-hover)",border:`1px solid ${"user"===p?"rgba(37,99,235,0.2)":"var(--border)"}`,borderRadius:3,padding:"0 4px",marginRight:5,flexShrink:0,lineHeight:"16px"},children:"user"===p?"U":"A"}),a>0&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginRight:5,flexShrink:0},children:["+",a]}),(0,n.jsx)("span",{style:{fontSize:11,color:d?"var(--text)":c?"var(--text-muted)":"var(--text-dim)",fontWeight:d?500:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:u})]}),s.children.map((e,a)=>(0,n.jsx)(rw,{node:e,activePathIds:t,depth:r+1,isLast:a===s.children.length-1,parentLines:[...i,!o],onSelect:l},e.entry.id))]})}function rS({tree:e,activeLeafId:t,onLeafChange:r,inline:i,containerRef:l,open:s,onToggle:a,hasSession:d}){let[c,u]=(0,o.useState)(!1),p=void 0!==s?s:c,h=(0,o.useRef)(null),[x,g]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!p||!i)return;let e=l?.current??h.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect();g({top:t.bottom,left:t.left,width:t.width})};t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[p,i,l]);let f=(0,o.useMemo)(()=>t?new Set(function e(r,n){for(let o of r){let r=[...n,o.entry.id];if(o.entry.id===t)return r;let i=e(o.children,r);if(i)return i}return null}(e,[])??[]):new Set,[e,t]),v=(0,o.useCallback)(e=>{r(e)},[r]),m=d?!function e(t){for(let r of t)if(r.children.length>1||e(r.children))return!0;return!1}(e)?"This session has no branches":null:"No active session",y=e.length>0?rk(e[0]):null,b=y?.node??null,j=!m&&b&&b.children.length>1,k=(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:j?"var(--accent)":"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),w=(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"var(--text-dim)",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:2,transform:p?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})});return i?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"stretch"},children:[(0,n.jsxs)("button",{ref:h,className:"topbar-branches-button",onClick:()=>a?a():u(e=>!e),title:"Branches","aria-label":"Branches",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:p?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${p?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:p?"var(--text)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s, border-color 0.1s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=p?"var(--text)":"var(--text-muted)",e.currentTarget.style.background=p?"var(--bg-selected)":"var(--bg-panel)"},children:[(0,n.jsx)("span",{className:"topbar-branches-icon",children:k}),(0,n.jsx)("span",{className:"topbar-branches-label",children:"Branches"})]}),p&&x&&(0,n.jsx)("div",{style:{position:"fixed",top:x.top,left:x.left,width:x.width,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",zIndex:500},children:j&&b?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:b.children.map((e,t)=>(0,n.jsx)(rw,{node:e,activePathIds:f,depth:0,isLast:t===b.children.length-1,parentLines:[],onSelect:v},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:m})})]}):(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>u(e=>!e),style:{display:"flex",alignItems:"center",gap:6,width:"100%",padding:"5px 12px",background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",fontSize:11,textAlign:"left"},children:[k,(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:"Branches"}),w]}),p&&(0,n.jsx)("div",{style:{position:"absolute",top:"100%",left:0,right:0,background:"var(--bg)",borderBottom:"1px solid var(--border)",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",zIndex:100},children:j&&b?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:b.children.map((e,t)=>(0,n.jsx)(rw,{node:e,activePathIds:f,depth:0,isLast:t===b.children.length-1,parentLines:[],onSelect:v},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:m??"This session has no branches"})})]})}function rC(e,t="0 0 24 24"){let r=({size:r=24,style:o})=>(0,n.jsx)("svg",{width:r,height:r,viewBox:t,fill:"none",style:o,children:e});return r.displayName="ProviderIcon",r}let rT=rC((0,n.jsx)("path",{d:"M17.5 3H6.5L3 21h4l1.2-6h7.6l1.2 6h4L17.5 3zm-2.3 9H8.8L12 5.5 15.2 12z",fill:"currentColor"})),rz=rC((0,n.jsx)("path",{d:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"})),rL=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 01-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),(0,n.jsx)("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),(0,n.jsx)("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),(0,n.jsx)("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]})),rI=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#4D6BFE"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"10",fontWeight:"bold",fontFamily:"sans-serif",children:"DS"})]})),rM=rC((0,n.jsx)("path",{d:"M4 4h16v16H4z",fill:"#F55036"}),"0 0 24 24"),rR=rC((0,n.jsx)("path",{d:"M4 4h5v5H4zm5.5 0h5v5h-5zM15 4h5v5h-5zM4 9.5h5v5H4zm5.5 5.5h5v5h-5zM15 9.5h5v5h-5z",fill:"#FA6F00"})),rW=rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),rE=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#00D4AA"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"MM"})]})),r$=rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#FF5722"}),"0 0 24 24"),rN=rC((0,n.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 5h2v3h-2V7zm0 4h2v2h-2v-2zm3 5H7v-2h7v2z",fill:"#FFD21E"})),rB=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#E84026"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"CB"})]})),rP=rC((0,n.jsx)("path",{d:"M12 2l9 5v10l-9 5-9-5V7l9-5z",stroke:"currentColor",strokeWidth:"1.5",fill:"none"})),rA=rC((0,n.jsx)("path",{d:"M4 4l8 8 8-8M4 20l8-8 8 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),rH=rC((0,n.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 5l4 3-4 3V7z",fill:"#F38020"})),rD={anthropic:{Icon:rT,hasColor:!1},openai:{Icon:rz,hasColor:!1},"openai-codex":{Icon:rz,hasColor:!1},google:{Icon:rL,hasColor:!0},"google-vertex":{Icon:rL,hasColor:!0},deepseek:{Icon:rI,hasColor:!0},groq:{Icon:rM,hasColor:!1},mistral:{Icon:rR,hasColor:!0},moonshotai:{Icon:rW,hasColor:!1},"moonshotai-cn":{Icon:rW,hasColor:!1},moonshot:{Icon:rW,hasColor:!1},minimax:{Icon:rE,hasColor:!0},"minimax-cn":{Icon:rE,hasColor:!0},fireworks:{Icon:r$,hasColor:!0},huggingface:{Icon:rN,hasColor:!0},cerebras:{Icon:rB,hasColor:!0},openrouter:{Icon:rP,hasColor:!1},xai:{Icon:rA,hasColor:!1},"cloudflare-ai-gateway":{Icon:rH,hasColor:!0},"cloudflare-workers-ai":{Icon:rH,hasColor:!0},"vercel-ai-gateway":{Icon:rC((0,n.jsx)("path",{d:"M12 2L22 20H2L12 2z",fill:"currentColor"})),hasColor:!1},"github-copilot":{Icon:rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1},"amazon-bedrock":{Icon:rC((0,n.jsx)("path",{d:"M3 15h2l1-3h2l1 3h2V9H9v3L8 9H6l-1 3V9H3v6zm9 0h2v-2h2v-2h-2V9h-2v2h-2v2h2v2z",fill:"#FF9900"})),hasColor:!0},"azure-openai-responses":{Icon:rC((0,n.jsx)("path",{d:"M12 2L3 18h5l4-6 4 6h5L12 2z",fill:"#0078D4"})),hasColor:!0},"kimi-coding":{Icon:rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#6C5CE7"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"10",fontWeight:"bold",fontFamily:"sans-serif",children:"Ki"})]})),hasColor:!0},qwen:{Icon:rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#615CED"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"QW"})]})),hasColor:!0},zai:{Icon:rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#3859FF"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"ZP"})]})),hasColor:!0},cohere:{Icon:rC((0,n.jsx)("path",{d:"M4 8h16v2H4zm0 4h12v2H4zm0 4h8v2H4z",fill:"#3059B1"})),hasColor:!0},perplexity:{Icon:rC((0,n.jsx)("path",{d:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",stroke:"#1DB954",strokeWidth:"1.5",fill:"none",strokeLinejoin:"round"})),hasColor:!0},together:{Icon:rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#0F6CBD"}),"0 0 24 24"),hasColor:!0},grok:{Icon:rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1}},rO=["openai-completions","openai-responses","anthropic-messages","google-generative-ai"];function rF({label:e,children:t}){return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("label",{style:{fontSize:11,color:"var(--text-muted)",fontWeight:500},children:e}),t]})}let rU={padding:"6px 9px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",fontSize:12,outline:"none",width:"100%",boxSizing:"border-box"};function r_({value:e,onChange:t,placeholder:r,mono:o}){return(0,n.jsx)("input",{value:e,onChange:e=>t(e.target.value),placeholder:r,style:{...rU,fontFamily:o?"var(--font-mono)":"inherit"}})}function rV({value:e,onChange:t,placeholder:r,mono:i,onKeyDown:l,autoComplete:s="off",spellCheck:a=!1,style:d}){let[c,u]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{e||u(!1)},[e]),(0,n.jsxs)("div",{style:{position:"relative",width:"100%",...d},children:[(0,n.jsx)("input",{type:c?"text":"password",value:e,onChange:e=>t(e.target.value),onKeyDown:l,placeholder:r,style:{...rU,paddingRight:34,fontFamily:i?"var(--font-mono)":"inherit"},autoComplete:s,spellCheck:a}),(0,n.jsx)("button",{type:"button",onClick:()=>u(e=>!e),"aria-label":c?"Hide API key":"Show API key",title:c?"Hide API key":"Show API key",style:{position:"absolute",right:5,top:"50%",transform:"translateY(-50%)",width:24,height:24,padding:0,border:"none",background:"transparent",color:"var(--text-dim)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},children:c?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M17.94 17.94A10.94 10.94 0 0 1 12 20C7 20 2.73 16.89 1 12a18.45 18.45 0 0 1 5.06-6.94"}),(0,n.jsx)("path",{d:"M9.9 4.24A10.94 10.94 0 0 1 12 4c5 0 9.27 3.11 11 8a18.5 18.5 0 0 1-2.16 3.19"}),(0,n.jsx)("path",{d:"M14.12 14.12A3 3 0 0 1 9.88 9.88"}),(0,n.jsx)("path",{d:"M1 1l22 22"})]}):(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8S1 12 1 12Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]})}function rJ({value:e,onChange:t,placeholder:r}){return(0,n.jsx)("input",{type:"number",value:e,onChange:e=>t(e.target.value),placeholder:r,style:rU})}function rq({value:e,onChange:t,options:r,required:o}){return(0,n.jsxs)("select",{value:e,onChange:e=>t(e.target.value),style:{...rU,color:e?"var(--text)":"var(--text-dim)"},children:[!o&&(0,n.jsx)("option",{value:"",children:"— inherit / none —"}),r.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]})}function rK({label:e,checked:t,onChange:r}){return(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:6,cursor:"pointer",fontSize:12,color:"var(--text-muted)"},children:[(0,n.jsx)("input",{type:"checkbox",checked:t,onChange:e=>r(e.target.checked),style:{width:13,height:13,accentColor:"var(--accent)",cursor:"pointer"}}),e]})}function rZ({children:e}){return(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em",marginBottom:2},children:e})}function rY({name:e,provider:t,onChange:r,onRename:i,onDelete:l}){let[s,a]=(0,o.useState)(e);(0,o.useEffect)(()=>a(e),[e]);let d=(e,n)=>r({...t,[e]:n});return(0,o.useEffect)(()=>{t.api||r({...t,api:"openai-completions"})},[t.api]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"Provider"}),(0,n.jsx)("button",{onClick:l,style:{padding:"3px 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:"pointer",fontSize:11},children:"Delete"})]}),(0,n.jsxs)(rF,{label:"Provider name",children:[(0,n.jsx)(r_,{value:s,onChange:a,placeholder:"provider-name",mono:!0}),s!==e&&s.trim()&&(0,n.jsx)("button",{onClick:()=>i(s.trim()),style:{marginTop:4,padding:"3px 10px",background:"var(--accent)",border:"none",borderRadius:4,color:"#fff",cursor:"pointer",fontSize:11,alignSelf:"flex-start"},children:"Rename"})]}),(0,n.jsx)(rF,{label:"Base URL",children:(0,n.jsx)(r_,{value:t.baseUrl??"",onChange:e=>d("baseUrl",e||void 0),placeholder:"https://api.example.com/v1",mono:!0})}),(0,n.jsxs)(rF,{label:"API Key",children:[(0,n.jsx)(rV,{value:t.apiKey??"",onChange:e=>d("apiKey",e||void 0),placeholder:"ENV_VAR_NAME, !shell-command, or literal key",mono:!0}),(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:["Prefix with ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)"},children:"!"})," to run a shell command, or use an env var name"]})]}),(0,n.jsx)(rF,{label:"API",children:(0,n.jsx)(rq,{value:t.api??"openai-completions",onChange:e=>d("api",e),options:rO,required:!0})})]})}let rG=["off","minimal","low","medium","high","xhigh"],rX={off:"var(--text-dim)",minimal:"#6b7280",low:"#60a5fa",medium:"#a78bfa",high:"#f472b6",xhigh:"#fb923c"};function rQ({value:e,onChange:t}){let r=e??{},o=(e,n)=>{let o={...r};"omit"===n?delete o[e]:o[e]=n,t(Object.keys(o).length?o:void 0)};return(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:rG.map(e=>{let t=r[e],i=e in r?null===t?"null":"string":"omit",l="string"==typeof t?t:"",s=rX[e],a={padding:"4px 10px",fontSize:10,border:"none",cursor:"pointer",fontWeight:400,transition:"background 0.1s, color 0.1s",whiteSpace:"nowrap",background:"var(--bg-panel)",color:"var(--text-dim)"},d={background:"var(--accent)",color:"#fff",fontWeight:600};return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 4px",borderRadius:6,background:"transparent",border:"1px solid transparent"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5,width:68,flexShrink:0},children:[(0,n.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:s,flexShrink:0,opacity:"null"===i?.3:1}}),(0,n.jsx)("span",{style:{fontSize:11,fontFamily:"var(--font-mono)",color:"null"===i?"var(--text-dim)":"var(--text-muted)",textDecoration:"null"===i?"line-through":"none"},children:e})]}),(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,border:"1px solid var(--border)",overflow:"hidden",flexShrink:0},children:[(0,n.jsx)("button",{onClick:()=>o(e,"omit"),style:{...a,..."omit"===i?d:{}},children:"Default"}),(0,n.jsx)("button",{onClick:()=>o(e,null),style:{...a,borderLeft:"1px solid var(--border)",..."null"===i?{background:"#ef4444",color:"#fff",fontWeight:600}:{}},children:"Disabled"})]}),(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,border:`1px solid ${"string"===i?"var(--accent)":"var(--border)"}`,overflow:"hidden",transition:"border-color 0.1s"},children:[(0,n.jsx)("button",{onClick:()=>o(e,l||e),style:{...a,..."string"===i?d:{},borderRight:"1px solid var(--border)",flexShrink:0},children:"Custom"}),(0,n.jsx)("input",{value:l,onChange:t=>o(e,t.target.value),onFocus:()=>{"string"!==i&&o(e,l||e)},placeholder:e,maxLength:10,style:{width:"12ch",background:"string"===i?"var(--bg)":"var(--bg-panel)",border:"none",outline:"none",color:"string"===i?"var(--text)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,padding:"4px 7px",transition:"background 0.1s, color 0.1s"}})]})]},e)})})}let r0={thinkingFormat:"deepseek",requiresReasoningContentOnAssistantMessages:!0};function r1({providerName:e,provider:t,model:r,onChange:i,onDelete:l}){let[s,a]=(0,o.useState)({phase:"idle"}),d=(e,t)=>i({...r,[e]:t}),c=(()=>{if("idle"===s.phase)return null;if("testing"===s.phase)return"Testing model connection...";let e=[void 0!==s.latencyMs?`${s.latencyMs}ms`:null,void 0!==s.status?`HTTP ${s.status}`:null].filter(Boolean);return"success"===s.phase?["Connected",...e,s.responseText||null].filter(Boolean).join(" \xb7 "):["Failed",...e,s.message].filter(Boolean).join(" \xb7 ")})();(0,o.useEffect)(()=>{a({phase:"idle"})},[e,t.baseUrl,t.api,t.apiKey,r.id,r.api]);let u=(0,o.useCallback)(async()=>{if(r.id.trim()&&"testing"!==s.phase){a({phase:"testing"});try{let n=await fetch("/api/models-config/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerName:e,provider:t,model:r})}),o=await n.json();if(!n.ok||!o.ok)return void a({phase:"error",message:o.error??`HTTP ${n.status}`,latencyMs:o.latencyMs,status:o.status});a({phase:"success",latencyMs:o.latencyMs,status:o.status,responseText:o.responseText})}catch(e){a({phase:"error",message:e instanceof Error?e.message:String(e)})}}},[r,t,e,s.phase]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"Model"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&(0,n.jsx)("span",{title:c,style:{maxWidth:260,height:24,padding:"0 8px",border:`1px solid ${"error"===s.phase?"#fecaca":"success"===s.phase?"#bbf7d0":"var(--border)"}`,borderRadius:4,background:"error"===s.phase?"#fee2e2":"success"===s.phase?"#dcfce7":"#e5e7eb",color:"#111827",fontSize:11,display:"inline-flex",alignItems:"center",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",boxSizing:"border-box"},children:c}),(0,n.jsxs)("button",{onClick:u,disabled:!r.id.trim()||"testing"===s.phase,title:"Test model connection",style:{height:24,padding:"0 8px",background:"success"===s.phase?"#16a34a":"none",border:`1px solid ${"success"===s.phase?"#16a34a":"var(--border)"}`,borderRadius:4,color:"success"===s.phase?"#fff":r.id.trim()&&"testing"!==s.phase?"var(--text-muted)":"var(--text-dim)",cursor:r.id.trim()&&"testing"!==s.phase?"pointer":"not-allowed",fontSize:11,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box",gap:5},children:["success"===s.phase&&(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),"testing"===s.phase?"Testing…":"success"===s.phase?"OK":"Test"]}),(0,n.jsx)("button",{onClick:l,style:{height:24,padding:"0 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:"pointer",fontSize:11,boxSizing:"border-box"},children:"Remove"})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(rF,{label:"ID *",children:(0,n.jsx)(r_,{value:r.id,onChange:e=>d("id",e),placeholder:"model-id",mono:!0})}),(0,n.jsx)(rF,{label:"Name",children:(0,n.jsx)(r_,{value:r.name??"",onChange:e=>d("name",e||void 0),placeholder:"Display name"})})]}),(0,n.jsx)(rF,{label:"API override",children:(0,n.jsx)(rq,{value:r.api??"",onChange:e=>d("api",e||void 0),options:rO})}),(0,n.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,n.jsx)(rK,{label:"Reasoning / thinking",checked:r.reasoning??!1,onChange:e=>d("reasoning",e||void 0)}),(0,n.jsx)(rK,{label:"Image input",checked:r.input?.includes("image")??!1,onChange:e=>d("input",e?["text","image"]:void 0)})]}),r.reasoning&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(rK,{label:"DeepSeek thinking compat",checked:r.compat?.thinkingFormat==="deepseek",onChange:e=>i(function(e,t){if(t)return{...e,compat:{...e.compat??{},...r0}};if(!e.compat)return e;let r={...e.compat};return delete r.thinkingFormat,delete r.requiresReasoningContentOnAssistantMessages,{...e,compat:Object.keys(r).length?r:void 0}}(r,e))}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:8},children:[(0,n.jsx)(rZ,{children:"Thinking level map"}),r.thinkingLevelMap&&(0,n.jsx)("button",{onClick:()=>d("thinkingLevelMap",void 0),style:{fontSize:10,padding:"2px 7px",background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-dim)",cursor:"pointer"},children:"clear all"})]}),(0,n.jsx)(rQ,{value:r.thinkingLevelMap,onChange:e=>d("thinkingLevelMap",e)})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(rF,{label:"Context window (tokens)",children:(0,n.jsx)(rJ,{value:void 0!==r.contextWindow?String(r.contextWindow):"",onChange:e=>d("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,n.jsx)(rF,{label:"Max output tokens",children:(0,n.jsx)(rJ,{value:void 0!==r.maxTokens?String(r.maxTokens):"",onChange:e=>d("maxTokens",e?parseInt(e):void 0),placeholder:"16384"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)(rZ,{children:"Cost (per million tokens)"}),(0,n.jsx)("div",{style:{marginTop:8,display:"grid",gridTemplateColumns:"1fr 1fr 1fr 1fr",gap:8},children:["input","output","cacheRead","cacheWrite"].map(e=>(0,n.jsx)(rF,{label:e,children:(0,n.jsx)(rJ,{value:r.cost?.[e]!==void 0?String(r.cost[e]):"",onChange:t=>{let n;return n=parseFloat(t),void i({...r,cost:{...r.cost??{},[e]:isNaN(n)?void 0:n}})},placeholder:"0"})},e))})]})]})}function r2({provider:e,onRefresh:t}){let[r,i]=(0,o.useState)({phase:"idle"}),[l,s]=(0,o.useState)(""),a=(0,o.useRef)(null),d=(0,o.useRef)(null);(0,o.useEffect)(()=>{("auth"===r.phase||"prompt"===r.phase)&&setTimeout(()=>d.current?.focus(),50)},[r.phase]),(0,o.useEffect)(()=>{i({phase:"idle"}),s(""),a.current?.close(),a.current=null},[e.id]),(0,o.useEffect)(()=>()=>{a.current?.close()},[]);let c=(0,o.useCallback)(()=>{a.current?.close(),i({phase:"connecting"}),s("");let r=new EventSource(`/api/auth/login/${encodeURIComponent(e.id)}`);a.current=r,r.onmessage=e=>{let n=JSON.parse(e.data);"auth"===n.type?(i({phase:"auth",url:n.url,instructions:n.instructions??null,token:n.token}),window.open(n.url,"_blank","noopener,noreferrer")):"device_code"===n.type?(i({phase:"device_code",userCode:n.userCode,verificationUri:n.verificationUri,intervalSeconds:n.intervalSeconds??null,expiresInSeconds:n.expiresInSeconds??null}),window.open(n.verificationUri,"_blank","noopener,noreferrer")):"prompt_request"===n.type?i({phase:"prompt",message:n.message,placeholder:n.placeholder??null,token:n.token}):"select_request"===n.type?i({phase:"select",message:n.message,options:n.options??[],token:n.token}):"progress"===n.type?i({phase:"progress",message:n.message}):"success"===n.type?(r.close(),i({phase:"success"}),t()):"error"===n.type?(r.close(),i({phase:"error",message:n.message})):"cancelled"===n.type&&(r.close(),i({phase:"idle"}))},r.onerror=()=>{r.close(),i(e=>"success"===e.phase?e:{phase:"error",message:"Connection lost"})}},[e.id,t]),u=(0,o.useCallback)(async()=>{await fetch(`/api/auth/logout/${encodeURIComponent(e.id)}`,{method:"POST"}),i({phase:"idle"}),t()},[e.id,t]),p=(0,o.useCallback)(async(t,r)=>{if(r.trim()){i({phase:"progress",message:"Verifying…"});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,code:r.trim()})});if(!n.ok){let e=await n.json().catch(()=>({}));i({phase:"error",message:e.error??`Server error ${n.status}`});return}s("")}catch(e){i({phase:"error",message:e instanceof Error?e.message:"Network error"})}}},[e.id]),h=(0,o.useCallback)(async(t,r)=>{i({phase:"progress",message:"Continuing…"});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,code:r})});if(!n.ok){let e=await n.json().catch(()=>({}));i({phase:"error",message:e.error??`Server error ${n.status}`})}}catch(e){i({phase:"error",message:e instanceof Error?e.message:"Network error"})}},[e.id]),x="connecting"===r.phase||"progress"===r.phase||"auth"===r.phase||"device_code"===r.phase||"prompt"===r.phase||"select"===r.phase;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"Subscription"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.loggedIn?"#4ade80":"var(--border)",display:"inline-block"}}),(0,n.jsx)("span",{style:{fontSize:11,color:e.loggedIn?"#4ade80":"var(--text-dim)"},children:e.loggedIn?"connected":"not connected"})]})]}),(0,n.jsxs)("div",{style:{minHeight:48},children:["idle"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:e.loggedIn?"Already connected. You can re-login or disconnect.":`Connect your ${e.name} account.`}),"connecting"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)"},children:"Opening browser…"}),"select"===r.phase&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:r.message}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:r.options.map(e=>(0,n.jsx)("button",{onClick:()=>h(r.token,e.id),style:{padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left"},children:e.label},e.id))})]}),("auth"===r.phase||"prompt"===r.phase)&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:"auth"===r.phase?"Complete sign-in in the browser, then copy the redirect URL from the address bar and paste it below.":r.message}),"auth"===r.phase&&(0,n.jsxs)("p",{style:{margin:0,fontSize:11,color:"var(--text-dim)",lineHeight:1.5},children:["If the browser window did not open,"," ",(0,n.jsx)("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:"click here to open the login page"}),"."]}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("input",{ref:d,value:l,onChange:e=>s(e.target.value),onKeyDown:e=>{"Enter"===e.key&&p(r.token,l)},placeholder:"auth"===r.phase?"http://localhost:1455/auth/callback?code=…":r.placeholder??"Enter value…",style:{flex:1,padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",fontSize:12,outline:"none",fontFamily:"var(--font-mono)",boxSizing:"border-box"}}),(0,n.jsx)("button",{onClick:()=>p(r.token,l),disabled:!l.trim(),style:{padding:"6px 12px",background:l.trim()?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:5,color:l.trim()?"#fff":"var(--text-dim)",cursor:l.trim()?"pointer":"not-allowed",fontSize:12,fontWeight:600,flexShrink:0},children:"Submit"})]})]}),"device_code"===r.phase&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:"Open the verification page and enter this code:"}),(0,n.jsx)("div",{style:{padding:"8px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",fontSize:16,fontWeight:700,fontFamily:"var(--font-mono)",letterSpacing:0},children:r.userCode}),(0,n.jsxs)("p",{style:{margin:0,fontSize:11,color:"var(--text-dim)",lineHeight:1.5},children:[(0,n.jsx)("a",{href:r.verificationUri,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:r.verificationUri}),r.expiresInSeconds?` Expires in ${Math.ceil(r.expiresInSeconds/60)} minutes.`:""]})]}),"progress"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)"},children:r.message}),"success"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"#4ade80"},children:"Connected successfully."}),"error"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"#f87171"},children:r.message})]}),(0,n.jsx)("div",{style:{display:"flex",gap:8},children:x?(0,n.jsx)("button",{onClick:()=>{a.current?.close(),i({phase:"idle"})},style:{padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{onClick:c,style:{padding:"5px 14px",background:"var(--accent)",border:"none",borderRadius:5,color:"#fff",cursor:"pointer",fontSize:12,fontWeight:600},children:e.loggedIn?"Re-login":"Login"}),e.loggedIn&&(0,n.jsx)("button",{onClick:u,style:{padding:"5px 12px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:5,color:"#ef4444",cursor:"pointer",fontSize:12},children:"Disconnect"})]})})]})}function r4({provider:e,onRefresh:t}){let[r,i]=(0,o.useState)(""),[l,s]=(0,o.useState)(!1),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(!1);(0,o.useEffect)(()=>{i(""),u(null),h(!1)},[e.id]);let x=(0,o.useCallback)(async()=>{if(r.trim()){s(!0),u(null),h(!1);try{let n=await fetch(`/api/auth/api-key/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r.trim()})}),o=await n.json();!n.ok||o.error?u(o.error??`HTTP ${n.status}`):(i(""),h(!0),setTimeout(()=>h(!1),2e3),t())}catch(e){u(String(e))}finally{s(!1)}}},[r,e.id,t]),g=(0,o.useCallback)(async()=>{d(!0),u(null);try{let r=await fetch(`/api/auth/api-key/${encodeURIComponent(e.id)}`,{method:"DELETE"}),n=await r.json();!r.ok||n.error?u(n.error??`HTTP ${r.status}`):t()}catch(e){u(String(e))}finally{d(!1)}},[e.id,t]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"API Key"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.configured?"#4ade80":"var(--border)",display:"inline-block"}}),(0,n.jsx)("span",{style:{fontSize:11,color:e.configured?"#4ade80":"var(--text-dim)"},children:e.configured?"configured":"not configured"})]})]}),(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:e.configured?"API key is stored. Enter a new key below to replace it, or disconnect to remove it.":`Enter your ${e.displayName} API key to enable ${e.modelCount} model${1!==e.modelCount?"s":""}.`}),(0,n.jsx)(rF,{label:"API Key",children:(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(rV,{value:r,onChange:i,onKeyDown:e=>{"Enter"===e.key&&r.trim()&&x()},placeholder:e.configured?"Enter new key to replace…":"sk-…",style:{flex:1},autoComplete:"off",spellCheck:!1,mono:!0}),(0,n.jsxs)("button",{onClick:x,disabled:l||!r.trim()||p,style:{padding:"6px 12px",background:p?"#16a34a":r.trim()?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:5,color:r.trim()||p?"#fff":"var(--text-dim)",cursor:l||!r.trim()||p?"not-allowed":"pointer",fontSize:12,fontWeight:600,flexShrink:0,display:"flex",alignItems:"center",gap:5},children:[p&&(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),p?"Saved":l?"Saving…":"Save"]})]})}),c&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"#f87171"},children:c}),e.configured&&(0,n.jsx)("button",{onClick:g,disabled:a,style:{alignSelf:"flex-start",padding:"5px 12px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:5,color:"#ef4444",cursor:a?"not-allowed":"pointer",fontSize:12},children:a?"Removing…":"Disconnect"})]})}function r5({id:e,size:t}){let r=rD[e];return r?r.hasColor?(0,n.jsx)(r.Icon,{size:t}):(0,n.jsx)(r.Icon,{size:t,style:{color:"var(--text-muted)"}}):null}function r3({oauthProviders:e,apiKeyProviders:t,onSelectOAuth:r,onSelectApiKey:i,onAddCustom:l,onDiscover:s,onClose:a}){let[d,c]=(0,o.useState)(""),u=(0,o.useRef)(null);(0,o.useEffect)(()=>{setTimeout(()=>u.current?.focus(),30)},[]);let p=d.trim().toLowerCase(),h=e.filter(e=>!e.loggedIn&&(!p||e.name.toLowerCase().includes(p))),x=t.filter(e=>!e.configured&&(!p||e.displayName.toLowerCase().includes(p)||e.id.toLowerCase().includes(p))),g=!p||"custom".includes(p)||"openai-compatible".includes(p)||"anthropic-compatible".includes(p),f=!p||"discover".includes(p)||"base url".includes(p)||"model import".includes(p),v=h.length+x.length+ +!!g+ +!!f,m={display:"flex",flexDirection:"row",alignItems:"center",gap:8,padding:"10px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:7,boxSizing:"border-box",cursor:"pointer",minWidth:0,textAlign:"left",transition:"border-color 0.12s, background 0.12s",width:"100%"};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:1100,background:"rgba(0,0,0,0.4)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:e=>{e.target===e.currentTarget&&a()},children:(0,n.jsxs)("div",{style:{width:820,maxWidth:"calc(100vw - 32px)",maxHeight:"min(72vh, calc(100vh - 32px))",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,display:"flex",flexDirection:"column",boxShadow:"0 8px 32px rgba(0,0,0,0.22)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"10px 14px",borderBottom:"1px solid var(--border)",flexShrink:0,display:"flex",alignItems:"center",gap:8},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,n.jsx)("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),(0,n.jsx)("input",{ref:u,value:d,onChange:e=>c(e.target.value),onKeyDown:e=>{"Escape"===e.key&&a()},placeholder:"Search providers…",style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--text)",fontSize:13,boxSizing:"border-box"}})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:14},children:0===v?(0,n.jsx)("div",{style:{padding:"20px 0",fontSize:12,color:"var(--text-dim)",textAlign:"center"},children:"No providers match"}):(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(240px, 100%), 1fr))",gap:8},children:[g&&(0,n.jsx)("div",{style:{gridColumn:"1 / -1",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Custom"}),g&&(0,n.jsxs)("button",{onClick:()=>{l(),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"OpenAI / Anthropic compatible"}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"Custom endpoint format"})]}),(0,n.jsx)("span",{style:{width:26,height:26,borderRadius:5,background:"var(--bg-hover)",border:"1px dashed var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)"},children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})})]}),f&&(0,n.jsxs)("button",{onClick:()=>{s(),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"Discover models from Base URL"}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"OpenAI-compatible / Ollama catalog"})]}),(0,n.jsx)("span",{style:{width:26,height:26,borderRadius:5,background:"var(--bg-hover)",border:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-muted)"},children:[(0,n.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,n.jsx)("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})})]}),h.length>0&&(0,n.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*!!g,fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Subscriptions"}),h.map(e=>(0,n.jsxs)("button",{onClick:()=>{r(e.id),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"OAuth"})]}),(0,n.jsx)(r5,{id:e.id,size:28})]},e.id)),x.length>0&&(0,n.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*(h.length>0),fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"API Key"}),x.map(e=>(0,n.jsxs)("button",{onClick:()=>{i(e.id),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,n.jsxs)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:[e.modelCount," models"]})]}),(0,n.jsx)(r5,{id:e.id,size:28})]},e.id))]})})]})})}function r6({existingProviders:e,onImport:t,onClose:r}){let[i,l]=(0,o.useState)(""),[s,a]=(0,o.useState)(""),[d,c]=(0,o.useState)("custom-provider"),[u,p]=(0,o.useState)(new Set),[h,x]=(0,o.useState)({phase:"idle"}),g=(0,o.useCallback)(async()=>{let e=i.trim();if(e&&"loading"!==h.phase){x({phase:"loading"});try{let t=await fetch("/api/models-config/discover",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:e,apiKey:s,provider:d,enrich:!1})}),r=await t.json();if(!t.ok||!r.ok||!r.models||!r.piModels||!r.endpoint)return void x({phase:"error",message:r.error??`HTTP ${t.status}`});x({phase:"success",endpoint:r.endpoint,models:r.models,piModels:r.piModels}),p(new Set(r.piModels.map(e=>e.id)))}catch(e){x({phase:"error",message:e instanceof Error?e.message:String(e)})}}},[s,i,d,h.phase]),f="success"===h.phase?h:null,v=u.size,m=!!(f&&d.trim()&&v>0);return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:1100,background:"rgba(0,0,0,0.4)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:e=>{e.target===e.currentTarget&&r()},children:(0,n.jsxs)("div",{style:{width:880,maxWidth:"calc(100vw - 32px)",height:"min(78vh, calc(100vh - 32px))",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,display:"flex",flexDirection:"column",boxShadow:"0 8px 32px rgba(0,0,0,0.22)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",flexShrink:0},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text)"},children:"Discover models"}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",marginTop:2},children:"Fetch model catalog from a Base URL and import selected models."})]}),(0,n.jsx)("button",{onClick:r,style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1,padding:"2px 6px"},children:"\xd7"})]}),(0,n.jsxs)("div",{style:{padding:16,borderBottom:"1px solid var(--border)",display:"grid",gridTemplateColumns:"1.4fr 1fr 0.9fr auto",gap:10,alignItems:"end",flexShrink:0},children:[(0,n.jsx)(rF,{label:"Base URL",children:(0,n.jsx)(r_,{value:i,onChange:l,placeholder:"https://api.example.com",mono:!0})}),(0,n.jsx)(rF,{label:"API Key",children:(0,n.jsx)(rV,{value:s,onChange:a,placeholder:"optional for local providers",mono:!0})}),(0,n.jsx)(rF,{label:"Provider name",children:(0,n.jsx)(r_,{value:d,onChange:c,placeholder:"provider-name",mono:!0})}),(0,n.jsx)("button",{onClick:g,disabled:!i.trim()||"loading"===h.phase,style:{height:31,padding:"0 14px",background:i.trim()&&"loading"!==h.phase?"var(--accent)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:5,color:i.trim()&&"loading"!==h.phase?"#fff":"var(--text-dim)",cursor:i.trim()&&"loading"!==h.phase?"pointer":"not-allowed",fontSize:12,fontWeight:600,whiteSpace:"nowrap"},children:"loading"===h.phase?"Fetching...":"Fetch models"})]}),(0,n.jsxs)("div",{style:{flex:1,overflow:"hidden",display:"flex",flexDirection:"column"},children:["idle"===h.phase&&(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:13},children:"Enter a Base URL to discover available models."}),"loading"===h.phase&&(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Fetching model catalog..."}),"error"===h.phase&&(0,n.jsx)("div",{style:{padding:18,color:"#f87171",fontSize:12,lineHeight:1.6},children:h.message}),f&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 16px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[f.piModels.length," models from ",f.endpoint]}),(0,n.jsx)("button",{onClick:()=>{if(f){if(u.size===f.piModels.length)return void p(new Set);p(new Set(f.piModels.map(e=>e.id)))}},style:{padding:"2px 8px",fontSize:11,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer"},children:u.size===f.piModels.length?"Clear":"Select all"})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto"},children:f.piModels.map((e,t)=>{let r=f.models[t],o=u.has(e.id);return(0,n.jsxs)("label",{style:{display:"grid",gridTemplateColumns:"24px minmax(0, 1fr) 90px 90px 90px",gap:10,alignItems:"center",padding:"8px 16px",borderBottom:"1px solid rgba(127,127,127,0.12)",background:o?"var(--bg-subtle)":"transparent",cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:o,onChange:()=>{var t;return t=e.id,void p(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},style:{width:14,height:14,accentColor:"var(--accent)"}}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.id}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r?.ownedBy??"unknown"})]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:e.contextWindow}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:e.maxTokens}),(0,n.jsx)("span",{style:{fontSize:10,color:e.reasoning?"var(--accent)":"var(--text-dim)"},children:e.reasoning?"reasoning":""})]},e.id)})})]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10,padding:"10px 16px",borderTop:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:[v," selected"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("button",{onClick:r,style:{padding:"6px 14px",background:"none",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:13},children:"Cancel"}),(0,n.jsx)("button",{onClick:()=>{if(!f||!m)return;let n=i.trim().replace(/\/+$/,""),o=s.trim(),l=Object.entries(e).find(([,e])=>(e.baseUrl??"").replace(/\/+$/,"")===n&&(e.apiKey??"")===o),a=l?.[0]??d.trim(),c=e[a],p=new Map((c?.models??[]).map(e=>[e.id,e])),h=0;for(let e of f.piModels)u.has(e.id)&&!p.has(e.id)&&(p.set(e.id,e),h+=1);t(a,{...c??{},baseUrl:n,api:c?.api??"openai-completions",...o?{apiKey:o}:{},models:Array.from(p.values())},h),r()},disabled:!m,style:{padding:"6px 16px",background:m?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:6,color:m?"#fff":"var(--text-dim)",cursor:m?"pointer":"not-allowed",fontSize:13,fontWeight:600},children:"Import selected"})]})]})]})})}function r8({onClose:e,embedded:t=!1}){let[r,i]=(0,o.useState)({providers:{}}),[l,s]=(0,o.useState)(!0),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(!1),[f,v]=(0,o.useState)(null),[m,y]=(0,o.useState)([]),[b,j]=(0,o.useState)([]),[k,w]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),T=(0,o.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>y(e.providers)).catch(()=>{})},[]),z=(0,o.useCallback)(()=>{fetch("/api/auth/all-providers").then(e=>e.json()).then(e=>j(e.providers)).catch(()=>{})},[]);(0,o.useEffect)(()=>{fetch("/api/models-config").then(e=>e.json()).then(e=>{let t=e.providers?e:{...e,providers:{}};i(t);let r=Object.keys(t.providers??{});r.length>0&&v({type:"provider",name:r[0]})}).catch(()=>i({providers:{}})).finally(()=>s(!1)),T(),z()},[T,z]);let L=(0,o.useCallback)(()=>{let e="new-provider",t=1;for(;r.providers?.[e];)e=`new-provider-${t++}`;i(t=>({...t,providers:{...t.providers??{},[e]:{api:"openai-completions"}}})),v({type:"provider",name:e})},[r.providers]),I=(0,o.useCallback)((e,t)=>{i(r=>({...r,providers:{...r.providers??{},[e]:t}}))},[]),M=(0,o.useCallback)((e,t)=>{i(r=>{let n=Object.entries(r.providers??{}),o=n.findIndex(([t])=>t===e);return -1===o?r:(n[o]=[t,n[o][1]],{...r,providers:Object.fromEntries(n)})}),v(r=>r?"provider"===r.type&&r.name===e?{type:"provider",name:t}:"model"===r.type&&r.providerName===e?{...r,providerName:t}:r:r)},[]),R=(0,o.useCallback)(e=>{i(t=>{let r={...t.providers??{}};return delete r[e],{...t,providers:r}}),i(e=>{let t=Object.keys(e.providers??{});return v(t.length>0?{type:"provider",name:t[0]}:null),e})},[]),W=(0,o.useCallback)(e=>{i(t=>{let r=t.providers?.[e]??{},n=[...r.models??[],{id:""}];return{...t,providers:{...t.providers??{},[e]:{...r,models:n}}}}),i(t=>{let r=(t.providers?.[e]?.models?.length??1)-1;return v({type:"model",providerName:e,index:r}),t})},[]),E=(0,o.useCallback)((e,t,r)=>{i(n=>{let o=n.providers?.[e]??{},i=[...o.models??[]];return i[t]=r,{...n,providers:{...n.providers??{},[e]:{...o,models:i}}}})},[]),$=(0,o.useCallback)((e,t)=>{i(r=>{let n=r.providers?.[e]??{},o=[...n.models??[]];return o.splice(t,1),{...r,providers:{...r.providers??{},[e]:{...n,models:o.length?o:void 0}}}}),v({type:"provider",name:e})},[]),N=(0,o.useCallback)((e,t,r)=>{i(r=>({...r,providers:{...r.providers??{},[e]:t}})),v({type:"provider",name:e}),g(!1),u(null),h(`${r} model${1===r?"":"s"} imported. Click Save to write models.json.`)},[]),B=(0,o.useCallback)(async()=>{d(!0),u(null),h(null),g(!1);try{let e=await fetch("/api/models-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),t=await e.json();!e.ok||t.error?u(t.error??`HTTP ${e.status}`):(g(!0),setTimeout(()=>g(!1),2e3))}catch(e){u(String(e))}finally{d(!1)}},[r]),P=Object.entries(r.providers??{}),A=m.filter(e=>e.loggedIn),H=b.filter(e=>e.configured),D=(()=>{if(!f)return null;if("oauth"===f.type){let e=m.find(e=>e.id===f.providerId);return e?(0,n.jsx)(r2,{provider:e,onRefresh:T},e.id):null}if("apikey"===f.type){let e=b.find(e=>e.id===f.providerId);return e?(0,n.jsx)(r4,{provider:e,onRefresh:z},e.id):null}if("provider"===f.type){let e=r.providers?.[f.name];return e?(0,n.jsx)(rY,{name:f.name,provider:e,onChange:e=>I(f.name,e),onRename:e=>M(f.name,e),onDelete:()=>R(f.name)},f.name):null}let e=r.providers?.[f.providerName],t=e?.models?.[f.index];return t?(0,n.jsx)(r1,{providerName:f.providerName,provider:e,model:t,onChange:e=>E(f.providerName,f.index,e),onDelete:()=>$(f.providerName,f.index)},`${f.providerName}-${f.index}`):null})();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:t?{height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"stretch"}:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:r=>{t||r.target!==r.currentTarget||e()},children:(0,n.jsxs)("div",{style:{width:t?"100%":860,height:t?"100%":"78vh",background:"var(--bg)",border:t?"none":"1px solid var(--border)",borderRadius:10*!t,display:"flex",flexDirection:"column",boxShadow:t?"none":"0 8px 32px rgba(0,0,0,0.18)",overflow:"hidden"},children:[!t&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 18px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,n.jsx)("span",{style:{fontSize:15,fontWeight:700,color:"var(--text)"},children:"Models"}),(0,n.jsx)("code",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:"~/.pi/agent/models.json"})]}),(0,n.jsx)("button",{onClick:e,style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1,padding:"2px 6px"},children:"\xd7"})]}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{width:210,borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,background:"var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"8px 6px"},children:[A.map(e=>{let t=f?.type==="oauth"&&f.providerId===e.id;return(0,n.jsxs)("div",{onClick:()=>v({type:"oauth",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:7,padding:"5px 8px",borderRadius:5,cursor:"pointer",background:t?"var(--bg-selected)":"none"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(r5,{id:e.id,size:16}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.id)}),H.map(e=>{let t=f?.type==="apikey"&&f.providerId===e.id;return(0,n.jsxs)("div",{onClick:()=>v({type:"apikey",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:7,padding:"5px 8px",borderRadius:5,cursor:"pointer",background:t?"var(--bg-selected)":"none"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(r5,{id:e.id,size:16}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName})]},e.id)}),(A.length>0||H.length>0)&&P.length>0&&(0,n.jsx)("div",{style:{margin:"4px 8px",borderTop:"1px solid var(--border)"}}),l?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:12,color:"var(--text-muted)"},children:"Loading…"}):P.map(([e,t])=>{let r=f?.type==="provider"&&f.name===e,o=t.models??[];return(0,n.jsxs)("div",{style:{marginBottom:2},children:[(0,n.jsxs)("div",{onClick:()=>v({type:"provider",name:e}),style:{display:"flex",alignItems:"center",gap:6,padding:"7px 8px",borderRadius:5,cursor:"pointer",background:r?"var(--bg-selected)":"none"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{r||(e.currentTarget.style.background="none")},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"}),(0,n.jsx)("rect",{x:"9",y:"9",width:"6",height:"6"}),(0,n.jsx)("line",{x1:"9",y1:"1",x2:"9",y2:"4"}),(0,n.jsx)("line",{x1:"15",y1:"1",x2:"15",y2:"4"}),(0,n.jsx)("line",{x1:"9",y1:"20",x2:"9",y2:"23"}),(0,n.jsx)("line",{x1:"15",y1:"20",x2:"15",y2:"23"}),(0,n.jsx)("line",{x1:"20",y1:"9",x2:"23",y2:"9"}),(0,n.jsx)("line",{x1:"20",y1:"14",x2:"23",y2:"14"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"4",y2:"9"}),(0,n.jsx)("line",{x1:"1",y1:"14",x2:"4",y2:"14"})]}),(0,n.jsx)("span",{style:{fontSize:12,fontWeight:r?600:400,color:"var(--text)",fontFamily:"var(--font-mono)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]}),o.map((t,r)=>{let o=f?.type==="model"&&f.providerName===e&&f.index===r;return(0,n.jsxs)("div",{onClick:()=>v({type:"model",providerName:e,index:r}),style:{display:"flex",alignItems:"center",gap:6,padding:"5px 8px 5px 26px",borderRadius:5,cursor:"pointer",background:o?"var(--bg-selected)":"none"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{o||(e.currentTarget.style.background="none")},children:[(0,n.jsx)("span",{style:{fontSize:11,fontFamily:"var(--font-mono)",color:t.id?"var(--text-muted)":"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.id||"new model"}),t.reasoning&&(0,n.jsx)("span",{style:{fontSize:9,padding:"1px 4px",background:"rgba(99,102,241,0.12)",color:"rgba(99,102,241,0.8)",borderRadius:3,flexShrink:0},children:"T"})]},r)}),(0,n.jsx)("div",{onClick:t=>{t.stopPropagation(),W(e)},style:{display:"flex",alignItems:"center",gap:4,padding:"4px 8px 4px 26px",borderRadius:5,cursor:"pointer",color:"var(--text-dim)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)",e.currentTarget.style.background="none"},children:(0,n.jsx)("span",{style:{fontSize:11},children:"+ model"})})]},e)})]}),(0,n.jsx)("div",{style:{borderTop:"1px solid var(--border)",padding:"8px 6px"},children:(0,n.jsx)("button",{onClick:()=>w(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,width:"100%",padding:"6px 0",background:"none",border:"1px dashed var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.color="var(--text-muted)"},children:"+ Add provider"})})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:l?null:D??(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:13},children:"Select a provider or model"})})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:10,padding:"10px 18px",borderTop:"1px solid var(--border)",flexShrink:0},children:[c?(0,n.jsx)("span",{style:{fontSize:12,color:"#f87171",flex:1},children:c}):p?(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",flex:1},children:p}):null,(0,n.jsx)("button",{onClick:e,style:{padding:"6px 14px",background:"none",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:13},children:"Cancel"}),(0,n.jsxs)("button",{onClick:B,disabled:a||x,style:{position:"relative",padding:"6px 16px",minWidth:92,background:x?"#16a34a":a?"var(--bg-panel)":"var(--accent)",border:"none",borderRadius:6,color:x?"#fff":a?"var(--text-muted)":"#fff",cursor:a||x?"default":"pointer",fontSize:13,fontWeight:600,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,transition:"background-color 0.2s ease, color 0.2s ease",animation:x?"saved-pop 0.45s ease":void 0},children:[x&&(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:18,animation:"saved-check-draw 0.35s ease forwards",flexShrink:0},children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),(0,n.jsx)("span",{children:x?"Saved":a?"Saving…":"Save"})]})]})]})}),k&&(0,n.jsx)(r3,{oauthProviders:m,apiKeyProviders:b,onSelectOAuth:e=>v({type:"oauth",providerId:e}),onSelectApiKey:e=>v({type:"apikey",providerId:e}),onAddCustom:L,onDiscover:()=>C(!0),onClose:()=>w(!1)}),S&&(0,n.jsx)(r6,{existingProviders:r.providers??{},onImport:N,onClose:()=>C(!1)})]})}function r7(e){return e.replace(/^\/(?:Users|home)\/[^/]+/,"~")}function r9(e){let t=e.sourceInfo?.source,r=e.sourceInfo?.scope;return"user"===r||"user"===t?"global":"project"===r||"project"===t?"project":"path"}function ne({enabled:e,loading:t,onToggle:r}){return(0,n.jsx)("button",{onClick:r,disabled:t,title:e?"Visible in model prompt — click to disable":"Hidden from model prompt — click to enable",style:{flexShrink:0,width:40,height:22,borderRadius:11,border:"none",padding:0,cursor:t?"wait":"pointer",background:e?"var(--accent)":"var(--border)",position:"relative",transition:"background 0.18s",outline:"none"},children:(0,n.jsx)("span",{style:{position:"absolute",top:3,left:e?21:3,width:16,height:16,borderRadius:"50%",background:"var(--bg)",boxShadow:"0 1px 4px rgba(0,0,0,0.22)",transition:"left 0.18s cubic-bezier(.4,0,.2,1)"}})})}function nt({skill:e,cwd:t,onToggle:r,toggling:o,saveError:i}){let l=r9(e),s=!e.disableModelInvocation;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:20},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7},children:[(0,n.jsx)("span",{style:{fontSize:10,padding:"1px 5px",borderRadius:3,flexShrink:0,background:"project"===l?"rgba(99,102,241,0.12)":"rgba(120,120,120,0.12)",color:"project"===l?"rgba(99,102,241,0.8)":"var(--text-dim)"},children:l}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:function(e){if("project"===l&&e.startsWith(t)){let r=e.slice(t.length).replace(/^[/\\]/,"");return`./${r}`}return r7(e)}(e.filePath)}),(0,n.jsx)(ne,{enabled:s,loading:o,onToggle:()=>r(e)}),i&&(0,n.jsx)("span",{style:{fontSize:12,color:"#f87171",flexShrink:0},children:i})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",fontWeight:500},children:"Name"}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:14,color:"var(--text)"},children:e.name})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",fontWeight:500},children:"Description"}),(0,n.jsx)("span",{style:{fontSize:14,color:"var(--text-muted)",lineHeight:1.6},children:e.description})]})]})}function nr({cwd:e,onInstalled:t}){let[r,i]=(0,o.useState)(""),[l,s]=(0,o.useState)([]),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[f,v]=(0,o.useState)(new Set),[m,y]=(0,o.useState)("global"),b=(0,o.useRef)(null);(0,o.useEffect)(()=>{b.current?.focus()},[]);let j=(0,o.useCallback)(async e=>{if(e.trim()){d(!0),u(null),s([]);try{let t=await fetch("/api/skills/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:e.trim()})}),r=await t.json();if(r.error)return void u(r.error);s(r.results??[]),0===(r.results??[]).length&&u("No skills found")}catch(e){u(String(e))}finally{d(!1)}}},[]),k=(0,o.useCallback)(async r=>{h(r),g(null);try{let n=await fetch("/api/skills/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({package:r,scope:m,cwd:e})}),o=await n.json();if(!n.ok||o.error)return void g(o.error??`HTTP ${n.status}`);v(e=>new Set(e).add(r)),t()}catch(e){g(String(e))}finally{h(null)}},[t,m,e]),w="global"===m?"~/.pi/agent/skills/":`${r7(e)}/.pi/agent/skills/`;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,marginBottom:20},children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:600,color:"var(--text)"},children:"Add Skill"}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsx)("input",{ref:b,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"===e.key&&j(r)},placeholder:"e.g. react, testing, deploy",style:{flex:1,padding:"7px 10px",fontSize:13,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:"var(--text)",outline:"none"}}),(0,n.jsx)("button",{onClick:()=>j(r),disabled:a||!r.trim(),style:{padding:"7px 16px",fontSize:13,borderRadius:6,border:"none",background:"var(--accent)",color:"#fff",cursor:a||!r.trim()?"not-allowed":"pointer",opacity:a||!r.trim()?.5:1,flexShrink:0},children:a?"Searching…":"Search"})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,n.jsx)("div",{style:{display:"flex",borderRadius:5,border:"1px solid var(--border)",overflow:"hidden",fontSize:12,flexShrink:0},children:["global","project"].map(e=>(0,n.jsx)("button",{onClick:()=>y(e),style:{padding:"3px 10px",border:"none",cursor:"pointer",background:m===e?"var(--bg-selected)":"none",color:m===e?"var(--text)":"var(--text-dim)",fontWeight:m===e?600:400,borderRight:"global"===e?"1px solid var(--border)":"none"},children:e},e))}),(0,n.jsxs)("span",{style:{fontSize:12,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["→ ",w]})]}),c&&(0,n.jsx)("div",{style:{fontSize:12,color:"#f87171"},children:c}),x&&(0,n.jsx)("div",{style:{fontSize:12,color:"#f87171",wordBreak:"break-word"},children:x})]}),l.length>0?(0,n.jsx)("div",{style:{flex:1,overflowY:"auto"},children:l.map(e=>{let t=f.has(e.package),r=p===e.package,o=e.package.indexOf("@"),i=o>-1?e.package.slice(0,o):e.package,l=o>-1?e.package.slice(o+1):null;return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,padding:"12px 0",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"var(--text)",marginBottom:3},children:l??i}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)"},children:i}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",fontWeight:500},children:e.installs}),e.url&&(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer",style:{fontSize:12,color:"var(--accent)",textDecoration:"none"},children:"skills.sh ↗"})]})]}),(0,n.jsx)("button",{onClick:()=>!t&&!r&&k(e.package),disabled:t||r||null!==p,style:{flexShrink:0,padding:"5px 14px",fontSize:12,fontWeight:500,borderRadius:5,border:"1px solid var(--border)",cursor:t||r||null!==p?"not-allowed":"pointer",background:t?"rgba(34,197,94,0.1)":"none",color:t?"#16a34a":r?"var(--accent)":"var(--text-muted)",transition:"color 0.12s"},children:t?"✓ Installed":r?"Installing…":"Install"})]},e.package)})}):!c&&!a&&(0,n.jsxs)("div",{style:{fontSize:13,color:"var(--text-dim)",lineHeight:1.8},children:["Search"," ",(0,n.jsx)("a",{href:"https://skills.sh",target:"_blank",rel:"noreferrer",style:{color:"var(--accent)",textDecoration:"none"},children:"skills.sh"})," ","to discover and install skills for your agent."]})]})}function nn({cwd:e,onClose:t,embedded:r=!1}){let[i,l]=(0,o.useState)([]),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(null),[h,x]=(0,o.useState)(new Set),[g,f]=(0,o.useState)(null),[v,m]=(0,o.useState)(!1),y=(0,o.useCallback)(()=>{a(!0),c(null),fetch(`/api/skills?cwd=${encodeURIComponent(e)}`).then(e=>e.json()).then(e=>{if(e.error)return void c(e.error);let t=e.skills??[];l(t),t.length>0&&!u&&p(t[0].filePath)}).catch(e=>c(String(e))).finally(()=>a(!1))},[e,u]);(0,o.useEffect)(()=>{y()},[e]);let b=(0,o.useCallback)(async e=>{let t=!e.disableModelInvocation;x(t=>new Set(t).add(e.filePath)),f(null);try{let r=await fetch("/api/skills",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:e.filePath,disableModelInvocation:t})}),n=await r.json();if(!r.ok||n.error)return void f(n.error??`HTTP ${r.status}`);l(r=>r.map(r=>r.filePath===e.filePath?{...r,disableModelInvocation:t}:r))}catch(e){f(String(e))}finally{x(t=>{let r=new Set(t);return r.delete(e.filePath),r})}},[]),j=i.find(e=>e.filePath===u)??null;return(0,n.jsx)("div",{style:r?{height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"stretch"}:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:e=>{r||e.target!==e.currentTarget||t()},children:(0,n.jsxs)("div",{style:{width:r?"100%":860,height:r?"100%":"78vh",background:"var(--bg)",border:r?"none":"1px solid var(--border)",borderRadius:10*!r,display:"flex",flexDirection:"column",boxShadow:r?"none":"0 8px 32px rgba(0,0,0,0.18)",overflow:"hidden"},children:[!r&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 18px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,n.jsx)("span",{style:{fontSize:15,fontWeight:700,color:"var(--text)"},children:"Skills"}),(0,n.jsx)("code",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)",maxWidth:320,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r7(e)})]}),(0,n.jsx)("button",{onClick:t,style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1,padding:"2px 6px"},children:"\xd7"})]}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{width:210,borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:"8px 6px"},children:s?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:12,color:"var(--text-muted)"},children:"Loading…"}):d?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:11,color:"#f87171"},children:d}):0===i.length?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:11,color:"var(--text-dim)"},children:"No skills found"}):(()=>{let e=[];for(let t of["project","global","path"]){let r=i.filter(e=>r9(e)===t);r.length>0&&e.push({label:t,skills:r})}return e.map(({label:e,skills:t})=>(0,n.jsxs)("div",{style:{marginBottom:6},children:[(0,n.jsx)("div",{style:{padding:"4px 8px 3px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em"},children:e}),t.map(e=>{let t=!v&&u===e.filePath,r=e.disableModelInvocation;return(0,n.jsxs)("div",{onClick:()=>{p(e.filePath),m(!1)},style:{display:"flex",alignItems:"center",gap:7,padding:"8px 8px",borderRadius:5,cursor:"pointer",background:t?"var(--bg-selected)":"none"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)("span",{style:{flexShrink:0,width:7,height:7,borderRadius:"50%",background:r?"var(--border)":"var(--accent)",boxShadow:r?"none":"0 0 4px var(--accent)",transition:"background 0.15s, box-shadow 0.15s"}}),(0,n.jsx)("span",{style:{fontSize:12,fontWeight:t?600:400,color:r?"var(--text-dim)":"var(--text)",fontFamily:"var(--font-mono)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.filePath)})]},e))})()}),(0,n.jsx)("div",{style:{padding:"8px 6px",borderTop:"1px solid var(--border)",flexShrink:0},children:(0,n.jsxs)("div",{onClick:()=>m(!0),style:{display:"flex",alignItems:"center",gap:6,padding:"7px 8px",borderRadius:5,cursor:"pointer",background:v?"var(--bg-selected)":"none",color:v?"var(--accent)":"var(--text-dim)",fontSize:12},onMouseEnter:e=>{v||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{v||(e.currentTarget.style.background="none")},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Add skill"]})})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:v?(0,n.jsx)(nr,{cwd:e,onInstalled:()=>{y()}}):s?null:j?(0,n.jsx)(nt,{skill:j,cwd:e,onToggle:b,toggling:h.has(j.filePath),saveError:g},j.filePath):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:13},children:"Select a skill"})})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",padding:"10px 18px",borderTop:"1px solid var(--border)",flexShrink:0},children:(0,n.jsx)("button",{onClick:t,style:{padding:"6px 14px",background:"none",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:13},children:"Close"})})]})})}let no=[{label:"30m",value:18e5},{label:"2h",value:72e5},{label:"6h",value:216e5},{label:"24h",value:864e5},{label:"48h",value:1728e5},{label:"Never",value:0}];function ni(e){return e?e.replace(/^\/(?:Users|home)\/[^/]+/,"~"):""}function nl(e){if(e<=0)return"never";let t=e/60/1e3;if(t<60)return`${Math.round(t)}m`;let r=t/60;return Number.isInteger(r)?`${r}h`:`${r.toFixed(1)}h`}function ns(e){return{id:"",language:e,displayName:"",command:"python"===e?"python3":"R",argsText:JSON.stringify("python"===e?["-u"]:["--slave","--vanilla"]),envText:"{}"}}function na(e){return{id:e.id,language:e.language,displayName:e.displayName,command:e.command,argsText:JSON.stringify(e.args),envText:JSON.stringify(e.env,null,2)}}let nd={height:30,padding:"0 11px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,whiteSpace:"nowrap"},nc={width:"100%",minWidth:0,padding:"7px 9px",border:"1px solid var(--border)",borderRadius:5,background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none",fontFamily:"var(--font-mono)"};function nu({label:e,children:t}){return(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:5,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",fontWeight:500},children:e}),t]})}function np({cwd:e}){let[t,r]=(0,o.useState)("python"),[i,l]=(0,o.useState)(null),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(null),[h,x]=(0,o.useState)(null),[g,f]=(0,o.useState)([]),[v,m]=(0,o.useState)(null),[y,b]=(0,o.useState)("view"),[j,k]=(0,o.useState)(()=>ns("python")),[w,S]=(0,o.useState)(1728e5),[C,T]=(0,o.useState)(!1),z=(0,o.useCallback)(async()=>{a(!0),p(null);try{let r=e?`?cwd=${encodeURIComponent(e)}`:"",n=await fetch(`/api/plot-kernels${r}`),o=await n.json();if(!n.ok||o.error)throw Error(o.error??`HTTP ${n.status}`);l(o),f([]),x(null),m(e=>{if(e&&o.kernels.some(t=>t.id===e))return e;let r=o.kernels.find(e=>e.language===t&&e.isEffective);return r?.id??o.kernels.find(e=>e.language===t)?.id??null})}catch(e){p(e instanceof Error?e.message:String(e))}finally{a(!1)}},[e,t]);(0,o.useEffect)(()=>{z()},[z]),(0,o.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{e||"number"!=typeof t.settings?.plotIdleTimeoutMs||S(t.settings.plotIdleTimeoutMs)}).catch(()=>{}),()=>{e=!0}},[]);let L=(0,o.useMemo)(()=>(i?.kernels??[]).filter(e=>e.language===t),[t,i?.kernels]),I=L.find(e=>e.id===v)??null;(0,o.useEffect)(()=>{if("new"===y)return void k(ns(t));let e=I??L.find(e=>e.isEffective)??L[0]??null;e?(v!==e.id&&m(e.id),k(na(e)),b("view")):(m(null),k(ns(t)),b("new"))},[t,i?.kernels]);let M=(0,o.useCallback)(async(t,r)=>{c(r),p(null),x(null),f([]);try{let r=await fetch("/api/plot-kernels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,...t})}),n=await r.json();if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);return l(n),f(n.errors??[]),n}catch(e){return p(e instanceof Error?e.message:String(e)),null}finally{c(null)}},[e]),R=(0,o.useCallback)(async e=>{let t=await M({action:"scan",..."all"===e?{}:{language:e}},"scan");t&&x(`Scan added ${t.added?.length??0} kernel${(t.added?.length??0)===1?"":"s"}${t.skipped?`, skipped ${t.skipped} existing`:""}.`)},[M]),W=(0,o.useCallback)(async e=>{await M({action:"select",language:e.language,kernelId:e.id},"select")&&x(`Selected ${e.displayName} for this project.`)},[M]),E=(0,o.useCallback)(async e=>{await M({action:"setDefault",language:e.language,kernelId:e.id},"default")&&x(`Set ${e.displayName} as global default.`)},[M]),$=(0,o.useCallback)(async()=>{let e=j.id.trim();if(!e)return void p("Kernel ID is required");try{let t=function(e){let t=JSON.parse(e.argsText||"[]"),r=JSON.parse(e.envText||"{}");if(!Array.isArray(t))throw Error("Args must be a JSON array");if(!r||"object"!=typeof r||Array.isArray(r))throw Error("Env must be a JSON object");return{language:e.language,command:e.command.trim(),displayName:e.displayName.trim(),args:t.map(e=>String(e)),env:Object.fromEntries(Object.entries(r).map(([e,t])=>[e,String(t)]))}}(j);if(!t.command)throw Error("Command is required");if(!await M({action:"new"===y?"add":"edit",kernelId:e,kernel:t},"save"))return;m(e),b("view"),x("new"===y?"Kernel added.":"Kernel saved.")}catch(e){p(e instanceof Error?e.message:String(e))}},[j,y,M]),N=(0,o.useCallback)(async e=>{let r=await M({action:"delete",kernelId:e.id},"delete");if(!r)return;let n=r.kernels.find(e=>e.language===t&&e.isEffective)??r.kernels.find(e=>e.language===t)??null;m(n?.id??null),b(n?"view":"new"),x("Kernel deleted.")},[t,M]),B=()=>{b("new"),m(null),k(ns(t)),p(null),x(null)},P=(0,o.useCallback)(async e=>{S(e),T(!0),p(null);try{let t=await fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{plotIdleTimeoutMs:e}})}),r=await t.json();if(!t.ok||r.error)throw Error(r.error??`HTTP ${t.status}`);"number"==typeof r.settings?.plotIdleTimeoutMs&&(S(r.settings.plotIdleTimeoutMs),x(`Plot idle timeout set to ${nl(r.settings.plotIdleTimeoutMs)}.`))}catch(e){S(w),p(e instanceof Error?e.message:String(e))}finally{T(!1)}},[w]);return(0,n.jsxs)("div",{style:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--border)",flexWrap:"wrap"},children:[(0,n.jsx)("div",{style:{display:"flex",padding:2,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)"},children:["python","r"].map(e=>{let o=t===e;return(0,n.jsx)("button",{type:"button",onClick:()=>r(e),style:{height:26,padding:"0 12px",border:"none",borderRadius:5,background:o?"var(--bg)":"transparent",color:o?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:o?600:500},children:"python"===e?"Python":"R"},e)})}),(0,n.jsxs)("button",{type:"button",onClick:()=>void R(t),disabled:!!d,style:{...nd,opacity:d?.55:1},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 0 1-15.3 6.4"}),(0,n.jsx)("path",{d:"M3 12A9 9 0 0 1 18.3 5.6"}),(0,n.jsx)("path",{d:"M18 2v4h4"}),(0,n.jsx)("path",{d:"M6 22v-4H2"})]}),"scan"===d?"Scanning...":`Scan ${"python"===t?"Python":"R"}`]}),(0,n.jsx)("button",{type:"button",onClick:()=>void R("all"),disabled:!!d,style:{...nd,opacity:d?.55:1},children:"Scan all"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginLeft:"auto"},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"Idle"}),(0,n.jsx)("div",{style:{display:"flex",padding:2,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)"},children:no.map(e=>{let t=w===e.value;return(0,n.jsx)("button",{type:"button",onClick:()=>{t||P(e.value)},disabled:C,title:`Close inactive plot kernels after ${nl(e.value)}`,style:{height:24,padding:"0 8px",border:"none",borderRadius:5,background:t?"var(--bg)":"transparent",color:t?"var(--accent)":"var(--text-muted)",cursor:C?"default":"pointer",fontSize:11,fontWeight:t?700:500,opacity:C?.65:1},children:e.label},e.label)})})]}),(0,n.jsxs)("button",{type:"button",onClick:B,style:{...nd,marginLeft:"auto",color:"var(--accent)"},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Add kernel"]})]}),(u||h||g.length>0)&&(0,n.jsxs)("div",{style:{flexShrink:0,padding:"8px 16px",borderBottom:"1px solid var(--border)",fontSize:12,lineHeight:1.5},children:[u&&(0,n.jsx)("div",{style:{color:"#f87171"},children:u}),h&&(0,n.jsx)("div",{style:{color:"var(--text-muted)"},children:h}),g.map(e=>(0,n.jsx)("div",{style:{color:"rgba(234,179,8,0.95)"},children:e},e))]}),(0,n.jsxs)("div",{style:{flex:1,minHeight:0,display:"flex",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{width:290,flexShrink:0,borderRight:"1px solid var(--border)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",minHeight:0},children:[(0,n.jsxs)("div",{style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",lineHeight:1.5},children:[(0,n.jsxs)("div",{children:["Global: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:ni(i?.paths.global??"")})]}),e&&(0,n.jsxs)("div",{children:["Project: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:ni(i?.paths.project??"")})]}),!e&&(0,n.jsx)("div",{children:"Project selection requires an active cwd."})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflowY:"auto",padding:"8px 6px"},children:s?(0,n.jsx)("div",{style:{padding:"10px 8px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}):0===L.length?(0,n.jsx)("div",{style:{padding:"10px 8px",color:"var(--text-dim)",fontSize:12},children:"No kernels found"}):L.map(e=>{let t=v===e.id&&"new"!==y;return(0,n.jsxs)("button",{type:"button",onClick:()=>{m(e.id),b("view"),k(na(e)),p(null),x(null)},style:{width:"100%",display:"flex",alignItems:"center",gap:8,padding:"8px 9px",border:"none",borderRadius:6,background:t?"var(--bg-selected)":"transparent",color:"var(--text)",cursor:"pointer",textAlign:"left"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:e.isEffective?"var(--accent)":"var(--border)",flexShrink:0}}),(0,n.jsxs)("span",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("span",{style:{display:"block",color:"var(--text)",fontSize:12,fontWeight:t?600:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,n.jsx)("span",{style:{display:"block",color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.id})]}),(e.isProjectSelected||e.isDefault)&&(0,n.jsxs)("span",{style:{flexShrink:0,display:"flex",gap:3},children:[e.isProjectSelected&&(0,n.jsx)("span",{title:"Project selected",style:{fontSize:9,color:"var(--accent)",border:"1px solid rgba(37,99,235,0.35)",borderRadius:4,padding:"1px 4px"},children:"P"}),e.isDefault&&(0,n.jsx)("span",{title:"Global default",style:{fontSize:9,color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:4,padding:"1px 4px"},children:"D"})]})]},e.id)})}),(0,n.jsxs)("div",{style:{padding:"8px 10px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11},children:["Last scan: ",function(e){if(!e)return"never";let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}(i?.scanCache?.lastScan)]})]}),(0,n.jsx)("div",{style:{flex:1,minWidth:0,minHeight:0,overflowY:"auto",padding:18},children:"view"===y&&I?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16,maxWidth:760},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("h3",{style:{margin:0,color:"var(--text)",fontSize:15,lineHeight:1.3},children:I.displayName}),I.isEffective&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",border:"1px solid rgba(37,99,235,0.35)",borderRadius:4,padding:"1px 5px"},children:"active"})]}),(0,n.jsx)("div",{style:{marginTop:5,fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)"},children:I.id})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsx)(nu,{label:"Command",children:(0,n.jsx)("input",{readOnly:!0,value:I.command,style:{...nc,color:"var(--text-muted)"}})}),(0,n.jsx)(nu,{label:"Args",children:(0,n.jsx)("input",{readOnly:!0,value:JSON.stringify(I.args),style:{...nc,color:"var(--text-muted)"}})})]}),(0,n.jsx)(nu,{label:"Environment",children:(0,n.jsx)("textarea",{readOnly:!0,value:JSON.stringify(I.env,null,2),rows:5,style:{...nc,resize:"vertical",color:"var(--text-muted)"}})}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>e&&void W(I),disabled:!e||"select"===d,style:{...nd,background:e?"var(--accent)":"var(--bg-panel)",color:e?"#fff":"var(--text-dim)",opacity:"select"===d?.6:1},children:"Use for project"}),(0,n.jsx)("button",{type:"button",onClick:()=>void E(I),disabled:"default"===d,style:{...nd,opacity:"default"===d?.6:1},children:"Set default"}),(0,n.jsx)("button",{type:"button",onClick:()=>{b("edit"),m(I.id),k(na(I)),p(null),x(null)},style:nd,children:"Edit"}),!I.id.startsWith("default-")&&(0,n.jsx)("button",{type:"button",onClick:()=>void N(I),disabled:"delete"===d,style:{...nd,color:"#f87171",opacity:"delete"===d?.6:1},children:"Delete"})]})]}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14,maxWidth:760},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("h3",{style:{margin:0,color:"var(--text)",fontSize:15},children:"new"===y?"Add Kernel":"Edit Kernel"}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"python"===t?"Python":"R"})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsx)(nu,{label:"Kernel ID",children:(0,n.jsx)("input",{value:j.id,readOnly:"edit"===y,onChange:e=>k(t=>({...t,id:e.target.value})),placeholder:"python"===t?"my-python":"my-r",style:{...nc,color:"edit"===y?"var(--text-muted)":"var(--text)"}})}),(0,n.jsx)(nu,{label:"Display name",children:(0,n.jsx)("input",{value:j.displayName,onChange:e=>k(t=>({...t,displayName:e.target.value})),placeholder:"python"===t?"Python 3 (Project)":"R (Project)",style:nc})})]}),(0,n.jsx)(nu,{label:"Command",children:(0,n.jsx)("input",{value:j.command,onChange:e=>k(t=>({...t,command:e.target.value})),placeholder:"/usr/bin/python3",style:nc})}),(0,n.jsx)(nu,{label:"Args JSON",children:(0,n.jsx)("input",{value:j.argsText,onChange:e=>k(t=>({...t,argsText:e.target.value})),style:nc})}),(0,n.jsx)(nu,{label:"Env JSON",children:(0,n.jsx)("textarea",{value:j.envText,onChange:e=>k(t=>({...t,envText:e.target.value})),rows:6,style:{...nc,resize:"vertical"}})}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void $(),disabled:"save"===d,style:{...nd,background:"var(--accent)",borderColor:"var(--accent)",color:"#fff",opacity:"save"===d?.6:1},children:"save"===d?"Saving...":"Save"}),(0,n.jsx)("button",{type:"button",onClick:()=>{let e=I??L.find(e=>e.isEffective)??L[0]??null;e?(m(e.id),k(na(e)),b("view")):B(),p(null)},style:nd,children:"Cancel"})]})]})})]})]})}function nh({activeCwd:e,onSelectProject:t,onProjectsChanged:r}){let[i,l]=(0,o.useState)([]),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(""),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(null),[v,m]=(0,o.useState)(null),[y,b]=(0,o.useState)(""),j=(0,o.useRef)(null),k=(0,o.useCallback)(async()=>{try{a(!0);let e=await fetch("/api/projects"),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);l(t.projects??[]),c(null)}catch(e){c(e instanceof Error?e.message:String(e))}finally{a(!1)}},[]);(0,o.useEffect)(()=>{k()},[k]);let w=(0,o.useMemo)(()=>({projects:i.length,chats:i.reduce((e,t)=>e+t.chatCount,0)}),[i]),S=(0,o.useCallback)(async()=>{let e=u.trim();if(e){f("add"),c(null);try{let n=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e})}),o=await n.json();if(!n.ok||o.error)throw Error(o.error??`HTTP ${n.status}`);p(""),r?.(),t?.(e),k()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}}},[k,r,t,u]),C=(0,o.useCallback)(async e=>{f("add"),c(null);try{let n=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e})}),o=await n.json();if(!n.ok||o.error)throw Error(o.error??`HTTP ${n.status}`);p(""),x(!1),r?.(),t?.(e),k()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[k,r,t]),T=(0,o.useCallback)(async e=>{f(`rename:${e}`),c(null);try{let t=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,name:y})}),n=await t.json();if(!t.ok||n.error)throw Error(n.error??`HTTP ${t.status}`);m(null),b(""),await k(),r?.()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[k,r,y]),z=(0,o.useCallback)(async e=>{f(`remove:${e}`),c(null);try{let t=await fetch("/api/projects",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e})}),n=await t.json();if(!t.ok||n.error)throw Error(n.error??`HTTP ${t.status}`);await k(),r?.()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[k,r]),L=(0,o.useCallback)(e=>{m(e.cwd),b(e.name??e.displayName),window.setTimeout(()=>j.current?.select(),0)},[]);return(0,n.jsxs)("div",{style:{height:"100%",overflowY:"auto",padding:20},children:[(0,n.jsxs)("div",{style:{maxWidth:900,display:"flex",flexDirection:"column",gap:14},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:15,fontWeight:750,color:"var(--text)"},children:"Projects"}),(0,n.jsxs)("div",{style:{marginTop:4,fontSize:12,color:"var(--text-muted)"},children:[w.projects," projects / ",w.chats," chats"]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void k(),style:{height:30,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Refresh"})]}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:12},children:(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,n.jsx)("input",{value:u,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"===e.key&&S()},placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"button",onClick:()=>x(!0),style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Browse"}),(0,n.jsx)("button",{type:"button",disabled:!u.trim()||"add"===g,onClick:()=>void S(),style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:u.trim()?"var(--accent)":"var(--bg-hover)",color:u.trim()?"#fff":"var(--text-dim)",cursor:u.trim()?"pointer":"default",fontSize:12,fontWeight:650},children:"Add"})]})}),d&&(0,n.jsx)("div",{style:{padding:"9px 11px",border:"1px solid rgba(248,113,113,0.35)",borderRadius:7,color:"#f87171",background:"rgba(248,113,113,0.08)",fontSize:12},children:d}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,overflow:"hidden"},children:s?(0,n.jsx)("div",{style:{padding:16,color:"var(--text-muted)",fontSize:12},children:"Loading..."}):0===i.length?(0,n.jsx)("div",{style:{padding:16,color:"var(--text-muted)",fontSize:12},children:"No projects yet."}):i.map(r=>{var o;let i,l=r.cwd===e,s=v===r.cwd,a=r.lastAccessed??r.created??null;return(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",gap:12,alignItems:"center",padding:"12px 14px",borderBottom:"1px solid var(--border)",background:l?"var(--bg-selected)":"var(--bg)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[s?(0,n.jsx)("input",{ref:j,value:y,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"===e.key&&T(r.cwd),"Escape"===e.key&&m(null)},style:{width:"min(360px, 100%)",height:30,padding:"0 9px",border:"1px solid var(--accent)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontSize:13,outline:"none"}}):(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:l?750:650,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.displayName}),(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:r.cwd,children:(i=(o=r.cwd).split(/[\\/]/).filter(Boolean)).length<=3?o:`.../${i.slice(-3).join("/")}`}),(0,n.jsxs)("div",{style:{marginTop:5,color:"var(--text-muted)",fontSize:11},children:[r.chatCount," chats / last ",function(e){if(!e)return"Never";let t=new Date(e),r=new Date().getTime()-t.getTime(),n=Math.floor(r/6e4),o=Math.floor(r/36e5),i=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}(a),r.exists?"":" / path missing"]})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6},children:s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:g===`rename:${r.cwd}`,onClick:()=>void T(r.cwd),style:{height:28,padding:"0 9px",border:"none",borderRadius:6,background:"var(--accent)",color:"#fff",cursor:"pointer",fontSize:12},children:"Save"}),(0,n.jsx)("button",{type:"button",onClick:()=>m(null),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>t?.(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:l?"var(--accent)":"var(--bg-panel)",color:l?"#fff":"var(--text-muted)",cursor:"pointer",fontSize:12},children:l?"Current":"Switch"}),(0,n.jsx)("button",{type:"button",onClick:()=>L(r),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Rename"}),(0,n.jsx)("button",{type:"button",disabled:g===`remove:${r.cwd}`,onClick:()=>void z(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid rgba(248,113,113,0.35)",borderRadius:6,background:"transparent",color:"#f87171",cursor:"pointer",fontSize:12},children:"Remove"})]})})]},r.cwd)})})]}),(0,n.jsx)(Z,{open:h,initialPath:e,onClose:()=>x(!1),onSelect:e=>void C(e)})]})}function nx({checked:e,onChange:t}){return(0,n.jsx)("button",{type:"button",onClick:t,"aria-pressed":e,style:{width:44,height:24,borderRadius:999,border:"none",padding:0,cursor:"pointer",background:e?"var(--accent)":"var(--border)",position:"relative",transition:"background 0.18s",flexShrink:0},children:(0,n.jsx)("span",{style:{position:"absolute",top:3,left:e?23:3,width:18,height:18,borderRadius:"50%",background:"var(--bg)",boxShadow:"0 1px 4px rgba(0,0,0,0.22)",transition:"left 0.18s cubic-bezier(.4,0,.2,1)"}})})}function ng(){return(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.09a2 2 0 0 1-1-1.74v-.51a2 2 0 0 1 1-1.72l.15-.1a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})}function nf(e){return"projects"===e?(0,n.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M3 6.5A2.5 2.5 0 0 1 5.5 4H10l2 2.5h6.5A2.5 2.5 0 0 1 21 9v8.5A2.5 2.5 0 0 1 18.5 20h-13A2.5 2.5 0 0 1 3 17.5v-11Z"})}):"models"===e?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"}),(0,n.jsx)("rect",{x:"9",y:"9",width:"6",height:"6"}),(0,n.jsx)("line",{x1:"9",y1:"1",x2:"9",y2:"4"}),(0,n.jsx)("line",{x1:"15",y1:"1",x2:"15",y2:"4"}),(0,n.jsx)("line",{x1:"9",y1:"20",x2:"9",y2:"23"}),(0,n.jsx)("line",{x1:"15",y1:"20",x2:"15",y2:"23"})]}):"skills"===e?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),(0,n.jsx)("path",{d:"M2 17l10 5 10-5"}),(0,n.jsx)("path",{d:"M2 12l10 5 10-5"})]}):"generative-ui"===e?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("path",{d:"M16 17h5"}),(0,n.jsx)("path",{d:"M18.5 14.5v5"})]}):(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M3 3v18h18"}),(0,n.jsx)("path",{d:"m19 9-5 5-4-4-3 3"}),(0,n.jsx)("path",{d:"M14 9h5v5"})]})}function nv({cwd:e,generativeUI:t,initialTab:r="projects",onGenerativeUIToggle:i,onClose:l,onModelsChanged:s,onProjectSelect:a,onProjectsChanged:d}){let[c,u]=(0,o.useState)(r);(0,o.useEffect)(()=>{u(r)},[r]),(0,o.useEffect)(()=>{let e=e=>{"Escape"===e.key&&l()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[l]);let p=[{id:"projects",label:"Project",description:e?"Overview and paths":"Add or select a project",icon:nf("projects")},{id:"models",label:"Models",description:"~/.pi/agent/models.json",icon:nf("models")},{id:"skills",label:"Skills",description:e?"Project and global skills":"Select a project first",disabled:!e,icon:nf("skills")},{id:"generative-ui",label:"Generative UI",description:t?"Enabled":"Disabled",icon:nf("generative-ui")},{id:"plot-kernels",label:"Plot Kernels",description:e?"Python / R runtime":"Global kernels only",icon:nf("plot-kernels")}],h=p.find(e=>e.id===c)??p[0];return(0,n.jsx)("div",{className:"settings-dialog-backdrop",onClick:e=>{e.target===e.currentTarget&&l()},children:(0,n.jsxs)("div",{className:"settings-dialog-shell",children:[(0,n.jsxs)("div",{className:"settings-dialog-header",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:9,minWidth:0},children:[(0,n.jsx)("span",{style:{color:"var(--text-muted)",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)(ng,{})}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:15,fontWeight:700,color:"var(--text)",lineHeight:1.25},children:"Settings"}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h.label})]})]}),(0,n.jsx)("button",{type:"button",onClick:l,title:"Close settings","aria-label":"Close settings",style:{width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"x"})]}),(0,n.jsxs)("div",{className:"settings-dialog-body",children:[(0,n.jsx)("div",{className:"settings-dialog-tabs",children:p.map(e=>{let t=c===e.id;return(0,n.jsxs)("button",{type:"button",disabled:e.disabled,onClick:()=>u(e.id),className:"settings-dialog-tab",style:{background:t?"var(--bg-selected)":"transparent",color:t?"var(--text)":"var(--text-muted)",opacity:e.disabled?.45:1,cursor:e.disabled?"not-allowed":"pointer"},onMouseEnter:r=>{t||e.disabled||(r.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{flexShrink:0,color:t?"var(--accent)":"currentColor",display:"flex"},children:e.icon}),(0,n.jsxs)("span",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12,fontWeight:t?700:600,lineHeight:1.25},children:e.label}),(0,n.jsx)("span",{style:{display:"block",marginTop:2,fontSize:10,color:"var(--text-dim)",lineHeight:1.25,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.description})]})]},e.id)})}),(0,n.jsxs)("div",{className:"settings-dialog-panel",children:["projects"===c&&(0,n.jsx)(nh,{activeCwd:e,onSelectProject:a,onProjectsChanged:d}),"models"===c&&(0,n.jsx)(r8,{embedded:!0,onClose:()=>{s?.(),l()}}),"skills"===c&&e&&(0,n.jsx)(nn,{cwd:e,embedded:!0,onClose:l}),"generative-ui"===c&&(0,n.jsx)("div",{style:{height:"100%",overflowY:"auto",padding:20},children:(0,n.jsxs)("div",{style:{maxWidth:720,display:"flex",flexDirection:"column",gap:18},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:18,padding:16,border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text)",lineHeight:1.35},children:"Generative UI"}),(0,n.jsx)("div",{style:{marginTop:5,fontSize:12,color:"var(--text-muted)",lineHeight:1.55},children:"Render structured widgets and safe visual code blocks directly in chat when the assistant produces UI content."})]}),(0,n.jsx)(nx,{checked:t,onChange:i})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsxs)("div",{style:{padding:14,border:"1px solid var(--border)",borderRadius:8},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",marginBottom:5},children:"When enabled"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.6},children:"The agent prompt favors compact visual artifacts for icons, forms, dashboards, and small interactive UI when useful."})]}),(0,n.jsxs)("div",{style:{padding:14,border:"1px solid var(--border)",borderRadius:8},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",marginBottom:5},children:"Fallback rendering"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.6},children:"Assistant SVG and safe HTML code blocks can be previewed instead of appearing only as source text."})]})]})]})}),"plot-kernels"===c&&(0,n.jsx)(np,{cwd:e})]})]})]})})}function nm({initialWidth:e,minWidth:t,maxWidth:r,storageKey:n,direction:i="right"}){let[l,s]=(0,o.useState)(e),[a,d]=(0,o.useState)(!1),c=(0,o.useRef)(e),u=(0,o.useCallback)(e=>{let o=Math.max(t,Math.min(r,e));s(o),c.current=o,document.documentElement.style.setProperty(n,`${o}px`)},[t,r,n]);(0,o.useEffect)(()=>{try{let e=localStorage.getItem(n);if(e){let n=parseInt(e,10);if(!isNaN(n)&&n>=t&&n<=r)return void u(n)}}catch{}u(c.current)},[n,t,r,u]);let p=(0,o.useCallback)(()=>{d(!0)},[]),h=(0,o.useCallback)(e=>{let t="left"===i?-1:1;u(c.current+e*t)},[u,i]);return{beginResize:p,endResize:(0,o.useCallback)(()=>{d(!1);try{localStorage.setItem(n,String(c.current))}catch{}},[n]),isResizing:a,resizeBy:h,width:l,widthRef:c}}function ny(e){return!Number.isFinite(e)||e<=0?"0.0G":`${(e/1024/1024/1024).toFixed(1)}G`}function nb(){let e=(0,i.useRouter)(),t=(0,i.useSearchParams)(),{isDark:r,toggleTheme:l}=eu(),[s,a]=(0,o.useState)(null),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(0),[h,x]=(0,o.useState)(0),[g,f]=(0,o.useState)(0),[v,m]=(0,o.useState)(0),[y,b]=(0,o.useState)(!1),[j,k]=(0,o.useState)("projects"),[w,S]=(0,o.useState)({generativeUI:!0,plotIdleTimeoutMs:1728e5}),[C,T]=(0,o.useState)(!0),z=nm({initialWidth:260,minWidth:180,maxWidth:500,storageKey:"--pi-sidebar-width"}),L=nm({initialWidth:500,minWidth:300,maxWidth:1200,storageKey:"--pi-right-panel-width",direction:"left"}),I=(0,o.useRef)(null),M=(0,o.useRef)(null),[R,W]=(0,o.useState)([]),[E,$]=(0,o.useState)(null),N=(0,o.useRef)(null),B=(0,o.useCallback)((e,t,r)=>{W(e),$(t),N.current=r},[]),P=(0,o.useCallback)(e=>{N.current?.(e)},[]),[A,H]=(0,o.useState)(null),D=(0,o.useRef)(null),[O,F]=(0,o.useState)(!1),[U,_]=(0,o.useState)(""),V=(0,o.useRef)(null),J=(0,o.useRef)(!1),q=(0,o.useCallback)(e=>{H(e)},[]);(0,o.useEffect)(()=>{F(!1)},[s?.id]);let K=(0,o.useCallback)(e=>e?e.name||e.firstMessage.slice(0,80)||e.id.slice(0,12):"",[]),Z=(0,o.useCallback)(()=>{s&&(J.current=!1,_(s.name||K(s)),F(!0),setTimeout(()=>V.current?.select(),0))},[K,s]),Y=(0,o.useCallback)(async()=>{if(J.current){J.current=!1,F(!1);return}if(!s)return void F(!1);let e=U.trim(),t=K(s);if(F(!1),e!==(s.name??"")&&(s.name||e!==t))try{(await fetch(`/api/sessions/${encodeURIComponent(s.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})).ok&&(a(t=>t&&t.id===s.id?{...t,name:e}:t),p(e=>e+1))}catch{}},[K,s,U]),G=(0,o.useCallback)(e=>{"Enter"===e.key?(e.preventDefault(),Y()):"Escape"===e.key&&(J.current=!0,F(!1))},[Y]);(0,o.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(t=>{e||S(e=>({generativeUI:"boolean"==typeof t?.settings?.generativeUI?t.settings.generativeUI:e.generativeUI,plotIdleTimeoutMs:"number"==typeof t?.settings?.plotIdleTimeoutMs?t.settings.plotIdleTimeoutMs:e.plotIdleTimeoutMs}))}).catch(()=>{}),()=>{e=!0}},[]);let X=(0,o.useCallback)(()=>{let e=!w.generativeUI;S(t=>({...t,generativeUI:e})),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{generativeUI:e}})}).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>{S(t=>({...t,..."boolean"==typeof e.settings?.generativeUI?{generativeUI:e.settings.generativeUI}:{},..."number"==typeof e.settings?.plotIdleTimeoutMs?{plotIdleTimeoutMs:e.settings.plotIdleTimeoutMs}:{}}))}).catch(()=>S(e=>({...e,generativeUI:!e.generativeUI})))},[w.generativeUI]),[Q,ee]=(0,o.useState)(null),et=(0,o.useCallback)(e=>{ee(e)},[]),[er,en]=(0,o.useState)(null),ei=(0,o.useCallback)(e=>{en(e)},[]),[el,es]=(0,o.useState)(null),[ea,ed]=(0,o.useState)(null),ec=(0,o.useCallback)(e=>{es(t=>t===e?null:e)},[]);(0,o.useEffect)(()=>{if(!el||!M.current)return;let e=()=>{let e=M.current.getBoundingClientRect();ed({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe(M.current),()=>t.disconnect()},[el]);let[ep,eh]=(0,o.useState)([]),[ex,eg]=(0,o.useState)("report"),[ef,ev]=(0,o.useState)(!1),[em,ey]=(0,o.useState)(0),eb=(0,o.useCallback)(e=>{I.current?.insertText("`"+e+"`")},[]),[ej]=(0,o.useState)(()=>t.get("session")),[ek,ew]=(0,o.useState)(null),[eS,eC]=(0,o.useState)(()=>!t.get("session")),eT=(0,o.useRef)(!1),ez=(0,o.useCallback)(t=>{ew(t),t&&!eT.current&&(a(e=>e&&e.cwd!==t?null:e),c(e=>e&&e!==t?null:e),x(e=>e+1),f(e=>e+1),W([]),$(null),H(null),es(null),e.replace("/",{scroll:!1}))},[e]),eL=(0,o.useCallback)(e=>{ez(e),b(!1),p(e=>e+1)},[ez]),eI=(0,o.useCallback)((t,r=!1)=>{c(null),ew(t.cwd),a(t),x(e=>e+1),H(null),eC(!0),r&&(eT.current=!0,setTimeout(()=>{eT.current=!1},0)),r||e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eM=(0,o.useCallback)((t,r)=>{a(null),c(r),ew(r),x(e=>e+1),W([]),$(null),H(null),es(null),e.replace("/",{scroll:!1})},[e]),eR=(0,o.useCallback)(t=>{c(null),ew(t.cwd),a(t),p(e=>e+1),e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eW=(0,o.useCallback)(()=>{p(e=>e+1),f(e=>e+1)},[]),eE=(0,o.useCallback)(t=>{p(e=>e+1),x(e=>e+1),c(null),a(e=>({...e??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:t})),e.replace(`?session=${encodeURIComponent(t)}`,{scroll:!1})},[e]),e$=(0,o.useCallback)(()=>{eC(!0)},[]),eN=(0,o.useCallback)(t=>{if(p(e=>e+1),s?.id===t){let t=s.cwd;a(null),c(t??null),x(e=>e+1),W([]),$(null),H(null),es(null),e.replace("/",{scroll:!1})}},[s,e]),eB=(0,o.useCallback)((e,t)=>{let r=`file:${e}`;eh(n=>n.find(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:e}]),eg(r),ev(!0)},[]),eP=(0,o.useCallback)(e=>{"report"!==e&&(eh(t=>t.filter(t=>t.id!==e)),eg(t=>{if(t!==e)return t;let r=ep.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:"report"}))},[ep]),eA=d??(null===s&&ek?ek:null),eH=null!==s||null!==eA,eD=eS&&!eH,eO=[{id:"report",label:"Report",closable:!1,icon:"report"},...ep],eF=ep.find(e=>e.id===ex)??null,eU=s?K(s):eA?"New chat":"No session",e_=s?.cwd??eA??ek??"",eV=e_?e_.replace(/\/+$/,"").split(/[\\/]/).filter(Boolean).pop()||e_:"",eJ=ek??s?.cwd??d??null,eq=(0,o.useCallback)((e="projects")=>{k(e),b(!0)},[]),[eK,eZ]=(0,o.useState)(null),[eY,eG]=(0,o.useState)(null),[eX,eQ]=(0,o.useState)(null),e0=`${s?.id??""}|${eJ??""}`,e1=eK?.totalBytes??0,e2=eK?.currentSessionBytes??0,e4=(0,o.useCallback)(async()=>{let e=new URLSearchParams;eJ&&e.set("cwd",eJ),s?.id&&e.set("sessionId",s.id);try{let t=await fetch(`/api/plot-kernels/status${e.toString()?`?${e}`:""}`),r=await t.json();if(!t.ok||!("totalBytes"in r)||!("kernels"in r))throw Error(r.error??`HTTP ${t.status}`);eZ(r),eG(null)}catch(e){eG(e instanceof Error?e.message:String(e))}},[s?.id,eJ]);(0,o.useEffect)(()=>{let e=!1,t=async()=>{await e4(),e||(r=window.setTimeout(t,"plot"===el?3e3:8e3))},r=window.setTimeout(t,0);return()=>{e=!0,window.clearTimeout(r)}},[el,e4,e0]);let e5=(0,o.useCallback)(async()=>{if(s?.id&&!eX){eQ("all"),eG(null);try{let e=await fetch("/api/plot-kernels/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s.id})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);window.setTimeout(()=>{e4()},600)}catch(e){eG(e instanceof Error?e.message:String(e))}finally{eQ(null)}}},[e4,eX,s?.id]),e3=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eo,{selectedSessionId:s?.id??null,onSelectSession:eI,onNewSession:eM,initialSessionId:ej,onInitialRestoreDone:e$,refreshKey:u,onSessionDeleted:eN,selectedCwd:s?.cwd??d??ek??null,onCwdChange:ez,onOpenFile:eB,explorerRefreshKey:g,onAtMention:eb}),(0,n.jsx)("div",{style:{padding:"8px",flexShrink:0},children:(0,n.jsx)("button",{type:"button",onClick:()=>eq("projects"),title:"Settings","aria-label":"Settings",style:{width:34,display:"flex",alignItems:"center",justifyContent:"center",height:34,padding:0,background:"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:"pointer",fontSize:12,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.09a2 2 0 0 1-1-1.74v-.51a2 2 0 0 1 1-1.72l.15-.1a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})})]});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",height:"100dvh",overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsx)("div",{className:"sidebar-overlay-backdrop",onClick:()=>T(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!C,pointerEvents:C?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{className:`sidebar-container${C?" sidebar-open":" sidebar-closed"}`,style:{background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200,width:z.width,minWidth:z.width,transition:C||z.isResizing?"none":void 0},children:e3}),C&&(0,n.jsx)(rb,{side:"right",ariaLabel:"Resize sidebar",onResizeStart:z.beginResize,onResize:z.resizeBy,onResizeEnd:z.endResize}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:M,className:"app-topbar",style:{display:"flex",alignItems:"center",gap:8,flexShrink:0,borderBottom:"1px solid var(--border)",height:48,padding:"0 8px",background:"var(--bg)"},children:[(0,n.jsx)("button",{className:"topbar-sidebar-toggle",onClick:()=>T(e=>!e),title:C?"Hide sidebar":"Show sidebar",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="var(--bg-panel)"},children:C?(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,n.jsx)("line",{x1:"9",y1:"3",x2:"9",y2:"21"})]}):(0,n.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),(0,n.jsx)("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),(0,n.jsx)("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})}),(0,n.jsxs)("div",{className:"topbar-title-area",style:{display:"flex",alignItems:"center",gap:7,minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{minWidth:0,display:"flex",alignItems:"center",gap:6},children:O&&s?(0,n.jsx)("input",{ref:V,value:U,onChange:e=>_(e.target.value),onKeyDown:G,onBlur:()=>void Y(),style:{width:"min(360px, 34vw)",height:28,boxSizing:"border-box",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",padding:"0 8px",fontSize:13,fontWeight:500,outline:"none"}}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"topbar-session-title",title:eU,style:{minWidth:0,maxWidth:"min(420px, 36vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:eH?"var(--text)":"var(--text-muted)",fontSize:14,fontWeight:600,lineHeight:1.2},children:eU}),s&&(0,n.jsx)("button",{type:"button",className:"topbar-rename-button",onClick:Z,title:"Rename session",style:{width:22,height:22,display:"flex",alignItems:"center",justifyContent:"center",padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer",flexShrink:0},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)",e.currentTarget.style.background="transparent"},children:(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 20h9"}),(0,n.jsx)("path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"})]})})]})}),eV&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"topbar-project-crumb",style:{color:"var(--text-dim)",fontSize:12,flexShrink:0},children:"/"}),(0,n.jsx)("span",{className:"topbar-project-crumb",title:e_||eV,style:{minWidth:0,maxWidth:"min(280px, 24vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:12,lineHeight:1.2},children:eV})]})]}),eH&&(0,n.jsxs)("div",{className:"topbar-chat-tools",style:{display:"flex",alignItems:"center",gap:6,height:28,flexShrink:0},children:[(0,n.jsx)("div",{className:"topbar-branches-control",style:{height:"100%",display:"flex",alignItems:"stretch"},children:(0,n.jsx)(rS,{tree:R,activeLeafId:E,onLeafChange:P,inline:!0,containerRef:M,open:"branches"===el,onToggle:()=>ec("branches"),hasSession:!!s})}),(0,n.jsxs)("button",{ref:D,className:"topbar-system-button",onClick:()=>ec("system"),title:"System prompt","aria-label":"System prompt",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"system"===el?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${"system"===el?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:"system"===el?"var(--text)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="system"===el?"var(--text)":"var(--text-muted)",e.currentTarget.style.background="system"===el?"var(--bg-selected)":"var(--bg-panel)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:A?"var(--accent)":"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,n.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,n.jsx)("line",{x1:"8",y1:"13",x2:"16",y2:"13"}),(0,n.jsx)("line",{x1:"8",y1:"17",x2:"13",y2:"17"})]}),(0,n.jsx)("span",{className:"topbar-system-label",children:"System"})]}),(0,n.jsxs)("button",{type:"button",className:"topbar-plot-button",onClick:()=>ec("plot"),title:`Plot kernels: ${ny(e1)}`,"aria-label":`Plot kernels: ${ny(e1)}`,style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"plot"===el?"var(--bg-selected)":e1>0?"rgba(37,99,235,0.08)":"var(--bg-panel)",border:`1px solid ${"plot"===el||e1>0?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:e1>0?"var(--accent)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s",fontVariantNumeric:"tabular-nums"},onMouseEnter:e=>{e.currentTarget.style.color=e1>0?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=e1>0?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background="plot"===el?"var(--bg-selected)":e1>0?"rgba(37,99,235,0.08)":"var(--bg-panel)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M4 19V5"}),(0,n.jsx)("path",{d:"M4 19h16"}),(0,n.jsx)("path",{d:"m7 16 3-5 4 3 4-7"})]}),(0,n.jsx)("span",{className:"topbar-plot-label",children:"Plot"}),e1>0&&(0,n.jsx)("span",{className:"topbar-plot-memory",children:ny(e1)})]})]}),eH&&(Q||er)&&(()=>{let e=Q?.tokens,t=Q?.cost??0,r=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),o=t>0?t>=.01?`$${t.toFixed(2)}`:"<$0.01":null,i="var(--text-muted)",l=null;if(er?.contextWindow){let e=er.percent;null!==e&&e>90?i="#ef4444":null!==e&&e>70&&(i="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${r(er.contextWindow)}`:`? / ${r(er.contextWindow)}`}let s=[];if(e&&(s.push(`in: ${e.input.toLocaleString()}`),s.push(`out: ${e.output.toLocaleString()}`),s.push(`cache read: ${e.cacheRead.toLocaleString()}`),s.push(`cache write: ${e.cacheWrite.toLocaleString()}`),t>0&&s.push(`cost: $${t.toFixed(4)}`)),er?.contextWindow){let e=er.percent;s.push(`context: ${null!==e?e.toFixed(1)+"%":"unknown"} of ${er.contextWindow.toLocaleString()} tokens`)}let a=s.join(" | ");return(0,n.jsxs)("div",{className:"topbar-session-stats",title:a,style:{display:"flex",alignItems:"center",gap:10,padding:"0 8px",height:28,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)",fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap",cursor:"default",fontVariantNumeric:"tabular-nums"},children:[e&&e.input>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"8.5",x2:"5",y2:"1.5"}),(0,n.jsx)("polyline",{points:"2 4 5 1.5 8 4"})]}),r(e.input)]}),e&&e.output>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"1.5",x2:"5",y2:"8.5"}),(0,n.jsx)("polyline",{points:"2 6 5 8.5 8 6"})]}),r(e.output)]}),e&&e.cacheRead>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M8.5 5a3.5 3.5 0 1 1-1-2.45"}),(0,n.jsx)("polyline",{points:"6.5 1.5 8.5 2.5 7.5 4.5"})]}),r(e.cacheRead)]}),o&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500},children:o}),l&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:i},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M1 9 L1 5 Q1 1 5 1 Q9 1 9 5 L9 9"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"9",y2:"9"})]}),l]})]})})(),(0,n.jsx)("button",{type:"button",className:"topbar-icon-button topbar-generate-ui-toggle",onClick:X,title:`生成式 UI: ${w.generativeUI?"on":"off"}`,"aria-label":`生成式 UI: ${w.generativeUI?"on":"off"}`,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:w.generativeUI?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${w.generativeUI?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:w.generativeUI?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=w.generativeUI?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=w.generativeUI?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=w.generativeUI?"var(--bg-selected)":"var(--bg-panel)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("path",{d:"M16 17h5"}),(0,n.jsx)("path",{d:"M18.5 14.5v5"})]})}),(0,n.jsx)("button",{className:"topbar-icon-button topbar-theme-toggle",onClick:e=>{let t=e.currentTarget.getBoundingClientRect();l({x:t.left+t.width/2,y:t.top+t.height/2})},title:r?"Switch to light mode":"Switch to dark mode","aria-label":r?"Switch to light mode":"Switch to dark mode","aria-pressed":r,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="var(--bg-panel)"},children:r?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,n.jsx)("line",{x1:"12",y1:"1",x2:"12",y2:"3"}),(0,n.jsx)("line",{x1:"12",y1:"21",x2:"12",y2:"23"}),(0,n.jsx)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"}),(0,n.jsx)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"}),(0,n.jsx)("line",{x1:"1",y1:"12",x2:"3",y2:"12"}),(0,n.jsx)("line",{x1:"21",y1:"12",x2:"23",y2:"12"}),(0,n.jsx)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"}),(0,n.jsx)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"})]}):(0,n.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})})}),(0,n.jsx)("button",{className:"topbar-icon-button topbar-right-panel-toggle",onClick:()=>ev(e=>!e),title:ef?"Hide report panel":"Show report panel","aria-label":ef?"Hide report panel":"Show report panel",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:ef?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${ef?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:ef?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=ef?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=ef?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=ef?"var(--bg-selected)":"var(--bg-panel)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,n.jsx)("line",{x1:"15",y1:"3",x2:"15",y2:"21"})]})}),el&&ea&&(0,n.jsxs)("div",{style:{position:"fixed",top:ea.top,left:ea.left,width:ea.width,zIndex:500},children:["system"===el&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:A?(0,n.jsx)("div",{style:{maxHeight:"min(600px, 75vh)",overflowY:"auto",padding:"12px 16px",color:"var(--text-muted)",fontSize:12,lineHeight:1.6,whiteSpace:"pre-wrap",fontFamily:"var(--font-mono)"},children:A}):""===A?(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:"System prompt is empty (tools are disabled)"}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:"Send a message to load the system prompt"})}),"plot"===el&&(0,n.jsxs)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",padding:"12px 16px"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)",marginBottom:4},children:"Plot Kernels"}),(0,n.jsxs)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.45},children:["Total memory ",ny(e1),e2>0?` \xb7 current chat ${ny(e2)}`:""," \xb7 ","idle timeout ",function(e){if(e<=0)return"never";let t=e/60/60/1e3;return t>=24&&Number.isInteger(t/24)?`${t/24}d`:Number.isInteger(t)?`${t}h`:`${Math.round(e/60/1e3)}m`}(w.plotIdleTimeoutMs)]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>eq("plot-kernels"),style:{height:28,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Settings"}),(0,n.jsx)("button",{type:"button",onClick:()=>void e5(),disabled:!s?.id||!!eX,style:{height:28,padding:"0 10px",border:"1px solid rgba(248,113,113,0.45)",borderRadius:6,background:"var(--bg)",color:s?.id?"#f87171":"var(--text-dim)",cursor:s?.id&&!eX?"pointer":"not-allowed",fontSize:12,opacity:eX?.65:1},children:"all"===eX?"Releasing...":"Release current chat"})]})]}),eY&&(0,n.jsx)("div",{style:{marginTop:10,color:"#f87171",fontSize:12,lineHeight:1.45},children:eY}),(0,n.jsx)("div",{style:{marginTop:12,display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:10},children:["python","r"].map(e=>{let t=(eK?.kernels??[]).filter(t=>t.language===e),r=t.reduce((e,t)=>e+t.rssBytes,0);return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:7,background:"var(--bg)",padding:10,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:650,color:"var(--text)"},children:"python"===e?"Python":"R"}),(0,n.jsx)("div",{style:{fontSize:12,color:r>0?"var(--accent)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontVariantNumeric:"tabular-nums"},children:ny(r)})]}),(0,n.jsx)("div",{style:{marginTop:6,color:"var(--text-dim)",fontSize:11,lineHeight:1.45},children:t.length>0?`${t.length} process${1===t.length?"":"es"}`:"No warm kernel detected"}),t.length>0&&(0,n.jsx)("div",{style:{marginTop:7,display:"flex",flexDirection:"column",gap:4},children:t.slice(0,3).map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,color:"var(--text-muted)",fontSize:11,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["pid ",e.pid]}),(0,n.jsx)("span",{style:{flexShrink:0},children:ny(e.rssBytes)})]},`${e.pid}:${e.language}`))})]},e)})}),(0,n.jsx)("div",{style:{marginTop:9,color:"var(--text-dim)",fontSize:11,lineHeight:1.45},children:"Memory is estimated from OS processes; per-variable memory will appear after warmplot exposes kernel object telemetry."})]})]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",position:"relative"},children:eH?(0,n.jsx)(tB,{session:s,newSessionCwd:eA,onAgentEnd:eW,onSessionCreated:eR,onSessionForked:eE,modelsRefreshKey:v,chatInputRef:I,onBranchDataChange:B,onSystemPromptChange:q,onSessionStatsChange:et,onContextUsageChange:ei,onReportUpdated:()=>ey(e=>e+1),generativeUI:w.generativeUI},h):eD?ek?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:15},children:"Select a session from the sidebar"}):(0,n.jsxs)("div",{style:{position:"absolute",top:12,left:12,display:"flex",alignItems:"flex-start",gap:8,userSelect:"none",pointerEvents:"none"},children:[(0,n.jsxs)("svg",{width:"44",height:"44",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",style:{opacity:.7,flexShrink:0},children:[(0,n.jsx)("line",{x1:"20",y1:"12",x2:"4",y2:"12"}),(0,n.jsx)("polyline",{points:"10 6 4 12 10 18"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:18,fontWeight:600,color:"var(--text)",marginBottom:8},children:"Get Started"}),(0,n.jsxs)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.8},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:6},children:"1."}),"Select a project directory from the sidebar",(0,n.jsx)("br",{}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:6},children:"2."}),"Add models via the ",(0,n.jsx)("strong",{style:{color:"var(--text)"},children:"Models"})," button at the bottom"]})]})]}):null})]}),ef&&(0,n.jsx)(rb,{side:"left",ariaLabel:"Resize right panel",onResizeStart:L.beginResize,onResize:L.resizeBy,onResizeEnd:L.endResize}),(0,n.jsxs)("div",{className:`right-panel-container${ef?" right-panel-open":" right-panel-closed"}`,style:{display:ef?"flex":"none",flexDirection:"column",borderLeft:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,width:L.width,minWidth:L.width,transition:L.isResizing?"none":void 0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",flexShrink:0,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",height:36},children:[(0,n.jsxs)("button",{type:"button",className:"right-panel-back-button",onClick:()=>ev(!1),title:"Back to chat","aria-label":"Back to chat",style:{height:36,padding:"0 10px",border:"none",borderRight:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,alignItems:"center",gap:6,flexShrink:0},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"19",y1:"12",x2:"5",y2:"12"}),(0,n.jsx)("polyline",{points:"12 19 5 12 12 5"})]}),(0,n.jsx)("span",{children:"Chat"})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(rj,{tabs:eO,activeTabId:ex,onSelectTab:eg,onCloseTab:eP})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:"report"===ex?(0,n.jsx)(rm,{sessionId:s?.id??null,cwd:s?.cwd??ek??void 0,refreshKey:em,onOpenFile:eB}):eF?.filePath?eF.filePath.startsWith("__")?(0,n.jsx)(rf,{filePath:eF.filePath}):(0,n.jsx)(rp,{filePath:eF.filePath,cwd:ek??void 0,onOpenFile:eB}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),y&&(0,n.jsx)(nv,{cwd:eJ,generativeUI:w.generativeUI,initialTab:j,onGenerativeUIToggle:X,onModelsChanged:()=>m(e=>e+1),onProjectSelect:eL,onProjectsChanged:()=>p(e=>e+1),onClose:()=>{b(!1),m(e=>e+1)}})]})}}},e=>{e.O(0,[6079,8771,8441,3794,7358],()=>e(e.s=51564)),_N_E=e.O()}]);
270
+ ${o}`:"";j(e=>[...e,{role:"user",content:i,timestamp:Date.now()}]);let l=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{await tT(n,{type:"follow_up",message:i,...l?.length?{images:l}:{}})}catch(e){console.error("Failed to follow up:",e)}},[ej]),eB=(0,o.useCallback)(async()=>{let e=ed.current;if(e)try{await tT(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),eP=(0,o.useCallback)(async e=>{if(O(e),"auto"===e)return;let t=ed.current;if(t)try{await tT(t,{type:"set_thinking_level",level:e})}catch(e){console.error("Failed to set thinking level:",e)}},[]),eA=(0,o.useCallback)(async e=>{let{PRESET_NONE:t,PRESET_DEFAULT:n,PRESET_FULL:o,PRESET_FULL_PLOT:i}=await r.e(8451).then(r.bind(r,48451));em(e);let l=ed.current;if(l)try{await tT(l,{type:"set_tools",toolNames:"none"===e?t:"default"===e?n:"full-plot"===e?i:o})}catch(e){console.error("Failed to set tools:",e)}},[em]),eH=(0,o.useCallback)((e="smooth")=>{eg.current?.scrollIntoView({behavior:e})},[]),eD=(0,o.useCallback)(()=>{let e=ef.current,t=eh.current;if(!e||!t)return;let r=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop;e.scrollTo({top:r-16,behavior:"smooth"})},[]);return(0,o.useEffect)(()=>(t&&(ed.current=t.id,ew(t.id,!0,!0).then(e=>{e?.running&&(eC(t.id),z(!0),ei({kind:"waiting_model"}),C({type:"start"}),eT(t.id)),e?.state&&(void 0!==e.state.isCompacting&&et(e.state.isCompacting),void 0!==e.state.contextUsage&&V(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&q(e.state.systemPrompt??null),void 0!==e.state.thinkingLevel&&O(e.state.thinkingLevel??"auto"))})),()=>{ea.current?.close(),ea.current=null}),[]),(0,o.useEffect)(()=>{c?.(J)},[J,c]),(0,o.useEffect)(()=>{d&&d(p?.tree??[],m,eR)},[p?.tree,m,eR,d]),(0,o.useEffect)(()=>{b.length>0&&(ex.current?(ex.current=!1,ep.current=!0,eD()):ep.current?ec.current||eH("smooth"):(ep.current=!0,eH("instant")))},[b.length,T,eH,eD]),(0,o.useEffect)(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{if(I(e.models),e.thinkingLevels&&E(e.thinkingLevels),e.thinkingLevelMaps&&N(e.thinkingLevelMaps),e.modelList&&(R(e.modelList),u&&e.modelList.length>0)){let t=e.defaultModel,r=t&&e.modelList.find(e=>e.id===t.modelId&&e.provider===t.provider);ev(r?{provider:r.provider,modelId:r.id}:{provider:e.modelList[0].provider,modelId:e.modelList[0].id})}}).catch(()=>{})},[u,a,ev]),(0,o.useEffect)(()=>{if(!er)return;let e=setTimeout(()=>en(null),3e3);return()=>clearTimeout(e)},[er]),{data:p,loading:x,error:f,activeLeafId:m,messages:b,entryIds:k,streamState:S,agentRunning:T,modelNames:L,modelList:M,modelThinkingLevels:W,modelThinkingLevelMaps:$,newSessionModel:B,toolPreset:A,thinkingLevel:D,retryInfo:F,contextUsage:_,systemPrompt:J,forkingEntryId:K,isCompacting:ee,compactError:er,currentModel:ey,displayModel:eb,sessionStats:ek,agentPhase:eo,agentError:el,isNew:u,sessionIdRef:ed,eventSourceRef:ea,messagesEndRef:eg,scrollContainerRef:ef,lastUserMsgRef:eh,pendingScrollToUserRef:ex,initialScrollDoneRef:ep,handleSend:ez,handleAbort:eL,handleFork:eI,handleNavigate:eM,handleModelChange:eW,handleCompact:eE,handleSteer:e$,handleFollowUp:eN,handleAbortCompaction:eB,handleToolPresetChange:eA,handleThinkingLevelChange:eP,loadTools:eC,setActiveLeafId:y,setData:h,setMessages:j,dispatch:C,setAgentRunning:z,setForkingEntryId:Z,handleAgentEventRef:eu}}({session:e,newSessionCwd:t,onAgentEnd:i,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,onBranchDataChange:c,onSystemPromptChange:u}),{soundEnabled:eo,onSoundToggle:ei,playDoneSound:el}=function(){let[e,t]=(0,o.useState)(()=>{let e=localStorage.getItem("pi-sound-enabled");return null===e||"true"===e}),r=(0,o.useRef)(e);return(0,o.useEffect)(()=>{r.current=e},[e]),{soundEnabled:e,onSoundToggle:(0,o.useCallback)(()=>{t(e=>{let t=!e;return localStorage.setItem("pi-sound-enabled",String(t)),t})},[]),playDoneSound:(0,o.useCallback)(()=>{if(r.current)try{let e=new AudioContext,t=e.currentTime;[523.25,659.25].forEach((r,n)=>{let o=e.createOscillator(),i=e.createGain();o.connect(i),i.connect(e.destination),o.type="sine",o.frequency.value=r;let l=t+.18*n;i.gain.setValueAtTime(0,l),i.gain.linearRampToValueAtTime(.18,l+.02),i.gain.exponentialRampToValueAtTime(.001,l+.45),o.start(l),o.stop(l+.45)}),setTimeout(()=>e.close(),1200)}catch{}},[]),soundEnabledRef:r}}(),es=(0,o.useRef)(el);es.current=el;let ea=(0,o.useRef)(eo);ea.current=eo;let ed=en.current;(0,o.useEffect)(()=>{en.current=e=>{"agent_end"===e.type&&ea.current&&es.current(),ed?.(e)}},[ed,en]);let ec=A?`${A.tokens.input}|${A.tokens.output}|${A.tokens.cacheRead}|${A.tokens.cacheWrite}|${A.cost??0}`:null,eu=(0,o.useRef)(A);eu.current=A,(0,o.useEffect)(()=>{p?.(eu.current)},[ec,p]),(0,o.useEffect)(()=>()=>{p?.(null)},[p]);let ep=E?`${E.percent??"null"}|${E.contextWindow}|${E.tokens??"null"}`:null,eh=(0,o.useRef)(E);eh.current=E,(0,o.useEffect)(()=>{h?.(eh.current)},[ep,h]),(0,o.useEffect)(()=>()=>{h?.(null)},[h]);let{isDragOver:ex,handleDragEnter:eg,handleDragOver:ef,handleDragLeave:ev,handleDrop:em}=function(e){let[t,r]=(0,o.useState)(!1),n=(0,o.useRef)(0),i=(0,o.useCallback)(e=>{Array.from(e.dataTransfer.items).some(tI)&&(e.preventDefault(),n.current+=1,r(!0))},[]),l=(0,o.useCallback)(e=>{Array.from(e.dataTransfer.items).some(tI)&&e.preventDefault()},[]);return{isDragOver:t,handleDragEnter:i,handleDragOver:l,handleDragLeave:(0,o.useCallback)(()=>{n.current-=1,n.current<=0&&(n.current=0,r(!1))},[]),handleDrop:(0,o.useCallback)(t=>{t.preventDefault(),n.current=0,r(!1),e(Array.from(t.dataTransfer.files))},[e])}}((0,o.useCallback)(e=>{d?.current?.addFiles(e)},[d])),[ey,eb]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!O)return;let e=!1;return fetch("/api/version").then(e=>e.ok?e.json():null).then(t=>{!e&&t?.updateAvailable&&eb(t)}).catch(()=>{}),()=>{e=!0}},[O]);let ej=(f=j.filter(e=>"user"===e.role||"assistant"===e.role).length,(v=(0,o.useRef)([])).current=Array(f).fill(null).map((e,t)=>v.current[t]??null),v),ek=(0,o.useRef)(new Set),ew=(0,o.useRef)(new Set);(0,o.useEffect)(()=>{ek.current.clear(),ew.current.clear()},[e?.id]),(0,o.useEffect)(()=>{if(e?.id&&!C&&!w.isStreaming)for(let t of j.flatMap(e=>"assistant"!==e.role?[]:(Array.isArray(e.content)?e.content:[]).flatMap(e=>"text"!==e.type?[]:eZ(e.text)))){let r=`${e.id}:${t.raw}`;ek.current.has(r)||(ek.current.add(r),fetch(`/api/reports/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply_update",update:t.update,updateKey:t.raw})}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);x?.()}).catch(()=>{ek.current.delete(r)}))}},[C,j,x,e?.id,w.isStreaming]),(0,o.useEffect)(()=>{if(!e?.id||C||w.isStreaming)return;let t=function(e){for(let t=e.length-1;t>=0;t--)if("user"===e[t].role)return e.slice(t);return e}(j);if(eZ(t.filter(e=>"assistant"===e.role).map(tN).join("\n")).length>0||!function(e){if(0===e.length)return!1;let t=e.map(tN).join("\n");return!!tR.test(t)&&(tE.test(t)||tW.test(t)||/\b(saved|wrote|created|exported|generated|output|result)\b|输出|生成|保存|文件/.test(t))}(t))return;let r=function(e){for(let t=e.length-1;t>=0;t--){if("user"!==e[t].role)continue;let r=tN(e[t]).replace(/\s+/g," ").trim();if(r)return r.slice(0,90)}return"Current bioinformatics analysis"}(j),n=`${e.id}:${S??"latest"}:${r}`;ew.current.has(n)||(ew.current.add(n),fetch(`/api/reports/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"generate",leafId:S,topic:r})}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);x?.()}).catch(()=>{ew.current.delete(n)}))},[S,C,j,x,e?.id,w.isStreaming]);let eS=O&&0===j.length&&!w.isStreaming&&!C,[eC,eT]=(0,o.useState)(!1),ez=tw(j),eL=ez.filter(e=>"running"===e.status).length;(0,o.useEffect)(()=>{0===ez.length&&eC&&eT(!1)},[ez.length,eC]);let eI=P?L[`${P.provider}:${P.modelId}`]??null:null,eM=P?I[`${P.provider}:${P.modelId}`]??null:null,eR=(0,n.jsx)(tb,{ref:d,onSend:V,onAbort:J,onSteer:C?X:void 0,onFollowUp:C?Q:void 0,isStreaming:C,model:P,modelNames:T,modelList:z,onModelChange:Z,onCompact:e||O?G:void 0,onAbortCompaction:ee,isCompacting:N,compactError:B,toolPreset:M,onToolPresetChange:e||O?et:void 0,thinkingLevel:R,onThinkingLevelChange:e||O?er:void 0,availableThinkingLevels:eI,thinkingLevelMap:eM,retryInfo:W,soundEnabled:eo,onSoundToggle:ei}),eW=(0,o.useCallback)(e=>{C?d?.current?.insertText(e):V(e)},[C,d,V]);return y?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:"Loading session..."}):b?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:b}):(0,n.jsxs)("div",{className:"relative flex h-full flex-col overflow-hidden",onDragEnter:eg,onDragOver:ef,onDragLeave:ev,onDrop:em,children:[ex&&(0,n.jsxs)("div",{className:"pointer-events-none absolute inset-0 z-50 flex animate-[drop-zone-in_0.15s_ease_both] items-center justify-center bg-[rgba(37,99,235,0.06)] backdrop-blur-[1px]",children:[(0,n.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:[0,.8,1.6].map(e=>(0,n.jsx)("div",{className:"absolute h-[720px] w-[720px] rounded-full border-[1.5px] border-solid border-[rgba(37,99,235,0.5)] animate-[drop-ripple_2.4s_ease-out_infinite_backwards]",style:{transformOrigin:"center",animationDelay:`${e}s`}},e))}),(0,n.jsxs)("svg",{width:"280",height:"280",viewBox:"0 0 140 140",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"drop-shadow-[0_6px_18px_rgba(37,99,235,0.18)]",children:[(0,n.jsx)("rect",{x:"28",y:"44",width:"84",height:"60",rx:"8",fill:"rgba(37,99,235,0.08)",stroke:"rgba(37,99,235,0.50)",strokeWidth:"1.8"}),(0,n.jsx)("path",{d:"M36 100 L54 72 L68 88 L80 74 L104 100Z",fill:"rgba(37,99,235,0.16)",stroke:"rgba(37,99,235,0.40)",strokeWidth:"1.4",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"96",cy:"58",r:"8",fill:"rgba(37,99,235,0.22)",stroke:"rgba(37,99,235,0.55)",strokeWidth:"1.6"}),(0,n.jsxs)("g",{stroke:"rgba(37,99,235,0.45)",strokeWidth:"1.4",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"96",y1:"46",x2:"96",y2:"43"}),(0,n.jsx)("line",{x1:"96",y1:"70",x2:"96",y2:"73"}),(0,n.jsx)("line",{x1:"84",y1:"58",x2:"81",y2:"58"}),(0,n.jsx)("line",{x1:"108",y1:"58",x2:"111",y2:"58"}),(0,n.jsx)("line",{x1:"87.5",y1:"49.5",x2:"85.4",y2:"47.4"}),(0,n.jsx)("line",{x1:"104.5",y1:"66.5",x2:"106.6",y2:"68.6"}),(0,n.jsx)("line",{x1:"104.5",y1:"49.5",x2:"106.6",y2:"47.4"}),(0,n.jsx)("line",{x1:"87.5",y1:"66.5",x2:"85.4",y2:"68.6"})]})]})]}),eS?(0,n.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center overflow-y-auto px-4 py-8",children:(0,n.jsxs)("div",{className:"w-full max-w-[820px]",children:[(0,n.jsxs)("div",{className:"mb-3",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginLeft:16,marginRight:52,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,minWidth:0,flex:1,lineHeight:1.4},children:[(0,n.jsx)("span",{style:{fontSize:23,color:"var(--text)",fontWeight:750,letterSpacing:0},children:Y}),(0,n.jsx)("span",{style:{fontSize:14,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:(0,n.jsx)(t$,{phrases:tM})})]}),(0,n.jsx)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"flex-end",minHeight:22},children:ey?.updateAvailable?(0,n.jsxs)("span",{title:`Latest ${ey.latest??""}`,style:{fontSize:11,color:"var(--accent)",whiteSpace:"nowrap"},children:["Update: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",color:"var(--accent)"},children:ey.updateCommand})]}):(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap"},children:["v","0.8.15"]})})]}),eR]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:U,className:"flex-1 overflow-y-auto pt-4 [scrollbar-width:none]",children:(0,n.jsxs)("div",{className:"mx-auto max-w-[820px] px-4",children:[(()=>{let r=new Map;for(let e of j)"toolResult"===e.role&&r.set(e.toolCallId,e);let o=-1;for(let e=j.length-1;e>=0;e--)if("user"===j[e].role){o=e;break}let i=0;return j.map((l,s)=>{let a="user"===l.role&&s>0&&"assistant"===j[s-1].role?k[s-1]:void 0,c="user"===l.role||"assistant"===l.role,u=c?i++:-1,p=!1;if("assistant"===l.role){p=!0;for(let e=s+1;e<j.length;e++){let t=j[e].role;if("user"===t)break;if("assistant"===t){p=!1;break}}p&&w.isStreaming&&s===j.length-1&&(p=!1)}let h=(0,n.jsx)(e8,{message:l,toolResults:r,modelNames:T,entryId:k[s],onFork:C||O||0===s&&"user"===l.role?void 0:q,forking:$===k[s],onNavigate:C?void 0:K,prevAssistantEntryId:C?void 0:a,onEditContent:e=>d?.current?.insertIfEmpty(e),onSendMessage:eW,showTimestamp:p,prevTimestamp:s>0?j[s-1].timestamp:void 0,renderVisualCodeBlocks:!!g,cwd:m?.info?.cwd??e?.cwd??t??void 0},s);return c?(0,n.jsx)("div",{ref:e=>{ej.current[u]=e,s===o&&(_.current=e)},children:h},s):h})})(),w.isStreaming&&w.streamingMessage&&(0,n.jsx)(e8,{message:w.streamingMessage,isStreaming:!0,modelNames:T,onSendMessage:eW,renderVisualCodeBlocks:!!g,cwd:m?.info?.cwd??e?.cwd??t??void 0}),C&&!w.streamingMessage&&(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsx)("span",{className:"animate-[pulse_1.5s_infinite]",children:function(e){if(e?.kind==="running_tools"){let t=e.tools.map(e=>e.name);return 0===t.length?"Running tool...":1===t.length?`Running ${t[0]}...`:t.length<=3?`Running ${t.join(", ")}...`:`Running ${t.slice(0,2).join(", ")} (+${t.length-2})...`}return e?.kind==="waiting_model"?"Waiting for model...":"Thinking..."}(H)})}),m?.info?.cwd&&!1===m.info.cwdExists&&(0,n.jsxs)("div",{className:"my-3 rounded-[7px] border border-[rgba(248,113,113,0.35)] bg-[rgba(248,113,113,0.07)] px-3 py-2 text-[12px] leading-relaxed text-red-400",children:["Project directory no longer exists: ",(0,n.jsx)("code",{className:"font-mono",children:m.info.cwd})]}),D&&(0,n.jsx)("div",{className:"my-3 rounded-[7px] border border-[rgba(248,113,113,0.35)] bg-[rgba(248,113,113,0.07)] px-3 py-2 text-[12px] leading-relaxed text-red-400",children:D}),C&&(0,n.jsx)("div",{style:{height:U.current?U.current.clientHeight:"80vh"}}),(0,n.jsx)("div",{ref:F})]})}),(0,n.jsx)(tk,{messages:j,streamingMessage:w.streamingMessage,scrollContainer:U,messageRefs:ej}),ez.length>0&&(0,n.jsxs)("button",{onClick:()=>eT(e=>!e),title:eC?"Hide subagent runs":"Show subagent runs",style:{position:"absolute",right:eC?260:40,top:8,minWidth:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:eL>0||ez.length>1?"0 8px":0,background:eC?"var(--bg-selected)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:eC?"var(--accent)":"var(--text-dim)",cursor:"pointer",zIndex:30,fontSize:12,transition:"right 0.2s ease, background 0.12s"},onMouseEnter:e=>{eC||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{eC||(e.currentTarget.style.color="var(--text-dim)")},children:[(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),(0,n.jsx)("circle",{cx:"9",cy:"7",r:"4"}),(0,n.jsx)("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"}),(0,n.jsx)("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})]}),(eL>0||ez.length>1)&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,fontSize:10,fontWeight:700,color:eL>0?"var(--accent)":"var(--text-dim)"},children:[eL>0&&(0,n.jsxs)("span",{children:[eL," active"]}),(0,n.jsx)("span",{children:ez.length})]})]}),eC&&ez.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",right:48,top:4,bottom:4,width:250,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"-2px 0 12px rgba(0,0,0,0.08)",zIndex:25,overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 12px",fontSize:11,fontWeight:600,color:"var(--text-dim)",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Subagents"}),(0,n.jsx)(tS,{runs:ez})]})]}),(0,n.jsx)("div",{className:"relative",children:eR})]})]})}function tP({fileName:e,pageInfo:t,onZoomIn:r,onZoomOut:o,zoom:i,extra:l}){return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0,minHeight:32},children:[e&&(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:300},title:e,children:e}),(0,n.jsx)("span",{style:{marginLeft:"auto"}}),t&&(0,n.jsx)("span",{children:t}),void 0!==i&&o&&r&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:o,title:"Zoom out",style:tA,children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})})}),(0,n.jsxs)("span",{style:{minWidth:36,textAlign:"center",fontVariantNumeric:"tabular-nums"},children:[Math.round(100*i),"%"]}),(0,n.jsx)("button",{onClick:r,title:"Zoom in",style:tA,children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"2",x2:"5",y2:"8"}),(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})]})})]}),l]})}let tA={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"},tH=null;function tD({arrayBuffer:e,fileName:t}){let i=(0,o.useRef)(null),[l,s]=(0,o.useState)(!0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(0),[p,h]=(0,o.useState)(1),[x,g]=(0,o.useState)(1),f=(0,o.useRef)(x);f.current=x;let v=(0,o.useRef)(null),m=(0,o.useRef)(null),y=(0,o.useCallback)(async e=>{if(!tH||!v.current)return;let t=v.current;if(!(e<1)&&!(e>t.numPages)){m.current&&(m.current.cancel(),m.current=null);try{let r=await t.getPage(e),n=r.getViewport({scale:f.current*(window.devicePixelRatio||1)}),o=i.current;if(!o)return;let l=o.querySelector("canvas");if(l||((l=document.createElement("canvas")).style.display="block",l.style.margin="0 auto",o.innerHTML="",o.appendChild(l)),l.width=n.width,l.height=n.height,l.style.width=`${n.width/(window.devicePixelRatio||1)}px`,l.style.height=`${n.height/(window.devicePixelRatio||1)}px`,!l.getContext("2d"))return;let s=r.render({canvas:l,viewport:n});m.current=s,await s.promise,m.current=null}catch(e){"RenderingCancelledException"!==e.name&&console.error("PDF render error:",e)}}},[]);return(0,o.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{tH||((tH=await Promise.all([r.e(2213),r.e(2619)]).then(r.bind(r,12810))).GlobalWorkerOptions.workerSrc=new r.U(r(53228)).toString());let n=await tH.getDocument({data:e}).promise;if(t)return;v.current=n,u(n.numPages),h(1),s(!1)}catch(e){t||(d(String(e)),s(!1))}}(),()=>{t=!0,m.current&&(m.current.cancel(),m.current=null)}},[e]),(0,o.useEffect)(()=>{!l&&c>0&&y(p)},[l,p,c,y]),(0,o.useEffect)(()=>{!l&&c>0&&y(p)},[x]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t,pageInfo:c>0?`Page ${p} / ${c}`:void 0,zoom:x,onZoomIn:()=>g(e=>Math.min(e+.25,3)),onZoomOut:()=>g(e=>Math.max(e-.25,.25)),extra:c>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>h(e=>Math.max(e-1,1)),disabled:p<=1,style:{...tO,opacity:p<=1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[p,"/",c]}),(0,n.jsx)("button",{onClick:()=>h(e=>Math.min(e+1,c)),disabled:p>=c,style:{...tO,opacity:p>=c?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#525659",display:"flex",justifyContent:"center",padding:16},children:[l&&(0,n.jsx)("div",{style:{color:"#ccc",fontSize:13,display:"flex",alignItems:"center",gap:6,alignSelf:"flex-start",marginTop:40},children:"Loading PDF..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,alignSelf:"flex-start",marginTop:40},children:a}),(0,n.jsx)("div",{ref:i,style:{visibility:l?"hidden":"visible"}})]})]})}let tO={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};function tF({arrayBuffer:e,fileName:t}){let i=(0,o.useRef)(null),[l,s]=(0,o.useState)(!0),[a,d]=(0,o.useState)(null);return(0,o.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{let{renderAsync:n}=await Promise.all([r.e(2619),r.e(4453),r.e(2274)]).then(r.bind(r,52274)),o=i.current;if(!o||t)return;o.innerHTML="",await n(e,o,void 0,{className:"docx-preview",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!1,ignoreFonts:!1,breakPages:!0,ignoreLastRenderedPageBreak:!1,experimental:!1,trimXmlDeclaration:!0,useBase64URL:!1,renderChanges:!1,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0}),t||s(!1)}catch(e){t||(console.error("DOCX render error:",e),d(String(e)),s(!1))}}(),()=>{t=!0}},[e]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#e8e8e8",padding:"24px 0"},children:[l&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading document..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:a}),(0,n.jsx)("div",{ref:i,style:{maxWidth:816,margin:"0 auto",background:"#fff",boxShadow:"0 1px 4px rgba(0,0,0,0.12)",minHeight:100,visibility:l?"hidden":"visible"},className:"docx-preview-container"})]})]})}function tU({arrayBuffer:e,fileName:t}){let[i,l]=(0,o.useState)(!0),[s,a]=(0,o.useState)(null),[d,c]=(0,o.useState)([]),[u,p]=(0,o.useState)(0),h=(0,o.useRef)(null),[x,g]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=await Promise.all([r.e(3524),r.e(8436)]).then(r.bind(r,15967)),o=n.read(e,{type:"array"}),i=o.SheetNames.map(e=>{let t=o.Sheets[e],r=n.utils.sheet_to_html(t,{editable:!1});return{name:e,html:r}});t||(c(i),p(0),l(!1))}catch(e){t||(console.error("XLSX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]),(0,o.useEffect)(()=>{let e=h.current;if(!e)return;let t=e.querySelector("table");if(!t)return;let r=()=>{g(t.querySelectorAll("colgroup col, thead tr:first-child th, tbody tr:first-child td").length>8)};r();let n=new ResizeObserver(r);return n.observe(e),()=>n.disconnect()},[u,d]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t,extra:d.length>1&&(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:2},children:d.map((e,t)=>(0,n.jsx)("button",{onClick:()=>p(t),style:{padding:"2px 10px",fontSize:11,border:"1px solid var(--border)",borderBottom:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:"4px 4px 0 0",background:t===u?"var(--bg-selected)":"none",color:t===u?"var(--text)":"var(--text-muted)",cursor:"pointer",fontWeight:t===u?600:400,transition:"background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="none")},children:e.name},t))})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)"},children:[i&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading spreadsheet..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!i&&!s&&d.length>0&&(0,n.jsx)("div",{ref:h,style:{padding:"0 16px 16px",overflow:x?"auto":"visible"},dangerouslySetInnerHTML:{__html:d[u]?.html??""},className:"xlsx-preview"})]})]})}function t_({arrayBuffer:e,fileName:t}){let[i,l]=(0,o.useState)(!0),[s,a]=(0,o.useState)(null),[d,c]=(0,o.useState)([]),[u,p]=(0,o.useState)(0);(0,o.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=(await Promise.all([r.e(2619),r.e(4453)]).then(r.t.bind(r,54453,23))).default,o=await n.loadAsync(e),i=[];o.forEach(e=>{let t=/^ppt\/slides\/slide(\d+)\.xml$/i.exec(e);t&&i.push({name:e,index:parseInt(t[1],10)})}),i.sort((e,t)=>e.index-t.index);let s=[];for(let e of i){let r;if(t)return;let n=await o.file(e.name).async("string"),i=/<a:t[^>]*>([^<]*)<\/a:t>/g,l=[];for(;null!==(r=i.exec(n));){let e=r[1].trim();e&&l.push(e)}s.push({index:e.index,texts:l})}t||(c(s),l(!1))}catch(e){t||(console.error("PPTX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]);let h=d[u],x=d.length;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tP,{fileName:t,pageInfo:x>0?`Slide ${u+1} / ${x}`:void 0,extra:x>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>p(e=>Math.max(e-1,0)),disabled:u<=0,style:{...tV,opacity:u<=0?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[u+1,"/",x]}),(0,n.jsx)("button",{onClick:()=>p(e=>Math.min(e+1,x-1)),disabled:u>=x-1,style:{...tV,opacity:u>=x-1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",display:"flex",justifyContent:"center",alignItems:"flex-start",padding:24},children:[i&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading presentation..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!i&&!s&&h&&(0,n.jsxs)("div",{style:{width:"100%",maxWidth:800},children:[(0,n.jsxs)("div",{style:{background:"#fff",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"8px 16px",background:"var(--bg)",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:["Slide ",h.index]}),(0,n.jsx)("div",{style:{padding:"24px 32px 40px",minHeight:200},children:0===h.texts.length?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontStyle:"italic",fontSize:13},children:"(No text content)"}):(0,n.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none"},children:h.texts.map((e,t)=>(0,n.jsx)("li",{style:{padding:"4px 0",fontSize:14,lineHeight:1.6,color:"var(--text)",borderBottom:t<h.texts.length-1?"1px solid var(--bg-panel)":"none"},children:e},t))})})]}),x>1&&(0,n.jsxs)("div",{style:{marginTop:24},children:[(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",marginBottom:8},children:"All slides"}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:8},children:d.map((e,t)=>(0,n.jsxs)("button",{onClick:()=>p(t),style:{padding:"10px 12px",background:t===u?"var(--bg-selected)":"var(--bg)",border:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:6,cursor:"pointer",textAlign:"left",fontSize:11,color:"var(--text-muted)",transition:"border-color 0.12s, background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="var(--bg)")},children:[(0,n.jsxs)("div",{style:{fontWeight:600,marginBottom:2,color:"var(--text)"},children:["Slide ",e.index]}),(0,n.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.texts[0]||"(empty)"})]},e.index))})]})]})]})]})}let tV={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};var tJ=r(27071),tq=r(89561),tK=r(82228),tZ=r(46732),tY=r(74059),tG=r(13307),tX=r(53689),tQ=r(14097),t0=r(25460),t1=r(20144),t2=r(82774),t4=r(62733),t5=r(77482),t3=r(55135),t6=r(11209),t8=r(88198),t7=r(4238),t9=r(44542);function re({initialContent:e,language:t,isDark:r,onChange:i,onSave:l}){let s=(0,o.useRef)(null),a=(0,o.useRef)(null),d=(0,o.useRef)(i),c=(0,o.useRef)(l);return d.current=i,c.current=l,(0,o.useEffect)(()=>{let n=s.current;if(!n)return;let o=function(e){switch(e){case"javascript":case"typescript":return(0,tG.Q2)({typescript:"typescript"===e});case"python":return(0,tX.Hg)();case"sql":return(0,tQ.ll)();case"json":return(0,t0.Pq)();case"html":return(0,t1.qy)();case"css":case"scss":case"less":return(0,t2.AH)();case"markdown":return(0,t4.wD)();case"xml":case"yaml":case"toml":return(0,t5._n)();case"rust":return(0,t3.T)();case"go":return(0,t6.go)();case"java":return(0,t8.J)();default:return null}}(t),i=l?tq.w4.of([{key:"Mod-s",run:()=>(c.current?.(),!0),preventDefault:!0}]):[],u=tJ.$t.create({doc:e,extensions:[(0,tq.$K)(),(0,tq.dz)(),(0,tK.b6)(),(0,tZ.y9)(tZ.Zt),tq.w4.of([...tK.pw,...tK.cL,...t9.OO,...t7.Eo]),i,(0,t9.yU)(),...r?[tY.bM]:[],...o?[o]:[],tq.Lz.updateListener.of(e=>{e.docChanged&&d.current?.(e.state.doc.toString())}),tq.Lz.theme({"&":{height:"100%",fontSize:"13px"},".cm-scroller":{overflow:"auto",fontFamily:"var(--font-mono)"},".cm-content":{padding:"8px 0"},".cm-gutters":{borderRight:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-dim)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground":{background:r?"#3a3d4e":"#b4d5fe"}})]}),p=new tq.Lz({state:u,parent:n});return a.current=p,()=>{p.destroy(),a.current=null}},[t,r]),(0,o.useEffect)(()=>{let t=a.current;t&&t.state.doc.toString()!==e&&t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}})},[e]),(0,n.jsx)("div",{ref:s,style:{height:"100%",overflow:"hidden"}})}function rt({dir:e}){return(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:"asc"===e?(0,n.jsx)("polyline",{points:"2 6 5 3 8 6"}):(0,n.jsx)("polyline",{points:"2 4 5 7 8 4"})})}function rr(e,t,r){let n=new Blob([e],{type:r}),o=URL.createObjectURL(n),i=document.createElement("a");i.href=o,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(o),1e3)}function rn({content:e,delimiter:t,fileName:r="table"}){let[i,l]=(0,o.useState)(null),[s,a]=(0,o.useState)("asc"),{header:d,rows:c}=(0,o.useMemo)(()=>(function(e,t){let r=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),n=[],o=[],i="",l=!1;for(let e=0;e<r.length;e+=1){let s=r[e];if('"'===s){l&&'"'===r[e+1]?(i+='"',e+=1):l=!l;continue}if(s===t&&!l){o.push(i),i="";continue}if("\n"===s&&!l){o.push(i),o.some(e=>e.length>0)&&n.push(o),o=[],i="";continue}i+=s}o.push(i),o.some(e=>e.length>0)&&n.push(o);let s=n[0]??[],a=s.length;return{header:s,rows:n.slice(1).map(e=>{let t=[...e];for(;t.length<a;)t.push("");return t.slice(0,a)})}})(e,t),[e,t]),u=(0,o.useMemo)(()=>{if(null===i)return c;let e=[...c];return e.sort((e,t)=>{let r=e[i]??"",n=t[i]??"",o=Number(r),l=Number(n),a=""===r||""===n||Number.isNaN(o)||Number.isNaN(l)?r.localeCompare(n):o-l;return"asc"===s?a:-a}),e},[c,s,i]);return 0===d.length&&0===c.length?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"No tabular data to display"}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--text-dim)"},children:[c.length," rows, ",d.length," columns"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsxs)("button",{onClick:()=>{rr(e,r," "===t?"text/tab-separated-values;charset=utf-8":"text/csv;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:["Export "," "===t?"TSV":"CSV"]}),(0,n.jsx)("button",{onClick:()=>{rr(JSON.stringify(u.map(e=>Object.fromEntries(d.map((t,r)=>[t||`column_${r+1}`,e[r]??""]))),null,2),r.replace(/\.[^.]+$/,"")+".json","application/json;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:"Export JSON"})]})]}),(0,n.jsx)("div",{style:{minHeight:0,flex:1,overflow:"auto",background:"var(--bg)"},children:(0,n.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",tableLayout:"fixed",fontSize:12},children:[(0,n.jsx)("thead",{style:{position:"sticky",top:0,zIndex:1,background:"var(--bg-panel)"},children:(0,n.jsx)("tr",{children:d.map((e,t)=>(0,n.jsx)("th",{onClick:()=>{i===t?a(e=>"asc"===e?"desc":"asc"):(l(t),a("asc"))},title:e,style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",textAlign:"left",color:"var(--text-muted)",fontWeight:600,cursor:"pointer",userSelect:"none",fontSize:11,whiteSpace:"nowrap"},children:(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:e||`column_${t+1}`}),i===t&&(0,n.jsx)("span",{style:{color:"var(--accent)",display:"inline-flex",flexShrink:0},children:(0,n.jsx)(rt,{dir:s})})]})},`${e}-${t}`))})}),(0,n.jsx)("tbody",{children:u.map((e,t)=>(0,n.jsx)("tr",{style:{borderBottom:"1px solid rgba(127,127,127,0.14)",background:t%2==1?"var(--bg-subtle)":"transparent"},children:d.map((r,o)=>(0,n.jsx)("td",{title:e[o]??"",style:{padding:"6px 10px",color:"var(--text)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:0},children:e[o]??""},`${r}-${t}-${o}`))},t))})]})})]})}let ro=new Set(["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]),ri=new Set(["mp3","wav","ogg","oga","opus","m4a","aac","flac","weba","webm"]),rl=new Set(["pdf","docx","xlsx","pptx","doc","xls","ppt"]);function rs(e){let t=B(e).toLowerCase().split(".").pop()??"";return"csv"===t?",":"tsv"===t?" ":null}function ra(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function rd({oldContent:e,newContent:t}){let r=function(e,t){let r=e.length,n=t.length,o=r+n,i=Array(2*o+1).fill(0),l=[];for(let s=0;s<=o;s++){l.push([...i]);for(let a=-s;a<=s;a+=2){let d,c=(d=a===-s||a!==s&&i[a-1+o]<i[a+1+o]?i[a+1+o]:i[a-1+o]+1)-a;for(;d<r&&c<n&&e[d]===t[c];)d++,c++;if(i[a+o]=d,d>=r&&c>=n){let i=[],a=r,d=n;for(let r=s;r>0;r--){let n,s=l[r-1],c=a-d;n=c===-r||c!==r&&s[c-1+o]<s[c+1+o]?c+1:c-1;let u=s[n+o],p=u-n;for(;a>u&&d>p;)a--,d--,i.unshift({type:"unchanged",text:e[a],lineNo:a+1});r>0&&(a>u?(a--,i.unshift({type:"removed",text:e[a],lineNo:a+1})):(d--,i.unshift({type:"added",text:t[d],lineNo:d+1})))}for(;a>0&&d>0;)a--,d--,i.unshift({type:"unchanged",text:e[a],lineNo:a+1});return i}}}return[...e.map((e,t)=>({type:"removed",text:e,lineNo:t+1})),...t.map((e,t)=>({type:"added",text:e,lineNo:t+1}))]}(e.split("\n"),t.split("\n"));if(!r.some(e=>"unchanged"!==e.type))return(0,n.jsx)("div",{style:{padding:"12px 16px",fontSize:12,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:"No changes"});let o=new Set(r.flatMap((e,t)=>"unchanged"!==e.type?[t]:[])),i=new Set;for(let e of o)for(let t=Math.max(0,e-3);t<=Math.min(r.length-1,e+3);t++)i.add(t);let l=[],s=0;for(;s<r.length;)if(i.has(s)){let e=[];for(;s<r.length&&i.has(s);)e.push(r[s]),s++;l.push({hidden:!1,lines:e})}else{let e=0;for(;s<r.length&&!i.has(s);)e++,s++;l.push({hidden:!0,count:e})}let a=[],d=1;for(let e of r)"removed"===e.type?a.push(0):a.push(d++);let c=0;return(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6},children:l.map((e,t)=>{if(e.hidden){let r=(0,n.jsxs)("div",{style:{padding:"2px 16px",color:"var(--text-dim)",background:"var(--bg-panel)",fontSize:11,borderTop:"1px solid var(--border)",borderBottom:"1px solid var(--border)"},children:["... ",e.count," unchanged lines ..."]},t);return c+=e.count,r}let r=e.lines.map((e,t)=>{let r=a[c+t],o="added"===e.type?"rgba(0,200,80,0.12)":"removed"===e.type?"rgba(240,60,60,0.14)":"transparent",i="added"===e.type?"+":"removed"===e.type?"-":" ",l="added"===e.type?"#4ade80":"removed"===e.type?"#f87171":"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:o,borderLeft:"added"===e.type?"3px solid #4ade80":"removed"===e.type?"3px solid #f87171":"3px solid transparent"},children:[(0,n.jsx)("span",{style:{minWidth:44,padding:"0 8px 0 16px",textAlign:"right",color:"var(--text-dim)",userSelect:"none",fontSize:11,lineHeight:1.6,borderRight:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:"removed"===e.type?e.lineNo:r||""}),(0,n.jsx)("span",{style:{minWidth:16,padding:"0 6px",color:l,userSelect:"none",flexShrink:0,fontWeight:600},children:i}),(0,n.jsx)("span",{style:{flex:1,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)",overflowX:"auto"},children:e.text||"\xa0"})]},t)});return c+=e.lines.length,(0,n.jsx)("div",{children:r},t)})})}function rc({filePath:e,cwd:t}){let[r,i]=(0,o.useState)(!1),[l,s]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(100),f=(0,o.useRef)(null),v=B(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{s(0),d(null),u(null),h(null),i(!1),g(100),f.current&&(f.current.close(),f.current=null);let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return f.current=r,r.addEventListener("connected",()=>i(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}s(e=>e+1)}),r.addEventListener("error",()=>i(!1)),r.onerror=()=>i(!1),()=>{r.close(),f.current=null}},[e]);let m=N(e),y=`/api/files/${m}?type=read${l?`&v=${l}`:""}`,b=null!=a?ra(a):null,j=e=>g(Math.max(10,Math.min(500,e)));return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},title:e,children:P(e,t)}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:[(0,n.jsx)("button",{onClick:()=>j(x-25),title:"Zoom out",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"-"}),(0,n.jsx)("select",{value:x,onChange:e=>j(Number(e.target.value)),title:"Image zoom",style:{height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)",fontSize:11,fontFamily:"var(--font-mono)",outline:"none",cursor:"pointer"},children:[25,50,75,100,125,150,200,300].map(e=>(0,n.jsxs)("option",{value:e,children:[e,"%"]},e))}),(0,n.jsx)("button",{onClick:()=>j(x+25),title:"Zoom in",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"+"})]}),(0,n.jsx)("span",{style:{flexShrink:0},children:v||"image"}),c&&(0,n.jsxs)("span",{children:[c.w," \xd7 ",c.h]}),b&&(0,n.jsx)("span",{children:b}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",WebkitOverflowScrolling:"touch",overscrollBehavior:"contain",backgroundImage:"linear-gradient(45deg, var(--bg) 25%, transparent 25%), linear-gradient(-45deg, var(--bg) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--bg) 75%), linear-gradient(-45deg, transparent 75%, var(--bg) 75%)",backgroundSize:"16px 16px",backgroundPosition:"0 0, 0 8px, 8px -8px, -8px 0px"},children:p?(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p}):(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",width:"max-content",height:"max-content",boxSizing:"border-box",display:"flex",alignItems:"flex-start",justifyContent:"flex-start",padding:16},children:(0,n.jsx)("img",{src:y,alt:e,onLoad:e=>{let t=e.currentTarget;u({w:t.naturalWidth,h:t.naturalHeight})},onError:()=>h("Failed to load image"),style:{width:c?Math.max(1,Math.round(c.w*x/100)):"auto",height:c?Math.max(1,Math.round(c.h*x/100)):"auto",maxWidth:"none",maxHeight:"none",objectFit:"contain",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})})})]})}function ru({filePath:e,cwd:t}){let[r,i]=(0,o.useState)(!1),[l,s]=(0,o.useState)(0),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),x=(0,o.useRef)(null),g=B(e).toLowerCase().split(".").pop()??"";(0,o.useEffect)(()=>{s(0),d(null),u(null),h(null),i(!1),x.current&&(x.current.close(),x.current=null);let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return x.current=r,r.addEventListener("connected",()=>i(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}u(null),h(null),s(e=>e+1)}),r.addEventListener("error",()=>i(!1)),r.onerror=()=>i(!1),()=>{r.close(),x.current=null}},[e]);let f=N(e),v=`/api/files/${f}?type=read${l?`&v=${l}`:""}`;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:P(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:g||"audio"}),null!=c&&(0,n.jsx)("span",{children:function(e){if(!Number.isFinite(e))return"";let t=Math.round(e),r=Math.floor(t/60);return`${r}:${String(t%60).padStart(2,"0")}`}(c)}),null!=a&&(0,n.jsx)("span",{children:ra(a)}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"var(--bg-panel)"},children:(0,n.jsxs)("div",{style:{width:"min(680px, 100%)"},children:[p&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,marginBottom:12,textAlign:"center"},children:p}),(0,n.jsx)("audio",{controls:!0,preload:"metadata",src:v,onLoadedMetadata:e=>u(e.currentTarget.duration),onError:()=>h("Failed to load audio"),style:{width:"100%"}},v)]})})]})}function rp({filePath:e,cwd:t,onOpenFile:r}){let o,i,l;return(o=B(e).toLowerCase().split(".").pop()??"",ro.has(o))?(0,n.jsx)(rc,{filePath:e,cwd:t}):(i=B(e).toLowerCase().split(".").pop()??"",ri.has(i))?(0,n.jsx)(ru,{filePath:e,cwd:t}):(l=B(e).toLowerCase().split(".").pop()??"",rl.has(l))?(0,n.jsx)(rh,{filePath:e,cwd:t}):(0,n.jsx)(rx,{filePath:e,cwd:t,onOpenFile:r})}function rh({filePath:e,cwd:t}){let r,[i,l]=(0,o.useState)(null),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),u=(0,o.useRef)(null),p=(0,o.useRef)(0),h="pdf"===(r=B(e).toLowerCase().split(".").pop()??"")?"pdf":"docx"===r||"doc"===r?"docx":"xlsx"===r||"xls"===r?"xlsx":"pptx"===r||"ppt"===r?"pptx":"other",x=B(e).toLowerCase().split(".").pop()??"",g=(0,o.useCallback)(async e=>{try{let t=N(e),r=p.current?`&v=${p.current}`:"",n=await fetch(`/api/files/${t}?type=read${r}`);if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));c(e.error??`HTTP ${n.status}`);return}let o=await n.arrayBuffer();l(o),c(null)}catch(e){c(String(e))}},[]);if((0,o.useEffect)(()=>{a(!0),c(null),l(null),p.current=0,u.current&&(u.current.close(),u.current=null),g(e).finally(()=>a(!1));let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return u.current=r,r.addEventListener("connected",()=>{}),r.addEventListener("change",()=>{p.current+=1,g(e)}),r.addEventListener("error",()=>{}),r.onerror=()=>{},()=>{r.close(),u.current=null}},[e,g]),s&&!i)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(d&&!i)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:d});if(!i)return null;let f=P(e,t);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:["pdf"===h&&(0,n.jsx)(tD,{arrayBuffer:i,fileName:f}),"docx"===h&&(0,n.jsx)(tF,{arrayBuffer:i,fileName:f}),"xlsx"===h&&(0,n.jsx)(tU,{arrayBuffer:i,fileName:f}),"pptx"===h&&(0,n.jsx)(t_,{arrayBuffer:i,fileName:f}),"other"===h&&(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:["Unsupported document format: .",x]})]})}function rx({filePath:e,cwd:t,onOpenFile:r}){let{isDark:i}=eu(),[l,s]=(0,o.useState)(null),[a,d]=(0,o.useState)(null),[c,u]=(0,o.useState)(!0),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[f,v]=(0,o.useState)(!1),[m,y]=(0,o.useState)("source"),[b,j]=(0,o.useState)(!1),[k,w]=(0,o.useState)(!1),[S,C]=(0,o.useState)(0),[T,z]=(0,o.useState)(!1),[L,I]=(0,o.useState)(""),[M,R]=(0,o.useState)(!1),[W,E]=(0,o.useState)(!1),[$,A]=(0,o.useState)(!1),[H,D]=(0,o.useState)(null),O=(0,o.useRef)(null),F=(0,o.useRef)(!1);F.current=T,(0,o.useRef)(null).current=l;let U=(0,o.useCallback)((e,t=!1)=>{let r=N(e);return fetch(`/api/files/${r}?type=read`).then(e=>e.json()).then(e=>e.error?(h(e.error),null):(t?(s(t=>(t&&d(t.content),e)),C(e=>e+1)):s(e),h(null),e)).catch(e=>(h(String(e)),null))},[]);(0,o.useEffect)(()=>{u(!0),h(null),s(null),d(null),v(!1),y("source"),j(!1),C(0),w(!1),O.current&&(O.current.close(),O.current=null),U(e).then(t=>{(t?.language==="markdown"||rs(e))&&v(!0)}).finally(()=>u(!1));let t=N(e),r=new EventSource(`/api/files/${t}?type=watch`);return O.current=r,r.addEventListener("connected",()=>{w(!0)}),r.addEventListener("change",()=>{F.current?E(!0):U(e,!0)}),r.addEventListener("error",()=>{w(!1)}),r.onerror=()=>{w(!1)},()=>{r.close(),O.current=null}},[e,U]);let _=(0,o.useCallback)(()=>{l&&(z(!0),I(l.content),D(l.mtime??null),A(!1),g(null),E(!1),v(!1),y("source"))},[l]),V=(0,o.useCallback)(async(t=!1)=>{let r=N(e);R(!0),A(!1),g(null);try{let n=await fetch(`/api/files/${r}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:L,...t||!H?{}:{baseMtime:H}})});if(409===n.status){let e=await n.json().catch(()=>({error:"File changed on disk since it was opened"}));throw A(!0),E(!0),Error(e.error??"File changed on disk since it was opened")}if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));throw Error(e.error??`HTTP ${n.status}`)}let o=await U(e,!0);D(o?.mtime??null),z(!1),E(!1),A(!1)}catch(e){g(e instanceof Error?e.message:String(e))}finally{R(!1)}},[e,L,H,U]),J=(0,o.useCallback)(()=>{z(!1),E(!1),A(!1),g(null),D(null)},[]),q=(0,o.useCallback)(async()=>{let t=await U(e,!0);t&&(I(t.content),D(t.mtime??null),E(!1),A(!1),g(null),h(null))},[U,e]);if(c)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(p)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p});if(!l)return null;let K="html"===l.language,Z="markdown"===l.language,Y=rs(e),G=null!==Y,X=l.content.split("\n"),Q=null!==a&&a!==l.content;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:P(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:l.language}),"source"===m&&(0,n.jsxs)("span",{children:[X.length," lines"]}),(0,n.jsx)("span",{children:ra(l.size)}),(0,n.jsxs)("span",{title:k?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:k?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:k?"#4ade80":"var(--border)",display:"inline-block",boxShadow:k?"0 0 4px #4ade80":"none"}}),k?"live":"static"]}),T?(0,n.jsxs)(n.Fragment,{children:[(W||$||x)&&(0,n.jsxs)("span",{title:"File changed on disk while editing",style:{padding:"2px 8px",fontSize:11,background:"rgba(234,179,8,0.1)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:5,display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,n.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),x??"External change",(W||$)&&(0,n.jsx)("button",{onClick:q,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:"pointer",background:"rgba(234,179,8,0.2)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:3,fontWeight:600},children:"Reload"}),$&&(0,n.jsx)("button",{onClick:()=>void V(!0),disabled:M,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:M?"not-allowed":"pointer",background:"rgba(239,68,68,0.12)",color:"#ef4444",border:"1px solid rgba(239,68,68,0.3)",borderRadius:3,fontWeight:600},children:"Overwrite"})]}),(0,n.jsx)("button",{onClick:()=>void V(),disabled:M,title:"Save file (Ctrl+S)",style:{padding:"2px 10px",fontSize:11,cursor:M?"not-allowed":"pointer",background:"var(--accent)",color:"#fff",border:"1px solid var(--accent)",borderRadius:5,fontWeight:600,opacity:M?.6:1},children:M?"Saving…":"Save"}),(0,n.jsx)("button",{onClick:J,title:"Cancel editing",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.1)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.3)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Cancel"})]}):(0,n.jsx)("button",{onClick:_,title:"Edit file",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="var(--accent)",e.currentTarget.style.color="#fff",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Edit"}),Q&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>y("source"),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:"source"===m?"var(--bg-selected)":"var(--bg-hover)",color:"source"===m?"var(--text)":"var(--text-muted)",fontWeight:"source"===m?600:400},children:"Source"}),(0,n.jsxs)("button",{onClick:()=>y("diff"),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:"diff"===m?"var(--bg-selected)":"var(--bg-hover)",color:"diff"===m?"var(--text)":"var(--text-muted)",fontWeight:"diff"===m?600:400},children:["Diff ",S>0&&(0,n.jsxs)("span",{style:{color:"#4ade80",marginLeft:2},children:["+",S]})]})]}),"source"===m&&!f&&(0,n.jsx)("button",{onClick:()=>j(e=>!e),title:b?"Disable word wrap":"Enable word wrap",style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:b?"var(--bg-selected)":"var(--bg-hover)",color:b?"var(--text)":"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:b?600:400},children:"wrap"}),K&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Code"}),(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"})]}),Z&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:T?"Edit":"Raw"})]}),G&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Table"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Raw"})]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg)"},children:T&&!(Z&&f)?(0,n.jsx)(re,{initialContent:L,language:l.language,isDark:i,onChange:I,onSave:()=>void V()}):T&&Z&&f?(0,n.jsx)(eq,{content:L,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):"diff"===m&&Q?(0,n.jsx)(rd,{oldContent:a,newContent:l.content,language:l.language}):K&&f?(0,n.jsx)("iframe",{srcDoc:l.content,sandbox:"allow-scripts",style:{width:"100%",height:"100%",border:"none",background:"var(--bg)"},title:"HTML preview"}):Z&&f?(0,n.jsx)(eq,{content:l.content,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):G&&f&&Y?(0,n.jsx)(rn,{content:l.content,delimiter:Y,fileName:B(e)}):(0,n.jsx)(eB.A,{language:"text"===l.language||"csv"===l.language||"tsv"===l.language?"plaintext":l.language,style:eO(i),showLineNumbers:!0,lineNumberStyle:{color:"var(--text-dim)",fontStyle:"normal",minWidth:"3em",paddingRight:"1em"},customStyle:{margin:0,padding:"12px 0",background:"var(--bg)",fontSize:13,lineHeight:1.6,fontFamily:"var(--font-mono)",minHeight:"100%"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},wrapLongLines:b,children:l.content})})]})}let rg={__soul__:{apiPath:"/api/soul",title:"soul.md"},__harness__:{apiPath:"/api/harness",title:"harness.md"}};function rf({filePath:e}){let t=rg[e],{isDark:r}=eu(),[i,l]=(0,o.useState)(""),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(!1),[h,x]=(0,o.useState)(!1);(0,o.useEffect)(()=>{t&&(a(!0),fetch(t.apiPath).then(e=>e.json()).then(e=>l(e.content??"")).catch(e=>c(String(e))).finally(()=>a(!1)))},[t]);let g=(0,o.useCallback)(async()=>{if(t){p(!0);try{await fetch(t.apiPath,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:i})}),x(!0),setTimeout(()=>x(!1),2e3)}catch(e){c(String(e))}finally{p(!1)}}},[t,i]);return t?s?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading…"}):d?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:d}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontWeight:600,color:"var(--text)"},children:t.title}),(0,n.jsx)("span",{style:{marginLeft:"auto",fontSize:10,color:"var(--text-dim)"},children:"Global"}),h&&(0,n.jsx)("span",{style:{color:"#4ade80",fontWeight:600,animation:"saved-pop 0.3s ease"},children:"✓ Saved"}),(0,n.jsx)("button",{onClick:g,disabled:u,title:"Save (Ctrl+S)",style:{padding:"2px 10px",fontSize:11,cursor:u?"not-allowed":"pointer",background:"var(--accent)",color:"#fff",border:"1px solid var(--accent)",borderRadius:5,fontWeight:600,opacity:u?.6:1},children:u?"Saving…":"Save"})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(re,{initialContent:i,language:"markdown",isDark:r,onChange:l,onSave:g})})]}):null}function rv(e){return"verified"===e?"#16a34a":"outdated"===e?"#ef4444":"needs_review"===e?"rgba(234,179,8,0.95)":"var(--text-dim)"}function rm({sessionId:e,cwd:t,refreshKey:r=0,onOpenFile:i}){let[l,s]=(0,o.useState)(null),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(!1),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)("preview");(0,o.useEffect)(()=>{if(!e){s(null),h(null);return}let t=!1;return d(!0),h(null),fetch(`/api/reports/${encodeURIComponent(e)}`).then(e=>e.ok?e.json():e.json().then(t=>Promise.reject(Error(t.error??`HTTP ${e.status}`)))).then(e=>{t||s(e.report)}).catch(e=>{t||h(e instanceof Error?e.message:String(e))}).finally(()=>{t||d(!1)}),()=>{t=!0}},[e,r]);let f=(0,o.useCallback)(()=>{e&&(u(!0),h(null),fetch(`/api/reports/${encodeURIComponent(e)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"generate"})}).then(e=>e.ok?e.json():e.json().then(t=>Promise.reject(Error(t.error??`HTTP ${e.status}`)))).then(e=>{s(e.report),g("preview")}).catch(e=>h(e instanceof Error?e.message:String(e))).finally(()=>u(!1)))},[e]),v=(0,o.useMemo)(()=>{if(t)return`${t.replace(/\/+$/,"")}/analysis_report.md`},[t]),m=(0,o.useMemo)(()=>l?.sections.filter(e=>e.markdown.trim())??[],[l]);return e?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"8px 10px",borderBottom:"1px solid var(--border)",background:"var(--bg)",flexShrink:0},children:[["preview","sections","changes","source"].map(e=>(0,n.jsx)("button",{type:"button",onClick:()=>g(e),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:7,background:x===e?"var(--bg-selected)":"var(--bg-panel)",color:x===e?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:11,textTransform:"capitalize"},children:e},e)),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",onClick:f,disabled:c,title:"Refresh analysis report from this session",style:{height:28,padding:"0 10px",border:"1px solid rgba(37,99,235,0.45)",borderRadius:7,background:"var(--bg-selected)",color:"var(--accent)",cursor:c?"default":"pointer",fontSize:11,fontWeight:600,opacity:c?.65:1},children:c?"Updating...":"Update"})]}),p&&(0,n.jsx)("div",{style:{padding:"8px 12px",color:"#ef4444",fontSize:12,borderBottom:"1px solid var(--border)",background:"rgba(239,68,68,0.08)"},children:p}),a?(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:12},children:"Loading report..."}):l?(0,n.jsxs)("div",{style:{flex:1,overflow:"auto"},children:["preview"===x&&(0,n.jsx)(eq,{content:l.markdown,className:"markdown-body markdown-file-preview",style:{padding:"22px 26px 40px",maxWidth:860,margin:"0 auto"},codeBlockVariant:"file",baseFilePath:v,onOpenLocalFile:i}),"sections"===x&&(0,n.jsx)("div",{style:{padding:12,display:"flex",flexDirection:"column",gap:10},children:m.map(e=>{var t;return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"9px 11px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",flex:1},children:e.title}),(0,n.jsx)("span",{style:{fontSize:10,color:rv(e.status),border:`1px solid ${rv(e.status)}`,borderRadius:999,padding:"2px 7px"},children:"needs_review"===(t=e.status)?"Needs review":t.slice(0,1).toUpperCase()+t.slice(1)})]}),(0,n.jsx)("div",{style:{padding:"9px 11px",color:"var(--text-muted)",fontSize:12,lineHeight:1.5},children:e.markdown.replace(/[#*_`>|-]/g," ").replace(/\s+/g," ").trim()||"No curated content yet."})]},e.id)})}),"changes"===x&&(0,n.jsx)("div",{style:{padding:14},children:0===l.changes.length?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12},children:"No report changes yet."}):l.changes.map(e=>(0,n.jsxs)("div",{style:{padding:"10px 0",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",marginBottom:4},children:e.title}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",marginBottom:6},children:new Date(e.timestamp).toLocaleString()}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:e.detail})]},e.id))}),"source"===x&&(0,n.jsx)("pre",{style:{margin:0,padding:18,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.55,color:"var(--text-muted)"},children:l.markdown})]}):(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No report available."})]}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",padding:24,color:"var(--text-dim)",fontSize:12,textAlign:"center"},children:"Select or start a session to build an analysis report."})}function ry(){document.body.style.cursor="",document.body.style.userSelect=""}function rb({side:e,onResize:t,onResizeStart:r,onResizeEnd:i,ariaLabel:l}){let s=(0,o.useRef)(null),a=(0,o.useRef)(!1),d=(0,o.useRef)(0),[c,u]=(0,o.useState)(!1),p=(0,o.useCallback)(e=>{if(!a.current)return;a.current=!1,u(!1);let t=s.current;t&&void 0!==e&&t.hasPointerCapture(e)&&t.releasePointerCapture(e),ry(),i?.()},[i]),h=(0,o.useCallback)(e=>{0===e.button&&e.isPrimary&&(e.preventDefault(),a.current=!0,d.current=e.clientX,u(!0),r?.(),e.currentTarget.setPointerCapture(e.pointerId),document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[r]),x=(0,o.useCallback)(e=>{if(!a.current)return;e.preventDefault();let r=e.clientX-d.current;d.current=e.clientX,t(r)},[t]),g=(0,o.useCallback)(e=>{e.preventDefault(),p(e.pointerId)},[p]),f=(0,o.useCallback)(e=>{p(e.pointerId)},[p]);return(0,o.useEffect)(()=>()=>{a.current&&(a.current=!1,ry(),i?.())},[i]),(0,n.jsx)("div",{ref:s,role:"separator","aria-label":l??"Resize panel","aria-orientation":"vertical",className:`resize-handle${c?" resize-handle-dragging":""}`,"data-side":e,onPointerDown:h,onPointerMove:x,onPointerUp:g,onPointerCancel:f,style:{alignSelf:"stretch",cursor:"col-resize",display:"flex",flexShrink:0,justifyContent:"center",marginLeft:-5,marginRight:-5,position:"relative",touchAction:"none",width:10,zIndex:250},children:(0,n.jsx)("div",{className:"resize-handle-line"})})}function rj({tabs:e,activeTabId:t,onSelectTab:r,onCloseTab:i}){let[l,s]=(0,o.useState)(null);return(0,n.jsx)("div",{style:{display:"flex",alignItems:"flex-end",background:"var(--bg-panel)",overflowX:"auto",flexShrink:0,height:36},children:e.map(e=>{let o=e.id===t,a=!1!==e.closable;return(0,n.jsxs)("div",{onClick:()=>r(e.id),style:{display:"flex",alignItems:"center",gap:6,height:36,paddingLeft:12,paddingRight:6,borderRight:"1px solid var(--border)",background:o?"var(--bg)":"var(--bg-panel)",cursor:"pointer",fontSize:12,color:o?"var(--text)":"var(--text-muted)",whiteSpace:"nowrap",maxWidth:180,minWidth:80,flexShrink:0,userSelect:"none",transition:"background 0.1s, color 0.1s"},children:[(0,n.jsx)("span",{style:{flexShrink:0,opacity:o?1:.7,display:"flex",alignItems:"center"},children:"report"===e.icon?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,n.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,n.jsx)("line",{x1:"8",y1:"13",x2:"16",y2:"13"}),(0,n.jsx)("line",{x1:"8",y1:"17",x2:"13",y2:"17"})]}):E(e.filePath??e.label,13)}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",flex:1,fontWeight:o?500:400},title:e.filePath??e.label,children:e.label}),a&&(0,n.jsx)("button",{onClick:t=>{t.stopPropagation(),i(e.id)},onMouseEnter:()=>s(e.id),onMouseLeave:()=>s(null),style:{display:"flex",alignItems:"center",justifyContent:"center",width:16,height:16,background:l===e.id?"var(--bg-hover)":"transparent",border:"none",borderRadius:3,color:l===e.id?"var(--text)":"var(--text-dim)",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.1s, color 0.1s"},title:"Close",children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"2",x2:"8",y2:"8"}),(0,n.jsx)("line",{x1:"8",y1:"2",x2:"2",y2:"8"})]})})]},e.id)})})}function rk(e){let t=e,r=0;for(;1===t.children.length;)t=t.children[0],r++;return{node:t,skipped:r}}function rw({node:e,activePathIds:t,depth:r,isLast:o,parentLines:i,onSelect:l}){let{node:s,skipped:a}=rk(e),d=t.has(s.entry.id),c=t.has(e.entry.id)||t.has(s.entry.id),u=function(e){if("message"===e.type&&"message"in e){let t=e.message,r=t.content,n="";if("string"==typeof r?n=r:Array.isArray(r)&&(n=r.filter(e=>"text"===e.type).map(e=>e.text).join(" ")),n.length>40&&(n=n.slice(0,40)+"…"),n)return n;if("assistant"===t.role)return"[assistant]"}return e.type}(s.entry),p="message"===s.entry.type&&"message"in s.entry?s.entry.message.role:null;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",height:24,cursor:"pointer"},onClick:()=>l(s.entry.id),children:[i.map((e,t)=>(0,n.jsx)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:e&&(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:0,width:1,background:"var(--border)"}})},t)),(0,n.jsxs)("div",{style:{width:16,flexShrink:0,position:"relative",height:"100%",alignSelf:"stretch"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:7,top:0,bottom:o?"50%":0,width:1,background:"var(--border)"}}),(0,n.jsx)("div",{style:{position:"absolute",left:7,top:"50%",width:9,height:1,background:"var(--border)"}})]}),(0,n.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",flexShrink:0,background:d?"var(--accent)":c?"var(--text-muted)":"var(--border)",border:d?"none":"1px solid var(--text-dim)",marginRight:6,transition:"background 0.12s"}}),p&&(0,n.jsx)("span",{style:{fontSize:9,fontFamily:"var(--font-mono)",color:"user"===p?"var(--accent)":"var(--text-dim)",background:"user"===p?"rgba(37,99,235,0.08)":"var(--bg-hover)",border:`1px solid ${"user"===p?"rgba(37,99,235,0.2)":"var(--border)"}`,borderRadius:3,padding:"0 4px",marginRight:5,flexShrink:0,lineHeight:"16px"},children:"user"===p?"U":"A"}),a>0&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginRight:5,flexShrink:0},children:["+",a]}),(0,n.jsx)("span",{style:{fontSize:11,color:d?"var(--text)":c?"var(--text-muted)":"var(--text-dim)",fontWeight:d?500:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:u})]}),s.children.map((e,a)=>(0,n.jsx)(rw,{node:e,activePathIds:t,depth:r+1,isLast:a===s.children.length-1,parentLines:[...i,!o],onSelect:l},e.entry.id))]})}function rS({tree:e,activeLeafId:t,onLeafChange:r,inline:i,containerRef:l,open:s,onToggle:a,hasSession:d}){let[c,u]=(0,o.useState)(!1),p=void 0!==s?s:c,h=(0,o.useRef)(null),[x,g]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!p||!i)return;let e=l?.current??h.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect();g({top:t.bottom,left:t.left,width:t.width})};t();let r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[p,i,l]);let f=(0,o.useMemo)(()=>t?new Set(function e(r,n){for(let o of r){let r=[...n,o.entry.id];if(o.entry.id===t)return r;let i=e(o.children,r);if(i)return i}return null}(e,[])??[]):new Set,[e,t]),v=(0,o.useCallback)(e=>{r(e)},[r]),m=d?!function e(t){for(let r of t)if(r.children.length>1||e(r.children))return!0;return!1}(e)?"This session has no branches":null:"No active session",y=e.length>0?rk(e[0]):null,b=y?.node??null,j=!m&&b&&b.children.length>1,k=(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:j?"var(--accent)":"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),w=(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"var(--text-dim)",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:2,transform:p?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})});return i?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"stretch"},children:[(0,n.jsxs)("button",{ref:h,className:"topbar-branches-button",onClick:()=>a?a():u(e=>!e),title:"Branches","aria-label":"Branches",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:p?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${p?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:p?"var(--text)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s, border-color 0.1s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=p?"var(--text)":"var(--text-muted)",e.currentTarget.style.background=p?"var(--bg-selected)":"var(--bg-panel)"},children:[(0,n.jsx)("span",{className:"topbar-branches-icon",children:k}),(0,n.jsx)("span",{className:"topbar-branches-label",children:"Branches"})]}),p&&x&&(0,n.jsx)("div",{style:{position:"fixed",top:x.top,left:x.left,width:x.width,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",zIndex:500},children:j&&b?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:b.children.map((e,t)=>(0,n.jsx)(rw,{node:e,activePathIds:f,depth:0,isLast:t===b.children.length-1,parentLines:[],onSelect:v},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:m})})]}):(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>u(e=>!e),style:{display:"flex",alignItems:"center",gap:6,width:"100%",padding:"5px 12px",background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",fontSize:11,textAlign:"left"},children:[k,(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:"Branches"}),w]}),p&&(0,n.jsx)("div",{style:{position:"absolute",top:"100%",left:0,right:0,background:"var(--bg)",borderBottom:"1px solid var(--border)",boxShadow:"0 4px 12px rgba(0,0,0,0.1)",zIndex:100},children:j&&b?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:b.children.map((e,t)=>(0,n.jsx)(rw,{node:e,activePathIds:f,depth:0,isLast:t===b.children.length-1,parentLines:[],onSelect:v},e.entry.id))}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:m??"This session has no branches"})})]})}function rC(e,t="0 0 24 24"){let r=({size:r=24,style:o})=>(0,n.jsx)("svg",{width:r,height:r,viewBox:t,fill:"none",style:o,children:e});return r.displayName="ProviderIcon",r}let rT=rC((0,n.jsx)("path",{d:"M17.5 3H6.5L3 21h4l1.2-6h7.6l1.2 6h4L17.5 3zm-2.3 9H8.8L12 5.5 15.2 12z",fill:"currentColor"})),rz=rC((0,n.jsx)("path",{d:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"})),rL=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 01-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),(0,n.jsx)("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),(0,n.jsx)("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),(0,n.jsx)("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]})),rI=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#4D6BFE"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"10",fontWeight:"bold",fontFamily:"sans-serif",children:"DS"})]})),rM=rC((0,n.jsx)("path",{d:"M4 4h16v16H4z",fill:"#F55036"}),"0 0 24 24"),rR=rC((0,n.jsx)("path",{d:"M4 4h5v5H4zm5.5 0h5v5h-5zM15 4h5v5h-5zM4 9.5h5v5H4zm5.5 5.5h5v5h-5zM15 9.5h5v5h-5z",fill:"#FA6F00"})),rW=rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),rE=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#00D4AA"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"MM"})]})),r$=rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#FF5722"}),"0 0 24 24"),rN=rC((0,n.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 5h2v3h-2V7zm0 4h2v2h-2v-2zm3 5H7v-2h7v2z",fill:"#FFD21E"})),rB=rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#E84026"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"CB"})]})),rP=rC((0,n.jsx)("path",{d:"M12 2l9 5v10l-9 5-9-5V7l9-5z",stroke:"currentColor",strokeWidth:"1.5",fill:"none"})),rA=rC((0,n.jsx)("path",{d:"M4 4l8 8 8-8M4 20l8-8 8 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),rH=rC((0,n.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 5l4 3-4 3V7z",fill:"#F38020"})),rD={anthropic:{Icon:rT,hasColor:!1},openai:{Icon:rz,hasColor:!1},"openai-codex":{Icon:rz,hasColor:!1},google:{Icon:rL,hasColor:!0},"google-vertex":{Icon:rL,hasColor:!0},deepseek:{Icon:rI,hasColor:!0},groq:{Icon:rM,hasColor:!1},mistral:{Icon:rR,hasColor:!0},moonshotai:{Icon:rW,hasColor:!1},"moonshotai-cn":{Icon:rW,hasColor:!1},moonshot:{Icon:rW,hasColor:!1},minimax:{Icon:rE,hasColor:!0},"minimax-cn":{Icon:rE,hasColor:!0},fireworks:{Icon:r$,hasColor:!0},huggingface:{Icon:rN,hasColor:!0},cerebras:{Icon:rB,hasColor:!0},openrouter:{Icon:rP,hasColor:!1},xai:{Icon:rA,hasColor:!1},"cloudflare-ai-gateway":{Icon:rH,hasColor:!0},"cloudflare-workers-ai":{Icon:rH,hasColor:!0},"vercel-ai-gateway":{Icon:rC((0,n.jsx)("path",{d:"M12 2L22 20H2L12 2z",fill:"currentColor"})),hasColor:!1},"github-copilot":{Icon:rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1},"amazon-bedrock":{Icon:rC((0,n.jsx)("path",{d:"M3 15h2l1-3h2l1 3h2V9H9v3L8 9H6l-1 3V9H3v6zm9 0h2v-2h2v-2h-2V9h-2v2h-2v2h2v2z",fill:"#FF9900"})),hasColor:!0},"azure-openai-responses":{Icon:rC((0,n.jsx)("path",{d:"M12 2L3 18h5l4-6 4 6h5L12 2z",fill:"#0078D4"})),hasColor:!0},"kimi-coding":{Icon:rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#6C5CE7"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"10",fontWeight:"bold",fontFamily:"sans-serif",children:"Ki"})]})),hasColor:!0},qwen:{Icon:rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#615CED"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"QW"})]})),hasColor:!0},zai:{Icon:rC((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"3",fill:"#3859FF"}),(0,n.jsx)("text",{x:"12",y:"16",textAnchor:"middle",fill:"white",fontSize:"9",fontWeight:"bold",fontFamily:"sans-serif",children:"ZP"})]})),hasColor:!0},cohere:{Icon:rC((0,n.jsx)("path",{d:"M4 8h16v2H4zm0 4h12v2H4zm0 4h8v2H4z",fill:"#3059B1"})),hasColor:!0},perplexity:{Icon:rC((0,n.jsx)("path",{d:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",stroke:"#1DB954",strokeWidth:"1.5",fill:"none",strokeLinejoin:"round"})),hasColor:!0},together:{Icon:rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#0F6CBD"}),"0 0 24 24"),hasColor:!0},grok:{Icon:rC((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1}},rO=["openai-completions","openai-responses","anthropic-messages","google-generative-ai"];function rF({label:e,children:t}){return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("label",{style:{fontSize:11,color:"var(--text-muted)",fontWeight:500},children:e}),t]})}let rU={padding:"6px 9px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",fontSize:12,outline:"none",width:"100%",boxSizing:"border-box"};function r_({value:e,onChange:t,placeholder:r,mono:o}){return(0,n.jsx)("input",{value:e,onChange:e=>t(e.target.value),placeholder:r,style:{...rU,fontFamily:o?"var(--font-mono)":"inherit"}})}function rV({value:e,onChange:t,placeholder:r,mono:i,onKeyDown:l,autoComplete:s="off",spellCheck:a=!1,style:d}){let[c,u]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{e||u(!1)},[e]),(0,n.jsxs)("div",{style:{position:"relative",width:"100%",...d},children:[(0,n.jsx)("input",{type:c?"text":"password",value:e,onChange:e=>t(e.target.value),onKeyDown:l,placeholder:r,style:{...rU,paddingRight:34,fontFamily:i?"var(--font-mono)":"inherit"},autoComplete:s,spellCheck:a}),(0,n.jsx)("button",{type:"button",onClick:()=>u(e=>!e),"aria-label":c?"Hide API key":"Show API key",title:c?"Hide API key":"Show API key",style:{position:"absolute",right:5,top:"50%",transform:"translateY(-50%)",width:24,height:24,padding:0,border:"none",background:"transparent",color:"var(--text-dim)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},children:c?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M17.94 17.94A10.94 10.94 0 0 1 12 20C7 20 2.73 16.89 1 12a18.45 18.45 0 0 1 5.06-6.94"}),(0,n.jsx)("path",{d:"M9.9 4.24A10.94 10.94 0 0 1 12 4c5 0 9.27 3.11 11 8a18.5 18.5 0 0 1-2.16 3.19"}),(0,n.jsx)("path",{d:"M14.12 14.12A3 3 0 0 1 9.88 9.88"}),(0,n.jsx)("path",{d:"M1 1l22 22"})]}):(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8S1 12 1 12Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]})}function rJ({value:e,onChange:t,placeholder:r}){return(0,n.jsx)("input",{type:"number",value:e,onChange:e=>t(e.target.value),placeholder:r,style:rU})}function rq({value:e,onChange:t,options:r,required:o}){return(0,n.jsxs)("select",{value:e,onChange:e=>t(e.target.value),style:{...rU,color:e?"var(--text)":"var(--text-dim)"},children:[!o&&(0,n.jsx)("option",{value:"",children:"— inherit / none —"}),r.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]})}function rK({label:e,checked:t,onChange:r}){return(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:6,cursor:"pointer",fontSize:12,color:"var(--text-muted)"},children:[(0,n.jsx)("input",{type:"checkbox",checked:t,onChange:e=>r(e.target.checked),style:{width:13,height:13,accentColor:"var(--accent)",cursor:"pointer"}}),e]})}function rZ({children:e}){return(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em",marginBottom:2},children:e})}function rY({name:e,provider:t,onChange:r,onRename:i,onDelete:l}){let[s,a]=(0,o.useState)(e);(0,o.useEffect)(()=>a(e),[e]);let d=(e,n)=>r({...t,[e]:n});return(0,o.useEffect)(()=>{t.api||r({...t,api:"openai-completions"})},[t.api]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"Provider"}),(0,n.jsx)("button",{onClick:l,style:{padding:"3px 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:"pointer",fontSize:11},children:"Delete"})]}),(0,n.jsxs)(rF,{label:"Provider name",children:[(0,n.jsx)(r_,{value:s,onChange:a,placeholder:"provider-name",mono:!0}),s!==e&&s.trim()&&(0,n.jsx)("button",{onClick:()=>i(s.trim()),style:{marginTop:4,padding:"3px 10px",background:"var(--accent)",border:"none",borderRadius:4,color:"#fff",cursor:"pointer",fontSize:11,alignSelf:"flex-start"},children:"Rename"})]}),(0,n.jsx)(rF,{label:"Base URL",children:(0,n.jsx)(r_,{value:t.baseUrl??"",onChange:e=>d("baseUrl",e||void 0),placeholder:"https://api.example.com/v1",mono:!0})}),(0,n.jsxs)(rF,{label:"API Key",children:[(0,n.jsx)(rV,{value:t.apiKey??"",onChange:e=>d("apiKey",e||void 0),placeholder:"ENV_VAR_NAME, !shell-command, or literal key",mono:!0}),(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:["Prefix with ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)"},children:"!"})," to run a shell command, or use an env var name"]})]}),(0,n.jsx)(rF,{label:"API",children:(0,n.jsx)(rq,{value:t.api??"openai-completions",onChange:e=>d("api",e),options:rO,required:!0})})]})}let rG=["off","minimal","low","medium","high","xhigh"],rX={off:"var(--text-dim)",minimal:"#6b7280",low:"#60a5fa",medium:"#a78bfa",high:"#f472b6",xhigh:"#fb923c"};function rQ({value:e,onChange:t}){let r=e??{},o=(e,n)=>{let o={...r};"omit"===n?delete o[e]:o[e]=n,t(Object.keys(o).length?o:void 0)};return(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:rG.map(e=>{let t=r[e],i=e in r?null===t?"null":"string":"omit",l="string"==typeof t?t:"",s=rX[e],a={padding:"4px 10px",fontSize:10,border:"none",cursor:"pointer",fontWeight:400,transition:"background 0.1s, color 0.1s",whiteSpace:"nowrap",background:"var(--bg-panel)",color:"var(--text-dim)"},d={background:"var(--accent)",color:"#fff",fontWeight:600};return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 4px",borderRadius:6,background:"transparent",border:"1px solid transparent"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5,width:68,flexShrink:0},children:[(0,n.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:s,flexShrink:0,opacity:"null"===i?.3:1}}),(0,n.jsx)("span",{style:{fontSize:11,fontFamily:"var(--font-mono)",color:"null"===i?"var(--text-dim)":"var(--text-muted)",textDecoration:"null"===i?"line-through":"none"},children:e})]}),(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,border:"1px solid var(--border)",overflow:"hidden",flexShrink:0},children:[(0,n.jsx)("button",{onClick:()=>o(e,"omit"),style:{...a,..."omit"===i?d:{}},children:"Default"}),(0,n.jsx)("button",{onClick:()=>o(e,null),style:{...a,borderLeft:"1px solid var(--border)",..."null"===i?{background:"#ef4444",color:"#fff",fontWeight:600}:{}},children:"Disabled"})]}),(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,border:`1px solid ${"string"===i?"var(--accent)":"var(--border)"}`,overflow:"hidden",transition:"border-color 0.1s"},children:[(0,n.jsx)("button",{onClick:()=>o(e,l||e),style:{...a,..."string"===i?d:{},borderRight:"1px solid var(--border)",flexShrink:0},children:"Custom"}),(0,n.jsx)("input",{value:l,onChange:t=>o(e,t.target.value),onFocus:()=>{"string"!==i&&o(e,l||e)},placeholder:e,maxLength:10,style:{width:"12ch",background:"string"===i?"var(--bg)":"var(--bg-panel)",border:"none",outline:"none",color:"string"===i?"var(--text)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,padding:"4px 7px",transition:"background 0.1s, color 0.1s"}})]})]},e)})})}let r0={thinkingFormat:"deepseek",requiresReasoningContentOnAssistantMessages:!0};function r1({providerName:e,provider:t,model:r,onChange:i,onDelete:l}){let[s,a]=(0,o.useState)({phase:"idle"}),d=(e,t)=>i({...r,[e]:t}),c=(()=>{if("idle"===s.phase)return null;if("testing"===s.phase)return"Testing model connection...";let e=[void 0!==s.latencyMs?`${s.latencyMs}ms`:null,void 0!==s.status?`HTTP ${s.status}`:null].filter(Boolean);return"success"===s.phase?["Connected",...e,s.responseText||null].filter(Boolean).join(" \xb7 "):["Failed",...e,s.message].filter(Boolean).join(" \xb7 ")})();(0,o.useEffect)(()=>{a({phase:"idle"})},[e,t.baseUrl,t.api,t.apiKey,r.id,r.api]);let u=(0,o.useCallback)(async()=>{if(r.id.trim()&&"testing"!==s.phase){a({phase:"testing"});try{let n=await fetch("/api/models-config/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerName:e,provider:t,model:r})}),o=await n.json();if(!n.ok||!o.ok)return void a({phase:"error",message:o.error??`HTTP ${n.status}`,latencyMs:o.latencyMs,status:o.status});a({phase:"success",latencyMs:o.latencyMs,status:o.status,responseText:o.responseText})}catch(e){a({phase:"error",message:e instanceof Error?e.message:String(e)})}}},[r,t,e,s.phase]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"Model"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&(0,n.jsx)("span",{title:c,style:{maxWidth:260,height:24,padding:"0 8px",border:`1px solid ${"error"===s.phase?"#fecaca":"success"===s.phase?"#bbf7d0":"var(--border)"}`,borderRadius:4,background:"error"===s.phase?"#fee2e2":"success"===s.phase?"#dcfce7":"#e5e7eb",color:"#111827",fontSize:11,display:"inline-flex",alignItems:"center",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",boxSizing:"border-box"},children:c}),(0,n.jsxs)("button",{onClick:u,disabled:!r.id.trim()||"testing"===s.phase,title:"Test model connection",style:{height:24,padding:"0 8px",background:"success"===s.phase?"#16a34a":"none",border:`1px solid ${"success"===s.phase?"#16a34a":"var(--border)"}`,borderRadius:4,color:"success"===s.phase?"#fff":r.id.trim()&&"testing"!==s.phase?"var(--text-muted)":"var(--text-dim)",cursor:r.id.trim()&&"testing"!==s.phase?"pointer":"not-allowed",fontSize:11,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box",gap:5},children:["success"===s.phase&&(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),"testing"===s.phase?"Testing…":"success"===s.phase?"OK":"Test"]}),(0,n.jsx)("button",{onClick:l,style:{height:24,padding:"0 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:"pointer",fontSize:11,boxSizing:"border-box"},children:"Remove"})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(rF,{label:"ID *",children:(0,n.jsx)(r_,{value:r.id,onChange:e=>d("id",e),placeholder:"model-id",mono:!0})}),(0,n.jsx)(rF,{label:"Name",children:(0,n.jsx)(r_,{value:r.name??"",onChange:e=>d("name",e||void 0),placeholder:"Display name"})})]}),(0,n.jsx)(rF,{label:"API override",children:(0,n.jsx)(rq,{value:r.api??"",onChange:e=>d("api",e||void 0),options:rO})}),(0,n.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,n.jsx)(rK,{label:"Reasoning / thinking",checked:r.reasoning??!1,onChange:e=>d("reasoning",e||void 0)}),(0,n.jsx)(rK,{label:"Image input",checked:r.input?.includes("image")??!1,onChange:e=>d("input",e?["text","image"]:void 0)})]}),r.reasoning&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(rK,{label:"DeepSeek thinking compat",checked:r.compat?.thinkingFormat==="deepseek",onChange:e=>i(function(e,t){if(t)return{...e,compat:{...e.compat??{},...r0}};if(!e.compat)return e;let r={...e.compat};return delete r.thinkingFormat,delete r.requiresReasoningContentOnAssistantMessages,{...e,compat:Object.keys(r).length?r:void 0}}(r,e))}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:8},children:[(0,n.jsx)(rZ,{children:"Thinking level map"}),r.thinkingLevelMap&&(0,n.jsx)("button",{onClick:()=>d("thinkingLevelMap",void 0),style:{fontSize:10,padding:"2px 7px",background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-dim)",cursor:"pointer"},children:"clear all"})]}),(0,n.jsx)(rQ,{value:r.thinkingLevelMap,onChange:e=>d("thinkingLevelMap",e)})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(rF,{label:"Context window (tokens)",children:(0,n.jsx)(rJ,{value:void 0!==r.contextWindow?String(r.contextWindow):"",onChange:e=>d("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,n.jsx)(rF,{label:"Max output tokens",children:(0,n.jsx)(rJ,{value:void 0!==r.maxTokens?String(r.maxTokens):"",onChange:e=>d("maxTokens",e?parseInt(e):void 0),placeholder:"16384"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)(rZ,{children:"Cost (per million tokens)"}),(0,n.jsx)("div",{style:{marginTop:8,display:"grid",gridTemplateColumns:"1fr 1fr 1fr 1fr",gap:8},children:["input","output","cacheRead","cacheWrite"].map(e=>(0,n.jsx)(rF,{label:e,children:(0,n.jsx)(rJ,{value:r.cost?.[e]!==void 0?String(r.cost[e]):"",onChange:t=>{let n;return n=parseFloat(t),void i({...r,cost:{...r.cost??{},[e]:isNaN(n)?void 0:n}})},placeholder:"0"})},e))})]})]})}function r2({provider:e,onRefresh:t}){let[r,i]=(0,o.useState)({phase:"idle"}),[l,s]=(0,o.useState)(""),a=(0,o.useRef)(null),d=(0,o.useRef)(null);(0,o.useEffect)(()=>{("auth"===r.phase||"prompt"===r.phase)&&setTimeout(()=>d.current?.focus(),50)},[r.phase]),(0,o.useEffect)(()=>{i({phase:"idle"}),s(""),a.current?.close(),a.current=null},[e.id]),(0,o.useEffect)(()=>()=>{a.current?.close()},[]);let c=(0,o.useCallback)(()=>{a.current?.close(),i({phase:"connecting"}),s("");let r=new EventSource(`/api/auth/login/${encodeURIComponent(e.id)}`);a.current=r,r.onmessage=e=>{let n=JSON.parse(e.data);"auth"===n.type?(i({phase:"auth",url:n.url,instructions:n.instructions??null,token:n.token}),window.open(n.url,"_blank","noopener,noreferrer")):"device_code"===n.type?(i({phase:"device_code",userCode:n.userCode,verificationUri:n.verificationUri,intervalSeconds:n.intervalSeconds??null,expiresInSeconds:n.expiresInSeconds??null}),window.open(n.verificationUri,"_blank","noopener,noreferrer")):"prompt_request"===n.type?i({phase:"prompt",message:n.message,placeholder:n.placeholder??null,token:n.token}):"select_request"===n.type?i({phase:"select",message:n.message,options:n.options??[],token:n.token}):"progress"===n.type?i({phase:"progress",message:n.message}):"success"===n.type?(r.close(),i({phase:"success"}),t()):"error"===n.type?(r.close(),i({phase:"error",message:n.message})):"cancelled"===n.type&&(r.close(),i({phase:"idle"}))},r.onerror=()=>{r.close(),i(e=>"success"===e.phase?e:{phase:"error",message:"Connection lost"})}},[e.id,t]),u=(0,o.useCallback)(async()=>{await fetch(`/api/auth/logout/${encodeURIComponent(e.id)}`,{method:"POST"}),i({phase:"idle"}),t()},[e.id,t]),p=(0,o.useCallback)(async(t,r)=>{if(r.trim()){i({phase:"progress",message:"Verifying…"});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,code:r.trim()})});if(!n.ok){let e=await n.json().catch(()=>({}));i({phase:"error",message:e.error??`Server error ${n.status}`});return}s("")}catch(e){i({phase:"error",message:e instanceof Error?e.message:"Network error"})}}},[e.id]),h=(0,o.useCallback)(async(t,r)=>{i({phase:"progress",message:"Continuing…"});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,code:r})});if(!n.ok){let e=await n.json().catch(()=>({}));i({phase:"error",message:e.error??`Server error ${n.status}`})}}catch(e){i({phase:"error",message:e instanceof Error?e.message:"Network error"})}},[e.id]),x="connecting"===r.phase||"progress"===r.phase||"auth"===r.phase||"device_code"===r.phase||"prompt"===r.phase||"select"===r.phase;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"Subscription"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.loggedIn?"#4ade80":"var(--border)",display:"inline-block"}}),(0,n.jsx)("span",{style:{fontSize:11,color:e.loggedIn?"#4ade80":"var(--text-dim)"},children:e.loggedIn?"connected":"not connected"})]})]}),(0,n.jsxs)("div",{style:{minHeight:48},children:["idle"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:e.loggedIn?"Already connected. You can re-login or disconnect.":`Connect your ${e.name} account.`}),"connecting"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)"},children:"Opening browser…"}),"select"===r.phase&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:r.message}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:r.options.map(e=>(0,n.jsx)("button",{onClick:()=>h(r.token,e.id),style:{padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left"},children:e.label},e.id))})]}),("auth"===r.phase||"prompt"===r.phase)&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:"auth"===r.phase?"Complete sign-in in the browser, then copy the redirect URL from the address bar and paste it below.":r.message}),"auth"===r.phase&&(0,n.jsxs)("p",{style:{margin:0,fontSize:11,color:"var(--text-dim)",lineHeight:1.5},children:["If the browser window did not open,"," ",(0,n.jsx)("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:"click here to open the login page"}),"."]}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("input",{ref:d,value:l,onChange:e=>s(e.target.value),onKeyDown:e=>{"Enter"===e.key&&p(r.token,l)},placeholder:"auth"===r.phase?"http://localhost:1455/auth/callback?code=…":r.placeholder??"Enter value…",style:{flex:1,padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",fontSize:12,outline:"none",fontFamily:"var(--font-mono)",boxSizing:"border-box"}}),(0,n.jsx)("button",{onClick:()=>p(r.token,l),disabled:!l.trim(),style:{padding:"6px 12px",background:l.trim()?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:5,color:l.trim()?"#fff":"var(--text-dim)",cursor:l.trim()?"pointer":"not-allowed",fontSize:12,fontWeight:600,flexShrink:0},children:"Submit"})]})]}),"device_code"===r.phase&&(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:"Open the verification page and enter this code:"}),(0,n.jsx)("div",{style:{padding:"8px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text)",fontSize:16,fontWeight:700,fontFamily:"var(--font-mono)",letterSpacing:0},children:r.userCode}),(0,n.jsxs)("p",{style:{margin:0,fontSize:11,color:"var(--text-dim)",lineHeight:1.5},children:[(0,n.jsx)("a",{href:r.verificationUri,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:r.verificationUri}),r.expiresInSeconds?` Expires in ${Math.ceil(r.expiresInSeconds/60)} minutes.`:""]})]}),"progress"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)"},children:r.message}),"success"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"#4ade80"},children:"Connected successfully."}),"error"===r.phase&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"#f87171"},children:r.message})]}),(0,n.jsx)("div",{style:{display:"flex",gap:8},children:x?(0,n.jsx)("button",{onClick:()=>{a.current?.close(),i({phase:"idle"})},style:{padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{onClick:c,style:{padding:"5px 14px",background:"var(--accent)",border:"none",borderRadius:5,color:"#fff",cursor:"pointer",fontSize:12,fontWeight:600},children:e.loggedIn?"Re-login":"Login"}),e.loggedIn&&(0,n.jsx)("button",{onClick:u,style:{padding:"5px 12px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:5,color:"#ef4444",cursor:"pointer",fontSize:12},children:"Disconnect"})]})})]})}function r4({provider:e,onRefresh:t}){let[r,i]=(0,o.useState)(""),[l,s]=(0,o.useState)(!1),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(!1);(0,o.useEffect)(()=>{i(""),u(null),h(!1)},[e.id]);let x=(0,o.useCallback)(async()=>{if(r.trim()){s(!0),u(null),h(!1);try{let n=await fetch(`/api/auth/api-key/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r.trim()})}),o=await n.json();!n.ok||o.error?u(o.error??`HTTP ${n.status}`):(i(""),h(!0),setTimeout(()=>h(!1),2e3),t())}catch(e){u(String(e))}finally{s(!1)}}},[r,e.id,t]),g=(0,o.useCallback)(async()=>{d(!0),u(null);try{let r=await fetch(`/api/auth/api-key/${encodeURIComponent(e.id)}`,{method:"DELETE"}),n=await r.json();!r.ok||n.error?u(n.error??`HTTP ${r.status}`):t()}catch(e){u(String(e))}finally{d(!1)}},[e.id,t]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(rZ,{children:"API Key"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.configured?"#4ade80":"var(--border)",display:"inline-block"}}),(0,n.jsx)("span",{style:{fontSize:11,color:e.configured?"#4ade80":"var(--text-dim)"},children:e.configured?"configured":"not configured"})]})]}),(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:e.configured?"API key is stored. Enter a new key below to replace it, or disconnect to remove it.":`Enter your ${e.displayName} API key to enable ${e.modelCount} model${1!==e.modelCount?"s":""}.`}),(0,n.jsx)(rF,{label:"API Key",children:(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(rV,{value:r,onChange:i,onKeyDown:e=>{"Enter"===e.key&&r.trim()&&x()},placeholder:e.configured?"Enter new key to replace…":"sk-…",style:{flex:1},autoComplete:"off",spellCheck:!1,mono:!0}),(0,n.jsxs)("button",{onClick:x,disabled:l||!r.trim()||p,style:{padding:"6px 12px",background:p?"#16a34a":r.trim()?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:5,color:r.trim()||p?"#fff":"var(--text-dim)",cursor:l||!r.trim()||p?"not-allowed":"pointer",fontSize:12,fontWeight:600,flexShrink:0,display:"flex",alignItems:"center",gap:5},children:[p&&(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),p?"Saved":l?"Saving…":"Save"]})]})}),c&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"#f87171"},children:c}),e.configured&&(0,n.jsx)("button",{onClick:g,disabled:a,style:{alignSelf:"flex-start",padding:"5px 12px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:5,color:"#ef4444",cursor:a?"not-allowed":"pointer",fontSize:12},children:a?"Removing…":"Disconnect"})]})}function r5({id:e,size:t}){let r=rD[e];return r?r.hasColor?(0,n.jsx)(r.Icon,{size:t}):(0,n.jsx)(r.Icon,{size:t,style:{color:"var(--text-muted)"}}):null}function r3({oauthProviders:e,apiKeyProviders:t,onSelectOAuth:r,onSelectApiKey:i,onAddCustom:l,onDiscover:s,onClose:a}){let[d,c]=(0,o.useState)(""),u=(0,o.useRef)(null);(0,o.useEffect)(()=>{setTimeout(()=>u.current?.focus(),30)},[]);let p=d.trim().toLowerCase(),h=e.filter(e=>!e.loggedIn&&(!p||e.name.toLowerCase().includes(p))),x=t.filter(e=>!e.configured&&(!p||e.displayName.toLowerCase().includes(p)||e.id.toLowerCase().includes(p))),g=!p||"custom".includes(p)||"openai-compatible".includes(p)||"anthropic-compatible".includes(p),f=!p||"discover".includes(p)||"base url".includes(p)||"model import".includes(p),v=h.length+x.length+ +!!g+ +!!f,m={display:"flex",flexDirection:"row",alignItems:"center",gap:8,padding:"10px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:7,boxSizing:"border-box",cursor:"pointer",minWidth:0,textAlign:"left",transition:"border-color 0.12s, background 0.12s",width:"100%"};return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:1100,background:"rgba(0,0,0,0.4)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:e=>{e.target===e.currentTarget&&a()},children:(0,n.jsxs)("div",{style:{width:820,maxWidth:"calc(100vw - 32px)",maxHeight:"min(72vh, calc(100vh - 32px))",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,display:"flex",flexDirection:"column",boxShadow:"0 8px 32px rgba(0,0,0,0.22)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"10px 14px",borderBottom:"1px solid var(--border)",flexShrink:0,display:"flex",alignItems:"center",gap:8},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,n.jsx)("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),(0,n.jsx)("input",{ref:u,value:d,onChange:e=>c(e.target.value),onKeyDown:e=>{"Escape"===e.key&&a()},placeholder:"Search providers…",style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--text)",fontSize:13,boxSizing:"border-box"}})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:14},children:0===v?(0,n.jsx)("div",{style:{padding:"20px 0",fontSize:12,color:"var(--text-dim)",textAlign:"center"},children:"No providers match"}):(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(240px, 100%), 1fr))",gap:8},children:[g&&(0,n.jsx)("div",{style:{gridColumn:"1 / -1",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Custom"}),g&&(0,n.jsxs)("button",{onClick:()=>{l(),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"OpenAI / Anthropic compatible"}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"Custom endpoint format"})]}),(0,n.jsx)("span",{style:{width:26,height:26,borderRadius:5,background:"var(--bg-hover)",border:"1px dashed var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)"},children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})})]}),f&&(0,n.jsxs)("button",{onClick:()=>{s(),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"Discover models from Base URL"}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"OpenAI-compatible / Ollama catalog"})]}),(0,n.jsx)("span",{style:{width:26,height:26,borderRadius:5,background:"var(--bg-hover)",border:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-muted)"},children:[(0,n.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,n.jsx)("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})})]}),h.length>0&&(0,n.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*!!g,fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Subscriptions"}),h.map(e=>(0,n.jsxs)("button",{onClick:()=>{r(e.id),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"OAuth"})]}),(0,n.jsx)(r5,{id:e.id,size:28})]},e.id)),x.length>0&&(0,n.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*(h.length>0),fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"API Key"}),x.map(e=>(0,n.jsxs)("button",{onClick:()=>{i(e.id),a()},style:m,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,n.jsxs)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:[e.modelCount," models"]})]}),(0,n.jsx)(r5,{id:e.id,size:28})]},e.id))]})})]})})}function r6({existingProviders:e,onImport:t,onClose:r}){let[i,l]=(0,o.useState)(""),[s,a]=(0,o.useState)(""),[d,c]=(0,o.useState)("custom-provider"),[u,p]=(0,o.useState)(new Set),[h,x]=(0,o.useState)({phase:"idle"}),g=(0,o.useCallback)(async()=>{let e=i.trim();if(e&&"loading"!==h.phase){x({phase:"loading"});try{let t=await fetch("/api/models-config/discover",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:e,apiKey:s,provider:d,enrich:!1})}),r=await t.json();if(!t.ok||!r.ok||!r.models||!r.piModels||!r.endpoint)return void x({phase:"error",message:r.error??`HTTP ${t.status}`});x({phase:"success",endpoint:r.endpoint,models:r.models,piModels:r.piModels}),p(new Set(r.piModels.map(e=>e.id)))}catch(e){x({phase:"error",message:e instanceof Error?e.message:String(e)})}}},[s,i,d,h.phase]),f="success"===h.phase?h:null,v=u.size,m=!!(f&&d.trim()&&v>0);return(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:1100,background:"rgba(0,0,0,0.4)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:e=>{e.target===e.currentTarget&&r()},children:(0,n.jsxs)("div",{style:{width:880,maxWidth:"calc(100vw - 32px)",height:"min(78vh, calc(100vh - 32px))",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:10,display:"flex",flexDirection:"column",boxShadow:"0 8px 32px rgba(0,0,0,0.22)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",flexShrink:0},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text)"},children:"Discover models"}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",marginTop:2},children:"Fetch model catalog from a Base URL and import selected models."})]}),(0,n.jsx)("button",{onClick:r,style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1,padding:"2px 6px"},children:"\xd7"})]}),(0,n.jsxs)("div",{style:{padding:16,borderBottom:"1px solid var(--border)",display:"grid",gridTemplateColumns:"1.4fr 1fr 0.9fr auto",gap:10,alignItems:"end",flexShrink:0},children:[(0,n.jsx)(rF,{label:"Base URL",children:(0,n.jsx)(r_,{value:i,onChange:l,placeholder:"https://api.example.com",mono:!0})}),(0,n.jsx)(rF,{label:"API Key",children:(0,n.jsx)(rV,{value:s,onChange:a,placeholder:"optional for local providers",mono:!0})}),(0,n.jsx)(rF,{label:"Provider name",children:(0,n.jsx)(r_,{value:d,onChange:c,placeholder:"provider-name",mono:!0})}),(0,n.jsx)("button",{onClick:g,disabled:!i.trim()||"loading"===h.phase,style:{height:31,padding:"0 14px",background:i.trim()&&"loading"!==h.phase?"var(--accent)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:5,color:i.trim()&&"loading"!==h.phase?"#fff":"var(--text-dim)",cursor:i.trim()&&"loading"!==h.phase?"pointer":"not-allowed",fontSize:12,fontWeight:600,whiteSpace:"nowrap"},children:"loading"===h.phase?"Fetching...":"Fetch models"})]}),(0,n.jsxs)("div",{style:{flex:1,overflow:"hidden",display:"flex",flexDirection:"column"},children:["idle"===h.phase&&(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:13},children:"Enter a Base URL to discover available models."}),"loading"===h.phase&&(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Fetching model catalog..."}),"error"===h.phase&&(0,n.jsx)("div",{style:{padding:18,color:"#f87171",fontSize:12,lineHeight:1.6},children:h.message}),f&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 16px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[f.piModels.length," models from ",f.endpoint]}),(0,n.jsx)("button",{onClick:()=>{if(f){if(u.size===f.piModels.length)return void p(new Set);p(new Set(f.piModels.map(e=>e.id)))}},style:{padding:"2px 8px",fontSize:11,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer"},children:u.size===f.piModels.length?"Clear":"Select all"})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto"},children:f.piModels.map((e,t)=>{let r=f.models[t],o=u.has(e.id);return(0,n.jsxs)("label",{style:{display:"grid",gridTemplateColumns:"24px minmax(0, 1fr) 90px 90px 90px",gap:10,alignItems:"center",padding:"8px 16px",borderBottom:"1px solid rgba(127,127,127,0.12)",background:o?"var(--bg-subtle)":"transparent",cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:o,onChange:()=>{var t;return t=e.id,void p(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},style:{width:14,height:14,accentColor:"var(--accent)"}}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.id}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r?.ownedBy??"unknown"})]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:e.contextWindow}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:e.maxTokens}),(0,n.jsx)("span",{style:{fontSize:10,color:e.reasoning?"var(--accent)":"var(--text-dim)"},children:e.reasoning?"reasoning":""})]},e.id)})})]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10,padding:"10px 16px",borderTop:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:[v," selected"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("button",{onClick:r,style:{padding:"6px 14px",background:"none",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:13},children:"Cancel"}),(0,n.jsx)("button",{onClick:()=>{if(!f||!m)return;let n=i.trim().replace(/\/+$/,""),o=s.trim(),l=Object.entries(e).find(([,e])=>(e.baseUrl??"").replace(/\/+$/,"")===n&&(e.apiKey??"")===o),a=l?.[0]??d.trim(),c=e[a],p=new Map((c?.models??[]).map(e=>[e.id,e])),h=0;for(let e of f.piModels)u.has(e.id)&&!p.has(e.id)&&(p.set(e.id,e),h+=1);t(a,{...c??{},baseUrl:n,api:c?.api??"openai-completions",...o?{apiKey:o}:{},models:Array.from(p.values())},h),r()},disabled:!m,style:{padding:"6px 16px",background:m?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:6,color:m?"#fff":"var(--text-dim)",cursor:m?"pointer":"not-allowed",fontSize:13,fontWeight:600},children:"Import selected"})]})]})]})})}function r8({onClose:e,embedded:t=!1}){let[r,i]=(0,o.useState)({providers:{}}),[l,s]=(0,o.useState)(!0),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(!1),[f,v]=(0,o.useState)(null),[m,y]=(0,o.useState)([]),[b,j]=(0,o.useState)([]),[k,w]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),T=(0,o.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>y(e.providers)).catch(()=>{})},[]),z=(0,o.useCallback)(()=>{fetch("/api/auth/all-providers").then(e=>e.json()).then(e=>j(e.providers)).catch(()=>{})},[]);(0,o.useEffect)(()=>{fetch("/api/models-config").then(e=>e.json()).then(e=>{let t=e.providers?e:{...e,providers:{}};i(t);let r=Object.keys(t.providers??{});r.length>0&&v({type:"provider",name:r[0]})}).catch(()=>i({providers:{}})).finally(()=>s(!1)),T(),z()},[T,z]);let L=(0,o.useCallback)(()=>{let e="new-provider",t=1;for(;r.providers?.[e];)e=`new-provider-${t++}`;i(t=>({...t,providers:{...t.providers??{},[e]:{api:"openai-completions"}}})),v({type:"provider",name:e})},[r.providers]),I=(0,o.useCallback)((e,t)=>{i(r=>({...r,providers:{...r.providers??{},[e]:t}}))},[]),M=(0,o.useCallback)((e,t)=>{i(r=>{let n=Object.entries(r.providers??{}),o=n.findIndex(([t])=>t===e);return -1===o?r:(n[o]=[t,n[o][1]],{...r,providers:Object.fromEntries(n)})}),v(r=>r?"provider"===r.type&&r.name===e?{type:"provider",name:t}:"model"===r.type&&r.providerName===e?{...r,providerName:t}:r:r)},[]),R=(0,o.useCallback)(e=>{i(t=>{let r={...t.providers??{}};return delete r[e],{...t,providers:r}}),i(e=>{let t=Object.keys(e.providers??{});return v(t.length>0?{type:"provider",name:t[0]}:null),e})},[]),W=(0,o.useCallback)(e=>{i(t=>{let r=t.providers?.[e]??{},n=[...r.models??[],{id:""}];return{...t,providers:{...t.providers??{},[e]:{...r,models:n}}}}),i(t=>{let r=(t.providers?.[e]?.models?.length??1)-1;return v({type:"model",providerName:e,index:r}),t})},[]),E=(0,o.useCallback)((e,t,r)=>{i(n=>{let o=n.providers?.[e]??{},i=[...o.models??[]];return i[t]=r,{...n,providers:{...n.providers??{},[e]:{...o,models:i}}}})},[]),$=(0,o.useCallback)((e,t)=>{i(r=>{let n=r.providers?.[e]??{},o=[...n.models??[]];return o.splice(t,1),{...r,providers:{...r.providers??{},[e]:{...n,models:o.length?o:void 0}}}}),v({type:"provider",name:e})},[]),N=(0,o.useCallback)((e,t,r)=>{i(r=>({...r,providers:{...r.providers??{},[e]:t}})),v({type:"provider",name:e}),g(!1),u(null),h(`${r} model${1===r?"":"s"} imported. Click Save to write models.json.`)},[]),B=(0,o.useCallback)(async()=>{d(!0),u(null),h(null),g(!1);try{let e=await fetch("/api/models-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),t=await e.json();!e.ok||t.error?u(t.error??`HTTP ${e.status}`):(g(!0),setTimeout(()=>g(!1),2e3))}catch(e){u(String(e))}finally{d(!1)}},[r]),P=Object.entries(r.providers??{}),A=m.filter(e=>e.loggedIn),H=b.filter(e=>e.configured),D=(()=>{if(!f)return null;if("oauth"===f.type){let e=m.find(e=>e.id===f.providerId);return e?(0,n.jsx)(r2,{provider:e,onRefresh:T},e.id):null}if("apikey"===f.type){let e=b.find(e=>e.id===f.providerId);return e?(0,n.jsx)(r4,{provider:e,onRefresh:z},e.id):null}if("provider"===f.type){let e=r.providers?.[f.name];return e?(0,n.jsx)(rY,{name:f.name,provider:e,onChange:e=>I(f.name,e),onRename:e=>M(f.name,e),onDelete:()=>R(f.name)},f.name):null}let e=r.providers?.[f.providerName],t=e?.models?.[f.index];return t?(0,n.jsx)(r1,{providerName:f.providerName,provider:e,model:t,onChange:e=>E(f.providerName,f.index,e),onDelete:()=>$(f.providerName,f.index)},`${f.providerName}-${f.index}`):null})();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:t?{height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"stretch"}:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:r=>{t||r.target!==r.currentTarget||e()},children:(0,n.jsxs)("div",{style:{width:t?"100%":860,height:t?"100%":"78vh",background:"var(--bg)",border:t?"none":"1px solid var(--border)",borderRadius:10*!t,display:"flex",flexDirection:"column",boxShadow:t?"none":"0 8px 32px rgba(0,0,0,0.18)",overflow:"hidden"},children:[!t&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 18px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,n.jsx)("span",{style:{fontSize:15,fontWeight:700,color:"var(--text)"},children:"Models"}),(0,n.jsx)("code",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:"~/.pi/agent/models.json"})]}),(0,n.jsx)("button",{onClick:e,style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1,padding:"2px 6px"},children:"\xd7"})]}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{width:210,borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,background:"var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"8px 6px"},children:[A.map(e=>{let t=f?.type==="oauth"&&f.providerId===e.id;return(0,n.jsxs)("div",{onClick:()=>v({type:"oauth",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:7,padding:"5px 8px",borderRadius:5,cursor:"pointer",background:t?"var(--bg-selected)":"none"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(r5,{id:e.id,size:16}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.id)}),H.map(e=>{let t=f?.type==="apikey"&&f.providerId===e.id;return(0,n.jsxs)("div",{onClick:()=>v({type:"apikey",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:7,padding:"5px 8px",borderRadius:5,cursor:"pointer",background:t?"var(--bg-selected)":"none"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(r5,{id:e.id,size:16}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName})]},e.id)}),(A.length>0||H.length>0)&&P.length>0&&(0,n.jsx)("div",{style:{margin:"4px 8px",borderTop:"1px solid var(--border)"}}),l?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:12,color:"var(--text-muted)"},children:"Loading…"}):P.map(([e,t])=>{let r=f?.type==="provider"&&f.name===e,o=t.models??[];return(0,n.jsxs)("div",{style:{marginBottom:2},children:[(0,n.jsxs)("div",{onClick:()=>v({type:"provider",name:e}),style:{display:"flex",alignItems:"center",gap:6,padding:"7px 8px",borderRadius:5,cursor:"pointer",background:r?"var(--bg-selected)":"none"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{r||(e.currentTarget.style.background="none")},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"}),(0,n.jsx)("rect",{x:"9",y:"9",width:"6",height:"6"}),(0,n.jsx)("line",{x1:"9",y1:"1",x2:"9",y2:"4"}),(0,n.jsx)("line",{x1:"15",y1:"1",x2:"15",y2:"4"}),(0,n.jsx)("line",{x1:"9",y1:"20",x2:"9",y2:"23"}),(0,n.jsx)("line",{x1:"15",y1:"20",x2:"15",y2:"23"}),(0,n.jsx)("line",{x1:"20",y1:"9",x2:"23",y2:"9"}),(0,n.jsx)("line",{x1:"20",y1:"14",x2:"23",y2:"14"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"4",y2:"9"}),(0,n.jsx)("line",{x1:"1",y1:"14",x2:"4",y2:"14"})]}),(0,n.jsx)("span",{style:{fontSize:12,fontWeight:r?600:400,color:"var(--text)",fontFamily:"var(--font-mono)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]}),o.map((t,r)=>{let o=f?.type==="model"&&f.providerName===e&&f.index===r;return(0,n.jsxs)("div",{onClick:()=>v({type:"model",providerName:e,index:r}),style:{display:"flex",alignItems:"center",gap:6,padding:"5px 8px 5px 26px",borderRadius:5,cursor:"pointer",background:o?"var(--bg-selected)":"none"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{o||(e.currentTarget.style.background="none")},children:[(0,n.jsx)("span",{style:{fontSize:11,fontFamily:"var(--font-mono)",color:t.id?"var(--text-muted)":"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.id||"new model"}),t.reasoning&&(0,n.jsx)("span",{style:{fontSize:9,padding:"1px 4px",background:"rgba(99,102,241,0.12)",color:"rgba(99,102,241,0.8)",borderRadius:3,flexShrink:0},children:"T"})]},r)}),(0,n.jsx)("div",{onClick:t=>{t.stopPropagation(),W(e)},style:{display:"flex",alignItems:"center",gap:4,padding:"4px 8px 4px 26px",borderRadius:5,cursor:"pointer",color:"var(--text-dim)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)",e.currentTarget.style.background="none"},children:(0,n.jsx)("span",{style:{fontSize:11},children:"+ model"})})]},e)})]}),(0,n.jsx)("div",{style:{borderTop:"1px solid var(--border)",padding:"8px 6px"},children:(0,n.jsx)("button",{onClick:()=>w(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,width:"100%",padding:"6px 0",background:"none",border:"1px dashed var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.color="var(--text-muted)"},children:"+ Add provider"})})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:l?null:D??(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:13},children:"Select a provider or model"})})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:10,padding:"10px 18px",borderTop:"1px solid var(--border)",flexShrink:0},children:[c?(0,n.jsx)("span",{style:{fontSize:12,color:"#f87171",flex:1},children:c}):p?(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",flex:1},children:p}):null,(0,n.jsx)("button",{onClick:e,style:{padding:"6px 14px",background:"none",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:13},children:"Cancel"}),(0,n.jsxs)("button",{onClick:B,disabled:a||x,style:{position:"relative",padding:"6px 16px",minWidth:92,background:x?"#16a34a":a?"var(--bg-panel)":"var(--accent)",border:"none",borderRadius:6,color:x?"#fff":a?"var(--text-muted)":"#fff",cursor:a||x?"default":"pointer",fontSize:13,fontWeight:600,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,transition:"background-color 0.2s ease, color 0.2s ease",animation:x?"saved-pop 0.45s ease":void 0},children:[x&&(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:18,animation:"saved-check-draw 0.35s ease forwards",flexShrink:0},children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),(0,n.jsx)("span",{children:x?"Saved":a?"Saving…":"Save"})]})]})]})}),k&&(0,n.jsx)(r3,{oauthProviders:m,apiKeyProviders:b,onSelectOAuth:e=>v({type:"oauth",providerId:e}),onSelectApiKey:e=>v({type:"apikey",providerId:e}),onAddCustom:L,onDiscover:()=>C(!0),onClose:()=>w(!1)}),S&&(0,n.jsx)(r6,{existingProviders:r.providers??{},onImport:N,onClose:()=>C(!1)})]})}function r7(e){return e.replace(/^\/(?:Users|home)\/[^/]+/,"~")}function r9(e){let t=e.sourceInfo?.source,r=e.sourceInfo?.scope;return"user"===r||"user"===t?"global":"project"===r||"project"===t?"project":"path"}function ne({enabled:e,loading:t,onToggle:r}){return(0,n.jsx)("button",{onClick:r,disabled:t,title:e?"Visible in model prompt — click to disable":"Hidden from model prompt — click to enable",style:{flexShrink:0,width:40,height:22,borderRadius:11,border:"none",padding:0,cursor:t?"wait":"pointer",background:e?"var(--accent)":"var(--border)",position:"relative",transition:"background 0.18s",outline:"none"},children:(0,n.jsx)("span",{style:{position:"absolute",top:3,left:e?21:3,width:16,height:16,borderRadius:"50%",background:"var(--bg)",boxShadow:"0 1px 4px rgba(0,0,0,0.22)",transition:"left 0.18s cubic-bezier(.4,0,.2,1)"}})})}function nt({skill:e,cwd:t,onToggle:r,toggling:o,saveError:i}){let l=r9(e),s=!e.disableModelInvocation;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:20},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7},children:[(0,n.jsx)("span",{style:{fontSize:10,padding:"1px 5px",borderRadius:3,flexShrink:0,background:"project"===l?"rgba(99,102,241,0.12)":"rgba(120,120,120,0.12)",color:"project"===l?"rgba(99,102,241,0.8)":"var(--text-dim)"},children:l}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:function(e){if("project"===l&&e.startsWith(t)){let r=e.slice(t.length).replace(/^[/\\]/,"");return`./${r}`}return r7(e)}(e.filePath)}),(0,n.jsx)(ne,{enabled:s,loading:o,onToggle:()=>r(e)}),i&&(0,n.jsx)("span",{style:{fontSize:12,color:"#f87171",flexShrink:0},children:i})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",fontWeight:500},children:"Name"}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:14,color:"var(--text)"},children:e.name})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",fontWeight:500},children:"Description"}),(0,n.jsx)("span",{style:{fontSize:14,color:"var(--text-muted)",lineHeight:1.6},children:e.description})]})]})}function nr({cwd:e,onInstalled:t}){let[r,i]=(0,o.useState)(""),[l,s]=(0,o.useState)([]),[a,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[f,v]=(0,o.useState)(new Set),[m,y]=(0,o.useState)("global"),b=(0,o.useRef)(null);(0,o.useEffect)(()=>{b.current?.focus()},[]);let j=(0,o.useCallback)(async e=>{if(e.trim()){d(!0),u(null),s([]);try{let t=await fetch("/api/skills/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:e.trim()})}),r=await t.json();if(r.error)return void u(r.error);s(r.results??[]),0===(r.results??[]).length&&u("No skills found")}catch(e){u(String(e))}finally{d(!1)}}},[]),k=(0,o.useCallback)(async r=>{h(r),g(null);try{let n=await fetch("/api/skills/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({package:r,scope:m,cwd:e})}),o=await n.json();if(!n.ok||o.error)return void g(o.error??`HTTP ${n.status}`);v(e=>new Set(e).add(r)),t()}catch(e){g(String(e))}finally{h(null)}},[t,m,e]),w="global"===m?"~/.pi/agent/skills/":`${r7(e)}/.pi/agent/skills/`;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12,marginBottom:20},children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:600,color:"var(--text)"},children:"Add Skill"}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsx)("input",{ref:b,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"===e.key&&j(r)},placeholder:"e.g. react, testing, deploy",style:{flex:1,padding:"7px 10px",fontSize:13,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:"var(--text)",outline:"none"}}),(0,n.jsx)("button",{onClick:()=>j(r),disabled:a||!r.trim(),style:{padding:"7px 16px",fontSize:13,borderRadius:6,border:"none",background:"var(--accent)",color:"#fff",cursor:a||!r.trim()?"not-allowed":"pointer",opacity:a||!r.trim()?.5:1,flexShrink:0},children:a?"Searching…":"Search"})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,n.jsx)("div",{style:{display:"flex",borderRadius:5,border:"1px solid var(--border)",overflow:"hidden",fontSize:12,flexShrink:0},children:["global","project"].map(e=>(0,n.jsx)("button",{onClick:()=>y(e),style:{padding:"3px 10px",border:"none",cursor:"pointer",background:m===e?"var(--bg-selected)":"none",color:m===e?"var(--text)":"var(--text-dim)",fontWeight:m===e?600:400,borderRight:"global"===e?"1px solid var(--border)":"none"},children:e},e))}),(0,n.jsxs)("span",{style:{fontSize:12,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["→ ",w]})]}),c&&(0,n.jsx)("div",{style:{fontSize:12,color:"#f87171"},children:c}),x&&(0,n.jsx)("div",{style:{fontSize:12,color:"#f87171",wordBreak:"break-word"},children:x})]}),l.length>0?(0,n.jsx)("div",{style:{flex:1,overflowY:"auto"},children:l.map(e=>{let t=f.has(e.package),r=p===e.package,o=e.package.indexOf("@"),i=o>-1?e.package.slice(0,o):e.package,l=o>-1?e.package.slice(o+1):null;return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,padding:"12px 0",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"var(--text)",marginBottom:3},children:l??i}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)"},children:i}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",fontWeight:500},children:e.installs}),e.url&&(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer",style:{fontSize:12,color:"var(--accent)",textDecoration:"none"},children:"skills.sh ↗"})]})]}),(0,n.jsx)("button",{onClick:()=>!t&&!r&&k(e.package),disabled:t||r||null!==p,style:{flexShrink:0,padding:"5px 14px",fontSize:12,fontWeight:500,borderRadius:5,border:"1px solid var(--border)",cursor:t||r||null!==p?"not-allowed":"pointer",background:t?"rgba(34,197,94,0.1)":"none",color:t?"#16a34a":r?"var(--accent)":"var(--text-muted)",transition:"color 0.12s"},children:t?"✓ Installed":r?"Installing…":"Install"})]},e.package)})}):!c&&!a&&(0,n.jsxs)("div",{style:{fontSize:13,color:"var(--text-dim)",lineHeight:1.8},children:["Search"," ",(0,n.jsx)("a",{href:"https://skills.sh",target:"_blank",rel:"noreferrer",style:{color:"var(--accent)",textDecoration:"none"},children:"skills.sh"})," ","to discover and install skills for your agent."]})]})}function nn({cwd:e,onClose:t,embedded:r=!1}){let[i,l]=(0,o.useState)([]),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(null),[h,x]=(0,o.useState)(new Set),[g,f]=(0,o.useState)(null),[v,m]=(0,o.useState)(!1),y=(0,o.useCallback)(()=>{a(!0),c(null),fetch(`/api/skills?cwd=${encodeURIComponent(e)}`).then(e=>e.json()).then(e=>{if(e.error)return void c(e.error);let t=e.skills??[];l(t),t.length>0&&!u&&p(t[0].filePath)}).catch(e=>c(String(e))).finally(()=>a(!1))},[e,u]);(0,o.useEffect)(()=>{y()},[e]);let b=(0,o.useCallback)(async e=>{let t=!e.disableModelInvocation;x(t=>new Set(t).add(e.filePath)),f(null);try{let r=await fetch("/api/skills",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:e.filePath,disableModelInvocation:t})}),n=await r.json();if(!r.ok||n.error)return void f(n.error??`HTTP ${r.status}`);l(r=>r.map(r=>r.filePath===e.filePath?{...r,disableModelInvocation:t}:r))}catch(e){f(String(e))}finally{x(t=>{let r=new Set(t);return r.delete(e.filePath),r})}},[]),j=i.find(e=>e.filePath===u)??null;return(0,n.jsx)("div",{style:r?{height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"stretch"}:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:e=>{r||e.target!==e.currentTarget||t()},children:(0,n.jsxs)("div",{style:{width:r?"100%":860,height:r?"100%":"78vh",background:"var(--bg)",border:r?"none":"1px solid var(--border)",borderRadius:10*!r,display:"flex",flexDirection:"column",boxShadow:r?"none":"0 8px 32px rgba(0,0,0,0.18)",overflow:"hidden"},children:[!r&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 18px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,n.jsx)("span",{style:{fontSize:15,fontWeight:700,color:"var(--text)"},children:"Skills"}),(0,n.jsx)("code",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)",maxWidth:320,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r7(e)})]}),(0,n.jsx)("button",{onClick:t,style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1,padding:"2px 6px"},children:"\xd7"})]}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{width:210,borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:"8px 6px"},children:s?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:12,color:"var(--text-muted)"},children:"Loading…"}):d?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:11,color:"#f87171"},children:d}):0===i.length?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:11,color:"var(--text-dim)"},children:"No skills found"}):(()=>{let e=[];for(let t of["project","global","path"]){let r=i.filter(e=>r9(e)===t);r.length>0&&e.push({label:t,skills:r})}return e.map(({label:e,skills:t})=>(0,n.jsxs)("div",{style:{marginBottom:6},children:[(0,n.jsx)("div",{style:{padding:"4px 8px 3px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em"},children:e}),t.map(e=>{let t=!v&&u===e.filePath,r=e.disableModelInvocation;return(0,n.jsxs)("div",{onClick:()=>{p(e.filePath),m(!1)},style:{display:"flex",alignItems:"center",gap:7,padding:"8px 8px",borderRadius:5,cursor:"pointer",background:t?"var(--bg-selected)":"none"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)("span",{style:{flexShrink:0,width:7,height:7,borderRadius:"50%",background:r?"var(--border)":"var(--accent)",boxShadow:r?"none":"0 0 4px var(--accent)",transition:"background 0.15s, box-shadow 0.15s"}}),(0,n.jsx)("span",{style:{fontSize:12,fontWeight:t?600:400,color:r?"var(--text-dim)":"var(--text)",fontFamily:"var(--font-mono)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.filePath)})]},e))})()}),(0,n.jsx)("div",{style:{padding:"8px 6px",borderTop:"1px solid var(--border)",flexShrink:0},children:(0,n.jsxs)("div",{onClick:()=>m(!0),style:{display:"flex",alignItems:"center",gap:6,padding:"7px 8px",borderRadius:5,cursor:"pointer",background:v?"var(--bg-selected)":"none",color:v?"var(--accent)":"var(--text-dim)",fontSize:12},onMouseEnter:e=>{v||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{v||(e.currentTarget.style.background="none")},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Add skill"]})})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:v?(0,n.jsx)(nr,{cwd:e,onInstalled:()=>{y()}}):s?null:j?(0,n.jsx)(nt,{skill:j,cwd:e,onToggle:b,toggling:h.has(j.filePath),saveError:g},j.filePath):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:13},children:"Select a skill"})})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",padding:"10px 18px",borderTop:"1px solid var(--border)",flexShrink:0},children:(0,n.jsx)("button",{onClick:t,style:{padding:"6px 14px",background:"none",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:13},children:"Close"})})]})})}let no=[{label:"30m",value:18e5},{label:"2h",value:72e5},{label:"6h",value:216e5},{label:"24h",value:864e5},{label:"48h",value:1728e5},{label:"Never",value:0}];function ni(e){return e?e.replace(/^\/(?:Users|home)\/[^/]+/,"~"):""}function nl(e){if(e<=0)return"never";let t=e/60/1e3;if(t<60)return`${Math.round(t)}m`;let r=t/60;return Number.isInteger(r)?`${r}h`:`${r.toFixed(1)}h`}function ns(e){return{id:"",language:e,displayName:"",command:"python"===e?"python3":"R",argsText:JSON.stringify("python"===e?["-u"]:["--slave","--vanilla"]),envText:"{}"}}function na(e){return{id:e.id,language:e.language,displayName:e.displayName,command:e.command,argsText:JSON.stringify(e.args),envText:JSON.stringify(e.env,null,2)}}let nd={height:30,padding:"0 11px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,whiteSpace:"nowrap"},nc={width:"100%",minWidth:0,padding:"7px 9px",border:"1px solid var(--border)",borderRadius:5,background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none",fontFamily:"var(--font-mono)"};function nu({label:e,children:t}){return(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:5,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",fontWeight:500},children:e}),t]})}function np({cwd:e}){let[t,r]=(0,o.useState)("python"),[i,l]=(0,o.useState)(null),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(null),[h,x]=(0,o.useState)(null),[g,f]=(0,o.useState)([]),[v,m]=(0,o.useState)(null),[y,b]=(0,o.useState)("view"),[j,k]=(0,o.useState)(()=>ns("python")),[w,S]=(0,o.useState)(1728e5),[C,T]=(0,o.useState)(!1),z=(0,o.useCallback)(async()=>{a(!0),p(null);try{let r=e?`?cwd=${encodeURIComponent(e)}`:"",n=await fetch(`/api/plot-kernels${r}`),o=await n.json();if(!n.ok||o.error)throw Error(o.error??`HTTP ${n.status}`);l(o),f([]),x(null),m(e=>{if(e&&o.kernels.some(t=>t.id===e))return e;let r=o.kernels.find(e=>e.language===t&&e.isEffective);return r?.id??o.kernels.find(e=>e.language===t)?.id??null})}catch(e){p(e instanceof Error?e.message:String(e))}finally{a(!1)}},[e,t]);(0,o.useEffect)(()=>{z()},[z]),(0,o.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{e||"number"!=typeof t.settings?.plotIdleTimeoutMs||S(t.settings.plotIdleTimeoutMs)}).catch(()=>{}),()=>{e=!0}},[]);let L=(0,o.useMemo)(()=>(i?.kernels??[]).filter(e=>e.language===t),[t,i?.kernels]),I=L.find(e=>e.id===v)??null;(0,o.useEffect)(()=>{if("new"===y)return void k(ns(t));let e=I??L.find(e=>e.isEffective)??L[0]??null;e?(v!==e.id&&m(e.id),k(na(e)),b("view")):(m(null),k(ns(t)),b("new"))},[t,i?.kernels]);let M=(0,o.useCallback)(async(t,r)=>{c(r),p(null),x(null),f([]);try{let r=await fetch("/api/plot-kernels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,...t})}),n=await r.json();if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);return l(n),f(n.errors??[]),n}catch(e){return p(e instanceof Error?e.message:String(e)),null}finally{c(null)}},[e]),R=(0,o.useCallback)(async e=>{let t=await M({action:"scan",..."all"===e?{}:{language:e}},"scan");t&&x(`Scan added ${t.added?.length??0} kernel${(t.added?.length??0)===1?"":"s"}${t.skipped?`, skipped ${t.skipped} existing`:""}.`)},[M]),W=(0,o.useCallback)(async e=>{await M({action:"select",language:e.language,kernelId:e.id},"select")&&x(`Selected ${e.displayName} for this project.`)},[M]),E=(0,o.useCallback)(async e=>{await M({action:"setDefault",language:e.language,kernelId:e.id},"default")&&x(`Set ${e.displayName} as global default.`)},[M]),$=(0,o.useCallback)(async()=>{let e=j.id.trim();if(!e)return void p("Kernel ID is required");try{let t=function(e){let t=JSON.parse(e.argsText||"[]"),r=JSON.parse(e.envText||"{}");if(!Array.isArray(t))throw Error("Args must be a JSON array");if(!r||"object"!=typeof r||Array.isArray(r))throw Error("Env must be a JSON object");return{language:e.language,command:e.command.trim(),displayName:e.displayName.trim(),args:t.map(e=>String(e)),env:Object.fromEntries(Object.entries(r).map(([e,t])=>[e,String(t)]))}}(j);if(!t.command)throw Error("Command is required");if(!await M({action:"new"===y?"add":"edit",kernelId:e,kernel:t},"save"))return;m(e),b("view"),x("new"===y?"Kernel added.":"Kernel saved.")}catch(e){p(e instanceof Error?e.message:String(e))}},[j,y,M]),N=(0,o.useCallback)(async e=>{let r=await M({action:"delete",kernelId:e.id},"delete");if(!r)return;let n=r.kernels.find(e=>e.language===t&&e.isEffective)??r.kernels.find(e=>e.language===t)??null;m(n?.id??null),b(n?"view":"new"),x("Kernel deleted.")},[t,M]),B=()=>{b("new"),m(null),k(ns(t)),p(null),x(null)},P=(0,o.useCallback)(async e=>{S(e),T(!0),p(null);try{let t=await fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{plotIdleTimeoutMs:e}})}),r=await t.json();if(!t.ok||r.error)throw Error(r.error??`HTTP ${t.status}`);"number"==typeof r.settings?.plotIdleTimeoutMs&&(S(r.settings.plotIdleTimeoutMs),x(`Plot idle timeout set to ${nl(r.settings.plotIdleTimeoutMs)}.`))}catch(e){S(w),p(e instanceof Error?e.message:String(e))}finally{T(!1)}},[w]);return(0,n.jsxs)("div",{style:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--border)",flexWrap:"wrap"},children:[(0,n.jsx)("div",{style:{display:"flex",padding:2,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)"},children:["python","r"].map(e=>{let o=t===e;return(0,n.jsx)("button",{type:"button",onClick:()=>r(e),style:{height:26,padding:"0 12px",border:"none",borderRadius:5,background:o?"var(--bg)":"transparent",color:o?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:o?600:500},children:"python"===e?"Python":"R"},e)})}),(0,n.jsxs)("button",{type:"button",onClick:()=>void R(t),disabled:!!d,style:{...nd,opacity:d?.55:1},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 0 1-15.3 6.4"}),(0,n.jsx)("path",{d:"M3 12A9 9 0 0 1 18.3 5.6"}),(0,n.jsx)("path",{d:"M18 2v4h4"}),(0,n.jsx)("path",{d:"M6 22v-4H2"})]}),"scan"===d?"Scanning...":`Scan ${"python"===t?"Python":"R"}`]}),(0,n.jsx)("button",{type:"button",onClick:()=>void R("all"),disabled:!!d,style:{...nd,opacity:d?.55:1},children:"Scan all"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginLeft:"auto"},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"Idle"}),(0,n.jsx)("div",{style:{display:"flex",padding:2,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)"},children:no.map(e=>{let t=w===e.value;return(0,n.jsx)("button",{type:"button",onClick:()=>{t||P(e.value)},disabled:C,title:`Close inactive plot kernels after ${nl(e.value)}`,style:{height:24,padding:"0 8px",border:"none",borderRadius:5,background:t?"var(--bg)":"transparent",color:t?"var(--accent)":"var(--text-muted)",cursor:C?"default":"pointer",fontSize:11,fontWeight:t?700:500,opacity:C?.65:1},children:e.label},e.label)})})]}),(0,n.jsxs)("button",{type:"button",onClick:B,style:{...nd,marginLeft:"auto",color:"var(--accent)"},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Add kernel"]})]}),(u||h||g.length>0)&&(0,n.jsxs)("div",{style:{flexShrink:0,padding:"8px 16px",borderBottom:"1px solid var(--border)",fontSize:12,lineHeight:1.5},children:[u&&(0,n.jsx)("div",{style:{color:"#f87171"},children:u}),h&&(0,n.jsx)("div",{style:{color:"var(--text-muted)"},children:h}),g.map(e=>(0,n.jsx)("div",{style:{color:"rgba(234,179,8,0.95)"},children:e},e))]}),(0,n.jsxs)("div",{style:{flex:1,minHeight:0,display:"flex",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{width:290,flexShrink:0,borderRight:"1px solid var(--border)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",minHeight:0},children:[(0,n.jsxs)("div",{style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",lineHeight:1.5},children:[(0,n.jsxs)("div",{children:["Global: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:ni(i?.paths.global??"")})]}),e&&(0,n.jsxs)("div",{children:["Project: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:ni(i?.paths.project??"")})]}),!e&&(0,n.jsx)("div",{children:"Project selection requires an active cwd."})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflowY:"auto",padding:"8px 6px"},children:s?(0,n.jsx)("div",{style:{padding:"10px 8px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}):0===L.length?(0,n.jsx)("div",{style:{padding:"10px 8px",color:"var(--text-dim)",fontSize:12},children:"No kernels found"}):L.map(e=>{let t=v===e.id&&"new"!==y;return(0,n.jsxs)("button",{type:"button",onClick:()=>{m(e.id),b("view"),k(na(e)),p(null),x(null)},style:{width:"100%",display:"flex",alignItems:"center",gap:8,padding:"8px 9px",border:"none",borderRadius:6,background:t?"var(--bg-selected)":"transparent",color:"var(--text)",cursor:"pointer",textAlign:"left"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:e.isEffective?"var(--accent)":"var(--border)",flexShrink:0}}),(0,n.jsxs)("span",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("span",{style:{display:"block",color:"var(--text)",fontSize:12,fontWeight:t?600:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,n.jsx)("span",{style:{display:"block",color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.id})]}),(e.isProjectSelected||e.isDefault)&&(0,n.jsxs)("span",{style:{flexShrink:0,display:"flex",gap:3},children:[e.isProjectSelected&&(0,n.jsx)("span",{title:"Project selected",style:{fontSize:9,color:"var(--accent)",border:"1px solid rgba(37,99,235,0.35)",borderRadius:4,padding:"1px 4px"},children:"P"}),e.isDefault&&(0,n.jsx)("span",{title:"Global default",style:{fontSize:9,color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:4,padding:"1px 4px"},children:"D"})]})]},e.id)})}),(0,n.jsxs)("div",{style:{padding:"8px 10px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:11},children:["Last scan: ",function(e){if(!e)return"never";let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}(i?.scanCache?.lastScan)]})]}),(0,n.jsx)("div",{style:{flex:1,minWidth:0,minHeight:0,overflowY:"auto",padding:18},children:"view"===y&&I?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16,maxWidth:760},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("h3",{style:{margin:0,color:"var(--text)",fontSize:15,lineHeight:1.3},children:I.displayName}),I.isEffective&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",border:"1px solid rgba(37,99,235,0.35)",borderRadius:4,padding:"1px 5px"},children:"active"})]}),(0,n.jsx)("div",{style:{marginTop:5,fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)"},children:I.id})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsx)(nu,{label:"Command",children:(0,n.jsx)("input",{readOnly:!0,value:I.command,style:{...nc,color:"var(--text-muted)"}})}),(0,n.jsx)(nu,{label:"Args",children:(0,n.jsx)("input",{readOnly:!0,value:JSON.stringify(I.args),style:{...nc,color:"var(--text-muted)"}})})]}),(0,n.jsx)(nu,{label:"Environment",children:(0,n.jsx)("textarea",{readOnly:!0,value:JSON.stringify(I.env,null,2),rows:5,style:{...nc,resize:"vertical",color:"var(--text-muted)"}})}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>e&&void W(I),disabled:!e||"select"===d,style:{...nd,background:e?"var(--accent)":"var(--bg-panel)",color:e?"#fff":"var(--text-dim)",opacity:"select"===d?.6:1},children:"Use for project"}),(0,n.jsx)("button",{type:"button",onClick:()=>void E(I),disabled:"default"===d,style:{...nd,opacity:"default"===d?.6:1},children:"Set default"}),(0,n.jsx)("button",{type:"button",onClick:()=>{b("edit"),m(I.id),k(na(I)),p(null),x(null)},style:nd,children:"Edit"}),!I.id.startsWith("default-")&&(0,n.jsx)("button",{type:"button",onClick:()=>void N(I),disabled:"delete"===d,style:{...nd,color:"#f87171",opacity:"delete"===d?.6:1},children:"Delete"})]})]}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14,maxWidth:760},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("h3",{style:{margin:0,color:"var(--text)",fontSize:15},children:"new"===y?"Add Kernel":"Edit Kernel"}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"python"===t?"Python":"R"})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsx)(nu,{label:"Kernel ID",children:(0,n.jsx)("input",{value:j.id,readOnly:"edit"===y,onChange:e=>k(t=>({...t,id:e.target.value})),placeholder:"python"===t?"my-python":"my-r",style:{...nc,color:"edit"===y?"var(--text-muted)":"var(--text)"}})}),(0,n.jsx)(nu,{label:"Display name",children:(0,n.jsx)("input",{value:j.displayName,onChange:e=>k(t=>({...t,displayName:e.target.value})),placeholder:"python"===t?"Python 3 (Project)":"R (Project)",style:nc})})]}),(0,n.jsx)(nu,{label:"Command",children:(0,n.jsx)("input",{value:j.command,onChange:e=>k(t=>({...t,command:e.target.value})),placeholder:"/usr/bin/python3",style:nc})}),(0,n.jsx)(nu,{label:"Args JSON",children:(0,n.jsx)("input",{value:j.argsText,onChange:e=>k(t=>({...t,argsText:e.target.value})),style:nc})}),(0,n.jsx)(nu,{label:"Env JSON",children:(0,n.jsx)("textarea",{value:j.envText,onChange:e=>k(t=>({...t,envText:e.target.value})),rows:6,style:{...nc,resize:"vertical"}})}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void $(),disabled:"save"===d,style:{...nd,background:"var(--accent)",borderColor:"var(--accent)",color:"#fff",opacity:"save"===d?.6:1},children:"save"===d?"Saving...":"Save"}),(0,n.jsx)("button",{type:"button",onClick:()=>{let e=I??L.find(e=>e.isEffective)??L[0]??null;e?(m(e.id),k(na(e)),b("view")):B(),p(null)},style:nd,children:"Cancel"})]})]})})]})]})}function nh({activeCwd:e,onSelectProject:t,onProjectsChanged:r}){let[i,l]=(0,o.useState)([]),[s,a]=(0,o.useState)(!0),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(""),[h,x]=(0,o.useState)(!1),[g,f]=(0,o.useState)(null),[v,m]=(0,o.useState)(null),[y,b]=(0,o.useState)(""),j=(0,o.useRef)(null),k=(0,o.useCallback)(async()=>{try{a(!0);let e=await fetch("/api/projects"),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);l(t.projects??[]),c(null)}catch(e){c(e instanceof Error?e.message:String(e))}finally{a(!1)}},[]);(0,o.useEffect)(()=>{k()},[k]);let w=(0,o.useMemo)(()=>({projects:i.length,chats:i.reduce((e,t)=>e+t.chatCount,0)}),[i]),S=(0,o.useCallback)(async()=>{let e=u.trim();if(e){f("add"),c(null);try{let n=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e})}),o=await n.json();if(!n.ok||o.error)throw Error(o.error??`HTTP ${n.status}`);p(""),r?.(),t?.(e),k()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}}},[k,r,t,u]),C=(0,o.useCallback)(async e=>{f("add"),c(null);try{let n=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e})}),o=await n.json();if(!n.ok||o.error)throw Error(o.error??`HTTP ${n.status}`);p(""),x(!1),r?.(),t?.(e),k()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[k,r,t]),T=(0,o.useCallback)(async e=>{f(`rename:${e}`),c(null);try{let t=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,name:y})}),n=await t.json();if(!t.ok||n.error)throw Error(n.error??`HTTP ${t.status}`);m(null),b(""),await k(),r?.()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[k,r,y]),z=(0,o.useCallback)(async e=>{f(`remove:${e}`),c(null);try{let t=await fetch("/api/projects",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e})}),n=await t.json();if(!t.ok||n.error)throw Error(n.error??`HTTP ${t.status}`);await k(),r?.()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[k,r]),L=(0,o.useCallback)(e=>{m(e.cwd),b(e.name??e.displayName),window.setTimeout(()=>j.current?.select(),0)},[]);return(0,n.jsxs)("div",{style:{height:"100%",overflowY:"auto",padding:20},children:[(0,n.jsxs)("div",{style:{maxWidth:900,display:"flex",flexDirection:"column",gap:14},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:15,fontWeight:750,color:"var(--text)"},children:"Projects"}),(0,n.jsxs)("div",{style:{marginTop:4,fontSize:12,color:"var(--text-muted)"},children:[w.projects," projects / ",w.chats," chats"]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void k(),style:{height:30,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Refresh"})]}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:12},children:(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,n.jsx)("input",{value:u,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"===e.key&&S()},placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"button",onClick:()=>x(!0),style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Browse"}),(0,n.jsx)("button",{type:"button",disabled:!u.trim()||"add"===g,onClick:()=>void S(),style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:u.trim()?"var(--accent)":"var(--bg-hover)",color:u.trim()?"#fff":"var(--text-dim)",cursor:u.trim()?"pointer":"default",fontSize:12,fontWeight:650},children:"Add"})]})}),d&&(0,n.jsx)("div",{style:{padding:"9px 11px",border:"1px solid rgba(248,113,113,0.35)",borderRadius:7,color:"#f87171",background:"rgba(248,113,113,0.08)",fontSize:12},children:d}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,overflow:"hidden"},children:s?(0,n.jsx)("div",{style:{padding:16,color:"var(--text-muted)",fontSize:12},children:"Loading..."}):0===i.length?(0,n.jsx)("div",{style:{padding:16,color:"var(--text-muted)",fontSize:12},children:"No projects yet."}):i.map(r=>{var o;let i,l=r.cwd===e,s=v===r.cwd,a=r.lastAccessed??r.created??null;return(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",gap:12,alignItems:"center",padding:"12px 14px",borderBottom:"1px solid var(--border)",background:l?"var(--bg-selected)":"var(--bg)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[s?(0,n.jsx)("input",{ref:j,value:y,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"===e.key&&T(r.cwd),"Escape"===e.key&&m(null)},style:{width:"min(360px, 100%)",height:30,padding:"0 9px",border:"1px solid var(--accent)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontSize:13,outline:"none"}}):(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:l?750:650,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.displayName}),(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:r.cwd,children:(i=(o=r.cwd).split(/[\\/]/).filter(Boolean)).length<=3?o:`.../${i.slice(-3).join("/")}`}),(0,n.jsxs)("div",{style:{marginTop:5,color:"var(--text-muted)",fontSize:11},children:[r.chatCount," chats / last ",function(e){if(!e)return"Never";let t=new Date(e),r=new Date().getTime()-t.getTime(),n=Math.floor(r/6e4),o=Math.floor(r/36e5),i=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}(a),r.exists?"":" / path missing"]})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6},children:s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:g===`rename:${r.cwd}`,onClick:()=>void T(r.cwd),style:{height:28,padding:"0 9px",border:"none",borderRadius:6,background:"var(--accent)",color:"#fff",cursor:"pointer",fontSize:12},children:"Save"}),(0,n.jsx)("button",{type:"button",onClick:()=>m(null),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>t?.(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:l?"var(--accent)":"var(--bg-panel)",color:l?"#fff":"var(--text-muted)",cursor:"pointer",fontSize:12},children:l?"Current":"Switch"}),(0,n.jsx)("button",{type:"button",onClick:()=>L(r),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Rename"}),(0,n.jsx)("button",{type:"button",disabled:g===`remove:${r.cwd}`,onClick:()=>void z(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid rgba(248,113,113,0.35)",borderRadius:6,background:"transparent",color:"#f87171",cursor:"pointer",fontSize:12},children:"Remove"})]})})]},r.cwd)})})]}),(0,n.jsx)(Z,{open:h,initialPath:e,onClose:()=>x(!1),onSelect:e=>void C(e)})]})}function nx({checked:e,onChange:t}){return(0,n.jsx)("button",{type:"button",onClick:t,"aria-pressed":e,style:{width:44,height:24,borderRadius:999,border:"none",padding:0,cursor:"pointer",background:e?"var(--accent)":"var(--border)",position:"relative",transition:"background 0.18s",flexShrink:0},children:(0,n.jsx)("span",{style:{position:"absolute",top:3,left:e?23:3,width:18,height:18,borderRadius:"50%",background:"var(--bg)",boxShadow:"0 1px 4px rgba(0,0,0,0.22)",transition:"left 0.18s cubic-bezier(.4,0,.2,1)"}})})}function ng(){return(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.09a2 2 0 0 1-1-1.74v-.51a2 2 0 0 1 1-1.72l.15-.1a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})}function nf(e){return"projects"===e?(0,n.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M3 6.5A2.5 2.5 0 0 1 5.5 4H10l2 2.5h6.5A2.5 2.5 0 0 1 21 9v8.5A2.5 2.5 0 0 1 18.5 20h-13A2.5 2.5 0 0 1 3 17.5v-11Z"})}):"models"===e?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"}),(0,n.jsx)("rect",{x:"9",y:"9",width:"6",height:"6"}),(0,n.jsx)("line",{x1:"9",y1:"1",x2:"9",y2:"4"}),(0,n.jsx)("line",{x1:"15",y1:"1",x2:"15",y2:"4"}),(0,n.jsx)("line",{x1:"9",y1:"20",x2:"9",y2:"23"}),(0,n.jsx)("line",{x1:"15",y1:"20",x2:"15",y2:"23"})]}):"skills"===e?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),(0,n.jsx)("path",{d:"M2 17l10 5 10-5"}),(0,n.jsx)("path",{d:"M2 12l10 5 10-5"})]}):"generative-ui"===e?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("path",{d:"M16 17h5"}),(0,n.jsx)("path",{d:"M18.5 14.5v5"})]}):(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M3 3v18h18"}),(0,n.jsx)("path",{d:"m19 9-5 5-4-4-3 3"}),(0,n.jsx)("path",{d:"M14 9h5v5"})]})}function nv({cwd:e,generativeUI:t,initialTab:r="projects",onGenerativeUIToggle:i,onClose:l,onModelsChanged:s,onProjectSelect:a,onProjectsChanged:d}){let[c,u]=(0,o.useState)(r);(0,o.useEffect)(()=>{u(r)},[r]),(0,o.useEffect)(()=>{let e=e=>{"Escape"===e.key&&l()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[l]);let p=[{id:"projects",label:"Project",description:e?"Overview and paths":"Add or select a project",icon:nf("projects")},{id:"models",label:"Models",description:"~/.pi/agent/models.json",icon:nf("models")},{id:"skills",label:"Skills",description:e?"Project and global skills":"Select a project first",disabled:!e,icon:nf("skills")},{id:"generative-ui",label:"Generative UI",description:t?"Enabled":"Disabled",icon:nf("generative-ui")},{id:"plot-kernels",label:"Plot Kernels",description:e?"Python / R runtime":"Global kernels only",icon:nf("plot-kernels")}],h=p.find(e=>e.id===c)??p[0];return(0,n.jsx)("div",{className:"settings-dialog-backdrop",onClick:e=>{e.target===e.currentTarget&&l()},children:(0,n.jsxs)("div",{className:"settings-dialog-shell",children:[(0,n.jsxs)("div",{className:"settings-dialog-header",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:9,minWidth:0},children:[(0,n.jsx)("span",{style:{color:"var(--text-muted)",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)(ng,{})}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:15,fontWeight:700,color:"var(--text)",lineHeight:1.25},children:"Settings"}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h.label})]})]}),(0,n.jsx)("button",{type:"button",onClick:l,title:"Close settings","aria-label":"Close settings",style:{width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"x"})]}),(0,n.jsxs)("div",{className:"settings-dialog-body",children:[(0,n.jsx)("div",{className:"settings-dialog-tabs",children:p.map(e=>{let t=c===e.id;return(0,n.jsxs)("button",{type:"button",disabled:e.disabled,onClick:()=>u(e.id),className:"settings-dialog-tab",style:{background:t?"var(--bg-selected)":"transparent",color:t?"var(--text)":"var(--text-muted)",opacity:e.disabled?.45:1,cursor:e.disabled?"not-allowed":"pointer"},onMouseEnter:r=>{t||e.disabled||(r.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{flexShrink:0,color:t?"var(--accent)":"currentColor",display:"flex"},children:e.icon}),(0,n.jsxs)("span",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("span",{style:{display:"block",fontSize:12,fontWeight:t?700:600,lineHeight:1.25},children:e.label}),(0,n.jsx)("span",{style:{display:"block",marginTop:2,fontSize:10,color:"var(--text-dim)",lineHeight:1.25,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.description})]})]},e.id)})}),(0,n.jsxs)("div",{className:"settings-dialog-panel",children:["projects"===c&&(0,n.jsx)(nh,{activeCwd:e,onSelectProject:a,onProjectsChanged:d}),"models"===c&&(0,n.jsx)(r8,{embedded:!0,onClose:()=>{s?.(),l()}}),"skills"===c&&e&&(0,n.jsx)(nn,{cwd:e,embedded:!0,onClose:l}),"generative-ui"===c&&(0,n.jsx)("div",{style:{height:"100%",overflowY:"auto",padding:20},children:(0,n.jsxs)("div",{style:{maxWidth:720,display:"flex",flexDirection:"column",gap:18},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:18,padding:16,border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text)",lineHeight:1.35},children:"Generative UI"}),(0,n.jsx)("div",{style:{marginTop:5,fontSize:12,color:"var(--text-muted)",lineHeight:1.55},children:"Render structured widgets and safe visual code blocks directly in chat when the assistant produces UI content."})]}),(0,n.jsx)(nx,{checked:t,onChange:i})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsxs)("div",{style:{padding:14,border:"1px solid var(--border)",borderRadius:8},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",marginBottom:5},children:"When enabled"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.6},children:"The agent prompt favors compact visual artifacts for icons, forms, dashboards, and small interactive UI when useful."})]}),(0,n.jsxs)("div",{style:{padding:14,border:"1px solid var(--border)",borderRadius:8},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)",marginBottom:5},children:"Fallback rendering"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.6},children:"Assistant SVG and safe HTML code blocks can be previewed instead of appearing only as source text."})]})]})]})}),"plot-kernels"===c&&(0,n.jsx)(np,{cwd:e})]})]})]})})}function nm({initialWidth:e,minWidth:t,maxWidth:r,storageKey:n,direction:i="right"}){let[l,s]=(0,o.useState)(e),[a,d]=(0,o.useState)(!1),c=(0,o.useRef)(e),u=(0,o.useCallback)(e=>{let o=Math.max(t,Math.min(r,e));s(o),c.current=o,document.documentElement.style.setProperty(n,`${o}px`)},[t,r,n]);(0,o.useEffect)(()=>{try{let e=localStorage.getItem(n);if(e){let n=parseInt(e,10);if(!isNaN(n)&&n>=t&&n<=r)return void u(n)}}catch{}u(c.current)},[n,t,r,u]);let p=(0,o.useCallback)(()=>{d(!0)},[]),h=(0,o.useCallback)(e=>{let t="left"===i?-1:1;u(c.current+e*t)},[u,i]);return{beginResize:p,endResize:(0,o.useCallback)(()=>{d(!1);try{localStorage.setItem(n,String(c.current))}catch{}},[n]),isResizing:a,resizeBy:h,width:l,widthRef:c}}function ny(e){return!Number.isFinite(e)||e<=0?"0.0G":`${(e/1024/1024/1024).toFixed(1)}G`}function nb(){let e=(0,i.useRouter)(),t=(0,i.useSearchParams)(),{isDark:r,toggleTheme:l}=eu(),[s,a]=(0,o.useState)(null),[d,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(0),[h,x]=(0,o.useState)(0),[g,f]=(0,o.useState)(0),[v,m]=(0,o.useState)(0),[y,b]=(0,o.useState)(!1),[j,k]=(0,o.useState)("projects"),[w,S]=(0,o.useState)({generativeUI:!0,plotIdleTimeoutMs:1728e5}),[C,T]=(0,o.useState)(!0),z=nm({initialWidth:260,minWidth:180,maxWidth:500,storageKey:"--pi-sidebar-width"}),L=nm({initialWidth:500,minWidth:300,maxWidth:1200,storageKey:"--pi-right-panel-width",direction:"left"}),I=(0,o.useRef)(null),M=(0,o.useRef)(null),[R,W]=(0,o.useState)([]),[E,$]=(0,o.useState)(null),N=(0,o.useRef)(null),B=(0,o.useCallback)((e,t,r)=>{W(e),$(t),N.current=r},[]),P=(0,o.useCallback)(e=>{N.current?.(e)},[]),[A,H]=(0,o.useState)(null),D=(0,o.useRef)(null),[O,F]=(0,o.useState)(!1),[U,_]=(0,o.useState)(""),V=(0,o.useRef)(null),J=(0,o.useRef)(!1),q=(0,o.useCallback)(e=>{H(e)},[]);(0,o.useEffect)(()=>{F(!1)},[s?.id]);let K=(0,o.useCallback)(e=>e?e.name||e.firstMessage.slice(0,80)||e.id.slice(0,12):"",[]),Z=(0,o.useCallback)(()=>{s&&(J.current=!1,_(s.name||K(s)),F(!0),setTimeout(()=>V.current?.select(),0))},[K,s]),Y=(0,o.useCallback)(async()=>{if(J.current){J.current=!1,F(!1);return}if(!s)return void F(!1);let e=U.trim(),t=K(s);if(F(!1),e!==(s.name??"")&&(s.name||e!==t))try{(await fetch(`/api/sessions/${encodeURIComponent(s.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})).ok&&(a(t=>t&&t.id===s.id?{...t,name:e}:t),p(e=>e+1))}catch{}},[K,s,U]),G=(0,o.useCallback)(e=>{"Enter"===e.key?(e.preventDefault(),Y()):"Escape"===e.key&&(J.current=!0,F(!1))},[Y]);(0,o.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(t=>{e||S(e=>({generativeUI:"boolean"==typeof t?.settings?.generativeUI?t.settings.generativeUI:e.generativeUI,plotIdleTimeoutMs:"number"==typeof t?.settings?.plotIdleTimeoutMs?t.settings.plotIdleTimeoutMs:e.plotIdleTimeoutMs}))}).catch(()=>{}),()=>{e=!0}},[]);let X=(0,o.useCallback)(()=>{let e=!w.generativeUI;S(t=>({...t,generativeUI:e})),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{generativeUI:e}})}).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>{S(t=>({...t,..."boolean"==typeof e.settings?.generativeUI?{generativeUI:e.settings.generativeUI}:{},..."number"==typeof e.settings?.plotIdleTimeoutMs?{plotIdleTimeoutMs:e.settings.plotIdleTimeoutMs}:{}}))}).catch(()=>S(e=>({...e,generativeUI:!e.generativeUI})))},[w.generativeUI]),[Q,ee]=(0,o.useState)(null),et=(0,o.useCallback)(e=>{ee(e)},[]),[er,en]=(0,o.useState)(null),ei=(0,o.useCallback)(e=>{en(e)},[]),[el,es]=(0,o.useState)(null),[ea,ed]=(0,o.useState)(null),ec=(0,o.useCallback)(e=>{es(t=>t===e?null:e)},[]);(0,o.useEffect)(()=>{if(!el||!M.current)return;let e=()=>{let e=M.current.getBoundingClientRect();ed({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe(M.current),()=>t.disconnect()},[el]);let[ep,eh]=(0,o.useState)([]),[ex,eg]=(0,o.useState)("report"),[ef,ev]=(0,o.useState)(!1),[em,ey]=(0,o.useState)(0),eb=(0,o.useCallback)(e=>{I.current?.insertText("`"+e+"`")},[]),[ej]=(0,o.useState)(()=>t.get("session")),[ek,ew]=(0,o.useState)(null),[eS,eC]=(0,o.useState)(()=>!t.get("session")),eT=(0,o.useRef)(!1),ez=(0,o.useCallback)(t=>{ew(t),t&&!eT.current&&(a(e=>e&&e.cwd!==t?null:e),c(e=>e&&e!==t?null:e),x(e=>e+1),f(e=>e+1),W([]),$(null),H(null),es(null),e.replace("/",{scroll:!1}))},[e]),eL=(0,o.useCallback)(e=>{ez(e),b(!1),p(e=>e+1)},[ez]),eI=(0,o.useCallback)((t,r=!1)=>{c(null),ew(t.cwd),a(t),x(e=>e+1),H(null),eC(!0),r&&(eT.current=!0,setTimeout(()=>{eT.current=!1},0)),r||e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eM=(0,o.useCallback)((t,r)=>{a(null),c(r),ew(r),x(e=>e+1),W([]),$(null),H(null),es(null),e.replace("/",{scroll:!1})},[e]),eR=(0,o.useCallback)(t=>{c(null),ew(t.cwd),a(t),p(e=>e+1),e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eW=(0,o.useCallback)(()=>{p(e=>e+1),f(e=>e+1)},[]),eE=(0,o.useCallback)(t=>{p(e=>e+1),x(e=>e+1),c(null),a(e=>({...e??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:t})),e.replace(`?session=${encodeURIComponent(t)}`,{scroll:!1})},[e]),e$=(0,o.useCallback)(()=>{eC(!0)},[]),eN=(0,o.useCallback)(t=>{if(p(e=>e+1),s?.id===t){let t=s.cwd;a(null),c(t??null),x(e=>e+1),W([]),$(null),H(null),es(null),e.replace("/",{scroll:!1})}},[s,e]),eB=(0,o.useCallback)((e,t)=>{let r=`file:${e}`;eh(n=>n.find(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:e}]),eg(r),ev(!0)},[]),eP=(0,o.useCallback)(e=>{"report"!==e&&(eh(t=>t.filter(t=>t.id!==e)),eg(t=>{if(t!==e)return t;let r=ep.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:"report"}))},[ep]),eA=d??(null===s&&ek?ek:null),eH=null!==s||null!==eA,eD=eS&&!eH,eO=[{id:"report",label:"Report",closable:!1,icon:"report"},...ep],eF=ep.find(e=>e.id===ex)??null,eU=s?K(s):eA?"New chat":"No session",e_=s?.cwd??eA??ek??"",eV=e_?e_.replace(/\/+$/,"").split(/[\\/]/).filter(Boolean).pop()||e_:"",eJ=ek??s?.cwd??d??null,eq=(0,o.useCallback)((e="projects")=>{k(e),b(!0)},[]),[eK,eZ]=(0,o.useState)(null),[eY,eG]=(0,o.useState)(null),[eX,eQ]=(0,o.useState)(null),e0=`${s?.id??""}|${eJ??""}`,e1=eK?.totalBytes??0,e2=eK?.currentSessionBytes??0,e4=(0,o.useCallback)(async()=>{let e=new URLSearchParams;eJ&&e.set("cwd",eJ),s?.id&&e.set("sessionId",s.id);try{let t=await fetch(`/api/plot-kernels/status${e.toString()?`?${e}`:""}`),r=await t.json();if(!t.ok||!("totalBytes"in r)||!("kernels"in r))throw Error(r.error??`HTTP ${t.status}`);eZ(r),eG(null)}catch(e){eG(e instanceof Error?e.message:String(e))}},[s?.id,eJ]);(0,o.useEffect)(()=>{let e=!1,t=async()=>{await e4(),e||(r=window.setTimeout(t,"plot"===el?3e3:8e3))},r=window.setTimeout(t,0);return()=>{e=!0,window.clearTimeout(r)}},[el,e4,e0]);let e5=(0,o.useCallback)(async()=>{if(s?.id&&!eX){eQ("all"),eG(null);try{let e=await fetch("/api/plot-kernels/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s.id})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);window.setTimeout(()=>{e4()},600)}catch(e){eG(e instanceof Error?e.message:String(e))}finally{eQ(null)}}},[e4,eX,s?.id]),e3=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eo,{selectedSessionId:s?.id??null,onSelectSession:eI,onNewSession:eM,initialSessionId:ej,onInitialRestoreDone:e$,refreshKey:u,onSessionDeleted:eN,selectedCwd:s?.cwd??d??ek??null,onCwdChange:ez,onOpenFile:eB,explorerRefreshKey:g,onAtMention:eb}),(0,n.jsx)("div",{style:{padding:"8px",flexShrink:0},children:(0,n.jsx)("button",{type:"button",onClick:()=>eq("projects"),title:"Settings","aria-label":"Settings",style:{width:34,display:"flex",alignItems:"center",justifyContent:"center",height:34,padding:0,background:"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:"pointer",fontSize:12,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.09a2 2 0 0 1-1-1.74v-.51a2 2 0 0 1 1-1.72l.15-.1a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})})]});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",height:"100dvh",overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsx)("div",{className:"sidebar-overlay-backdrop",onClick:()=>T(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!C,pointerEvents:C?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{className:`sidebar-container${C?" sidebar-open":" sidebar-closed"}`,style:{background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200,width:z.width,minWidth:z.width,transition:C||z.isResizing?"none":void 0},children:e3}),C&&(0,n.jsx)(rb,{side:"right",ariaLabel:"Resize sidebar",onResizeStart:z.beginResize,onResize:z.resizeBy,onResizeEnd:z.endResize}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:M,className:"app-topbar",style:{display:"flex",alignItems:"center",gap:8,flexShrink:0,borderBottom:"1px solid var(--border)",height:48,padding:"0 8px",background:"var(--bg)"},children:[(0,n.jsx)("button",{className:"topbar-sidebar-toggle",onClick:()=>T(e=>!e),title:C?"Hide sidebar":"Show sidebar",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="var(--bg-panel)"},children:C?(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,n.jsx)("line",{x1:"9",y1:"3",x2:"9",y2:"21"})]}):(0,n.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),(0,n.jsx)("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),(0,n.jsx)("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})}),(0,n.jsxs)("div",{className:"topbar-title-area",style:{display:"flex",alignItems:"center",gap:7,minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{minWidth:0,display:"flex",alignItems:"center",gap:6},children:O&&s?(0,n.jsx)("input",{ref:V,value:U,onChange:e=>_(e.target.value),onKeyDown:G,onBlur:()=>void Y(),style:{width:"min(360px, 34vw)",height:28,boxSizing:"border-box",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",padding:"0 8px",fontSize:13,fontWeight:500,outline:"none"}}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"topbar-session-title",title:eU,style:{minWidth:0,maxWidth:"min(420px, 36vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:eH?"var(--text)":"var(--text-muted)",fontSize:14,fontWeight:600,lineHeight:1.2},children:eU}),s&&(0,n.jsx)("button",{type:"button",className:"topbar-rename-button",onClick:Z,title:"Rename session",style:{width:22,height:22,display:"flex",alignItems:"center",justifyContent:"center",padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer",flexShrink:0},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)",e.currentTarget.style.background="transparent"},children:(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 20h9"}),(0,n.jsx)("path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"})]})})]})}),eV&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"topbar-project-crumb",style:{color:"var(--text-dim)",fontSize:12,flexShrink:0},children:"/"}),(0,n.jsx)("span",{className:"topbar-project-crumb",title:e_||eV,style:{minWidth:0,maxWidth:"min(280px, 24vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:12,lineHeight:1.2},children:eV})]})]}),eH&&(0,n.jsxs)("div",{className:"topbar-chat-tools",style:{display:"flex",alignItems:"center",gap:6,height:28,flexShrink:0},children:[(0,n.jsx)("div",{className:"topbar-branches-control",style:{height:"100%",display:"flex",alignItems:"stretch"},children:(0,n.jsx)(rS,{tree:R,activeLeafId:E,onLeafChange:P,inline:!0,containerRef:M,open:"branches"===el,onToggle:()=>ec("branches"),hasSession:!!s})}),(0,n.jsxs)("button",{ref:D,className:"topbar-system-button",onClick:()=>ec("system"),title:"System prompt","aria-label":"System prompt",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"system"===el?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${"system"===el?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:"system"===el?"var(--text)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="system"===el?"var(--text)":"var(--text-muted)",e.currentTarget.style.background="system"===el?"var(--bg-selected)":"var(--bg-panel)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{color:A?"var(--accent)":"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,n.jsx)("polyline",{points:"14 2 14 8 20 8"}),(0,n.jsx)("line",{x1:"8",y1:"13",x2:"16",y2:"13"}),(0,n.jsx)("line",{x1:"8",y1:"17",x2:"13",y2:"17"})]}),(0,n.jsx)("span",{className:"topbar-system-label",children:"System"})]}),(0,n.jsxs)("button",{type:"button",className:"topbar-plot-button",onClick:()=>ec("plot"),title:`Plot kernels: ${ny(e1)}`,"aria-label":`Plot kernels: ${ny(e1)}`,style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"plot"===el?"var(--bg-selected)":e1>0?"rgba(37,99,235,0.08)":"var(--bg-panel)",border:`1px solid ${"plot"===el||e1>0?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:e1>0?"var(--accent)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",transition:"color 0.1s, background 0.1s",fontVariantNumeric:"tabular-nums"},onMouseEnter:e=>{e.currentTarget.style.color=e1>0?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=e1>0?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background="plot"===el?"var(--bg-selected)":e1>0?"rgba(37,99,235,0.08)":"var(--bg-panel)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M4 19V5"}),(0,n.jsx)("path",{d:"M4 19h16"}),(0,n.jsx)("path",{d:"m7 16 3-5 4 3 4-7"})]}),(0,n.jsx)("span",{className:"topbar-plot-label",children:"Plot"}),e1>0&&(0,n.jsx)("span",{className:"topbar-plot-memory",children:ny(e1)})]})]}),eH&&(Q||er)&&(()=>{let e=Q?.tokens,t=Q?.cost??0,r=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),o=t>0?t>=.01?`$${t.toFixed(2)}`:"<$0.01":null,i="var(--text-muted)",l=null;if(er?.contextWindow){let e=er.percent;null!==e&&e>90?i="#ef4444":null!==e&&e>70&&(i="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${r(er.contextWindow)}`:`? / ${r(er.contextWindow)}`}let s=[];if(e&&(s.push(`in: ${e.input.toLocaleString()}`),s.push(`out: ${e.output.toLocaleString()}`),s.push(`cache read: ${e.cacheRead.toLocaleString()}`),s.push(`cache write: ${e.cacheWrite.toLocaleString()}`),t>0&&s.push(`cost: $${t.toFixed(4)}`)),er?.contextWindow){let e=er.percent;s.push(`context: ${null!==e?e.toFixed(1)+"%":"unknown"} of ${er.contextWindow.toLocaleString()} tokens`)}let a=s.join(" | ");return(0,n.jsxs)("div",{className:"topbar-session-stats",title:a,style:{display:"flex",alignItems:"center",gap:10,padding:"0 8px",height:28,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)",fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap",cursor:"default",fontVariantNumeric:"tabular-nums"},children:[e&&e.input>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"8.5",x2:"5",y2:"1.5"}),(0,n.jsx)("polyline",{points:"2 4 5 1.5 8 4"})]}),r(e.input)]}),e&&e.output>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"1.5",x2:"5",y2:"8.5"}),(0,n.jsx)("polyline",{points:"2 6 5 8.5 8 6"})]}),r(e.output)]}),e&&e.cacheRead>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M8.5 5a3.5 3.5 0 1 1-1-2.45"}),(0,n.jsx)("polyline",{points:"6.5 1.5 8.5 2.5 7.5 4.5"})]}),r(e.cacheRead)]}),o&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500},children:o}),l&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:i},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M1 9 L1 5 Q1 1 5 1 Q9 1 9 5 L9 9"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"9",y2:"9"})]}),l]})]})})(),(0,n.jsx)("button",{type:"button",className:"topbar-icon-button topbar-generate-ui-toggle",onClick:X,title:`生成式 UI: ${w.generativeUI?"on":"off"}`,"aria-label":`生成式 UI: ${w.generativeUI?"on":"off"}`,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:w.generativeUI?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${w.generativeUI?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:w.generativeUI?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=w.generativeUI?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=w.generativeUI?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=w.generativeUI?"var(--bg-selected)":"var(--bg-panel)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("path",{d:"M16 17h5"}),(0,n.jsx)("path",{d:"M18.5 14.5v5"})]})}),(0,n.jsx)("button",{className:"topbar-icon-button topbar-theme-toggle",onClick:e=>{let t=e.currentTarget.getBoundingClientRect();l({x:t.left+t.width/2,y:t.top+t.height/2})},title:r?"Switch to light mode":"Switch to dark mode","aria-label":r?"Switch to light mode":"Switch to dark mode","aria-pressed":r,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="var(--bg-panel)"},children:r?(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,n.jsx)("line",{x1:"12",y1:"1",x2:"12",y2:"3"}),(0,n.jsx)("line",{x1:"12",y1:"21",x2:"12",y2:"23"}),(0,n.jsx)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"}),(0,n.jsx)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"}),(0,n.jsx)("line",{x1:"1",y1:"12",x2:"3",y2:"12"}),(0,n.jsx)("line",{x1:"21",y1:"12",x2:"23",y2:"12"}),(0,n.jsx)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"}),(0,n.jsx)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"})]}):(0,n.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})})}),(0,n.jsx)("button",{className:"topbar-icon-button topbar-right-panel-toggle",onClick:()=>ev(e=>!e),title:ef?"Hide report panel":"Show report panel","aria-label":ef?"Hide report panel":"Show report panel",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:ef?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${ef?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:ef?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=ef?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=ef?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=ef?"var(--bg-selected)":"var(--bg-panel)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,n.jsx)("line",{x1:"15",y1:"3",x2:"15",y2:"21"})]})}),el&&ea&&(0,n.jsxs)("div",{style:{position:"fixed",top:ea.top,left:ea.left,width:ea.width,zIndex:500},children:["system"===el&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:A?(0,n.jsx)("div",{style:{maxHeight:"min(600px, 75vh)",overflowY:"auto",padding:"12px 16px",color:"var(--text-muted)",fontSize:12,lineHeight:1.6,whiteSpace:"pre-wrap",fontFamily:"var(--font-mono)"},children:A}):""===A?(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:"System prompt is empty (tools are disabled)"}):(0,n.jsx)("div",{style:{padding:"10px 16px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:"Send a message to load the system prompt"})}),"plot"===el&&(0,n.jsxs)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",padding:"12px 16px"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)",marginBottom:4},children:"Plot Kernels"}),(0,n.jsxs)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.45},children:["Total memory ",ny(e1),e2>0?` \xb7 current chat ${ny(e2)}`:""," \xb7 ","idle timeout ",function(e){if(e<=0)return"never";let t=e/60/60/1e3;return t>=24&&Number.isInteger(t/24)?`${t/24}d`:Number.isInteger(t)?`${t}h`:`${Math.round(e/60/1e3)}m`}(w.plotIdleTimeoutMs)]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>eq("plot-kernels"),style:{height:28,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Settings"}),(0,n.jsx)("button",{type:"button",onClick:()=>void e5(),disabled:!s?.id||!!eX,style:{height:28,padding:"0 10px",border:"1px solid rgba(248,113,113,0.45)",borderRadius:6,background:"var(--bg)",color:s?.id?"#f87171":"var(--text-dim)",cursor:s?.id&&!eX?"pointer":"not-allowed",fontSize:12,opacity:eX?.65:1},children:"all"===eX?"Releasing...":"Release current chat"})]})]}),eY&&(0,n.jsx)("div",{style:{marginTop:10,color:"#f87171",fontSize:12,lineHeight:1.45},children:eY}),(0,n.jsx)("div",{style:{marginTop:12,display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:10},children:["python","r"].map(e=>{let t=(eK?.kernels??[]).filter(t=>t.language===e),r=t.reduce((e,t)=>e+t.rssBytes,0);return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:7,background:"var(--bg)",padding:10,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:650,color:"var(--text)"},children:"python"===e?"Python":"R"}),(0,n.jsx)("div",{style:{fontSize:12,color:r>0?"var(--accent)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontVariantNumeric:"tabular-nums"},children:ny(r)})]}),(0,n.jsx)("div",{style:{marginTop:6,color:"var(--text-dim)",fontSize:11,lineHeight:1.45},children:t.length>0?`${t.length} process${1===t.length?"":"es"}`:"No warm kernel detected"}),t.length>0&&(0,n.jsx)("div",{style:{marginTop:7,display:"flex",flexDirection:"column",gap:4},children:t.slice(0,3).map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,color:"var(--text-muted)",fontSize:11,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["pid ",e.pid]}),(0,n.jsx)("span",{style:{flexShrink:0},children:ny(e.rssBytes)})]},`${e.pid}:${e.language}`))})]},e)})}),(0,n.jsx)("div",{style:{marginTop:9,color:"var(--text-dim)",fontSize:11,lineHeight:1.45},children:"Memory is estimated from OS processes; per-variable memory will appear after warmplot exposes kernel object telemetry."})]})]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",position:"relative"},children:eH?(0,n.jsx)(tB,{session:s,newSessionCwd:eA,onAgentEnd:eW,onSessionCreated:eR,onSessionForked:eE,modelsRefreshKey:v,chatInputRef:I,onBranchDataChange:B,onSystemPromptChange:q,onSessionStatsChange:et,onContextUsageChange:ei,onReportUpdated:()=>ey(e=>e+1),generativeUI:w.generativeUI},h):eD?ek?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:15},children:"Select a session from the sidebar"}):(0,n.jsxs)("div",{style:{position:"absolute",top:12,left:12,display:"flex",alignItems:"flex-start",gap:8,userSelect:"none",pointerEvents:"none"},children:[(0,n.jsxs)("svg",{width:"44",height:"44",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",style:{opacity:.7,flexShrink:0},children:[(0,n.jsx)("line",{x1:"20",y1:"12",x2:"4",y2:"12"}),(0,n.jsx)("polyline",{points:"10 6 4 12 10 18"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:18,fontWeight:600,color:"var(--text)",marginBottom:8},children:"Get Started"}),(0,n.jsxs)("div",{style:{fontSize:12,color:"var(--text-muted)",lineHeight:1.8},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:6},children:"1."}),"Select a project directory from the sidebar",(0,n.jsx)("br",{}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",marginRight:6},children:"2."}),"Add models via the ",(0,n.jsx)("strong",{style:{color:"var(--text)"},children:"Models"})," button at the bottom"]})]})]}):null})]}),ef&&(0,n.jsx)(rb,{side:"left",ariaLabel:"Resize right panel",onResizeStart:L.beginResize,onResize:L.resizeBy,onResizeEnd:L.endResize}),(0,n.jsxs)("div",{className:`right-panel-container${ef?" right-panel-open":" right-panel-closed"}`,style:{display:ef?"flex":"none",flexDirection:"column",borderLeft:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,width:L.width,minWidth:L.width,transition:L.isResizing?"none":void 0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",flexShrink:0,background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",height:36},children:[(0,n.jsxs)("button",{type:"button",className:"right-panel-back-button",onClick:()=>ev(!1),title:"Back to chat","aria-label":"Back to chat",style:{height:36,padding:"0 10px",border:"none",borderRight:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,alignItems:"center",gap:6,flexShrink:0},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"19",y1:"12",x2:"5",y2:"12"}),(0,n.jsx)("polyline",{points:"12 19 5 12 12 5"})]}),(0,n.jsx)("span",{children:"Chat"})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(rj,{tabs:eO,activeTabId:ex,onSelectTab:eg,onCloseTab:eP})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:"report"===ex?(0,n.jsx)(rm,{sessionId:s?.id??null,cwd:s?.cwd??ek??void 0,refreshKey:em,onOpenFile:eB}):eF?.filePath?eF.filePath.startsWith("__")?(0,n.jsx)(rf,{filePath:eF.filePath}):(0,n.jsx)(rp,{filePath:eF.filePath,cwd:ek??void 0,onOpenFile:eB}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),y&&(0,n.jsx)(nv,{cwd:eJ,generativeUI:w.generativeUI,initialTab:j,onGenerativeUIToggle:X,onModelsChanged:()=>m(e=>e+1),onProjectSelect:eL,onProjectsChanged:()=>p(e=>e+1),onClose:()=>{b(!1),m(e=>e+1)}})]})}}},e=>{e.O(0,[6079,8771,8441,3794,7358],()=>e(e.s=51564)),_N_E=e.O()}]);