@seqyuan/annodex 0.1.21 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +3 -3
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/internal/runtime/route.js +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +1 -1
- package/.next/server/app/login.segments/_full.segment.rsc +1 -1
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/page.js +11 -11
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +3 -3
- package/.next/server/chunks/402.js +2 -2
- package/.next/server/chunks/6429.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/app/{page-e4568f1e4f94cabe.js → page-05738bf0f9e60d63.js} +11 -11
- package/package.json +1 -1
- /package/.next/static/{RTyCEy9_QaqzUmWHvRxkX → D4s7GVJxPp8y64oMvbPgt}/_buildManifest.js +0 -0
- /package/.next/static/{RTyCEy9_QaqzUmWHvRxkX → D4s7GVJxPp8y64oMvbPgt}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{60194:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>nT});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,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: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&&y(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}${b?"+":""} results`:"Esc to close"}),f&&x.length>0&&(0,n.jsx)("span",{children:"Updating..."})]})]})})}function d({open:e,initialPath:t,onClose:r,onSelect:o}){let[l,s]=(0,i.useState)(""),[a,c]=(0,i.useState)(null),[u,p]=(0,i.useState)([]),[h,x]=(0,i.useState)([]),[g,f]=(0,i.useState)(""),[v,m]=(0,i.useState)(!1),[y,b]=(0,i.useState)(null),j=(0,i.useCallback)(async e=>{m(!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??""),c(n.parent??null),p(n.directories??[]),x(n.drives??[]),f(n.current??"")}catch(e){b(e instanceof Error?e.message:String(e))}finally{m(!1)}},[]);return((0,i.useEffect)(()=>{e&&j(t||void 0)},[j,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(),g.trim()&&j(g.trim())},style:{display:"flex",gap:8},children:[(0,n.jsx)("input",{value:g,onChange:e=>f(e.target.value),placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"submit",style:{height:32,padding:"0 11px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Go"})]})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>a&&void j(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"})})}),h.length>0&&(0,n.jsxs)("select",{value:h.find(e=>l.toLowerCase().startsWith(e.toLowerCase()))??"",onChange:e=>{e.target.value&&j(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"}),h.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:v?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"Loading..."}):y?(0,n.jsx)("div",{style:{padding:18,color:"#f87171",fontSize:12},children:y}):0===u.length?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"No subdirectories"}):u.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>void j(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 c=r(65673);let u="annodex:sidebar:collapsed-projects",p=["annovibe:sidebar:collapsed-projects","pidex:sidebar:collapsed-projects"],h="annodex:sidebar:collapsed-projects:init-v2";function x(e){window.localStorage.setItem(u,JSON.stringify([...e]))}async function g(e,t){let r=`${e}: HTTP ${t.status}`;try{let n=await t.json();return"string"==typeof n.error&&n.error?`${e}: ${n.error}`:r}catch{return r}}function f(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 v(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 m(e,t){if(!e)return"No Project";let r=e.replace(/[\\/]+$/,""),n=r.includes("/")?"/":"\\";return r.split(n).filter(Boolean).pop()||v(e,t)}function y(e){return e.lastAccessed??e.created??""}let b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function j(){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:b[Math.floor(Math.random()*b.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.1.21":c.C3,r),a=(0,i.useCallback)(e=>{t(e),o(!0),setTimeout(()=>o(!1),(e?6:8)*4*(1e3/60)+100)},[]),d=(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:d,style:{background:"none",border:"none",padding:0,cursor:"default",fontWeight:700,fontSize:15,letterSpacing:"-0.01em",color:e?"var(--accent)":"var(--text)",fontFamily:"var(--font-mono)",minWidth:"9ch"},children:s})}function k({selectedSessionId:e,onSelectSession:t,onNewSession:r,initialSessionId:o,onInitialRestoreDone:l,refreshKey:s,onSessionDeleted:c,selectedCwd:b,onCwdChange:C}){let[T,L]=(0,i.useState)([]),[M,I]=(0,i.useState)([]),[R,W]=(0,i.useState)(!0),[E,$]=(0,i.useState)(!1),[B,A]=(0,i.useState)(null),[P,N]=(0,i.useState)(null),[H,D]=(0,i.useState)(""),[O,F]=(0,i.useState)(null),[_,U]=(0,i.useState)(!1),[V,q]=(0,i.useState)(!1),[K,J]=(0,i.useState)(new Set),[Z,Y]=(0,i.useState)(()=>(function(){try{for(let e of[u,...p]){let t=window.localStorage.getItem(e);if(t)return new Set(JSON.parse(t))}}catch{}return new Set})()),[G,X]=(0,i.useState)(!1),Q=(0,i.useRef)(!1),ee=(0,i.useRef)(!1),et=(0,i.useRef)(!1),er=(0,i.useRef)(!1),en=(0,i.useRef)(null),[ei,eo]=(0,i.useState)(!0),el=(0,i.useCallback)(async(e=!1)=>{try{e&&(A(null),W(!0));let[t,r]=await Promise.all([fetch("/api/sessions"),fetch("/api/projects?sessionStats=1")]);if(!t.ok)throw Error(await g("sessions",t));if(!r.ok)throw Error(await g("projects",r));let n=await t.json(),i=await r.json();L(n.sessions),I(i.projects),A(null)}catch(e){A(String(e))}finally{e&&W(!1)}},[]),es=(0,i.useRef)(!1);(0,i.useEffect)(()=>{let e=!es.current;es.current=!0,el(e)},[el,s]),(0,i.useEffect)(()=>{fetch("/api/home").then(e=>e.json()).then(e=>{e.home&&D(e.home)}).catch(()=>{})},[]),(0,i.useEffect)(()=>{let e=e=>{en.current&&!en.current.contains(e.target)&&(X(!1),F(null))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,i.useEffect)(()=>{if(Q.current){Q.current=!1;return}if(ee.current){ee.current=!1;return}C?.(P)},[P,C]);let ea=(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 F(n.error??`HTTP ${r.status}`),!1;return el(!1),!0}catch(e){return F(e instanceof Error?e.message:String(e)),!1}},[el]),ed=(0,i.useCallback)(e=>{fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,touch:!0})}).catch(()=>{})},[]);(0,i.useEffect)(()=>{if(!o||er.current||0===T.length&&0===M.length)return;er.current=!0;let e=T.find(e=>e.id===o);if(e){N(e.cwd),Y(t=>{if(!t.has(e.cwd))return t;let r=new Set(t);return r.delete(e.cwd),x(r),r}),ed(e.cwd),t(e,!0);return}l?.()},[T,M,o,l,t,ed]);let ec=(0,i.useCallback)(e=>{ee.current=!0,N(e),X(!1),F(null),Y(t=>{if(!t.has(e))return t;let r=new Set(t);return r.delete(e),x(r),r}),C?.(e),ed(e)},[C,ed]);(0,i.useEffect)(()=>{if(0!==M.length&&null===P&&!b){if(o&&!er.current)return;let e=M[0]?.cwd;e&&(N(e),ed(e))}},[M,P,b,o,t,l,ed]);let eu=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/default-cwd",{method:"POST"}),t=await e.json();t.cwd&&(await ea(t.cwd,!1),ec(t.cwd),X(!1))}catch{}},[ec,ea]),ep=(0,i.useCallback)(async e=>{await ea(e,!1)&&(ec(e),U(!1),F(null))},[ec,ea]),eh=b??P,ex=(0,i.useCallback)(async()=>{$(!0);try{await el(!1)}finally{$(!1)}},[el]);(0,i.useEffect)(()=>{eh&&Y(e=>{if(!e.has(eh))return e;let t=new Set(e);return t.delete(eh),x(t),t})},[eh,s]);let eg=(0,i.useCallback)(e=>{if(!e){F(null),U(!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]),ef=(0,i.useCallback)(()=>{eg(eh)},[eg,eh]),ev=(0,i.useMemo)(()=>[...eh&&!M.some(e=>e.cwd===eh)?[{cwd:eh,displayName:m(eh,H),chatCount:T.filter(e=>e.cwd===eh).length,lastAccessed:null,created:null,exists:!0,source:"manual"}]:[],...M].sort((e,t)=>{if(eh&&e.cwd===eh)return -1;if(eh&&t.cwd===eh)return 1;let r=y(e),n=y(t);return r!==n?n.localeCompare(r):e.displayName.localeCompare(t.displayName)}),[T,eh,H,M]),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 ev.filter(e=>e.chatCount>0||e.cwd===eh).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||m(t.cwd,H),sessions:r,lastAccessed:y(t)||r[0]?.modified||""}})},[T,eh,H,ev]);(0,i.useEffect)(()=>{if(0===em.length||et.current||(et.current=!0,!em[0]?.cwd||window.localStorage.getItem(h)))return;let e=new Set(em.slice(1).map(e=>e.cwd));Y(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)?(x(e),e):t),window.localStorage.setItem(h,"1")},[em]);let ey=(0,i.useCallback)(e=>{Y(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),x(r),r})},[]),eb=(0,i.useCallback)(e=>{J(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),ej=(0,i.useCallback)((e,r=!1)=>{e.cwd!==eh&&(Q.current=!0,N(e.cwd)),Y(t=>{if(!t.has(e.cwd))return t;let r=new Set(t);return r.delete(e.cwd),x(r),r}),ed(e.cwd),t(e,r)},[t,eh,ed]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"12px 10px 10px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:8},children:[(0,n.jsx)(j,{}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsxs)("button",{onClick:ef,disabled:!eh,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,background:"var(--bg-hover)",border:"1px solid var(--border)",color:eh?"var(--text-muted)":"var(--text-dim)",cursor:eh?"pointer":"not-allowed",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:eh?`New session in ${eh}`:"Select a project first",onMouseEnter:e=>{eh&&(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=eh?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"6",y1:"1",x2:"6",y2:"11"}),(0,n.jsx)("line",{x1:"1",y1:"6",x2:"11",y2:"6"})]}),"New"]}),(0,n.jsx)("button",{onClick:()=>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.jsxs)("div",{ref:en,style:{position:"relative"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{X(e=>!e),F(null),el(!1)},title:eh??"Select project","aria-expanded":G,style:{width:"100%",display:"flex",alignItems:"center",gap:8,padding:"6px 10px",background:eh?"var(--bg-hover)":"rgba(37,99,235,0.06)",border:eh?"1px solid var(--border)":"1px solid rgba(37,99,235,0.4)",borderRadius:7,color:"var(--text)",cursor:"pointer",fontSize:12,textAlign:"left",transition:"border-color 0.15s, background 0.15s"},children:[(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",fontSize:11,color:eh?"var(--text)":"var(--text-dim)"},children:eh?v(eh,H):o&&!er.current?"":"Select project..."}),(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:G?"rotate(180deg)":"none",transition:"transform 0.15s",flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),G&&(0,n.jsxs)("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:100,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 6px 20px rgba(0,0,0,0.10)",overflow:"hidden"},children:[0===ev.length?(0,n.jsx)("button",{type:"button",onClick:()=>{X(!1),U(!0)},style:{width:"100%",padding:"9px 10px",border:"none",borderBottom:"1px solid var(--border)",background:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:"Open a project directory"}):(0,n.jsx)("div",{style:{maxHeight:260,overflowY:"auto"},children:ev.map(e=>{let t=e.cwd===eh,r=y(e);return(0,n.jsxs)("button",{type:"button",onClick:()=>ec(e.cwd),title:e.cwd,style:{width:"100%",display:"flex",alignItems:"center",gap:7,padding:"8px 10px",border:"none",borderBottom:"1px solid var(--border)",background:t?"var(--bg-selected)":"transparent",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11,fontFamily:"var(--font-mono)"},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:{minWidth:0,flex:1},children:[(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:t?650:500},children:e.displayName}),!e.exists&&(0,n.jsx)("span",{style:{flexShrink:0,color:"#f87171",fontSize:10},children:"missing"})]}),(0,n.jsx)("span",{style:{display:"block",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)",color:"var(--text-dim)",fontSize:10},children:v(e.cwd,H)})]}),(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10,textAlign:"right"},children:[(0,n.jsx)("span",{style:{display:"block"},children:e.chatCount}),r&&(0,n.jsx)("span",{style:{display:"block",marginTop:2},children:f(r)})]})]},e.cwd)})}),(0,n.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),eu()},style:z,children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:(0,n.jsx)("path",{d:"M1 3A1 1 0 0 1 2 2H4L5 3.5H8.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7A.5.5 0 0 1 1 8V3Z"})}),(0,n.jsx)("span",{children:"Use default directory"})]}),(0,n.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),F(null),X(!1),U(!0)},style:z,children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"5",y1:"1",x2:"5",y2:"9"}),(0,n.jsx)("line",{x1:"1",y1:"5",x2:"9",y2:"5"})]}),(0,n.jsx)("span",{children:"Add path..."})]}),O&&(0,n.jsx)("div",{style:{padding:"6px 10px 8px",color:"#f87171",fontSize:10,lineHeight:1.4,overflowWrap:"anywhere"},children:O})]})]})]}),(0,n.jsx)(a,{open:V,cwd:eh,homeDir:H,onClose:()=>q(!1),onSelectSession:e=>{ej(e)}}),(0,n.jsxs)("div",{style:{flex:"1 1 auto",overflowY:"auto",padding:"8px 8px 10px",minHeight:120},children:[(0,n.jsxs)("div",{style:{padding:"0 2px 6px",display:"flex",alignItems:"center",justifyContent:"space-between",color:"var(--text-dim)"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>eo(e=>!e),title:ei?"Collapse projects":"Expand projects","aria-expanded":ei,style:{display:"flex",alignItems:"center",gap:6,padding:"4px 0",background:"none",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",textAlign:"left"},children:[(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:ei?"rotate(90deg)":"none",transition:"transform 0.15s",flexShrink:0},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),"Projects"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5},children:[(0,n.jsx)("span",{style:{fontSize:10,fontWeight:500},children:em.length}),(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),ex()},disabled:E,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:E?"var(--accent)":"var(--text-dim)",cursor:E?"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:E?"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"})]})}),(0,n.jsx)("button",{type:"button",onClick:()=>{F(null),U(!0)},title:"Add project","aria-label":"Add project",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:"var(--text-dim)",cursor:"pointer",flexShrink:0},children:(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"6",y1:"1.5",x2:"6",y2:"10.5"}),(0,n.jsx)("line",{x1:"1.5",y1:"6",x2:"10.5",y2:"6"})]})})]})]}),ei&&(0,n.jsxs)(n.Fragment,{children:[R&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}),B&&(0,n.jsx)("div",{style:{padding:"12px 14px",color:"#f87171",fontSize:12},children:B}),!R&&!B&&0===em.length&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"No projects yet"}),!R&&!B&&em.map(t=>{let r=Z.has(t.cwd),i=t.cwd===eh,{visible:o,hiddenCount:l}=function(e,t,r){if(e.length<=10||r)return{visible:e,hiddenCount:0};let n=e.slice(0,10),i=e.find(e=>(function e(t,r){return!!r&&(t.session.id===r||t.children.some(t=>e(t,r)))})(e,t));return i&&!n.includes(i)&&(n=[...n,i]),{visible:n,hiddenCount:e.length-n.length}}(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),e,K.has(t.cwd));return(0,n.jsxs)("div",{style:{marginBottom:6},children:[(0,n.jsx)(w,{group:t,homeDir:H,isCurrent:i,isCollapsed:r,onToggle:()=>ey(t.cwd),onSelect:()=>ec(t.cwd),onNewSession:e=>{e.stopPropagation(),ec(t.cwd),eg(t.cwd)}}),!r&&(0,n.jsxs)("div",{style:{marginTop:2,overflow:"hidden",borderRadius:7},children:[0===t.sessions.length?(0,n.jsx)("button",{type:"button",onClick:()=>{ec(t.cwd),eg(t.cwd)},style:{width:"100%",padding:"10px 12px",background:"transparent",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"Start a new session in this project"}):o.map(t=>(0,n.jsx)(S,{node:t,selectedSessionId:e,onSelectSession:ej,onRenamed:el,onSessionDeleted:e=>{c?.(e),el(!1)},depth:0},t.session.id)),l>0&&(0,n.jsx)("button",{type:"button",onClick:()=>eb(t.cwd),style:{width:"100%",padding:"6px 10px",background:"transparent",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:11,textAlign:"center"},children:K.has(t.cwd)?"Show less":`Show ${Math.max(0,l)} more`})]})]},t.cwd||"__no_project")}),(0,n.jsxs)("div",{style:{marginTop:8,borderTop:"1px solid var(--border)",paddingTop:6},children:[(0,n.jsxs)("button",{onClick:e=>{e.stopPropagation(),eu()},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"7px 8px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:(0,n.jsx)("path",{d:"M1 3A1 1 0 0 1 2 2H4L5 3.5H8.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-7A.5.5 0 0 1 1 8V3Z"})}),(0,n.jsx)("span",{children:"Use default directory"})]}),(0,n.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),F(null),U(!0)},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"7px 8px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M1 3A1 1 0 0 1 2 2h1.5L4.5 3H8a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V3Z"}),(0,n.jsx)("path",{d:"M5 4.5v3M3.5 6h3"})]}),(0,n.jsx)("span",{children:"Select project path..."})]}),O&&(0,n.jsx)("div",{style:{padding:"0 8px 6px 25px",color:"#f87171",fontSize:10,lineHeight:1.4},children:O})]})]})]}),(0,n.jsx)(d,{open:_,initialPath:eh||H||null,onClose:()=>U(!1),onSelect:e=>void ep(e)})]})}function w({group:e,homeDir:t,isCurrent:r,isCollapsed:o,onToggle:l,onSelect:s,onNewSession:a}){let[d,c]=(0,i.useState)(!1),u=e.lastAccessed,p=(0,i.useCallback)(()=>{r?l():s()},[r,s,l]);return(0,n.jsxs)("div",{role:"button",tabIndex:0,onClick:p,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),p())},onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),title:e.cwd,style:{width:"100%",minHeight:42,display:"flex",alignItems:"center",gap:7,padding:"7px 8px",background:r?"var(--bg-selected)":d?"var(--bg-hover)":"transparent",border:"none",borderLeft:r?"2px solid var(--accent)":"2px solid transparent",borderRadius:7,color:"var(--text)",cursor:"pointer",textAlign:"left",overflow:"hidden",transition:"background 0.12s"},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:o?"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:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:r?"var(--accent)":"var(--text-dim)"},children:o?(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.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12,fontWeight:r?650:600,color:"var(--text)"},children:e.displayName}),!e.project.exists&&(0,n.jsx)("span",{style:{flexShrink:0,color:"#f87171",fontSize:10},children:"missing"})]}),(0,n.jsxs)("div",{style:{marginTop:2,display:"flex",gap:8,minWidth:0,color:"var(--text-dim)",fontSize:10},children:[(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},children:v(e.cwd,t)}),(0,n.jsxs)("span",{style:{flexShrink:0},children:[e.sessions.length," chat",1===e.sessions.length?"":"s"]}),u&&(0,n.jsx)("span",{style:{flexShrink:0},children:f(u)})]})]}),(0,n.jsx)("button",{type:"button",onClick:a,title:"New chat in this project",tabIndex:d?0:-1,style:{display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-hover)",color:"var(--text-muted)",cursor:"pointer",flexShrink:0,opacity:+!!d,pointerEvents:d?"auto":"none",transition:"opacity 0.12s, 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.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2.1",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"6",y1:"1.5",x2:"6",y2:"10.5"}),(0,n.jsx)("line",{x1:"1.5",y1:"6",x2:"10.5",y2:"6"})]})})]})}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,x]=(0,i.useState)(!1),[g,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??""),x(!0),setTimeout(()=>k.current?.select(),0)},[e.name]),z=(0,i.useCallback)(async()=>{let t=g.trim();if(x(!1),t!==(e.name??""))try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),o?.()}catch{}},[g,e.id,e.name,o]),T=(0,i.useCallback)(e=>{e.stopPropagation(),y(!0)},[]),L=(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)},[]);return(0,n.jsx)("div",{onClick:m||h?void 0:r,onMouseEnter:()=>p(!0),onMouseLeave:()=>{p(!1)},style:{height:54,display:"flex",alignItems:"center",paddingLeft:s>0?12*s+14:14,paddingRight:8,cursor: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: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:L,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:g,onChange:e=>v(e.target.value),onBlur:z,onKeyDown:e=>{"Enter"===e.key&&z(),"Escape"===e.key&&x(!1)},autoFocus:!0,style:{flex:1,fontSize:12,padding:"5px 8px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--bg)",color:"var(--text)",height:30}}):(0,n.jsxs)(n.Fragment,{children:[s>0&&(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-dim)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:t?500:400,lineHeight:1.4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},title:w,children:w}),(0,n.jsxs)("div",{style:{marginTop:2,display:"flex",gap:8,color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{title:e.modified,children:f(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",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),(0,n.jsx)("button",{onClick:T,title:"Delete",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.08)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]})})]})]})})}let z={display:"flex",alignItems:"center",gap:7,width:"100%",padding:"8px 10px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},T=new Set;function L(e){return T.add(e),()=>{T.delete(e)}}function M(){return"u"<typeof document?"light":document.documentElement.classList.contains("dark")?"dark":"light"}function I(){return"light"}function R(){let e=(0,i.useSyncExternalStore)(L,M,I);return{theme:e,toggleTheme:(0,i.useCallback)(e=>{let t="dark"===M()?"light":"dark",r=()=>{"dark"===t?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark");try{localStorage.setItem("annodex-theme",t)}catch{}T.forEach(e=>e())},n=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if("function"!=typeof document.startViewTransition||n)return void r();let i=e?.x??window.innerWidth/2,o=e?.y??window.innerHeight/2,l=Math.hypot(Math.max(i,window.innerWidth-i),Math.max(o,window.innerHeight-o));document.startViewTransition(r).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${i}px ${o}px)`,`circle(${l}px at ${i}px ${o}px)`]},{duration:450,easing:"cubic-bezier(0.22, 0.61, 0.36, 1)",pseudoElement:"::view-transition-new(root)"})}).catch(()=>{})},[]),isDark:"dark"===e}}function W(e){let t,r=[],n=/`{1,3}show-widget`{0,3}\s*(?:\n\s*`{3}(?:json|html)?\s*)?\n?/g,i=0,o=!1;for(;null!==(t=n.exec(e));){o=!0;let l=e.slice(i,t.index).trim();l&&r.push({type:"text",content:l});let s=t.index+t[0].length,a=e.indexOf("```",s),d=e.indexOf("{",s);if(-1!==d&&d<=s+200&&(-1===a||d<a)){let t=function(e,t){let r=0,n=!1,i=!1;for(let o=t;o<e.length;o++){let t=e[o];if(i){i=!1;continue}if("\\"===t&&n){i=!0;continue}if('"'===t){n=!n;continue}if(!n&&("{"===t&&r++,"}"===t)&&0==--r)return o}return -1}(e,d);if(-1===t){let t=function(e){try{let t=E(e);if(t)return t}catch{}let t=e.indexOf('"widget_code"');if(-1===t)return null;let r=e.indexOf(":",t+13);if(-1===r)return null;let n=e.indexOf('"',r+1);if(-1===n)return null;let i=e.slice(n+1);(i=i.replace(/"\s*\}\s*$/,"")).endsWith("\\")&&(i=i.slice(0,-1));let o=e.match(/"title"\s*:\s*"([^"]*?)"/)?.[1],l=$(i.replace(/\\\\/g,"\0BACKSLASH\0").replace(/\\n/g,"\n").replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(parseInt(t,16))).replace(/\x00BACKSLASH\x00/g,"\\"));return l.code.trim()?{title:o,code:l.code,showOverlay:l.truncated}:null}(e.slice(d));t&&r.push({type:"widget",...t,partial:!0}),i=e.length;break}let o=E(e.slice(d,t+1).trim());o&&r.push({type:"widget",...o});let l=t+1,s=e.slice(l,l+16).match(/^\s*\n?`{1,3}\s*/);s&&(l+=s[0].length),i=l,n.lastIndex=l;continue}if(-1!==a){let t=e.slice(s,a).trim(),o=E(t);o?r.push({type:"widget",...o}):t&&r.push({type:"text",content:t}),n.lastIndex=i=a+3}else{let t=E(e.slice(s).trim());if(t){let e=$(t.code);r.push({type:"widget",title:t.title,code:e.code,partial:!0,showOverlay:e.truncated})}i=e.length;break}}let l=e.slice(i).trim();return l&&r.push({type:"text",content:l}),!o&&0===r.length&&e.trim()&&r.push({type:"text",content:e}),r}function E(e){if(e.startsWith("{")){if(!e.endsWith("}"))return null;try{let t=JSON.parse(e),r=t.widget_code??t.code;if(r)return{title:t.title,code:r}}catch{return null}}return/<(!DOCTYPE|html|svg|canvas|script|style|div)/i.test(e)?{code:e}:null}function $(e){let t=e.lastIndexOf("<script");if(-1===t)return{code:e,truncated:!1};let r=e.slice(t);return/<script[\s\S]*?<\/script>/i.test(r)?{code:e,truncated:!1}:{code:e.slice(0,t).trim(),truncated:!0}}let B=/<(iframe|object|embed|meta|link|base|form)[\s>][\s\S]*?<\/\1>/gi,A=/<(iframe|object|embed|meta|link|base)\b[^>]*\/?>/gi;function P(e){return e.replace(B,"").replace(A,"")}let N=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];function H(){if("u"<typeof document)return{};let e=getComputedStyle(document.documentElement),t={};for(let r of N){let n=e.getPropertyValue(r).trim();n&&(t[r]=n)}return t}let D=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];async function O(e){if(navigator.clipboard?.writeText)return void await navigator.clipboard.writeText(e);let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.inset="0",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let r=document.execCommand("copy");if(document.body.removeChild(t),!r)throw Error("Clipboard copy failed.")}async function F(e){let t=await _(e.code);if(t)return t;if(e.capture)return function(e){if(!e.html)throw Error("The widget did not provide capturable HTML.");let t=q({width:e.bodyWidth||640,height:e.bodyHeight||360}),r=function(e){let t=document.createElement("template");t.innerHTML=P(e.html||"");let r=document.createElement("div");for(let n of(r.appendChild(t.content.cloneNode(!0)),Array.from(r.querySelectorAll("img[data-canvas-export]")))){let t=Number(n.getAttribute("data-canvas-export")),r=Number.isFinite(t)?e.canvases?.[t]:null;if(!r?.dataUrl){n.remove();continue}n.setAttribute("src",r.dataUrl),n.setAttribute("width",String(r.width)),n.setAttribute("height",String(r.height)),n.setAttribute("style",function(e,t){let r=new Map;for(let t of(e||"").split(";")){let[e,...n]=t.split(":");e?.trim()&&n.length>0&&r.set(e.trim(),n.join(":").trim())}for(let[e,n]of Object.entries(t))r.set(e,n);return Array.from(r.entries()).map(([e,t])=>e+":"+t).join(";")}(n.getAttribute("style"),{width:r.width+"px",height:r.height+"px",display:"block"}))}return U(r),Array.from(r.childNodes).map(e=>new XMLSerializer().serializeToString(e)).join("")}(e);if(!r.trim())throw Error("The widget capture was empty.");let n=[e.styles||"","#__widget_export_root{"+function(){if("u"<typeof document)return"";let e=getComputedStyle(document.documentElement);return D.map(t=>{let r=e.getPropertyValue(t).trim();return r?t+":"+r+";":""}).join("")}()+'font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;font-size:14px;line-height:1.6;color:var(--text,#1a1a1a);background:transparent;}',"#__widget_export_root *{box-sizing:border-box;}\n#__widget_export_root svg{max-width:100%;height:auto;display:block;}"].join("\n");return J(Z('<svg xmlns="http://www.w3.org/2000/svg" width="'+t.width+'" height="'+t.height+'" viewBox="0 0 '+t.width+" "+t.height+'"><defs><style><![CDATA['+n.replace(/\]\]>/g,"]]]]><![CDATA[>")+']]></style></defs><foreignObject x="0" y="0" width="100%" height="100%">'+('<div xmlns="http://www.w3.org/1999/xhtml" id="__widget_export_root" style="width:'+t.width+"px;min-height:")+t.height+'px;overflow:visible;">'+r+"</div></foreignObject></svg>"),t.width,t.height)}(e.capture);throw Error("PNG export needs a rendered widget capture.")}async function _(e){var t;let r,n,i,o,l=function(e){let t=P(e).trim();if(!/^<\s*(style|svg)\b/i.test(t))return null;let r=new DOMParser().parseFromString(t,"text/html"),n=Array.from(r.body.children),i=n.filter(e=>"svg"===e.tagName.toLowerCase()),o=n.filter(e=>"style"!==e.tagName.toLowerCase());if(1!==i.length||1!==o.length)return null;let l=i[0].cloneNode(!0),s=Array.from(r.body.querySelectorAll("style")).map(e=>e.textContent||"").join("\n").trim();if(s){let e=document.createElementNS("http://www.w3.org/2000/svg","style");e.textContent=s,l.insertBefore(e,l.firstChild)}return l}(e);if(!l)return null;U(l),l.setAttribute("xmlns","http://www.w3.org/2000/svg");let s=q((r=function(e){if(!e)return null;let t=e.trim().split(/[\s,]+/).map(Number);return 4!==t.length||t.some(e=>!Number.isFinite(e))||t[2]<=0||t[3]<=0?null:{width:t[2],height:t[3]}}((t=l).getAttribute("viewBox")),n=V(t.getAttribute("width"))??r?.width??640,i=r?r.height/r.width:.5625,o=V(t.getAttribute("height"))??r?.height??n*i,{width:n,height:o}));return l.setAttribute("width",String(s.width)),l.setAttribute("height",String(s.height)),l.getAttribute("viewBox")||l.setAttribute("viewBox","0 0 "+s.width+" "+s.height),J(Z(new XMLSerializer().serializeToString(l)),s.width,s.height)}function U(e){for(let t of Array.from(e.querySelectorAll("script, iframe, object, embed, meta, link, base, form")))t.remove();for(let t of[e,...Array.from(e.querySelectorAll("*"))])for(let e of Array.from(t.attributes)){let r=e.name.toLowerCase(),n=e.value.trim();if(r.startsWith("on")){t.removeAttribute(e.name);continue}("href"===r||"src"===r||r.endsWith(":href"))&&/^\s*(javascript|data:text\/html)/i.test(n)&&t.removeAttribute(e.name)}}function V(e){if(!e||e.includes("%"))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function q(e){let t=K(Math.ceil(e.width||640),240,2e3),r=K(Math.ceil(e.height||360),80,4e3),n=t*r;if(n>8e6){let e=Math.sqrt(8e6/n);t=Math.max(240,Math.floor(t*e)),r=Math.max(80,Math.floor(r*e))}return{width:t,height:r}}function K(e,t,r){return Math.min(Math.max(e,t),r)}function J(e,t,r){return new Promise((n,i)=>{let o=new Image,l=URL.createObjectURL(new Blob([e],{type:"image/svg+xml;charset=utf-8"}));o.onload=()=>{URL.revokeObjectURL(l);try{let e=document.createElement("canvas"),l=Math.min(window.devicePixelRatio||1,2);e.width=Math.ceil(t*l),e.height=Math.ceil(r*l),e.style.width=t+"px",e.style.height=r+"px";let s=e.getContext("2d");if(!s)throw Error("Canvas is not available.");s.scale(l,l),s.drawImage(o,0,0,t,r),e.toBlob(e=>{e?n(e):i(Error("Canvas export returned no image."))},"image/png")}catch(e){i(e instanceof Error?e:Error("PNG export failed."))}},o.onerror=()=>{URL.revokeObjectURL(l),i(Error("The browser could not render this widget as PNG."))},o.src=l})}function Z(e){if("u"<typeof document)return e;let t=getComputedStyle(document.documentElement);return e.replace(/var\(\s*(--[a-zA-Z0-9_-]+)(?:\s*,\s*([^)]+))?\)/g,(e,r,n)=>t.getPropertyValue(r).trim()||n?.trim()||"#000")}let Y=/cdnjs\.cloudflare\.com|cdn\.jsdelivr\.net|unpkg\.com|esm\.sh/,G=new Map;function X(e){return e.slice(0,200)}function Q({code:e,isStreaming:t,title:r,showOverlay:o,onSendMessage:l}){let{isDark:s}=R(),a=(0,i.useRef)(null),d=(0,i.useRef)(null),c=(0,i.useRef)(null),u=(0,i.useRef)(new Map),p=(0,i.useRef)(""),[h,x]=(0,i.useState)(!1),[g,f]=(0,i.useState)(()=>G.get(X(e))??0),[v,m]=(0,i.useState)(!1),[y,b]=(0,i.useState)(!1),[j,k]=(0,i.useState)(null),[w,S]=(0,i.useState)(!1),[C,z]=(0,i.useState)(!1),T=(0,i.useRef)(""),L=(0,i.useRef)((G.get(X(e))??0)>0),M=(0,i.useRef)(!1),I=(0,i.useRef)(s),W=(0,i.useMemo)(()=>Y.test(e),[e]),E=(0,i.useMemo)(()=>{let e;return function(e="",t=!1){return`<!DOCTYPE html>
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{60194:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>nC});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,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: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&&y(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}${b?"+":""} results`:"Esc to close"}),f&&x.length>0&&(0,n.jsx)("span",{children:"Updating..."})]})]})})}function d({open:e,initialPath:t,onClose:r,onSelect:o,externalError:l,onPathInputChange:s}){let[a,c]=(0,i.useState)(""),[u,p]=(0,i.useState)(null),[h,x]=(0,i.useState)([]),[g,f]=(0,i.useState)([]),[v,m]=(0,i.useState)(""),[y,b]=(0,i.useState)(!1),[j,k]=(0,i.useState)(null),w=(0,i.useCallback)(async e=>{b(!0),k(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}`);c(n.current??""),p(n.parent??null),x(n.directories??[]),f(n.drives??[]),m(n.current??"")}catch(e){k(e instanceof Error?e.message:String(e))}finally{b(!1)}},[]);return((0,i.useEffect)(()=>{e&&w(t||void 0)},[w,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:"Add project folder"}),(0,n.jsx)("div",{style:{marginTop:2,color:"var(--text-dim)",fontSize:11},children:"Choose a folder or enter a path"})]}),(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(),v.trim()&&o(v.trim())},style:{display:"flex",flexDirection:"column",gap:7},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsx)("input",{value:v,onChange:e=>{m(e.target.value),s?.()},placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"button",onClick:()=>v.trim()&&void w(v.trim()),style:{height:32,padding:"0 11px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Browse"}),(0,n.jsx)("button",{type:"submit",disabled:!v.trim(),style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:v.trim()?"var(--accent)":"var(--bg-hover)",color:v.trim()?"#fff":"var(--text-dim)",cursor:v.trim()?"pointer":"default",fontSize:12,fontWeight:650},children:"Use path"})]}),l&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:11,lineHeight:1.4,overflowWrap:"anywhere"},children:l})]})}),(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:()=>u&&void w(u),disabled:!u,style:{width:28,height:28,border:"1px solid var(--border)",borderRadius:6,background:u?"var(--bg)":"transparent",color:u?"var(--text-muted)":"var(--text-dim)",cursor:u?"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"})})}),g.length>0&&(0,n.jsxs)("select",{value:g.find(e=>a.toLowerCase().startsWith(e.toLowerCase()))??"",onChange:e=>{e.target.value&&w(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"}),g.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:a,children:a})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:220,maxHeight:360,overflowY:"auto",padding:6},children:y?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"Loading..."}):j?(0,n.jsx)("div",{style:{padding:18,color:"#f87171",fontSize:12},children:j}):0===h.length?(0,n.jsx)("div",{style:{padding:18,color:"var(--text-muted)",fontSize:12},children:"No subdirectories"}):h.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>void w(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:a,children:a}),(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:()=>a&&o(a),disabled:!a,style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:a?"var(--accent)":"var(--bg-hover)",color:a?"#fff":"var(--text-dim)",cursor:a?"pointer":"default",fontSize:12,fontWeight:650},children:"Select"})]})]})]})}):null}var c=r(65673);let u="annodex:sidebar:collapsed-projects",p=["annovibe:sidebar:collapsed-projects","pidex:sidebar:collapsed-projects"],h="annodex:sidebar:collapsed-projects:init-v2";function x(e){window.localStorage.setItem(u,JSON.stringify([...e]))}async function g(e,t){let r=`${e}: HTTP ${t.status}`;try{let n=await t.json();return"string"==typeof n.error&&n.error?`${e}: ${n.error}`:r}catch{return r}}function f(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 v(e,t){let r,n,i;if(!e)return"No Project";let o=e.replace(/[\\/]+$/,""),l=o.includes("/")?"/":"\\";return o.split(l).filter(Boolean).pop()||(n=(r=t&&e.startsWith(t)?"~"+e.slice(t.length):e).includes("/")?"/":"\\",(i=r.split(n).filter(Boolean)).length<=2?r:"…/"+i.slice(-2).join(n))}function m(e){return e.lastAccessed??e.created??""}let y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function b(){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:y[Math.floor(Math.random()*y.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.1.23":c.C3,r),a=(0,i.useCallback)(e=>{t(e),o(!0),setTimeout(()=>o(!1),(e?6:8)*4*(1e3/60)+100)},[]),d=(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:d,style:{background:"none",border:"none",padding:0,cursor:"default",fontWeight:700,fontSize:15,letterSpacing:"-0.01em",color:e?"var(--accent)":"var(--text)",fontFamily:"var(--font-mono)",minWidth:"9ch"},children:s})}function j({selectedSessionId:e,onSelectSession:t,onNewSession:r,initialSessionId:o,onInitialRestoreDone:l,refreshKey:s,onSessionDeleted:c,selectedCwd:y,onCwdChange:S}){let[C,z]=(0,i.useState)([]),[T,M]=(0,i.useState)({}),[I,L]=(0,i.useState)(!0),[R,W]=(0,i.useState)(!1),[E,$]=(0,i.useState)(null),[B,A]=(0,i.useState)(null),[P,N]=(0,i.useState)(""),[D,H]=(0,i.useState)(null),[O,F]=(0,i.useState)(!1),[_,U]=(0,i.useState)(!1),[V,q]=(0,i.useState)(new Set),[K,J]=(0,i.useState)(()=>(function(){try{for(let e of[u,...p]){let t=window.localStorage.getItem(e);if(t)return new Set(JSON.parse(t))}}catch{}return new Set})()),Y=(0,i.useRef)(!1),Z=(0,i.useRef)(!1),G=(0,i.useRef)(!1),X=(0,i.useRef)(!1),[Q,ee]=(0,i.useState)(!0),et=(0,i.useCallback)(async(e=!1)=>{try{e&&($(null),L(!0));let t=await fetch("/api/projects");if(!t.ok)throw Error(await g("projects",t));let r=await t.json();z(r.projects),$(null)}catch(e){$(String(e))}finally{e&&L(!1)}},[]),er=(0,i.useCallback)(async(e,t=!1)=>{if(e){M(t=>({...t,[e]:{sessions:t[e]?.sessions??[],loaded:t[e]?.loaded??!1,error:null,loading:!0}}));try{t&&L(!0);let r=await fetch(`/api/sessions?cwd=${encodeURIComponent(e)}`);if(!r.ok)throw Error(await g("sessions",r));let n=await r.json();M(t=>({...t,[e]:{sessions:n.sessions,loaded:!0,loading:!1,error:null}}))}catch(r){let t=String(r);M(r=>({...r,[e]:{sessions:r[e]?.sessions??[],loaded:r[e]?.loaded??!1,loading:!1,error:t}}))}finally{t&&L(!1)}}},[]),en=(0,i.useRef)(!1);(0,i.useEffect)(()=>{let e=!en.current;en.current=!0,et(e)},[et,s]),(0,i.useEffect)(()=>{fetch("/api/home").then(e=>e.json()).then(e=>{e.home&&N(e.home)}).catch(()=>{})},[]),(0,i.useEffect)(()=>{if(Y.current){Y.current=!1;return}if(Z.current){Z.current=!1;return}S?.(B)},[B,S]);let ei=(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 H(n.error??`HTTP ${r.status}`),!1;return et(!1),!0}catch(e){return H(e instanceof Error?e.message:String(e)),!1}},[et]),eo=(0,i.useCallback)(e=>{fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,touch:!0})}).catch(()=>{})},[]);(0,i.useEffect)(()=>{if(!o||X.current)return;let e=!1;return fetch(`/api/sessions/${encodeURIComponent(o)}?infoOnly=1`).then(e=>e.ok?e.json():null).then(r=>{if(e||X.current)return;let n=r?.info??null;n&&(X.current=!0,A(n.cwd),J(e=>{if(!e.has(n.cwd))return e;let t=new Set(e);return t.delete(n.cwd),x(t),t}),er(n.cwd,!1),eo(n.cwd),t(n,!0))}).finally(()=>{e||X.current||l?.()}),()=>{e=!0}},[o,er,l,t,eo]);let el=(0,i.useCallback)(e=>{Z.current=!0,A(e),H(null),J(t=>{if(!t.has(e))return t;let r=new Set(t);return r.delete(e),x(r),r}),S?.(e),eo(e),er(e,!1)},[er,S,eo]);(0,i.useEffect)(()=>{if(0!==C.length&&null===B&&!y){if(o&&!X.current)return;let e=C[0]?.cwd;e&&(A(e),eo(e),er(e,!1))}},[C,B,y,o,t,l,eo,er]);let es=(0,i.useCallback)(async e=>{await ei(e,!1)&&(el(e),F(!1),H(null))},[el,ei]),ea=y??B,ed=(0,i.useCallback)(async()=>{W(!0);try{await et(!1);let e=new Set([...Object.entries(T).filter(([,e])=>e.loaded||e.loading).map(([e])=>e),...ea?[ea]:[]]);await Promise.all([...e].map(e=>er(e,!1)))}finally{W(!1)}},[ea,et,er,T]);(0,i.useEffect)(()=>{ea&&(J(e=>{if(!e.has(ea))return e;let t=new Set(e);return t.delete(ea),x(t),t}),er(ea,!1))},[ea,er,s]);let ec=(0,i.useCallback)(e=>{if(!e){H(null),F(!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]),eu=(0,i.useCallback)(()=>{ec(ea)},[ec,ea]),ep=(0,i.useCallback)(()=>{H(null),F(!0)},[]),eh=(0,i.useMemo)(()=>[...ea&&!C.some(e=>e.cwd===ea)?[{cwd:ea,displayName:v(ea,P),chatCount:T[ea]?.sessions.length??0,lastAccessed:null,created:null,exists:!0,source:"manual"}]:[],...C].sort((e,t)=>{if(ea&&e.cwd===ea)return -1;if(ea&&t.cwd===ea)return 1;let r=m(e)||T[e.cwd]?.sessions[0]?.modified||"",n=m(t)||T[t.cwd]?.sessions[0]?.modified||"";return r!==n?n.localeCompare(r):e.displayName.localeCompare(t.displayName)}),[ea,P,C,T]),ex=(0,i.useMemo)(()=>eh.filter(e=>e.cwd||e.chatCount>0||e.cwd===ea).map(e=>{let t=T[e.cwd],r=[...t?.sessions??[]].sort((e,t)=>t.modified.localeCompare(e.modified));return{project:e,cwd:e.cwd,displayName:e.displayName||v(e.cwd,P),sessions:r,sessionsState:t,lastAccessed:m(e)||r[0]?.modified||""}}),[ea,P,T,eh]);(0,i.useEffect)(()=>{if(0===ex.length||G.current||(G.current=!0,!ex[0]?.cwd||window.localStorage.getItem(h)))return;let e=new Set(ex.slice(1).map(e=>e.cwd));J(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)?(x(e),e):t),window.localStorage.setItem(h,"1")},[ex]);let eg=(0,i.useCallback)(e=>{J(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),x(r),r});let t=T[e];t?.loaded||t?.loading||er(e,!1)},[er,T]),ef=(0,i.useCallback)(e=>{q(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),ev=(0,i.useCallback)((e,r=!1)=>{e.cwd!==ea&&(Y.current=!0,A(e.cwd)),J(t=>{if(!t.has(e.cwd))return t;let r=new Set(t);return r.delete(e.cwd),x(r),r}),eo(e.cwd),t(e,r)},[t,ea,eo]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"12px 10px 8px",borderBottom:"1px solid var(--border)",flexShrink:0},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(b,{}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsxs)("button",{onClick:eu,disabled:!ea,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,background:"var(--bg-hover)",border:"1px solid var(--border)",color:ea?"var(--text-muted)":"var(--text-dim)",cursor:ea?"pointer":"not-allowed",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:ea?`New session in ${ea}`:"Select a project first",onMouseEnter:e=>{ea&&(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=ea?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.borderColor="var(--border)"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"6",y1:"1",x2:"6",y2:"11"}),(0,n.jsx)("line",{x1:"1",y1:"6",x2:"11",y2:"6"})]}),"New"]}),(0,n.jsx)("button",{onClick:()=>U(!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:_,cwd:ea,homeDir:P,onClose:()=>U(!1),onSelectSession:e=>{ev(e)}}),(0,n.jsxs)("div",{style:{flex:"1 1 auto",overflowY:"auto",padding:"8px 8px 10px",minHeight:120},children:[(0,n.jsxs)("div",{style:{padding:"0 6px 6px 10px",display:"flex",alignItems:"center",justifyContent:"space-between",color:"var(--text-dim)"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>ee(e=>!e),title:Q?"Collapse projects":"Expand projects","aria-expanded":Q,style:{display:"flex",alignItems:"center",gap:6,padding:"4px 0",background:"none",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",textAlign:"left"},children:[(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{transform:Q?"rotate(90deg)":"none",transition:"transform 0.15s",flexShrink:0},children:(0,n.jsx)("polyline",{points:"3 2 7 5 3 8"})}),"Threads"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5},children:[(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),ed()},disabled:R,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:R?"var(--accent)":"var(--text-dim)",cursor:R?"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:R?"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"})]})}),(0,n.jsxs)("button",{type:"button",onClick:ep,title:"Add project","aria-label":"Add project",style:{height:24,display:"flex",alignItems:"center",justifyContent:"center",gap:5,padding:"0 6px",border:"none",borderRadius:6,background:"transparent",color:"var(--text-dim)",cursor:"pointer",flexShrink:0,fontSize:11},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(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:"M8 7.5v3M6.5 9h3"})]}),"Add"]})]})]}),Q&&(0,n.jsxs)(n.Fragment,{children:[I&&(0,n.jsx)("div",{style:{padding:"16px 14px",color:"var(--text-muted)",fontSize:12},children:"Loading..."}),E&&(0,n.jsx)("div",{style:{padding:"12px 14px",color:"#f87171",fontSize:12},children:E}),!I&&!E&&0===ex.length&&(0,n.jsx)("button",{type:"button",onClick:ep,style:{width:"100%",padding:"12px 10px",border:"1px dashed var(--border)",borderRadius:8,background:"transparent",color:"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left"},children:"Add a project folder"}),!I&&!E&&ex.map(t=>{let r=K.has(t.cwd),i=t.cwd===ea,o=t.sessionsState,{visible:l,hiddenCount:s}=function(e,t,r){if(e.length<=10||r)return{visible:e,hiddenCount:0};let n=e.slice(0,10),i=e.find(e=>(function e(t,r){return!!r&&(t.session.id===r||t.children.some(t=>e(t,r)))})(e,t));return i&&!n.includes(i)&&(n=[...n,i]),{visible:n,hiddenCount:e.length-n.length}}(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),e,V.has(t.cwd));return(0,n.jsxs)("div",{style:{marginBottom:6},children:[(0,n.jsx)(k,{group:t,isCurrent:i,isCollapsed:r,onToggle:()=>eg(t.cwd),onSelect:()=>el(t.cwd),onNewSession:e=>{e.stopPropagation(),el(t.cwd),ec(t.cwd)}}),!r&&(0,n.jsxs)("div",{style:{marginTop:2,overflow:"hidden",borderRadius:7},children:[o?.loading&&(0,n.jsx)("div",{style:{padding:"8px 10px",color:"var(--text-dim)",fontSize:11},children:"Loading chats..."}),o?.error&&(0,n.jsx)("div",{style:{padding:"8px 10px",color:"#f87171",fontSize:11},children:o.error}),!o?.loading&&!o?.error&&0===t.sessions.length&&o?.loaded?(0,n.jsx)("button",{type:"button",onClick:()=>{el(t.cwd),ec(t.cwd)},style:{width:"100%",padding:"10px 12px",background:"transparent",border:"none",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:"Start a new session in this project"}):o?.loading||o?.error||!(t.sessions.length>0)?o?.loaded||o?.loading||o?.error?null:(0,n.jsx)("div",{style:{padding:"8px 10px",color:"var(--text-dim)",fontSize:11},children:t.lastAccessed?`Last active ${f(t.lastAccessed)}`:"No chats loaded"}):l.map(r=>(0,n.jsx)(w,{node:r,selectedSessionId:e,onSelectSession:ev,onRenamed:()=>void er(t.cwd,!1),onSessionDeleted:e=>{c?.(e),er(t.cwd,!1),et(!1)},depth:0},r.session.id)),s>0&&t.sessions.length>0&&(0,n.jsx)("button",{type:"button",onClick:()=>ef(t.cwd),style:{width:"100%",padding:"6px 10px",background:"transparent",border:"none",color:"var(--text-dim)",cursor:"pointer",fontSize:11,textAlign:"center"},children:V.has(t.cwd)?"Show less":`Show ${Math.max(0,s)} more`})]})]},t.cwd||"__no_project")})]})]}),(0,n.jsx)(d,{open:O,initialPath:ea||P||null,onClose:()=>F(!1),onSelect:e=>void es(e),externalError:D,onPathInputChange:()=>H(null)})]})}function k({group:e,isCurrent:t,isCollapsed:r,onToggle:o,onSelect:l,onNewSession:s}){let[a,d]=(0,i.useState)(!1),c=e.lastAccessed,u=(0,i.useCallback)(()=>{t?o():l()},[t,l,o]);return(0,n.jsxs)("div",{role:"button",tabIndex:0,onClick:u,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),u())},onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),title:e.cwd,style:{width:"100%",height:32,display:"flex",alignItems:"center",gap:5,padding:"0 8px",background:t?"var(--bg-selected)":a?"var(--bg-hover)":"transparent",border:"none",borderRadius:6,color:"var(--text)",cursor:"pointer",textAlign:"left",overflow:"hidden",transition:"background 0.12s"},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"}),!a&&c&&(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--text-dim)",fontSize:10},children:f(c)}),(0,n.jsx)("button",{type:"button",onClick:s,title:"New chat in this project",tabIndex:a?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:"pointer",flexShrink:0,opacity:+!!a,pointerEvents:a?"auto":"none",transition:"opacity 0.12s, background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--accent)"},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 12 12",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"6",y1:"1.5",x2:"6",y2:"10.5"}),(0,n.jsx)("line",{x1:"1.5",y1:"6",x2:"10.5",y2:"6"})]})})]})}function w({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)(S,{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)(w,{node:e,selectedSessionId:t,onSelectSession:r,onRenamed:o,onSessionDeleted:l,depth:s+1},e.session.id))})]})}function S({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,x]=(0,i.useState)(!1),[g,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),C=(0,i.useCallback)(t=>{t.stopPropagation(),v(e.name??""),x(!0),setTimeout(()=>k.current?.select(),0)},[e.name]),z=(0,i.useCallback)(async()=>{let t=g.trim();if(x(!1),t!==(e.name??""))try{await fetch(`/api/sessions/${encodeURIComponent(e.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),o?.()}catch{}},[g,e.id,e.name,o]),T=(0,i.useCallback)(e=>{e.stopPropagation(),y(!0)},[]),M=(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]),I=(0,i.useCallback)(e=>{e.stopPropagation(),y(!1)},[]);return(0,n.jsx)("div",{onClick:m||h?void 0:r,onMouseEnter:()=>p(!0),onMouseLeave:()=>{p(!1)},style:{height:54,display:"flex",alignItems:"center",paddingLeft:s>0?12*s+14:14,paddingRight:8,cursor: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: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:M,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:I,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:g,onChange:e=>v(e.target.value),onBlur:z,onKeyDown:e=>{"Enter"===e.key&&z(),"Escape"===e.key&&x(!1)},autoFocus:!0,style:{flex:1,fontSize:12,padding:"5px 8px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--bg)",color:"var(--text)",height:30}}):(0,n.jsxs)(n.Fragment,{children:[s>0&&(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-dim)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:t?500:400,lineHeight:1.4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},title:w,children:w}),(0,n.jsxs)("div",{style:{marginTop:2,display:"flex",gap:8,color:"var(--text-dim)",fontSize:11},children:[(0,n.jsx)("span",{title:e.modified,children:f(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:C,title:"Rename",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-selected)",e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="rgba(37,99,235,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),(0,n.jsx)("button",{onClick:T,title:"Delete",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:7,color:"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"background 0.12s, color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.08)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.35)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]})})]})]})})}let C=new Set;function z(e){return C.add(e),()=>{C.delete(e)}}function T(){return"u"<typeof document?"light":document.documentElement.classList.contains("dark")?"dark":"light"}function M(){return"light"}function I(){let e=(0,i.useSyncExternalStore)(z,T,M);return{theme:e,toggleTheme:(0,i.useCallback)(e=>{let t="dark"===T()?"light":"dark",r=()=>{"dark"===t?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark");try{localStorage.setItem("annodex-theme",t)}catch{}C.forEach(e=>e())},n=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if("function"!=typeof document.startViewTransition||n)return void r();let i=e?.x??window.innerWidth/2,o=e?.y??window.innerHeight/2,l=Math.hypot(Math.max(i,window.innerWidth-i),Math.max(o,window.innerHeight-o));document.startViewTransition(r).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${i}px ${o}px)`,`circle(${l}px at ${i}px ${o}px)`]},{duration:450,easing:"cubic-bezier(0.22, 0.61, 0.36, 1)",pseudoElement:"::view-transition-new(root)"})}).catch(()=>{})},[]),isDark:"dark"===e}}function L(e){let t,r=[],n=/`{1,3}show-widget`{0,3}\s*(?:\n\s*`{3}(?:json|html)?\s*)?\n?/g,i=0,o=!1;for(;null!==(t=n.exec(e));){o=!0;let l=e.slice(i,t.index).trim();l&&r.push({type:"text",content:l});let s=t.index+t[0].length,a=e.indexOf("```",s),d=e.indexOf("{",s);if(-1!==d&&d<=s+200&&(-1===a||d<a)){let t=function(e,t){let r=0,n=!1,i=!1;for(let o=t;o<e.length;o++){let t=e[o];if(i){i=!1;continue}if("\\"===t&&n){i=!0;continue}if('"'===t){n=!n;continue}if(!n&&("{"===t&&r++,"}"===t)&&0==--r)return o}return -1}(e,d);if(-1===t){let t=function(e){try{let t=R(e);if(t)return t}catch{}let t=e.indexOf('"widget_code"');if(-1===t)return null;let r=e.indexOf(":",t+13);if(-1===r)return null;let n=e.indexOf('"',r+1);if(-1===n)return null;let i=e.slice(n+1);(i=i.replace(/"\s*\}\s*$/,"")).endsWith("\\")&&(i=i.slice(0,-1));let o=e.match(/"title"\s*:\s*"([^"]*?)"/)?.[1],l=W(i.replace(/\\\\/g,"\0BACKSLASH\0").replace(/\\n/g,"\n").replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(parseInt(t,16))).replace(/\x00BACKSLASH\x00/g,"\\"));return l.code.trim()?{title:o,code:l.code,showOverlay:l.truncated}:null}(e.slice(d));t&&r.push({type:"widget",...t,partial:!0}),i=e.length;break}let o=R(e.slice(d,t+1).trim());o&&r.push({type:"widget",...o});let l=t+1,s=e.slice(l,l+16).match(/^\s*\n?`{1,3}\s*/);s&&(l+=s[0].length),i=l,n.lastIndex=l;continue}if(-1!==a){let t=e.slice(s,a).trim(),o=R(t);o?r.push({type:"widget",...o}):t&&r.push({type:"text",content:t}),n.lastIndex=i=a+3}else{let t=R(e.slice(s).trim());if(t){let e=W(t.code);r.push({type:"widget",title:t.title,code:e.code,partial:!0,showOverlay:e.truncated})}i=e.length;break}}let l=e.slice(i).trim();return l&&r.push({type:"text",content:l}),!o&&0===r.length&&e.trim()&&r.push({type:"text",content:e}),r}function R(e){if(e.startsWith("{")){if(!e.endsWith("}"))return null;try{let t=JSON.parse(e),r=t.widget_code??t.code;if(r)return{title:t.title,code:r}}catch{return null}}return/<(!DOCTYPE|html|svg|canvas|script|style|div)/i.test(e)?{code:e}:null}function W(e){let t=e.lastIndexOf("<script");if(-1===t)return{code:e,truncated:!1};let r=e.slice(t);return/<script[\s\S]*?<\/script>/i.test(r)?{code:e,truncated:!1}:{code:e.slice(0,t).trim(),truncated:!0}}let E=/<(iframe|object|embed|meta|link|base|form)[\s>][\s\S]*?<\/\1>/gi,$=/<(iframe|object|embed|meta|link|base)\b[^>]*\/?>/gi;function B(e){return e.replace(E,"").replace($,"")}let A=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];function P(){if("u"<typeof document)return{};let e=getComputedStyle(document.documentElement),t={};for(let r of A){let n=e.getPropertyValue(r).trim();n&&(t[r]=n)}return t}let N=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];async function D(e){if(navigator.clipboard?.writeText)return void await navigator.clipboard.writeText(e);let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.inset="0",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let r=document.execCommand("copy");if(document.body.removeChild(t),!r)throw Error("Clipboard copy failed.")}async function H(e){let t=await O(e.code);if(t)return t;if(e.capture)return function(e){if(!e.html)throw Error("The widget did not provide capturable HTML.");let t=U({width:e.bodyWidth||640,height:e.bodyHeight||360}),r=function(e){let t=document.createElement("template");t.innerHTML=B(e.html||"");let r=document.createElement("div");for(let n of(r.appendChild(t.content.cloneNode(!0)),Array.from(r.querySelectorAll("img[data-canvas-export]")))){let t=Number(n.getAttribute("data-canvas-export")),r=Number.isFinite(t)?e.canvases?.[t]:null;if(!r?.dataUrl){n.remove();continue}n.setAttribute("src",r.dataUrl),n.setAttribute("width",String(r.width)),n.setAttribute("height",String(r.height)),n.setAttribute("style",function(e,t){let r=new Map;for(let t of(e||"").split(";")){let[e,...n]=t.split(":");e?.trim()&&n.length>0&&r.set(e.trim(),n.join(":").trim())}for(let[e,n]of Object.entries(t))r.set(e,n);return Array.from(r.entries()).map(([e,t])=>e+":"+t).join(";")}(n.getAttribute("style"),{width:r.width+"px",height:r.height+"px",display:"block"}))}return F(r),Array.from(r.childNodes).map(e=>new XMLSerializer().serializeToString(e)).join("")}(e);if(!r.trim())throw Error("The widget capture was empty.");let n=[e.styles||"","#__widget_export_root{"+function(){if("u"<typeof document)return"";let e=getComputedStyle(document.documentElement);return N.map(t=>{let r=e.getPropertyValue(t).trim();return r?t+":"+r+";":""}).join("")}()+'font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;font-size:14px;line-height:1.6;color:var(--text,#1a1a1a);background:transparent;}',"#__widget_export_root *{box-sizing:border-box;}\n#__widget_export_root svg{max-width:100%;height:auto;display:block;}"].join("\n");return q(K('<svg xmlns="http://www.w3.org/2000/svg" width="'+t.width+'" height="'+t.height+'" viewBox="0 0 '+t.width+" "+t.height+'"><defs><style><![CDATA['+n.replace(/\]\]>/g,"]]]]><![CDATA[>")+']]></style></defs><foreignObject x="0" y="0" width="100%" height="100%">'+('<div xmlns="http://www.w3.org/1999/xhtml" id="__widget_export_root" style="width:'+t.width+"px;min-height:")+t.height+'px;overflow:visible;">'+r+"</div></foreignObject></svg>"),t.width,t.height)}(e.capture);throw Error("PNG export needs a rendered widget capture.")}async function O(e){var t;let r,n,i,o,l=function(e){let t=B(e).trim();if(!/^<\s*(style|svg)\b/i.test(t))return null;let r=new DOMParser().parseFromString(t,"text/html"),n=Array.from(r.body.children),i=n.filter(e=>"svg"===e.tagName.toLowerCase()),o=n.filter(e=>"style"!==e.tagName.toLowerCase());if(1!==i.length||1!==o.length)return null;let l=i[0].cloneNode(!0),s=Array.from(r.body.querySelectorAll("style")).map(e=>e.textContent||"").join("\n").trim();if(s){let e=document.createElementNS("http://www.w3.org/2000/svg","style");e.textContent=s,l.insertBefore(e,l.firstChild)}return l}(e);if(!l)return null;F(l),l.setAttribute("xmlns","http://www.w3.org/2000/svg");let s=U((r=function(e){if(!e)return null;let t=e.trim().split(/[\s,]+/).map(Number);return 4!==t.length||t.some(e=>!Number.isFinite(e))||t[2]<=0||t[3]<=0?null:{width:t[2],height:t[3]}}((t=l).getAttribute("viewBox")),n=_(t.getAttribute("width"))??r?.width??640,i=r?r.height/r.width:.5625,o=_(t.getAttribute("height"))??r?.height??n*i,{width:n,height:o}));return l.setAttribute("width",String(s.width)),l.setAttribute("height",String(s.height)),l.getAttribute("viewBox")||l.setAttribute("viewBox","0 0 "+s.width+" "+s.height),q(K(new XMLSerializer().serializeToString(l)),s.width,s.height)}function F(e){for(let t of Array.from(e.querySelectorAll("script, iframe, object, embed, meta, link, base, form")))t.remove();for(let t of[e,...Array.from(e.querySelectorAll("*"))])for(let e of Array.from(t.attributes)){let r=e.name.toLowerCase(),n=e.value.trim();if(r.startsWith("on")){t.removeAttribute(e.name);continue}("href"===r||"src"===r||r.endsWith(":href"))&&/^\s*(javascript|data:text\/html)/i.test(n)&&t.removeAttribute(e.name)}}function _(e){if(!e||e.includes("%"))return null;let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function U(e){let t=V(Math.ceil(e.width||640),240,2e3),r=V(Math.ceil(e.height||360),80,4e3),n=t*r;if(n>8e6){let e=Math.sqrt(8e6/n);t=Math.max(240,Math.floor(t*e)),r=Math.max(80,Math.floor(r*e))}return{width:t,height:r}}function V(e,t,r){return Math.min(Math.max(e,t),r)}function q(e,t,r){return new Promise((n,i)=>{let o=new Image,l=URL.createObjectURL(new Blob([e],{type:"image/svg+xml;charset=utf-8"}));o.onload=()=>{URL.revokeObjectURL(l);try{let e=document.createElement("canvas"),l=Math.min(window.devicePixelRatio||1,2);e.width=Math.ceil(t*l),e.height=Math.ceil(r*l),e.style.width=t+"px",e.style.height=r+"px";let s=e.getContext("2d");if(!s)throw Error("Canvas is not available.");s.scale(l,l),s.drawImage(o,0,0,t,r),e.toBlob(e=>{e?n(e):i(Error("Canvas export returned no image."))},"image/png")}catch(e){i(e instanceof Error?e:Error("PNG export failed."))}},o.onerror=()=>{URL.revokeObjectURL(l),i(Error("The browser could not render this widget as PNG."))},o.src=l})}function K(e){if("u"<typeof document)return e;let t=getComputedStyle(document.documentElement);return e.replace(/var\(\s*(--[a-zA-Z0-9_-]+)(?:\s*,\s*([^)]+))?\)/g,(e,r,n)=>t.getPropertyValue(r).trim()||n?.trim()||"#000")}let J=/cdnjs\.cloudflare\.com|cdn\.jsdelivr\.net|unpkg\.com|esm\.sh/,Y=new Map;function Z(e){return e.slice(0,200)}function G({code:e,isStreaming:t,title:r,showOverlay:o,onSendMessage:l}){let{isDark:s}=I(),a=(0,i.useRef)(null),d=(0,i.useRef)(null),c=(0,i.useRef)(null),u=(0,i.useRef)(new Map),p=(0,i.useRef)(""),[h,x]=(0,i.useState)(!1),[g,f]=(0,i.useState)(()=>Y.get(Z(e))??0),[v,m]=(0,i.useState)(!1),[y,b]=(0,i.useState)(!1),[j,k]=(0,i.useState)(null),[w,S]=(0,i.useState)(!1),[C,z]=(0,i.useState)(!1),T=(0,i.useRef)(""),M=(0,i.useRef)((Y.get(Z(e))??0)>0),L=(0,i.useRef)(!1),R=(0,i.useRef)(s),W=(0,i.useMemo)(()=>J.test(e),[e]),E=(0,i.useMemo)(()=>{let e;return function(e="",t=!1){return`<!DOCTYPE html>
|
|
2
2
|
<html class="${t?"dark":""}">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
@@ -199,7 +199,7 @@ ${e}
|
|
|
199
199
|
})();
|
|
200
200
|
</script>
|
|
201
201
|
</body>
|
|
202
|
-
</html>`}((e=Object.entries({"--bg":"#ffffff","--bg-panel":"#f5f5f5","--bg-hover":"#eeeeee","--bg-selected":"#e8e8e8","--border":"#e0e0e0","--text":"#1a1a1a","--text-muted":"#6b7280","--text-dim":"#9ca3af","--accent":"#2563eb","--accent-hover":"#1d4ed8",..."u"<typeof document?{}:
|
|
202
|
+
</html>`}((e=Object.entries({"--bg":"#ffffff","--bg-panel":"#f5f5f5","--bg-hover":"#eeeeee","--bg-selected":"#e8e8e8","--border":"#e0e0e0","--text":"#1a1a1a","--text-muted":"#6b7280","--text-dim":"#9ca3af","--accent":"#2563eb","--accent-hover":"#1d4ed8",..."u"<typeof document?{}:P(),"--font-mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"}).map(([e,t])=>` ${e}: ${t};`).join("\n"),`
|
|
203
203
|
:root {
|
|
204
204
|
${e}
|
|
205
205
|
}
|
|
@@ -239,22 +239,22 @@ button {
|
|
|
239
239
|
}
|
|
240
240
|
button:hover { background: var(--color-background-tertiary); }
|
|
241
241
|
input[type="range"] { accent-color: var(--accent, #2563eb); }
|
|
242
|
-
`),I.current)},[]);(0,i.useEffect)(()=>{function t(t){if(t.data&&"string"==typeof t.data.type&&(!a.current||t.source===a.current.contentWindow))switch(t.data.type){case"widget:ready":x(!0);break;case"widget:captured":{let e=String(t.data.requestId??""),r=u.current.get(e);if(!r)break;clearTimeout(r.timeout),u.current.delete(e),r.resolve({html:"string"==typeof t.data.html?t.data.html:null,styles:"string"==typeof t.data.styles?t.data.styles:"",canvases:Array.isArray(t.data.canvases)?t.data.canvases:[],bodyWidth:"number"==typeof t.data.bodyWidth?t.data.bodyWidth:void 0,bodyHeight:"number"==typeof t.data.bodyHeight?t.data.bodyHeight:void 0});break}case"widget:resize":if("number"==typeof t.data.height&&t.data.height>0){let r=Math.min(t.data.height+2,2e3),n=X(e);if(M.current){f(e=>{let t=Math.max(e,r);return G.set(n,t),t});break}if(G.set(n,r),L.current)f(r);else{L.current=!0;let e=a.current;e&&(e.style.transition="none",e.offsetHeight),f(r),requestAnimationFrame(()=>{e&&(e.style.transition="height 0.2s ease-out")})}}break;case"widget:link":{let e=String(t.data.href??"");e&&!/^\s*(javascript|data)\s*:/i.test(e)&&window.open(e,"_blank","noopener,noreferrer");break}case"widget:sendMessage":{let e=String(t.data.text??"");e&&e.length<=500&&l?.(e);break}case"widget:publish":window.dispatchEvent(new CustomEvent("widget-cross-publish",{detail:{topic:t.data.topic,data:t.data.data,sourceIframe:a.current}}))}}return window.addEventListener("message",t),()=>window.removeEventListener("message",t)},[e,l]),(0,i.useEffect)(()=>{let e=u.current;return()=>{for(let t of(c.current&&clearTimeout(c.current),e.values()))clearTimeout(t.timeout),t.reject(Error("Widget renderer unmounted."));e.clear()}},[]),(0,i.useEffect)(()=>{function e(e){let t=e.detail;a.current?.contentWindow&&t?.sourceIframe!==a.current&&a.current.contentWindow.postMessage({type:"widget:crossFilter",payload:{topic:t?.topic,data:t?.data}},"*")}return window.addEventListener("widget-cross-publish",e),()=>window.removeEventListener("widget-cross-publish",e)},[]);let $=(0,i.useCallback)(e=>{let t=a.current;t?.contentWindow&&e!==p.current&&(p.current=e,t.contentWindow.postMessage({type:"widget:update",html:e},"*"))},[]);(0,i.useEffect)(()=>{if(!t||!h)return;let r=P(e).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>"']*)/gi,"").replace(/<script[\s\S]*?<\/script>/gi,"").replace(/<script\b[^>]*\/?>/gi,"").replace(/\s+(href|src|action)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>"']*))/gi,(e,t,r,n,i)=>{let o=(r??n??i??"").trim();return/^\s*(javascript|data)\s*:/i.test(o)?"":e});return d.current&&clearTimeout(d.current),d.current=setTimeout(()=>$(r),120),()=>{d.current&&clearTimeout(d.current)}},[e,t,h,$]),(0,i.useEffect)(()=>{if(t||!h||T.current===e)return;let r=P(e),n=a.current;if(!n?.contentWindow)return;T.current=e,p.current=r,M.current=!0,z(!1),n.contentWindow.postMessage({type:"widget:finalize",html:r},"*");let i=setTimeout(()=>{M.current=!1,z(!0)},450);return()=>clearTimeout(i)},[t,h,e]),(0,i.useEffect)(()=>{if(!h)return;let e=()=>{a.current?.contentWindow?.postMessage({type:"widget:theme",vars:H(),isDark:s},"*")};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>t.disconnect()},[h,s]),(0,i.useEffect)(()=>{if(!y)return;let e=document.body.style.overflow;document.body.style.overflow="hidden";let t=e=>{"Escape"===e.key&&b(!1)};return window.addEventListener("keydown",t),()=>{document.body.style.overflow=e,window.removeEventListener("keydown",t)}},[y]);let B=(0,i.useCallback)(e=>{c.current&&clearTimeout(c.current),k(e),c.current=setTimeout(()=>k(null),1800)},[]),A=(0,i.useCallback)(()=>{let e=a.current?.contentWindow;return e?new Promise((t,r)=>{let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=setTimeout(()=>{u.current.delete(n),r(Error("Timed out waiting for widget capture."))},2500);u.current.set(n,{resolve:t,reject:r,timeout:i}),e.postMessage({type:"widget:capture",requestId:n},"*")}):Promise.reject(Error("Widget iframe is not ready."))},[]),N=(0,i.useCallback)(async()=>{try{let t;await O((t={widget_code:e},r?.trim()&&(t.title=r.trim()),"```show-widget\n"+JSON.stringify(t,null,2)+"\n```")),B("Copied source")}catch{B("Copy failed")}},[e,r,B]),D=(0,i.useCallback)(async()=>{try{await O(e),B("Copied HTML/SVG")}catch{B("Copy failed")}},[e,B]),_=(0,i.useCallback)(async()=>{if(!t&&!w){S(!0),B("Exporting PNG...");try{var n,i;let t,o,l;try{t=await F({code:e})}catch{let r=await A();t=await F({code:e,capture:r})}n=t,i=`${((r||"widget").trim()||"widget").replace(/[^a-zA-Z0-9._-]+/g,"_").replace(/^_+|_+$/g,"")||"widget"}.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(o),B("Downloaded PNG")}catch(e){console.warn("[WidgetRenderer] PNG export failed:",e),B("PNG export unavailable")}finally{S(!1)}}},[e,r,t,w,A,B]),U=o||W&&!t&&h&&!C,V={width:24,height:22,padding:0,background:"var(--bg-hover)",color:"var(--text-dim)",border:"1px solid var(--border)",borderRadius:3,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},q={...V,width:48,fontSize:10,whiteSpace:"nowrap"};return(0,n.jsxs)("div",{className:"widget-frame",style:{position:y?"fixed":"relative",inset:y?12:void 0,zIndex:y?1e3:void 0,marginTop:4*!y,marginBottom:4*!y,borderRadius:y?8:6,background:y?"var(--bg)":void 0,boxShadow:y?"0 24px 80px rgba(0, 0, 0, 0.35)":void 0,display:y?"flex":void 0,flexDirection:y?"column":void 0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"4px 10px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderBottom:"none",borderRadius:`${y?8:6}px ${y?8:6}px 0 0`,fontSize:11,color:"var(--text-dim)",minHeight:26,flexShrink:0},children:[(0,n.jsx)("span",{style:{fontWeight:600,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r||"Widget"}),t&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",animation:"pulse 1.5s infinite",flexShrink:0},children:"streaming…"}),j&&(0,n.jsx)("span",{"aria-live":"polite",style:{marginLeft:"auto",fontSize:10,color:"var(--text-muted)",flexShrink:0},children:j}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,marginLeft:j?0:"auto",flexShrink:0},children:[(0,n.jsx)("button",{onClick:N,title:"Copy show-widget source","aria-label":"Copy show-widget source",style:V,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:"16 18 22 12 16 6"}),(0,n.jsx)("polyline",{points:"8 6 2 12 8 18"})]})}),(0,n.jsx)("button",{onClick:D,title:"Copy widget HTML/SVG","aria-label":"Copy widget HTML/SVG",style:V,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)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})}),(0,n.jsx)("button",{onClick:_,disabled:t||w,title:t?"PNG export is available after streaming finishes":"Export widget as PNG","aria-label":"Export widget as PNG",style:{...V,...t||w?{opacity:.45,cursor:"not-allowed"}:null},children:w?(0,n.jsx)("span",{style:{fontSize:9},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:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,n.jsx)("polyline",{points:"7 10 12 15 17 10"}),(0,n.jsx)("line",{x1:"12",y1:"15",x2:"12",y2:"3"})]})}),(0,n.jsx)("button",{onClick:()=>b(e=>!e),title:y?"Exit full screen":"View full screen","aria-label":y?"Exit full screen":"View full screen",style:V,children:y?(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:"4 14 10 14 10 20"}),(0,n.jsx)("polyline",{points:"20 10 14 10 14 4"}),(0,n.jsx)("line",{x1:"14",y1:"10",x2:"21",y2:"3"}),(0,n.jsx)("line",{x1:"3",y1:"21",x2:"10",y2:"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)("polyline",{points:"15 3 21 3 21 9"}),(0,n.jsx)("polyline",{points:"9 21 3 21 3 15"}),(0,n.jsx)("line",{x1:"21",y1:"3",x2:"14",y2:"10"}),(0,n.jsx)("line",{x1:"3",y1:"21",x2:"10",y2:"14"})]})}),(0,n.jsx)("button",{onClick:()=>m(e=>!e),title:v?"Show widget preview":"Show widget code",style:q,children:v?"Preview":"Code"})]})]}),v&&(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",fontSize:11,fontFamily:"var(--font-mono)",color:"var(--text-muted)",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"0 0 6px 6px",overflow:"auto",maxHeight:y?"none":400,flex:y?1:void 0,whiteSpace:"pre-wrap"},children:e}),(0,n.jsx)("iframe",{ref:a,sandbox:"allow-scripts",srcDoc:E,title:r||"Widget",onLoad:()=>x(!0),style:{width:"100%",height:y?"calc(100vh - 50px)":g,minHeight:g>0?void 0:80,border:"1px solid var(--border)",borderRadius:`0 0 ${y?8:6}px ${y?8:6}px`,display:v?"none":"block",overflow:"hidden",background:"transparent",flex:y?1:void 0,transition:L.current?"height 0.2s ease-out":"none"}}),U&&!v&&(0,n.jsx)("div",{className:"widget-shimmer",style:{position:"absolute",inset:0,top:26,pointerEvents:"none",borderRadius:"0 0 6px 6px"}})]})}var ee=r(63143),et=r(32957),er=r(59893);function en({chart:e}){let{isDark:t}=R(),[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)(null),d=(0,i.useRef)(`mermaid-${Math.random().toString(36).slice(2)}`);return((0,i.useEffect)(()=>{let n=!1,i=e.trim();return(l(null),a(null),i)?(Promise.all([r.e(2941),r.e(2995),r.e(3308)]).then(r.bind(r,43328)).then(({default:e})=>(e.initialize({startOnLoad:!1,securityLevel:"strict",theme:t?"dark":"default",suppressErrorRendering:!0}),e.parse(i,{suppressErrors:!0}).then(t=>{if(!t)throw Error("Invalid Mermaid syntax");return e.render(`${d.current}-${Date.now()}`,i)}))).then(e=>{n||l(e.svg)}).catch(e=>{n||a(e instanceof Error?e.message:String(e))}),()=>{n=!0}):void a("Empty Mermaid diagram")},[e,t]),s)?(0,n.jsxs)("div",{className:"mermaid-diagram mermaid-diagram-error",children:[(0,n.jsx)("div",{className:"mermaid-diagram-error-title",children:"Mermaid render failed"}),(0,n.jsx)("div",{className:"mermaid-diagram-error-message",children:s}),(0,n.jsx)("pre",{children:e})]}):(0,n.jsx)("div",{className:"mermaid-diagram",children:o?(0,n.jsx)("div",{className:"mermaid-diagram-canvas",dangerouslySetInnerHTML:{__html:o}}):(0,n.jsx)("div",{className:"mermaid-diagram-loading",children:"Rendering diagram..."})})}var ei=r(7644);let eo={light:ei.vs,dark:ei.xJ},el={light:ei.vs,dark:ei.bM};function es(e,t="default"){let r=function(e="default"){return"compact"===e?el:eo}(t);return e?r.dark:r.light}function ea(e){return/^[a-zA-Z]:[\\/]/.test(e)||e.startsWith("\\\\")?e.replace(/\\/g,"/"):e}function ed(e){return ea(e).split("/").filter(Boolean).map(encodeURIComponent).join("/")}function ec(e){let t=ea(e).replace(/\/+$/,"");return t.split("/").pop()??t}function eu(e,t){if(!t)return e;let r=ea(e),n=ea(t).replace(/\/$/,"");return r.startsWith(n+"/")?r.slice(n.length+1):e}function ep(e){return/^[a-z][a-z\d+.-]*:/i.test(e)||e.startsWith("//")}function eh(e){let t=ea(e),r=t.startsWith("/"),n=[];for(let e of t.split("/"))if(e&&"."!==e){if(".."===e){n.length>0&&".."!==n[n.length-1]?n.pop():r||n.push(e);continue}n.push(e)}return`${r?"/":""}${n.join("/")}`}function ex(e,t){let r,n,i;if(!e||!t||t.startsWith("#")||ep(t))return null;let o=(r=/^([^?#]*)(.*)$/.exec(t),r?.[1]??t);if(!o)return null;let l=function(e){try{return decodeURI(e)}catch{return e}}(o);return l.startsWith("/")?eh(l):eh(`${(i=(n=ea(e)).lastIndexOf("/"))>=0?n.slice(0,i):""}/${l}`)}function eg(e){return`/api/files/${ed(e)}?type=read`}function ef({code:e,language:t,variant:r}){let{isDark:o}=R(),[l,s]=(0,i.useState)(!1);return(0,n.jsxs)("div",{className:`markdown-code-block markdown-code-block-${r}`,style:{position:"relative",marginTop:"file"===r?12:4,marginBottom:"file"===r?12:4,borderRadius:6,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{style:{padding:"3px 10px",background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,n.jsx)("span",{children:t||"text"}),(0,n.jsx)("button",{onClick:()=>{(function(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);try{let t=document.createElement("textarea");return t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}catch{return Promise.reject()}})(e).then(()=>{s(!0),setTimeout(()=>s(!1),1500)})},style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:11},children:l?"copied":"copy"})]}),(0,n.jsx)(er.A,{language:t||"text",style:es(o),showLineNumbers:"chat"===r,lineNumberStyle:{color:"var(--text-dim)",fontStyle:"normal"},customStyle:{margin:0,padding:"file"===r?"12px 16px":"10px 12px",fontSize:"file"===r?13:12.5,lineHeight:1.6,borderRadius:0,background:"var(--bg)"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},children:e})]})}function ev({content:e,className:t="markdown-body",style:r,codeBlockVariant:i="chat",baseFilePath:o,onOpenLocalFile:l,onWidgetSendMessage:s,renderVisualCodeBlocks:a=!1}){return(0,n.jsx)("div",{className:t,style:r,children:(0,n.jsx)(ee.oz,{remarkPlugins:[et.A],components:{code({className:e,children:t,node:r,...o}){let l,d,c,u=e?.replace(/^language-/,"").trim()??"",p=String(t),h=p.replace(/\n$/,""),x=e?.includes("language-")||p.includes("\n");if(x&&("mermaid"===(l=u.trim().toLowerCase())||"mmd"===l))return(0,n.jsx)(en,{chart:h});if(x&&"show-widget"===u.trim().toLowerCase()){let e,t=(e=W(`\`\`\`show-widget
|
|
242
|
+
`),R.current)},[]);(0,i.useEffect)(()=>{function t(t){if(t.data&&"string"==typeof t.data.type&&(!a.current||t.source===a.current.contentWindow))switch(t.data.type){case"widget:ready":x(!0);break;case"widget:captured":{let e=String(t.data.requestId??""),r=u.current.get(e);if(!r)break;clearTimeout(r.timeout),u.current.delete(e),r.resolve({html:"string"==typeof t.data.html?t.data.html:null,styles:"string"==typeof t.data.styles?t.data.styles:"",canvases:Array.isArray(t.data.canvases)?t.data.canvases:[],bodyWidth:"number"==typeof t.data.bodyWidth?t.data.bodyWidth:void 0,bodyHeight:"number"==typeof t.data.bodyHeight?t.data.bodyHeight:void 0});break}case"widget:resize":if("number"==typeof t.data.height&&t.data.height>0){let r=Math.min(t.data.height+2,2e3),n=Z(e);if(L.current){f(e=>{let t=Math.max(e,r);return Y.set(n,t),t});break}if(Y.set(n,r),M.current)f(r);else{M.current=!0;let e=a.current;e&&(e.style.transition="none",e.offsetHeight),f(r),requestAnimationFrame(()=>{e&&(e.style.transition="height 0.2s ease-out")})}}break;case"widget:link":{let e=String(t.data.href??"");e&&!/^\s*(javascript|data)\s*:/i.test(e)&&window.open(e,"_blank","noopener,noreferrer");break}case"widget:sendMessage":{let e=String(t.data.text??"");e&&e.length<=500&&l?.(e);break}case"widget:publish":window.dispatchEvent(new CustomEvent("widget-cross-publish",{detail:{topic:t.data.topic,data:t.data.data,sourceIframe:a.current}}))}}return window.addEventListener("message",t),()=>window.removeEventListener("message",t)},[e,l]),(0,i.useEffect)(()=>{let e=u.current;return()=>{for(let t of(c.current&&clearTimeout(c.current),e.values()))clearTimeout(t.timeout),t.reject(Error("Widget renderer unmounted."));e.clear()}},[]),(0,i.useEffect)(()=>{function e(e){let t=e.detail;a.current?.contentWindow&&t?.sourceIframe!==a.current&&a.current.contentWindow.postMessage({type:"widget:crossFilter",payload:{topic:t?.topic,data:t?.data}},"*")}return window.addEventListener("widget-cross-publish",e),()=>window.removeEventListener("widget-cross-publish",e)},[]);let $=(0,i.useCallback)(e=>{let t=a.current;t?.contentWindow&&e!==p.current&&(p.current=e,t.contentWindow.postMessage({type:"widget:update",html:e},"*"))},[]);(0,i.useEffect)(()=>{if(!t||!h)return;let r=B(e).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>"']*)/gi,"").replace(/<script[\s\S]*?<\/script>/gi,"").replace(/<script\b[^>]*\/?>/gi,"").replace(/\s+(href|src|action)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>"']*))/gi,(e,t,r,n,i)=>{let o=(r??n??i??"").trim();return/^\s*(javascript|data)\s*:/i.test(o)?"":e});return d.current&&clearTimeout(d.current),d.current=setTimeout(()=>$(r),120),()=>{d.current&&clearTimeout(d.current)}},[e,t,h,$]),(0,i.useEffect)(()=>{if(t||!h||T.current===e)return;let r=B(e),n=a.current;if(!n?.contentWindow)return;T.current=e,p.current=r,L.current=!0,z(!1),n.contentWindow.postMessage({type:"widget:finalize",html:r},"*");let i=setTimeout(()=>{L.current=!1,z(!0)},450);return()=>clearTimeout(i)},[t,h,e]),(0,i.useEffect)(()=>{if(!h)return;let e=()=>{a.current?.contentWindow?.postMessage({type:"widget:theme",vars:P(),isDark:s},"*")};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>t.disconnect()},[h,s]),(0,i.useEffect)(()=>{if(!y)return;let e=document.body.style.overflow;document.body.style.overflow="hidden";let t=e=>{"Escape"===e.key&&b(!1)};return window.addEventListener("keydown",t),()=>{document.body.style.overflow=e,window.removeEventListener("keydown",t)}},[y]);let A=(0,i.useCallback)(e=>{c.current&&clearTimeout(c.current),k(e),c.current=setTimeout(()=>k(null),1800)},[]),N=(0,i.useCallback)(()=>{let e=a.current?.contentWindow;return e?new Promise((t,r)=>{let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=setTimeout(()=>{u.current.delete(n),r(Error("Timed out waiting for widget capture."))},2500);u.current.set(n,{resolve:t,reject:r,timeout:i}),e.postMessage({type:"widget:capture",requestId:n},"*")}):Promise.reject(Error("Widget iframe is not ready."))},[]),O=(0,i.useCallback)(async()=>{try{let t;await D((t={widget_code:e},r?.trim()&&(t.title=r.trim()),"```show-widget\n"+JSON.stringify(t,null,2)+"\n```")),A("Copied source")}catch{A("Copy failed")}},[e,r,A]),F=(0,i.useCallback)(async()=>{try{await D(e),A("Copied HTML/SVG")}catch{A("Copy failed")}},[e,A]),_=(0,i.useCallback)(async()=>{if(!t&&!w){S(!0),A("Exporting PNG...");try{var n,i;let t,o,l;try{t=await H({code:e})}catch{let r=await N();t=await H({code:e,capture:r})}n=t,i=`${((r||"widget").trim()||"widget").replace(/[^a-zA-Z0-9._-]+/g,"_").replace(/^_+|_+$/g,"")||"widget"}.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(o),A("Downloaded PNG")}catch(e){console.warn("[WidgetRenderer] PNG export failed:",e),A("PNG export unavailable")}finally{S(!1)}}},[e,r,t,w,N,A]),U=o||W&&!t&&h&&!C,V={width:24,height:22,padding:0,background:"var(--bg-hover)",color:"var(--text-dim)",border:"1px solid var(--border)",borderRadius:3,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},q={...V,width:48,fontSize:10,whiteSpace:"nowrap"};return(0,n.jsxs)("div",{className:"widget-frame",style:{position:y?"fixed":"relative",inset:y?12:void 0,zIndex:y?1e3:void 0,marginTop:4*!y,marginBottom:4*!y,borderRadius:y?8:6,background:y?"var(--bg)":void 0,boxShadow:y?"0 24px 80px rgba(0, 0, 0, 0.35)":void 0,display:y?"flex":void 0,flexDirection:y?"column":void 0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"4px 10px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderBottom:"none",borderRadius:`${y?8:6}px ${y?8:6}px 0 0`,fontSize:11,color:"var(--text-dim)",minHeight:26,flexShrink:0},children:[(0,n.jsx)("span",{style:{fontWeight:600,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r||"Widget"}),t&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--accent)",animation:"pulse 1.5s infinite",flexShrink:0},children:"streaming…"}),j&&(0,n.jsx)("span",{"aria-live":"polite",style:{marginLeft:"auto",fontSize:10,color:"var(--text-muted)",flexShrink:0},children:j}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,marginLeft:j?0:"auto",flexShrink:0},children:[(0,n.jsx)("button",{onClick:O,title:"Copy show-widget source","aria-label":"Copy show-widget source",style:V,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:"16 18 22 12 16 6"}),(0,n.jsx)("polyline",{points:"8 6 2 12 8 18"})]})}),(0,n.jsx)("button",{onClick:F,title:"Copy widget HTML/SVG","aria-label":"Copy widget HTML/SVG",style:V,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)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})}),(0,n.jsx)("button",{onClick:_,disabled:t||w,title:t?"PNG export is available after streaming finishes":"Export widget as PNG","aria-label":"Export widget as PNG",style:{...V,...t||w?{opacity:.45,cursor:"not-allowed"}:null},children:w?(0,n.jsx)("span",{style:{fontSize:9},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:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,n.jsx)("polyline",{points:"7 10 12 15 17 10"}),(0,n.jsx)("line",{x1:"12",y1:"15",x2:"12",y2:"3"})]})}),(0,n.jsx)("button",{onClick:()=>b(e=>!e),title:y?"Exit full screen":"View full screen","aria-label":y?"Exit full screen":"View full screen",style:V,children:y?(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:"4 14 10 14 10 20"}),(0,n.jsx)("polyline",{points:"20 10 14 10 14 4"}),(0,n.jsx)("line",{x1:"14",y1:"10",x2:"21",y2:"3"}),(0,n.jsx)("line",{x1:"3",y1:"21",x2:"10",y2:"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)("polyline",{points:"15 3 21 3 21 9"}),(0,n.jsx)("polyline",{points:"9 21 3 21 3 15"}),(0,n.jsx)("line",{x1:"21",y1:"3",x2:"14",y2:"10"}),(0,n.jsx)("line",{x1:"3",y1:"21",x2:"10",y2:"14"})]})}),(0,n.jsx)("button",{onClick:()=>m(e=>!e),title:v?"Show widget preview":"Show widget code",style:q,children:v?"Preview":"Code"})]})]}),v&&(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",fontSize:11,fontFamily:"var(--font-mono)",color:"var(--text-muted)",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"0 0 6px 6px",overflow:"auto",maxHeight:y?"none":400,flex:y?1:void 0,whiteSpace:"pre-wrap"},children:e}),(0,n.jsx)("iframe",{ref:a,sandbox:"allow-scripts",srcDoc:E,title:r||"Widget",onLoad:()=>x(!0),style:{width:"100%",height:y?"calc(100vh - 50px)":g,minHeight:g>0?void 0:80,border:"1px solid var(--border)",borderRadius:`0 0 ${y?8:6}px ${y?8:6}px`,display:v?"none":"block",overflow:"hidden",background:"transparent",flex:y?1:void 0,transition:M.current?"height 0.2s ease-out":"none"}}),U&&!v&&(0,n.jsx)("div",{className:"widget-shimmer",style:{position:"absolute",inset:0,top:26,pointerEvents:"none",borderRadius:"0 0 6px 6px"}})]})}var X=r(63143),Q=r(32957),ee=r(59893);function et({chart:e}){let{isDark:t}=I(),[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)(null),d=(0,i.useRef)(`mermaid-${Math.random().toString(36).slice(2)}`);return((0,i.useEffect)(()=>{let n=!1,i=e.trim();return(l(null),a(null),i)?(Promise.all([r.e(2941),r.e(2995),r.e(3308)]).then(r.bind(r,43328)).then(({default:e})=>(e.initialize({startOnLoad:!1,securityLevel:"strict",theme:t?"dark":"default",suppressErrorRendering:!0}),e.parse(i,{suppressErrors:!0}).then(t=>{if(!t)throw Error("Invalid Mermaid syntax");return e.render(`${d.current}-${Date.now()}`,i)}))).then(e=>{n||l(e.svg)}).catch(e=>{n||a(e instanceof Error?e.message:String(e))}),()=>{n=!0}):void a("Empty Mermaid diagram")},[e,t]),s)?(0,n.jsxs)("div",{className:"mermaid-diagram mermaid-diagram-error",children:[(0,n.jsx)("div",{className:"mermaid-diagram-error-title",children:"Mermaid render failed"}),(0,n.jsx)("div",{className:"mermaid-diagram-error-message",children:s}),(0,n.jsx)("pre",{children:e})]}):(0,n.jsx)("div",{className:"mermaid-diagram",children:o?(0,n.jsx)("div",{className:"mermaid-diagram-canvas",dangerouslySetInnerHTML:{__html:o}}):(0,n.jsx)("div",{className:"mermaid-diagram-loading",children:"Rendering diagram..."})})}var er=r(7644);let en={light:er.vs,dark:er.xJ},ei={light:er.vs,dark:er.bM};function eo(e,t="default"){let r=function(e="default"){return"compact"===e?ei:en}(t);return e?r.dark:r.light}function el(e){return/^[a-zA-Z]:[\\/]/.test(e)||e.startsWith("\\\\")?e.replace(/\\/g,"/"):e}function es(e){return el(e).split("/").filter(Boolean).map(encodeURIComponent).join("/")}function ea(e){let t=el(e).replace(/\/+$/,"");return t.split("/").pop()??t}function ed(e,t){if(!t)return e;let r=el(e),n=el(t).replace(/\/$/,"");return r.startsWith(n+"/")?r.slice(n.length+1):e}function ec(e){return/^[a-z][a-z\d+.-]*:/i.test(e)||e.startsWith("//")}function eu(e){let t=el(e),r=t.startsWith("/"),n=[];for(let e of t.split("/"))if(e&&"."!==e){if(".."===e){n.length>0&&".."!==n[n.length-1]?n.pop():r||n.push(e);continue}n.push(e)}return`${r?"/":""}${n.join("/")}`}function ep(e,t){let r,n,i;if(!e||!t||t.startsWith("#")||ec(t))return null;let o=(r=/^([^?#]*)(.*)$/.exec(t),r?.[1]??t);if(!o)return null;let l=function(e){try{return decodeURI(e)}catch{return e}}(o);return l.startsWith("/")?eu(l):eu(`${(i=(n=el(e)).lastIndexOf("/"))>=0?n.slice(0,i):""}/${l}`)}function eh(e){return`/api/files/${es(e)}?type=read`}function ex({code:e,language:t,variant:r}){let{isDark:o}=I(),[l,s]=(0,i.useState)(!1);return(0,n.jsxs)("div",{className:`markdown-code-block markdown-code-block-${r}`,style:{position:"relative",marginTop:"file"===r?12:4,marginBottom:"file"===r?12:4,borderRadius:6,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{style:{padding:"3px 10px",background:"var(--bg-panel)",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,n.jsx)("span",{children:t||"text"}),(0,n.jsx)("button",{onClick:()=>{(function(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);try{let t=document.createElement("textarea");return t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}catch{return Promise.reject()}})(e).then(()=>{s(!0),setTimeout(()=>s(!1),1500)})},style:{background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:11},children:l?"copied":"copy"})]}),(0,n.jsx)(ee.A,{language:t||"text",style:eo(o),showLineNumbers:"chat"===r,lineNumberStyle:{color:"var(--text-dim)",fontStyle:"normal"},customStyle:{margin:0,padding:"file"===r?"12px 16px":"10px 12px",fontSize:"file"===r?13:12.5,lineHeight:1.6,borderRadius:0,background:"var(--bg)"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},children:e})]})}function eg({content:e,className:t="markdown-body",style:r,codeBlockVariant:i="chat",baseFilePath:o,onOpenLocalFile:l,onWidgetSendMessage:s,renderVisualCodeBlocks:a=!1}){return(0,n.jsx)("div",{className:t,style:r,children:(0,n.jsx)(X.oz,{remarkPlugins:[Q.A],components:{code({className:e,children:t,node:r,...o}){let l,d,c,u=e?.replace(/^language-/,"").trim()??"",p=String(t),h=p.replace(/\n$/,""),x=e?.includes("language-")||p.includes("\n");if(x&&("mermaid"===(l=u.trim().toLowerCase())||"mmd"===l))return(0,n.jsx)(et,{chart:h});if(x&&"show-widget"===u.trim().toLowerCase()){let e,t=(e=L(`\`\`\`show-widget
|
|
243
243
|
${h}
|
|
244
|
-
\`\`\``).find(e=>"widget"===e.type),e?.type==="widget"?{title:e.title,code:e.code}:null);if(t)return(0,n.jsx)(Q,{code:t.code,isStreaming:!1,title:t.title,onSendMessage:s})}return x&&a&&(d=u.trim().toLowerCase(),(c=h.trim())&&("svg"===d||"xml"===d&&/^<svg[\s>]/i.test(c)?/^<svg[\s>]/i.test(c):!("html"!==d||/<!doctype|<html[\s>]|<head[\s>]|<body[\s>]/i.test(c))&&/^<(style|svg|div|section|article|main|figure|canvas)\b/i.test(c)))?(0,n.jsx)(Q,{code:h,isStreaming:!1,title:`${u||"visual"} preview`,onSendMessage:s}):x?(0,n.jsx)(ef,{code:h,language:u,variant:i}):(0,n.jsx)("code",{style:{background:"var(--bg-selected)",padding:"1px 4px",borderRadius:3,fontFamily:"var(--font-mono)",fontSize:"0.9em"},...o,children:t})},pre:({children:e})=>(0,n.jsx)(n.Fragment,{children:e}),a({href:e,children:t,node:r,...i}){let s=ex(o,e),a=!!s,d=!!e&&ep(e);return(0,n.jsx)("a",{...i,href:a?eg(s):e,target:d?"_blank":void 0,rel:d?"noreferrer":void 0,onClick:e=>{s&&l&&(e.preventDefault(),l(s,ec(s)))},title:a?s:i.title,children:t})},img({src:e,alt:t,node:r,...i}){let l="string"==typeof e?e:void 0,s=ex(o,l),a=s?eg(s):l;return(0,n.jsx)("img",{...i,src:a,alt:t??"",loading:"lazy",title:s??i.title})}},children:e})})}function em(e){if(!e)return null;let t=new Date(e),r=new Date,n=t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()&&t.getDate()===r.getDate(),i=t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});if(n)return i;let o=t.toLocaleDateString([],{month:"short",day:"numeric",year:t.getFullYear()!==r.getFullYear()?"numeric":void 0});return`${o} ${i}`}function ey(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);try{let t=document.createElement("textarea");return t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}catch{return Promise.reject()}}function eb(e){return e.source?.type==="base64"&&e.source.data?`data:${e.source.media_type??"image/png"};base64,${e.source.data}`:e.source?.type==="url"&&e.source.url?e.source.url:e.data?`data:${e.mimeType??"image/png"};base64,${e.data}`:null}let ej=/(?:file:\/\/)?(?:(?:[A-Za-z]:[\\/])|\/|~\/|\.{1,2}[\\/]|[A-Za-z0-9_.-]+[\\/])[^`"'<>|\s{}\[\]]+?\.(?:png|jpe?g|webp|gif|svg|bmp|avif|pdf)(?=$|[\s`"'<>|{}\[\]),.;:!?])/gi,ek=/\.(?:png|jpe?g|webp|gif|svg|bmp|avif)$/i,ew=/\.pdf$/i,eS=/^[A-Za-z]:[\\/]/;function eC(e){let t=ea(e),r=t.startsWith("/")||eS.test(t);if(eS.test(t))return t;let n=[];for(let e of t.split("/"))if(e&&"."!==e){if(".."===e){n.length>0&&".."!==n[n.length-1]?n.pop():r||n.push(e);continue}n.push(e)}return`${r?"/":""}${n.join("/")}`}function ez(e,t){if(!e)return[];let r=[],n=new Set,i=new Set;for(let t of e.matchAll(/!\[[^\]]*]\(([^)]+)\)/g))t[1]&&i.add(t[1].trim());let o=e=>{!e||n.has(e)||r.length>=24||(n.add(e),r.push(e))};for(let r of(ej.lastIndex=0,e.matchAll(ej))){let n=r[0];if(/^[a-z][a-z\d+.-]*:\/\//i.test(n)&&!/^file:\/\//i.test(n))continue;let l=e.slice(Math.max(0,r.index-12),r.index);if(/[A-Za-z][A-Za-z\d+.-]*:\/?$/.test(l)||n.startsWith("//")||i.has(n))continue;let s=function(e,t){let r=e.trim().replace(/^file:\/\//i,"").replace(/[),.;:!?]+$/g,"");if(!r||r.startsWith("//"))return null;if((r=ea(r)).startsWith("/")||eS.test(r))return eC(r);if(r.startsWith("~/")){let e=t?.match(/^(\/Users\/[^/]+|\/home\/[^/]+)(?:\/|$)/);return e?eC(`${e[1]}/${r.slice(2)}`):null}return t?eC(`${t.replace(/\/+$/,"")}/${r.replace(/^\.?\//,"")}`):null}(n,t);s&&(ek.test(s)?o(s):ew.test(s)&&o(s.replace(ew,".png")))}return r}function eT({images:e,maxHeight:t=360}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===e.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:e.map((e,r)=>{let i=eb(e);return i?(0,n.jsx)("a",{href:i,target:"_blank",rel:"noreferrer",title:"Open image",style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:(0,n.jsx)("img",{src:i,alt:"",loading:"lazy",style:{display:"block",width:"100%",maxHeight:t,objectFit:"contain"}})},r):null})})}function eL({imagePaths:e,maxHeight:t=360}){let[r,o]=(0,i.useState)(()=>new Set),l=(0,i.useRef)(new Map),s=e.join("\0");(0,i.useEffect)(()=>{let t=new Set(e);l.current=new Map([...l.current].filter(([e])=>t.has(e))),o(e=>{let r=new Set([...e].filter(e=>t.has(e)));return r.size===e.size?e:r})},[e,s]),(0,i.useEffect)(()=>{if(![...r].some(e=>(l.current.get(e)??0)<3))return;let e=window.setTimeout(()=>{o(e=>{let t=new Set(e);for(let r of e)(l.current.get(r)??0)<3&&t.delete(r);return t})},2500);return()=>window.clearTimeout(e)},[r]);let a=e.filter(e=>!r.has(e));return 0===a.length?null:(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===a.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:a.map(e=>{let r=`/api/files/${ed(e)}?type=read`,i=ec(e);return(0,n.jsxs)("a",{href:r,target:"_blank",rel:"noreferrer",title:e,style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsx)("img",{src:r,alt:i,loading:"lazy",onError:()=>{l.current.set(e,(l.current.get(e)??0)+1),o(t=>{let r=new Set(t);return r.add(e),r})},style:{display:"block",width:"100%",maxHeight:t,objectFit:"contain"}}),(0,n.jsx)("div",{style:{padding:"4px 6px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:i})]},e)})})}function eM({message:e,isStreaming:t,toolResults:r,modelNames:i,entryId:o,onFork:l,forking:s,onSendMessage:a,showTimestamp:d,prevTimestamp:c,renderVisualCodeBlocks:u,cwd:p}){return"user"===e.role?(0,n.jsx)(eI,{message:e,entryId:o,onFork:l,forking:s}):"assistant"===e.role?(0,n.jsx)(eR,{message:e,isStreaming:t,toolResults:r,modelNames:i,onSendMessage:a,showTimestamp:d,prevTimestamp:c,renderVisualCodeBlocks:u,cwd:p}):"toolResult"===e.role?null:"custom"===e.role?(0,n.jsx)(eH,{message:e,showTimestamp:d}):null}function eI({message:e,entryId:t,onFork:r,forking:o}){let[l,s]=(0,i.useState)(!1),[a,d]=(0,i.useState)(!1),c="string"==typeof e.content?e.content:e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),u="string"==typeof e.content?[]:e.content.filter(e=>"image"===e.type),p=em(e.timestamp);return(0,n.jsxs)("div",{style:{marginBottom:16,display:"flex",flexDirection:"column",alignItems:"flex-end"},onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),children:[(0,n.jsx)("div",{style:{display:"flex",alignItems:"flex-end",gap:6,maxWidth:"85%"},children:(0,n.jsxs)("div",{style:{flex:1,minWidth:0,background:"var(--user-bg)",border:"1px solid rgba(59,130,246,0.2)",borderRadius:12,padding:"8px 12px",fontSize:14,lineHeight:1.6,color:"var(--text)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[u.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:8*!!c},children:u.map((e,t)=>{let r=eb(e);return r?(0,n.jsx)("img",{src:r,alt:"",style:{maxWidth:240,maxHeight:240,borderRadius:6,objectFit:"contain",display:"block",border:"1px solid rgba(59,130,246,0.15)"}},t):null})}),c]})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:6,marginTop:3},children:[(0,n.jsx)("div",{style:{display:"flex",gap:3,opacity:+!!l,pointerEvents:l?"auto":"none",transition:"opacity 0.12s"},children:(0,n.jsxs)("button",{onClick:()=>{ey(c).then(()=>{d(!0),setTimeout(()=>d(!1),1500)})},title:"Copy message",style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",height:22,background:"none",border:"none",borderRadius:5,color:a?"var(--accent)":"var(--text-dim)",cursor:"pointer",fontSize:11,fontWeight:400,whiteSpace:"nowrap",transition:"color 0.12s"},onMouseEnter:e=>{a||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{a||(e.currentTarget.style.color="var(--text-dim)")},children:[a?(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),a?"Copied":"Copy"]})}),!!t&&!!r&&(0,n.jsx)("div",{style:{display:"flex",gap:3,opacity:l||o?1:0,pointerEvents:l||o?"auto":"none",transition:"opacity 0.12s"},children:(0,n.jsxs)("button",{onClick:()=>{r(t)},disabled:o,title:o?"Creating new session...":"New session - creates an independent copy from here",style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",height:22,background:"none",border:"none",borderRadius:5,color:o?"var(--accent)":"var(--text-dim)",cursor:o?"not-allowed":"pointer",fontSize:11,fontWeight:400,whiteSpace:"nowrap",transition:"color 0.12s"},onMouseEnter:e=>{o||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{o||(e.currentTarget.style.color="var(--text-dim)")},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",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"})]}),o?"Creating...":"New session"]})}),p&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)"},children:p})]})]})}function eR({message:e,isStreaming:t,toolResults:r,modelNames:o,onSendMessage:l,showTimestamp:s,prevTimestamp:a,renderVisualCodeBlocks:d,cwd:c}){var u;let p,h,x,g=s?em(e.timestamp):null,f=e.content??[],[v,m]=(0,i.useState)(!1),[y,b]=(0,i.useState)(!1),j=(0,i.useRef)(null),[k,w]=(0,i.useState)(null),S=(0,i.useRef)(f);S.current=f;let C=(0,i.useRef)(new Map),[z,T]=(0,i.useState)(new Map),L=(0,i.useMemo)(()=>{if(!e.timestamp||!a)return;let t=Math.round((e.timestamp-a)/1e3);return t>0?t:void 0},[e.timestamp,a]),M=(0,i.useMemo)(()=>{let t=new Map;if(!r||!e.timestamp)return t;for(let[n,i]of r)if(i.timestamp&&e.timestamp){let r=Math.round((i.timestamp-e.timestamp)/1e3);r>0&&t.set(n,r)}return t},[r,e.timestamp]),I=f.filter(e=>"text"===e.type).map(e=>e.text).join("\n");(0,i.useEffect)(()=>{if(!t){let e=Date.now();T(t=>{let r=new Map(t);for(let[t,n]of C.current)r.has(t)||r.set(t,Math.round((e-n)/1e3));return r}),j.current=null,w(null);return}let e=setInterval(()=>{let e=S.current,t=Date.now();e.forEach((e,r)=>{C.current.has(r)||C.current.set(r,t)}),T(r=>{let n=!1,i=new Map(r);for(let r=0;r<e.length-1;r++)if(!i.has(r)&&C.current.has(r)){let e=C.current.get(r),o=C.current.get(r+1)??t;i.set(r,Math.round((o-e)/1e3)),n=!0}return n?i:r});let r=0;for(let t of e)"text"===t.type?r+=t.text?.length??0:"thinking"===t.type?r+=t.thinking?.length??0:"toolCall"===t.type&&(r+=JSON.stringify(t.input??{}).length);if(0===r)return;null===j.current&&(j.current=t);let n=(t-j.current)/1e3;n>.5&&w(r/4/n)},300);return()=>clearInterval(e)},[t]);let R=(h=e.provider?.trim(),x=e.model?.trim(),h&&x&&"unknown"!==x?o?.[`${h}:${x}`]??o?.[x]??x:h&&"codex"!==h&&"unknown"!==h?h:x&&"unknown"!==x?o?.[x]??x:null);return(0,n.jsxs)("div",{style:{marginBottom:16},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),children:[(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--text-dim)",marginBottom:4,display:"flex",alignItems:"center",gap:6},children:[R&&(0,n.jsx)("span",{children:R}),t&&(()=>{let e,t=0;for(let e of f)"text"===e.type?t+=e.text?.length??0:"thinking"===e.type?t+=e.thinking?.length??0:"toolCall"===e.type&&(t+=JSON.stringify(e.input??{}).length);let r=Math.round(t/4);return(0,n.jsx)(n.Fragment,{children:r>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:"var(--text)"},title:"预估 token 数(流式接收中)",children:[(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:2,fontSize:11,fontWeight:400},children:[(0,n.jsxs)("svg",{width:"10",height:"10",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]}),null!==k&&(e=k>=50?"#53b3cb":k>=30?"#9bc53d":k>=15?"#f9c22e":"#e01a4f",(0,n.jsxs)("span",{style:{marginLeft:6,padding:"1px 6px",borderRadius:4,background:e,color:"#fff",fontSize:11,fontWeight:400},children:[k.toFixed(1)," t/s"]}))]})})})()]}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:f.map((e,i)=>(0,n.jsx)(eW,{block:e,toolResults:r,isStreaming:t,streamingDuration:z.get(i)??("thinking"===e.type?L:void 0),toolCallDurations:M,onSendMessage:l,renderVisualCodeBlocks:d,cwd:c},i))}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:4},children:[e.usage&&!t&&(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)"},children:(u=e.usage,p=[],u.input&&p.push(`${u.input.toLocaleString()} in`),u.output&&p.push(`${u.output.toLocaleString()} out`),u.cacheRead&&p.push(`${u.cacheRead.toLocaleString()} cache`),u.cost?.total&&p.push(`$${u.cost.total.toFixed(4)}`),p.join(" \xb7 "))}),I&&!t&&(0,n.jsxs)("button",{onClick:()=>{ey(I).then(()=>{b(!0),setTimeout(()=>b(!1),1500)})},title:"Copy message",style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",height:22,background:"none",border:"none",borderRadius:5,color:y?"var(--accent)":"var(--text-dim)",cursor:"pointer",fontSize:11,fontWeight:400,whiteSpace:"nowrap",opacity:+!!v,pointerEvents:v?"auto":"none",transition:"opacity 0.12s, color 0.12s"},onMouseEnter:e=>{y||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{y||(e.currentTarget.style.color="var(--text-dim)")},children:[y?(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),y?"Copied":"Copy"]}),g&&!t&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)",marginLeft:"auto"},children:g})]})]})}function eW({block:e,toolResults:t,isStreaming:r,streamingDuration:i,toolCallDurations:o,onSendMessage:l,renderVisualCodeBlocks:s,cwd:a}){if("text"===e.type)return(0,n.jsx)(eE,{block:e,isStreaming:r,onSendMessage:l,renderVisualCodeBlocks:s,cwd:a});if("image"===e.type)return(0,n.jsx)(eT,{images:[e]});if("thinking"===e.type)return(0,n.jsx)(eA,{block:e,duration:i});if("toolCall"===e.type){let r=t?.get(e.toolCallId),i=o?.get(e.toolCallId);return(0,n.jsx)(eP,{block:e,result:r,duration:i,cwd:a})}return null}function eE({block:e,isStreaming:t,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o}){let l=W(e.text);if(!l.some(e=>"widget"===e.type)){var s;if(t&&(s=e.text,/`{1,3}show-widget/.test(s))){let e=l.filter(e=>"text"===e.type).map(e=>e.content).join("\n\n");return(0,n.jsxs)(n.Fragment,{children:[e&&(0,n.jsx)(e$,{text:e,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o}),(0,n.jsx)(eB,{})]})}return(0,n.jsx)(e$,{text:e.text,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o})}return(0,n.jsx)(n.Fragment,{children:l.map((e,t)=>"text"===e.type?(0,n.jsx)(e$,{text:e.content,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o},t):(0,n.jsx)(Q,{code:e.code,isStreaming:!!e.partial,title:e.title,showOverlay:e.showOverlay,onSendMessage:r},t))})}function e$({text:e,onSendMessage:t,renderVisualCodeBlocks:r,cwd:o}){let l=(0,i.useMemo)(()=>ez(e,o),[o,e]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8*(l.length>0)},children:[(0,n.jsx)(ev,{content:e,onWidgetSendMessage:t,renderVisualCodeBlocks:r}),l.length>0&&(0,n.jsx)(eL,{imagePaths:l})]})}function eB(){return(0,n.jsx)("div",{style:{position:"relative",height:88,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg-panel)"},children:(0,n.jsx)("div",{className:"widget-shimmer",style:{position:"absolute",inset:0}})})}function eA({block:e,duration:t}){let[r,o]=(0,i.useState)(!1);return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",fontSize:13},children:[(0,n.jsxs)("button",{onClick:()=>o(e=>!e),style:{display:"flex",alignItems:"center",gap:6,width:"100%",padding:"6px 10px",background:"var(--bg-panel)",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left"},children:[(0,n.jsx)("span",{children:"Thinking"}),void 0!==t&&(0,n.jsxs)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--text-dim)",fontVariantNumeric:"tabular-nums"},children:[t,"s"]})]}),r&&(0,n.jsx)("div",{style:{padding:"8px 10px",color:"var(--text-muted)",fontSize:12,lineHeight:1.6,whiteSpace:"pre-wrap",background:"var(--bg-panel)",borderTop:"1px solid var(--border)"},children:e.thinking})]})}function eP({block:e,result:t,duration:r,cwd:o}){var l;let[s,a]=(0,i.useState)(!1),d=JSON.stringify(e.input,null,2),c=t?t.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"):null,u=t?t.content.filter(e=>"image"===e.type):[],p=(l=u.length>0,c&&l?c.replace(/\n?\[Current model does not support images\. The image will be omitted from this request\.\]\s*/g,"").trim():c),h=null!==p&&("(no output)"===p.trim()||""===p.trim()),x=t?.isError??!1,g=(0,i.useMemo)(()=>ez(d,o),[o,d]),f=(0,i.useMemo)(()=>ez(p,o),[o,p]),v=f.length>0?f:g;return(0,n.jsxs)("div",{style:{borderRadius:7,overflow:"hidden",fontSize:12,border:x?"1px solid rgba(248,113,113,0.45)":"1px solid rgba(34,197,94,0.25)",background:x?"rgba(248,113,113,0.05)":"rgba(34,197,94,0.04)"},children:[(0,n.jsxs)("button",{onClick:()=>a(e=>!e),style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"6px 10px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left",minWidth:0},children:[(0,n.jsx)("span",{style:{color:x?"#f87171":"#16a34a",fontFamily:"var(--font-mono)",fontWeight:600,fontSize:11,flexShrink:0},children:e.toolName}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:function(e){let t=e.input;if(!t||"object"!=typeof t)return"";let r=Object.keys(t);return 0===r.length?"":"command"in t?String(t.command).slice(0,120):"path"in t?String(t.path).slice(0,120):"file_path"in t?String(t.file_path).slice(0,120):"pattern"in t?String(t.pattern).slice(0,120):"query"in t?String(t.query).slice(0,120):String(t[r[0]]).slice(0,120)}(e)}),void 0!==r&&(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",flexShrink:0,fontVariantNumeric:"tabular-nums"},children:[r,"s"]}),(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:s?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),!s&&(u.length>0||v.length>0)&&(0,n.jsxs)("div",{style:{padding:"0 10px 10px",background:x?"rgba(248,113,113,0.04)":"rgba(34,197,94,0.02)"},children:[u.length>0&&(0,n.jsx)(eT,{images:u,maxHeight:280}),v.length>0&&(0,n.jsx)(eL,{imagePaths:v,maxHeight:280})]}),s&&(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",color:"var(--text-muted)",fontSize:12,lineHeight:1.5,overflow:"auto",background:"var(--bg-subtle)",borderTop:x?"1px solid rgba(248,113,113,0.25)":"1px solid rgba(34,197,94,0.2)",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:d}),s&&t&&(0,n.jsx)(eN,{text:p??"",isEmpty:h,isError:x,images:u,imagePaths:function(e){let t=new Set,r=[];for(let n of e)t.has(n)||(t.add(n),r.push(n));return r}([...f,...g])})]})}function eN({text:e,isEmpty:t,isError:r,images:i,imagePaths:o}){let l=!t||e.trim().length>0;return(0,n.jsxs)("div",{style:{borderTop:`1px solid ${r?"rgba(248,113,113,0.3)":"rgba(34,197,94,0.15)"}`,background:r?"rgba(248,113,113,0.04)":"var(--bg-subtle)"},children:[i.length>0&&(0,n.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:(0,n.jsx)(eT,{images:i})}),o.length>0&&(0,n.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:(0,n.jsx)(eL,{imagePaths:o})}),l&&(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",color:r?"#f87171":t?"var(--text-dim)":"var(--text-muted)",fontSize:12,lineHeight:1.5,overflow:"auto",maxHeight:400,background:"var(--bg)",whiteSpace:"pre-wrap",wordBreak:"break-all",fontStyle:t?"italic":"normal",opacity:t?.6:1},children:t?"(no output)":e})]})}function eH({message:e,showTimestamp:t}){if(!e.display)return null;let r=t?em(e.timestamp):null,i="string"==typeof e.content?e.content:e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),o="subagent-notify"===e.customType,l=i.match(/^Background task (completed|failed|paused):\s*\*\*(.+?)\*\*/),s=l?"completed"===l[1]?"✅":"failed"===l[1]?"❌":"⏸":o?"\uD83E\uDD16":"ℹ";return(0,n.jsxs)("div",{style:{marginBottom:12},children:[(0,n.jsx)("div",{style:{padding:"8px 14px",borderRadius:8,border:`1px solid ${o?"rgba(99,102,241,0.25)":"var(--border)"}`,background:o?"rgba(99,102,241,0.05)":"var(--bg-panel)",fontSize:13,lineHeight:1.6,color:"var(--text-muted)"},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[(0,n.jsx)("span",{style:{flexShrink:0,fontSize:14},children:s}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(ev,{content:i,style:{fontSize:13}})})]})}),(r||l)&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:6,marginTop:3},children:[l&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)"},children:l[2]}),r&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)"},children:r})]})]})}let eD=["off","default","full"],eO={off:"none",default:"default",full:"full"},eF=["auto","off","minimal","low","medium","high","xhigh"],e_={auto:"沿用默认设置",off:"关闭推理",minimal:"最少推理",low:"低强度推理",medium:"中等推理",high:"高强度推理",xhigh:"最高强度推理"};function eU({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 eV(e){return e.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'")}async function eq(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}
|
|
245
|
-
${r}`)}return i.join("\n\n")}async function
|
|
246
|
-
${i}`}).join("\n\n")}async function
|
|
247
|
-
${r.join("\n")}`)}return o.join("\n\n")}async function
|
|
244
|
+
\`\`\``).find(e=>"widget"===e.type),e?.type==="widget"?{title:e.title,code:e.code}:null);if(t)return(0,n.jsx)(G,{code:t.code,isStreaming:!1,title:t.title,onSendMessage:s})}return x&&a&&(d=u.trim().toLowerCase(),(c=h.trim())&&("svg"===d||"xml"===d&&/^<svg[\s>]/i.test(c)?/^<svg[\s>]/i.test(c):!("html"!==d||/<!doctype|<html[\s>]|<head[\s>]|<body[\s>]/i.test(c))&&/^<(style|svg|div|section|article|main|figure|canvas)\b/i.test(c)))?(0,n.jsx)(G,{code:h,isStreaming:!1,title:`${u||"visual"} preview`,onSendMessage:s}):x?(0,n.jsx)(ex,{code:h,language:u,variant:i}):(0,n.jsx)("code",{style:{background:"var(--bg-selected)",padding:"1px 4px",borderRadius:3,fontFamily:"var(--font-mono)",fontSize:"0.9em"},...o,children:t})},pre:({children:e})=>(0,n.jsx)(n.Fragment,{children:e}),a({href:e,children:t,node:r,...i}){let s=ep(o,e),a=!!s,d=!!e&&ec(e);return(0,n.jsx)("a",{...i,href:a?eh(s):e,target:d?"_blank":void 0,rel:d?"noreferrer":void 0,onClick:e=>{s&&l&&(e.preventDefault(),l(s,ea(s)))},title:a?s:i.title,children:t})},img({src:e,alt:t,node:r,...i}){let l="string"==typeof e?e:void 0,s=ep(o,l),a=s?eh(s):l;return(0,n.jsx)("img",{...i,src:a,alt:t??"",loading:"lazy",title:s??i.title})}},children:e})})}function ef(e){if(!e)return null;let t=new Date(e),r=new Date,n=t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()&&t.getDate()===r.getDate(),i=t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});if(n)return i;let o=t.toLocaleDateString([],{month:"short",day:"numeric",year:t.getFullYear()!==r.getFullYear()?"numeric":void 0});return`${o} ${i}`}function ev(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);try{let t=document.createElement("textarea");return t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}catch{return Promise.reject()}}function em(e){return e.source?.type==="base64"&&e.source.data?`data:${e.source.media_type??"image/png"};base64,${e.source.data}`:e.source?.type==="url"&&e.source.url?e.source.url:e.data?`data:${e.mimeType??"image/png"};base64,${e.data}`:null}let ey=/(?:file:\/\/)?(?:(?:[A-Za-z]:[\\/])|\/|~\/|\.{1,2}[\\/]|[A-Za-z0-9_.-]+[\\/])[^`"'<>|\s{}\[\]]+?\.(?:png|jpe?g|webp|gif|svg|bmp|avif|pdf)(?=$|[\s`"'<>|{}\[\]),.;:!?])/gi,eb=/\.(?:png|jpe?g|webp|gif|svg|bmp|avif)$/i,ej=/\.pdf$/i,ek=/^[A-Za-z]:[\\/]/;function ew(e){let t=el(e),r=t.startsWith("/")||ek.test(t);if(ek.test(t))return t;let n=[];for(let e of t.split("/"))if(e&&"."!==e){if(".."===e){n.length>0&&".."!==n[n.length-1]?n.pop():r||n.push(e);continue}n.push(e)}return`${r?"/":""}${n.join("/")}`}function eS(e,t){if(!e)return[];let r=[],n=new Set,i=new Set;for(let t of e.matchAll(/!\[[^\]]*]\(([^)]+)\)/g))t[1]&&i.add(t[1].trim());let o=e=>{!e||n.has(e)||r.length>=24||(n.add(e),r.push(e))};for(let r of(ey.lastIndex=0,e.matchAll(ey))){let n=r[0];if(/^[a-z][a-z\d+.-]*:\/\//i.test(n)&&!/^file:\/\//i.test(n))continue;let l=e.slice(Math.max(0,r.index-12),r.index);if(/[A-Za-z][A-Za-z\d+.-]*:\/?$/.test(l)||n.startsWith("//")||i.has(n))continue;let s=function(e,t){let r=e.trim().replace(/^file:\/\//i,"").replace(/[),.;:!?]+$/g,"");if(!r||r.startsWith("//"))return null;if((r=el(r)).startsWith("/")||ek.test(r))return ew(r);if(r.startsWith("~/")){let e=t?.match(/^(\/Users\/[^/]+|\/home\/[^/]+)(?:\/|$)/);return e?ew(`${e[1]}/${r.slice(2)}`):null}return t?ew(`${t.replace(/\/+$/,"")}/${r.replace(/^\.?\//,"")}`):null}(n,t);s&&(eb.test(s)?o(s):ej.test(s)&&o(s.replace(ej,".png")))}return r}function eC({images:e,maxHeight:t=360}){return 0===e.length?null:(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===e.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:e.map((e,r)=>{let i=em(e);return i?(0,n.jsx)("a",{href:i,target:"_blank",rel:"noreferrer",title:"Open image",style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:(0,n.jsx)("img",{src:i,alt:"",loading:"lazy",style:{display:"block",width:"100%",maxHeight:t,objectFit:"contain"}})},r):null})})}function ez({imagePaths:e,maxHeight:t=360}){let[r,o]=(0,i.useState)(()=>new Set),l=(0,i.useRef)(new Map),s=e.join("\0");(0,i.useEffect)(()=>{let t=new Set(e);l.current=new Map([...l.current].filter(([e])=>t.has(e))),o(e=>{let r=new Set([...e].filter(e=>t.has(e)));return r.size===e.size?e:r})},[e,s]),(0,i.useEffect)(()=>{if(![...r].some(e=>(l.current.get(e)??0)<3))return;let e=window.setTimeout(()=>{o(e=>{let t=new Set(e);for(let r of e)(l.current.get(r)??0)<3&&t.delete(r);return t})},2500);return()=>window.clearTimeout(e)},[r]);let a=e.filter(e=>!r.has(e));return 0===a.length?null:(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===a.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:a.map(e=>{let r=`/api/files/${es(e)}?type=read`,i=ea(e);return(0,n.jsxs)("a",{href:r,target:"_blank",rel:"noreferrer",title:e,style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsx)("img",{src:r,alt:i,loading:"lazy",onError:()=>{l.current.set(e,(l.current.get(e)??0)+1),o(t=>{let r=new Set(t);return r.add(e),r})},style:{display:"block",width:"100%",maxHeight:t,objectFit:"contain"}}),(0,n.jsx)("div",{style:{padding:"4px 6px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:i})]},e)})})}function eT({message:e,isStreaming:t,toolResults:r,modelNames:i,entryId:o,onFork:l,forking:s,onSendMessage:a,showTimestamp:d,prevTimestamp:c,renderVisualCodeBlocks:u,cwd:p}){return"user"===e.role?(0,n.jsx)(eM,{message:e,entryId:o,onFork:l,forking:s}):"assistant"===e.role?(0,n.jsx)(eI,{message:e,isStreaming:t,toolResults:r,modelNames:i,onSendMessage:a,showTimestamp:d,prevTimestamp:c,renderVisualCodeBlocks:u,cwd:p}):"toolResult"===e.role?null:"custom"===e.role?(0,n.jsx)(eP,{message:e,showTimestamp:d}):null}function eM({message:e,entryId:t,onFork:r,forking:o}){let[l,s]=(0,i.useState)(!1),[a,d]=(0,i.useState)(!1),c="string"==typeof e.content?e.content:e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),u="string"==typeof e.content?[]:e.content.filter(e=>"image"===e.type),p=ef(e.timestamp);return(0,n.jsxs)("div",{style:{marginBottom:16,display:"flex",flexDirection:"column",alignItems:"flex-end"},onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),children:[(0,n.jsx)("div",{style:{display:"flex",alignItems:"flex-end",gap:6,maxWidth:"85%"},children:(0,n.jsxs)("div",{style:{flex:1,minWidth:0,background:"var(--user-bg)",border:"1px solid rgba(59,130,246,0.2)",borderRadius:12,padding:"8px 12px",fontSize:14,lineHeight:1.6,color:"var(--text)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[u.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:8*!!c},children:u.map((e,t)=>{let r=em(e);return r?(0,n.jsx)("img",{src:r,alt:"",style:{maxWidth:240,maxHeight:240,borderRadius:6,objectFit:"contain",display:"block",border:"1px solid rgba(59,130,246,0.15)"}},t):null})}),c]})}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:6,marginTop:3},children:[(0,n.jsx)("div",{style:{display:"flex",gap:3,opacity:+!!l,pointerEvents:l?"auto":"none",transition:"opacity 0.12s"},children:(0,n.jsxs)("button",{onClick:()=>{ev(c).then(()=>{d(!0),setTimeout(()=>d(!1),1500)})},title:"Copy message",style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",height:22,background:"none",border:"none",borderRadius:5,color:a?"var(--accent)":"var(--text-dim)",cursor:"pointer",fontSize:11,fontWeight:400,whiteSpace:"nowrap",transition:"color 0.12s"},onMouseEnter:e=>{a||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{a||(e.currentTarget.style.color="var(--text-dim)")},children:[a?(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),a?"Copied":"Copy"]})}),!!t&&!!r&&(0,n.jsx)("div",{style:{display:"flex",gap:3,opacity:l||o?1:0,pointerEvents:l||o?"auto":"none",transition:"opacity 0.12s"},children:(0,n.jsxs)("button",{onClick:()=>{r(t)},disabled:o,title:o?"Creating new session...":"New session - creates an independent copy from here",style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",height:22,background:"none",border:"none",borderRadius:5,color:o?"var(--accent)":"var(--text-dim)",cursor:o?"not-allowed":"pointer",fontSize:11,fontWeight:400,whiteSpace:"nowrap",transition:"color 0.12s"},onMouseEnter:e=>{o||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{o||(e.currentTarget.style.color="var(--text-dim)")},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",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"})]}),o?"Creating...":"New session"]})}),p&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)"},children:p})]})]})}function eI({message:e,isStreaming:t,toolResults:r,modelNames:o,onSendMessage:l,showTimestamp:s,prevTimestamp:a,renderVisualCodeBlocks:d,cwd:c}){var u;let p,h,x,g=s?ef(e.timestamp):null,f=e.content??[],[v,m]=(0,i.useState)(!1),[y,b]=(0,i.useState)(!1),j=(0,i.useRef)(null),[k,w]=(0,i.useState)(null),S=(0,i.useRef)(f);S.current=f;let C=(0,i.useRef)(new Map),[z,T]=(0,i.useState)(new Map),M=(0,i.useMemo)(()=>{if(!e.timestamp||!a)return;let t=Math.round((e.timestamp-a)/1e3);return t>0?t:void 0},[e.timestamp,a]),I=(0,i.useMemo)(()=>{let t=new Map;if(!r||!e.timestamp)return t;for(let[n,i]of r)if(i.timestamp&&e.timestamp){let r=Math.round((i.timestamp-e.timestamp)/1e3);r>0&&t.set(n,r)}return t},[r,e.timestamp]),L=f.filter(e=>"text"===e.type).map(e=>e.text).join("\n");(0,i.useEffect)(()=>{if(!t){let e=Date.now();T(t=>{let r=new Map(t);for(let[t,n]of C.current)r.has(t)||r.set(t,Math.round((e-n)/1e3));return r}),j.current=null,w(null);return}let e=setInterval(()=>{let e=S.current,t=Date.now();e.forEach((e,r)=>{C.current.has(r)||C.current.set(r,t)}),T(r=>{let n=!1,i=new Map(r);for(let r=0;r<e.length-1;r++)if(!i.has(r)&&C.current.has(r)){let e=C.current.get(r),o=C.current.get(r+1)??t;i.set(r,Math.round((o-e)/1e3)),n=!0}return n?i:r});let r=0;for(let t of e)"text"===t.type?r+=t.text?.length??0:"thinking"===t.type?r+=t.thinking?.length??0:"toolCall"===t.type&&(r+=JSON.stringify(t.input??{}).length);if(0===r)return;null===j.current&&(j.current=t);let n=(t-j.current)/1e3;n>.5&&w(r/4/n)},300);return()=>clearInterval(e)},[t]);let R=(h=e.provider?.trim(),x=e.model?.trim(),h&&x&&"unknown"!==x?o?.[`${h}:${x}`]??o?.[x]??x:h&&"codex"!==h&&"unknown"!==h?h:x&&"unknown"!==x?o?.[x]??x:null);return(0,n.jsxs)("div",{style:{marginBottom:16},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),children:[(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--text-dim)",marginBottom:4,display:"flex",alignItems:"center",gap:6},children:[R&&(0,n.jsx)("span",{children:R}),t&&(()=>{let e,t=0;for(let e of f)"text"===e.type?t+=e.text?.length??0:"thinking"===e.type?t+=e.thinking?.length??0:"toolCall"===e.type&&(t+=JSON.stringify(e.input??{}).length);let r=Math.round(t/4);return(0,n.jsx)(n.Fragment,{children:r>0&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:"var(--text)"},title:"预估 token 数(流式接收中)",children:[(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:2,fontSize:11,fontWeight:400},children:[(0,n.jsxs)("svg",{width:"10",height:"10",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]}),null!==k&&(e=k>=50?"#53b3cb":k>=30?"#9bc53d":k>=15?"#f9c22e":"#e01a4f",(0,n.jsxs)("span",{style:{marginLeft:6,padding:"1px 6px",borderRadius:4,background:e,color:"#fff",fontSize:11,fontWeight:400},children:[k.toFixed(1)," t/s"]}))]})})})()]}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:f.map((e,i)=>(0,n.jsx)(eL,{block:e,toolResults:r,isStreaming:t,streamingDuration:z.get(i)??("thinking"===e.type?M:void 0),toolCallDurations:I,onSendMessage:l,renderVisualCodeBlocks:d,cwd:c},i))}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:4},children:[e.usage&&!t&&(0,n.jsx)("div",{style:{fontSize:11,color:"var(--text-dim)"},children:(u=e.usage,p=[],u.input&&p.push(`${u.input.toLocaleString()} in`),u.output&&p.push(`${u.output.toLocaleString()} out`),u.cacheRead&&p.push(`${u.cacheRead.toLocaleString()} cache`),u.cost?.total&&p.push(`$${u.cost.total.toFixed(4)}`),p.join(" \xb7 "))}),L&&!t&&(0,n.jsxs)("button",{onClick:()=>{ev(L).then(()=>{b(!0),setTimeout(()=>b(!1),1500)})},title:"Copy message",style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",height:22,background:"none",border:"none",borderRadius:5,color:y?"var(--accent)":"var(--text-dim)",cursor:"pointer",fontSize:11,fontWeight:400,whiteSpace:"nowrap",opacity:+!!v,pointerEvents:v?"auto":"none",transition:"opacity 0.12s, color 0.12s"},onMouseEnter:e=>{y||(e.currentTarget.style.color="var(--accent)")},onMouseLeave:e=>{y||(e.currentTarget.style.color="var(--text-dim)")},children:[y?(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),y?"Copied":"Copy"]}),g&&!t&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)",marginLeft:"auto"},children:g})]})]})}function eL({block:e,toolResults:t,isStreaming:r,streamingDuration:i,toolCallDurations:o,onSendMessage:l,renderVisualCodeBlocks:s,cwd:a}){if("text"===e.type)return(0,n.jsx)(eR,{block:e,isStreaming:r,onSendMessage:l,renderVisualCodeBlocks:s,cwd:a});if("image"===e.type)return(0,n.jsx)(eC,{images:[e]});if("thinking"===e.type)return(0,n.jsx)(e$,{block:e,duration:i});if("toolCall"===e.type){let r=t?.get(e.toolCallId),i=o?.get(e.toolCallId);return(0,n.jsx)(eB,{block:e,result:r,duration:i,cwd:a})}return null}function eR({block:e,isStreaming:t,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o}){let l=L(e.text);if(!l.some(e=>"widget"===e.type)){var s;if(t&&(s=e.text,/`{1,3}show-widget/.test(s))){let e=l.filter(e=>"text"===e.type).map(e=>e.content).join("\n\n");return(0,n.jsxs)(n.Fragment,{children:[e&&(0,n.jsx)(eW,{text:e,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o}),(0,n.jsx)(eE,{})]})}return(0,n.jsx)(eW,{text:e.text,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o})}return(0,n.jsx)(n.Fragment,{children:l.map((e,t)=>"text"===e.type?(0,n.jsx)(eW,{text:e.content,onSendMessage:r,renderVisualCodeBlocks:i,cwd:o},t):(0,n.jsx)(G,{code:e.code,isStreaming:!!e.partial,title:e.title,showOverlay:e.showOverlay,onSendMessage:r},t))})}function eW({text:e,onSendMessage:t,renderVisualCodeBlocks:r,cwd:o}){let l=(0,i.useMemo)(()=>eS(e,o),[o,e]);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8*(l.length>0)},children:[(0,n.jsx)(eg,{content:e,onWidgetSendMessage:t,renderVisualCodeBlocks:r}),l.length>0&&(0,n.jsx)(ez,{imagePaths:l})]})}function eE(){return(0,n.jsx)("div",{style:{position:"relative",height:88,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg-panel)"},children:(0,n.jsx)("div",{className:"widget-shimmer",style:{position:"absolute",inset:0}})})}function e$({block:e,duration:t}){let[r,o]=(0,i.useState)(!1);return(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",fontSize:13},children:[(0,n.jsxs)("button",{onClick:()=>o(e=>!e),style:{display:"flex",alignItems:"center",gap:6,width:"100%",padding:"6px 10px",background:"var(--bg-panel)",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left"},children:[(0,n.jsx)("span",{children:"Thinking"}),void 0!==t&&(0,n.jsxs)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--text-dim)",fontVariantNumeric:"tabular-nums"},children:[t,"s"]})]}),r&&(0,n.jsx)("div",{style:{padding:"8px 10px",color:"var(--text-muted)",fontSize:12,lineHeight:1.6,whiteSpace:"pre-wrap",background:"var(--bg-panel)",borderTop:"1px solid var(--border)"},children:e.thinking})]})}function eB({block:e,result:t,duration:r,cwd:o}){var l;let[s,a]=(0,i.useState)(!1),d=JSON.stringify(e.input,null,2),c=t?t.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"):null,u=t?t.content.filter(e=>"image"===e.type):[],p=(l=u.length>0,c&&l?c.replace(/\n?\[Current model does not support images\. The image will be omitted from this request\.\]\s*/g,"").trim():c),h=null!==p&&("(no output)"===p.trim()||""===p.trim()),x=t?.isError??!1,g=(0,i.useMemo)(()=>eS(d,o),[o,d]),f=(0,i.useMemo)(()=>eS(p,o),[o,p]),v=f.length>0?f:g;return(0,n.jsxs)("div",{style:{borderRadius:7,overflow:"hidden",fontSize:12,border:x?"1px solid rgba(248,113,113,0.45)":"1px solid rgba(34,197,94,0.25)",background:x?"rgba(248,113,113,0.05)":"rgba(34,197,94,0.04)"},children:[(0,n.jsxs)("button",{onClick:()=>a(e=>!e),style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"6px 10px",background:"none",border:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:12,textAlign:"left",minWidth:0},children:[(0,n.jsx)("span",{style:{color:x?"#f87171":"#16a34a",fontFamily:"var(--font-mono)",fontWeight:600,fontSize:11,flexShrink:0},children:e.toolName}),(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:function(e){let t=e.input;if(!t||"object"!=typeof t)return"";let r=Object.keys(t);return 0===r.length?"":"command"in t?String(t.command).slice(0,120):"path"in t?String(t.path).slice(0,120):"file_path"in t?String(t.file_path).slice(0,120):"pattern"in t?String(t.pattern).slice(0,120):"query"in t?String(t.query).slice(0,120):String(t[r[0]]).slice(0,120)}(e)}),void 0!==r&&(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",flexShrink:0,fontVariantNumeric:"tabular-nums"},children:[r,"s"]}),(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:s?"rotate(180deg)":"none",transition:"transform 0.15s"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),!s&&(u.length>0||v.length>0)&&(0,n.jsxs)("div",{style:{padding:"0 10px 10px",background:x?"rgba(248,113,113,0.04)":"rgba(34,197,94,0.02)"},children:[u.length>0&&(0,n.jsx)(eC,{images:u,maxHeight:280}),v.length>0&&(0,n.jsx)(ez,{imagePaths:v,maxHeight:280})]}),s&&(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",color:"var(--text-muted)",fontSize:12,lineHeight:1.5,overflow:"auto",background:"var(--bg-subtle)",borderTop:x?"1px solid rgba(248,113,113,0.25)":"1px solid rgba(34,197,94,0.2)",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:d}),s&&t&&(0,n.jsx)(eA,{text:p??"",isEmpty:h,isError:x,images:u,imagePaths:function(e){let t=new Set,r=[];for(let n of e)t.has(n)||(t.add(n),r.push(n));return r}([...f,...g])})]})}function eA({text:e,isEmpty:t,isError:r,images:i,imagePaths:o}){let l=!t||e.trim().length>0;return(0,n.jsxs)("div",{style:{borderTop:`1px solid ${r?"rgba(248,113,113,0.3)":"rgba(34,197,94,0.15)"}`,background:r?"rgba(248,113,113,0.04)":"var(--bg-subtle)"},children:[i.length>0&&(0,n.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:(0,n.jsx)(eC,{images:i})}),o.length>0&&(0,n.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:(0,n.jsx)(ez,{imagePaths:o})}),l&&(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",color:r?"#f87171":t?"var(--text-dim)":"var(--text-muted)",fontSize:12,lineHeight:1.5,overflow:"auto",maxHeight:400,background:"var(--bg)",whiteSpace:"pre-wrap",wordBreak:"break-all",fontStyle:t?"italic":"normal",opacity:t?.6:1},children:t?"(no output)":e})]})}function eP({message:e,showTimestamp:t}){if(!e.display)return null;let r=t?ef(e.timestamp):null,i="string"==typeof e.content?e.content:e.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n"),o="subagent-notify"===e.customType,l=i.match(/^Background task (completed|failed|paused):\s*\*\*(.+?)\*\*/),s=l?"completed"===l[1]?"✅":"failed"===l[1]?"❌":"⏸":o?"\uD83E\uDD16":"ℹ";return(0,n.jsxs)("div",{style:{marginBottom:12},children:[(0,n.jsx)("div",{style:{padding:"8px 14px",borderRadius:8,border:`1px solid ${o?"rgba(99,102,241,0.25)":"var(--border)"}`,background:o?"rgba(99,102,241,0.05)":"var(--bg-panel)",fontSize:13,lineHeight:1.6,color:"var(--text-muted)"},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[(0,n.jsx)("span",{style:{flexShrink:0,fontSize:14},children:s}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(eg,{content:i,style:{fontSize:13}})})]})}),(r||l)&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:6,marginTop:3},children:[l&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)"},children:l[2]}),r&&(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)"},children:r})]})]})}let eN=["off","default","full"],eD={off:"none",default:"default",full:"full"},eH=["auto","off","minimal","low","medium","high","xhigh"],eO={auto:"沿用默认设置",off:"关闭推理",minimal:"最少推理",low:"低强度推理",medium:"中等推理",high:"高强度推理",xhigh:"最高强度推理"};function eF({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 e_(e){return e.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'")}async function eU(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}
|
|
245
|
+
${r}`)}return i.join("\n\n")}async function eV(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=>e_(e[1])))}return o.join("").replace(/[ \t]+\n/g,"\n")}async function eq(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}
|
|
246
|
+
${i}`}).join("\n\n")}async function eK(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=>e_(e[1]).trim()).filter(Boolean);r.length&&o.push(`Slide ${t[1]}
|
|
247
|
+
${r.join("\n")}`)}return o.join("\n\n")}async function eJ(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 eU(t);else if("docx"===r)i=await eV(t);else if("xlsx"===r)i=await eq(t);else{if("pptx"!==r)return{extractionError:"Text extraction is not supported for this file type"};i=await eK(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)}
|
|
248
248
|
|
|
249
|
-
[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 eG=(0,i.forwardRef)(function({onSend:e,onAbort:t,isStreaming:r,model:o,modelNames:l,modelList:s,onModelChange:a,onCompact:d,onAbortCompaction:c,isCompacting:u,compactError:p,toolPreset:h,onToolPresetChange:x,thinkingLevel:g,onThinkingLevelChange:f,availableThinkingLevels:v,thinkingLevelMap:m,retryInfo:y,soundEnabled:b,onSoundToggle:j},k){let w,S,C,[z,T]=(0,i.useState)(""),[L,M]=(0,i.useState)(!1),[I,R]=(0,i.useState)(null),[W,E]=(0,i.useState)(!1),[$,B]=(0,i.useState)(!1),[A,P]=(0,i.useState)([]),[N,H]=(0,i.useState)([]),D=(0,i.useRef)(null),O=(0,i.useRef)(null),F=(0,i.useRef)(null),_=(0,i.useRef)(null),U=(0,i.useRef)(null),V=(0,i.useRef)(null),q=(0,i.useRef)(null);(0,i.useImperativeHandle)(k,()=>({insertIfEmpty(e){let t=D.current;(t?t.value:z).trim()||(T(e),requestAnimationFrame(()=>{t&&(t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)}))},insertText(e){let t=D.current;if(!t)return void T(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(" ")?" ":"";T(i+l+e+o),requestAnimationFrame(()=>{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`})},addImages(e){K(e)},addFiles(e){J(e)}}));let K=(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)})));P(e=>[...e,...r])},[]),J=(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&&K(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 eY(e,r);t({data:r,fileName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...i})},n.onerror=r,n.readAsArrayBuffer(e)})));H(t=>[...t,...e])}},[K]),Z=(0,i.useCallback)(e=>{P(t=>{let r=[...t];return URL.revokeObjectURL(r[e].previewUrl),r.splice(e,1),r})},[]),Y=(0,i.useCallback)(e=>{H(t=>{let r=[...t];return r.splice(e,1),r})},[]),G=(0,i.useCallback)(()=>{P(e=>(e.forEach(e=>URL.revokeObjectURL(e.previewUrl)),[])),H([])},[]),X=(0,i.useCallback)(()=>{let t=z.trim();(t||A.length||N.length)&&!r&&(e(t,A.length?A:void 0,N.length?N:void 0),T(""),G(),D.current&&(D.current.style.height="auto"))},[z,A,N,r,e,G]),Q=(0,i.useCallback)(e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),X())},[X]),ee=(0,i.useCallback)(()=>{let e=D.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)},[]),et=(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(),J(t.map(e=>e.getAsFile()).filter(e=>null!==e)))},[J]),er=s&&s.length>0?s.map(e=>({provider:e.provider,modelId:e.id,name:e.name})):Object.entries(l??{}).map(([e,t])=>({provider:o?.provider??"unknown",modelId:e,name:t})),en=[];for(let e of er){let t=en.find(t=>t.provider===e.provider);t?t.options.push(e):en.push({provider:e.provider,options:[e]})}let ei=o?er.find(e=>e.modelId===o.modelId&&e.provider===o.provider)?.name??o.modelId:"Select model";return(0,i.useEffect)(()=>{let e=e=>{O.current&&!O.current.contains(e.target)&&F.current&&!F.current.contains(e.target)&&M(!1),_.current&&!_.current.contains(e.target)&&E(!1),U.current&&!U.current.contains(e.target)&&B(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,n.jsxs)("div",{style:{flexShrink:0,background:"transparent",padding:"0 16px 8px",paddingRight:52},children:[(0,n.jsx)("input",{ref:V,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{K(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsx)("input",{ref:q,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=>{J(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsxs)("div",{style:{maxWidth:820,margin:"0 auto"},children:[y&&(0,n.jsxs)("div",{style:{marginBottom:8,padding:"5px 10px",background:"rgba(234,179,8,0.08)",border:"1px solid rgba(234,179,8,0.25)",borderRadius:6,fontSize: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 (",y.attempt,"/",y.maxAttempts,")…",y.errorMessage&&(0,n.jsxs)("span",{style:{opacity:.7,marginLeft:4},children:["— ",y.errorMessage]})]}),(A.length>0||N.length>0)&&(0,n.jsxs)("div",{style:{display:"flex",gap:6,marginBottom:6,flexWrap:"wrap",alignItems:"flex-end"},children:[A.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 var(--border)",display:"block"}}),(0,n.jsx)("button",{onClick:()=>Z(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}`)),N.map((e,t)=>(0,n.jsx)(eU,{doc:e,onRemove:()=>Y(t)},`doc-${t}`))]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",background:"var(--bg)",border:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",borderRadius:14,padding:"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:D,value:z,onChange:e=>T(e.target.value),onKeyDown:Q,onInput:ee,onPaste:et,placeholder:r?"Agent is running…":"Message…",rows:1,style:{flex:1,background:"none",border:"none",outline:"none",resize:"none",color:"var(--text)",fontSize:14,lineHeight:1.6,fontFamily:"inherit",minHeight:24,maxHeight:200,overflow:"auto"}}),!r&&(0,n.jsxs)("button",{onClick:X,disabled:!z.trim()&&!A.length&&!N.length,style:{flexShrink:0,alignSelf:"flex-end",display:"flex",alignItems:"center",gap:6,padding:"7px 14px",background:z.trim()||A.length||N.length?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:8,color:z.trim()||A.length||N.length?"#fff":"var(--text-dim)",cursor:z.trim()||A.length||N.length?"pointer":"not-allowed",fontSize:13,fontWeight:600,letterSpacing:"-0.01em",boxShadow:z.trim()||A.length||N.length?"0 1px 3px rgba(37,99,235,0.25)":"none",transition:"background 0.15s, box-shadow 0.15s"},children:[(0,n.jsxs)("svg",{width:"14",height:"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:8,display:"flex",alignItems:"center",gap:6},children:[(0,n.jsxs)("div",{className:"chat-input-toolbar-left",style:{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)("button",{onClick:()=>V.current?.click(),disabled:r,title:"Attach image (right-click for document)",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"none",border:"none",borderRadius:9,color:A.length||N.length?"var(--accent)":"var(--text-muted)",cursor:r?"not-allowed":"pointer",opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=A.length||N.length?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color=A.length||N.length?"var(--accent)":"var(--text-muted)"},onContextMenu:e=>{e.preventDefault(),q.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"})})}),er.length>0&&a&&(0,n.jsxs)("div",{ref:O,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:e=>{let t=e.currentTarget.getBoundingClientRect();R({top:t.top,left:t.left,width:t.width}),M(e=>!e)},disabled:r,style:{display:"flex",alignItems:"center",gap:6,padding:"8px 12px",height:32,maxWidth:220,overflow:"hidden",background:L?"var(--bg-hover)":"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:r?"not-allowed":"pointer",fontSize:12,opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=L?"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:ei})]}),L&&I&&(S=(w=window.visualViewport?.height??window.innerHeight)-I.top+6,C=Math.max(120,Math.min(I.top-8,.6*w)),(0,n.jsx)("div",{ref:F,style:{position:"fixed",bottom:S,left:I.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:I.width,maxHeight:C,overflowY:"auto"},children:en.map((e,t)=>(0,n.jsxs)("div",{children:[en.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===o?.modelId&&e.provider===o?.provider;return(0,n.jsxs)("button",{onClick:()=>{M(!1),t||a(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}}),e.name]},`${e.provider}:${e.modelId}`)})]},e.provider))}))]})]}),(0,n.jsx)("div",{className:"chat-input-toolbar-spacer",style:{flex:1}}),(0,n.jsxs)("div",{className:"chat-input-toolbar-right",style:{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2,marginLeft:"auto"},children:[!r&&f&&(0,n.jsxs)("div",{ref:U,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>!r&&B(e=>!e),disabled:r,title:"切换推理强度",style:{display:"flex",alignItems:"center",gap:5,padding:"8px 12px",height:32,background:$?"var(--bg-hover)":"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:r?"not-allowed":"pointer",fontSize:12,opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=$?"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",{children:(()=>{let e=g??"auto";if("auto"===e||!m)return e;let t=m[e];return null!=t?t:e})()})]}),$&&(0,n.jsx)("div",{style:{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)",overflow:"hidden",minWidth:180},children:eF.filter(e=>!v||"auto"===e||v.includes(e)).map(e=>{let t=(g??"auto")===e,r=e_[e],i="auto"!==e&&m?m[e]:void 0,o=null!=i&&i!==e?i:e,l=null!=i&&i!==e;return(0,n.jsxs)("button",{onClick:()=>{B(!1),t||f(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: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)})})]}),!r&&x&&(0,n.jsxs)("div",{ref:_,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>!r&&E(e=>!e),disabled:r,title:"切换工具预设",style:{display:"flex",alignItems:"center",gap:5,padding:"8px 12px",height:32,background:W?"var(--bg-hover)":"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:r?"not-allowed":"pointer",fontSize:12,opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=W?"var(--bg-hover)":"none",e.currentTarget.style.color="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",{children:Object.entries(eO).find(([,e])=>e===(h??"full"))?.[0]??"full"})]}),W&&(0,n.jsx)("div",{style:{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)",overflow:"hidden",minWidth:120},children:eD.map(e=>{let t=eO[e],r=(h??"full")===t,i="off"===e?"无工具,纯聊天":"default"===e?"4 项内置工具":"全部内置工具";return(0,n.jsxs)("button",{onClick:()=>{E(!1),r||x(t)},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:"pointer",fontSize:12,textAlign:"left",fontWeight:r?600:400,whiteSpace:"nowrap"},onMouseEnter:e=>{r||(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:i})]},e)})})]}),!r&&d&&(0,n.jsxs)("div",{style:{position:"relative"},children:[p&&(0,n.jsx)("div",{style:{position:"absolute",bottom:"calc(100% + 6px)",right:0,background:"#1f2937",color:"#f87171",fontSize:11,padding:"4px 8px",borderRadius:5,whiteSpace:"nowrap",pointerEvents:"none",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",zIndex:50},children:p}),(0,n.jsx)("button",{onClick:u?c:d,disabled:r&&!u,style:{display:"flex",alignItems:"center",gap:5,padding:"8px 12px",height:32,background:u?"rgba(239,68,68,0.08)":"none",border:"none",borderRadius:9,color:u?"#ef4444":"var(--text-muted)",cursor:r&&!u?"not-allowed":"pointer",fontSize:12,opacity:r&&!u?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{(!r||u)&&(e.currentTarget.style.background=u?"rgba(239,68,68,0.16)":"var(--bg-hover)",e.currentTarget.style.color=u?"#ef4444":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=u?"rgba(239,68,68,0.08)":"none",e.currentTarget.style.color=u?"#ef4444":"var(--text-muted)"},title:u?"停止压缩":"压缩上下文",children:u?(0,n.jsxs)(n.Fragment,{children:[(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"})}),"Compacting…"]}):(0,n.jsxs)(n.Fragment,{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)("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"})]}),"Compact"]})})]}),r&&(0,n.jsxs)("button",{onClick:t,title:"停止 Agent",style:{display:"flex",alignItems:"center",gap:6,padding:"8px 14px",height:32,background:"rgba(239,68,68,0.08)",border:"1px solid rgba(239,68,68,0.3)",borderRadius:9,color:"#ef4444",cursor:"pointer",fontSize: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!==j&&(0,n.jsx)("button",{onClick:j,title:b?"关闭完成提示音":"开启完成提示音",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"none",border:"none",borderRadius:9,color:b?"var(--text-muted)":"var(--text-dim)",cursor:"pointer",opacity:b?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=b?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.opacity=b?"1":"0.55"},children:b?(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 eX(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 eQ({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),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;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]),z=y.current?.clientHeight??600,T=(0,i.useMemo)(()=>{if(!x||0===p.length)return[];let e=p.map(e=>Math.round(e.topRatio*z-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(z-22,e[t]));return e},[x,p,z]);if(!c)return null;let L=l*(1-a)*100,M=100*a,I=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: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:`${L}%`,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=eX(e.msg),r=x&&I===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=eX(e.msg),o=I===e.index;return r&&0!==T.length?(0,n.jsx)("div",{style:{position:"absolute",top:T[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 e0(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function e1(e){return"string"==typeof e&&e.trim()?e:void 0}function e2(e){if(e0(e)){if("completed"in e)return"completed";if("failed"in e||"error"in e)return"failed";if("paused"in e||"blocked"in e)return"paused";if("not_found"in e)return"not_found";if("running"in e||"in_progress"in e||"pending"in e)return"running"}let t="string"==typeof e?e.toLowerCase().trim():"";return"completed"===t||"complete"===t||"done"===t||"success"===t||"succeeded"===t?"completed":"failed"===t||"failure"===t||"error"===t||"cancelled"===t||"canceled"===t?"failed":"paused"===t||"blocked"===t||"interrupted"===t?"paused":"not_found"===t||"not-found"===t||"missing"===t?"not_found":("pending"===t||"pending_init"===t||"starting"===t||"started"===t,"running")}function e4(e){return(Array.isArray(e)?e:e0(e)?[e]:[]).filter(e0).map((e,t)=>({id:e1(e.id)??e1(e.threadId)??e1(e.thread_id)??`agent:${t}`,agent:e1(e.agent)??e1(e.agent_nickname)??"agent",status:e2(e.status),role:e1(e.role)??e1(e.agent_role),task:e1(e.task)??e1(e.prompt),summary:e1(e.summary),threadId:e1(e.threadId)??e1(e.thread_id),parentThreadId:e1(e.parentThreadId)??e1(e.parent_thread_id),model:e1(e.model),reasoningEffort:e1(e.reasoningEffort)??e1(e.reasoning_effort),timestamp:"number"==typeof e.timestamp?e.timestamp:function(e){if("string"!=typeof e||!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}(e.timestamp)}))}function e5(...e){let t=new Map;for(let r of e)for(let e of r??[]){let r=t.get(e.id);t.set(e.id,{...r,...e,timestamp:Math.max(r?.timestamp??0,e.timestamp??0)||r?.timestamp||e.timestamp,summary:e.summary??r?.summary,task:e.task??r?.task,role:e.role??r?.role,threadId:e.threadId??r?.threadId})}return[...t.values()].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))}function e3(e){let t=new Map;for(let r of e){if("custom"===r.role&&"subagent-progress"===r.customType){let e=r.details;for(let r of e4(e?.runs))t.set(r.id,r)}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:r.content.split("\n").slice(3).join("\n").trim()||void 0,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&&r.toolCallId&&t.has(r.toolCallId)){let e=t.get(r.toolCallId);e.status=r.isError?"failed":"completed",e.summary=(r.content?.filter(e=>"text"===e.type).map(e=>e.text??"").join("\n")??"").slice(0,200)||void 0}}return Array.from(t.values()).sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))}function e6({messages:e,runs:t}){let r=(0,i.useMemo)(()=>e3(e??[]),[e]),o=(0,i.useMemo)(()=>e5(r,t),[r,t]),l=o.filter(e=>"running"===e.status||"pending"===e.status),s=o.filter(e=>"running"!==e.status&&"pending"!==e.status);return 0===o.length?null:(0,n.jsxs)("div",{style:{height:"100%",overflow:"auto",padding:12},children:[l.length>0&&(0,n.jsxs)("div",{style:{marginBottom:16},children:[(0,n.jsxs)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",marginBottom:8,textTransform:"uppercase",letterSpacing:"0.05em"},children:["Active (",l.length,")"]}),l.map(e=>(0,n.jsxs)("div",{style:{padding:"8px 12px",borderRadius:6,border:"1px solid rgba(99,102,241,0.2)",background:"rgba(99,102,241,0.04)",marginBottom:6,fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:"#818cf8",display:"inline-block",animation:"pulse 1.5s infinite",flexShrink:0}}),(0,n.jsx)("span",{style:{fontWeight:600,color:"var(--text)"},children:e.agent}),e.role&&(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10},children:e.role}),(0,n.jsx)("span",{style:{color:"var(--accent)",fontSize:10,fontWeight:600},children:"running"})]}),e.task&&(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-muted)",fontSize:11,lineHeight:1.4},children:e.task.length>120?e.task.slice(0,120)+"…":e.task}),e.threadId&&(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.threadId})]},e.id))]}),s.length>0&&(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",marginBottom:8,textTransform:"uppercase",letterSpacing:"0.05em"},children:["Completed (",s.length,")"]}),s.map(e=>(0,n.jsxs)("div",{style:{padding:"6px 12px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",marginBottom:4,fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{fontSize:12,flexShrink:0},children:"completed"===e.status?"✓":"failed"===e.status||"not_found"===e.status?"!":"paused"===e.status?"||":"..."}),(0,n.jsx)("span",{style:{fontWeight:600,color:"var(--text)"},children:e.agent}),e.role&&(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10},children:e.role}),(0,n.jsx)("span",{style:{color:"completed"===e.status?"#22c55e":"failed"===e.status||"not_found"===e.status?"#ef4444":"var(--text-dim)",fontSize:10,fontWeight:600},children:e2(e.status)})]}),e.task&&(0,n.jsx)("div",{style:{marginTop:3,color:"var(--text-muted)",fontSize:11,lineHeight:1.4,maxHeight:44,overflow:"hidden"},children:e.task}),e.summary&&(0,n.jsx)("div",{style:{marginTop:3,color:"var(--text-muted)",fontSize:11,lineHeight:1.4,maxHeight:60,overflow:"hidden"},children:e.summary}),e.threadId&&(0,n.jsx)("div",{style:{marginTop:3,color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.threadId})]},e.id))]})]})}function e8(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 e7(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}`);if(n.sessionId&&n.data&&"object"==typeof n.data)return Array.isArray(n.data)?n.data:{...n.data,__sessionId:n.sessionId};return n.sessionId?{value:n.data,__sessionId:n.sessionId}:n.data}function e9(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}}let te=["image/","application/pdf","application/vnd.openxmlformats-officedocument","application/msword","application/vnd.ms-"];function tt(e){return te.some(t=>e.type.startsWith(t))}let tr=["annotate and analyze.","vibe code bioinformatics.","turn data into figures.","inspect your project.","trace reproducible workflows.","summarize that paper.","review the pipeline.","compare markers.","draft methods.","find the next analysis step."];function tn({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 ti({session:e,newSessionCwd:t,onAgentEnd:o,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,chatInputRef:d,onSystemPromptChange:u,onSessionStatsChange:p,onContextUsageChange:h,generativeUI:x}){var g;let f,{data:v,loading:m,error:y,messages:b,entryIds:j,streamState:k,agentRunning:w,modelNames:S,modelList:C,modelThinkingLevels:z,modelThinkingLevelMaps:T,toolPreset:L,thinkingLevel:M,retryInfo:I,contextUsage:R,forkingEntryId:W,isCompacting:E,compactError:$,displayModel:B,sessionStats:A,agentPhase:P,agentError:N,subagentRuns:H,isNew:D,messagesEndRef:O,scrollContainerRef:F,lastUserMsgRef:_,handleSend:U,handleAbort:V,handleFork:q,handleModelChange:K,handleCompact:J,handleAbortCompaction:Z,handleToolPresetChange:Y,handleThinkingLevelChange:G,handleAgentEventRef:X}=function(e){let{session:t,newSessionCwd:n,onAgentEnd:o,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,onSystemPromptChange:d}=e,c=t?.id??null,u=null===t&&null!==n,[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(!u),[f,v]=(0,i.useState)(null),[m,y]=(0,i.useState)([]),[b,j]=(0,i.useState)([]),[k,w]=(0,i.useReducer)(e9,{isStreaming:!1,streamingMessage:null}),[S,C]=(0,i.useState)(!1),[z,T]=(0,i.useState)({}),[L,M]=(0,i.useState)([]),[I,R]=(0,i.useState)({}),[W,E]=(0,i.useState)({}),[$,B]=(0,i.useState)(null),[A,P]=(0,i.useState)("full"),[N,H]=(0,i.useState)("auto"),[D,O]=(0,i.useState)(null),[F,_]=(0,i.useState)(null),[U,V]=(0,i.useState)(null),[q,K]=(0,i.useState)(null),[J,Z]=(0,i.useState)(null),[Y,G]=(0,i.useState)(null),[X,Q]=(0,i.useState)(!1),[ee,et]=(0,i.useState)(null),[er,en]=(0,i.useState)(null),[ei,eo]=(0,i.useState)(null),[el,es]=(0,i.useState)([]),ea=(0,i.useRef)(null),ed=(0,i.useRef)(null),ec=(0,i.useRef)(t?.id??null),eu=(0,i.useRef)(!1),ep=(0,i.useRef)(!1),eh=(0,i.useRef)(null),ex=(0,i.useRef)(!1),eg=(0,i.useRef)(null),ef=(0,i.useRef)(!1),ev=(0,i.useRef)(null),em=(0,i.useRef)(null),ey=(0,i.useRef)(!1),eb=e.setNewSessionModel??B,ej=e.setToolPreset??P,ek=J??p?.context.model??Y??null,ew=u?$:ek,eS=(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}
|
|
249
|
+
[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 eY=(0,i.forwardRef)(function({onSend:e,onAbort:t,isStreaming:r,model:o,modelNames:l,modelList:s,onModelChange:a,onCompact:d,onAbortCompaction:c,isCompacting:u,compactError:p,toolPreset:h,onToolPresetChange:x,thinkingLevel:g,onThinkingLevelChange:f,availableThinkingLevels:v,thinkingLevelMap:m,retryInfo:y,soundEnabled:b,onSoundToggle:j},k){let w,S,C,[z,T]=(0,i.useState)(""),[M,I]=(0,i.useState)(!1),[L,R]=(0,i.useState)(null),[W,E]=(0,i.useState)(!1),[$,B]=(0,i.useState)(!1),[A,P]=(0,i.useState)([]),[N,D]=(0,i.useState)([]),H=(0,i.useRef)(null),O=(0,i.useRef)(null),F=(0,i.useRef)(null),_=(0,i.useRef)(null),U=(0,i.useRef)(null),V=(0,i.useRef)(null),q=(0,i.useRef)(null);(0,i.useImperativeHandle)(k,()=>({insertIfEmpty(e){let t=H.current;(t?t.value:z).trim()||(T(e),requestAnimationFrame(()=>{t&&(t.focus(),t.style.height="auto",t.style.height=`${Math.min(t.scrollHeight,200)}px`)}))},insertText(e){let t=H.current;if(!t)return void T(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(" ")?" ":"";T(i+l+e+o),requestAnimationFrame(()=>{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`})},addImages(e){K(e)},addFiles(e){J(e)}}));let K=(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)})));P(e=>[...e,...r])},[]),J=(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&&K(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 eJ(e,r);t({data:r,fileName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...i})},n.onerror=r,n.readAsArrayBuffer(e)})));D(t=>[...t,...e])}},[K]),Y=(0,i.useCallback)(e=>{P(t=>{let r=[...t];return URL.revokeObjectURL(r[e].previewUrl),r.splice(e,1),r})},[]),Z=(0,i.useCallback)(e=>{D(t=>{let r=[...t];return r.splice(e,1),r})},[]),G=(0,i.useCallback)(()=>{P(e=>(e.forEach(e=>URL.revokeObjectURL(e.previewUrl)),[])),D([])},[]),X=(0,i.useCallback)(()=>{let t=z.trim();(t||A.length||N.length)&&!r&&(e(t,A.length?A:void 0,N.length?N:void 0),T(""),G(),H.current&&(H.current.style.height="auto"))},[z,A,N,r,e,G]),Q=(0,i.useCallback)(e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),X())},[X]),ee=(0,i.useCallback)(()=>{let e=H.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)},[]),et=(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(),J(t.map(e=>e.getAsFile()).filter(e=>null!==e)))},[J]),er=s&&s.length>0?s.map(e=>({provider:e.provider,modelId:e.id,name:e.name})):Object.entries(l??{}).map(([e,t])=>({provider:o?.provider??"unknown",modelId:e,name:t})),en=[];for(let e of er){let t=en.find(t=>t.provider===e.provider);t?t.options.push(e):en.push({provider:e.provider,options:[e]})}let ei=o?er.find(e=>e.modelId===o.modelId&&e.provider===o.provider)?.name??o.modelId:"Select model";return(0,i.useEffect)(()=>{let e=e=>{O.current&&!O.current.contains(e.target)&&F.current&&!F.current.contains(e.target)&&I(!1),_.current&&!_.current.contains(e.target)&&E(!1),U.current&&!U.current.contains(e.target)&&B(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,n.jsxs)("div",{style:{flexShrink:0,background:"transparent",padding:"0 16px 8px",paddingRight:52},children:[(0,n.jsx)("input",{ref:V,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{K(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsx)("input",{ref:q,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=>{J(Array.from(e.target.files??[])),e.target.value=""}}),(0,n.jsxs)("div",{style:{maxWidth:820,margin:"0 auto"},children:[y&&(0,n.jsxs)("div",{style:{marginBottom:8,padding:"5px 10px",background:"rgba(234,179,8,0.08)",border:"1px solid rgba(234,179,8,0.25)",borderRadius:6,fontSize: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 (",y.attempt,"/",y.maxAttempts,")…",y.errorMessage&&(0,n.jsxs)("span",{style:{opacity:.7,marginLeft:4},children:["— ",y.errorMessage]})]}),(A.length>0||N.length>0)&&(0,n.jsxs)("div",{style:{display:"flex",gap:6,marginBottom:6,flexWrap:"wrap",alignItems:"flex-end"},children:[A.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 var(--border)",display:"block"}}),(0,n.jsx)("button",{onClick:()=>Y(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}`)),N.map((e,t)=>(0,n.jsx)(eF,{doc:e,onRemove:()=>Z(t)},`doc-${t}`))]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",background:"var(--bg)",border:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",borderRadius:14,padding:"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:H,value:z,onChange:e=>T(e.target.value),onKeyDown:Q,onInput:ee,onPaste:et,placeholder:r?"Agent is running…":"Message…",rows:1,style:{flex:1,background:"none",border:"none",outline:"none",resize:"none",color:"var(--text)",fontSize:14,lineHeight:1.6,fontFamily:"inherit",minHeight:24,maxHeight:200,overflow:"auto"}}),!r&&(0,n.jsxs)("button",{onClick:X,disabled:!z.trim()&&!A.length&&!N.length,style:{flexShrink:0,alignSelf:"flex-end",display:"flex",alignItems:"center",gap:6,padding:"7px 14px",background:z.trim()||A.length||N.length?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:8,color:z.trim()||A.length||N.length?"#fff":"var(--text-dim)",cursor:z.trim()||A.length||N.length?"pointer":"not-allowed",fontSize:13,fontWeight:600,letterSpacing:"-0.01em",boxShadow:z.trim()||A.length||N.length?"0 1px 3px rgba(37,99,235,0.25)":"none",transition:"background 0.15s, box-shadow 0.15s"},children:[(0,n.jsxs)("svg",{width:"14",height:"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:8,display:"flex",alignItems:"center",gap:6},children:[(0,n.jsxs)("div",{className:"chat-input-toolbar-left",style:{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)("button",{onClick:()=>V.current?.click(),disabled:r,title:"Attach image (right-click for document)",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"none",border:"none",borderRadius:9,color:A.length||N.length?"var(--accent)":"var(--text-muted)",cursor:r?"not-allowed":"pointer",opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color=A.length||N.length?"var(--accent)":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color=A.length||N.length?"var(--accent)":"var(--text-muted)"},onContextMenu:e=>{e.preventDefault(),q.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"})})}),er.length>0&&a&&(0,n.jsxs)("div",{ref:O,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:e=>{let t=e.currentTarget.getBoundingClientRect();R({top:t.top,left:t.left,width:t.width}),I(e=>!e)},disabled:r,style:{display:"flex",alignItems:"center",gap:6,padding:"8px 12px",height:32,maxWidth:220,overflow:"hidden",background:M?"var(--bg-hover)":"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:r?"not-allowed":"pointer",fontSize:12,opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=M?"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:ei})]}),M&&L&&(S=(w=window.visualViewport?.height??window.innerHeight)-L.top+6,C=Math.max(120,Math.min(L.top-8,.6*w)),(0,n.jsx)("div",{ref:F,style:{position:"fixed",bottom:S,left:L.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:L.width,maxHeight:C,overflowY:"auto"},children:en.map((e,t)=>(0,n.jsxs)("div",{children:[en.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===o?.modelId&&e.provider===o?.provider;return(0,n.jsxs)("button",{onClick:()=>{I(!1),t||a(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}}),e.name]},`${e.provider}:${e.modelId}`)})]},e.provider))}))]})]}),(0,n.jsx)("div",{className:"chat-input-toolbar-spacer",style:{flex:1}}),(0,n.jsxs)("div",{className:"chat-input-toolbar-right",style:{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2,marginLeft:"auto"},children:[!r&&f&&(0,n.jsxs)("div",{ref:U,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>!r&&B(e=>!e),disabled:r,title:"切换推理强度",style:{display:"flex",alignItems:"center",gap:5,padding:"8px 12px",height:32,background:$?"var(--bg-hover)":"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:r?"not-allowed":"pointer",fontSize:12,opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=$?"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",{children:(()=>{let e=g??"auto";if("auto"===e||!m)return e;let t=m[e];return null!=t?t:e})()})]}),$&&(0,n.jsx)("div",{style:{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)",overflow:"hidden",minWidth:180},children:eH.filter(e=>!v||"auto"===e||v.includes(e)).map(e=>{let t=(g??"auto")===e,r=eO[e],i="auto"!==e&&m?m[e]:void 0,o=null!=i&&i!==e?i:e,l=null!=i&&i!==e;return(0,n.jsxs)("button",{onClick:()=>{B(!1),t||f(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: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)})})]}),!r&&x&&(0,n.jsxs)("div",{ref:_,style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>!r&&E(e=>!e),disabled:r,title:"切换工具预设",style:{display:"flex",alignItems:"center",gap:5,padding:"8px 12px",height:32,background:W?"var(--bg-hover)":"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:r?"not-allowed":"pointer",fontSize:12,opacity:r?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{r||(e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=W?"var(--bg-hover)":"none",e.currentTarget.style.color="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",{children:Object.entries(eD).find(([,e])=>e===(h??"full"))?.[0]??"full"})]}),W&&(0,n.jsx)("div",{style:{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)",overflow:"hidden",minWidth:120},children:eN.map(e=>{let t=eD[e],r=(h??"full")===t,i="off"===e?"无工具,纯聊天":"default"===e?"4 项内置工具":"全部内置工具";return(0,n.jsxs)("button",{onClick:()=>{E(!1),r||x(t)},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:"pointer",fontSize:12,textAlign:"left",fontWeight:r?600:400,whiteSpace:"nowrap"},onMouseEnter:e=>{r||(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:i})]},e)})})]}),!r&&d&&(0,n.jsxs)("div",{style:{position:"relative"},children:[p&&(0,n.jsx)("div",{style:{position:"absolute",bottom:"calc(100% + 6px)",right:0,background:"#1f2937",color:"#f87171",fontSize:11,padding:"4px 8px",borderRadius:5,whiteSpace:"nowrap",pointerEvents:"none",boxShadow:"0 2px 8px rgba(0,0,0,0.2)",zIndex:50},children:p}),(0,n.jsx)("button",{onClick:u?c:d,disabled:r&&!u,style:{display:"flex",alignItems:"center",gap:5,padding:"8px 12px",height:32,background:u?"rgba(239,68,68,0.08)":"none",border:"none",borderRadius:9,color:u?"#ef4444":"var(--text-muted)",cursor:r&&!u?"not-allowed":"pointer",fontSize:12,opacity:r&&!u?.5:1,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{(!r||u)&&(e.currentTarget.style.background=u?"rgba(239,68,68,0.16)":"var(--bg-hover)",e.currentTarget.style.color=u?"#ef4444":"var(--text)")},onMouseLeave:e=>{e.currentTarget.style.background=u?"rgba(239,68,68,0.08)":"none",e.currentTarget.style.color=u?"#ef4444":"var(--text-muted)"},title:u?"停止压缩":"压缩上下文",children:u?(0,n.jsxs)(n.Fragment,{children:[(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"})}),"Compacting…"]}):(0,n.jsxs)(n.Fragment,{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)("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"})]}),"Compact"]})})]}),r&&(0,n.jsxs)("button",{onClick:t,title:"停止 Agent",style:{display:"flex",alignItems:"center",gap:6,padding:"8px 14px",height:32,background:"rgba(239,68,68,0.08)",border:"1px solid rgba(239,68,68,0.3)",borderRadius:9,color:"#ef4444",cursor:"pointer",fontSize: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!==j&&(0,n.jsx)("button",{onClick:j,title:b?"关闭完成提示音":"开启完成提示音",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,background:"none",border:"none",borderRadius:9,color:b?"var(--text-muted)":"var(--text-dim)",cursor:"pointer",opacity:b?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=b?"var(--text-muted)":"var(--text-dim)",e.currentTarget.style.opacity=b?"1":"0.55"},children:b?(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 eZ(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 eG({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),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;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]),z=y.current?.clientHeight??600,T=(0,i.useMemo)(()=>{if(!x||0===p.length)return[];let e=p.map(e=>Math.round(e.topRatio*z-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(z-22,e[t]));return e},[x,p,z]);if(!c)return null;let M=l*(1-a)*100,I=100*a,L=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: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:`${M}%`,height:`${I}%`,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=eZ(e.msg),r=x&&L===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=eZ(e.msg),o=L===e.index;return r&&0!==T.length?(0,n.jsx)("div",{style:{position:"absolute",top:T[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 eX(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function eQ(e){return"string"==typeof e&&e.trim()?e:void 0}function e0(e){if(eX(e)){if("completed"in e)return"completed";if("failed"in e||"error"in e)return"failed";if("paused"in e||"blocked"in e)return"paused";if("not_found"in e)return"not_found";if("running"in e||"in_progress"in e||"pending"in e)return"running"}let t="string"==typeof e?e.toLowerCase().trim():"";return"completed"===t||"complete"===t||"done"===t||"success"===t||"succeeded"===t?"completed":"failed"===t||"failure"===t||"error"===t||"cancelled"===t||"canceled"===t?"failed":"paused"===t||"blocked"===t||"interrupted"===t?"paused":"not_found"===t||"not-found"===t||"missing"===t?"not_found":("pending"===t||"pending_init"===t||"starting"===t||"started"===t,"running")}function e1(e){return(Array.isArray(e)?e:eX(e)?[e]:[]).filter(eX).map((e,t)=>({id:eQ(e.id)??eQ(e.threadId)??eQ(e.thread_id)??`agent:${t}`,agent:eQ(e.agent)??eQ(e.agent_nickname)??"agent",status:e0(e.status),role:eQ(e.role)??eQ(e.agent_role),task:eQ(e.task)??eQ(e.prompt),summary:eQ(e.summary),threadId:eQ(e.threadId)??eQ(e.thread_id),parentThreadId:eQ(e.parentThreadId)??eQ(e.parent_thread_id),model:eQ(e.model),reasoningEffort:eQ(e.reasoningEffort)??eQ(e.reasoning_effort),timestamp:"number"==typeof e.timestamp?e.timestamp:function(e){if("string"!=typeof e||!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}(e.timestamp)}))}function e2(...e){let t=new Map;for(let r of e)for(let e of r??[]){let r=t.get(e.id);t.set(e.id,{...r,...e,timestamp:Math.max(r?.timestamp??0,e.timestamp??0)||r?.timestamp||e.timestamp,summary:e.summary??r?.summary,task:e.task??r?.task,role:e.role??r?.role,threadId:e.threadId??r?.threadId})}return[...t.values()].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))}function e4(e){let t=new Map;for(let r of e){if("custom"===r.role&&"subagent-progress"===r.customType){let e=r.details;for(let r of e1(e?.runs))t.set(r.id,r)}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:r.content.split("\n").slice(3).join("\n").trim()||void 0,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&&r.toolCallId&&t.has(r.toolCallId)){let e=t.get(r.toolCallId);e.status=r.isError?"failed":"completed",e.summary=(r.content?.filter(e=>"text"===e.type).map(e=>e.text??"").join("\n")??"").slice(0,200)||void 0}}return Array.from(t.values()).sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))}function e5({messages:e,runs:t}){let r=(0,i.useMemo)(()=>e4(e??[]),[e]),o=(0,i.useMemo)(()=>e2(r,t),[r,t]),l=o.filter(e=>"running"===e.status||"pending"===e.status),s=o.filter(e=>"running"!==e.status&&"pending"!==e.status);return 0===o.length?null:(0,n.jsxs)("div",{style:{height:"100%",overflow:"auto",padding:12},children:[l.length>0&&(0,n.jsxs)("div",{style:{marginBottom:16},children:[(0,n.jsxs)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",marginBottom:8,textTransform:"uppercase",letterSpacing:"0.05em"},children:["Active (",l.length,")"]}),l.map(e=>(0,n.jsxs)("div",{style:{padding:"8px 12px",borderRadius:6,border:"1px solid rgba(99,102,241,0.2)",background:"rgba(99,102,241,0.04)",marginBottom:6,fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:"#818cf8",display:"inline-block",animation:"pulse 1.5s infinite",flexShrink:0}}),(0,n.jsx)("span",{style:{fontWeight:600,color:"var(--text)"},children:e.agent}),e.role&&(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10},children:e.role}),(0,n.jsx)("span",{style:{color:"var(--accent)",fontSize:10,fontWeight:600},children:"running"})]}),e.task&&(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-muted)",fontSize:11,lineHeight:1.4},children:e.task.length>120?e.task.slice(0,120)+"…":e.task}),e.threadId&&(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.threadId})]},e.id))]}),s.length>0&&(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{fontSize:11,fontWeight:600,color:"var(--text-dim)",marginBottom:8,textTransform:"uppercase",letterSpacing:"0.05em"},children:["Completed (",s.length,")"]}),s.map(e=>(0,n.jsxs)("div",{style:{padding:"6px 12px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",marginBottom:4,fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{fontSize:12,flexShrink:0},children:"completed"===e.status?"✓":"failed"===e.status||"not_found"===e.status?"!":"paused"===e.status?"||":"..."}),(0,n.jsx)("span",{style:{fontWeight:600,color:"var(--text)"},children:e.agent}),e.role&&(0,n.jsx)("span",{style:{color:"var(--text-dim)",fontSize:10},children:e.role}),(0,n.jsx)("span",{style:{color:"completed"===e.status?"#22c55e":"failed"===e.status||"not_found"===e.status?"#ef4444":"var(--text-dim)",fontSize:10,fontWeight:600},children:e0(e.status)})]}),e.task&&(0,n.jsx)("div",{style:{marginTop:3,color:"var(--text-muted)",fontSize:11,lineHeight:1.4,maxHeight:44,overflow:"hidden"},children:e.task}),e.summary&&(0,n.jsx)("div",{style:{marginTop:3,color:"var(--text-muted)",fontSize:11,lineHeight:1.4,maxHeight:60,overflow:"hidden"},children:e.summary}),e.threadId&&(0,n.jsx)("div",{style:{marginTop:3,color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.threadId})]},e.id))]})]})}function e3(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 e6(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}`);if(n.sessionId&&n.data&&"object"==typeof n.data)return Array.isArray(n.data)?n.data:{...n.data,__sessionId:n.sessionId};return n.sessionId?{value:n.data,__sessionId:n.sessionId}:n.data}function e8(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}}let e7=["image/","application/pdf","application/vnd.openxmlformats-officedocument","application/msword","application/vnd.ms-"];function e9(e){return e7.some(t=>e.type.startsWith(t))}let te=["annotate and analyze.","vibe code bioinformatics.","turn data into figures.","inspect your project.","trace reproducible workflows.","summarize that paper.","review the pipeline.","compare markers.","draft methods.","find the next analysis step."];function tt({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 tr({session:e,newSessionCwd:t,onAgentEnd:o,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,chatInputRef:d,onSystemPromptChange:u,onSessionStatsChange:p,onContextUsageChange:h,generativeUI:x}){var g;let f,{data:v,loading:m,error:y,messages:b,entryIds:j,streamState:k,agentRunning:w,modelNames:S,modelList:C,modelThinkingLevels:z,modelThinkingLevelMaps:T,toolPreset:M,thinkingLevel:I,retryInfo:L,contextUsage:R,forkingEntryId:W,isCompacting:E,compactError:$,displayModel:B,sessionStats:A,agentPhase:P,agentError:N,subagentRuns:D,isNew:H,messagesEndRef:O,scrollContainerRef:F,lastUserMsgRef:_,handleSend:U,handleAbort:V,handleFork:q,handleModelChange:K,handleCompact:J,handleAbortCompaction:Y,handleToolPresetChange:Z,handleThinkingLevelChange:G,handleAgentEventRef:X}=function(e){let{session:t,newSessionCwd:n,onAgentEnd:o,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,onSystemPromptChange:d}=e,c=t?.id??null,u=null===t&&null!==n,[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(!u),[f,v]=(0,i.useState)(null),[m,y]=(0,i.useState)([]),[b,j]=(0,i.useState)([]),[k,w]=(0,i.useReducer)(e8,{isStreaming:!1,streamingMessage:null}),[S,C]=(0,i.useState)(!1),[z,T]=(0,i.useState)({}),[M,I]=(0,i.useState)([]),[L,R]=(0,i.useState)({}),[W,E]=(0,i.useState)({}),[$,B]=(0,i.useState)(null),[A,P]=(0,i.useState)("full"),[N,D]=(0,i.useState)("auto"),[H,O]=(0,i.useState)(null),[F,_]=(0,i.useState)(null),[U,V]=(0,i.useState)(null),[q,K]=(0,i.useState)(null),[J,Y]=(0,i.useState)(null),[Z,G]=(0,i.useState)(null),[X,Q]=(0,i.useState)(!1),[ee,et]=(0,i.useState)(null),[er,en]=(0,i.useState)(null),[ei,eo]=(0,i.useState)(null),[el,es]=(0,i.useState)([]),ea=(0,i.useRef)(null),ed=(0,i.useRef)(null),ec=(0,i.useRef)(t?.id??null),eu=(0,i.useRef)(!1),ep=(0,i.useRef)(!1),eh=(0,i.useRef)(null),ex=(0,i.useRef)(!1),eg=(0,i.useRef)(null),ef=(0,i.useRef)(!1),ev=(0,i.useRef)(null),em=(0,i.useRef)(null),ey=(0,i.useRef)(!1),eb=e.setNewSessionModel??B,ej=e.setToolPreset??P,ek=J??p?.context.model??Z??null,ew=u?$:ek,eS=(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}
|
|
250
250
|
${t}
|
|
251
251
|
${e.extractedText}`.trim()}return`${r}
|
|
252
|
-
[Text extraction unavailable: ${e.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),eC=(()=>{let e={input:0,output:0,cacheRead:0,cacheWrite:0},t=0;for(let r of m){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})(),ez=p?.context.sessionStats??eC,eT=(0,i.useCallback)(async(e,t=!1,r=!1)=>{try{t&&g(!0);let n=r?`/api/sessions/${encodeURIComponent(e)}?includeState`:`/api/sessions/${encodeURIComponent(e)}`,i=await fetch(n);if(404===i.status)return t&&(h(null),y([]),v(null)),null;if(!i.ok)throw Error(`HTTP ${i.status}`);let o=await i.json();return h(o),y(o.context.messages),j(o.context.entryIds??[]),es(o.context.subagentRuns??[]),o.agentState?.state?.contextUsage||void 0===o.context.contextUsage||_(o.context.contextUsage??null),
|
|
252
|
+
[Text extraction unavailable: ${e.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),eC=(()=>{let e={input:0,output:0,cacheRead:0,cacheWrite:0},t=0;for(let r of m){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})(),ez=p?.context.sessionStats??eC,eT=(0,i.useCallback)(async(e,t=!1,r=!1)=>{try{t&&g(!0);let n=r?`/api/sessions/${encodeURIComponent(e)}?includeState`:`/api/sessions/${encodeURIComponent(e)}`,i=await fetch(n);if(404===i.status)return t&&(h(null),y([]),v(null)),null;if(!i.ok)throw Error(`HTTP ${i.status}`);let o=await i.json();return h(o),y(o.context.messages),j(o.context.entryIds??[]),es(o.context.subagentRuns??[]),o.agentState?.state?.contextUsage||void 0===o.context.contextUsage||_(o.context.contextUsage??null),Y(null),v(null),!o.agentState?.state?.thinkingLevel&&o.context.thinkingLevel&&"off"!==o.context.thinkingLevel&&D(o.context.thinkingLevel),o.agentState??null}catch(e){return v(String(e)),null}finally{t&&g(!1)}},[]),eM=(0,i.useCallback)(async e=>{try{let t=await e6(e,{type:"get_tools"});if(t){let{getPresetFromTools:e}=await r.e(8451).then(r.bind(r,48451));ej(e(t))}}catch(e){console.error("Failed to load tools:",e)}},[ej]),eI=(0,i.useCallback)(e=>{ed.current&&ed.current!==e||(ea.current?.close(),ea.current=null,ed.current=null)},[]),eL=(0,i.useCallback)(e=>{ea.current&&(ea.current.close(),ea.current=null),ed.current=null;let t=new EventSource(`/api/agent/${encodeURIComponent(e)}/events`);ea.current=t,ed.current=e,t.onmessage=e=>{try{let t=JSON.parse(e.data);eh.current?.(t)}catch{}},t.onerror=()=>{ea.current===t&&eu.current&&(t.close(),ea.current=null,ed.current=null,setTimeout(()=>{eu.current&&eL(e)},1e3))}},[]),eR=(0,i.useRef)(new Set),eW=(0,i.useCallback)((e,t=5e3,r=!1)=>new Promise((n,i)=>{let o=Date.now(),l=!1,s=t=>{if(!l){if(l=!0,t)return void n();ed.current===e&&(ea.current?.close(),ea.current=null,ed.current=null),eR.current.delete(e),i(Error(`Timed out waiting for agent event stream for session ${e}`))}},a=()=>{if(l)return;let n=ed.current===e&&ea.current?.readyState===EventSource.OPEN;!r&&n||r&&n&&eR.current.has(e)?s(!0):Date.now()-o>=t?s(!1):setTimeout(a,50)};eL(e),eR.current.delete(e),a()}),[eL]);(0,i.useEffect)(()=>{eu.current=S},[S]),eh.current=(0,i.useCallback)(e=>{switch(e.type){case"connected":{let t="string"==typeof e.sessionId?e.sessionId:null;t&&(eR.current.add(t),ec.current&&t!==ec.current&&(ec.current=t,s?.(t)));break}case"agent_start":eo(null),C(!0),eu.current=!0,en({kind:"waiting_model"}),w({type:"start"});break;case"agent_end":C(!1),eu.current=!1,en(null),O(null),eo("string"==typeof e.error?e.error:null),w({type:"end"}),ec.current&&(eT(ec.current),fetch(`/api/agent/${encodeURIComponent(ec.current)}`).then(e=>e.json()).then(e=>{e.state?.contextUsage!==void 0&&_(e.state.contextUsage??null),e.state?.systemPrompt!==void 0&&V(e.state.systemPrompt??null)}).catch(()=>{})),o?.();break;case"message_start":case"message_update":{let t=e.message;t&&w({type:"update",message:e3(t)}),en(null);break}case"message_end":{let t=e.message;t&&y(e=>[...e,e3(t)]),w({type:"reset"}),en({kind:"waiting_model"});break}case"tool_execution_start":{let t=e.toolCallId,r=e.toolName;en(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;en(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"subagent_progress":{let t=e1(e.runs);if(t.length>0){es(e=>e2(e,t));let e=t.filter(e=>"running"===e.status||"pending"===e.status);e.length>0&&en({kind:"running_tools",tools:e.map(e=>({id:e.id,name:e.agent}))})}break}case"auto_retry_start":O({attempt:e.attempt,maxAttempts:e.maxAttempts,errorMessage:e.errorMessage});break;case"auto_retry_end":O(null);break;case"auto_compaction_start":case"compaction_start":Q(!0),et(null);break;case"auto_compaction_end":case"compaction_end":Q(!1),e.errorMessage?et(e.errorMessage):!e.aborted&&ec.current&&eT(ec.current)}},[eT,o,s]);let eE=(0,i.useCallback)(async(e,i,o)=>{if(!e.trim()&&!i?.length&&!o?.length||S||ep.current)return;let a=eS(o),d=e.trim()?a?`${e}
|
|
253
253
|
|
|
254
254
|
Attached document text:
|
|
255
255
|
|
|
256
256
|
${a}`:e:a?`Attached document text:
|
|
257
257
|
|
|
258
|
-
${a}`:"",c=i?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),p={role:"user",content:c?.length?[...d.trim()?[{type:"text",text:d}]:[],...c]:d,timestamp:Date.now()};ep.current=!0,y(e=>[...e,p]),eo(null),ef.current=!0;let h=i?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType})),x=()=>{eu.current||(eu.current=!0,C(!0),en({kind:"waiting_model"}),w({type:"start"}))};try{if(u&&n){$&&G($);let{PRESET_NONE:t,PRESET_DEFAULT:i,PRESET_FULL:o}=await r.e(8451).then(r.bind(r,48451)),s="none"===A?t:"default"===A?i:o,a=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,toolNames:s,...$?{provider:$.provider,modelId:$.modelId}:{},..."auto"!==N?{thinkingLevel:N}:{}})}),c=await a.json().catch(()=>({}));if(!a.ok||c.error||!c.sessionId)throw Error(c.error??`HTTP ${a.status}`);let u=c.sessionId;ec.current=u,await eW(u,1e4,!0),x(),await e7(u,{type:"prompt",message:d,toolNames:s,...h?.length?{images:h}:{}}),ey.current=!0,l?.({id:u,path:"",cwd:n,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e})}else if(t){let{PRESET_NONE:e,PRESET_DEFAULT:n,PRESET_FULL:i}=await r.e(8451).then(r.bind(r,48451));await eW(t.id,1e4,!0),x();let o=await e7(t.id,{type:"prompt",message:d,toolNames:"none"===A?e:"default"===A?n:i,...h?.length?{images:h}:{}});o?.__sessionId&&o.__sessionId!==t.id&&(ec.current=o.__sessionId,eI(o.__sessionId),s?.(o.__sessionId))}}catch(e){console.error("Failed to send message:",e),eo(e instanceof Error?e.message:String(e)),C(!1),eu.current=!1,en(null),w({type:"end"}),y(e=>e[e.length-1]===p?e.slice(0,-1):e)}finally{ep.current=!1}},[u,n,$,A,N,t,S,eW,l,s,eI,eS]),e$=(0,i.useCallback)(async()=>{let e=ec.current;if(e){eu.current=!1,eo(null),C(!1),en(null),w({type:"end"}),ea.current?.close(),ea.current=null,ed.current=null;try{await e7(e,{type:"abort"}),await eT(e)}catch(t){console.error("Failed to abort:",t),await eT(e)}}},[eT]),eB=(0,i.useCallback)(async e=>{let t=ec.current;if(t){K(e);try{let{cancelled:r,newSessionId:n}=await e7(t,{type:"fork",entryId:e})??{};!r&&n&&s?.(n)}catch(e){console.error("Fork failed:",e)}finally{K(null)}}},[s]),eA=(0,i.useCallback)(async(e,t)=>{if(u)return void eb({provider:e,modelId:t});let r=ec.current;if(r)try{let n=await e7(r,{type:"set_model",provider:e,modelId:t}),i=n.newSessionId??n.__sessionId;i&&i!==r&&(ec.current=i,s?.(i)),Z({provider:n?.provider??e,modelId:n?.id??t})}catch(e){console.error("Failed to set model:",e)}},[u,s,eb]),eP=(0,i.useCallback)(async()=>{let e=ec.current;if(e&&!X){Q(!0),et(null);try{await e7(e,{type:"compact"}),await eT(e,!0)}catch(e){et(e instanceof Error?e.message:String(e))}finally{Q(!1)}}},[X,eT]),eN=(0,i.useCallback)(async()=>{let e=ec.current;if(e)try{await e7(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),eH=(0,i.useCallback)(async e=>{if(H(e),"auto"===e)return;let t=ec.current;if(t)try{await e7(t,{type:"set_thinking_level",level:e})}catch(e){console.error("Failed to set thinking level:",e)}},[]),eD=(0,i.useCallback)(async e=>{let{PRESET_NONE:t,PRESET_DEFAULT:n,PRESET_FULL:i}=await r.e(8451).then(r.bind(r,48451));ej(e);let o=ec.current;if(o)try{await e7(o,{type:"set_tools",toolNames:"none"===e?t:"default"===e?n:i})}catch(e){console.error("Failed to set tools:",e)}},[ej]),eO=(0,i.useCallback)((e="smooth")=>{ev.current?.scrollIntoView({behavior:e})},[]),eF=(0,i.useCallback)(()=>{let e=em.current,t=eg.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)(()=>ey.current?(ey.current=!1,()=>{c&&eM(c)}):(c&&(ec.current=c,eT(c,!0,!0).then(e=>{e?.running&&(eL(c),C(!0),en({kind:"waiting_model"}),w({type:"start"}),eI(c)),e?.state&&(void 0!==e.state.isCompacting&&Q(e.state.isCompacting),void 0!==e.state.contextUsage&&_(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&V(e.state.systemPrompt??null),void 0!==e.state.thinkingLevel&&H(e.state.thinkingLevel??"auto"))})),()=>{c&&eM(c)}),[c,eM,eI,eT,eL]),(0,i.useEffect)(()=>{d?.(U)},[U,d]),(0,i.useEffect)(()=>{m.length>0&&(ef.current?(ef.current=!1,ex.current=!0,eF()):ex.current?eu.current||eO("smooth"):(ex.current=!0,eO("instant")))},[m.length,S,eO,eF]),(0,i.useEffect)(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{if(T(e.models),e.thinkingLevels&&R(e.thinkingLevels),e.thinkingLevelMaps&&E(e.thinkingLevelMaps),e.modelList&&(M(e.modelList),u)){let t=e.defaultModel,r=t&&e.modelList.find(e=>e.id===t.modelId&&e.provider===t.provider);eb(r?{provider:r.provider,modelId:r.id}:t??null)}}).catch(()=>{})},[u,a,eb]),(0,i.useEffect)(()=>{if(!ee)return;let e=setTimeout(()=>et(null),3e3);return()=>clearTimeout(e)},[ee]),{data:p,loading:x,error:f,messages:m,entryIds:b,streamState:k,agentRunning:S,modelNames:z,modelList:L,modelThinkingLevels:I,modelThinkingLevelMaps:W,newSessionModel:$,toolPreset:A,thinkingLevel:N,retryInfo:D,contextUsage:F,systemPrompt:U,forkingEntryId:q,isCompacting:X,compactError:ee,currentModel:ek,displayModel:ew,sessionStats:ez,agentPhase:er,agentError:ei,subagentRuns:el,isNew:u,sessionIdRef:ec,eventSourceRef:ea,messagesEndRef:ev,scrollContainerRef:em,lastUserMsgRef:eg,pendingScrollToUserRef:ef,initialScrollDoneRef:ex,handleSend:eE,handleAbort:e$,handleFork:eB,handleModelChange:eA,handleCompact:eP,handleAbortCompaction:eN,handleToolPresetChange:eD,handleThinkingLevelChange:eH,loadTools:eL,setData:h,setMessages:y,dispatch:w,setAgentRunning:C,setForkingEntryId:K,handleAgentEventRef:eh}}({session:e,newSessionCwd:t,onAgentEnd:o,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,onSystemPromptChange:u}),{soundEnabled:Q,onSoundToggle:ee,playDoneSound:et}=function(){let[e,t]=(0,i.useState)(()=>{let e=localStorage.getItem("annodex-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("annodex-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}}(),er=(0,i.useRef)(et);er.current=et;let en=(0,i.useRef)(Q);en.current=Q;let ei=X.current;(0,i.useEffect)(()=>{X.current=e=>{"agent_end"===e.type&&en.current&&er.current(),ei?.(e)}},[ei,X]);let eo=A?`${A.tokens.input}|${A.tokens.output}|${A.tokens.cacheRead}|${A.tokens.cacheWrite}|${A.cost??0}`:null,el=(0,i.useRef)(A);el.current=A,(0,i.useEffect)(()=>{p?.(el.current)},[eo,p]),(0,i.useEffect)(()=>()=>{p?.(null)},[p]);let es=R?`${R.percent??"null"}|${R.contextWindow}|${R.tokens??"null"}`:null,ea=(0,i.useRef)(R);ea.current=R,(0,i.useEffect)(()=>{h?.(ea.current)},[es,h]),(0,i.useEffect)(()=>()=>{h?.(null)},[h]);let{isDragOver:ed,handleDragEnter:ec,handleDragOver:eu,handleDragLeave:ep,handleDrop:eh}=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(tt)&&(e.preventDefault(),n.current+=1,r(!0))},[]),l=(0,i.useCallback)(e=>{Array.from(e.dataTransfer.items).some(tt)&&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=>{d?.current?.addFiles(e)},[d])),ex=(g=b.filter(e=>"user"===e.role||"assistant"===e.role).length,(f=(0,i.useRef)([])).current=Array(g).fill(null).map((e,t)=>f.current[t]??null),f),eg=D&&0===b.length&&!k.isStreaming&&!w,[ef,ev]=(0,i.useState)(!1),em=e5(e3(b),H),ey=em.filter(e=>"running"===e.status||"pending"===e.status).length;(0,i.useEffect)(()=>{0===em.length&&ef&&ev(!1)},[em.length,ef]);let eb=B?z[`${B.provider}:${B.modelId}`]??null:null,ej=B?T[`${B.provider}:${B.modelId}`]??null:null,ek=(0,n.jsx)(eG,{ref:d,onSend:U,onAbort:V,isStreaming:w,model:B,modelNames:S,modelList:C,onModelChange:K,onCompact:e||D?J:void 0,onAbortCompaction:Z,isCompacting:E,compactError:$,toolPreset:L,onToolPresetChange:e||D?Y:void 0,thinkingLevel:M,onThinkingLevelChange:e||D?G:void 0,availableThinkingLevels:eb,thinkingLevelMap:ej,retryInfo:I,soundEnabled:Q,onSoundToggle:ee}),ew=(0,i.useCallback)(e=>{w?d?.current?.insertText(e):U(e)},[w,d,U]);return m?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:"Loading session..."}):y?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:y}):(0,n.jsxs)("div",{className:"relative flex h-full flex-col overflow-hidden",onDragEnter:ec,onDragOver:eu,onDragLeave:ep,onDrop:eh,children:[ed&&(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"})]})]})]}),eg?(0,n.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center overflow-y-auto px-4 py-8",children:(0,n.jsxs)("div",{className:"w-full max-w-[820px]",children:[(0,n.jsxs)("div",{className:"mb-3",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginLeft:16,marginRight:52,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,minWidth:0,flex:1,lineHeight:1.4},children:[(0,n.jsx)("span",{style:{fontSize:23,color:"var(--text)",fontWeight:750,letterSpacing:0},children:c.C3}),(0,n.jsx)("span",{style:{fontSize:14,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:(0,n.jsx)(tn,{phrases:tr})})]}),(0,n.jsx)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"flex-end",minHeight:22},children:(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap"},children:["v","0.1.21"]})})]}),ek]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:F,className:"flex-1 overflow-y-auto pt-4 [scrollbar-width:none]",children:(0,n.jsxs)("div",{className:"mx-auto max-w-[820px] px-4",children:[(()=>{let r=new Map;for(let e of b)"toolResult"===e.role&&r.set(e.toolCallId,e);let i=-1;for(let e=b.length-1;e>=0;e--)if("user"===b[e].role){i=e;break}let o=0;return b.map((l,s)=>{let a="user"===l.role||"assistant"===l.role,d=a?o++:-1,c=!1;if("assistant"===l.role){c=!0;for(let e=s+1;e<b.length;e++){let t=b[e].role;if("user"===t)break;if("assistant"===t){c=!1;break}}c&&k.isStreaming&&s===b.length-1&&(c=!1)}let u=(0,n.jsx)(eM,{message:l,toolResults:r,modelNames:S,entryId:j[s],onFork:w||D||0===s&&"user"===l.role?void 0:q,forking:W===j[s],onSendMessage:ew,showTimestamp:c,prevTimestamp:s>0?b[s-1].timestamp:void 0,renderVisualCodeBlocks:!!x,cwd:v?.info?.cwd??e?.cwd??t??void 0},s);return a?(0,n.jsx)("div",{ref:e=>{ex.current[d]=e,s===i&&(_.current=e)},children:u},s):u})})(),k.isStreaming&&k.streamingMessage&&(0,n.jsx)(eM,{message:k.streamingMessage,isStreaming:!0,modelNames:S,onSendMessage:ew,renderVisualCodeBlocks:!!x,cwd:v?.info?.cwd??e?.cwd??t??void 0}),w&&!k.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..."}(P)})}),v?.info?.cwd&&!1===v.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:v.info.cwd})]}),N&&(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:N}),w&&(0,n.jsx)("div",{style:{height:F.current?F.current.clientHeight:"80vh"}}),(0,n.jsx)("div",{ref:O})]})}),(0,n.jsx)(eQ,{messages:b,streamingMessage:k.streamingMessage,scrollContainer:F,messageRefs:ex}),em.length>0&&(0,n.jsxs)("button",{onClick:()=>ev(e=>!e),title:ef?"Hide agent runs":"Show agent runs",style:{position:"absolute",right:ef?260:40,top:8,minWidth:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:ey>0||em.length>1?"0 8px":0,background:ef?"var(--bg-selected)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:ef?"var(--accent)":"var(--text-dim)",cursor:"pointer",zIndex:30,fontSize:12,transition:"right 0.2s ease, background 0.12s"},onMouseEnter:e=>{ef||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{ef||(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"})]}),(ey>0||em.length>1)&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,fontSize:10,fontWeight:700,color:ey>0?"var(--accent)":"var(--text-dim)"},children:[ey>0&&(0,n.jsxs)("span",{children:[ey," active"]}),(0,n.jsx)("span",{children:em.length})]})]}),ef&&em.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",right:48,top:4,bottom:4,width:250,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"-2px 0 12px rgba(0,0,0,0.08)",zIndex:25,overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 12px",fontSize:11,fontWeight:600,color:"var(--text-dim)",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Agent Runs"}),(0,n.jsx)(e6,{runs:em})]})]}),(0,n.jsx)("div",{className:"relative",children:ek})]})]})}let to="var(--text-dim)";function tl({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:to}),(0,n.jsx)("path",{d:"M1 6h14.5L14 13H2L1 6Z",stroke:to,strokeWidth:"1",fill:to,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:to,strokeWidth:"1",fill:to,fillOpacity:"0.1"})})}function ts({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:to,strokeWidth:"1",fill:to,fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:to,strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]})}function ta({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,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:to,letterSpacing:"0",children:e})]})}function td({size:e=14}){return(0,n.jsx)(ta,{label:"TS",size:e})}function tc({size:e=14}){return(0,n.jsx)(ta,{label:"TSX",size:e})}function tu({size:e=14}){return(0,n.jsx)(ta,{label:"JS",size:e})}function tp({size:e=14}){return(0,n.jsx)(ta,{label:"JSX",size:e})}function th({size:e=14}){return(0,n.jsx)(ta,{label:"PY",size:e})}function tx({size:e=14}){return(0,n.jsx)(ta,{label:"{}",size:e})}function tg({size:e=14}){return(0,n.jsx)(ta,{label:"CSS",size:e})}function tf({size:e=14}){return(0,n.jsx)(ta,{label:"SC",size:e})}function tv({size:e=14}){return(0,n.jsx)(ta,{label:"HTM",size:e})}function tm({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M3.5 9.5V7l1.5 1.5L6.5 7v2.5",stroke:to,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M8 7v2.5M7 9l1 1.5 1-1.5",stroke:to,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})}function ty({size:e=14}){return(0,n.jsx)(ta,{label:"YML",size:e})}function tb({size:e=14}){return(0,n.jsx)(ta,{label:"TOM",size:e})}function tj({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M4 7.5l2 1.5-2 1.5",stroke:to,strokeWidth:"0.95",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M7.5 10.5h2.5",stroke:to,strokeWidth:"0.95",strokeLinecap:"round"})]})}function tk({size:e=14}){return(0,n.jsx)(ta,{label:"RS",size:e})}function tw({size:e=14}){return(0,n.jsx)(ta,{label:"GO",size:e})}function tS({size:e=14}){return(0,n.jsx)(ta,{label:"SQL",size:e})}function tC({size:e=14}){return(0,n.jsx)(ta,{label:"GQL",size:e})}function tz({size:e=14}){return(0,n.jsx)(ta,{label:"TF",size:e})}function tT({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,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:to,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"6",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:to,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"3.5",y:"8.5",width:"2",height:"1.5",rx:"0.3",stroke:to,strokeWidth:"0.8"})]})}function tL({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5.5",cy:"8.5",r:"1.5",stroke:to,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 8.5h2.5M8.5 8.5v1.5",stroke:to,strokeWidth:"0.9",strokeLinecap:"round"})]})}function tM({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5",cy:"6.5",r:"1",stroke:to,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"9",cy:"6.5",r:"1",stroke:to,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"5",cy:"10",r:"1",stroke:to,strokeWidth:"0.85"}),(0,n.jsx)("path",{d:"M5 7.5V9",stroke:to,strokeWidth:"0.85",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M9 7.5v.5a2 2 0 0 1-2 2H6",stroke:to,strokeWidth:"0.85",strokeLinecap:"round",fill:"none"})]})}function tI({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,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:to,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M5.5 8.5V7.5a1.5 1.5 0 0 1 3 0v1",stroke:to,strokeWidth:"0.9",strokeLinecap:"round",fill:"none"})]})}function tR({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:to,strokeWidth:"0.9",fill:to,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:to,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"7",cy:"8.5",r:"1.3",stroke:to,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:to,strokeWidth:"0.8",strokeLinecap:"round"})]})}function tW(e,t=14){let r=e.toLowerCase(),i=r.split(".").pop()??"";if("dockerfile"===r||r.startsWith("dockerfile."))return(0,n.jsx)(tT,{size:t});if(".env"===r||r.startsWith(".env."))return(0,n.jsx)(tL,{size:t});if(".gitignore"===r||".gitattributes"===r||".gitmodules"===r)return(0,n.jsx)(tM,{size:t});if("package-lock.json"===r||"yarn.lock"===r||"bun.lock"===r||"pnpm-lock.yaml"===r||"cargo.lock"===r)return(0,n.jsx)(tI,{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)(tR,{size:t});switch(i){case"ts":return(0,n.jsx)(td,{size:t});case"tsx":return(0,n.jsx)(tc,{size:t});case"js":case"mjs":case"cjs":return(0,n.jsx)(tu,{size:t});case"jsx":return(0,n.jsx)(tp,{size:t});case"py":return(0,n.jsx)(th,{size:t});case"json":case"jsonl":return(0,n.jsx)(tx,{size:t});case"css":case"less":return(0,n.jsx)(tg,{size:t});case"scss":return(0,n.jsx)(tf,{size:t});case"html":case"htm":return(0,n.jsx)(tv,{size:t});case"md":case"mdx":return(0,n.jsx)(tm,{size:t});case"yaml":case"yml":return(0,n.jsx)(ty,{size:t});case"toml":return(0,n.jsx)(tb,{size:t});case"sh":case"bash":case"zsh":case"fish":return(0,n.jsx)(tj,{size:t});case"rs":return(0,n.jsx)(tk,{size:t});case"go":return(0,n.jsx)(tw,{size:t});case"sql":return(0,n.jsx)(tS,{size:t});case"graphql":case"gql":return(0,n.jsx)(tC,{size:t});case"tf":case"hcl":return(0,n.jsx)(tz,{size:t});case"lock":return(0,n.jsx)(tI,{size:t});default:return(0,n.jsx)(ts,{size:t})}}async function tE(e){let t=ed(e),r=await fetch(`/api/files/${t}?type=list`);return r.ok?((await r.json()).entries??[]).map(t=>{var r;return{name:t.name,fullPath:(r=t.name,`${ea(e).replace(/\/$/,"")}/${r}`),isDir:t.isDir,size:t.size,children:t.isDir?[]:void 0,loaded:!t.isDir}}):[]}function t$(e,t){let r=t.trim().toLowerCase();return!!(!r||e.name.toLowerCase().includes(r))||(e.children??[]).some(e=>t$(e,r))}function tB(e){return!!Array.from(e.types).includes("Files")||Array.from(e.items).some(e=>"file"===e.kind)}function tA(e){return Array.from(e.files).filter(e=>!!e.name)}function tP(e,t){return e===t?".":eu(e,t)}function tN({node:e,depth:t,cwd:r,onOpenFile:o,onAtMention:l,expandedPaths:s,onToggleExpanded:a,onUploadFiles:d,uploadTargetPath:c,refreshKey:u,searchQuery:p}){let h=!!p?.trim(),x=h?e.isDir:s.has(e.fullPath),[g,f]=(0,i.useState)(e.children??[]),[v,m]=(0,i.useState)(e.loaded??!1),[y,b]=(0,i.useState)(!1),[j,k]=(0,i.useState)(!1),[w,S]=(0,i.useState)(!1),C=e.isDir&&(w||c===e.fullPath),z=h?g.filter(e=>t$(e,p??"")):g,T=(0,i.useCallback)(async(t=!1)=>{if(!v||t){b(!0);try{let t=await tE(e.fullPath);f(t),m(!0)}catch{}finally{b(!1)}}},[v,e.fullPath]),L=(0,i.useRef)(v);(0,i.useEffect)(()=>{L.current=v}),(0,i.useEffect)(()=>{x&&v&&T(!0)},[u]);let M=(0,i.useCallback)(()=>{if(e.isDir){let t=!x;a(e.fullPath,t),t&&!v&&T()}else o(e.fullPath,e.name)},[e.isDir,e.fullPath,e.name,v,x,T,o,a]),I=(0,i.useCallback)(t=>{e.isDir&&tB(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy",S(!0))},[e.isDir]),R=(0,i.useCallback)(t=>{e.isDir&&tB(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy")},[e.isDir]),W=(0,i.useCallback)(t=>{if(!e.isDir)return;let r=t.relatedTarget;r instanceof Node&&t.currentTarget.contains(r)||S(!1)},[e.isDir]),E=(0,i.useCallback)(t=>{if(!e.isDir||!tB(t.dataTransfer))return;t.preventDefault(),t.stopPropagation(),S(!1);let r=tA(t.dataTransfer);r.length>0&&(d(r,e.fullPath),x||a(e.fullPath,!0),v||T())},[T,v,e.fullPath,e.isDir,a,d,x]);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{onClick:M,onMouseEnter:()=>k(!0),onMouseLeave:()=>k(!1),onDragEnter:I,onDragOver:R,onDragLeave:W,onDrop:E,style:{position:"relative",display:"flex",alignItems:"center",gap:4,paddingLeft:8+14*t,paddingRight:8,height:24,cursor:"pointer",background:C?"rgba(37,99,235,0.14)":j?"var(--bg-hover)":"transparent",outline:C?"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:x?"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)(tl,{size:14,open:x}):tW(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"})}),l&&j&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),l(eu(e.fullPath,r))},title:"Insert path into chat",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"center",gap:4,padding:"0 8px",height:20,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:4,color:"var(--accent)",cursor:"pointer",fontSize:11,fontWeight:600,whiteSpace:"nowrap"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,n.jsx)("path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"})]}),"mention"]})]}),e.isDir&&x&&(0,n.jsxs)("div",{children:[z.map(e=>(0,n.jsx)(tN,{node:e,depth:t+1,cwd:r,onOpenFile:o,onAtMention:l,expandedPaths:s,onToggleExpanded:a,onUploadFiles:d,uploadTargetPath:c,refreshKey:u,searchQuery:p},e.fullPath)),0===z.length&&v&&!h&&(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 tH({cwd:e,onOpenFile:t,refreshKey:r,onAtMention:o,searchQuery:l="",onSearchChange:s}){let[a,d]=(0,i.useState)([]),[c,u]=(0,i.useState)(!0),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(new Set),[f,v]=(0,i.useState)(!1),[m,y]=(0,i.useState)(null),[b,j]=(0,i.useState)(null),k=(0,i.useRef)(null),w=(0,i.useRef)(null),S=(0,i.useRef)(0),C=(0,i.useCallback)((e,t)=>(u(t),h(null),tE(e).then(e=>d(e)).catch(e=>h(String(e))).finally(()=>u(!1))),[]),z=(0,i.useCallback)((e,t)=>{g(r=>{let n=new Set(r);return t?n.add(e):n.delete(e),n})},[]);(0,i.useEffect)(()=>{let t=k.current!==e;k.current=e,t&&g(new Set),C(e,t)},[e,r,C]),(0,i.useEffect)(()=>()=>{w.current&&clearTimeout(w.current)},[]);let T=(0,i.useCallback)(()=>{C(e,0===a.length)},[e,a.length,C]),L=(0,i.useCallback)(()=>{w.current&&clearTimeout(w.current),w.current=setTimeout(()=>j(null),5e3)},[]),M=(0,i.useCallback)((t,r)=>{if(0===t.length)return;S.current=0,v(!1),w.current&&clearTimeout(w.current);let n=t.reduce((e,t)=>e+t.size,0),i=tP(r,e);y(r),j({phase:"uploading",targetPath:r,fileCount:t.length,loaded:0,total:n,message:`Uploading ${t.length} file${1===t.length?"":"s"} to ${i}`});let o=new FormData;t.forEach(e=>o.append("files",e,e.name));let l=new XMLHttpRequest,s=ed(r);l.open("POST",`/api/files/${s}?type=upload`),l.upload.onprogress=e=>{e.lengthComputable&&j(t=>t?{...t,loaded:e.loaded,total:e.total}:t)},l.onload=()=>{y(null);let e={};try{e=JSON.parse(l.responseText)}catch{e={}}if(l.status>=200&&l.status<300){let 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}`)];j({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}),T(),L()}else{let i=e.error??`Upload failed (HTTP ${l.status})`;j({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}),L()}},l.onerror=()=>{y(null),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload failed due to a network error"}),L()},l.onabort=()=>{y(null),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload canceled"}),L()},l.send(o)},[e,T,L]),I=(0,i.useCallback)(e=>{tB(e.dataTransfer)&&(e.preventDefault(),S.current+=1,v(!0))},[]),R=(0,i.useCallback)(e=>{tB(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},[]),W=(0,i.useCallback)(()=>{S.current-=1,S.current<=0&&(S.current=0,v(!1))},[]),E=(0,i.useCallback)(t=>{if(!tB(t.dataTransfer))return;t.preventDefault(),S.current=0,v(!1);let r=tA(t.dataTransfer);r.length>0&&M(r,e)},[e,M]),$=l.trim()?a.filter(e=>t$(e,l)):a,B=l.trim().length>0;return c?(0,n.jsx)(tD,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:I,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:"Loading files..."})}):p?(0,n.jsx)(tD,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:I,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"#f87171"},children:p})}):(0,n.jsx)(tD,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:I,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsxs)("div",{style:{padding:"2px 4px"},children:[$.map(i=>(0,n.jsx)(tN,{node:i,depth:0,cwd:e,onOpenFile:t,onAtMention:o,expandedPaths:x,onToggleExpanded:z,onUploadFiles:M,uploadTargetPath:m,refreshKey:r,searchQuery:l},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 tD({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",minHeight:"100%",outline:t?"1px solid rgba(37,99,235,0.45)":"none",outlineOffset:-1,background:t?"rgba(37,99,235,0.04)":void 0,transition:"background 0.12s, outline-color 0.12s"},children:[(0,n.jsx)("div",{style:{flex:1,minHeight:0},children:a}),t&&(0,n.jsx)("div",{style:{pointerEvents:"none",position:"absolute",inset:6,top:42,border:"1px dashed rgba(37,99,235,0.62)",borderRadius:8,background:"rgba(37,99,235,0.07)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontSize:12,boxShadow:"0 8px 24px rgba(0,0,0,0.16)"},children:[(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,n.jsx)("polyline",{points:"17 8 12 3 7 8"}),(0,n.jsx)("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),"Drop to upload into ",tP(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({fileName:e,pageInfo:t,onZoomIn:r,onZoomOut:i,zoom:o,extra:l}){return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0,minHeight:32},children:[e&&(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:300},title:e,children:e}),(0,n.jsx)("span",{style:{marginLeft:"auto"}}),t&&(0,n.jsx)("span",{children:t}),void 0!==o&&i&&r&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:i,title:"Zoom out",style:tF,children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})})}),(0,n.jsxs)("span",{style:{minWidth:36,textAlign:"center",fontVariantNumeric:"tabular-nums"},children:[Math.round(100*o),"%"]}),(0,n.jsx)("button",{onClick:r,title:"Zoom in",style:tF,children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"2",x2:"5",y2:"8"}),(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})]})})]}),l]})}let tF={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"},t_=null;function tU({arrayBuffer:e,fileName:t}){let o=(0,i.useRef)(null),[l,s]=(0,i.useState)(!0),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(0),[p,h]=(0,i.useState)(1),[x,g]=(0,i.useState)(1),f=(0,i.useRef)(x);f.current=x;let v=(0,i.useRef)(null),m=(0,i.useRef)(null),y=(0,i.useCallback)(async e=>{if(!t_||!v.current)return;let t=v.current;if(!(e<1)&&!(e>t.numPages)){m.current&&(m.current.cancel(),m.current=null);try{let r=await t.getPage(e),n=r.getViewport({scale:f.current*(window.devicePixelRatio||1)}),i=o.current;if(!i)return;let l=i.querySelector("canvas");if(l||((l=document.createElement("canvas")).style.display="block",l.style.margin="0 auto",i.innerHTML="",i.appendChild(l)),l.width=n.width,l.height=n.height,l.style.width=`${n.width/(window.devicePixelRatio||1)}px`,l.style.height=`${n.height/(window.devicePixelRatio||1)}px`,!l.getContext("2d"))return;let s=r.render({canvas:l,viewport:n});m.current=s,await s.promise,m.current=null}catch(e){"RenderingCancelledException"!==e.name&&console.error("PDF render error:",e)}}},[]);return(0,i.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{t_||((t_=await Promise.all([r.e(2213),r.e(2619)]).then(r.bind(r,12810))).GlobalWorkerOptions.workerSrc=new r.U(r(53228)).toString());let n=await t_.getDocument({data:e}).promise;if(t)return;v.current=n,u(n.numPages),h(1),s(!1)}catch(e){t||(d(String(e)),s(!1))}}(),()=>{t=!0,m.current&&(m.current.cancel(),m.current=null)}},[e]),(0,i.useEffect)(()=>{!l&&c>0&&y(p)},[l,p,c,y]),(0,i.useEffect)(()=>{!l&&c>0&&y(p)},[x]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tO,{fileName:t,pageInfo:c>0?`Page ${p} / ${c}`:void 0,zoom:x,onZoomIn:()=>g(e=>Math.min(e+.25,3)),onZoomOut:()=>g(e=>Math.max(e-.25,.25)),extra:c>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>h(e=>Math.max(e-1,1)),disabled:p<=1,style:{...tV,opacity:p<=1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[p,"/",c]}),(0,n.jsx)("button",{onClick:()=>h(e=>Math.min(e+1,c)),disabled:p>=c,style:{...tV,opacity:p>=c?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#525659",display:"flex",justifyContent:"center",padding:16},children:[l&&(0,n.jsx)("div",{style:{color:"#ccc",fontSize:13,display:"flex",alignItems:"center",gap:6,alignSelf:"flex-start",marginTop:40},children:"Loading PDF..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,alignSelf:"flex-start",marginTop:40},children:a}),(0,n.jsx)("div",{ref:o,style:{visibility:l?"hidden":"visible"}})]})]})}let tV={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};function tq({arrayBuffer:e,fileName:t}){let o=(0,i.useRef)(null),[l,s]=(0,i.useState)(!0),[a,d]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{let{renderAsync:n}=await Promise.all([r.e(2619),r.e(4453),r.e(2274)]).then(r.bind(r,52274)),i=o.current;if(!i||t)return;i.innerHTML="",await n(e,i,void 0,{className:"docx-preview",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!1,ignoreFonts:!1,breakPages:!0,ignoreLastRenderedPageBreak:!1,experimental:!1,trimXmlDeclaration:!0,useBase64URL:!1,renderChanges:!1,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0}),t||s(!1)}catch(e){t||(console.error("DOCX render error:",e),d(String(e)),s(!1))}}(),()=>{t=!0}},[e]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tO,{fileName:t}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#e8e8e8",padding:"24px 0"},children:[l&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading document..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:a}),(0,n.jsx)("div",{ref:o,style:{maxWidth:816,margin:"0 auto",background:"#fff",boxShadow:"0 1px 4px rgba(0,0,0,0.12)",minHeight:100,visibility:l?"hidden":"visible"},className:"docx-preview-container"})]})]})}function tK({arrayBuffer:e,fileName:t}){let[o,l]=(0,i.useState)(!0),[s,a]=(0,i.useState)(null),[d,c]=(0,i.useState)([]),[u,p]=(0,i.useState)(0),h=(0,i.useRef)(null),[x,g]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=await Promise.all([r.e(3524),r.e(8436)]).then(r.bind(r,15967)),i=n.read(e,{type:"array"}),o=i.SheetNames.map(e=>{let t=i.Sheets[e],r=n.utils.sheet_to_html(t,{editable:!1});return{name:e,html:r}});t||(c(o),p(0),l(!1))}catch(e){t||(console.error("XLSX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]),(0,i.useEffect)(()=>{let e=h.current;if(!e)return;let t=e.querySelector("table");if(!t)return;let r=()=>{g(t.querySelectorAll("colgroup col, thead tr:first-child th, tbody tr:first-child td").length>8)};r();let n=new ResizeObserver(r);return n.observe(e),()=>n.disconnect()},[u,d]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tO,{fileName:t,extra:d.length>1&&(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:2},children:d.map((e,t)=>(0,n.jsx)("button",{onClick:()=>p(t),style:{padding:"2px 10px",fontSize:11,border:"1px solid var(--border)",borderBottom:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:"4px 4px 0 0",background:t===u?"var(--bg-selected)":"none",color:t===u?"var(--text)":"var(--text-muted)",cursor:"pointer",fontWeight:t===u?600:400,transition:"background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="none")},children:e.name},t))})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)"},children:[o&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading spreadsheet..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!o&&!s&&d.length>0&&(0,n.jsx)("div",{ref:h,style:{padding:"0 16px 16px",overflow:x?"auto":"visible"},dangerouslySetInnerHTML:{__html:d[u]?.html??""},className:"xlsx-preview"})]})]})}function tJ({arrayBuffer:e,fileName:t}){let[o,l]=(0,i.useState)(!0),[s,a]=(0,i.useState)(null),[d,c]=(0,i.useState)([]),[u,p]=(0,i.useState)(0);(0,i.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=(await Promise.all([r.e(2619),r.e(4453)]).then(r.t.bind(r,54453,23))).default,i=await n.loadAsync(e),o=[];i.forEach(e=>{let t=/^ppt\/slides\/slide(\d+)\.xml$/i.exec(e);t&&o.push({name:e,index:parseInt(t[1],10)})}),o.sort((e,t)=>e.index-t.index);let s=[];for(let e of o){let r;if(t)return;let n=await i.file(e.name).async("string"),o=/<a:t[^>]*>([^<]*)<\/a:t>/g,l=[];for(;null!==(r=o.exec(n));){let e=r[1].trim();e&&l.push(e)}s.push({index:e.index,texts:l})}t||(c(s),l(!1))}catch(e){t||(console.error("PPTX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]);let h=d[u],x=d.length;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tO,{fileName:t,pageInfo:x>0?`Slide ${u+1} / ${x}`:void 0,extra:x>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>p(e=>Math.max(e-1,0)),disabled:u<=0,style:{...tZ,opacity:u<=0?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[u+1,"/",x]}),(0,n.jsx)("button",{onClick:()=>p(e=>Math.min(e+1,x-1)),disabled:u>=x-1,style:{...tZ,opacity:u>=x-1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",display:"flex",justifyContent:"center",alignItems:"flex-start",padding:24},children:[o&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading presentation..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!o&&!s&&h&&(0,n.jsxs)("div",{style:{width:"100%",maxWidth:800},children:[(0,n.jsxs)("div",{style:{background:"#fff",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"8px 16px",background:"var(--bg)",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:["Slide ",h.index]}),(0,n.jsx)("div",{style:{padding:"24px 32px 40px",minHeight:200},children:0===h.texts.length?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontStyle:"italic",fontSize:13},children:"(No text content)"}):(0,n.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none"},children:h.texts.map((e,t)=>(0,n.jsx)("li",{style:{padding:"4px 0",fontSize:14,lineHeight:1.6,color:"var(--text)",borderBottom:t<h.texts.length-1?"1px solid var(--bg-panel)":"none"},children:e},t))})})]}),x>1&&(0,n.jsxs)("div",{style:{marginTop:24},children:[(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",marginBottom:8},children:"All slides"}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:8},children:d.map((e,t)=>(0,n.jsxs)("button",{onClick:()=>p(t),style:{padding:"10px 12px",background:t===u?"var(--bg-selected)":"var(--bg)",border:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:6,cursor:"pointer",textAlign:"left",fontSize:11,color:"var(--text-muted)",transition:"border-color 0.12s, background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="var(--bg)")},children:[(0,n.jsxs)("div",{style:{fontWeight:600,marginBottom:2,color:"var(--text)"},children:["Slide ",e.index]}),(0,n.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.texts[0]||"(empty)"})]},e.index))})]})]})]})]})}let tZ={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};var tY=r(27071),tG=r(89561),tX=r(82228),tQ=r(46732),t0=r(74059),t1=r(13307),t2=r(53689),t4=r(14097),t5=r(25460),t3=r(20144),t6=r(82774),t8=r(62733),t7=r(77482),t9=r(55135),re=r(11209),rt=r(88198),rr=r(4238),rn=r(44542);function ri({initialContent:e,language:t,isDark:r,onChange:o,onSave:l}){let s=(0,i.useRef)(null),a=(0,i.useRef)(null),d=(0,i.useRef)(o),c=(0,i.useRef)(l);return d.current=o,c.current=l,(0,i.useEffect)(()=>{let n=s.current;if(!n)return;let i=function(e){switch(e){case"javascript":case"typescript":return(0,t1.Q2)({typescript:"typescript"===e});case"python":return(0,t2.Hg)();case"sql":return(0,t4.ll)();case"json":return(0,t5.Pq)();case"html":return(0,t3.qy)();case"css":case"scss":case"less":return(0,t6.AH)();case"markdown":return(0,t8.wD)();case"xml":case"yaml":case"toml":return(0,t7._n)();case"rust":return(0,t9.T)();case"go":return(0,re.go)();case"java":return(0,rt.J)();default:return null}}(t),o=l?tG.w4.of([{key:"Mod-s",run:()=>(c.current?.(),!0),preventDefault:!0}]):[],u=tY.$t.create({doc:e,extensions:[(0,tG.$K)(),(0,tG.dz)(),(0,tX.b6)(),(0,tQ.y9)(tQ.Zt),tG.w4.of([...tX.pw,...tX.cL,...rn.OO,...rr.Eo]),o,(0,rn.yU)(),...r?[t0.bM]:[],...i?[i]:[],tG.Lz.updateListener.of(e=>{e.docChanged&&d.current?.(e.state.doc.toString())}),tG.Lz.theme({"&":{height:"100%",fontSize:"13px"},".cm-scroller":{overflow:"auto",fontFamily:"var(--font-mono)"},".cm-content":{padding:"8px 0"},".cm-gutters":{borderRight:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-dim)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground":{background:r?"#3a3d4e":"#b4d5fe"}})]}),p=new tG.Lz({state:u,parent:n});return a.current=p,()=>{p.destroy(),a.current=null}},[t,r]),(0,i.useEffect)(()=>{let t=a.current;t&&t.state.doc.toString()!==e&&t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}})},[e]),(0,n.jsx)("div",{ref:s,style:{height:"100%",overflow:"hidden"}})}function ro({dir:e}){return(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:"asc"===e?(0,n.jsx)("polyline",{points:"2 6 5 3 8 6"}):(0,n.jsx)("polyline",{points:"2 4 5 7 8 4"})})}function rl(e,t,r){let n=new Blob([e],{type:r}),i=URL.createObjectURL(n),o=document.createElement("a");o.href=i,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),setTimeout(()=>URL.revokeObjectURL(i),1e3)}function rs({content:e,delimiter:t,fileName:r="table"}){let[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)("asc"),{header:d,rows:c}=(0,i.useMemo)(()=>(function(e,t){let r=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),n=[],i=[],o="",l=!1;for(let e=0;e<r.length;e+=1){let s=r[e];if('"'===s){l&&'"'===r[e+1]?(o+='"',e+=1):l=!l;continue}if(s===t&&!l){i.push(o),o="";continue}if("\n"===s&&!l){i.push(o),i.some(e=>e.length>0)&&n.push(i),i=[],o="";continue}o+=s}i.push(o),i.some(e=>e.length>0)&&n.push(i);let s=n[0]??[],a=s.length;return{header:s,rows:n.slice(1).map(e=>{let t=[...e];for(;t.length<a;)t.push("");return t.slice(0,a)})}})(e,t),[e,t]),u=(0,i.useMemo)(()=>{if(null===o)return c;let e=[...c];return e.sort((e,t)=>{let r=e[o]??"",n=t[o]??"",i=Number(r),l=Number(n),a=""===r||""===n||Number.isNaN(i)||Number.isNaN(l)?r.localeCompare(n):i-l;return"asc"===s?a:-a}),e},[c,s,o]);return 0===d.length&&0===c.length?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"No tabular data to display"}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--text-dim)"},children:[c.length," rows, ",d.length," columns"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsxs)("button",{onClick:()=>{rl(e,r," "===t?"text/tab-separated-values;charset=utf-8":"text/csv;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:["Export "," "===t?"TSV":"CSV"]}),(0,n.jsx)("button",{onClick:()=>{rl(JSON.stringify(u.map(e=>Object.fromEntries(d.map((t,r)=>[t||`column_${r+1}`,e[r]??""]))),null,2),r.replace(/\.[^.]+$/,"")+".json","application/json;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:"Export JSON"})]})]}),(0,n.jsx)("div",{style:{minHeight:0,flex:1,overflow:"auto",background:"var(--bg)"},children:(0,n.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",tableLayout:"fixed",fontSize:12},children:[(0,n.jsx)("thead",{style:{position:"sticky",top:0,zIndex:1,background:"var(--bg-panel)"},children:(0,n.jsx)("tr",{children:d.map((e,t)=>(0,n.jsx)("th",{onClick:()=>{o===t?a(e=>"asc"===e?"desc":"asc"):(l(t),a("asc"))},title:e,style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",textAlign:"left",color:"var(--text-muted)",fontWeight:600,cursor:"pointer",userSelect:"none",fontSize:11,whiteSpace:"nowrap"},children:(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:e||`column_${t+1}`}),o===t&&(0,n.jsx)("span",{style:{color:"var(--accent)",display:"inline-flex",flexShrink:0},children:(0,n.jsx)(ro,{dir:s})})]})},`${e}-${t}`))})}),(0,n.jsx)("tbody",{children:u.map((e,t)=>(0,n.jsx)("tr",{style:{borderBottom:"1px solid rgba(127,127,127,0.14)",background:t%2==1?"var(--bg-subtle)":"transparent"},children:d.map((r,i)=>(0,n.jsx)("td",{title:e[i]??"",style:{padding:"6px 10px",color:"var(--text)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:0},children:e[i]??""},`${r}-${t}-${i}`))},t))})]})})]})}let ra=new Set(["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]),rd=new Set(["mp3","wav","ogg","oga","opus","m4a","aac","flac","weba","webm"]),rc=new Set(["pdf","docx","xlsx","pptx","doc","xls","ppt"]);function ru(e){let t=ec(e).toLowerCase().split(".").pop()??"";return"csv"===t?",":"tsv"===t?" ":null}function rp(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function rh({oldContent:e,newContent:t}){let r=function(e,t){let r=e.length,n=t.length,i=r+n,o=Array(2*i+1).fill(0),l=[];for(let s=0;s<=i;s++){l.push([...o]);for(let a=-s;a<=s;a+=2){let d,c=(d=a===-s||a!==s&&o[a-1+i]<o[a+1+i]?o[a+1+i]:o[a-1+i]+1)-a;for(;d<r&&c<n&&e[d]===t[c];)d++,c++;if(o[a+i]=d,d>=r&&c>=n){let o=[],a=r,d=n;for(let r=s;r>0;r--){let n,s=l[r-1],c=a-d;n=c===-r||c!==r&&s[c-1+i]<s[c+1+i]?c+1:c-1;let u=s[n+i],p=u-n;for(;a>u&&d>p;)a--,d--,o.unshift({type:"unchanged",text:e[a],lineNo:a+1});r>0&&(a>u?(a--,o.unshift({type:"removed",text:e[a],lineNo:a+1})):(d--,o.unshift({type:"added",text:t[d],lineNo:d+1})))}for(;a>0&&d>0;)a--,d--,o.unshift({type:"unchanged",text:e[a],lineNo:a+1});return o}}}return[...e.map((e,t)=>({type:"removed",text:e,lineNo:t+1})),...t.map((e,t)=>({type:"added",text:e,lineNo:t+1}))]}(e.split("\n"),t.split("\n"));if(!r.some(e=>"unchanged"!==e.type))return(0,n.jsx)("div",{style:{padding:"12px 16px",fontSize:12,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:"No changes"});let i=new Set(r.flatMap((e,t)=>"unchanged"!==e.type?[t]:[])),o=new Set;for(let e of i)for(let t=Math.max(0,e-3);t<=Math.min(r.length-1,e+3);t++)o.add(t);let l=[],s=0;for(;s<r.length;)if(o.has(s)){let e=[];for(;s<r.length&&o.has(s);)e.push(r[s]),s++;l.push({hidden:!1,lines:e})}else{let e=0;for(;s<r.length&&!o.has(s);)e++,s++;l.push({hidden:!0,count:e})}let a=[],d=1;for(let e of r)"removed"===e.type?a.push(0):a.push(d++);let c=0;return(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6},children:l.map((e,t)=>{if(e.hidden){let r=(0,n.jsxs)("div",{style:{padding:"2px 16px",color:"var(--text-dim)",background:"var(--bg-panel)",fontSize:11,borderTop:"1px solid var(--border)",borderBottom:"1px solid var(--border)"},children:["... ",e.count," unchanged lines ..."]},t);return c+=e.count,r}let r=e.lines.map((e,t)=>{let r=a[c+t],i="added"===e.type?"rgba(0,200,80,0.12)":"removed"===e.type?"rgba(240,60,60,0.14)":"transparent",o="added"===e.type?"+":"removed"===e.type?"-":" ",l="added"===e.type?"#4ade80":"removed"===e.type?"#f87171":"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:i,borderLeft:"added"===e.type?"3px solid #4ade80":"removed"===e.type?"3px solid #f87171":"3px solid transparent"},children:[(0,n.jsx)("span",{style:{minWidth:44,padding:"0 8px 0 16px",textAlign:"right",color:"var(--text-dim)",userSelect:"none",fontSize:11,lineHeight:1.6,borderRight:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:"removed"===e.type?e.lineNo:r||""}),(0,n.jsx)("span",{style:{minWidth:16,padding:"0 6px",color:l,userSelect:"none",flexShrink:0,fontWeight:600},children:o}),(0,n.jsx)("span",{style:{flex:1,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)",overflowX:"auto"},children:e.text||"\xa0"})]},t)});return c+=e.lines.length,(0,n.jsx)("div",{children:r},t)})})}function rx({filePath:e,cwd:t}){let[r,o]=(0,i.useState)(!1),[l,s]=(0,i.useState)(0),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(100),f=(0,i.useRef)(null),v=ec(e).toLowerCase().split(".").pop()??"";(0,i.useEffect)(()=>{s(0),d(null),u(null),h(null),o(!1),g(100),f.current&&(f.current.close(),f.current=null);let t=ed(e),r=new EventSource(`/api/files/${t}?type=watch`);return f.current=r,r.addEventListener("connected",()=>o(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}s(e=>e+1)}),r.addEventListener("error",()=>o(!1)),r.onerror=()=>o(!1),()=>{r.close(),f.current=null}},[e]);let m=ed(e),y=`/api/files/${m}?type=read${l?`&v=${l}`:""}`,b=null!=a?rp(a):null,j=e=>g(Math.max(10,Math.min(500,e)));return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},title:e,children:eu(e,t)}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:[(0,n.jsx)("button",{onClick:()=>j(x-25),title:"Zoom out",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"-"}),(0,n.jsx)("select",{value:x,onChange:e=>j(Number(e.target.value)),title:"Image zoom",style:{height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)",fontSize:11,fontFamily:"var(--font-mono)",outline:"none",cursor:"pointer"},children:[25,50,75,100,125,150,200,300].map(e=>(0,n.jsxs)("option",{value:e,children:[e,"%"]},e))}),(0,n.jsx)("button",{onClick:()=>j(x+25),title:"Zoom in",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"+"})]}),(0,n.jsx)("span",{style:{flexShrink:0},children:v||"image"}),c&&(0,n.jsxs)("span",{children:[c.w," \xd7 ",c.h]}),b&&(0,n.jsx)("span",{children:b}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",WebkitOverflowScrolling:"touch",overscrollBehavior:"contain",backgroundImage:"linear-gradient(45deg, var(--bg) 25%, transparent 25%), linear-gradient(-45deg, var(--bg) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--bg) 75%), linear-gradient(-45deg, transparent 75%, var(--bg) 75%)",backgroundSize:"16px 16px",backgroundPosition:"0 0, 0 8px, 8px -8px, -8px 0px"},children:p?(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p}):(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",width:"max-content",height:"max-content",boxSizing:"border-box",display:"flex",alignItems:"flex-start",justifyContent:"flex-start",padding:16},children:(0,n.jsx)("img",{src:y,alt:e,onLoad:e=>{let t=e.currentTarget;u({w:t.naturalWidth,h:t.naturalHeight})},onError:()=>h("Failed to load image"),style:{width:c?Math.max(1,Math.round(c.w*x/100)):"auto",height:c?Math.max(1,Math.round(c.h*x/100)):"auto",maxWidth:"none",maxHeight:"none",objectFit:"contain",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})})})]})}function rg({filePath:e,cwd:t}){let[r,o]=(0,i.useState)(!1),[l,s]=(0,i.useState)(0),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),x=(0,i.useRef)(null),g=ec(e).toLowerCase().split(".").pop()??"";(0,i.useEffect)(()=>{s(0),d(null),u(null),h(null),o(!1),x.current&&(x.current.close(),x.current=null);let t=ed(e),r=new EventSource(`/api/files/${t}?type=watch`);return x.current=r,r.addEventListener("connected",()=>o(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}u(null),h(null),s(e=>e+1)}),r.addEventListener("error",()=>o(!1)),r.onerror=()=>o(!1),()=>{r.close(),x.current=null}},[e]);let f=ed(e),v=`/api/files/${f}?type=read${l?`&v=${l}`:""}`;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:eu(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:g||"audio"}),null!=c&&(0,n.jsx)("span",{children:function(e){if(!Number.isFinite(e))return"";let t=Math.round(e),r=Math.floor(t/60);return`${r}:${String(t%60).padStart(2,"0")}`}(c)}),null!=a&&(0,n.jsx)("span",{children:rp(a)}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"var(--bg-panel)"},children:(0,n.jsxs)("div",{style:{width:"min(680px, 100%)"},children:[p&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,marginBottom:12,textAlign:"center"},children:p}),(0,n.jsx)("audio",{controls:!0,preload:"metadata",src:v,onLoadedMetadata:e=>u(e.currentTarget.duration),onError:()=>h("Failed to load audio"),style:{width:"100%"}},v)]})})]})}function rf({filePath:e,cwd:t,onOpenFile:r}){let i,o,l;return(i=ec(e).toLowerCase().split(".").pop()??"",ra.has(i))?(0,n.jsx)(rx,{filePath:e,cwd:t}):(o=ec(e).toLowerCase().split(".").pop()??"",rd.has(o))?(0,n.jsx)(rg,{filePath:e,cwd:t}):(l=ec(e).toLowerCase().split(".").pop()??"",rc.has(l))?(0,n.jsx)(rv,{filePath:e,cwd:t}):(0,n.jsx)(rm,{filePath:e,cwd:t,onOpenFile:r})}function rv({filePath:e,cwd:t}){let r,[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),u=(0,i.useRef)(null),p=(0,i.useRef)(0),h="pdf"===(r=ec(e).toLowerCase().split(".").pop()??"")?"pdf":"docx"===r||"doc"===r?"docx":"xlsx"===r||"xls"===r?"xlsx":"pptx"===r||"ppt"===r?"pptx":"other",x=ec(e).toLowerCase().split(".").pop()??"",g=(0,i.useCallback)(async e=>{try{let t=ed(e),r=p.current?`&v=${p.current}`:"",n=await fetch(`/api/files/${t}?type=read${r}`);if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));c(e.error??`HTTP ${n.status}`);return}let i=await n.arrayBuffer();l(i),c(null)}catch(e){c(String(e))}},[]);if((0,i.useEffect)(()=>{a(!0),c(null),l(null),p.current=0,u.current&&(u.current.close(),u.current=null),g(e).finally(()=>a(!1));let t=ed(e),r=new EventSource(`/api/files/${t}?type=watch`);return u.current=r,r.addEventListener("connected",()=>{}),r.addEventListener("change",()=>{p.current+=1,g(e)}),r.addEventListener("error",()=>{}),r.onerror=()=>{},()=>{r.close(),u.current=null}},[e,g]),s&&!o)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(d&&!o)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:d});if(!o)return null;let f=eu(e,t);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:["pdf"===h&&(0,n.jsx)(tU,{arrayBuffer:o,fileName:f}),"docx"===h&&(0,n.jsx)(tq,{arrayBuffer:o,fileName:f}),"xlsx"===h&&(0,n.jsx)(tK,{arrayBuffer:o,fileName:f}),"pptx"===h&&(0,n.jsx)(tJ,{arrayBuffer:o,fileName:f}),"other"===h&&(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:["Unsupported document format: .",x]})]})}function rm({filePath:e,cwd:t,onOpenFile:r}){let{isDark:o}=R(),[l,s]=(0,i.useState)(null),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(!0),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(null),[f,v]=(0,i.useState)(!1),[m,y]=(0,i.useState)("source"),[b,j]=(0,i.useState)(!1),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(0),[z,T]=(0,i.useState)(!1),[L,M]=(0,i.useState)(""),[I,W]=(0,i.useState)(!1),[E,$]=(0,i.useState)(!1),[B,A]=(0,i.useState)(!1),[P,N]=(0,i.useState)(null),H=(0,i.useRef)(null),D=(0,i.useRef)(!1);D.current=z,(0,i.useRef)(null).current=l;let O=(0,i.useCallback)((e,t=!1)=>{let r=ed(e);return fetch(`/api/files/${r}?type=read`).then(e=>e.json()).then(e=>e.error?(h(e.error),null):(t?(s(t=>(t&&d(t.content),e)),C(e=>e+1)):s(e),h(null),e)).catch(e=>(h(String(e)),null))},[]);(0,i.useEffect)(()=>{u(!0),h(null),s(null),d(null),v(!1),y("source"),j(!1),C(0),w(!1),H.current&&(H.current.close(),H.current=null),O(e).then(t=>{(t?.language==="markdown"||ru(e))&&v(!0)}).finally(()=>u(!1));let t=ed(e),r=new EventSource(`/api/files/${t}?type=watch`);return H.current=r,r.addEventListener("connected",()=>{w(!0)}),r.addEventListener("change",()=>{D.current?$(!0):O(e,!0)}),r.addEventListener("error",()=>{w(!1)}),r.onerror=()=>{w(!1)},()=>{r.close(),H.current=null}},[e,O]);let F=(0,i.useCallback)(()=>{l&&(T(!0),M(l.content),N(l.mtime??null),A(!1),g(null),$(!1),v(!1),y("source"))},[l]),_=(0,i.useCallback)(async(t=!1)=>{let r=ed(e);W(!0),A(!1),g(null);try{let n=await fetch(`/api/files/${r}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:L,...t||!P?{}:{baseMtime:P}})});if(409===n.status){let e=await n.json().catch(()=>({error:"File changed on disk since it was opened"}));throw A(!0),$(!0),Error(e.error??"File changed on disk since it was opened")}if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));throw Error(e.error??`HTTP ${n.status}`)}let i=await O(e,!0);N(i?.mtime??null),T(!1),$(!1),A(!1)}catch(e){g(e instanceof Error?e.message:String(e))}finally{W(!1)}},[e,L,P,O]),U=(0,i.useCallback)(()=>{T(!1),$(!1),A(!1),g(null),N(null)},[]),V=(0,i.useCallback)(async()=>{let t=await O(e,!0);t&&(M(t.content),N(t.mtime??null),$(!1),A(!1),g(null),h(null))},[O,e]);if(c)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(p)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p});if(!l)return null;let q="html"===l.language,K="markdown"===l.language,J=ru(e),Z=null!==J,Y=l.content.split("\n"),G=null!==a&&a!==l.content;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:eu(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:l.language}),"source"===m&&(0,n.jsxs)("span",{children:[Y.length," lines"]}),(0,n.jsx)("span",{children:rp(l.size)}),(0,n.jsxs)("span",{title:k?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:k?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:k?"#4ade80":"var(--border)",display:"inline-block",boxShadow:k?"0 0 4px #4ade80":"none"}}),k?"live":"static"]}),z?(0,n.jsxs)(n.Fragment,{children:[(E||B||x)&&(0,n.jsxs)("span",{title:"File changed on disk while editing",style:{padding:"2px 8px",fontSize:11,background:"rgba(234,179,8,0.1)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:5,display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,n.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),x??"External change",(E||B)&&(0,n.jsx)("button",{onClick:V,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:"pointer",background:"rgba(234,179,8,0.2)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:3,fontWeight:600},children:"Reload"}),B&&(0,n.jsx)("button",{onClick:()=>void _(!0),disabled:I,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:I?"not-allowed":"pointer",background:"rgba(239,68,68,0.12)",color:"#ef4444",border:"1px solid rgba(239,68,68,0.3)",borderRadius:3,fontWeight:600},children:"Overwrite"})]}),(0,n.jsx)("button",{onClick:()=>void _(),disabled:I,title:"Save file (Ctrl+S)",style:{padding:"2px 10px",fontSize:11,cursor:I?"not-allowed":"pointer",background:"var(--accent)",color:"#fff",border:"1px solid var(--accent)",borderRadius:5,fontWeight:600,opacity:I?.6:1},children:I?"Saving…":"Save"}),(0,n.jsx)("button",{onClick:U,title:"Cancel editing",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.1)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.3)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Cancel"})]}):(0,n.jsx)("button",{onClick:F,title:"Edit file",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="var(--accent)",e.currentTarget.style.color="#fff",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Edit"}),G&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>y("source"),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:"source"===m?"var(--bg-selected)":"var(--bg-hover)",color:"source"===m?"var(--text)":"var(--text-muted)",fontWeight:"source"===m?600:400},children:"Source"}),(0,n.jsxs)("button",{onClick:()=>y("diff"),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:"diff"===m?"var(--bg-selected)":"var(--bg-hover)",color:"diff"===m?"var(--text)":"var(--text-muted)",fontWeight:"diff"===m?600:400},children:["Diff ",S>0&&(0,n.jsxs)("span",{style:{color:"#4ade80",marginLeft:2},children:["+",S]})]})]}),"source"===m&&!f&&(0,n.jsx)("button",{onClick:()=>j(e=>!e),title:b?"Disable word wrap":"Enable word wrap",style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:b?"var(--bg-selected)":"var(--bg-hover)",color:b?"var(--text)":"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:b?600:400},children:"wrap"}),q&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Code"}),(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"})]}),K&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:z?"Edit":"Raw"})]}),Z&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Table"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Raw"})]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg)"},children:z&&!(K&&f)?(0,n.jsx)(ri,{initialContent:L,language:l.language,isDark:o,onChange:M,onSave:()=>void _()}):z&&K&&f?(0,n.jsx)(ev,{content:L,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):"diff"===m&&G?(0,n.jsx)(rh,{oldContent:a,newContent:l.content,language:l.language}):q&&f?(0,n.jsx)("iframe",{srcDoc:l.content,sandbox:"allow-scripts",style:{width:"100%",height:"100%",border:"none",background:"var(--bg)"},title:"HTML preview"}):K&&f?(0,n.jsx)(ev,{content:l.content,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):Z&&f&&J?(0,n.jsx)(rs,{content:l.content,delimiter:J,fileName:ec(e)}):(0,n.jsx)(er.A,{language:"text"===l.language||"csv"===l.language||"tsv"===l.language?"plaintext":l.language,style:es(o),showLineNumbers:!0,lineNumberStyle:{color:"var(--text-dim)",fontStyle:"normal",minWidth:"3em",paddingRight:"1em"},customStyle:{margin:0,padding:"12px 0",background:"var(--bg)",fontSize:13,lineHeight:1.6,fontFamily:"var(--font-mono)",minHeight:"100%"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},wrapLongLines:b,children:l.content})})]})}function ry(e,t,r){return Math.min(Math.max(e,t),r)}function rb({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),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:ry(e.left,8,Math.max(8,window.innerWidth-n-8)),top:ry(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),y.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=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:ry(r,8,Math.max(8,window.innerWidth-120)),top:ry(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||p.maximized||(t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture(t.pointerId),b.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]),z=(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:ry(r,360,Math.max(360,window.innerWidth-e.left-8)),height:ry(n,280,Math.max(280,window.innerHeight-e.top-8))}))},[]),T=(0,i.useCallback)(e=>{let t=b.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),b.current=null,v(!1))},[]),L=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:{...L,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:rj,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:rj,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)(rf,{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:z,onPointerUp:T,onPointerCancel:T,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 rj={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},rk={__soul__:{apiPath:"/api/soul",title:"SOUL.md"},__harness__:{apiPath:"/api/harness",title:"HARNESS.md"}};function rw({filePath:e}){let t=rk[e],{isDark:r}=R(),[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)(ri,{initialContent:o,language:"markdown",isDark:r,onChange:l,onSave:g})})]}):null}function rS(){document.body.style.cursor="",document.body.style.userSelect=""}function rC({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),rS(),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,rS(),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 rz({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 6a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v3"}),(0,n.jsx)("path",{d:"M3 6v12a2 2 0 0 0 2 2h8"}),(0,n.jsx)("path",{d:"M17 13v7"}),(0,n.jsx)("path",{d:"M14 16h6"}),(0,n.jsx)("path",{d:"M14 20h6"})]}):"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.1a5 5 0 0 1-6.6 6.6L7.3 19.7a2.1 2.1 0 0 1-3-3l6.9-6.9a5 5 0 0 1 6.6-6.6l-3.1 3.1Z"})}):tW(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 rT(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 rL(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 rM(e){return e?ec(e)||e:"-"}function rI({refreshKey:e=0,cwd:t}){let[r,o]=(0,i.useState)(null),[l,s]=(0,i.useState)(null),[a,d]=(0,i.useState)(null),c=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/agent/runtime",{cache:"no-store"}),t=await e.json();if(!e.ok||!Array.isArray(t.sessions))throw Error(t.error??`HTTP ${e.status}`);o(t),s(null)}catch(e){s(e instanceof Error?e.message:String(e))}},[]);(0,i.useEffect)(()=>{c()},[c,e]),(0,i.useEffect)(()=>{let e=window.setInterval(()=>{c()},3e3);return()=>window.clearInterval(e)},[c]);let u=(0,i.useCallback)(async e=>{d(e.sessionId),s(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 c()}catch(e){s(e instanceof Error?e.message:String(e))}finally{d(null)}},[c]),p=(0,i.useMemo)(()=>[...r?.sessions??[]].sort((e,t)=>{let r=+!!e.busy,n=+!!t.busy;return r!==n?n-r:Date.parse(t.lastEventAt??t.runStartedAt??"0")-Date.parse(e.lastEventAt??e.runStartedAt??"0")}),[r]),h=p.filter(e=>e.busy),x=h.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",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Tools"}),(0,n.jsxs)("div",{style:{marginTop:3,fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[h.length," agent running \xb7 ",r?.activeSessions??0," active",t?` \xb7 ${rM(t)}`:""]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void c(),style:r$,title:"Refresh runtime",children:"Refresh"})]}),l&&(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:l})]}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",padding:10},children:[(0,n.jsx)(rR,{title:"Agent Runtime",subtitle:x.length>0?`${x.length} waiting for first token`:`${h.length} active chat${1===h.length?"":"s"}`}),0===p.length?(0,n.jsx)(rW,{label:"No agent runtime is active."}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:p.map(e=>{var t;let r=e.model?`${e.model.provider}/${e.model.id}`:"-",i=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:rT(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:rT(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:[rM(e.cwd)," \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)(rE,{label:"uptime",value:rL(e.uptimeMs)}),(0,n.jsx)(rE,{label:"wait",value:rL(e.waitingForModelMs),color:"waiting_model"===e.phase?rT(e.phase):void 0}),(0,n.jsx)(rE,{label:"pending",value:null===e.pendingMessageCount?"-":String(e.pendingMessageCount)}),(0,n.jsx)(rE,{label:"event",value:e.lastEventType??"-"}),(0,n.jsx)(rE,{label:"tools",value:i||"-"}),(0,n.jsx)(rE,{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. This usually means the upstream provider or gateway is still queueing the turn."}),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 u(e),disabled:!e.busy||a===e.sessionId,style:{...r$,border:"1px solid rgba(239,68,68,0.35)",color:"#ef4444",background:"rgba(239,68,68,0.08)",opacity:e.busy&&a!==e.sessionId?1:.55},children:"Abort"})})]},e.sessionId)})})]})]})}function rR({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 rW({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 rE({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})]})}let r$={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},rB=["openai-responses","openai-completions"],rA=[/\/chat\/completions(?:$|[?#])/i,/deepseek/i,/moonshot|kimi/i,/dashscope|aliyun|qwen/i,/zhipu|bigmodel|chatglm|glm/i,/siliconflow/i,/volcengine|ark\.cn|doubao/i,/baichuan/i,/minimax/i,/stepfun|step-api/i,/lingyiwanwu|yi-api/i],rP=[/api\.openai\.com/i,/\/responses(?:$|[?#])/i];function rN(e,t,r="openai-responses"){let n=`${t??""} ${e??""}`.toLowerCase();return n.trim()?rP.some(e=>e.test(n))?"openai-responses":rA.some(e=>e.test(n))?"openai-completions":r:r}function rH(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 rD=rH((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"})),rO=rH((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"})),rF=rH((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"})]})),r_=rH((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"})]})),rU=rH((0,n.jsx)("path",{d:"M4 4h16v16H4z",fill:"#F55036"}),"0 0 24 24"),rV=rH((0,n.jsx)("path",{d:"M4 4h5v5H4zm5.5 0h5v5h-5zM15 4h5v5h-5zM4 9.5h5v5H4zm5.5 5.5h5v5h-5zM15 9.5h5v5h-5z",fill:"#FA6F00"})),rq=rH((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),rK=rH((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"})]})),rJ=rH((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#FF5722"}),"0 0 24 24"),rZ=rH((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"})),rY=rH((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"})]})),rG=rH((0,n.jsx)("path",{d:"M12 2l9 5v10l-9 5-9-5V7l9-5z",stroke:"currentColor",strokeWidth:"1.5",fill:"none"})),rX=rH((0,n.jsx)("path",{d:"M4 4l8 8 8-8M4 20l8-8 8 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),rQ=rH((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"})),r0={anthropic:{Icon:rD,hasColor:!1},openai:{Icon:rO,hasColor:!1},"openai-codex":{Icon:rO,hasColor:!1},google:{Icon:rF,hasColor:!0},"google-vertex":{Icon:rF,hasColor:!0},deepseek:{Icon:r_,hasColor:!0},groq:{Icon:rU,hasColor:!1},mistral:{Icon:rV,hasColor:!0},moonshotai:{Icon:rq,hasColor:!1},"moonshotai-cn":{Icon:rq,hasColor:!1},moonshot:{Icon:rq,hasColor:!1},minimax:{Icon:rK,hasColor:!0},"minimax-cn":{Icon:rK,hasColor:!0},fireworks:{Icon:rJ,hasColor:!0},huggingface:{Icon:rZ,hasColor:!0},cerebras:{Icon:rY,hasColor:!0},openrouter:{Icon:rG,hasColor:!1},xai:{Icon:rX,hasColor:!1},"cloudflare-ai-gateway":{Icon:rQ,hasColor:!0},"cloudflare-workers-ai":{Icon:rQ,hasColor:!0},"vercel-ai-gateway":{Icon:rH((0,n.jsx)("path",{d:"M12 2L22 20H2L12 2z",fill:"currentColor"})),hasColor:!1},"github-copilot":{Icon:rH((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:rH((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:rH((0,n.jsx)("path",{d:"M12 2L3 18h5l4-6 4 6h5L12 2z",fill:"#0078D4"})),hasColor:!0},"kimi-coding":{Icon:rH((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:rH((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:rH((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:rH((0,n.jsx)("path",{d:"M4 8h16v2H4zm0 4h12v2H4zm0 4h8v2H4z",fill:"#3059B1"})),hasColor:!0},perplexity:{Icon:rH((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:rH((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#0F6CBD"}),"0 0 24 24"),hasColor:!0},grok:{Icon:rH((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1}},r1=[{value:"openai-responses",label:"OpenAI Responses",description:"OpenAI / deeprouter GPT relay"},{value:"openai-completions",label:"Chat Completions",description:"DeepSeek / Kimi / Qwen via compat proxy"}];function r2({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 r4={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 r5({value:e,onChange:t,placeholder:r,mono:i,onKeyDown:o,style:l}){return(0,n.jsx)("input",{value:e,onChange:e=>t(e.target.value),onKeyDown:o,placeholder:r,style:{...r4,fontFamily:i?"var(--font-mono)":"inherit",...l}})}function r3({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:{...r4,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 r6({value:e,onChange:t,placeholder:r}){return(0,n.jsx)("input",{type:"number",value:e,onChange:e=>t(e.target.value),placeholder:r,style:r4})}function r8({value:e,onChange:t,required:r}){return(0,n.jsxs)("select",{value:e,onChange:e=>{let r=e.target.value;t("string"==typeof r&&rB.includes(r)?r:"")},style:{...r4,color:e?"var(--text)":"var(--text-dim)"},children:[!r&&(0,n.jsx)("option",{value:"",children:"— inherit / none —"}),r1.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value))]})}function r7({api:e}){let t=r1.find(t=>t.value===e);return(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:t?t.description:"Leave empty to inherit the provider protocol."})}function r9({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 ne({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 nt({name:e,provider:t,onChange:r,onRename:o,onDelete:l}){let[s,a]=(0,i.useState)(e),[d,c]=(0,i.useState)(""),u="codex"===t.source;(0,i.useEffect)(()=>a(e),[e]);let p=(e,n)=>r({...t,[e]:n}),h=()=>{if(u)return;let e=d.trim();if(!e)return;let n=t.models??[];n.some(t=>t.id===e)||r({...t,models:[...n,{id:e,name:e}]}),c("")};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)(ne,{children:"Provider"}),(0,n.jsx)("button",{onClick:()=>!u&&l(),disabled:u,style:{padding:"3px 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:u?"not-allowed":"pointer",fontSize:11,opacity:u?.45:1},children:"Delete"})]}),u&&(0,n.jsx)("div",{style:{padding:"7px 10px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-dim)",fontSize:12},children:"Loaded from ~/.codex/config.toml and auth.json. Add a UI provider to override it."}),(0,n.jsxs)(r2,{label:"Provider name",children:[(0,n.jsx)(r5,{value:s,onChange:e=>!u&&a(e),placeholder:"provider-name",mono:!0}),!u&&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)(r2,{label:"Base URL",children:(0,n.jsx)(r5,{value:t.baseUrl??"",onChange:e=>!u&&p("baseUrl",e||void 0),placeholder:"https://api.example.com/v1",mono:!0})}),(0,n.jsxs)(r2,{label:"API Key",children:[(0,n.jsx)(r3,{value:t.apiKey??"",onChange:e=>!u&&p("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.jsxs)(r2,{label:"Protocol",children:[(0,n.jsx)(r8,{value:t.api??rN(t.baseUrl,e),onChange:e=>!u&&p("api",e||void 0),required:!0}),(0,n.jsx)(r7,{api:t.api??rN(t.baseUrl,e)})]}),(0,n.jsxs)(r2,{label:"Model ID",children:[(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(r5,{value:d,onChange:e=>!u&&c(e),onKeyDown:e=>{"Enter"!==e.key||u||h()},placeholder:"gpt-5.5",mono:!0,style:{flex:1}}),(0,n.jsx)("button",{type:"button",onClick:h,disabled:u||!d.trim(),style:{padding:"0 12px",border:"none",borderRadius:5,background:!u&&d.trim()?"var(--accent)":"var(--bg-panel)",color:!u&&d.trim()?"#fff":"var(--text-dim)",cursor:!u&&d.trim()?"pointer":"not-allowed",fontSize:12,fontWeight:600,flexShrink:0},children:"Add"})]}),(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"Fetching the model list is optional. Add the model ID your provider supports, then save."})]})]})}let nr=["off","minimal","low","medium","high","xhigh"],nn={off:"var(--text-dim)",minimal:"#6b7280",low:"#60a5fa",medium:"#a78bfa",high:"#f472b6",xhigh:"#fb923c"};function ni({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:nr.map(e=>{let t=r[e],o=e in r?null===t?"null":"string":"omit",l="string"==typeof t?t:"",s=nn[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 no={thinkingFormat:"deepseek",requiresReasoningContentOnAssistantMessages:!0};function nl({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=(()=>{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)(ne,{children:"Model"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&(0,n.jsx)("span",{title:c,style:{maxWidth:260,height:24,padding:"0 8px",border:`1px solid ${"error"===s.phase?"#fecaca":"success"===s.phase?"#bbf7d0":"var(--border)"}`,borderRadius:4,background:"error"===s.phase?"#fee2e2":"success"===s.phase?"#dcfce7":"#e5e7eb",color:"#111827",fontSize:11,display:"inline-flex",alignItems:"center",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",boxSizing:"border-box"},children:c}),(0,n.jsxs)("button",{onClick:u,disabled:!r.id.trim()||"testing"===s.phase,title:"Test model connection",style:{height:24,padding:"0 8px",background:"success"===s.phase?"#16a34a":"none",border:`1px solid ${"success"===s.phase?"#16a34a":"var(--border)"}`,borderRadius:4,color:"success"===s.phase?"#fff":r.id.trim()&&"testing"!==s.phase?"var(--text-muted)":"var(--text-dim)",cursor:r.id.trim()&&"testing"!==s.phase?"pointer":"not-allowed",fontSize:11,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box",gap:5},children:["success"===s.phase&&(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),"testing"===s.phase?"Testing…":"success"===s.phase?"OK":"Test"]}),(0,n.jsx)("button",{onClick:l,style:{height:24,padding:"0 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:"pointer",fontSize:11,boxSizing:"border-box"},children:"Remove"})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(r2,{label:"ID *",children:(0,n.jsx)(r5,{value:r.id,onChange:e=>d("id",e),placeholder:"model-id",mono:!0})}),(0,n.jsx)(r2,{label:"Name",children:(0,n.jsx)(r5,{value:r.name??"",onChange:e=>d("name",e||void 0),placeholder:"Display name"})})]}),(0,n.jsxs)(r2,{label:"API override",children:[(0,n.jsx)(r8,{value:r.api??"",onChange:e=>d("api",e||void 0)}),(0,n.jsx)(r7,{api:r.api??""})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,n.jsx)(r9,{label:"Reasoning / thinking",checked:r.reasoning??!1,onChange:e=>d("reasoning",e||void 0)}),(0,n.jsx)(r9,{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)(r9,{label:"DeepSeek thinking compat",checked:r.compat?.thinkingFormat==="deepseek",onChange:e=>o(function(e,t){if(t)return{...e,compat:{...e.compat??{},...no}};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)(ne,{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)(ni,{value:r.thinkingLevelMap,onChange:e=>d("thinkingLevelMap",e)})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(r2,{label:"Context window (tokens)",children:(0,n.jsx)(r6,{value:void 0!==r.contextWindow?String(r.contextWindow):"",onChange:e=>d("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,n.jsx)(r2,{label:"Max output tokens",children:(0,n.jsx)(r6,{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)(ne,{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)(r2,{label:e,children:(0,n.jsx)(r6,{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 ns({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)(ne,{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 na({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)(ne,{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)(r2,{label:"API Key",children:(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(r3,{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 nd({id:e,size:t}){let r=r0[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 nc({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)||"deepseek".includes(p)||"deeprouter".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-compatible endpoint"}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"DeepSeek, deeprouter, Kimi, Qwen"})]}),(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:"Optional 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)(nd,{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)(nd,{id:e.id,size:28})]},e.id))]})})]})})}function nu({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:"Optional: fetch a 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)(r2,{label:"Base URL",children:(0,n.jsx)(r5,{value:o,onChange:l,placeholder:"https://api.example.com",mono:!0})}),(0,n.jsx)(r2,{label:"API Key",children:(0,n.jsx)(r3,{value:s,onChange:a,placeholder:"optional for local providers",mono:!0})}),(0,n.jsx)(r2,{label:"Provider name",children:(0,n.jsx)(r5,{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=0;for(let e of f.piModels)u.has(e.id)&&!p.has(e.id)&&(p.set(e.id,e),h+=1);t(a,{...c??{},baseUrl:n,api:c?.api??rN(n,a),...i?{apiKey:i}:{},models:Array.from(p.values())},h),r()},disabled:!m,style:{padding:"6px 16px",background:m?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:6,color:m?"#fff":"var(--text-dim)",cursor:m?"pointer":"not-allowed",fontSize:13,fontWeight:600},children:"Import selected"})]})]})]})})}function np({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,y]=(0,i.useState)([]),[b,j]=(0,i.useState)([]),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(!1),z=(0,i.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>y(e.providers)).catch(()=>{})},[]),T=(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)),z(),T()},[z,T]);let L=(0,i.useCallback)(()=>{let e="custom",t=1;for(;r.providers?.[e];)e=`custom-${t++}`;o(t=>({...t,providers:{...t.providers??{},[e]:{baseUrl:""}}})),v({type:"provider",name:e})},[r.providers]),M=(0,i.useCallback)((e,t)=>{o(r=>({...r,providers:{...r.providers??{},[e]:t}}))},[]),I=(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)},[]),R=(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})},[]),W=(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}}}})},[]),$=(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})},[]),B=(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 providers.json.`)},[]),A=(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({providers:r.providers??{}})}),t=await e.json();!e.ok||t.error?u(t.error??`HTTP ${e.status}`):(g(!0),setTimeout(()=>g(!1),2e3))}catch(e){u(String(e))}finally{d(!1)}},[r]),P=Object.entries(r.providers??{}),N=m.filter(e=>e.loggedIn),H=b.filter(e=>e.configured),D=(()=>{if(!f)return null;if("oauth"===f.type){let e=m.find(e=>e.id===f.providerId);return e?(0,n.jsx)(ns,{provider:e,onRefresh:z},e.id):null}if("apikey"===f.type){let e=b.find(e=>e.id===f.providerId);return e?(0,n.jsx)(na,{provider:e,onRefresh:T},e.id):null}if("provider"===f.type){let e=r.providers?.[f.name];return e?(0,n.jsx)(nt,{name:f.name,provider:e,onChange:e=>M(f.name,e),onRename:e=>I(f.name,e),onDelete:()=>R(f.name)},f.name):null}let e=r.providers?.[f.providerName],t=e?.models?.[f.index];return t?(0,n.jsx)(nl,{providerName:f.providerName,provider:e,model:t,onChange:e=>E(f.providerName,f.index,e),onDelete:()=>$(f.providerName,f.index)},`${f.providerName}-${f.index}`):null})();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:t?{height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"stretch"}:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:r=>{t||r.target!==r.currentTarget||e()},children:(0,n.jsxs)("div",{style:{width:t?"100%":860,height:t?"100%":"78vh",background:"var(--bg)",border:t?"none":"1px solid var(--border)",borderRadius:10*!t,display:"flex",flexDirection:"column",boxShadow:t?"none":"0 8px 32px rgba(0,0,0,0.18)",overflow:"hidden"},children:[!t&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 18px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,n.jsx)("span",{style:{fontSize:15,fontWeight:700,color:"var(--text)"},children:"Models"}),(0,n.jsx)("code",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:"~/.config/annodex/providers.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)(nd,{id:e.id,size:16}),(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.id)}),H.map(e=>{let t=f?.type==="apikey"&&f.providerId===e.id;return(0,n.jsxs)("div",{onClick:()=>v({type:"apikey",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:7,padding:"5px 8px",borderRadius:5,cursor:"pointer",background:t?"var(--bg-selected)":"none"},onMouseEnter:e=>{t||(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.background="none")},children:[(0,n.jsx)(nd,{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||H.length>0)&&P.length>0&&(0,n.jsx)("div",{style:{margin:"4px 8px",borderTop:"1px solid var(--border)"}}),l?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:12,color:"var(--text-muted)"},children:"Loading…"}):P.map(([e,t])=>{let r=f?.type==="provider"&&f.name===e,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(),W(e)},style:{display:"flex",alignItems:"center",gap:4,padding:"4px 8px 4px 26px",borderRadius:5,cursor:"pointer",color:"var(--text-dim)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)",e.currentTarget.style.background="none"},children:(0,n.jsx)("span",{style:{fontSize:11},children:"+ model"})})]},e)})]}),(0,n.jsx)("div",{style:{borderTop:"1px solid var(--border)",padding:"8px 6px"},children:(0,n.jsx)("button",{onClick:()=>w(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,width:"100%",padding:"6px 0",background:"none",border:"1px dashed var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.color="var(--text-muted)"},children:"+ Add provider"})})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:l?null:D??(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:13},children:"Select a provider or model"})})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:10,padding:"10px 18px",borderTop:"1px solid var(--border)",flexShrink:0},children:[c?(0,n.jsx)("span",{style:{fontSize:12,color:"#f87171",flex:1},children:c}):p?(0,n.jsx)("span",{style:{fontSize:12,color:"var(--text-muted)",flex:1},children:p}):null,(0,n.jsx)("button",{onClick:e,style:{padding:"6px 14px",background:"none",border:"1px solid var(--border)",borderRadius:6,color:"var(--text-muted)",cursor:"pointer",fontSize:13},children:"Cancel"}),(0,n.jsxs)("button",{onClick:A,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)(nc,{oauthProviders:m,apiKeyProviders:b,onSelectOAuth:e=>v({type:"oauth",providerId:e}),onSelectApiKey:e=>v({type:"apikey",providerId:e}),onAddCustom:L,onDiscover:()=>C(!0),onClose:()=>w(!1)}),S&&(0,n.jsx)(nu,{existingProviders:r.providers??{},onImport:B,onClose:()=>C(!1)})]})}function nh(e){return e.replace(/^\/(?:Users|home)\/[^/]+/,"~")}function nx(e){let t=e.sourceInfo?.source,r=e.sourceInfo?.scope;return"user"===r||"user"===t?"global":"project"===r||"project"===t?"project":"path"}function ng({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 nf({skill:e,cwd:t,onToggle:r,toggling:i,saveError:o}){let l=nx(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 nh(e)}(e.filePath)}),(0,n.jsx)(ng,{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 nv({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,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 z=(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)}}},[]),T=(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]),L=(0,i.useCallback)(()=>{C.current?.abort()},[]),M="global"===k?"~/.codex/skills/":`${nh(e)}/.codex/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&&z(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:()=>z(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:L,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=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||T(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 nm({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),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&&!u&&p(t[0].filePath)}).catch(e=>c(String(e))).finally(()=>a(!1))},[e,u]);(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===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:nh(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=>nx(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)(nv,{cwd:e,onInstalled:()=>{y()}}):s?null:j?(0,n.jsx)(nf,{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"})})]})})}function ny({activeCwd:e,onSelectProject:t,onProjectsChanged:r}){let[o,l]=(0,i.useState)([]),[s,a]=(0,i.useState)(!0),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(""),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(null),[m,y]=(0,i.useState)(null),[b,j]=(0,i.useState)(""),k=(0,i.useRef)(null),w=(0,i.useCallback)(async()=>{try{a(!0);let e=await fetch("/api/projects?sessionStats=1"),t=await e.json();if(!e.ok||t.error)throw Error(t.error??`HTTP ${e.status}`);l(t.projects??[]),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}finally{a(!1)}},[]);(0,i.useEffect)(()=>{w()},[w]);let S=(0,i.useMemo)(()=>({projects:o.length,chats:o.reduce((e,t)=>e+t.chatCount,0)}),[o]),C=(0,i.useCallback)(async()=>{let e=p.trim();if(e){v("add"),u(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}`);h(""),r?.(),t?.(e),w()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}}},[w,r,t,p]),z=(0,i.useCallback)(async e=>{v("add"),u(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}`);h(""),g(!1),r?.(),t?.(e),w()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}},[w,r,t]),T=(0,i.useCallback)(async e=>{v(`rename:${e}`),u(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}`);y(null),j(""),await w(),r?.()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}},[w,r,b]),L=(0,i.useCallback)(async e=>{v(`remove:${e}`),u(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 w(),r?.()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}},[w,r]),M=(0,i.useCallback)(e=>{y(e.cwd),j(e.name??e.displayName),window.setTimeout(()=>k.current?.select(),0)},[]);return(0,n.jsxs)("div",{style:{height:"100%",overflowY:"auto",padding:20},children:[(0,n.jsxs)("div",{style:{maxWidth:900,display:"flex",flexDirection:"column",gap:14},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:15,fontWeight:750,color:"var(--text)"},children:"Projects"}),(0,n.jsxs)("div",{style:{marginTop:4,fontSize:12,color:"var(--text-muted)"},children:[S.projects," projects / ",S.chats," chats"]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void w(),style:{height:30,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Refresh"})]}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:12},children:(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,n.jsx)("input",{value:p,onChange:e=>h(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C()},placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"button",onClick:()=>g(!0),style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Browse"}),(0,n.jsx)("button",{type:"button",disabled:!p.trim()||"add"===f,onClick:()=>void C(),style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:p.trim()?"var(--accent)":"var(--bg-hover)",color:p.trim()?"#fff":"var(--text-dim)",cursor:p.trim()?"pointer":"default",fontSize:12,fontWeight:650},children:"Add"})]})}),c&&(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:c}),(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===o.length?(0,n.jsx)("div",{style:{padding:16,color:"var(--text-muted)",fontSize:12},children:"No projects yet."}):o.map(r=>{var i;let o,l=r.cwd===e,s=m===r.cwd,a=r.lastAccessed??r.created??null;return(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",gap:12,alignItems:"center",padding:"12px 14px",borderBottom:"1px solid var(--border)",background:l?"var(--bg-selected)":"var(--bg)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[s?(0,n.jsx)("input",{ref:k,value:b,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&T(r.cwd),"Escape"===e.key&&y(null)},style:{width:"min(360px, 100%)",height:30,padding:"0 9px",border:"1px solid var(--accent)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontSize:13,outline:"none"}}):(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:l?750:650,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.displayName}),(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:r.cwd,children:(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()}(a),r.exists?"":" / path missing"]})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6},children:s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:f===`rename:${r.cwd}`,onClick:()=>void T(r.cwd),style:{height:28,padding:"0 9px",border:"none",borderRadius:6,background:"var(--accent)",color:"#fff",cursor:"pointer",fontSize:12},children:"Save"}),(0,n.jsx)("button",{type:"button",onClick:()=>y(null),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>t?.(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:l?"var(--accent)":"var(--bg-panel)",color:l?"#fff":"var(--text-muted)",cursor:"pointer",fontSize:12},children:l?"Current":"Switch"}),(0,n.jsx)("button",{type:"button",onClick:()=>M(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:f===`remove:${r.cwd}`,onClick:()=>void L(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid rgba(248,113,113,0.35)",borderRadius:6,background:"transparent",color:"#f87171",cursor:"pointer",fontSize:12},children:"Remove"})]})})]},r.cwd)})})]}),(0,n.jsx)(d,{open:x,initialPath:e,onClose:()=>g(!1),onSelect:e=>void z(e)})]})}function nb({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 nj(){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 nk(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 nw({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:nk("projects")},{id:"models",label:"Models",description:"~/.config/annodex/providers.json",icon:nk("models")},{id:"skills",label:"Skills",description:e?"Project and global skills":"Select a project first",disabled:!e,icon:nk("skills")},{id:"generative-ui",label:"Generative UI",description:t?"Enabled":"Disabled",icon:nk("generative-ui")}],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)(nj,{})}),(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)(ny,{activeCwd:e,onSelectProject:a,onProjectsChanged:d}),"models"===c&&(0,n.jsx)(np,{embedded:!0,onClose:()=>{s?.(),l()}}),"skills"===c&&e&&(0,n.jsx)(nm,{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)(nb,{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."})]})]})]})})]})]})]})})}function nS({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 nC=new Set(["pdf","png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]);function nz(e){let t=(e.replace(/[?#].*$/,"").replace(/[\\/]+$/,"").split(/[\\/]/).pop()??e).toLowerCase().split(".").pop()??"";return nC.has(t)}function nT(){let e=(0,o.useRouter)(),t=(0,o.useSearchParams)(),{isDark:r,toggleTheme:l}=R(),[s,a]=(0,i.useState)(null),[d,c]=(0,i.useState)(null),[u,p]=(0,i.useState)(0),[h,x]=(0,i.useState)(0),[g,f]=(0,i.useState)(0),[v,m]=(0,i.useState)(0),[y,b]=(0,i.useState)(!1),[j,w]=(0,i.useState)("projects"),[S,C]=(0,i.useState)({generativeUI:!0}),[z,T]=(0,i.useState)(null),[L,M]=(0,i.useState)(!0),I=nS({initialWidth:260,minWidth:180,maxWidth:500,storageKey:"--annodex-sidebar-width"}),W=nS({initialWidth:500,minWidth:300,maxWidth:1200,storageKey:"--annodex-right-panel-width",direction:"left"}),E=(0,i.useRef)(null),$=(0,i.useRef)(null),[B,A]=(0,i.useState)(null),P=(0,i.useRef)(null),[N,H]=(0,i.useState)(!1),[D,O]=(0,i.useState)(""),F=(0,i.useRef)(null),_=(0,i.useRef)(!1),U=(0,i.useCallback)(e=>{A(e)},[]);(0,i.useEffect)(()=>{H(!1)},[s?.id]);let V=(0,i.useCallback)(e=>e?e.name||e.firstMessage.slice(0,80)||e.id.slice(0,12):"",[]),q=(0,i.useCallback)(()=>{s&&(_.current=!1,O(s.name||V(s)),H(!0),setTimeout(()=>F.current?.select(),0))},[V,s]),K=(0,i.useCallback)(async()=>{if(_.current){_.current=!1,H(!1);return}if(!s)return void H(!1);let e=D.trim(),t=V(s);if(H(!1),e!==(s.name??"")&&(s.name||e!==t))try{(await fetch(`/api/sessions/${encodeURIComponent(s.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})).ok&&(a(t=>t&&t.id===s.id?{...t,name:e}:t),p(e=>e+1))}catch{}},[V,s,D]),J=(0,i.useCallback)(e=>{"Enter"===e.key?(e.preventDefault(),K()):"Escape"===e.key&&(_.current=!0,H(!1))},[K]);(0,i.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(t=>{e||C(e=>({generativeUI:"boolean"==typeof t?.settings?.generativeUI?t.settings.generativeUI:e.generativeUI}))}).catch(()=>{}),()=>{e=!0}},[]),(0,i.useEffect)(()=>{let e=!1,t=!1,r=()=>{t||(t=!0,fetch("/api/version").then(e=>e.ok?e.json():null).then(t=>{e||T(t)}).catch(()=>{}).finally(()=>{t=!1}))};r();let n=window.setInterval(r,6e4);return()=>{e=!0,window.clearInterval(n)}},[]);let Z=(0,i.useCallback)(()=>{let e=!S.generativeUI;C(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=>{C(t=>({...t,..."boolean"==typeof e.settings?.generativeUI?{generativeUI:e.settings.generativeUI}:{}}))}).catch(()=>C(e=>({...e,generativeUI:!e.generativeUI})))},[S.generativeUI]),[Y,G]=(0,i.useState)(null),X=(0,i.useCallback)(e=>{G(e)},[]),[Q,ee]=(0,i.useState)(null),et=(0,i.useCallback)(e=>{ee(e)},[]),[er,en]=(0,i.useState)(null),[ei,eo]=(0,i.useState)(null),el=(0,i.useCallback)(e=>{en(t=>t===e?null:e)},[]);(0,i.useEffect)(()=>{if(!er||!$.current)return;let e=()=>{let e=$.current.getBoundingClientRect();eo({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe($.current),()=>t.disconnect()},[er]);let[es,ea]=(0,i.useState)([]),[ed,ec]=(0,i.useState)("files"),[eu,ep]=(0,i.useState)(!1),[eh,ex]=(0,i.useState)(""),[eg,ef]=(0,i.useState)([]),[ev,em]=(0,i.useState)(0),ey=(0,i.useCallback)(e=>{E.current?.insertText("`"+e+"`")},[]),[eb]=(0,i.useState)(()=>t.get("session")),[ej,ek]=(0,i.useState)(null),[ew,eS]=(0,i.useState)(()=>!t.get("session")),eC=(0,i.useRef)(!1),ez=(0,i.useCallback)(t=>{ek(t),t&&!eC.current&&(a(e=>e&&e.cwd!==t?null:e),c(e=>e&&e!==t?null:e),x(e=>e+1),f(e=>e+1),A(null),en(null),e.replace("/",{scroll:!1}))},[e]),eT=(0,i.useCallback)(e=>{ez(e),b(!1),p(e=>e+1)},[ez]),eL=(0,i.useCallback)((t,r=!1)=>{c(null),ek(t.cwd),a(t),x(e=>e+1),A(null),eS(!0),r&&(eC.current=!0,setTimeout(()=>{eC.current=!1},0)),r||e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eM=(0,i.useCallback)((t,r)=>{a(null),c(r),ek(r),x(e=>e+1),A(null),en(null),e.replace("/",{scroll:!1})},[e]),eI=(0,i.useCallback)(t=>{c(null),ek(t.cwd),a(t),p(e=>e+1),e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eR=(0,i.useCallback)(()=>{p(e=>e+1),f(e=>e+1),em(e=>e+1)},[]),eW=(0,i.useCallback)(t=>{p(e=>e+1),c(null),a(e=>({...e??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:t})),e.replace(`?session=${encodeURIComponent(t)}`,{scroll:!1})},[e]),eE=(0,i.useCallback)(()=>{eS(!0)},[]),e$=(0,i.useCallback)(t=>{if(p(e=>e+1),s?.id===t){let t=s.cwd;a(null),c(t??null),x(e=>e+1),A(null),en(null),e.replace("/",{scroll:!1})}},[s,e]),eB=(0,i.useCallback)(e=>{ef(t=>t.filter(t=>t.id!==e))},[]),eA=(0,i.useCallback)(e=>{ef(t=>{let r=t.find(t=>t.id===e);return r&&t[t.length-1]?.id!==e?[...t.filter(t=>t.id!==e),r]:t})},[]),eP=(0,i.useCallback)((e,t)=>{if(nz(e)||nz(t)){let r=`preview:${e}`;ef(n=>{let i=n.find(e=>e.id===r);return i?[...n.filter(e=>e.id!==r),i]:[...n,{id:r,filePath:e,fileName:t}]});return}let r=`file:${e}`;ea(n=>n.find(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:e}]),ec(r),ep(!0)},[]),eN=(0,i.useCallback)(e=>{"files"!==e&&"tools"!==e&&(ea(t=>t.filter(t=>t.id!==e)),ec(t=>{if(t!==e)return t;let r=es.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:"files"}))},[es]),eH=d??(null===s&&ej?ej:null),eD=null!==s||null!==eH,eO=ew&&!eD,eF=[{id:"files",label:"Files",closable:!1,icon:"files"},{id:"tools",label:"Tools",closable:!1,icon:"tools"},...es],e_=es.find(e=>e.id===ed)??null,eU=s?V(s):eH?"New chat":"No session",eV=s?.cwd??eH??ej??"",eq=eV?eV.replace(/\/+$/,"").split(/[\\/]/).filter(Boolean).pop()||eV:"",eK=s?.cwd??ej??eH??void 0,eJ=ej??s?.cwd??d??null,eZ=(()=>{let e=z?.runtime,t=e?.installedVersion??z?.latest;if(e?.restartPending&&t){let r=!!e.restartStartedAt;return{label:`${r?"Restarting":"Restart queued"} ${t}`,title:[`Current runtime: v${e.version??z?.current??"unknown"}`,`Installed: v${t}`,r?"A replacement server is starting.":"annodex will restart after active sessions become idle."].join("\n"),active:!0}}return z?.updateAvailable&&z.latest?{label:`Update ${z.latest}`,title:`Current: v${z.current}
|
|
258
|
+
${a}`:"",c=i?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),p={role:"user",content:c?.length?[...d.trim()?[{type:"text",text:d}]:[],...c]:d,timestamp:Date.now()};ep.current=!0,y(e=>[...e,p]),eo(null),ef.current=!0;let h=i?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType})),x=()=>{eu.current||(eu.current=!0,C(!0),en({kind:"waiting_model"}),w({type:"start"}))};try{if(u&&n){$&&G($);let{PRESET_NONE:t,PRESET_DEFAULT:i,PRESET_FULL:o}=await r.e(8451).then(r.bind(r,48451)),s="none"===A?t:"default"===A?i:o,a=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,toolNames:s,...$?{provider:$.provider,modelId:$.modelId}:{},..."auto"!==N?{thinkingLevel:N}:{}})}),c=await a.json().catch(()=>({}));if(!a.ok||c.error||!c.sessionId)throw Error(c.error??`HTTP ${a.status}`);let u=c.sessionId;ec.current=u,await eW(u,1e4,!0),x(),await e6(u,{type:"prompt",message:d,toolNames:s,...h?.length?{images:h}:{}}),ey.current=!0,l?.({id:u,path:"",cwd:n,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e})}else if(t){let{PRESET_NONE:e,PRESET_DEFAULT:n,PRESET_FULL:i}=await r.e(8451).then(r.bind(r,48451));await eW(t.id,1e4,!0),x();let o=await e6(t.id,{type:"prompt",message:d,toolNames:"none"===A?e:"default"===A?n:i,...h?.length?{images:h}:{}});o?.__sessionId&&o.__sessionId!==t.id&&(ec.current=o.__sessionId,eL(o.__sessionId),s?.(o.__sessionId))}}catch(e){console.error("Failed to send message:",e),eo(e instanceof Error?e.message:String(e)),C(!1),eu.current=!1,en(null),w({type:"end"}),y(e=>e[e.length-1]===p?e.slice(0,-1):e)}finally{ep.current=!1}},[u,n,$,A,N,t,S,eW,l,s,eL,eS]),e$=(0,i.useCallback)(async()=>{let e=ec.current;if(e){eu.current=!1,eo(null),C(!1),en(null),w({type:"end"}),ea.current?.close(),ea.current=null,ed.current=null;try{await e6(e,{type:"abort"}),await eT(e)}catch(t){console.error("Failed to abort:",t),await eT(e)}}},[eT]),eB=(0,i.useCallback)(async e=>{let t=ec.current;if(t){K(e);try{let{cancelled:r,newSessionId:n}=await e6(t,{type:"fork",entryId:e})??{};!r&&n&&s?.(n)}catch(e){console.error("Fork failed:",e)}finally{K(null)}}},[s]),eA=(0,i.useCallback)(async(e,t)=>{if(u)return void eb({provider:e,modelId:t});let r=ec.current;if(r)try{let n=await e6(r,{type:"set_model",provider:e,modelId:t}),i=n.newSessionId??n.__sessionId;i&&i!==r&&(ec.current=i,s?.(i)),Y({provider:n?.provider??e,modelId:n?.id??t})}catch(e){console.error("Failed to set model:",e)}},[u,s,eb]),eP=(0,i.useCallback)(async()=>{let e=ec.current;if(e&&!X){Q(!0),et(null);try{await e6(e,{type:"compact"}),await eT(e,!0)}catch(e){et(e instanceof Error?e.message:String(e))}finally{Q(!1)}}},[X,eT]),eN=(0,i.useCallback)(async()=>{let e=ec.current;if(e)try{await e6(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),eD=(0,i.useCallback)(async e=>{if(D(e),"auto"===e)return;let t=ec.current;if(t)try{await e6(t,{type:"set_thinking_level",level:e})}catch(e){console.error("Failed to set thinking level:",e)}},[]),eH=(0,i.useCallback)(async e=>{let{PRESET_NONE:t,PRESET_DEFAULT:n,PRESET_FULL:i}=await r.e(8451).then(r.bind(r,48451));ej(e);let o=ec.current;if(o)try{await e6(o,{type:"set_tools",toolNames:"none"===e?t:"default"===e?n:i})}catch(e){console.error("Failed to set tools:",e)}},[ej]),eO=(0,i.useCallback)((e="smooth")=>{ev.current?.scrollIntoView({behavior:e})},[]),eF=(0,i.useCallback)(()=>{let e=em.current,t=eg.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)(()=>ey.current?(ey.current=!1,()=>{c&&eI(c)}):(c&&(ec.current=c,eT(c,!0,!0).then(e=>{e?.running&&(eM(c),C(!0),en({kind:"waiting_model"}),w({type:"start"}),eL(c)),e?.state&&(void 0!==e.state.isCompacting&&Q(e.state.isCompacting),void 0!==e.state.contextUsage&&_(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&V(e.state.systemPrompt??null),void 0!==e.state.thinkingLevel&&D(e.state.thinkingLevel??"auto"))})),()=>{c&&eI(c)}),[c,eI,eL,eT,eM]),(0,i.useEffect)(()=>{d?.(U)},[U,d]),(0,i.useEffect)(()=>{m.length>0&&(ef.current?(ef.current=!1,ex.current=!0,eF()):ex.current?eu.current||eO("smooth"):(ex.current=!0,eO("instant")))},[m.length,S,eO,eF]),(0,i.useEffect)(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{if(T(e.models),e.thinkingLevels&&R(e.thinkingLevels),e.thinkingLevelMaps&&E(e.thinkingLevelMaps),e.modelList&&(I(e.modelList),u)){let t=e.defaultModel,r=t&&e.modelList.find(e=>e.id===t.modelId&&e.provider===t.provider);eb(r?{provider:r.provider,modelId:r.id}:t??null)}}).catch(()=>{})},[u,a,eb]),(0,i.useEffect)(()=>{if(!ee)return;let e=setTimeout(()=>et(null),3e3);return()=>clearTimeout(e)},[ee]),{data:p,loading:x,error:f,messages:m,entryIds:b,streamState:k,agentRunning:S,modelNames:z,modelList:M,modelThinkingLevels:L,modelThinkingLevelMaps:W,newSessionModel:$,toolPreset:A,thinkingLevel:N,retryInfo:H,contextUsage:F,systemPrompt:U,forkingEntryId:q,isCompacting:X,compactError:ee,currentModel:ek,displayModel:ew,sessionStats:ez,agentPhase:er,agentError:ei,subagentRuns:el,isNew:u,sessionIdRef:ec,eventSourceRef:ea,messagesEndRef:ev,scrollContainerRef:em,lastUserMsgRef:eg,pendingScrollToUserRef:ef,initialScrollDoneRef:ex,handleSend:eE,handleAbort:e$,handleFork:eB,handleModelChange:eA,handleCompact:eP,handleAbortCompaction:eN,handleToolPresetChange:eH,handleThinkingLevelChange:eD,loadTools:eM,setData:h,setMessages:y,dispatch:w,setAgentRunning:C,setForkingEntryId:K,handleAgentEventRef:eh}}({session:e,newSessionCwd:t,onAgentEnd:o,onSessionCreated:l,onSessionForked:s,modelsRefreshKey:a,onSystemPromptChange:u}),{soundEnabled:Q,onSoundToggle:ee,playDoneSound:et}=function(){let[e,t]=(0,i.useState)(()=>{let e=localStorage.getItem("annodex-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("annodex-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}}(),er=(0,i.useRef)(et);er.current=et;let en=(0,i.useRef)(Q);en.current=Q;let ei=X.current;(0,i.useEffect)(()=>{X.current=e=>{"agent_end"===e.type&&en.current&&er.current(),ei?.(e)}},[ei,X]);let eo=A?`${A.tokens.input}|${A.tokens.output}|${A.tokens.cacheRead}|${A.tokens.cacheWrite}|${A.cost??0}`:null,el=(0,i.useRef)(A);el.current=A,(0,i.useEffect)(()=>{p?.(el.current)},[eo,p]),(0,i.useEffect)(()=>()=>{p?.(null)},[p]);let es=R?`${R.percent??"null"}|${R.contextWindow}|${R.tokens??"null"}`:null,ea=(0,i.useRef)(R);ea.current=R,(0,i.useEffect)(()=>{h?.(ea.current)},[es,h]),(0,i.useEffect)(()=>()=>{h?.(null)},[h]);let{isDragOver:ed,handleDragEnter:ec,handleDragOver:eu,handleDragLeave:ep,handleDrop:eh}=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(e9)&&(e.preventDefault(),n.current+=1,r(!0))},[]),l=(0,i.useCallback)(e=>{Array.from(e.dataTransfer.items).some(e9)&&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=>{d?.current?.addFiles(e)},[d])),ex=(g=b.filter(e=>"user"===e.role||"assistant"===e.role).length,(f=(0,i.useRef)([])).current=Array(g).fill(null).map((e,t)=>f.current[t]??null),f),eg=H&&0===b.length&&!k.isStreaming&&!w,[ef,ev]=(0,i.useState)(!1),em=e2(e4(b),D),ey=em.filter(e=>"running"===e.status||"pending"===e.status).length;(0,i.useEffect)(()=>{0===em.length&&ef&&ev(!1)},[em.length,ef]);let eb=B?z[`${B.provider}:${B.modelId}`]??null:null,ej=B?T[`${B.provider}:${B.modelId}`]??null:null,ek=(0,n.jsx)(eY,{ref:d,onSend:U,onAbort:V,isStreaming:w,model:B,modelNames:S,modelList:C,onModelChange:K,onCompact:e||H?J:void 0,onAbortCompaction:Y,isCompacting:E,compactError:$,toolPreset:M,onToolPresetChange:e||H?Z:void 0,thinkingLevel:I,onThinkingLevelChange:e||H?G:void 0,availableThinkingLevels:eb,thinkingLevelMap:ej,retryInfo:L,soundEnabled:Q,onSoundToggle:ee}),ew=(0,i.useCallback)(e=>{w?d?.current?.insertText(e):U(e)},[w,d,U]);return m?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-text-muted",children:"Loading session..."}):y?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-400",children:y}):(0,n.jsxs)("div",{className:"relative flex h-full flex-col overflow-hidden",onDragEnter:ec,onDragOver:eu,onDragLeave:ep,onDrop:eh,children:[ed&&(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"})]})]})]}),eg?(0,n.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center overflow-y-auto px-4 py-8",children:(0,n.jsxs)("div",{className:"w-full max-w-[820px]",children:[(0,n.jsxs)("div",{className:"mb-3",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginLeft:16,marginRight:52,fontFamily:"var(--font-mono)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,minWidth:0,flex:1,lineHeight:1.4},children:[(0,n.jsx)("span",{style:{fontSize:23,color:"var(--text)",fontWeight:750,letterSpacing:0},children:c.C3}),(0,n.jsx)("span",{style:{fontSize:14,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:(0,n.jsx)(tt,{phrases:te})})]}),(0,n.jsx)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"flex-end",minHeight:22},children:(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",whiteSpace:"nowrap"},children:["v","0.1.23"]})})]}),ek]})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:F,className:"flex-1 overflow-y-auto pt-4 [scrollbar-width:none]",children:(0,n.jsxs)("div",{className:"mx-auto max-w-[820px] px-4",children:[(()=>{let r=new Map;for(let e of b)"toolResult"===e.role&&r.set(e.toolCallId,e);let i=-1;for(let e=b.length-1;e>=0;e--)if("user"===b[e].role){i=e;break}let o=0;return b.map((l,s)=>{let a="user"===l.role||"assistant"===l.role,d=a?o++:-1,c=!1;if("assistant"===l.role){c=!0;for(let e=s+1;e<b.length;e++){let t=b[e].role;if("user"===t)break;if("assistant"===t){c=!1;break}}c&&k.isStreaming&&s===b.length-1&&(c=!1)}let u=(0,n.jsx)(eT,{message:l,toolResults:r,modelNames:S,entryId:j[s],onFork:w||H||0===s&&"user"===l.role?void 0:q,forking:W===j[s],onSendMessage:ew,showTimestamp:c,prevTimestamp:s>0?b[s-1].timestamp:void 0,renderVisualCodeBlocks:!!x,cwd:v?.info?.cwd??e?.cwd??t??void 0},s);return a?(0,n.jsx)("div",{ref:e=>{ex.current[d]=e,s===i&&(_.current=e)},children:u},s):u})})(),k.isStreaming&&k.streamingMessage&&(0,n.jsx)(eT,{message:k.streamingMessage,isStreaming:!0,modelNames:S,onSendMessage:ew,renderVisualCodeBlocks:!!x,cwd:v?.info?.cwd??e?.cwd??t??void 0}),w&&!k.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..."}(P)})}),v?.info?.cwd&&!1===v.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:v.info.cwd})]}),N&&(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:N}),w&&(0,n.jsx)("div",{style:{height:F.current?F.current.clientHeight:"80vh"}}),(0,n.jsx)("div",{ref:O})]})}),(0,n.jsx)(eG,{messages:b,streamingMessage:k.streamingMessage,scrollContainer:F,messageRefs:ex}),em.length>0&&(0,n.jsxs)("button",{onClick:()=>ev(e=>!e),title:ef?"Hide agent runs":"Show agent runs",style:{position:"absolute",right:ef?260:40,top:8,minWidth:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:ey>0||em.length>1?"0 8px":0,background:ef?"var(--bg-selected)":"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:6,color:ef?"var(--accent)":"var(--text-dim)",cursor:"pointer",zIndex:30,fontSize:12,transition:"right 0.2s ease, background 0.12s"},onMouseEnter:e=>{ef||(e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{ef||(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"})]}),(ey>0||em.length>1)&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,fontSize:10,fontWeight:700,color:ey>0?"var(--accent)":"var(--text-dim)"},children:[ey>0&&(0,n.jsxs)("span",{children:[ey," active"]}),(0,n.jsx)("span",{children:em.length})]})]}),ef&&em.length>0&&(0,n.jsxs)("div",{style:{position:"absolute",right:48,top:4,bottom:4,width:250,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"-2px 0 12px rgba(0,0,0,0.08)",zIndex:25,overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"6px 12px",fontSize:11,fontWeight:600,color:"var(--text-dim)",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Agent Runs"}),(0,n.jsx)(e5,{runs:em})]})]}),(0,n.jsx)("div",{className:"relative",children:ek})]})]})}let tn="var(--text-dim)";function ti({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:tn}),(0,n.jsx)("path",{d:"M1 6h14.5L14 13H2L1 6Z",stroke:tn,strokeWidth:"1",fill:tn,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:tn,strokeWidth:"1",fill:tn,fillOpacity:"0.1"})})}function to({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:tn,strokeWidth:"1",fill:tn,fillOpacity:"0.08"}),(0,n.jsx)("path",{d:"M10 2v3h3",stroke:tn,strokeWidth:"1",fill:"none",strokeLinejoin:"round"})]})}function tl({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,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:tn,letterSpacing:"0",children:e})]})}function ts({size:e=14}){return(0,n.jsx)(tl,{label:"TS",size:e})}function ta({size:e=14}){return(0,n.jsx)(tl,{label:"TSX",size:e})}function td({size:e=14}){return(0,n.jsx)(tl,{label:"JS",size:e})}function tc({size:e=14}){return(0,n.jsx)(tl,{label:"JSX",size:e})}function tu({size:e=14}){return(0,n.jsx)(tl,{label:"PY",size:e})}function tp({size:e=14}){return(0,n.jsx)(tl,{label:"{}",size:e})}function th({size:e=14}){return(0,n.jsx)(tl,{label:"CSS",size:e})}function tx({size:e=14}){return(0,n.jsx)(tl,{label:"SC",size:e})}function tg({size:e=14}){return(0,n.jsx)(tl,{label:"HTM",size:e})}function tf({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M3.5 9.5V7l1.5 1.5L6.5 7v2.5",stroke:tn,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M8 7v2.5M7 9l1 1.5 1-1.5",stroke:tn,strokeWidth:"0.9",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})}function tv({size:e=14}){return(0,n.jsx)(tl,{label:"YML",size:e})}function tm({size:e=14}){return(0,n.jsx)(tl,{label:"TOM",size:e})}function ty({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M4 7.5l2 1.5-2 1.5",stroke:tn,strokeWidth:"0.95",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}),(0,n.jsx)("path",{d:"M7.5 10.5h2.5",stroke:tn,strokeWidth:"0.95",strokeLinecap:"round"})]})}function tb({size:e=14}){return(0,n.jsx)(tl,{label:"RS",size:e})}function tj({size:e=14}){return(0,n.jsx)(tl,{label:"GO",size:e})}function tk({size:e=14}){return(0,n.jsx)(tl,{label:"SQL",size:e})}function tw({size:e=14}){return(0,n.jsx)(tl,{label:"GQL",size:e})}function tS({size:e=14}){return(0,n.jsx)(tl,{label:"TF",size:e})}function tC({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,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:tn,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"6",y:"6.5",width:"2",height:"1.5",rx:"0.3",stroke:tn,strokeWidth:"0.8"}),(0,n.jsx)("rect",{x:"3.5",y:"8.5",width:"2",height:"1.5",rx:"0.3",stroke:tn,strokeWidth:"0.8"})]})}function tz({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5.5",cy:"8.5",r:"1.5",stroke:tn,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M7 8.5h2.5M8.5 8.5v1.5",stroke:tn,strokeWidth:"0.9",strokeLinecap:"round"})]})}function tT({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"5",cy:"6.5",r:"1",stroke:tn,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"9",cy:"6.5",r:"1",stroke:tn,strokeWidth:"0.85"}),(0,n.jsx)("circle",{cx:"5",cy:"10",r:"1",stroke:tn,strokeWidth:"0.85"}),(0,n.jsx)("path",{d:"M5 7.5V9",stroke:tn,strokeWidth:"0.85",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M9 7.5v.5a2 2 0 0 1-2 2H6",stroke:tn,strokeWidth:"0.85",strokeLinecap:"round",fill:"none"})]})}function tM({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,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:tn,strokeWidth:"0.9"}),(0,n.jsx)("path",{d:"M5.5 8.5V7.5a1.5 1.5 0 0 1 3 0v1",stroke:tn,strokeWidth:"0.9",strokeLinecap:"round",fill:"none"})]})}function tI({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:tn,strokeWidth:"0.9",fill:tn,fillOpacity:"0.07",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M8.5 1v3h3",stroke:tn,strokeWidth:"0.9",fill:"none",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"7",cy:"8.5",r:"1.3",stroke:tn,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:tn,strokeWidth:"0.8",strokeLinecap:"round"})]})}function tL(e,t=14){let r=e.toLowerCase(),i=r.split(".").pop()??"";if("dockerfile"===r||r.startsWith("dockerfile."))return(0,n.jsx)(tC,{size:t});if(".env"===r||r.startsWith(".env."))return(0,n.jsx)(tz,{size:t});if(".gitignore"===r||".gitattributes"===r||".gitmodules"===r)return(0,n.jsx)(tT,{size:t});if("package-lock.json"===r||"yarn.lock"===r||"bun.lock"===r||"pnpm-lock.yaml"===r||"cargo.lock"===r)return(0,n.jsx)(tM,{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)(tI,{size:t});switch(i){case"ts":return(0,n.jsx)(ts,{size:t});case"tsx":return(0,n.jsx)(ta,{size:t});case"js":case"mjs":case"cjs":return(0,n.jsx)(td,{size:t});case"jsx":return(0,n.jsx)(tc,{size:t});case"py":return(0,n.jsx)(tu,{size:t});case"json":case"jsonl":return(0,n.jsx)(tp,{size:t});case"css":case"less":return(0,n.jsx)(th,{size:t});case"scss":return(0,n.jsx)(tx,{size:t});case"html":case"htm":return(0,n.jsx)(tg,{size:t});case"md":case"mdx":return(0,n.jsx)(tf,{size:t});case"yaml":case"yml":return(0,n.jsx)(tv,{size:t});case"toml":return(0,n.jsx)(tm,{size:t});case"sh":case"bash":case"zsh":case"fish":return(0,n.jsx)(ty,{size:t});case"rs":return(0,n.jsx)(tb,{size:t});case"go":return(0,n.jsx)(tj,{size:t});case"sql":return(0,n.jsx)(tk,{size:t});case"graphql":case"gql":return(0,n.jsx)(tw,{size:t});case"tf":case"hcl":return(0,n.jsx)(tS,{size:t});case"lock":return(0,n.jsx)(tM,{size:t});default:return(0,n.jsx)(to,{size:t})}}async function tR(e){let t=es(e),r=await fetch(`/api/files/${t}?type=list`);return r.ok?((await r.json()).entries??[]).map(t=>{var r;return{name:t.name,fullPath:(r=t.name,`${el(e).replace(/\/$/,"")}/${r}`),isDir:t.isDir,size:t.size,children:t.isDir?[]:void 0,loaded:!t.isDir}}):[]}function tW(e,t){let r=t.trim().toLowerCase();return!!(!r||e.name.toLowerCase().includes(r))||(e.children??[]).some(e=>tW(e,r))}function tE(e){return!!Array.from(e.types).includes("Files")||Array.from(e.items).some(e=>"file"===e.kind)}function t$(e){return Array.from(e.files).filter(e=>!!e.name)}function tB(e,t){return e===t?".":ed(e,t)}function tA({node:e,depth:t,cwd:r,onOpenFile:o,onAtMention:l,expandedPaths:s,onToggleExpanded:a,onUploadFiles:d,uploadTargetPath:c,refreshKey:u,searchQuery:p}){let h=!!p?.trim(),x=h?e.isDir:s.has(e.fullPath),[g,f]=(0,i.useState)(e.children??[]),[v,m]=(0,i.useState)(e.loaded??!1),[y,b]=(0,i.useState)(!1),[j,k]=(0,i.useState)(!1),[w,S]=(0,i.useState)(!1),C=e.isDir&&(w||c===e.fullPath),z=h?g.filter(e=>tW(e,p??"")):g,T=(0,i.useCallback)(async(t=!1)=>{if(!v||t){b(!0);try{let t=await tR(e.fullPath);f(t),m(!0)}catch{}finally{b(!1)}}},[v,e.fullPath]),M=(0,i.useRef)(v);(0,i.useEffect)(()=>{M.current=v}),(0,i.useEffect)(()=>{x&&v&&T(!0)},[u]);let I=(0,i.useCallback)(()=>{if(e.isDir){let t=!x;a(e.fullPath,t),t&&!v&&T()}else o(e.fullPath,e.name)},[e.isDir,e.fullPath,e.name,v,x,T,o,a]),L=(0,i.useCallback)(t=>{e.isDir&&tE(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy",S(!0))},[e.isDir]),R=(0,i.useCallback)(t=>{e.isDir&&tE(t.dataTransfer)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="copy")},[e.isDir]),W=(0,i.useCallback)(t=>{if(!e.isDir)return;let r=t.relatedTarget;r instanceof Node&&t.currentTarget.contains(r)||S(!1)},[e.isDir]),E=(0,i.useCallback)(t=>{if(!e.isDir||!tE(t.dataTransfer))return;t.preventDefault(),t.stopPropagation(),S(!1);let r=t$(t.dataTransfer);r.length>0&&(d(r,e.fullPath),x||a(e.fullPath,!0),v||T())},[T,v,e.fullPath,e.isDir,a,d,x]);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{onClick:I,onMouseEnter:()=>k(!0),onMouseLeave:()=>k(!1),onDragEnter:L,onDragOver:R,onDragLeave:W,onDrop:E,style:{position:"relative",display:"flex",alignItems:"center",gap:4,paddingLeft:8+14*t,paddingRight:8,height:24,cursor:"pointer",background:C?"rgba(37,99,235,0.14)":j?"var(--bg-hover)":"transparent",outline:C?"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:x?"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)(ti,{size:14,open:x}):tL(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"})}),l&&j&&(0,n.jsxs)("button",{onClick:t=>{t.stopPropagation(),l(ed(e.fullPath,r))},title:"Insert path into chat",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"center",gap:4,padding:"0 8px",height:20,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:4,color:"var(--accent)",cursor:"pointer",fontSize:11,fontWeight:600,whiteSpace:"nowrap"},children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,n.jsx)("path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"})]}),"mention"]})]}),e.isDir&&x&&(0,n.jsxs)("div",{children:[z.map(e=>(0,n.jsx)(tA,{node:e,depth:t+1,cwd:r,onOpenFile:o,onAtMention:l,expandedPaths:s,onToggleExpanded:a,onUploadFiles:d,uploadTargetPath:c,refreshKey:u,searchQuery:p},e.fullPath)),0===z.length&&v&&!h&&(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 tP({cwd:e,onOpenFile:t,refreshKey:r,onAtMention:o,searchQuery:l="",onSearchChange:s}){let[a,d]=(0,i.useState)([]),[c,u]=(0,i.useState)(!0),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(new Set),[f,v]=(0,i.useState)(!1),[m,y]=(0,i.useState)(null),[b,j]=(0,i.useState)(null),k=(0,i.useRef)(null),w=(0,i.useRef)(null),S=(0,i.useRef)(0),C=(0,i.useCallback)((e,t)=>(u(t),h(null),tR(e).then(e=>d(e)).catch(e=>h(String(e))).finally(()=>u(!1))),[]),z=(0,i.useCallback)((e,t)=>{g(r=>{let n=new Set(r);return t?n.add(e):n.delete(e),n})},[]);(0,i.useEffect)(()=>{let t=k.current!==e;k.current=e,t&&g(new Set),C(e,t)},[e,r,C]),(0,i.useEffect)(()=>()=>{w.current&&clearTimeout(w.current)},[]);let T=(0,i.useCallback)(()=>{C(e,0===a.length)},[e,a.length,C]),M=(0,i.useCallback)(()=>{w.current&&clearTimeout(w.current),w.current=setTimeout(()=>j(null),5e3)},[]),I=(0,i.useCallback)((t,r)=>{if(0===t.length)return;S.current=0,v(!1),w.current&&clearTimeout(w.current);let n=t.reduce((e,t)=>e+t.size,0),i=tB(r,e);y(r),j({phase:"uploading",targetPath:r,fileCount:t.length,loaded:0,total:n,message:`Uploading ${t.length} file${1===t.length?"":"s"} to ${i}`});let o=new FormData;t.forEach(e=>o.append("files",e,e.name));let l=new XMLHttpRequest,s=es(r);l.open("POST",`/api/files/${s}?type=upload`),l.upload.onprogress=e=>{e.lengthComputable&&j(t=>t?{...t,loaded:e.loaded,total:e.total}:t)},l.onload=()=>{y(null);let e={};try{e=JSON.parse(l.responseText)}catch{e={}}if(l.status>=200&&l.status<300){let 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}`)];j({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}),T(),M()}else{let i=e.error??`Upload failed (HTTP ${l.status})`;j({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),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload failed due to a network error"}),M()},l.onabort=()=>{y(null),j({phase:"error",targetPath:r,fileCount:t.length,loaded:0,total:n,message:"Upload canceled"}),M()},l.send(o)},[e,T,M]),L=(0,i.useCallback)(e=>{tE(e.dataTransfer)&&(e.preventDefault(),S.current+=1,v(!0))},[]),R=(0,i.useCallback)(e=>{tE(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},[]),W=(0,i.useCallback)(()=>{S.current-=1,S.current<=0&&(S.current=0,v(!1))},[]),E=(0,i.useCallback)(t=>{if(!tE(t.dataTransfer))return;t.preventDefault(),S.current=0,v(!1);let r=t$(t.dataTransfer);r.length>0&&I(r,e)},[e,I]),$=l.trim()?a.filter(e=>tW(e,l)):a,B=l.trim().length>0;return c?(0,n.jsx)(tN,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:L,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"var(--text-dim)"},children:"Loading files..."})}):p?(0,n.jsx)(tN,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:L,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:11,color:"#f87171"},children:p})}):(0,n.jsx)(tN,{cwd:e,isDraggingFiles:f,uploadState:b,onDragEnter:L,onDragOver:R,onDragLeave:W,onDrop:E,children:(0,n.jsxs)("div",{style:{padding:"2px 4px"},children:[$.map(i=>(0,n.jsx)(tA,{node:i,depth:0,cwd:e,onOpenFile:t,onAtMention:o,expandedPaths:x,onToggleExpanded:z,onUploadFiles:I,uploadTargetPath:m,refreshKey:r,searchQuery:l},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 tN({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",minHeight:"100%",outline:t?"1px solid rgba(37,99,235,0.45)":"none",outlineOffset:-1,background:t?"rgba(37,99,235,0.04)":void 0,transition:"background 0.12s, outline-color 0.12s"},children:[(0,n.jsx)("div",{style:{flex:1,minHeight:0},children:a}),t&&(0,n.jsx)("div",{style:{pointerEvents:"none",position:"absolute",inset:6,top:42,border:"1px dashed rgba(37,99,235,0.62)",borderRadius:8,background:"rgba(37,99,235,0.07)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"7px 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",fontSize:12,boxShadow:"0 8px 24px rgba(0,0,0,0.16)"},children:[(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,n.jsx)("polyline",{points:"17 8 12 3 7 8"}),(0,n.jsx)("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),"Drop to upload into ",tB(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 tD({fileName:e,pageInfo:t,onZoomIn:r,onZoomOut:i,zoom:o,extra:l}){return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0,minHeight:32},children:[e&&(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:300},title:e,children:e}),(0,n.jsx)("span",{style:{marginLeft:"auto"}}),t&&(0,n.jsx)("span",{children:t}),void 0!==o&&i&&r&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:i,title:"Zoom out",style:tH,children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})})}),(0,n.jsxs)("span",{style:{minWidth:36,textAlign:"center",fontVariantNumeric:"tabular-nums"},children:[Math.round(100*o),"%"]}),(0,n.jsx)("button",{onClick:r,title:"Zoom in",style:tH,children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"5",y1:"2",x2:"5",y2:"8"}),(0,n.jsx)("line",{x1:"2",y1:"5",x2:"8",y2:"5"})]})})]}),l]})}let tH={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"},tO=null;function tF({arrayBuffer:e,fileName:t}){let o=(0,i.useRef)(null),[l,s]=(0,i.useState)(!0),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(0),[p,h]=(0,i.useState)(1),[x,g]=(0,i.useState)(1),f=(0,i.useRef)(x);f.current=x;let v=(0,i.useRef)(null),m=(0,i.useRef)(null),y=(0,i.useCallback)(async e=>{if(!tO||!v.current)return;let t=v.current;if(!(e<1)&&!(e>t.numPages)){m.current&&(m.current.cancel(),m.current=null);try{let r=await t.getPage(e),n=r.getViewport({scale:f.current*(window.devicePixelRatio||1)}),i=o.current;if(!i)return;let l=i.querySelector("canvas");if(l||((l=document.createElement("canvas")).style.display="block",l.style.margin="0 auto",i.innerHTML="",i.appendChild(l)),l.width=n.width,l.height=n.height,l.style.width=`${n.width/(window.devicePixelRatio||1)}px`,l.style.height=`${n.height/(window.devicePixelRatio||1)}px`,!l.getContext("2d"))return;let s=r.render({canvas:l,viewport:n});m.current=s,await s.promise,m.current=null}catch(e){"RenderingCancelledException"!==e.name&&console.error("PDF render error:",e)}}},[]);return(0,i.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{tO||((tO=await Promise.all([r.e(2213),r.e(2619)]).then(r.bind(r,12810))).GlobalWorkerOptions.workerSrc=new r.U(r(53228)).toString());let n=await tO.getDocument({data:e}).promise;if(t)return;v.current=n,u(n.numPages),h(1),s(!1)}catch(e){t||(d(String(e)),s(!1))}}(),()=>{t=!0,m.current&&(m.current.cancel(),m.current=null)}},[e]),(0,i.useEffect)(()=>{!l&&c>0&&y(p)},[l,p,c,y]),(0,i.useEffect)(()=>{!l&&c>0&&y(p)},[x]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tD,{fileName:t,pageInfo:c>0?`Page ${p} / ${c}`:void 0,zoom:x,onZoomIn:()=>g(e=>Math.min(e+.25,3)),onZoomOut:()=>g(e=>Math.max(e-.25,.25)),extra:c>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>h(e=>Math.max(e-1,1)),disabled:p<=1,style:{...t_,opacity:p<=1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[p,"/",c]}),(0,n.jsx)("button",{onClick:()=>h(e=>Math.min(e+1,c)),disabled:p>=c,style:{...t_,opacity:p>=c?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#525659",display:"flex",justifyContent:"center",padding:16},children:[l&&(0,n.jsx)("div",{style:{color:"#ccc",fontSize:13,display:"flex",alignItems:"center",gap:6,alignSelf:"flex-start",marginTop:40},children:"Loading PDF..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,alignSelf:"flex-start",marginTop:40},children:a}),(0,n.jsx)("div",{ref:o,style:{visibility:l?"hidden":"visible"}})]})]})}let t_={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};function tU({arrayBuffer:e,fileName:t}){let o=(0,i.useRef)(null),[l,s]=(0,i.useState)(!0),[a,d]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let t=!1;return async function(){s(!0),d(null);try{let{renderAsync:n}=await Promise.all([r.e(2619),r.e(4453),r.e(2274)]).then(r.bind(r,52274)),i=o.current;if(!i||t)return;i.innerHTML="",await n(e,i,void 0,{className:"docx-preview",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!1,ignoreFonts:!1,breakPages:!0,ignoreLastRenderedPageBreak:!1,experimental:!1,trimXmlDeclaration:!0,useBase64URL:!1,renderChanges:!1,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0}),t||s(!1)}catch(e){t||(console.error("DOCX render error:",e),d(String(e)),s(!1))}}(),()=>{t=!0}},[e]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tD,{fileName:t}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"#e8e8e8",padding:"24px 0"},children:[l&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading document..."}),a&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:a}),(0,n.jsx)("div",{ref:o,style:{maxWidth:816,margin:"0 auto",background:"#fff",boxShadow:"0 1px 4px rgba(0,0,0,0.12)",minHeight:100,visibility:l?"hidden":"visible"},className:"docx-preview-container"})]})]})}function tV({arrayBuffer:e,fileName:t}){let[o,l]=(0,i.useState)(!0),[s,a]=(0,i.useState)(null),[d,c]=(0,i.useState)([]),[u,p]=(0,i.useState)(0),h=(0,i.useRef)(null),[x,g]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=await Promise.all([r.e(3524),r.e(8436)]).then(r.bind(r,15967)),i=n.read(e,{type:"array"}),o=i.SheetNames.map(e=>{let t=i.Sheets[e],r=n.utils.sheet_to_html(t,{editable:!1});return{name:e,html:r}});t||(c(o),p(0),l(!1))}catch(e){t||(console.error("XLSX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]),(0,i.useEffect)(()=>{let e=h.current;if(!e)return;let t=e.querySelector("table");if(!t)return;let r=()=>{g(t.querySelectorAll("colgroup col, thead tr:first-child th, tbody tr:first-child td").length>8)};r();let n=new ResizeObserver(r);return n.observe(e),()=>n.disconnect()},[u,d]),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tD,{fileName:t,extra:d.length>1&&(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:2},children:d.map((e,t)=>(0,n.jsx)("button",{onClick:()=>p(t),style:{padding:"2px 10px",fontSize:11,border:"1px solid var(--border)",borderBottom:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:"4px 4px 0 0",background:t===u?"var(--bg-selected)":"none",color:t===u?"var(--text)":"var(--text-muted)",cursor:"pointer",fontWeight:t===u?600:400,transition:"background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="none")},children:e.name},t))})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)"},children:[o&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading spreadsheet..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!o&&!s&&d.length>0&&(0,n.jsx)("div",{ref:h,style:{padding:"0 16px 16px",overflow:x?"auto":"visible"},dangerouslySetInnerHTML:{__html:d[u]?.html??""},className:"xlsx-preview"})]})]})}function tq({arrayBuffer:e,fileName:t}){let[o,l]=(0,i.useState)(!0),[s,a]=(0,i.useState)(null),[d,c]=(0,i.useState)([]),[u,p]=(0,i.useState)(0);(0,i.useEffect)(()=>{let t=!1;return async function(){l(!0),a(null);try{let n=(await Promise.all([r.e(2619),r.e(4453)]).then(r.t.bind(r,54453,23))).default,i=await n.loadAsync(e),o=[];i.forEach(e=>{let t=/^ppt\/slides\/slide(\d+)\.xml$/i.exec(e);t&&o.push({name:e,index:parseInt(t[1],10)})}),o.sort((e,t)=>e.index-t.index);let s=[];for(let e of o){let r;if(t)return;let n=await i.file(e.name).async("string"),o=/<a:t[^>]*>([^<]*)<\/a:t>/g,l=[];for(;null!==(r=o.exec(n));){let e=r[1].trim();e&&l.push(e)}s.push({index:e.index,texts:l})}t||(c(s),l(!1))}catch(e){t||(console.error("PPTX parse error:",e),a(String(e)),l(!1))}}(),()=>{t=!0}},[e]);let h=d[u],x=d.length;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsx)(tD,{fileName:t,pageInfo:x>0?`Slide ${u+1} / ${x}`:void 0,extra:x>1&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("button",{onClick:()=>p(e=>Math.max(e-1,0)),disabled:u<=0,style:{...tK,opacity:u<=0?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"6 2 3 5 6 8"})})}),(0,n.jsxs)("span",{style:{fontSize:11,color:"var(--text-dim)",minWidth:28,textAlign:"center"},children:[u+1,"/",x]}),(0,n.jsx)("button",{onClick:()=>p(e=>Math.min(e+1,x-1)),disabled:u>=x-1,style:{...tK,opacity:u>=x-1?.4:1},children:(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:(0,n.jsx)("polyline",{points:"4 2 7 5 4 8"})})})]})}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",display:"flex",justifyContent:"center",alignItems:"flex-start",padding:24},children:[o&&(0,n.jsx)("div",{style:{color:"var(--text-muted)",fontSize:13,padding:"40px 16px",textAlign:"center"},children:"Loading presentation..."}),s&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,padding:"40px 16px",textAlign:"center"},children:s}),!o&&!s&&h&&(0,n.jsxs)("div",{style:{width:"100%",maxWidth:800},children:[(0,n.jsxs)("div",{style:{background:"#fff",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"8px 16px",background:"var(--bg)",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:["Slide ",h.index]}),(0,n.jsx)("div",{style:{padding:"24px 32px 40px",minHeight:200},children:0===h.texts.length?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontStyle:"italic",fontSize:13},children:"(No text content)"}):(0,n.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none"},children:h.texts.map((e,t)=>(0,n.jsx)("li",{style:{padding:"4px 0",fontSize:14,lineHeight:1.6,color:"var(--text)",borderBottom:t<h.texts.length-1?"1px solid var(--bg-panel)":"none"},children:e},t))})})]}),x>1&&(0,n.jsxs)("div",{style:{marginTop:24},children:[(0,n.jsx)("div",{style:{fontSize:12,color:"var(--text-dim)",marginBottom:8},children:"All slides"}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:8},children:d.map((e,t)=>(0,n.jsxs)("button",{onClick:()=>p(t),style:{padding:"10px 12px",background:t===u?"var(--bg-selected)":"var(--bg)",border:t===u?"2px solid var(--accent)":"1px solid var(--border)",borderRadius:6,cursor:"pointer",textAlign:"left",fontSize:11,color:"var(--text-muted)",transition:"border-color 0.12s, background 0.12s"},onMouseEnter:e=>{t!==u&&(e.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:e=>{t!==u&&(e.currentTarget.style.background="var(--bg)")},children:[(0,n.jsxs)("div",{style:{fontWeight:600,marginBottom:2,color:"var(--text)"},children:["Slide ",e.index]}),(0,n.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.texts[0]||"(empty)"})]},e.index))})]})]})]})]})}let tK={display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,padding:0,background:"none",border:"1px solid var(--border)",borderRadius:4,color:"var(--text-muted)",cursor:"pointer"};var tJ=r(27071),tY=r(89561),tZ=r(82228),tG=r(46732),tX=r(74059),tQ=r(13307),t0=r(53689),t1=r(14097),t2=r(25460),t4=r(20144),t5=r(82774),t3=r(62733),t6=r(77482),t8=r(55135),t7=r(11209),t9=r(88198),re=r(4238),rt=r(44542);function rr({initialContent:e,language:t,isDark:r,onChange:o,onSave:l}){let s=(0,i.useRef)(null),a=(0,i.useRef)(null),d=(0,i.useRef)(o),c=(0,i.useRef)(l);return d.current=o,c.current=l,(0,i.useEffect)(()=>{let n=s.current;if(!n)return;let i=function(e){switch(e){case"javascript":case"typescript":return(0,tQ.Q2)({typescript:"typescript"===e});case"python":return(0,t0.Hg)();case"sql":return(0,t1.ll)();case"json":return(0,t2.Pq)();case"html":return(0,t4.qy)();case"css":case"scss":case"less":return(0,t5.AH)();case"markdown":return(0,t3.wD)();case"xml":case"yaml":case"toml":return(0,t6._n)();case"rust":return(0,t8.T)();case"go":return(0,t7.go)();case"java":return(0,t9.J)();default:return null}}(t),o=l?tY.w4.of([{key:"Mod-s",run:()=>(c.current?.(),!0),preventDefault:!0}]):[],u=tJ.$t.create({doc:e,extensions:[(0,tY.$K)(),(0,tY.dz)(),(0,tZ.b6)(),(0,tG.y9)(tG.Zt),tY.w4.of([...tZ.pw,...tZ.cL,...rt.OO,...re.Eo]),o,(0,rt.yU)(),...r?[tX.bM]:[],...i?[i]:[],tY.Lz.updateListener.of(e=>{e.docChanged&&d.current?.(e.state.doc.toString())}),tY.Lz.theme({"&":{height:"100%",fontSize:"13px"},".cm-scroller":{overflow:"auto",fontFamily:"var(--font-mono)"},".cm-content":{padding:"8px 0"},".cm-gutters":{borderRight:"1px solid var(--border)",background:"var(--bg)",color:"var(--text-dim)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground":{background:r?"#3a3d4e":"#b4d5fe"}})]}),p=new tY.Lz({state:u,parent:n});return a.current=p,()=>{p.destroy(),a.current=null}},[t,r]),(0,i.useEffect)(()=>{let t=a.current;t&&t.state.doc.toString()!==e&&t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}})},[e]),(0,n.jsx)("div",{ref:s,style:{height:"100%",overflow:"hidden"}})}function rn({dir:e}){return(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:"asc"===e?(0,n.jsx)("polyline",{points:"2 6 5 3 8 6"}):(0,n.jsx)("polyline",{points:"2 4 5 7 8 4"})})}function ri(e,t,r){let n=new Blob([e],{type:r}),i=URL.createObjectURL(n),o=document.createElement("a");o.href=i,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),setTimeout(()=>URL.revokeObjectURL(i),1e3)}function ro({content:e,delimiter:t,fileName:r="table"}){let[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)("asc"),{header:d,rows:c}=(0,i.useMemo)(()=>(function(e,t){let r=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),n=[],i=[],o="",l=!1;for(let e=0;e<r.length;e+=1){let s=r[e];if('"'===s){l&&'"'===r[e+1]?(o+='"',e+=1):l=!l;continue}if(s===t&&!l){i.push(o),o="";continue}if("\n"===s&&!l){i.push(o),i.some(e=>e.length>0)&&n.push(i),i=[],o="";continue}o+=s}i.push(o),i.some(e=>e.length>0)&&n.push(i);let s=n[0]??[],a=s.length;return{header:s,rows:n.slice(1).map(e=>{let t=[...e];for(;t.length<a;)t.push("");return t.slice(0,a)})}})(e,t),[e,t]),u=(0,i.useMemo)(()=>{if(null===o)return c;let e=[...c];return e.sort((e,t)=>{let r=e[o]??"",n=t[o]??"",i=Number(r),l=Number(n),a=""===r||""===n||Number.isNaN(i)||Number.isNaN(l)?r.localeCompare(n):i-l;return"asc"===s?a:-a}),e},[c,s,o]);return 0===d.length&&0===c.length?(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"No tabular data to display"}):(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--text-dim)"},children:[c.length," rows, ",d.length," columns"]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,n.jsxs)("button",{onClick:()=>{ri(e,r," "===t?"text/tab-separated-values;charset=utf-8":"text/csv;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:["Export "," "===t?"TSV":"CSV"]}),(0,n.jsx)("button",{onClick:()=>{ri(JSON.stringify(u.map(e=>Object.fromEntries(d.map((t,r)=>[t||`column_${r+1}`,e[r]??""]))),null,2),r.replace(/\.[^.]+$/,"")+".json","application/json;charset=utf-8")},style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5},children:"Export JSON"})]})]}),(0,n.jsx)("div",{style:{minHeight:0,flex:1,overflow:"auto",background:"var(--bg)"},children:(0,n.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",tableLayout:"fixed",fontSize:12},children:[(0,n.jsx)("thead",{style:{position:"sticky",top:0,zIndex:1,background:"var(--bg-panel)"},children:(0,n.jsx)("tr",{children:d.map((e,t)=>(0,n.jsx)("th",{onClick:()=>{o===t?a(e=>"asc"===e?"desc":"asc"):(l(t),a("asc"))},title:e,style:{padding:"8px 10px",borderBottom:"1px solid var(--border)",textAlign:"left",color:"var(--text-muted)",fontWeight:600,cursor:"pointer",userSelect:"none",fontSize:11,whiteSpace:"nowrap"},children:(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,minWidth:0},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:e||`column_${t+1}`}),o===t&&(0,n.jsx)("span",{style:{color:"var(--accent)",display:"inline-flex",flexShrink:0},children:(0,n.jsx)(rn,{dir:s})})]})},`${e}-${t}`))})}),(0,n.jsx)("tbody",{children:u.map((e,t)=>(0,n.jsx)("tr",{style:{borderBottom:"1px solid rgba(127,127,127,0.14)",background:t%2==1?"var(--bg-subtle)":"transparent"},children:d.map((r,i)=>(0,n.jsx)("td",{title:e[i]??"",style:{padding:"6px 10px",color:"var(--text)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:0},children:e[i]??""},`${r}-${t}-${i}`))},t))})]})})]})}let rl=new Set(["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]),rs=new Set(["mp3","wav","ogg","oga","opus","m4a","aac","flac","weba","webm"]),ra=new Set(["pdf","docx","xlsx","pptx","doc","xls","ppt"]);function rd(e){let t=ea(e).toLowerCase().split(".").pop()??"";return"csv"===t?",":"tsv"===t?" ":null}function rc(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function ru({oldContent:e,newContent:t}){let r=function(e,t){let r=e.length,n=t.length,i=r+n,o=Array(2*i+1).fill(0),l=[];for(let s=0;s<=i;s++){l.push([...o]);for(let a=-s;a<=s;a+=2){let d,c=(d=a===-s||a!==s&&o[a-1+i]<o[a+1+i]?o[a+1+i]:o[a-1+i]+1)-a;for(;d<r&&c<n&&e[d]===t[c];)d++,c++;if(o[a+i]=d,d>=r&&c>=n){let o=[],a=r,d=n;for(let r=s;r>0;r--){let n,s=l[r-1],c=a-d;n=c===-r||c!==r&&s[c-1+i]<s[c+1+i]?c+1:c-1;let u=s[n+i],p=u-n;for(;a>u&&d>p;)a--,d--,o.unshift({type:"unchanged",text:e[a],lineNo:a+1});r>0&&(a>u?(a--,o.unshift({type:"removed",text:e[a],lineNo:a+1})):(d--,o.unshift({type:"added",text:t[d],lineNo:d+1})))}for(;a>0&&d>0;)a--,d--,o.unshift({type:"unchanged",text:e[a],lineNo:a+1});return o}}}return[...e.map((e,t)=>({type:"removed",text:e,lineNo:t+1})),...t.map((e,t)=>({type:"added",text:e,lineNo:t+1}))]}(e.split("\n"),t.split("\n"));if(!r.some(e=>"unchanged"!==e.type))return(0,n.jsx)("div",{style:{padding:"12px 16px",fontSize:12,color:"var(--text-dim)",fontFamily:"var(--font-mono)"},children:"No changes"});let i=new Set(r.flatMap((e,t)=>"unchanged"!==e.type?[t]:[])),o=new Set;for(let e of i)for(let t=Math.max(0,e-3);t<=Math.min(r.length-1,e+3);t++)o.add(t);let l=[],s=0;for(;s<r.length;)if(o.has(s)){let e=[];for(;s<r.length&&o.has(s);)e.push(r[s]),s++;l.push({hidden:!1,lines:e})}else{let e=0;for(;s<r.length&&!o.has(s);)e++,s++;l.push({hidden:!0,count:e})}let a=[],d=1;for(let e of r)"removed"===e.type?a.push(0):a.push(d++);let c=0;return(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:13,lineHeight:1.6},children:l.map((e,t)=>{if(e.hidden){let r=(0,n.jsxs)("div",{style:{padding:"2px 16px",color:"var(--text-dim)",background:"var(--bg-panel)",fontSize:11,borderTop:"1px solid var(--border)",borderBottom:"1px solid var(--border)"},children:["... ",e.count," unchanged lines ..."]},t);return c+=e.count,r}let r=e.lines.map((e,t)=>{let r=a[c+t],i="added"===e.type?"rgba(0,200,80,0.12)":"removed"===e.type?"rgba(240,60,60,0.14)":"transparent",o="added"===e.type?"+":"removed"===e.type?"-":" ",l="added"===e.type?"#4ade80":"removed"===e.type?"#f87171":"var(--text-dim)";return(0,n.jsxs)("div",{style:{display:"flex",background:i,borderLeft:"added"===e.type?"3px solid #4ade80":"removed"===e.type?"3px solid #f87171":"3px solid transparent"},children:[(0,n.jsx)("span",{style:{minWidth:44,padding:"0 8px 0 16px",textAlign:"right",color:"var(--text-dim)",userSelect:"none",fontSize:11,lineHeight:1.6,borderRight:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:"removed"===e.type?e.lineNo:r||""}),(0,n.jsx)("span",{style:{minWidth:16,padding:"0 6px",color:l,userSelect:"none",flexShrink:0,fontWeight:600},children:o}),(0,n.jsx)("span",{style:{flex:1,padding:"0 8px 0 0",whiteSpace:"pre",color:"var(--text)",overflowX:"auto"},children:e.text||"\xa0"})]},t)});return c+=e.lines.length,(0,n.jsx)("div",{children:r},t)})})}function rp({filePath:e,cwd:t}){let[r,o]=(0,i.useState)(!1),[l,s]=(0,i.useState)(0),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(100),f=(0,i.useRef)(null),v=ea(e).toLowerCase().split(".").pop()??"";(0,i.useEffect)(()=>{s(0),d(null),u(null),h(null),o(!1),g(100),f.current&&(f.current.close(),f.current=null);let t=es(e),r=new EventSource(`/api/files/${t}?type=watch`);return f.current=r,r.addEventListener("connected",()=>o(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}s(e=>e+1)}),r.addEventListener("error",()=>o(!1)),r.onerror=()=>o(!1),()=>{r.close(),f.current=null}},[e]);let m=es(e),y=`/api/files/${m}?type=read${l?`&v=${l}`:""}`,b=null!=a?rc(a):null,j=e=>g(Math.max(10,Math.min(500,e)));return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"var(--font-mono)"},title:e,children:ed(e,t)}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:[(0,n.jsx)("button",{onClick:()=>j(x-25),title:"Zoom out",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"-"}),(0,n.jsx)("select",{value:x,onChange:e=>j(Number(e.target.value)),title:"Image zoom",style:{height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text)",fontSize:11,fontFamily:"var(--font-mono)",outline:"none",cursor:"pointer"},children:[25,50,75,100,125,150,200,300].map(e=>(0,n.jsxs)("option",{value:e,children:[e,"%"]},e))}),(0,n.jsx)("button",{onClick:()=>j(x+25),title:"Zoom in",style:{width:24,height:22,border:"1px solid var(--border)",borderRadius:5,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:13,lineHeight:1},children:"+"})]}),(0,n.jsx)("span",{style:{flexShrink:0},children:v||"image"}),c&&(0,n.jsxs)("span",{children:[c.w," \xd7 ",c.h]}),b&&(0,n.jsx)("span",{children:b}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg-panel)",WebkitOverflowScrolling:"touch",overscrollBehavior:"contain",backgroundImage:"linear-gradient(45deg, var(--bg) 25%, transparent 25%), linear-gradient(-45deg, var(--bg) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--bg) 75%), linear-gradient(-45deg, transparent 75%, var(--bg) 75%)",backgroundSize:"16px 16px",backgroundPosition:"0 0, 0 8px, 8px -8px, -8px 0px"},children:p?(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p}):(0,n.jsx)("div",{style:{minWidth:"100%",minHeight:"100%",width:"max-content",height:"max-content",boxSizing:"border-box",display:"flex",alignItems:"flex-start",justifyContent:"flex-start",padding:16},children:(0,n.jsx)("img",{src:y,alt:e,onLoad:e=>{let t=e.currentTarget;u({w:t.naturalWidth,h:t.naturalHeight})},onError:()=>h("Failed to load image"),style:{width:c?Math.max(1,Math.round(c.w*x/100)):"auto",height:c?Math.max(1,Math.round(c.h*x/100)):"auto",maxWidth:"none",maxHeight:"none",objectFit:"contain",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})})})]})}function rh({filePath:e,cwd:t}){let[r,o]=(0,i.useState)(!1),[l,s]=(0,i.useState)(0),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),x=(0,i.useRef)(null),g=ea(e).toLowerCase().split(".").pop()??"";(0,i.useEffect)(()=>{s(0),d(null),u(null),h(null),o(!1),x.current&&(x.current.close(),x.current=null);let t=es(e),r=new EventSource(`/api/files/${t}?type=watch`);return x.current=r,r.addEventListener("connected",()=>o(!0)),r.addEventListener("change",e=>{try{let t=JSON.parse(e.data);"number"==typeof t.size&&d(t.size)}catch{}u(null),h(null),s(e=>e+1)}),r.addEventListener("error",()=>o(!1)),r.onerror=()=>o(!1),()=>{r.close(),x.current=null}},[e]);let f=es(e),v=`/api/files/${f}?type=read${l?`&v=${l}`:""}`;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:ed(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:g||"audio"}),null!=c&&(0,n.jsx)("span",{children:function(e){if(!Number.isFinite(e))return"";let t=Math.round(e),r=Math.floor(t/60);return`${r}:${String(t%60).padStart(2,"0")}`}(c)}),null!=a&&(0,n.jsx)("span",{children:rc(a)}),(0,n.jsxs)("span",{title:r?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:r?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:r?"#4ade80":"var(--border)",display:"inline-block",boxShadow:r?"0 0 4px #4ade80":"none"}}),r?"live":"static"]})]}),(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"var(--bg-panel)"},children:(0,n.jsxs)("div",{style:{width:"min(680px, 100%)"},children:[p&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:13,marginBottom:12,textAlign:"center"},children:p}),(0,n.jsx)("audio",{controls:!0,preload:"metadata",src:v,onLoadedMetadata:e=>u(e.currentTarget.duration),onError:()=>h("Failed to load audio"),style:{width:"100%"}},v)]})})]})}function rx({filePath:e,cwd:t,onOpenFile:r}){let i,o,l;return(i=ea(e).toLowerCase().split(".").pop()??"",rl.has(i))?(0,n.jsx)(rp,{filePath:e,cwd:t}):(o=ea(e).toLowerCase().split(".").pop()??"",rs.has(o))?(0,n.jsx)(rh,{filePath:e,cwd:t}):(l=ea(e).toLowerCase().split(".").pop()??"",ra.has(l))?(0,n.jsx)(rg,{filePath:e,cwd:t}):(0,n.jsx)(rf,{filePath:e,cwd:t,onOpenFile:r})}function rg({filePath:e,cwd:t}){let r,[o,l]=(0,i.useState)(null),[s,a]=(0,i.useState)(!0),[d,c]=(0,i.useState)(null),u=(0,i.useRef)(null),p=(0,i.useRef)(0),h="pdf"===(r=ea(e).toLowerCase().split(".").pop()??"")?"pdf":"docx"===r||"doc"===r?"docx":"xlsx"===r||"xls"===r?"xlsx":"pptx"===r||"ppt"===r?"pptx":"other",x=ea(e).toLowerCase().split(".").pop()??"",g=(0,i.useCallback)(async e=>{try{let t=es(e),r=p.current?`&v=${p.current}`:"",n=await fetch(`/api/files/${t}?type=read${r}`);if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));c(e.error??`HTTP ${n.status}`);return}let i=await n.arrayBuffer();l(i),c(null)}catch(e){c(String(e))}},[]);if((0,i.useEffect)(()=>{a(!0),c(null),l(null),p.current=0,u.current&&(u.current.close(),u.current=null),g(e).finally(()=>a(!1));let t=es(e),r=new EventSource(`/api/files/${t}?type=watch`);return u.current=r,r.addEventListener("connected",()=>{}),r.addEventListener("change",()=>{p.current+=1,g(e)}),r.addEventListener("error",()=>{}),r.onerror=()=>{},()=>{r.close(),u.current=null}},[e,g]),s&&!o)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(d&&!o)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:d});if(!o)return null;let f=ed(e,t);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:["pdf"===h&&(0,n.jsx)(tF,{arrayBuffer:o,fileName:f}),"docx"===h&&(0,n.jsx)(tU,{arrayBuffer:o,fileName:f}),"xlsx"===h&&(0,n.jsx)(tV,{arrayBuffer:o,fileName:f}),"pptx"===h&&(0,n.jsx)(tq,{arrayBuffer:o,fileName:f}),"other"===h&&(0,n.jsxs)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:["Unsupported document format: .",x]})]})}function rf({filePath:e,cwd:t,onOpenFile:r}){let{isDark:o}=I(),[l,s]=(0,i.useState)(null),[a,d]=(0,i.useState)(null),[c,u]=(0,i.useState)(!0),[p,h]=(0,i.useState)(null),[x,g]=(0,i.useState)(null),[f,v]=(0,i.useState)(!1),[m,y]=(0,i.useState)("source"),[b,j]=(0,i.useState)(!1),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(0),[z,T]=(0,i.useState)(!1),[M,L]=(0,i.useState)(""),[R,W]=(0,i.useState)(!1),[E,$]=(0,i.useState)(!1),[B,A]=(0,i.useState)(!1),[P,N]=(0,i.useState)(null),D=(0,i.useRef)(null),H=(0,i.useRef)(!1);H.current=z,(0,i.useRef)(null).current=l;let O=(0,i.useCallback)((e,t=!1)=>{let r=es(e);return fetch(`/api/files/${r}?type=read`).then(e=>e.json()).then(e=>e.error?(h(e.error),null):(t?(s(t=>(t&&d(t.content),e)),C(e=>e+1)):s(e),h(null),e)).catch(e=>(h(String(e)),null))},[]);(0,i.useEffect)(()=>{u(!0),h(null),s(null),d(null),v(!1),y("source"),j(!1),C(0),w(!1),D.current&&(D.current.close(),D.current=null),O(e).then(t=>{(t?.language==="markdown"||rd(e))&&v(!0)}).finally(()=>u(!1));let t=es(e),r=new EventSource(`/api/files/${t}?type=watch`);return D.current=r,r.addEventListener("connected",()=>{w(!0)}),r.addEventListener("change",()=>{H.current?$(!0):O(e,!0)}),r.addEventListener("error",()=>{w(!1)}),r.onerror=()=>{w(!1)},()=>{r.close(),D.current=null}},[e,O]);let F=(0,i.useCallback)(()=>{l&&(T(!0),L(l.content),N(l.mtime??null),A(!1),g(null),$(!1),v(!1),y("source"))},[l]),_=(0,i.useCallback)(async(t=!1)=>{let r=es(e);W(!0),A(!1),g(null);try{let n=await fetch(`/api/files/${r}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:M,...t||!P?{}:{baseMtime:P}})});if(409===n.status){let e=await n.json().catch(()=>({error:"File changed on disk since it was opened"}));throw A(!0),$(!0),Error(e.error??"File changed on disk since it was opened")}if(!n.ok){let e=await n.json().catch(()=>({error:String(n.status)}));throw Error(e.error??`HTTP ${n.status}`)}let i=await O(e,!0);N(i?.mtime??null),T(!1),$(!1),A(!1)}catch(e){g(e instanceof Error?e.message:String(e))}finally{W(!1)}},[e,M,P,O]),U=(0,i.useCallback)(()=>{T(!1),$(!1),A(!1),g(null),N(null)},[]),V=(0,i.useCallback)(async()=>{let t=await O(e,!0);t&&(L(t.content),N(t.mtime??null),$(!1),A(!1),g(null),h(null))},[O,e]);if(c)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:"Loading..."});if(p)return(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:p});if(!l)return null;let q="html"===l.language,K="markdown"===l.language,J=rd(e),Y=null!==J,Z=l.content.split("\n"),G=null!==a&&a!==l.content;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"4px 16px",borderBottom:"1px solid var(--border)",fontSize:11,color:"var(--text-dim)",background:"var(--bg)",flexShrink:0},children:[(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)"},title:e,children:ed(e,t)}),(0,n.jsx)("span",{style:{marginLeft:"auto"},children:l.language}),"source"===m&&(0,n.jsxs)("span",{children:[Z.length," lines"]}),(0,n.jsx)("span",{children:rc(l.size)}),(0,n.jsxs)("span",{title:k?"Live sync active":"Not watching",style:{display:"flex",alignItems:"center",gap:4,color:k?"#4ade80":"var(--text-dim)"},children:[(0,n.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:k?"#4ade80":"var(--border)",display:"inline-block",boxShadow:k?"0 0 4px #4ade80":"none"}}),k?"live":"static"]}),z?(0,n.jsxs)(n.Fragment,{children:[(E||B||x)&&(0,n.jsxs)("span",{title:"File changed on disk while editing",style:{padding:"2px 8px",fontSize:11,background:"rgba(234,179,8,0.1)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:5,display:"flex",alignItems:"center",gap:4},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,n.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),(0,n.jsx)("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),x??"External change",(E||B)&&(0,n.jsx)("button",{onClick:V,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:"pointer",background:"rgba(234,179,8,0.2)",color:"#b8860b",border:"1px solid rgba(234,179,8,0.3)",borderRadius:3,fontWeight:600},children:"Reload"}),B&&(0,n.jsx)("button",{onClick:()=>void _(!0),disabled:R,style:{marginLeft:4,padding:"1px 6px",fontSize:10,cursor:R?"not-allowed":"pointer",background:"rgba(239,68,68,0.12)",color:"#ef4444",border:"1px solid rgba(239,68,68,0.3)",borderRadius:3,fontWeight:600},children:"Overwrite"})]}),(0,n.jsx)("button",{onClick:()=>void _(),disabled:R,title:"Save file (Ctrl+S)",style:{padding:"2px 10px",fontSize:11,cursor:R?"not-allowed":"pointer",background:"var(--accent)",color:"#fff",border:"1px solid var(--accent)",borderRadius:5,fontWeight:600,opacity:R?.6:1},children:R?"Saving…":"Save"}),(0,n.jsx)("button",{onClick:U,title:"Cancel editing",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="rgba(239,68,68,0.1)",e.currentTarget.style.color="#ef4444",e.currentTarget.style.borderColor="rgba(239,68,68,0.3)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Cancel"})]}):(0,n.jsx)("button",{onClick:F,title:"Edit file",style:{padding:"2px 10px",fontSize:11,cursor:"pointer",background:"var(--bg-hover)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:600},onMouseEnter:e=>{e.currentTarget.style.background="var(--accent)",e.currentTarget.style.color="#fff",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"},children:"Edit"}),G&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>y("source"),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:"source"===m?"var(--bg-selected)":"var(--bg-hover)",color:"source"===m?"var(--text)":"var(--text-muted)",fontWeight:"source"===m?600:400},children:"Source"}),(0,n.jsxs)("button",{onClick:()=>y("diff"),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:"diff"===m?"var(--bg-selected)":"var(--bg-hover)",color:"diff"===m?"var(--text)":"var(--text-muted)",fontWeight:"diff"===m?600:400},children:["Diff ",S>0&&(0,n.jsxs)("span",{style:{color:"#4ade80",marginLeft:2},children:["+",S]})]})]}),"source"===m&&!f&&(0,n.jsx)("button",{onClick:()=>j(e=>!e),title:b?"Disable word wrap":"Enable word wrap",style:{padding:"2px 8px",fontSize:11,cursor:"pointer",background:b?"var(--bg-selected)":"var(--bg-hover)",color:b?"var(--text)":"var(--text-muted)",border:"1px solid var(--border)",borderRadius:5,fontWeight:b?600:400},children:"wrap"}),q&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Code"}),(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"})]}),K&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Preview"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:z?"Edit":"Raw"})]}),Y&&"source"===m&&(0,n.jsxs)("div",{style:{display:"flex",borderRadius:5,overflow:"hidden",border:"1px solid var(--border)"},children:[(0,n.jsx)("button",{onClick:()=>v(!0),style:{padding:"2px 8px",fontSize:11,border:"none",cursor:"pointer",background:f?"var(--bg-selected)":"var(--bg-hover)",color:f?"var(--text)":"var(--text-muted)",fontWeight:f?600:400},children:"Table"}),(0,n.jsx)("button",{onClick:()=>v(!1),style:{padding:"2px 8px",fontSize:11,border:"none",borderLeft:"1px solid var(--border)",cursor:"pointer",background:f?"var(--bg-hover)":"var(--bg-selected)",color:f?"var(--text-muted)":"var(--text)",fontWeight:f?400:600},children:"Raw"})]})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"auto",background:"var(--bg)"},children:z&&!(K&&f)?(0,n.jsx)(rr,{initialContent:M,language:l.language,isDark:o,onChange:L,onSave:()=>void _()}):z&&K&&f?(0,n.jsx)(eg,{content:M,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):"diff"===m&&G?(0,n.jsx)(ru,{oldContent:a,newContent:l.content,language:l.language}):q&&f?(0,n.jsx)("iframe",{srcDoc:l.content,sandbox:"allow-scripts",style:{width:"100%",height:"100%",border:"none",background:"var(--bg)"},title:"HTML preview"}):K&&f?(0,n.jsx)(eg,{content:l.content,className:"markdown-body markdown-file-preview",codeBlockVariant:"file",baseFilePath:e,onOpenLocalFile:r,style:{padding:"28px 36px",maxWidth:920,margin:"0 auto"}}):Y&&f&&J?(0,n.jsx)(ro,{content:l.content,delimiter:J,fileName:ea(e)}):(0,n.jsx)(ee.A,{language:"text"===l.language||"csv"===l.language||"tsv"===l.language?"plaintext":l.language,style:eo(o),showLineNumbers:!0,lineNumberStyle:{color:"var(--text-dim)",fontStyle:"normal",minWidth:"3em",paddingRight:"1em"},customStyle:{margin:0,padding:"12px 0",background:"var(--bg)",fontSize:13,lineHeight:1.6,fontFamily:"var(--font-mono)",minHeight:"100%"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},wrapLongLines:b,children:l.content})})]})}function rv(e,t,r){return Math.min(Math.max(e,t),r)}function rm({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),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:rv(e.left,8,Math.max(8,window.innerWidth-n-8)),top:rv(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),y.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=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:rv(r,8,Math.max(8,window.innerWidth-120)),top:rv(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||p.maximized||(t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture(t.pointerId),b.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]),z=(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:rv(r,360,Math.max(360,window.innerWidth-e.left-8)),height:rv(n,280,Math.max(280,window.innerHeight-e.top-8))}))},[]),T=(0,i.useCallback)(e=>{let t=b.current;t?.pointerId===e.pointerId&&(e.currentTarget.releasePointerCapture(e.pointerId),b.current=null,v(!1))},[]),M=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:{...M,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:ry,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:ry,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)(rx,{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:z,onPointerUp:T,onPointerCancel:T,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 ry={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},rb={__soul__:{apiPath:"/api/soul",title:"SOUL.md"},__harness__:{apiPath:"/api/harness",title:"HARNESS.md"}};function rj({filePath:e}){let t=rb[e],{isDark:r}=I(),[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)(rr,{initialContent:o,language:"markdown",isDark:r,onChange:l,onSave:g})})]}):null}function rk(){document.body.style.cursor="",document.body.style.userSelect=""}function rw({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),rk(),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,rk(),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 rS({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 6a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v3"}),(0,n.jsx)("path",{d:"M3 6v12a2 2 0 0 0 2 2h8"}),(0,n.jsx)("path",{d:"M17 13v7"}),(0,n.jsx)("path",{d:"M14 16h6"}),(0,n.jsx)("path",{d:"M14 20h6"})]}):"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.1a5 5 0 0 1-6.6 6.6L7.3 19.7a2.1 2.1 0 0 1-3-3l6.9-6.9a5 5 0 0 1 6.6-6.6l-3.1 3.1Z"})}):tL(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 rC(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 rz(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 rT(e){return e?ea(e)||e:"-"}function rM({refreshKey:e=0,cwd:t}){let[r,o]=(0,i.useState)(null),[l,s]=(0,i.useState)(null),[a,d]=(0,i.useState)(null),c=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/agent/runtime",{cache:"no-store"}),t=await e.json();if(!e.ok||!Array.isArray(t.sessions))throw Error(t.error??`HTTP ${e.status}`);o(t),s(null)}catch(e){s(e instanceof Error?e.message:String(e))}},[]);(0,i.useEffect)(()=>{c()},[c,e]),(0,i.useEffect)(()=>{let e=window.setInterval(()=>{c()},3e3);return()=>window.clearInterval(e)},[c]);let u=(0,i.useCallback)(async e=>{d(e.sessionId),s(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 c()}catch(e){s(e instanceof Error?e.message:String(e))}finally{d(null)}},[c]),p=(0,i.useMemo)(()=>[...r?.sessions??[]].sort((e,t)=>{let r=+!!e.busy,n=+!!t.busy;return r!==n?n-r:Date.parse(t.lastEventAt??t.runStartedAt??"0")-Date.parse(e.lastEventAt??e.runStartedAt??"0")}),[r]),h=p.filter(e=>e.busy),x=h.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",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text)"},children:"Tools"}),(0,n.jsxs)("div",{style:{marginTop:3,fontSize:11,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[h.length," agent running \xb7 ",r?.activeSessions??0," active",t?` \xb7 ${rT(t)}`:""]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void c(),style:rW,title:"Refresh runtime",children:"Refresh"})]}),l&&(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:l})]}),(0,n.jsxs)("div",{style:{flex:1,overflow:"auto",padding:10},children:[(0,n.jsx)(rI,{title:"Agent Runtime",subtitle:x.length>0?`${x.length} waiting for first token`:`${h.length} active chat${1===h.length?"":"s"}`}),0===p.length?(0,n.jsx)(rL,{label:"No agent runtime is active."}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:p.map(e=>{var t;let r=e.model?`${e.model.provider}/${e.model.id}`:"-",i=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:rC(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:rC(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:[rT(e.cwd)," \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)(rR,{label:"uptime",value:rz(e.uptimeMs)}),(0,n.jsx)(rR,{label:"wait",value:rz(e.waitingForModelMs),color:"waiting_model"===e.phase?rC(e.phase):void 0}),(0,n.jsx)(rR,{label:"pending",value:null===e.pendingMessageCount?"-":String(e.pendingMessageCount)}),(0,n.jsx)(rR,{label:"event",value:e.lastEventType??"-"}),(0,n.jsx)(rR,{label:"tools",value:i||"-"}),(0,n.jsx)(rR,{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. This usually means the upstream provider or gateway is still queueing the turn."}),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 u(e),disabled:!e.busy||a===e.sessionId,style:{...rW,border:"1px solid rgba(239,68,68,0.35)",color:"#ef4444",background:"rgba(239,68,68,0.08)",opacity:e.busy&&a!==e.sessionId?1:.55},children:"Abort"})})]},e.sessionId)})})]})]})}function rI({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 rL({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 rR({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})]})}let rW={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},rE=["openai-responses","openai-completions"],r$=[/\/chat\/completions(?:$|[?#])/i,/deepseek/i,/moonshot|kimi/i,/dashscope|aliyun|qwen/i,/zhipu|bigmodel|chatglm|glm/i,/siliconflow/i,/volcengine|ark\.cn|doubao/i,/baichuan/i,/minimax/i,/stepfun|step-api/i,/lingyiwanwu|yi-api/i],rB=[/api\.openai\.com/i,/\/responses(?:$|[?#])/i];function rA(e,t,r="openai-responses"){let n=`${t??""} ${e??""}`.toLowerCase();return n.trim()?rB.some(e=>e.test(n))?"openai-responses":r$.some(e=>e.test(n))?"openai-completions":r:r}function rP(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 rN=rP((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"})),rD=rP((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"})),rH=rP((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"})]})),rO=rP((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"})]})),rF=rP((0,n.jsx)("path",{d:"M4 4h16v16H4z",fill:"#F55036"}),"0 0 24 24"),r_=rP((0,n.jsx)("path",{d:"M4 4h5v5H4zm5.5 0h5v5h-5zM15 4h5v5h-5zM4 9.5h5v5H4zm5.5 5.5h5v5h-5zM15 9.5h5v5h-5z",fill:"#FA6F00"})),rU=rP((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),rV=rP((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"})]})),rq=rP((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#FF5722"}),"0 0 24 24"),rK=rP((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"})),rJ=rP((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"})]})),rY=rP((0,n.jsx)("path",{d:"M12 2l9 5v10l-9 5-9-5V7l9-5z",stroke:"currentColor",strokeWidth:"1.5",fill:"none"})),rZ=rP((0,n.jsx)("path",{d:"M4 4l8 8 8-8M4 20l8-8 8 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})),rG=rP((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"})),rX={anthropic:{Icon:rN,hasColor:!1},openai:{Icon:rD,hasColor:!1},"openai-codex":{Icon:rD,hasColor:!1},google:{Icon:rH,hasColor:!0},"google-vertex":{Icon:rH,hasColor:!0},deepseek:{Icon:rO,hasColor:!0},groq:{Icon:rF,hasColor:!1},mistral:{Icon:r_,hasColor:!0},moonshotai:{Icon:rU,hasColor:!1},"moonshotai-cn":{Icon:rU,hasColor:!1},moonshot:{Icon:rU,hasColor:!1},minimax:{Icon:rV,hasColor:!0},"minimax-cn":{Icon:rV,hasColor:!0},fireworks:{Icon:rq,hasColor:!0},huggingface:{Icon:rK,hasColor:!0},cerebras:{Icon:rJ,hasColor:!0},openrouter:{Icon:rY,hasColor:!1},xai:{Icon:rZ,hasColor:!1},"cloudflare-ai-gateway":{Icon:rG,hasColor:!0},"cloudflare-workers-ai":{Icon:rG,hasColor:!0},"vercel-ai-gateway":{Icon:rP((0,n.jsx)("path",{d:"M12 2L22 20H2L12 2z",fill:"currentColor"})),hasColor:!1},"github-copilot":{Icon:rP((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:rP((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:rP((0,n.jsx)("path",{d:"M12 2L3 18h5l4-6 4 6h5L12 2z",fill:"#0078D4"})),hasColor:!0},"kimi-coding":{Icon:rP((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:rP((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:rP((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:rP((0,n.jsx)("path",{d:"M4 8h16v2H4zm0 4h12v2H4zm0 4h8v2H4z",fill:"#3059B1"})),hasColor:!0},perplexity:{Icon:rP((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:rP((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#0F6CBD"}),"0 0 24 24"),hasColor:!0},grok:{Icon:rP((0,n.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",fill:"none"}),"0 0 24 24"),hasColor:!1}},rQ=[{value:"openai-responses",label:"OpenAI Responses",description:"OpenAI / deeprouter GPT relay"},{value:"openai-completions",label:"Chat Completions",description:"DeepSeek / Kimi / Qwen via compat proxy"}];function r0({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 r1={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 r2({value:e,onChange:t,placeholder:r,mono:i,onKeyDown:o,style:l}){return(0,n.jsx)("input",{value:e,onChange:e=>t(e.target.value),onKeyDown:o,placeholder:r,style:{...r1,fontFamily:i?"var(--font-mono)":"inherit",...l}})}function r4({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:{...r1,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 r5({value:e,onChange:t,placeholder:r}){return(0,n.jsx)("input",{type:"number",value:e,onChange:e=>t(e.target.value),placeholder:r,style:r1})}function r3({value:e,onChange:t,required:r}){return(0,n.jsxs)("select",{value:e,onChange:e=>{let r=e.target.value;t("string"==typeof r&&rE.includes(r)?r:"")},style:{...r1,color:e?"var(--text)":"var(--text-dim)"},children:[!r&&(0,n.jsx)("option",{value:"",children:"— inherit / none —"}),rQ.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value))]})}function r6({api:e}){let t=rQ.find(t=>t.value===e);return(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:t?t.description:"Leave empty to inherit the provider protocol."})}function r8({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 r7({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 r9({name:e,provider:t,onChange:r,onRename:o,onDelete:l}){let[s,a]=(0,i.useState)(e),[d,c]=(0,i.useState)(""),u="codex"===t.source;(0,i.useEffect)(()=>a(e),[e]);let p=(e,n)=>r({...t,[e]:n}),h=()=>{if(u)return;let e=d.trim();if(!e)return;let n=t.models??[];n.some(t=>t.id===e)||r({...t,models:[...n,{id:e,name:e}]}),c("")};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)(r7,{children:"Provider"}),(0,n.jsx)("button",{onClick:()=>!u&&l(),disabled:u,style:{padding:"3px 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:u?"not-allowed":"pointer",fontSize:11,opacity:u?.45:1},children:"Delete"})]}),u&&(0,n.jsx)("div",{style:{padding:"7px 10px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg-panel)",color:"var(--text-dim)",fontSize:12},children:"Loaded from ~/.codex/config.toml and auth.json. Add a UI provider to override it."}),(0,n.jsxs)(r0,{label:"Provider name",children:[(0,n.jsx)(r2,{value:s,onChange:e=>!u&&a(e),placeholder:"provider-name",mono:!0}),!u&&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)(r0,{label:"Base URL",children:(0,n.jsx)(r2,{value:t.baseUrl??"",onChange:e=>!u&&p("baseUrl",e||void 0),placeholder:"https://api.example.com/v1",mono:!0})}),(0,n.jsxs)(r0,{label:"API Key",children:[(0,n.jsx)(r4,{value:t.apiKey??"",onChange:e=>!u&&p("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.jsxs)(r0,{label:"Protocol",children:[(0,n.jsx)(r3,{value:t.api??rA(t.baseUrl,e),onChange:e=>!u&&p("api",e||void 0),required:!0}),(0,n.jsx)(r6,{api:t.api??rA(t.baseUrl,e)})]}),(0,n.jsxs)(r0,{label:"Model ID",children:[(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(r2,{value:d,onChange:e=>!u&&c(e),onKeyDown:e=>{"Enter"!==e.key||u||h()},placeholder:"gpt-5.5",mono:!0,style:{flex:1}}),(0,n.jsx)("button",{type:"button",onClick:h,disabled:u||!d.trim(),style:{padding:"0 12px",border:"none",borderRadius:5,background:!u&&d.trim()?"var(--accent)":"var(--bg-panel)",color:!u&&d.trim()?"#fff":"var(--text-dim)",cursor:!u&&d.trim()?"pointer":"not-allowed",fontSize:12,fontWeight:600,flexShrink:0},children:"Add"})]}),(0,n.jsx)("span",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"Fetching the model list is optional. Add the model ID your provider supports, then save."})]})]})}let ne=["off","minimal","low","medium","high","xhigh"],nt={off:"var(--text-dim)",minimal:"#6b7280",low:"#60a5fa",medium:"#a78bfa",high:"#f472b6",xhigh:"#fb923c"};function nr({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:ne.map(e=>{let t=r[e],o=e in r?null===t?"null":"string":"omit",l="string"==typeof t?t:"",s=nt[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 nn={thinkingFormat:"deepseek",requiresReasoningContentOnAssistantMessages:!0};function ni({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=(()=>{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)(r7,{children:"Model"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&(0,n.jsx)("span",{title:c,style:{maxWidth:260,height:24,padding:"0 8px",border:`1px solid ${"error"===s.phase?"#fecaca":"success"===s.phase?"#bbf7d0":"var(--border)"}`,borderRadius:4,background:"error"===s.phase?"#fee2e2":"success"===s.phase?"#dcfce7":"#e5e7eb",color:"#111827",fontSize:11,display:"inline-flex",alignItems:"center",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",boxSizing:"border-box"},children:c}),(0,n.jsxs)("button",{onClick:u,disabled:!r.id.trim()||"testing"===s.phase,title:"Test model connection",style:{height:24,padding:"0 8px",background:"success"===s.phase?"#16a34a":"none",border:`1px solid ${"success"===s.phase?"#16a34a":"var(--border)"}`,borderRadius:4,color:"success"===s.phase?"#fff":r.id.trim()&&"testing"!==s.phase?"var(--text-muted)":"var(--text-dim)",cursor:r.id.trim()&&"testing"!==s.phase?"pointer":"not-allowed",fontSize:11,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box",gap:5},children:["success"===s.phase&&(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"20 6 9 17 4 12"})}),"testing"===s.phase?"Testing…":"success"===s.phase?"OK":"Test"]}),(0,n.jsx)("button",{onClick:l,style:{height:24,padding:"0 8px",background:"none",border:"1px solid rgba(239,68,68,0.3)",borderRadius:4,color:"#ef4444",cursor:"pointer",fontSize:11,boxSizing:"border-box"},children:"Remove"})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(r0,{label:"ID *",children:(0,n.jsx)(r2,{value:r.id,onChange:e=>d("id",e),placeholder:"model-id",mono:!0})}),(0,n.jsx)(r0,{label:"Name",children:(0,n.jsx)(r2,{value:r.name??"",onChange:e=>d("name",e||void 0),placeholder:"Display name"})})]}),(0,n.jsxs)(r0,{label:"API override",children:[(0,n.jsx)(r3,{value:r.api??"",onChange:e=>d("api",e||void 0)}),(0,n.jsx)(r6,{api:r.api??""})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,n.jsx)(r8,{label:"Reasoning / thinking",checked:r.reasoning??!1,onChange:e=>d("reasoning",e||void 0)}),(0,n.jsx)(r8,{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)(r8,{label:"DeepSeek thinking compat",checked:r.compat?.thinkingFormat==="deepseek",onChange:e=>o(function(e,t){if(t)return{...e,compat:{...e.compat??{},...nn}};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)(r7,{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)(nr,{value:r.thinkingLevelMap,onChange:e=>d("thinkingLevelMap",e)})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,n.jsx)(r0,{label:"Context window (tokens)",children:(0,n.jsx)(r5,{value:void 0!==r.contextWindow?String(r.contextWindow):"",onChange:e=>d("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,n.jsx)(r0,{label:"Max output tokens",children:(0,n.jsx)(r5,{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)(r7,{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)(r0,{label:e,children:(0,n.jsx)(r5,{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 no({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)(r7,{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 nl({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)(r7,{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)(r0,{label:"API Key",children:(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)(r4,{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 ns({id:e,size:t}){let r=rX[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 na({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)||"deepseek".includes(p)||"deeprouter".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-compatible endpoint"}),(0,n.jsx)("div",{style:{fontSize:10,color:"var(--text-dim)",marginTop:2},children:"DeepSeek, deeprouter, Kimi, Qwen"})]}),(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:"Optional 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)(ns,{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)(ns,{id:e.id,size:28})]},e.id))]})})]})})}function nd({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:"Optional: fetch a 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)(r0,{label:"Base URL",children:(0,n.jsx)(r2,{value:o,onChange:l,placeholder:"https://api.example.com",mono:!0})}),(0,n.jsx)(r0,{label:"API Key",children:(0,n.jsx)(r4,{value:s,onChange:a,placeholder:"optional for local providers",mono:!0})}),(0,n.jsx)(r0,{label:"Provider name",children:(0,n.jsx)(r2,{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=0;for(let e of f.piModels)u.has(e.id)&&!p.has(e.id)&&(p.set(e.id,e),h+=1);t(a,{...c??{},baseUrl:n,api:c?.api??rA(n,a),...i?{apiKey:i}:{},models:Array.from(p.values())},h),r()},disabled:!m,style:{padding:"6px 16px",background:m?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:6,color:m?"#fff":"var(--text-dim)",cursor:m?"pointer":"not-allowed",fontSize:13,fontWeight:600},children:"Import selected"})]})]})]})})}function nc({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,y]=(0,i.useState)([]),[b,j]=(0,i.useState)([]),[k,w]=(0,i.useState)(!1),[S,C]=(0,i.useState)(!1),z=(0,i.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>y(e.providers)).catch(()=>{})},[]),T=(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)),z(),T()},[z,T]);let M=(0,i.useCallback)(()=>{let e="custom",t=1;for(;r.providers?.[e];)e=`custom-${t++}`;o(t=>({...t,providers:{...t.providers??{},[e]:{baseUrl:""}}})),v({type:"provider",name:e})},[r.providers]),I=(0,i.useCallback)((e,t)=>{o(r=>({...r,providers:{...r.providers??{},[e]:t}}))},[]),L=(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)},[]),R=(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})},[]),W=(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}}}})},[]),$=(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})},[]),B=(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 providers.json.`)},[]),A=(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({providers:r.providers??{}})}),t=await e.json();!e.ok||t.error?u(t.error??`HTTP ${e.status}`):(g(!0),setTimeout(()=>g(!1),2e3))}catch(e){u(String(e))}finally{d(!1)}},[r]),P=Object.entries(r.providers??{}),N=m.filter(e=>e.loggedIn),D=b.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)(no,{provider:e,onRefresh:z},e.id):null}if("apikey"===f.type){let e=b.find(e=>e.id===f.providerId);return e?(0,n.jsx)(nl,{provider:e,onRefresh:T},e.id):null}if("provider"===f.type){let e=r.providers?.[f.name];return e?(0,n.jsx)(r9,{name:f.name,provider:e,onChange:e=>I(f.name,e),onRename:e=>L(f.name,e),onDelete:()=>R(f.name)},f.name):null}let e=r.providers?.[f.providerName],t=e?.models?.[f.index];return t?(0,n.jsx)(ni,{providerName:f.providerName,provider:e,model:t,onChange:e=>E(f.providerName,f.index,e),onDelete:()=>$(f.providerName,f.index)},`${f.providerName}-${f.index}`):null})();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:t?{height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"stretch"}:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:r=>{t||r.target!==r.currentTarget||e()},children:(0,n.jsxs)("div",{style:{width:t?"100%":860,height:t?"100%":"78vh",background:"var(--bg)",border:t?"none":"1px solid var(--border)",borderRadius:10*!t,display:"flex",flexDirection:"column",boxShadow:t?"none":"0 8px 32px rgba(0,0,0,0.18)",overflow:"hidden"},children:[!t&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 18px",borderBottom:"1px solid var(--border)",flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,n.jsx)("span",{style:{fontSize:15,fontWeight:700,color:"var(--text)"},children:"Models"}),(0,n.jsx)("code",{style:{fontSize:11,color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:"~/.config/annodex/providers.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)(ns,{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)}),D.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)(ns,{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||D.length>0)&&P.length>0&&(0,n.jsx)("div",{style:{margin:"4px 8px",borderTop:"1px solid var(--border)"}}),l?(0,n.jsx)("div",{style:{padding:"10px 8px",fontSize:12,color:"var(--text-muted)"},children:"Loading…"}):P.map(([e,t])=>{let r=f?.type==="provider"&&f.name===e,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(),W(e)},style:{display:"flex",alignItems:"center",gap:4,padding:"4px 8px 4px 26px",borderRadius:5,cursor:"pointer",color:"var(--text-dim)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-dim)",e.currentTarget.style.background="none"},children:(0,n.jsx)("span",{style:{fontSize:11},children:"+ model"})})]},e)})]}),(0,n.jsx)("div",{style:{borderTop:"1px solid var(--border)",padding:"8px 6px"},children:(0,n.jsx)("button",{onClick:()=>w(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,width:"100%",padding:"6px 0",background:"none",border:"1px dashed var(--border)",borderRadius:5,color:"var(--text-muted)",cursor:"pointer",fontSize:12},onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.color="var(--text-muted)"},children:"+ Add provider"})})]}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:l?null: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:A,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)(na,{oauthProviders:m,apiKeyProviders:b,onSelectOAuth:e=>v({type:"oauth",providerId:e}),onSelectApiKey:e=>v({type:"apikey",providerId:e}),onAddCustom:M,onDiscover:()=>C(!0),onClose:()=>w(!1)}),S&&(0,n.jsx)(nd,{existingProviders:r.providers??{},onImport:B,onClose:()=>C(!1)})]})}function nu(e){return e.replace(/^\/(?:Users|home)\/[^/]+/,"~")}function np(e){let t=e.sourceInfo?.source,r=e.sourceInfo?.scope;return"user"===r||"user"===t?"global":"project"===r||"project"===t?"project":"path"}function nh({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 nx({skill:e,cwd:t,onToggle:r,toggling:i,saveError:o}){let l=np(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 nu(e)}(e.filePath)}),(0,n.jsx)(nh,{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 ng({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,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 z=(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)}}},[]),T=(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]),M=(0,i.useCallback)(()=>{C.current?.abort()},[]),I="global"===k?"~/.codex/skills/":`${nu(e)}/.codex/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&&z(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:()=>z(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:["→ ",I]})]}),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:M,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=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||T(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 nf({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),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&&!u&&p(t[0].filePath)}).catch(e=>c(String(e))).finally(()=>a(!1))},[e,u]);(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===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:nu(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=>np(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)(ng,{cwd:e,onInstalled:()=>{y()}}):s?null:j?(0,n.jsx)(nx,{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"})})]})})}function nv({activeCwd:e,onSelectProject:t,onProjectsChanged:r}){let[o,l]=(0,i.useState)([]),[s,a]=(0,i.useState)(!0),[c,u]=(0,i.useState)(null),[p,h]=(0,i.useState)(""),[x,g]=(0,i.useState)(!1),[f,v]=(0,i.useState)(null),[m,y]=(0,i.useState)(null),[b,j]=(0,i.useState)(""),k=(0,i.useRef)(null),w=(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??[]),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}finally{a(!1)}},[]);(0,i.useEffect)(()=>{w()},[w]);let S=(0,i.useMemo)(()=>({projects:o.length,chats:o.reduce((e,t)=>e+t.chatCount,0)}),[o]),C=(0,i.useCallback)(async()=>{let e=p.trim();if(e){v("add"),u(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}`);h(""),r?.(),t?.(e),w()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}}},[w,r,t,p]),z=(0,i.useCallback)(async e=>{v("add"),u(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}`);h(""),g(!1),r?.(),t?.(e),w()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}},[w,r,t]),T=(0,i.useCallback)(async e=>{v(`rename:${e}`),u(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}`);y(null),j(""),await w(),r?.()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}},[w,r,b]),M=(0,i.useCallback)(async e=>{v(`remove:${e}`),u(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 w(),r?.()}catch(e){u(e instanceof Error?e.message:String(e))}finally{v(null)}},[w,r]),I=(0,i.useCallback)(e=>{y(e.cwd),j(e.name??e.displayName),window.setTimeout(()=>k.current?.select(),0)},[]);return(0,n.jsxs)("div",{style:{height:"100%",overflowY:"auto",padding:20},children:[(0,n.jsxs)("div",{style:{maxWidth:900,display:"flex",flexDirection:"column",gap:14},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:15,fontWeight:750,color:"var(--text)"},children:"Projects"}),(0,n.jsxs)("div",{style:{marginTop:4,fontSize:12,color:"var(--text-muted)"},children:[S.projects," projects / ",S.chats," chats"]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void w(),style:{height:30,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Refresh"})]}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:8,background:"var(--bg-panel)",padding:12},children:(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,n.jsx)("input",{value:p,onChange:e=>h(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C()},placeholder:"/path/to/project",style:{flex:1,minWidth:0,height:32,padding:"0 10px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,outline:"none"}}),(0,n.jsx)("button",{type:"button",onClick:()=>g(!0),style:{height:32,padding:"0 12px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Browse"}),(0,n.jsx)("button",{type:"button",disabled:!p.trim()||"add"===f,onClick:()=>void C(),style:{height:32,padding:"0 12px",border:"none",borderRadius:6,background:p.trim()?"var(--accent)":"var(--bg-hover)",color:p.trim()?"#fff":"var(--text-dim)",cursor:p.trim()?"pointer":"default",fontSize:12,fontWeight:650},children:"Add"})]})}),c&&(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:c}),(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===o.length?(0,n.jsx)("div",{style:{padding:16,color:"var(--text-muted)",fontSize:12},children:"No projects yet."}):o.map(r=>{var i;let o,l=r.cwd===e,s=m===r.cwd,a=r.lastAccessed??r.created??null;return(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",gap:12,alignItems:"center",padding:"12px 14px",borderBottom:"1px solid var(--border)",background:l?"var(--bg-selected)":"var(--bg)"},children:[(0,n.jsxs)("div",{style:{minWidth:0},children:[s?(0,n.jsx)("input",{ref:k,value:b,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&T(r.cwd),"Escape"===e.key&&y(null)},style:{width:"min(360px, 100%)",height:30,padding:"0 9px",border:"1px solid var(--accent)",borderRadius:6,background:"var(--bg)",color:"var(--text)",fontSize:13,outline:"none"}}):(0,n.jsx)("div",{style:{color:"var(--text)",fontSize:13,fontWeight:l?750:650,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.displayName}),(0,n.jsx)("div",{style:{marginTop:4,color:"var(--text-dim)",fontSize:11,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:r.cwd,children:(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()}(a),r.exists?"":" / path missing"]})]}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6},children:s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:f===`rename:${r.cwd}`,onClick:()=>void T(r.cwd),style:{height:28,padding:"0 9px",border:"none",borderRadius:6,background:"var(--accent)",color:"#fff",cursor:"pointer",fontSize:12},children:"Save"}),(0,n.jsx)("button",{type:"button",onClick:()=>y(null),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text-muted)",cursor:"pointer",fontSize:12},children:"Cancel"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>t?.(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid var(--border)",borderRadius:6,background:l?"var(--accent)":"var(--bg-panel)",color:l?"#fff":"var(--text-muted)",cursor:"pointer",fontSize:12},children:l?"Current":"Switch"}),(0,n.jsx)("button",{type:"button",onClick:()=>I(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:f===`remove:${r.cwd}`,onClick:()=>void M(r.cwd),style:{height:28,padding:"0 9px",border:"1px solid rgba(248,113,113,0.35)",borderRadius:6,background:"transparent",color:"#f87171",cursor:"pointer",fontSize:12},children:"Remove"})]})})]},r.cwd)})})]}),(0,n.jsx)(d,{open:x,initialPath:e,onClose:()=>g(!1),onSelect:e=>void z(e)})]})}function nm({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 ny(){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 nb(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 nj({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:nb("projects")},{id:"models",label:"Models",description:"~/.config/annodex/providers.json",icon:nb("models")},{id:"skills",label:"Skills",description:e?"Project and global skills":"Select a project first",disabled:!e,icon:nb("skills")},{id:"generative-ui",label:"Generative UI",description:t?"Enabled":"Disabled",icon:nb("generative-ui")}],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)(ny,{})}),(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)(nv,{activeCwd:e,onSelectProject:a,onProjectsChanged:d}),"models"===c&&(0,n.jsx)(nc,{embedded:!0,onClose:()=>{s?.(),l()}}),"skills"===c&&e&&(0,n.jsx)(nf,{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)(nm,{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."})]})]})]})})]})]})]})})}function nk({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 nw=new Set(["pdf","png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"]);function nS(e){let t=(e.replace(/[?#].*$/,"").replace(/[\\/]+$/,"").split(/[\\/]/).pop()??e).toLowerCase().split(".").pop()??"";return nw.has(t)}function nC(){let e=(0,o.useRouter)(),t=(0,o.useSearchParams)(),{isDark:r,toggleTheme:l}=I(),[s,a]=(0,i.useState)(null),[d,c]=(0,i.useState)(null),[u,p]=(0,i.useState)(0),[h,x]=(0,i.useState)(0),[g,f]=(0,i.useState)(0),[v,m]=(0,i.useState)(0),[y,b]=(0,i.useState)(!1),[k,w]=(0,i.useState)("projects"),[S,C]=(0,i.useState)({generativeUI:!0}),[z,T]=(0,i.useState)(null),[M,L]=(0,i.useState)(!0),R=nk({initialWidth:260,minWidth:180,maxWidth:500,storageKey:"--annodex-sidebar-width"}),W=nk({initialWidth:500,minWidth:300,maxWidth:1200,storageKey:"--annodex-right-panel-width",direction:"left"}),E=(0,i.useRef)(null),$=(0,i.useRef)(null),[B,A]=(0,i.useState)(null),P=(0,i.useRef)(null),[N,D]=(0,i.useState)(!1),[H,O]=(0,i.useState)(""),F=(0,i.useRef)(null),_=(0,i.useRef)(!1),U=(0,i.useCallback)(e=>{A(e)},[]);(0,i.useEffect)(()=>{D(!1)},[s?.id]);let V=(0,i.useCallback)(e=>e?e.name||e.firstMessage.slice(0,80)||e.id.slice(0,12):"",[]),q=(0,i.useCallback)(()=>{s&&(_.current=!1,O(s.name||V(s)),D(!0),setTimeout(()=>F.current?.select(),0))},[V,s]),K=(0,i.useCallback)(async()=>{if(_.current){_.current=!1,D(!1);return}if(!s)return void D(!1);let e=H.trim(),t=V(s);if(D(!1),e!==(s.name??"")&&(s.name||e!==t))try{(await fetch(`/api/sessions/${encodeURIComponent(s.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})).ok&&(a(t=>t&&t.id===s.id?{...t,name:e}:t),p(e=>e+1))}catch{}},[V,s,H]),J=(0,i.useCallback)(e=>{"Enter"===e.key?(e.preventDefault(),K()):"Escape"===e.key&&(_.current=!0,D(!1))},[K]);(0,i.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(t=>{e||C(e=>({generativeUI:"boolean"==typeof t?.settings?.generativeUI?t.settings.generativeUI:e.generativeUI}))}).catch(()=>{}),()=>{e=!0}},[]),(0,i.useEffect)(()=>{let e=!1,t=!1,r=()=>{t||(t=!0,fetch("/api/version").then(e=>e.ok?e.json():null).then(t=>{e||T(t)}).catch(()=>{}).finally(()=>{t=!1}))};r();let n=window.setInterval(r,6e4);return()=>{e=!0,window.clearInterval(n)}},[]);let Y=(0,i.useCallback)(()=>{let e=!S.generativeUI;C(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=>{C(t=>({...t,..."boolean"==typeof e.settings?.generativeUI?{generativeUI:e.settings.generativeUI}:{}}))}).catch(()=>C(e=>({...e,generativeUI:!e.generativeUI})))},[S.generativeUI]),[Z,G]=(0,i.useState)(null),X=(0,i.useCallback)(e=>{G(e)},[]),[Q,ee]=(0,i.useState)(null),et=(0,i.useCallback)(e=>{ee(e)},[]),[er,en]=(0,i.useState)(null),[ei,eo]=(0,i.useState)(null),el=(0,i.useCallback)(e=>{en(t=>t===e?null:e)},[]);(0,i.useEffect)(()=>{if(!er||!$.current)return;let e=()=>{let e=$.current.getBoundingClientRect();eo({top:e.bottom,left:e.left,width:e.width})};e();let t=new ResizeObserver(e);return t.observe($.current),()=>t.disconnect()},[er]);let[es,ea]=(0,i.useState)([]),[ed,ec]=(0,i.useState)("files"),[eu,ep]=(0,i.useState)(!1),[eh,ex]=(0,i.useState)(""),[eg,ef]=(0,i.useState)([]),[ev,em]=(0,i.useState)(0),ey=(0,i.useCallback)(e=>{E.current?.insertText("`"+e+"`")},[]),[eb]=(0,i.useState)(()=>t.get("session")),[ej,ek]=(0,i.useState)(null),[ew,eS]=(0,i.useState)(()=>!t.get("session")),eC=(0,i.useRef)(!1),ez=(0,i.useCallback)(t=>{ek(t),t&&!eC.current&&(a(e=>e&&e.cwd!==t?null:e),c(e=>e&&e!==t?null:e),x(e=>e+1),f(e=>e+1),A(null),en(null),e.replace("/",{scroll:!1}))},[e]),eT=(0,i.useCallback)(e=>{ez(e),b(!1),p(e=>e+1)},[ez]),eM=(0,i.useCallback)((t,r=!1)=>{c(null),ek(t.cwd),a(t),x(e=>e+1),A(null),eS(!0),r&&(eC.current=!0,setTimeout(()=>{eC.current=!1},0)),r||e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eI=(0,i.useCallback)((t,r)=>{a(null),c(r),ek(r),x(e=>e+1),A(null),en(null),e.replace("/",{scroll:!1})},[e]),eL=(0,i.useCallback)(t=>{c(null),ek(t.cwd),a(t),p(e=>e+1),e.replace(`?session=${encodeURIComponent(t.id)}`,{scroll:!1})},[e]),eR=(0,i.useCallback)(()=>{p(e=>e+1),f(e=>e+1),em(e=>e+1)},[]),eW=(0,i.useCallback)(t=>{p(e=>e+1),c(null),a(e=>({...e??{path:"",cwd:"",created:"",modified:"",messageCount:0,firstMessage:""},id:t})),e.replace(`?session=${encodeURIComponent(t)}`,{scroll:!1})},[e]),eE=(0,i.useCallback)(()=>{eS(!0)},[]),e$=(0,i.useCallback)(t=>{if(p(e=>e+1),s?.id===t){let t=s.cwd;a(null),c(t??null),x(e=>e+1),A(null),en(null),e.replace("/",{scroll:!1})}},[s,e]),eB=(0,i.useCallback)(e=>{ef(t=>t.filter(t=>t.id!==e))},[]),eA=(0,i.useCallback)(e=>{ef(t=>{let r=t.find(t=>t.id===e);return r&&t[t.length-1]?.id!==e?[...t.filter(t=>t.id!==e),r]:t})},[]),eP=(0,i.useCallback)((e,t)=>{if(nS(e)||nS(t)){let r=`preview:${e}`;ef(n=>{let i=n.find(e=>e.id===r);return i?[...n.filter(e=>e.id!==r),i]:[...n,{id:r,filePath:e,fileName:t}]});return}let r=`file:${e}`;ea(n=>n.find(e=>e.id===r)?n:[...n,{id:r,label:t,filePath:e}]),ec(r),ep(!0)},[]),eN=(0,i.useCallback)(e=>{"files"!==e&&"tools"!==e&&(ea(t=>t.filter(t=>t.id!==e)),ec(t=>{if(t!==e)return t;let r=es.filter(t=>t.id!==e);return r.length>0?r[r.length-1].id:"files"}))},[es]),eD=d??(null===s&&ej?ej:null),eH=null!==s||null!==eD,eO=ew&&!eH,eF=[{id:"files",label:"Files",closable:!1,icon:"files"},{id:"tools",label:"Tools",closable:!1,icon:"tools"},...es],e_=es.find(e=>e.id===ed)??null,eU=s?V(s):eD?"New chat":"No session",eV=s?.cwd??eD??ej??"",eq=eV?eV.replace(/\/+$/,"").split(/[\\/]/).filter(Boolean).pop()||eV:"",eK=s?.cwd??ej??eD??void 0,eJ=ej??s?.cwd??d??null,eY=(()=>{let e=z?.runtime,t=e?.installedVersion??z?.latest;if(e?.restartPending&&t){let r=!!e.restartStartedAt;return{label:`${r?"Restarting":"Restart queued"} ${t}`,title:[`Current runtime: v${e.version??z?.current??"unknown"}`,`Installed: v${t}`,r?"A replacement server is starting.":"annodex will restart after active sessions become idle."].join("\n"),active:!0}}return z?.updateAvailable&&z.latest?{label:`Update ${z.latest}`,title:`Current: v${z.current}
|
|
259
259
|
Latest: v${z.latest}
|
|
260
|
-
Run: ${z.updateCommand}`,active:!1}:null})(),eY=(0,i.useCallback)((e="projects")=>{w(e),b(!0)},[]),eG=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k,{selectedSessionId:s?.id??null,onSelectSession:eL,onNewSession:eM,initialSessionId:eb,onInitialRestoreDone:eE,refreshKey:u,onSessionDeleted:e$,selectedCwd:s?.cwd??d??ej??null,onCwdChange:ez}),(0,n.jsx)("div",{style:{padding:"8px",flexShrink:0},children:(0,n.jsx)("button",{type:"button",onClick:()=>eY("projects"),title:"Settings","aria-label":"Settings",style:{width:34,display:"flex",alignItems:"center",justifyContent:"center",height:34,padding:0,background:"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:"pointer",fontSize:12,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.09a2 2 0 0 1-1-1.74v-.51a2 2 0 0 1 1-1.72l.15-.1a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})})]});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",height:"100dvh",overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsx)("div",{className:"sidebar-overlay-backdrop",onClick:()=>M(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!L,pointerEvents:L?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{className:`sidebar-container${L?" sidebar-open":" sidebar-closed"}`,style:{background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200,width:I.width,minWidth:I.width,transition:L||I.isResizing?"none":void 0},children:eG}),L&&(0,n.jsx)(rC,{side:"right",ariaLabel:"Resize sidebar",onResizeStart:I.beginResize,onResize:I.resizeBy,onResizeEnd:I.endResize}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:$,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:()=>M(e=>!e),title:L?"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:L?(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:N&&s?(0,n.jsx)("input",{ref:F,value:D,onChange:e=>O(e.target.value),onKeyDown:J,onBlur:()=>void K(),style:{width:"min(360px, 34vw)",height:28,boxSizing:"border-box",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",padding:"0 8px",fontSize:13,fontWeight:500,outline:"none"}}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"topbar-session-title",title:eU,style:{minWidth:0,maxWidth:"min(420px, 36vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:eD?"var(--text)":"var(--text-muted)",fontSize:14,fontWeight:600,lineHeight:1.2},children:eU}),s&&(0,n.jsx)("button",{type:"button",className:"topbar-rename-button",onClick:q,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"})]})})]})}),eq&&(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:eV||eq,style:{minWidth:0,maxWidth:"min(280px, 24vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:12,lineHeight:1.2},children:eq})]})]}),eD&&(0,n.jsx)("div",{className:"topbar-chat-tools",style:{display:"flex",alignItems:"center",gap:6,height:28,flexShrink:0},children:(0,n.jsxs)("button",{ref:P,className:"topbar-system-button",onClick:()=>el("system"),title:"System prompt","aria-label":"System prompt",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"system"===er?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${"system"===er?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:"system"===er?"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"===er?"var(--text)":"var(--text-muted)",e.currentTarget.style.background="system"===er?"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:B?"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"})]})}),eD&&(Y||Q)&&(()=>{let e=Y?.tokens,t=Y?.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(Q?.contextWindow){let e=Q.percent,t=Q.tokens;null!==e&&e>90?o="#ef4444":null!==e&&e>70&&(o="rgba(234,179,8,0.95)"),l=null!==t?`${r(t)} / ${r(Q.contextWindow)}`:`? / ${r(Q.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)}`)),Q?.contextWindow){let e=Q.percent;s.push(`context: ${null!==Q.tokens?Q.tokens.toLocaleString():"unknown"} of ${Q.contextWindow.toLocaleString()} tokens${null!==e?` (${e.toFixed(1)}%)`:""}`)}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]})]})})(),eZ&&(0,n.jsxs)("div",{className:"topbar-update-status",title:eZ.title,style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 8px",border:`1px solid ${eZ.active?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,background:eZ.active?"var(--bg-selected)":"var(--bg-panel)",color:eZ.active?"var(--accent)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",flexShrink:0,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:"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"})]}),(0,n.jsx)("span",{children:eZ.label})]}),(0,n.jsx)("button",{type:"button",className:"topbar-icon-button topbar-generate-ui-toggle",onClick:Z,title:`生成式 UI: ${S.generativeUI?"on":"off"}`,"aria-label":`生成式 UI: ${S.generativeUI?"on":"off"}`,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:S.generativeUI?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${S.generativeUI?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:S.generativeUI?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=S.generativeUI?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=S.generativeUI?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=S.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:()=>ep(e=>!e),title:eu?"Hide right panel":"Show right panel","aria-label":eu?"Hide right panel":"Show right panel",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:eu?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${eu?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:eu?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=eu?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=eu?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=eu?"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"})]})}),er&&ei&&(0,n.jsx)("div",{style:{position:"fixed",top:ei.top,left:ei.left,width:ei.width,zIndex:500},children:"system"===er&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:B?(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:B}):""===B?(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:eD?(0,n.jsx)(ti,{session:s,newSessionCwd:eH,onAgentEnd:eR,onSessionCreated:eI,onSessionForked:eW,modelsRefreshKey:v,chatInputRef:E,onSystemPromptChange:U,onSessionStatsChange:X,onContextUsageChange:et,generativeUI:S.generativeUI},h):eO?ej?(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})]}),eu&&(0,n.jsx)(rC,{side:"left",ariaLabel:"Resize right panel",onResizeStart:W.beginResize,onResize:W.resizeBy,onResizeEnd:W.endResize}),(0,n.jsxs)("div",{className:`right-panel-container${eu?" right-panel-open":" right-panel-closed"}`,style:{display:eu?"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:()=>ep(!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)(rz,{tabs:eF,activeTabId:ed,onSelectTab:ec,onCloseTab:eN})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:"files"===ed?eK?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:(0,n.jsxs)("div",{style:{position:"relative",flex:1,minWidth:0},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",left:8,top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)",pointerEvents:"none"},children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.4"}),(0,n.jsx)("path",{d:"M10.4 10.4 13.2 13.2"})]}),(0,n.jsx)("input",{value:eh,onChange:e=>ex(e.target.value),placeholder:"Filter files...",style:{width:"100%",height:28,boxSizing:"border-box",padding:"0 26px 0 26px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none"}}),eh&&(0,n.jsx)("button",{type:"button",onClick:()=>ex(""),title:"Clear filter",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",width:20,height:20,display:"flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-dim)",cursor:"pointer",padding:0},children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"2",x2:"8",y2:"8"}),(0,n.jsx)("line",{x1:"8",y1:"2",x2:"2",y2:"8"})]})})]})}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",overflowX:"hidden",minHeight:0},children:(0,n.jsx)(tH,{cwd:eK,onOpenFile:eP,refreshKey:g,onAtMention:ey,searchQuery:eh,onSearchChange:ex})})]}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No project selected"}):"tools"===ed?(0,n.jsx)(rI,{refreshKey:ev,cwd:eK??null}):e_?.filePath?e_.filePath.startsWith("__")?(0,n.jsx)(rw,{filePath:e_.filePath}):(0,n.jsx)(rf,{filePath:e_.filePath,cwd:ej??void 0,onOpenFile:eP}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),eg.map((e,t)=>(0,n.jsx)(rb,{id:e.id,filePath:e.filePath,fileName:e.fileName,cwd:eK,active:t===eg.length-1,stackIndex:t,zIndex:700+t,onClose:eB,onFocus:eA,onOpenFile:eP},e.id)),y&&(0,n.jsx)(nw,{cwd:eJ,generativeUI:S.generativeUI,initialTab:j,onGenerativeUIToggle:Z,onModelsChanged:()=>m(e=>e+1),onProjectSelect:eT,onProjectsChanged:()=>p(e=>e+1),onClose:()=>{b(!1),m(e=>e+1)}})]})}},65673:(e,t,r)=>{"use strict";r.d(t,{C3:()=>n});let n="annodex"},70704:(e,t,r)=>{Promise.resolve().then(r.bind(r,60194))}},e=>{e.O(0,[6079,8771,8441,3794,7358],()=>e(e.s=70704)),_N_E=e.O()}]);
|
|
260
|
+
Run: ${z.updateCommand}`,active:!1}:null})(),eZ=(0,i.useCallback)((e="projects")=>{w(e),b(!0)},[]),eG=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(j,{selectedSessionId:s?.id??null,onSelectSession:eM,onNewSession:eI,initialSessionId:eb,onInitialRestoreDone:eE,refreshKey:u,onSessionDeleted:e$,selectedCwd:s?.cwd??d??ej??null,onCwdChange:ez}),(0,n.jsx)("div",{style:{padding:"8px",flexShrink:0},children:(0,n.jsx)("button",{type:"button",onClick:()=>eZ("projects"),title:"Settings","aria-label":"Settings",style:{width:34,display:"flex",alignItems:"center",justifyContent:"center",height:34,padding:0,background:"none",border:"none",borderRadius:9,color:"var(--text-muted)",cursor:"pointer",fontSize:12,transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--bg-hover)",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.background="none",e.currentTarget.style.color="var(--text-muted)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,n.jsx)("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.09a2 2 0 0 1-1-1.74v-.51a2 2 0 0 1 1-1.72l.15-.1a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})})]});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",height:"100dvh",overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsx)("div",{className:"sidebar-overlay-backdrop",onClick:()=>L(!1),style:{position:"fixed",inset:0,zIndex:199,background:"rgba(0,0,0,0.4)",opacity:+!!M,pointerEvents:M?"auto":"none",transition:"opacity 0.25s ease"}}),(0,n.jsx)("div",{className:`sidebar-container${M?" sidebar-open":" sidebar-closed"}`,style:{background:"var(--bg-panel)",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",flexShrink:0,zIndex:200,width:R.width,minWidth:R.width,transition:M||R.isResizing?"none":void 0},children:eG}),M&&(0,n.jsx)(rw,{side:"right",ariaLabel:"Resize sidebar",onResizeStart:R.beginResize,onResize:R.resizeBy,onResizeEnd:R.endResize}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[(0,n.jsxs)("div",{ref:$,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:()=>L(e=>!e),title:M?"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:M?(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:N&&s?(0,n.jsx)("input",{ref:F,value:H,onChange:e=>O(e.target.value),onKeyDown:J,onBlur:()=>void K(),style:{width:"min(360px, 34vw)",height:28,boxSizing:"border-box",border:"1px solid var(--border)",borderRadius:6,background:"var(--bg-panel)",color:"var(--text)",padding:"0 8px",fontSize:13,fontWeight:500,outline:"none"}}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"topbar-session-title",title:eU,style:{minWidth:0,maxWidth:"min(420px, 36vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:eH?"var(--text)":"var(--text-muted)",fontSize:14,fontWeight:600,lineHeight:1.2},children:eU}),s&&(0,n.jsx)("button",{type:"button",className:"topbar-rename-button",onClick:q,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"})]})})]})}),eq&&(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:eV||eq,style:{minWidth:0,maxWidth:"min(280px, 24vw)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-muted)",fontSize:12,lineHeight:1.2},children:eq})]})]}),eH&&(0,n.jsx)("div",{className:"topbar-chat-tools",style:{display:"flex",alignItems:"center",gap:6,height:28,flexShrink:0},children:(0,n.jsxs)("button",{ref:P,className:"topbar-system-button",onClick:()=>el("system"),title:"System prompt","aria-label":"System prompt",style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 9px",background:"system"===er?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${"system"===er?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,cursor:"pointer",color:"system"===er?"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"===er?"var(--text)":"var(--text-muted)",e.currentTarget.style.background="system"===er?"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:B?"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"})]})}),eH&&(Z||Q)&&(()=>{let e=Z?.tokens,t=Z?.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(Q?.contextWindow){let e=Q.percent,t=Q.tokens;null!==e&&e>90?o="#ef4444":null!==e&&e>70&&(o="rgba(234,179,8,0.95)"),l=null!==t?`${r(t)} / ${r(Q.contextWindow)}`:`? / ${r(Q.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)}`)),Q?.contextWindow){let e=Q.percent;s.push(`context: ${null!==Q.tokens?Q.tokens.toLocaleString():"unknown"} of ${Q.contextWindow.toLocaleString()} tokens${null!==e?` (${e.toFixed(1)}%)`:""}`)}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]})]})})(),eY&&(0,n.jsxs)("div",{className:"topbar-update-status",title:eY.title,style:{display:"flex",alignItems:"center",gap:6,height:28,padding:"0 8px",border:`1px solid ${eY.active?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,background:eY.active?"var(--bg-selected)":"var(--bg-panel)",color:eY.active?"var(--accent)":"var(--text-muted)",fontSize:11,whiteSpace:"nowrap",flexShrink:0,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:"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"})]}),(0,n.jsx)("span",{children:eY.label})]}),(0,n.jsx)("button",{type:"button",className:"topbar-icon-button topbar-generate-ui-toggle",onClick:Y,title:`生成式 UI: ${S.generativeUI?"on":"off"}`,"aria-label":`生成式 UI: ${S.generativeUI?"on":"off"}`,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:S.generativeUI?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${S.generativeUI?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:S.generativeUI?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=S.generativeUI?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=S.generativeUI?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=S.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:()=>ep(e=>!e),title:eu?"Hide right panel":"Show right panel","aria-label":eu?"Hide right panel":"Show right panel",style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,padding:0,background:eu?"var(--bg-selected)":"var(--bg-panel)",border:`1px solid ${eu?"rgba(37,99,235,0.45)":"var(--border)"}`,borderRadius:7,color:eu?"var(--accent)":"var(--text-muted)",cursor:"pointer",flexShrink:0,transition:"color 0.12s, background 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color=eu?"var(--accent)":"var(--text)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.color=eu?"var(--accent)":"var(--text-muted)",e.currentTarget.style.background=eu?"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"})]})}),er&&ei&&(0,n.jsx)("div",{style:{position:"fixed",top:ei.top,left:ei.left,width:ei.width,zIndex:500},children:"system"===er&&(0,n.jsx)("div",{style:{background:"var(--bg-panel)",borderBottom:"1px solid var(--border)"},children:B?(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:B}):""===B?(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:eH?(0,n.jsx)(tr,{session:s,newSessionCwd:eD,onAgentEnd:eR,onSessionCreated:eL,onSessionForked:eW,modelsRefreshKey:v,chatInputRef:E,onSystemPromptChange:U,onSessionStatsChange:X,onContextUsageChange:et,generativeUI:S.generativeUI},h):eO?ej?(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})]}),eu&&(0,n.jsx)(rw,{side:"left",ariaLabel:"Resize right panel",onResizeStart:W.beginResize,onResize:W.resizeBy,onResizeEnd:W.endResize}),(0,n.jsxs)("div",{className:`right-panel-container${eu?" right-panel-open":" right-panel-closed"}`,style:{display:eu?"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:()=>ep(!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)(rS,{tabs:eF,activeTabId:ed,onSelectTab:ec,onCloseTab:eN})})]}),(0,n.jsx)("div",{style:{flex:1,overflow:"hidden"},children:"files"===ed?eK?(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0},children:(0,n.jsxs)("div",{style:{position:"relative",flex:1,minWidth:0},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",left:8,top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)",pointerEvents:"none"},children:[(0,n.jsx)("circle",{cx:"7",cy:"7",r:"4.4"}),(0,n.jsx)("path",{d:"M10.4 10.4 13.2 13.2"})]}),(0,n.jsx)("input",{value:eh,onChange:e=>ex(e.target.value),placeholder:"Filter files...",style:{width:"100%",height:28,boxSizing:"border-box",padding:"0 26px 0 26px",borderRadius:6,border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:12,outline:"none"}}),eh&&(0,n.jsx)("button",{type:"button",onClick:()=>ex(""),title:"Clear filter",style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",width:20,height:20,display:"flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-dim)",cursor:"pointer",padding:0},children:(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",children:[(0,n.jsx)("line",{x1:"2",y1:"2",x2:"8",y2:"8"}),(0,n.jsx)("line",{x1:"8",y1:"2",x2:"2",y2:"8"})]})})]})}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto",overflowX:"hidden",minHeight:0},children:(0,n.jsx)(tP,{cwd:eK,onOpenFile:eP,refreshKey:g,onAtMention:ey,searchQuery:eh,onSearchChange:ex})})]}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No project selected"}):"tools"===ed?(0,n.jsx)(rM,{refreshKey:ev,cwd:eK??null}):e_?.filePath?e_.filePath.startsWith("__")?(0,n.jsx)(rj,{filePath:e_.filePath}):(0,n.jsx)(rx,{filePath:e_.filePath,cwd:ej??void 0,onOpenFile:eP}):(0,n.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:12},children:"No file open"})})]})]}),eg.map((e,t)=>(0,n.jsx)(rm,{id:e.id,filePath:e.filePath,fileName:e.fileName,cwd:eK,active:t===eg.length-1,stackIndex:t,zIndex:700+t,onClose:eB,onFocus:eA,onOpenFile:eP},e.id)),y&&(0,n.jsx)(nj,{cwd:eJ,generativeUI:S.generativeUI,initialTab:k,onGenerativeUIToggle:Y,onModelsChanged:()=>m(e=>e+1),onProjectSelect:eT,onProjectsChanged:()=>p(e=>e+1),onClose:()=>{b(!1),m(e=>e+1)}})]})}},65673:(e,t,r)=>{"use strict";r.d(t,{C3:()=>n});let n="annodex"},70704:(e,t,r)=>{Promise.resolve().then(r.bind(r,60194))}},e=>{e.O(0,[6079,8771,8441,3794,7358],()=>e(e.s=70704)),_N_E=e.O()}]);
|