@seqyuan/annovibe 0.8.57 → 0.8.59

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 (71) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +9 -9
  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/agent/runtime/route.js +1 -1
  26. package/.next/server/app/api/files/[...path]/route.js +1 -1
  27. package/.next/server/app/api/internal/runtime/route.js +1 -1
  28. package/.next/server/app/api/projects/route.js +3 -1
  29. package/.next/server/app/api/search/route.js +1 -1
  30. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  31. package/.next/server/app/api/sessions/route.js +1 -1
  32. package/.next/server/app/api/version/route.js +1 -1
  33. package/.next/server/app/index.html +1 -1
  34. package/.next/server/app/index.rsc +2 -2
  35. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  37. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  38. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  39. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  40. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/login.html +1 -1
  42. package/.next/server/app/login.rsc +1 -1
  43. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  44. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  45. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  46. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  47. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  48. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  49. package/.next/server/app/page.js +4 -4
  50. package/.next/server/app/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/smoke.html +1 -1
  53. package/.next/server/app/smoke.rsc +1 -1
  54. package/.next/server/app/smoke.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/smoke.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/smoke.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
  60. package/.next/server/app-paths-manifest.json +9 -9
  61. package/.next/server/chunks/7601.js +1 -1
  62. package/.next/server/middleware-build-manifest.js +1 -1
  63. package/.next/server/next-font-manifest.js +1 -1
  64. package/.next/server/next-font-manifest.json +1 -1
  65. package/.next/server/pages/404.html +1 -1
  66. package/.next/server/pages/500.html +1 -1
  67. package/.next/server/server-reference-manifest.json +1 -1
  68. package/.next/static/chunks/app/{page-4ba38abb4ab7fa91.js → page-9d8d8e997bb13130.js} +8 -8
  69. package/package.json +1 -1
  70. /package/.next/static/{o_wdyGkUx_hf9tokRGlUb → yn2_Hx9KhiJl_-xJx-jLp}/_buildManifest.js +0 -0
  71. /package/.next/static/{o_wdyGkUx_hf9tokRGlUb → yn2_Hx9KhiJl_-xJx-jLp}/_ssgManifest.js +0 -0
@@ -1,27 +1,27 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{11631:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>rU});var n=r(95155),i=r(12115),o=r(73321);function l(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",i=r.split(n).filter(Boolean);return i.length<=2?r:"..."+n+i.slice(-2).join(n)}function s(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 a({open:e,cwd:t,homeDir:r,onClose:o,onSelectSession:d}){let[c,p]=(0,i.useState)(""),[u,h]=(0,i.useState)("current"),[x,g]=(0,i.useState)([]),[f,v]=(0,i.useState)(!1),[m,y]=(0,i.useState)(null),[b,j]=(0,i.useState)(!1),k=(0,i.useRef)(null);if((0,i.useEffect)(()=>{e&&(h(t?"current":"all"),setTimeout(()=>k.current?.focus(),0))},[e,t]),(0,i.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&o()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,o]),(0,i.useEffect)(()=>{if(!e)return;let r=c.trim();if(r.length<2){g([]),v(!1),y(null),j(!1);return}let n=new AbortController,i=setTimeout(async()=>{v(!0),y(null);try{let e=new URLSearchParams({q:r,scope:u});t&&e.set("cwd",t);let i=await fetch(`/api/search?${e.toString()}`,{signal:n.signal});if(!i.ok)throw Error(`HTTP ${i.status}`);let o=await i.json();if(o.error)throw Error(o.error);g(o.results??[]),j(o.truncated??!1)}catch(e){"AbortError"!==e.name&&y(String(e))}finally{v(!1)}},180);return()=>{clearTimeout(i),n.abort()}},[e,c,u,t]),!e)return null;let w=c.trim(),S=x.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&&o()},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:k,value:c,onChange:e=>p(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:o,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:()=>h(e.value),style:{height:24,padding:"0 9px",background:u===e.value?"var(--bg-selected)":"transparent",border:"none",borderRadius:5,color:e.disabled?"var(--text-dim)":u===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"===u&&t?l(t,r):"Searching every saved session"})]})]}),(0,n.jsxs)("div",{style:{flex:1,overflowY:"auto",minHeight:180},children:[w.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."}),w.length>=2&&f&&0===x.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"Searching..."}),m&&(0,n.jsx)("div",{style:{padding:18,color:"#ef4444",fontSize:13},children:m}),w.length>=2&&!f&&!m&&0===x.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"No matching conversations found."}),x.map(e=>(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{d(e.session),o()},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:s(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:l(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:()=>{d(e.session),o()},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:s(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 i=e.toLowerCase().indexOf(r.toLowerCase());return i<0?e:(0,n.jsxs)(n.Fragment,{children:[e.slice(0,i),(0,n.jsx)("mark",{style:{background:"rgba(37,99,235,0.16)",color:"var(--text)",borderRadius:3,padding:"0 2px"},children:e.slice(i,i+r.length)}),e.slice(i+r.length)]})}(t.snippet,w)})]},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:S>0?`${S}${b?"+":""} results`:"Esc to close"}),f&&x.length>0&&(0,n.jsx)("span",{children:"Updating..."})]})]})})}let d="AnnoVibe",c="annovibe:sidebar:collapsed-projects",p="annovibe:sidebar:collapsed-projects:init-v3";function u(e){window.localStorage.setItem(c,JSON.stringify([...e]))}async function h(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),i=Math.floor(r/36e5),o=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:i<24?`${i}h ago`:o<7?`${o}d ago`:t.toLocaleDateString()}function g(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",i=r.split(n).filter(Boolean);return i.length<=2?r:"…/"+i.slice(-2).join(n)}function f(e,t){if(!e)return"No Project";let r=e.replace(/[\\/]+$/,""),n=r.includes("/")?"/":"\\";return r.split(n).filter(Boolean).pop()||g(e,t)}let v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function m(){let[e,t]=(0,i.useState)(!1),[r,o]=(0,i.useState)(!1),l=(0,i.useRef)(null),s=function(e,t){let[r,n]=(0,i.useState)(e),o=(0,i.useRef)(null),l=(0,i.useRef)(0);return(0,i.useEffect)(()=>{if(!t)return void n(e);l.current=0;let r=4*e.length,i=()=>{l.current+=1;let t=Math.floor(l.current/r*e.length);n(e.split("").map((e,r)=>" "===e?" ":r<t?e:v[Math.floor(Math.random()*v.length)]).join("")),l.current<r?o.current=requestAnimationFrame(i):n(e)};return o.current=requestAnimationFrame(i),()=>{o.current&&cancelAnimationFrame(o.current)}},[e,t]),r}(e?"v0.8.57":d,r),a=(0,i.useCallback)(e=>{t(e),o(!0),setTimeout(()=>o(!1),(e?6:8)*4*(1e3/60)+100)},[]),c=(0,i.useCallback)(()=>{l.current&&clearTimeout(l.current);let t=!e;a(t),t&&(l.current=setTimeout(()=>a(!1),3e3))},[e,a]);return(0,i.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),(0,n.jsx)("button",{onClick:c,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 y({selectedSessionId:e,onSelectSession:t,onNewSession:r,onNewWorkbench:o,initialSessionId:l,onInitialRestoreDone:s,refreshKey:d,onSessionDeleted:x,selectedCwd:v,onCwdChange:C}){let[T,z]=(0,i.useState)([]),[I,M]=(0,i.useState)([]),[W,L]=(0,i.useState)(!0),[R,E]=(0,i.useState)(null),[P,$]=(0,i.useState)(null),[B,D]=(0,i.useState)(""),[N,A]=(0,i.useState)(null),[O,H]=(0,i.useState)(!1),[F,U]=(0,i.useState)("project"),[_,K]=(0,i.useState)(null),[V,J]=(0,i.useState)(!1),[Y,q]=(0,i.useState)(!1),[Z,G]=(0,i.useState)(()=>new Set),[X,Q]=(0,i.useState)(()=>(function(){try{let e=window.localStorage.getItem(c)??window.localStorage.getItem("pidex:sidebar:collapsed-projects");return e?new Set(JSON.parse(e)):new Set}catch{return new Set}})()),[ee,et]=(0,i.useState)(null),[er,en]=(0,i.useState)(null),[ei,eo]=(0,i.useState)(null),[el,es]=(0,i.useState)(!1),ea=(0,i.useRef)(null),[ed,ec]=(0,i.useState)(!1),ep=(0,i.useRef)(!1),eu=(0,i.useRef)(!1),eh=(0,i.useRef)(!1),ex=(0,i.useCallback)(async(e=!1)=>{try{e&&(E(null),L(!0));let t=new AbortController,r=setTimeout(()=>t.abort(new DOMException("Loading timed out","TimeoutError")),3e4),[n,i]=await Promise.all([fetch("/api/sessions",{signal:t.signal}),fetch("/api/projects",{signal:t.signal})]);if(clearTimeout(r),!n.ok)throw Error(await h("sessions",n));if(!i.ok)throw Error(await h("projects",i));let o=await n.json(),l=await i.json();z(o.sessions),M(l.projects),E(null)}catch(e){E(e instanceof DOMException&&("AbortError"===e.name||"TimeoutError"===e.name)||e instanceof Error&&/aborted without reason|AbortError/i.test(e.message)?"Loading timed out. Codex may still be starting; try the refresh button.":e instanceof Error?e.message:String(e))}finally{e&&L(!1)}},[]),eg=(0,i.useRef)(!1);(0,i.useEffect)(()=>{let e=!eg.current;eg.current=!0,ex(e)},[ex,d]),(0,i.useEffect)(()=>{let e=window.setInterval(()=>{ex(!1)},15e3);return()=>window.clearInterval(e)},[ex]),(0,i.useEffect)(()=>{let e=()=>{ex(!1)};return window.addEventListener("session-created",e),()=>window.removeEventListener("session-created",e)},[ex]),(0,i.useEffect)(()=>{fetch("/api/home").then(e=>e.json()).then(e=>{e.home&&D(e.home)}).catch(()=>{})},[]);let ef=(0,i.useRef)(!1);(0,i.useEffect)(()=>{if(ep.current){ep.current=!1;return}if(eu.current){eu.current=!1;return}C?.(P)},[P,C]);let ev=(0,i.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 A(n.error??`HTTP ${r.status}`),!1;return ex(!1),!0}catch(e){return A(e instanceof Error?e.message:String(e)),!1}},[ex]),em=(0,i.useCallback)(e=>{fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,touch:!0})}).catch(()=>{})},[]),ey=(0,i.useCallback)(e=>{eu.current=!0,$(e),A(null),Q(t=>{if(!t.has(e))return t;let r=new Set(t);return r.delete(e),u(r),r}),C?.(e),em(e)},[C,em]);(0,i.useEffect)(()=>{if((0!==T.length||0!==I.length)&&null===P){if(l&&!ef.current){ef.current=!0;let e=T.find(e=>e.id===l);if(e){$(e.cwd),em(e.cwd),t(e,!0);return}s?.()}let e=I[0]?.cwd;e&&($(e),em(e))}},[T,I,P,l,t,s,em]);let eb=v??P,ej=(0,i.useCallback)(e=>{if(!e){U("agent"),H(!0);return}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]),ek=(0,i.useCallback)(e=>{if(!e){U("workbench"),H(!0);return}o?.(e)},[o]);(0,i.useCallback)(async e=>{await ev(e,!0)&&(ey(e),H(!1),A(null),"agent"===F&&ej(e),"workbench"===F&&ek(e))},[ey,ej,ek,F,ev]);let ew=(0,i.useCallback)(e=>{K(e),J(!0)},[]),eS=(0,i.useCallback)(()=>{J(!1),K(null)},[]),eC=(0,i.useCallback)(e=>{let t=_??eb;eS(),"agent"===e?ej(t):ek(t)},[eS,ej,ek,eb,_]),eT=(0,i.useCallback)(()=>{ew(eb)},[eb,ew]),ez=(0,i.useCallback)(()=>{U("project"),A(null),H(!0)},[]),eI=(0,i.useMemo)(()=>[...eb&&!I.some(e=>e.cwd===eb)?[{cwd:eb,displayName:f(eb,B),chatCount:T.filter(e=>e.cwd===eb).length,lastAccessed:null,created:null,pinned:!1,sortOrder:null,exists:!0,source:"manual"}]:[],...I].sort((e,t)=>{let r=!0===e.pinned;if(r!==(!0===t.pinned))return r?-1:1;let n="number"==typeof e.sortOrder?e.sortOrder:Number.MAX_SAFE_INTEGER,i="number"==typeof t.sortOrder?t.sortOrder:Number.MAX_SAFE_INTEGER;return n!==i?n-i:(e.displayName||"").localeCompare(t.displayName||"",void 0,{numeric:!0,sensitivity:"base"})}),[T,eb,B,I]),eM=(0,i.useMemo)(()=>{let e=new Map;for(let t of T){let r=t.cwd||"";e.has(r)||e.set(r,[]),e.get(r).push(t)}return eI.map(t=>{let r=[...e.get(t.cwd)??[]].sort((e,t)=>(t.modified||"").localeCompare(e.modified||""));return{project:t,cwd:t.cwd,displayName:t.displayName||f(t.cwd,B),sessions:r,lastAccessed:(t.lastAccessed??t.created??"")||r[0]?.modified||""}})},[T,B,eI]);(0,i.useEffect)(()=>{if(0===eM.length||eh.current||(eh.current=!0,!eM[0]?.cwd||window.localStorage.getItem(p)))return;let e=new Set(eM.slice(1).map(e=>e.cwd));Q(t=>!function(e,t){if(e.size!==t.size)return!1;for(let r of e)if(!t.has(r))return!1;return!0}(t,e)?(u(e),e):t),window.localStorage.setItem(p,"1")},[eM]);let eW=(0,i.useCallback)((e,r=!1)=>{e.cwd!==eb&&(ep.current=!0,$(e.cwd)),Q(t=>{if(!t.has(e.cwd))return t;let r=new Set(t);return r.delete(e.cwd),u(r),r}),em(e.cwd),t(e,r)},[t,eb,em]),eL=(0,i.useCallback)(e=>{Q(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),u(r),r})},[]),eR=(0,i.useCallback)(e=>{G(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),eE=(0,i.useCallback)(async e=>{eo("reorder");try{let t=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({order:e})}),r=await t.json();if(!t.ok||r.error)throw Error(r.error??`HTTP ${t.status}`);M(r.projects??[]),E(null)}catch(e){E(e instanceof Error?e.message:String(e)),ex(!1)}finally{eo(null)}},[ex]),eP=(0,i.useCallback)(async(e,t)=>{eo(`pin:${e}`);try{let r=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,pinned:t})}),n=await r.json();if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);M(n.projects??[]),E(null)}catch(e){E(e instanceof Error?e.message:String(e)),ex(!1)}finally{eo(null)}},[ex]),e$=(0,i.useCallback)((e,t)=>{if(!e||!t||e===t)return;let r=eI.map(e=>e.cwd).filter(Boolean),n=r.indexOf(e),i=r.indexOf(t);if(-1===n||-1===i)return;let o=[...r];o.splice(n,1);let l=o.indexOf(t);o.splice(l,0,e),eE(o)},[eE,eI]),eB=(0,i.useCallback)(async()=>{ec(!0);try{let e=eI.filter(e=>!0===e.pinned).map(e=>e.cwd);e.length>0?await Promise.all(e.map(e=>fetch(`/api/sessions?cwd=${encodeURIComponent(e)}`,{signal:AbortSignal.timeout(3e4)}).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{z(r=>[...r.filter(t=>t.cwd!==e),...t.sessions??[]])}).catch(()=>{}))):await ex(!1)}finally{ec(!1)}},[ex,eI]);return(0,i.useEffect)(()=>{if(!el)return;let e=e=>{ea.current&&!ea.current.contains(e.target)&&es(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[el]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)("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",gap:8},children:[(0,n.jsx)(m,{}),(0,n.jsxs)("div",{style:{display:"flex",gap:6,minWidth:0},children:[(0,n.jsxs)("button",{onClick:eT,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:eb?`New chat in ${eb}`:"New chat in a project path",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 Chat"]}),(0,n.jsx)("button",{onClick:()=>q(!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.jsx)(a,{open:Y,cwd:eb,homeDir:B,onClose:()=>q(!1),onSelectSession:e=>{eW(e)}}),(0,n.jsxs)("div",{ref:ea,style:{position:"relative",marginTop:8,padding:"0 10px",display:"flex",alignItems:"stretch",gap:4},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>es(e=>!e),style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:6,padding:"6px 10px",background:eb?"var(--bg-hover)":"rgba(37,99,235,0.06)",border:eb?"1px solid var(--border)":"1px solid rgba(37,99,235,0.4)",borderRadius:7,cursor:"pointer",fontSize:12,color:"var(--text)",textAlign:"left"},title:eb??"Select project",children:[(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.35",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--accent)"},children:(0,n.jsx)("path",{d:"M1.5 5A1.5 1.5 0 0 1 3 3.5h3l1.2 1.5H13A1.5 1.5 0 0 1 14.5 6.5L13.6 11A1.5 1.5 0 0 1 12.1 12.5H3A1.5 1.5 0 0 1 1.5 11V5Z"})}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",fontSize:11,color:eb?"var(--text)":"var(--text-dim)"},children:eb?eI.find(e=>e.cwd===eb)?.displayName??g(eb,B):"Select project…"}),(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:el?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),eb&&(0,n.jsx)(j,{pinned:eI.find(e=>e.cwd===eb)?.pinned===!0,onToggle:()=>void eP(eb,eI.find(e=>e.cwd===eb)?.pinned!==!0)}),el&&(0,n.jsxs)("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:10,right:10,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 6px 20px rgba(0,0,0,0.10)",overflow:"hidden",maxHeight:280,overflowY:"auto"},children:[0===eI.length&&(0,n.jsx)("div",{style:{padding:"10px 12px",color:"var(--text-dim)",fontSize:11},children:"No projects yet"}),eI.map(e=>{let t=e.cwd===eb;return(0,n.jsx)(k,{project:e,homeDir:B,isCurrent:t,onSelect:()=>{ey(e.cwd),es(!1)},onTogglePinned:()=>void eP(e.cwd,!0!==e.pinned)},e.cwd)}),(0,n.jsxs)("button",{type:"button",onClick:()=>{es(!1),ez()},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"8px 10px",background:"none",border:"none",borderTop:eI.length>0?"1px solid var(--border)":"none",color:"var(--accent)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"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"})]}),"Add project…"]})]})]}),(0,n.jsxs)("div",{style:{flexShrink:0,padding:"10px 10px 6px"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase"},children:"Projects"}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:4,marginLeft:"auto"},children:(0,n.jsx)("button",{type:"button",onClick:eB,disabled:ed,title:"Refresh projects and chats","aria-label":"Refresh projects and chats",style:{width:22,height:22,display:"flex",alignItems:"center",justifyContent:"center",padding:0,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:ed?"var(--accent)":"var(--text-dim)",cursor:ed?"default":"pointer",flexShrink:0},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:{animation:ed?"spin 0.9s linear infinite":void 0},children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 0 1-15.5 6.2"}),(0,n.jsx)("path",{d:"M3 12A9 9 0 0 1 18.5 5.8"}),(0,n.jsx)("path",{d:"M7 18H5.5v1.5"}),(0,n.jsx)("path",{d:"M17 6h1.5V4.5"})]})})})]}),N&&(0,n.jsx)("div",{style:{marginTop:6,color:"#f87171",fontSize:11,lineHeight:1.4,overflowWrap:"anywhere"},children:N})]}),(0,n.jsxs)("div",{style:{flex:"1 1 auto",overflowY:"auto",padding:"6px 8px 8px",minHeight:80,scrollbarWidth:"thin",overscrollBehavior:"contain"},children:[W&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}),R&&(0,n.jsx)("div",{style:{padding:"12px 14px",color:"#f87171",fontSize:12},children:R}),!W&&!R&&0===eM.length&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Open or create a project to start chatting."}),!W&&!R&&eM.map(t=>{let r=X.has(t.cwd),i=t.cwd===eb,o=Z.has(t.cwd),l=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 i=function(e){let n=r.get(e),i=new Set;for(;n&&!i.has(n);){if(i.add(n),t.has(n))return n;n=r.get(n)}return null}(e.session.id);i?t.get(i).children.push(e):n.push(e)}let i=e=>{e.sort((e,t)=>(t.session.modified||"").localeCompare(e.session.modified||"")),e.forEach(e=>i(e.children))};return i(n),n}(t.sessions),s=l.length,a=l;if(s>10&&!o){a=l.slice(0,10);let t=l.find(t=>(function e(t,r){return!!r&&(t.session.id===r||t.children.some(t=>e(t,r)))})(t,e));t&&!a.includes(t)&&(a=[...a,t])}let d=s-a.length;return(0,n.jsxs)("div",{style:{marginBottom:6,borderTop:er===t.cwd?"2px solid var(--accent)":"2px solid transparent",paddingTop:2*(er===t.cwd),opacity:ee===t.cwd?.55:1},onDragOver:e=>{ee&&ee!==t.cwd&&(e.preventDefault(),e.dataTransfer.dropEffect="move",en(t.cwd))},onDragLeave:()=>{er===t.cwd&&en(null)},onDrop:e=>{e.preventDefault();let r=e.dataTransfer.getData("text/project-cwd")||ee;en(null),et(null),r&&e$(r,t.cwd)},children:[(0,n.jsx)(w,{group:t,isCurrent:i,isCollapsed:r,isDragging:ee===t.cwd,pinBusy:ei===`pin:${t.cwd}`,onToggle:()=>eL(t.cwd),onSelect:()=>ey(t.cwd),onTogglePinned:()=>void eP(t.cwd,!0!==t.project.pinned),onDragStart:e=>{et(t.cwd),e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/project-cwd",t.cwd)},onDragEnd:()=>{et(null),en(null)}}),!r&&(0,n.jsxs)("div",{style:{marginTop:2,overflow:"hidden",borderRadius:7},children:[0===t.sessions.length?(0,n.jsx)("div",{style:{width:"100%",padding:"10px 12px",color:"var(--text-muted)",textAlign:"left",fontSize:12},children:"No sessions yet. Use New Chat above to start one."}):a.map(t=>(0,n.jsx)(S,{node:t,selectedSessionId:e,onSelectSession:eW,onRenamed:ex,onSessionDeleted:e=>{x?.(e),ex()},depth:0},t.session.id)),(o||d>0)&&s>10&&(0,n.jsx)("button",{type:"button",onClick:()=>eR(t.cwd),style:{width:"100%",padding:"6px 10px",background:"transparent",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:11,textAlign:"center"},children:o?"Show less":`Show ${Math.max(0,d)} more`})]})]},t.cwd||"__no_project")})]}),V&&(0,n.jsx)(b,{cwd:_,onChoose:eC,onClose:eS})]})}function b({cwd:e,onChoose:t,onClose:r}){let i=e?f(e):"Choose a project path next";return(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.28)"},children:(0,n.jsxs)("div",{style:{width:"min(420px, 100%)",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:12,boxShadow:"0 12px 40px rgba(0,0,0,0.24)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"14px 16px 12px",borderBottom:"1px solid var(--border)",display:"flex",justifyContent:"space-between",gap:12},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:14,fontWeight:750},children:"Start a new session"}),(0,n.jsx)("div",{style:{marginTop:5,color:"var(--text-dim)",fontSize:11},children:"Current project"}),(0,n.jsx)("div",{title:e??void 0,style:{marginTop:2,color:"var(--text)",fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:i}),e&&(0,n.jsx)("div",{style:{marginTop:2,color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]}),(0,n.jsx)("button",{type:"button",onClick:r,"aria-label":"Close",title:"Close",style:{width:28,height:28,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1},children:"x"})]}),(0,n.jsxs)("div",{style:{padding:14,display:"grid",gap:10},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>t("agent"),style:{display:"grid",gap:5,textAlign:"left",padding:"13px 14px",border:"1px solid var(--border)",borderRadius:10,background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer"},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:750},children:"Agent Chat"}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",lineHeight:1.45},children:"General coding or analysis chat in this project."})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>t("workbench"),style:{display:"grid",gap:5,textAlign:"left",padding:"13px 14px",border:"1px solid rgba(37,99,235,0.45)",borderRadius:10,background:"rgba(37,99,235,0.08)",color:"var(--text)",cursor:"pointer"},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:750,color:"var(--accent)"},children:"Workbench"}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",lineHeight:1.45},children:"Dedicated R/Python warm-runtime session for data loading, plots, and artifacts."})]})]})]})})}function j({pinned:e,onToggle:t}){return(0,n.jsx)("button",{type:"button",onClick:t,title:e?"Unpin project":"Pin project to sidebar",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:"auto",padding:0,border:"1px solid var(--border)",borderRadius:7,background:e?"rgba(234,179,8,0.12)":"var(--bg-hover)",color:e?"#ca8a04":"var(--text-muted)",cursor:"pointer",flexShrink:0},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:e?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})})}function k({project:e,homeDir:t,isCurrent:r,onSelect:o,onTogglePinned:l}){let[s,a]=(0,i.useState)(!1),d=e.displayName||f(e.cwd,t);return(0,n.jsxs)("div",{onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),style:{display:"flex",alignItems:"center",gap:4,background:r?"var(--bg-selected)":s?"var(--bg-hover)":"none",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("span",{style:{width:10,marginLeft:6,flexShrink:0}}),(0,n.jsxs)("button",{type:"button",onClick:o,title:e.cwd,style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:7,padding:"8px 10px 8px 0",background:"none",border:"none",color:r?"var(--text)":"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11,fontFamily:"var(--font-mono)"},children:[r?(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.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d}),!e.exists&&(0,n.jsx)("span",{style:{flexShrink:0,color:"#f87171",fontSize:10},children:"missing"})]}),(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),l()},title:"Pin to sidebar",tabIndex:s?0:-1,style:{display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28,marginRight:4,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,opacity:+!!s,pointerEvents:s?"auto":"none"},children:(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})})]})}function w({group:e,isCurrent:t,isCollapsed:r,isDragging:o,pinBusy:l,onToggle:s,onSelect:a,onTogglePinned:d,onDragStart:c,onDragEnd:p}){let[u,h]=(0,i.useState)(!1),g=e.lastAccessed,f=Math.max(0,e.project.chatCount??e.sessions.length??0),v=!0===e.project.pinned,m=(0,i.useCallback)(()=>{t?s():a()},[t,a,s]);return(0,n.jsxs)("div",{role:"button",tabIndex:0,draggable:!0,onClick:m,onDragStart:c,onDragEnd:p,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),m())},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),title:e.cwd,style:{width:"100%",height:32,display:"flex",alignItems:"center",gap:5,padding:"0 8px",background:t?"var(--bg-selected)":u?"var(--bg-hover)":"transparent",border:"none",borderRadius:6,color:"var(--text)",cursor:o?"grabbing":"pointer",textAlign:"left",overflow:"hidden",transition:"background 0.12s, opacity 0.12s",opacity:o?.55:1},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",style:{transform:r?"none":"rotate(90deg)",transition:"transform 0.15s",flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),(0,n.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.35",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:t?"var(--accent)":"var(--text-dim)"},children:r?(0,n.jsx)("path",{d:"M1.5 4.5A1.5 1.5 0 0 1 3 3h3l1.2 1.5H13A1.5 1.5 0 0 1 14.5 6v5A1.5 1.5 0 0 1 13 12.5H3A1.5 1.5 0 0 1 1.5 11V4.5Z"}):(0,n.jsx)("path",{d:"M1.5 5A1.5 1.5 0 0 1 3 3.5h3l1.2 1.5H13A1.5 1.5 0 0 1 14.5 6.5L13.6 11A1.5 1.5 0 0 1 12.1 12.5H3A1.5 1.5 0 0 1 1.5 11V5Z"})}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:t?650:560,color:"var(--text)"},children:e.displayName}),!e.project.exists&&(0,n.jsx)("span",{style:{flexShrink:0,color:"#f87171",fontSize:10},children:"missing"}),!u&&f>0&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10,whiteSpace:"nowrap"},children:[f," ",1===f?"chat":"chats"]}),!u&&g&&(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10,whiteSpace:"nowrap"},children:x(g)}),v?(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),d()},title:"Unpin project",tabIndex:u?0:-1,style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,border:"none",borderRadius:5,background:"rgba(234,179,8,0.12)",color:"#ca8a04",cursor:"pointer",flexShrink:0,opacity:u?1:.85,transition:"opacity 0.12s"},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})}):(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),d()},disabled:l,title:"Pin project to sidebar",tabIndex:u?0:-1,style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:l?"wait":"pointer",flexShrink:0,opacity:+!!u,transition:"opacity 0.12s, background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="#ca8a04"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})}),(0,n.jsx)("span",{title:"Drag to reorder",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:18,height:22,flexShrink:0,color:"var(--text-dim)",opacity:u?1:.35,transition:"opacity 0.12s",cursor:"grab"},children:(0,n.jsxs)("svg",{width:"10",height:"12",viewBox:"0 0 10 12",fill:"currentColor",children:[(0,n.jsx)("circle",{cx:"2",cy:"2",r:"1"}),(0,n.jsx)("circle",{cx:"8",cy:"2",r:"1"}),(0,n.jsx)("circle",{cx:"2",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"8",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"2",cy:"10",r:"1"}),(0,n.jsx)("circle",{cx:"8",cy:"10",r:"1"})]})})]})}function S({node:e,selectedSessionId:t,onSelectSession:r,onRenamed:o,onSessionDeleted:l,depth:s}){let[a,d]=(0,i.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)(C,{session:e.session,isSelected:e.session.id===t,onClick:()=>r(e.session),onRenamed:o,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)(S,{node:e,selectedSessionId:t,onSelectSession:r,onRenamed:o,onSessionDeleted:l,depth:s+1},e.session.id))})]})}function C({session:e,isSelected:t,onClick:r,onRenamed:o,onDeleted:l,depth:s=0,hasChildren:a=!1,collapsed:d=!1,onToggleCollapse:c}){let[p,u]=(0,i.useState)(!1),[h,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(""),[m,y]=(0,i.useState)(!1),[b,j]=(0,i.useState)(!1),k=(0,i.useRef)(null),w=e.name||e.firstMessage.slice(0,50)||e.id.slice(0,12),S=(0,i.useCallback)(t=>{t.stopPropagation(),v(e.name??""),g(!0),setTimeout(()=>k.current?.select(),0)},[e.name]),T=(0,i.useCallback)(async()=>{let t=f.trim();if(g(!1),t!==(e.name??""))try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),o?.()}catch{}},[f,e.id,e.name,o]),z=(0,i.useCallback)(e=>{e.stopPropagation(),y(!0)},[]),I=(0,i.useCallback)(async t=>{t.stopPropagation(),y(!1),j(!0);try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"DELETE"}),l?.(e.id)}catch{j(!1)}},[e.id,l]),M=(0,i.useCallback)(e=>{e.stopPropagation(),y(!1)},[]),W="workbench"===e.sessionKind;return(0,n.jsx)("div",{onClick:m||h?void 0:r,onMouseEnter:()=>u(!0),onMouseLeave:()=>{u(!1)},style:{display:"flex",alignItems:"center",padding:"7px 8px",paddingLeft:s>0?12*s+14:14,paddingRight:8,cursor:m||h?"default":"pointer",background:m?"rgba(239,68,68,0.06)":t?"var(--bg-selected)":p?"var(--bg-hover)":"transparent",borderLeft:m?"2px solid #ef4444":t?"2px solid var(--accent)":"2px solid transparent",transition:"background 0.1s",opacity:b?.5:1,gap:6,overflow:"hidden"},children:m?(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:["“",w.slice(0,22),w.length>22?"…":"","”"]}),"?"]}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,flexShrink:0},children:[(0,n.jsxs)("button",{onClick:I,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:M,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:k,value:f,onChange:e=>v(e.target.value),onBlur:T,onKeyDown:e=>{"Enter"===e.key&&T(),"Escape"===e.key&&g(!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:28}}):(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===s&&(0,n.jsx)("span",{"aria-hidden":"true",style:{width:5,height:5,borderRadius:"50%",background:t?"var(--accent)":"var(--text-dim)",opacity:t?1:.35,flexShrink:0}}),W&&(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",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.jsxs)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:1},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:t?600:500,lineHeight:"18px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:W?"var(--accent)":"var(--text)"},title:w,children:w}),(0,n.jsxs)("div",{style:{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"]}),!1===e.cwdExists&&(0,n.jsx)("span",{title:`Project path missing: ${e.cwd}`,style:{color:"#f87171"},children:"missing path"})]})]}),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"})})}),p&&(0,n.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,n.jsx)("button",{onClick:S,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",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:z,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",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"})]})})]})]})})}var T=r(94456);let z="subagent",I=["retain","recall","reflect"],M=[],W=["read","bash","edit","write"],L=["bash","read","edit","write","grep","find","ls"],R=[...L,"kernel_plot_run","kernel_plot_render","kernel_plot_stop","kernel_plot_artifacts"],E=[...L,z];function P(e){return[...e].sort().join(",")}function $(e){switch(e){case"none":return M;case"default":return W;case"workbench":return R;case"agent":return E;default:return L}}function B(e,t){return[...new Set([...$(e),...t])]}let D=new Map,N=["off","default","full","agent"],A={off:"none",default:"default",full:"full",agent:"agent"},O={off:"无工具,纯聊天",default:"4 项内置工具",full:"全部内置工具",agent:"High + 子代理"},H={retain:{label:"retain",description:"保存稳定事实或决策到项目记忆"},recall:{label:"recall",description:"检索项目记忆中的相关上下文"},reflect:{label:"reflect",description:"基于已存记忆做综合回应"}},F=["auto","off","minimal","low","medium","high","xhigh"],U={auto:"沿用 pi 默认设置",off:"关闭推理",minimal:"最少推理",low:"低强度推理",medium:"中等推理",high:"高强度推理",xhigh:"最高强度推理"},_=[{command:"/compact",label:"/compact",description:"压缩当前上下文",kind:"native"},{command:"/init",label:"/init",description:"快捷插入,交给模型处理初始化任务",kind:"shortcut"},{command:"/memory",label:"/memory",description:"快捷插入,交给模型处理项目记忆任务",kind:"shortcut"}];function K({doc:e,onRemove:t}){var r;let i=e.fileName.split(".").pop()?.toLowerCase()??"",o=function(e){switch(e){case"pdf":return{emoji:"\uD83D\uDCC4",color:"#ef4444"};case"docx":case"doc":return{emoji:"\uD83D\uDCDD",color:"#3b82f6"};case"xlsx":case"xls":return{emoji:"\uD83D\uDCCA",color:"#22c55e"};case"pptx":case"ppt":return{emoji:"\uD83D\uDCFD",color:"#f97316"};default:return{emoji:"\uD83D\uDCCE",color:"var(--text-muted)"}}}(i),l=(r=e.size)<1024?`${r} B`:r<1048576?`${(r/1024).toFixed(1)} KB`:`${(r/1048576).toFixed(1)} MB`;return(0,n.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:6,padding:"5px 10px 5px 7px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,maxWidth:200},title:e.fileName,children:[(0,n.jsx)("span",{style:{color:o.color,fontSize:14,flexShrink:0},children:o.emoji}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:1.3},children:e.fileName}),(0,n.jsxs)("div",{style:{fontSize:10,color:"var(--text-dim)",lineHeight:1.3},children:[i.toUpperCase()," \xb7 ",l,e.extractionError?" \xb7 no text":e.truncated?" \xb7 truncated":e.extractedText?" \xb7 text":""]})]}),(0,n.jsx)("button",{onClick:t,style:{flexShrink:0,width:14,height:14,borderRadius:"50%",background:"var(--bg-hover)",border:"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,color:"var(--text-dim)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)"},children:(0,n.jsxs)("svg",{width:"7",height:"7",viewBox:"0 0 7 7",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"1",y1:"1",x2:"6",y2:"6"}),(0,n.jsx)("line",{x1:"6",y1:"1",x2:"1",y2:"6"})]})})]})}function V(e){return e.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&apos;/g,"'")}async function J(e){let t=await Promise.all([r.e(2213),r.e(2619)]).then(r.bind(r,12810));t.GlobalWorkerOptions.workerSrc=new r.U(r(53228)).toString();let n=await t.getDocument({data:e.slice(0)}).promise,i=[];for(let e=1;e<=n.numPages;e+=1){let t=await n.getPage(e),r=(await t.getTextContent()).items.map(e=>"str"in e?e.str:"").filter(Boolean).join(" ");r.trim()&&i.push(`Page ${e}
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{15845:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>r1});var n=r(95155),i=r(12115),o=r(73321);function l(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",i=r.split(n).filter(Boolean);return i.length<=2?r:"..."+n+i.slice(-2).join(n)}function s(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 a({open:e,cwd:t,homeDir:r,onClose:o,onSelectSession:d}){let[c,u]=(0,i.useState)(""),[p,h]=(0,i.useState)("current"),[x,g]=(0,i.useState)([]),[f,v]=(0,i.useState)(!1),[m,b]=(0,i.useState)(null),[y,j]=(0,i.useState)(!1),k=(0,i.useRef)(null);if((0,i.useEffect)(()=>{e&&(h(t?"current":"all"),setTimeout(()=>k.current?.focus(),0))},[e,t]),(0,i.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&o()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,o]),(0,i.useEffect)(()=>{if(!e)return;let r=c.trim();if(r.length<2){g([]),v(!1),b(null),j(!1);return}let n=new AbortController,i=setTimeout(async()=>{v(!0),b(null);try{let e=new URLSearchParams({q:r,scope:p});t&&e.set("cwd",t);let i=await fetch(`/api/search?${e.toString()}`,{signal:n.signal});if(!i.ok)throw Error(`HTTP ${i.status}`);let o=await i.json();if(o.error)throw Error(o.error);g(o.results??[]),j(o.truncated??!1)}catch(e){"AbortError"!==e.name&&b(String(e))}finally{v(!1)}},180);return()=>{clearTimeout(i),n.abort()}},[e,c,p,t]),!e)return null;let w=c.trim(),S=x.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&&o()},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:k,value:c,onChange:e=>u(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:o,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:()=>h(e.value),style:{height:24,padding:"0 9px",background:p===e.value?"var(--bg-selected)":"transparent",border:"none",borderRadius:5,color:e.disabled?"var(--text-dim)":p===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"===p&&t?l(t,r):"Searching every saved session"})]})]}),(0,n.jsxs)("div",{style:{flex:1,overflowY:"auto",minHeight:180},children:[w.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."}),w.length>=2&&f&&0===x.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"Searching..."}),m&&(0,n.jsx)("div",{style:{padding:18,color:"#ef4444",fontSize:13},children:m}),w.length>=2&&!f&&!m&&0===x.length&&(0,n.jsx)("div",{style:{padding:28,textAlign:"center",color:"var(--text-muted)",fontSize:13},children:"No matching conversations found."}),x.map(e=>(0,n.jsxs)("div",{style:{borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{d(e.session),o()},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:s(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:l(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:()=>{d(e.session),o()},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:s(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 i=e.toLowerCase().indexOf(r.toLowerCase());return i<0?e:(0,n.jsxs)(n.Fragment,{children:[e.slice(0,i),(0,n.jsx)("mark",{style:{background:"rgba(37,99,235,0.16)",color:"var(--text)",borderRadius:3,padding:"0 2px"},children:e.slice(i,i+r.length)}),e.slice(i+r.length)]})}(t.snippet,w)})]},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:S>0?`${S}${y?"+":""} results`:"Esc to close"}),f&&x.length>0&&(0,n.jsx)("span",{children:"Updating..."})]})]})})}let d="AnnoVibe",c="annovibe:sidebar:collapsed-projects",u="annovibe:sidebar:collapsed-projects:init-v3";function p(e){window.localStorage.setItem(c,JSON.stringify([...e]))}async function h(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),i=Math.floor(r/36e5),o=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:i<24?`${i}h ago`:o<7?`${o}d ago`:t.toLocaleDateString()}function g(e,t){let r=t&&e.startsWith(t)?"~"+e.slice(t.length):e,n=r.includes("/")?"/":"\\",i=r.split(n).filter(Boolean);return i.length<=2?r:"…/"+i.slice(-2).join(n)}function f(e,t){if(!e)return"No Project";let r=e.replace(/[\\/]+$/,""),n=r.includes("/")?"/":"\\";return r.split(n).filter(Boolean).pop()||g(e,t)}let v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function m(){let[e,t]=(0,i.useState)(!1),[r,o]=(0,i.useState)(!1),l=(0,i.useRef)(null),s=function(e,t){let[r,n]=(0,i.useState)(e),o=(0,i.useRef)(null),l=(0,i.useRef)(0);return(0,i.useEffect)(()=>{if(!t)return void n(e);l.current=0;let r=4*e.length,i=()=>{l.current+=1;let t=Math.floor(l.current/r*e.length);n(e.split("").map((e,r)=>" "===e?" ":r<t?e:v[Math.floor(Math.random()*v.length)]).join("")),l.current<r?o.current=requestAnimationFrame(i):n(e)};return o.current=requestAnimationFrame(i),()=>{o.current&&cancelAnimationFrame(o.current)}},[e,t]),r}(e?"v0.8.59":d,r),a=(0,i.useCallback)(e=>{t(e),o(!0),setTimeout(()=>o(!1),(e?6:8)*4*(1e3/60)+100)},[]),c=(0,i.useCallback)(()=>{l.current&&clearTimeout(l.current);let t=!e;a(t),t&&(l.current=setTimeout(()=>a(!1),3e3))},[e,a]);return(0,i.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),(0,n.jsx)("button",{onClick:c,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 b({selectedSessionId:e,onSelectSession:t,onNewSession:r,onNewWorkbench:o,initialSessionId:l,onInitialRestoreDone:s,refreshKey:d,onSessionDeleted:x,selectedCwd:v,onCwdChange:C}){let[T,z]=(0,i.useState)([]),[I,M]=(0,i.useState)([]),[W,L]=(0,i.useState)(!0),[R,E]=(0,i.useState)(null),[P,$]=(0,i.useState)(null),[D,B]=(0,i.useState)(""),[A,N]=(0,i.useState)(null),[H,O]=(0,i.useState)(!1),[F,U]=(0,i.useState)("project"),[_,K]=(0,i.useState)(null),[V,J]=(0,i.useState)(!1),[Y,q]=(0,i.useState)(!1),[G,Z]=(0,i.useState)(()=>new Set),[X,Q]=(0,i.useState)(()=>(function(){try{let e=window.localStorage.getItem(c)??window.localStorage.getItem("pidex:sidebar:collapsed-projects");return e?new Set(JSON.parse(e)):new Set}catch{return new Set}})()),[ee,et]=(0,i.useState)(null),[er,en]=(0,i.useState)(null),[ei,eo]=(0,i.useState)(null),[el,es]=(0,i.useState)(!1),ea=(0,i.useRef)(null),[ed,ec]=(0,i.useState)(!1),eu=(0,i.useRef)(!1),ep=(0,i.useRef)(!1),eh=(0,i.useRef)(!1),ex=(0,i.useCallback)(async(e=!1)=>{try{e&&(E(null),L(!0));let t=new AbortController,r=setTimeout(()=>t.abort(new DOMException("Loading timed out","TimeoutError")),3e4),[n,i]=await Promise.all([fetch("/api/sessions",{signal:t.signal}),fetch("/api/projects",{signal:t.signal})]);if(clearTimeout(r),!n.ok)throw Error(await h("sessions",n));if(!i.ok)throw Error(await h("projects",i));let o=await n.json(),l=await i.json();z(o.sessions),M(l.projects),E(null)}catch(e){E(e instanceof DOMException&&("AbortError"===e.name||"TimeoutError"===e.name)||e instanceof Error&&/aborted without reason|AbortError/i.test(e.message)?"Loading timed out. Codex may still be starting; try the refresh button.":e instanceof Error?e.message:String(e))}finally{e&&L(!1)}},[]),eg=(0,i.useRef)(!1);(0,i.useEffect)(()=>{let e=!eg.current;eg.current=!0,ex(e)},[ex,d]),(0,i.useEffect)(()=>{let e=window.setInterval(()=>{ex(!1)},15e3);return()=>window.clearInterval(e)},[ex]),(0,i.useEffect)(()=>{let e=()=>{ex(!1)};return window.addEventListener("session-created",e),()=>window.removeEventListener("session-created",e)},[ex]),(0,i.useEffect)(()=>{fetch("/api/home").then(e=>e.json()).then(e=>{e.home&&B(e.home)}).catch(()=>{})},[]);let ef=(0,i.useRef)(!1);(0,i.useEffect)(()=>{if(eu.current){eu.current=!1;return}if(ep.current){ep.current=!1;return}C?.(P)},[P,C]);let ev=(0,i.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 N(n.error??`HTTP ${r.status}`),!1;return ex(!1),!0}catch(e){return N(e instanceof Error?e.message:String(e)),!1}},[ex]),em=(0,i.useCallback)(e=>{fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,touch:!0})}).catch(()=>{})},[]),eb=(0,i.useCallback)(e=>{ep.current=!0,$(e),N(null),Q(t=>{if(!t.has(e))return t;let r=new Set(t);return r.delete(e),p(r),r}),C?.(e),em(e)},[C,em]);(0,i.useEffect)(()=>{if((0!==T.length||0!==I.length)&&null===P){if(l&&!ef.current){ef.current=!0;let e=T.find(e=>e.id===l);if(e){$(e.cwd),em(e.cwd),t(e,!0);return}s?.()}let e=I[0]?.cwd;e&&($(e),em(e))}},[T,I,P,l,t,s,em]);let ey=v??P,ej=(0,i.useCallback)(e=>{if(!e){U("agent"),O(!0);return}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]),ek=(0,i.useCallback)(e=>{if(!e){U("workbench"),O(!0);return}o?.(e)},[o]);(0,i.useCallback)(async e=>{await ev(e,!0)&&(eb(e),O(!1),N(null),"agent"===F&&ej(e),"workbench"===F&&ek(e))},[eb,ej,ek,F,ev]);let ew=(0,i.useCallback)(e=>{K(e),J(!0)},[]),eS=(0,i.useCallback)(()=>{J(!1),K(null)},[]),eC=(0,i.useCallback)(e=>{let t=_??ey;eS(),"agent"===e?ej(t):ek(t)},[eS,ej,ek,ey,_]),eT=(0,i.useCallback)(()=>{ew(ey)},[ey,ew]),ez=(0,i.useCallback)(()=>{U("project"),N(null),O(!0)},[]),eI=(0,i.useMemo)(()=>[...ey&&!I.some(e=>e.cwd===ey)?[{cwd:ey,displayName:f(ey,D),chatCount:T.filter(e=>e.cwd===ey).length,lastAccessed:null,created:null,pinned:!1,sortOrder:null,exists:!0,source:"manual"}]:[],...I].sort((e,t)=>{let r=!0===e.pinned;if(r!==(!0===t.pinned))return r?-1:1;let n="number"==typeof e.sortOrder?e.sortOrder:Number.MAX_SAFE_INTEGER,i="number"==typeof t.sortOrder?t.sortOrder:Number.MAX_SAFE_INTEGER;return n!==i?n-i:(e.displayName||"").localeCompare(t.displayName||"",void 0,{numeric:!0,sensitivity:"base"})}),[T,ey,D,I]),eM=(0,i.useMemo)(()=>{let e=new Map;for(let t of T){let r=t.cwd||"";e.has(r)||e.set(r,[]),e.get(r).push(t)}let t=t=>{let r=[...e.get(t.cwd)??[]].sort((e,t)=>(t.modified||"").localeCompare(e.modified||""));return{project:t,cwd:t.cwd,displayName:t.displayName||f(t.cwd,D),sessions:r,lastAccessed:(t.lastAccessed??t.created??"")||r[0]?.modified||""}},r=eI.filter(e=>!0===e.pinned).map(t);if(ey){let e=eI.find(e=>e.cwd===ey);e&&!0!==e.pinned&&r.push(t(e))}return r},[T,ey,D,eI]);(0,i.useEffect)(()=>{if(0===eM.length||eh.current||(eh.current=!0,!eM[0]?.cwd||window.localStorage.getItem(u)))return;let e=new Set(eM.slice(1).map(e=>e.cwd));Q(t=>!function(e,t){if(e.size!==t.size)return!1;for(let r of e)if(!t.has(r))return!1;return!0}(t,e)?(p(e),e):t),window.localStorage.setItem(u,"1")},[eM]);let eW=(0,i.useCallback)((e,r=!1)=>{e.cwd!==ey&&(eu.current=!0,$(e.cwd)),Q(t=>{if(!t.has(e.cwd))return t;let r=new Set(t);return r.delete(e.cwd),p(r),r}),em(e.cwd),t(e,r)},[t,ey,em]),eL=(0,i.useCallback)(e=>{Q(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),p(r),r})},[]),eR=(0,i.useCallback)(e=>{Z(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),eE=(0,i.useCallback)(async e=>{eo("reorder");try{let t=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({order:e})}),r=await t.json();if(!t.ok||r.error)throw Error(r.error??`HTTP ${t.status}`);M(r.projects??[]),E(null)}catch(e){E(e instanceof Error?e.message:String(e)),ex(!1)}finally{eo(null)}},[ex]),eP=(0,i.useCallback)(async(e,t)=>{eo(`pin:${e}`);try{let r=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,pinned:t})}),n=await r.json();if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);M(n.projects??[]),E(null)}catch(e){E(e instanceof Error?e.message:String(e)),ex(!1)}finally{eo(null)}},[ex]),e$=(0,i.useCallback)((e,t)=>{if(!e||!t||e===t)return;let r=eI.map(e=>e.cwd).filter(Boolean),n=r.indexOf(e),i=r.indexOf(t);if(-1===n||-1===i)return;let o=[...r];o.splice(n,1);let l=o.indexOf(t);o.splice(l,0,e),eE(o)},[eE,eI]),eD=(0,i.useCallback)(async()=>{ec(!0);try{let e=eI.filter(e=>!0===e.pinned).map(e=>e.cwd);e.length>0?await Promise.all(e.map(e=>fetch(`/api/sessions?cwd=${encodeURIComponent(e)}`,{signal:AbortSignal.timeout(3e4)}).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{z(r=>[...r.filter(t=>t.cwd!==e),...t.sessions??[]])}).catch(()=>{}))):await ex(!1)}finally{ec(!1)}},[ex,eI]);return(0,i.useEffect)(()=>{if(!el)return;let e=e=>{ea.current&&!ea.current.contains(e.target)&&es(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[el]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)("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",gap:8},children:[(0,n.jsx)(m,{}),(0,n.jsxs)("div",{style:{display:"flex",gap:6,minWidth:0},children:[(0,n.jsxs)("button",{onClick:eT,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:ey?`New chat in ${ey}`:"New chat in a project path",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 Chat"]}),(0,n.jsx)("button",{onClick:()=>q(!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.jsx)(a,{open:Y,cwd:ey,homeDir:D,onClose:()=>q(!1),onSelectSession:e=>{eW(e)}}),(0,n.jsxs)("div",{ref:ea,style:{position:"relative",marginTop:8,padding:"0 10px",display:"flex",alignItems:"stretch",gap:4},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>es(e=>!e),style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:6,padding:"6px 10px",background:ey?"var(--bg-hover)":"rgba(37,99,235,0.06)",border:ey?"1px solid var(--border)":"1px solid rgba(37,99,235,0.4)",borderRadius:7,cursor:"pointer",fontSize:12,color:"var(--text)",textAlign:"left"},title:ey??"Select project",children:[(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.35",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--accent)"},children:(0,n.jsx)("path",{d:"M1.5 5A1.5 1.5 0 0 1 3 3.5h3l1.2 1.5H13A1.5 1.5 0 0 1 14.5 6.5L13.6 11A1.5 1.5 0 0 1 12.1 12.5H3A1.5 1.5 0 0 1 1.5 11V5Z"})}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",fontSize:11,color:ey?"var(--text)":"var(--text-dim)"},children:ey?eI.find(e=>e.cwd===ey)?.displayName??g(ey,D):"Select project…"}),(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:el?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),ey&&(0,n.jsx)(j,{pinned:eI.find(e=>e.cwd===ey)?.pinned===!0,onToggle:()=>void eP(ey,eI.find(e=>e.cwd===ey)?.pinned!==!0)}),el&&(0,n.jsxs)("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:10,right:10,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 6px 20px rgba(0,0,0,0.10)",overflow:"hidden",maxHeight:280,overflowY:"auto"},children:[0===eI.length&&(0,n.jsx)("div",{style:{padding:"10px 12px",color:"var(--text-dim)",fontSize:11},children:"No projects yet"}),eI.map(e=>{let t=e.cwd===ey;return(0,n.jsx)(k,{project:e,homeDir:D,isCurrent:t,onSelect:()=>{eb(e.cwd),es(!1)},onTogglePinned:()=>void eP(e.cwd,!0!==e.pinned)},e.cwd)}),(0,n.jsxs)("button",{type:"button",onClick:()=>{es(!1),ez()},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"8px 10px",background:"none",border:"none",borderTop:eI.length>0?"1px solid var(--border)":"none",color:"var(--accent)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"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"})]}),"Add project…"]})]})]}),(0,n.jsxs)("div",{style:{flexShrink:0,padding:"10px 10px 6px"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase"},children:"Projects"}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:4,marginLeft:"auto"},children:(0,n.jsx)("button",{type:"button",onClick:eD,disabled:ed,title:"Refresh projects and chats","aria-label":"Refresh projects and chats",style:{width:22,height:22,display:"flex",alignItems:"center",justifyContent:"center",padding:0,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:ed?"var(--accent)":"var(--text-dim)",cursor:ed?"default":"pointer",flexShrink:0},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:{animation:ed?"spin 0.9s linear infinite":void 0},children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 0 1-15.5 6.2"}),(0,n.jsx)("path",{d:"M3 12A9 9 0 0 1 18.5 5.8"}),(0,n.jsx)("path",{d:"M7 18H5.5v1.5"}),(0,n.jsx)("path",{d:"M17 6h1.5V4.5"})]})})})]}),A&&(0,n.jsx)("div",{style:{marginTop:6,color:"#f87171",fontSize:11,lineHeight:1.4,overflowWrap:"anywhere"},children:A})]}),(0,n.jsxs)("div",{style:{flex:"1 1 auto",overflowY:"auto",padding:"6px 8px 8px",minHeight:80,scrollbarWidth:"thin",overscrollBehavior:"contain"},children:[W&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}),R&&(0,n.jsx)("div",{style:{padding:"12px 14px",color:"#f87171",fontSize:12},children:R}),!W&&!R&&0===eM.length&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Open or create a project to start chatting."}),!W&&!R&&eM.map(t=>{let r=X.has(t.cwd),i=t.cwd===ey,o=G.has(t.cwd),l=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 i=function(e){let n=r.get(e),i=new Set;for(;n&&!i.has(n);){if(i.add(n),t.has(n))return n;n=r.get(n)}return null}(e.session.id);i?t.get(i).children.push(e):n.push(e)}let i=e=>{e.sort((e,t)=>(t.session.modified||"").localeCompare(e.session.modified||"")),e.forEach(e=>i(e.children))};return i(n),n}(t.sessions),s=l.length,a=l;if(s>10&&!o){a=l.slice(0,10);let t=l.find(t=>(function e(t,r){return!!r&&(t.session.id===r||t.children.some(t=>e(t,r)))})(t,e));t&&!a.includes(t)&&(a=[...a,t])}let d=s-a.length;return(0,n.jsxs)("div",{style:{marginBottom:6,borderTop:er===t.cwd?"2px solid var(--accent)":"2px solid transparent",paddingTop:2*(er===t.cwd),opacity:ee===t.cwd?.55:1},onDragOver:e=>{ee&&ee!==t.cwd&&(e.preventDefault(),e.dataTransfer.dropEffect="move",en(t.cwd))},onDragLeave:()=>{er===t.cwd&&en(null)},onDrop:e=>{e.preventDefault();let r=e.dataTransfer.getData("text/project-cwd")||ee;en(null),et(null),r&&e$(r,t.cwd)},children:[(0,n.jsx)(w,{group:t,isCurrent:i,isCollapsed:r,isDragging:ee===t.cwd,pinBusy:ei===`pin:${t.cwd}`,onToggle:()=>eL(t.cwd),onSelect:()=>eb(t.cwd),onTogglePinned:()=>void eP(t.cwd,!0!==t.project.pinned),onDragStart:e=>{et(t.cwd),e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/project-cwd",t.cwd)},onDragEnd:()=>{et(null),en(null)}}),!r&&(0,n.jsxs)("div",{style:{marginTop:2,overflow:"hidden",borderRadius:7},children:[0===t.sessions.length?(0,n.jsx)("div",{style:{width:"100%",padding:"10px 12px",color:"var(--text-muted)",textAlign:"left",fontSize:12},children:"No sessions yet. Use New Chat above to start one."}):a.map(t=>(0,n.jsx)(S,{node:t,selectedSessionId:e,onSelectSession:eW,onRenamed:ex,onSessionDeleted:e=>{x?.(e),ex()},depth:0},t.session.id)),(o||d>0)&&s>10&&(0,n.jsx)("button",{type:"button",onClick:()=>eR(t.cwd),style:{width:"100%",padding:"6px 10px",background:"transparent",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:11,textAlign:"center"},children:o?"Show less":`Show ${Math.max(0,d)} more`})]})]},t.cwd||"__no_project")})]}),V&&(0,n.jsx)(y,{cwd:_,onChoose:eC,onClose:eS})]})}function y({cwd:e,onChoose:t,onClose:r}){let i=e?f(e):"Choose a project path next";return(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.28)"},children:(0,n.jsxs)("div",{style:{width:"min(420px, 100%)",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:12,boxShadow:"0 12px 40px rgba(0,0,0,0.24)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"14px 16px 12px",borderBottom:"1px solid var(--border)",display:"flex",justifyContent:"space-between",gap:12},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:14,fontWeight:750},children:"Start a new session"}),(0,n.jsx)("div",{style:{marginTop:5,color:"var(--text-dim)",fontSize:11},children:"Current project"}),(0,n.jsx)("div",{title:e??void 0,style:{marginTop:2,color:"var(--text)",fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:i}),e&&(0,n.jsx)("div",{style:{marginTop:2,color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]}),(0,n.jsx)("button",{type:"button",onClick:r,"aria-label":"Close",title:"Close",style:{width:28,height:28,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:20,lineHeight:1},children:"x"})]}),(0,n.jsxs)("div",{style:{padding:14,display:"grid",gap:10},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>t("agent"),style:{display:"grid",gap:5,textAlign:"left",padding:"13px 14px",border:"1px solid var(--border)",borderRadius:10,background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer"},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:750},children:"Agent Chat"}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",lineHeight:1.45},children:"General coding or analysis chat in this project."})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>t("workbench"),style:{display:"grid",gap:5,textAlign:"left",padding:"13px 14px",border:"1px solid rgba(37,99,235,0.45)",borderRadius:10,background:"rgba(37,99,235,0.08)",color:"var(--text)",cursor:"pointer"},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:750,color:"var(--accent)"},children:"Workbench"}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",lineHeight:1.45},children:"Dedicated R/Python warm-runtime session for data loading, plots, and artifacts."})]})]})]})})}function j({pinned:e,onToggle:t}){return(0,n.jsx)("button",{type:"button",onClick:t,title:e?"Unpin project":"Pin project to sidebar",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:"auto",padding:0,border:"1px solid var(--border)",borderRadius:7,background:e?"rgba(234,179,8,0.12)":"var(--bg-hover)",color:e?"#ca8a04":"var(--text-muted)",cursor:"pointer",flexShrink:0},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:e?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})})}function k({project:e,homeDir:t,isCurrent:r,onSelect:o,onTogglePinned:l}){let[s,a]=(0,i.useState)(!1),d=e.displayName||f(e.cwd,t);return(0,n.jsxs)("div",{onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),style:{display:"flex",alignItems:"center",gap:4,background:r?"var(--bg-selected)":s?"var(--bg-hover)":"none",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("span",{style:{width:10,marginLeft:6,flexShrink:0}}),(0,n.jsxs)("button",{type:"button",onClick:o,title:e.cwd,style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:7,padding:"8px 10px 8px 0",background:"none",border:"none",color:r?"var(--text)":"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11,fontFamily:"var(--font-mono)"},children:[r?(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.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d}),!e.exists&&(0,n.jsx)("span",{style:{flexShrink:0,color:"#f87171",fontSize:10},children:"missing"})]}),(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),l()},title:"Pin to sidebar",tabIndex:s?0:-1,style:{display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28,marginRight:4,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,opacity:+!!s,pointerEvents:s?"auto":"none"},children:(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})})]})}function w({group:e,isCurrent:t,isCollapsed:r,isDragging:o,pinBusy:l,onToggle:s,onSelect:a,onTogglePinned:d,onDragStart:c,onDragEnd:u}){let[p,h]=(0,i.useState)(!1),g=e.lastAccessed,f=Math.max(0,e.project.chatCount??e.sessions.length??0),v=!0===e.project.pinned,m=(0,i.useCallback)(()=>{t?s():a()},[t,a,s]);return(0,n.jsxs)("div",{role:"button",tabIndex:0,draggable:!0,onClick:m,onDragStart:c,onDragEnd:u,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),m())},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),title:e.cwd,style:{width:"100%",height:32,display:"flex",alignItems:"center",gap:5,padding:"0 8px",background:t?"var(--bg-selected)":p?"var(--bg-hover)":"transparent",border:"none",borderRadius:6,color:"var(--text)",cursor:o?"grabbing":"pointer",textAlign:"left",overflow:"hidden",transition:"background 0.12s, opacity 0.12s",opacity:o?.55:1},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",style:{transform:r?"none":"rotate(90deg)",transition:"transform 0.15s",flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),(0,n.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.35",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:t?"var(--accent)":"var(--text-dim)"},children:r?(0,n.jsx)("path",{d:"M1.5 4.5A1.5 1.5 0 0 1 3 3h3l1.2 1.5H13A1.5 1.5 0 0 1 14.5 6v5A1.5 1.5 0 0 1 13 12.5H3A1.5 1.5 0 0 1 1.5 11V4.5Z"}):(0,n.jsx)("path",{d:"M1.5 5A1.5 1.5 0 0 1 3 3.5h3l1.2 1.5H13A1.5 1.5 0 0 1 14.5 6.5L13.6 11A1.5 1.5 0 0 1 12.1 12.5H3A1.5 1.5 0 0 1 1.5 11V5Z"})}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:t?650:560,color:"var(--text)"},children:e.displayName}),!e.project.exists&&(0,n.jsx)("span",{style:{flexShrink:0,color:"#f87171",fontSize:10},children:"missing"}),!p&&f>0&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10,whiteSpace:"nowrap"},children:[f," ",1===f?"chat":"chats"]}),!p&&g&&(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10,whiteSpace:"nowrap"},children:x(g)}),v?(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),d()},title:"Unpin project",tabIndex:p?0:-1,style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,border:"none",borderRadius:5,background:"rgba(234,179,8,0.12)",color:"#ca8a04",cursor:"pointer",flexShrink:0,opacity:p?1:.85,transition:"opacity 0.12s"},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})}):(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),d()},disabled:l,title:"Pin project to sidebar",tabIndex:p?0:-1,style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:l?"wait":"pointer",flexShrink:0,opacity:+!!p,transition:"opacity 0.12s, background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="#ca8a04"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M12 17v5"}),(0,n.jsx)("path",{d:"M5 3h14l-4 7v4l-6 3v-7L5 3Z"})]})}),(0,n.jsx)("span",{title:"Drag to reorder",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:18,height:22,flexShrink:0,color:"var(--text-dim)",opacity:p?1:.35,transition:"opacity 0.12s",cursor:"grab"},children:(0,n.jsxs)("svg",{width:"10",height:"12",viewBox:"0 0 10 12",fill:"currentColor",children:[(0,n.jsx)("circle",{cx:"2",cy:"2",r:"1"}),(0,n.jsx)("circle",{cx:"8",cy:"2",r:"1"}),(0,n.jsx)("circle",{cx:"2",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"8",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"2",cy:"10",r:"1"}),(0,n.jsx)("circle",{cx:"8",cy:"10",r:"1"})]})})]})}function S({node:e,selectedSessionId:t,onSelectSession:r,onRenamed:o,onSessionDeleted:l,depth:s}){let[a,d]=(0,i.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)(C,{session:e.session,isSelected:e.session.id===t,onClick:()=>r(e.session),onRenamed:o,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)(S,{node:e,selectedSessionId:t,onSelectSession:r,onRenamed:o,onSessionDeleted:l,depth:s+1},e.session.id))})]})}function C({session:e,isSelected:t,onClick:r,onRenamed:o,onDeleted:l,depth:s=0,hasChildren:a=!1,collapsed:d=!1,onToggleCollapse:c}){let[u,p]=(0,i.useState)(!1),[h,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(""),[m,b]=(0,i.useState)(!1),[y,j]=(0,i.useState)(!1),k=(0,i.useRef)(null),w=e.name||e.firstMessage.slice(0,50)||e.id.slice(0,12),S=(0,i.useCallback)(t=>{t.stopPropagation(),v(e.name??""),g(!0),setTimeout(()=>k.current?.select(),0)},[e.name]),T=(0,i.useCallback)(async()=>{let t=f.trim();if(g(!1),t!==(e.name??""))try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),o?.()}catch{}},[f,e.id,e.name,o]),z=(0,i.useCallback)(e=>{e.stopPropagation(),b(!0)},[]),I=(0,i.useCallback)(async t=>{t.stopPropagation(),b(!1),j(!0);try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"DELETE"}),l?.(e.id)}catch{j(!1)}},[e.id,l]),M=(0,i.useCallback)(e=>{e.stopPropagation(),b(!1)},[]),W="workbench"===e.sessionKind;return(0,n.jsx)("div",{onClick:m||h?void 0:r,onMouseEnter:()=>p(!0),onMouseLeave:()=>{p(!1)},style:{display:"flex",alignItems:"center",padding:"7px 8px",paddingLeft:s>0?12*s+14:14,paddingRight:8,cursor:m||h?"default":"pointer",background:m?"rgba(239,68,68,0.06)":t?"var(--bg-selected)":u?"var(--bg-hover)":"transparent",borderLeft:m?"2px solid #ef4444":t?"2px solid var(--accent)":"2px solid transparent",transition:"background 0.1s",opacity:y?.5:1,gap:6,overflow:"hidden"},children:m?(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:["“",w.slice(0,22),w.length>22?"…":"","”"]}),"?"]}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,flexShrink:0},children:[(0,n.jsxs)("button",{onClick:I,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:M,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:k,value:f,onChange:e=>v(e.target.value),onBlur:T,onKeyDown:e=>{"Enter"===e.key&&T(),"Escape"===e.key&&g(!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:28}}):(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===s&&(0,n.jsx)("span",{"aria-hidden":"true",style:{width:5,height:5,borderRadius:"50%",background:t?"var(--accent)":"var(--text-dim)",opacity:t?1:.35,flexShrink:0}}),W&&(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",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.jsxs)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:1},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:t?600:500,lineHeight:"18px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:W?"var(--accent)":"var(--text)"},title:w,children:w}),(0,n.jsxs)("div",{style:{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"]}),!1===e.cwdExists&&(0,n.jsx)("span",{title:`Project path missing: ${e.cwd}`,style:{color:"#f87171"},children:"missing path"})]})]}),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:S,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",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:z,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",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"})]})})]})]})})}var T=r(94456);let z="subagent",I=["retain","recall","reflect"],M=[],W=["read","bash","edit","write"],L=["bash","read","edit","write","grep","find","ls"],R=[...L,"kernel_plot_run","kernel_plot_render","kernel_plot_stop","kernel_plot_artifacts"],E=[...L,z];function P(e){return[...e].sort().join(",")}function $(e){switch(e){case"none":return M;case"default":return W;case"workbench":return R;case"agent":return E;default:return L}}function D(e,t){return[...new Set([...$(e),...t])]}let B=new Map,A=["off","default","full","agent"],N={off:"none",default:"default",full:"full",agent:"agent"},H={off:"无工具,纯聊天",default:"4 项内置工具",full:"全部内置工具",agent:"High + 子代理"},O={retain:{label:"retain",description:"保存稳定事实或决策到项目记忆"},recall:{label:"recall",description:"检索项目记忆中的相关上下文"},reflect:{label:"reflect",description:"基于已存记忆做综合回应"}},F=["auto","off","minimal","low","medium","high","xhigh"],U={auto:"沿用 pi 默认设置",off:"关闭推理",minimal:"最少推理",low:"低强度推理",medium:"中等推理",high:"高强度推理",xhigh:"最高强度推理"},_=[{command:"/compact",label:"/compact",description:"压缩当前上下文",kind:"native"},{command:"/init",label:"/init",description:"快捷插入,交给模型处理初始化任务",kind:"shortcut"},{command:"/memory",label:"/memory",description:"快捷插入,交给模型处理项目记忆任务",kind:"shortcut"}];function K({doc:e,onRemove:t}){var r;let i=e.fileName.split(".").pop()?.toLowerCase()??"",o=function(e){switch(e){case"pdf":return{emoji:"\uD83D\uDCC4",color:"#ef4444"};case"docx":case"doc":return{emoji:"\uD83D\uDCDD",color:"#3b82f6"};case"xlsx":case"xls":return{emoji:"\uD83D\uDCCA",color:"#22c55e"};case"pptx":case"ppt":return{emoji:"\uD83D\uDCFD",color:"#f97316"};default:return{emoji:"\uD83D\uDCCE",color:"var(--text-muted)"}}}(i),l=(r=e.size)<1024?`${r} B`:r<1048576?`${(r/1024).toFixed(1)} KB`:`${(r/1048576).toFixed(1)} MB`;return(0,n.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:6,padding:"5px 10px 5px 7px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,maxWidth:200},title:e.fileName,children:[(0,n.jsx)("span",{style:{color:o.color,fontSize:14,flexShrink:0},children:o.emoji}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:1.3},children:e.fileName}),(0,n.jsxs)("div",{style:{fontSize:10,color:"var(--text-dim)",lineHeight:1.3},children:[i.toUpperCase()," \xb7 ",l,e.extractionError?" \xb7 no text":e.truncated?" \xb7 truncated":e.extractedText?" \xb7 text":""]})]}),(0,n.jsx)("button",{onClick:t,style:{flexShrink:0,width:14,height:14,borderRadius:"50%",background:"var(--bg-hover)",border:"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,color:"var(--text-dim)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)"},children:(0,n.jsxs)("svg",{width:"7",height:"7",viewBox:"0 0 7 7",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"1",y1:"1",x2:"6",y2:"6"}),(0,n.jsx)("line",{x1:"6",y1:"1",x2:"1",y2:"6"})]})})]})}function V(e){return e.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&apos;/g,"'")}async function J(e){let t=await Promise.all([r.e(2213),r.e(2619)]).then(r.bind(r,12810));t.GlobalWorkerOptions.workerSrc=new r.U(r(53228)).toString();let n=await t.getDocument({data:e.slice(0)}).promise,i=[];for(let e=1;e<=n.numPages;e+=1){let t=await n.getPage(e),r=(await t.getTextContent()).items.map(e=>"str"in e?e.str:"").filter(Boolean).join(" ");r.trim()&&i.push(`Page ${e}
2
2
  ${r}`)}return i.join("\n\n")}async function Y(e){let t=(await Promise.all([r.e(2619),r.e(4453)]).then(r.t.bind(r,54453,23))).default,n=await t.loadAsync(e),i=["word/document.xml",...Object.keys(n.files).filter(e=>/^word\/(footnotes|endnotes|comments)\.xml$/i.test(e)).sort()],o=[];for(let e of i){let t=n.file(e);if(!t)continue;let r=[...(await t.async("string")).replace(/<w:(br|cr)[^>]*\/>/g,"\n").replace(/<\/w:p>/g,"\n").matchAll(/<w:t[^>]*>([\s\S]*?)<\/w:t>/g)];o.push(...r.map(e=>V(e[1])))}return o.join("").replace(/[ \t]+\n/g,"\n")}async function q(e){let t=await Promise.all([r.e(3524),r.e(8436)]).then(r.bind(r,15967)),n=t.read(e,{type:"array"});return n.SheetNames.map(e=>{let r=n.Sheets[e],i=t.utils.sheet_to_csv(r);return`Sheet: ${e}
3
- ${i}`}).join("\n\n")}async function Z(e){let t=(await Promise.all([r.e(2619),r.e(4453)]).then(r.t.bind(r,54453,23))).default,n=await t.loadAsync(e),i=Object.keys(n.files).map(e=>({name:e,match:/^ppt\/slides\/slide(\d+)\.xml$/i.exec(e)})).filter(e=>null!==e.match).sort((e,t)=>Number(e.match[1])-Number(t.match[1])),o=[];for(let{name:e,match:t}of i){let r=[...(await n.file(e).async("string")).matchAll(/<a:t[^>]*>([\s\S]*?)<\/a:t>/g)].map(e=>V(e[1]).trim()).filter(Boolean);r.length&&o.push(`Slide ${t[1]}
4
- ${r.join("\n")}`)}return o.join("\n\n")}async function G(e,t){let r=e.name.split(".").pop()?.toLowerCase()??"";try{let n,i="";if(e.type.startsWith("text/")||["csv","tsv","md","txt","json","xml"].includes(r))i=new TextDecoder("utf-8").decode(t);else if("pdf"===r||"application/pdf"===e.type)i=await J(t);else if("docx"===r)i=await Y(t);else if("xlsx"===r)i=await q(t);else{if("pptx"!==r)return{extractionError:"Text extraction is not supported for this file type"};i=await Z(t)}let{text:o,truncated:l}=(n=i.replace(/\r\n/g,"\n").replace(/\n{4,}/g,"\n\n\n").trim()).length<=6e4?{text:n,truncated:!1}:{text:`${n.slice(0,6e4)}
3
+ ${i}`}).join("\n\n")}async function G(e){let t=(await Promise.all([r.e(2619),r.e(4453)]).then(r.t.bind(r,54453,23))).default,n=await t.loadAsync(e),i=Object.keys(n.files).map(e=>({name:e,match:/^ppt\/slides\/slide(\d+)\.xml$/i.exec(e)})).filter(e=>null!==e.match).sort((e,t)=>Number(e.match[1])-Number(t.match[1])),o=[];for(let{name:e,match:t}of i){let r=[...(await n.file(e).async("string")).matchAll(/<a:t[^>]*>([\s\S]*?)<\/a:t>/g)].map(e=>V(e[1]).trim()).filter(Boolean);r.length&&o.push(`Slide ${t[1]}
4
+ ${r.join("\n")}`)}return o.join("\n\n")}async function Z(e,t){let r=e.name.split(".").pop()?.toLowerCase()??"";try{let n,i="";if(e.type.startsWith("text/")||["csv","tsv","md","txt","json","xml"].includes(r))i=new TextDecoder("utf-8").decode(t);else if("pdf"===r||"application/pdf"===e.type)i=await J(t);else if("docx"===r)i=await Y(t);else if("xlsx"===r)i=await q(t);else{if("pptx"!==r)return{extractionError:"Text extraction is not supported for this file type"};i=await G(t)}let{text:o,truncated:l}=(n=i.replace(/\r\n/g,"\n").replace(/\n{4,}/g,"\n\n\n").trim()).length<=6e4?{text:n,truncated:!1}:{text:`${n.slice(0,6e4)}
5
5
 
6
- [truncated after 60000 characters]`,truncated:!0};if(!o)return{extractionError:"No extractable text found"};return{extractedText:o,truncated:l}}catch(e){return{extractionError:e instanceof Error?e.message:String(e)}}}let X=(0,i.forwardRef)(function({onSend:e,onAbort:t,onSteer:r,onFollowUp:o,isStreaming:l,model:s,modelNames:a,modelList:d,onModelChange:c,onCompact:p,onAbortCompaction:u,isCompacting:h,compactError:x,toolPreset:g,sessionKind:f,onToolPresetChange:v,memoryTools:m,onMemoryToolsChange:y,thinkingLevel:b,onThinkingLevelChange:j,availableThinkingLevels:k,thinkingLevelMap:w,retryInfo:S,soundEnabled:C,onSoundToggle:T,cornerBadge:z,promptHistory:M,sessionHistoryKey:W},L){let R,E,P,[$,B]=(0,i.useState)(""),[V,J]=(0,i.useState)(!1),[Y,q]=(0,i.useState)(null),[Z,X]=(0,i.useState)(!1),[Q,ee]=(0,i.useState)(!1),[et,er]=(0,i.useState)(!1),[en,ei]=(0,i.useState)(!1),[eo,el]=(0,i.useState)(!1),[es,ea]=(0,i.useState)(null),[ed,ec]=(0,i.useState)([]),[ep,eu]=(0,i.useState)([]),eh=function(e=768){let[t,r]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t=window.matchMedia(`(max-width: ${e}px)`),n=()=>r(t.matches);return n(),t.addEventListener?.("change",n),()=>t.removeEventListener?.("change",n)},[e]),t}(),ex=eh?{display:"none"}:void 0,eg=eh?28:32,ef=eh?"6px 8px":"8px 12px",ev=eh?160:180,em=eh&&!l,ey=eo?"var(--text)":"var(--text-muted)",eb={padding:"7px 8px",borderRadius:8,background:"var(--bg-panel)",border:"1px solid var(--border)",width:"100%",textAlign:"left",cursor:"pointer"},ej=eh?{position:"sticky",bottom:0,zIndex:30,padding:"8px 0 calc(env(safe-area-inset-bottom, 0px) + 8px)",background:"linear-gradient(to top, color-mix(in srgb, var(--bg) 96%, transparent), color-mix(in srgb, var(--bg) 86%, transparent))",backdropFilter:"blur(10px)",WebkitBackdropFilter:"blur(10px)",borderTop:"1px solid color-mix(in srgb, var(--border) 65%, transparent)"}:{flexShrink:0,background:"transparent",padding:"0 16px 8px",paddingRight:52},[ek,ew]=(0,i.useState)(null),eS=(0,i.useRef)(null),eC=(0,i.useRef)(null),eT=(0,i.useRef)(null),ez=(0,i.useRef)(null),eI=(0,i.useRef)(null),eM=(0,i.useRef)(null),eW=(0,i.useRef)(null),eL=(0,i.useRef)(null),eR=(0,i.useRef)(null),eE=(0,i.useRef)(null),eP=(0,i.useCallback)(e=>{let t=eS.current;if(!t)return void B(t=>t+(t?" ":"")+e);let r=t.selectionStart??t.value.length,n=t.selectionEnd??t.value.length,i=t.value.slice(0,r),o=t.value.slice(n),l=!(i.length>0)||i.endsWith(" ")||i.endsWith("\n")?"":" ";B(i+l+e+o),requestAnimationFrame(()=>{let t=eS.current;if(!t)return;let n=r+l.length+e.length;t.setSelectionRange(n,n),t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`})},[]);(0,i.useImperativeHandle)(L,()=>({insertIfEmpty(e){let t=eS.current;(t?t.value:$).trim()||(B(e),requestAnimationFrame(()=>{t&&(t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)}))},insertText(e){eP(e)},addImages(e){e$(e)},addFiles(e){eB(e)}}));let e$=(0,i.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/"));if(!t.length)return;let r=await Promise.all(t.map(e=>new Promise((t,r)=>{let n=new FileReader;n.onload=()=>{t({data:n.result.split(",")[1],mimeType:e.type,previewUrl:URL.createObjectURL(e)})},n.onerror=r,n.readAsDataURL(e)})));ec(e=>[...e,...r])},[]),eB=(0,i.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/")),r=e.filter(e=>!e.type.startsWith("image/"));if(t.length&&e$(t),r.length){let e=await Promise.all(r.map(e=>new Promise((t,r)=>{let n=new FileReader;n.onload=async()=>{let r=n.result,i=await G(e,r);t({data:r,fileName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...i})},n.onerror=r,n.readAsArrayBuffer(e)})));eu(t=>[...t,...e])}},[e$]),eD=(0,i.useCallback)(e=>{ec(t=>{let r=[...t];return URL.revokeObjectURL(r[e].previewUrl),r.splice(e,1),r})},[]),eN=(0,i.useCallback)(e=>{eu(t=>{let r=[...t];return r.splice(e,1),r})},[]),eA=(0,i.useCallback)(()=>{ec(e=>(e.forEach(e=>URL.revokeObjectURL(e.previewUrl)),[])),eu([])},[]),eO=d&&d.length>0?d.map(e=>({provider:e.provider,modelId:e.id,name:e.name,input:e.input})):Object.entries(a??{}).map(([e,t])=>({provider:s?.provider??"unknown",modelId:e,name:t})),eH=[];for(let e of eO){let t=eH.find(t=>t.provider===e.provider);t?t.options.push(e):eH.push({provider:e.provider,options:[e]})}let eF=s?eO.find(e=>e.modelId===s.modelId&&e.provider===s.provider)?.name??s.modelId:eO.length>0?eO[0].name:null,eU=s?eO.find(e=>e.modelId===s.modelId&&e.provider===s.provider):eO[0],e_=eU?.input?.includes("image")??!0,eK=ed.length>0&&eU?.input!==void 0&&!e_,eV=(!!$.trim()||ed.length>0||ep.length>0)&&!eK,eJ=p?_:_.filter(e=>"/compact"!==e.command),eY=eJ.filter(e=>"native"===e.kind),eq=eJ.filter(e=>"shortcut"===e.kind),eZ=m??[],eG=eZ.length>0?`${eZ.length} enabled`:"off",eX=eO.length>0&&!!eF&&!!c,eQ=!!j,e0=!!v&&"workbench"!==f,e1=eF??"Default",e2=(()=>{let e=b??"auto";if("auto"===e||!w)return e;let t=w[e];return null!=t?t:e})(),e5=(g??"full")==="workbench"?"workbench":Object.entries(A).find(([,e])=>e===(g??"full"))?.[0]??"full",e4=eh?26:32,e3=eh?7:9,e8=eh?3:6,e6={position:"fixed",left:8,right:8,bottom:"calc(env(safe-area-inset-bottom, 0px) + 8px)",zIndex:500,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:12,boxShadow:"0 -6px 24px rgba(0,0,0,0.14)",overflow:"hidden",maxHeight:"min(60dvh, 420px)"},e7=eh&&(V||Z||Q||et||en||eo);(0,i.useEffect)(()=>{eK||ew(null)},[eK]);let e9=(0,i.useCallback)(e=>{if(!$.trim()){B(e),requestAnimationFrame(()=>{let t=eS.current;t&&(t.focus(),t.setSelectionRange(e.length,e.length),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)});return}eP(e)},[eP,$]),te=(0,i.useCallback)(()=>{let t=$.trim();if(t||ed.length||ep.length){if(ed.length&&!e_)return void ew("当前模型不支持图片输入。请切换到带 image 标记的模型后再发送。");if(!l){if("/compact"===t&&!ed.length&&!ep.length&&p){h?u?.():p(),B(""),eS.current&&(eS.current.style.height="auto");return}e(t,ed.length?ed:void 0,ep.length?ep:void 0),B(""),eA(),eS.current&&(eS.current.style.height="auto")}}},[$,ed,ep,e_,l,e,eA,p,u,h]),tt=(0,i.useCallback)(e=>{let t=$.trim();if(!t&&!ed.length&&!ep.length)return;if(ed.length&&!e_)return void ew("当前模型不支持图片输入。请切换到带 image 标记的模型后再发送。");let n=ed.length?ed:void 0,i=ep.length?ep:void 0;"steer"===e&&r?r(t,n,i):"followup"===e&&o&&o(t,n,i),B(""),eA(),eS.current&&(eS.current.style.height="auto")},[$,ed,ep,e_,r,o,eA]),tr=M??[],tn=W??null,ti=(0,i.useCallback)(e=>{if("ArrowUp"===e.key&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey&&tr.length>0){let t=eS.current;if(!t)return;let r=t.selectionStart??0;if(t.value.slice(0,r).includes("\n"))return;e.preventDefault();let n=function(e,t,r){let n;if(!e||0===r.length)return null;let i=((n=D.get(e))||(n={cursor:-1,draftSnapshot:""},D.set(e,n)),n);if(-1===i.cursor)i.draftSnapshot=t,i.cursor=0;else{if(!(i.cursor<r.length-1))return null;i.cursor+=1}return r[i.cursor]??null}(tn,t.value,tr);null!==n&&(B(n),requestAnimationFrame(()=>{t.setSelectionRange(n.length,n.length)}));return}if("ArrowDown"===e.key&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey&&function(e){if(!e)return!1;let t=D.get(e);return(t?.cursor??-1)>=0}(tn)){e.preventDefault();let t=function(e,t){if(!e)return null;let r=D.get(e);if(!r||-1===r.cursor)return null;if(r.cursor>0)return r.cursor-=1,{text:t[r.cursor]??"",returnedToPresent:!1};let n=r.draftSnapshot;return r.cursor=-1,r.draftSnapshot="",{text:n,returnedToPresent:!0}}(tn,tr);t&&(B(t.text),t.returnedToPresent&&requestAnimationFrame(()=>{let e=eS.current;e&&e.setSelectionRange(t.text.length,t.text.length)}));return}"Enter"===e.key&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),tn&&D.set(tn,{cursor:-1,draftSnapshot:""}),l&&(r||o)?tt(r?"steer":"followup"):te())},[l,r,o,tt,te,tr,tn]),to=(0,i.useCallback)(()=>{let e=eS.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)},[]),tl=(0,i.useCallback)(e=>{let t=Array.from(e.clipboardData?.items??[]).filter(e=>"file"===e.kind&&(e.type.startsWith("image/")||e.type.includes("pdf")||e.type.includes("officedocument")||e.type.includes("msword")||e.type.includes("ms-")));t.length&&(e.preventDefault(),eB(t.map(e=>e.getAsFile()).filter(e=>null!==e)))},[eB]);return(0,i.useEffect)(()=>{if(!V&&!Z&&!Q&&!et&&!en&&!eo)return;let e=e=>{let t=e.target;if(!(t instanceof Node))return;let r=!!eC.current?.contains(t),n=!!eT.current?.contains(t);r||n||J(!1),ez.current?.contains(t)||X(!1),eI.current?.contains(t)||ee(!1),eM.current?.contains(t)||er(!1),eW.current?.contains(t)||ei(!1),eL.current?.contains(t)||el(!1)};return document.addEventListener("pointerdown",e,!0),()=>{document.removeEventListener("pointerdown",e,!0)}},[V,Z,Q,et,en,eo]),(0,i.useEffect)(()=>{if(!v)return;let e=!1;return fetch("/api/subagents/status").then(e=>e.ok?e.json():null).then(t=>{e||ea(!!t?.ready)}).catch(()=>{e||ea(!1)}),()=>{e=!0}},[v]),(0,n.jsxs)("div",{style:ej,children:[e7&&(0,n.jsx)("div",{"aria-hidden":!0,onClick:()=>{J(!1),X(!1),ee(!1),er(!1),ei(!1),el(!1)},style:{position:"fixed",inset:0,zIndex:490,background:"rgba(15, 23, 42, 0.18)",backdropFilter:"blur(1.5px)",WebkitBackdropFilter:"blur(1.5px)"}}),(0,n.jsx)("input",{ref:eR,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{e$(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsx)("input",{ref:eE,type:"file",accept:".pdf,.docx,.xlsx,.pptx,.doc,.xls,.ppt,application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.presentationml.presentation",multiple:!0,style:{display:"none"},onChange:e=>{eB(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsxs)("div",{style:{maxWidth:eh?"100%":820,margin:"0 auto",position:"relative",width:"100%",padding:eh?"0 8px":void 0,boxSizing:"border-box"},children:[z&&(0,n.jsx)("div",{style:{position:"absolute",right:8,top:-22,display:"flex",alignItems:"center",justifyContent:"flex-end",maxWidth:"min(320px, 60vw)",minHeight:18,zIndex:2,fontFamily:"var(--font-mono)",overflow:"hidden"},children:z}),S&&(0,n.jsxs)("div",{style:{marginBottom:eh?6:8,padding:eh?"4px 8px":"5px 10px",background:"rgba(234,179,8,0.08)",border:"1px solid rgba(234,179,8,0.25)",borderRadius:6,fontSize:eh?11:12,color:"rgba(180,130,0,0.9)",display:"flex",alignItems:"center",gap:6},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:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}),(0,n.jsx)("path",{d:"M3 3v5h5"})]}),"Retrying (",S.attempt,"/",S.maxAttempts,")…",S.errorMessage&&(0,n.jsxs)("span",{style:{opacity:.7,marginLeft:4},children:["— ",S.errorMessage]})]}),(ed.length>0||ep.length>0)&&(0,n.jsxs)("div",{style:{marginBottom:6},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"flex-end"},children:[ed.map((e,t)=>(0,n.jsxs)("div",{style:{position:"relative",flexShrink:0},children:[(0,n.jsx)("img",{src:e.previewUrl,alt:"",style:{width:56,height:56,objectFit:"cover",borderRadius:6,border:`1px solid ${eK?"rgba(220,38,38,0.45)":"var(--border)"}`,display:"block"}}),(0,n.jsx)("button",{onClick:()=>eD(t),style:{position:"absolute",top:-4,right:-4,width:16,height:16,borderRadius:"50%",background:"var(--bg-panel)",border:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,color:"var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"1",y1:"1",x2:"7",y2:"7"}),(0,n.jsx)("line",{x1:"7",y1:"1",x2:"1",y2:"7"})]})})]},`img-${t}`)),ep.map((e,t)=>(0,n.jsx)(K,{doc:e,onRemove:()=>eN(t)},`doc-${t}`))]}),(eK||ek)&&(0,n.jsxs)("div",{style:{marginTop:6,display:"flex",alignItems:"center",gap:6,fontSize:eh?11:12,color:"rgba(185,28,28,0.95)"},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:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),(0,n.jsx)("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),(0,n.jsx)("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),(0,n.jsx)("span",{children:ek??"当前模型不支持图片输入。请切换到带 image 标记的模型后再发送。"})]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:eh?4:8,alignItems:eh?"flex-end":"center",background:"var(--bg)",border:`1px solid ${l&&(r||o)?"rgba(234,179,8,0.4)":"color-mix(in srgb, var(--border) 70%, transparent)"}`,borderRadius:eh?13:14,padding:eh?"8px 8px 8px 10px":"10px 10px 10px 14px",boxShadow:"0 1px 2px rgba(15,23,42,0.04), 0 8px 24px -12px rgba(15,23,42,0.10)",transition:"border-color 0.15s, background 0.15s, box-shadow 0.15s"},children:[(0,n.jsx)("textarea",{ref:eS,value:$,onChange:e=>B(e.target.value),onKeyDown:ti,onInput:to,onPaste:tl,placeholder:l&&(r||o)?"Steer 立即注入 / Follow-up 排队…":l?"Agent is running…":"Message…",rows:1,style:{flex:1,alignSelf:eh?"stretch":void 0,background:"none",border:"none",outline:"none",resize:"none",color:"var(--text)",fontSize:14,lineHeight:1.6,fontFamily:"inherit",minHeight:24,maxHeight:200,overflow:"auto",paddingTop:+!!eh,paddingBottom:+!!eh}}),l?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:eh?4:6,flexShrink:0,alignSelf:"flex-end"},children:[r&&(0,n.jsxs)("button",{onClick:()=>tt("steer"),disabled:!eV,title:eK?"当前模型不支持图片输入":"打断 Agent 当前运行,立即注入消息",style:{display:"flex",alignItems:"center",gap:5*!eh,padding:eh?"6px 8px":"7px 12px",background:eV?"rgba(234,179,8,0.12)":"none",border:"1px solid rgba(234,179,8,0.35)",borderRadius:8,color:eV?"rgba(180,130,0,1)":"var(--text-dim)",cursor:eV?"pointer":"not-allowed",fontSize:13,fontWeight:600,letterSpacing:"-0.01em",transition:"background 0.12s"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M5 1 L9 5 L5 9"}),(0,n.jsx)("line",{x1:"1",y1:"5",x2:"9",y2:"5"})]}),!eh&&"Steer"]}),o&&(0,n.jsxs)("button",{onClick:()=>tt("followup"),disabled:!eV,title:eK?"当前模型不支持图片输入":"在 Agent 完成后排队发送",style:{display:"flex",alignItems:"center",gap:5*!eh,padding:eh?"6px 8px":"7px 12px",background:eV?"rgba(129,140,248,0.12)":"none",border:"1px solid rgba(129,140,248,0.35)",borderRadius:8,color:eV?"rgba(99,102,241,1)":"var(--text-dim)",cursor:eV?"pointer":"not-allowed",fontSize:13,fontWeight:600,letterSpacing:"-0.01em",transition:"background 0.12s"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"1",x2:"5",y2:"6"}),(0,n.jsx)("polyline",{points:"2.5 3.5 5 1 7.5 3.5"}),(0,n.jsx)("line",{x1:"2",y1:"9",x2:"8",y2:"9"})]}),!eh&&"Follow-up"]})]}):(0,n.jsxs)("button",{onClick:te,disabled:!eV,title:eK?"当前模型不支持图片输入":"Send",style:{flexShrink:0,alignSelf:"flex-end",display:"flex",alignItems:"center",gap:eh?3:6,padding:eh?"5px 9px":"7px 14px",marginBottom:+!!eh,background:eV?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:8,color:eV?"#fff":"var(--text-dim)",cursor:eV?"pointer":"not-allowed",fontSize:eh?11:13,fontWeight:600,letterSpacing:"-0.01em",boxShadow:eV?"0 1px 3px rgba(37,99,235,0.25)":"none",transition:"background 0.15s, box-shadow 0.15s"},children:[(0,n.jsxs)("svg",{width:eh?13:14,height:eh?13:14,viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"7",x2:"11",y2:"7"}),(0,n.jsx)("polyline",{points:"7.5 3 12 7 7.5 11"})]}),"Send"]})]}),(0,n.jsxs)("div",{className:"chat-input-toolbar",style:{marginTop:eh?5:8,display:"flex",alignItems:eh?"flex-start":"center",gap:e8,flexWrap:eh?"wrap":"nowrap"},children:[(0,n.jsxs)("div",{className:"chat-input-toolbar-left",style:{flex:eh?"1 1 100%":"0 0 auto",width:eh?"100%":void 0,display:"flex",alignItems:"center",gap:2*!eh,flexWrap:eh?"wrap":"nowrap",rowGap:4*!!eh},children:[(0,n.jsx)("button",{onClick:()=>eR.current?.click(),disabled:l,title:"Attach image (right-click for document)",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:e4,height:e4,padding:0,background:"none",border:"none",borderRadius:e3,color:ed.length||ep.length?"var(--accent)":"var(--text-muted)",cursor:l?"not-allowed":"pointer",opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=ed.length||ep.length?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color=ed.length||ep.length?"var(--accent)":"var(--text-muted)"},onContextMenu:e=>{e.preventDefault(),eE.current?.click()},children:(0,n.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})})}),(0,n.jsxs)("div",{ref:ez,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>{l||(X(e=>!e),ee(!1),J(!1),er(!1),ei(!1),el(!1))},disabled:l,title:"插入斜杠命令",style:{position:"relative",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:e4,height:e4,padding:0,background:Z?"var(--bg-hover)":"none",border:"none",borderRadius:e3,color:x?"#ef4444":"var(--text-muted)",cursor:l?"not-allowed":"pointer",opacity:l?.5:1,fontSize:15,fontWeight:700,fontFamily:"var(--font-mono)",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=x?"#ef4444":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=Z?"var(--bg-hover)":"none",e.currentTarget.style.color=x?"#ef4444":"var(--text-muted)"},children:["/",x&&(0,n.jsx)("span",{style:{position:"absolute",top:7,right:7,width:5,height:5,borderRadius:"50%",background:"#ef4444"}})]}),Z&&(0,n.jsxs)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",left:0,zIndex:100,minWidth:320,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)"},overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderBottom:x?"1px solid var(--border)":"none"},children:"Commands"}),x&&(0,n.jsx)("div",{style:{padding:"7px 10px",fontSize:11,color:"#ef4444",background:"rgba(239,68,68,0.06)",borderBottom:"1px solid var(--border)",lineHeight:1.45},children:x}),eY.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Native"}),eY.map(e=>(0,n.jsxs)("button",{onClick:()=>{(X(!1),"/compact"===e.command&&h)?u?.():e9(e.command)},style:{display:"flex",alignItems:"center",gap:eh?6:8,width:"100%",padding:ef,background:"none",border:"none",color:"/compact"===e.command&&h?"#ef4444":"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="none"},children:[(0,n.jsx)("span",{style:{width:18,flexShrink:0,display:"flex",justifyContent:"center",color:"/compact"===e.command&&h?"#ef4444":"var(--text-dim)"},children:"/compact"===e.command&&h?(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,n.jsx)("rect",{x:"2",y:"2",width:"6",height:"6",rx:"1",fill:"currentColor"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"4 14 10 14 10 20"}),(0,n.jsx)("polyline",{points:"20 10 14 10 14 4"}),(0,n.jsx)("line",{x1:"10",y1:"14",x2:"3",y2:"21"}),(0,n.jsx)("line",{x1:"21",y1:"3",x2:"14",y2:"10"})]})}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0,display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text)"},children:"/compact"===e.command&&h?"停止压缩":e.label}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:"/compact"===e.command&&h?"中止当前压缩任务":e.description})]})]},e.command))]}),eq.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{marginTop:2*(eY.length>0),padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderTop:eY.length>0?"1px solid var(--border)":"none"},children:"Prompt Shortcuts"}),eq.map(e=>(0,n.jsxs)("button",{onClick:()=>{X(!1),e9(e.command)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:ef,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="none"},children:[(0,n.jsx)("span",{style:{width:18,flexShrink:0,display:"flex",justifyContent:"center",color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:13},children:"/"}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0,display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text)"},children:e.label}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:e.description})]})]},e.command))]})]})]}),y&&(0,n.jsxs)("div",{ref:eI,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>{l||(ee(e=>!e),X(!1),J(!1),er(!1),ei(!1),el(!1))},disabled:l,title:"选择 retain / recall / reflect",style:{position:"relative",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:38,height:eg,padding:0,background:Q?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:eZ.length>0?"var(--accent)":"var(--text-muted)",cursor:l?"not-allowed":"pointer",opacity:l?.5:1,fontSize:13,fontWeight:700,fontFamily:"var(--font-mono)",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=eZ.length>0?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=Q?"var(--bg-hover)":"none",e.currentTarget.style.color=eZ.length>0?"var(--accent)":"var(--text-muted)"},children:[" >_".trim(),eZ.length>0&&(0,n.jsx)("span",{style:{position:"absolute",top:7,right:7,width:5,height:5,borderRadius:"50%",background:"currentColor"}})]}),Q&&(0,n.jsxs)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",left:0,zIndex:100,minWidth:280,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)"},overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderBottom:"1px solid var(--border)"},children:"Memory Tools"}),I.map(e=>{let t=eZ.includes(e),r=H[e];return(0,n.jsxs)("button",{onClick:()=>{y(t?eZ.filter(t=>t!==e):[...eZ,e])},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:ef,background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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,display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text)"},children:r.label}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:r.description})]})]},e)})]})]}),eX&&(0,n.jsxs)("div",{ref:eC,style:{position:"relative",flex:eh?"1 1 160px":void 0,minWidth:0},children:[(0,n.jsxs)("button",{onClick:e=>{if(!eh){let t=e.currentTarget.getBoundingClientRect();q({top:t.top,left:t.left,width:t.width})}X(!1),ee(!1),er(!1),ei(!1),el(!1),J(e=>!e)},disabled:l,style:{display:"flex",alignItems:"center",gap:6,padding:ef,height:eg,width:eh?"100%":void 0,maxWidth:eh?"100%":220,overflow:"hidden",background:V?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:eh?11:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=V?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",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"}),(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:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:eF})]}),V&&(eh?(0,n.jsxs)("div",{ref:eT,style:{...e6,display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("div",{style:{padding:"8px 12px 6px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Models"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2},children:eF})]}),(0,n.jsx)("div",{style:{overflowY:"auto"},children:eH.map((e,t)=>(0,n.jsxs)("div",{children:[eH.length>1&&(0,n.jsx)("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderTop:t>0?"1px solid var(--border)":"none"},children:e.provider}),e.options.map(e=>{let t=e.modelId===s?.modelId&&e.provider===s?.provider;return(0,n.jsxs)("button",{onClick:()=>{J(!1),t||c(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"10px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left",fontWeight:t?600:400},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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.jsx)("span",{style:{flex:1,minWidth:0,whiteSpace:"normal",lineHeight:1.35},children:e.name}),e.input?.includes("image")&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",fontFamily:"var(--font-mono)",marginLeft:8},children:"image"})]},`${e.provider}:${e.modelId}`)})]},e.provider))})]}):Y&&(E=(R=window.visualViewport?.height??window.innerHeight)-Y.top+6,P=Math.max(120,Math.min(Y.top-8,.6*R)),(0,n.jsx)("div",{ref:eT,style:{position:"fixed",bottom:E,left:Y.left,zIndex:500,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)",overflow:"hidden",width:"max-content",minWidth:Y.width,maxHeight:P,overflowY:"auto"},children:eH.map((e,t)=>(0,n.jsxs)("div",{children:[eH.length>1&&(0,n.jsx)("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderTop:t>0?"1px solid var(--border)":"none"},children:e.provider}),e.options.map(e=>{let t=e.modelId===s?.modelId&&e.provider===s?.provider;return(0,n.jsxs)("button",{onClick:()=>{J(!1),t||c(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"7px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left",fontWeight:t?600:400,whiteSpace:"nowrap"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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.jsx)("span",{style:{flex:1,minWidth:0},children:e.name}),e.input?.includes("image")&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",fontFamily:"var(--font-mono)",marginLeft:12},children:"image"})]},`${e.provider}:${e.modelId}`)})]},e.provider))})))]})]}),(0,n.jsx)("div",{className:"chat-input-toolbar-spacer",style:{display:em?"none":void 0,flex:eh?"0 0 auto":1,width:eh?0:void 0,height:eh?0:void 0}}),(0,n.jsxs)("div",{className:"chat-input-toolbar-right",style:{flex:eh?"1 1 100%":"0 0 auto",width:eh?"100%":void 0,display:"flex",alignItems:"center",justifyContent:eh?"space-between":void 0,gap:eh?4:2,marginLeft:eh?0:"auto",marginTop:2*!!eh},children:[em&&(0,n.jsxs)("div",{ref:eL,style:{position:"relative"},children:[(0,n.jsx)("button",{onClick:()=>{X(!1),ee(!1),J(!1),er(!1),ei(!1),el(e=>!e)},title:"更多设置",style:{display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28,padding:0,background:eo?"var(--bg-hover)":"none",border:"none",borderRadius:8,color:ey,cursor:"pointer",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=eo?"var(--bg-hover)":"none",e.currentTarget.style.color=eo?"var(--text)":"var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,n.jsx)("circle",{cx:"5",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"19",cy:"12",r:"1.5"})]})}),eo&&(0,n.jsxs)("div",{style:{...e6,zIndex:510,padding:"6px",display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("div",{style:{padding:"4px 6px 2px",fontSize:10,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"More"}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",padding:"0 6px 4px"},children:"模型、推理、工具等设置已收进这里。"}),(0,n.jsxs)("div",{style:{display:"grid",gap:4},children:[eX&&(0,n.jsxs)("button",{onClick:()=>{el(!1),ei(!1),er(!1),ee(!1),J(!0)},style:eb,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Model"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2,wordBreak:"break-word",lineHeight:1.35},children:e1})]}),(eQ||e0)&&(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:4},children:[eQ&&(0,n.jsxs)("button",{onClick:()=>{el(!1),J(!1),er(!1),ee(!1),ei(!0)},style:eb,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Thinking"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2},children:e2})]}),e0&&(0,n.jsxs)("button",{onClick:()=>{el(!1),J(!1),ei(!1),ee(!1),er(!0)},style:eb,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Tools"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2},children:e5})]})]}),!!y&&(0,n.jsxs)("button",{onClick:()=>{el(!1),J(!1),ei(!1),er(!1),ee(!0)},style:eb,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Memory"}),(0,n.jsx)("div",{style:{fontSize:12,color:eZ.length>0?"var(--accent)":"var(--text)",marginTop:2},children:eG})]})]})]})]}),(!em&&!l||eh&&en)&&j&&(0,n.jsxs)("div",{ref:eW,style:{position:"relative"},children:[!em&&!l&&(0,n.jsxs)("button",{onClick:()=>{l||(X(!1),ee(!1),J(!1),er(!1),el(!1),ei(e=>!e))},disabled:l,title:"切换推理强度",style:{display:"flex",alignItems:"center",gap:eh?3:5,padding:ef,height:eg,background:en?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:eh?11:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=en?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M9.5 2A5.5 5.5 0 0 0 4 7.5c0 1.7.78 3.21 2 4.21V14a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-2.29c1.22-1 2-2.51 2-4.21A5.5 5.5 0 0 0 9.5 2z"}),(0,n.jsx)("line",{x1:"7",y1:"18",x2:"12",y2:"18"}),(0,n.jsx)("line",{x1:"8",y1:"21",x2:"11",y2:"21"})]}),(0,n.jsx)("span",{style:ex,children:(()=>{let e=b??"auto";if("auto"===e||!w)return e;let t=w[e];return null!=t?t:e})()})]}),en&&(0,n.jsx)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",right:0,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)",minWidth:ev},overflow:"hidden"},children:F.filter(e=>!k||"auto"===e||k.includes(e)).map(e=>{let t=(b??"auto")===e,r=U[e],i="auto"!==e&&w?w[e]:void 0,o=null!=i&&i!==e?i:e,l=null!=i&&i!==e;return(0,n.jsxs)("button",{onClick:()=>{ei(!1),t||j(e)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"7px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left",fontWeight:t?600:400,whiteSpace:"nowrap"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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},children:[o,l&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",fontFamily:"var(--font-mono)",marginLeft:5},children:["(",e,")"]})]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",marginLeft:8},children:r})]},e)})})]}),(!em&&!l||eh&&et)&&e0&&(0,n.jsxs)("div",{ref:eM,style:{position:"relative"},children:[!em&&!l&&(0,n.jsxs)("button",{onClick:()=>{l||(X(!1),ee(!1),J(!1),ei(!1),el(!1),er(e=>!e))},disabled:l,title:"切换工具预设",style:{display:"flex",alignItems:"center",gap:eh?3:5,padding:ef,height:eg,background:et?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:(g??"full")==="workbench"?"var(--accent)":"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:eh?11:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=(g??"full")==="workbench"?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=et?"var(--bg-hover)":"none",e.currentTarget.style.color=(g??"full")==="workbench"?"var(--accent)":"var(--text-muted)"},children:[(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"})}),(0,n.jsx)("span",{style:ex,children:e5})]}),et&&(0,n.jsx)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",right:0,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)",minWidth:120},overflow:"hidden"},children:N.map(e=>{let t=A[e],r=(g??"full")===t,i="agent"===e&&!1===es,o=i?"需安装 pi-subagents":O[e];return(0,n.jsxs)("button",{onClick:()=>{!i&&(er(!1),r||v(t))},disabled:i,title:i?"运行 pi install npm:pi-subagents 后再启用":void 0,style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"7px 12px",background:r?"var(--bg-selected)":"none",border:"none",color:r?"var(--text)":"var(--text-muted)",cursor:i?"not-allowed":"pointer",fontSize:eh?11:12,textAlign:"left",fontWeight:r?600:400,opacity:i?.5:1,whiteSpace:"nowrap"},onMouseEnter:e=>{r||i||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{r||(e.currentTarget.style.background="none")},children:[r?(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.jsx)("span",{style:{flex:1},children:e}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",marginLeft:8},children:o})]},e)})})]}),l&&(0,n.jsxs)("button",{onClick:t,title:"停止 Agent",style:{display:"flex",alignItems:"center",gap:6,padding:"8px 14px",height:eg,background:"rgba(239,68,68,0.08)",border:"1px solid rgba(239,68,68,0.3)",borderRadius:eh?8:9,color:"#ef4444",cursor:"pointer",fontSize:eh?11:12,fontWeight:600,whiteSpace:"nowrap",letterSpacing:"-0.01em",transition:"background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.16)"},onMouseLeave:e=>{e.currentTarget.style.background="rgba(239,68,68,0.08)"},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,n.jsx)("rect",{x:"1.5",y:"1.5",width:"7",height:"7",rx:"1.5",fill:"currentColor"})}),"Stop"]}),void 0!==T&&(0,n.jsx)("button",{onClick:T,title:C?"关闭完成提示音":"开启完成提示音",style:{display:"flex",alignItems:"center",justifyContent:"center",width:eh?28:32,height:eh?28:32,padding:0,background:"none",border:"none",borderRadius:eh?8:9,color:C?"var(--text-muted)":"var(--text-dim)",cursor:"pointer",opacity:C?1:.55,transition:"background 0.12s, color 0.12s, opacity 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)",e.currentTarget.style.opacity="1"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color=C?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.opacity=C?"1":"0.55"},children:C?(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)("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),(0,n.jsx)("path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07"}),(0,n.jsx)("path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14"})]}):(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)("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),(0,n.jsx)("line",{x1:"23",y1:"9",x2:"17",y2:"15"}),(0,n.jsx)("line",{x1:"17",y1:"9",x2:"23",y2:"15"})]})})]})]})]})]})});function Q(e){return"user"===e.role?{bg:"rgba(37,99,235,0.18)",border:"rgba(37,99,235,0.7)"}:{bg:"rgba(107,114,128,0.12)",border:"rgba(107,114,128,0.5)"}}function ee({messages:e,streamingMessage:t,scrollContainer:r,messageRefs:o}){let[l,s]=(0,i.useState)(0),[a,d]=(0,i.useState)(1),[c,p]=(0,i.useState)(!1),[u,h]=(0,i.useState)([]),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(null),m=(0,i.useRef)(!1),y=(0,i.useRef)(null),b=(0,i.useMemo)(()=>t?[...e,t]:e,[e,t]),j=(0,i.useRef)(b);j.current=b;let k=(0,i.useRef)(null);k.current=()=>{let e=r.current;if(!e)return;let t=e.scrollHeight,n=e.clientHeight,i=t-n;p(i>20),i<=0?(s(0),d(1)):(s(e.scrollTop/i),d(n/t));let l=o.current,a=[],c=0,u=j.current;for(let r=0;r<u.length;r++){let n=u[r];if("user"!==n.role&&"assistant"!==n.role)continue;let i=l?.[c];if(c++,("user"===n.role||"assistant"===n.role&&(n.content??[]).some(e=>"text"===e.type))&&i&&t>0){let r=i.getBoundingClientRect(),o=e.getBoundingClientRect(),l=r.top-o.top+e.scrollTop,s=r.height;a.push({topRatio:l/t,heightRatio:s/t,msg:n,index:a.length})}}h(a)};let w=(0,i.useCallback)(()=>k.current(),[]);(0,i.useEffect)(()=>{let e=r.current;if(!e)return;e.addEventListener("scroll",w,{passive:!0});let t=new ResizeObserver(w);return t.observe(e),e.firstElementChild&&t.observe(e.firstElementChild),w(),()=>{e.removeEventListener("scroll",w),t.disconnect()}},[r,w]),(0,i.useEffect)(()=>{let e=setTimeout(w,50);return()=>clearTimeout(e)},[e.length,w]);let S=(0,i.useCallback)(e=>{let t=r.current;if(!t)return;let n=t.scrollHeight-t.clientHeight;n<=0||(t.scrollTop=Math.max(0,Math.min(1-a,e))/(1-a)*n)},[r,a]),C=(0,i.useCallback)(e=>{if(!c)return;m.current=!0;let t=e.currentTarget.getBoundingClientRect(),r=(e.clientY-t.top)/t.height,n=r-l*(1-a),i=n>=0&&n<=a?n:a/2;S(r-i);let o=e=>{m.current&&S((e.clientY-t.top)/t.height-i)},s=()=>{m.current=!1,window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",s)},[c,a,l,S]),T=y.current?.clientHeight??600,z=(0,i.useMemo)(()=>{if(!x||0===u.length)return[];let e=u.map(e=>Math.round(e.topRatio*T-11));for(let t=0;t<10;t++){for(let t=1;t<e.length;t++){let r=e[t-1]+22+2;e[t]<r&&(e[t]=r)}for(let t=e.length-2;t>=0;t--){let r=e[t+1]-22-2;e[t]>r&&(e[t]=r)}}for(let t=0;t<e.length;t++)e[t]=Math.max(0,Math.min(T-22,e[t]));return e},[x,u,T]);if(!c)return null;let I=l*(1-a)*100,M=100*a,W=null!==f&&u.length>0?u.reduce((e,t)=>Math.abs(t.topRatio-f)<Math.abs(u[e].topRatio-f)?t.index:e,0):null;return(0,n.jsxs)("div",{ref:y,onMouseDown:C,onMouseEnter:()=>g(!0),onMouseLeave:()=>{g(!1),v(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect();v((e.clientY-t.top)/t.height)},style:{width:36,flexShrink:0,position:"relative",cursor:"default",userSelect:"none",borderLeft:"1px solid var(--border)",background:"var(--bg-panel)",overflow:"visible"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:0,right:0,top:`${I}%`,height:`${M}%`,background:"rgba(100,100,100,0.1)",borderTop:"1px solid rgba(100,100,100,0.2)",borderBottom:"1px solid rgba(100,100,100,0.2)",pointerEvents:"none",zIndex:1}}),u.map(e=>{let t=Q(e.msg),r=x&&W===e.index,i="user"===e.msg.role,o=100*e.topRatio;return(0,n.jsx)("div",{style:{position:"absolute",top:`${o}%`,transform:"translateY(-50%)",left:0,right:0,height:"12px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",zIndex:2},children:(0,n.jsx)("div",{style:{width:i?8:6,height:i?8:6,borderRadius:i?2:"50%",background:t.bg,border:`1.5px solid ${t.border}`,flexShrink:0,transition:"transform 0.1s",transform:r?"scale(1.6)":"scale(1)"}})},e.index)}),(0,n.jsx)("div",{style:{position:"absolute",left:"50%",top:0,bottom:0,width:1,background:"var(--border)",transform:"translateX(-50%)",zIndex:0}}),x&&u.map((e,t)=>{let r=function(e){if("user"===e.role){let t=e.content;return"string"==typeof t?t.slice(0,200):Array.isArray(t)?t.filter(e=>"text"===e.type&&e.text).map(e=>e.text).join("\n").slice(0,200):""}if("assistant"===e.role){let t=e.content??[],r=t.filter(e=>"text"===e.type).map(e=>e.text).join(" ");if(r)return r.slice(0,200);let n=t.filter(e=>"toolCall"===e.type).map(e=>e.toolName);if(n.length)return n.join(", ")}return""}(e.msg),i=Q(e.msg),o=W===e.index;return r&&0!==z.length?(0,n.jsx)("div",{style:{position:"absolute",top:z[t],right:"100%",marginRight:6,background:"var(--bg)",borderTop:`1px solid ${o?i.border:"var(--border)"}`,borderRight:`1px solid ${o?i.border:"var(--border)"}`,borderBottom:`1px solid ${o?i.border:"var(--border)"}`,borderLeft:`2px solid ${i.border}`,borderRadius:4,padding:"2px 7px",width:200,zIndex:100,pointerEvents:"none",opacity:o?1:.45,transition:"top 0.1s, opacity 0.1s"},children:(0,n.jsx)("div",{style:{fontSize:11,color:o?"var(--text)":"var(--text-muted)",lineHeight:1.4,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:r})},e.index):null})]})}function et(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function er(e,t=220){if(!e)return;let r=e.trim();if(r)return r.length>t?`${r.slice(0,t)}...`:r}function en(...e){for(let t of e)if("string"==typeof t&&t.trim())return t}function ei(...e){for(let t of e)if("number"==typeof t&&Number.isFinite(t))return t}function eo(e){let t=new Map;for(let r of e){if("custom"===r.role&&"subagent-notify"===r.customType&&"string"==typeof r.content){let e=r.content.match(/^Background task (completed|failed|paused):\s*\*\*(.+?)\*\*(?:\s+\((.+?)\))?/);if(e){let n=`bg-${e[2]}-${r.timestamp??""}`;t.set(n,{id:n,agent:e[2],status:e[1],task:e[3],summary:er(r.content.split("\n").slice(3).join("\n")),timestamp:r.timestamp})}}if("assistant"===r.role){let e=r.content;if(!e)continue;for(let n of e)if("toolCall"===n.type&&"subagent"===n.toolName&&n.input){let e=n.input,i=e.agent??(e.chain?"chain":e.tasks?"parallel":e.action??"subagent"),o="string"==typeof e.task?e.task:void 0,l=n.toolCallId??`sub-${i}-${r.timestamp??Date.now()}`;t.set(l,{id:l,agent:i,status:"running",task:o,timestamp:r.timestamp})}}if("toolResult"===r.role){if(r.toolName&&"subagent"!==r.toolName||!r.toolCallId||!t.has(r.toolCallId))continue;let e=t.get(r.toolCallId),n=r.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n");t.set(r.toolCallId,function(e,t,r){let n;if(!et(t))return{...e,summary:er(r)};let i=Array.isArray(t.results)?t.results.filter(et):[],o=i[0],l=o?.progressSummary,s=o&&(n=o.artifactPaths)?Object.values(n).filter(e=>"string"==typeof e&&e.trim().length>0):[],a=en(o?.finalOutput,o?.output,r);return{...e,mode:en(t.mode),runId:en(t.runId),agent:en(o?.agent,e.agent)??e.agent,task:en(o?.task,e.task),summary:er(a),model:en(o?.model),durationMs:ei(l?.durationMs),toolCount:ei(l?.toolCount),tokens:ei(l?.tokens),outputPath:en(o?.savedOutputPath,o?.artifactPaths?.outputPath),sessionFile:en(o?.sessionFile,o?.artifactPaths?.jsonlPath),artifacts:s,resultCount:i.length||void 0}}({...e,status:function(e){if(e.isError)return"failed";let t=e.details;return et(t)&&Array.isArray(t.results)&&t.results.some(e=>et(e)&&"number"==typeof e.exitCode&&0!==e.exitCode)?"failed":"completed"}(r)},r.details,n))}}return Array.from(t.values()).sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))}function el({messages:e,runs:t}){let r=(0,i.useMemo)(()=>eo(e??[]),[e]),o=t??r,l=o.filter(e=>"running"===e.status),s=o.filter(e=>"running"!==e.status);return 0===o.length?null:(0,n.jsxs)("div",{style:{height:"100%",overflow:"auto",padding:12},children:[l.length>0&&(0,n.jsx)(es,{title:`Active (${l.length})`,runs:l}),s.length>0&&(0,n.jsx)(es,{title:`Completed (${s.length})`,runs:s,compact:l.length>0})]})}function es({title:e,runs:t,compact:r}){return(0,n.jsxs)("div",{style:{marginBottom:r?10:16},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",marginBottom:8,textTransform:"uppercase",letterSpacing:"0.05em"},children:e}),t.map(e=>(0,n.jsx)(ea,{run:e},e.id))]})}function ea({run:e}){let[t,r]=(0,i.useState)(!1),o="running"===e.status,l="completed"===e.status?"#22c55e":"failed"===e.status?"#ef4444":o?"var(--accent)":"var(--text-dim)",s="failed"===e.status?"rgba(248,113,113,0.35)":o?"rgba(99,102,241,0.25)":"var(--border)",a="failed"===e.status?"rgba(248,113,113,0.05)":o?"rgba(99,102,241,0.05)":"var(--bg-panel)",d=[e.mode,e.resultCount&&e.resultCount>1?`${e.resultCount} results`:void 0,void 0!==e.toolCount?`${e.toolCount} tools`:void 0,void 0!==e.tokens?`${e.tokens.toLocaleString()} tok`:void 0,void 0!==e.durationMs?`${Math.round(e.durationMs/1e3)}s`:void 0].filter(Boolean).join(" \xb7 "),c=!!(e.summary||e.outputPath||e.sessionFile||e.artifacts?.length||e.model||e.runId);return(0,n.jsxs)("div",{style:{borderRadius:6,border:`1px solid ${s}`,background:a,marginBottom:6,fontSize:12,overflow:"hidden"},children:[(0,n.jsxs)("button",{onClick:()=>c&&r(e=>!e),style:{display:"flex",alignItems:"center",gap:7,width:"100%",border:"none",background:"transparent",padding:"8px 10px",color:"var(--text-muted)",textAlign:"left",cursor:c?"pointer":"default"},children:[(0,n.jsx)(ed,{running:o,color:l}),(0,n.jsx)("span",{style:{fontWeight:650,color:"var(--text)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.agent}),(0,n.jsx)("span",{style:{color:l,fontSize:10,fontWeight:700,flexShrink:0},children:e.status}),d&&(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10,marginLeft:"auto",whiteSpace:"nowrap"},children:d}),c&&(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:{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"})})]}),e.task&&(0,n.jsx)("div",{style:{padding:"0 10px 8px 25px",color:"var(--text-muted)",fontSize:11,lineHeight:1.4},children:er(e.task,150)}),t&&c&&(0,n.jsxs)("div",{style:{borderTop:`1px solid ${s}`,background:"var(--bg)",padding:"8px 10px",display:"flex",flexDirection:"column",gap:7},children:[e.summary&&(0,n.jsx)("pre",{style:{margin:0,color:"var(--text-muted)",fontSize:11,lineHeight:1.45,whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:160,overflow:"auto"},children:e.summary}),(0,n.jsx)(ec,{run:e})]})]})}function ed({running:e,color:t}){return(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:t,display:"inline-block",animation:e?"pulse 1.5s infinite":void 0,flexShrink:0}})}function ec({run:e}){let t=[e.model?["model",e.model]:void 0,e.runId?["run",e.runId]:void 0,e.outputPath?["output",e.outputPath]:void 0,e.sessionFile?["session",e.sessionFile]:void 0,...(e.artifacts??[]).slice(0,4).map((e,t)=>[`artifact ${t+1}`,e])].filter(Boolean);return 0===t.length?null:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:3},children:t.map(([e,t])=>(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"58px minmax(0, 1fr)",gap:6,fontSize:10},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",textTransform:"uppercase"},children:e}),(0,n.jsx)("span",{style:{color:"var(--text-muted)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:t,children:t})]},`${e}:${t}`))})}function ep({sessionKind:e,toolPreset:t,initialSourcePath:r,initialKernel:i,isNew:o,isStreaming:l=!1,onResume:s,onDismiss:a}){if(o||"workbench"!==e)return null;let d=r?r.replace(/\\/g,"/").split("/").filter(Boolean).pop()??r:null,c="workbench"===t;return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",background:"rgba(37,99,235,0.06)",borderBottom:"1px solid rgba(37,99,235,0.18)",fontSize:12,flexShrink:0},children:[(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",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.jsxs)("span",{style:{color:"var(--text)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["This is an ",(0,n.jsxs)("strong",{children:[c?"active":"inactive"," Workbench"]})," session",d&&(0,n.jsxs)("span",{style:{color:"var(--text-muted)"},children:[" \xb7 Source: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--accent)"},children:d})]}),i&&(0,n.jsxs)("span",{style:{color:"var(--text-dim)"},children:[" \xb7 Kernel: ",i.toUpperCase()]})]}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",onClick:a,style:{border:"1px solid var(--border)",borderRadius:6,padding:"2px 10px",height:26,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:11},children:"Dismiss"}),(0,n.jsx)("button",{type:"button",onClick:s,disabled:l,title:l?"Wait until the agent finishes before updating Workbench":c?"Reload the initial data source into the warm runtime":"Restore Workbench tools and reload the initial data source",style:{border:"1px solid rgba(37,99,235,0.45)",borderRadius:6,padding:"2px 12px",height:26,background:"rgba(37,99,235,0.12)",color:"var(--accent)",cursor:l?"not-allowed":"pointer",fontSize:11,fontWeight:600,opacity:l?.55:1,whiteSpace:"nowrap"},children:c?"Reload Initial Data":"Resume Workbench"})]})}function eu(e){if("assistant"!==e.role)return e;let t=e.content;if(!Array.isArray(t))return e;let r=t.map(e=>("object"!=typeof e||null===e||Array.isArray(e)||"toolCall"!==e.type?null:{type:"toolCall",toolCallId:"string"==typeof e.toolCallId?e.toolCallId:"string"==typeof e.id?e.id:"",toolName:"string"==typeof e.toolName?e.toolName:"string"==typeof e.name?e.name:"",input:"object"!=typeof e.input||null===e.input||Array.isArray(e.input)?"object"!=typeof e.arguments||null===e.arguments||Array.isArray(e.arguments)?{}:e.arguments:e.input})??e);return{...e,content:r}}async function eh(e,t){let r=await fetch(`/api/agent/${encodeURIComponent(e)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await r.json().catch(()=>({}));if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);return n.data}function ex(e,t){switch(t.type){case"start":return{isStreaming:!0,streamingMessage:null};case"update":return{isStreaming:!0,streamingMessage:t.message};case"end":case"reset":return{isStreaming:!1,streamingMessage:null};default:return e}}function eg(e){if("user"!==e.role)return null;var t=e.content;if("string"==typeof t)return`text:${t}`;if(!Array.isArray(t))try{return`other:${JSON.stringify(t)}`}catch{return"other:"}let r=t.map(e=>{if(!e||"object"!=typeof e)return e;if("text"===e.type)return{type:"text",text:e.text};if("image"===e.type){let t=e.source&&"object"==typeof e.source?e.source:{};return{type:"image",mimeType:t.media_type??e.mimeType,data:t.data??e.data,url:t.url}}return e});try{return`blocks:${JSON.stringify(r)}`}catch{return"blocks:"}}function ef(e){if(!e.role)return null;try{return`${e.role}:${JSON.stringify(e)}`}catch{return null}}let ev=["image/","application/pdf","application/vnd.openxmlformats-officedocument","application/msword","application/vnd.ms-"];function em(e){return ev.some(t=>e.type.startsWith(t))}function ey({agentPhase:e,startedAt:t}){let[r,o]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(!t)return void o(0);let e=()=>o(Math.max(0,Math.floor((Date.now()-t)/1e3)));e();let r=setInterval(e,1e3);return()=>clearInterval(r)},[t]),(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsxs)("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]}…`:`Running ${t.slice(0,2).join(", ")}${t.length>2?` (+${t.length-2})`:""}…`}return e?.kind==="waiting_model"?"Waiting for model…":"Working…"}(e),"\xa0\xa0",function(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);return`${t}m ${String(e%60).padStart(2,"0")}s`}(r)]})})}function eb(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function ej({goal:e,planTasks:t,isRunning:r,onExecutePlan:o}){let[l,s]=(0,i.useState)(!1),a=(0,i.useCallback)(()=>s(e=>!e),[]),d=e&&"dropped"!==e.status,c=t&&t.length>0;if(!d&&!c)return null;let p=(0,i.useMemo)(()=>!e?.tokenBudget||e.tokenBudget<=0?null:Math.min(100,Math.round(e.tokensUsed/e.tokenBudget*100)),[e?.tokenBudget,e?.tokensUsed]),u=t?.filter(e=>"completed"===e.status).length??0,h=!!t&&u===t.length;return(0,n.jsxs)("div",{style:{marginBottom:16,borderRadius:10,border:"1px solid var(--border)",background:"var(--bg-panel)",overflow:"hidden"},children:[d&&(0,n.jsxs)("div",{style:{padding:"10px 14px",borderBottom:c?"1px solid var(--border)":"none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:6},children:[(0,n.jsx)("span",{style:{flexShrink:0,borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:"#fff",background:function(e){switch(e){case"active":return"rgba(37,99,235,0.85)";case"complete":return"rgba(34,197,94,0.85)";case"budget-limited":return"rgba(245,158,11,0.85)";case"paused":return"rgba(148,163,184,0.85)";case"dropped":return"rgba(239,68,68,0.85)"}}(e.status)},children:function(e){switch(e){case"active":return"进行中";case"paused":return"已暂停";case"budget-limited":return"预算受限";case"complete":return"已完成";case"dropped":return"已放弃"}}(e.status)}),(0,n.jsx)("span",{style:{fontSize:11,fontWeight:500,color:"var(--text-muted)"},children:"Goal"})]}),(0,n.jsx)("p",{style:{margin:"0 0 6px",fontSize:13,lineHeight:1.5,color:"var(--text)",whiteSpace:"pre-wrap"},children:e.objective}),(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"4px 16px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)("span",{children:function(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m ${String(e%60).padStart(2,"0")}s`;let r=Math.floor(t/60);return`${r}h ${t%60}m`}(e.timeUsedSeconds)}),(0,n.jsxs)("span",{children:[eb(e.tokensUsed),e.tokenBudget?` / ${eb(e.tokenBudget)} tokens`:" tokens"]}),null!=p&&(0,n.jsxs)("span",{children:[p,"%"]})]}),null!=p&&(0,n.jsx)("div",{style:{marginTop:6,height:3,borderRadius:999,overflow:"hidden",background:"var(--border)"},children:(0,n.jsx)("div",{style:{height:"100%",borderRadius:999,background:p>=100?"rgba(239,68,68,0.6)":"rgba(37,99,235,0.5)",width:`${Math.min(p,100)}%`,transition:"width 0.3s"}})})]}),c&&(0,n.jsxs)("div",{style:{padding:"4px 14px 10px"},children:[(0,n.jsxs)("div",{onClick:a,role:"button",tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&a()},"aria-expanded":!l,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,cursor:"pointer",padding:"6px 0"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"#3b82f6",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M9 11l3 3L22 4"}),(0,n.jsx)("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})]}),(0,n.jsxs)("span",{style:{fontSize:12,fontWeight:500,color:"#3b82f6"},children:["Plan \xb7 ",t.length," 步"]}),h&&(0,n.jsxs)("span",{style:{borderRadius:4,padding:"0 6px",fontSize:10,fontWeight:600,background:"rgba(34,197,94,0.12)",color:"rgba(34,197,94,0.85)"},children:["已完成 ",u,"/",t.length]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexShrink:0},children:[o&&h&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),o()},disabled:r,style:{borderRadius:5,padding:"3px 10px",fontSize:11,fontWeight:500,color:"#fff",background:r?"rgba(59,130,246,0.3)":"#3b82f6",border:"none",cursor:r?"not-allowed":"pointer"},children:"执行计划"}),(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-muted)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:l?"rotate(-90deg)":"rotate(0deg)",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"6 9 12 15 18 9"})})]})]}),!l&&(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:t.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8,borderRadius:4,padding:"3px 8px",background:"inProgress"===e.status?"rgba(59,130,246,0.04)":"transparent"},children:[(0,n.jsx)("div",{style:{marginTop:1},children:function(e){switch(e){case"completed":return(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"rgba(34,197,94,0.12)",stroke:"rgba(34,197,94,0.6)",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M7 12.5l3 3 7-7",stroke:"rgba(34,197,94,0.9)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]});case"inProgress":return(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"rgba(59,130,246,0.2)",strokeWidth:"2.5"}),(0,n.jsx)("path",{d:"M12 2a10 10 0 0 1 10 10",stroke:"rgba(59,130,246,0.85)",strokeWidth:"2.5",strokeLinecap:"round",children:(0,n.jsx)("animateTransform",{attributeName:"transform",type:"rotate",from:"0 12 12",to:"360 12 12",dur:"1.5s",repeatCount:"indefinite"})})]});default:return(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"var(--border)",strokeWidth:"1.5"})})}}(e.status)}),(0,n.jsx)("span",{style:{fontSize:12,lineHeight:1.5,...function(e){switch(e){case"completed":return{color:"rgba(34,197,94,0.85)",textDecoration:"line-through"};case"inProgress":return{color:"#3b82f6",fontWeight:500};default:return{color:"var(--text-muted)"}}}(e.status)},children:e.step})]},e.id))})]})]})}let ek=["annotate and analyze.","vibe code bioinformatics.","turn data into figures.","inspect your project.","build a reproducible report.","run R/Python plots.","summarize that paper.","review the pipeline.","compare markers.","draft methods.","find the next analysis step."];function ew({phrases:e}){let[t,r]=(0,i.useState)(()=>Math.floor(Math.random()*e.length)),[o,l]=(0,i.useState)(""),[s,a]=(0,i.useState)(!1),[d,c]=(0,i.useState)(!0);return(0,i.useEffect)(()=>{let e=setInterval(()=>c(e=>!e),530);return()=>clearInterval(e)},[]),(0,i.useEffect)(()=>{let n,i=e[t];if(s||o!==i)if(s&&""===o)a(!1),r(t=>(t+1)%e.length);else{let e=s?i.slice(0,o.length-1):i.slice(0,o.length+1);n=setTimeout(()=>l(e),s?28:55)}else n=setTimeout(()=>a(!0),1800);return()=>clearTimeout(n)},[o,s,t,e]),(0,n.jsxs)("span",{style:{color:"var(--text-muted)",fontWeight:400},children:[o,(0,n.jsx)("span",{style:{opacity:+!!d,color:"var(--accent)",marginLeft:1},children:"▍"})]})}function eS({status:e}){let t=e?.current??"0.8.57"??"0.0.0";if(e?.updateAvailable){let r=e.latest?`v${e.latest}`:"latest";return(0,n.jsxs)("span",{title:`Current v${t}; latest ${r}; run ${e.updateCommand}`,style:{display:"block",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:11,color:"var(--accent)"},children:["Update: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",color:"var(--accent)"},children:e.updateCommand})]})}return(0,n.jsxs)("span",{title:`AnnoVibe v${t}`,style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap"},children:["v",t]})}function eC({session:e,newSessionCwd:t,onAgentEnd:r,onSessionCreated:o,onSessionForked:l,modelsRefreshKey:s,chatInputRef:a,onBranchDataChange:c,onSystemPromptChange:p,onSessionStatsChange:u,onContextUsageChange:h,onToolPresetActive:x,generativeUI:g}){var f;let v,[m,y]=(0,i.useState)(null),[b,j]=(0,i.useState)(!1),[k,w]=(0,i.useState)([]),{data:S,loading:C,error:M,messages:$,entryIds:D,streamState:N,agentRunning:A,modelNames:O,modelList:H,modelThinkingLevels:F,modelThinkingLevelMaps:U,toolPreset:_,memoryTools:K,thinkingLevel:V,retryInfo:J,contextUsage:Y,forkingEntryId:q,isCompacting:Z,compactError:G,displayModel:Q,sessionStats:et,agentPhase:er,agentError:en,isNew:ei,messagesEndRef:es,scrollContainerRef:ea,lastUserMsgRef:ed,handleSend:ec,handleAbort:ev,handleFork:eb,handleNavigate:eT,handleModelChange:ez,handleCompact:eI,handleSteer:eM,handleFollowUp:eW,handleAbortCompaction:eL,handleToolPresetChange:eR,handleMemoryToolsChange:eE,handleThinkingLevelChange:eP,handleAgentEventRef:e$}=function(e){let{session:t,newSessionCwd:r,onAgentEnd:n,onSessionCreated:o,onSessionForked:l,modelsRefreshKey:s,onBranchDataChange:a,onSystemPromptChange:d}=e,c=null===t&&null!==r,[p,u]=(0,i.useState)(null),[h,x]=(0,i.useState)(!c),[g,f]=(0,i.useState)(null),[v,m]=(0,i.useState)(null),[y,b]=(0,i.useState)([]),[j,k]=(0,i.useState)([]),[w,S]=(0,i.useReducer)(ex,{isStreaming:!1,streamingMessage:null}),[C,T]=(0,i.useState)(!1),[M,$]=(0,i.useState)({}),[D,N]=(0,i.useState)([]),[A,O]=(0,i.useState)({}),[H,F]=(0,i.useState)({}),[U,_]=(0,i.useState)(null),[K,V]=(0,i.useState)("full"),[J,Y]=(0,i.useState)([...I]),[q,Z]=(0,i.useState)("auto"),[G,X]=(0,i.useState)(null),[Q,ee]=(0,i.useState)(null),[et,er]=(0,i.useState)(null),[en,ei]=(0,i.useState)(null),[eo,el]=(0,i.useState)(null),[es,ea]=(0,i.useState)(null),[ed,ec]=(0,i.useState)(!1),[ep,ev]=(0,i.useState)(null),[em,ey]=(0,i.useState)(null),[eb,ej]=(0,i.useState)(null),ek=(0,i.useRef)(null),ew=(0,i.useRef)(t?.id??null),eS=(0,i.useRef)(!1),eC=(0,i.useRef)(null),eT=(0,i.useRef)(!1),ez=(0,i.useRef)(null),eI=(0,i.useRef)(!1),eM=(0,i.useRef)(null),eW=(0,i.useRef)(null),eL=(0,i.useRef)(new Map),eR=(0,i.useRef)(new Set),eE=e.setNewSessionModel??_,eP=e.setToolPreset??V,e$=e.setMemoryTools??Y,eB=eo??p?.context.model??es??null,eD=c?U:eB,eN=(0,i.useCallback)(e=>e?.length?e.map((e,t)=>{let r=`Attachment ${t+1}: ${e.fileName} (${e.mimeType||"application/octet-stream"}, ${e.size} bytes)`;if(e.extractedText){let t=e.truncated?"\n[The extracted text was truncated before sending.]":"";return`${r}
6
+ [truncated after 60000 characters]`,truncated:!0};if(!o)return{extractionError:"No extractable text found"};return{extractedText:o,truncated:l}}catch(e){return{extractionError:e instanceof Error?e.message:String(e)}}}let X=(0,i.forwardRef)(function({onSend:e,onAbort:t,onSteer:r,onFollowUp:o,isStreaming:l,model:s,modelNames:a,modelList:d,onModelChange:c,onCompact:u,onAbortCompaction:p,isCompacting:h,compactError:x,toolPreset:g,sessionKind:f,onToolPresetChange:v,memoryTools:m,onMemoryToolsChange:b,thinkingLevel:y,onThinkingLevelChange:j,availableThinkingLevels:k,thinkingLevelMap:w,retryInfo:S,soundEnabled:C,onSoundToggle:T,cornerBadge:z,promptHistory:M,sessionHistoryKey:W},L){let R,E,P,[$,D]=(0,i.useState)(""),[V,J]=(0,i.useState)(!1),[Y,q]=(0,i.useState)(null),[G,X]=(0,i.useState)(!1),[Q,ee]=(0,i.useState)(!1),[et,er]=(0,i.useState)(!1),[en,ei]=(0,i.useState)(!1),[eo,el]=(0,i.useState)(!1),[es,ea]=(0,i.useState)(null),[ed,ec]=(0,i.useState)([]),[eu,ep]=(0,i.useState)([]),eh=function(e=768){let[t,r]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t=window.matchMedia(`(max-width: ${e}px)`),n=()=>r(t.matches);return n(),t.addEventListener?.("change",n),()=>t.removeEventListener?.("change",n)},[e]),t}(),ex=eh?{display:"none"}:void 0,eg=eh?28:32,ef=eh?"6px 8px":"8px 12px",ev=eh?160:180,em=eh&&!l,eb=eo?"var(--text)":"var(--text-muted)",ey={padding:"7px 8px",borderRadius:8,background:"var(--bg-panel)",border:"1px solid var(--border)",width:"100%",textAlign:"left",cursor:"pointer"},ej=eh?{position:"sticky",bottom:0,zIndex:30,padding:"8px 0 calc(env(safe-area-inset-bottom, 0px) + 8px)",background:"linear-gradient(to top, color-mix(in srgb, var(--bg) 96%, transparent), color-mix(in srgb, var(--bg) 86%, transparent))",backdropFilter:"blur(10px)",WebkitBackdropFilter:"blur(10px)",borderTop:"1px solid color-mix(in srgb, var(--border) 65%, transparent)"}:{flexShrink:0,background:"transparent",padding:"0 16px 8px",paddingRight:52},[ek,ew]=(0,i.useState)(null),eS=(0,i.useRef)(null),eC=(0,i.useRef)(null),eT=(0,i.useRef)(null),ez=(0,i.useRef)(null),eI=(0,i.useRef)(null),eM=(0,i.useRef)(null),eW=(0,i.useRef)(null),eL=(0,i.useRef)(null),eR=(0,i.useRef)(null),eE=(0,i.useRef)(null),eP=(0,i.useCallback)(e=>{let t=eS.current;if(!t)return void D(t=>t+(t?" ":"")+e);let r=t.selectionStart??t.value.length,n=t.selectionEnd??t.value.length,i=t.value.slice(0,r),o=t.value.slice(n),l=!(i.length>0)||i.endsWith(" ")||i.endsWith("\n")?"":" ";D(i+l+e+o),requestAnimationFrame(()=>{let t=eS.current;if(!t)return;let n=r+l.length+e.length;t.setSelectionRange(n,n),t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`})},[]);(0,i.useImperativeHandle)(L,()=>({insertIfEmpty(e){let t=eS.current;(t?t.value:$).trim()||(D(e),requestAnimationFrame(()=>{t&&(t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)}))},insertText(e){eP(e)},addImages(e){e$(e)},addFiles(e){eD(e)}}));let e$=(0,i.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/"));if(!t.length)return;let r=await Promise.all(t.map(e=>new Promise((t,r)=>{let n=new FileReader;n.onload=()=>{t({data:n.result.split(",")[1],mimeType:e.type,previewUrl:URL.createObjectURL(e)})},n.onerror=r,n.readAsDataURL(e)})));ec(e=>[...e,...r])},[]),eD=(0,i.useCallback)(async e=>{let t=e.filter(e=>e.type.startsWith("image/")),r=e.filter(e=>!e.type.startsWith("image/"));if(t.length&&e$(t),r.length){let e=await Promise.all(r.map(e=>new Promise((t,r)=>{let n=new FileReader;n.onload=async()=>{let r=n.result,i=await Z(e,r);t({data:r,fileName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...i})},n.onerror=r,n.readAsArrayBuffer(e)})));ep(t=>[...t,...e])}},[e$]),eB=(0,i.useCallback)(e=>{ec(t=>{let r=[...t];return URL.revokeObjectURL(r[e].previewUrl),r.splice(e,1),r})},[]),eA=(0,i.useCallback)(e=>{ep(t=>{let r=[...t];return r.splice(e,1),r})},[]),eN=(0,i.useCallback)(()=>{ec(e=>(e.forEach(e=>URL.revokeObjectURL(e.previewUrl)),[])),ep([])},[]),eH=d&&d.length>0?d.map(e=>({provider:e.provider,modelId:e.id,name:e.name,input:e.input})):Object.entries(a??{}).map(([e,t])=>({provider:s?.provider??"unknown",modelId:e,name:t})),eO=[];for(let e of eH){let t=eO.find(t=>t.provider===e.provider);t?t.options.push(e):eO.push({provider:e.provider,options:[e]})}let eF=s?eH.find(e=>e.modelId===s.modelId&&e.provider===s.provider)?.name??s.modelId:eH.length>0?eH[0].name:null,eU=s?eH.find(e=>e.modelId===s.modelId&&e.provider===s.provider):eH[0],e_=eU?.input?.includes("image")??!0,eK=ed.length>0&&eU?.input!==void 0&&!e_,eV=(!!$.trim()||ed.length>0||eu.length>0)&&!eK,eJ=u?_:_.filter(e=>"/compact"!==e.command),eY=eJ.filter(e=>"native"===e.kind),eq=eJ.filter(e=>"shortcut"===e.kind),eG=m??[],eZ=eG.length>0?`${eG.length} enabled`:"off",eX=eH.length>0&&!!eF&&!!c,eQ=!!j,e0=!!v&&"workbench"!==f,e1=eF??"Default",e2=(()=>{let e=y??"auto";if("auto"===e||!w)return e;let t=w[e];return null!=t?t:e})(),e5=(g??"full")==="workbench"?"workbench":Object.entries(N).find(([,e])=>e===(g??"full"))?.[0]??"full",e4=eh?26:32,e3=eh?7:9,e8=eh?3:6,e6={position:"fixed",left:8,right:8,bottom:"calc(env(safe-area-inset-bottom, 0px) + 8px)",zIndex:500,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:12,boxShadow:"0 -6px 24px rgba(0,0,0,0.14)",overflow:"hidden",maxHeight:"min(60dvh, 420px)"},e7=eh&&(V||G||Q||et||en||eo);(0,i.useEffect)(()=>{eK||ew(null)},[eK]);let e9=(0,i.useCallback)(e=>{if(!$.trim()){D(e),requestAnimationFrame(()=>{let t=eS.current;t&&(t.focus(),t.setSelectionRange(e.length,e.length),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)});return}eP(e)},[eP,$]),te=(0,i.useCallback)(()=>{let t=$.trim();if(t||ed.length||eu.length){if(ed.length&&!e_)return void ew("当前模型不支持图片输入。请切换到带 image 标记的模型后再发送。");if(!l){if("/compact"===t&&!ed.length&&!eu.length&&u){h?p?.():u(),D(""),eS.current&&(eS.current.style.height="auto");return}e(t,ed.length?ed:void 0,eu.length?eu:void 0),D(""),eN(),eS.current&&(eS.current.style.height="auto")}}},[$,ed,eu,e_,l,e,eN,u,p,h]),tt=(0,i.useCallback)(e=>{let t=$.trim();if(!t&&!ed.length&&!eu.length)return;if(ed.length&&!e_)return void ew("当前模型不支持图片输入。请切换到带 image 标记的模型后再发送。");let n=ed.length?ed:void 0,i=eu.length?eu:void 0;"steer"===e&&r?r(t,n,i):"followup"===e&&o&&o(t,n,i),D(""),eN(),eS.current&&(eS.current.style.height="auto")},[$,ed,eu,e_,r,o,eN]),tr=M??[],tn=W??null,ti=(0,i.useCallback)(e=>{if("ArrowUp"===e.key&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey&&tr.length>0){let t=eS.current;if(!t)return;let r=t.selectionStart??0;if(t.value.slice(0,r).includes("\n"))return;e.preventDefault();let n=function(e,t,r){let n;if(!e||0===r.length)return null;let i=((n=B.get(e))||(n={cursor:-1,draftSnapshot:""},B.set(e,n)),n);if(-1===i.cursor)i.draftSnapshot=t,i.cursor=0;else{if(!(i.cursor<r.length-1))return null;i.cursor+=1}return r[i.cursor]??null}(tn,t.value,tr);null!==n&&(D(n),requestAnimationFrame(()=>{t.setSelectionRange(n.length,n.length)}));return}if("ArrowDown"===e.key&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey&&function(e){if(!e)return!1;let t=B.get(e);return(t?.cursor??-1)>=0}(tn)){e.preventDefault();let t=function(e,t){if(!e)return null;let r=B.get(e);if(!r||-1===r.cursor)return null;if(r.cursor>0)return r.cursor-=1,{text:t[r.cursor]??"",returnedToPresent:!1};let n=r.draftSnapshot;return r.cursor=-1,r.draftSnapshot="",{text:n,returnedToPresent:!0}}(tn,tr);t&&(D(t.text),t.returnedToPresent&&requestAnimationFrame(()=>{let e=eS.current;e&&e.setSelectionRange(t.text.length,t.text.length)}));return}"Enter"===e.key&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),tn&&B.set(tn,{cursor:-1,draftSnapshot:""}),l&&(r||o)?tt(r?"steer":"followup"):te())},[l,r,o,tt,te,tr,tn]),to=(0,i.useCallback)(()=>{let e=eS.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)},[]),tl=(0,i.useCallback)(e=>{let t=Array.from(e.clipboardData?.items??[]).filter(e=>"file"===e.kind&&(e.type.startsWith("image/")||e.type.includes("pdf")||e.type.includes("officedocument")||e.type.includes("msword")||e.type.includes("ms-")));t.length&&(e.preventDefault(),eD(t.map(e=>e.getAsFile()).filter(e=>null!==e)))},[eD]);return(0,i.useEffect)(()=>{if(!V&&!G&&!Q&&!et&&!en&&!eo)return;let e=e=>{let t=e.target;if(!(t instanceof Node))return;let r=!!eC.current?.contains(t),n=!!eT.current?.contains(t);r||n||J(!1),ez.current?.contains(t)||X(!1),eI.current?.contains(t)||ee(!1),eM.current?.contains(t)||er(!1),eW.current?.contains(t)||ei(!1),eL.current?.contains(t)||el(!1)};return document.addEventListener("pointerdown",e,!0),()=>{document.removeEventListener("pointerdown",e,!0)}},[V,G,Q,et,en,eo]),(0,i.useEffect)(()=>{if(!v)return;let e=!1;return fetch("/api/subagents/status").then(e=>e.ok?e.json():null).then(t=>{e||ea(!!t?.ready)}).catch(()=>{e||ea(!1)}),()=>{e=!0}},[v]),(0,n.jsxs)("div",{style:ej,children:[e7&&(0,n.jsx)("div",{"aria-hidden":!0,onClick:()=>{J(!1),X(!1),ee(!1),er(!1),ei(!1),el(!1)},style:{position:"fixed",inset:0,zIndex:490,background:"rgba(15, 23, 42, 0.18)",backdropFilter:"blur(1.5px)",WebkitBackdropFilter:"blur(1.5px)"}}),(0,n.jsx)("input",{ref:eR,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{e$(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsx)("input",{ref:eE,type:"file",accept:".pdf,.docx,.xlsx,.pptx,.doc,.xls,.ppt,application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.presentationml.presentation",multiple:!0,style:{display:"none"},onChange:e=>{eD(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsxs)("div",{style:{maxWidth:eh?"100%":820,margin:"0 auto",position:"relative",width:"100%",padding:eh?"0 8px":void 0,boxSizing:"border-box"},children:[z&&(0,n.jsx)("div",{style:{position:"absolute",right:8,top:-22,display:"flex",alignItems:"center",justifyContent:"flex-end",maxWidth:"min(320px, 60vw)",minHeight:18,zIndex:2,fontFamily:"var(--font-mono)",overflow:"hidden"},children:z}),S&&(0,n.jsxs)("div",{style:{marginBottom:eh?6:8,padding:eh?"4px 8px":"5px 10px",background:"rgba(234,179,8,0.08)",border:"1px solid rgba(234,179,8,0.25)",borderRadius:6,fontSize:eh?11:12,color:"rgba(180,130,0,0.9)",display:"flex",alignItems:"center",gap:6},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:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}),(0,n.jsx)("path",{d:"M3 3v5h5"})]}),"Retrying (",S.attempt,"/",S.maxAttempts,")…",S.errorMessage&&(0,n.jsxs)("span",{style:{opacity:.7,marginLeft:4},children:["— ",S.errorMessage]})]}),(ed.length>0||eu.length>0)&&(0,n.jsxs)("div",{style:{marginBottom:6},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"flex-end"},children:[ed.map((e,t)=>(0,n.jsxs)("div",{style:{position:"relative",flexShrink:0},children:[(0,n.jsx)("img",{src:e.previewUrl,alt:"",style:{width:56,height:56,objectFit:"cover",borderRadius:6,border:`1px solid ${eK?"rgba(220,38,38,0.45)":"var(--border)"}`,display:"block"}}),(0,n.jsx)("button",{onClick:()=>eB(t),style:{position:"absolute",top:-4,right:-4,width:16,height:16,borderRadius:"50%",background:"var(--bg-panel)",border:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,color:"var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"1",y1:"1",x2:"7",y2:"7"}),(0,n.jsx)("line",{x1:"7",y1:"1",x2:"1",y2:"7"})]})})]},`img-${t}`)),eu.map((e,t)=>(0,n.jsx)(K,{doc:e,onRemove:()=>eA(t)},`doc-${t}`))]}),(eK||ek)&&(0,n.jsxs)("div",{style:{marginTop:6,display:"flex",alignItems:"center",gap:6,fontSize:eh?11:12,color:"rgba(185,28,28,0.95)"},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:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),(0,n.jsx)("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),(0,n.jsx)("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),(0,n.jsx)("span",{children:ek??"当前模型不支持图片输入。请切换到带 image 标记的模型后再发送。"})]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:eh?4:8,alignItems:eh?"flex-end":"center",background:"var(--bg)",border:`1px solid ${l&&(r||o)?"rgba(234,179,8,0.4)":"color-mix(in srgb, var(--border) 70%, transparent)"}`,borderRadius:eh?13:14,padding:eh?"8px 8px 8px 10px":"10px 10px 10px 14px",boxShadow:"0 1px 2px rgba(15,23,42,0.04), 0 8px 24px -12px rgba(15,23,42,0.10)",transition:"border-color 0.15s, background 0.15s, box-shadow 0.15s"},children:[(0,n.jsx)("textarea",{ref:eS,value:$,onChange:e=>D(e.target.value),onKeyDown:ti,onInput:to,onPaste:tl,placeholder:l&&(r||o)?"Steer 立即注入 / Follow-up 排队…":l?"Agent is running…":"Message…",rows:1,style:{flex:1,alignSelf:eh?"stretch":void 0,background:"none",border:"none",outline:"none",resize:"none",color:"var(--text)",fontSize:14,lineHeight:1.6,fontFamily:"inherit",minHeight:24,maxHeight:200,overflow:"auto",paddingTop:+!!eh,paddingBottom:+!!eh}}),l?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:eh?4:6,flexShrink:0,alignSelf:"flex-end"},children:[r&&(0,n.jsxs)("button",{onClick:()=>tt("steer"),disabled:!eV,title:eK?"当前模型不支持图片输入":"打断 Agent 当前运行,立即注入消息",style:{display:"flex",alignItems:"center",gap:5*!eh,padding:eh?"6px 8px":"7px 12px",background:eV?"rgba(234,179,8,0.12)":"none",border:"1px solid rgba(234,179,8,0.35)",borderRadius:8,color:eV?"rgba(180,130,0,1)":"var(--text-dim)",cursor:eV?"pointer":"not-allowed",fontSize:13,fontWeight:600,letterSpacing:"-0.01em",transition:"background 0.12s"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M5 1 L9 5 L5 9"}),(0,n.jsx)("line",{x1:"1",y1:"5",x2:"9",y2:"5"})]}),!eh&&"Steer"]}),o&&(0,n.jsxs)("button",{onClick:()=>tt("followup"),disabled:!eV,title:eK?"当前模型不支持图片输入":"在 Agent 完成后排队发送",style:{display:"flex",alignItems:"center",gap:5*!eh,padding:eh?"6px 8px":"7px 12px",background:eV?"rgba(129,140,248,0.12)":"none",border:"1px solid rgba(129,140,248,0.35)",borderRadius:8,color:eV?"rgba(99,102,241,1)":"var(--text-dim)",cursor:eV?"pointer":"not-allowed",fontSize:13,fontWeight:600,letterSpacing:"-0.01em",transition:"background 0.12s"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"1",x2:"5",y2:"6"}),(0,n.jsx)("polyline",{points:"2.5 3.5 5 1 7.5 3.5"}),(0,n.jsx)("line",{x1:"2",y1:"9",x2:"8",y2:"9"})]}),!eh&&"Follow-up"]})]}):(0,n.jsxs)("button",{onClick:te,disabled:!eV,title:eK?"当前模型不支持图片输入":"Send",style:{flexShrink:0,alignSelf:"flex-end",display:"flex",alignItems:"center",gap:eh?3:6,padding:eh?"5px 9px":"7px 14px",marginBottom:+!!eh,background:eV?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:8,color:eV?"#fff":"var(--text-dim)",cursor:eV?"pointer":"not-allowed",fontSize:eh?11:13,fontWeight:600,letterSpacing:"-0.01em",boxShadow:eV?"0 1px 3px rgba(37,99,235,0.25)":"none",transition:"background 0.15s, box-shadow 0.15s"},children:[(0,n.jsxs)("svg",{width:eh?13:14,height:eh?13:14,viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"7",x2:"11",y2:"7"}),(0,n.jsx)("polyline",{points:"7.5 3 12 7 7.5 11"})]}),"Send"]})]}),(0,n.jsxs)("div",{className:"chat-input-toolbar",style:{marginTop:eh?5:8,display:"flex",alignItems:eh?"flex-start":"center",gap:e8,flexWrap:eh?"wrap":"nowrap"},children:[(0,n.jsxs)("div",{className:"chat-input-toolbar-left",style:{flex:eh?"1 1 100%":"0 0 auto",width:eh?"100%":void 0,display:"flex",alignItems:"center",gap:2*!eh,flexWrap:eh?"wrap":"nowrap",rowGap:4*!!eh},children:[(0,n.jsx)("button",{onClick:()=>eR.current?.click(),disabled:l,title:"Attach image (right-click for document)",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:e4,height:e4,padding:0,background:"none",border:"none",borderRadius:e3,color:ed.length||eu.length?"var(--accent)":"var(--text-muted)",cursor:l?"not-allowed":"pointer",opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=ed.length||eu.length?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color=ed.length||eu.length?"var(--accent)":"var(--text-muted)"},onContextMenu:e=>{e.preventDefault(),eE.current?.click()},children:(0,n.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})})}),(0,n.jsxs)("div",{ref:ez,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>{l||(X(e=>!e),ee(!1),J(!1),er(!1),ei(!1),el(!1))},disabled:l,title:"插入斜杠命令",style:{position:"relative",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:e4,height:e4,padding:0,background:G?"var(--bg-hover)":"none",border:"none",borderRadius:e3,color:x?"#ef4444":"var(--text-muted)",cursor:l?"not-allowed":"pointer",opacity:l?.5:1,fontSize:15,fontWeight:700,fontFamily:"var(--font-mono)",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=x?"#ef4444":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=G?"var(--bg-hover)":"none",e.currentTarget.style.color=x?"#ef4444":"var(--text-muted)"},children:["/",x&&(0,n.jsx)("span",{style:{position:"absolute",top:7,right:7,width:5,height:5,borderRadius:"50%",background:"#ef4444"}})]}),G&&(0,n.jsxs)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",left:0,zIndex:100,minWidth:320,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)"},overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderBottom:x?"1px solid var(--border)":"none"},children:"Commands"}),x&&(0,n.jsx)("div",{style:{padding:"7px 10px",fontSize:11,color:"#ef4444",background:"rgba(239,68,68,0.06)",borderBottom:"1px solid var(--border)",lineHeight:1.45},children:x}),eY.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Native"}),eY.map(e=>(0,n.jsxs)("button",{onClick:()=>{(X(!1),"/compact"===e.command&&h)?p?.():e9(e.command)},style:{display:"flex",alignItems:"center",gap:eh?6:8,width:"100%",padding:ef,background:"none",border:"none",color:"/compact"===e.command&&h?"#ef4444":"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="none"},children:[(0,n.jsx)("span",{style:{width:18,flexShrink:0,display:"flex",justifyContent:"center",color:"/compact"===e.command&&h?"#ef4444":"var(--text-dim)"},children:"/compact"===e.command&&h?(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,n.jsx)("rect",{x:"2",y:"2",width:"6",height:"6",rx:"1",fill:"currentColor"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"4 14 10 14 10 20"}),(0,n.jsx)("polyline",{points:"20 10 14 10 14 4"}),(0,n.jsx)("line",{x1:"10",y1:"14",x2:"3",y2:"21"}),(0,n.jsx)("line",{x1:"21",y1:"3",x2:"14",y2:"10"})]})}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0,display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text)"},children:"/compact"===e.command&&h?"停止压缩":e.label}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:"/compact"===e.command&&h?"中止当前压缩任务":e.description})]})]},e.command))]}),eq.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{marginTop:2*(eY.length>0),padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderTop:eY.length>0?"1px solid var(--border)":"none"},children:"Prompt Shortcuts"}),eq.map(e=>(0,n.jsxs)("button",{onClick:()=>{X(!1),e9(e.command)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:ef,background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="none"},children:[(0,n.jsx)("span",{style:{width:18,flexShrink:0,display:"flex",justifyContent:"center",color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:13},children:"/"}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0,display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text)"},children:e.label}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:e.description})]})]},e.command))]})]})]}),b&&(0,n.jsxs)("div",{ref:eI,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>{l||(ee(e=>!e),X(!1),J(!1),er(!1),ei(!1),el(!1))},disabled:l,title:"选择 retain / recall / reflect",style:{position:"relative",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:38,height:eg,padding:0,background:Q?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:eG.length>0?"var(--accent)":"var(--text-muted)",cursor:l?"not-allowed":"pointer",opacity:l?.5:1,fontSize:13,fontWeight:700,fontFamily:"var(--font-mono)",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=eG.length>0?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=Q?"var(--bg-hover)":"none",e.currentTarget.style.color=eG.length>0?"var(--accent)":"var(--text-muted)"},children:[" >_".trim(),eG.length>0&&(0,n.jsx)("span",{style:{position:"absolute",top:7,right:7,width:5,height:5,borderRadius:"50%",background:"currentColor"}})]}),Q&&(0,n.jsxs)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",left:0,zIndex:100,minWidth:280,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)"},overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 10px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderBottom:"1px solid var(--border)"},children:"Memory Tools"}),I.map(e=>{let t=eG.includes(e),r=O[e];return(0,n.jsxs)("button",{onClick:()=>{b(t?eG.filter(t=>t!==e):[...eG,e])},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:ef,background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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,display:"flex",alignItems:"baseline",gap:8},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text)"},children:r.label}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)"},children:r.description})]})]},e)})]})]}),eX&&(0,n.jsxs)("div",{ref:eC,style:{position:"relative",flex:eh?"1 1 160px":void 0,minWidth:0},children:[(0,n.jsxs)("button",{onClick:e=>{if(!eh){let t=e.currentTarget.getBoundingClientRect();q({top:t.top,left:t.left,width:t.width})}X(!1),ee(!1),er(!1),ei(!1),el(!1),J(e=>!e)},disabled:l,style:{display:"flex",alignItems:"center",gap:6,padding:ef,height:eg,width:eh?"100%":void 0,maxWidth:eh?"100%":220,overflow:"hidden",background:V?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:eh?11:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=V?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",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"}),(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:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:eF})]}),V&&(eh?(0,n.jsxs)("div",{ref:eT,style:{...e6,display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("div",{style:{padding:"8px 12px 6px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"Models"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2},children:eF})]}),(0,n.jsx)("div",{style:{overflowY:"auto"},children:eO.map((e,t)=>(0,n.jsxs)("div",{children:[eO.length>1&&(0,n.jsx)("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderTop:t>0?"1px solid var(--border)":"none"},children:e.provider}),e.options.map(e=>{let t=e.modelId===s?.modelId&&e.provider===s?.provider;return(0,n.jsxs)("button",{onClick:()=>{J(!1),t||c(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"10px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left",fontWeight:t?600:400},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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.jsx)("span",{style:{flex:1,minWidth:0,whiteSpace:"normal",lineHeight:1.35},children:e.name}),e.input?.includes("image")&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",fontFamily:"var(--font-mono)",marginLeft:8},children:"image"})]},`${e.provider}:${e.modelId}`)})]},e.provider))})]}):Y&&(E=(R=window.visualViewport?.height??window.innerHeight)-Y.top+6,P=Math.max(120,Math.min(Y.top-8,.6*R)),(0,n.jsx)("div",{ref:eT,style:{position:"fixed",bottom:E,left:Y.left,zIndex:500,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)",overflow:"hidden",width:"max-content",minWidth:Y.width,maxHeight:P,overflowY:"auto"},children:eO.map((e,t)=>(0,n.jsxs)("div",{children:[eO.length>1&&(0,n.jsx)("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em",borderTop:t>0?"1px solid var(--border)":"none"},children:e.provider}),e.options.map(e=>{let t=e.modelId===s?.modelId&&e.provider===s?.provider;return(0,n.jsxs)("button",{onClick:()=>{J(!1),t||c(e.provider,e.modelId)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"7px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left",fontWeight:t?600:400,whiteSpace:"nowrap"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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.jsx)("span",{style:{flex:1,minWidth:0},children:e.name}),e.input?.includes("image")&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",fontFamily:"var(--font-mono)",marginLeft:12},children:"image"})]},`${e.provider}:${e.modelId}`)})]},e.provider))})))]})]}),(0,n.jsx)("div",{className:"chat-input-toolbar-spacer",style:{display:em?"none":void 0,flex:eh?"0 0 auto":1,width:eh?0:void 0,height:eh?0:void 0}}),(0,n.jsxs)("div",{className:"chat-input-toolbar-right",style:{flex:eh?"1 1 100%":"0 0 auto",width:eh?"100%":void 0,display:"flex",alignItems:"center",justifyContent:eh?"space-between":void 0,gap:eh?4:2,marginLeft:eh?0:"auto",marginTop:2*!!eh},children:[em&&(0,n.jsxs)("div",{ref:eL,style:{position:"relative"},children:[(0,n.jsx)("button",{onClick:()=>{X(!1),ee(!1),J(!1),er(!1),ei(!1),el(e=>!e)},title:"更多设置",style:{display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28,padding:0,background:eo?"var(--bg-hover)":"none",border:"none",borderRadius:8,color:eb,cursor:"pointer",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=eo?"var(--bg-hover)":"none",e.currentTarget.style.color=eo?"var(--text)":"var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,n.jsx)("circle",{cx:"5",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"1.5"}),(0,n.jsx)("circle",{cx:"19",cy:"12",r:"1.5"})]})}),eo&&(0,n.jsxs)("div",{style:{...e6,zIndex:510,padding:"6px",display:"flex",flexDirection:"column",gap:4},children:[(0,n.jsx)("div",{style:{padding:"4px 6px 2px",fontSize:10,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:"More"}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",padding:"0 6px 4px"},children:"模型、推理、工具等设置已收进这里。"}),(0,n.jsxs)("div",{style:{display:"grid",gap:4},children:[eX&&(0,n.jsxs)("button",{onClick:()=>{el(!1),ei(!1),er(!1),ee(!1),J(!0)},style:ey,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Model"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2,wordBreak:"break-word",lineHeight:1.35},children:e1})]}),(eQ||e0)&&(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:4},children:[eQ&&(0,n.jsxs)("button",{onClick:()=>{el(!1),J(!1),er(!1),ee(!1),ei(!0)},style:ey,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Thinking"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2},children:e2})]}),e0&&(0,n.jsxs)("button",{onClick:()=>{el(!1),J(!1),ei(!1),ee(!1),er(!0)},style:ey,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Tools"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text)",marginTop:2},children:e5})]})]}),!!b&&(0,n.jsxs)("button",{onClick:()=>{el(!1),J(!1),ei(!1),er(!1),ee(!0)},style:ey,children:[(0,n.jsx)("div",{style:{fontSize:"10px",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Memory"}),(0,n.jsx)("div",{style:{fontSize:12,color:eG.length>0?"var(--accent)":"var(--text)",marginTop:2},children:eZ})]})]})]})]}),(!em&&!l||eh&&en)&&j&&(0,n.jsxs)("div",{ref:eW,style:{position:"relative"},children:[!em&&!l&&(0,n.jsxs)("button",{onClick:()=>{l||(X(!1),ee(!1),J(!1),er(!1),el(!1),ei(e=>!e))},disabled:l,title:"切换推理强度",style:{display:"flex",alignItems:"center",gap:eh?3:5,padding:ef,height:eg,background:en?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:eh?11:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=en?"var(--bg-hover)":"none",e.currentTarget.style.color="var(--text-muted)"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M9.5 2A5.5 5.5 0 0 0 4 7.5c0 1.7.78 3.21 2 4.21V14a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-2.29c1.22-1 2-2.51 2-4.21A5.5 5.5 0 0 0 9.5 2z"}),(0,n.jsx)("line",{x1:"7",y1:"18",x2:"12",y2:"18"}),(0,n.jsx)("line",{x1:"8",y1:"21",x2:"11",y2:"21"})]}),(0,n.jsx)("span",{style:ex,children:(()=>{let e=y??"auto";if("auto"===e||!w)return e;let t=w[e];return null!=t?t:e})()})]}),en&&(0,n.jsx)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",right:0,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)",minWidth:ev},overflow:"hidden"},children:F.filter(e=>!k||"auto"===e||k.includes(e)).map(e=>{let t=(y??"auto")===e,r=U[e],i="auto"!==e&&w?w[e]:void 0,o=null!=i&&i!==e?i:e,l=null!=i&&i!==e;return(0,n.jsxs)("button",{onClick:()=>{ei(!1),t||j(e)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"7px 12px",background:t?"var(--bg-selected)":"none",border:"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:eh?11:12,textAlign:"left",fontWeight:t?600:400,whiteSpace:"nowrap"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},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},children:[o,l&&(0,n.jsxs)("span",{style:{fontSize:10,color:"var(--text-dim)",fontFamily:"var(--font-mono)",marginLeft:5},children:["(",e,")"]})]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",marginLeft:8},children:r})]},e)})})]}),(!em&&!l||eh&&et)&&e0&&(0,n.jsxs)("div",{ref:eM,style:{position:"relative"},children:[!em&&!l&&(0,n.jsxs)("button",{onClick:()=>{l||(X(!1),ee(!1),J(!1),ei(!1),el(!1),er(e=>!e))},disabled:l,title:"切换工具预设",style:{display:"flex",alignItems:"center",gap:eh?3:5,padding:ef,height:eg,background:et?"var(--bg-hover)":"none",border:"none",borderRadius:eh?8:9,color:(g??"full")==="workbench"?"var(--accent)":"var(--text-muted)",cursor:l?"not-allowed":"pointer",fontSize:eh?11:12,opacity:l?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{l||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=(g??"full")==="workbench"?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=et?"var(--bg-hover)":"none",e.currentTarget.style.color=(g??"full")==="workbench"?"var(--accent)":"var(--text-muted)"},children:[(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"})}),(0,n.jsx)("span",{style:ex,children:e5})]}),et&&(0,n.jsx)("div",{style:{...eh?e6:{position:"absolute",bottom:"calc(100% + 6px)",right:0,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 -4px 16px rgba(0,0,0,0.10)",minWidth:120},overflow:"hidden"},children:A.map(e=>{let t=N[e],r=(g??"full")===t,i="agent"===e&&!1===es,o=i?"需安装 pi-subagents":H[e];return(0,n.jsxs)("button",{onClick:()=>{!i&&(er(!1),r||v(t))},disabled:i,title:i?"运行 pi install npm:pi-subagents 后再启用":void 0,style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"7px 12px",background:r?"var(--bg-selected)":"none",border:"none",color:r?"var(--text)":"var(--text-muted)",cursor:i?"not-allowed":"pointer",fontSize:eh?11:12,textAlign:"left",fontWeight:r?600:400,opacity:i?.5:1,whiteSpace:"nowrap"},onMouseEnter:e=>{r||i||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{r||(e.currentTarget.style.background="none")},children:[r?(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.jsx)("span",{style:{flex:1},children:e}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",marginLeft:8},children:o})]},e)})})]}),l&&(0,n.jsxs)("button",{onClick:t,title:"停止 Agent",style:{display:"flex",alignItems:"center",gap:6,padding:"8px 14px",height:eg,background:"rgba(239,68,68,0.08)",border:"1px solid rgba(239,68,68,0.3)",borderRadius:eh?8:9,color:"#ef4444",cursor:"pointer",fontSize:eh?11:12,fontWeight:600,whiteSpace:"nowrap",letterSpacing:"-0.01em",transition:"background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.16)"},onMouseLeave:e=>{e.currentTarget.style.background="rgba(239,68,68,0.08)"},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,n.jsx)("rect",{x:"1.5",y:"1.5",width:"7",height:"7",rx:"1.5",fill:"currentColor"})}),"Stop"]}),void 0!==T&&(0,n.jsx)("button",{onClick:T,title:C?"关闭完成提示音":"开启完成提示音",style:{display:"flex",alignItems:"center",justifyContent:"center",width:eh?28:32,height:eh?28:32,padding:0,background:"none",border:"none",borderRadius:eh?8:9,color:C?"var(--text-muted)":"var(--text-dim)",cursor:"pointer",opacity:C?1:.55,transition:"background 0.12s, color 0.12s, opacity 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)",e.currentTarget.style.opacity="1"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color=C?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.opacity=C?"1":"0.55"},children:C?(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)("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),(0,n.jsx)("path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07"}),(0,n.jsx)("path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14"})]}):(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)("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),(0,n.jsx)("line",{x1:"23",y1:"9",x2:"17",y2:"15"}),(0,n.jsx)("line",{x1:"17",y1:"9",x2:"23",y2:"15"})]})})]})]})]})]})});function Q(e){return"user"===e.role?{bg:"rgba(37,99,235,0.18)",border:"rgba(37,99,235,0.7)"}:{bg:"rgba(107,114,128,0.12)",border:"rgba(107,114,128,0.5)"}}function ee({messages:e,streamingMessage:t,scrollContainer:r,messageRefs:o}){let[l,s]=(0,i.useState)(0),[a,d]=(0,i.useState)(1),[c,u]=(0,i.useState)(!1),[p,h]=(0,i.useState)([]),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(null),m=(0,i.useRef)(!1),b=(0,i.useRef)(null),y=(0,i.useMemo)(()=>t?[...e,t]:e,[e,t]),j=(0,i.useRef)(y);j.current=y;let k=(0,i.useRef)(null);k.current=()=>{let e=r.current;if(!e)return;let t=e.scrollHeight,n=e.clientHeight,i=t-n;u(i>20),i<=0?(s(0),d(1)):(s(e.scrollTop/i),d(n/t));let l=o.current,a=[],c=0,p=j.current;for(let r=0;r<p.length;r++){let n=p[r];if("user"!==n.role&&"assistant"!==n.role)continue;let i=l?.[c];if(c++,("user"===n.role||"assistant"===n.role&&(n.content??[]).some(e=>"text"===e.type))&&i&&t>0){let r=i.getBoundingClientRect(),o=e.getBoundingClientRect(),l=r.top-o.top+e.scrollTop,s=r.height;a.push({topRatio:l/t,heightRatio:s/t,msg:n,index:a.length})}}h(a)};let w=(0,i.useCallback)(()=>k.current(),[]);(0,i.useEffect)(()=>{let e=r.current;if(!e)return;e.addEventListener("scroll",w,{passive:!0});let t=new ResizeObserver(w);return t.observe(e),e.firstElementChild&&t.observe(e.firstElementChild),w(),()=>{e.removeEventListener("scroll",w),t.disconnect()}},[r,w]),(0,i.useEffect)(()=>{let e=setTimeout(w,50);return()=>clearTimeout(e)},[e.length,w]);let S=(0,i.useCallback)(e=>{let t=r.current;if(!t)return;let n=t.scrollHeight-t.clientHeight;n<=0||(t.scrollTop=Math.max(0,Math.min(1-a,e))/(1-a)*n)},[r,a]),C=(0,i.useCallback)(e=>{if(!c)return;m.current=!0;let t=e.currentTarget.getBoundingClientRect(),r=(e.clientY-t.top)/t.height,n=r-l*(1-a),i=n>=0&&n<=a?n:a/2;S(r-i);let o=e=>{m.current&&S((e.clientY-t.top)/t.height-i)},s=()=>{m.current=!1,window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",s)},[c,a,l,S]),T=b.current?.clientHeight??600,z=(0,i.useMemo)(()=>{if(!x||0===p.length)return[];let e=p.map(e=>Math.round(e.topRatio*T-11));for(let t=0;t<10;t++){for(let t=1;t<e.length;t++){let r=e[t-1]+22+2;e[t]<r&&(e[t]=r)}for(let t=e.length-2;t>=0;t--){let r=e[t+1]-22-2;e[t]>r&&(e[t]=r)}}for(let t=0;t<e.length;t++)e[t]=Math.max(0,Math.min(T-22,e[t]));return e},[x,p,T]);if(!c)return null;let I=l*(1-a)*100,M=100*a,W=null!==f&&p.length>0?p.reduce((e,t)=>Math.abs(t.topRatio-f)<Math.abs(p[e].topRatio-f)?t.index:e,0):null;return(0,n.jsxs)("div",{ref:b,onMouseDown:C,onMouseEnter:()=>g(!0),onMouseLeave:()=>{g(!1),v(null)},onMouseMove:e=>{let t=e.currentTarget.getBoundingClientRect();v((e.clientY-t.top)/t.height)},style:{width:36,flexShrink:0,position:"relative",cursor:"default",userSelect:"none",borderLeft:"1px solid var(--border)",background:"var(--bg-panel)",overflow:"visible"},children:[(0,n.jsx)("div",{style:{position:"absolute",left:0,right:0,top:`${I}%`,height:`${M}%`,background:"rgba(100,100,100,0.1)",borderTop:"1px solid rgba(100,100,100,0.2)",borderBottom:"1px solid rgba(100,100,100,0.2)",pointerEvents:"none",zIndex:1}}),p.map(e=>{let t=Q(e.msg),r=x&&W===e.index,i="user"===e.msg.role,o=100*e.topRatio;return(0,n.jsx)("div",{style:{position:"absolute",top:`${o}%`,transform:"translateY(-50%)",left:0,right:0,height:"12px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",zIndex:2},children:(0,n.jsx)("div",{style:{width:i?8:6,height:i?8:6,borderRadius:i?2:"50%",background:t.bg,border:`1.5px solid ${t.border}`,flexShrink:0,transition:"transform 0.1s",transform:r?"scale(1.6)":"scale(1)"}})},e.index)}),(0,n.jsx)("div",{style:{position:"absolute",left:"50%",top:0,bottom:0,width:1,background:"var(--border)",transform:"translateX(-50%)",zIndex:0}}),x&&p.map((e,t)=>{let r=function(e){if("user"===e.role){let t=e.content;return"string"==typeof t?t.slice(0,200):Array.isArray(t)?t.filter(e=>"text"===e.type&&e.text).map(e=>e.text).join("\n").slice(0,200):""}if("assistant"===e.role){let t=e.content??[],r=t.filter(e=>"text"===e.type).map(e=>e.text).join(" ");if(r)return r.slice(0,200);let n=t.filter(e=>"toolCall"===e.type).map(e=>e.toolName);if(n.length)return n.join(", ")}return""}(e.msg),i=Q(e.msg),o=W===e.index;return r&&0!==z.length?(0,n.jsx)("div",{style:{position:"absolute",top:z[t],right:"100%",marginRight:6,background:"var(--bg)",borderTop:`1px solid ${o?i.border:"var(--border)"}`,borderRight:`1px solid ${o?i.border:"var(--border)"}`,borderBottom:`1px solid ${o?i.border:"var(--border)"}`,borderLeft:`2px solid ${i.border}`,borderRadius:4,padding:"2px 7px",width:200,zIndex:100,pointerEvents:"none",opacity:o?1:.45,transition:"top 0.1s, opacity 0.1s"},children:(0,n.jsx)("div",{style:{fontSize:11,color:o?"var(--text)":"var(--text-muted)",lineHeight:1.4,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:r})},e.index):null})]})}function et(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function er(e,t=220){if(!e)return;let r=e.trim();if(r)return r.length>t?`${r.slice(0,t)}...`:r}function en(...e){for(let t of e)if("string"==typeof t&&t.trim())return t}function ei(...e){for(let t of e)if("number"==typeof t&&Number.isFinite(t))return t}function eo(e){let t=new Map;for(let r of e){if("custom"===r.role&&"subagent-notify"===r.customType&&"string"==typeof r.content){let e=r.content.match(/^Background task (completed|failed|paused):\s*\*\*(.+?)\*\*(?:\s+\((.+?)\))?/);if(e){let n=`bg-${e[2]}-${r.timestamp??""}`;t.set(n,{id:n,agent:e[2],status:e[1],task:e[3],summary:er(r.content.split("\n").slice(3).join("\n")),timestamp:r.timestamp})}}if("assistant"===r.role){let e=r.content;if(!e)continue;for(let n of e)if("toolCall"===n.type&&"subagent"===n.toolName&&n.input){let e=n.input,i=e.agent??(e.chain?"chain":e.tasks?"parallel":e.action??"subagent"),o="string"==typeof e.task?e.task:void 0,l=n.toolCallId??`sub-${i}-${r.timestamp??Date.now()}`;t.set(l,{id:l,agent:i,status:"running",task:o,timestamp:r.timestamp})}}if("toolResult"===r.role){if(r.toolName&&"subagent"!==r.toolName||!r.toolCallId||!t.has(r.toolCallId))continue;let e=t.get(r.toolCallId),n=r.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n");t.set(r.toolCallId,function(e,t,r){let n;if(!et(t))return{...e,summary:er(r)};let i=Array.isArray(t.results)?t.results.filter(et):[],o=i[0],l=o?.progressSummary,s=o&&(n=o.artifactPaths)?Object.values(n).filter(e=>"string"==typeof e&&e.trim().length>0):[],a=en(o?.finalOutput,o?.output,r);return{...e,mode:en(t.mode),runId:en(t.runId),agent:en(o?.agent,e.agent)??e.agent,task:en(o?.task,e.task),summary:er(a),model:en(o?.model),durationMs:ei(l?.durationMs),toolCount:ei(l?.toolCount),tokens:ei(l?.tokens),outputPath:en(o?.savedOutputPath,o?.artifactPaths?.outputPath),sessionFile:en(o?.sessionFile,o?.artifactPaths?.jsonlPath),artifacts:s,resultCount:i.length||void 0}}({...e,status:function(e){if(e.isError)return"failed";let t=e.details;return et(t)&&Array.isArray(t.results)&&t.results.some(e=>et(e)&&"number"==typeof e.exitCode&&0!==e.exitCode)?"failed":"completed"}(r)},r.details,n))}}return Array.from(t.values()).sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))}function el({messages:e,runs:t}){let r=(0,i.useMemo)(()=>eo(e??[]),[e]),o=t??r,l=o.filter(e=>"running"===e.status),s=o.filter(e=>"running"!==e.status);return 0===o.length?null:(0,n.jsxs)("div",{style:{height:"100%",overflow:"auto",padding:12},children:[l.length>0&&(0,n.jsx)(es,{title:`Active (${l.length})`,runs:l}),s.length>0&&(0,n.jsx)(es,{title:`Completed (${s.length})`,runs:s,compact:l.length>0})]})}function es({title:e,runs:t,compact:r}){return(0,n.jsxs)("div",{style:{marginBottom:r?10:16},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",marginBottom:8,textTransform:"uppercase",letterSpacing:"0.05em"},children:e}),t.map(e=>(0,n.jsx)(ea,{run:e},e.id))]})}function ea({run:e}){let[t,r]=(0,i.useState)(!1),o="running"===e.status,l="completed"===e.status?"#22c55e":"failed"===e.status?"#ef4444":o?"var(--accent)":"var(--text-dim)",s="failed"===e.status?"rgba(248,113,113,0.35)":o?"rgba(99,102,241,0.25)":"var(--border)",a="failed"===e.status?"rgba(248,113,113,0.05)":o?"rgba(99,102,241,0.05)":"var(--bg-panel)",d=[e.mode,e.resultCount&&e.resultCount>1?`${e.resultCount} results`:void 0,void 0!==e.toolCount?`${e.toolCount} tools`:void 0,void 0!==e.tokens?`${e.tokens.toLocaleString()} tok`:void 0,void 0!==e.durationMs?`${Math.round(e.durationMs/1e3)}s`:void 0].filter(Boolean).join(" \xb7 "),c=!!(e.summary||e.outputPath||e.sessionFile||e.artifacts?.length||e.model||e.runId);return(0,n.jsxs)("div",{style:{borderRadius:6,border:`1px solid ${s}`,background:a,marginBottom:6,fontSize:12,overflow:"hidden"},children:[(0,n.jsxs)("button",{onClick:()=>c&&r(e=>!e),style:{display:"flex",alignItems:"center",gap:7,width:"100%",border:"none",background:"transparent",padding:"8px 10px",color:"var(--text-muted)",textAlign:"left",cursor:c?"pointer":"default"},children:[(0,n.jsx)(ed,{running:o,color:l}),(0,n.jsx)("span",{style:{fontWeight:650,color:"var(--text)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.agent}),(0,n.jsx)("span",{style:{color:l,fontSize:10,fontWeight:700,flexShrink:0},children:e.status}),d&&(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10,marginLeft:"auto",whiteSpace:"nowrap"},children:d}),c&&(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:{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"})})]}),e.task&&(0,n.jsx)("div",{style:{padding:"0 10px 8px 25px",color:"var(--text-muted)",fontSize:11,lineHeight:1.4},children:er(e.task,150)}),t&&c&&(0,n.jsxs)("div",{style:{borderTop:`1px solid ${s}`,background:"var(--bg)",padding:"8px 10px",display:"flex",flexDirection:"column",gap:7},children:[e.summary&&(0,n.jsx)("pre",{style:{margin:0,color:"var(--text-muted)",fontSize:11,lineHeight:1.45,whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:160,overflow:"auto"},children:e.summary}),(0,n.jsx)(ec,{run:e})]})]})}function ed({running:e,color:t}){return(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:t,display:"inline-block",animation:e?"pulse 1.5s infinite":void 0,flexShrink:0}})}function ec({run:e}){let t=[e.model?["model",e.model]:void 0,e.runId?["run",e.runId]:void 0,e.outputPath?["output",e.outputPath]:void 0,e.sessionFile?["session",e.sessionFile]:void 0,...(e.artifacts??[]).slice(0,4).map((e,t)=>[`artifact ${t+1}`,e])].filter(Boolean);return 0===t.length?null:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:3},children:t.map(([e,t])=>(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"58px minmax(0, 1fr)",gap:6,fontSize:10},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",textTransform:"uppercase"},children:e}),(0,n.jsx)("span",{style:{color:"var(--text-muted)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:t,children:t})]},`${e}:${t}`))})}function eu({sessionKind:e,toolPreset:t,initialSourcePath:r,initialKernel:i,isNew:o,isStreaming:l=!1,onResume:s,onDismiss:a}){if(o||"workbench"!==e)return null;let d=r?r.replace(/\\/g,"/").split("/").filter(Boolean).pop()??r:null,c="workbench"===t;return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",background:"rgba(37,99,235,0.06)",borderBottom:"1px solid rgba(37,99,235,0.18)",fontSize:12,flexShrink:0},children:[(0,n.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",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.jsxs)("span",{style:{color:"var(--text)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["This is an ",(0,n.jsxs)("strong",{children:[c?"active":"inactive"," Workbench"]})," session",d&&(0,n.jsxs)("span",{style:{color:"var(--text-muted)"},children:[" \xb7 Source: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--accent)"},children:d})]}),i&&(0,n.jsxs)("span",{style:{color:"var(--text-dim)"},children:[" \xb7 Kernel: ",i.toUpperCase()]})]}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",onClick:a,style:{border:"1px solid var(--border)",borderRadius:6,padding:"2px 10px",height:26,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:11},children:"Dismiss"}),(0,n.jsx)("button",{type:"button",onClick:s,disabled:l,title:l?"Wait until the agent finishes before updating Workbench":c?"Reload the initial data source into the warm runtime":"Restore Workbench tools and reload the initial data source",style:{border:"1px solid rgba(37,99,235,0.45)",borderRadius:6,padding:"2px 12px",height:26,background:"rgba(37,99,235,0.12)",color:"var(--accent)",cursor:l?"not-allowed":"pointer",fontSize:11,fontWeight:600,opacity:l?.55:1,whiteSpace:"nowrap"},children:c?"Reload Initial Data":"Resume Workbench"})]})}function ep(e){if("assistant"!==e.role)return e;let t=e.content;if(!Array.isArray(t))return e;let r=t.map(e=>("object"!=typeof e||null===e||Array.isArray(e)||"toolCall"!==e.type?null:{type:"toolCall",toolCallId:"string"==typeof e.toolCallId?e.toolCallId:"string"==typeof e.id?e.id:"",toolName:"string"==typeof e.toolName?e.toolName:"string"==typeof e.name?e.name:"",input:"object"!=typeof e.input||null===e.input||Array.isArray(e.input)?"object"!=typeof e.arguments||null===e.arguments||Array.isArray(e.arguments)?{}:e.arguments:e.input})??e);return{...e,content:r}}async function eh(e,t){let r=await fetch(`/api/agent/${encodeURIComponent(e)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await r.json().catch(()=>({}));if(!r.ok||n.error)throw Error(n.error??`HTTP ${r.status}`);return n.data}function ex(e,t){switch(t.type){case"start":return{isStreaming:!0,streamingMessage:null};case"update":return{isStreaming:!0,streamingMessage:t.message};case"end":case"reset":return{isStreaming:!1,streamingMessage:null};default:return e}}function eg(e){if("user"!==e.role)return null;var t=e.content;if("string"==typeof t)return`text:${t}`;if(!Array.isArray(t))try{return`other:${JSON.stringify(t)}`}catch{return"other:"}let r=t.map(e=>{if(!e||"object"!=typeof e)return e;if("text"===e.type)return{type:"text",text:e.text};if("image"===e.type){let t=e.source&&"object"==typeof e.source?e.source:{};return{type:"image",mimeType:t.media_type??e.mimeType,data:t.data??e.data,url:t.url}}return e});try{return`blocks:${JSON.stringify(r)}`}catch{return"blocks:"}}function ef(e){if(!e.role)return null;try{return`${e.role}:${JSON.stringify(e)}`}catch{return null}}let ev=["image/","application/pdf","application/vnd.openxmlformats-officedocument","application/msword","application/vnd.ms-"];function em(e){return ev.some(t=>e.type.startsWith(t))}function eb({agentPhase:e,startedAt:t}){let[r,o]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(!t)return void o(0);let e=()=>o(Math.max(0,Math.floor((Date.now()-t)/1e3)));e();let r=setInterval(e,1e3);return()=>clearInterval(r)},[t]),(0,n.jsx)("div",{className:"py-2 text-[13px] text-text-muted",children:(0,n.jsxs)("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]}…`:`Running ${t.slice(0,2).join(", ")}${t.length>2?` (+${t.length-2})`:""}…`}return e?.kind==="waiting_model"?"Waiting for model…":"Working…"}(e),"\xa0\xa0",function(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);return`${t}m ${String(e%60).padStart(2,"0")}s`}(r)]})})}function ey(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function ej({goal:e,planTasks:t,isRunning:r,onExecutePlan:o}){let[l,s]=(0,i.useState)(!1),a=(0,i.useCallback)(()=>s(e=>!e),[]),d=e&&"dropped"!==e.status,c=t&&t.length>0;if(!d&&!c)return null;let u=(0,i.useMemo)(()=>!e?.tokenBudget||e.tokenBudget<=0?null:Math.min(100,Math.round(e.tokensUsed/e.tokenBudget*100)),[e?.tokenBudget,e?.tokensUsed]),p=t?.filter(e=>"completed"===e.status).length??0,h=!!t&&p===t.length;return(0,n.jsxs)("div",{style:{marginBottom:16,borderRadius:10,border:"1px solid var(--border)",background:"var(--bg-panel)",overflow:"hidden"},children:[d&&(0,n.jsxs)("div",{style:{padding:"10px 14px",borderBottom:c?"1px solid var(--border)":"none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:6},children:[(0,n.jsx)("span",{style:{flexShrink:0,borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:"#fff",background:function(e){switch(e){case"active":return"rgba(37,99,235,0.85)";case"complete":return"rgba(34,197,94,0.85)";case"budget-limited":return"rgba(245,158,11,0.85)";case"paused":return"rgba(148,163,184,0.85)";case"dropped":return"rgba(239,68,68,0.85)"}}(e.status)},children:function(e){switch(e){case"active":return"进行中";case"paused":return"已暂停";case"budget-limited":return"预算受限";case"complete":return"已完成";case"dropped":return"已放弃"}}(e.status)}),(0,n.jsx)("span",{style:{fontSize:11,fontWeight:500,color:"var(--text-muted)"},children:"Goal"})]}),(0,n.jsx)("p",{style:{margin:"0 0 6px",fontSize:13,lineHeight:1.5,color:"var(--text)",whiteSpace:"pre-wrap"},children:e.objective}),(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"4px 16px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)("span",{children:function(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m ${String(e%60).padStart(2,"0")}s`;let r=Math.floor(t/60);return`${r}h ${t%60}m`}(e.timeUsedSeconds)}),(0,n.jsxs)("span",{children:[ey(e.tokensUsed),e.tokenBudget?` / ${ey(e.tokenBudget)} tokens`:" tokens"]}),null!=u&&(0,n.jsxs)("span",{children:[u,"%"]})]}),null!=u&&(0,n.jsx)("div",{style:{marginTop:6,height:3,borderRadius:999,overflow:"hidden",background:"var(--border)"},children:(0,n.jsx)("div",{style:{height:"100%",borderRadius:999,background:u>=100?"rgba(239,68,68,0.6)":"rgba(37,99,235,0.5)",width:`${Math.min(u,100)}%`,transition:"width 0.3s"}})})]}),c&&(0,n.jsxs)("div",{style:{padding:"4px 14px 10px"},children:[(0,n.jsxs)("div",{onClick:a,role:"button",tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&a()},"aria-expanded":!l,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,cursor:"pointer",padding:"6px 0"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"#3b82f6",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M9 11l3 3L22 4"}),(0,n.jsx)("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})]}),(0,n.jsxs)("span",{style:{fontSize:12,fontWeight:500,color:"#3b82f6"},children:["Plan \xb7 ",t.length," 步"]}),h&&(0,n.jsxs)("span",{style:{borderRadius:4,padding:"0 6px",fontSize:10,fontWeight:600,background:"rgba(34,197,94,0.12)",color:"rgba(34,197,94,0.85)"},children:["已完成 ",p,"/",t.length]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexShrink:0},children:[o&&h&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),o()},disabled:r,style:{borderRadius:5,padding:"3px 10px",fontSize:11,fontWeight:500,color:"#fff",background:r?"rgba(59,130,246,0.3)":"#3b82f6",border:"none",cursor:r?"not-allowed":"pointer"},children:"执行计划"}),(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-muted)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:l?"rotate(-90deg)":"rotate(0deg)",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"6 9 12 15 18 9"})})]})]}),!l&&(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:t.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8,borderRadius:4,padding:"3px 8px",background:"inProgress"===e.status?"rgba(59,130,246,0.04)":"transparent"},children:[(0,n.jsx)("div",{style:{marginTop:1},children:function(e){switch(e){case"completed":return(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"rgba(34,197,94,0.12)",stroke:"rgba(34,197,94,0.6)",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M7 12.5l3 3 7-7",stroke:"rgba(34,197,94,0.9)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]});case"inProgress":return(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"rgba(59,130,246,0.2)",strokeWidth:"2.5"}),(0,n.jsx)("path",{d:"M12 2a10 10 0 0 1 10 10",stroke:"rgba(59,130,246,0.85)",strokeWidth:"2.5",strokeLinecap:"round",children:(0,n.jsx)("animateTransform",{attributeName:"transform",type:"rotate",from:"0 12 12",to:"360 12 12",dur:"1.5s",repeatCount:"indefinite"})})]});default:return(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"var(--border)",strokeWidth:"1.5"})})}}(e.status)}),(0,n.jsx)("span",{style:{fontSize:12,lineHeight:1.5,...function(e){switch(e){case"completed":return{color:"rgba(34,197,94,0.85)",textDecoration:"line-through"};case"inProgress":return{color:"#3b82f6",fontWeight:500};default:return{color:"var(--text-muted)"}}}(e.status)},children:e.step})]},e.id))})]})]})}let ek=["annotate and analyze.","vibe code bioinformatics.","turn data into figures.","inspect your project.","build a reproducible report.","run R/Python plots.","summarize that paper.","review the pipeline.","compare markers.","draft methods.","find the next analysis step."];function ew({phrases:e}){let[t,r]=(0,i.useState)(()=>Math.floor(Math.random()*e.length)),[o,l]=(0,i.useState)(""),[s,a]=(0,i.useState)(!1),[d,c]=(0,i.useState)(!0);return(0,i.useEffect)(()=>{let e=setInterval(()=>c(e=>!e),530);return()=>clearInterval(e)},[]),(0,i.useEffect)(()=>{let n,i=e[t];if(s||o!==i)if(s&&""===o)a(!1),r(t=>(t+1)%e.length);else{let e=s?i.slice(0,o.length-1):i.slice(0,o.length+1);n=setTimeout(()=>l(e),s?28:55)}else n=setTimeout(()=>a(!0),1800);return()=>clearTimeout(n)},[o,s,t,e]),(0,n.jsxs)("span",{style:{color:"var(--text-muted)",fontWeight:400},children:[o,(0,n.jsx)("span",{style:{opacity:+!!d,color:"var(--accent)",marginLeft:1},children:"▍"})]})}function eS({status:e}){let t=e?.current??"0.8.59"??"0.0.0";if(e?.updateAvailable){let r=e.latest?`v${e.latest}`:"latest";return(0,n.jsxs)("span",{title:`Current v${t}; latest ${r}; run ${e.updateCommand}`,style:{display:"block",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:11,color:"var(--accent)"},children:["Update: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",color:"var(--accent)"},children:e.updateCommand})]})}return(0,n.jsxs)("span",{title:`AnnoVibe v${t}`,style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap"},children:["v",t]})}function eC({session:e,newSessionCwd:t,onAgentEnd:r,onSessionCreated:o,onSessionForked:l,modelsRefreshKey:s,chatInputRef:a,onBranchDataChange:c,onSystemPromptChange:u,onSessionStatsChange:p,onContextUsageChange:h,onToolPresetActive:x,generativeUI:g}){var f;let v,[m,b]=(0,i.useState)(null),[y,j]=(0,i.useState)(!1),[k,w]=(0,i.useState)([]),{data:S,loading:C,error:M,messages:$,entryIds:B,streamState:A,agentRunning:N,modelNames:H,modelList:O,modelThinkingLevels:F,modelThinkingLevelMaps:U,toolPreset:_,memoryTools:K,thinkingLevel:V,retryInfo:J,contextUsage:Y,forkingEntryId:q,isCompacting:G,compactError:Z,displayModel:Q,sessionStats:et,agentPhase:er,agentError:en,isNew:ei,messagesEndRef:es,scrollContainerRef:ea,lastUserMsgRef:ed,handleSend:ec,handleAbort:ev,handleFork:ey,handleNavigate:eT,handleModelChange:ez,handleCompact:eI,handleSteer:eM,handleFollowUp:eW,handleAbortCompaction:eL,handleToolPresetChange:eR,handleMemoryToolsChange:eE,handleThinkingLevelChange:eP,handleAgentEventRef:e$}=function(e){let{session:t,newSessionCwd:r,onAgentEnd:n,onSessionCreated:o,onSessionForked:l,modelsRefreshKey:s,onBranchDataChange:a,onSystemPromptChange:d}=e,c=null===t&&null!==r,[u,p]=(0,i.useState)(null),[h,x]=(0,i.useState)(!c),[g,f]=(0,i.useState)(null),[v,m]=(0,i.useState)(null),[b,y]=(0,i.useState)([]),[j,k]=(0,i.useState)([]),[w,S]=(0,i.useReducer)(ex,{isStreaming:!1,streamingMessage:null}),[C,T]=(0,i.useState)(!1),[M,$]=(0,i.useState)({}),[B,A]=(0,i.useState)([]),[N,H]=(0,i.useState)({}),[O,F]=(0,i.useState)({}),[U,_]=(0,i.useState)(null),[K,V]=(0,i.useState)("full"),[J,Y]=(0,i.useState)([...I]),[q,G]=(0,i.useState)("auto"),[Z,X]=(0,i.useState)(null),[Q,ee]=(0,i.useState)(null),[et,er]=(0,i.useState)(null),[en,ei]=(0,i.useState)(null),[eo,el]=(0,i.useState)(null),[es,ea]=(0,i.useState)(null),[ed,ec]=(0,i.useState)(!1),[eu,ev]=(0,i.useState)(null),[em,eb]=(0,i.useState)(null),[ey,ej]=(0,i.useState)(null),ek=(0,i.useRef)(null),ew=(0,i.useRef)(t?.id??null),eS=(0,i.useRef)(!1),eC=(0,i.useRef)(null),eT=(0,i.useRef)(!1),ez=(0,i.useRef)(null),eI=(0,i.useRef)(!1),eM=(0,i.useRef)(null),eW=(0,i.useRef)(null),eL=(0,i.useRef)(new Map),eR=(0,i.useRef)(new Set),eE=e.setNewSessionModel??_,eP=e.setToolPreset??V,e$=e.setMemoryTools??Y,eD=eo??u?.context.model??es??null,eB=c?U:eD,eA=(0,i.useCallback)(e=>e?.length?e.map((e,t)=>{let r=`Attachment ${t+1}: ${e.fileName} (${e.mimeType||"application/octet-stream"}, ${e.size} bytes)`;if(e.extractedText){let t=e.truncated?"\n[The extracted text was truncated before sending.]":"";return`${r}
7
7
  ${t}
8
8
  ${e.extractedText}`.trim()}return`${r}
9
- [Text extraction unavailable: ${e.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),eA=(0,i.useCallback)(e=>{let t=eg(e);if(!t)return;let r=eL.current;r.set(t,(r.get(t)??0)+1)},[]),eO=(0,i.useCallback)(e=>{let t=eg(e);if(!t)return!1;let r=eL.current,n=r.get(t)??0;return!(n<=0)&&(1===n?r.delete(t):r.set(t,n-1),!0)},[]),eH=(()=>{let e={input:0,output:0,cacheRead:0,cacheWrite:0},t=0;for(let r of y){if("assistant"!==r.role)continue;let n=r.usage;n&&(e.input+=n.input??0,e.output+=n.output??0,e.cacheRead+=n.cacheRead??0,e.cacheWrite+=n.cacheWrite??0,t+=n.cost?.total??0)}return e.input+e.output+e.cacheRead+e.cacheWrite>0?{tokens:e,cost:t}:null})(),eF=(0,i.useCallback)(async(e,t=!1,r=!1)=>{try{t&&x(!0);let n=r?`/api/sessions/${encodeURIComponent(e)}?includeState`:`/api/sessions/${encodeURIComponent(e)}`,i=await fetch(n);if(ew.current&&ew.current!==e)return null;if(404===i.status)return t&&(u(null),m(null),b([]),f(null)),null;if(!i.ok)throw Error(`HTTP ${i.status}`);let o=await i.json();return u(o),m(o.leafId),b(o.context.messages),k(o.context.entryIds??[]),eL.current.clear(),eR.current=new Set(o.context.messages.map(ef).filter(e=>!!e)),el(null),f(null),!o.agentState?.state?.thinkingLevel&&o.context.thinkingLevel&&"off"!==o.context.thinkingLevel&&Z(o.context.thinkingLevel),o.agentState??null}catch(e){return f(String(e)),null}finally{t&&x(!1)}},[]),eU=(0,i.useCallback)(async(e,t)=>{try{let r=t?`/api/sessions/${encodeURIComponent(e)}/context?leafId=${encodeURIComponent(t)}`:`/api/sessions/${encodeURIComponent(e)}/context`,n=await fetch(r);if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.json();b(i.context.messages),k(i.context.entryIds??[]),eL.current.clear()}catch(e){console.error("Failed to load context:",e)}},[]),e_=(0,i.useCallback)(async e=>{try{let t=await eh(e,{type:"get_tools"});if(t){let e,r,n,i;eP((r=(e=t.filter(e=>e.active).map(e=>e.name)).filter(e=>!I.includes(e)),n=P(e),i=P(r),""===n?"none":n===P(W)?"default":n===P(L)?"full":n===P(R)?"workbench":n===P(E)?"agent":""===i?"none":i===P(W)?"default":i===P(L)?"full":i===P(R)?"workbench":i===P(E)||e.includes(z)?"agent":"default")),e$(I.filter(e=>t.some(t=>t.active&&t.name===e)))}}catch(e){console.error("Failed to load tools:",e)}},[e$,eP]),eK=(0,i.useCallback)((e,t={})=>{ek.current&&(ek.current.close(),ek.current=null);let r=new EventSource(`/api/agent/${encodeURIComponent(e)}/events${t.replay?"?replay=1":""}`);ek.current=r,r.onmessage=e=>{try{let t=JSON.parse(e.data);eC.current?.(t)}catch{}},r.onerror=()=>{ek.current===r&&eS.current&&(r.close(),ek.current=null,setTimeout(()=>{eS.current&&eK(e)},1e3))}},[]);(0,i.useEffect)(()=>{eS.current=C},[C]),eC.current=(0,i.useCallback)(e=>{switch(e.type){case"agent_start":ej(null),T(!0),ey({kind:"waiting_model"}),S({type:"start"});break;case"agent_end":eS.current=!1,ek.current?.close(),ek.current=null,T(!1),ey(null),X(null),S({type:"end"}),ew.current&&(eF(ew.current),fetch(`/api/agent/${encodeURIComponent(ew.current)}`).then(e=>e.json()).then(e=>{!1===e.running&&(T(!1),ey(null),S({type:"end"})),e.state?.contextUsage!==void 0&&ee(e.state.contextUsage??null),e.state?.systemPrompt!==void 0&&er(e.state.systemPrompt??null),e.state?.isCompacting!==void 0&&ec(e.state.isCompacting)}).catch(()=>{})),n?.();break;case"message_start":case"message_update":{let t=e.message;if(t){let e=eu(t);eR.current.has(ef(e)??"")||S({type:"update",message:e})}ey(null);break}case"message_end":{let t=e.message;if(t){let e=eu(t),r=ef(e),n=!!r&&eR.current.has(r);r&&eR.current.add(r),n||"user"===e.role&&eO(e)||b(t=>[...t,e])}S({type:"reset"}),ey({kind:"waiting_model"});break}case"tool_execution_start":{let t=e.toolCallId,r=e.toolName;ey(e=>{let n=e?.kind==="running_tools"?[...e.tools]:[];return n.some(e=>e.id===t)||n.push({id:t,name:r}),{kind:"running_tools",tools:n}});break}case"tool_execution_end":{let t=e.toolCallId;ey(e=>{if(e?.kind!=="running_tools")return e;let r=e.tools.filter(e=>e.id!==t);return 0===r.length?{kind:"waiting_model"}:{kind:"running_tools",tools:r}});break}case"auto_retry_start":X({attempt:e.attempt,maxAttempts:e.maxAttempts,errorMessage:e.errorMessage});break;case"auto_retry_end":X(null);break;case"auto_compaction_start":case"compaction_start":ec(!0),ev(null);break;case"auto_compaction_end":case"compaction_end":ec(!1),e.errorMessage?ev(e.errorMessage):!e.aborted&&ew.current&&eF(ew.current)}},[eO,eF,n]);let eV=(0,i.useCallback)(async(e,n,i)=>{if(!e.trim()&&!n?.length&&!i?.length||C)return;let l=eN(i),s=e.trim()?l?`${e}
9
+ [Text extraction unavailable: ${e.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),eN=(0,i.useCallback)(e=>{let t=eg(e);if(!t)return;let r=eL.current;r.set(t,(r.get(t)??0)+1)},[]),eH=(0,i.useCallback)(e=>{let t=eg(e);if(!t)return!1;let r=eL.current,n=r.get(t)??0;return!(n<=0)&&(1===n?r.delete(t):r.set(t,n-1),!0)},[]),eO=(()=>{let e={input:0,output:0,cacheRead:0,cacheWrite:0},t=0;for(let r of b){if("assistant"!==r.role)continue;let n=r.usage;n&&(e.input+=n.input??0,e.output+=n.output??0,e.cacheRead+=n.cacheRead??0,e.cacheWrite+=n.cacheWrite??0,t+=n.cost?.total??0)}return e.input+e.output+e.cacheRead+e.cacheWrite>0?{tokens:e,cost:t}:null})(),eF=(0,i.useCallback)(async(e,t=!1,r=!1)=>{try{t&&x(!0);let n=r?`/api/sessions/${encodeURIComponent(e)}?includeState`:`/api/sessions/${encodeURIComponent(e)}`,i=await fetch(n);if(ew.current&&ew.current!==e)return null;if(404===i.status)return t&&(p(null),m(null),y([]),f(null)),null;if(!i.ok)throw Error(`HTTP ${i.status}`);let o=await i.json();return p(o),m(o.leafId),y(o.context.messages),k(o.context.entryIds??[]),eL.current.clear(),eR.current=new Set(o.context.messages.map(ef).filter(e=>!!e)),el(null),f(null),!o.agentState?.state?.thinkingLevel&&o.context.thinkingLevel&&"off"!==o.context.thinkingLevel&&G(o.context.thinkingLevel),o.agentState??null}catch(e){return f(String(e)),null}finally{t&&x(!1)}},[]),eU=(0,i.useCallback)(async(e,t)=>{try{let r=t?`/api/sessions/${encodeURIComponent(e)}/context?leafId=${encodeURIComponent(t)}`:`/api/sessions/${encodeURIComponent(e)}/context`,n=await fetch(r);if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.json();y(i.context.messages),k(i.context.entryIds??[]),eL.current.clear()}catch(e){console.error("Failed to load context:",e)}},[]),e_=(0,i.useCallback)(async e=>{try{let t=await eh(e,{type:"get_tools"});if(t){let e,r,n,i;eP((r=(e=t.filter(e=>e.active).map(e=>e.name)).filter(e=>!I.includes(e)),n=P(e),i=P(r),""===n?"none":n===P(W)?"default":n===P(L)?"full":n===P(R)?"workbench":n===P(E)?"agent":""===i?"none":i===P(W)?"default":i===P(L)?"full":i===P(R)?"workbench":i===P(E)||e.includes(z)?"agent":"default")),e$(I.filter(e=>t.some(t=>t.active&&t.name===e)))}}catch(e){console.error("Failed to load tools:",e)}},[e$,eP]),eK=(0,i.useCallback)((e,t={})=>{ek.current&&(ek.current.close(),ek.current=null);let r=new EventSource(`/api/agent/${encodeURIComponent(e)}/events${t.replay?"?replay=1":""}`);ek.current=r,r.onmessage=e=>{try{let t=JSON.parse(e.data);eC.current?.(t)}catch{}},r.onerror=()=>{ek.current===r&&eS.current&&(r.close(),ek.current=null,setTimeout(()=>{eS.current&&eK(e)},1e3))}},[]);(0,i.useEffect)(()=>{eS.current=C},[C]),eC.current=(0,i.useCallback)(e=>{switch(e.type){case"agent_start":ej(null),T(!0),eb({kind:"waiting_model"}),S({type:"start"});break;case"agent_end":eS.current=!1,ek.current?.close(),ek.current=null,T(!1),eb(null),X(null),S({type:"end"}),ew.current&&(eF(ew.current),fetch(`/api/agent/${encodeURIComponent(ew.current)}`).then(e=>e.json()).then(e=>{!1===e.running&&(T(!1),eb(null),S({type:"end"})),e.state?.contextUsage!==void 0&&ee(e.state.contextUsage??null),e.state?.systemPrompt!==void 0&&er(e.state.systemPrompt??null),e.state?.isCompacting!==void 0&&ec(e.state.isCompacting)}).catch(()=>{})),n?.();break;case"message_start":case"message_update":{let t=e.message;if(t){let e=ep(t);eR.current.has(ef(e)??"")||S({type:"update",message:e})}eb(null);break}case"message_end":{let t=e.message;if(t){let e=ep(t),r=ef(e),n=!!r&&eR.current.has(r);r&&eR.current.add(r),n||"user"===e.role&&eH(e)||y(t=>[...t,e])}S({type:"reset"}),eb({kind:"waiting_model"});break}case"tool_execution_start":{let t=e.toolCallId,r=e.toolName;eb(e=>{let n=e?.kind==="running_tools"?[...e.tools]:[];return n.some(e=>e.id===t)||n.push({id:t,name:r}),{kind:"running_tools",tools:n}});break}case"tool_execution_end":{let t=e.toolCallId;eb(e=>{if(e?.kind!=="running_tools")return e;let r=e.tools.filter(e=>e.id!==t);return 0===r.length?{kind:"waiting_model"}:{kind:"running_tools",tools:r}});break}case"auto_retry_start":X({attempt:e.attempt,maxAttempts:e.maxAttempts,errorMessage:e.errorMessage});break;case"auto_retry_end":X(null);break;case"auto_compaction_start":case"compaction_start":ec(!0),ev(null);break;case"auto_compaction_end":case"compaction_end":ec(!1),e.errorMessage?ev(e.errorMessage):!e.aborted&&ew.current&&eF(ew.current)}},[eH,eF,n]);let eV=(0,i.useCallback)(async(e,n,i)=>{if(!e.trim()&&!n?.length&&!i?.length||C)return;let l=eA(i),s=e.trim()?l?`${e}
10
10
 
11
11
  Attached document text:
12
12
 
13
13
  ${l}`:e:l?`Attached document text:
14
14
 
15
- ${l}`:"",a=n?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),d={role:"user",content:a?.length?[...s.trim()?[{type:"text",text:s}]:[],...a]:s,timestamp:Date.now()};eA(d),b(e=>[...e,d]),ej(null),T(!0),ey({kind:"waiting_model"}),S({type:"start"}),eI.current=!0;let p=n?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{if(c&&r){U&&ea(U);let t=B(K,J),n=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:r,type:"prompt",message:s,toolNames:t,...p?.length?{images:p}:{},...U?{provider:U.provider,modelId:U.modelId}:{},..."auto"!==q?{thinkingLevel:q}:{}})}),i=await n.json().catch(()=>({}));if(!n.ok||i.error||!i.sessionId)throw Error(i.error??`HTTP ${n.status}`);let l=i.sessionId;ew.current=l,eK(l,{replay:!0}),o?.({id:l,path:"",cwd:r,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e})}else if(t){let e=B(K,J);eK(t.id),await eh(t.id,{type:"prompt",message:s,toolNames:e,...p?.length?{images:p}:{}})}}catch(e){eO(d),console.error("Failed to send message:",e),ej(e instanceof Error?e.message:String(e)),T(!1),ey(null),S({type:"end"})}},[c,r,U,K,J,q,t,C,eK,o,eN,eO,eA]),eJ=(0,i.useCallback)(async()=>{let e=ew.current;if(e){eS.current=!1,ej(null),T(!1),ey(null),S({type:"end"}),ek.current?.close(),ek.current=null;try{await eh(e,{type:"abort"}),await eF(e)}catch(t){console.error("Failed to abort:",t),await eF(e)}}},[eF]),eY=(0,i.useCallback)(async e=>{let t=ew.current;if(t){ei(e);try{let{cancelled:r,newSessionId:n}=await eh(t,{type:"fork",entryId:e})??{};!r&&n&&l?.(n)}catch(e){console.error("Fork failed:",e)}finally{ei(null)}}},[l]),eq=(0,i.useCallback)(async e=>{let t=ew.current;t&&(eh(t,{type:"navigate_tree",targetId:e}).catch(()=>{}),m(e),await eU(t,e))},[eU]),eZ=(0,i.useCallback)(async e=>{m(e);let t=ew.current;t&&(await eU(t,e),e&&eh(t,{type:"navigate_tree",targetId:e}).catch(()=>{}))},[eU]),eG=(0,i.useCallback)(async(e,t)=>{if(c)return void eE({provider:e,modelId:t});let r=ew.current;if(r)try{await eh(r,{type:"set_model",provider:e,modelId:t}),el({provider:e,modelId:t})}catch(e){console.error("Failed to set model:",e)}},[c,eE]),eX=(0,i.useCallback)(async()=>{let e=ew.current;if(e&&!ed){ec(!0),ev(null);try{await eh(e,{type:"compact"}),await eF(e,!0)}catch(e){ev(e instanceof Error?e.message:String(e))}finally{ec(!1)}}},[ed,eF]),eQ=(0,i.useCallback)(async(e,t,r)=>{let n=ew.current;if(!n)return;let i=eN(r),o=e.trim()?i?`${e}
15
+ ${l}`:"",a=n?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),d={role:"user",content:a?.length?[...s.trim()?[{type:"text",text:s}]:[],...a]:s,timestamp:Date.now()};eN(d),y(e=>[...e,d]),ej(null),T(!0),eb({kind:"waiting_model"}),S({type:"start"}),eI.current=!0;let u=n?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{if(c&&r){U&&ea(U);let t=D(K,J),n=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:r,type:"prompt",message:s,toolNames:t,...u?.length?{images:u}:{},...U?{provider:U.provider,modelId:U.modelId}:{},..."auto"!==q?{thinkingLevel:q}:{}})}),i=await n.json().catch(()=>({}));if(!n.ok||i.error||!i.sessionId)throw Error(i.error??`HTTP ${n.status}`);let l=i.sessionId;ew.current=l,eK(l,{replay:!0}),o?.({id:l,path:"",cwd:r,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e})}else if(t){let e=D(K,J);eK(t.id),await eh(t.id,{type:"prompt",message:s,toolNames:e,...u?.length?{images:u}:{}})}}catch(e){eH(d),console.error("Failed to send message:",e),ej(e instanceof Error?e.message:String(e)),T(!1),eb(null),S({type:"end"})}},[c,r,U,K,J,q,t,C,eK,o,eA,eH,eN]),eJ=(0,i.useCallback)(async()=>{let e=ew.current;if(e){eS.current=!1,ej(null),T(!1),eb(null),S({type:"end"}),ek.current?.close(),ek.current=null;try{await eh(e,{type:"abort"}),await eF(e)}catch(t){console.error("Failed to abort:",t),await eF(e)}}},[eF]),eY=(0,i.useCallback)(async e=>{let t=ew.current;if(t){ei(e);try{let{cancelled:r,newSessionId:n}=await eh(t,{type:"fork",entryId:e})??{};!r&&n&&l?.(n)}catch(e){console.error("Fork failed:",e)}finally{ei(null)}}},[l]),eq=(0,i.useCallback)(async e=>{let t=ew.current;t&&(eh(t,{type:"navigate_tree",targetId:e}).catch(()=>{}),m(e),await eU(t,e))},[eU]),eG=(0,i.useCallback)(async e=>{m(e);let t=ew.current;t&&(await eU(t,e),e&&eh(t,{type:"navigate_tree",targetId:e}).catch(()=>{}))},[eU]),eZ=(0,i.useCallback)(async(e,t)=>{if(c)return void eE({provider:e,modelId:t});let r=ew.current;if(r)try{await eh(r,{type:"set_model",provider:e,modelId:t}),el({provider:e,modelId:t})}catch(e){console.error("Failed to set model:",e)}},[c,eE]),eX=(0,i.useCallback)(async()=>{let e=ew.current;if(e&&!ed){ec(!0),ev(null);try{await eh(e,{type:"compact"}),await eF(e,!0)}catch(e){ev(e instanceof Error?e.message:String(e))}finally{ec(!1)}}},[ed,eF]),eQ=(0,i.useCallback)(async(e,t,r)=>{let n=ew.current;if(!n)return;let i=eA(r),o=e.trim()?i?`${e}
16
16
 
17
17
  Attached document text:
18
18
 
19
19
  ${i}`:e:i?`Attached document text:
20
20
 
21
- ${i}`:"",l={role:"user",content:`[steer] ${o}`,timestamp:Date.now()};eA(l),b(e=>[...e,l]);let s=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{await eh(n,{type:"steer",message:o,...s?.length?{images:s}:{}})}catch(e){eO(l),console.error("Failed to steer:",e)}},[eN,eO,eA]),e0=(0,i.useCallback)(async(e,t,r)=>{let n=ew.current;if(!n)return;let i=eN(r),o=e.trim()?i?`${e}
21
+ ${i}`:"",l={role:"user",content:`[steer] ${o}`,timestamp:Date.now()};eN(l),y(e=>[...e,l]);let s=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{await eh(n,{type:"steer",message:o,...s?.length?{images:s}:{}})}catch(e){eH(l),console.error("Failed to steer:",e)}},[eA,eH,eN]),e0=(0,i.useCallback)(async(e,t,r)=>{let n=ew.current;if(!n)return;let i=eA(r),o=e.trim()?i?`${e}
22
22
 
23
23
  Attached document text:
24
24
 
25
25
  ${i}`:e:i?`Attached document text:
26
26
 
27
- ${i}`:"",l={role:"user",content:o,timestamp:Date.now()};eA(l),b(e=>[...e,l]);let s=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{await eh(n,{type:"follow_up",message:o,...s?.length?{images:s}:{}})}catch(e){eO(l),console.error("Failed to follow up:",e)}},[eN,eO,eA]),e1=(0,i.useCallback)(async()=>{let e=ew.current;if(e)try{await eh(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),e2=(0,i.useCallback)(async e=>{if(Z(e),"auto"===e)return;let t=ew.current;if(t)try{await eh(t,{type:"set_thinking_level",level:e})}catch(e){console.error("Failed to set thinking level:",e)}},[]),e5=(0,i.useCallback)(async e=>{eP(e);let t=B(e,J),r=ew.current;if(r)try{await eh(r,{type:"set_tools",toolNames:t})}catch(e){console.error("Failed to set tools:",e)}},[J,eP]),e4=(0,i.useCallback)(async e=>{e$(e);let t=B(K,e),r=ew.current;if(r)try{await eh(r,{type:"set_tools",toolNames:t})}catch(e){console.error("Failed to set memory tools:",e)}},[e$,K]),e3=(0,i.useCallback)((e="smooth")=>{eM.current?.scrollIntoView({behavior:e})},[]),e8=(0,i.useCallback)(()=>{let e=eW.current,t=ez.current;if(!e||!t)return;let r=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop;e.scrollTo({top:r-16,behavior:"smooth"})},[]);return(0,i.useEffect)(()=>(t&&(ew.current=t.id,(async()=>{let e=await eF(t.id,!0,!0);ew.current===t.id&&(await e_(t.id),e?.running&&(T(!0),ey({kind:"waiting_model"}),S({type:"start"}),eK(t.id,{replay:!0})),e?.state&&(void 0!==e.state.isCompacting&&ec(e.state.isCompacting),void 0!==e.state.contextUsage&&ee(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&er(e.state.systemPrompt??null),void 0!==e.state.thinkingLevel&&Z(e.state.thinkingLevel??"auto")))})()),()=>{ek.current?.close(),ek.current=null}),[eK,eF,e_,a,d,t]),(0,i.useEffect)(()=>{let e=ew.current;if(!e)return;let t=window.setInterval(()=>{eS.current||eF(e)},15e3);return()=>window.clearInterval(t)},[eF]),(0,i.useEffect)(()=>{d?.(et)},[et,d]),(0,i.useEffect)(()=>{a&&a(p?.tree??[],v,eZ)},[p?.tree,v,eZ,a]),(0,i.useEffect)(()=>{y.length>0&&(eI.current?(eI.current=!1,eT.current=!0,e8()):eT.current?eS.current||e3("smooth"):(eT.current=!0,e3("instant")))},[y.length,C,e3,e8]),(0,i.useEffect)(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{if($(e.models),e.thinkingLevels&&O(e.thinkingLevels),e.thinkingLevelMaps&&F(e.thinkingLevelMaps),e.modelList&&(N(e.modelList),c&&e.modelList.length>0)){let t=e.defaultModel,r=t&&e.modelList.find(e=>e.id===t.modelId&&e.provider===t.provider);eE(r?{provider:r.provider,modelId:r.id}:{provider:e.modelList[0].provider,modelId:e.modelList[0].id})}}).catch(()=>{})},[c,s,eE]),(0,i.useEffect)(()=>{if(!ep)return;let e=setTimeout(()=>ev(null),3e3);return()=>clearTimeout(e)},[ep]),{data:p,loading:h,error:g,activeLeafId:v,messages:y,entryIds:j,streamState:w,agentRunning:C,modelNames:M,modelList:D,modelThinkingLevels:A,modelThinkingLevelMaps:H,newSessionModel:U,toolPreset:K,memoryTools:J,thinkingLevel:q,retryInfo:G,contextUsage:Q,systemPrompt:et,forkingEntryId:en,isCompacting:ed,compactError:ep,currentModel:eB,displayModel:eD,sessionStats:eH,agentPhase:em,agentError:eb,isNew:c,sessionIdRef:ew,eventSourceRef:ek,messagesEndRef:eM,scrollContainerRef:eW,lastUserMsgRef:ez,pendingScrollToUserRef:eI,initialScrollDoneRef:eT,handleSend:eV,handleAbort:eJ,handleFork:eY,handleNavigate:eq,handleModelChange:eG,handleCompact:eX,handleSteer:eQ,handleFollowUp:e0,handleAbortCompaction:e1,handleToolPresetChange:e5,handleMemoryToolsChange:e4,handleThinkingLevelChange:e2,loadTools:e_,setActiveLeafId:m,setData:u,setMessages:b,dispatch:S,setAgentRunning:T,setForkingEntryId:ei,handleAgentEventRef:eC}}({session:e,newSessionCwd:t,onAgentEnd:r,onSessionCreated:o,onSessionForked:l,modelsRefreshKey:s,onBranchDataChange:c,onSystemPromptChange:p}),{soundEnabled:eB,onSoundToggle:eD,playDoneSound:eN}=function(){let[e,t]=(0,i.useState)(()=>{let e=localStorage.getItem("pi-sound-enabled");return null===e||"true"===e}),r=(0,i.useRef)(e);return(0,i.useEffect)(()=>{r.current=e},[e]),{soundEnabled:e,onSoundToggle:(0,i.useCallback)(()=>{t(e=>{let t=!e;return localStorage.setItem("pi-sound-enabled",String(t)),t})},[]),playDoneSound:(0,i.useCallback)(()=>{if(r.current)try{let e=new AudioContext,t=e.currentTime;[523.25,659.25].forEach((r,n)=>{let i=e.createOscillator(),o=e.createGain();i.connect(o),o.connect(e.destination),i.type="sine",i.frequency.value=r;let l=t+.18*n;o.gain.setValueAtTime(0,l),o.gain.linearRampToValueAtTime(.18,l+.02),o.gain.exponentialRampToValueAtTime(.001,l+.45),i.start(l),i.stop(l+.45)}),setTimeout(()=>e.close(),1200)}catch{}},[]),soundEnabledRef:r}}(),eA=(0,i.useRef)(eN);eA.current=eN;let eO=(0,i.useRef)(eB);eO.current=eB;let eH=e$.current;(0,i.useEffect)(()=>{e$.current=e=>{"agent_start"===e.type&&y(Date.now()),"agent_end"===e.type&&y(null),"agent_end"===e.type&&eO.current&&eA.current(),eH?.(e)}},[eH,e$]);let eF=et?`${et.tokens.input}|${et.tokens.output}|${et.tokens.cacheRead}|${et.tokens.cacheWrite}|${et.cost??0}`:null,eU=(0,i.useRef)(et);eU.current=et,(0,i.useEffect)(()=>{u?.(eU.current)},[eF,u]),(0,i.useEffect)(()=>()=>{u?.(null)},[u]),(0,i.useEffect)(()=>(x?.("workbench"===_),()=>{x?.(!1)}),[_,x]);let e_=Y?`${Y.percent??"null"}|${Y.contextWindow}|${Y.tokens??"null"}`:null,eK=(0,i.useRef)(Y);eK.current=Y,(0,i.useEffect)(()=>{h?.(eK.current)},[e_,h]),(0,i.useEffect)(()=>()=>{h?.(null)},[h]);let{isDragOver:eV,handleDragEnter:eJ,handleDragOver:eY,handleDragLeave:eq,handleDrop:eZ}=function(e){let[t,r]=(0,i.useState)(!1),n=(0,i.useRef)(0),o=(0,i.useCallback)(e=>{Array.from(e.dataTransfer.items).some(em)&&(e.preventDefault(),n.current+=1,r(!0))},[]),l=(0,i.useCallback)(e=>{Array.from(e.dataTransfer.items).some(em)&&e.preventDefault()},[]);return{isDragOver:t,handleDragEnter:o,handleDragOver:l,handleDragLeave:(0,i.useCallback)(()=>{n.current-=1,n.current<=0&&(n.current=0,r(!1))},[]),handleDrop:(0,i.useCallback)(t=>{t.preventDefault(),n.current=0,r(!1),e(Array.from(t.dataTransfer.files))},[e])}}((0,i.useCallback)(e=>{a?.current?.addFiles(e)},[a])),[eG,eX]=(0,i.useState)(null);(0,i.useEffect)(()=>{if(!ei)return;let e=!1;return fetch("/api/version").then(e=>e.ok?e.json():null).then(t=>{!e&&t?.updateAvailable&&eX(t)}).catch(()=>{}),()=>{e=!0}},[ei]);let eQ=$.filter(e=>"user"===e.role||"assistant"===e.role),e0=(f=eQ.length,(v=(0,i.useRef)([])).current=Array(f).fill(null).map((e,t)=>v.current[t]??null),v),e1=(0,i.useMemo)(()=>{let e=new Map;for(let t of $)"toolResult"===t.role&&e.set(t.toolCallId,t);return e},[$]),e2=ei&&0===$.length&&!N.isStreaming&&!A,e5=S?.info?.cwd??e?.cwd??t??null,e4=function(e){if(!e)return null;let t=e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean);return t[t.length-1]||e}(e5),e3=function(e=768){let[t,r]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t=window.matchMedia(`(max-width: ${e-1}px)`),n=()=>r(t.matches);return(n(),"function"==typeof t.addEventListener)?(t.addEventListener("change",n),()=>t.removeEventListener("change",n)):(t.addListener(n),()=>t.removeListener(n))},[e]),t}(),[e8,e6]=(0,i.useState)(!1),[e7,e9]=(0,i.useState)(!1),te=eo($),tt=te.filter(e=>"running"===e.status).length;(0,i.useEffect)(()=>{0===te.length&&e8&&e6(!1)},[te.length,e8]),(0,i.useEffect)(()=>{e3&&e8&&e6(!1)},[e3,e8]),(0,i.useEffect)(()=>{e9(!1)},[e?.id]);let tr=(0,i.useCallback)(()=>{e?.id&&!A&&(async()=>{await eR("workbench");let e=S?.sessionMeta;if(e?.initialSourcePath&&e.initialKernel){let t=`Resume this Workbench session. Reload only the initial data file \`${e.initialSourcePath}\` using the ${e.initialKernel.toUpperCase()} runtime. Do not rerun previous analyses or load extra files unless I ask. Use the chat history only as context for what to do next.`;await ec(t)}})()},[A,S?.sessionMeta,ec,eR,e?.id]),tn=Q?F[`${Q.provider}:${Q.modelId}`]??null:null,ti=Q?U[`${Q.provider}:${Q.modelId}`]??null:null,to=S?.sessionMeta?.sessionKind??null,tl=e?.id??t??"new-chat",ts=(0,i.useMemo)(()=>(function(e){let t=[];for(let r=e.length-1;r>=0;r-=1){let n=e[r];if("user"!==n.role)continue;let i=n.text.trim();i&&t.push(i)}return t})(eQ.map(e=>({role:e.role,text:"string"==typeof e.content?e.content:""}))),[eQ]),ta=(0,i.useCallback)(async(e,t,r)=>{"/plan"===e.trim()||e.trim().startsWith("/plan ")?j(e=>!e):await ec(e,t,r)},[ec]),td=(0,n.jsx)(X,{ref:a,onSend:ta,onAbort:ev,onSteer:A?eM:void 0,onFollowUp:A?eW:void 0,isStreaming:A,model:Q,modelNames:O,modelList:H,onModelChange:ez,onCompact:e||ei?eI:void 0,onAbortCompaction:eL,isCompacting:Z,compactError:G,toolPreset:_,sessionKind:to,onToolPresetChange:e||ei?eR:void 0,memoryTools:K,onMemoryToolsChange:e||ei?eE:void 0,thinkingLevel:V,onThinkingLevelChange:e||ei?eP:void 0,availableThinkingLevels:tn,thinkingLevelMap:ti,retryInfo:J,soundEnabled:eB,onSoundToggle:eD,cornerBadge:e2?(0,n.jsx)(eS,{status:eG}):void 0,promptHistory:ts,sessionHistoryKey:tl});(0,i.useEffect)(()=>{if(!b)return void w([]);let e=[...$].reverse().find(e=>"assistant"===e.role);if(!e||!Array.isArray(e.content))return void w([]);let t=e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n");if(!t)return void w([]);let r=[];for(let e of t.matchAll(/^\s*(\d+)[.)]\s+\*{0,2}([^*\n]+)/gm)){let t=e[2].trim().replace(/\*{1,2}$/,"").trim().replace(/\s+/g," ");t.length>3&&r.push({id:`task-${r.length}`,step:t.slice(0,80),status:"pending"})}w(r)},[$,b]);let tc=(0,i.useCallback)(e=>{A?a?.current?.insertText(e):ec(e)},[A,a,ec]);return C?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:"Loading session..."}):M?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:M}):(0,n.jsxs)("div",{className:"relative flex h-full flex-col overflow-hidden",onDragEnter:eJ,onDragOver:eY,onDragLeave:eq,onDrop:eZ,children:[eV&&(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"})]})]})]}),!e7&&(0,n.jsx)(ep,{sessionKind:to,toolPreset:_,initialSourcePath:S?.sessionMeta?.initialSourcePath??null,initialKernel:S?.sessionMeta?.initialKernel??null,isNew:ei,isStreaming:A,onResume:tr,onDismiss:()=>e9(!0)}),e2?(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",flexDirection:"column",alignItems:"stretch",justifyContent:"flex-start",gap:10,marginLeft:16,marginRight:16,fontFamily:"var(--font-mono)"},children:[e4&&(0,n.jsxs)("div",{style:{padding:e3?"7px 9px":"9px 12px",border:"1px solid var(--border)",borderRadius:e3?9:10,background:"linear-gradient(180deg, var(--bg-panel), rgba(127,127,127,0.03))",minWidth:0,display:"flex",alignItems:"flex-start",gap:e3?8:10,boxShadow:e3?"0 2px 10px rgba(0,0,0,0.04)":"none"},children:[(0,n.jsx)("div",{"aria-hidden":!0,style:{flex:"0 0 auto",width:e3?18:20,height:e3?18:20,borderRadius:6,marginTop:1,background:"rgba(37,99,235,0.10)",border:"1px solid rgba(37,99,235,0.20)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--accent)"},children:(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M3 7.5 12 4l9 3.5-9 3.5-9-3.5Z"}),(0,n.jsx)("path",{d:"M7 10v4.5c0 .8 2.2 2 5 2s5-1.2 5-2V10"})]})}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontSize:9,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:2},children:"Current Project"}),(0,n.jsx)("div",{style:{fontSize:e3?12.5:14,color:"var(--text)",fontWeight:700,lineHeight:1.3,wordBreak:"break-word"},children:e4}),e5&&(0,n.jsx)("div",{title:e5,style:{fontSize:10.5,color:"var(--text-dim)",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e5})]})]}),(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:d}),(0,n.jsx)("span",{style:{fontSize:14,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:(0,n.jsx)(ew,{phrases:ek})})]})]}),td]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:ea,className:"flex-1 overflow-y-auto pt-4 [scrollbar-width:none]",children:(0,n.jsxs)("div",{className:"mx-auto max-w-[820px] px-4",style:e3?{paddingBottom:"calc(env(safe-area-inset-bottom, 0px) + 128px)"}:void 0,children:[(0,n.jsx)(ej,{goal:S?.sessionMeta?.goal??null,planTasks:k,isRunning:A}),(()=>{let r=-1;for(let e=$.length-1;e>=0;e--)if("user"===$[e].role){r=e;break}let i=0;return $.map((o,l)=>{let s="user"===o.role&&l>0&&"assistant"===$[l-1].role?D[l-1]:void 0,d="user"===o.role||"assistant"===o.role,c=d?i++:-1,p=!1;if("assistant"===o.role){p=!0;for(let e=l+1;e<$.length;e++){let t=$[e].role;if("user"===t)break;if("assistant"===t){p=!1;break}}p&&N.isStreaming&&l===$.length-1&&(p=!1)}let u=(0,n.jsx)(T.D,{message:o,toolResults:e1,modelNames:O,entryId:D[l],onFork:A||ei||0===l&&"user"===o.role?void 0:eb,forking:q===D[l],onNavigate:A?void 0:eT,prevAssistantEntryId:A?void 0:s,onEditContent:e=>a?.current?.insertIfEmpty(e),onSendMessage:tc,showTimestamp:p,prevTimestamp:l>0?$[l-1].timestamp:void 0,renderVisualCodeBlocks:!!g,cwd:S?.info?.cwd??e?.cwd??t??void 0},l);return d?(0,n.jsx)("div",{ref:e=>{e0.current[c]=e,l===r&&(ed.current=e)},children:u},l):u})})(),A&&(0,n.jsx)(ey,{agentPhase:er,startedAt:m}),N.isStreaming&&N.streamingMessage&&(0,n.jsx)(T.D,{message:N.streamingMessage,isStreaming:!0,toolResults:e1,modelNames:O,onSendMessage:tc,renderVisualCodeBlocks:!!g,cwd:S?.info?.cwd??e?.cwd??t??void 0}),A&&!N.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..."}(er)})}),S?.info?.cwd&&!1===S.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:S.info.cwd})]}),en&&(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:en}),A&&(0,n.jsx)("div",{style:{height:ea.current?ea.current.clientHeight:"80vh"}}),(0,n.jsx)("div",{ref:es})]})}),!e3&&(0,n.jsx)(ee,{messages:$,streamingMessage:N.streamingMessage,scrollContainer:ea,messageRefs:e0}),te.length>0&&(0,n.jsxs)("button",{onClick:()=>e6(e=>!e),title:e8?"Hide subagent runs":"Show subagent runs",style:{position:"absolute",right:e3?8:e8?260:40,top:8,minWidth:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:tt>0||te.length>1?"0 8px":0,background:e8?"var(--bg-selected)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:e8?"var(--accent)":"var(--text-dim)",cursor:"pointer",zIndex:30,fontSize:12,transition:"right 0.2s ease, background 0.12s"},onMouseEnter:e=>{e8||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e8||(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"})]}),(tt>0||te.length>1)&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,fontSize:10,fontWeight:700,color:tt>0?"var(--accent)":"var(--text-dim)"},children:[tt>0&&(0,n.jsxs)("span",{children:[tt," active"]}),(0,n.jsx)("span",{children:te.length})]})]}),e8&&te.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",right:e3?8:48,top:4,bottom:4,width:e3?"calc(100vw - 16px)":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)(el,{runs:te})]})]}),(0,n.jsx)("div",{className:"relative",children:td})]})]})}var eT=r(25618),ez=r(76577);class eI extends i.Component{static getDerivedStateFromError(e){return{hasError:!0,message:e instanceof Error?e.message:String(e)}}componentDidCatch(e,t){console.error("File viewer crashed",{filePath:this.props.filePath,error:e,componentStack:t.componentStack})}componentDidUpdate(e){e.filePath!==this.props.filePath&&this.state.hasError&&this.setState({hasError:!1,message:null})}render(){return this.state.hasError?(0,n.jsx)(ez.fj,{style:{background:"var(--bg)"},children:(0,n.jsx)(ez.nG,{tone:"error",children:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,alignItems:"center",textAlign:"center"},children:[(0,n.jsx)("div",{children:"Preview crashed for this file."}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",maxWidth:560,wordBreak:"break-word"},children:this.props.filePath}),this.state.message&&(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",maxWidth:560,wordBreak:"break-word"},children:this.state.message})]})})}):this.props.children}constructor(...e){super(...e),this.state={hasError:!1,message:null}}}function eM(e,t,r){return Math.min(Math.max(e,t),r)}function eW({id:e,filePath:t,fileName:r,cwd:o,active:l,stackIndex:s,zIndex:a,onClose:d,onFocus:c,onOpenFile:p}){let[u,h]=(0,i.useState)(()=>{let e,t,r,n,i,o,l;return e=window.innerWidth,t=window.innerHeight,n=(r=e<720||t<560)?8:36,o=Math.max(320,e-2*n-(i=r?0:s%6*28)),l=Math.max(260,t-2*n-i),{left:n+i,top:n+i,width:r?o:Math.min(1180,o),height:r?l:Math.min(820,l),maximized:!1}}),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(!1),m=(0,i.useRef)(null),y=(0,i.useRef)(null),b=(0,i.useRef)(null);(0,i.useEffect)(()=>{l&&m.current?.focus({preventScroll:!0})},[l]),(0,i.useEffect)(()=>{let e=()=>{h(e=>{if(e.maximized)return e;let t=Math.max(320,window.innerWidth-16),r=Math.max(260,window.innerHeight-16),n=Math.min(e.width,t),i=Math.min(e.height,r);return{...e,width:n,height:i,left:eM(e.left,8,Math.max(8,window.innerWidth-n-8)),top:eM(e.top,8,Math.max(8,window.innerHeight-i-8))}})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let j=(0,i.useCallback)(t=>{c(e),0!==t.button||u.maximized||(t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),y.current={pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,left:u.left,top:u.top},g(!0))},[u.left,u.maximized,u.top,e,c]),k=(0,i.useCallback)(e=>{let t=y.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.left+e.clientX-t.startX,n=t.top+e.clientY-t.startY;h(e=>({...e,left:eM(r,8,Math.max(8,window.innerWidth-120)),top:eM(n,8,Math.max(8,window.innerHeight-48))}))},[]),w=(0,i.useCallback)(e=>{let t=y.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),y.current=null,g(!1))},[]),S=(0,i.useCallback)(()=>{c(e),h(e=>({...e,maximized:!e.maximized}))},[e,c]),C=(0,i.useCallback)(t=>{c(e),0!==t.button||u.maximized||(t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture(t.pointerId),b.current={pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,width:u.width,height:u.height},v(!0))},[u.height,u.maximized,u.width,e,c]),T=(0,i.useCallback)(e=>{let t=b.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.width+e.clientX-t.startX,n=t.height+e.clientY-t.startY;h(e=>({...e,width:eM(r,360,Math.max(360,window.innerWidth-e.left-8)),height:eM(n,280,Math.max(280,window.innerHeight-e.top-8))}))},[]),z=(0,i.useCallback)(e=>{let t=b.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),b.current=null,v(!1))},[]),I=u.maximized?{position:"fixed",inset:12,zIndex:a}:{position:"fixed",left:u.left,top:u.top,width:u.width,height:u.height,zIndex:a};return(0,n.jsxs)("div",{ref:m,role:"dialog","aria-label":`Preview ${r}`,tabIndex:-1,onPointerDown:()=>c(e),onKeyDown:t=>{"Escape"===t.key&&d(e)},style:{...I,display:"flex",flexDirection:"column",minWidth:u.maximized?void 0:360,minHeight:u.maximized?void 0:280,background:"var(--bg)",border:l?"1px solid rgba(37,99,235,0.55)":"1px solid var(--border)",borderRadius:8,boxShadow:l?"0 18px 60px rgba(0,0,0,0.26)":"0 10px 34px rgba(0,0,0,0.20)",overflow:"hidden",outline:"none"},children:[(0,n.jsxs)("div",{onPointerDown:j,onPointerMove:k,onPointerUp:w,onPointerCancel:w,style:{height:34,display:"flex",alignItems:"center",gap:8,padding:"0 8px 0 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",cursor:u.maximized?"default":x?"grabbing":"grab",flexShrink:0,userSelect:"none"},children:[(0,n.jsx)("div",{style:{minWidth:0,flex:1},children:(0,n.jsx)("div",{title:t,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12,fontWeight:650,color:"var(--text)"},children:r})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:S,title:u.maximized?"Restore preview":"Maximize preview","aria-label":u.maximized?"Restore preview":"Maximize preview",style:eL,children:u.maximized?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M6 3.5h6.5V10"}),(0,n.jsx)("path",{d:"M3.5 6H10v6.5H3.5z"})]}):(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M4 4h8v8H4z"})})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>d(e),title:"Close preview","aria-label":"Close preview",style:eL,children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"4",y1:"4",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"4",x2:"4",y2:"12"})]})})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflow:"hidden",background:"var(--bg)"},children:(0,n.jsx)(eI,{filePath:t,children:(0,n.jsx)(eT.h,{filePath:t,cwd:o,onOpenFile:p})})}),!u.maximized&&(0,n.jsx)("div",{role:"separator","aria-orientation":"horizontal","aria-label":"Resize preview",title:"Resize preview",onPointerDown:C,onPointerMove:T,onPointerUp:z,onPointerCancel:z,style:{position:"absolute",right:0,bottom:0,width:18,height:18,cursor:"nwse-resize",color:"var(--text-dim)",display:"flex",alignItems:"flex-end",justifyContent:"flex-end",padding:3,background:"linear-gradient(135deg, transparent 0 48%, rgba(127,127,127,0.18) 48% 52%, transparent 52% 100%)"}})]})}let eL={width:26,height:24,padding:0,border:"1px solid transparent",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},eR="var(--text-dim)";function eE({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:eR}),(0,n.jsx)("path",{d:"M1 6h14.5L14 13H2L1 6Z",stroke:eR,strokeWidth:"1",fill:eR,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:eR,strokeWidth:"1",fill:eR,fillOpacity:"0.1"})})}function eP({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:eR,strokeWidth:"1",fill:eR,fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:eR,strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]})}function e$({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,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:eR,letterSpacing:"0",children:e})]})}function eB({size:e=14}){return(0,n.jsx)(e$,{label:"TS",size:e})}function eD({size:e=14}){return(0,n.jsx)(e$,{label:"TSX",size:e})}function eN({size:e=14}){return(0,n.jsx)(e$,{label:"JS",size:e})}function eA({size:e=14}){return(0,n.jsx)(e$,{label:"JSX",size:e})}function eO({size:e=14}){return(0,n.jsx)(e$,{label:"PY",size:e})}function eH({size:e=14}){return(0,n.jsx)(e$,{label:"{}",size:e})}function eF({size:e=14}){return(0,n.jsx)(e$,{label:"CSS",size:e})}function eU({size:e=14}){return(0,n.jsx)(e$,{label:"SC",size:e})}function e_({size:e=14}){return(0,n.jsx)(e$,{label:"HTM",size:e})}function eK({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M3.5 9.5V7l1.5 1.5L6.5 7v2.5",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M8 7v2.5M7 9l1 1.5 1-1.5",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})}function eV({size:e=14}){return(0,n.jsx)(e$,{label:"YML",size:e})}function eJ({size:e=14}){return(0,n.jsx)(e$,{label:"TOM",size:e})}function eY({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M4 7.5l2 1.5-2 1.5",stroke:eR,strokeWidth:"0.95",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M7.5 10.5h2.5",stroke:eR,strokeWidth:"0.95",strokeLinecap:"round"})]})}function eq({size:e=14}){return(0,n.jsx)(e$,{label:"RS",size:e})}function eZ({size:e=14}){return(0,n.jsx)(e$,{label:"GO",size:e})}function eG({size:e=14}){return(0,n.jsx)(e$,{label:"SQL",size:e})}function eX({size:e=14}){return(0,n.jsx)(e$,{label:"GQL",size:e})}function eQ({size:e=14}){return(0,n.jsx)(e$,{label:"TF",size:e})}function e0({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,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:eR,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"6",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:eR,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"3.5",y:"8.5",width:"2",height:"1.5",rx:"0.3",stroke:eR,strokeWidth:"0.8"})]})}function e1({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5.5",cy:"8.5",r:"1.5",stroke:eR,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 8.5h2.5M8.5 8.5v1.5",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round"})]})}function e2({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5",cy:"6.5",r:"1",stroke:eR,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"9",cy:"6.5",r:"1",stroke:eR,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"5",cy:"10",r:"1",stroke:eR,strokeWidth:"0.85"}),(0,n.jsx)("path",{d:"M5 7.5V9",stroke:eR,strokeWidth:"0.85",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M9 7.5v.5a2 2 0 0 1-2 2H6",stroke:eR,strokeWidth:"0.85",strokeLinecap:"round",fill:"none"})]})}function e5({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,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:eR,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M5.5 8.5V7.5a1.5 1.5 0 0 1 3 0v1",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round",fill:"none"})]})}function e4({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"7",cy:"8.5",r:"1.3",stroke:eR,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:eR,strokeWidth:"0.8",strokeLinecap:"round"})]})}function e3(e,t=14){let r=e.toLowerCase(),i=r.split(".").pop()??"";if("dockerfile"===r||r.startsWith("dockerfile."))return(0,n.jsx)(e0,{size:t});if(".env"===r||r.startsWith(".env."))return(0,n.jsx)(e1,{size:t});if(".gitignore"===r||".gitattributes"===r||".gitmodules"===r)return(0,n.jsx)(e2,{size:t});if("package-lock.json"===r||"yarn.lock"===r||"bun.lock"===r||"pnpm-lock.yaml"===r||"cargo.lock"===r)return(0,n.jsx)(e5,{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)(e4,{size:t});switch(i){case"ts":return(0,n.jsx)(eB,{size:t});case"tsx":return(0,n.jsx)(eD,{size:t});case"js":case"mjs":case"cjs":return(0,n.jsx)(eN,{size:t});case"jsx":return(0,n.jsx)(eA,{size:t});case"py":return(0,n.jsx)(eO,{size:t});case"json":case"jsonl":return(0,n.jsx)(eH,{size:t});case"css":case"less":return(0,n.jsx)(eF,{size:t});case"scss":return(0,n.jsx)(eU,{size:t});case"html":case"htm":return(0,n.jsx)(e_,{size:t});case"md":case"mdx":return(0,n.jsx)(eK,{size:t});case"yaml":case"yml":return(0,n.jsx)(eV,{size:t});case"toml":return(0,n.jsx)(eJ,{size:t});case"sh":case"bash":case"zsh":case"fish":return(0,n.jsx)(eY,{size:t});case"rs":return(0,n.jsx)(eq,{size:t});case"go":return(0,n.jsx)(eZ,{size:t});case"sql":return(0,n.jsx)(eG,{size:t});case"graphql":case"gql":return(0,n.jsx)(eX,{size:t});case"tf":case"hcl":return(0,n.jsx)(eQ,{size:t});case"lock":return(0,n.jsx)(e5,{size:t});default:return(0,n.jsx)(eP,{size:t})}}var e8=r(28999);async function e6(e){let t=(0,e8.HG)(e),r=await fetch(`/api/files/${t}?type=list`);return r.ok?((await r.json()).entries??[]).map(t=>({name:t.name,fullPath:(0,e8.e_)(e,t.name),isDir:t.isDir,size:t.size,children:t.isDir?[]:void 0,loaded:!t.isDir})):[]}function e7(e,t){let r=t.trim().toLowerCase();return!!(!r||e.name.toLowerCase().includes(r))||(e.children??[]).some(e=>e7(e,r))}function e9(e){return!!Array.from(e.types).includes("Files")||Array.from(e.items).some(e=>"file"===e.kind)}function te(e){return Array.from(e.files).filter(e=>!!e.name)}function tt(e,t){return e===t?".":(0,e8.qP)(e,t)}function tr({node:e,depth:t,cwd:r,onOpenFile:o,onExploreFile:l,onAtMention:s,expandedPaths:a,onToggleExpanded:d,onUploadFiles:c,uploadTargetPath:p,refreshKey:u,searchQuery:h}){let x=!!h?.trim(),g=x?e.isDir:a.has(e.fullPath),[f,v]=(0,i.useState)(e.children??[]),[m,y]=(0,i.useState)(e.loaded??!1),[b,j]=(0,i.useState)(!1),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(!1),T=e.isDir&&(S||p===e.fullPath),z=!!s&&k,I=!!l&&k&&!e.isDir&&e.name.toLowerCase().endsWith(".h5ad"),M=z||I,W=x?f.filter(e=>e7(e,h??"")):f,L=(0,i.useCallback)(async(t=!1)=>{if(!m||t){j(!0);try{let t=await e6(e.fullPath);v(t),y(!0)}catch{}finally{j(!1)}}},[m,e.fullPath]),R=(0,i.useRef)(m);(0,i.useEffect)(()=>{R.current=m}),(0,i.useEffect)(()=>{g&&m&&L(!0)},[u]);let E=(0,i.useCallback)(()=>{if(e.isDir){let t=!g;d(e.fullPath,t),t&&!m&&L()}else o(e.fullPath,e.name)},[e.isDir,e.fullPath,e.name,m,g,L,o,d]),P=(0,i.useCallback)(t=>{e.isDir&&e9(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy",C(!0))},[e.isDir]),$=(0,i.useCallback)(t=>{e.isDir&&e9(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy")},[e.isDir]),B=(0,i.useCallback)(t=>{if(!e.isDir)return;let r=t.relatedTarget;r instanceof Node&&t.currentTarget.contains(r)||C(!1)},[e.isDir]),D=(0,i.useCallback)(t=>{if(!e.isDir||!e9(t.dataTransfer))return;t.preventDefault(),t.stopPropagation(),C(!1);let r=te(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:E,onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),onDragEnter:P,onDragOver:$,onDragLeave:B,onDrop:D,style:{position:"relative",display:"flex",alignItems:"center",gap:4,paddingLeft:8+14*t,paddingRight:M?z&&I?146:82: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)(eE,{size:14,open:g}):e3(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"})}),M&&(0,n.jsxs)("div",{style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",gap:4},children:[I&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),l?.(e.fullPath,e.name)},title:"Explore H5AD",style:{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.1",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"11",cy:"11",r:"7"}),(0,n.jsx)("path",{d:"M16 16l4 4"}),(0,n.jsx)("path",{d:"M8.5 11h5"}),(0,n.jsx)("path",{d:"M11 8.5v5"})]}),"@explore"]}),z&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),s?.((0,e8.qP)(e.fullPath,r))},title:"Insert path into chat",style:{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:[W.map(e=>(0,n.jsx)(tr,{node:e,depth:t+1,cwd:r,onOpenFile:o,onExploreFile:l,onAtMention:s,expandedPaths:a,onToggleExpanded:d,onUploadFiles:c,uploadTargetPath:p,refreshKey:u,searchQuery:h},e.fullPath)),0===W.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 tn({cwd:e,onOpenFile:t,onExploreFile:r,refreshKey:o,onAtMention:l,searchQuery:s="",onSearchChange:a}){let[d,c]=(0,i.useState)([]),[p,u]=(0,i.useState)(!0),[h,x]=(0,i.useState)(null),[g,f]=(0,i.useState)(new Set),[v,m]=(0,i.useState)(!1),[y,b]=(0,i.useState)(null),[j,k]=(0,i.useState)(null),w=(0,i.useRef)(null),S=(0,i.useRef)(null),C=(0,i.useRef)(0),T=(0,i.useCallback)((e,t)=>(u(t),x(null),e6(e).then(e=>c(e)).catch(e=>x(String(e))).finally(()=>u(!1))),[]),z=(0,i.useCallback)((e,t)=>{f(r=>{let n=new Set(r);return t?n.add(e):n.delete(e),n})},[]);(0,i.useEffect)(()=>{let t=w.current!==e;w.current=e,t&&f(new Set),T(e,t)},[e,o,T]),(0,i.useEffect)(()=>()=>{S.current&&clearTimeout(S.current)},[]);let I=(0,i.useCallback)(()=>{T(e,0===d.length)},[e,d.length,T]),M=(0,i.useCallback)(()=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>k(null),5e3)},[]),W=(0,i.useCallback)((t,r)=>{if(0===t.length)return;C.current=0,m(!1),S.current&&clearTimeout(S.current);let n=t.reduce((e,t)=>e+t.size,0),i=tt(r,e);b(r),k({phase:"uploading",targetPath:r,fileCount:t.length,loaded:0,total:n,message:`Uploading ${t.length} file${1===t.length?"":"s"} to ${i}`});let o=new FormData;t.forEach(e=>o.append("files",e,e.name));let l=new XMLHttpRequest,s=(0,e8.HG)(r);l.open("POST",`/api/files/${s}?type=upload`),l.upload.onprogress=e=>{e.lengthComputable&&k(t=>t?{...t,loaded:e.loaded,total:e.total}:t)},l.onload=()=>{b(null);let e={};try{e=JSON.parse(l.responseText)}catch{e={}}if(l.status>=200&&l.status<300){let o=e.uploaded??[],l=e.failed??[],s=[...o.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}`)];k({phase:l.length>0?"warning":"success",targetPath:r,fileCount:t.length,loaded:n,total:n,message:l.length>0?`Uploaded ${o.length}, ${l.length} failed`:`Uploaded ${o.length} file${1===o.length?"":"s"} to ${i}`,details:s}),I(),M()}else{let i=e.error??`Upload failed (HTTP ${l.status})`;k({phase:(l.status,"error"),targetPath:r,fileCount:t.length,loaded:0,total:n,message:i,details:403===l.status?["Check directory write permission or project access."]:void 0}),M()}},l.onerror=()=>{b(null),k({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload failed due to a network error"}),M()},l.onabort=()=>{b(null),k({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload canceled"}),M()},l.send(o)},[e,I,M]),L=(0,i.useCallback)(e=>{e9(e.dataTransfer)&&(e.preventDefault(),C.current+=1,m(!0))},[]),R=(0,i.useCallback)(e=>{e9(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},[]),E=(0,i.useCallback)(()=>{C.current-=1,C.current<=0&&(C.current=0,m(!1))},[]),P=(0,i.useCallback)(t=>{if(!e9(t.dataTransfer))return;t.preventDefault(),C.current=0,m(!1);let r=te(t.dataTransfer);r.length>0&&W(r,e)},[e,W]),$=s.trim()?d.filter(e=>e7(e,s)):d,B=s.trim().length>0;return p?(0,n.jsx)(ti,{cwd:e,isDraggingFiles:v,uploadState:j,onDragEnter:L,onDragOver:R,onDragLeave:E,onDrop:P,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:"Loading files..."})}):h?(0,n.jsx)(ti,{cwd:e,isDraggingFiles:v,uploadState:j,onDragEnter:L,onDragOver:R,onDragLeave:E,onDrop:P,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"#f87171"},children:h})}):(0,n.jsx)(ti,{cwd:e,isDraggingFiles:v,uploadState:j,onDragEnter:L,onDragOver:R,onDragLeave:E,onDrop:P,children:(0,n.jsxs)("div",{style:{padding:"2px 4px"},children:[$.map(i=>(0,n.jsx)(tr,{node:i,depth:0,cwd:e,onOpenFile:t,onExploreFile:r,onAtMention:l,expandedPaths:g,onToggleExpanded:z,onUploadFiles:W,uploadTargetPath:y,refreshKey:o,searchQuery:s},i.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 ti({cwd:e,isDraggingFiles:t,uploadState:r,onDragEnter:i,onDragOver:o,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:i,onDragOver:o,onDragLeave:l,onDrop:s,style:{position:"relative",display:"flex",flexDirection:"column",height:"100%",minHeight:0,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,overflowY:"auto",overscrollBehavior:"contain",scrollbarWidth:"thin"},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 ",tt(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 to({cwd:e,refreshKey:t=0,onOpenFile:r,onExploreFile:o,onAtMention:l}){let[s,a]=(0,i.useState)(""),[d,c]=(0,i.useState)(0);return(0,i.useEffect)(()=>{c(e=>e+1)},[t]),(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"var(--bg)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"9px 10px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Files"}),(0,n.jsx)("div",{title:e??"",style:{marginTop:2,fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:e??"No project selected"})]}),(0,n.jsx)("button",{type:"button",onClick:()=>c(e=>e+1),disabled:!e,title:"Refresh files",style:{width:28,height:28,padding:0,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:e?"pointer":"not-allowed",display:"flex",alignItems:"center",justifyContent:"center",opacity:e?1:.55},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)("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"})]})})]}),(0,n.jsxs)("div",{style:{position:"relative",marginTop:9},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"},"aria-hidden":"true",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:s,onChange:e=>a(e.target.value),placeholder:"Filter files...",disabled:!e,style:{width:"100%",height:30,boxSizing:"border-box",padding:"0 28px 0 26px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none",opacity:e?1:.6}}),s&&(0,n.jsx)("button",{type:"button",onClick:()=>a(""),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","aria-hidden":"true",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"})]})})]})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflow:"hidden"},children:e?(0,n.jsx)(tn,{cwd:e,onOpenFile:r,onExploreFile:o,refreshKey:d,onAtMention:l,searchQuery:s,onSearchChange:a}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",padding:18,textAlign:"center",color:"var(--text-dim)",fontSize:12},children:"Select a project to browse files."})})]})}var tl=r(27568),ts=r(96793);let ta={__soul__:{apiPath:"/api/soul",title:"SOUL.md"},__harness__:{apiPath:"/api/harness",title:"HARNESS.md"}};function td({filePath:e}){let t=ta[e],{isDark:r}=(0,ts.D)(),[o,l]=(0,i.useState)(""),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[p,u]=(0,i.useState)(!1),[h,x]=(0,i.useState)(!1);(0,i.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,i.useCallback)(async()=>{if(t){u(!0);try{await fetch(t.apiPath,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:o})}),x(!0),setTimeout(()=>x(!1),2e3)}catch(e){c(String(e))}finally{u(!1)}}},[t,o]);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:p,title:"Save (Ctrl+S)",style:{padding:"2px 10px",fontSize:11,cursor:p?"not-allowed":"pointer",background:"var(--accent)",color:"#fff",border:"1px solid var(--accent)",borderRadius:5,fontWeight:600,opacity:p?.6:1},children:p?"Saving…":"Save"})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,n.jsx)(tl.g,{initialContent:o,language:"markdown",isDark:r,onChange:l,onSave:g})})]}):null}function tc(){document.body.style.cursor="",document.body.style.userSelect=""}function tp({side:e,onResize:t,onResizeStart:r,onResizeEnd:o,ariaLabel:l}){let s=(0,i.useRef)(null),a=(0,i.useRef)(!1),d=(0,i.useRef)(0),[c,p]=(0,i.useState)(!1),u=(0,i.useCallback)(e=>{if(!a.current)return;a.current=!1,p(!1);let t=s.current;t&&void 0!==e&&t.hasPointerCapture(e)&&t.releasePointerCapture(e),tc(),o?.()},[o]),h=(0,i.useCallback)(e=>{0===e.button&&e.isPrimary&&(e.preventDefault(),a.current=!0,d.current=e.clientX,p(!0),r?.(),e.currentTarget.setPointerCapture(e.pointerId),document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[r]),x=(0,i.useCallback)(e=>{if(!a.current)return;e.preventDefault();let r=e.clientX-d.current;d.current=e.clientX,t(r)},[t]),g=(0,i.useCallback)(e=>{e.preventDefault(),u(e.pointerId)},[u]),f=(0,i.useCallback)(e=>{u(e.pointerId)},[u]);return(0,i.useEffect)(()=>()=>{a.current&&(a.current=!1,tc(),o?.())},[o]),(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 tu(e){return"running"===e?"#22c55e":"starting"===e?"rgba(234,179,8,0.95)":"error"===e?"#ef4444":"var(--text-dim)"}function th(e){return"h5adexp"===e?"H5AD Exp":"stexp"}function tx(e,t,r){return Math.min(Math.max(e,t),r)}function tg(e){if(!e||"object"!=typeof e||!("app"in e))return null;let t=e.app;return t&&"object"==typeof t&&"id"in t?t:null}function tf({appType:e,filePath:t,cwd:r,sessionId:o,appId:l,onClose:s,onAppChanged:a,onOpenTools:d}){var c;let[p,u]=(0,i.useState)(null),[h,x]=(0,i.useState)(null),[g,f]=(0,i.useState)(!1),[v,m]=(0,i.useState)(!1),[y,b]=(0,i.useState)(0),[j,k]=(0,i.useState)(()=>{let e,t,r,n,i,o;return e=window.innerWidth,t=window.innerHeight,n=(r=e<720||t<560)?8:34,i=Math.max(360,e-2*n),o=Math.max(320,t-2*n),{left:n,top:n,width:r?i:Math.min(1280,i),height:r?o:Math.min(880,o),maximized:!1}}),[w,S]=(0,i.useState)(!1),[C,T]=(0,i.useState)(!1),z=(0,i.useRef)(null),I=(0,i.useRef)(null),M=(0,i.useRef)(null),W=!!t||!!l,L=t?(0,e8.WP)(t):p?(0,e8.WP)(p.filePath):"",R=t&&r?(0,e8.qP)(t,r):p?.filePath&&p.cwd?(0,e8.qP)(p.filePath,p.cwd):t??p?.filePath??"",E=p?.status??"idle",P=(0,i.useMemo)(()=>p?.logs?.join("\n")??"",[p?.logs]),$=p?.appType==="h5adexp"?p.url:p?.directUrl??p?.url??"",B=(0,i.useCallback)(e=>{u(e),a?.(e)},[a]),D=(0,i.useCallback)(async e=>{let t=await fetch(`/api/apps?appId=${encodeURIComponent(e)}`),r=await t.json(),n=tg(r);if(!t.ok||!n)throw Error(r&&"object"==typeof r&&"error"in r?String(r.error):`HTTP ${t.status}`);return B(n),n},[B]),N=(0,i.useCallback)(async()=>{if(t&&r&&!g){f(!0),x(null);try{let n=await fetch("/api/apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"start",appType:e,filePath:t,cwd:r,sessionId:o})}),i=await n.json(),l=tg(i);if(!n.ok||!l){let e=i&&"object"==typeof i&&"error"in i?String(i.error):`HTTP ${n.status}`;throw Error(e)}B(l),b(e=>e+1)}catch(e){x(e instanceof Error?e.message:String(e))}finally{f(!1)}}},[e,B,g,r,t,o]);(0,i.useEffect)(()=>{if(W){if(x(null),m(!1),l)return void D(l).then(()=>b(e=>e+1)).catch(e=>x(e instanceof Error?e.message:String(e)));u(null),N()}},[W,l,t]),(0,i.useEffect)(()=>{if(!p?.id||"stopped"===p.status||"error"===p.status)return;let e=window.setInterval(()=>{D(p.id).catch(()=>{})},2500);return()=>window.clearInterval(e)},[p?.id,p?.status,D]),(0,i.useEffect)(()=>{W&&z.current?.focus({preventScroll:!0})},[W,p?.id]),(0,i.useEffect)(()=>{let e=()=>{k(e=>{if(e.maximized)return e;let t=Math.max(360,window.innerWidth-16),r=Math.max(320,window.innerHeight-16),n=Math.min(e.width,t),i=Math.min(e.height,r);return{...e,width:n,height:i,left:tx(e.left,8,Math.max(8,window.innerWidth-n-8)),top:tx(e.top,8,Math.max(8,window.innerHeight-i-8))}})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let A=(0,i.useCallback)(async()=>{if(p?.id&&!g){f(!0),x(null);try{let e=await fetch("/api/apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"stop",appId:p.id})}),t=await e.json(),r=tg(t);if(!e.ok||!r){let r=t&&"object"==typeof t&&"error"in t?String(t.error):`HTTP ${e.status}`;throw Error(r)}B(r)}catch(e){x(e instanceof Error?e.message:String(e))}finally{f(!1)}}},[p?.id,B,g]),O=(0,i.useCallback)(e=>{0!==e.button||j.maximized||(e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),I.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,left:j.left,top:j.top},S(!0))},[j.left,j.maximized,j.top]),H=(0,i.useCallback)(e=>{let t=I.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.left+e.clientX-t.startX,n=t.top+e.clientY-t.startY;k(e=>({...e,left:tx(r,8,Math.max(8,window.innerWidth-120)),top:tx(n,8,Math.max(8,window.innerHeight-48))}))},[]),F=(0,i.useCallback)(e=>{let t=I.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),I.current=null,S(!1))},[]),U=(0,i.useCallback)(e=>{0!==e.button||j.maximized||(e.preventDefault(),e.stopPropagation(),e.currentTarget.setPointerCapture(e.pointerId),M.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,width:j.width,height:j.height},T(!0))},[j.height,j.maximized,j.width]),_=(0,i.useCallback)(e=>{let t=M.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.width+e.clientX-t.startX,n=t.height+e.clientY-t.startY;k(e=>({...e,width:tx(r,420,Math.max(420,window.innerWidth-e.left-8)),height:tx(n,340,Math.max(340,window.innerHeight-e.top-8))}))},[]),K=(0,i.useCallback)(e=>{let t=M.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),M.current=null,T(!1))},[]),V=(0,i.useCallback)(()=>{d?.(),s()},[s,d]),J=(0,i.useCallback)(()=>{k(e=>({...e,maximized:!e.maximized}))},[]);if(!W)return null;let Y=j.maximized?{position:"fixed",inset:12,zIndex:900}:{position:"fixed",left:j.left,top:j.top,width:j.width,height:j.height,zIndex:900};return(0,n.jsxs)("div",{ref:z,role:"dialog","aria-label":`${p?.title??th(e)} window`,tabIndex:-1,onKeyDown:e=>{"Escape"===e.key&&V()},style:{...Y,display:"flex",flexDirection:"column",minWidth:j.maximized?void 0:420,minHeight:j.maximized?void 0:340,background:"var(--bg)",border:"1px solid rgba(37,99,235,0.5)",borderRadius:8,boxShadow:"0 18px 60px rgba(0,0,0,0.26)",overflow:"hidden",outline:"none"},children:[(0,n.jsxs)("div",{onPointerDown:O,onPointerMove:H,onPointerUp:F,onPointerCancel:F,style:{display:"flex",alignItems:"center",gap:8,padding:"8px 9px 8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0,userSelect:"none",cursor:j.maximized?"default":w?"grabbing":"grab"},children:[(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:700,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:p?.title??th(e)}),(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:tu(E),flexShrink:0}}),(0,n.jsx)("span",{style:{fontSize:11,color:tu(E),textTransform:"capitalize",flexShrink:0},children:E}),p?.pid&&(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",flexShrink:0},children:["pid ",p.pid]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",flexShrink:0},children:(c=p?.rssBytes)&&Number.isFinite(c)?c<1048576?`${(c/1024).toFixed(0)}K`:c<0x40000000?`${(c/1024/1024).toFixed(1)}M`:`${(c/1024/1024/1024).toFixed(1)}G`:"-"})]}),(0,n.jsx)("div",{title:t??p?.filePath??"",style:{marginTop:2,fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:R||L})]}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>b(e=>e+1),disabled:!$||p?.status==="stopped",style:tv,title:"Reload",children:"Reload"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>m(e=>!e),style:{...tv,background:v?"var(--bg-selected)":"var(--bg)",color:v?"var(--text)":"var(--text-muted)"},title:"Toggle logs",children:"Logs"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:V,style:tv,title:"Show in Tools",children:"Tools"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>void A(),disabled:!p||"stopped"===p.status||g,style:{...tv,border:"1px solid rgba(239,68,68,0.35)",background:"rgba(239,68,68,0.08)",color:"#ef4444",opacity:!p||"stopped"===p.status||g?.55:1},title:"Stop process",children:"Stop"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:V,"aria-label":"Minimize",title:"Minimize",style:tm,children:(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","aria-hidden":"true",children:(0,n.jsx)("line",{x1:"4",y1:"11",x2:"12",y2:"11"})})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:J,"aria-label":j.maximized?"Restore":"Maximize",title:j.maximized?"Restore":"Maximize",style:tm,children:j.maximized?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M6 3.5h6.5V10"}),(0,n.jsx)("path",{d:"M3.5 6H10v6.5H3.5z"})]}):(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M4 4h8v8H4z"})})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:s,"aria-label":"Close window",title:"Close window",style:tm,children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"4",y1:"4",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"4",x2:"4",y2:"12"})]})})]}),(h||p?.error)&&(0,n.jsx)("div",{style:{padding:"8px 12px",borderBottom:"1px solid rgba(248,113,113,0.25)",background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:12},children:h??p?.error}),(0,n.jsxs)("div",{style:{flex:1,minHeight:0,display:"flex",background:"var(--bg)"},children:[(0,n.jsx)("div",{style:{flex:1,minWidth:0,position:"relative"},children:g&&!p?.url?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:["Starting ",th(e),"..."]}):$&&p?.status!=="stopped"?(0,n.jsx)("iframe",{src:$,title:`${p?.title??th(e)} - ${L}`,style:{width:"100%",height:"100%",border:"none",display:"block",background:"#fff"}},`${$}:${y}`):(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,color:"var(--text-muted)",fontSize:13},children:[(0,n.jsxs)("div",{children:[th(e)," is stopped."]}),t&&r&&(0,n.jsx)("button",{type:"button",onClick:()=>void N(),disabled:g,style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:"var(--accent)",color:"#fff",cursor:g?"not-allowed":"pointer",fontSize:12,fontWeight:650},children:"Start again"})]})}),v&&(0,n.jsxs)("div",{style:{width:360,borderLeft:"1px solid var(--border)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",minHeight:0},children:[(0,n.jsx)("div",{style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-muted)",fontWeight:650},children:"Process Logs"}),(0,n.jsx)("pre",{style:{flex:1,margin:0,padding:10,overflow:"auto",fontSize:11,lineHeight:1.45,color:"var(--text-muted)",fontFamily:"var(--font-mono)",whiteSpace:"pre-wrap"},children:P||"No logs yet."})]})]}),!j.maximized&&(0,n.jsx)("div",{role:"separator","aria-orientation":"horizontal","aria-label":"Resize explore window",title:"Resize",onPointerDown:U,onPointerMove:_,onPointerUp:K,onPointerCancel:K,style:{position:"absolute",right:0,bottom:0,width:18,height:18,cursor:"nwse-resize",background:"linear-gradient(135deg, transparent 0 48%, rgba(127,127,127,0.22) 48% 52%, transparent 52% 100%)"}})]})}let tv={height:30,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,flexShrink:0},tm={width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,padding:0};function ty(e){return"running"===e?"#22c55e":"starting"===e?"rgba(234,179,8,0.95)":"error"===e?"#ef4444":"var(--text-dim)"}function tb(e){return"waiting_model"===e?"rgba(234,179,8,0.95)":"running_tools"===e?"#38bdf8":"streaming"===e?"#22c55e":"compacting"===e?"#a78bfa":"var(--text-dim)"}function tj(e){return e&&Number.isFinite(e)?e<1048576?`${(e/1024).toFixed(0)}K`:e<0x40000000?`${(e/1024/1024).toFixed(1)}M`:`${(e/1024/1024/1024).toFixed(1)}G`:"-"}function tk(e){if(!e||!Number.isFinite(e))return"-";let t=Math.max(0,Math.floor(e/1e3)),r=Math.floor(t/3600),n=Math.floor(t%3600/60),i=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${i}s`:`${i}s`}function tw({refreshKey:e=0,visibleAppId:t,cwd:r,onOpenApp:o,onAppChanged:l,onAppsChanged:s}){let[a,d]=(0,i.useState)([]),[c,p]=(0,i.useState)(null),[u,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(null),[f,v]=(0,i.useState)(null),[m,y]=(0,i.useState)(null),[b,j]=(0,i.useState)(null),[k,w]=(0,i.useState)(null),[S,C]=(0,i.useState)(null),[T,z]=(0,i.useState)(null),I=(0,i.useMemo)(()=>[...a].sort((e,t)=>{let r=+!!e.running,n=+!!t.running;return r!==n?n-r:Date.parse(t.lastActivity)-Date.parse(e.lastActivity)}),[a]),M=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/apps",{cache:"no-store"}),t=await e.json();if(!e.ok||!Array.isArray(t.apps))throw Error(t.error??`HTTP ${e.status}`);d(t.apps),s?.(t.apps),g(null)}catch(e){g(e instanceof Error?e.message:String(e))}},[s]),W=(0,i.useCallback)(async()=>{try{let e=new URLSearchParams;r&&e.set("cwd",r);let t=await fetch(`/api/agent/runtime${e.toString()?`?${e}`:""}`,{cache:"no-store"}),n=await t.json();if(!t.ok||!Array.isArray(n.sessions))throw Error(n.error??`HTTP ${t.status}`);p(n),h(n.memory??null),v(null)}catch(e){v(e instanceof Error?e.message:String(e))}},[r]);(0,i.useEffect)(()=>{M(),W()},[M,W,e]),(0,i.useEffect)(()=>{let e=window.setInterval(()=>{M(),W()},3e3);return()=>window.clearInterval(e)},[M,W]);let L=(0,i.useCallback)(async e=>{w(e.id),g(null);try{let t=await fetch("/api/apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"stop",appId:e.id})}),r=await t.json();if(!t.ok||!r.app)throw Error(r.error??`HTTP ${t.status}`);d(e=>e.map(e=>e.id===r.app.id?r.app:e)),l?.(r.app),await M()}catch(e){g(e instanceof Error?e.message:String(e))}finally{w(null)}},[M,l]),R=(0,i.useCallback)(async e=>{C(e.sessionId),v(null);try{let t=await fetch(`/api/agent/${encodeURIComponent(e.sessionId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"abort"})}),r=await t.json().catch(()=>({}));if(!t.ok||r.error)throw Error(r.error??`HTTP ${t.status}`);await W()}catch(e){v(e instanceof Error?e.message:String(e))}finally{C(null)}},[W]),E=(0,i.useCallback)(async(e,t)=>{if(r){j(`${e}:${t}`),y(null);try{let n=await fetch("/api/memory/promote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:r,memoryId:e,target:t})}),i=await n.json().catch(()=>({}));if(!n.ok)throw Error(i.error??`HTTP ${n.status}`);await W()}catch(e){y(e instanceof Error?e.message:String(e))}finally{j(null)}}},[r,W]),P=a.filter(e=>e.running).length,$=a.reduce((e,t)=>e+(t.running?t.rssBytes??0:0),0),B=c?.sessions??[],D=B.filter(e=>e.busy),N=D.filter(e=>"waiting_model"===e.phase);return(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"var(--bg)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Status"}),(0,n.jsxs)("div",{style:{marginTop:3,fontSize:11,color:"var(--text-dim)"},children:[D.length," agent running \xb7 ",P," explore \xb7 ",tj($)]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>{M(),W()},style:tI,title:"Refresh status",children:"Refresh"})]}),x&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11},children:x}),f&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11},children:f}),m&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11},children:m})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",padding:10},children:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsxs)("section",{children:[(0,n.jsx)(tS,{title:"Agent Runtime",subtitle:N.length>0?`${N.length} waiting for model first token`:`${D.length} active chat${1===D.length?"":"s"}`}),0===B.length?(0,n.jsx)(tC,{label:"No agent runtime is active."}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:B.map(e=>{var t;let r=e.model?`${e.model.provider}/${e.model.id}`:"-",i=e.cwd?(0,e8.WP)(e.cwd)||e.cwd:"-",o=e.activeTools.map(e=>e.name).join(", ");return(0,n.jsxs)("div",{style:{border:`1px solid ${e.busy?"rgba(37,99,235,0.35)":"var(--border)"}`,borderRadius:8,background:e.busy?"var(--bg-selected)":"var(--bg-panel)",padding:10},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:tb(e.phase),marginTop:5,flexShrink:0}}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:700,color:tb(e.phase),textTransform:"uppercase",flexShrink:0},children:"waiting_model"===(t=e.phase)?"waiting model":"running_tools"===t?"running tools":"streaming"===t?"streaming":"compacting"===t?"compacting":"idle"}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:r,children:r})]}),(0,n.jsxs)("div",{title:e.cwd??void 0,style:{marginTop:3,fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[i," \xb7 ",e.sessionId.slice(0,8)]})]})]}),(0,n.jsxs)("div",{style:{marginTop:9,display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"5px 10px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(tT,{label:"uptime",value:tk(e.uptimeMs)}),(0,n.jsx)(tT,{label:"wait",value:tk(e.waitingForModelMs),color:"waiting_model"===e.phase?tb(e.phase):void 0}),(0,n.jsx)(tT,{label:"pending",value:null===e.pendingMessageCount?"-":String(e.pendingMessageCount)}),(0,n.jsx)(tT,{label:"event",value:e.lastEventType??"-"}),(0,n.jsx)(tT,{label:"tools",value:o||"-"}),(0,n.jsx)(tT,{label:"ops",value:e.operations.join(", ")||"-"})]}),"waiting_model"===e.phase&&(e.waitingForModelMs??0)>8e3&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(234,179,8,0.25)",borderRadius:6,background:"rgba(234,179,8,0.08)",color:"rgba(234,179,8,0.95)",fontSize:11,lineHeight:1.45},children:"Waiting before the first model token. If another chat uses the same provider or gateway, the upstream may be queueing requests."}),e.errorMessage&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11,lineHeight:1.45},children:e.errorMessage}),(0,n.jsx)("div",{style:{marginTop:10,display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:(0,n.jsx)("button",{type:"button",onClick:()=>void R(e),disabled:!e.busy||S===e.sessionId,style:{...tI,border:"1px solid rgba(239,68,68,0.35)",color:"#ef4444",background:"rgba(239,68,68,0.08)",opacity:e.busy&&S!==e.sessionId?1:.55},children:"Abort"})})]},e.sessionId)})})]}),(0,n.jsxs)("section",{children:[(0,n.jsx)(tS,{title:"Memory",subtitle:u?`${u.count} stored \xb7 ${u.candidateCount} candidates`:r?"loading":"No project selected"}),r?u?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:10},children:[(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"5px 10px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(tT,{label:"fact",value:String(u.byType.fact)}),(0,n.jsx)(tT,{label:"context",value:String(u.byType.context)}),(0,n.jsx)(tT,{label:"decision",value:String(u.byType.decision)}),(0,n.jsx)(tT,{label:"preference",value:String(u.byType.preference)}),(0,n.jsx)(tT,{label:"note",value:String(u.byType.note)}),(0,n.jsx)(tT,{label:"candidates",value:String(u.candidateCount),color:u.candidateCount>0?"var(--accent)":void 0})]}),(0,n.jsx)("div",{title:u.filePath,style:{marginTop:8,fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,e8.qP)(u.filePath,r)})]}),(0,n.jsx)(tz,{title:"Promotion Candidates",emptyLabel:"No promotion candidates yet.",items:u.topCandidates,onPromote:E,busyAction:b}),(0,n.jsx)(tz,{title:"Recent Memory",emptyLabel:"No memory stored for this project.",items:u.recent})]}):(0,n.jsx)(tC,{label:"Memory status unavailable."}):(0,n.jsx)(tC,{label:"Select a project to inspect memory status."})]}),(0,n.jsxs)("section",{children:[(0,n.jsx)(tS,{title:"Explore Tools",subtitle:`${P} running \xb7 ${tj($)}`}),0===I.length?(0,n.jsx)(tC,{label:"No explore tools are running."}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:I.map(e=>{let i,l=t===e.id,s=T===e.id;return(0,n.jsxs)("div",{style:{border:`1px solid ${l?"rgba(37,99,235,0.5)":"var(--border)"}`,borderRadius:8,background:l?"var(--bg-selected)":"var(--bg-panel)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:10},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:ty(e.status),marginTop:5,flexShrink:0}}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:700,color:"var(--text)",textTransform:"uppercase",flexShrink:0},children:e.appType}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e.filePath,children:(0,e8.WP)(e.filePath)})]}),(0,n.jsx)("div",{title:e.filePath,style:{marginTop:3,fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(i=r&&e.filePath.startsWith(r)?r:e.cwd,(0,e8.qP)(e.filePath,i))})]})]}),(0,n.jsxs)("div",{style:{marginTop:9,display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"5px 10px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(tT,{label:"status",value:e.status,color:ty(e.status)}),(0,n.jsx)(tT,{label:"pid",value:e.pid?String(e.pid):"-"}),(0,n.jsx)(tT,{label:"memory",value:tj(e.rssBytes)}),(0,n.jsx)(tT,{label:"uptime",value:tk(e.uptimeMs)}),(0,n.jsx)(tT,{label:"port",value:String(e.port)}),(0,n.jsx)(tT,{label:"session",value:e.sessionId?e.sessionId.slice(0,8):"-"})]}),(0,n.jsxs)("div",{style:{marginTop:10,display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>o(e),style:tI,children:"Open"}),(0,n.jsx)("button",{type:"button",onClick:()=>z(t=>t===e.id?null:e.id),style:{...tI,background:s?"var(--bg-selected)":"var(--bg)"},children:"Logs"}),(0,n.jsx)("button",{type:"button",onClick:()=>void L(e),disabled:!e.running||k===e.id,style:{...tI,border:"1px solid rgba(239,68,68,0.35)",color:"#ef4444",background:"rgba(239,68,68,0.08)",opacity:e.running&&k!==e.id?1:.55},children:"Stop"})]})]}),s&&(0,n.jsx)("pre",{style:{maxHeight:220,overflow:"auto",margin:0,padding:10,borderTop:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-muted)",fontSize:11,lineHeight:1.45,fontFamily:"var(--font-mono)",whiteSpace:"pre-wrap"},children:e.logs.join("\n")||"No logs yet."})]},e.id)})})]})]})})]})}function tS({title:e,subtitle:t}){return(0,n.jsxs)("div",{style:{marginBottom:8,display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:10},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)"},children:e}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t})]})}function tC({label:e}){return(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:"18px 10px",color:"var(--text-dim)",fontSize:12,textAlign:"center"},children:e})}function tT({label:e,value:t,color:r}){return(0,n.jsxs)("div",{style:{minWidth:0,display:"flex",alignItems:"center",gap:5},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",flexShrink:0},children:e}),(0,n.jsx)("span",{style:{color:r??"var(--text-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:t})]})}function tz({title:e,emptyLabel:t,items:r,onPromote:i,busyAction:o}){return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",fontSize:12,fontWeight:700,color:"var(--text)"},children:e}),0===r.length?(0,n.jsx)("div",{style:{padding:"14px 10px",fontSize:12,color:"var(--text-dim)",textAlign:"center"},children:t}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:r.map((e,t)=>(0,n.jsxs)("div",{style:{padding:"9px 10px",borderTop:0===t?"none":"1px solid var(--border)",display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:10,color:"project_memory"===e.candidate?"#f59e0b":"spark"===e.candidate?"var(--accent)":"var(--text-dim)",fontWeight:700,textTransform:"uppercase",flexShrink:0},children:"none"===e.candidate?e.memoryType:e.candidate}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",flexShrink:0},children:e.importance.toFixed(2)}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:new Date(e.timestamp).toLocaleString()})]}),(0,n.jsx)("div",{title:e.content,style:{fontSize:12,color:"var(--text)",lineHeight:1.45,display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:e.content}),i&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",disabled:e.promotedTo.includes("memory")||o===`${e.id}:context`||o===`${e.id}:memory`,onClick:()=>void i(e.id,"memory"),style:{...tI,height:24,padding:"0 8px",opacity:e.promotedTo.includes("memory")||o===`${e.id}:context`||o===`${e.id}:memory`?.55:1},children:e.promotedTo.includes("memory")?"In MEMORY.md":o===`${e.id}:memory`?"Saving...":"To MEMORY.md"}),(0,n.jsx)("button",{type:"button",disabled:e.promotedTo.includes("context")||o===`${e.id}:context`||o===`${e.id}:memory`,onClick:()=>void i(e.id,"context"),style:{...tI,height:24,padding:"0 8px",opacity:e.promotedTo.includes("context")||o===`${e.id}:context`||o===`${e.id}:memory`?.55:1},children:e.promotedTo.includes("context")?"In CONTEXT.md":o===`${e.id}:context`?"Saving...":"To CONTEXT.md"})]})]},e.id))})]})}let tI={height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:550};function tM({tabs:e,activeTabId:t,onSelectTab:r,onCloseTab:o}){let[l,s]=(0,i.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 i=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:i?"var(--bg)":"var(--bg-panel)",cursor:"pointer",fontSize:12,color:i?"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:i?1:.7,display:"flex",alignItems:"center"},children:"files"===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:"M3 7.5V6a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v1.5"}),(0,n.jsx)("path",{d:"M3 7.5h18l-1.6 9.6A2 2 0 0 1 17.4 19H6.6a2 2 0 0 1-2-1.9z"})]}):"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"})]}):"tools"===e.icon?(0,n.jsx)("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.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.1-3.1a6 6 0 0 1-7.9 7.9l-5.7 5.7a2.1 2.1 0 0 1-3-3l5.7-5.7a6 6 0 0 1 7.9-7.9z"})}):e3(e.filePath??e.label,13)}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",flex:1,fontWeight:i?500:400},title:e.filePath??e.label,children:e.label}),a&&(0,n.jsx)("button",{onClick:t=>{t.stopPropagation(),o(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 tW(e){let t=e,r=0;for(;1===t.children.length;)t=t.children[0],r++;return{node:t,skipped:r}}function tL({node:e,activePathIds:t,depth:r,isLast:i,parentLines:o,onSelect:l}){let{node:s,skipped:a}=tW(e),d=t.has(s.entry.id),c=t.has(e.entry.id)||t.has(s.entry.id),p=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),u="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:[o.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:i?"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"}}),u&&(0,n.jsx)("span",{style:{fontSize:9,fontFamily:"var(--font-mono)",color:"user"===u?"var(--accent)":"var(--text-dim)",background:"user"===u?"rgba(37,99,235,0.08)":"var(--bg-hover)",border:`1px solid ${"user"===u?"rgba(37,99,235,0.2)":"var(--border)"}`,borderRadius:3,padding:"0 4px",marginRight:5,flexShrink:0,lineHeight:"16px"},children:"user"===u?"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:p})]}),s.children.map((e,a)=>(0,n.jsx)(tL,{node:e,activePathIds:t,depth:r+1,isLast:a===s.children.length-1,parentLines:[...o,!i],onSelect:l},e.entry.id))]})}function tR({tree:e,activeLeafId:t,onLeafChange:r,inline:o,containerRef:l,open:s,onToggle:a,hasSession:d}){let[c,p]=(0,i.useState)(!1),u=void 0!==s?s:c,h=(0,i.useRef)(null),[x,g]=(0,i.useState)(null);(0,i.useEffect)(()=>{if(!u||!o)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()},[u,o,l]);let f=(0,i.useMemo)(()=>t?new Set(function e(r,n){for(let i of r){let r=[...n,i.entry.id];if(i.entry.id===t)return r;let o=e(i.children,r);if(o)return o}return null}(e,[])??[]):new Set,[e,t]),v=(0,i.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?tW(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:u?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})});return o?(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():p(e=>!e),title:"Branches","aria-label":"Branches",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:u?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${u?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:u?"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=u?"var(--text)":"var(--text-muted)",e.currentTarget.style.background=u?"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"})]}),u&&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)(tL,{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:()=>p(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]}),u&&(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)(tL,{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 tE(e,t="0 0 24 24"){let r=({size:r=24,style:i})=>(0,n.jsx)("svg",{width:r,height:r,viewBox:t,fill:"none",style:i,children:e});return r.displayName="ProviderIcon",r}let tP=tE((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"})),t$=tE((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"})),tB=tE((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"})]})),tD=tE((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"})]})),tN=tE((0,n.jsx)("path",{d:"M4 4h16v16H4z",fill:"#F55036"}),"0 0 24 24"),tA=tE((0,n.jsx)("path",{d:"M4 4h5v5H4zm5.5 0h5v5h-5zM15 4h5v5h-5zM4 9.5h5v5H4zm5.5 5.5h5v5h-5zM15 9.5h5v5h-5z",fill:"#FA6F00"})),tO=tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),tH=tE((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"})]})),tF=tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#FF5722"}),"0 0 24 24"),tU=tE((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"})),t_=tE((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"})]})),tK=tE((0,n.jsx)("path",{d:"M12 2l9 5v10l-9 5-9-5V7l9-5z",stroke:"currentColor",strokeWidth:"1.5",fill:"none"})),tV=tE((0,n.jsx)("path",{d:"M4 4l8 8 8-8M4 20l8-8 8 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),tJ=tE((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"})),tY={anthropic:{Icon:tP,hasColor:!1},openai:{Icon:t$,hasColor:!1},"openai-codex":{Icon:t$,hasColor:!1},google:{Icon:tB,hasColor:!0},"google-vertex":{Icon:tB,hasColor:!0},deepseek:{Icon:tD,hasColor:!0},groq:{Icon:tN,hasColor:!1},mistral:{Icon:tA,hasColor:!0},moonshotai:{Icon:tO,hasColor:!1},"moonshotai-cn":{Icon:tO,hasColor:!1},moonshot:{Icon:tO,hasColor:!1},minimax:{Icon:tH,hasColor:!0},"minimax-cn":{Icon:tH,hasColor:!0},fireworks:{Icon:tF,hasColor:!0},huggingface:{Icon:tU,hasColor:!0},cerebras:{Icon:t_,hasColor:!0},openrouter:{Icon:tK,hasColor:!1},xai:{Icon:tV,hasColor:!1},"cloudflare-ai-gateway":{Icon:tJ,hasColor:!0},"cloudflare-workers-ai":{Icon:tJ,hasColor:!0},"vercel-ai-gateway":{Icon:tE((0,n.jsx)("path",{d:"M12 2L22 20H2L12 2z",fill:"currentColor"})),hasColor:!1},"github-copilot":{Icon:tE((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:tE((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:tE((0,n.jsx)("path",{d:"M12 2L3 18h5l4-6 4 6h5L12 2z",fill:"#0078D4"})),hasColor:!0},"kimi-coding":{Icon:tE((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:tE((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:tE((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:tE((0,n.jsx)("path",{d:"M4 8h16v2H4zm0 4h12v2H4zm0 4h8v2H4z",fill:"#3059B1"})),hasColor:!0},perplexity:{Icon:tE((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:tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#0F6CBD"}),"0 0 24 24"),hasColor:!0},grok:{Icon:tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1}},tq=["openai-completions","openai-responses","anthropic-messages","google-generative-ai"],tZ="openai-completions",tG={off:"none",xhigh:"xhigh"};function tX(e){let t=e?.toLowerCase().replace(/\s+/g,"-")??"";return/(^|[^a-z0-9])gpt-5($|[.-])/.test(t)}function tQ(e,t=tZ){return tX(e.id)||tX(e.name)?{...e,api:e.api??("openai-responses"===t?void 0:"openai-responses"),reasoning:e.reasoning??!0,thinkingLevelMap:e.thinkingLevelMap??tG}:e}function t0({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 t1={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 t2({value:e,onChange:t,placeholder:r,mono:i}){return(0,n.jsx)("input",{value:e,onChange:e=>t(e.target.value),placeholder:r,style:{...t1,fontFamily:i?"var(--font-mono)":"inherit"}})}function t5({value:e,onChange:t,placeholder:r,mono:o,onKeyDown:l,autoComplete:s="off",spellCheck:a=!1,style:d}){let[c,p]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{e||p(!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:{...t1,paddingRight:34,fontFamily:o?"var(--font-mono)":"inherit"},autoComplete:s,spellCheck:a}),(0,n.jsx)("button",{type:"button",onClick:()=>p(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 t4({value:e,onChange:t,placeholder:r}){return(0,n.jsx)("input",{type:"number",value:e,onChange:e=>t(e.target.value),placeholder:r,style:t1})}function t3({value:e,onChange:t,options:r,required:i}){return(0,n.jsxs)("select",{value:e,onChange:e=>t(e.target.value),style:{...t1,color:e?"var(--text)":"var(--text-dim)"},children:[!i&&(0,n.jsx)("option",{value:"",children:"— inherit / none —"}),r.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]})}function t8({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 t6({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 t7({name:e,provider:t,onChange:r,onRename:o,onDelete:l}){let[s,a]=(0,i.useState)(e);(0,i.useEffect)(()=>a(e),[e]);let d=(e,n)=>r({...t,[e]:n});return(0,i.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)(t6,{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)(t0,{label:"Provider name",children:[(0,n.jsx)(t2,{value:s,onChange:a,placeholder:"provider-name",mono:!0}),s!==e&&s.trim()&&(0,n.jsx)("button",{onClick:()=>o(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)(t0,{label:"Base URL",children:(0,n.jsx)(t2,{value:t.baseUrl??"",onChange:e=>d("baseUrl",e||void 0),placeholder:"https://api.example.com/v1",mono:!0})}),(0,n.jsxs)(t0,{label:"API Key",children:[(0,n.jsx)(t5,{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)(t0,{label:"API",children:(0,n.jsx)(t3,{value:t.api??"openai-completions",onChange:e=>d("api",e),options:tq,required:!0})})]})}let t9=["off","minimal","low","medium","high","xhigh"],re={off:"var(--text-dim)",minimal:"#6b7280",low:"#60a5fa",medium:"#a78bfa",high:"#f472b6",xhigh:"#fb923c"};function rt({value:e,onChange:t}){let r=e??{},i=(e,n)=>{let i={...r};"omit"===n?delete i[e]:i[e]=n,t(Object.keys(i).length?i:void 0)};return(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:t9.map(e=>{let t=r[e],o=e in r?null===t?"null":"string":"omit",l="string"==typeof t?t:"",s=re[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"===o?.3:1}}),(0,n.jsx)("span",{style:{fontSize:11,fontFamily:"var(--font-mono)",color:"null"===o?"var(--text-dim)":"var(--text-muted)",textDecoration:"null"===o?"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:()=>i(e,"omit"),style:{...a,..."omit"===o?d:{}},children:"Default"}),(0,n.jsx)("button",{onClick:()=>i(e,null),style:{...a,borderLeft:"1px solid var(--border)",..."null"===o?{background:"#ef4444",color:"#fff",fontWeight:600}:{}},children:"Disabled"})]}),(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,border:`1px solid ${"string"===o?"var(--accent)":"var(--border)"}`,overflow:"hidden",transition:"border-color 0.1s"},children:[(0,n.jsx)("button",{onClick:()=>i(e,l||e),style:{...a,..."string"===o?d:{},borderRight:"1px solid var(--border)",flexShrink:0},children:"Custom"}),(0,n.jsx)("input",{value:l,onChange:t=>i(e,t.target.value),onFocus:()=>{"string"!==o&&i(e,l||e)},placeholder:e,maxLength:10,style:{width:"12ch",background:"string"===o?"var(--bg)":"var(--bg-panel)",border:"none",outline:"none",color:"string"===o?"var(--text)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,padding:"4px 7px",transition:"background 0.1s, color 0.1s"}})]})]},e)})})}let rr={thinkingFormat:"deepseek",requiresReasoningContentOnAssistantMessages:!0};function rn({providerName:e,provider:t,model:r,onChange:o,onDelete:l}){let[s,a]=(0,i.useState)({phase:"idle"}),d=(e,t)=>o({...r,[e]:t}),c=e=>{o(tQ(e,t.api??tZ))},p=(()=>{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,i.useEffect)(()=>{a({phase:"idle"})},[e,t.baseUrl,t.api,t.apiKey,r.id,r.api]);let u=(0,i.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})}),i=await n.json();if(!n.ok||!i.ok)return void a({phase:"error",message:i.error??`HTTP ${n.status}`,latencyMs:i.latencyMs,status:i.status});a({phase:"success",latencyMs:i.latencyMs,status:i.status,responseText:i.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)(t6,{children:"Model"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[p&&(0,n.jsx)("span",{title:p,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:p}),(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)(t0,{label:"ID *",children:(0,n.jsx)(t2,{value:r.id,onChange:e=>c({...r,id:e}),placeholder:"model-id",mono:!0})}),(0,n.jsx)(t0,{label:"Name",children:(0,n.jsx)(t2,{value:r.name??"",onChange:e=>c({...r,name:e||void 0}),placeholder:"Display name"})})]}),(0,n.jsx)(t0,{label:"API override",children:(0,n.jsx)(t3,{value:r.api??"",onChange:e=>d("api",e||void 0),options:tq})}),(0,n.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,n.jsx)(t8,{label:"Reasoning / thinking",checked:r.reasoning??!1,onChange:e=>d("reasoning",e||void 0)}),(0,n.jsx)(t8,{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)(t8,{label:"DeepSeek thinking compat",checked:r.compat?.thinkingFormat==="deepseek",onChange:e=>o(function(e,t){if(t)return{...e,compat:{...e.compat??{},...rr}};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)(t6,{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)(rt,{value:r.thinkingLevelMap,onChange:e=>d("thinkingLevelMap",e)})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(t0,{label:"Context window (tokens)",children:(0,n.jsx)(t4,{value:void 0!==r.contextWindow?String(r.contextWindow):"",onChange:e=>d("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,n.jsx)(t0,{label:"Max output tokens",children:(0,n.jsx)(t4,{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)(t6,{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)(t0,{label:e,children:(0,n.jsx)(t4,{value:r.cost?.[e]!==void 0?String(r.cost[e]):"",onChange:t=>{let n;return n=parseFloat(t),void o({...r,cost:{...r.cost??{},[e]:isNaN(n)?void 0:n}})},placeholder:"0"})},e))})]})]})}function ri({provider:e,onRefresh:t}){let[r,o]=(0,i.useState)({phase:"idle"}),[l,s]=(0,i.useState)(""),a=(0,i.useRef)(null),d=(0,i.useRef)(null);(0,i.useEffect)(()=>{("auth"===r.phase||"prompt"===r.phase)&&setTimeout(()=>d.current?.focus(),50)},[r.phase]),(0,i.useEffect)(()=>{o({phase:"idle"}),s(""),a.current?.close(),a.current=null},[e.id]),(0,i.useEffect)(()=>()=>{a.current?.close()},[]);let c=(0,i.useCallback)(()=>{a.current?.close(),o({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?(o({phase:"auth",url:n.url,instructions:n.instructions??null,token:n.token}),window.open(n.url,"_blank","noopener,noreferrer")):"device_code"===n.type?(o({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?o({phase:"prompt",message:n.message,placeholder:n.placeholder??null,token:n.token}):"select_request"===n.type?o({phase:"select",message:n.message,options:n.options??[],token:n.token}):"progress"===n.type?o({phase:"progress",message:n.message}):"success"===n.type?(r.close(),o({phase:"success"}),t()):"error"===n.type?(r.close(),o({phase:"error",message:n.message})):"cancelled"===n.type&&(r.close(),o({phase:"idle"}))},r.onerror=()=>{r.close(),o(e=>"success"===e.phase?e:{phase:"error",message:"Connection lost"})}},[e.id,t]),p=(0,i.useCallback)(async()=>{await fetch(`/api/auth/logout/${encodeURIComponent(e.id)}`,{method:"POST"}),o({phase:"idle"}),t()},[e.id,t]),u=(0,i.useCallback)(async(t,r)=>{if(r.trim()){o({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(()=>({}));o({phase:"error",message:e.error??`Server error ${n.status}`});return}s("")}catch(e){o({phase:"error",message:e instanceof Error?e.message:"Network error"})}}},[e.id]),h=(0,i.useCallback)(async(t,r)=>{o({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(()=>({}));o({phase:"error",message:e.error??`Server error ${n.status}`})}}catch(e){o({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)(t6,{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&&u(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:()=>u(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(),o({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:p,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 ro({provider:e,onRefresh:t}){let[r,o]=(0,i.useState)(""),[l,s]=(0,i.useState)(!1),[a,d]=(0,i.useState)(!1),[c,p]=(0,i.useState)(null),[u,h]=(0,i.useState)(!1);(0,i.useEffect)(()=>{o(""),p(null),h(!1)},[e.id]);let x=(0,i.useCallback)(async()=>{if(r.trim()){s(!0),p(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()})}),i=await n.json();!n.ok||i.error?p(i.error??`HTTP ${n.status}`):(o(""),h(!0),setTimeout(()=>h(!1),2e3),t())}catch(e){p(String(e))}finally{s(!1)}}},[r,e.id,t]),g=(0,i.useCallback)(async()=>{d(!0),p(null);try{let r=await fetch(`/api/auth/api-key/${encodeURIComponent(e.id)}`,{method:"DELETE"}),n=await r.json();!r.ok||n.error?p(n.error??`HTTP ${r.status}`):t()}catch(e){p(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)(t6,{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)(t0,{label:"API Key",children:(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(t5,{value:r,onChange:o,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()||u,style:{padding:"6px 12px",background:u?"#16a34a":r.trim()?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:5,color:r.trim()||u?"#fff":"var(--text-dim)",cursor:l||!r.trim()||u?"not-allowed":"pointer",fontSize:12,fontWeight:600,flexShrink:0,display:"flex",alignItems:"center",gap:5},children:[u&&(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"})}),u?"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 rl({id:e,size:t}){let r=tY[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 rs({oauthProviders:e,apiKeyProviders:t,onSelectOAuth:r,onSelectApiKey:o,onAddCustom:l,onDiscover:s,onClose:a}){let[d,c]=(0,i.useState)(""),p=(0,i.useRef)(null);(0,i.useEffect)(()=>{setTimeout(()=>p.current?.focus(),30)},[]);let u=d.trim().toLowerCase(),h=e.filter(e=>!e.loggedIn&&(!u||e.name.toLowerCase().includes(u))),x=t.filter(e=>!e.configured&&(!u||e.displayName.toLowerCase().includes(u)||e.id.toLowerCase().includes(u))),g=!u||"custom".includes(u)||"openai-compatible".includes(u)||"anthropic-compatible".includes(u),f=!u||"discover".includes(u)||"base url".includes(u)||"model import".includes(u),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:p,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)(rl,{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:()=>{o(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)(rl,{id:e.id,size:28})]},e.id))]})})]})})}function ra({existingProviders:e,onImport:t,onClose:r}){let[o,l]=(0,i.useState)(""),[s,a]=(0,i.useState)(""),[d,c]=(0,i.useState)("custom-provider"),[p,u]=(0,i.useState)(new Set),[h,x]=(0,i.useState)({phase:"idle"}),g=(0,i.useCallback)(async()=>{let e=o.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}),u(new Set(r.piModels.map(e=>e.id)))}catch(e){x({phase:"error",message:e instanceof Error?e.message:String(e)})}}},[s,o,d,h.phase]),f="success"===h.phase?h:null,v=p.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)(t0,{label:"Base URL",children:(0,n.jsx)(t2,{value:o,onChange:l,placeholder:"https://api.example.com",mono:!0})}),(0,n.jsx)(t0,{label:"API Key",children:(0,n.jsx)(t5,{value:s,onChange:a,placeholder:"optional for local providers",mono:!0})}),(0,n.jsx)(t0,{label:"Provider name",children:(0,n.jsx)(t2,{value:d,onChange:c,placeholder:"provider-name",mono:!0})}),(0,n.jsx)("button",{onClick:g,disabled:!o.trim()||"loading"===h.phase,style:{height:31,padding:"0 14px",background:o.trim()&&"loading"!==h.phase?"var(--accent)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:5,color:o.trim()&&"loading"!==h.phase?"#fff":"var(--text-dim)",cursor:o.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(p.size===f.piModels.length)return void u(new Set);u(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:p.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],i=p.has(e.id);return(0,n.jsxs)("label",{style:{display:"grid",gridTemplateColumns:"24px minmax(0, 1fr) 90px 90px 90px 70px",gap:10,alignItems:"center",padding:"8px 16px",borderBottom:"1px solid rgba(127,127,127,0.12)",background:i?"var(--bg-subtle)":"transparent",cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:i,onChange:()=>{var t;return t=e.id,void u(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":""}),(0,n.jsx)("span",{style:{fontSize:10,color:e.input?.includes("image")?"var(--accent)":"var(--text-dim)"},children:e.input?.includes("image")?"image":""})]},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=o.trim().replace(/\/+$/,""),i=s.trim(),l=Object.entries(e).find(([,e])=>(e.baseUrl??"").replace(/\/+$/,"")===n&&(e.apiKey??"")===i),a=l?.[0]??d.trim(),c=e[a],u=new Map((c?.models??[]).map(e=>[e.id,e])),h=c?.api??tZ,x=0;for(let e of f.piModels)p.has(e.id)&&!u.has(e.id)&&(u.set(e.id,tQ(e,h)),x+=1);t(a,{...c??{},baseUrl:n,api:h,...i?{apiKey:i}:{},models:Array.from(u.values())},x),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 rd({onClose:e,embedded:t=!1}){let[r,o]=(0,i.useState)({providers:{}}),[l,s]=(0,i.useState)(!0),[a,d]=(0,i.useState)(!1),[c,p]=(0,i.useState)(null),[u,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(null),[m,y]=(0,i.useState)([]),[b,j]=(0,i.useState)([]),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(!1),T=(0,i.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>y(e.providers)).catch(()=>{})},[]),z=(0,i.useCallback)(()=>{fetch("/api/auth/all-providers").then(e=>e.json()).then(e=>j(e.providers)).catch(()=>{})},[]);(0,i.useEffect)(()=>{fetch("/api/models-config").then(e=>e.json()).then(e=>{let t=e.providers?e:{...e,providers:{}};o(t);let r=Object.keys(t.providers??{});r.length>0&&v({type:"provider",name:r[0]})}).catch(()=>o({providers:{}})).finally(()=>s(!1)),T(),z()},[T,z]);let I=(0,i.useCallback)(()=>{let e="new-provider",t=1;for(;r.providers?.[e];)e=`new-provider-${t++}`;o(t=>({...t,providers:{...t.providers??{},[e]:{api:"openai-completions"}}})),v({type:"provider",name:e})},[r.providers]),M=(0,i.useCallback)((e,t)=>{o(r=>({...r,providers:{...r.providers??{},[e]:t}}))},[]),W=(0,i.useCallback)((e,t)=>{o(r=>{let n=Object.entries(r.providers??{}),i=n.findIndex(([t])=>t===e);return -1===i?r:(n[i]=[t,n[i][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)},[]),L=(0,i.useCallback)(e=>{o(t=>{let r={...t.providers??{}};return delete r[e],{...t,providers:r}}),o(e=>{let t=Object.keys(e.providers??{});return v(t.length>0?{type:"provider",name:t[0]}:null),e})},[]),R=(0,i.useCallback)(e=>{o(t=>{let r=t.providers?.[e]??{},n=[...r.models??[],{id:""}];return{...t,providers:{...t.providers??{},[e]:{...r,models:n}}}}),o(t=>{let r=(t.providers?.[e]?.models?.length??1)-1;return v({type:"model",providerName:e,index:r}),t})},[]),E=(0,i.useCallback)((e,t,r)=>{o(n=>{let i=n.providers?.[e]??{},o=[...i.models??[]];return o[t]=r,{...n,providers:{...n.providers??{},[e]:{...i,models:o}}}})},[]),P=(0,i.useCallback)((e,t)=>{o(r=>{let n=r.providers?.[e]??{},i=[...n.models??[]];return i.splice(t,1),{...r,providers:{...r.providers??{},[e]:{...n,models:i.length?i:void 0}}}}),v({type:"provider",name:e})},[]),$=(0,i.useCallback)((e,t,r)=>{o(r=>({...r,providers:{...r.providers??{},[e]:t}})),v({type:"provider",name:e}),g(!1),p(null),h(`${r} model${1===r?"":"s"} imported. Click Save to write models.json.`)},[]),B=(0,i.useCallback)(async()=>{d(!0),p(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?p(t.error??`HTTP ${e.status}`):(g(!0),setTimeout(()=>g(!1),2e3))}catch(e){p(String(e))}finally{d(!1)}},[r]),D=Object.entries(r.providers??{}),N=m.filter(e=>e.loggedIn),A=b.filter(e=>e.configured),O=(()=>{if(!f)return null;if("oauth"===f.type){let e=m.find(e=>e.id===f.providerId);return e?(0,n.jsx)(ri,{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)(ro,{provider:e,onRefresh:z},e.id):null}if("provider"===f.type){let e=r.providers?.[f.name];return e?(0,n.jsx)(t7,{name:f.name,provider:e,onChange:e=>M(f.name,e),onRename:e=>W(f.name,e),onDelete:()=>L(f.name)},f.name):null}let e=r.providers?.[f.providerName],t=e?.models?.[f.index];return t?(0,n.jsx)(rn,{providerName:f.providerName,provider:e,model:t,onChange:e=>E(f.providerName,f.index,e),onDelete:()=>P(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:[N.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)(rl,{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)}),A.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)(rl,{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)}),(N.length>0||A.length>0)&&D.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…"}):D.map(([e,t])=>{let r=f?.type==="provider"&&f.name===e,i=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})]}),i.map((t,r)=>{let i=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:i?"var(--bg-selected)":"none"},onMouseEnter:e=>{i||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{i||(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(),R(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:O??(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}):u?(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",flex:1},children:u}):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)(rs,{oauthProviders:m,apiKeyProviders:b,onSelectOAuth:e=>v({type:"oauth",providerId:e}),onSelectApiKey:e=>v({type:"apikey",providerId:e}),onAddCustom:I,onDiscover:()=>C(!0),onClose:()=>w(!1)}),S&&(0,n.jsx)(ra,{existingProviders:r.providers??{},onImport:$,onClose:()=>C(!1)})]})}function rc(e){return e.replace(/^\/(?:Users|home)\/[^/]+/,"~")}function rp(e){let t=e.sourceInfo?.source,r=e.sourceInfo?.scope;return"user"===r||"user"===t?"global":"project"===r||"project"===t?"project":"path"}function ru({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 rh({skill:e,cwd:t,onToggle:r,toggling:i,saveError:o}){let l=rp(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 rc(e)}(e.filePath)}),(0,n.jsx)(ru,{enabled:s,loading:i,onToggle:()=>r(e)}),o&&(0,n.jsx)("span",{style:{fontSize:12,color:"#f87171",flexShrink:0},children:o})]}),(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 rx({cwd:e,onInstalled:t}){let[r,o]=(0,i.useState)(""),[l,s]=(0,i.useState)([]),[a,d]=(0,i.useState)(!1),[c,p]=(0,i.useState)(null),[u,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(null),[f,v]=(0,i.useState)(null),[m,y]=(0,i.useState)([]),[b,j]=(0,i.useState)(new Set),[k,w]=(0,i.useState)("global"),S=(0,i.useRef)(null),C=(0,i.useRef)(null);(0,i.useEffect)(()=>{S.current?.focus()},[]),(0,i.useEffect)(()=>()=>{C.current?.abort()},[]);let T=(0,i.useCallback)(async e=>{if(e.trim()){d(!0),p(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 p(r.error);s(r.results??[]),0===(r.results??[]).length&&p("No skills found")}catch(e){p(String(e))}finally{d(!1)}}},[]),z=(0,i.useCallback)(async r=>{let n=new AbortController;C.current=n,h(r),g(null),v("Starting installer"),y(["Starting installer"]);try{let i=await fetch("/api/skills/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({package:r,scope:k,cwd:e,stream:!0}),signal:n.signal});if(!i.ok||!i.body){let e=await i.json().catch(()=>null);g(e?.error??`HTTP ${i.status}`);return}let o=i.body.getReader(),l=new TextDecoder,s="",a=!1,d=e=>{"progress"===e.type?(e.stage&&v(e.stage),e.line&&y(t=>(t.at(-1)===e.line?t:[...t,e.line]).slice(-8))):"done"===e.type&&e.success?(a=!0,v("Installed"),y(e=>[...e,"Installed"].slice(-8))):"error"===e.type&&g(e.error??"Install failed")};for(;;){let{value:e,done:t}=await o.read(),r=(s+=l.decode(e??new Uint8Array,{stream:!t})).split("\n");for(let e of(s=r.pop()??"",r))e.trim()&&d(JSON.parse(e));if(t)break}s.trim()&&d(JSON.parse(s)),a&&(j(e=>new Set(e).add(r)),t())}catch(e){n.signal.aborted?(v("Canceled"),y(e=>[...e,"Canceled"].slice(-8))):g(String(e))}finally{C.current===n&&(C.current=null),h(null)}},[t,k,e]),I=(0,i.useCallback)(()=>{C.current?.abort()},[]),M="global"===k?"~/.pi/agent/skills/":`${rc(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:S,value:r,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"===e.key&&T(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:()=>T(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:()=>w(e),style:{padding:"3px 10px",border:"none",cursor:"pointer",background:k===e?"var(--bg-selected)":"none",color:k===e?"var(--text)":"var(--text-dim)",fontWeight:k===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:["→ ",M]})]}),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}),u&&(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",padding:10,display:"flex",flexDirection:"column",gap:8},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,n.jsx)("div",{style:{width:10,height:10,borderRadius:"50%",border:"2px solid var(--border)",borderTopColor:"var(--accent)",animation:"spin 0.8s linear infinite",flexShrink:0}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:f??"Installing"}),(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:u})]}),(0,n.jsx)("button",{onClick:I,style:{padding:"4px 9px",fontSize:12,borderRadius:5,border:"1px solid var(--border)",background:"none",color:"var(--text-muted)",cursor:"pointer",flexShrink:0},children:"Cancel"})]}),m.length>0&&(0,n.jsx)("div",{style:{maxHeight:120,overflow:"auto",fontFamily:"var(--font-mono)",fontSize:11,lineHeight:1.6,color:"var(--text-dim)",borderTop:"1px solid var(--border)",paddingTop:8},children:m.map((e,t)=>(0,n.jsx)("div",{children:e},`${t}-${e}`))})]})]}),l.length>0?(0,n.jsx)("div",{style:{flex:1,overflowY:"auto"},children:l.map(e=>{let t=b.has(e.package),r=u===e.package,i=e.package.indexOf("@"),o=i>-1?e.package.slice(0,i):e.package,l=i>-1?e.package.slice(i+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??o}),(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:o}),(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||null!==u||z(e.package)},disabled:t||null!==u,style:{flexShrink:0,padding:"5px 14px",fontSize:12,fontWeight:500,borderRadius:5,border:"1px solid var(--border)",cursor:r?"wait":t||null!==u?"not-allowed":"pointer",background:t?"rgba(34,197,94,0.1)":r?"rgba(59,130,246,0.08)":"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 rg({cwd:e,onClose:t,embedded:r=!1}){let[o,l]=(0,i.useState)([]),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[p,u]=(0,i.useState)(null),[h,x]=(0,i.useState)(new Set),[g,f]=(0,i.useState)(null),[v,m]=(0,i.useState)(!1),y=(0,i.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&&!p&&u(t[0].filePath)}).catch(e=>c(String(e))).finally(()=>a(!1))},[e,p]);(0,i.useEffect)(()=>{y()},[e]);let b=(0,i.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=o.find(e=>e.filePath===p)??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:rc(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===o.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=o.filter(e=>rp(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&&p===e.filePath,r=e.disableModelInvocation;return(0,n.jsxs)("div",{onClick:()=>{u(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)(rx,{cwd:e,onInstalled:()=>{y()}}):s?null:j?(0,n.jsx)(rh,{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 rf=[{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 rv(e){return e?e.replace(/^\/(?:Users|home)\/[^/]+/,"~"):""}function rm(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 ry(e){return{id:"",language:e,displayName:"",command:"python"===e?"python3":"R",argsText:JSON.stringify("python"===e?["-u"]:["--slave","--vanilla"]),envText:"{}"}}function rb(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 rj={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"},rk={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 rw({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 rS({cwd:e}){let[t,r]=(0,i.useState)("python"),[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[p,u]=(0,i.useState)(null),[h,x]=(0,i.useState)(null),[g,f]=(0,i.useState)([]),[v,m]=(0,i.useState)(null),[y,b]=(0,i.useState)("view"),[j,k]=(0,i.useState)(()=>ry("python")),[w,S]=(0,i.useState)(1728e5),[C,T]=(0,i.useState)("pdf"),[z,I]=(0,i.useState)(300),[M,W]=(0,i.useState)(800),[L,R]=(0,i.useState)(600),[E,P]=(0,i.useState)(!1),$=(0,i.useCallback)(async()=>{a(!0),u(null);try{let r=e?`?cwd=${encodeURIComponent(e)}`:"",n=await fetch(`/api/plot-kernels${r}`),i=await n.json();if(!n.ok||i.error)throw Error(i.error??`HTTP ${n.status}`);l(i),f([]),x(null),m(e=>{if(e&&i.kernels.some(t=>t.id===e))return e;let r=i.kernels.find(e=>e.language===t&&e.isEffective);return r?.id??i.kernels.find(e=>e.language===t)?.id??null})}catch(e){u(e instanceof Error?e.message:String(e))}finally{a(!1)}},[e,t]);(0,i.useEffect)(()=>{$()},[$]),(0,i.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),e||("string"==typeof t.settings?.saveFormat&&["pdf","png","svg"].includes(t.settings.saveFormat)&&T(t.settings.saveFormat),"number"==typeof t.settings?.saveDpi&&I(t.settings.saveDpi),"number"==typeof t.settings?.saveWidth&&W(t.settings.saveWidth),"number"==typeof t.settings?.saveHeight&&R(t.settings.saveHeight))}).catch(()=>{}),()=>{e=!0}},[]);let B=(0,i.useMemo)(()=>(o?.kernels??[]).filter(e=>e.language===t),[t,o?.kernels]),D=B.find(e=>e.id===v)??null;(0,i.useEffect)(()=>{if("new"===y)return void k(ry(t));let e=D??B.find(e=>e.isEffective)??B[0]??null;e?(v!==e.id&&m(e.id),k(rb(e)),b("view")):(m(null),k(ry(t)),b("new"))},[t,o?.kernels]);let N=(0,i.useCallback)(async(t,r)=>{c(r),u(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 u(e instanceof Error?e.message:String(e)),null}finally{c(null)}},[e]),A=(0,i.useCallback)(async e=>{let t=await N({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`:""}.`)},[N]),O=(0,i.useCallback)(async e=>{await N({action:"select",language:e.language,kernelId:e.id},"select")&&x(`Selected ${e.displayName} for this project.`)},[N]),H=(0,i.useCallback)(async e=>{await N({action:"setDefault",language:e.language,kernelId:e.id},"default")&&x(`Set ${e.displayName} as global default.`)},[N]),F=(0,i.useCallback)(async()=>{let e=j.id.trim();if(!e)return void u("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 N({action:"new"===y?"add":"edit",kernelId:e,kernel:t},"save"))return;m(e),b("view"),x("new"===y?"Kernel added.":"Kernel saved.")}catch(e){u(e instanceof Error?e.message:String(e))}},[j,y,N]),U=(0,i.useCallback)(async e=>{let r=await N({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,N]),_=()=>{b("new"),m(null),k(ry(t)),u(null),x(null)},K=(0,i.useCallback)(async e=>{S(e),P(!0),u(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(`Workbench idle timeout set to ${rm(r.settings.plotIdleTimeoutMs)}.`))}catch(e){S(w),u(e instanceof Error?e.message:String(e))}finally{P(!1)}},[w]),V=(0,i.useCallback)(async()=>{P(!0),u(null);try{let e=await fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{saveFormat:C,saveDpi:z,saveWidth:M,saveHeight:L}})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);x("Save defaults updated.")}catch(e){u(e instanceof Error?e.message:String(e))}finally{P(!1)}},[C,z,M,L]);return(0,n.jsxs)("div",{style:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{flexShrink:0,padding:"12px 16px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text)"},children:"Workbench Runtime"}),(0,n.jsx)("div",{style:{marginTop:4,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:"Manage the warm R/Python kernels used by Workbench sessions and iterative analysis turns."})]}),(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 i=t===e;return(0,n.jsx)("button",{type:"button",onClick:()=>r(e),style:{height:26,padding:"0 12px",border:"none",borderRadius:5,background:i?"var(--bg)":"transparent",color:i?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:i?600:500},children:"python"===e?"Python":"R"},e)})}),(0,n.jsxs)("button",{type:"button",onClick:()=>void A(t),disabled:!!d,style:{...rj,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 A("all"),disabled:!!d,style:{...rj,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:rf.map(e=>{let t=w===e.value;return(0,n.jsx)("button",{type:"button",onClick:()=>{t||K(e.value)},disabled:E,title:`Close inactive Workbench kernels after ${rm(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:E?"default":"pointer",fontSize:11,fontWeight:t?700:500,opacity:E?.65:1},children:e.label},e.label)})})]}),(0,n.jsxs)("button",{type:"button",onClick:_,style:{...rj,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"]})]}),(0,n.jsxs)("div",{style:{flexShrink:0,padding:"10px 16px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:700,color:"var(--text)"},children:"Save defaults"}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"Format"}),(0,n.jsx)("div",{style:{display:"flex",padding:2,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)"},children:["pdf","png","svg"].map(e=>{let t=C===e;return(0,n.jsx)("button",{type:"button",onClick:()=>T(e),style:{height:24,padding:"0 8px",border:"none",borderRadius:5,background:t?"var(--bg)":"transparent",color:t?"var(--accent)":"var(--text-muted)",cursor:"pointer",fontSize:11,fontWeight:t?700:500},children:e.toUpperCase()},e)})}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"DPI"}),(0,n.jsx)("input",{type:"number",value:z,onChange:e=>I(Number(e.target.value)||300),min:72,max:1200,style:{width:60,height:26,padding:"0 6px",fontSize:11,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)"}}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"W"}),(0,n.jsx)("input",{type:"number",value:M,onChange:e=>W(Number(e.target.value)||800),min:100,max:8e3,style:{width:65,height:26,padding:"0 6px",fontSize:11,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)"}}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"H"}),(0,n.jsx)("input",{type:"number",value:L,onChange:e=>R(Number(e.target.value)||600),min:100,max:8e3,style:{width:65,height:26,padding:"0 6px",fontSize:11,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)"}}),(0,n.jsx)("button",{type:"button",onClick:()=>void V(),disabled:E,style:{...rj,background:"var(--accent)",borderColor:"var(--accent)",color:"#fff",opacity:E?.6:1},children:E?"Saving...":"Save"})]}),(p||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:[p&&(0,n.jsx)("div",{style:{color:"#f87171"},children:p}),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:rv(o?.paths.global??"")})]}),e&&(0,n.jsxs)("div",{children:["Project: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:rv(o?.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===B.length?(0,n.jsx)("div",{style:{padding:"10px 8px",color:"var(--text-dim)",fontSize:12},children:"No kernels found"}):B.map(e=>{let t=v===e.id&&"new"!==y;return(0,n.jsxs)("button",{type:"button",onClick:()=>{m(e.id),b("view"),k(rb(e)),u(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()}(o?.scanCache?.lastScan)]})]}),(0,n.jsx)("div",{style:{flex:1,minWidth:0,minHeight:0,overflowY:"auto",padding:18},children:"view"===y&&D?(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:D.displayName}),D.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:D.id})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsx)(rw,{label:"Command",children:(0,n.jsx)("input",{readOnly:!0,value:D.command,style:{...rk,color:"var(--text-muted)"}})}),(0,n.jsx)(rw,{label:"Args",children:(0,n.jsx)("input",{readOnly:!0,value:JSON.stringify(D.args),style:{...rk,color:"var(--text-muted)"}})})]}),(0,n.jsx)(rw,{label:"Environment",children:(0,n.jsx)("textarea",{readOnly:!0,value:JSON.stringify(D.env,null,2),rows:5,style:{...rk,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 O(D),disabled:!e||"select"===d,style:{...rj,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 H(D),disabled:"default"===d,style:{...rj,opacity:"default"===d?.6:1},children:"Set default"}),(0,n.jsx)("button",{type:"button",onClick:()=>{b("edit"),m(D.id),k(rb(D)),u(null),x(null)},style:rj,children:"Edit"}),!D.id.startsWith("default-")&&(0,n.jsx)("button",{type:"button",onClick:()=>void U(D),disabled:"delete"===d,style:{...rj,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)(rw,{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:{...rk,color:"edit"===y?"var(--text-muted)":"var(--text)"}})}),(0,n.jsx)(rw,{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:rk})})]}),(0,n.jsx)(rw,{label:"Command",children:(0,n.jsx)("input",{value:j.command,onChange:e=>k(t=>({...t,command:e.target.value})),placeholder:"/usr/bin/python3",style:rk})}),(0,n.jsx)(rw,{label:"Args JSON",children:(0,n.jsx)("input",{value:j.argsText,onChange:e=>k(t=>({...t,argsText:e.target.value})),style:rk})}),(0,n.jsx)(rw,{label:"Env JSON",children:(0,n.jsx)("textarea",{value:j.envText,onChange:e=>k(t=>({...t,envText:e.target.value})),rows:6,style:{...rk,resize:"vertical"}})}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void F(),disabled:"save"===d,style:{...rj,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=D??B.find(e=>e.isEffective)??B[0]??null;e?(m(e.id),k(rb(e)),b("view")):_(),u(null)},style:rj,children:"Cancel"})]})]})})]})]})}function rC(e){if(!e)return"Never";let t=new Date(e),r=new Date().getTime()-t.getTime(),n=Math.floor(r/6e4),i=Math.floor(r/36e5),o=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:i<24?`${i}h ago`:o<7?`${o}d ago`:t.toLocaleDateString()}function rT(e){let t=e.split(/[\\/]/).filter(Boolean);return t.length<=3?e:`.../${t.slice(-3).join("/")}`}function rz(e){return e.lastAccessed??e.created??null}function rI({activeCwd:e,onSelectProject:t,onProjectsChanged:r}){let[o,l]=(0,i.useState)([]),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[p,u]=(0,i.useState)(""),[h,x]=(0,i.useState)(!1),[g,f]=(0,i.useState)(null),[v,m]=(0,i.useState)(null),[y,b]=(0,i.useState)(""),[j,k]=(0,i.useState)(!0),[w,S]=(0,i.useState)(null),[C,T]=(0,i.useState)(null),z=(0,i.useRef)(null),I=(0,i.useCallback)(async()=>{try{a(!0);let e=await fetch("/api/projects?includeHidden=1"),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,i.useEffect)(()=>{I()},[I]);let M=(0,i.useMemo)(()=>({projects:o.filter(e=>!e.hidden).length,archived:o.filter(e=>e.hidden).length,chats:o.reduce((e,t)=>e+t.chatCount,0)}),[o]),W=(0,i.useMemo)(()=>({pinnedCount:o.filter(e=>!e.hidden&&!0===e.pinned).length,hasManualOrder:o.some(e=>!e.hidden&&"number"==typeof e.sortOrder)}),[o]),L=(0,i.useMemo)(()=>o.filter(e=>!e.hidden),[o]),R=(0,i.useMemo)(()=>o.filter(e=>e.hidden),[o]);(0,i.useCallback)(async()=>{let e=p.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})}),i=await n.json();if(!n.ok||i.error)throw Error(i.error??`HTTP ${n.status}`);u(""),r?.(),t?.(e),I()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}}},[I,r,t,p]),(0,i.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})}),i=await n.json();if(!n.ok||i.error)throw Error(i.error??`HTTP ${n.status}`);u(""),x(!1),r?.(),t?.(e),I()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[I,r,t]);let E=(0,i.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(""),r?.(),await I()}catch(e){c(e instanceof Error?e.message:String(e)),I()}finally{f(null)}},[I,r,y]),P=(0,i.useCallback)(async n=>{let i=n.cwd,o=i===e,l=o?L.find(e=>e.cwd!==i)??null:null;if(c(null),o&&!l)return void c("Restore or add another active project before archiving the current project.");if(!o||!l||window.confirm(`Archive the current project "${n.displayName}" and switch to "${l.displayName}"?`)){f(`archive:${i}`),c(null);try{let e=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:i,hidden:!0})}),n=await e.json();if(!e.ok||n.error)throw Error(n.error??`HTTP ${e.status}`);o&&l&&t?t(l.cwd,{closeDialog:!1}):r?.(),await I()}catch(e){c(e instanceof Error?e.message:String(e)),I()}finally{f(null)}}},[e,I,r,t,L]),$=(0,i.useCallback)(async e=>{f(`restore:${e}`),c(null);try{let t=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,hidden:!1})}),n=await t.json();if(!t.ok||n.error)throw Error(n.error??`HTTP ${t.status}`);r?.(),await I()}catch(e){c(e instanceof Error?e.message:String(e)),I()}finally{f(null)}},[I,r]),B=(0,i.useCallback)(async(e,t)=>{f(`pin:${e}`),c(null);try{let n=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,pinned:t})}),i=await n.json();if(!n.ok||i.error)throw Error(i.error??`HTTP ${n.status}`);r?.(),await I()}catch(e){c(e instanceof Error?e.message:String(e)),I()}finally{f(null)}},[I,r]),D=(0,i.useCallback)(async e=>{f("reorder"),c(null);try{let t=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({order:e})}),n=await t.json();if(!t.ok||n.error)throw Error(n.error??`HTTP ${t.status}`);r?.(),await I()}catch(e){c(e instanceof Error?e.message:String(e)),I()}finally{f(null)}},[I,r]),N=(0,i.useCallback)((e,t)=>{if(!e||!t||e===t)return;let r=L.map(e=>e.cwd).filter(Boolean),n=r.indexOf(e),i=r.indexOf(t);if(-1===n||-1===i)return;let o=[...r];o.splice(n,1);let l=o.indexOf(t);o.splice(l,0,e),D(o)},[D,L]),A=(0,i.useCallback)(e=>{m(e.cwd),b(e.name??e.displayName),window.setTimeout(()=>z.current?.select(),0)},[]);return(0,n.jsx)("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:[M.projects," active / ",M.archived," archived / ",M.chats," chats"]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void I(),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.jsx)("div",{style:{fontSize:12,color:"var(--text-muted)"},children:"项目由 worker 节点配置文件定义,此处只读展示。"})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,padding:"10px 12px",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{minWidth:0,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:"Active projects sort by pinned, manual drag order, then project name. Archived projects stay out of the sidebar until restored."}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexShrink:0},children:[(0,n.jsx)("span",{style:{padding:"2px 7px",borderRadius:999,background:"var(--bg)",color:"var(--text-dim)",fontSize:11},children:W.hasManualOrder?"Manual order active":"Name order active"}),W.pinnedCount>0&&(0,n.jsxs)("span",{style:{padding:"2px 7px",borderRadius:999,background:"rgba(37,99,235,0.12)",color:"var(--accent)",fontSize:11},children:[W.pinnedCount," pinned"]})]})]}),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===L.length?(0,n.jsx)("div",{style:{padding:16,color:"var(--text-muted)",fontSize:12},children:"No projects yet."}):L.map(r=>{let i=r.cwd===e,o=v===r.cwd,l=rz(r);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)",borderTop:C===r.cwd?"2px solid var(--accent)":"2px solid transparent",background:i?"var(--bg-selected)":"var(--bg)",opacity:w===r.cwd?.55:1},onDragOver:e=>{w&&w!==r.cwd&&"reorder"!==g&&(e.preventDefault(),e.dataTransfer.dropEffect="move",T(r.cwd))},onDragLeave:()=>{C===r.cwd&&T(null)},onDrop:e=>{e.preventDefault();let t=e.dataTransfer.getData("text/project-cwd")||w;T(null),S(null),t&&N(t,r.cwd)},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[o?(0,n.jsx)("input",{ref:z,value:y,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"===e.key&&E(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.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("div",{style:{minWidth:0,color:"var(--text)",fontSize:13,fontWeight:i?750:650,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.displayName}),r.pinned&&(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--accent)",display:"flex",alignItems:"center"},title:"Pinned project",children:(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M5 2.5h6l-1.8 4v3.2l1.3 2.3H5.5l1.3-2.3V6.5L5 2.5Z"})})}),!r.exists&&(0,n.jsx)("span",{style:{flexShrink:0,color:"#f87171",fontSize:10},children:"missing"})]}),(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:rT(r.cwd)}),(0,n.jsxs)("div",{style:{marginTop:5,color:"var(--text-muted)",fontSize:11},children:[r.chatCount," chats / last ",rC(l)]})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6},children:o?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:g===`rename:${r.cwd}`,onClick:()=>void E(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:i?"var(--accent)":"var(--bg-panel)",color:i?"#fff":"var(--text-muted)",cursor:"pointer",fontSize:12},children:i?"Current":"Switch"}),(0,n.jsx)("button",{type:"button",disabled:g===`pin:${r.cwd}`,onClick:()=>void B(r.cwd,!0!==r.pinned),title:r.pinned?"Unpin project":"Pin project",style:{display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28,padding:0,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:r.pinned?"var(--accent)":"var(--text-muted)",cursor:g===`pin:${r.cwd}`?"wait":"pointer"},children:(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:r.pinned?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M5 2.5h6l-1.8 4v3.2l1.3 2.3H5.5l1.3-2.3V6.5L5 2.5Z"})})}),(0,n.jsx)("button",{type:"button",onClick:()=>A(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===`archive:${r.cwd}`,onClick:()=>void P(r),title:i&&L.length<=1?"Add or restore another project before archiving the current project":void 0,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:i?"Archive Current":"Archive"}),(0,n.jsx)("div",{role:"button",tabIndex:-1,draggable:!0,onDragStart:e=>{"reorder"!==g&&(S(r.cwd),e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/project-cwd",r.cwd))},onDragEnd:()=>{S(null),T(null)},title:"Drag to reorder",style:{display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-dim)",cursor:"reorder"===g?"wait":"grab",opacity:"reorder"===g?.65:1,flexShrink:0},children:(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"currentColor","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"3",cy:"2.5",r:"1"}),(0,n.jsx)("circle",{cx:"9",cy:"2.5",r:"1"}),(0,n.jsx)("circle",{cx:"3",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"9",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"3",cy:"9.5",r:"1"}),(0,n.jsx)("circle",{cx:"9",cy:"9.5",r:"1"})]})})]})})]},r.cwd)})}),R.length>0&&(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,overflow:"hidden",background:"var(--bg-panel)"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>k(e=>!e),"aria-expanded":j,style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,padding:"10px 12px",border:"none",borderBottom:j?"1px solid var(--border)":"none",background:"transparent",color:"var(--text)",cursor:"pointer",fontSize:12,fontWeight:650},children:[(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(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:{flexShrink:0,transform:j?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s ease"},"aria-hidden":"true",children:(0,n.jsx)("path",{d:"M3 2l3 3-3 3"})}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"Archived Projects"})]}),(0,n.jsx)("span",{style:{flexShrink:0,padding:"2px 7px",borderRadius:999,background:"var(--bg)",color:"var(--text-dim)",fontSize:11},children:R.length})]}),j&&R.map(e=>{let t=rz(e);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)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:650,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.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:e.cwd,children:rT(e.cwd)}),(0,n.jsxs)("div",{style:{marginTop:5,color:"var(--text-muted)",fontSize:11},children:[e.chatCount," chats / last ",rC(t)]})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6},children:(0,n.jsx)("button",{type:"button",disabled:g===`restore:${e.cwd}`,onClick:()=>void $(e.cwd),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Restore"})})]},e.cwd)})]})]})})}function rM({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 rW(){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 rL(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 rR({cwd:e,generativeUI:t,initialTab:r="projects",onGenerativeUIToggle:o,onClose:l,onModelsChanged:s,onProjectSelect:a,onProjectsChanged:d}){let[c,p]=(0,i.useState)(r);(0,i.useEffect)(()=>{p(r)},[r]),(0,i.useEffect)(()=>{let e=e=>{"Escape"===e.key&&l()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[l]);let u=[{id:"projects",label:"Project",description:e?"Overview and paths":"Add or select a project",icon:rL("projects")},{id:"models",label:"Models",description:"~/.pi/agent/models.json",icon:rL("models")},{id:"skills",label:"Skills",description:e?"Project and global skills":"Select a project first",disabled:!e,icon:rL("skills")},{id:"generative-ui",label:"Generative UI",description:t?"Enabled":"Disabled",icon:rL("generative-ui")},{id:"workbench-runtime",label:"Workbench Runtime",description:e?"Python / R runtime lifecycle":"Global runtime lifecycle",icon:rL("workbench-runtime")}],h=u.find(e=>e.id===c)??u[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)(rW,{})}),(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:u.map(e=>{let t=c===e.id;return(0,n.jsxs)("button",{type:"button",disabled:e.disabled,onClick:()=>p(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)(rI,{activeCwd:e,onSelectProject:a,onProjectsChanged:d}),"models"===c&&(0,n.jsx)(rd,{embedded:!0,onClose:()=>{s?.(),l()}}),"skills"===c&&e&&(0,n.jsx)(rg,{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)(rM,{checked:t,onChange:o})]}),(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."})]})]})]})}),"workbench-runtime"===c&&(0,n.jsx)(rS,{cwd:e})]})]})]})})}function rE(e){return e?e.replace(/^\/(?:Users|home)\/[^/]+/,"~"):""}function rP(e){return!Number.isFinite(e)||e<=0?"0.0G":`${(e/1024/1024/1024).toFixed(1)}G`}let r$={height:32,padding:"0 12px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12};function rB({cwd:e,runtime:t,runtimeError:r,busy:o=!1,onClose:l,onLaunch:s,onReleaseCurrentRuntime:a,onOpenSettings:d}){let[c,p]=(0,i.useState)("r"),[u,h]=(0,i.useState)(""),[x,g]=(0,i.useState)(""),[f,v]=(0,i.useState)(!1),[m,y]=(0,i.useState)([]),[b,j]=(0,i.useState)(""),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(null);(0,i.useEffect)(()=>{h(""),g(""),p("r"),v(!1)},[e]);let T=(0,i.useCallback)(async e=>{if(e){w(!0),C(null);try{let t=e.split("/").filter(Boolean).map(encodeURIComponent).join("/"),r=await fetch(`/api/files/${t}?type=list`);if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}let n=await r.json();y(n.entries),j(n.path)}catch(e){C(e instanceof Error?e.message:String(e)),y([])}finally{w(!1)}}},[]),z=(0,i.useCallback)(()=>{e&&(v(!0),T(e))},[e,T]),I=(0,i.useCallback)(e=>{T(b?`${b.replace(/\/+$/,"")}/${e}`:e)},[b,T]),M=(0,i.useCallback)(e=>{h(b?`${b.replace(/\/+$/,"")}/${e}`:e),v(!1)},[b]),W="r"===c?[".rds",".qs"]:"python"===c?[".h5ad"]:[];return(0,n.jsx)("div",{className:"settings-dialog-backdrop",onClick:e=>{e.target!==e.currentTarget||o||l()},children:(0,n.jsxs)("div",{style:{width:"min(720px, calc(100vw - 40px))",maxHeight:"min(760px, calc(100vh - 40px))",overflow:"auto",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 24px 80px rgba(0,0,0,0.28)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,padding:"18px 18px 14px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:18,fontWeight:700,color:"var(--text)"},children:"Workbench"}),(0,n.jsxs)("div",{style:{marginTop:6,fontSize:12,color:"var(--text-muted)",lineHeight:1.55},children:["Starts a dedicated top-level Workbench session in the current project.",e?` Project: ${rE(e)}`:""]})]}),(0,n.jsx)("button",{type:"button",onClick:l,disabled:o,style:{width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:o?"not-allowed":"pointer",fontSize:20,lineHeight:1,opacity:o?.5:1},children:"x"})]}),(0,n.jsxs)("div",{style:{padding:18,display:"grid",gap:18},children:[(0,n.jsxs)("section",{style:{display:"grid",gap:10},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Kernel"}),(0,n.jsx)("div",{style:{display:"flex",gap:8},children:[{id:"r",label:"R",desc:"Seurat, rds, qs, Bioconductor workflows"},{id:"python",label:"Python",desc:"AnnData, h5ad, pandas, scanpy workflows"}].map(e=>{let t=c===e.id;return(0,n.jsxs)("button",{type:"button",onClick:()=>p(e.id),style:{flex:1,textAlign:"left",padding:"12px 13px",borderRadius:10,border:`1px solid ${t?"rgba(37,99,235,0.45)":"var(--border)"}`,background:t?"var(--bg-selected)":"var(--bg-panel)",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer"},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700},children:e.label}),(0,n.jsx)("div",{style:{marginTop:4,fontSize:11,lineHeight:1.5},children:e.desc})]},e.id)})})]}),(0,n.jsxs)("section",{style:{display:"grid",gap:10},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Sources"}),(0,n.jsxs)("label",{style:{display:"grid",gap:6},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)"},children:"Primary object or dataset path"}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("input",{value:u,onChange:e=>h(e.target.value),placeholder:"r"===c?"e.g. ./data/sample.rds or ./objects/integrated.qs":"e.g. ./data/sample.h5ad",style:{flex:1,height:34,padding:"0 10px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",fontSize:12,fontFamily:"var(--font-mono)"}}),(0,n.jsx)("button",{type:"button",onClick:z,disabled:!e||o,title:"Browse project files",style:{...r$,whiteSpace:"nowrap",opacity:!e||o?.5:1,cursor:!e||o?"not-allowed":"pointer"},children:f?"Collapse":"Browse"})]})]}),f&&e&&(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",maxHeight:260,overflow:"auto",fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"6px 10px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>{v(!1)},style:{border:"none",background:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:11,padding:0},children:"✕"}),(0,n.jsx)("span",{style:{color:"var(--text-dim)"},children:"|"}),b?(()=>{let e=b.replace(/^\/+/,"").split("/"),t=[];for(let r=0;r<e.length;r++){let n="/"+e.slice(0,r+1).join("/");t.push({label:0===r?rE(n):e[r],dir:n})}return t.map((t,r)=>(0,n.jsxs)("span",{children:[r>0&&(0,n.jsx)("span",{style:{margin:"0 2px",color:"var(--text-dim)"},children:"/"}),(0,n.jsx)("button",{type:"button",onClick:()=>T(t.dir),style:{border:"none",background:"none",color:r===e.length-1?"var(--text)":"var(--text-muted)",cursor:r===e.length-1?"default":"pointer",fontSize:11,padding:"2px 1px",fontWeight:r===e.length-1?600:400},children:t.label})]},t.dir))})():(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:"Loading..."})]}),k?(0,n.jsx)("div",{style:{padding:"16px 10px",color:"var(--text-dim)",textAlign:"center"},children:"Loading..."}):S?(0,n.jsx)("div",{style:{padding:"16px 10px",color:"#f87171",textAlign:"center"},children:S}):0===m.length?(0,n.jsx)("div",{style:{padding:"16px 10px",color:"var(--text-dim)",textAlign:"center"},children:"empty directory"}):(0,n.jsxs)("div",{children:[b!==e&&(0,n.jsxs)("div",{onClick:()=>{T(b.replace(/\/+$/,"").split("/").slice(0,-1).join("/")||"/")},style:{display:"flex",alignItems:"center",gap:6,padding:"5px 10px",cursor:"pointer",color:"var(--text-muted)"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:[(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M10 3L5 8l5 5",stroke:"var(--text-dim)",strokeWidth:"1.5",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})}),(0,n.jsx)("span",{style:{fontSize:11},children:".."})]}),m.map(e=>{let t,r=!e.isDir&&(t=e.name.toLowerCase(),W.some(e=>t.endsWith(e)));return(0,n.jsxs)("div",{onClick:()=>{e.isDir?I(e.name):M(e.name)},style:{display:"flex",alignItems:"center",gap:6,padding:"5px 10px",cursor:(e.isDir,"pointer"),color:e.isDir?"var(--text)":r?"var(--accent)":"var(--text-muted)",fontWeight:r?600:400},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:[e.isDir?(0,n.jsx)("svg",{width:"14",height:"14",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:"var(--text-dim)",strokeWidth:"1",fill:"var(--text-dim)",fillOpacity:"0.1"})}):(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M3 2h7l3 3v9H3V2Z",stroke:r?"var(--accent)":"var(--text-dim)",strokeWidth:"1",fill:r?"var(--accent)":"var(--text-dim)",fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:r?"var(--accent)":"var(--text-dim)",strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]}),(0,n.jsx)("span",{style:{fontSize:12},children:e.name}),r&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",background:"rgba(37,99,235,0.1)",padding:"0 5px",borderRadius:3,lineHeight:"16px"},children:e.name.split(".").pop()})]},e.name)})]})]}),(0,n.jsxs)("label",{style:{display:"grid",gap:6,marginTop:4},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)"},children:"Notes or extra file hints"}),(0,n.jsx)("textarea",{value:x,onChange:e=>g(e.target.value),placeholder:"Optional: metadata table paths, desired comparison, object name hints, or initialization notes.",rows:5,style:{width:"100%",resize:"vertical",minHeight:96,padding:"10px",borderRadius:8,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",fontSize:12,lineHeight:1.55}})]})]}),(0,n.jsxs)("section",{style:{display:"grid",gap:10,padding:14,border:"1px solid var(--border)",borderRadius:10,background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Runtime"}),(0,n.jsxs)("div",{style:{display:"flex",gap:16,flexWrap:"wrap",fontSize:12,color:"var(--text-muted)"},children:[(0,n.jsxs)("span",{children:["Total memory ",rP(t.totalBytes)]}),(0,n.jsxs)("span",{children:["Current session ",rP(t.currentSessionBytes)]}),(0,n.jsxs)("span",{children:["Idle timeout ",t.idleTimeoutLabel]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[a&&(0,n.jsx)("button",{type:"button",onClick:a,style:r$,children:"Release current chat"}),d&&(0,n.jsx)("button",{type:"button",onClick:d,style:r$,children:"Runtime settings"})]}),r&&(0,n.jsx)("div",{style:{fontSize:12,color:"#f87171",lineHeight:1.5},children:r})]})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,padding:"0 18px 18px"},children:[(0,n.jsx)("button",{type:"button",onClick:l,disabled:o,style:r$,children:"Cancel"}),(0,n.jsx)("button",{type:"button",onClick:()=>void s({kernel:c,sourcePath:u.trim(),notes:x.trim()}),disabled:o||!e,style:{...r$,border:"1px solid rgba(37,99,235,0.45)",background:"rgba(37,99,235,0.12)",color:"var(--accent)",opacity:o||!e?.55:1,cursor:o||!e?"not-allowed":"pointer"},children:o?"Launching...":"Launch Workbench"})]})]})})}function rD({initialWidth:e,minWidth:t,maxWidth:r,storageKey:n,direction:o="right"}){let[l,s]=(0,i.useState)(e),[a,d]=(0,i.useState)(!1),c=(0,i.useRef)(e),p=(0,i.useCallback)(e=>{let i=Math.max(t,Math.min(r,e));s(i),c.current=i,document.documentElement.style.setProperty(n,`${i}px`)},[t,r,n]);(0,i.useEffect)(()=>{try{let e=localStorage.getItem(n);if(e){let n=parseInt(e,10);if(!isNaN(n)&&n>=t&&n<=r)return void p(n)}}catch{}p(c.current)},[n,t,r,p]);let u=(0,i.useCallback)(()=>{d(!0)},[]),h=(0,i.useCallback)(e=>{let t="left"===o?-1:1;p(c.current+e*t)},[p,o]);return{beginResize:u,endResize:(0,i.useCallback)(()=>{d(!1);try{localStorage.setItem(n,String(c.current))}catch{}},[n]),isResizing:a,resizeBy:h,width:l,widthRef:c}}let rN=new Set(["pdf","png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]);function rA(e){return!Number.isFinite(e)||e<=0?"0.0G":`${(e/1024/1024/1024).toFixed(1)}G`}function rO(e){let t=e.toLowerCase();return t.endsWith(".rds")||t.endsWith(".qs")}function rH(e){return e.toLowerCase().endsWith(".h5ad")}function rF(e){let t=(e.split(/[\\/]/).pop()??e).toLowerCase().split(".").pop()??"";return rN.has(t)}function rU(){let e=(0,o.useRouter)(),t=(0,o.useSearchParams)(),{isDark:r,toggleTheme:l}=(0,ts.D)(),s=function(){let[e,t]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let e=()=>t(window.innerWidth<=768);return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),e}(),[a,d]=(0,i.useState)(null),[c,p]=(0,i.useState)(null),[u,h]=(0,i.useState)(0),[x,g]=(0,i.useState)(0),[f,v]=(0,i.useState)(0),[m,b]=(0,i.useState)(0),[j,k]=(0,i.useState)(!1),[w,S]=(0,i.useState)("projects"),[C,T]=(0,i.useState)({generativeUI:!0,plotIdleTimeoutMs:1728e5}),[z,I]=(0,i.useState)(!0),M=rD({initialWidth:260,minWidth:180,maxWidth:500,storageKey:"--pi-sidebar-width"}),W=rD({initialWidth:500,minWidth:300,maxWidth:1200,storageKey:"--pi-right-panel-width",direction:"left"}),L=(0,i.useRef)(null),R=(0,i.useRef)(null),[E,P]=(0,i.useState)([]),[B,D]=(0,i.useState)(null),N=(0,i.useRef)(null),A=(0,i.useCallback)((e,t,r)=>{P(e),D(t),N.current=r},[]),O=(0,i.useCallback)(e=>{N.current?.(e)},[]),[H,F]=(0,i.useState)(null),U=(0,i.useRef)(null),[_,K]=(0,i.useState)(!1),[V,J]=(0,i.useState)(""),Y=(0,i.useRef)(null),q=(0,i.useRef)(!1),Z=(0,i.useCallback)(e=>{F(e)},[]);(0,i.useEffect)(()=>{K(!1)},[a?.id]);let G=(0,i.useCallback)(e=>e?e.name||e.firstMessage.slice(0,80)||e.id.slice(0,12):"",[]),X=(0,i.useCallback)(()=>{a&&(q.current=!1,J(a.name||G(a)),K(!0),setTimeout(()=>Y.current?.select(),0))},[G,a]),Q=(0,i.useCallback)(async()=>{if(q.current){q.current=!1,K(!1);return}if(!a)return void K(!1);let e=V.trim(),t=G(a);if(K(!1),e!==(a.name??"")&&(a.name||e!==t))try{(await fetch(`/api/sessions/${encodeURIComponent(a.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})).ok&&(d(t=>t&&t.id===a.id?{...t,name:e}:t),h(e=>e+1))}catch{}},[G,a,V]),ee=(0,i.useCallback)(e=>{"Enter"===e.key?(e.preventDefault(),Q()):"Escape"===e.key&&(q.current=!0,K(!1))},[Q]);(0,i.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(t=>{e||T(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 et=(0,i.useCallback)(()=>{let e=!C.generativeUI;T(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=>{T(t=>({...t,..."boolean"==typeof e.settings?.generativeUI?{generativeUI:e.settings.generativeUI}:{},..."number"==typeof e.settings?.plotIdleTimeoutMs?{plotIdleTimeoutMs:e.settings.plotIdleTimeoutMs}:{}}))}).catch(()=>T(e=>({...e,generativeUI:!e.generativeUI})))},[C.generativeUI]),[er,en]=(0,i.useState)(null),ei=(0,i.useCallback)(e=>{en(e)},[]),[eo,el]=(0,i.useState)(null),es=(0,i.useCallback)(e=>{el(e)},[]),[ea,ed]=(0,i.useState)(null),[ec,ep]=(0,i.useState)(null),[eu,eh]=(0,i.useState)(!1),[ex,eg]=(0,i.useState)(null),[ef,ev]=(0,i.useState)(!1),[em,ey]=(0,i.useState)(!1),eb=(0,i.useCallback)(e=>{ed(t=>t===e?null:e)},[]);(0,i.useEffect)(()=>{if(!ea||!R.current)return;let e=()=>{let e=R.current.getBoundingClientRect();ep({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe(R.current),()=>t.disconnect()},[ea]);let[ej,ek]=(0,i.useState)([]),[ew,eS]=(0,i.useState)("files"),[ez,eM]=(0,i.useState)(!1),[eL,eR]=(0,i.useState)(null),[eE,eP]=(0,i.useState)(0),[e$,eB]=(0,i.useState)([]),eD=(0,i.useCallback)(e=>{L.current?.insertText("`"+e+"`")},[]),[eN]=(0,i.useState)(()=>t.get("session")),[eA,eO]=(0,i.useState)(null),[eH,eF]=(0,i.useState)(()=>!t.get("session")),eU=(0,i.useRef)(!1),e_=(0,i.useCallback)(t=>{eO(t),eR(null),eh(!1),eg(null),t&&!eU.current&&(d(e=>e&&e.cwd!==t?null:e),p(e=>e&&e!==t?null:e),g(e=>e+1),v(e=>e+1),P([]),D(null),F(null),ed(null),e.replace("/",{scroll:!1}))},[e]),eK=(0,i.useCallback)((e,t)=>{e_(e),t?.closeDialog!==!1&&k(!1),h(e=>e+1)},[e_]),eV=(0,i.useCallback)((t,r=!1)=>{p(null),eO(t.cwd),d(t),eh(!1),eg(null),g(e=>e+1),F(null),eF(!0),r&&(eU.current=!0,setTimeout(()=>{eU.current=!1},0)),r||e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eJ=(0,i.useCallback)((t,r)=>{d(null),p(r),eO(r),eh(!1),eg(null),g(e=>e+1),P([]),D(null),F(null),ed(null),e.replace("/",{scroll:!1})},[e]),eY=(0,i.useCallback)(t=>{p(null),eO(t.cwd),d(t),eh(!1),eg(null),h(e=>e+1),e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1}),window.dispatchEvent(new CustomEvent("session-created"))},[e]),eq=(0,i.useCallback)(()=>{h(e=>e+1),v(e=>e+1)},[]),eZ=(0,i.useCallback)(t=>{h(e=>e+1),g(e=>e+1),p(null),d(e=>({...e??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:t})),e.replace(`?session=${encodeURIComponent(t)}`,{scroll:!1})},[e]),eG=(0,i.useCallback)(()=>{eF(!0)},[]),eX=(0,i.useCallback)(t=>{if(h(e=>e+1),a?.id===t){let t=a.cwd;d(null),p(t??null),eh(!1),eg(null),g(e=>e+1),P([]),D(null),F(null),ed(null),e.replace("/",{scroll:!1})}},[a,e]),eQ=a?.cwd??c??eA??null,e0=(0,i.useCallback)((e,t)=>{if(rO(e)||rO(t))return void eR({mode:"start",appType:"stexp",filePath:e,cwd:eQ,appId:null});if(rF(e)||rF(t)){let r=`preview:${e}`;eB(n=>{let i=n.find(e=>e.id===r),o=n.filter(e=>e.id!==r);return o.push(i?{...i,filePath:e,fileName:t}:{id:r,filePath:e,fileName:t}),o});return}let r=`file:${e}`;ek(n=>n.find(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:e}]),eS(r),eM(!0)},[eQ]),e1=(0,i.useCallback)((e,t)=>{(rH(e)||rH(t))&&eR({mode:"start",appType:"h5adexp",filePath:e,cwd:eQ,appId:null})},[eQ]),e2=(0,i.useCallback)(e=>{eg(e),ed(null),eh(!0)},[]),e5=(0,i.useCallback)(()=>{eh(!1),eg(null)},[]),e4=(0,i.useCallback)(()=>{eS("tools"),eM(!0),eP(e=>e+1)},[]),e3=(0,i.useCallback)(e=>{eR({mode:"existing",appType:e.appType,filePath:e.filePath,cwd:e.cwd,appId:e.id}),eP(e=>e+1)},[]),e8=(0,i.useCallback)(e=>{eP(e=>e+1),eR(t=>t&&(t.appId===e.id||t.appType===e.appType&&t.filePath===e.filePath&&t.cwd===e.cwd)?"stopped"===e.status||"error"===e.status?null:{mode:"existing",appType:e.appType,filePath:e.filePath,cwd:e.cwd,appId:e.id}:t)},[]),e6=(0,i.useCallback)(e=>{eB(t=>t.filter(t=>t.id!==e))},[]),e7=(0,i.useCallback)(e=>{eB(t=>{let r=t.findIndex(t=>t.id===e);if(r<0||r===t.length-1)return t;let n=[...t],[i]=n.splice(r,1);return n.push(i),n})},[]),e9=(0,i.useCallback)(e=>{"files"!==e&&(ek(t=>t.filter(t=>t.id!==e)),eS(t=>{if(t!==e)return t;let r=ej.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:"files"}))},[ej]),te=c??(null===a&&eA?eA:null),tt=null!==a||null!==te,tr=eH&&!tt,tn=[{id:"files",label:"Files",closable:!1,icon:"files"},{id:"tools",label:"Status",closable:!1,icon:"tools"},...ej],ti=ej.find(e=>e.id===ew)??null,tl=a?G(a):te?"New chat":"No session",ta=a?.cwd??te??eA??"",tc=ta?ta.replace(/\/+$/,"").split(/[\\/]/).filter(Boolean).pop()||ta:"",tu=ex??eQ,th=(0,i.useCallback)((e="projects")=>{S(e),k(!0)},[]),[tx,tg]=(0,i.useState)(null),[tv,tm]=(0,i.useState)(null),[ty,tb]=(0,i.useState)(null),tj=`${a?.id??""}|${eQ??""}`,tk=tx?.totalBytes??0,tS=tx?.currentSessionBytes??0,tC=(0,i.useCallback)(async()=>{let e=new URLSearchParams;eQ&&e.set("cwd",eQ),a?.id&&e.set("sessionId",a.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}`);tg(r),tm(null)}catch(e){tm(e instanceof Error?e.message:String(e))}},[a?.id,eQ]);(0,i.useEffect)(()=>{let e=!1,t=async()=>{await tC(),e||(r=window.setTimeout(t,eu?3e3:8e3))},r=window.setTimeout(t,0);return()=>{e=!0,window.clearTimeout(r)}},[tC,tj,eu]);let tT=(0,i.useCallback)(async()=>{if(a?.id&&!ty){tb("all"),tm(null);try{let e=await fetch("/api/plot-kernels/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:a.id})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);window.setTimeout(()=>{tC()},600)}catch(e){tm(e instanceof Error?e.message:String(e))}finally{tb(null)}}},[tC,ty,a?.id]),tz=(0,i.useCallback)(async t=>{let r;if(!tu||ef)return;ev(!0),tm(null);let n=new Date().toISOString(),i=`Workbench \xb7 ${"r"===t.kernel?"R":"Python"}`,o=(r=["Workbench session start.","",`Kernel: ${"r"===t.kernel?"R":"Python"}`],t.sourcePath?r.push(`Primary source: ${t.sourcePath}`):r.push("Primary source: none selected"),t.notes&&(r.push("Notes:"),r.push(t.notes)),r.push("",t.sourcePath?"Initialize this workbench for analysis. Prefer the warm runtime tools (`kernel_plot_run`, `kernel_plot_render`, `kernel_plot_artifacts`, `kernel_plot_stop`) for loading data, inspecting object structure, and generating figures or tables. Use `kernel_plot_render` for quick iterative plots that appear inline. Use `kernel_plot_run` when working with data already in warm memory or when saving final artifacts. First, verify the provided input path, load or inspect only that explicit source plus any files mentioned in Notes, and prepare the session for iterative analysis. Keep the first response concise and operational.":"Quick-start this workbench without loading data. Prefer the warm runtime tools (`kernel_plot_run`, `kernel_plot_render`, `kernel_plot_artifacts`, `kernel_plot_stop`) when the user later asks for analysis, plots, or saved artifacts. Do not search the project for `.rds`, `.qs`, `.h5ad`, or other dataset files unless the user explicitly asks. For now, only confirm the selected kernel/runtime is ready and ask what data or task to use next. Keep the first response concise and operational."),r.join("\n"));try{let r=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:tu,type:"prompt",message:o,toolNames:$("workbench"),sessionName:i,workbenchMeta:{sourcePath:t.sourcePath,kernel:t.kernel}})}),l=await r.json().catch(()=>({}));if(!r.ok||l.error||!l.sessionId)throw Error(l.error??`HTTP ${r.status}`);e5(),p(null),eO(tu),d({id:l.sessionId,path:"",cwd:tu,name:i,created:n,modified:n,messageCount:1,firstMessage:o}),P([]),D(null),F(null),ed(null),g(e=>e+1),h(e=>e+1),e.replace(`?session=${encodeURIComponent(l.sessionId)}`,{scroll:!1}),window.setTimeout(()=>{tC()},600)}catch(e){tm(e instanceof Error?e.message:String(e))}finally{ev(!1)}},[e5,tC,e,ef,tu]),tI=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(y,{selectedSessionId:a?.id??null,onSelectSession:eV,onNewSession:eJ,onNewWorkbench:e2,initialSessionId:eN,onInitialRestoreDone:eG,refreshKey:u,onSessionDeleted:eX,selectedCwd:a?.cwd??c??eA??null,onCwdChange:e_}),(0,n.jsx)("div",{style:{padding:"8px",flexShrink:0,borderTop:"1px solid var(--border)"},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:2,overflow:"hidden"},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"demo@openvibe.local"}),(0,n.jsx)("a",{href:"/login",style:{fontSize:10,color:"var(--text-muted)",textDecoration:"none"},onMouseEnter:e=>{e.currentTarget.style.color="var(--danger)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)"},children:"退出"})]}),(0,n.jsx)("button",{type:"button",onClick:()=>th("projects"),title:"Settings",style:{width:30,height:30,padding:0,background:"none",border:"none",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0},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:"14",height:"14",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"})]})})]})})]});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:()=>I(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!z,pointerEvents:z?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{className:`sidebar-container${z?" sidebar-open":" sidebar-closed"}`,style:{background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200,width:M.width,minWidth:M.width,transition:z||M.isResizing?"none":void 0},children:tI}),z&&(0,n.jsx)(tp,{side:"right",ariaLabel:"Resize sidebar",onResizeStart:M.beginResize,onResize:M.resizeBy,onResizeEnd:M.endResize}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:R,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:()=>I(e=>!e),title:z?"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:z?(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:_&&a?(0,n.jsx)("input",{ref:Y,value:V,onChange:e=>J(e.target.value),onKeyDown:ee,onBlur:()=>void Q(),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:tl,style:{minWidth:0,maxWidth:"min(420px, 36vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:tt?"var(--text)":"var(--text-muted)",fontSize:14,fontWeight:600,lineHeight:1.2},children:tl}),a&&(0,n.jsx)("button",{type:"button",className:"topbar-rename-button",onClick:X,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"})]})})]})}),tc&&(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:ta||tc,style:{minWidth:0,maxWidth:"min(280px, 24vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:12,lineHeight:1.2},children:tc})]})]}),tt&&!s&&(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)(tR,{tree:E,activeLeafId:B,onLeafChange:O,inline:!0,containerRef:R,open:"branches"===ea,onToggle:()=>eb("branches"),hasSession:!!a})}),(0,n.jsxs)("button",{ref:U,className:"topbar-system-button",onClick:()=>eb("system"),title:"System prompt","aria-label":"System prompt",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"system"===ea?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${"system"===ea?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:"system"===ea?"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"===ea?"var(--text)":"var(--text-muted)",e.currentTarget.style.background="system"===ea?"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:H?"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:()=>{ed(null),e4()},title:tk>0?`Open Workbench runtime \xb7 ${rA(tk)}`:"Open Workbench runtime status","aria-label":tk>0?`Open Workbench runtime \xb7 ${rA(tk)}`:"Open Workbench runtime status",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:eu?"var(--bg-selected)":tk>0||em?"rgba(37,99,235,0.08)":"var(--bg-panel)",border:`1px solid ${eu||tk>0||em?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:tk>0||em?"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=tk>0||em?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=tk>0||em?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=eu?"var(--bg-selected)":tk>0||em?"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:"Workbench"}),tk>0&&(0,n.jsx)("span",{className:"topbar-plot-memory",children:rA(tk)})]})]}),tt&&s&&(0,n.jsxs)("button",{type:"button",className:"topbar-plot-button",onClick:()=>{e4()},title:tk>0?`Open Workbench runtime \xb7 ${rA(tk)}`:"Open Workbench runtime status","aria-label":tk>0?`Open Workbench runtime \xb7 ${rA(tk)}`:"Open Workbench runtime status",style:{display:"flex",alignItems:"center",gap:4,height:28,padding:"0 7px",flexShrink:0,background:eu?"var(--bg-selected)":tk>0||em?"rgba(37,99,235,0.08)":"var(--bg-panel)",border:`1px solid ${eu||tk>0||em?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:tk>0||em?"var(--accent)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},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:"WB"}),tk>0&&(0,n.jsx)("span",{className:"topbar-plot-memory",children:rA(tk)})]}),tt&&(er||eo)&&(()=>{let e=er?.tokens,t=er?.cost??0,r=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),i=t>0?t>=.01?`$${t.toFixed(2)}`:"<$0.01":null,o="var(--text-muted)",l=null;if(eo?.contextWindow){let e=eo.percent;null!==e&&e>90?o="#ef4444":null!==e&&e>70&&(o="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${r(eo.contextWindow)}`:`? / ${r(eo.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)}`)),eo?.contextWindow){let e=eo.percent;s.push(`context: ${null!==e?e.toFixed(1)+"%":"unknown"} of ${eo.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)]}),i&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500},children:i}),l&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:o},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:et,title:`生成式 UI: ${C.generativeUI?"on":"off"}`,"aria-label":`生成式 UI: ${C.generativeUI?"on":"off"}`,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:C.generativeUI?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${C.generativeUI?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:C.generativeUI?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=C.generativeUI?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=C.generativeUI?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=C.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:()=>eM(e=>!e),title:ez?"Hide right panel":"Show right panel","aria-label":ez?"Hide right panel":"Show right panel",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:ez?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${ez?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:ez?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=ez?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=ez?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=ez?"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"})]})}),ea&&ec&&(0,n.jsx)("div",{style:{position:"fixed",top:ec.top,left:ec.left,width:ec.width,zIndex:500},children:"system"===ea&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:H?(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:H}):""===H?(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"})})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",position:"relative"},children:tt?(0,n.jsx)(eC,{session:a,newSessionCwd:te,onAgentEnd:eq,onSessionCreated:eY,onSessionForked:eZ,modelsRefreshKey:m,chatInputRef:L,onBranchDataChange:A,onSystemPromptChange:Z,onSessionStatsChange:ei,onContextUsageChange:es,onToolPresetActive:ey,generativeUI:C.generativeUI},x):tr?eA?(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})]}),ez&&(0,n.jsx)(tp,{side:"left",ariaLabel:"Resize right panel",onResizeStart:W.beginResize,onResize:W.resizeBy,onResizeEnd:W.endResize}),(0,n.jsxs)("div",{className:`right-panel-container${ez?" right-panel-open":" right-panel-closed"}`,style:{display:ez?"flex":"none",flexDirection:"column",borderLeft:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,width:W.width,minWidth:W.width,transition:W.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:()=>eM(!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)(tM,{tabs:tn,activeTabId:ew,onSelectTab:eS,onCloseTab:e9})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:"files"===ew?(0,n.jsx)(to,{cwd:eA??a?.cwd??c??null,refreshKey:f,onOpenFile:e0,onExploreFile:e1,onAtMention:eD}):"tools"===ew?(0,n.jsx)(tw,{refreshKey:eE,visibleAppId:eL?.appId??null,cwd:eA??a?.cwd??c??null,onOpenApp:e3,onAppChanged:e8}):ti?.filePath?ti.filePath.startsWith("__")?(0,n.jsx)(td,{filePath:ti.filePath}):(0,n.jsx)(eI,{filePath:ti.filePath,children:(0,n.jsx)(eT.h,{filePath:ti.filePath,cwd:eA??void 0,onOpenFile:e0})}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),j&&(0,n.jsx)(rR,{cwd:eQ,generativeUI:C.generativeUI,initialTab:w,onGenerativeUIToggle:et,onModelsChanged:()=>b(e=>e+1),onProjectSelect:eK,onProjectsChanged:()=>h(e=>e+1),onClose:()=>{k(!1),b(e=>e+1)}}),eu&&(0,n.jsx)(rB,{cwd:tu,runtime:{totalBytes:tk,currentSessionBytes:tS,idleTimeoutLabel: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`}(C.plotIdleTimeoutMs)},runtimeError:tv,busy:ef,onClose:e5,onLaunch:e=>tz(e),onReleaseCurrentRuntime:a?.id&&a.cwd===tu?()=>{tT()}:void 0,onOpenSettings:()=>th("workbench-runtime")}),(0,n.jsx)(tf,{appType:eL?.appType??"stexp",filePath:eL?.filePath??null,cwd:eL?.cwd??null,appId:eL?.appId??null,sessionId:a?.id??null,onClose:()=>eR(null),onAppChanged:e8,onOpenTools:e4}),e$.map((e,t)=>(0,n.jsx)(eW,{id:e.id,filePath:e.filePath,fileName:e.fileName,cwd:eA??a?.cwd??c??void 0,active:t===e$.length-1,stackIndex:t,zIndex:700+t,onClose:e6,onFocus:e7,onOpenFile:e0},e.id))]})}},43322:(e,t,r)=>{Promise.resolve().then(r.bind(r,11631))},73321:(e,t,r)=>{"use strict";var n=r(74645);r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})}},e=>{e.O(0,[7330,6079,2941,2995,8194,9901,8441,3794,7358],()=>e(e.s=43322)),_N_E=e.O()}]);
27
+ ${i}`:"",l={role:"user",content:o,timestamp:Date.now()};eN(l),y(e=>[...e,l]);let s=t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType}));try{await eh(n,{type:"follow_up",message:o,...s?.length?{images:s}:{}})}catch(e){eH(l),console.error("Failed to follow up:",e)}},[eA,eH,eN]),e1=(0,i.useCallback)(async()=>{let e=ew.current;if(e)try{await eh(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),e2=(0,i.useCallback)(async e=>{if(G(e),"auto"===e)return;let t=ew.current;if(t)try{await eh(t,{type:"set_thinking_level",level:e})}catch(e){console.error("Failed to set thinking level:",e)}},[]),e5=(0,i.useCallback)(async e=>{eP(e);let t=D(e,J),r=ew.current;if(r)try{await eh(r,{type:"set_tools",toolNames:t})}catch(e){console.error("Failed to set tools:",e)}},[J,eP]),e4=(0,i.useCallback)(async e=>{e$(e);let t=D(K,e),r=ew.current;if(r)try{await eh(r,{type:"set_tools",toolNames:t})}catch(e){console.error("Failed to set memory tools:",e)}},[e$,K]),e3=(0,i.useCallback)((e="smooth")=>{eM.current?.scrollIntoView({behavior:e})},[]),e8=(0,i.useCallback)(()=>{let e=eW.current,t=ez.current;if(!e||!t)return;let r=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop;e.scrollTo({top:r-16,behavior:"smooth"})},[]);return(0,i.useEffect)(()=>(t&&(ew.current=t.id,(async()=>{let e=await eF(t.id,!0,!0);ew.current===t.id&&(await e_(t.id),e?.running&&(T(!0),eb({kind:"waiting_model"}),S({type:"start"}),eK(t.id,{replay:!0})),e?.state&&(void 0!==e.state.isCompacting&&ec(e.state.isCompacting),void 0!==e.state.contextUsage&&ee(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&er(e.state.systemPrompt??null),void 0!==e.state.thinkingLevel&&G(e.state.thinkingLevel??"auto")))})()),()=>{ek.current?.close(),ek.current=null}),[eK,eF,e_,a,d,t]),(0,i.useEffect)(()=>{let e=ew.current;if(!e)return;let t=window.setInterval(()=>{eS.current||eF(e)},15e3);return()=>window.clearInterval(t)},[eF]),(0,i.useEffect)(()=>{d?.(et)},[et,d]),(0,i.useEffect)(()=>{a&&a(u?.tree??[],v,eG)},[u?.tree,v,eG,a]),(0,i.useEffect)(()=>{b.length>0&&(eI.current?(eI.current=!1,eT.current=!0,e8()):eT.current?eS.current||e3("smooth"):(eT.current=!0,e3("instant")))},[b.length,C,e3,e8]),(0,i.useEffect)(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{if($(e.models),e.thinkingLevels&&H(e.thinkingLevels),e.thinkingLevelMaps&&F(e.thinkingLevelMaps),e.modelList&&(A(e.modelList),c&&e.modelList.length>0)){let t=e.defaultModel,r=t&&e.modelList.find(e=>e.id===t.modelId&&e.provider===t.provider);eE(r?{provider:r.provider,modelId:r.id}:{provider:e.modelList[0].provider,modelId:e.modelList[0].id})}}).catch(()=>{})},[c,s,eE]),(0,i.useEffect)(()=>{if(!eu)return;let e=setTimeout(()=>ev(null),3e3);return()=>clearTimeout(e)},[eu]),{data:u,loading:h,error:g,activeLeafId:v,messages:b,entryIds:j,streamState:w,agentRunning:C,modelNames:M,modelList:B,modelThinkingLevels:N,modelThinkingLevelMaps:O,newSessionModel:U,toolPreset:K,memoryTools:J,thinkingLevel:q,retryInfo:Z,contextUsage:Q,systemPrompt:et,forkingEntryId:en,isCompacting:ed,compactError:eu,currentModel:eD,displayModel:eB,sessionStats:eO,agentPhase:em,agentError:ey,isNew:c,sessionIdRef:ew,eventSourceRef:ek,messagesEndRef:eM,scrollContainerRef:eW,lastUserMsgRef:ez,pendingScrollToUserRef:eI,initialScrollDoneRef:eT,handleSend:eV,handleAbort:eJ,handleFork:eY,handleNavigate:eq,handleModelChange:eZ,handleCompact:eX,handleSteer:eQ,handleFollowUp:e0,handleAbortCompaction:e1,handleToolPresetChange:e5,handleMemoryToolsChange:e4,handleThinkingLevelChange:e2,loadTools:e_,setActiveLeafId:m,setData:p,setMessages:y,dispatch:S,setAgentRunning:T,setForkingEntryId:ei,handleAgentEventRef:eC}}({session:e,newSessionCwd:t,onAgentEnd:r,onSessionCreated:o,onSessionForked:l,modelsRefreshKey:s,onBranchDataChange:c,onSystemPromptChange:u}),{soundEnabled:eD,onSoundToggle:eB,playDoneSound:eA}=function(){let[e,t]=(0,i.useState)(()=>{let e=localStorage.getItem("pi-sound-enabled");return null===e||"true"===e}),r=(0,i.useRef)(e);return(0,i.useEffect)(()=>{r.current=e},[e]),{soundEnabled:e,onSoundToggle:(0,i.useCallback)(()=>{t(e=>{let t=!e;return localStorage.setItem("pi-sound-enabled",String(t)),t})},[]),playDoneSound:(0,i.useCallback)(()=>{if(r.current)try{let e=new AudioContext,t=e.currentTime;[523.25,659.25].forEach((r,n)=>{let i=e.createOscillator(),o=e.createGain();i.connect(o),o.connect(e.destination),i.type="sine",i.frequency.value=r;let l=t+.18*n;o.gain.setValueAtTime(0,l),o.gain.linearRampToValueAtTime(.18,l+.02),o.gain.exponentialRampToValueAtTime(.001,l+.45),i.start(l),i.stop(l+.45)}),setTimeout(()=>e.close(),1200)}catch{}},[]),soundEnabledRef:r}}(),eN=(0,i.useRef)(eA);eN.current=eA;let eH=(0,i.useRef)(eD);eH.current=eD;let eO=e$.current;(0,i.useEffect)(()=>{e$.current=e=>{"agent_start"===e.type&&b(Date.now()),"agent_end"===e.type&&b(null),"agent_end"===e.type&&eH.current&&eN.current(),eO?.(e)}},[eO,e$]);let eF=et?`${et.tokens.input}|${et.tokens.output}|${et.tokens.cacheRead}|${et.tokens.cacheWrite}|${et.cost??0}`:null,eU=(0,i.useRef)(et);eU.current=et,(0,i.useEffect)(()=>{p?.(eU.current)},[eF,p]),(0,i.useEffect)(()=>()=>{p?.(null)},[p]),(0,i.useEffect)(()=>(x?.("workbench"===_),()=>{x?.(!1)}),[_,x]);let e_=Y?`${Y.percent??"null"}|${Y.contextWindow}|${Y.tokens??"null"}`:null,eK=(0,i.useRef)(Y);eK.current=Y,(0,i.useEffect)(()=>{h?.(eK.current)},[e_,h]),(0,i.useEffect)(()=>()=>{h?.(null)},[h]);let{isDragOver:eV,handleDragEnter:eJ,handleDragOver:eY,handleDragLeave:eq,handleDrop:eG}=function(e){let[t,r]=(0,i.useState)(!1),n=(0,i.useRef)(0),o=(0,i.useCallback)(e=>{Array.from(e.dataTransfer.items).some(em)&&(e.preventDefault(),n.current+=1,r(!0))},[]),l=(0,i.useCallback)(e=>{Array.from(e.dataTransfer.items).some(em)&&e.preventDefault()},[]);return{isDragOver:t,handleDragEnter:o,handleDragOver:l,handleDragLeave:(0,i.useCallback)(()=>{n.current-=1,n.current<=0&&(n.current=0,r(!1))},[]),handleDrop:(0,i.useCallback)(t=>{t.preventDefault(),n.current=0,r(!1),e(Array.from(t.dataTransfer.files))},[e])}}((0,i.useCallback)(e=>{a?.current?.addFiles(e)},[a])),[eZ,eX]=(0,i.useState)(null);(0,i.useEffect)(()=>{if(!ei)return;let e=!1;return fetch("/api/version").then(e=>e.ok?e.json():null).then(t=>{!e&&t?.updateAvailable&&eX(t)}).catch(()=>{}),()=>{e=!0}},[ei]);let eQ=$.filter(e=>"user"===e.role||"assistant"===e.role),e0=(f=eQ.length,(v=(0,i.useRef)([])).current=Array(f).fill(null).map((e,t)=>v.current[t]??null),v),e1=(0,i.useMemo)(()=>{let e=new Map;for(let t of $)"toolResult"===t.role&&e.set(t.toolCallId,t);return e},[$]),e2=ei&&0===$.length&&!A.isStreaming&&!N,e5=S?.info?.cwd??e?.cwd??t??null,e4=function(e){if(!e)return null;let t=e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean);return t[t.length-1]||e}(e5),e3=function(e=768){let[t,r]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t=window.matchMedia(`(max-width: ${e-1}px)`),n=()=>r(t.matches);return(n(),"function"==typeof t.addEventListener)?(t.addEventListener("change",n),()=>t.removeEventListener("change",n)):(t.addListener(n),()=>t.removeListener(n))},[e]),t}(),[e8,e6]=(0,i.useState)(!1),[e7,e9]=(0,i.useState)(!1),te=eo($),tt=te.filter(e=>"running"===e.status).length;(0,i.useEffect)(()=>{0===te.length&&e8&&e6(!1)},[te.length,e8]),(0,i.useEffect)(()=>{e3&&e8&&e6(!1)},[e3,e8]),(0,i.useEffect)(()=>{e9(!1)},[e?.id]);let tr=(0,i.useCallback)(()=>{e?.id&&!N&&(async()=>{await eR("workbench");let e=S?.sessionMeta;if(e?.initialSourcePath&&e.initialKernel){let t=`Resume this Workbench session. Reload only the initial data file \`${e.initialSourcePath}\` using the ${e.initialKernel.toUpperCase()} runtime. Do not rerun previous analyses or load extra files unless I ask. Use the chat history only as context for what to do next.`;await ec(t)}})()},[N,S?.sessionMeta,ec,eR,e?.id]),tn=Q?F[`${Q.provider}:${Q.modelId}`]??null:null,ti=Q?U[`${Q.provider}:${Q.modelId}`]??null:null,to=S?.sessionMeta?.sessionKind??null,tl=e?.id??t??"new-chat",ts=(0,i.useMemo)(()=>(function(e){let t=[];for(let r=e.length-1;r>=0;r-=1){let n=e[r];if("user"!==n.role)continue;let i=n.text.trim();i&&t.push(i)}return t})(eQ.map(e=>({role:e.role,text:"string"==typeof e.content?e.content:""}))),[eQ]),ta=(0,i.useCallback)(async(e,t,r)=>{"/plan"===e.trim()||e.trim().startsWith("/plan ")?j(e=>!e):await ec(e,t,r)},[ec]),td=(0,n.jsx)(X,{ref:a,onSend:ta,onAbort:ev,onSteer:N?eM:void 0,onFollowUp:N?eW:void 0,isStreaming:N,model:Q,modelNames:H,modelList:O,onModelChange:ez,onCompact:e||ei?eI:void 0,onAbortCompaction:eL,isCompacting:G,compactError:Z,toolPreset:_,sessionKind:to,onToolPresetChange:e||ei?eR:void 0,memoryTools:K,onMemoryToolsChange:e||ei?eE:void 0,thinkingLevel:V,onThinkingLevelChange:e||ei?eP:void 0,availableThinkingLevels:tn,thinkingLevelMap:ti,retryInfo:J,soundEnabled:eD,onSoundToggle:eB,cornerBadge:e2?(0,n.jsx)(eS,{status:eZ}):void 0,promptHistory:ts,sessionHistoryKey:tl});(0,i.useEffect)(()=>{if(!y)return void w([]);let e=[...$].reverse().find(e=>"assistant"===e.role);if(!e||!Array.isArray(e.content))return void w([]);let t=e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n");if(!t)return void w([]);let r=[];for(let e of t.matchAll(/^\s*(\d+)[.)]\s+\*{0,2}([^*\n]+)/gm)){let t=e[2].trim().replace(/\*{1,2}$/,"").trim().replace(/\s+/g," ");t.length>3&&r.push({id:`task-${r.length}`,step:t.slice(0,80),status:"pending"})}w(r)},[$,y]);let tc=(0,i.useCallback)(e=>{N?a?.current?.insertText(e):ec(e)},[N,a,ec]);return C?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:"Loading session..."}):M?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:M}):(0,n.jsxs)("div",{className:"relative flex h-full flex-col overflow-hidden",onDragEnter:eJ,onDragOver:eY,onDragLeave:eq,onDrop:eG,children:[eV&&(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"})]})]})]}),!e7&&(0,n.jsx)(eu,{sessionKind:to,toolPreset:_,initialSourcePath:S?.sessionMeta?.initialSourcePath??null,initialKernel:S?.sessionMeta?.initialKernel??null,isNew:ei,isStreaming:N,onResume:tr,onDismiss:()=>e9(!0)}),e2?(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",flexDirection:"column",alignItems:"stretch",justifyContent:"flex-start",gap:10,marginLeft:16,marginRight:16,fontFamily:"var(--font-mono)"},children:[e4&&(0,n.jsxs)("div",{style:{padding:e3?"7px 9px":"9px 12px",border:"1px solid var(--border)",borderRadius:e3?9:10,background:"linear-gradient(180deg, var(--bg-panel), rgba(127,127,127,0.03))",minWidth:0,display:"flex",alignItems:"flex-start",gap:e3?8:10,boxShadow:e3?"0 2px 10px rgba(0,0,0,0.04)":"none"},children:[(0,n.jsx)("div",{"aria-hidden":!0,style:{flex:"0 0 auto",width:e3?18:20,height:e3?18:20,borderRadius:6,marginTop:1,background:"rgba(37,99,235,0.10)",border:"1px solid rgba(37,99,235,0.20)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--accent)"},children:(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M3 7.5 12 4l9 3.5-9 3.5-9-3.5Z"}),(0,n.jsx)("path",{d:"M7 10v4.5c0 .8 2.2 2 5 2s5-1.2 5-2V10"})]})}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontSize:9,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:2},children:"Current Project"}),(0,n.jsx)("div",{style:{fontSize:e3?12.5:14,color:"var(--text)",fontWeight:700,lineHeight:1.3,wordBreak:"break-word"},children:e4}),e5&&(0,n.jsx)("div",{title:e5,style:{fontSize:10.5,color:"var(--text-dim)",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e5})]})]}),(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:d}),(0,n.jsx)("span",{style:{fontSize:14,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:(0,n.jsx)(ew,{phrases:ek})})]})]}),td]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:ea,className:"flex-1 overflow-y-auto pt-4 [scrollbar-width:none]",children:(0,n.jsxs)("div",{className:"mx-auto max-w-[820px] px-4",style:e3?{paddingBottom:"calc(env(safe-area-inset-bottom, 0px) + 128px)"}:void 0,children:[(0,n.jsx)(ej,{goal:S?.sessionMeta?.goal??null,planTasks:k,isRunning:N}),(()=>{let r=-1;for(let e=$.length-1;e>=0;e--)if("user"===$[e].role){r=e;break}let i=0;return $.map((o,l)=>{let s="user"===o.role&&l>0&&"assistant"===$[l-1].role?B[l-1]:void 0,d="user"===o.role||"assistant"===o.role,c=d?i++:-1,u=!1;if("assistant"===o.role){u=!0;for(let e=l+1;e<$.length;e++){let t=$[e].role;if("user"===t)break;if("assistant"===t){u=!1;break}}u&&A.isStreaming&&l===$.length-1&&(u=!1)}let p=(0,n.jsx)(T.D,{message:o,toolResults:e1,modelNames:H,entryId:B[l],onFork:N||ei||0===l&&"user"===o.role?void 0:ey,forking:q===B[l],onNavigate:N?void 0:eT,prevAssistantEntryId:N?void 0:s,onEditContent:e=>a?.current?.insertIfEmpty(e),onSendMessage:tc,showTimestamp:u,prevTimestamp:l>0?$[l-1].timestamp:void 0,renderVisualCodeBlocks:!!g,cwd:S?.info?.cwd??e?.cwd??t??void 0},l);return d?(0,n.jsx)("div",{ref:e=>{e0.current[c]=e,l===r&&(ed.current=e)},children:p},l):p})})(),N&&(0,n.jsx)(eb,{agentPhase:er,startedAt:m}),A.isStreaming&&A.streamingMessage&&(0,n.jsx)(T.D,{message:A.streamingMessage,isStreaming:!0,toolResults:e1,modelNames:H,onSendMessage:tc,renderVisualCodeBlocks:!!g,cwd:S?.info?.cwd??e?.cwd??t??void 0}),N&&!A.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..."}(er)})}),S?.info?.cwd&&!1===S.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:S.info.cwd})]}),en&&(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:en}),N&&(0,n.jsx)("div",{style:{height:ea.current?ea.current.clientHeight:"80vh"}}),(0,n.jsx)("div",{ref:es})]})}),!e3&&(0,n.jsx)(ee,{messages:$,streamingMessage:A.streamingMessage,scrollContainer:ea,messageRefs:e0}),te.length>0&&(0,n.jsxs)("button",{onClick:()=>e6(e=>!e),title:e8?"Hide subagent runs":"Show subagent runs",style:{position:"absolute",right:e3?8:e8?260:40,top:8,minWidth:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:tt>0||te.length>1?"0 8px":0,background:e8?"var(--bg-selected)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:e8?"var(--accent)":"var(--text-dim)",cursor:"pointer",zIndex:30,fontSize:12,transition:"right 0.2s ease, background 0.12s"},onMouseEnter:e=>{e8||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e8||(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"})]}),(tt>0||te.length>1)&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,fontSize:10,fontWeight:700,color:tt>0?"var(--accent)":"var(--text-dim)"},children:[tt>0&&(0,n.jsxs)("span",{children:[tt," active"]}),(0,n.jsx)("span",{children:te.length})]})]}),e8&&te.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",right:e3?8:48,top:4,bottom:4,width:e3?"calc(100vw - 16px)":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)(el,{runs:te})]})]}),(0,n.jsx)("div",{className:"relative",children:td})]})]})}var eT=r(25618),ez=r(76577);class eI extends i.Component{static getDerivedStateFromError(e){return{hasError:!0,message:e instanceof Error?e.message:String(e)}}componentDidCatch(e,t){console.error("File viewer crashed",{filePath:this.props.filePath,error:e,componentStack:t.componentStack})}componentDidUpdate(e){e.filePath!==this.props.filePath&&this.state.hasError&&this.setState({hasError:!1,message:null})}render(){return this.state.hasError?(0,n.jsx)(ez.fj,{style:{background:"var(--bg)"},children:(0,n.jsx)(ez.nG,{tone:"error",children:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,alignItems:"center",textAlign:"center"},children:[(0,n.jsx)("div",{children:"Preview crashed for this file."}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",maxWidth:560,wordBreak:"break-word"},children:this.props.filePath}),this.state.message&&(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",maxWidth:560,wordBreak:"break-word"},children:this.state.message})]})})}):this.props.children}constructor(...e){super(...e),this.state={hasError:!1,message:null}}}function eM(e,t,r){return Math.min(Math.max(e,t),r)}function eW({id:e,filePath:t,fileName:r,cwd:o,active:l,stackIndex:s,zIndex:a,onClose:d,onFocus:c,onOpenFile:u}){let[p,h]=(0,i.useState)(()=>{let e,t,r,n,i,o,l;return e=window.innerWidth,t=window.innerHeight,n=(r=e<720||t<560)?8:36,o=Math.max(320,e-2*n-(i=r?0:s%6*28)),l=Math.max(260,t-2*n-i),{left:n+i,top:n+i,width:r?o:Math.min(1180,o),height:r?l:Math.min(820,l),maximized:!1}}),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(!1),m=(0,i.useRef)(null),b=(0,i.useRef)(null),y=(0,i.useRef)(null);(0,i.useEffect)(()=>{l&&m.current?.focus({preventScroll:!0})},[l]),(0,i.useEffect)(()=>{let e=()=>{h(e=>{if(e.maximized)return e;let t=Math.max(320,window.innerWidth-16),r=Math.max(260,window.innerHeight-16),n=Math.min(e.width,t),i=Math.min(e.height,r);return{...e,width:n,height:i,left:eM(e.left,8,Math.max(8,window.innerWidth-n-8)),top:eM(e.top,8,Math.max(8,window.innerHeight-i-8))}})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let j=(0,i.useCallback)(t=>{c(e),0!==t.button||p.maximized||(t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),b.current={pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,left:p.left,top:p.top},g(!0))},[p.left,p.maximized,p.top,e,c]),k=(0,i.useCallback)(e=>{let t=b.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.left+e.clientX-t.startX,n=t.top+e.clientY-t.startY;h(e=>({...e,left:eM(r,8,Math.max(8,window.innerWidth-120)),top:eM(n,8,Math.max(8,window.innerHeight-48))}))},[]),w=(0,i.useCallback)(e=>{let t=b.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),b.current=null,g(!1))},[]),S=(0,i.useCallback)(()=>{c(e),h(e=>({...e,maximized:!e.maximized}))},[e,c]),C=(0,i.useCallback)(t=>{c(e),0!==t.button||p.maximized||(t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture(t.pointerId),y.current={pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,width:p.width,height:p.height},v(!0))},[p.height,p.maximized,p.width,e,c]),T=(0,i.useCallback)(e=>{let t=y.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.width+e.clientX-t.startX,n=t.height+e.clientY-t.startY;h(e=>({...e,width:eM(r,360,Math.max(360,window.innerWidth-e.left-8)),height:eM(n,280,Math.max(280,window.innerHeight-e.top-8))}))},[]),z=(0,i.useCallback)(e=>{let t=y.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),y.current=null,v(!1))},[]),I=p.maximized?{position:"fixed",inset:12,zIndex:a}:{position:"fixed",left:p.left,top:p.top,width:p.width,height:p.height,zIndex:a};return(0,n.jsxs)("div",{ref:m,role:"dialog","aria-label":`Preview ${r}`,tabIndex:-1,onPointerDown:()=>c(e),onKeyDown:t=>{"Escape"===t.key&&d(e)},style:{...I,display:"flex",flexDirection:"column",minWidth:p.maximized?void 0:360,minHeight:p.maximized?void 0:280,background:"var(--bg)",border:l?"1px solid rgba(37,99,235,0.55)":"1px solid var(--border)",borderRadius:8,boxShadow:l?"0 18px 60px rgba(0,0,0,0.26)":"0 10px 34px rgba(0,0,0,0.20)",overflow:"hidden",outline:"none"},children:[(0,n.jsxs)("div",{onPointerDown:j,onPointerMove:k,onPointerUp:w,onPointerCancel:w,style:{height:34,display:"flex",alignItems:"center",gap:8,padding:"0 8px 0 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",cursor:p.maximized?"default":x?"grabbing":"grab",flexShrink:0,userSelect:"none"},children:[(0,n.jsx)("div",{style:{minWidth:0,flex:1},children:(0,n.jsx)("div",{title:t,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12,fontWeight:650,color:"var(--text)"},children:r})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:S,title:p.maximized?"Restore preview":"Maximize preview","aria-label":p.maximized?"Restore preview":"Maximize preview",style:eL,children:p.maximized?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M6 3.5h6.5V10"}),(0,n.jsx)("path",{d:"M3.5 6H10v6.5H3.5z"})]}):(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M4 4h8v8H4z"})})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>d(e),title:"Close preview","aria-label":"Close preview",style:eL,children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"4",y1:"4",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"4",x2:"4",y2:"12"})]})})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflow:"hidden",background:"var(--bg)"},children:(0,n.jsx)(eI,{filePath:t,children:(0,n.jsx)(eT.h,{filePath:t,cwd:o,onOpenFile:u})})}),!p.maximized&&(0,n.jsx)("div",{role:"separator","aria-orientation":"horizontal","aria-label":"Resize preview",title:"Resize preview",onPointerDown:C,onPointerMove:T,onPointerUp:z,onPointerCancel:z,style:{position:"absolute",right:0,bottom:0,width:18,height:18,cursor:"nwse-resize",color:"var(--text-dim)",display:"flex",alignItems:"flex-end",justifyContent:"flex-end",padding:3,background:"linear-gradient(135deg, transparent 0 48%, rgba(127,127,127,0.18) 48% 52%, transparent 52% 100%)"}})]})}let eL={width:26,height:24,padding:0,border:"1px solid transparent",borderRadius:5,background:"transparent",color:"var(--text-muted)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},eR="var(--text-dim)";function eE({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:eR}),(0,n.jsx)("path",{d:"M1 6h14.5L14 13H2L1 6Z",stroke:eR,strokeWidth:"1",fill:eR,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:eR,strokeWidth:"1",fill:eR,fillOpacity:"0.1"})})}function eP({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:eR,strokeWidth:"1",fill:eR,fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:eR,strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]})}function e$({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,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:eR,letterSpacing:"0",children:e})]})}function eD({size:e=14}){return(0,n.jsx)(e$,{label:"TS",size:e})}function eB({size:e=14}){return(0,n.jsx)(e$,{label:"TSX",size:e})}function eA({size:e=14}){return(0,n.jsx)(e$,{label:"JS",size:e})}function eN({size:e=14}){return(0,n.jsx)(e$,{label:"JSX",size:e})}function eH({size:e=14}){return(0,n.jsx)(e$,{label:"PY",size:e})}function eO({size:e=14}){return(0,n.jsx)(e$,{label:"{}",size:e})}function eF({size:e=14}){return(0,n.jsx)(e$,{label:"CSS",size:e})}function eU({size:e=14}){return(0,n.jsx)(e$,{label:"SC",size:e})}function e_({size:e=14}){return(0,n.jsx)(e$,{label:"HTM",size:e})}function eK({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M3.5 9.5V7l1.5 1.5L6.5 7v2.5",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M8 7v2.5M7 9l1 1.5 1-1.5",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})}function eV({size:e=14}){return(0,n.jsx)(e$,{label:"YML",size:e})}function eJ({size:e=14}){return(0,n.jsx)(e$,{label:"TOM",size:e})}function eY({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M4 7.5l2 1.5-2 1.5",stroke:eR,strokeWidth:"0.95",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M7.5 10.5h2.5",stroke:eR,strokeWidth:"0.95",strokeLinecap:"round"})]})}function eq({size:e=14}){return(0,n.jsx)(e$,{label:"RS",size:e})}function eG({size:e=14}){return(0,n.jsx)(e$,{label:"GO",size:e})}function eZ({size:e=14}){return(0,n.jsx)(e$,{label:"SQL",size:e})}function eX({size:e=14}){return(0,n.jsx)(e$,{label:"GQL",size:e})}function eQ({size:e=14}){return(0,n.jsx)(e$,{label:"TF",size:e})}function e0({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,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:eR,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"6",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:eR,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"3.5",y:"8.5",width:"2",height:"1.5",rx:"0.3",stroke:eR,strokeWidth:"0.8"})]})}function e1({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5.5",cy:"8.5",r:"1.5",stroke:eR,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 8.5h2.5M8.5 8.5v1.5",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round"})]})}function e2({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5",cy:"6.5",r:"1",stroke:eR,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"9",cy:"6.5",r:"1",stroke:eR,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"5",cy:"10",r:"1",stroke:eR,strokeWidth:"0.85"}),(0,n.jsx)("path",{d:"M5 7.5V9",stroke:eR,strokeWidth:"0.85",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M9 7.5v.5a2 2 0 0 1-2 2H6",stroke:eR,strokeWidth:"0.85",strokeLinecap:"round",fill:"none"})]})}function e5({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,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:eR,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M5.5 8.5V7.5a1.5 1.5 0 0 1 3 0v1",stroke:eR,strokeWidth:"0.9",strokeLinecap:"round",fill:"none"})]})}function e4({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:eR,strokeWidth:"0.9",fill:eR,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:eR,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"7",cy:"8.5",r:"1.3",stroke:eR,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:eR,strokeWidth:"0.8",strokeLinecap:"round"})]})}function e3(e,t=14){let r=e.toLowerCase(),i=r.split(".").pop()??"";if("dockerfile"===r||r.startsWith("dockerfile."))return(0,n.jsx)(e0,{size:t});if(".env"===r||r.startsWith(".env."))return(0,n.jsx)(e1,{size:t});if(".gitignore"===r||".gitattributes"===r||".gitmodules"===r)return(0,n.jsx)(e2,{size:t});if("package-lock.json"===r||"yarn.lock"===r||"bun.lock"===r||"pnpm-lock.yaml"===r||"cargo.lock"===r)return(0,n.jsx)(e5,{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)(e4,{size:t});switch(i){case"ts":return(0,n.jsx)(eD,{size:t});case"tsx":return(0,n.jsx)(eB,{size:t});case"js":case"mjs":case"cjs":return(0,n.jsx)(eA,{size:t});case"jsx":return(0,n.jsx)(eN,{size:t});case"py":return(0,n.jsx)(eH,{size:t});case"json":case"jsonl":return(0,n.jsx)(eO,{size:t});case"css":case"less":return(0,n.jsx)(eF,{size:t});case"scss":return(0,n.jsx)(eU,{size:t});case"html":case"htm":return(0,n.jsx)(e_,{size:t});case"md":case"mdx":return(0,n.jsx)(eK,{size:t});case"yaml":case"yml":return(0,n.jsx)(eV,{size:t});case"toml":return(0,n.jsx)(eJ,{size:t});case"sh":case"bash":case"zsh":case"fish":return(0,n.jsx)(eY,{size:t});case"rs":return(0,n.jsx)(eq,{size:t});case"go":return(0,n.jsx)(eG,{size:t});case"sql":return(0,n.jsx)(eZ,{size:t});case"graphql":case"gql":return(0,n.jsx)(eX,{size:t});case"tf":case"hcl":return(0,n.jsx)(eQ,{size:t});case"lock":return(0,n.jsx)(e5,{size:t});default:return(0,n.jsx)(eP,{size:t})}}var e8=r(28999);async function e6(e){let t=(0,e8.HG)(e),r=await fetch(`/api/files/${t}?type=list`);return r.ok?((await r.json()).entries??[]).map(t=>({name:t.name,fullPath:(0,e8.e_)(e,t.name),isDir:t.isDir,size:t.size,children:t.isDir?[]:void 0,loaded:!t.isDir})):[]}function e7(e,t){let r=t.trim().toLowerCase();return!!(!r||e.name.toLowerCase().includes(r))||(e.children??[]).some(e=>e7(e,r))}function e9(e){return!!Array.from(e.types).includes("Files")||Array.from(e.items).some(e=>"file"===e.kind)}function te(e){return Array.from(e.files).filter(e=>!!e.name)}function tt(e,t){return e===t?".":(0,e8.qP)(e,t)}function tr({node:e,depth:t,cwd:r,onOpenFile:o,onExploreFile:l,onAtMention:s,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,i.useState)(e.children??[]),[m,b]=(0,i.useState)(e.loaded??!1),[y,j]=(0,i.useState)(!1),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(!1),T=e.isDir&&(S||u===e.fullPath),z=!!s&&k,I=!!l&&k&&!e.isDir&&e.name.toLowerCase().endsWith(".h5ad"),M=z||I,W=x?f.filter(e=>e7(e,h??"")):f,L=(0,i.useCallback)(async(t=!1)=>{if(!m||t){j(!0);try{let t=await e6(e.fullPath);v(t),b(!0)}catch{}finally{j(!1)}}},[m,e.fullPath]),R=(0,i.useRef)(m);(0,i.useEffect)(()=>{R.current=m}),(0,i.useEffect)(()=>{g&&m&&L(!0)},[p]);let E=(0,i.useCallback)(()=>{if(e.isDir){let t=!g;d(e.fullPath,t),t&&!m&&L()}else o(e.fullPath,e.name)},[e.isDir,e.fullPath,e.name,m,g,L,o,d]),P=(0,i.useCallback)(t=>{e.isDir&&e9(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy",C(!0))},[e.isDir]),$=(0,i.useCallback)(t=>{e.isDir&&e9(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy")},[e.isDir]),D=(0,i.useCallback)(t=>{if(!e.isDir)return;let r=t.relatedTarget;r instanceof Node&&t.currentTarget.contains(r)||C(!1)},[e.isDir]),B=(0,i.useCallback)(t=>{if(!e.isDir||!e9(t.dataTransfer))return;t.preventDefault(),t.stopPropagation(),C(!1);let r=te(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:E,onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),onDragEnter:P,onDragOver:$,onDragLeave:D,onDrop:B,style:{position:"relative",display:"flex",alignItems:"center",gap:4,paddingLeft:8+14*t,paddingRight:M?z&&I?146:82: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)(eE,{size:14,open:g}):e3(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}),y&&(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"})}),M&&(0,n.jsxs)("div",{style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",gap:4},children:[I&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),l?.(e.fullPath,e.name)},title:"Explore H5AD",style:{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.1",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"11",cy:"11",r:"7"}),(0,n.jsx)("path",{d:"M16 16l4 4"}),(0,n.jsx)("path",{d:"M8.5 11h5"}),(0,n.jsx)("path",{d:"M11 8.5v5"})]}),"@explore"]}),z&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),s?.((0,e8.qP)(e.fullPath,r))},title:"Insert path into chat",style:{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:[W.map(e=>(0,n.jsx)(tr,{node:e,depth:t+1,cwd:r,onOpenFile:o,onExploreFile:l,onAtMention:s,expandedPaths:a,onToggleExpanded:d,onUploadFiles:c,uploadTargetPath:u,refreshKey:p,searchQuery:h},e.fullPath)),0===W.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 tn({cwd:e,onOpenFile:t,onExploreFile:r,refreshKey:o,onAtMention:l,searchQuery:s="",onSearchChange:a}){let[d,c]=(0,i.useState)([]),[u,p]=(0,i.useState)(!0),[h,x]=(0,i.useState)(null),[g,f]=(0,i.useState)(new Set),[v,m]=(0,i.useState)(!1),[b,y]=(0,i.useState)(null),[j,k]=(0,i.useState)(null),w=(0,i.useRef)(null),S=(0,i.useRef)(null),C=(0,i.useRef)(0),T=(0,i.useCallback)((e,t)=>(p(t),x(null),e6(e).then(e=>c(e)).catch(e=>x(String(e))).finally(()=>p(!1))),[]),z=(0,i.useCallback)((e,t)=>{f(r=>{let n=new Set(r);return t?n.add(e):n.delete(e),n})},[]);(0,i.useEffect)(()=>{let t=w.current!==e;w.current=e,t&&f(new Set),T(e,t)},[e,o,T]),(0,i.useEffect)(()=>()=>{S.current&&clearTimeout(S.current)},[]);let I=(0,i.useCallback)(()=>{T(e,0===d.length)},[e,d.length,T]),M=(0,i.useCallback)(()=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>k(null),5e3)},[]),W=(0,i.useCallback)((t,r)=>{if(0===t.length)return;C.current=0,m(!1),S.current&&clearTimeout(S.current);let n=t.reduce((e,t)=>e+t.size,0),i=tt(r,e);y(r),k({phase:"uploading",targetPath:r,fileCount:t.length,loaded:0,total:n,message:`Uploading ${t.length} file${1===t.length?"":"s"} to ${i}`});let o=new FormData;t.forEach(e=>o.append("files",e,e.name));let l=new XMLHttpRequest,s=(0,e8.HG)(r);l.open("POST",`/api/files/${s}?type=upload`),l.upload.onprogress=e=>{e.lengthComputable&&k(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 o=e.uploaded??[],l=e.failed??[],s=[...o.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}`)];k({phase:l.length>0?"warning":"success",targetPath:r,fileCount:t.length,loaded:n,total:n,message:l.length>0?`Uploaded ${o.length}, ${l.length} failed`:`Uploaded ${o.length} file${1===o.length?"":"s"} to ${i}`,details:s}),I(),M()}else{let i=e.error??`Upload failed (HTTP ${l.status})`;k({phase:(l.status,"error"),targetPath:r,fileCount:t.length,loaded:0,total:n,message:i,details:403===l.status?["Check directory write permission or project access."]:void 0}),M()}},l.onerror=()=>{y(null),k({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload failed due to a network error"}),M()},l.onabort=()=>{y(null),k({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload canceled"}),M()},l.send(o)},[e,I,M]),L=(0,i.useCallback)(e=>{e9(e.dataTransfer)&&(e.preventDefault(),C.current+=1,m(!0))},[]),R=(0,i.useCallback)(e=>{e9(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},[]),E=(0,i.useCallback)(()=>{C.current-=1,C.current<=0&&(C.current=0,m(!1))},[]),P=(0,i.useCallback)(t=>{if(!e9(t.dataTransfer))return;t.preventDefault(),C.current=0,m(!1);let r=te(t.dataTransfer);r.length>0&&W(r,e)},[e,W]),$=s.trim()?d.filter(e=>e7(e,s)):d,D=s.trim().length>0;return u?(0,n.jsx)(ti,{cwd:e,isDraggingFiles:v,uploadState:j,onDragEnter:L,onDragOver:R,onDragLeave:E,onDrop:P,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:"Loading files..."})}):h?(0,n.jsx)(ti,{cwd:e,isDraggingFiles:v,uploadState:j,onDragEnter:L,onDragOver:R,onDragLeave:E,onDrop:P,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"#f87171"},children:h})}):(0,n.jsx)(ti,{cwd:e,isDraggingFiles:v,uploadState:j,onDragEnter:L,onDragOver:R,onDragLeave:E,onDrop:P,children:(0,n.jsxs)("div",{style:{padding:"2px 4px"},children:[$.map(i=>(0,n.jsx)(tr,{node:i,depth:0,cwd:e,onOpenFile:t,onExploreFile:r,onAtMention:l,expandedPaths:g,onToggleExpanded:z,onUploadFiles:W,uploadTargetPath:b,refreshKey:o,searchQuery:s},i.fullPath)),0===$.length&&(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:D?"No matching files":"No files found"})]})})}function ti({cwd:e,isDraggingFiles:t,uploadState:r,onDragEnter:i,onDragOver:o,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:i,onDragOver:o,onDragLeave:l,onDrop:s,style:{position:"relative",display:"flex",flexDirection:"column",height:"100%",minHeight:0,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,overflowY:"auto",overscrollBehavior:"contain",scrollbarWidth:"thin"},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 ",tt(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 to({cwd:e,refreshKey:t=0,onOpenFile:r,onExploreFile:o,onAtMention:l}){let[s,a]=(0,i.useState)(""),[d,c]=(0,i.useState)(0);return(0,i.useEffect)(()=>{c(e=>e+1)},[t]),(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"var(--bg)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"9px 10px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Files"}),(0,n.jsx)("div",{title:e??"",style:{marginTop:2,fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:e??"No project selected"})]}),(0,n.jsx)("button",{type:"button",onClick:()=>c(e=>e+1),disabled:!e,title:"Refresh files",style:{width:28,height:28,padding:0,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:e?"pointer":"not-allowed",display:"flex",alignItems:"center",justifyContent:"center",opacity:e?1:.55},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)("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"})]})})]}),(0,n.jsxs)("div",{style:{position:"relative",marginTop:9},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"},"aria-hidden":"true",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:s,onChange:e=>a(e.target.value),placeholder:"Filter files...",disabled:!e,style:{width:"100%",height:30,boxSizing:"border-box",padding:"0 28px 0 26px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none",opacity:e?1:.6}}),s&&(0,n.jsx)("button",{type:"button",onClick:()=>a(""),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","aria-hidden":"true",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"})]})})]})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,overflow:"hidden"},children:e?(0,n.jsx)(tn,{cwd:e,onOpenFile:r,onExploreFile:o,refreshKey:d,onAtMention:l,searchQuery:s,onSearchChange:a}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",padding:18,textAlign:"center",color:"var(--text-dim)",fontSize:12},children:"Select a project to browse files."})})]})}var tl=r(27568),ts=r(96793);let ta={__soul__:{apiPath:"/api/soul",title:"SOUL.md"},__harness__:{apiPath:"/api/harness",title:"HARNESS.md"}};function td({filePath:e}){let t=ta[e],{isDark:r}=(0,ts.D)(),[o,l]=(0,i.useState)(""),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[u,p]=(0,i.useState)(!1),[h,x]=(0,i.useState)(!1);(0,i.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,i.useCallback)(async()=>{if(t){p(!0);try{await fetch(t.apiPath,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:o})}),x(!0),setTimeout(()=>x(!1),2e3)}catch(e){c(String(e))}finally{p(!1)}}},[t,o]);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)(tl.g,{initialContent:o,language:"markdown",isDark:r,onChange:l,onSave:g})})]}):null}function tc(){document.body.style.cursor="",document.body.style.userSelect=""}function tu({side:e,onResize:t,onResizeStart:r,onResizeEnd:o,ariaLabel:l}){let s=(0,i.useRef)(null),a=(0,i.useRef)(!1),d=(0,i.useRef)(0),[c,u]=(0,i.useState)(!1),p=(0,i.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),tc(),o?.()},[o]),h=(0,i.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,i.useCallback)(e=>{if(!a.current)return;e.preventDefault();let r=e.clientX-d.current;d.current=e.clientX,t(r)},[t]),g=(0,i.useCallback)(e=>{e.preventDefault(),p(e.pointerId)},[p]),f=(0,i.useCallback)(e=>{p(e.pointerId)},[p]);return(0,i.useEffect)(()=>()=>{a.current&&(a.current=!1,tc(),o?.())},[o]),(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 tp(e){return"running"===e?"#22c55e":"starting"===e?"rgba(234,179,8,0.95)":"error"===e?"#ef4444":"var(--text-dim)"}function th(e){return"h5adexp"===e?"H5AD Exp":"stexp"}function tx(e,t,r){return Math.min(Math.max(e,t),r)}function tg(e){if(!e||"object"!=typeof e||!("app"in e))return null;let t=e.app;return t&&"object"==typeof t&&"id"in t?t:null}function tf({appType:e,filePath:t,cwd:r,sessionId:o,appId:l,onClose:s,onAppChanged:a,onOpenTools:d}){var c;let[u,p]=(0,i.useState)(null),[h,x]=(0,i.useState)(null),[g,f]=(0,i.useState)(!1),[v,m]=(0,i.useState)(!1),[b,y]=(0,i.useState)(0),[j,k]=(0,i.useState)(()=>{let e,t,r,n,i,o;return e=window.innerWidth,t=window.innerHeight,n=(r=e<720||t<560)?8:34,i=Math.max(360,e-2*n),o=Math.max(320,t-2*n),{left:n,top:n,width:r?i:Math.min(1280,i),height:r?o:Math.min(880,o),maximized:!1}}),[w,S]=(0,i.useState)(!1),[C,T]=(0,i.useState)(!1),z=(0,i.useRef)(null),I=(0,i.useRef)(null),M=(0,i.useRef)(null),W=!!t||!!l,L=t?(0,e8.WP)(t):u?(0,e8.WP)(u.filePath):"",R=t&&r?(0,e8.qP)(t,r):u?.filePath&&u.cwd?(0,e8.qP)(u.filePath,u.cwd):t??u?.filePath??"",E=u?.status??"idle",P=(0,i.useMemo)(()=>u?.logs?.join("\n")??"",[u?.logs]),$=u?.appType==="h5adexp"?u.url:u?.directUrl??u?.url??"",D=(0,i.useCallback)(e=>{p(e),a?.(e)},[a]),B=(0,i.useCallback)(async e=>{let t=await fetch(`/api/apps?appId=${encodeURIComponent(e)}`),r=await t.json(),n=tg(r);if(!t.ok||!n)throw Error(r&&"object"==typeof r&&"error"in r?String(r.error):`HTTP ${t.status}`);return D(n),n},[D]),A=(0,i.useCallback)(async()=>{if(t&&r&&!g){f(!0),x(null);try{let n=await fetch("/api/apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"start",appType:e,filePath:t,cwd:r,sessionId:o})}),i=await n.json(),l=tg(i);if(!n.ok||!l){let e=i&&"object"==typeof i&&"error"in i?String(i.error):`HTTP ${n.status}`;throw Error(e)}D(l),y(e=>e+1)}catch(e){x(e instanceof Error?e.message:String(e))}finally{f(!1)}}},[e,D,g,r,t,o]);(0,i.useEffect)(()=>{if(W){if(x(null),m(!1),l)return void B(l).then(()=>y(e=>e+1)).catch(e=>x(e instanceof Error?e.message:String(e)));p(null),A()}},[W,l,t]),(0,i.useEffect)(()=>{if(!u?.id||"stopped"===u.status||"error"===u.status)return;let e=window.setInterval(()=>{B(u.id).catch(()=>{})},2500);return()=>window.clearInterval(e)},[u?.id,u?.status,B]),(0,i.useEffect)(()=>{W&&z.current?.focus({preventScroll:!0})},[W,u?.id]),(0,i.useEffect)(()=>{let e=()=>{k(e=>{if(e.maximized)return e;let t=Math.max(360,window.innerWidth-16),r=Math.max(320,window.innerHeight-16),n=Math.min(e.width,t),i=Math.min(e.height,r);return{...e,width:n,height:i,left:tx(e.left,8,Math.max(8,window.innerWidth-n-8)),top:tx(e.top,8,Math.max(8,window.innerHeight-i-8))}})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let N=(0,i.useCallback)(async()=>{if(u?.id&&!g){f(!0),x(null);try{let e=await fetch("/api/apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"stop",appId:u.id})}),t=await e.json(),r=tg(t);if(!e.ok||!r){let r=t&&"object"==typeof t&&"error"in t?String(t.error):`HTTP ${e.status}`;throw Error(r)}D(r)}catch(e){x(e instanceof Error?e.message:String(e))}finally{f(!1)}}},[u?.id,D,g]),H=(0,i.useCallback)(e=>{0!==e.button||j.maximized||(e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),I.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,left:j.left,top:j.top},S(!0))},[j.left,j.maximized,j.top]),O=(0,i.useCallback)(e=>{let t=I.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.left+e.clientX-t.startX,n=t.top+e.clientY-t.startY;k(e=>({...e,left:tx(r,8,Math.max(8,window.innerWidth-120)),top:tx(n,8,Math.max(8,window.innerHeight-48))}))},[]),F=(0,i.useCallback)(e=>{let t=I.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),I.current=null,S(!1))},[]),U=(0,i.useCallback)(e=>{0!==e.button||j.maximized||(e.preventDefault(),e.stopPropagation(),e.currentTarget.setPointerCapture(e.pointerId),M.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,width:j.width,height:j.height},T(!0))},[j.height,j.maximized,j.width]),_=(0,i.useCallback)(e=>{let t=M.current;if(!t||t.pointerId!==e.pointerId)return;let r=t.width+e.clientX-t.startX,n=t.height+e.clientY-t.startY;k(e=>({...e,width:tx(r,420,Math.max(420,window.innerWidth-e.left-8)),height:tx(n,340,Math.max(340,window.innerHeight-e.top-8))}))},[]),K=(0,i.useCallback)(e=>{let t=M.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),M.current=null,T(!1))},[]),V=(0,i.useCallback)(()=>{d?.(),s()},[s,d]),J=(0,i.useCallback)(()=>{k(e=>({...e,maximized:!e.maximized}))},[]);if(!W)return null;let Y=j.maximized?{position:"fixed",inset:12,zIndex:900}:{position:"fixed",left:j.left,top:j.top,width:j.width,height:j.height,zIndex:900};return(0,n.jsxs)("div",{ref:z,role:"dialog","aria-label":`${u?.title??th(e)} window`,tabIndex:-1,onKeyDown:e=>{"Escape"===e.key&&V()},style:{...Y,display:"flex",flexDirection:"column",minWidth:j.maximized?void 0:420,minHeight:j.maximized?void 0:340,background:"var(--bg)",border:"1px solid rgba(37,99,235,0.5)",borderRadius:8,boxShadow:"0 18px 60px rgba(0,0,0,0.26)",overflow:"hidden",outline:"none"},children:[(0,n.jsxs)("div",{onPointerDown:H,onPointerMove:O,onPointerUp:F,onPointerCancel:F,style:{display:"flex",alignItems:"center",gap:8,padding:"8px 9px 8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0,userSelect:"none",cursor:j.maximized?"default":w?"grabbing":"grab"},children:[(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:700,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:u?.title??th(e)}),(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:tp(E),flexShrink:0}}),(0,n.jsx)("span",{style:{fontSize:11,color:tp(E),textTransform:"capitalize",flexShrink:0},children:E}),u?.pid&&(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",flexShrink:0},children:["pid ",u.pid]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",flexShrink:0},children:(c=u?.rssBytes)&&Number.isFinite(c)?c<1048576?`${(c/1024).toFixed(0)}K`:c<0x40000000?`${(c/1024/1024).toFixed(1)}M`:`${(c/1024/1024/1024).toFixed(1)}G`:"-"})]}),(0,n.jsx)("div",{title:t??u?.filePath??"",style:{marginTop:2,fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:R||L})]}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>y(e=>e+1),disabled:!$||u?.status==="stopped",style:tv,title:"Reload",children:"Reload"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>m(e=>!e),style:{...tv,background:v?"var(--bg-selected)":"var(--bg)",color:v?"var(--text)":"var(--text-muted)"},title:"Toggle logs",children:"Logs"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:V,style:tv,title:"Show in Tools",children:"Tools"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:()=>void N(),disabled:!u||"stopped"===u.status||g,style:{...tv,border:"1px solid rgba(239,68,68,0.35)",background:"rgba(239,68,68,0.08)",color:"#ef4444",opacity:!u||"stopped"===u.status||g?.55:1},title:"Stop process",children:"Stop"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:V,"aria-label":"Minimize",title:"Minimize",style:tm,children:(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","aria-hidden":"true",children:(0,n.jsx)("line",{x1:"4",y1:"11",x2:"12",y2:"11"})})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:J,"aria-label":j.maximized?"Restore":"Maximize",title:j.maximized?"Restore":"Maximize",style:tm,children:j.maximized?(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M6 3.5h6.5V10"}),(0,n.jsx)("path",{d:"M3.5 6H10v6.5H3.5z"})]}):(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M4 4h8v8H4z"})})}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:s,"aria-label":"Close window",title:"Close window",style:tm,children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"4",y1:"4",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"4",x2:"4",y2:"12"})]})})]}),(h||u?.error)&&(0,n.jsx)("div",{style:{padding:"8px 12px",borderBottom:"1px solid rgba(248,113,113,0.25)",background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:12},children:h??u?.error}),(0,n.jsxs)("div",{style:{flex:1,minHeight:0,display:"flex",background:"var(--bg)"},children:[(0,n.jsx)("div",{style:{flex:1,minWidth:0,position:"relative"},children:g&&!u?.url?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:["Starting ",th(e),"..."]}):$&&u?.status!=="stopped"?(0,n.jsx)("iframe",{src:$,title:`${u?.title??th(e)} - ${L}`,style:{width:"100%",height:"100%",border:"none",display:"block",background:"#fff"}},`${$}:${b}`):(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,color:"var(--text-muted)",fontSize:13},children:[(0,n.jsxs)("div",{children:[th(e)," is stopped."]}),t&&r&&(0,n.jsx)("button",{type:"button",onClick:()=>void A(),disabled:g,style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:"var(--accent)",color:"#fff",cursor:g?"not-allowed":"pointer",fontSize:12,fontWeight:650},children:"Start again"})]})}),v&&(0,n.jsxs)("div",{style:{width:360,borderLeft:"1px solid var(--border)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",minHeight:0},children:[(0,n.jsx)("div",{style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-muted)",fontWeight:650},children:"Process Logs"}),(0,n.jsx)("pre",{style:{flex:1,margin:0,padding:10,overflow:"auto",fontSize:11,lineHeight:1.45,color:"var(--text-muted)",fontFamily:"var(--font-mono)",whiteSpace:"pre-wrap"},children:P||"No logs yet."})]})]}),!j.maximized&&(0,n.jsx)("div",{role:"separator","aria-orientation":"horizontal","aria-label":"Resize explore window",title:"Resize",onPointerDown:U,onPointerMove:_,onPointerUp:K,onPointerCancel:K,style:{position:"absolute",right:0,bottom:0,width:18,height:18,cursor:"nwse-resize",background:"linear-gradient(135deg, transparent 0 48%, rgba(127,127,127,0.22) 48% 52%, transparent 52% 100%)"}})]})}let tv={height:30,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,flexShrink:0},tm={width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,padding:0};function tb(e){return"running"===e?"#22c55e":"starting"===e?"rgba(234,179,8,0.95)":"error"===e?"#ef4444":"var(--text-dim)"}function ty(e){return"waiting_model"===e?"rgba(234,179,8,0.95)":"running_tools"===e?"#38bdf8":"streaming"===e?"#22c55e":"compacting"===e?"#a78bfa":"var(--text-dim)"}function tj(e){return e&&Number.isFinite(e)?e<1048576?`${(e/1024).toFixed(0)}K`:e<0x40000000?`${(e/1024/1024).toFixed(1)}M`:`${(e/1024/1024/1024).toFixed(1)}G`:"-"}function tk(e){if(!e||!Number.isFinite(e))return"-";let t=Math.max(0,Math.floor(e/1e3)),r=Math.floor(t/3600),n=Math.floor(t%3600/60),i=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${i}s`:`${i}s`}function tw({refreshKey:e=0,visibleAppId:t,cwd:r,onOpenApp:o,onAppChanged:l,onAppsChanged:s}){let[a,d]=(0,i.useState)([]),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(null),[f,v]=(0,i.useState)(null),[m,b]=(0,i.useState)(null),[y,j]=(0,i.useState)(null),[k,w]=(0,i.useState)(null),[S,C]=(0,i.useState)(null),[T,z]=(0,i.useState)(null),I=(0,i.useMemo)(()=>[...a].sort((e,t)=>{let r=+!!e.running,n=+!!t.running;return r!==n?n-r:Date.parse(t.lastActivity)-Date.parse(e.lastActivity)}),[a]),M=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/apps",{cache:"no-store"}),t=await e.json();if(!e.ok||!Array.isArray(t.apps))throw Error(t.error??`HTTP ${e.status}`);d(t.apps),s?.(t.apps),g(null)}catch(e){g(e instanceof Error?e.message:String(e))}},[s]),W=(0,i.useCallback)(async()=>{try{let e=new URLSearchParams;r&&e.set("cwd",r);let t=await fetch(`/api/agent/runtime${e.toString()?`?${e}`:""}`,{cache:"no-store"}),n=await t.json();if(!t.ok||!Array.isArray(n.sessions))throw Error(n.error??`HTTP ${t.status}`);u(n),h(n.memory??null),v(null)}catch(e){v(e instanceof Error?e.message:String(e))}},[r]);(0,i.useEffect)(()=>{M(),W()},[M,W,e]),(0,i.useEffect)(()=>{let e=window.setInterval(()=>{M(),W()},3e3);return()=>window.clearInterval(e)},[M,W]);let L=(0,i.useCallback)(async e=>{w(e.id),g(null);try{let t=await fetch("/api/apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"stop",appId:e.id})}),r=await t.json();if(!t.ok||!r.app)throw Error(r.error??`HTTP ${t.status}`);d(e=>e.map(e=>e.id===r.app.id?r.app:e)),l?.(r.app),await M()}catch(e){g(e instanceof Error?e.message:String(e))}finally{w(null)}},[M,l]),R=(0,i.useCallback)(async e=>{C(e.sessionId),v(null);try{let t=await fetch(`/api/agent/${encodeURIComponent(e.sessionId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"abort"})}),r=await t.json().catch(()=>({}));if(!t.ok||r.error)throw Error(r.error??`HTTP ${t.status}`);await W()}catch(e){v(e instanceof Error?e.message:String(e))}finally{C(null)}},[W]),E=(0,i.useCallback)(async(e,t)=>{if(r){j(`${e}:${t}`),b(null);try{let n=await fetch("/api/memory/promote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:r,memoryId:e,target:t})}),i=await n.json().catch(()=>({}));if(!n.ok)throw Error(i.error??`HTTP ${n.status}`);await W()}catch(e){b(e instanceof Error?e.message:String(e))}finally{j(null)}}},[r,W]),P=a.filter(e=>e.running).length,$=a.reduce((e,t)=>e+(t.running?t.rssBytes??0:0),0),D=c?.sessions??[],B=D.filter(e=>e.busy),A=B.filter(e=>"waiting_model"===e.phase);return(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"var(--bg)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Status"}),(0,n.jsxs)("div",{style:{marginTop:3,fontSize:11,color:"var(--text-dim)"},children:[B.length," agent running \xb7 ",P," explore \xb7 ",tj($)]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>{M(),W()},style:tI,title:"Refresh status",children:"Refresh"})]}),x&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11},children:x}),f&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11},children:f}),m&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11},children:m})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",padding:10},children:(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsxs)("section",{children:[(0,n.jsx)(tS,{title:"Agent Runtime",subtitle:A.length>0?`${A.length} waiting for model first token`:`${B.length} active chat${1===B.length?"":"s"}`}),0===D.length?(0,n.jsx)(tC,{label:"No agent runtime is active."}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:D.map(e=>{var t;let r=e.model?`${e.model.provider}/${e.model.id}`:"-",i=e.cwd?(0,e8.WP)(e.cwd)||e.cwd:"-",o=e.activeTools.map(e=>e.name).join(", ");return(0,n.jsxs)("div",{style:{border:`1px solid ${e.busy?"rgba(37,99,235,0.35)":"var(--border)"}`,borderRadius:8,background:e.busy?"var(--bg-selected)":"var(--bg-panel)",padding:10},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:ty(e.phase),marginTop:5,flexShrink:0}}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:700,color:ty(e.phase),textTransform:"uppercase",flexShrink:0},children:"waiting_model"===(t=e.phase)?"waiting model":"running_tools"===t?"running tools":"streaming"===t?"streaming":"compacting"===t?"compacting":"idle"}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:r,children:r})]}),(0,n.jsxs)("div",{title:e.cwd??void 0,style:{marginTop:3,fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[i," \xb7 ",e.sessionId.slice(0,8)]})]})]}),(0,n.jsxs)("div",{style:{marginTop:9,display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"5px 10px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(tT,{label:"uptime",value:tk(e.uptimeMs)}),(0,n.jsx)(tT,{label:"wait",value:tk(e.waitingForModelMs),color:"waiting_model"===e.phase?ty(e.phase):void 0}),(0,n.jsx)(tT,{label:"pending",value:null===e.pendingMessageCount?"-":String(e.pendingMessageCount)}),(0,n.jsx)(tT,{label:"event",value:e.lastEventType??"-"}),(0,n.jsx)(tT,{label:"tools",value:o||"-"}),(0,n.jsx)(tT,{label:"ops",value:e.operations.join(", ")||"-"})]}),"waiting_model"===e.phase&&(e.waitingForModelMs??0)>8e3&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(234,179,8,0.25)",borderRadius:6,background:"rgba(234,179,8,0.08)",color:"rgba(234,179,8,0.95)",fontSize:11,lineHeight:1.45},children:"Waiting before the first model token. If another chat uses the same provider or gateway, the upstream may be queueing requests."}),e.errorMessage&&(0,n.jsx)("div",{style:{marginTop:8,padding:"7px 8px",border:"1px solid rgba(248,113,113,0.25)",borderRadius:6,background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:11,lineHeight:1.45},children:e.errorMessage}),(0,n.jsx)("div",{style:{marginTop:10,display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:(0,n.jsx)("button",{type:"button",onClick:()=>void R(e),disabled:!e.busy||S===e.sessionId,style:{...tI,border:"1px solid rgba(239,68,68,0.35)",color:"#ef4444",background:"rgba(239,68,68,0.08)",opacity:e.busy&&S!==e.sessionId?1:.55},children:"Abort"})})]},e.sessionId)})})]}),(0,n.jsxs)("section",{children:[(0,n.jsx)(tS,{title:"Memory",subtitle:p?`${p.count} stored \xb7 ${p.candidateCount} candidates`:r?"loading":"No project selected"}),r?p?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:10},children:[(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"5px 10px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(tT,{label:"fact",value:String(p.byType.fact)}),(0,n.jsx)(tT,{label:"context",value:String(p.byType.context)}),(0,n.jsx)(tT,{label:"decision",value:String(p.byType.decision)}),(0,n.jsx)(tT,{label:"preference",value:String(p.byType.preference)}),(0,n.jsx)(tT,{label:"note",value:String(p.byType.note)}),(0,n.jsx)(tT,{label:"candidates",value:String(p.candidateCount),color:p.candidateCount>0?"var(--accent)":void 0})]}),(0,n.jsx)("div",{title:p.filePath,style:{marginTop:8,fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,e8.qP)(p.filePath,r)})]}),(0,n.jsx)(tz,{title:"Promotion Candidates",emptyLabel:"No promotion candidates yet.",items:p.topCandidates,onPromote:E,busyAction:y}),(0,n.jsx)(tz,{title:"Recent Memory",emptyLabel:"No memory stored for this project.",items:p.recent})]}):(0,n.jsx)(tC,{label:"Memory status unavailable."}):(0,n.jsx)(tC,{label:"Select a project to inspect memory status."})]}),(0,n.jsxs)("section",{children:[(0,n.jsx)(tS,{title:"Explore Tools",subtitle:`${P} running \xb7 ${tj($)}`}),0===I.length?(0,n.jsx)(tC,{label:"No explore tools are running."}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:I.map(e=>{let i,l=t===e.id,s=T===e.id;return(0,n.jsxs)("div",{style:{border:`1px solid ${l?"rgba(37,99,235,0.5)":"var(--border)"}`,borderRadius:8,background:l?"var(--bg-selected)":"var(--bg-panel)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:10},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:tb(e.status),marginTop:5,flexShrink:0}}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:700,color:"var(--text)",textTransform:"uppercase",flexShrink:0},children:e.appType}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e.filePath,children:(0,e8.WP)(e.filePath)})]}),(0,n.jsx)("div",{title:e.filePath,style:{marginTop:3,fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(i=r&&e.filePath.startsWith(r)?r:e.cwd,(0,e8.qP)(e.filePath,i))})]})]}),(0,n.jsxs)("div",{style:{marginTop:9,display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"5px 10px",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)(tT,{label:"status",value:e.status,color:tb(e.status)}),(0,n.jsx)(tT,{label:"pid",value:e.pid?String(e.pid):"-"}),(0,n.jsx)(tT,{label:"memory",value:tj(e.rssBytes)}),(0,n.jsx)(tT,{label:"uptime",value:tk(e.uptimeMs)}),(0,n.jsx)(tT,{label:"port",value:String(e.port)}),(0,n.jsx)(tT,{label:"session",value:e.sessionId?e.sessionId.slice(0,8):"-"})]}),(0,n.jsxs)("div",{style:{marginTop:10,display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>o(e),style:tI,children:"Open"}),(0,n.jsx)("button",{type:"button",onClick:()=>z(t=>t===e.id?null:e.id),style:{...tI,background:s?"var(--bg-selected)":"var(--bg)"},children:"Logs"}),(0,n.jsx)("button",{type:"button",onClick:()=>void L(e),disabled:!e.running||k===e.id,style:{...tI,border:"1px solid rgba(239,68,68,0.35)",color:"#ef4444",background:"rgba(239,68,68,0.08)",opacity:e.running&&k!==e.id?1:.55},children:"Stop"})]})]}),s&&(0,n.jsx)("pre",{style:{maxHeight:220,overflow:"auto",margin:0,padding:10,borderTop:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-muted)",fontSize:11,lineHeight:1.45,fontFamily:"var(--font-mono)",whiteSpace:"pre-wrap"},children:e.logs.join("\n")||"No logs yet."})]},e.id)})})]})]})})]})}function tS({title:e,subtitle:t}){return(0,n.jsxs)("div",{style:{marginBottom:8,display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:10},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:700,color:"var(--text)"},children:e}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t})]})}function tC({label:e}){return(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:"18px 10px",color:"var(--text-dim)",fontSize:12,textAlign:"center"},children:e})}function tT({label:e,value:t,color:r}){return(0,n.jsxs)("div",{style:{minWidth:0,display:"flex",alignItems:"center",gap:5},children:[(0,n.jsx)("span",{style:{color:"var(--text-dim)",flexShrink:0},children:e}),(0,n.jsx)("span",{style:{color:r??"var(--text-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:t})]})}function tz({title:e,emptyLabel:t,items:r,onPromote:i,busyAction:o}){return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",fontSize:12,fontWeight:700,color:"var(--text)"},children:e}),0===r.length?(0,n.jsx)("div",{style:{padding:"14px 10px",fontSize:12,color:"var(--text-dim)",textAlign:"center"},children:t}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:r.map((e,t)=>(0,n.jsxs)("div",{style:{padding:"9px 10px",borderTop:0===t?"none":"1px solid var(--border)",display:"flex",flexDirection:"column",gap:5},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:10,color:"project_memory"===e.candidate?"#f59e0b":"spark"===e.candidate?"var(--accent)":"var(--text-dim)",fontWeight:700,textTransform:"uppercase",flexShrink:0},children:"none"===e.candidate?e.memoryType:e.candidate}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)",flexShrink:0},children:e.importance.toFixed(2)}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:new Date(e.timestamp).toLocaleString()})]}),(0,n.jsx)("div",{title:e.content,style:{fontSize:12,color:"var(--text)",lineHeight:1.45,display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:e.content}),i&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[(0,n.jsx)("button",{type:"button",disabled:e.promotedTo.includes("memory")||o===`${e.id}:context`||o===`${e.id}:memory`,onClick:()=>void i(e.id,"memory"),style:{...tI,height:24,padding:"0 8px",opacity:e.promotedTo.includes("memory")||o===`${e.id}:context`||o===`${e.id}:memory`?.55:1},children:e.promotedTo.includes("memory")?"In MEMORY.md":o===`${e.id}:memory`?"Saving...":"To MEMORY.md"}),(0,n.jsx)("button",{type:"button",disabled:e.promotedTo.includes("context")||o===`${e.id}:context`||o===`${e.id}:memory`,onClick:()=>void i(e.id,"context"),style:{...tI,height:24,padding:"0 8px",opacity:e.promotedTo.includes("context")||o===`${e.id}:context`||o===`${e.id}:memory`?.55:1},children:e.promotedTo.includes("context")?"In CONTEXT.md":o===`${e.id}:context`?"Saving...":"To CONTEXT.md"})]})]},e.id))})]})}let tI={height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:550};function tM({tabs:e,activeTabId:t,onSelectTab:r,onCloseTab:o}){let[l,s]=(0,i.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 i=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:i?"var(--bg)":"var(--bg-panel)",cursor:"pointer",fontSize:12,color:i?"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:i?1:.7,display:"flex",alignItems:"center"},children:"files"===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:"M3 7.5V6a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v1.5"}),(0,n.jsx)("path",{d:"M3 7.5h18l-1.6 9.6A2 2 0 0 1 17.4 19H6.6a2 2 0 0 1-2-1.9z"})]}):"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"})]}):"tools"===e.icon?(0,n.jsx)("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.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.1-3.1a6 6 0 0 1-7.9 7.9l-5.7 5.7a2.1 2.1 0 0 1-3-3l5.7-5.7a6 6 0 0 1 7.9-7.9z"})}):e3(e.filePath??e.label,13)}),(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",flex:1,fontWeight:i?500:400},title:e.filePath??e.label,children:e.label}),a&&(0,n.jsx)("button",{onClick:t=>{t.stopPropagation(),o(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 tW(e){let t=e,r=0;for(;1===t.children.length;)t=t.children[0],r++;return{node:t,skipped:r}}function tL({node:e,activePathIds:t,depth:r,isLast:i,parentLines:o,onSelect:l}){let{node:s,skipped:a}=tW(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:[o.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:i?"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)(tL,{node:e,activePathIds:t,depth:r+1,isLast:a===s.children.length-1,parentLines:[...o,!i],onSelect:l},e.entry.id))]})}function tR({tree:e,activeLeafId:t,onLeafChange:r,inline:o,containerRef:l,open:s,onToggle:a,hasSession:d}){let[c,u]=(0,i.useState)(!1),p=void 0!==s?s:c,h=(0,i.useRef)(null),[x,g]=(0,i.useState)(null);(0,i.useEffect)(()=>{if(!p||!o)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,o,l]);let f=(0,i.useMemo)(()=>t?new Set(function e(r,n){for(let i of r){let r=[...n,i.entry.id];if(i.entry.id===t)return r;let o=e(i.children,r);if(o)return o}return null}(e,[])??[]):new Set,[e,t]),v=(0,i.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",b=e.length>0?tW(e[0]):null,y=b?.node??null,j=!m&&y&&y.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 o?(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&&y?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:y.children.map((e,t)=>(0,n.jsx)(tL,{node:e,activePathIds:f,depth:0,isLast:t===y.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&&y?(0,n.jsx)("div",{style:{padding:"4px 12px 8px 12px",maxHeight:260,overflowY:"auto"},children:y.children.map((e,t)=>(0,n.jsx)(tL,{node:e,activePathIds:f,depth:0,isLast:t===y.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 tE(e,t="0 0 24 24"){let r=({size:r=24,style:i})=>(0,n.jsx)("svg",{width:r,height:r,viewBox:t,fill:"none",style:i,children:e});return r.displayName="ProviderIcon",r}let tP=tE((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"})),t$=tE((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"})),tD=tE((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"})]})),tB=tE((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"})]})),tA=tE((0,n.jsx)("path",{d:"M4 4h16v16H4z",fill:"#F55036"}),"0 0 24 24"),tN=tE((0,n.jsx)("path",{d:"M4 4h5v5H4zm5.5 0h5v5h-5zM15 4h5v5h-5zM4 9.5h5v5H4zm5.5 5.5h5v5h-5zM15 9.5h5v5h-5z",fill:"#FA6F00"})),tH=tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),tO=tE((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"})]})),tF=tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#FF5722"}),"0 0 24 24"),tU=tE((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"})),t_=tE((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"})]})),tK=tE((0,n.jsx)("path",{d:"M12 2l9 5v10l-9 5-9-5V7l9-5z",stroke:"currentColor",strokeWidth:"1.5",fill:"none"})),tV=tE((0,n.jsx)("path",{d:"M4 4l8 8 8-8M4 20l8-8 8 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),tJ=tE((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"})),tY={anthropic:{Icon:tP,hasColor:!1},openai:{Icon:t$,hasColor:!1},"openai-codex":{Icon:t$,hasColor:!1},google:{Icon:tD,hasColor:!0},"google-vertex":{Icon:tD,hasColor:!0},deepseek:{Icon:tB,hasColor:!0},groq:{Icon:tA,hasColor:!1},mistral:{Icon:tN,hasColor:!0},moonshotai:{Icon:tH,hasColor:!1},"moonshotai-cn":{Icon:tH,hasColor:!1},moonshot:{Icon:tH,hasColor:!1},minimax:{Icon:tO,hasColor:!0},"minimax-cn":{Icon:tO,hasColor:!0},fireworks:{Icon:tF,hasColor:!0},huggingface:{Icon:tU,hasColor:!0},cerebras:{Icon:t_,hasColor:!0},openrouter:{Icon:tK,hasColor:!1},xai:{Icon:tV,hasColor:!1},"cloudflare-ai-gateway":{Icon:tJ,hasColor:!0},"cloudflare-workers-ai":{Icon:tJ,hasColor:!0},"vercel-ai-gateway":{Icon:tE((0,n.jsx)("path",{d:"M12 2L22 20H2L12 2z",fill:"currentColor"})),hasColor:!1},"github-copilot":{Icon:tE((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:tE((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:tE((0,n.jsx)("path",{d:"M12 2L3 18h5l4-6 4 6h5L12 2z",fill:"#0078D4"})),hasColor:!0},"kimi-coding":{Icon:tE((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:tE((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:tE((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:tE((0,n.jsx)("path",{d:"M4 8h16v2H4zm0 4h12v2H4zm0 4h8v2H4z",fill:"#3059B1"})),hasColor:!0},perplexity:{Icon:tE((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:tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#0F6CBD"}),"0 0 24 24"),hasColor:!0},grok:{Icon:tE((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1}},tq=["openai-completions","openai-responses","anthropic-messages","google-generative-ai"],tG="openai-completions",tZ={off:"none",xhigh:"xhigh"};function tX(e){let t=e?.toLowerCase().replace(/\s+/g,"-")??"";return/(^|[^a-z0-9])gpt-5($|[.-])/.test(t)}function tQ(e,t=tG){return tX(e.id)||tX(e.name)?{...e,api:e.api??("openai-responses"===t?void 0:"openai-responses"),reasoning:e.reasoning??!0,thinkingLevelMap:e.thinkingLevelMap??tZ}:e}function t0({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 t1={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 t2({value:e,onChange:t,placeholder:r,mono:i}){return(0,n.jsx)("input",{value:e,onChange:e=>t(e.target.value),placeholder:r,style:{...t1,fontFamily:i?"var(--font-mono)":"inherit"}})}function t5({value:e,onChange:t,placeholder:r,mono:o,onKeyDown:l,autoComplete:s="off",spellCheck:a=!1,style:d}){let[c,u]=(0,i.useState)(!1);return(0,i.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:{...t1,paddingRight:34,fontFamily:o?"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 t4({value:e,onChange:t,placeholder:r}){return(0,n.jsx)("input",{type:"number",value:e,onChange:e=>t(e.target.value),placeholder:r,style:t1})}function t3({value:e,onChange:t,options:r,required:i}){return(0,n.jsxs)("select",{value:e,onChange:e=>t(e.target.value),style:{...t1,color:e?"var(--text)":"var(--text-dim)"},children:[!i&&(0,n.jsx)("option",{value:"",children:"— inherit / none —"}),r.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]})}function t8({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 t6({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 t7({name:e,provider:t,onChange:r,onRename:o,onDelete:l}){let[s,a]=(0,i.useState)(e);(0,i.useEffect)(()=>a(e),[e]);let d=(e,n)=>r({...t,[e]:n});return(0,i.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)(t6,{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)(t0,{label:"Provider name",children:[(0,n.jsx)(t2,{value:s,onChange:a,placeholder:"provider-name",mono:!0}),s!==e&&s.trim()&&(0,n.jsx)("button",{onClick:()=>o(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)(t0,{label:"Base URL",children:(0,n.jsx)(t2,{value:t.baseUrl??"",onChange:e=>d("baseUrl",e||void 0),placeholder:"https://api.example.com/v1",mono:!0})}),(0,n.jsxs)(t0,{label:"API Key",children:[(0,n.jsx)(t5,{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)(t0,{label:"API",children:(0,n.jsx)(t3,{value:t.api??"openai-completions",onChange:e=>d("api",e),options:tq,required:!0})})]})}let t9=["off","minimal","low","medium","high","xhigh"],re={off:"var(--text-dim)",minimal:"#6b7280",low:"#60a5fa",medium:"#a78bfa",high:"#f472b6",xhigh:"#fb923c"};function rt({value:e,onChange:t}){let r=e??{},i=(e,n)=>{let i={...r};"omit"===n?delete i[e]:i[e]=n,t(Object.keys(i).length?i:void 0)};return(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:t9.map(e=>{let t=r[e],o=e in r?null===t?"null":"string":"omit",l="string"==typeof t?t:"",s=re[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"===o?.3:1}}),(0,n.jsx)("span",{style:{fontSize:11,fontFamily:"var(--font-mono)",color:"null"===o?"var(--text-dim)":"var(--text-muted)",textDecoration:"null"===o?"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:()=>i(e,"omit"),style:{...a,..."omit"===o?d:{}},children:"Default"}),(0,n.jsx)("button",{onClick:()=>i(e,null),style:{...a,borderLeft:"1px solid var(--border)",..."null"===o?{background:"#ef4444",color:"#fff",fontWeight:600}:{}},children:"Disabled"})]}),(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,border:`1px solid ${"string"===o?"var(--accent)":"var(--border)"}`,overflow:"hidden",transition:"border-color 0.1s"},children:[(0,n.jsx)("button",{onClick:()=>i(e,l||e),style:{...a,..."string"===o?d:{},borderRight:"1px solid var(--border)",flexShrink:0},children:"Custom"}),(0,n.jsx)("input",{value:l,onChange:t=>i(e,t.target.value),onFocus:()=>{"string"!==o&&i(e,l||e)},placeholder:e,maxLength:10,style:{width:"12ch",background:"string"===o?"var(--bg)":"var(--bg-panel)",border:"none",outline:"none",color:"string"===o?"var(--text)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,padding:"4px 7px",transition:"background 0.1s, color 0.1s"}})]})]},e)})})}let rr={thinkingFormat:"deepseek",requiresReasoningContentOnAssistantMessages:!0};function rn({providerName:e,provider:t,model:r,onChange:o,onDelete:l}){let[s,a]=(0,i.useState)({phase:"idle"}),d=(e,t)=>o({...r,[e]:t}),c=e=>{o(tQ(e,t.api??tG))},u=(()=>{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,i.useEffect)(()=>{a({phase:"idle"})},[e,t.baseUrl,t.api,t.apiKey,r.id,r.api]);let p=(0,i.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})}),i=await n.json();if(!n.ok||!i.ok)return void a({phase:"error",message:i.error??`HTTP ${n.status}`,latencyMs:i.latencyMs,status:i.status});a({phase:"success",latencyMs:i.latencyMs,status:i.status,responseText:i.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)(t6,{children:"Model"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[u&&(0,n.jsx)("span",{title:u,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:u}),(0,n.jsxs)("button",{onClick:p,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)(t0,{label:"ID *",children:(0,n.jsx)(t2,{value:r.id,onChange:e=>c({...r,id:e}),placeholder:"model-id",mono:!0})}),(0,n.jsx)(t0,{label:"Name",children:(0,n.jsx)(t2,{value:r.name??"",onChange:e=>c({...r,name:e||void 0}),placeholder:"Display name"})})]}),(0,n.jsx)(t0,{label:"API override",children:(0,n.jsx)(t3,{value:r.api??"",onChange:e=>d("api",e||void 0),options:tq})}),(0,n.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,n.jsx)(t8,{label:"Reasoning / thinking",checked:r.reasoning??!1,onChange:e=>d("reasoning",e||void 0)}),(0,n.jsx)(t8,{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)(t8,{label:"DeepSeek thinking compat",checked:r.compat?.thinkingFormat==="deepseek",onChange:e=>o(function(e,t){if(t)return{...e,compat:{...e.compat??{},...rr}};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)(t6,{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)(rt,{value:r.thinkingLevelMap,onChange:e=>d("thinkingLevelMap",e)})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(t0,{label:"Context window (tokens)",children:(0,n.jsx)(t4,{value:void 0!==r.contextWindow?String(r.contextWindow):"",onChange:e=>d("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,n.jsx)(t0,{label:"Max output tokens",children:(0,n.jsx)(t4,{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)(t6,{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)(t0,{label:e,children:(0,n.jsx)(t4,{value:r.cost?.[e]!==void 0?String(r.cost[e]):"",onChange:t=>{let n;return n=parseFloat(t),void o({...r,cost:{...r.cost??{},[e]:isNaN(n)?void 0:n}})},placeholder:"0"})},e))})]})]})}function ri({provider:e,onRefresh:t}){let[r,o]=(0,i.useState)({phase:"idle"}),[l,s]=(0,i.useState)(""),a=(0,i.useRef)(null),d=(0,i.useRef)(null);(0,i.useEffect)(()=>{("auth"===r.phase||"prompt"===r.phase)&&setTimeout(()=>d.current?.focus(),50)},[r.phase]),(0,i.useEffect)(()=>{o({phase:"idle"}),s(""),a.current?.close(),a.current=null},[e.id]),(0,i.useEffect)(()=>()=>{a.current?.close()},[]);let c=(0,i.useCallback)(()=>{a.current?.close(),o({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?(o({phase:"auth",url:n.url,instructions:n.instructions??null,token:n.token}),window.open(n.url,"_blank","noopener,noreferrer")):"device_code"===n.type?(o({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?o({phase:"prompt",message:n.message,placeholder:n.placeholder??null,token:n.token}):"select_request"===n.type?o({phase:"select",message:n.message,options:n.options??[],token:n.token}):"progress"===n.type?o({phase:"progress",message:n.message}):"success"===n.type?(r.close(),o({phase:"success"}),t()):"error"===n.type?(r.close(),o({phase:"error",message:n.message})):"cancelled"===n.type&&(r.close(),o({phase:"idle"}))},r.onerror=()=>{r.close(),o(e=>"success"===e.phase?e:{phase:"error",message:"Connection lost"})}},[e.id,t]),u=(0,i.useCallback)(async()=>{await fetch(`/api/auth/logout/${encodeURIComponent(e.id)}`,{method:"POST"}),o({phase:"idle"}),t()},[e.id,t]),p=(0,i.useCallback)(async(t,r)=>{if(r.trim()){o({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(()=>({}));o({phase:"error",message:e.error??`Server error ${n.status}`});return}s("")}catch(e){o({phase:"error",message:e instanceof Error?e.message:"Network error"})}}},[e.id]),h=(0,i.useCallback)(async(t,r)=>{o({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(()=>({}));o({phase:"error",message:e.error??`Server error ${n.status}`})}}catch(e){o({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)(t6,{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(),o({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 ro({provider:e,onRefresh:t}){let[r,o]=(0,i.useState)(""),[l,s]=(0,i.useState)(!1),[a,d]=(0,i.useState)(!1),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(!1);(0,i.useEffect)(()=>{o(""),u(null),h(!1)},[e.id]);let x=(0,i.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()})}),i=await n.json();!n.ok||i.error?u(i.error??`HTTP ${n.status}`):(o(""),h(!0),setTimeout(()=>h(!1),2e3),t())}catch(e){u(String(e))}finally{s(!1)}}},[r,e.id,t]),g=(0,i.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)(t6,{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)(t0,{label:"API Key",children:(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(t5,{value:r,onChange:o,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 rl({id:e,size:t}){let r=tY[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 rs({oauthProviders:e,apiKeyProviders:t,onSelectOAuth:r,onSelectApiKey:o,onAddCustom:l,onDiscover:s,onClose:a}){let[d,c]=(0,i.useState)(""),u=(0,i.useRef)(null);(0,i.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)(rl,{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:()=>{o(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)(rl,{id:e.id,size:28})]},e.id))]})})]})})}function ra({existingProviders:e,onImport:t,onClose:r}){let[o,l]=(0,i.useState)(""),[s,a]=(0,i.useState)(""),[d,c]=(0,i.useState)("custom-provider"),[u,p]=(0,i.useState)(new Set),[h,x]=(0,i.useState)({phase:"idle"}),g=(0,i.useCallback)(async()=>{let e=o.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,o,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)(t0,{label:"Base URL",children:(0,n.jsx)(t2,{value:o,onChange:l,placeholder:"https://api.example.com",mono:!0})}),(0,n.jsx)(t0,{label:"API Key",children:(0,n.jsx)(t5,{value:s,onChange:a,placeholder:"optional for local providers",mono:!0})}),(0,n.jsx)(t0,{label:"Provider name",children:(0,n.jsx)(t2,{value:d,onChange:c,placeholder:"provider-name",mono:!0})}),(0,n.jsx)("button",{onClick:g,disabled:!o.trim()||"loading"===h.phase,style:{height:31,padding:"0 14px",background:o.trim()&&"loading"!==h.phase?"var(--accent)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:5,color:o.trim()&&"loading"!==h.phase?"#fff":"var(--text-dim)",cursor:o.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],i=u.has(e.id);return(0,n.jsxs)("label",{style:{display:"grid",gridTemplateColumns:"24px minmax(0, 1fr) 90px 90px 90px 70px",gap:10,alignItems:"center",padding:"8px 16px",borderBottom:"1px solid rgba(127,127,127,0.12)",background:i?"var(--bg-subtle)":"transparent",cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:i,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":""}),(0,n.jsx)("span",{style:{fontSize:10,color:e.input?.includes("image")?"var(--accent)":"var(--text-dim)"},children:e.input?.includes("image")?"image":""})]},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=o.trim().replace(/\/+$/,""),i=s.trim(),l=Object.entries(e).find(([,e])=>(e.baseUrl??"").replace(/\/+$/,"")===n&&(e.apiKey??"")===i),a=l?.[0]??d.trim(),c=e[a],p=new Map((c?.models??[]).map(e=>[e.id,e])),h=c?.api??tG,x=0;for(let e of f.piModels)u.has(e.id)&&!p.has(e.id)&&(p.set(e.id,tQ(e,h)),x+=1);t(a,{...c??{},baseUrl:n,api:h,...i?{apiKey:i}:{},models:Array.from(p.values())},x),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 rd({onClose:e,embedded:t=!1}){let[r,o]=(0,i.useState)({providers:{}}),[l,s]=(0,i.useState)(!0),[a,d]=(0,i.useState)(!1),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(null),[m,b]=(0,i.useState)([]),[y,j]=(0,i.useState)([]),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(!1),T=(0,i.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>b(e.providers)).catch(()=>{})},[]),z=(0,i.useCallback)(()=>{fetch("/api/auth/all-providers").then(e=>e.json()).then(e=>j(e.providers)).catch(()=>{})},[]);(0,i.useEffect)(()=>{fetch("/api/models-config").then(e=>e.json()).then(e=>{let t=e.providers?e:{...e,providers:{}};o(t);let r=Object.keys(t.providers??{});r.length>0&&v({type:"provider",name:r[0]})}).catch(()=>o({providers:{}})).finally(()=>s(!1)),T(),z()},[T,z]);let I=(0,i.useCallback)(()=>{let e="new-provider",t=1;for(;r.providers?.[e];)e=`new-provider-${t++}`;o(t=>({...t,providers:{...t.providers??{},[e]:{api:"openai-completions"}}})),v({type:"provider",name:e})},[r.providers]),M=(0,i.useCallback)((e,t)=>{o(r=>({...r,providers:{...r.providers??{},[e]:t}}))},[]),W=(0,i.useCallback)((e,t)=>{o(r=>{let n=Object.entries(r.providers??{}),i=n.findIndex(([t])=>t===e);return -1===i?r:(n[i]=[t,n[i][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)},[]),L=(0,i.useCallback)(e=>{o(t=>{let r={...t.providers??{}};return delete r[e],{...t,providers:r}}),o(e=>{let t=Object.keys(e.providers??{});return v(t.length>0?{type:"provider",name:t[0]}:null),e})},[]),R=(0,i.useCallback)(e=>{o(t=>{let r=t.providers?.[e]??{},n=[...r.models??[],{id:""}];return{...t,providers:{...t.providers??{},[e]:{...r,models:n}}}}),o(t=>{let r=(t.providers?.[e]?.models?.length??1)-1;return v({type:"model",providerName:e,index:r}),t})},[]),E=(0,i.useCallback)((e,t,r)=>{o(n=>{let i=n.providers?.[e]??{},o=[...i.models??[]];return o[t]=r,{...n,providers:{...n.providers??{},[e]:{...i,models:o}}}})},[]),P=(0,i.useCallback)((e,t)=>{o(r=>{let n=r.providers?.[e]??{},i=[...n.models??[]];return i.splice(t,1),{...r,providers:{...r.providers??{},[e]:{...n,models:i.length?i:void 0}}}}),v({type:"provider",name:e})},[]),$=(0,i.useCallback)((e,t,r)=>{o(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.`)},[]),D=(0,i.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]),B=Object.entries(r.providers??{}),A=m.filter(e=>e.loggedIn),N=y.filter(e=>e.configured),H=(()=>{if(!f)return null;if("oauth"===f.type){let e=m.find(e=>e.id===f.providerId);return e?(0,n.jsx)(ri,{provider:e,onRefresh:T},e.id):null}if("apikey"===f.type){let e=y.find(e=>e.id===f.providerId);return e?(0,n.jsx)(ro,{provider:e,onRefresh:z},e.id):null}if("provider"===f.type){let e=r.providers?.[f.name];return e?(0,n.jsx)(t7,{name:f.name,provider:e,onChange:e=>M(f.name,e),onRename:e=>W(f.name,e),onDelete:()=>L(f.name)},f.name):null}let e=r.providers?.[f.providerName],t=e?.models?.[f.index];return t?(0,n.jsx)(rn,{providerName:f.providerName,provider:e,model:t,onChange:e=>E(f.providerName,f.index,e),onDelete:()=>P(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)(rl,{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)}),N.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)(rl,{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||N.length>0)&&B.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…"}):B.map(([e,t])=>{let r=f?.type==="provider"&&f.name===e,i=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})]}),i.map((t,r)=>{let i=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:i?"var(--bg-selected)":"none"},onMouseEnter:e=>{i||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{i||(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(),R(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:H??(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:D,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)(rs,{oauthProviders:m,apiKeyProviders:y,onSelectOAuth:e=>v({type:"oauth",providerId:e}),onSelectApiKey:e=>v({type:"apikey",providerId:e}),onAddCustom:I,onDiscover:()=>C(!0),onClose:()=>w(!1)}),S&&(0,n.jsx)(ra,{existingProviders:r.providers??{},onImport:$,onClose:()=>C(!1)})]})}function rc(e){return e.replace(/^\/(?:Users|home)\/[^/]+/,"~")}function ru(e){let t=e.sourceInfo?.source,r=e.sourceInfo?.scope;return"user"===r||"user"===t?"global":"project"===r||"project"===t?"project":"path"}function rp({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 rh({skill:e,cwd:t,onToggle:r,toggling:i,saveError:o}){let l=ru(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 rc(e)}(e.filePath)}),(0,n.jsx)(rp,{enabled:s,loading:i,onToggle:()=>r(e)}),o&&(0,n.jsx)("span",{style:{fontSize:12,color:"#f87171",flexShrink:0},children:o})]}),(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 rx({cwd:e,onInstalled:t}){let[r,o]=(0,i.useState)(""),[l,s]=(0,i.useState)([]),[a,d]=(0,i.useState)(!1),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(null),[f,v]=(0,i.useState)(null),[m,b]=(0,i.useState)([]),[y,j]=(0,i.useState)(new Set),[k,w]=(0,i.useState)("global"),S=(0,i.useRef)(null),C=(0,i.useRef)(null);(0,i.useEffect)(()=>{S.current?.focus()},[]),(0,i.useEffect)(()=>()=>{C.current?.abort()},[]);let T=(0,i.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)}}},[]),z=(0,i.useCallback)(async r=>{let n=new AbortController;C.current=n,h(r),g(null),v("Starting installer"),b(["Starting installer"]);try{let i=await fetch("/api/skills/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({package:r,scope:k,cwd:e,stream:!0}),signal:n.signal});if(!i.ok||!i.body){let e=await i.json().catch(()=>null);g(e?.error??`HTTP ${i.status}`);return}let o=i.body.getReader(),l=new TextDecoder,s="",a=!1,d=e=>{"progress"===e.type?(e.stage&&v(e.stage),e.line&&b(t=>(t.at(-1)===e.line?t:[...t,e.line]).slice(-8))):"done"===e.type&&e.success?(a=!0,v("Installed"),b(e=>[...e,"Installed"].slice(-8))):"error"===e.type&&g(e.error??"Install failed")};for(;;){let{value:e,done:t}=await o.read(),r=(s+=l.decode(e??new Uint8Array,{stream:!t})).split("\n");for(let e of(s=r.pop()??"",r))e.trim()&&d(JSON.parse(e));if(t)break}s.trim()&&d(JSON.parse(s)),a&&(j(e=>new Set(e).add(r)),t())}catch(e){n.signal.aborted?(v("Canceled"),b(e=>[...e,"Canceled"].slice(-8))):g(String(e))}finally{C.current===n&&(C.current=null),h(null)}},[t,k,e]),I=(0,i.useCallback)(()=>{C.current?.abort()},[]),M="global"===k?"~/.pi/agent/skills/":`${rc(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:S,value:r,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"===e.key&&T(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:()=>T(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:()=>w(e),style:{padding:"3px 10px",border:"none",cursor:"pointer",background:k===e?"var(--bg-selected)":"none",color:k===e?"var(--text)":"var(--text-dim)",fontWeight:k===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:["→ ",M]})]}),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}),p&&(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",padding:10,display:"flex",flexDirection:"column",gap:8},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,n.jsx)("div",{style:{width:10,height:10,borderRadius:"50%",border:"2px solid var(--border)",borderTopColor:"var(--accent)",animation:"spin 0.8s linear infinite",flexShrink:0}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:f??"Installing"}),(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:p})]}),(0,n.jsx)("button",{onClick:I,style:{padding:"4px 9px",fontSize:12,borderRadius:5,border:"1px solid var(--border)",background:"none",color:"var(--text-muted)",cursor:"pointer",flexShrink:0},children:"Cancel"})]}),m.length>0&&(0,n.jsx)("div",{style:{maxHeight:120,overflow:"auto",fontFamily:"var(--font-mono)",fontSize:11,lineHeight:1.6,color:"var(--text-dim)",borderTop:"1px solid var(--border)",paddingTop:8},children:m.map((e,t)=>(0,n.jsx)("div",{children:e},`${t}-${e}`))})]})]}),l.length>0?(0,n.jsx)("div",{style:{flex:1,overflowY:"auto"},children:l.map(e=>{let t=y.has(e.package),r=p===e.package,i=e.package.indexOf("@"),o=i>-1?e.package.slice(0,i):e.package,l=i>-1?e.package.slice(i+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??o}),(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:o}),(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||null!==p||z(e.package)},disabled:t||null!==p,style:{flexShrink:0,padding:"5px 14px",fontSize:12,fontWeight:500,borderRadius:5,border:"1px solid var(--border)",cursor:r?"wait":t||null!==p?"not-allowed":"pointer",background:t?"rgba(34,197,94,0.1)":r?"rgba(59,130,246,0.08)":"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 rg({cwd:e,onClose:t,embedded:r=!1}){let[o,l]=(0,i.useState)([]),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[u,p]=(0,i.useState)(null),[h,x]=(0,i.useState)(new Set),[g,f]=(0,i.useState)(null),[v,m]=(0,i.useState)(!1),b=(0,i.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,i.useEffect)(()=>{b()},[e]);let y=(0,i.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=o.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:rc(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===o.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=o.filter(e=>ru(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)(rx,{cwd:e,onInstalled:()=>{b()}}):s?null:j?(0,n.jsx)(rh,{skill:j,cwd:e,onToggle:y,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 rf=[{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 rv(e){return e?e.replace(/^\/(?:Users|home)\/[^/]+/,"~"):""}function rm(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 rb(e){return{id:"",language:e,displayName:"",command:"python"===e?"python3":"R",argsText:JSON.stringify("python"===e?["-u"]:["--slave","--vanilla"]),envText:"{}"}}function ry(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 rj={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"},rk={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 rw({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 rS({cwd:e}){let[t,r]=(0,i.useState)("python"),[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[u,p]=(0,i.useState)(null),[h,x]=(0,i.useState)(null),[g,f]=(0,i.useState)([]),[v,m]=(0,i.useState)(null),[b,y]=(0,i.useState)("view"),[j,k]=(0,i.useState)(()=>rb("python")),[w,S]=(0,i.useState)(1728e5),[C,T]=(0,i.useState)("pdf"),[z,I]=(0,i.useState)(300),[M,W]=(0,i.useState)(800),[L,R]=(0,i.useState)(600),[E,P]=(0,i.useState)(!1),$=(0,i.useCallback)(async()=>{a(!0),p(null);try{let r=e?`?cwd=${encodeURIComponent(e)}`:"",n=await fetch(`/api/plot-kernels${r}`),i=await n.json();if(!n.ok||i.error)throw Error(i.error??`HTTP ${n.status}`);l(i),f([]),x(null),m(e=>{if(e&&i.kernels.some(t=>t.id===e))return e;let r=i.kernels.find(e=>e.language===t&&e.isEffective);return r?.id??i.kernels.find(e=>e.language===t)?.id??null})}catch(e){p(e instanceof Error?e.message:String(e))}finally{a(!1)}},[e,t]);(0,i.useEffect)(()=>{$()},[$]),(0,i.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),e||("string"==typeof t.settings?.saveFormat&&["pdf","png","svg"].includes(t.settings.saveFormat)&&T(t.settings.saveFormat),"number"==typeof t.settings?.saveDpi&&I(t.settings.saveDpi),"number"==typeof t.settings?.saveWidth&&W(t.settings.saveWidth),"number"==typeof t.settings?.saveHeight&&R(t.settings.saveHeight))}).catch(()=>{}),()=>{e=!0}},[]);let D=(0,i.useMemo)(()=>(o?.kernels??[]).filter(e=>e.language===t),[t,o?.kernels]),B=D.find(e=>e.id===v)??null;(0,i.useEffect)(()=>{if("new"===b)return void k(rb(t));let e=B??D.find(e=>e.isEffective)??D[0]??null;e?(v!==e.id&&m(e.id),k(ry(e)),y("view")):(m(null),k(rb(t)),y("new"))},[t,o?.kernels]);let A=(0,i.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]),N=(0,i.useCallback)(async e=>{let t=await A({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`:""}.`)},[A]),H=(0,i.useCallback)(async e=>{await A({action:"select",language:e.language,kernelId:e.id},"select")&&x(`Selected ${e.displayName} for this project.`)},[A]),O=(0,i.useCallback)(async e=>{await A({action:"setDefault",language:e.language,kernelId:e.id},"default")&&x(`Set ${e.displayName} as global default.`)},[A]),F=(0,i.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 A({action:"new"===b?"add":"edit",kernelId:e,kernel:t},"save"))return;m(e),y("view"),x("new"===b?"Kernel added.":"Kernel saved.")}catch(e){p(e instanceof Error?e.message:String(e))}},[j,b,A]),U=(0,i.useCallback)(async e=>{let r=await A({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),y(n?"view":"new"),x("Kernel deleted.")},[t,A]),_=()=>{y("new"),m(null),k(rb(t)),p(null),x(null)},K=(0,i.useCallback)(async e=>{S(e),P(!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(`Workbench idle timeout set to ${rm(r.settings.plotIdleTimeoutMs)}.`))}catch(e){S(w),p(e instanceof Error?e.message:String(e))}finally{P(!1)}},[w]),V=(0,i.useCallback)(async()=>{P(!0),p(null);try{let e=await fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{saveFormat:C,saveDpi:z,saveWidth:M,saveHeight:L}})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);x("Save defaults updated.")}catch(e){p(e instanceof Error?e.message:String(e))}finally{P(!1)}},[C,z,M,L]);return(0,n.jsxs)("div",{style:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{flexShrink:0,padding:"12px 16px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text)"},children:"Workbench Runtime"}),(0,n.jsx)("div",{style:{marginTop:4,fontSize:12,color:"var(--text-muted)",lineHeight:1.5},children:"Manage the warm R/Python kernels used by Workbench sessions and iterative analysis turns."})]}),(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 i=t===e;return(0,n.jsx)("button",{type:"button",onClick:()=>r(e),style:{height:26,padding:"0 12px",border:"none",borderRadius:5,background:i?"var(--bg)":"transparent",color:i?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:12,fontWeight:i?600:500},children:"python"===e?"Python":"R"},e)})}),(0,n.jsxs)("button",{type:"button",onClick:()=>void N(t),disabled:!!d,style:{...rj,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 N("all"),disabled:!!d,style:{...rj,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:rf.map(e=>{let t=w===e.value;return(0,n.jsx)("button",{type:"button",onClick:()=>{t||K(e.value)},disabled:E,title:`Close inactive Workbench kernels after ${rm(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:E?"default":"pointer",fontSize:11,fontWeight:t?700:500,opacity:E?.65:1},children:e.label},e.label)})})]}),(0,n.jsxs)("button",{type:"button",onClick:_,style:{...rj,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"]})]}),(0,n.jsxs)("div",{style:{flexShrink:0,padding:"10px 16px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:700,color:"var(--text)"},children:"Save defaults"}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"Format"}),(0,n.jsx)("div",{style:{display:"flex",padding:2,border:"1px solid var(--border)",borderRadius:7,background:"var(--bg-panel)"},children:["pdf","png","svg"].map(e=>{let t=C===e;return(0,n.jsx)("button",{type:"button",onClick:()=>T(e),style:{height:24,padding:"0 8px",border:"none",borderRadius:5,background:t?"var(--bg)":"transparent",color:t?"var(--accent)":"var(--text-muted)",cursor:"pointer",fontSize:11,fontWeight:t?700:500},children:e.toUpperCase()},e)})}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"DPI"}),(0,n.jsx)("input",{type:"number",value:z,onChange:e=>I(Number(e.target.value)||300),min:72,max:1200,style:{width:60,height:26,padding:"0 6px",fontSize:11,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)"}}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"W"}),(0,n.jsx)("input",{type:"number",value:M,onChange:e=>W(Number(e.target.value)||800),min:100,max:8e3,style:{width:65,height:26,padding:"0 6px",fontSize:11,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)"}}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:11},children:"H"}),(0,n.jsx)("input",{type:"number",value:L,onChange:e=>R(Number(e.target.value)||600),min:100,max:8e3,style:{width:65,height:26,padding:"0 6px",fontSize:11,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)"}}),(0,n.jsx)("button",{type:"button",onClick:()=>void V(),disabled:E,style:{...rj,background:"var(--accent)",borderColor:"var(--accent)",color:"#fff",opacity:E?.6:1},children:E?"Saving...":"Save"})]}),(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:rv(o?.paths.global??"")})]}),e&&(0,n.jsxs)("div",{children:["Project: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:rv(o?.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===D.length?(0,n.jsx)("div",{style:{padding:"10px 8px",color:"var(--text-dim)",fontSize:12},children:"No kernels found"}):D.map(e=>{let t=v===e.id&&"new"!==b;return(0,n.jsxs)("button",{type:"button",onClick:()=>{m(e.id),y("view"),k(ry(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()}(o?.scanCache?.lastScan)]})]}),(0,n.jsx)("div",{style:{flex:1,minWidth:0,minHeight:0,overflowY:"auto",padding:18},children:"view"===b&&B?(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:B.displayName}),B.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:B.id})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},children:[(0,n.jsx)(rw,{label:"Command",children:(0,n.jsx)("input",{readOnly:!0,value:B.command,style:{...rk,color:"var(--text-muted)"}})}),(0,n.jsx)(rw,{label:"Args",children:(0,n.jsx)("input",{readOnly:!0,value:JSON.stringify(B.args),style:{...rk,color:"var(--text-muted)"}})})]}),(0,n.jsx)(rw,{label:"Environment",children:(0,n.jsx)("textarea",{readOnly:!0,value:JSON.stringify(B.env,null,2),rows:5,style:{...rk,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 H(B),disabled:!e||"select"===d,style:{...rj,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 O(B),disabled:"default"===d,style:{...rj,opacity:"default"===d?.6:1},children:"Set default"}),(0,n.jsx)("button",{type:"button",onClick:()=>{y("edit"),m(B.id),k(ry(B)),p(null),x(null)},style:rj,children:"Edit"}),!B.id.startsWith("default-")&&(0,n.jsx)("button",{type:"button",onClick:()=>void U(B),disabled:"delete"===d,style:{...rj,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"===b?"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)(rw,{label:"Kernel ID",children:(0,n.jsx)("input",{value:j.id,readOnly:"edit"===b,onChange:e=>k(t=>({...t,id:e.target.value})),placeholder:"python"===t?"my-python":"my-r",style:{...rk,color:"edit"===b?"var(--text-muted)":"var(--text)"}})}),(0,n.jsx)(rw,{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:rk})})]}),(0,n.jsx)(rw,{label:"Command",children:(0,n.jsx)("input",{value:j.command,onChange:e=>k(t=>({...t,command:e.target.value})),placeholder:"/usr/bin/python3",style:rk})}),(0,n.jsx)(rw,{label:"Args JSON",children:(0,n.jsx)("input",{value:j.argsText,onChange:e=>k(t=>({...t,argsText:e.target.value})),style:rk})}),(0,n.jsx)(rw,{label:"Env JSON",children:(0,n.jsx)("textarea",{value:j.envText,onChange:e=>k(t=>({...t,envText:e.target.value})),rows:6,style:{...rk,resize:"vertical"}})}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void F(),disabled:"save"===d,style:{...rj,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=B??D.find(e=>e.isEffective)??D[0]??null;e?(m(e.id),k(ry(e)),y("view")):_(),p(null)},style:rj,children:"Cancel"})]})]})})]})]})}function rC({open:e,initialPath:t,onClose:r,onSelect:o}){let[l,s]=(0,i.useState)(""),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)([]),[p,h]=(0,i.useState)([]),[x,g]=(0,i.useState)(""),[f,v]=(0,i.useState)(!1),[m,b]=(0,i.useState)(null),y=(0,i.useCallback)(async e=>{v(!0),b(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){b(e instanceof Error?e.message:String(e))}finally{v(!1)}},[]);return((0,i.useEffect)(()=>{e&&y(t||void 0)},[y,t,e]),(0,i.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();let t=x.trim();t&&o(t)},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:"button",onClick:()=>{let e=x.trim();e&&y(e)},disabled:!x.trim()||f,style:{height:32,padding:"0 11px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:x.trim()&&!f?"var(--text-muted)":"var(--text-dim)",cursor:x.trim()&&!f?"pointer":"default",fontSize:12},children:"Browse"}),(0,n.jsx)("button",{type:"submit",disabled:!x.trim(),style:{height:32,padding:"0 11px",border:"none",borderRadius:6,background:x.trim()?"var(--accent)":"var(--bg-hover)",color:x.trim()?"#fff":"var(--text-dim)",cursor:x.trim()?"pointer":"default",fontSize:12,fontWeight:650},children:"Use Path"})]})}),(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 y(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&&y(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 y(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&&o(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}var rT=r(7834);function rz({text:e,label:t="Copy",title:r,onCopied:o,onError:l}){let[s,a]=(0,i.useState)(!1);(0,i.useEffect)(()=>{if(!s)return;let e=setTimeout(()=>a(!1),1500);return()=>clearTimeout(e)},[s]);let d=(0,i.useCallback)(async()=>{try{await (0,rT.D)(e),a(!0),o?.()}catch(e){l?.(e instanceof Error?e:Error(String(e)))}},[o,l,e]);return(0,n.jsx)("button",{type:"button",onClick:()=>void d(),title:r??(s?"Copied":t),style:{height:24,padding:"0 8px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-hover)",color:s?"#22c55e":"var(--text-muted)",fontSize:10,fontWeight:600,cursor:"pointer",flexShrink:0},children:s?"Copied":t})}r(41463);let rI="annovibe-im-gateway";function rM({cwd:e,embedded:t=!1}){let[r,o]=(0,i.useState)(null),[l,s]=(0,i.useState)(null),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(""),[p,h]=(0,i.useState)(""),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(""),[m,b]=(0,i.useState)(""),[y,j]=(0,i.useState)(!1),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(!1),[T,z]=(0,i.useState)(null),[I,M]=(0,i.useState)(null),W=(0,i.useCallback)((e,t)=>{"success"===t?(M(e),z(null),setTimeout(()=>M(null),4500)):(z(e),M(null))},[]),L=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/im/gateway-status",{cache:"no-store"}),t=await e.json();if(!e.ok||!t.gateway)return;d(t.gateway)}catch{}},[]),R=(0,i.useCallback)(async()=>{j(!0),z(null);try{let t=await fetch(`/api/im/project?cwd=${encodeURIComponent(e)}`,{cache:"no-store"}),r=await t.json();if(!t.ok||!("enabled"in r))throw Error(r.error??`HTTP ${t.status}`);o(r),s(r.gatewayToken??null),u(r.botId),g(r.requireMentionInGroup),v(r.boundChatId??""),b(r.allowedUsers.join("\n")),h("")}catch(e){W(e instanceof Error?e.message:String(e),"error")}finally{j(!1)}},[e,W]);(0,i.useEffect)(()=>{R()},[R]),(0,i.useEffect)(()=>{if(!r?.enabled)return void d(null);L();let e=setInterval(()=>{L()},12e3);return()=>clearInterval(e)},[r?.enabled,L]);let E=(0,i.useCallback)(async t=>{w(!0),z(null),M(null);try{let r=await fetch("/api/im/project",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,config:t})}),n=await r.json();if(!r.ok||!("enabled"in n))throw Error(n.error??`HTTP ${r.status}`);o(n),s(n.gatewayToken??null),h(""),W("IM settings saved.","success")}catch(e){W(e instanceof Error?e.message:String(e),"error")}finally{w(!1)}},[e,W]),P=(0,i.useCallback)(e=>{E({enabled:e,botId:c.trim(),botSecret:p.trim()||void 0,requireMentionInGroup:x,boundChatId:f.trim()||null,allowedUsers:rE(m)})},[c,p,x,f,m,E]),$=(0,i.useCallback)(()=>{E({enabled:r?.enabled??!1,botId:c.trim(),botSecret:p.trim()||void 0,requireMentionInGroup:x,boundChatId:f.trim()||null,allowedUsers:rE(m)})},[r?.enabled,c,p,x,f,m,E]),D=(0,i.useCallback)(()=>{E({regeneratePairingCode:!0})},[E]),B=(0,i.useCallback)(async()=>{if(r?.sessionId&&window.confirm("Reset the IM thread for this project?\n\nThis clears the stored WeCom session. Pairing and bot settings are kept. The next IM message starts a fresh session.")){C(!0);try{let t=await fetch(`/api/im/session-ids?cwd=${encodeURIComponent(e)}`,{method:"DELETE"}),r=await t.json();if(!t.ok||!r.ok)throw Error(r.error??`HTTP ${t.status}`);o(e=>e?{...e,sessionId:null}:null),W("IM thread reset.","success")}catch(e){W(e instanceof Error?e.message:String(e),"error")}finally{C(!1)}}},[r?.sessionId,e,W]);if(y&&!r)return(0,n.jsx)(rD,{label:"Loading IM settings..."});let A=r?.enabled??!1;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,paddingTop:12*!!t},children:[(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:10,background:"var(--bg-panel)",padding:12,display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsx)(rR,{label:"WeCom bot for this project",description:A?"启动 im-gateway 后即可通过企业微信 AI bot 与此项目交互。":"关闭 — 开启后可绑定企业微信 bot 到此项目。",checked:A,disabled:k,onChange:P}),A?(0,n.jsxs)(n.Fragment,{children:[a?(0,n.jsx)(rW,{status:a}):null,(0,n.jsx)(rP,{label:"Bot ID",value:c,onChange:u,placeholder:"从企业微信 AI bot 控制台获取"}),(0,n.jsx)(rP,{label:r?.hasSecret?"Bot Secret(留空则不修改)":"Bot Secret",value:p,onChange:h,placeholder:r?.hasSecret?"留空保留现有 secret":"从企业微信 AI bot 控制台获取",secret:!0}),(0,n.jsx)(rR,{label:"群聊中需要 @提及 bot 才响应",description:"开启后,群聊中用户必须 @bot 才会被处理。",checked:x,disabled:k,compact:!0,onChange:g}),(0,n.jsx)(rP,{label:"绑定群聊 ID(可选)",value:f,onChange:v,placeholder:"限制仅此群聊可交互"}),(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)("span",{children:"允许用户 ID(一行一个)"}),(0,n.jsx)("textarea",{value:m,onChange:e=>b(e.target.value),rows:3,style:rN,placeholder:"用户也可通过配对码自助授权"})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:[(0,n.jsx)(r$,{primary:!0,disabled:k,onClick:$,children:k?"保存中…":"保存 IM 配置"}),(0,n.jsx)(r$,{disabled:k,onClick:D,children:"重新生成配对码"})]})]}):null]}),A&&r?(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:10,background:"var(--bg-panel)",padding:12,fontSize:11,color:"var(--text-muted)",display:"flex",flexDirection:"column",gap:8},children:[(0,n.jsx)(rL,{label:"配对码",value:r.pairingCode,copyLabel:"复制配对码"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{style:{color:"var(--text)"},children:"IM session:"})," ",r.sessionId?`${r.sessionId.slice(0,12)}…`:"尚未启动"]}),r.sessionId?(0,n.jsx)(r$,{danger:!0,disabled:k||S,onClick:()=>void B(),children:S?"重置中…":"重置 IM thread"}):null]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{style:{color:"var(--text)"},children:"Gateway token:"})," ",l?`${l.slice(0,8)}…`:"保存时生成"]}),(0,n.jsx)(rL,{label:"Gateway 启动命令",value:rI,copyLabel:"复制命令",mono:!0}),(0,n.jsxs)("div",{style:{lineHeight:1.55,color:"var(--text-dim)"},children:["启动 ",(0,n.jsx)("code",{style:rB,children:"annovibe"})," 后,在",(0,n.jsx)("strong",{style:{color:"var(--text-muted)",fontWeight:600},children:"同一 Linux 账户"}),"中运行"," ",(0,n.jsx)("code",{style:rB,children:rI}),"。 Gateway 通过本地 API 读取已启用的项目配置和 bot secret —— 无需手动复制文件。"]}),(0,n.jsxs)("div",{style:{lineHeight:1.55,color:"var(--text-dim)"},children:["配对码与白名单: ",(0,n.jsxs)("code",{style:rB,children:["~/.pi/agent/im/","<project>",".json"]})]}),T&&(0,n.jsx)("div",{style:{padding:"6px 10px",background:"rgba(239,68,68,0.08)",borderRadius:6,border:"1px solid rgba(239,68,68,0.3)",color:"#ef4444",fontSize:12},children:T}),I&&(0,n.jsx)("div",{style:{padding:"6px 10px",background:"rgba(34,197,94,0.08)",borderRadius:6,border:"1px solid rgba(34,197,94,0.3)",color:"#22c55e",fontSize:12},children:I})]}):null]})}function rW({status:e}){var t,r,i,o;let l=function(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}(e.startedAt),s=e.alive&&e.pid?`pid ${e.pid}${l?` \xb7 since ${l}`:""}`:l?`last started ${l}`:"在同一个 Linux 账户下运行 annovibe-im-gateway";return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10,padding:"8px 10px",borderRadius:8,border:`1px solid ${"running"===(t=e.tone)?"rgba(34,197,94,0.28)":"stale"===t?"rgba(245,158,11,0.28)":"rgba(248,113,113,0.28)"}`,background:"running"===(r=e.tone)?"rgba(34,197,94,0.08)":"stale"===r?"rgba(245,158,11,0.08)":"rgba(248,113,113,0.08)"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",marginTop:4,flexShrink:0,background:"running"===(i=e.tone)?"#22c55e":"stale"===i?"#f59e0b":"#f87171"}}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:650,color:"running"===(o=e.tone)?"#22c55e":"stale"===o?"#f59e0b":"#f87171"},children:e.label}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:3,lineHeight:1.45},children:s})]})]})}function rL({label:e,value:t,copyLabel:r,mono:i}){return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsxs)("strong",{style:{color:"var(--text)"},children:[e,":"]})," ",(0,n.jsx)("code",{style:{...rB,...i?{wordBreak:"break-all"}:{}},children:t})]}),(0,n.jsx)(rz,{text:t,label:r})]})}function rR({label:e,description:t,checked:r,disabled:i,compact:o,onChange:l}){return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,padding:o?"2px 0":"10px 12px",borderRadius:8*!o,border:o?"none":`1px solid ${r?"color-mix(in srgb, var(--accent) 35%, var(--border))":"var(--border)"}`,background:o?"transparent":r?"color-mix(in srgb, var(--accent) 8%, var(--bg-panel))":"var(--bg)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:o?11:13,fontWeight:o?500:650,color:"var(--text)"},children:e}),t?(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)",marginTop:4,lineHeight:1.45},children:t}):null]}),(0,n.jsx)("button",{type:"button",role:"switch","aria-checked":r,disabled:i,onClick:()=>l(!r),style:{position:"relative",width:44,height:26,borderRadius:999,border:"none",flexShrink:0,background:r?"var(--accent)":"color-mix(in srgb, var(--text-dim) 35%, var(--border))",cursor:i?"default":"pointer",opacity:i?.55:1,transition:"background 0.15s",padding:0},children:(0,n.jsx)("span",{style:{position:"absolute",top:3,left:r?21:3,width:20,height:20,borderRadius:"50%",background:"#fff",boxShadow:"0 1px 3px rgba(0,0,0,0.18)",transition:"left 0.15s"}})})]})}function rE(e){return e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}function rP({label:e,value:t,onChange:r,placeholder:i,secret:o}){return(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)("span",{children:e}),(0,n.jsx)("input",{type:o?"password":"text",value:t,onChange:e=>r(e.target.value),placeholder:i,style:rA})]})}function r$({children:e,disabled:t,primary:r,danger:i,onClick:o}){return(0,n.jsx)("button",{type:"button",disabled:t,onClick:o,style:{height:28,padding:"0 10px",borderRadius:6,border:r?"none":i?"1px solid rgba(248,113,113,0.45)":"1px solid var(--border)",background:r?"var(--accent)":i?"rgba(248,113,113,0.08)":"var(--bg-hover)",color:r?"#fff":i?"#f87171":"var(--text)",fontSize:11,fontWeight:r?600:400,cursor:t?"default":"pointer",opacity:t?.55:1},children:e})}function rD({label:e}){return(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:"18px 10px",color:"var(--text-dim)",fontSize:12,textAlign:"center"},children:e})}let rB={fontFamily:"var(--font-mono)",fontSize:"0.95em"},rA={height:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,fontFamily:"var(--font-mono)"},rN={padding:"8px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,fontFamily:"var(--font-mono)",resize:"vertical"};function rH({activeCwd:e,onSelectProject:t,onProjectsChanged:r}){let[o,l]=(0,i.useState)([]),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),[u,p]=(0,i.useState)(""),[h,x]=(0,i.useState)(!1),[g,f]=(0,i.useState)(null),[v,m]=(0,i.useState)(null),[b,y]=(0,i.useState)(""),[j,k]=(0,i.useState)(new Set),[w,S]=(0,i.useState)(null),[C,T]=(0,i.useState)(null),z=(0,i.useRef)(null),I=(0,i.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,i.useEffect)(()=>{I()},[I]);let M=(0,i.useMemo)(()=>({projects:o.length,chats:o.reduce((e,t)=>e+t.chatCount,0)}),[o]),W=(0,i.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})}),i=await n.json();if(!n.ok||i.error)throw Error(i.error??`HTTP ${n.status}`);p(""),r?.(),t?.(e),I()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}}},[I,r,t,u]),L=(0,i.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})}),i=await n.json();if(!n.ok||i.error)throw Error(i.error??`HTTP ${n.status}`);p(""),x(!1),r?.(),t?.(e),I()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[I,r,t]),R=(0,i.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:b})}),n=await t.json();if(!t.ok||n.error)throw Error(n.error??`HTTP ${t.status}`);m(null),y(""),await I(),r?.()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[I,r,b]),E=(0,i.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 I(),r?.()}catch(e){c(e instanceof Error?e.message:String(e))}finally{f(null)}},[I,r]),P=(0,i.useCallback)(e=>{m(e.cwd),y(e.displayName),requestAnimationFrame(()=>z.current?.focus())},[]),$=(0,i.useCallback)(e=>{k(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),D=(0,i.useCallback)(async e=>{try{let t=await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({order:e})});if(!t.ok)throw Error(`HTTP ${t.status}`);r?.()}catch{I()}},[I,r]),B=(0,i.useCallback)((e,t)=>{"reorder"!==g&&(S(e),t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/project-cwd",e))},[g]),A=(0,i.useCallback)((e,t)=>{t.preventDefault(),t.dataTransfer.dropEffect="move",T(e)},[]),N=(0,i.useCallback)(e=>{if(T(null),!w||w===e)return void S(null);let t=o.map(e=>e.cwd).filter(Boolean),r=t.indexOf(w),n=t.indexOf(e);r<0||n<0?S(null):(t.splice(r,1),t.splice(n,0,w),l(e=>{let r=new Map(e.map(e=>[e.cwd,e]));return t.map(e=>r.get(e)).filter(Boolean)}),S(null),D(t))},[w,D,o]),H=(0,i.useCallback)(()=>{S(null),T(null)},[]);return(0,n.jsxs)("div",{style:{height:"100%",overflowY:"auto"},children:[d&&(0,n.jsx)("div",{style:{marginBottom:12,padding:"10px 12px",borderRadius:8,border:"1px solid rgba(248,113,113,0.35)",background:"rgba(248,113,113,0.08)",color:"#f87171",fontSize:12},children:d}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:14,padding:"10px 12px",border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)"},children:(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,n.jsxs)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:650,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[M.projects," Projects, ",M.chats," Chats"]}),(0,n.jsx)("div",{style:{marginTop:3,color:"var(--text-dim)",fontSize:11},children:"Settings → Projects"})]})}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,marginBottom:14},children:[(0,n.jsx)("div",{style:{position:"relative",flex:1,minWidth:0},children:(0,n.jsx)("input",{type:"text",value:u,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"===e.key&&W()},placeholder:"/path/to/project",style:{width:"100%",height:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,fontFamily:"var(--font-mono)",outline:"none"}})}),(0,n.jsx)("button",{type:"button",disabled:"add"===g,onClick:()=>void W(),style:{height:30,padding:"0 11px",border:"none",borderRadius:6,background:"var(--accent)",color:"#fff",cursor:"pointer",fontSize:12,fontWeight:500},children:"Add"}),(0,n.jsx)("button",{type:"button",onClick:()=>x(!0),style:{height:30,padding:"0 11px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Browse…"})]}),s&&(0,n.jsx)("div",{style:{padding:"16px 0",color:"var(--text-muted)",fontSize:12},children:"Loading projects..."}),!s&&(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:o.map(r=>{var i;let o,l=r.lastAccessed??r.created??null,s=r.cwd===e,a=v===r.cwd,d=j.has(r.cwd),c=w===r.cwd,u=C===r.cwd&&w!==r.cwd;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 14px",border:`1px solid ${u?"rgba(37,99,235,0.45)":s?"color-mix(in srgb, var(--accent) 40%, var(--border))":"var(--border)"}`,borderRadius:8,background:u?"rgba(37,99,235,0.06)":s?"color-mix(in srgb, var(--accent) 8%, var(--bg-panel))":"var(--bg-panel)",opacity:c?.55:1,transition:"background 0.12s, box-shadow 0.12s"},onDragOver:e=>A(r.cwd,e),onDrop:()=>N(r.cwd),children:[(0,n.jsx)("div",{draggable:!0,onDragStart:e=>B(r.cwd,e),onDragEnd:H,title:"Drag to reorder",style:{display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-dim)",cursor:"reorder"===g?"wait":"grab",opacity:"reorder"===g?.65:1,flexShrink:0},children:(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"currentColor","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"3",cy:"2.5",r:"1"}),(0,n.jsx)("circle",{cx:"9",cy:"2.5",r:"1"}),(0,n.jsx)("circle",{cx:"3",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"9",cy:"6",r:"1"}),(0,n.jsx)("circle",{cx:"3",cy:"9.5",r:"1"}),(0,n.jsx)("circle",{cx:"9",cy:"9.5",r:"1"})]})}),(0,n.jsxs)("div",{style:{minWidth:0,flex:1},children:[a?(0,n.jsx)("input",{ref:z,value:b,onChange:e=>y(e.target.value),onKeyDown:e=>{"Enter"===e.key&&R(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:s?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:(o=(i=r.cwd).split(/[\\/]/).filter(Boolean)).length<=3?i:`.../${o.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),i=Math.floor(r/36e5),o=Math.floor(r/864e5);return n<1?"just now":n<60?`${n}m ago`:i<24?`${i}h ago`:o<7?`${o}d ago`:t.toLocaleDateString()}(l),r.exists?"":" / path missing"]})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0},children:a?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:g===`rename:${r.cwd}`,onClick:()=>void R(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:s?"var(--accent)":"var(--bg-panel)",color:s?"#fff":"var(--text-muted)",cursor:"pointer",fontSize:12},children:s?"Current":"Switch"}),(0,n.jsxs)("button",{type:"button",onClick:()=>$(r.cwd),"aria-expanded":d,style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:d?"var(--bg-selected)":"var(--bg-panel)",color:d?"var(--accent)":"var(--text-muted)",cursor:"pointer",fontSize:12,display:"inline-flex",alignItems:"center",gap:4},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",style:{transform:d?"rotate(90deg)":"none",transition:"transform 0.15s",flexShrink:0},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),"WeCom IM"]}),(0,n.jsx)("button",{type:"button",onClick:()=>P(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 E(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"})]})})]}),d&&(0,n.jsx)("div",{style:{padding:"0 14px 14px",border:"1px solid var(--border)",borderTop:"none",borderRadius:"0 0 8px 8px",background:"var(--bg-panel)"},children:(0,n.jsx)(rM,{cwd:r.cwd,embedded:!0})})]},r.cwd)})}),(0,n.jsx)(rC,{open:h,initialPath:e,onClose:()=>x(!1),onSelect:e=>void L(e)})]})}function rO({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 rF(){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 rU(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 r_({cwd:e,generativeUI:t,initialTab:r="projects",onGenerativeUIToggle:o,onClose:l,onModelsChanged:s,onProjectSelect:a,onProjectsChanged:d}){let[c,u]=(0,i.useState)(r);(0,i.useEffect)(()=>{u(r)},[r]),(0,i.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:rU("projects")},{id:"models",label:"Models",description:"~/.pi/agent/models.json",icon:rU("models")},{id:"skills",label:"Skills",description:e?"Project and global skills":"Select a project first",disabled:!e,icon:rU("skills")},{id:"generative-ui",label:"Generative UI",description:t?"Enabled":"Disabled",icon:rU("generative-ui")},{id:"workbench-runtime",label:"Workbench Runtime",description:e?"Python / R runtime lifecycle":"Global runtime lifecycle",icon:rU("workbench-runtime")}],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)(rF,{})}),(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)(rH,{activeCwd:e,onSelectProject:a,onProjectsChanged:d}),"models"===c&&(0,n.jsx)(rd,{embedded:!0,onClose:()=>{s?.(),l()}}),"skills"===c&&e&&(0,n.jsx)(rg,{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)(rO,{checked:t,onChange:o})]}),(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."})]})]})]})}),"workbench-runtime"===c&&(0,n.jsx)(rS,{cwd:e})]})]})]})})}function rK(e){return e?e.replace(/^\/(?:Users|home)\/[^/]+/,"~"):""}function rV(e){return!Number.isFinite(e)||e<=0?"0.0G":`${(e/1024/1024/1024).toFixed(1)}G`}let rJ={height:32,padding:"0 12px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12};function rY({cwd:e,runtime:t,runtimeError:r,busy:o=!1,onClose:l,onLaunch:s,onReleaseCurrentRuntime:a,onOpenSettings:d}){let[c,u]=(0,i.useState)("r"),[p,h]=(0,i.useState)(""),[x,g]=(0,i.useState)(""),[f,v]=(0,i.useState)(!1),[m,b]=(0,i.useState)([]),[y,j]=(0,i.useState)(""),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(null);(0,i.useEffect)(()=>{h(""),g(""),u("r"),v(!1)},[e]);let T=(0,i.useCallback)(async e=>{if(e){w(!0),C(null);try{let t=e.split("/").filter(Boolean).map(encodeURIComponent).join("/"),r=await fetch(`/api/files/${t}?type=list`);if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}let n=await r.json();b(n.entries),j(n.path)}catch(e){C(e instanceof Error?e.message:String(e)),b([])}finally{w(!1)}}},[]),z=(0,i.useCallback)(()=>{e&&(v(!0),T(e))},[e,T]),I=(0,i.useCallback)(e=>{T(y?`${y.replace(/\/+$/,"")}/${e}`:e)},[y,T]),M=(0,i.useCallback)(e=>{h(y?`${y.replace(/\/+$/,"")}/${e}`:e),v(!1)},[y]),W="r"===c?[".rds",".qs"]:"python"===c?[".h5ad"]:[];return(0,n.jsx)("div",{className:"settings-dialog-backdrop",onClick:e=>{e.target!==e.currentTarget||o||l()},children:(0,n.jsxs)("div",{style:{width:"min(720px, calc(100vw - 40px))",maxHeight:"min(760px, calc(100vh - 40px))",overflow:"auto",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"0 24px 80px rgba(0,0,0,0.28)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,padding:"18px 18px 14px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:18,fontWeight:700,color:"var(--text)"},children:"Workbench"}),(0,n.jsxs)("div",{style:{marginTop:6,fontSize:12,color:"var(--text-muted)",lineHeight:1.55},children:["Starts a dedicated top-level Workbench session in the current project.",e?` Project: ${rK(e)}`:""]})]}),(0,n.jsx)("button",{type:"button",onClick:l,disabled:o,style:{width:30,height:30,border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:o?"not-allowed":"pointer",fontSize:20,lineHeight:1,opacity:o?.5:1},children:"x"})]}),(0,n.jsxs)("div",{style:{padding:18,display:"grid",gap:18},children:[(0,n.jsxs)("section",{style:{display:"grid",gap:10},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Kernel"}),(0,n.jsx)("div",{style:{display:"flex",gap:8},children:[{id:"r",label:"R",desc:"Seurat, rds, qs, Bioconductor workflows"},{id:"python",label:"Python",desc:"AnnData, h5ad, pandas, scanpy workflows"}].map(e=>{let t=c===e.id;return(0,n.jsxs)("button",{type:"button",onClick:()=>u(e.id),style:{flex:1,textAlign:"left",padding:"12px 13px",borderRadius:10,border:`1px solid ${t?"rgba(37,99,235,0.45)":"var(--border)"}`,background:t?"var(--bg-selected)":"var(--bg-panel)",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer"},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700},children:e.label}),(0,n.jsx)("div",{style:{marginTop:4,fontSize:11,lineHeight:1.5},children:e.desc})]},e.id)})})]}),(0,n.jsxs)("section",{style:{display:"grid",gap:10},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Sources"}),(0,n.jsxs)("label",{style:{display:"grid",gap:6},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)"},children:"Primary object or dataset path"}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("input",{value:p,onChange:e=>h(e.target.value),placeholder:"r"===c?"e.g. ./data/sample.rds or ./objects/integrated.qs":"e.g. ./data/sample.h5ad",style:{flex:1,height:34,padding:"0 10px",borderRadius:7,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",fontSize:12,fontFamily:"var(--font-mono)"}}),(0,n.jsx)("button",{type:"button",onClick:z,disabled:!e||o,title:"Browse project files",style:{...rJ,whiteSpace:"nowrap",opacity:!e||o?.5:1,cursor:!e||o?"not-allowed":"pointer"},children:f?"Collapse":"Browse"})]})]}),f&&e&&(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",maxHeight:260,overflow:"auto",fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"6px 10px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>{v(!1)},style:{border:"none",background:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:11,padding:0},children:"✕"}),(0,n.jsx)("span",{style:{color:"var(--text-dim)"},children:"|"}),y?(()=>{let e=y.replace(/^\/+/,"").split("/"),t=[];for(let r=0;r<e.length;r++){let n="/"+e.slice(0,r+1).join("/");t.push({label:0===r?rK(n):e[r],dir:n})}return t.map((t,r)=>(0,n.jsxs)("span",{children:[r>0&&(0,n.jsx)("span",{style:{margin:"0 2px",color:"var(--text-dim)"},children:"/"}),(0,n.jsx)("button",{type:"button",onClick:()=>T(t.dir),style:{border:"none",background:"none",color:r===e.length-1?"var(--text)":"var(--text-muted)",cursor:r===e.length-1?"default":"pointer",fontSize:11,padding:"2px 1px",fontWeight:r===e.length-1?600:400},children:t.label})]},t.dir))})():(0,n.jsx)("span",{style:{color:"var(--text-muted)"},children:"Loading..."})]}),k?(0,n.jsx)("div",{style:{padding:"16px 10px",color:"var(--text-dim)",textAlign:"center"},children:"Loading..."}):S?(0,n.jsx)("div",{style:{padding:"16px 10px",color:"#f87171",textAlign:"center"},children:S}):0===m.length?(0,n.jsx)("div",{style:{padding:"16px 10px",color:"var(--text-dim)",textAlign:"center"},children:"empty directory"}):(0,n.jsxs)("div",{children:[y!==e&&(0,n.jsxs)("div",{onClick:()=>{T(y.replace(/\/+$/,"").split("/").slice(0,-1).join("/")||"/")},style:{display:"flex",alignItems:"center",gap:6,padding:"5px 10px",cursor:"pointer",color:"var(--text-muted)"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:[(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M10 3L5 8l5 5",stroke:"var(--text-dim)",strokeWidth:"1.5",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})}),(0,n.jsx)("span",{style:{fontSize:11},children:".."})]}),m.map(e=>{let t,r=!e.isDir&&(t=e.name.toLowerCase(),W.some(e=>t.endsWith(e)));return(0,n.jsxs)("div",{onClick:()=>{e.isDir?I(e.name):M(e.name)},style:{display:"flex",alignItems:"center",gap:6,padding:"5px 10px",cursor:(e.isDir,"pointer"),color:e.isDir?"var(--text)":r?"var(--accent)":"var(--text-muted)",fontWeight:r?600:400},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:[e.isDir?(0,n.jsx)("svg",{width:"14",height:"14",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:"var(--text-dim)",strokeWidth:"1",fill:"var(--text-dim)",fillOpacity:"0.1"})}):(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M3 2h7l3 3v9H3V2Z",stroke:r?"var(--accent)":"var(--text-dim)",strokeWidth:"1",fill:r?"var(--accent)":"var(--text-dim)",fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:r?"var(--accent)":"var(--text-dim)",strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]}),(0,n.jsx)("span",{style:{fontSize:12},children:e.name}),r&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",background:"rgba(37,99,235,0.1)",padding:"0 5px",borderRadius:3,lineHeight:"16px"},children:e.name.split(".").pop()})]},e.name)})]})]}),(0,n.jsxs)("label",{style:{display:"grid",gap:6,marginTop:4},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)"},children:"Notes or extra file hints"}),(0,n.jsx)("textarea",{value:x,onChange:e=>g(e.target.value),placeholder:"Optional: metadata table paths, desired comparison, object name hints, or initialization notes.",rows:5,style:{width:"100%",resize:"vertical",minHeight:96,padding:"10px",borderRadius:8,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text)",fontSize:12,lineHeight:1.55}})]})]}),(0,n.jsxs)("section",{style:{display:"grid",gap:10,padding:14,border:"1px solid var(--border)",borderRadius:10,background:"var(--bg-panel)"},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Runtime"}),(0,n.jsxs)("div",{style:{display:"flex",gap:16,flexWrap:"wrap",fontSize:12,color:"var(--text-muted)"},children:[(0,n.jsxs)("span",{children:["Total memory ",rV(t.totalBytes)]}),(0,n.jsxs)("span",{children:["Current session ",rV(t.currentSessionBytes)]}),(0,n.jsxs)("span",{children:["Idle timeout ",t.idleTimeoutLabel]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[a&&(0,n.jsx)("button",{type:"button",onClick:a,style:rJ,children:"Release current chat"}),d&&(0,n.jsx)("button",{type:"button",onClick:d,style:rJ,children:"Runtime settings"})]}),r&&(0,n.jsx)("div",{style:{fontSize:12,color:"#f87171",lineHeight:1.5},children:r})]})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,padding:"0 18px 18px"},children:[(0,n.jsx)("button",{type:"button",onClick:l,disabled:o,style:rJ,children:"Cancel"}),(0,n.jsx)("button",{type:"button",onClick:()=>void s({kernel:c,sourcePath:p.trim(),notes:x.trim()}),disabled:o||!e,style:{...rJ,border:"1px solid rgba(37,99,235,0.45)",background:"rgba(37,99,235,0.12)",color:"var(--accent)",opacity:o||!e?.55:1,cursor:o||!e?"not-allowed":"pointer"},children:o?"Launching...":"Launch Workbench"})]})]})})}function rq({initialWidth:e,minWidth:t,maxWidth:r,storageKey:n,direction:o="right"}){let[l,s]=(0,i.useState)(e),[a,d]=(0,i.useState)(!1),c=(0,i.useRef)(e),u=(0,i.useCallback)(e=>{let i=Math.max(t,Math.min(r,e));s(i),c.current=i,document.documentElement.style.setProperty(n,`${i}px`)},[t,r,n]);(0,i.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,i.useCallback)(()=>{d(!0)},[]),h=(0,i.useCallback)(e=>{let t="left"===o?-1:1;u(c.current+e*t)},[u,o]);return{beginResize:p,endResize:(0,i.useCallback)(()=>{d(!1);try{localStorage.setItem(n,String(c.current))}catch{}},[n]),isResizing:a,resizeBy:h,width:l,widthRef:c}}let rG=new Set(["pdf","png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]);function rZ(e){return!Number.isFinite(e)||e<=0?"0.0G":`${(e/1024/1024/1024).toFixed(1)}G`}function rX(e){let t=e.toLowerCase();return t.endsWith(".rds")||t.endsWith(".qs")}function rQ(e){return e.toLowerCase().endsWith(".h5ad")}function r0(e){let t=(e.split(/[\\/]/).pop()??e).toLowerCase().split(".").pop()??"";return rG.has(t)}function r1(){let e=(0,o.useRouter)(),t=(0,o.useSearchParams)(),{isDark:r,toggleTheme:l}=(0,ts.D)(),s=function(){let[e,t]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let e=()=>t(window.innerWidth<=768);return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),e}(),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(0),[x,g]=(0,i.useState)(0),[f,v]=(0,i.useState)(0),[m,y]=(0,i.useState)(0),[j,k]=(0,i.useState)(!1),[w,S]=(0,i.useState)("projects"),[C,T]=(0,i.useState)({generativeUI:!0,plotIdleTimeoutMs:1728e5}),[z,I]=(0,i.useState)(!0),M=rq({initialWidth:260,minWidth:180,maxWidth:500,storageKey:"--pi-sidebar-width"}),W=rq({initialWidth:500,minWidth:300,maxWidth:1200,storageKey:"--pi-right-panel-width",direction:"left"}),L=(0,i.useRef)(null),R=(0,i.useRef)(null),[E,P]=(0,i.useState)([]),[D,B]=(0,i.useState)(null),A=(0,i.useRef)(null),N=(0,i.useCallback)((e,t,r)=>{P(e),B(t),A.current=r},[]),H=(0,i.useCallback)(e=>{A.current?.(e)},[]),[O,F]=(0,i.useState)(null),U=(0,i.useRef)(null),[_,K]=(0,i.useState)(!1),[V,J]=(0,i.useState)(""),Y=(0,i.useRef)(null),q=(0,i.useRef)(!1),G=(0,i.useCallback)(e=>{F(e)},[]);(0,i.useEffect)(()=>{K(!1)},[a?.id]);let Z=(0,i.useCallback)(e=>e?e.name||e.firstMessage.slice(0,80)||e.id.slice(0,12):"",[]),X=(0,i.useCallback)(()=>{a&&(q.current=!1,J(a.name||Z(a)),K(!0),setTimeout(()=>Y.current?.select(),0))},[Z,a]),Q=(0,i.useCallback)(async()=>{if(q.current){q.current=!1,K(!1);return}if(!a)return void K(!1);let e=V.trim(),t=Z(a);if(K(!1),e!==(a.name??"")&&(a.name||e!==t))try{(await fetch(`/api/sessions/${encodeURIComponent(a.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})).ok&&(d(t=>t&&t.id===a.id?{...t,name:e}:t),h(e=>e+1))}catch{}},[Z,a,V]),ee=(0,i.useCallback)(e=>{"Enter"===e.key?(e.preventDefault(),Q()):"Escape"===e.key&&(q.current=!0,K(!1))},[Q]);(0,i.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(t=>{e||T(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 et=(0,i.useCallback)(()=>{let e=!C.generativeUI;T(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=>{T(t=>({...t,..."boolean"==typeof e.settings?.generativeUI?{generativeUI:e.settings.generativeUI}:{},..."number"==typeof e.settings?.plotIdleTimeoutMs?{plotIdleTimeoutMs:e.settings.plotIdleTimeoutMs}:{}}))}).catch(()=>T(e=>({...e,generativeUI:!e.generativeUI})))},[C.generativeUI]),[er,en]=(0,i.useState)(null),ei=(0,i.useCallback)(e=>{en(e)},[]),[eo,el]=(0,i.useState)(null),es=(0,i.useCallback)(e=>{el(e)},[]),[ea,ed]=(0,i.useState)(null),[ec,eu]=(0,i.useState)(null),[ep,eh]=(0,i.useState)(!1),[ex,eg]=(0,i.useState)(null),[ef,ev]=(0,i.useState)(!1),[em,eb]=(0,i.useState)(!1),ey=(0,i.useCallback)(e=>{ed(t=>t===e?null:e)},[]);(0,i.useEffect)(()=>{if(!ea||!R.current)return;let e=()=>{let e=R.current.getBoundingClientRect();eu({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe(R.current),()=>t.disconnect()},[ea]);let[ej,ek]=(0,i.useState)([]),[ew,eS]=(0,i.useState)("files"),[ez,eM]=(0,i.useState)(!1),[eL,eR]=(0,i.useState)(null),[eE,eP]=(0,i.useState)(0),[e$,eD]=(0,i.useState)([]),eB=(0,i.useCallback)(e=>{L.current?.insertText("`"+e+"`")},[]),[eA]=(0,i.useState)(()=>t.get("session")),[eN,eH]=(0,i.useState)(null),[eO,eF]=(0,i.useState)(()=>!t.get("session")),eU=(0,i.useRef)(!1),e_=(0,i.useCallback)(t=>{eH(t),eR(null),eh(!1),eg(null),t&&!eU.current&&(d(e=>e&&e.cwd!==t?null:e),u(e=>e&&e!==t?null:e),g(e=>e+1),v(e=>e+1),P([]),B(null),F(null),ed(null),e.replace("/",{scroll:!1}))},[e]),eK=(0,i.useCallback)((e,t)=>{e_(e),t?.closeDialog!==!1&&k(!1),h(e=>e+1)},[e_]),eV=(0,i.useCallback)((t,r=!1)=>{u(null),eH(t.cwd),d(t),eh(!1),eg(null),g(e=>e+1),F(null),eF(!0),r&&(eU.current=!0,setTimeout(()=>{eU.current=!1},0)),r||e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eJ=(0,i.useCallback)((t,r)=>{d(null),u(r),eH(r),eh(!1),eg(null),g(e=>e+1),P([]),B(null),F(null),ed(null),e.replace("/",{scroll:!1})},[e]),eY=(0,i.useCallback)(t=>{u(null),eH(t.cwd),d(t),eh(!1),eg(null),h(e=>e+1),e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1}),window.dispatchEvent(new CustomEvent("session-created"))},[e]),eq=(0,i.useCallback)(()=>{h(e=>e+1),v(e=>e+1)},[]),eG=(0,i.useCallback)(t=>{h(e=>e+1),g(e=>e+1),u(null),d(e=>({...e??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:t})),e.replace(`?session=${encodeURIComponent(t)}`,{scroll:!1})},[e]),eZ=(0,i.useCallback)(()=>{eF(!0)},[]),eX=(0,i.useCallback)(t=>{if(h(e=>e+1),a?.id===t){let t=a.cwd;d(null),u(t??null),eh(!1),eg(null),g(e=>e+1),P([]),B(null),F(null),ed(null),e.replace("/",{scroll:!1})}},[a,e]),eQ=a?.cwd??c??eN??null,e0=(0,i.useCallback)((e,t)=>{if(rX(e)||rX(t))return void eR({mode:"start",appType:"stexp",filePath:e,cwd:eQ,appId:null});if(r0(e)||r0(t)){let r=`preview:${e}`;eD(n=>{let i=n.find(e=>e.id===r),o=n.filter(e=>e.id!==r);return o.push(i?{...i,filePath:e,fileName:t}:{id:r,filePath:e,fileName:t}),o});return}let r=`file:${e}`;ek(n=>n.find(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:e}]),eS(r),eM(!0)},[eQ]),e1=(0,i.useCallback)((e,t)=>{(rQ(e)||rQ(t))&&eR({mode:"start",appType:"h5adexp",filePath:e,cwd:eQ,appId:null})},[eQ]),e2=(0,i.useCallback)(e=>{eg(e),ed(null),eh(!0)},[]),e5=(0,i.useCallback)(()=>{eh(!1),eg(null)},[]),e4=(0,i.useCallback)(()=>{eS("tools"),eM(!0),eP(e=>e+1)},[]),e3=(0,i.useCallback)(e=>{eR({mode:"existing",appType:e.appType,filePath:e.filePath,cwd:e.cwd,appId:e.id}),eP(e=>e+1)},[]),e8=(0,i.useCallback)(e=>{eP(e=>e+1),eR(t=>t&&(t.appId===e.id||t.appType===e.appType&&t.filePath===e.filePath&&t.cwd===e.cwd)?"stopped"===e.status||"error"===e.status?null:{mode:"existing",appType:e.appType,filePath:e.filePath,cwd:e.cwd,appId:e.id}:t)},[]),e6=(0,i.useCallback)(e=>{eD(t=>t.filter(t=>t.id!==e))},[]),e7=(0,i.useCallback)(e=>{eD(t=>{let r=t.findIndex(t=>t.id===e);if(r<0||r===t.length-1)return t;let n=[...t],[i]=n.splice(r,1);return n.push(i),n})},[]),e9=(0,i.useCallback)(e=>{"files"!==e&&(ek(t=>t.filter(t=>t.id!==e)),eS(t=>{if(t!==e)return t;let r=ej.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:"files"}))},[ej]),te=c??(null===a&&eN?eN:null),tt=null!==a||null!==te,tr=eO&&!tt,tn=[{id:"files",label:"Files",closable:!1,icon:"files"},{id:"tools",label:"Status",closable:!1,icon:"tools"},...ej],ti=ej.find(e=>e.id===ew)??null,tl=a?Z(a):te?"New chat":"No session",ta=a?.cwd??te??eN??"",tc=ta?ta.replace(/\/+$/,"").split(/[\\/]/).filter(Boolean).pop()||ta:"",tp=ex??eQ,th=(0,i.useCallback)((e="projects")=>{S(e),k(!0)},[]),[tx,tg]=(0,i.useState)(null),[tv,tm]=(0,i.useState)(null),[tb,ty]=(0,i.useState)(null),tj=`${a?.id??""}|${eQ??""}`,tk=tx?.totalBytes??0,tS=tx?.currentSessionBytes??0,tC=(0,i.useCallback)(async()=>{let e=new URLSearchParams;eQ&&e.set("cwd",eQ),a?.id&&e.set("sessionId",a.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}`);tg(r),tm(null)}catch(e){tm(e instanceof Error?e.message:String(e))}},[a?.id,eQ]);(0,i.useEffect)(()=>{let e=!1,t=async()=>{await tC(),e||(r=window.setTimeout(t,ep?3e3:8e3))},r=window.setTimeout(t,0);return()=>{e=!0,window.clearTimeout(r)}},[tC,tj,ep]);let tT=(0,i.useCallback)(async()=>{if(a?.id&&!tb){ty("all"),tm(null);try{let e=await fetch("/api/plot-kernels/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:a.id})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);window.setTimeout(()=>{tC()},600)}catch(e){tm(e instanceof Error?e.message:String(e))}finally{ty(null)}}},[tC,tb,a?.id]),tz=(0,i.useCallback)(async t=>{let r;if(!tp||ef)return;ev(!0),tm(null);let n=new Date().toISOString(),i=`Workbench \xb7 ${"r"===t.kernel?"R":"Python"}`,o=(r=["Workbench session start.","",`Kernel: ${"r"===t.kernel?"R":"Python"}`],t.sourcePath?r.push(`Primary source: ${t.sourcePath}`):r.push("Primary source: none selected"),t.notes&&(r.push("Notes:"),r.push(t.notes)),r.push("",t.sourcePath?"Initialize this workbench for analysis. Prefer the warm runtime tools (`kernel_plot_run`, `kernel_plot_render`, `kernel_plot_artifacts`, `kernel_plot_stop`) for loading data, inspecting object structure, and generating figures or tables. Use `kernel_plot_render` for quick iterative plots that appear inline. Use `kernel_plot_run` when working with data already in warm memory or when saving final artifacts. First, verify the provided input path, load or inspect only that explicit source plus any files mentioned in Notes, and prepare the session for iterative analysis. Keep the first response concise and operational.":"Quick-start this workbench without loading data. Prefer the warm runtime tools (`kernel_plot_run`, `kernel_plot_render`, `kernel_plot_artifacts`, `kernel_plot_stop`) when the user later asks for analysis, plots, or saved artifacts. Do not search the project for `.rds`, `.qs`, `.h5ad`, or other dataset files unless the user explicitly asks. For now, only confirm the selected kernel/runtime is ready and ask what data or task to use next. Keep the first response concise and operational."),r.join("\n"));try{let r=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:tp,type:"prompt",message:o,toolNames:$("workbench"),sessionName:i,workbenchMeta:{sourcePath:t.sourcePath,kernel:t.kernel}})}),l=await r.json().catch(()=>({}));if(!r.ok||l.error||!l.sessionId)throw Error(l.error??`HTTP ${r.status}`);e5(),u(null),eH(tp),d({id:l.sessionId,path:"",cwd:tp,name:i,created:n,modified:n,messageCount:1,firstMessage:o}),P([]),B(null),F(null),ed(null),g(e=>e+1),h(e=>e+1),e.replace(`?session=${encodeURIComponent(l.sessionId)}`,{scroll:!1}),window.setTimeout(()=>{tC()},600)}catch(e){tm(e instanceof Error?e.message:String(e))}finally{ev(!1)}},[e5,tC,e,ef,tp]),tI=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b,{selectedSessionId:a?.id??null,onSelectSession:eV,onNewSession:eJ,onNewWorkbench:e2,initialSessionId:eA,onInitialRestoreDone:eZ,refreshKey:p,onSessionDeleted:eX,selectedCwd:a?.cwd??c??eN??null,onCwdChange:e_}),(0,n.jsx)("div",{style:{padding:"8px",flexShrink:0,borderTop:"1px solid var(--border)"},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:2,overflow:"hidden"},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"demo@openvibe.local"}),(0,n.jsx)("a",{href:"/login",style:{fontSize:10,color:"var(--text-muted)",textDecoration:"none"},onMouseEnter:e=>{e.currentTarget.style.color="var(--danger)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)"},children:"退出"})]}),(0,n.jsx)("button",{type:"button",onClick:()=>th("projects"),title:"Settings",style:{width:30,height:30,padding:0,background:"none",border:"none",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0},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:"14",height:"14",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"})]})})]})})]});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:()=>I(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!z,pointerEvents:z?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{className:`sidebar-container${z?" sidebar-open":" sidebar-closed"}`,style:{background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200,width:M.width,minWidth:M.width,transition:z||M.isResizing?"none":void 0},children:tI}),z&&(0,n.jsx)(tu,{side:"right",ariaLabel:"Resize sidebar",onResizeStart:M.beginResize,onResize:M.resizeBy,onResizeEnd:M.endResize}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:R,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:()=>I(e=>!e),title:z?"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:z?(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:_&&a?(0,n.jsx)("input",{ref:Y,value:V,onChange:e=>J(e.target.value),onKeyDown:ee,onBlur:()=>void Q(),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:tl,style:{minWidth:0,maxWidth:"min(420px, 36vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:tt?"var(--text)":"var(--text-muted)",fontSize:14,fontWeight:600,lineHeight:1.2},children:tl}),a&&(0,n.jsx)("button",{type:"button",className:"topbar-rename-button",onClick:X,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"})]})})]})}),tc&&(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:ta||tc,style:{minWidth:0,maxWidth:"min(280px, 24vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:12,lineHeight:1.2},children:tc})]})]}),tt&&!s&&(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)(tR,{tree:E,activeLeafId:D,onLeafChange:H,inline:!0,containerRef:R,open:"branches"===ea,onToggle:()=>ey("branches"),hasSession:!!a})}),(0,n.jsxs)("button",{ref:U,className:"topbar-system-button",onClick:()=>ey("system"),title:"System prompt","aria-label":"System prompt",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"system"===ea?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${"system"===ea?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:"system"===ea?"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"===ea?"var(--text)":"var(--text-muted)",e.currentTarget.style.background="system"===ea?"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:O?"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:()=>{ed(null),e4()},title:tk>0?`Open Workbench runtime \xb7 ${rZ(tk)}`:"Open Workbench runtime status","aria-label":tk>0?`Open Workbench runtime \xb7 ${rZ(tk)}`:"Open Workbench runtime status",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:ep?"var(--bg-selected)":tk>0||em?"rgba(37,99,235,0.08)":"var(--bg-panel)",border:`1px solid ${ep||tk>0||em?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:tk>0||em?"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=tk>0||em?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=tk>0||em?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=ep?"var(--bg-selected)":tk>0||em?"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:"Workbench"}),tk>0&&(0,n.jsx)("span",{className:"topbar-plot-memory",children:rZ(tk)})]})]}),tt&&s&&(0,n.jsxs)("button",{type:"button",className:"topbar-plot-button",onClick:()=>{e4()},title:tk>0?`Open Workbench runtime \xb7 ${rZ(tk)}`:"Open Workbench runtime status","aria-label":tk>0?`Open Workbench runtime \xb7 ${rZ(tk)}`:"Open Workbench runtime status",style:{display:"flex",alignItems:"center",gap:4,height:28,padding:"0 7px",flexShrink:0,background:ep?"var(--bg-selected)":tk>0||em?"rgba(37,99,235,0.08)":"var(--bg-panel)",border:`1px solid ${ep||tk>0||em?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:tk>0||em?"var(--accent)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},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:"WB"}),tk>0&&(0,n.jsx)("span",{className:"topbar-plot-memory",children:rZ(tk)})]}),tt&&(er||eo)&&(()=>{let e=er?.tokens,t=er?.cost??0,r=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),i=t>0?t>=.01?`$${t.toFixed(2)}`:"<$0.01":null,o="var(--text-muted)",l=null;if(eo?.contextWindow){let e=eo.percent;null!==e&&e>90?o="#ef4444":null!==e&&e>70&&(o="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${r(eo.contextWindow)}`:`? / ${r(eo.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)}`)),eo?.contextWindow){let e=eo.percent;s.push(`context: ${null!==e?e.toFixed(1)+"%":"unknown"} of ${eo.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)]}),i&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500},children:i}),l&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:o},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:et,title:`生成式 UI: ${C.generativeUI?"on":"off"}`,"aria-label":`生成式 UI: ${C.generativeUI?"on":"off"}`,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:C.generativeUI?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${C.generativeUI?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:C.generativeUI?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=C.generativeUI?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=C.generativeUI?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=C.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:()=>eM(e=>!e),title:ez?"Hide right panel":"Show right panel","aria-label":ez?"Hide right panel":"Show right panel",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:ez?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${ez?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:ez?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=ez?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=ez?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=ez?"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"})]})}),ea&&ec&&(0,n.jsx)("div",{style:{position:"fixed",top:ec.top,left:ec.left,width:ec.width,zIndex:500},children:"system"===ea&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:O?(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:O}):""===O?(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"})})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden",position:"relative"},children:tt?(0,n.jsx)(eC,{session:a,newSessionCwd:te,onAgentEnd:eq,onSessionCreated:eY,onSessionForked:eG,modelsRefreshKey:m,chatInputRef:L,onBranchDataChange:N,onSystemPromptChange:G,onSessionStatsChange:ei,onContextUsageChange:es,onToolPresetActive:eb,generativeUI:C.generativeUI},x):tr?eN?(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})]}),ez&&(0,n.jsx)(tu,{side:"left",ariaLabel:"Resize right panel",onResizeStart:W.beginResize,onResize:W.resizeBy,onResizeEnd:W.endResize}),(0,n.jsxs)("div",{className:`right-panel-container${ez?" right-panel-open":" right-panel-closed"}`,style:{display:ez?"flex":"none",flexDirection:"column",borderLeft:"1px solid var(--border)",background:"var(--bg)",flexShrink:0,width:W.width,minWidth:W.width,transition:W.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:()=>eM(!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)(tM,{tabs:tn,activeTabId:ew,onSelectTab:eS,onCloseTab:e9})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:"files"===ew?(0,n.jsx)(to,{cwd:eN??a?.cwd??c??null,refreshKey:f,onOpenFile:e0,onExploreFile:e1,onAtMention:eB}):"tools"===ew?(0,n.jsx)(tw,{refreshKey:eE,visibleAppId:eL?.appId??null,cwd:eN??a?.cwd??c??null,onOpenApp:e3,onAppChanged:e8}):ti?.filePath?ti.filePath.startsWith("__")?(0,n.jsx)(td,{filePath:ti.filePath}):(0,n.jsx)(eI,{filePath:ti.filePath,children:(0,n.jsx)(eT.h,{filePath:ti.filePath,cwd:eN??void 0,onOpenFile:e0})}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),j&&(0,n.jsx)(r_,{cwd:eQ,generativeUI:C.generativeUI,initialTab:w,onGenerativeUIToggle:et,onModelsChanged:()=>y(e=>e+1),onProjectSelect:eK,onProjectsChanged:()=>h(e=>e+1),onClose:()=>{k(!1),y(e=>e+1)}}),ep&&(0,n.jsx)(rY,{cwd:tp,runtime:{totalBytes:tk,currentSessionBytes:tS,idleTimeoutLabel: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`}(C.plotIdleTimeoutMs)},runtimeError:tv,busy:ef,onClose:e5,onLaunch:e=>tz(e),onReleaseCurrentRuntime:a?.id&&a.cwd===tp?()=>{tT()}:void 0,onOpenSettings:()=>th("workbench-runtime")}),(0,n.jsx)(tf,{appType:eL?.appType??"stexp",filePath:eL?.filePath??null,cwd:eL?.cwd??null,appId:eL?.appId??null,sessionId:a?.id??null,onClose:()=>eR(null),onAppChanged:e8,onOpenTools:e4}),e$.map((e,t)=>(0,n.jsx)(eW,{id:e.id,filePath:e.filePath,fileName:e.fileName,cwd:eN??a?.cwd??c??void 0,active:t===e$.length-1,stackIndex:t,zIndex:700+t,onClose:e6,onFocus:e7,onOpenFile:e0},e.id))]})}},43322:(e,t,r)=>{Promise.resolve().then(r.bind(r,15845))},73321:(e,t,r)=>{"use strict";var n=r(74645);r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})}},e=>{e.O(0,[7330,6079,2941,2995,8194,9901,8441,3794,7358],()=>e(e.s=43322)),_N_E=e.O()}]);